From 312883ad755e76cee95735f9faca4a8354b068fd Mon Sep 17 00:00:00 2001 From: Andrzej Hunt Date: Tue, 8 Jul 2014 09:53:42 +0200 Subject: gtktiledviewer: allow selecting between normal and quad-tile view. Change-Id: I85b22b93fe4ce2ffb62df8766ceea7a1bd8961ee --- .../qa/gtktiledviewer/gtktiledviewer.cxx | 71 ++++++++++++++++++++-- 1 file changed, 66 insertions(+), 5 deletions(-) (limited to 'libreofficekit') 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 #include +#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 +} -- cgit