[gnome-latex/wip/side-panel: 1/3] SidePanel: use GtkStack and GtkStackSwitcher
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-latex/wip/side-panel: 1/3] SidePanel: use GtkStack and GtkStackSwitcher
- Date: Mon, 20 Apr 2020 14:37:05 +0000 (UTC)
commit 8061debe781414c79a3234d3200be7c26c967651
Author: Sébastien Wilmet <swilmet gnome org>
Date: Mon Apr 20 16:03:23 2020 +0200
SidePanel: use GtkStack and GtkStackSwitcher
src/side_panel.vala | 83 ++++++++---------------------------------------------
1 file changed, 12 insertions(+), 71 deletions(-)
---
diff --git a/src/side_panel.vala b/src/side_panel.vala
index a0b7687..6ba5e0b 100644
--- a/src/side_panel.vala
+++ b/src/side_panel.vala
@@ -21,67 +21,36 @@ using Gtk;
public class SidePanel : Grid
{
- private enum SidePanelColumn
- {
- PIXBUF,
- NAME,
- N_COLUMNS
- }
-
private GLib.Settings _settings;
- private Gee.ArrayList<Grid?> _components;
- private ComboBox _combo_box;
- private Gtk.ListStore _list_store;
- private int _current_component = -1;
+ private Gtk.Stack _stack;
public SidePanel ()
{
_settings = new GLib.Settings ("org.gnome.gnome-latex.preferences.ui");
- _components = new Gee.ArrayList<Grid?> ();
margin_start = 6;
margin_top = 3;
column_spacing = 3;
row_spacing = 3;
- init_combo_box ();
- Button close_button = get_close_button ();
+ _stack = new Gtk.Stack ();
+ Gtk.StackSwitcher stack_switcher = new Gtk.StackSwitcher ();
+ stack_switcher.set_stack (_stack);
+ stack_switcher.set_halign (Align.CENTER);
- attach (_combo_box, 0, 0, 1, 1);
- attach (close_button, 1, 0, 1, 1);
+ attach (stack_switcher, 0, 0, 1, 1);
+ attach (get_close_button (), 1, 0, 1, 1);
+ attach (_stack, 0, 1, 2, 1);
show_all ();
}
- private void init_combo_box ()
- {
- _list_store = new Gtk.ListStore (SidePanelColumn.N_COLUMNS,
- typeof (string), // pixbuf (icon-name)
- typeof (string) // name
- );
-
- _combo_box = new ComboBox.with_model (_list_store);
- _combo_box.hexpand = true;
-
- CellRendererPixbuf pixbuf_renderer = new CellRendererPixbuf ();
- _combo_box.pack_start (pixbuf_renderer, false);
- _combo_box.set_attributes (pixbuf_renderer,
- "icon-name", SidePanelColumn.PIXBUF, null);
-
- CellRendererText text_renderer = new CellRendererText ();
- text_renderer.ellipsize_set = true;
- text_renderer.ellipsize = Pango.EllipsizeMode.END;
- _combo_box.pack_start (text_renderer, true);
- _combo_box.set_attributes (text_renderer, "text", SidePanelColumn.NAME, null);
-
- /* signals */
- _combo_box.changed.connect (show_active_component);
- }
-
private Button get_close_button ()
{
Button close_button = Tepl.utils_create_close_button () as Button;
close_button.tooltip_text = _("Hide panel");
close_button.margin_end = 3;
+ close_button.expand = false;
+ close_button.set_halign (Align.END);
close_button.clicked.connect (() => this.hide ());
@@ -90,39 +59,11 @@ public class SidePanel : Grid
public void add_component (string name, string icon_name, Grid component)
{
- TreeIter iter;
- _list_store.append (out iter);
- _list_store.set (iter,
- SidePanelColumn.PIXBUF, icon_name,
- SidePanelColumn.NAME, name);
-
- _components.add (component);
- attach (component, 0, _components.size, 2, 1);
+ component.show ();
+ Tepl.stack_add_component (_stack, component, icon_name, name, icon_name);
}
public void restore_state ()
{
- foreach (Grid component in _components)
- component.hide ();
-
- int num = _settings.get_int ("side-panel-component");
- num = num.clamp (0, _components.size - 1);
- _combo_box.set_active (num);
-
- // Save which component is displayed. Since the component can be different
- // on each window, we make only a SET (not a GET).
- // The setting is bind only after getting the old value, otherwise the old value
- // is overwritten.
- _settings.bind ("side-panel-component", _combo_box, "active",
- SettingsBindFlags.SET);
- }
-
- private void show_active_component ()
- {
- if (0 <= _current_component && _current_component < _components.size)
- _components[_current_component].hide ();
-
- _current_component = _combo_box.active;
- _components[_current_component].show ();
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]