22
22
pygtk.require("2.0")
29
from ubuntutweak.common.settings import *
29
from ubuntutweak.conf import GconfSetting
30
from ubuntutweak.conf import SystemGconfSetting
31
from ubuntutweak.conf import UserGconfSetting
32
from ubuntutweak.policykit import PolkitButton, proxy
34
log = logging.getLogger('widgets')
31
36
class GconfCheckButton(gtk.CheckButton):
32
def __init__(self, label = None, key = None, default = None, tooltip = None):
37
def __init__(self, label=None, key=None, default=None, tooltip=None):
33
38
super(GconfCheckButton, self).__init__()
34
self.__setting = BoolSetting(key, default)
37
self.set_active(self.__setting.get_bool())
39
self.set_tooltip_text(tooltip)
41
self.__setting.client.notify_add(key, self.value_changed)
42
self.connect('toggled', self.button_toggled)
44
def value_changed(self, client, id, entry, data = None):
45
self.set_active(self.__setting.get_bool())
47
def button_toggled(self, widget, data = None):
48
self.__setting.set_bool(self.get_active())
39
self.__setting = GconfSetting(key=key, default=default, type=bool)
42
self.set_active(self.__setting.get_value())
44
self.set_tooltip_text(tooltip)
46
self.__setting.get_client().notify_add(key, self.value_changed)
47
self.connect('toggled', self.button_toggled)
49
def value_changed(self, client, id, entry, data=None):
50
self.set_active(self.__setting.get_value())
52
def button_toggled(self, widget, data=None):
53
self.__setting.set_value(self.get_active())
55
class SystemGconfCheckButton(gtk.CheckButton):
56
def __init__(self, label=None, key=None, default=None, tooltip=None):
57
super(SystemGconfCheckButton, self).__init__()
58
self.__setting = SystemGconfSetting(key, default)
61
self.set_active(self.__setting.get_value())
63
self.set_tooltip_text(tooltip)
65
self.connect('toggled', self.button_toggled)
67
def button_toggled(self, widget):
68
self.__setting.set_value(self.get_active())
70
class UserGconfCheckButton(gtk.CheckButton):
71
def __init__(self, user=None, label=None, key=None, default=None, tooltip=None):
72
super(UserGconfCheckButton, self).__init__()
73
self.__setting = UserGconfSetting(key, default)
77
self.set_active(bool(self.__setting.get_value(self.__user)))
79
self.set_tooltip_text(tooltip)
81
self.connect('toggled', self.button_toggled)
83
def button_toggled(self, widget):
84
self.__setting.set_value(self.__user, self.get_active())
50
86
class StrGconfCheckButton(GconfCheckButton):
51
87
'''This class use to moniter the key with StringSetting, nothing else'''
52
88
def __init__(self, **kwargs):
59
95
class GconfEntry(gtk.Entry):
60
def __init__(self, key = None, default = None):
96
def __init__(self, key=None, default=None):
61
97
gtk.Entry.__init__(self)
62
self.__setting = StringSetting(key, default)
98
self.__setting = GconfSetting(key=key, default=default, type=str)
64
string = self.__setting.get_string()
100
string = self.__setting.get_value()
66
102
self.set_text(string)
68
104
self.set_text(_("Unset"))
106
def is_changed(self):
107
return self.get_string_value() != self.get_text()
109
def get_string_value(self):
110
return self.__setting.get_value()
112
def connect_activate_signal(self):
70
113
self.connect('activate', self.on_edit_finished_cb)
72
115
def get_gsetting(self):
116
return self.__setting
119
self.set_text(self.get_string_value())
75
121
def on_edit_finished_cb(self, widget):
76
122
string = self.get_text()
77
client = self.__setting.client
78
key = self.__setting.key
123
client = self.__setting.get_client()
124
key = self.__setting.get_key()
80
126
client.set_string(key, self.get_text())
83
129
self.set_text(_("Unset"))
85
def GconfComboBox(key = None, texts = None, values = None):
131
def GconfComboBox(key=None, texts=None, values=None):
86
132
def value_changed_cb(widget, setting):
87
133
text = widget.get_active_text()
88
client = setting.client
91
client.set_string(key, setting.values[setting.texts.index(text)])
135
setting.get_client().set_value(setting.get_key(), \
136
setting.values[setting.texts.index(text)])
93
138
combobox = gtk.combo_box_new_text()
94
setting = ConstStringSetting(key, values)
139
setting = GconfSetting(key=key)
95
140
setting.texts = texts
141
setting.values = values
97
143
for text in texts:
98
144
combobox.append_text(text)
100
if setting.get_string() in values:
101
combobox.set_active(values.index(setting.get_string()))
146
if setting.get_value() in values:
147
combobox.set_active(values.index(setting.get_value()))
102
148
combobox.connect("changed", value_changed_cb, setting)
106
152
class GconfScale(gtk.HScale):
107
def __init__(self, key = None, min = None, max = None, digits = 0):
153
def __init__(self, key=None, min=None, max=None, digits=0, reversed=False):
108
154
gtk.HScale.__init__(self)
109
self.__setting = NumSetting(key)
156
self.__setting = GconfSetting(key=key, type=float)
158
self.__setting = GconfSetting(key=key, type=int)
161
self.__reversed = True
163
self.__reversed = False
111
165
self.set_range(min, max)
112
166
self.set_digits(digits)
113
167
self.set_value_pos(gtk.POS_RIGHT)
114
168
self.connect("value-changed", self.on_value_changed)
115
self.set_value(self.__setting.get_num())
170
self.set_value(max - self.__setting.get_value())
172
self.set_value(self.__setting.get_value())
117
def on_value_changed(self, widget, data = None):
118
self.__setting.set_num(widget.get_value())
174
def on_value_changed(self, widget, data=None):
176
self.__setting.set_value(100 - widget.get_value())
178
self.__setting.set_value(widget.get_value())
120
180
class GconfSpinButton(gtk.SpinButton):
121
181
def __init__(self, key, min=0, max=0, step=0):
122
self.__setting = IntSetting(key)
123
init = self.__setting.get_int()
124
adjust = gtk.Adjustment(init, min, max, step)
182
self.__setting = GconfSetting(key=key, type=int)
183
adjust = gtk.Adjustment(self.__setting.get_value(), min, max, step)
126
185
gtk.SpinButton.__init__(self, adjust)
127
186
self.connect('value-changed', self.on_value_changed)
129
188
def on_value_changed(self, widget):
130
self.__setting.set_int(widget.get_value())
132
class EntryBox(gtk.HBox):
133
def __init__(self, label, text):
134
gtk.HBox.__init__(self)
136
label = gtk.Label(label)
137
self.pack_start(label, False, False,10)
139
if text: entry.set_text(text)
140
entry.set_editable(False)
141
entry.set_size_request(300, -1)
142
self.pack_end(entry, False, False, 0)
144
class HScaleBox(gtk.HBox):
145
def __init__(self, label, min, max, key, digits = 0):
146
gtk.HBox.__init__(self)
147
self.pack_start(gtk.Label(label), False, False, 0)
149
hscale = gtk.HScale()
150
hscale.set_size_request(150, -1)
151
hscale.set_range(min, max)
152
hscale.set_digits(digits)
153
hscale.set_value_pos(gtk.POS_RIGHT)
154
self.pack_end(hscale, False, False, 0)
155
hscale.connect("value-changed", self.hscale_value_changed_cb, key)
157
client = gconf.client_get_default()
158
value = client.get(key)
161
if value.type == gconf.VALUE_INT:
162
hscale.set_value(client.get_int(key))
163
elif value.type == gconf.VALUE_FLOAT:
164
hscale.set_value(client.get_float(key))
166
def hscale_value_changed_cb(self, widget, data = None):
167
client = gconf.client_get_default()
168
value = client.get(data)
169
if value.type == gconf.VALUE_INT:
170
client.set_int(data, int(widget.get_value()))
171
elif value.type == gconf.VALUE_FLOAT:
172
client.set_float(data, widget.get_value())
174
class ComboboxItem(gtk.HBox):
175
def __init__(self, label, texts, values, key):
176
gtk.HBox.__init__(self)
177
self.pack_start(gtk.Label(label), False, False, 0)
179
combobox = gtk.combo_box_new_text()
180
combobox.texts = texts
181
combobox.values = values
182
combobox.connect("changed", self.value_changed_cb, key)
183
self.pack_end(combobox, False, False, 0)
185
for element in texts:
186
combobox.append_text(element)
188
client = gconf.client_get_default()
190
if client.get_string(key) in values:
191
combobox.set_active(values.index(client.get_string(key)))
193
def value_changed_cb(self, widget, data = None):
194
client = gconf.client_get_default()
195
text = widget.get_active_text()
196
client.set_string(data, widget.values[widget.texts.index(text)])
189
self.__setting.set_value(widget.get_value())
198
191
"""Popup and KeyGrabber come from ccsm"""
199
192
KeyModifier = ["Shift", "Control", "Mod1", "Mod2", "Mod3", "Mod4",