[aisleriot/wip/redesign: 10/17] window: Use a template
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [aisleriot/wip/redesign: 10/17] window: Use a template
- Date: Wed, 3 Jul 2013 17:54:11 +0000 (UTC)
commit 6fdc3dd7b211f8ee039d77a58dadafb0c5d03bb3
Author: Christian Persch <chpe gnome org>
Date: Wed Jul 3 19:08:53 2013 +0200
window: Use a template
src/aisleriot.gresource.xml.in | 1 +
src/window.c | 30 +++++++++----------------
src/window.ui | 46 ++++++++++++++++++++++++++++++++++++++++
3 files changed, 58 insertions(+), 19 deletions(-)
---
diff --git a/src/aisleriot.gresource.xml.in b/src/aisleriot.gresource.xml.in
index 2186118..71ecabb 100644
--- a/src/aisleriot.gresource.xml.in
+++ b/src/aisleriot.gresource.xml.in
@@ -17,6 +17,7 @@
-->
<gresources>
<gresource prefix="/org/gnome/aisleriot">
+ <file alias="ui/window.ui" compressed="true"
preprocess="xml-stripblanks">@top_srcdir@/src/window.ui</file>
<file alias="ui/menus.ui" compressed="true" preprocess="xml-stripblanks">@top_srcdir@/src/menus.ui</file>
<file alias="ui/prefs.ui" compressed="true" preprocess="xml-stripblanks">@top_srcdir@/src/prefs.ui</file>
<file alias="art/slot.svg" compressed="true"
preprocess="xml-stripblanks">@top_srcdir@/data/slot.svg</file>
diff --git a/src/window.c b/src/window.c
index 2398973..147e1dc 100644
--- a/src/window.c
+++ b/src/window.c
@@ -93,6 +93,7 @@ struct _AisleriotWindowPrivate
ArCardThemes *theme_manager;
ArCardTheme *theme;
+ GtkWidget *main_vbox;
GtkStatusbar *statusbar;
guint game_message_id;
guint board_message_id;
@@ -101,6 +102,7 @@ struct _AisleriotWindowPrivate
GtkWidget *clock;
GtkWidget *toolbar;
+ GtkWidget *headerbar;
GtkWidget *game_over_dialog;
GtkWidget *game_choice_dialog;
@@ -1562,7 +1564,6 @@ aisleriot_window_init (AisleriotWindow *window)
{ "fullscreen", action_toggle_state_cb, NULL, "false", action_fullscreen_state_cb },
};
AisleriotWindowPrivate *priv;
- GtkWidget *main_vbox;
GAction *action;
GtkStatusbar *statusbar;
GtkWidget *statusbar_hbox, *label, *time_box;
@@ -1573,6 +1574,8 @@ aisleriot_window_init (AisleriotWindow *window)
priv = window->priv = AISLERIOT_WINDOW_GET_PRIVATE (window);
+ gtk_widget_init_template (GTK_WIDGET (window));
+
priv->settings = g_settings_new (AR_SETTINGS_SCHEMA);
priv->state_settings = ar_application_state_settings_new (app, AR_STATE_SCHEMA);
@@ -1630,7 +1633,7 @@ aisleriot_window_init (AisleriotWindow *window)
g_object_set (action, "short-label", _("Select Game"), NULL);
#endif
- statusbar = priv->statusbar = GTK_STATUSBAR (gtk_statusbar_new ());
+ statusbar = priv->statusbar;
priv->game_message_id = gtk_statusbar_get_context_id (priv->statusbar, "game-message");
#if 0 //fixme
ar_stock_prepare_for_statusbar_tooltips (priv->ui_manager,
@@ -1647,8 +1650,6 @@ aisleriot_window_init (AisleriotWindow *window)
G_CALLBACK (board_status_message_cb), window);
#endif
- gtk_window_set_has_resize_grip (GTK_WINDOW (window), TRUE);
-
statusbar_hbox = gtk_statusbar_get_message_area (statusbar);
gtk_box_set_spacing (GTK_BOX (statusbar_hbox), 24);
@@ -1676,13 +1677,6 @@ aisleriot_window_init (AisleriotWindow *window)
ar_atk_util_add_atk_relation (label, priv->clock, ATK_RELATION_LABEL_FOR);
ar_atk_util_add_atk_relation (priv->clock, label, ATK_RELATION_LABELLED_BY);
- priv->toolbar = gtk_toolbar_new (); // FIXME
-
-#if GTK_CHECK_VERSION (3, 0, 3)
- gtk_style_context_add_class (gtk_widget_get_style_context (priv->toolbar),
- GTK_STYLE_CLASS_PRIMARY_TOOLBAR);
-#endif
-
/* The actions and menus are done. The
* recent games menu will be updated when the initial game loads.
*/
@@ -1703,14 +1697,7 @@ aisleriot_window_init (AisleriotWindow *window)
set_fullscreen_actions (window, FALSE);
/* Now set up the widgets */
- main_vbox = gtk_vbox_new (FALSE, 0);
- gtk_container_add (GTK_CONTAINER (window), main_vbox);
- gtk_widget_show (main_vbox);
-
- gtk_box_pack_start (GTK_BOX (main_vbox), priv->toolbar, FALSE, FALSE, 0);
- gtk_box_pack_end (GTK_BOX (main_vbox), GTK_WIDGET (priv->statusbar), FALSE, FALSE, 0);
-
- gtk_box_pack_start (GTK_BOX (main_vbox), GTK_WIDGET (priv->board), TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (priv->main_vbox), GTK_WIDGET (priv->board), TRUE, TRUE, 0);
gtk_widget_show (GTK_WIDGET (priv->board));
/* Synchronise */
@@ -1857,6 +1844,11 @@ aisleriot_window_class_init (AisleriotWindowClass *klass)
widget_class->style_set = aisleriot_window_style_set;
g_type_class_add_private (gobject_class, sizeof (AisleriotWindowPrivate));
+
+ gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/aisleriot/ui/window.ui");
+ gtk_widget_class_bind_child (widget_class, AisleriotWindowPrivate, main_vbox);
+ gtk_widget_class_bind_child (widget_class, AisleriotWindowPrivate, toolbar);
+ gtk_widget_class_bind_child (widget_class, AisleriotWindowPrivate, statusbar);
}
/* public API */
diff --git a/src/window.ui b/src/window.ui
new file mode 100644
index 0000000..cd76b85
--- /dev/null
+++ b/src/window.ui
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.10 -->
+ <template class="AisleriotWindow" parent="GtkWindow">
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkBox" id="main_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkToolbar" id="toolbar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="show_arrow">False</property>
+ <style>
+ <class name="primary-toolbar"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkStatusbar" id="statusbar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </template>
+</interface>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]