2
# Copyright (C) 2010 Canonical Ltd
4
# This program is free software: you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License version 2 as
6
# published by the Free Software Foundation.
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
# GNU General Public License for more details.
13
# You should have received a copy of the GNU General Public License
14
# along with this program. If not, see <http://www.gnu.org/licenses/>.
16
# Copyright (C) 2010 Ken VanDine <ken.vandine@canonical.com>
18
# Preferences interface for Gwibber
25
print "Requires pygtk 2.0 or later"
29
from gwibber import util
30
from microblog.util import resources
31
from microblog import config
34
from gettext import lgettext as _
35
if hasattr(gettext, 'bind_textdomain_codeset'):
36
gettext.bind_textdomain_codeset('gwibber','UTF-8')
37
gettext.textdomain('gwibber')
39
from microblog.util.const import *
40
# Try to import * from custom, install custom.py to include packaging
41
# customizations like distro API keys, etc
43
from microblog.util.custom import *
47
from microblog.urlshorter import PROTOCOLS as urlshorters
49
from dbus.mainloop.glib import DBusGMainLoop
51
DBusGMainLoop(set_as_default=True)
53
class GwibberPreferences(object):
55
self.ui = gtk.Builder()
56
self.ui.set_translation_domain("gwibber")
57
self.ui.add_from_file(resources.get_ui_asset("gwibber-preferences-dialog.ui"))
58
self.ui.connect_signals(self)
59
self.gc = gconf.client_get_default()
60
dialog = self.ui.get_object("prefs_dialog")
61
dialog.set_icon_from_file(resources.get_ui_asset("gwibber.svg"))
63
self.settings = config.Preferences()
68
"notify_mentions_only",
80
for key in setting_keys:
81
self.settings.bind(self.ui.get_object(key), key)
83
self.populate_settings_widgets()
85
for key in ["theme", "urlshorter", "retweet_style"]:
86
# Don't blow up if these values aren't set to something expected
87
# just reset to the default and carry on
89
self.settings.bind(getattr(self, key + "_selector"), key)
91
config.GCONF.set_value(config.GCONF_PREFERENCES_DIR + "/" + key, self.settings.defaults[key])
92
self.settings.bind(getattr(self, key + "_selector"), key)
96
def populate_settings_widgets(self):
97
self.theme_selector = gtk.combo_box_new_text()
98
for theme in sorted(resources.get_themes()): self.theme_selector.append_text(theme)
99
self.ui.get_object("theme_container").pack_start(self.theme_selector, True, True)
100
self.theme_selector.set_active_iter(dict([(x[0].strip(), x.iter) for x in self.theme_selector.get_model()]).get(
101
self.settings["theme"], self.theme_selector.get_model().get_iter_root()))
102
self.theme_selector.show_all()
103
self.urlshorter_selector = gtk.combo_box_new_text()
104
for urlshorter in urlshorters.keys(): self.urlshorter_selector.append_text(urlshorter)
105
self.ui.get_object("urlshorter_container").pack_start(self.urlshorter_selector, True, True)
107
self.urlshorter_selector.set_active_iter(dict([(x[0].strip(), x.iter) for x in self.urlshorter_selector.get_model()]).get(
108
self.settings["urlshorter"], self.urlshorter_selector.get_model().get_iter_root()))
109
self.urlshorter_selector.show_all()
111
self.retweet_style_selector = gtk.combo_box_new_text()
112
for format in RETWEET_FORMATS: self.retweet_style_selector.append_text(format)
113
self.ui.get_object("retweet_style_container").pack_start(self.retweet_style_selector, True, True)
114
self.retweet_style_selector.set_active_iter(dict([(x[0].strip(), x.iter) for x in self.retweet_style_selector.get_model()]).get(
115
self.settings["retweet_style"], self.retweet_style_selector.get_model().get_iter_root()))
116
self.retweet_style_selector.show_all()
118
def on_close_button_clicked(self, widget, data=None):
121
def on_prefs_dialog_destroy_event(self, widget, data=None):