diff options
author | Pranav Kant <pranavk@collabora.co.uk> | 2017-07-05 16:40:53 +0530 |
---|---|---|
committer | Pranav Kant <pranavk@collabora.co.uk> | 2017-07-05 16:43:43 +0530 |
commit | 073cb07ff1ad1924d16d050c654dd45ac0893572 (patch) | |
tree | 83cc639822304aa33c8b0e36876b50382934436f | |
parent | 15c4ee55fcf4b614d746999978b67e83f1aac608 (diff) |
changeZoom CB
Change-Id: I5991a3f6a3ec1cf19eb5f0579b6ced5eaf05c709
3 files changed, 64 insertions, 6 deletions
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx b/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx index 5c4bdc710546..69131d309ca0 100644 --- a/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx +++ b/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx @@ -22,6 +22,8 @@ struct _GtvApplicationWindow { GtkApplicationWindow parent_instance; + + GtkWidget* zoomlabel; }; struct GtvApplicationWindowPrivate diff --git a/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx b/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx index 02d43de92633..cc239536200e 100644 --- a/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx +++ b/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx @@ -57,12 +57,12 @@ gtv_main_toolbar_init(GtvMainToolbar* toolbar) gtk_builder_add_callback_symbol(builder, "createView", G_CALLBACK(createView)); gtk_builder_add_callback_symbol(builder, "unoCommandDebugger", G_CALLBACK(unoCommandDebugger)); gtk_builder_add_callback_symbol(builder, "toggleEditing", G_CALLBACK(toggleEditing)); -// gtk_builder_add_callback_symbol(builder, "changePartMode", G_CALLBACK(changePartMode)); -// gtk_builder_add_callback_symbol(builder, "changePart", G_CALLBACK(changePart)); -// gtk_builder_add_callback_symbol(builder, "changeZoom", G_CALLBACK(changeZoom)); -// gtk_builder_add_callback_symbol(builder, "toggleFindbar", G_CALLBACK(toggleFindbar)); -// gtk_builder_add_callback_symbol(builder, "documentRedline", G_CALLBACK(documentRedline)); -// gtk_builder_add_callback_symbol(builder, "documentRepair", G_CALLBACK(documentRepair)); + gtk_builder_add_callback_symbol(builder, "changePartMode", G_CALLBACK(changePartMode)); + gtk_builder_add_callback_symbol(builder, "changePart", G_CALLBACK(changePart)); + gtk_builder_add_callback_symbol(builder, "changeZoom", G_CALLBACK(changeZoom)); + gtk_builder_add_callback_symbol(builder, "toggleFindbar", G_CALLBACK(toggleFindbar)); + gtk_builder_add_callback_symbol(builder, "documentRedline", G_CALLBACK(documentRedline)); + gtk_builder_add_callback_symbol(builder, "documentRepair", G_CALLBACK(documentRepair)); gtk_builder_connect_signals(builder, nullptr); diff --git a/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx b/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx index da35bec30b41..98f2a84e4567 100644 --- a/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx +++ b/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx @@ -266,4 +266,60 @@ void toggleEditing(GtkWidget* pButton, gpointer /*pItem*/) lok_doc_view_set_edit(pDocView, bActive); } +static void changeZoom( GtkWidget* pButton, gpointer /* pItem */ ) +{ + GApplication* app = g_application_get_default(); + GtkWindow* window = gtk_application_get_active_window(GTK_APPLICATION(app)); + LOKDocView* pDocView = gtv_application_window_get_lokdocview(GTV_APPLICATION_WINDOW(window)); + + const char *sName = gtk_tool_button_get_icon_name( GTK_TOOL_BUTTON(pButton) ); + + float fZoom = 0; + float fCurrentZoom = 0; + + if ( pDocView ) + { + fCurrentZoom = lok_doc_view_get_zoom( LOK_DOC_VIEW(pDocView) ); + } + + if ( strcmp(sName, "zoom-in-symbolic") == 0) + { + for ( unsigned int i = 0; i < SAL_N_ELEMENTS( fZooms ); i++ ) + { + if ( fCurrentZoom < fZooms[i] ) + { + fZoom = fZooms[i]; + break; + } + } + } + else if ( strcmp(sName, "zoom-original-symbolic") == 0) + { + fZoom = 1; + } + else if ( strcmp(sName, "zoom-out-symbolic") == 0) + { + for ( unsigned int i = 0; i < SAL_N_ELEMENTS( fZooms ); i++ ) + { + if ( fCurrentZoom > fZooms[i] ) + { + fZoom = fZooms[i]; + } + } + } + + if ( fZoom != 0 ) + { + if ( pDocView ) + { + lok_doc_view_set_zoom( LOK_DOC_VIEW(pDocView), fZoom ); + GdkRectangle aVisibleArea; + getVisibleAreaTwips(pDocView, &aVisibleArea); + lok_doc_view_set_visible_area(LOK_DOC_VIEW(pDocView), &aVisibleArea); + } + } + std::string aZoom = std::string("Zoom: ") + std::to_string(int(fZoom * 100)) + std::string("%"); + gtk_label_set_text(GTK_LABEL(rWindow.m_pZoomLabel), aZoom.c_str()); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |