summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPranav Kant <pranavk@collabora.co.uk>2017-07-05 17:17:24 +0530
committerPranav Kant <pranavk@collabora.co.uk>2017-07-05 17:17:24 +0530
commit7e82586889770f7d8146489bda5f6c71fbc826da (patch)
tree50301efbd32dce25efdbc7a49ef75aa52e24984c
parentChange executable to new (diff)
downloadcore-7e82586889770f7d8146489bda5f6c71fbc826da.tar.gz
core-7e82586889770f7d8146489bda5f6c71fbc826da.zip
Zoom support
Change-Id: I988f2347b06ed6841a7e9335adc6ac31b0b500b5
-rw-r--r--gtv.ui33
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx29
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-application-window.hxx4
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx10
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx11
5 files changed, 72 insertions, 15 deletions
diff --git a/gtv.ui b/gtv.ui
index aabec3c4f69e..bb7db0fc7fc6 100644
--- a/gtv.ui
+++ b/gtv.ui
@@ -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: */