summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPranav Kant <pranavk@collabora.co.uk>2017-07-13 18:12:09 +0530
committerPranav Kant <pranavk@collabora.co.uk>2017-07-13 18:12:09 +0530
commitc4214361200dc923d9aa8d62da1328d448dbe5c1 (patch)
tree633fa6da309c86bf1cd4bf6012413ab4eb267e68
parenttry to attach findbar tool signals (diff)
downloadcore-private/pranavk/modernize_gtktiledviewer.tar.gz
core-private/pranavk/modernize_gtktiledviewer.zip
part selector etc. working now private/pranavk/modernize_gtktiledviewer
Change-Id: I99236357fcdecac2d2853fc9a8e94e3c59cc820b
-rw-r--r--gtv.ui2
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx34
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-application-window.hxx4
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx45
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx26
5 files changed, 101 insertions, 10 deletions
diff --git a/gtv.ui b/gtv.ui
index 1f92c41aae22..e27f79714a4b 100644
--- a/gtv.ui
+++ b/gtv.ui
@@ -427,7 +427,7 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
- <object class="GtkComboBoxText" id="combo_partsmodeelector">
+ <object class="GtkComboBoxText" id="combo_partsmodeselector">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="active">0</property>
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx b/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx
index 3a81e9aa7b6e..fa25b97bbe20 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx
@@ -32,6 +32,7 @@ struct GtvApplicationWindowPrivate
gboolean toolbarBroadcast;
gboolean partSelectorBroadcast;
+ gboolean partModeSelectorBroadcast;
// Rendering args; options with which lokdocview was rendered in this window
GtvRenderingArgs* m_pRenderingArgs;
@@ -131,11 +132,6 @@ static void initWindow(GtvApplicationWindow* window)
{
GtvApplicationWindowPrivate* priv = getPrivate(window);
- priv->partSelectorBroadcast = false;
- //populatePartSelector(LOK_DOC_VIEW(rWindow.m_pDocView));
- priv->partSelectorBroadcast = true;
-
- //populatePartModeSelector( GTK_COMBO_BOX_TEXT(rWindow.m_pPartModeComboBox) );
//populateDialogs(GTK_COMBO_BOX_TEXT(rWindow.m_pDialogComboBox));
//registerSelectorHandlers(rWindow);
@@ -386,6 +382,34 @@ gtv_application_window_get_toolbar_broadcast(GtvApplicationWindow* window)
return priv->toolbarBroadcast;
}
+void
+gtv_application_window_set_part_broadcast(GtvApplicationWindow* window, bool broadcast)
+{
+ GtvApplicationWindowPrivate* priv = getPrivate(window);
+ priv->partSelectorBroadcast = broadcast;
+}
+
+gboolean
+gtv_application_window_get_part_broadcast(GtvApplicationWindow* window)
+{
+ GtvApplicationWindowPrivate* priv = getPrivate(window);
+ return priv->partSelectorBroadcast;
+}
+
+void
+gtv_application_window_set_partmode_broadcast(GtvApplicationWindow* window, bool broadcast)
+{
+ GtvApplicationWindowPrivate* priv = getPrivate(window);
+ priv->partModeSelectorBroadcast = broadcast;
+}
+
+gboolean
+gtv_application_window_get_partmode_broadcast(GtvApplicationWindow* window)
+{
+ GtvApplicationWindowPrivate* priv = getPrivate(window);
+ return priv->partModeSelectorBroadcast;
+}
+
GtvApplicationWindow*
gtv_application_window_new(GtkApplication* app)
{
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-application-window.hxx b/libreofficekit/qa/gtktiledviewer/gtv-application-window.hxx
index 2337b74e1078..a3ac05b2158b 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-application-window.hxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-application-window.hxx
@@ -79,6 +79,10 @@ void gtv_application_window_set_toolbar_broadcast(GtvApplicationWindow* window,
gboolean gtv_application_window_get_toolbar_broadcast(GtvApplicationWindow* window);
+void gtv_application_window_set_part_broadcast(GtvApplicationWindow* window, bool broadcast);
+
+gboolean gtv_application_window_get_part_broadcast(GtvApplicationWindow* window);
+
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 b37709976402..1743a7824846 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx
@@ -30,8 +30,8 @@ struct GtvMainToolbarPrivateImpl
GtkWidget* m_pRightpara;
GtkWidget* m_pJustifypara;
GtkWidget* m_pDeleteComment;
- GtkWidget* m_pAddressbar;
- GtkWidget* m_pFormulabar;
+ GtkWidget* m_pPartSelector;
+ GtkWidget* m_pPartModeSelector;
/// Sensitivity (enabled or disabled) for each tool item, ignoring edit state
std::map<GtkToolItem*, bool> m_aToolItemSensitivities;
@@ -82,6 +82,8 @@ gtv_main_toolbar_init(GtvMainToolbar* toolbar)
priv->m_pRightpara = GTK_WIDGET(gtk_builder_get_object(builder, "btn_justifyright"));
priv->m_pJustifypara = GTK_WIDGET(gtk_builder_get_object(builder, "btn_justifyfill"));
priv->m_pDeleteComment = GTK_WIDGET(gtk_builder_get_object(builder, "btn_removeannotation"));
+ priv->m_pPartSelector = GTK_WIDGET(gtk_builder_get_object(builder, "combo_partselector"));
+ priv->m_pPartModeSelector = GTK_WIDGET(gtk_builder_get_object(builder, "combo_partsmodeselector"));
toolbar->m_pAddressbar = GTK_WIDGET(gtk_builder_get_object(builder, "addressbar_entry"));
toolbar->m_pFormulabar = GTK_WIDGET(gtk_builder_get_object(builder, "formulabar_entry"));
@@ -92,8 +94,8 @@ 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));
@@ -135,6 +137,38 @@ gtv_main_toolbar_class_init(GtvMainToolbarClass* klass)
G_OBJECT_CLASS(klass)->finalize = gtv_main_toolbar_finalize;
}
+static void populatePartSelector(GtvMainToolbar* toolbar)
+{
+ GtvMainToolbarPrivate& priv = getPrivate(toolbar);
+ GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(toolbar)));
+ gtv_application_window_set_part_broadcast(window, false);
+ gtk_list_store_clear( GTK_LIST_STORE(
+ gtk_combo_box_get_model(
+ GTK_COMBO_BOX(priv->m_pPartSelector) )) );
+
+ if (!window->lokdocview)
+ {
+ return;
+ }
+
+ const int nMaxLength = 50;
+ char sText[nMaxLength];
+
+ int nParts = lok_doc_view_get_parts(LOK_DOC_VIEW(window->lokdocview));
+ for ( int i = 0; i < nParts; i++ )
+ {
+ char* pName = lok_doc_view_get_part_name(LOK_DOC_VIEW(window->lokdocview), i);
+ assert( pName );
+ snprintf( sText, nMaxLength, "%i (%s)", i+1, pName );
+ free( pName );
+
+ gtk_combo_box_text_append_text( GTK_COMBO_BOX_TEXT(priv->m_pPartSelector), sText );
+ }
+ gtk_combo_box_set_active(GTK_COMBO_BOX(priv->m_pPartSelector), lok_doc_view_get_part(LOK_DOC_VIEW(window->lokdocview)));
+
+ gtv_application_window_set_part_broadcast(window, true);
+}
+
void
gtv_main_toolbar_doc_loaded(GtvMainToolbar* toolbar, LibreOfficeKitDocumentType eDocType, bool bEditMode)
{
@@ -158,6 +192,9 @@ gtv_main_toolbar_doc_loaded(GtvMainToolbar* toolbar, LibreOfficeKitDocumentType
}
gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(priv->m_pEnableEditing), bEditMode);
+
+ // populate combo boxes
+ populatePartSelector(toolbar);
}
GtkContainer*
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx b/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx
index f07f5f05644c..0a299a919810 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx
@@ -253,6 +253,32 @@ void toggleEditing(GtkWidget* pButton, gpointer /*pItem*/)
lok_doc_view_set_edit(LOK_DOC_VIEW(window->lokdocview), bActive);
}
+void changePart( GtkWidget* pSelector, gpointer /* pItem */ )
+{
+ int nPart = gtk_combo_box_get_active( GTK_COMBO_BOX(pSelector) );
+ GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(gtk_widget_get_toplevel(pSelector));
+
+ if (gtv_application_window_get_part_broadcast(window) && window->lokdocview)
+ {
+ lok_doc_view_set_part( LOK_DOC_VIEW(window->lokdocview), nPart );
+ lok_doc_view_reset_view(LOK_DOC_VIEW(window->lokdocview));
+ }
+}
+
+void changePartMode( GtkWidget* pSelector, gpointer /* pItem */ )
+{
+ // Just convert directly back to the LibreOfficeKitPartMode enum.
+ // I.e. the ordering above should match the enum member ordering.
+ LibreOfficeKitPartMode ePartMode =
+ LibreOfficeKitPartMode( gtk_combo_box_get_active( GTK_COMBO_BOX(pSelector) ) );
+ GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(gtk_widget_get_toplevel(pSelector));
+
+ if ( window->lokdocview )
+ {
+ lok_doc_view_set_partmode( LOK_DOC_VIEW(window->lokdocview), ePartMode );
+ }
+}
+
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 };