diff options
author | Pranav Kant <pranavk@collabora.co.uk> | 2017-07-13 17:42:41 +0530 |
---|---|---|
committer | Pranav Kant <pranavk@collabora.co.uk> | 2017-07-13 17:42:41 +0530 |
commit | fab531357251919e9e227d4c0db0512978bd9f57 (patch) | |
tree | b0ef3d9b5049b041bdc8cc4018d6ad1499d46caf | |
parent | set gobject props in setupDocView too (diff) | |
download | core-fab531357251919e9e227d4c0db0512978bd9f57.tar.gz core-fab531357251919e9e227d4c0db0512978bd9f57.zip |
try to attach findbar tool signals
Change-Id: Id129593c110d77c17883040ea77b8d263c4c846f
-rw-r--r-- | gtv.ui | 9 | ||||
-rw-r--r-- | libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx | 2 | ||||
-rw-r--r-- | libreofficekit/qa/gtktiledviewer/gtv-application-window.hxx | 2 | ||||
-rw-r--r-- | libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx | 7 | ||||
-rw-r--r-- | libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx | 50 | ||||
-rw-r--r-- | libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.hxx | 11 |
6 files changed, 79 insertions, 2 deletions
@@ -114,6 +114,7 @@ <property name="label" translatable="yes">__glade_unnamed_1</property> <property name="use_underline">True</property> <property name="icon_name">window-close-symbolic</property> + <signal name="clicked" handler="toggleFindbar" swapped="no"/> </object> <packing> <property name="expand">False</property> @@ -127,7 +128,8 @@ <child> <object class="GtkEntry" id="findbar_entry"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can_focus">True</property> + <signal name="key-press-event" handler="signalFindbar" swapped="no"/> </object> </child> </object> @@ -143,6 +145,7 @@ <property name="label" translatable="yes">__glade_unnamed_3</property> <property name="use_underline">True</property> <property name="icon_name">go-down-symbolic</property> + <signal name="clicked" handler="signalSearchNext" swapped="no"/> </object> <packing> <property name="expand">False</property> @@ -156,6 +159,7 @@ <property name="label" translatable="yes">toolbutton</property> <property name="use_underline">True</property> <property name="icon_name">go-up-symbolic</property> + <signal name="clicked" handler="signalSearchPrev" swapped="no"/> </object> <packing> <property name="expand">False</property> @@ -163,11 +167,12 @@ </packing> </child> <child> - <object class="GtkToolButton" id="findbar_findall"> + <object class="GtkToggleToolButton" id="findbar_findall"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">Highlight all</property> <property name="use_underline">True</property> + <signal name="clicked" handler="toggleFindAll" swapped="no"/> </object> <packing> <property name="expand">False</property> diff --git a/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx b/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx index a3e8650c4263..3a81e9aa7b6e 100644 --- a/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx +++ b/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx @@ -91,6 +91,8 @@ gtv_application_window_init(GtvApplicationWindow* win) win->findtoolbar = GTK_WIDGET(gtk_builder_get_object(builder, "findtoolbar")); win->findbarlabel = GTK_WIDGET(gtk_builder_get_object(builder, "findbar_label")); + win->findbarEntry = GTK_WIDGET(gtk_builder_get_object(builder, "findbar_entry")); + win->findAll = GTK_WIDGET(gtk_builder_get_object(builder, "findbar_findall")); priv->toolbarBroadcast = true; priv->partSelectorBroadcast = true; diff --git a/libreofficekit/qa/gtktiledviewer/gtv-application-window.hxx b/libreofficekit/qa/gtktiledviewer/gtv-application-window.hxx index 879678a77f5e..2337b74e1078 100644 --- a/libreofficekit/qa/gtktiledviewer/gtv-application-window.hxx +++ b/libreofficekit/qa/gtktiledviewer/gtv-application-window.hxx @@ -36,6 +36,8 @@ struct _GtvApplicationWindow GtkWidget* zoomlabel; GtkWidget* redlinelabel; GtkWidget* findbarlabel; + GtkWidget* findbarEntry; + GtkWidget* findAll; GtkWidget* findtoolbar; }; diff --git a/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx b/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx index d0e4611d16cf..b37709976402 100644 --- a/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx +++ b/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx @@ -101,6 +101,13 @@ gtv_main_toolbar_init(GtvMainToolbar* toolbar) gtk_builder_add_callback_symbol(builder, "signalAddressbar", G_CALLBACK(signalAddressbar)); gtk_builder_add_callback_symbol(builder, "signalFormulabar", G_CALLBACK(signalFormulabar)); + // find toolbar + // Note: These buttons are not the part of GtvMainToolbar + gtk_builder_add_callback_symbol(builder, "signalSearchNext", G_CALLBACK(signalSearchNext)); + gtk_builder_add_callback_symbol(builder, "signalSearchPrev", G_CALLBACK(signalSearchPrev)); + gtk_builder_add_callback_symbol(builder, "signalFindbar", G_CALLBACK(signalFindbar)); + gtk_builder_add_callback_symbol(builder, "toggleFindAll", G_CALLBACK(toggleFindAll)); + gtk_builder_connect_signals(builder, nullptr); gtk_widget_show_all(GTK_WIDGET(toolbar)); diff --git a/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx b/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx index 9ea38b790b0b..f07f5f05644c 100644 --- a/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx +++ b/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx @@ -530,6 +530,56 @@ void docAdjustmentChanged(GtkAdjustment*, gpointer pData) LOKDocViewSigHandlers::configureEvent(window->lokdocview, nullptr, nullptr); } +void signalSearchNext(GtkWidget* pButton, gpointer /*pItem*/) +{ + GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(gtk_widget_get_toplevel(pButton)); + GtkEntry* pEntry = GTK_ENTRY(window->findbarEntry); + const char* pText = gtk_entry_get_text(pEntry); + bool findAll = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(window->findAll)); + lok_doc_view_find_next(LOK_DOC_VIEW(window->lokdocview), pText, findAll); +} + +void signalSearchPrev(GtkWidget* pButton, gpointer /*pItem*/) +{ + GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(gtk_widget_get_toplevel(pButton)); + GtkEntry* pEntry = GTK_ENTRY(window->findbarEntry); + const char* pText = gtk_entry_get_text(pEntry); + bool findAll = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(window->findAll)); + lok_doc_view_find_prev(LOK_DOC_VIEW(window->lokdocview), pText, findAll); +} + +gboolean signalFindbar(GtkWidget* pWidget, GdkEventKey* pEvent, gpointer /*pData*/) +{ + GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(gtk_widget_get_toplevel(pWidget)); + gtk_label_set_text(GTK_LABEL(window->findbarlabel), ""); + switch(pEvent->keyval) + { + case GDK_KEY_Return: + { + // Search forward. + signalSearchNext(pWidget, nullptr); + return TRUE; + } + case GDK_KEY_Escape: + { + // Hide the findbar. + gtk_widget_hide(GTK_WIDGET(window->findtoolbar)); + return TRUE; + } + } + return FALSE; +} + +void toggleFindAll(GtkWidget* pButton, gpointer /*pItem*/) +{ + GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(gtk_widget_get_toplevel(pButton)); + GtkEntry* pEntry = GTK_ENTRY(window->findbarEntry); + const char* pText = gtk_entry_get_text(pEntry); + bool findAll = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(window->findAll)); + gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(window->findAll), !findAll); + lok_doc_view_highlight_all(LOK_DOC_VIEW(window->lokdocview), pText); +} + void editButtonClicked(GtkWidget* pWidget, gpointer userdata) { GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(gtk_widget_get_toplevel(pWidget)); diff --git a/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.hxx b/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.hxx index 716d7bef868c..a19a7b5cd744 100644 --- a/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.hxx +++ b/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.hxx @@ -38,6 +38,17 @@ void documentRepair(GtkWidget* pButton, gpointer /*pItem*/); void docAdjustmentChanged(GtkAdjustment*, gpointer); +/// Click handler for the search next button. +void signalSearchNext(GtkWidget* pButton, gpointer /*pItem*/); + +/// Click handler for the search previous button. +void signalSearchPrev(GtkWidget* pButton, gpointer /*pItem*/); + +/// Handles the key-press-event of the search entry widget. +gboolean signalFindbar(GtkWidget* pWidget, GdkEventKey* pEvent, gpointer /*pData*/); + +void toggleFindAll(GtkWidget* pButton, gpointer /*pItem*/); + void editButtonClicked(GtkWidget*, gpointer); void replyButtonClicked(GtkWidget*, gpointer); |