2
// Copyright (C) 2009 GNOME Do
4
// This program is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
9
// This program is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
// GNU General Public License for more details.
14
// You should have received a copy of the GNU General Public License
15
// along with this program. If not, see <http://www.gnu.org/licenses/>.
19
using System.Collections.Generic;
27
using Docky.Utilities;
29
namespace Docky.Interface
33
[System.ComponentModel.ToolboxItem(true)]
34
public partial class DockyConfigurationWidget : Gtk.Bin
36
NodeView docklets_nodeview;
38
[TreeNode (ListOnly=true)]
39
class DockletTreeNode : TreeNode {
40
AbstractDockletItem docklet;
42
public DockletTreeNode (AbstractDockletItem docklet)
44
this.docklet = docklet;
47
[TreeNodeValue (Column=0)]
49
get { return DockServices.DockletService.ActiveDocklets.Contains (docklet); }
52
[TreeNodeValue (Column=1)]
54
get { return docklet.Name; }
59
DockServices.DockletService.ToggleDocklet (docklet);
69
store = new NodeStore (typeof (DockletTreeNode));
76
public DockyConfigurationWidget()
81
zoom_scale.Digits = 1;
82
zoom_scale.SetRange (1.1, 4);
83
zoom_scale.SetIncrements (.1, .1);
84
zoom_scale.Value = DockPreferences.ZoomPercent;
86
icon_size_scale.Value = DockPreferences.IconSize;
88
advanced_indicators_checkbutton.Active = DockPreferences.IndicateMultipleWindows;
89
zoom_checkbutton.Active = DockPreferences.ZoomEnabled;
91
orientation_combobox.AppendText (DockOrientation.Bottom.ToString ());
92
orientation_combobox.AppendText (DockOrientation.Top.ToString ());
93
orientation_combobox.Active = DockPreferences.Orientation == DockOrientation.Bottom ? 0 : 1;
95
autohide_combo.AppendText (((AutohideType) 0).ToString ());
96
autohide_combo.AppendText (((AutohideType) 1).ToString ());
97
autohide_combo.AppendText (((AutohideType) 2).ToString ());
98
autohide_combo.Active = (int) DockPreferences.AutohideType;
104
DockPreferences.IconSizeChanged += HandleIconSizeChanged;
106
Gtk.Application.Invoke (delegate { setup = false; });
109
void HandleIconSizeChanged()
114
void BuildDocklets ()
116
docklets_nodeview = new NodeView (Store);
117
docklets_nodeview.RulesHint = true;
118
scrolled_window.Add (docklets_nodeview);
120
Gtk.CellRendererToggle toggle = new Gtk.CellRendererToggle ();
121
toggle.Toggled += HandleToggled;
122
docklets_nodeview.AppendColumn ("Enabled", toggle, "active", 0);
123
docklets_nodeview.AppendColumn ("Name", new Gtk.CellRendererText (), "text", 1);
125
docklets_nodeview.HeadersVisible = false;
127
foreach (AbstractDockletItem adi in DockServices.DockletService.Docklets) {
128
Store.AddNode (new DockletTreeNode (adi));
131
scrolled_window.ShowAll ();
134
void SetSensitivity ()
136
zoom_scale.Sensitive = DockPreferences.ZoomEnabled;
139
void HandleToggled (object o, ToggledArgs args)
141
DockletTreeNode node = Store.GetNode (new Gtk.TreePath (args.Path)) as DockletTreeNode;
145
protected virtual void OnZoomScaleFormatValue (object o, Gtk.FormatValueArgs args)
147
args.RetVal = string.Format ("{0}%", Math.Round (args.Value * 100));
150
protected virtual void OnZoomScaleValueChanged (object sender, System.EventArgs e)
152
if (setup || !(sender is HScale)) return;
154
HScale scale = sender as HScale;
155
DockPreferences.ZoomPercent = scale.Value;
158
protected virtual void OnAdvancedIndicatorsCheckbuttonToggled (object sender, System.EventArgs e)
161
DockPreferences.IndicateMultipleWindows = advanced_indicators_checkbutton.Active;
164
protected virtual void OnZoomCheckbuttonToggled (object sender, System.EventArgs e)
167
DockPreferences.ZoomEnabled = zoom_checkbutton.Active;
170
zoom_scale.Value = DockPreferences.ZoomPercent;
171
Gtk.Application.Invoke (delegate { setup = false; });
174
protected virtual void OnOrientationComboboxChanged (object sender, System.EventArgs e)
177
DockPreferences.Orientation = (DockOrientation) orientation_combobox.Active;
180
protected virtual void OnAutohideComboChanged (object sender, System.EventArgs e)
183
DockPreferences.AutohideType = (AutohideType) autohide_combo.Active;
186
public override void Dispose ()
188
DockPreferences.IconSizeChanged -= HandleIconSizeChanged;
192
protected virtual void OnIconSizeScaleValueChanged (object sender, System.EventArgs e)
195
int val = (int) icon_size_scale.Value;
196
DockPreferences.IconSize = val;
198
if (DockPreferences.IconSize != val) {
199
icon_size_scale.Value = DockPreferences.IconSize;
203
protected virtual void OnClearRemovedButtonClicked (object sender, System.EventArgs e)
205
DockPreferences.ClearBlacklist ();
206
DockServices.ItemsService.ForceUpdate ();