using Adw; using Gtk; namespace Publicate { public class ViewerWindow : Adw.ApplicationWindow { private Stack stack; private StartupMenu startup_menu; public PpubEditor editor {get; set;} public Ppub.Publication publication {get; set;} private SimpleAction extract_action; public ViewerWindow(Adw.Application app) { application = app; stack = new Stack(); startup_menu = new StartupMenu(this); editor = new PpubEditor(this); default_height = 600; default_width = 800; content = stack; stack.add_child(startup_menu); stack.add_child(editor); 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", "Save current tab"); } 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); } } }