diff options
author | Pranav Kant <pranavk@collabora.co.uk> | 2017-07-05 17:17:24 +0530 |
---|---|---|
committer | Pranav Kant <pranavk@collabora.co.uk> | 2017-07-05 17:17:24 +0530 |
commit | 7e82586889770f7d8146489bda5f6c71fbc826da (patch) | |
tree | 50301efbd32dce25efdbc7a49ef75aa52e24984c | |
parent | 776f5a45751bbde8fd5f182e29edf83247ef94b9 (diff) |
Zoom support
Change-Id: I988f2347b06ed6841a7e9335adc6ac31b0b500b5
-rw-r--r-- | gtv.ui | 33 | ||||
-rw-r--r-- | libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx | 29 | ||||
-rw-r--r-- | libreofficekit/qa/gtktiledviewer/gtv-application-window.hxx | 4 | ||||
-rw-r--r-- | libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx | 10 | ||||
-rw-r--r-- | libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx | 11 |
5 files changed, 72 insertions, 15 deletions
@@ -67,17 +67,42 @@ </packing> </child> <child> - <object class="GtkStatusbar"> + <object class="GtkStatusbar" id="statusbar"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="margin_left">10</property> - <property name="margin_right">10</property> <property name="margin_start">10</property> <property name="margin_end">10</property> - <property name="margin_top">6</property> <property name="margin_bottom">6</property> - <property name="orientation">vertical</property> <property name="spacing">2</property> + <child> + <object class="GtkLabel" id="zoomlabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_left">22</property> + <property name="label" translatable="yes">100%</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="redlinelabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_left">22</property> + <property name="label" translatable="yes">Current redline: </property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">1</property> + </packing> + </child> </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 69131d309ca0..5dcf70d34bab 100644 --- a/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx +++ b/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx @@ -22,8 +22,6 @@ struct _GtvApplicationWindow { GtkApplicationWindow parent_instance; - - GtkWidget* zoomlabel; }; struct GtvApplicationWindowPrivate @@ -33,7 +31,9 @@ struct GtvApplicationWindowPrivate GtkWidget* scrolledwindow; GtkWidget* lokdocview; + GtkWidget* statusbar; + GtkWidget* zoomlabel; // Rendering args; options with which lokdocview was rendered in this window GtvRenderingArgs* m_pRenderingArgs; @@ -67,6 +67,8 @@ gtv_application_window_init(GtvApplicationWindow* win) // statusbar priv->statusbar = GTK_WIDGET(gtk_builder_get_object(builder, "statusbar")); + // Need to access it from outside to set the zoom level + priv->zoomlabel = GTK_WIDGET(gtk_builder_get_object(builder, "zoomlabel")); gtk_container_add(GTK_CONTAINER(win), priv->container); @@ -123,6 +125,29 @@ gtv_application_open_document_callback(GObject* source_object, GAsyncResult* res lok_doc_view_set_edit(pDocView, true); } +void gtv_application_window_set_zoom_label(GtvApplicationWindow* window, const std::string& aZoom) +{ + GtvApplicationWindowPrivate* priv = getPrivate(window); + gtk_label_set_text(GTK_LABEL(priv->zoomlabel), aZoom.c_str()); +} + +/// Get the visible area of the scrolled window +void getVisibleAreaTwips(GtvApplicationWindow* pWindow, GdkRectangle* pArea) +{ + GtvApplicationWindowPrivate* priv = getPrivate(pWindow); + GtkAdjustment* pHAdjustment = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(priv->scrolledwindow)); + GtkAdjustment* pVAdjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(priv->scrolledwindow)); + + pArea->x = lok_doc_view_pixel_to_twip(LOK_DOC_VIEW(priv->lokdocview), + gtk_adjustment_get_value(pHAdjustment)); + pArea->y = lok_doc_view_pixel_to_twip(LOK_DOC_VIEW(priv->lokdocview), + gtk_adjustment_get_value(pVAdjustment)); + pArea->width = lok_doc_view_pixel_to_twip(LOK_DOC_VIEW(priv->lokdocview), + gtk_adjustment_get_page_size(pHAdjustment)); + pArea->height = lok_doc_view_pixel_to_twip(LOK_DOC_VIEW(priv->lokdocview), + gtk_adjustment_get_page_size(pVAdjustment)); +} + LOKDocView* gtv_application_window_get_lokdocview(GtvApplicationWindow* window) { diff --git a/libreofficekit/qa/gtktiledviewer/gtv-application-window.hxx b/libreofficekit/qa/gtktiledviewer/gtv-application-window.hxx index 1b2160248498..c29a397513c7 100644 --- a/libreofficekit/qa/gtktiledviewer/gtv-application-window.hxx +++ b/libreofficekit/qa/gtktiledviewer/gtv-application-window.hxx @@ -44,6 +44,10 @@ LOKDocView* gtv_application_window_get_lokdocview(GtvApplicationWindow* applicat void gtv_application_window_create_view_from_window(GtvApplicationWindow* window); +void gtv_application_window_set_zoom_label(GtvApplicationWindow* window, const std::string& aZoom); + +void getVisibleAreaTwips(GtvApplicationWindow* pWindow, GdkRectangle* pArea); + G_END_DECLS #endif /* GTV_APPLICATION_WINDOW_H */ diff --git a/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx b/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx index cc239536200e..da7f186e5682 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, "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, "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 98f2a84e4567..0786557f49da 100644 --- a/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx +++ b/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx @@ -12,6 +12,8 @@ #include <gtv-application-window.hxx> #include <gtv-helpers.hxx> +#include <sal/types.h> + #include <map> #include <vector> @@ -266,8 +268,9 @@ void toggleEditing(GtkWidget* pButton, gpointer /*pItem*/) lok_doc_view_set_edit(pDocView, bActive); } -static void changeZoom( GtkWidget* pButton, gpointer /* pItem */ ) +void changeZoom( GtkWidget* pButton, gpointer /* pItem */ ) { + static const float fZooms[] = { 0.25, 0.5, 0.75, 1.0, 1.5, 2.0, 3.0, 5.0 }; 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)); @@ -314,12 +317,12 @@ static void changeZoom( GtkWidget* pButton, gpointer /* pItem */ ) { lok_doc_view_set_zoom( LOK_DOC_VIEW(pDocView), fZoom ); GdkRectangle aVisibleArea; - getVisibleAreaTwips(pDocView, &aVisibleArea); + getVisibleAreaTwips(GTV_APPLICATION_WINDOW(window), &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()); + const std::string aZoom = std::string("Zoom: ") + std::to_string(int(fZoom * 100)) + std::string("%"); + gtv_application_window_set_zoom_label(GTV_APPLICATION_WINDOW(window), aZoom); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |