using Adw; using Gtk; namespace Publicate { public class StartupMenu : Box { private Adw.HeaderBar header_bar; private Box box; private Stack stack; private Wizards.StandardWizard standard_wizard; private Wizards.VideoWizard video_wizard; private ViewerWindow window; public StartupMenu(ViewerWindow win) { window = win; orientation = Orientation.VERTICAL; vexpand = true; header_bar = new Adw.HeaderBar (); header_bar.add_css_class ("flat"); header_bar.show_end_title_buttons = true; header_bar.title_widget = new Adw.WindowTitle ("", ""); stack = new Stack(); stack.transition_type = StackTransitionType.SLIDE_LEFT_RIGHT; append(header_bar); append(stack); box = new Box(Orientation.VERTICAL, 18); box.valign = Align.CENTER; box.halign = Align.CENTER; box.vexpand = true; box.margin_bottom = 40; stack.add_child (box); var title = new Label("Publicate!"); title.add_css_class("title-1"); box.append(title); var action_list = new ListBox (); action_list.add_css_class ("boxed-list"); box.append(action_list); var new_action_row = new ActionRow(); new_action_row.title = "New Publication"; new_action_row.subtitle = "Create a new publication using Markdown for text formatting."; new_action_row.activatable = true; new_action_row.activated.connect(() => stack.visible_child = standard_wizard); action_list.append (new_action_row); var new_video_action_row = new ActionRow(); new_video_action_row.title = "New Video Publication"; new_video_action_row.subtitle = "Create a video publication from an existing video."; new_video_action_row.activatable = true; new_video_action_row.activated.connect(() => stack.visible_child = video_wizard); action_list.append (new_video_action_row); var edit_action_row = new ActionRow(); edit_action_row.title = "Open Existing Publication"; edit_action_row.subtitle = "Edit a publication that has already been created."; edit_action_row.activatable = true; action_list.append (edit_action_row); edit_action_row.activated.connect(() => window.open_ppub.begin()); standard_wizard = new Wizards.StandardWizard(window); standard_wizard.cancelled.connect(wizard_cancelled); standard_wizard.open.connect(open_file); stack.add_child(standard_wizard); video_wizard = new Wizards.VideoWizard(window); video_wizard.cancelled.connect(wizard_cancelled); video_wizard.open.connect(open_file); stack.add_child(video_wizard); } private void wizard_cancelled() { stack.visible_child = box; } private void open_file(File file) { window.load_ppub(file); } } }