summaryrefslogtreecommitdiff
path: root/libreofficekit
diff options
context:
space:
mode:
authorAndrzej Hunt <andrzej.hunt@collabora.com>2014-07-08 09:53:42 +0200
committerAndrzej Hunt <andrzej.hunt@collabora.com>2014-07-12 05:19:13 +0200
commit312883ad755e76cee95735f9faca4a8354b068fd (patch)
tree08db065e1c8605432637b3a5c8363cb69724bc86 /libreofficekit
parentd5b2c1908094adedc916545dfffca4d84b1661d3 (diff)
gtktiledviewer: allow selecting between normal and quad-tile view.
Change-Id: I85b22b93fe4ce2ffb62df8766ceea7a1bd8961ee
Diffstat (limited to 'libreofficekit')
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx71
1 files changed, 66 insertions, 5 deletions
diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
index bc4ad093be60..3a232e818c07 100644
--- a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
@@ -14,6 +14,7 @@
#include <gtk/gtk.h>
#include <LibreOfficeKit/LibreOfficeKitGtk.h>
+#include "../lokdocview_quad/lokdocview_quad.h"
static int help()
{
@@ -22,6 +23,10 @@ static int help()
}
static GtkWidget* pDocView;
+static GtkWidget* pDocViewQuad;
+static GtkWidget* pVBox;
+static LibreOfficeKit* pOffice;
+static char* pFileName;
const float fZooms[] = { 0.25, 0.5, 0.75, 1.0, 1.5, 2.0, 3.0, 5.0 };
@@ -30,7 +35,17 @@ void changeZoom( GtkWidget* pButton, gpointer /* pItem */ )
const char *sName = gtk_tool_button_get_stock_id( GTK_TOOL_BUTTON(pButton) );
float fZoom = 0;
- const float fCurrentZoom = lok_docview_get_zoom( LOK_DOCVIEW(pDocView) );
+ float fCurrentZoom;
+
+ if ( pDocView )
+ {
+ fCurrentZoom = lok_docview_get_zoom( LOK_DOCVIEW(pDocView) );
+ }
+ else if ( pDocViewQuad )
+ {
+ fCurrentZoom = lok_docview_quad_get_zoom( LOK_DOCVIEW_QUAD(pDocView) );
+ }
+
if ( strcmp(sName, "gtk-zoom-in") == 0)
{
for ( unsigned int i = 0; i < sizeof( fZooms ) / sizeof( fZooms[0] ); i++ )
@@ -63,10 +78,46 @@ void changeZoom( GtkWidget* pButton, gpointer /* pItem */ )
if ( fZoom != 0 )
{
- lok_docview_set_zoom( LOK_DOCVIEW(pDocView), fZoom );
+ if ( pDocView )
+ {
+ lok_docview_set_zoom( LOK_DOCVIEW(pDocView), fZoom );
+ }
+ else if ( pDocViewQuad )
+ {
+ lok_docview_quad_set_zoom( LOK_DOCVIEW_QUAD(pDocViewQuad), fZoom );
+ }
}
}
+void changeQuadView( GtkWidget* /*pButton*/, gpointer /* pItem */ )
+{
+ if ( pDocView )
+ {
+ const float fCurrentZoom = lok_docview_get_zoom( LOK_DOCVIEW(pDocView) );
+ gtk_widget_destroy( pDocView );
+ pDocView = 0;
+ pDocViewQuad = lok_docview_quad_new( pOffice );
+ gtk_container_add( GTK_CONTAINER(pVBox), pDocViewQuad );
+ gtk_widget_show( pDocViewQuad );
+
+ lok_docview_quad_set_zoom( LOK_DOCVIEW_QUAD(pDocViewQuad), fCurrentZoom );
+ lok_docview_quad_open_document( LOK_DOCVIEW_QUAD(pDocViewQuad), pFileName );
+ }
+ else if ( pDocViewQuad )
+ {
+ const float fCurrentZoom = lok_docview_quad_get_zoom( LOK_DOCVIEW_QUAD(pDocViewQuad) );
+ gtk_widget_destroy( pDocViewQuad );
+ pDocViewQuad = 0;
+ pDocView = lok_docview_new( pOffice );
+ gtk_container_add( GTK_CONTAINER(pVBox), pDocView );
+ gtk_widget_show( pDocView );
+
+ lok_docview_set_zoom( LOK_DOCVIEW(pDocView), fCurrentZoom );
+ lok_docview_open_document( LOK_DOCVIEW(pDocView), pFileName );
+ }
+}
+
+
int main( int argc, char* argv[] )
{
if( argc < 2 ||
@@ -79,7 +130,7 @@ int main( int argc, char* argv[] )
return 1;
}
- LibreOfficeKit* pOffice = lok_init( argv[1] );
+ pOffice = lok_init( argv[1] );
gtk_init( &argc, &argv );
@@ -88,7 +139,7 @@ int main( int argc, char* argv[] )
gtk_window_set_default_size(GTK_WINDOW(pWindow), 800, 600);
g_signal_connect( pWindow, "destroy", G_CALLBACK(gtk_main_quit), NULL );
- GtkWidget* pVBox = gtk_vbox_new( FALSE, 0 );
+ pVBox = gtk_vbox_new( FALSE, 0 );
gtk_container_add( GTK_CONTAINER(pWindow), pVBox );
// Toolbar
@@ -111,17 +162,27 @@ int main( int argc, char* argv[] )
gtk_toolbar_insert( GTK_TOOLBAR(pToolbar), pZoomOut, -1);
g_signal_connect( G_OBJECT(pZoomOut), "clicked", G_CALLBACK(changeZoom), NULL );
+ GtkToolItem* pSeparator1 = gtk_separator_tool_item_new();
+ gtk_toolbar_insert( GTK_TOOLBAR(pToolbar), pSeparator1, -1);
+
+ GtkToolItem* pEnableQuadView = gtk_toggle_tool_button_new();
+ gtk_tool_button_set_label( GTK_TOOL_BUTTON(pEnableQuadView), "Use Quad View" );
+ gtk_toolbar_insert( GTK_TOOLBAR(pToolbar), pEnableQuadView, -1 );
+ g_signal_connect( G_OBJECT(pEnableQuadView), "toggled", G_CALLBACK(changeQuadView), NULL );
+
gtk_box_pack_start( GTK_BOX(pVBox), pToolbar, FALSE, FALSE, 0 ); // Adds to top.
// Docview
pDocView = lok_docview_new( pOffice );
+ pDocViewQuad = 0;
gtk_container_add( GTK_CONTAINER(pVBox), pDocView );
gtk_widget_show_all( pWindow );
+ pFileName = argv[2];
lok_docview_open_document( LOK_DOCVIEW(pDocView), argv[2] );
gtk_main();
return 0;
-} \ No newline at end of file
+}