summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPranav Kant <pranavk@collabora.co.uk>2017-07-05 16:40:53 +0530
committerPranav Kant <pranavk@collabora.co.uk>2017-07-05 16:43:43 +0530
commit073cb07ff1ad1924d16d050c654dd45ac0893572 (patch)
tree83cc639822304aa33c8b0e36876b50382934436f
parent15c4ee55fcf4b614d746999978b67e83f1aac608 (diff)
changeZoom CB
Change-Id: I5991a3f6a3ec1cf19eb5f0579b6ced5eaf05c709
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx2
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx12
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx56
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: */