diff --git a/mk/build.mk b/mk/build.mk index b4cc39a4e24520767a65b6761ec2424b8298a19a..f7387aeb7d238669a1ee3c84facb887e03a8d85d 100644 --- a/mk/build.mk +++ b/mk/build.mk @@ -21,6 +21,7 @@ VALAFILES = \ src/showdown.vala \ src/window.vala \ src/view.vala \ + src/help.vala \ build/version.vala RESOURCES = $(addprefix res/, \ diff --git a/res/help-overlay.ui b/res/help-overlay.ui index 6bd14fff6772575009b72ab1d6ee382e76d9d68d..2ab5ede1a15e2d6ed264abf9c47b0e8a4cd871b7 100644 --- a/res/help-overlay.ui +++ b/res/help-overlay.ui @@ -1,12 +1,11 @@ - + - 8 + 12 True - Application @@ -46,6 +45,13 @@ True + + + Help + F1 + True + + Menu diff --git a/src/help.vala b/src/help.vala new file mode 100644 index 0000000000000000000000000000000000000000..f4b7dc75f35866de571d3df3e88ee7d16ad3bd3a --- /dev/null +++ b/src/help.vala @@ -0,0 +1,10 @@ +class Showdown.ShortcutsWindow: Gtk.ShortcutsWindow { + Showdown.Window parent_window; + + public ShortcutsWindow(Showdown.Window window) { + parent_window = window; + decorated = window.default_headerbar_visibility; + visible = false; + window_position = Gtk.WindowPosition.CENTER_ON_PARENT; + } +} diff --git a/src/showdown.vala b/src/showdown.vala index b2cc384600fee061ee70492da909f19ffd999f21..03b84e08e5e1c6554134f056fb58159bef32fa85 100644 --- a/src/showdown.vala +++ b/src/showdown.vala @@ -22,7 +22,7 @@ class Showdown.Application: Gtk.Application { {"win.zoom_in", "plus", "equal"}, {"win.zoom_out", "minus", "dstroke"}, {"win.zoom_reset", "0"}, - {"win.show-help-overlay", "F1"}, + {"win.toggle_help_view", "F1"}, }; static string? wflag = null; diff --git a/src/window.vala b/src/window.vala index b258938c7a3edb2d32f8be70b245b51575180550..897f312647ea571925c24d78eb3029a022084399 100644 --- a/src/window.vala +++ b/src/window.vala @@ -5,7 +5,9 @@ class Showdown.Window: Gtk.ApplicationWindow { [GtkChild] Gtk.MenuButton menu_button; [GtkChild] Gtk.SearchBar search_bar; [GtkChild] Gtk.Grid grid; + MarkdownView mdview; + Showdown.ShortcutsWindow help_view; const ActionEntry[] actions = { {"open", open}, @@ -14,6 +16,7 @@ class Showdown.Window: Gtk.ApplicationWindow { {"print", print}, {"toggle_searchbar", toggle_searchbar}, {"toggle_headerbar", toggle_headerbar}, + {"toggle_help_view", toggle_help_view}, {"zoom_in", zoom_in}, {"zoom_out", zoom_out}, {"zoom_reset", zoom_reset}, @@ -28,13 +31,15 @@ class Showdown.Window: Gtk.ApplicationWindow { public Window(Gtk.Application application) { Object(application: application); add_action_entries(actions, this); - header.visible = app.default_headerbar_visibility; + default_headerbar_visibility = header.visible = app.default_headerbar_visibility; menu_button.menu_model = application.get_menu_by_id("header-menu"); mdview = new Showdown.MarkdownView(this); grid.add(mdview); show(); } + public bool default_headerbar_visibility { get; set; } + [GtkCallback] void search_entry_changed(Gtk.SearchEntry entry) { const WebKit.FindOptions WRAP = WebKit.FindOptions.WRAP_AROUND; @@ -55,6 +60,10 @@ class Showdown.Window: Gtk.ApplicationWindow { header.visible = !header.visible; } + void toggle_help_view() { + help_view.visible = !help_view.visible; + } + void zoom_in() { mdview.zoom_level += 0.1; }