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 @@
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)