~seif/gwibber/zg

« back to all changes in this revision

Viewing changes to gwibber/preferences.py

  • Committer: Ryan Paul
  • Date: 2010-04-12 03:02:25 UTC
  • Revision ID: segphault@arstechnica.com-20100412030225-7tpll03xhbou4832
Move the preferences back over to GConf and make defaults work correctly

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
 
21
21
import pygtk
22
22
try:
23
 
    pygtk.require("2.0") 
 
23
  pygtk.require("2.0") 
24
24
except:
25
 
    print "Requires pygtk 2.0 or later"
26
 
    exit
 
25
  print "Requires pygtk 2.0 or later"
 
26
  exit
27
27
 
28
 
from gwibber import resources
29
 
from gwibber import util
30
28
import gtk, gconf
 
29
from gwibber import resources, config, util
31
30
 
32
31
import gettext
33
32
from gettext import lgettext as _
34
33
if hasattr(gettext, 'bind_textdomain_codeset'):
35
 
    gettext.bind_textdomain_codeset('gwibber','UTF-8')
 
34
  gettext.bind_textdomain_codeset('gwibber','UTF-8')
36
35
gettext.textdomain('gwibber')
37
36
 
38
37
from microblog.util.const import *
43
42
DBusGMainLoop(set_as_default=True)
44
43
 
45
44
class GwibberPreferences(object):
46
 
    def __init__(self):
47
 
        self.ui = gtk.Builder()
48
 
        self.ui.set_translation_domain ("gwibber")
49
 
        self.ui.add_from_file (resources.get_ui_asset("gwibber-preferences-dialog.ui"))
50
 
        self.ui.connect_signals(self)
51
 
        self.gc = gconf.client_get_default()
52
 
        dialog = self.ui.get_object("prefs_dialog")
53
 
        dialog.set_icon_from_file(resources.get_ui_asset("gwibber.svg"))
54
 
 
55
 
        self.settings = util.SettingsMonitor()
56
 
        self.populate_settings_data(self)
57
 
        dialog.show_all()
58
 
 
59
 
    def populate_settings_data(self, widget, data=None):
60
 
        self.ui.get_object("interval").set_value(self.settings["interval"])
61
 
        
62
 
        self.ui.get_object("autostart").set_active(self.gc.get_bool("/apps/gwibber/autostart"))
63
 
        self.ui.get_object("show_notifications").set_active(self.settings["show_notifications"])
64
 
        self.ui.get_object("notify_mentions_only").set_active(self.settings["notify_mentions_only"])
65
 
        self.ui.get_object("show_fullname").set_active(self.settings["show_fullname"])
66
 
        self.ui.get_object("shorten_urls").set_active(self.settings["shorten_urls"])
67
 
        self.ui.get_object("reply_append_colon").set_active(self.settings["reply_append_colon"])
68
 
        self.ui.get_object("global_retweet").set_active(self.settings["global_retweet"])
69
 
 
70
 
        self.theme_selector = gtk.combo_box_new_text()
71
 
        for theme in sorted(resources.get_themes()): self.theme_selector.append_text(theme)
72
 
        self.ui.get_object("theme_container").pack_start(self.theme_selector, True, True)
73
 
        self.theme_selector.set_active_iter(dict([(x[0].strip(), x.iter) for x in self.theme_selector.get_model()]).get(self.settings["theme"], self.theme_selector.get_model().get_iter_root()))
74
 
        self.theme_selector.show_all()
75
 
 
76
 
        self.urlshorter_selector = gtk.combo_box_new_text()
77
 
        for urlshorter in urlshorters.keys(): self.urlshorter_selector.append_text(urlshorter)
78
 
        self.ui.get_object("urlshorter_container").pack_start(self.urlshorter_selector, True, True)
79
 
        self.urlshorter_selector.set_active_iter(dict([(x[0].strip(), x.iter) for x in self.urlshorter_selector.get_model()]).get(self.settings["urlshorter"], self.urlshorter_selector.get_model().get_iter_root()))
80
 
        self.urlshorter_selector.show_all()
81
 
 
82
 
        self.retweet_style_selector = gtk.combo_box_new_text()
83
 
        for format in RETWEET_FORMATS: self.retweet_style_selector.append_text(format)
84
 
        self.ui.get_object("retweet_style_container").pack_start(self.retweet_style_selector, True, True)
85
 
        self.retweet_style_selector.set_active_iter(dict([(x[0].strip(), x.iter) for x in self.retweet_style_selector.get_model()]).get(self.settings["retweet_style"], self.retweet_style_selector.get_model().get_iter_root()))
86
 
        self.retweet_style_selector.show_all()
87
 
 
88
 
    def on_save_button_clicked(self, widget, data=None):
89
 
        self.settings["interval"] = int(self.ui.get_object("interval").get_value())
90
 
        
91
 
        # Only change autostart if it was already set before or if the user enabled it
92
 
        if self.gc.get("/apps/gwibber/autostart") is None:
93
 
            if self.ui.get_object("autostart").get_property("active"):
94
 
                self.gc.set_bool("/apps/gwibber/autostart", self.ui.get_object("autostart").get_property("active"))
95
 
        else:
96
 
            self.gc.set_bool("/apps/gwibber/autostart", self.ui.get_object("autostart").get_property("active"))
97
 
        self.settings["show_notifications"] = self.ui.get_object("show_notifications").get_property("active")
98
 
        self.settings["notify_mentions_only"] = self.ui.get_object("notify_mentions_only").get_property("active")
99
 
        self.settings["show_fullname"] = self.ui.get_object("show_fullname").get_property("active")
100
 
        self.settings["shorten_urls"] = self.ui.get_object("shorten_urls").get_property("active")
101
 
        self.settings["reply_append_colon"] = self.ui.get_object("reply_append_colon").get_property("active")
102
 
        self.settings["global_retweet"] = self.ui.get_object("global_retweet").get_property("active")
103
 
        self.settings["theme"] = self.theme_selector.get_active_text()
104
 
        self.settings["urlshorter"] = self.urlshorter_selector.get_active_text()
105
 
        self.settings["retweet_style"] = self.retweet_style_selector.get_active_text()
106
 
        self.settings.save()
107
 
        gtk.main_quit()
108
 
 
109
 
        
110
 
    def on_cancel_button_clicked(self, widget, data=None):
111
 
        gtk.main_quit()
112
 
        
113
 
    def on_prefs_dialog_destroy_event(self, widget, data=None):
114
 
        gtk.main_quit()
 
45
  def __init__(self):
 
46
    self.ui = gtk.Builder()
 
47
    self.ui.set_translation_domain("gwibber")
 
48
    self.ui.add_from_file(resources.get_ui_asset("gwibber-preferences-dialog.ui"))
 
49
    self.ui.connect_signals(self)
 
50
    self.gc = gconf.client_get_default()
 
51
    dialog = self.ui.get_object("prefs_dialog")
 
52
    dialog.set_icon_from_file(resources.get_ui_asset("gwibber.svg"))
 
53
 
 
54
    self.settings = config.Preferences()
 
55
    
 
56
    setting_keys = [
 
57
      "autostart",
 
58
      "show_notifications",
 
59
      "notify_mentions_only",
 
60
      "show_fullname",
 
61
      "shorten_urls",
 
62
      "reply_append_colon",
 
63
      "global_retweet",
 
64
      "interval",
 
65
    ]
 
66
 
 
67
    for key in setting_keys:
 
68
      self.settings.bind(self.ui.get_object(key), key)
 
69
 
 
70
    self.populate_settings_widgets()
 
71
 
 
72
    for key in ["theme", "urlshorter", "retweet_style"]:
 
73
      self.settings.bind(getattr(self, key + "_selector"), key)
 
74
 
 
75
    dialog.show_all()
 
76
 
 
77
  def populate_settings_widgets(self):
 
78
    self.theme_selector = gtk.combo_box_new_text()
 
79
    for theme in sorted(resources.get_themes()): self.theme_selector.append_text(theme)
 
80
    self.ui.get_object("theme_container").pack_start(self.theme_selector, True, True)
 
81
    self.theme_selector.set_active_iter(dict([(x[0].strip(), x.iter) for x in self.theme_selector.get_model()]).get(
 
82
      self.settings["theme"], self.theme_selector.get_model().get_iter_root()))
 
83
    self.theme_selector.show_all()
 
84
 
 
85
    self.urlshorter_selector = gtk.combo_box_new_text()
 
86
    for urlshorter in urlshorters.keys(): self.urlshorter_selector.append_text(urlshorter)
 
87
    self.ui.get_object("urlshorter_container").pack_start(self.urlshorter_selector, True, True)
 
88
    self.urlshorter_selector.set_active_iter(dict([(x[0].strip(), x.iter) for x in self.urlshorter_selector.get_model()]).get(
 
89
      self.settings["urlshorter"], self.urlshorter_selector.get_model().get_iter_root()))
 
90
    self.urlshorter_selector.show_all()
 
91
 
 
92
    self.retweet_style_selector = gtk.combo_box_new_text()
 
93
    for format in RETWEET_FORMATS: self.retweet_style_selector.append_text(format)
 
94
    self.ui.get_object("retweet_style_container").pack_start(self.retweet_style_selector, True, True)
 
95
    self.retweet_style_selector.set_active_iter(dict([(x[0].strip(), x.iter) for x in self.retweet_style_selector.get_model()]).get(
 
96
      self.settings["retweet_style"], self.retweet_style_selector.get_model().get_iter_root()))
 
97
    self.retweet_style_selector.show_all()
 
98
 
 
99
  def on_close_button_clicked(self, widget, data=None):
 
100
    gtk.main_quit()
 
101
    
 
102
  def on_prefs_dialog_destroy_event(self, widget, data=None):
 
103
    gtk.main_quit()
115
104