Window.vala 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using Adw;
  2. using Gtk;
  3. namespace Publicate {
  4. public class ViewerWindow : Adw.ApplicationWindow {
  5. private Stack stack;
  6. public StartupMenu startup_menu;
  7. public PpubEditor editor {get; set;}
  8. public Ppub.Publication publication {get; set;}
  9. public Menu window_menu { get; set; }
  10. public CollectionService collection_service { get; set;}
  11. public CollectionView collection_view { get; set; }
  12. private SimpleAction extract_action;
  13. public ViewerWindow(Adw.Application app) {
  14. application = app;
  15. window_menu = new Menu();
  16. window_menu.append("New window", "win.new-window");
  17. window_menu.append("Manage identities", "win.manage-identities");
  18. collection_service = new CollectionService();
  19. stack = new Stack();
  20. startup_menu = new StartupMenu(this);
  21. editor = new PpubEditor(this);
  22. collection_view = new CollectionView(this);
  23. default_height = 600;
  24. default_width = 800;
  25. content = stack;
  26. stack.add_child(startup_menu);
  27. stack.add_child(editor);
  28. stack.add_child(collection_view);
  29. stack.transition_type = StackTransitionType.CROSSFADE;
  30. var save_action = new SimpleAction("save", null);
  31. save_action.activate.connect(() => editor.save_tab.begin());
  32. add_action(save_action);
  33. add_binding_action(Gdk.Key.s, Gdk.ModifierType.CONTROL_MASK, "win.save", null);
  34. var save_as_action = new SimpleAction("save-as", null);
  35. save_as_action.activate.connect(() => editor.save_as.begin());
  36. add_action(save_as_action);
  37. add_binding_action(Gdk.Key.S, Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.SHIFT_MASK, "win.save-as", null);
  38. var save_all_action = new SimpleAction("save-all", null);
  39. save_all_action.activate.connect(() => editor.save_all.begin());
  40. add_action(save_all_action);
  41. var new_window_action = new SimpleAction("new-window", null);
  42. new_window_action.activate.connect(() => app.activate());
  43. add_action(new_window_action);
  44. add_binding_action(Gdk.Key.N, Gdk.ModifierType.CONTROL_MASK, "win.new-window", null);
  45. var manage_identities_action = new SimpleAction("manage-identities", null);
  46. manage_identities_action.activate.connect(() => manage_identities());
  47. add_action(manage_identities_action);
  48. }
  49. public async void open_ppub() throws Error {
  50. var dialog = new FileDialog();
  51. var filter = new FileFilter();
  52. var filters = new GLib.ListStore(Type.OBJECT);
  53. filters.append(filter);
  54. filter.add_pattern("*.ppub");
  55. filter.name = "Portable Publications";
  56. dialog.filters = filters;
  57. var file = yield dialog.open(this, null);
  58. if(file == null) {
  59. return;
  60. }
  61. yield load_ppub(file);
  62. }
  63. public async void load_ppub(File file) {
  64. stack.visible_child = editor;
  65. yield editor.load_ppub(file, true);
  66. }
  67. public void manage_identities() {
  68. print("hell0\n");
  69. var window = new ManageIdentitiesWindow(this);
  70. window.present();
  71. }
  72. public async void load_collection(CollectionConfig collection) {
  73. stack.visible_child = collection_view;
  74. yield collection_view.show_collection(collection);
  75. }
  76. }
  77. }