diff --git a/data/ui/Menu.ui b/data/ui/Menu.ui index f7302dc..33f6df7 100644 --- a/data/ui/Menu.ui +++ b/data/ui/Menu.ui @@ -21,11 +21,11 @@
- Save _As + Save As app.save_as - _Export + Export app.export @@ -33,6 +33,12 @@ app.copy_html
+
+ + Find and Replace + app.search_replace + +
Preferences diff --git a/data/ui/Shortcuts.ui b/data/ui/Shortcuts.ui index 03e99c5..bbdb84c 100644 --- a/data/ui/Shortcuts.ui +++ b/data/ui/Shortcuts.ui @@ -92,14 +92,21 @@ True - Search + Find True - Search + Find <Primary>f + + + True + Find and replace + <Primary>h + + diff --git a/data/ui/Window.ui b/data/ui/Window.ui index 79e1035..5d17ee0 100644 --- a/data/ui/Window.ui +++ b/data/ui/Window.ui @@ -6,6 +6,7 @@ True False + 12 edit-find-replace-symbolic @@ -268,7 +269,7 @@ True True True - Open Replace + Replace edit-find-replace @@ -360,7 +361,7 @@ - Replace all + Replace All True True True diff --git a/uberwriter/application.py b/uberwriter/application.py index 449deda..c52c0cc 100644 --- a/uberwriter/application.py +++ b/uberwriter/application.py @@ -98,6 +98,10 @@ class Application(Gtk.Application): action.connect("activate", self.on_copy_html) self.add_action(action) + action = Gio.SimpleAction.new("search_replace", None) + action.connect("activate", self.on_search_replace) + self.add_action(action) + action = Gio.SimpleAction.new("preferences", None) action.connect("activate", self.on_preferences) self.add_action(action) @@ -143,6 +147,7 @@ class Application(Gtk.Application): self.set_accels_for_action("app.fullscreen", ["F11"]) self.set_accels_for_action("app.preview", ["p"]) self.set_accels_for_action("app.search", ["f"]) + self.set_accels_for_action("app.search_replace", ["h"]) self.set_accels_for_action("app.spellcheck", ["F7"]) self.set_accels_for_action("app.new", ["n"]) @@ -208,7 +213,10 @@ class Application(Gtk.Application): self.window.save_document() def on_search(self, _action, _value): - self.window.open_search_and_replace() + self.window.open_search() + + def on_search_replace(self, _action, _value): + self.window.open_search(replace=True) def on_focus_mode(self, action, value): action.set_state(value) diff --git a/uberwriter/headerbars.py b/uberwriter/headerbars.py index 6104a66..d0a788f 100644 --- a/uberwriter/headerbars.py +++ b/uberwriter/headerbars.py @@ -166,7 +166,7 @@ def main_buttons(app): btn.open_recent.pack_start(open_button, False, False, 0) btn.open_recent.pack_end(recents_button, False, False, 0) - btn.search.set_tooltip_text(_("Search and Replace")) + btn.search.set_tooltip_text(_("Find")) btn.menu.set_tooltip_text(_("Menu")) btn.menu.set_image(Gtk.Image.new_from_icon_name("open-menu-symbolic", Gtk.IconSize.BUTTON)) diff --git a/uberwriter/main_window.py b/uberwriter/main_window.py index 3b1ed24..d96e63d 100644 --- a/uberwriter/main_window.py +++ b/uberwriter/main_window.py @@ -467,11 +467,11 @@ class MainWindow(StyledWindow): self.load_file(helpers.get_media_file('uberwriter_markdown.md')) - def open_search_and_replace(self): + def open_search(self, replace=False): """toggle the search box """ - self.searchreplace.toggle_search() + self.searchreplace.toggle_search(replace=replace) def open_advanced_export(self, _widget=None, _data=None): """open the export and advanced export dialog diff --git a/uberwriter/search_and_replace.py b/uberwriter/search_and_replace.py index a4dc0c2..0edb937 100644 --- a/uberwriter/search_and_replace.py +++ b/uberwriter/search_and_replace.py @@ -82,11 +82,10 @@ class SearchAndReplace: """ self.replacebox.set_reveal_child(widget.get_active()) - # TODO: refactorize! def key_pressed(self, _widget, event, _data=None): """hide the search and replace content box when ESC is pressed """ - if event.keyval in [Gdk.KEY_Escape]: + if event.keyval == Gdk.KEY_Escape: self.hide() def focused_texteditor(self, _widget, _data=None): @@ -94,15 +93,19 @@ class SearchAndReplace: """ self.hide() - def toggle_search(self, _widget=None, _data=None): + def toggle_search(self, replace=False): """ - show search box + toggle search box """ - if self.textview.get_mapped() and ( - self.box.get_reveal_child() is False or self.searchbar.get_search_mode() is False): + search_hidden = self.textview.get_mapped() and ( + self.box.get_reveal_child() is False or self.searchbar.get_search_mode() is False) + replace_hidden = not self.open_replace_button.get_active() + if search_hidden or (replace and replace_hidden): self.searchbar.set_search_mode(True) self.box.set_reveal_child(True) self.searchentry.grab_focus() + if replace: + self.open_replace_button.set_active(True) else: self.hide() self.open_replace_button.set_active(False)