/[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.14 by jmalonzo, Wed Aug 27 12:18:02 2003 UTC revision 1.15 by jmalonzo, Tue Sep 23 23:53:28 2003 UTC
# Line 4  import gobject Line 4  import gobject
4  import gtk  import gtk
5  import gnome  import gnome
6  import gnome.ui  import gnome.ui
7    import pango
8    
9  import straw  import straw
10    
11  class PreferencesDialog:  class PreferencesDialog:
12      SEC_PER_MINUTE = 60      SEC_PER_MINUTE = 60
13        COLUMN_TITLE = 0
14        #COLUMN_LOC = 1
15        #COLUMN_USER = 2
16        #COLUMN_PASSWORD = 3
17        COLUMN_EDITABLE = 4
18        COLUMN_ID = 5
19    
20    
21      def __init__(self, xml):      def __init__(self, xml):
22          poll_frequency = int(straw.config.poll_frequency/self.SEC_PER_MINUTE)          straw.config.signal_connect(straw.FeedsChangedSignal,self.feeds_changed)
         items_stored = int(straw.config.number_of_items_stored)  
23          self._window = xml.get_widget('preferences_dialog')          self._window = xml.get_widget('preferences_dialog')
24          self._window.set_transient_for(straw.main_window.get_window())          self._window.set_transient_for(straw.main_window.get_window())
25    
26            model = self.create_model()
27            self.display_feeds(model, straw.config.feeds)
28            treeview = xml.get_widget('feeds_configuration_treeview')
29            treeview.set_model(model)
30            treeview.set_rules_hint(gtk.TRUE)
31            treeview.set_search_column(0)
32            treesel = treeview.get_selection()
33            treesel.set_mode(gtk.SELECTION_MULTIPLE)
34            self._treeview = treeview
35            self.create_columns(treeview)
36    
37            poll_frequency = int(straw.config.poll_frequency/self.SEC_PER_MINUTE)
38            items_stored = int(straw.config.number_of_items_stored)
39    
40          xml.get_widget('poll_frequency_spin').set_value(poll_frequency)          xml.get_widget('poll_frequency_spin').set_value(poll_frequency)
41          xml.get_widget('number_of_items_spin').set_value(items_stored)          xml.get_widget('number_of_items_spin').set_value(items_stored)
42          xml.get_widget(['item_order_oldest',          xml.get_widget(['item_order_oldest',
# Line 34  class PreferencesDialog: Line 56  class PreferencesDialog:
56      def hide(self, *args):      def hide(self, *args):
57          self._window.hide()          self._window.hide()
58    
59      def on_prefs_dialog_delete_event(self, *args):      def on_preferences_dialog_delete_event(self, *args):
60          self.hide()          self.hide()
61          return gtk.TRUE          return gtk.TRUE
62    
# Line 54  class PreferencesDialog: Line 76  class PreferencesDialog:
76      def on_item_order_oldest_toggled(self, radio):      def on_item_order_oldest_toggled(self, radio):
77          pass          pass
78    
79        def feeds_changed(self, signal):
80            self.display_feeds(self._treeview.get_model(), straw.config.feeds)
81    
82        def display_feeds(self, model, feeds):
83            fc = 0
84            mlines = len(model)
85            while fc < mlines and fc < len(feeds):
86                feed = feeds[fc]
87                if model[fc][self.COLUMN_ID] != feed.id:
88                    iter = model.get_iter((fc,))
89                    model.set(iter, self.COLUMN_TITLE, feed.title,
90                              #self.COLUMN_LOC, feed.access_info[0],
91                              #self.COLUMN_USER, feed.access_info[1],
92                              #self.COLUMN_PASSWORD, feed.access_info[2],
93                              self.COLUMN_EDITABLE, gtk.TRUE,
94                              self.COLUMN_ID, feed.id)
95                fc += 1
96            if fc < mlines:
97                treeiter = model.get_iter((fc,))
98                while treeiter:
99                    next_iter = model.iter_next(treeiter)
100                    model.remove(treeiter)
101                    treeiter = next_iter
102            else:
103                while fc < len(feeds):
104                    feed = feeds[fc]
105                    iter = model.append()
106                    model.set(iter, self.COLUMN_TITLE, feed.title,
107                              #self.COLUMN_LOC, feed.access_info[0],
108                              #self.COLUMN_USER, feed.access_info[1],
109                              #self.COLUMN_PASSWORD, feed.access_info[2],
110                              self.COLUMN_EDITABLE, gtk.TRUE,
111                              self.COLUMN_ID, feed.id)
112                    fc += 1
113            return
114    
115        def on_add_feed_button_clicked(self, button):
116            self.add_feed(self._treeview.get_model())
117            return
118    
119        def _get_selected(self):
120            selected = []
121            def foreach_selected(model, path, iter, *data):
122                selected.append(path[0])
123            selection = self._treeview.get_selection()
124            selection.selected_foreach(foreach_selected)
125            return selected
126    
127        def on_delete_feed_button_clicked(self, *args):
128            model = self._treeview.get_model()
129            selected = self._get_selected()
130            selected.sort()
131            i = 0
132            for s in selected:
133                s -= i
134                i += 1
135                iter = model.get_iter(s)
136                model.remove(iter)
137                del straw.config.feeds[s]
138    
139        def on_move_feed_up_button_clicked(self, *args):
140            selected = self._get_selected()
141            selection = self._treeview.get_selection()
142            if len(selected) and selected[0] > 0:
143                straw.config.feeds.reorder(selected, -1)
144                selection.unselect_all()
145                for p in selected:
146                    selection.select_path(p-1)
147            return
148    
149        def on_move_feed_down_button_clicked(self, *args):
150            selected = self._get_selected()
151            selection = self._treeview.get_selection()
152            if len(selected) and selected[-1] < len(straw.config.feeds) - 1:
153                straw.config.feeds.reorder(selected, 1)
154                selection.unselect_all()
155                for p in selected:
156                    selection.select_path(p+1)
157            return
158    
159        def on_sort_feeds_ascending_button_clicked(self, *args):
160            selected = self._get_selected()
161            straw.config.feeds.sort(selected)
162    
163        def add_feed(self, model):
164            iter = model.append()
165            s = straw.Feed("New name")
166            straw.config.feeds.append(s)
167            return
168    
169        def cell_edited(self, cell, path_string, text, (model, column)):
170            iter = model.get_iter_from_string(path_string)
171            if not iter:
172                return
173            path = model.get_path(iter)
174            model.set(iter, column, text)
175    
176            url, user, pw = straw.config.feeds[path[0]].access_info
177    
178            if column == self.COLUMN_TITLE:
179                straw.config.feeds[path[0]].title = text
180            #elif column == self.COLUMN_LOC:
181            #    straw.config.feeds[path[0]].access_info = (text, user, pw)
182            #elif column == self.COLUMN_USER:
183            #    straw.config.feeds[path[0]].access_info = (url, text, pw)
184            #elif column == self.COLUMN_PASSWORD:
185            #    straw.config.feeds[path[0]].access_info = (url, user, text)
186            return
187    
188        def create_model(self):
189            store = gtk.ListStore(
190                gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING,
191                gobject.TYPE_STRING, gobject.TYPE_BOOLEAN, gobject.TYPE_INT)
192            return store
193    
194        def create_columns(self, treeview):
195            model = treeview.get_model()
196    
197            # all columns are editable text fields
198            renderer = gtk.CellRendererText()
199            renderer.connect('edited', self.cell_edited, (model, 0))
200            column = gtk.TreeViewColumn(_('Title'), renderer,
201                                        text=self.COLUMN_TITLE,
202                                        editable=self.COLUMN_EDITABLE)
203            column.set_resizable(gtk.TRUE)
204            column.set_reorderable(gtk.TRUE)
205            #column.set_sort_column_id(0)
206            #column.set_sort_order('ascending')
207            #column.set_sort_indicator(gtk.TRUE)
208            treeview.append_column(column)
209    
210            #renderer = gtk.CellRendererText()
211            #renderer.connect('edited', self.cell_edited, (model, 1))
212            #column = gtk.TreeViewColumn(_('Location'), renderer,
213            #                            text=self.COLUMN_LOC,
214            #                            editable=self.COLUMN_EDITABLE)
215            #treeview.append_column(column)
216    
217            #renderer = gtk.CellRendererText()
218            #renderer.connect('edited', self.cell_edited, (model, 2))
219            #column = gtk.TreeViewColumn(_('Username'), renderer,
220            #                            text=self.COLUMN_USER,
221            #                            editable=self.COLUMN_EDITABLE)
222            #treeview.append_column(column)
223    
224            #renderer = gtk.CellRendererText()
225            #renderer.connect('edited', self.cell_edited, (model, 3))
226            #column = gtk.TreeViewColumn(_('Password'), renderer,
227            #                            text=self.COLUMN_PASSWORD,
228            #                            editable=self.COLUMN_EDITABLE)
229            #treeview.append_column(column)
230    
231            return

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

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