diff options
author | Pranav Kant <pranavk@collabora.co.uk> | 2017-07-04 19:57:04 +0530 |
---|---|---|
committer | Pranav Kant <pranavk@collabora.co.uk> | 2017-07-04 19:58:08 +0530 |
commit | 39d9e4f288346faa2e2eab36d608ac80de6b6cc8 (patch) | |
tree | a95ea1137b7a9032579e4f2a5c6fe32d94d5554b | |
parent | 96f3b44deacf63ab7bd5da1c02c7d3d12905b483 (diff) |
New class for main toolbar; use XML descriptions for UI
Change-Id: I30ee13e0c02346d7ef6a8faf82758edd02dd1913
-rw-r--r-- | gtv.ui | 107 | ||||
-rw-r--r-- | libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx | 33 | ||||
-rw-r--r-- | libreofficekit/qa/gtktiledviewer/gtv-application.cxx | 17 | ||||
-rw-r--r-- | libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx | 77 | ||||
-rw-r--r-- | libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.hxx | 26 |
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: */ |