~khurshid-alam/gwibber/gwibber-hack

« back to all changes in this revision

Viewing changes to gwibber/preferences.py

  • Committer: Khurshid Alam
  • Date: 2012-04-06 14:38:38 UTC
  • Revision ID: khurshid.alam@linuxmail.org-20120406143838-nz7hjg8vtzi2wl7i
initial revision

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# Copyright (C) 2010 Canonical Ltd
 
3
#
 
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.
 
7
#
 
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.
 
12
#
 
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/>.
 
15
#
 
16
# Copyright (C) 2010 Ken VanDine <ken.vandine@canonical.com>
 
17
#
 
18
# Preferences interface for Gwibber
 
19
#
 
20
 
 
21
import pygtk
 
22
try:
 
23
  pygtk.require("2.0") 
 
24
except:
 
25
  print "Requires pygtk 2.0 or later"
 
26
  exit
 
27
 
 
28
import gtk, gconf
 
29
from gwibber import util
 
30
from microblog.util import resources
 
31
from microblog import config
 
32
 
 
33
import gettext
 
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')
 
38
 
 
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
 
42
try:
 
43
  from microblog.util.custom import *
 
44
except:
 
45
  pass
 
46
 
 
47
from microblog.urlshorter import PROTOCOLS as urlshorters
 
48
 
 
49
from dbus.mainloop.glib import DBusGMainLoop
 
50
 
 
51
DBusGMainLoop(set_as_default=True)
 
52
 
 
53
class GwibberPreferences(object):
 
54
  def __init__(self):
 
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"))
 
62
 
 
63
    self.settings = config.Preferences()
 
64
    
 
65
    setting_keys = [
 
66
      "autostart",
 
67
      "show_notifications",
 
68
      "notify_mentions_only",
 
69
      "no_notifications",
 
70
      "show_fullname",
 
71
      "shorten_urls",
 
72
      "reply_append_colon",
 
73
      "global_retweet",
 
74
      "interval",
 
75
      "minimize_to_tray",
 
76
      "hide_taskbar_entry",
 
77
      "show_tray_icon",
 
78
    ]
 
79
 
 
80
    for key in setting_keys:
 
81
      self.settings.bind(self.ui.get_object(key), key)
 
82
 
 
83
    self.populate_settings_widgets()
 
84
 
 
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
 
88
      try:
 
89
        self.settings.bind(getattr(self, key + "_selector"), key)
 
90
      except:
 
91
        config.GCONF.set_value(config.GCONF_PREFERENCES_DIR + "/" + key, self.settings.defaults[key])
 
92
        self.settings.bind(getattr(self, key + "_selector"), key)
 
93
 
 
94
    dialog.show_all()
 
95
 
 
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)
 
106
 
 
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()
 
110
 
 
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()
 
117
 
 
118
  def on_close_button_clicked(self, widget, data=None):
 
119
    gtk.main_quit()
 
120
    
 
121
  def on_prefs_dialog_destroy_event(self, widget, data=None):
 
122
    gtk.main_quit()
 
123