[gnome-boxes] Replace custom topbar code with Gd.MainToolbar



commit ce31b6dbcc075c2d3824c7840c5db18d56f341b9
Author: Marc-Andrà Lureau <marcandre lureau gmail com>
Date:   Tue Aug 7 17:10:51 2012 +0200

    Replace custom topbar code with Gd.MainToolbar

 src/display-page.vala |   70 ++++-----------------------
 src/properties.vala   |   22 +++------
 src/topbar.vala       |  127 +++++++++++++------------------------------------
 src/wizard.vala       |   39 +++++----------
 4 files changed, 65 insertions(+), 193 deletions(-)
---
diff --git a/src/display-page.vala b/src/display-page.vala
index bdeb03e..ccd1a5c 100644
--- a/src/display-page.vala
+++ b/src/display-page.vala
@@ -2,68 +2,18 @@
 using Gtk;
 using Gdk;
 
-private class Boxes.DisplayToolbar: Gtk.Toolbar {
-    public string title {
-        set { label.set_markup (value); }
-    }
-    private Label label;
-
+private class Boxes.DisplayToolbar: Gd.MainToolbar {
     public DisplayToolbar () {
-        icon_size = IconSize.MENU;
-        get_style_context ().add_class (STYLE_CLASS_MENUBAR);
-        set_show_arrow (false);
-
-        // Make sure we're the same size as the normal toolbar
-        this.set_size_request (-1, (int) Topbar.height);
-
-        var left_group = new ToolItem ();
-        insert (left_group, 0);
+        get_style_context ().add_class (Gtk.STYLE_CLASS_MENUBAR);
 
-        var center_group = new ToolItem ();
-        center_group.set_expand (true);
-        insert (center_group, -1);
-
-        var right_group = new ToolItem ();
-        insert (right_group, -1);
-
-        var size_group = new SizeGroup (SizeGroupMode.HORIZONTAL);
-        size_group.add_widget (left_group);
-        size_group.add_widget (right_group);
+        var back = add_button ("go-previous-symbolic", null, true) as Gtk.Button;
+        back.clicked.connect ((button) => { App.app.ui_state = UIState.COLLECTION; });
 
-        var left_box = new Box (Orientation.HORIZONTAL, 0);
-        left_box.valign = Gtk.Align.CENTER;
-        left_group.add (left_box);
+        var fullscreen = add_button ("view-fullscreen-symbolic", null, false) as Gtk.Button;
+        fullscreen.clicked.connect ((button) => { App.app.fullscreen = !App.app.fullscreen; });
 
-        var back = new Button ();
-        back.add (new Image.from_icon_name ("go-previous-symbolic",
-                                            IconSize.MENU));
-        back.get_style_context ().add_class ("raised");
-        back.clicked.connect ((button) => { App.app.ui_state = UIState.COLLECTION; });
-        left_box.pack_start (back, false, false, 0);
-
-        /* center title - unfortunately, metacity doesn't even center its
-           own title.. sad panda */
-        label = new Label ("Display");
-        label.use_markup = true;
-        center_group.add (label);
-
-        var right_box = new Box (Orientation.HORIZONTAL, 12);
-        right_box.valign = Gtk.Align.CENTER;
-        right_group.add(right_box);
-
-        var btn = new Button ();
-        btn.add (new Image.from_icon_name ("view-fullscreen-symbolic",
-                                           IconSize.MENU));
-        btn.get_style_context ().add_class ("raised");
-        btn.clicked.connect ((button) => { App.app.fullscreen = !App.app.fullscreen; });
-        right_box.pack_start (btn, false, false, 0);
-
-        var props = new Button ();
-        props.add (new Image.from_icon_name ("utilities-system-monitor-symbolic",
-                                             IconSize.MENU));
-        props.get_style_context ().add_class ("raised");
+        var props = add_button ("utilities-system-monitor-symbolic", null, false) as Gtk.Button;
         props.clicked.connect ((button) => { App.app.ui_state = UIState.PROPERTIES; });
-        right_box.pack_start (props, false, false, 0);
     }
 }
 
@@ -193,10 +143,12 @@ private class Boxes.DisplayPage: GLib.Object {
         return_if_fail (machine != null);
 
         var title = machine.name;
+        string? hint = null;
         if (grabbed)
-            title = _("%s <b>(press Ctrl+Alt keys to ungrab)</b>").printf (title);
+            hint = _("(press Ctrl+Alt keys to ungrab)");
 
-        overlay_toolbar.title = toolbar.title = title;
+        overlay_toolbar.set_labels (title, hint);
+        toolbar.set_labels (title, hint);
     }
 
     public void show_display (Boxes.Display display, Widget widget) {
diff --git a/src/properties.vala b/src/properties.vala
index e3fa3fa..5543701 100644
--- a/src/properties.vala
+++ b/src/properties.vala
@@ -16,7 +16,7 @@ private class Boxes.Properties: Boxes.UI {
     public Gtk.Widget screenshot_placeholder;
     private GtkClutter.Actor gtk_actor;
     private Gtk.Notebook notebook;
-    private Gtk.ToolButton back;
+    private Gtk.Button back;
     private Gtk.Label toolbar_label;
     private Gtk.ListStore listmodel;
     private Gtk.TreeView tree_view;
@@ -173,25 +173,17 @@ private class Boxes.Properties: Boxes.UI {
         /* topbar */
         var hbox = App.app.topbar.notebook.get_nth_page (Boxes.TopbarPage.PROPERTIES) as Gtk.HBox;
 
-        var toolbar = new Toolbar ();
-        toolbar.set_valign (Align.CENTER);
-        toolbar.icon_size = IconSize.MENU;
-        toolbar.get_style_context ().add_class (STYLE_CLASS_MENUBAR);
-        toolbar.set_show_arrow (false);
-
-        var toolbar_box = new Gtk.HBox (false, 0);
-        toolbar_box.set_size_request (50, (int) Boxes.Topbar.height);
-        toolbar_box.add (toolbar);
-
         var box = new Gtk.HBox (false, 5);
         box.add (new Gtk.Image.from_icon_name ("go-previous-symbolic", Gtk.IconSize.MENU));
         toolbar_label = new Gtk.Label ("label");
         box.add (toolbar_label);
-        back = new ToolButton (box, null);
-        back.get_style_context ().add_class ("raised");
+        box.vexpand = true;
+
+        var toolbar = new Gd.MainToolbar ();
+        hbox.pack_start (toolbar, true, true, 0);
+        back = toolbar.add_button (null, null, true) as Gtk.Button;
+        back.child = box;
         back.clicked.connect ((button) => { App.app.ui_state = UIState.DISPLAY; });
-        toolbar.insert (back, 0);
-        hbox.pack_start (toolbar_box, true, true, 0);
 
         hbox.show_all ();
 
diff --git a/src/topbar.vala b/src/topbar.vala
index 525e132..7c300b0 100644
--- a/src/topbar.vala
+++ b/src/topbar.vala
@@ -11,21 +11,18 @@ public enum Boxes.TopbarPage {
 
 private class Boxes.Topbar: Boxes.UI {
     public override Clutter.Actor actor { get { return gtk_actor; } }
-    public Gtk.Label label;
-
-    public const uint height = 50;
 
     private GtkClutter.Actor gtk_actor; // the topbar box
     public Notebook notebook;
 
     private Gtk.Spinner spinner;
-    private Gtk.ToggleToolButton search_btn;
-    private Gtk.ToolButton select_btn;
-    private Gtk.ToolButton cancel_btn;
-    private Gtk.ToolButton spinner_btn;
-    private Gtk.ToolButton back_btn;
+    private Gtk.ToggleButton search_btn;
+    private Gtk.Button select_btn;
+    private Gtk.Button cancel_btn;
+    private Gtk.Button spinner_btn;
+    private Gtk.Button back_btn;
     private Gtk.Button new_btn;
-    private Gtk.Label selection_label;
+    private Gd.MainToolbar selection_toolbar;
 
     public Topbar () {
         setup_topbar ();
@@ -37,60 +34,38 @@ private class Boxes.Topbar: Boxes.UI {
 
     private void setup_topbar () {
         notebook = new Gtk.Notebook ();
-        notebook.set_size_request (50, (int) height);
         gtk_actor = new GtkClutter.Actor.with_contents (notebook);
         gtk_actor.name = "topbar";
 
         /* TopbarPage.COLLECTION */
         var hbox = new Gtk.HBox (false, 0);
         notebook.append_page (hbox, null);
-        hbox.get_style_context ().add_class (Gtk.STYLE_CLASS_SIDEBAR);
-
-        var toolbar_start = new Gtk.Toolbar ();
-        toolbar_start.icon_size = Gtk.IconSize.MENU;
-        toolbar_start.get_style_context ().add_class (Gtk.STYLE_CLASS_MENUBAR);
-        toolbar_start.set_show_arrow (false);
-        hbox.pack_start (toolbar_start, true, true, 0);
-
-        back_btn = new Gtk.ToolButton (null, null);
-        back_btn.valign = Gtk.Align.CENTER;
-        back_btn.icon_name =  "go-previous-symbolic";
-        back_btn.get_style_context ().add_class ("raised");
-        back_btn.clicked.connect ((button) => { App.app.ui_state = UIState.COLLECTION; });
-        toolbar_start.insert (back_btn, 0);
 
-        new_btn = new Gtk.Button.with_label (_("New"));
+        var toolbar = new Gd.MainToolbar ();
+        toolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_MENUBAR);
+        hbox.pack_start (toolbar, true, true, 0);
+
+        new_btn = toolbar.add_button (null, _("New"), true) as Gtk.Button;
         new_btn.set_size_request (70, -1);
-        new_btn.get_style_context ().add_class ("raised");
-        var tool_item = new Gtk.ToolItem ();
-        tool_item.child = new_btn;
-        tool_item.valign = Gtk.Align.CENTER;
         new_btn.clicked.connect ((button) => { App.app.ui_state = UIState.WIZARD; });
-        toolbar_start.insert (tool_item, 1);
-
-        label = new Gtk.Label ("");
-        label.name = "TopbarLabel";
-        label.set_halign (Gtk.Align.START);
-        tool_item = new Gtk.ToolItem ();
-        tool_item.set_expand (true);
-        tool_item.child = label;
-        toolbar_start.insert (tool_item, 2);
 
-        var toolbar_end = new Gtk.Toolbar ();
-        toolbar_end.icon_size = Gtk.IconSize.MENU;
-        toolbar_end.get_style_context ().add_class (Gtk.STYLE_CLASS_MENUBAR);
+        back_btn = toolbar.add_button ("go-previous-symbolic", null, true) as Gtk.Button;
+        back_btn.clicked.connect ((button) => { App.app.ui_state = UIState.COLLECTION; });
 
         spinner = new Gtk.Spinner ();
-        spinner.start ();
-        spinner_btn = new Gtk.ToolButton (spinner, null);
-        spinner_btn.valign = Gtk.Align.CENTER;
-        spinner_btn.get_style_context ().add_class ("raised");
-        toolbar_end.insert (spinner_btn, 0);
-
-        select_btn = new Gtk.ToolButton (null, null);
-        select_btn.icon_name = "emblem-default-symbolic";
-        select_btn.get_style_context ().add_class ("raised");
-        select_btn.valign = Gtk.Align.CENTER;
+        spinner_btn = toolbar.add_button (null, null, false) as Gtk.Button;
+        spinner_btn.add (spinner);
+
+        search_btn = toolbar.add_toggle ("edit-find-symbolic", null, false) as Gtk.ToggleButton;
+        search_btn.bind_property ("active", App.app.searchbar, "visible", BindingFlags.BIDIRECTIONAL);
+        App.app.notify["search-visible"].connect (() => {
+            search_btn.active = App.app.searchbar.visible;
+        });
+        update_search_btn ();
+        App.app.collection.item_added.connect (update_search_btn);
+        App.app.collection.item_removed.connect (update_search_btn);
+
+        select_btn = toolbar.add_button ("emblem-default-symbolic", null, false) as Gtk.Button;
         select_btn.clicked.connect (() => {
             App.app.selection_mode = true;
         });
@@ -98,66 +73,32 @@ private class Boxes.Topbar: Boxes.UI {
             notebook.page = App.app.selection_mode ?
                 TopbarPage.SELECTION : notebook.page = TopbarPage.COLLECTION;
         });
-
         update_select_btn ();
         App.app.collection.item_added.connect (update_select_btn);
         App.app.collection.item_removed.connect (update_select_btn);
-        toolbar_end.insert (select_btn, 1);
-
-        search_btn = new Gtk.ToggleToolButton ();
-        search_btn.icon_name = "edit-find-symbolic";
-        search_btn.get_style_context ().add_class ("raised");
-        search_btn.valign = Gtk.Align.CENTER;
-        search_btn.bind_property ("active", App.app.searchbar, "visible", BindingFlags.BIDIRECTIONAL);
-        App.app.notify["search-visible"].connect (() => {
-            search_btn.active = App.app.searchbar.visible;
-        });
-        update_search_btn ();
-        App.app.collection.item_added.connect (update_search_btn);
-        App.app.collection.item_removed.connect (update_search_btn);
-        toolbar_end.insert (search_btn, 1);
-
-        toolbar_end.set_show_arrow (false);
-        hbox.pack_start (toolbar_end, false, false, 0);
 
         /* TopbarPage.SELECTION */
         hbox = new Gtk.HBox (false, 0);
         notebook.append_page (hbox, null);
-        hbox.get_style_context ().add_class (Gtk.STYLE_CLASS_SIDEBAR);
-
-        var toolbar_selection = new Gtk.Toolbar ();
-        toolbar_selection.set_style (Gtk.ToolbarStyle.TEXT);
-        toolbar_selection.get_style_context ().add_class (Gtk.STYLE_CLASS_MENUBAR);
-        toolbar_selection.icon_size = Gtk.IconSize.MENU;
-        toolbar_selection.set_show_arrow (false);
-        hbox.pack_start (toolbar_selection, true, true, 0);
+        selection_toolbar = new Gd.MainToolbar ();
+        toolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_MENUBAR);
+        hbox.pack_start (selection_toolbar, true, true, 0);
 
-        selection_label = new Gtk.Label ("");
         update_selection_label ();
-        selection_label.use_markup = true;
-        tool_item = new Gtk.ToolItem ();
-        tool_item.set_expand (true);
-        tool_item.child = selection_label;
-        toolbar_selection.insert (tool_item, 0);
-
-        cancel_btn = new Gtk.ToolButton.from_stock ("gtk-cancel");
-        cancel_btn.get_style_context ().add_class ("raised");
-        cancel_btn.valign = Gtk.Align.CENTER;
-        toolbar_selection.insert (cancel_btn, 1);
+
+        cancel_btn = selection_toolbar.add_button (null, _("_Cancel"), false) as Gtk.Button;
+        cancel_btn.use_stock = true;
         cancel_btn.clicked.connect (() => {
             App.app.selection_mode = false;
         });
 
         /* TopbarPage.WIZARD */
         hbox = new Gtk.HBox (false, 0);
-        hbox.margin = 5;
         notebook.append_page (hbox, null);
-        hbox.get_style_context ().add_class (Gtk.STYLE_CLASS_SIDEBAR);
 
         /* TopbarPage.PROPERTIES */
         hbox = new Gtk.HBox (false, 0);
         notebook.append_page (hbox, null);
-        hbox.get_style_context ().add_class (Gtk.STYLE_CLASS_SIDEBAR);
 
         notebook.show_tabs = false;
         notebook.show_all ();
@@ -174,9 +115,9 @@ private class Boxes.Topbar: Boxes.UI {
     private void update_selection_label () {
         var items = App.app.selected_items.length ();
         if (items > 0)
-            selection_label.set_markup ("<b>" + ngettext ("%d selected", "%d selected", items).printf (items) + "</b>");
+            selection_toolbar.set_labels (ngettext ("%d selected", "%d selected", items).printf (items), null);
         else
-            selection_label.set_markup ("<i>" + _("Click on items to select them") + "</i>");
+            selection_toolbar.set_labels (null, _("Click on items to select them"));
     }
 
     public override void ui_state_changed () {
diff --git a/src/wizard.vala b/src/wizard.vala
index a5ba4b8..d640195 100644
--- a/src/wizard.vala
+++ b/src/wizard.vala
@@ -523,46 +523,33 @@ private class Boxes.Wizard: Boxes.UI {
 
         /* topbar */
         hbox = App.app.topbar.notebook.get_nth_page (Boxes.TopbarPage.WIZARD) as Gtk.HBox;
-
-        var toolbar = new Gtk.Toolbar ();
-        toolbar.icon_size = Gtk.IconSize.MENU;
-        toolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_MENUBAR);
-        toolbar.set_show_arrow (false);
-        hbox.pack_start (toolbar, true, true, 0);
-
         label = new Gtk.Label (_("Create a Box"));
         label.name = "TopbarLabel";
         label.halign = Gtk.Align.START;
         label.margin_left = 15;
-        var tool_item = new Gtk.ToolItem ();
-        tool_item.set_expand (true);
-        tool_item.child = label;
-        toolbar.insert (tool_item, 0);
-
-        cancel_button = new Gtk.Button.from_stock (Gtk.Stock.CANCEL);
-        tool_item = new Gtk.ToolItem ();
-        tool_item.child = cancel_button;
-        toolbar.insert (tool_item, 1);
+        hbox.pack_start (label, false, false, 0);
+
+        var toolbar = new Gd.MainToolbar ();
+        toolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_MENUBAR);
+        toolbar.toolbar_style = Gtk.ToolbarStyle.TEXT;
+        hbox.pack_start (toolbar, true, true, 0);
+
+        cancel_button = toolbar.add_button (null, _("_Cancel"), false) as Gtk.Button;
+        cancel_button.use_underline = true;
         cancel_button.clicked.connect (() => {
             destroy_machine ();
             wizard_source.page = SourcePage.MAIN;
             App.app.ui_state = UIState.COLLECTION;
         });
 
-        back_button = new Gtk.Button.from_stock (Gtk.Stock.GO_BACK);
-        tool_item = new Gtk.ToolItem ();
-        tool_item.child = back_button;
-        tool_item.margin_left = 20;
-        toolbar.insert (tool_item, 2);
+        back_button = toolbar.add_button (null, _("_Back"), false) as Gtk.Button;
+        back_button.use_underline = true;
         back_button.clicked.connect (() => {
             page = page - 1;
         });
 
-        next_button = new Gtk.Button.with_mnemonic (_("C_ontinue"));
-        tool_item = new Gtk.ToolItem ();
-        tool_item.child = next_button;
-        tool_item.margin_left = 5;
-        toolbar.insert (tool_item, 3);
+        next_button = toolbar.add_button (null, _("C_ontinue"), false) as Gtk.Button;
+        next_button.use_underline = true;
         next_button.get_style_context ().add_class ("boxes-continue");
         next_button.clicked.connect (() => {
             page = page + 1;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]