using Adw; using Gtk; namespace Publicate { public class ViewerWindow : Adw.ApplicationWindow { private Stack stack; public StartupMenu startup_menu; public PpubEditor editor {get; set;} public Ppub.Publication publication {get; set;} public Menu window_menu { get; set; } public CollectionService collection_service { get; set;} public CollectionView collection_view { get; set; } private SimpleAction extract_action; public ViewerWindow(Adw.Application app) { application = app; window_menu = new Menu(); window_menu.append("New window", "win.new-window"); window_menu.append("Manage identities", "win.manage-identities"); collection_service = new CollectionService(); stack = new Stack(); startup_menu = new StartupMenu(this); editor = new PpubEditor(this); collection_view = new CollectionView(this); default_height = 600; default_width = 800; content = stack; stack.add_child(startup_menu); stack.add_child(editor); stack.add_child(collection_view); stack.transition_type = StackTransitionType.CROSSFADE; var save_action = new SimpleAction("save", null); save_action.activate.connect(() => editor.save_tab.begin()); add_action(save_action); add_binding_action(Gdk.Key.s, Gdk.ModifierType.CONTROL_MASK, "win.save", null); var save_as_action = new SimpleAction("save-as", null); save_as_action.activate.connect(() => editor.save_as.begin()); add_action(save_as_action); add_binding_action(Gdk.Key.S, Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.SHIFT_MASK, "win.save-as", null); var save_all_action = new SimpleAction("save-all", null); save_all_action.activate.connect(() => editor.save_all.begin()); add_action(save_all_action); var new_window_action = new SimpleAction("new-window", null); new_window_action.activate.connect(() => app.activate()); add_action(new_window_action); add_binding_action(Gdk.Key.N, Gdk.ModifierType.CONTROL_MASK, "win.new-window", null); var manage_identities_action = new SimpleAction("manage-identities", null); manage_identities_action.activate.connect(() => manage_identities()); add_action(manage_identities_action); } public async void open_ppub() throws Error { var dialog = new FileDialog(); var filter = new FileFilter(); var filters = new GLib.ListStore(Type.OBJECT); filters.append(filter); filter.add_pattern("*.ppub"); filter.name = "Portable Publications"; dialog.filters = filters; var file = yield dialog.open(this, null); if(file == null) { return; } yield load_ppub(file); } public async void load_ppub(File file) { stack.visible_child = editor; yield editor.load_ppub(file, true); } public void manage_identities() { print("hell0\n"); var window = new ManageIdentitiesWindow(this); window.present(); } public async void load_collection(CollectionConfig collection) { stack.visible_child = collection_view; yield collection_view.show_collection(collection); } } }