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

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

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

revision 1.13 by jmalonzo, Fri Aug 22 09:32:54 2003 UTC revision 1.14 by jmalonzo, Wed Aug 27 12:18:02 2003 UTC
# Line 3  cvs_id = "$Id$" Line 3  cvs_id = "$Id$"
3  import gobject  import gobject
4  import gtk  import gtk
5  import gnome  import gnome
 import gtkhtml2  
6  import gnome.ui  import gnome.ui
 import pango  
7    
8  import straw  import straw
9    
10  class PreferencesDialog:  class PreferencesDialog:
     COLUMN_TITLE = 0  
     COLUMN_LOC = 1  
     COLUMN_USER = 2  
     COLUMN_PASSWORD = 3  
     COLUMN_EDITABLE = 4  
     COLUMN_ID = 5  
11      SEC_PER_MINUTE = 60      SEC_PER_MINUTE = 60
12    
13      def __init__(self, xml):      def __init__(self, xml):
14          straw.config.signal_connect(straw.FeedsChangedSignal,          poll_frequency = int(straw.config.poll_frequency/self.SEC_PER_MINUTE)
15                                      self.feeds_changed)          items_stored = int(straw.config.number_of_items_stored)
16          self._window = xml.get_widget('preferences_dialog')          self._window = xml.get_widget('preferences_dialog')
17          self._window.set_transient_for(straw.main_window.get_window())          self._window.set_transient_for(straw.main_window.get_window())
18          model = self.create_model()          xml.get_widget('poll_frequency_spin').set_value(poll_frequency)
19          self.display_feeds(model, straw.config.feeds)          xml.get_widget('number_of_items_spin').set_value(items_stored)
         treeview = xml.get_widget('feeds_configuration_treeview')  
         treeview.set_model(model)  
         treeview.set_rules_hint(gtk.TRUE)  
         treeview.set_search_column(0)  
         treesel = treeview.get_selection()  
         treesel.set_mode(gtk.SELECTION_MULTIPLE)  
         self._treeview = treeview  
         self.create_columns(treeview)  
         xml.get_widget('poll_frequency_spin').set_value(  
             straw.config.poll_frequency/self.SEC_PER_MINUTE)  
         xml.get_widget('number_of_items_spin').set_value(  
             straw.config.number_of_items_stored)  
20          xml.get_widget(['item_order_oldest',          xml.get_widget(['item_order_oldest',
21                          'item_order_newest'][straw.config.item_order]).set_active(1)                          'item_order_newest'][straw.config.item_order]).set_active(1)
22    
# Line 47  class PreferencesDialog: Line 27  class PreferencesDialog:
27          xml.signal_autoconnect(nameFuncMap)          xml.signal_autoconnect(nameFuncMap)
28          return          return
29    
     def feeds_changed(self, signal):  
         self.display_feeds(self._treeview.get_model(), straw.config.feeds)  
   
     def display_feeds(self, model, feeds):  
         fc = 0  
         mlines = len(model)  
         while fc < mlines and fc < len(feeds):  
             feed = feeds[fc]  
             if model[fc][self.COLUMN_ID] != feed.id:  
                 iter = model.get_iter((fc,))  
                 model.set(iter, self.COLUMN_TITLE, feed.title,  
                           self.COLUMN_LOC, feed.access_info[0],  
                           self.COLUMN_USER, feed.access_info[1],  
                           self.COLUMN_PASSWORD, feed.access_info[2],  
                           self.COLUMN_EDITABLE, gtk.TRUE,  
                           self.COLUMN_ID, feed.id)  
             fc += 1  
         if fc < mlines:  
             treeiter = model.get_iter((fc,))  
             while treeiter:  
                 next_iter = model.iter_next(treeiter)  
                 model.remove(treeiter)  
                 treeiter = next_iter  
         else:  
             while fc < len(feeds):  
                 feed = feeds[fc]  
                 iter = model.append()  
                 model.set(iter, self.COLUMN_TITLE, feed.title,  
                           self.COLUMN_LOC, feed.access_info[0],  
                           self.COLUMN_USER, feed.access_info[1],  
                           self.COLUMN_PASSWORD, feed.access_info[2],  
                           self.COLUMN_EDITABLE, gtk.TRUE,  
                           self.COLUMN_ID, feed.id)  
                 fc += 1  
         return  
   
30      def show(self, *args):      def show(self, *args):
31          self._window.present()          self._window.present()
32          return          return
# Line 90  class PreferencesDialog: Line 34  class PreferencesDialog:
34      def hide(self, *args):      def hide(self, *args):
35          self._window.hide()          self._window.hide()
36    
37      def on_preferences_dialog_delete_event(self, *args):      def on_prefs_dialog_delete_event(self, *args):
38          self.hide()          self.hide()
39          return gtk.TRUE          return gtk.TRUE
40    
# Line 98  class PreferencesDialog: Line 42  class PreferencesDialog:
42          self.hide()          self.hide()
43          return          return
44    
     def on_new_feed_button_clicked(self, button):  
         self.add_feed(self._treeview.get_model())  
         return  
   
     def _get_selected(self):  
         selected = []  
         def foreach_selected(model, path, iter, *data):  
             selected.append(path[0])  
         selection = self._treeview.get_selection()  
         selection.selected_foreach(foreach_selected)  
         return selected  
   
     def on_delete_feed_button_clicked(self, *args):  
         model = self._treeview.get_model()  
         selected = self._get_selected()  
         selected.sort()  
         i = 0  
         for s in selected:  
             s -= i  
             i += 1  
             iter = model.get_iter(s)  
             model.remove(iter)  
             del straw.config.feeds[s]  
   
     def on_move_feed_up_button_clicked(self, *args):  
         selected = self._get_selected()  
         selection = self._treeview.get_selection()  
         if len(selected) and selected[0] > 0:  
             straw.config.feeds.reorder(selected, -1)  
             selection.unselect_all()  
             for p in selected:  
                 selection.select_path(p-1)  
         return  
   
     def on_move_feed_down_button_clicked(self, *args):  
         selected = self._get_selected()  
         selection = self._treeview.get_selection()  
         if len(selected) and selected[-1] < len(straw.config.feeds) - 1:  
             straw.config.feeds.reorder(selected, 1)  
             selection.unselect_all()  
             for p in selected:  
                 selection.select_path(p+1)  
         return  
   
     def on_sort_feeds_button_clicked(self, *args):  
         selected = self._get_selected()  
         straw.config.feeds.sort(selected)  
   
45      def on_poll_frequency_spin_focus_out_event(self, spin, data):      def on_poll_frequency_spin_focus_out_event(self, spin, data):
46          straw.config.poll_frequency = int(spin.get_value() * self.SEC_PER_MINUTE)          straw.config.poll_frequency = int(spin.get_value() * self.SEC_PER_MINUTE)
47    
# Line 158  class PreferencesDialog: Line 54  class PreferencesDialog:
54      def on_item_order_oldest_toggled(self, radio):      def on_item_order_oldest_toggled(self, radio):
55          pass          pass
56    
     def add_feed(self, model):  
         iter = model.append()  
         s = straw.Feed("New name")  
         straw.config.feeds.append(s)  
         return  
   
     def cell_edited(self, cell, path_string, text, (model, column)):  
         iter = model.get_iter_from_string(path_string)  
         if not iter:  
             return  
         path = model.get_path(iter)  
         model.set(iter, column, text)  
   
         url, user, pw = straw.config.feeds[path[0]].access_info  
   
         if column == self.COLUMN_TITLE:  
             straw.config.feeds[path[0]].title = text  
         elif column == self.COLUMN_LOC:  
             straw.config.feeds[path[0]].access_info = (text, user, pw)  
         elif column == self.COLUMN_USER:  
             straw.config.feeds[path[0]].access_info = (url, text, pw)  
         elif column == self.COLUMN_PASSWORD:  
             straw.config.feeds[path[0]].access_info = (url, user, text)  
         return  
   
     def create_model(self):  
         store = gtk.ListStore(  
             gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING,  
             gobject.TYPE_STRING, gobject.TYPE_BOOLEAN, gobject.TYPE_INT)  
         return store  
   
     def create_columns(self, treeview):  
         model = treeview.get_model()  
   
         # all columns are editable text fields  
         renderer = gtk.CellRendererText()  
         renderer.connect('edited', self.cell_edited, (model, 0))  
         column = gtk.TreeViewColumn(_('Title'), renderer,  
                                     text=self.COLUMN_TITLE,  
                                     editable=self.COLUMN_EDITABLE)  
         column.set_clickable(gtk.TRUE)  
         treeview.append_column(column)  
   
         renderer = gtk.CellRendererText()  
         renderer.connect('edited', self.cell_edited, (model, 1))  
         column = gtk.TreeViewColumn(_('Location'), renderer,  
                                     text=self.COLUMN_LOC,  
                                     editable=self.COLUMN_EDITABLE)  
         treeview.append_column(column)  
   
         renderer = gtk.CellRendererText()  
         renderer.connect('edited', self.cell_edited, (model, 2))  
         column = gtk.TreeViewColumn(_('Username'), renderer,  
                                     text=self.COLUMN_USER,  
                                     editable=self.COLUMN_EDITABLE)  
         treeview.append_column(column)  
   
         renderer = gtk.CellRendererText()  
         renderer.connect('edited', self.cell_edited, (model, 3))  
         column = gtk.TreeViewColumn(_('Password'), renderer,  
                                     text=self.COLUMN_PASSWORD,  
                                     editable=self.COLUMN_EDITABLE)  
         treeview.append_column(column)  
         return  

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

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