StartupMenu.vala 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using Adw;
  2. using Gtk;
  3. namespace Publicate {
  4. public class StartupMenu : Box {
  5. private Adw.HeaderBar header_bar;
  6. private Box box;
  7. private Stack stack;
  8. private Wizards.StandardWizard standard_wizard;
  9. private Wizards.VideoWizard video_wizard;
  10. private ViewerWindow window;
  11. public StartupMenu(ViewerWindow win) {
  12. window = win;
  13. orientation = Orientation.VERTICAL;
  14. vexpand = true;
  15. header_bar = new Adw.HeaderBar ();
  16. header_bar.add_css_class ("flat");
  17. header_bar.show_end_title_buttons = true;
  18. header_bar.title_widget = new Adw.WindowTitle ("", "");
  19. stack = new Stack();
  20. stack.transition_type = StackTransitionType.SLIDE_LEFT_RIGHT;
  21. append(header_bar);
  22. append(stack);
  23. box = new Box(Orientation.VERTICAL, 18);
  24. box.valign = Align.CENTER;
  25. box.halign = Align.CENTER;
  26. box.vexpand = true;
  27. box.margin_bottom = 40;
  28. stack.add_child (box);
  29. var title = new Label("Publicate!");
  30. title.add_css_class("title-1");
  31. box.append(title);
  32. var action_list = new ListBox ();
  33. action_list.add_css_class ("boxed-list");
  34. box.append(action_list);
  35. var new_action_row = new ActionRow();
  36. new_action_row.title = "New Publication";
  37. new_action_row.subtitle = "Create a new publication using Markdown for text formatting.";
  38. new_action_row.activatable = true;
  39. new_action_row.activated.connect(() => stack.visible_child = standard_wizard);
  40. action_list.append (new_action_row);
  41. var new_video_action_row = new ActionRow();
  42. new_video_action_row.title = "New Video Publication";
  43. new_video_action_row.subtitle = "Create a video publication from an existing video.";
  44. new_video_action_row.activatable = true;
  45. new_video_action_row.activated.connect(() => stack.visible_child = video_wizard);
  46. action_list.append (new_video_action_row);
  47. var edit_action_row = new ActionRow();
  48. edit_action_row.title = "Open Existing Publication";
  49. edit_action_row.subtitle = "Edit a publication that has already been created.";
  50. edit_action_row.activatable = true;
  51. action_list.append (edit_action_row);
  52. edit_action_row.activated.connect(() => window.open_ppub.begin());
  53. standard_wizard = new Wizards.StandardWizard(window);
  54. standard_wizard.cancelled.connect(wizard_cancelled);
  55. standard_wizard.open.connect(open_file);
  56. stack.add_child(standard_wizard);
  57. video_wizard = new Wizards.VideoWizard(window);
  58. video_wizard.cancelled.connect(wizard_cancelled);
  59. video_wizard.open.connect(open_file);
  60. stack.add_child(video_wizard);
  61. }
  62. private void wizard_cancelled() {
  63. stack.visible_child = box;
  64. }
  65. private void open_file(File file) {
  66. window.load_ppub(file);
  67. }
  68. }
  69. }