/[straw]/straw/src/lib/Config.py
ViewVC logotype

Diff of /straw/src/lib/Config.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.12 by juri, Sun Jul 20 06:29:24 2003 UTC revision 1.13 by jmalonzo, Sat Aug 16 10:49:29 2003 UTC
# Line 1  Line 1 
1  cvs_id = "$Id$"  cvs_id = "$Id$"
2    
3  import cPickle  import cPickle, os, traceback
 import os  
 import traceback  
4  from urlparse import urlparse  from urlparse import urlparse
5    from error import log
6    
7  import straw  import straw
8  from error import log  import pygtk; pygtk.require('2.0')
9    import gconf
10    
11    GCONF_STRAW_ROOT = "/apps/straw"
12    GCONF_STRAW_POLL_FREQ = GCONF_STRAW_ROOT + "/general/poll_frequency"
13    GCONF_STRAW_ITEMS_STORED = GCONF_STRAW_ROOT + "/general/number_of_items_stored"
14    GCONF_STRAW_ITEM_ORDER = GCONF_STRAW_ROOT + "/general/item_order_newest"
15    GCONF_STRAW_OFFLINE = GCONF_STRAW_ROOT + "/general/offline"
16    GCONF_STRAW_LAST_POLL = GCONF_STRAW_ROOT + "/general/last_poll"
17    GCONF_STRAW_WINDOW_H = GCONF_STRAW_ROOT + "/ui/window_height"
18    GCONF_STRAW_WINDOW_W = GCONF_STRAW_ROOT + "/ui/window_width"
19    GCONF_STRAW_MAIN_PANE_POSITION = GCONF_STRAW_ROOT + "/ui/main_pane_position"
20    GCONF_STRAW_SUB_PANE_POSITION  = GCONF_STRAW_ROOT + "/ui/sub_pane_position"
21    
22  def ensure_directory(strawdir):  def ensure_directory(strawdir):
23      if os.path.exists(strawdir):      if os.path.exists(strawdir):
# Line 16  def ensure_directory(strawdir): Line 27  def ensure_directory(strawdir):
27      os.mkdir(strawdir)      os.mkdir(strawdir)
28      return 1      return 1
29    
 # using gconf seemed a bit too painful for this, seems it's suitable  
 # for fixed configuration options but not really much else  
30  class ConfigSaver:  class ConfigSaver:
31      def __init__(self):      def __init__(self):
32          straw.config.signal_connect(          self.client = StrawGConf(GCONF_STRAW_ROOT)
             straw.LocalConfigOptionSignal, self.notify_change)  
33          self._config_file = os.path.join(straw.config._straw_dir, "config")          self._config_file = os.path.join(straw.config._straw_dir, "config")
34            straw.config.signal_connect(straw.LocalConfigOptionSignal,self.notify_change)
35          self.load_config()          self.load_config()
36          return          return
37    
# Line 40  class ConfigSaver: Line 49  class ConfigSaver:
49                  nf.undump(feed)                  nf.undump(feed)
50                  fl.append(nf)                  fl.append(nf)
51              straw.config.feeds = fl              straw.config.feeds = fl
52              straw.config.poll_frequency = cf.get('poll_frequency', 1200)              straw.config.feed_id_seq = cf.get('feed_id_seq',0)
             straw.config.number_of_items_stored = cf.get(  
                 'number_of_items_stored', 30)  
             straw.config.item_order = cf.get('item_order', 1)  
             straw.config.feed_id_seq = cf.get('feed_id_seq', 0)  
             straw.config.main_window_size = cf.get('main_window_size', (700, 550))  
             straw.config.main_pane_position = cf.get('main_pane_position', 200)  
             straw.config.sub_pane_position = cf.get('sub_pane_position', 120)  
             straw.config.offline = cf.get('offline', 0)  
             # config.poll_spread  
53              f.close()              f.close()
54    
55            straw.config.poll_frequency = self.client.get_int(GCONF_STRAW_POLL_FREQ)
56            straw.config.number_of_items_stored = self.client.get_int(GCONF_STRAW_ITEMS_STORED)
57            straw.config.item_order = self.client.get_bool(GCONF_STRAW_ITEM_ORDER)
58            straw.config.main_window_size = (self.client.get_int(GCONF_STRAW_WINDOW_W),self.client.get_int(GCONF_STRAW_WINDOW_H))
59            straw.config.main_pane_position = self.client.get_int(GCONF_STRAW_MAIN_PANE_POSITION)
60            straw.config.sub_pane_position = self.client.get_int(GCONF_STRAW_SUB_PANE_POSITION)
61            straw.config.offline = self.client.get_bool(GCONF_STRAW_OFFLINE)
62            straw.config.last_poll = self.client.get_int(GCONF_STRAW_LAST_POLL)
63            # config.poll_spread
64          return          return
65    
66      def save_config(self):      def save_config(self):
# Line 59  class ConfigSaver: Line 69  class ConfigSaver:
69          for f in straw.config.feeds:          for f in straw.config.feeds:
70              l.append(f.dump())              l.append(f.dump())
71          cf['feeds'] = l          cf['feeds'] = l
         cf['poll_frequency'] = straw.config.poll_frequency  
         cf['number_of_items_stored'] = straw.config.number_of_items_stored  
         cf['item_order'] = straw.config.item_order  
72          cf['feed_id_seq'] = straw.config.feed_id_seq          cf['feed_id_seq'] = straw.config.feed_id_seq
         cf['main_window_size'] = straw.config.main_window_size  
         cf['main_pane_position'] = straw.config.main_pane_position  
         cf['sub_pane_position'] = straw.config.sub_pane_position  
         cf['offline'] = straw.config.offline  
73          pickle_file = open(self._config_file, 'w')          pickle_file = open(self._config_file, 'w')
74          cPickle.dump(cf, pickle_file, 1)          cPickle.dump(cf, pickle_file, 1)
75          pickle_file.close()          pickle_file.close()
# Line 122  class GconfProxyConfig(BaseProxyConfig): Line 125  class GconfProxyConfig(BaseProxyConfig):
125      GCONF_HTTP_PROXY_PASSWORD = GCONF_HTTP_PROXY_ROOT + "/authentication_password"      GCONF_HTTP_PROXY_PASSWORD = GCONF_HTTP_PROXY_ROOT + "/authentication_password"
126    
127      def __init__(self):      def __init__(self):
         try:  
             import gconf  
         except ImportError:  
             log(_("No gconf module installed, not reading proxy configuration from there"))  
             self._config_working = 0  
             return  
128          client = gconf.client_get_default()          client = gconf.client_get_default()
129          self._config_working = client.dir_exists(self.GCONF_PROXY_ROOT) and client.dir_exists(self.GCONF_HTTP_PROXY_ROOT)          self._config_working = client.dir_exists(self.GCONF_PROXY_ROOT) and client.dir_exists(self.GCONF_HTTP_PROXY_ROOT)
130          if not self._config_working:          if not self._config_working:
# Line 238  class NullProxyConfig(BaseProxyConfig): Line 235  class NullProxyConfig(BaseProxyConfig):
235    
236  class Config(object, straw.SignalEmitter):  class Config(object, straw.SignalEmitter):
237      def __init__(self):      def __init__(self):
238            self.client = StrawGConf(GCONF_STRAW_ROOT)
239          straw.SignalEmitter.__init__(self)          straw.SignalEmitter.__init__(self)
240          self.initialize_slots(straw.FeedsChangedSignal,          self.initialize_slots(straw.FeedsChangedSignal,
                               straw.PollFrequencyChangedSignal,  
                               straw.NumberOfItemsStoredChangedSignal,  
241                                straw.ItemOrderChangedSignal,                                straw.ItemOrderChangedSignal,
242                                straw.OfflineModeChangedSignal)                                straw.OfflineModeChangedSignal,
243          self._poll_frequency = 1200                                straw.NumberOfItemsStoredChangedSignal)
244          self._poll_spread = 0          #self._poll_spread = 0
245          self._feed_id_seq = 0          self._feed_id_seq = 0
246            self._straw_dir = os.path.join(os.getenv("HOME"), ".straw")
247          self._feeds = straw.FeedList()          self._feeds = straw.FeedList()
248          self._feeds.signal_connect(straw.FeedsChangedSignal,          self._feeds.signal_connect(straw.FeedsChangedSignal,
249                                     self.feeds_changed)                                     self.feeds_changed)
         self._number_of_items_stored = 30  
         self._item_order = 1  
         self._straw_dir = os.path.join(os.getenv("HOME"), ".straw")  
         self._main_window_size = (700, 550)  
         self._main_pane_position = 200  
         self._sub_pane_position = 120  
         self._offline = 0  
250          pcchoices = (GconfProxyConfig, EnvironmentProxyConfig, NullProxyConfig)          pcchoices = (GconfProxyConfig, EnvironmentProxyConfig, NullProxyConfig)
251          for p in pcchoices:          for p in pcchoices:
252              self._proxy_config = p()              self._proxy_config = p()
# Line 273  class Config(object, straw.SignalEmitter Line 263  class Config(object, straw.SignalEmitter
263      # and the rest of the stuff      # and the rest of the stuff
264      def feeds_changed(self, signal):      def feeds_changed(self, signal):
265          self.emit_signal(straw.FeedsChangedSignal(self))          self.emit_signal(straw.FeedsChangedSignal(self))
266        
267      def set_feeds(self, feeds):      def set_feeds(self, feeds):
268          self._feeds = straw.FeedList(feeds)          self._feeds = straw.FeedList(feeds)
269          self._feeds.signal_connect(straw.FeedsChangedSignal,          self._feeds.signal_connect(straw.FeedsChangedSignal,
# Line 287  class Config(object, straw.SignalEmitter Line 277  class Config(object, straw.SignalEmitter
277      feeds = property(get_feeds, set_feeds, None, "Feeds")      feeds = property(get_feeds, set_feeds, None, "Feeds")
278    
279      def set_poll_frequency(self, poll_frequency):      def set_poll_frequency(self, poll_frequency):
280          self._poll_frequency = poll_frequency          self.client.set_int(GCONF_STRAW_POLL_FREQ, poll_frequency)
         self.emit_signal(straw.PollFrequencyChangedSignal(self))  
281          return          return
282    
283      def get_poll_frequency(self):      def get_poll_frequency(self):
284          return self._poll_frequency          return self.client.get_int(GCONF_STRAW_POLL_FREQ)
285    
286      poll_frequency = property(get_poll_frequency, set_poll_frequency, None,      poll_frequency = property(get_poll_frequency, set_poll_frequency, None,
287                                "Polling frequency")                                "Polling frequency")
288    
289        def set_last_poll(self, last_poll):
290            self.client.set_int(GCONF_STRAW_LAST_POLL, last_poll)
291            return
292    
293        def get_last_poll(self):
294            return self.client.get_int(GCONF_STRAW_LAST_POLL)
295    
296        last_poll = property(get_last_poll, set_last_poll, None, "Last polled")
297    
298      def get_number_of_items_stored(self):      def get_number_of_items_stored(self):
299          return self._number_of_items_stored          return self.client.get_int(GCONF_STRAW_ITEMS_STORED)
300    
301      def set_number_of_items_stored(self, num):      def set_number_of_items_stored(self, num):
302          self._number_of_items_stored = num          self.client.set_int(GCONF_STRAW_ITEMS_STORED, num)
303          self.emit_signal(straw.NumberOfItemsStoredChangedSignal(self))          self.emit_signal(straw.NumberOfItemsStoredChangedSignal(self))
304            return
305    
306      number_of_items_stored = property(get_number_of_items_stored,      number_of_items_stored = property(get_number_of_items_stored,
307                                        set_number_of_items_stored, None,                                        set_number_of_items_stored, None,
308                                        "Number of items to store per feed")                                        "Number of items to store per feed")
309    
     def get_item_order(self):  
         return self._item_order  
   
310      def set_item_order(self, order):      def set_item_order(self, order):
311          self._item_order = order          self.client.set_bool(GCONF_STRAW_ITEM_ORDER, order)
312          self.emit_signal(straw.ItemOrderChangedSignal(self))          self.emit_signal(straw.ItemOrderChangedSignal(self))
313            return
314    
315        def get_item_order(self):
316            return self.client.get_bool(GCONF_STRAW_ITEM_ORDER)
317    
318      item_order = property(get_item_order, set_item_order, "Ordering of items")      item_order = property(get_item_order, set_item_order, "Ordering of items")
319    
# Line 328  class Config(object, straw.SignalEmitter Line 328  class Config(object, straw.SignalEmitter
328      feed_id_seq = property(get_feed_id_seq, set_feed_id_seq, None, "")      feed_id_seq = property(get_feed_id_seq, set_feed_id_seq, None, "")
329    
330      def set_main_window_size(self, size):      def set_main_window_size(self, size):
331          if size != self._main_window_size:          self.client.set_int(GCONF_STRAW_WINDOW_W,size[0])
332              self._main_window_size = size          self.client.set_int(GCONF_STRAW_WINDOW_H,size[1])
333              self.emit_signal(straw.MainWindowSizeChangedSignal(self))          self.emit_signal(straw.MainWindowSizeChangedSignal(self))
334    
335      def get_main_window_size(self):      def get_main_window_size(self):
336          return self._main_window_size          slist = (self.client.get_int(GCONF_STRAW_WINDOW_W),self.client.get_int(GCONF_STRAW_WINDOW_H))
337            return slist
338    
339      main_window_size = property(get_main_window_size, set_main_window_size, "")      main_window_size = property(get_main_window_size, set_main_window_size, "")
340    
     def get_offline(self):  
         return self._offline  
   
341      def set_offline(self, mode):      def set_offline(self, mode):
342          if self._offline != mode:          _offline = straw.config.offline
343              self._offline = mode          if _offline != mode:
344                self.client.set_bool(GCONF_STRAW_OFFLINE, mode)
345              self.emit_signal(straw.OfflineModeChangedSignal(self))              self.emit_signal(straw.OfflineModeChangedSignal(self))
346    
347        def get_offline(self):
348            return self.client.get_bool(GCONF_STRAW_OFFLINE)
349    
350      offline = property(get_offline, set_offline, None, "")      offline = property(get_offline, set_offline, None, "")
351    
352      def set_main_pane_position(self, position):      def set_main_pane_position(self, position):
353          if position != self._main_pane_position:          #if position != self._main_pane_position:
354              self._main_pane_position = position          self.client.set_int(GCONF_STRAW_MAIN_PANE_POSITION, position)
355              self.emit_signal(straw.MainPanePositionChangedSignal(self))          self.emit_signal(straw.MainPanePositionChangedSignal(self))
356    
357      def get_main_pane_position(self):      def get_main_pane_position(self):
358          return self._main_pane_position          return self.client.get_int(GCONF_STRAW_MAIN_PANE_POSITION)
359    
360      main_pane_position = property(get_main_pane_position, set_main_pane_position, None, "")      main_pane_position = property(get_main_pane_position, set_main_pane_position, None, "")
361    
362      def set_sub_pane_position(self, position):      def set_sub_pane_position(self, position):
363          if position != self._sub_pane_position:          #if position != self._sub_pane_position:
364              self._sub_pane_position = position          self.client.set_int(GCONF_STRAW_SUB_PANE_POSITION, position)
365              self.emit_signal(straw.SubPanePositionChangedSignal(self))          self.emit_signal(straw.SubPanePositionChangedSignal(self))
366    
367      def get_sub_pane_position(self):      def get_sub_pane_position(self):
368          return self._sub_pane_position          return self.client.get_int(GCONF_STRAW_SUB_PANE_POSITION)
369    
370      sub_pane_position = property(get_sub_pane_position, set_sub_pane_position, None, "")      sub_pane_position = property(get_sub_pane_position, set_sub_pane_position, None, "")
371    
372    class StrawGConf:
373        def __init__(self, gconf_root_dir):
374            self.client = gconf.client_get_default()
375            self.client.add_dir(gconf_root_dir, gconf.CLIENT_PRELOAD_NONE)
376            return
377    
378        def set_int(self, key, data):
379            self.client.set_int(key, data)
380            return
381    
382        def get_int(self, key):
383            val = self.client.get_int(key)
384            return val
385    
386        def set_bool(self, key, data):
387            self.client.set_bool(key, data)
388            return
389    
390        def get_bool(self, key):
391            val = self.client.get_bool(key)
392            return val

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.13

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26