Browse Source

Use a list to store grids

master
Julio Biason 15 years ago
parent
commit
cd3598d3d5
  1. 106
      mitterlib/ui/ui_pygtk.py

106
mitterlib/ui/ui_pygtk.py

@ -252,13 +252,16 @@ class Interface(object):
self._statusbar = self._create_statusbar() self._statusbar = self._create_statusbar()
self._main_tabs = gtk.Notebook() self._main_tabs = gtk.Notebook()
self._grids = []
(grid_widget, self._grid) = self._create_grid('_new_message_count') (grid_widget, self._grid) = self._create_grid('_new_message_count')
self._main_tabs.insert_page(grid_widget, gtk.Label('Messages')) self._main_tabs.insert_page(grid_widget, gtk.Label('Messages'))
self._grids.append((self._grid, '_new_messages_count'))
(replies_widget, self._replies) = self._create_grid( (replies_widget, self._replies) = self._create_grid(
'_new_replies_count') '_new_replies_count')
self._main_tabs.insert_page(replies_widget, gtk.Label('Replies')) self._main_tabs.insert_page(replies_widget, gtk.Label('Replies'))
self._grids.append((self._replies, '_new_replies_count'))
update_box = gtk.VPaned() update_box = gtk.VPaned()
update_box.pack1(self._main_tabs, resize=True, shrink=False) update_box.pack1(self._main_tabs, resize=True, shrink=False)
@ -788,39 +791,6 @@ class Interface(object):
store.sort_column_changed() store.sort_column_changed()
return return
def _update_word_wrap(self, widget):
"""Update the word wrap for the widget."""
model = widget.get_model()
if len(model) == 0:
# don't try to update if there are no data to be updated
return
(win_width, win_height) = self._main_window.get_size()
column = widget.get_column(1)
iter = model.get_iter_first()
path = model.get_path(iter)
width = win_width - 70 # 48 = icon size
# TODO: Find out where those 12 pixels came from and/or if they
# are platform specific.
for renderer in column.get_cell_renderers():
renderer.set_property('wrap-width', width)
while iter:
path = model.get_path(iter)
model.row_changed(path, iter)
iter = model.iter_next(iter)
return
def _get_current_grid(self):
"""Return the grid of the current selected tab."""
page = self._main_tabs.get_current_page()
if page == 0:
return self._grid
elif page == 1:
return self._replies
# ------------------------------------------------------------ # ------------------------------------------------------------
# Widget callback functions # Widget callback functions
@ -904,9 +874,29 @@ class Interface(object):
def _grid_resize(self, widget, requisition, data=None): def _grid_resize(self, widget, requisition, data=None):
"""Called when the window is resized. We use it to set the proper """Called when the window is resized. We use it to set the proper
word-wrapping in the message column.""" word-wrapping in the message column."""
for grid in self._grids:
(grid, counter) = grid
model = grid.get_model()
if len(model) == 0:
# don't try to update if there are no data to be updated
return
(win_width, win_height) = self._main_window.get_size()
column = grid.get_column(1)
iter = model.get_iter_first()
path = model.get_path(iter)
width = win_width - 70 # 48 = icon size
# TODO: Find out where those 12 pixels came from and/or if they
# are platform specific.
for renderer in column.get_cell_renderers():
renderer.set_property('wrap-width', width)
self._update_word_wrap(self._grid) while iter:
self._update_word_wrap(self._replies) path = model.get_path(iter)
model.row_changed(path, iter)
iter = model.iter_next(iter)
return return
def _order_datetime(self, model, iter1, iter2, user_data=None): def _order_datetime(self, model, iter1, iter2, user_data=None):
@ -951,21 +941,16 @@ class Interface(object):
def _clear_posts(self, widget, user_data=None): def _clear_posts(self, widget, user_data=None):
"""Clear the list of posts from the grid.""" """Clear the list of posts from the grid."""
page = self._main_tabs.get_current_page() page = self._main_tabs.get_current_page()
# we can't use self._get_current_grid() 'cause we actually need to (grid, counter) = self._grids[page]
# know the current grid to clear the counts grid.get_model().clear()
if page == 0: set_attr(self, counter, 0)
# messages
self._grid.get_model().clear()
self._new_message_count = 0
elif page == 1:
self._replies.get_model().clear()
self._new_replies_count = 0
self._message_count_updated() self._message_count_updated()
return return
def _mark_all_read(self, widget, user_data=None): def _mark_all_read(self, widget, user_data=None):
"""Mark all messages as read.""" """Mark all messages as read."""
grid = self._get_current_grid() page = self._main_tabs.get_current_page()
(grid, counter) = self._grids[page]
model = grid.get_model() model = grid.get_model()
if len(model) == 0: if len(model) == 0:
# no messages, so we don't worry (if I recall correctly, # no messages, so we don't worry (if I recall correctly,
@ -979,18 +964,14 @@ class Interface(object):
iter = model.iter_next(iter) iter = model.iter_next(iter)
# update the counters # update the counters
page = self._main_tabs.get_current_page() set(attr, self, counter, 0)
if page == 0:
self._new_message_count = 0
else:
self._new_replies_count = 0
self._message_count_updated() self._message_count_updated()
return return
def _delete_message(self, widget, user_data=None): def _delete_message(self, widget, user_data=None):
"""Delete a message.""" """Delete a message."""
grid = self._get_current_grid() (grid, counter) = self._grids[self._main_tabs.get_current_page()]
(model, iter) = grid.get_selection().get_selected() (model, iter) = grid.get_selection().get_selected()
message = model.get_value(iter, 0) message = model.get_value(iter, 0)
@ -1017,7 +998,7 @@ class Interface(object):
def _reply_message(self, widget, user_data=None): def _reply_message(self, widget, user_data=None):
"""Reply to someone else's message.""" """Reply to someone else's message."""
grid = self._get_current_grid() (grid, _) = self._grids[self._main_tabs.get_current_page()]
(model, iter) = grid.get_selection().get_selected() (model, iter) = grid.get_selection().get_selected()
message = model.get_value(iter, 0) message = model.get_value(iter, 0)
self._update_text.get_buffer().set_text( self._update_text.get_buffer().set_text(
@ -1029,7 +1010,7 @@ class Interface(object):
def _repost_message(self, widget, user_data=None): def _repost_message(self, widget, user_data=None):
"""Repost someone else's message on your timeline.""" """Repost someone else's message on your timeline."""
grid = self._get_current_grid() (grid, counter) = self._grids[self._main_tabs.get_current_page()]
(model, iter) = grid.get_selection().get_selected() (model, iter) = grid.get_selection().get_selected()
message = model.get_value(iter, 0) message = model.get_value(iter, 0)
self._update_statusbar(_('Reposting %s message...') % self._update_statusbar(_('Reposting %s message...') %
@ -1042,7 +1023,7 @@ class Interface(object):
def _favourite_message(self, widget, user_data=None): def _favourite_message(self, widget, user_data=None):
"""Toggle the favourite status of a message.""" """Toggle the favourite status of a message."""
grid = self._get_current_grid() (grid, counter) = self._grids[self._main_tabs.get_current_page()]
(model, iter) = grid.get_selection().get_selected() (model, iter) = grid.get_selection().get_selected()
message = model.get_value(iter, 0) message = model.get_value(iter, 0)
@ -1252,9 +1233,10 @@ class Interface(object):
retrieved.""" retrieved."""
_log.debug('%d new tweets', len(results)) _log.debug('%d new tweets', len(results))
store = self._grid.get_model() (grid, counter) = self._grids[0]
store = grid.get_model()
self._fill_store(store, results) self._fill_store(store, results)
self._grid.queue_draw() grid.queue_draw()
self._new_message_count += len(results) self._new_message_count += len(results)
self._message_count_updated() self._message_count_updated()
@ -1288,9 +1270,10 @@ class Interface(object):
"""Called after we retrieve the replies.""" """Called after we retrieve the replies."""
_log.debug("%d new replies", len(results)) _log.debug("%d new replies", len(results))
store = self._replies.get_model() (grid, counter) = self._grids[1]
store = grid.get_model()
self._fill_store(store, results) self._fill_store(store, results)
self._replies.queue_draw() grid.queue_draw()
self._new_replies_count += len(results) self._new_replies_count += len(results)
self._message_count_updated() self._message_count_updated()
@ -1336,7 +1319,8 @@ class Interface(object):
user_pic = user_pic.scale_simple(48, 48, gtk.gdk.INTERP_BILINEAR) user_pic = user_pic.scale_simple(48, 48, gtk.gdk.INTERP_BILINEAR)
self._avatars[url] = user_pic self._avatars[url] = user_pic
self._grid.queue_draw() (grid, _) = self._grids[0]
grid.queue_draw()
return return
def _exception_download_pic(self, widget, exception): def _exception_download_pic(self, widget, exception):
@ -1475,8 +1459,8 @@ class Interface(object):
self._delete_info = None self._delete_info = None
self._reply_message_id = None self._reply_message_id = None
self._favourite_info = None self._favourite_info = None
self._new_message_count = 0 self._new_message_count = 0 # TODO: Turn this into a @property
self._new_replies_count = 0 self._new_replies_count = 0 # TODO: Turn this into a @property
return return

Loading…
Cancel
Save