Window.vala 3.1 KB

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