summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPranav Kant <pranavk@collabora.co.uk>2017-07-04 19:57:04 +0530
committerPranav Kant <pranavk@collabora.co.uk>2017-07-04 19:58:08 +0530
commit39d9e4f288346faa2e2eab36d608ac80de6b6cc8 (patch)
treea95ea1137b7a9032579e4f2a5c6fe32d94d5554b
parent96f3b44deacf63ab7bd5da1c02c7d3d12905b483 (diff)
New class for main toolbar; use XML descriptions for UI
Change-Id: I30ee13e0c02346d7ef6a8faf82758edd02dd1913
-rw-r--r--gtv.ui107
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx33
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-application.cxx17
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx77
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.hxx26
5 files changed, 244 insertions, 16 deletions
diff --git a/gtv.ui b/gtv.ui
new file mode 100644
index 000000000000..68a35fece642
--- /dev/null
+++ b/gtv.ui
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.20.0 -->
+<interface>
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkBox" id="container">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkGrid" id="maingrid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkDrawingArea" id="cornerarea">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkDrawingArea" id="rowbararea">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkDrawingArea" id="columnbararea">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <object class="GtkToolbar" id="toolbar1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="toolbar_style">icons</property>
+ <child>
+ <object class="GtkToolButton" id="btn_save">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">__glade_unnamed_3</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-save</property>
+ <signal name="clicked" handler="btn_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <object class="GtkToolbar" id="toolbar2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="toolbar_style">icons</property>
+ <child>
+ <object class="GtkToggleToolButton" id="btn_bold">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-bold</property>
+ <signal name="toggled" handler="btn_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx b/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx
index 6b7793307c02..c7567f7a558e 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx
@@ -9,7 +9,11 @@
#include <gtk/gtk.h>
+#include <LibreOfficeKit/LibreOfficeKitGtk.h>
+#include <LibreOfficeKit/LibreOfficeKitEnums.h>
+
#include <gtv-application-window.hxx>
+#include <gtv-main-toolbar.hxx>
struct _GtvApplicationWindow
{
@@ -19,16 +23,11 @@ struct _GtvApplicationWindow
struct GtvApplicationWindowPrivate
{
GtkWidget* container;
- GtkWidget* toolbar1;
- GtkWidget* toolbar2;
- GtkWidget* btn_saveas;
- GtkWidget* btn_copy;
- GtkWidget* btn_paste;
- GtkWidget* btn_bold;
- GtkWidget* btn_italics;
- GtkWidget* btn_underline;
- GtkWidget* statusbar;
+ GtkWidget* toolbarcontainer;
+
GtkWidget* scrolledwindow;
+ GtkWidget* lokdocview;
+ GtkWidget* statusbar;
};
G_DEFINE_TYPE_WITH_PRIVATE(GtvApplicationWindow, gtv_application_window, GTK_TYPE_APPLICATION_WINDOW);
@@ -47,16 +46,24 @@ gtv_application_window_init(GtvApplicationWindow* win)
// This is the parent GtkBox holding everything
priv->container = GTK_WIDGET(gtk_builder_get_object(builder, "container"));
- // 1st row toolbar
- priv->toolbar1 = GTK_WIDGET(gtk_builder_get_object(builder, "toolbar1"));
- // 2nd row toolbar
- priv->toolbar2 = GTK_WIDGET(gtk_builder_get_object(builder, "toolbar2"));
+ // Toolbar container
+ priv->toolbarcontainer = gtv_main_toolbar_new();
+
+ // Attach to the toolbar to main window
+ gtk_box_pack_start(GTK_BOX(priv->container), priv->toolbarcontainer, false, false, false);
+ gtk_box_reorder_child(GTK_BOX(priv->container), priv->toolbarcontainer, 0);
+
// scrolled window containing the main drawing area
priv->scrolledwindow = GTK_WIDGET(gtk_builder_get_object(builder, "scrolledwindow"));
+ // give life to lokdocview
+ priv->lokdocview = lok_doc_view_new_from_user_profile(pLOPath, pUserProfile, nullptr, nullptr);
+
// statusbar
priv->statusbar = GTK_WIDGET(gtk_builder_get_object(builder, "statusbar"));
gtk_container_add(GTK_CONTAINER(win), priv->container);
+
+ g_object_unref(builder);
}
static void
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-application.cxx b/libreofficekit/qa/gtktiledviewer/gtv-application.cxx
index eab1f08bf938..4701530297c5 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-application.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-application.cxx
@@ -26,18 +26,29 @@ gtv_application_activate(GApplication* application)
gtk_window_present(GTK_WINDOW(win));
}
-//gtv_application_open(GApplication* /*win*/, GFile** /*file*/, gint, const gchar*)
+gtv_application_open(GApplication* win, GFile** file, gint, const gchar*)
+{
+
+}
static void
-gtv_application_init(GtvApplication*)
+gtv_application_init(GtvApplication* app)
{
- // TODO
+ static const GOptionEntry commandLineOptions[] =
+ {
+ { "version", 'v', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, nullptr, "Show LOkit version", nullptr },
+ { "lo-path", 0, G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, nullptr, "Manda", nullptr }
+ };
+
+ g_application_add_main_option_entries(G_APPLICATION(app), commandLineOptions);
}
static void
gtv_application_class_init(GtvApplicationClass* klass)
{
G_APPLICATION_CLASS(klass)->activate = gtv_application_activate;
+ G_APPLICATION_CLASS(klass)-> = gtv_application_activate;
+
}
GtvApplication* gtv_application_new()
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx b/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx
new file mode 100644
index 000000000000..efdd70fe453d
--- /dev/null
+++ b/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx
@@ -0,0 +1,77 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <gtk/gtk.h>
+
+#include <gtv-main-toolbar.hxx>
+
+struct _GtvMainToolbar
+{
+ GtkBox parent;
+};
+
+struct GtvMainToolbarPrivate
+{
+ GtkWidget* toolbar1;
+ GtkWidget* toolbar2;
+
+ GtkWidget* btn_save;
+ GtkWidget* btn_bold;
+};
+
+G_DEFINE_TYPE_WITH_PRIVATE(GtvMainToolbar, gtv_main_toolbar, GTK_TYPE_BOX);
+
+static GtvMainToolbarPrivate*
+getPrivate(GtvMainToolbar* toolbar)
+{
+ return static_cast<GtvMainToolbarPrivate*>(gtv_main_toolbar_get_instance_private(toolbar));
+}
+
+static void
+btn_clicked(GtkWidget* pWidget, gpointer)
+{
+ g_info("btn clicked");
+}
+
+static void
+gtv_main_toolbar_init(GtvMainToolbar* toolbar)
+{
+ GtkBuilder* builder = gtk_builder_new_from_file("gtv.ui");
+ GtvMainToolbarPrivate* priv = getPrivate(toolbar);
+
+ priv->toolbar1 = GTK_WIDGET(gtk_builder_get_object(builder, "toolbar1"));
+ gtk_box_pack_start(GTK_BOX(toolbar), priv->toolbar1, false, false, false);
+ priv->toolbar2 = GTK_WIDGET(gtk_builder_get_object(builder, "toolbar2"));
+ gtk_box_pack_start(GTK_BOX(toolbar), priv->toolbar2, false, false, false);
+
+ priv->btn_save = GTK_WIDGET(gtk_builder_get_object(builder, "btn_save"));
+ priv->btn_bold = GTK_WIDGET(gtk_builder_get_object(builder, "btn_bold"));
+
+ gtk_widget_show_all(GTK_WIDGET(toolbar));
+}
+
+static void
+gtv_main_toolbar_class_init(GtvMainToolbarClass*)
+{
+ // TODO: Use templates to bind objects maybe ?
+ // But that requires compiling the .ui file into C source requiring
+ // glib-compile-resources (another dependency) as I can't find any gtk
+ // method to set the template from the .ui file directly; can only be set
+ // from gresource
+}
+
+GtkWidget*
+gtv_main_toolbar_new()
+{
+ return GTK_WIDGET(g_object_new(GTV_MAIN_TOOLBAR_TYPE,
+ "orientation", GTK_ORIENTATION_VERTICAL,
+ nullptr));
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.hxx b/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.hxx
new file mode 100644
index 000000000000..83467cccdd36
--- /dev/null
+++ b/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.hxx
@@ -0,0 +1,26 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef GTV_MAIN_TOOLBAR_H
+#define GTV_MAIN_TOOLBAR_H
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define GTV_MAIN_TOOLBAR_TYPE (gtv_main_toolbar_get_type())
+G_DECLARE_FINAL_TYPE(GtvMainToolbar, gtv_main_toolbar, GTV, MAIN_TOOLBAR, GtkBox);
+
+GtkWidget* gtv_main_toolbar_new();
+
+G_END_DECLS
+
+#endif /* GTV_MAIN_TOOLBAR_H */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */