Browse Source

It works when we retrieve the data

master
Julio Biason 16 years ago
parent
commit
ad9e962a0b
  1. 70
      mitterlib/ui/ui_pygtk.py

70
mitterlib/ui/ui_pygtk.py

@ -255,8 +255,9 @@ class Interface(object):
if self._app_icon: if self._app_icon:
main_window.set_icon_from_file(self._app_icon) main_window.set_icon_from_file(self._app_icon)
main_window.connect('destroy', self.quit_app) main_window.connect('destroy', self._quit_app)
main_window.connect('delete-event', self.quit_app) main_window.connect('delete-event', self._quit_app)
main_window.connect('size-request', self._window_resize)
grid = self._create_grid() grid = self._create_grid()
(menu, toolbar, accelerators) = self._create_menu_and_toolbar() (menu, toolbar, accelerators) = self._create_menu_and_toolbar()
@ -278,21 +279,21 @@ class Interface(object):
def _create_grid(self): def _create_grid(self):
"""Add the displaying grid.""" """Add the displaying grid."""
self._grid_store = gtk.ListStore(object) grid_store = gtk.ListStore(object)
# Trying to store the NetworkData object only # Trying to store the NetworkData object only
# self.grid_store.set_sort_func(0, self._sort_by_time) # self.grid_store.set_sort_func(0, self._sort_by_time)
# self.grid_store.set_sort_column_id(0, gtk.SORT_DESCENDING) # self.grid_store.set_sort_column_id(0, gtk.SORT_DESCENDING)
self.grid = gtk.TreeView(self._grid_store) self._grid = gtk.TreeView(grid_store)
self.grid.set_property('headers-visible', False) self._grid.set_property('headers-visible', False)
self.grid.set_rules_hint(True) # change color for each row self._grid.set_rules_hint(True) # change color for each row
user_renderer = gtk.CellRendererPixbuf() user_renderer = gtk.CellRendererPixbuf()
user_column = gtk.TreeViewColumn('User', user_renderer) user_column = gtk.TreeViewColumn('User', user_renderer)
user_column.set_cell_data_func(user_renderer, user_column.set_cell_data_func(user_renderer,
self._cell_renderer_user) self._cell_renderer_user)
self.grid.append_column(user_column) self._grid.append_column(user_column)
message_renderer = gtk.CellRendererText() message_renderer = gtk.CellRendererText()
message_renderer.set_property('wrap-mode', gtk.WRAP_WORD) message_renderer.set_property('wrap-mode', gtk.WRAP_WORD)
@ -303,9 +304,9 @@ class Interface(object):
message_renderer) message_renderer)
message_column.set_cell_data_func(message_renderer, message_column.set_cell_data_func(message_renderer,
self._cell_renderer_message) self._cell_renderer_message)
self.grid.append_column(message_column) self._grid.append_column(message_column)
self.grid.set_resize_mode(gtk.RESIZE_IMMEDIATE) self._grid.set_resize_mode(gtk.RESIZE_IMMEDIATE)
#self.grid.connect('cursor-changed', self.check_post) #self.grid.connect('cursor-changed', self.check_post)
#self.grid.connect('row-activated', self.open_post) #self.grid.connect('row-activated', self.open_post)
#self.grid.connect('button-press-event', self.click_post) #self.grid.connect('button-press-event', self.click_post)
@ -314,7 +315,7 @@ class Interface(object):
scrolled_window = gtk.ScrolledWindow() scrolled_window = gtk.ScrolledWindow()
scrolled_window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_ALWAYS) scrolled_window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_ALWAYS)
scrolled_window.add(self.grid) scrolled_window.add(self._grid)
return scrolled_window return scrolled_window
@ -329,7 +330,7 @@ class Interface(object):
quit_action = gtk.Action('Quit', '_Quit', quit_action = gtk.Action('Quit', '_Quit',
'Exit Mitter', gtk.STOCK_QUIT) 'Exit Mitter', gtk.STOCK_QUIT)
quit_action.connect('activate', self.quit_app) quit_action.connect('activate', self._quit_app)
settings_action = gtk.Action('Settings', '_Settings', settings_action = gtk.Action('Settings', '_Settings',
'Settings', gtk.STOCK_PREFERENCES) 'Settings', gtk.STOCK_PREFERENCES)
@ -491,8 +492,9 @@ class Interface(object):
message = re.sub(r'&(?!(amp;|gt;|lt;|quot;|apos;))', r'&', message) message = re.sub(r'&(?!(amp;|gt;|lt;|quot;|apos;))', r'&', message)
# highlight URLs # highlight URLs
message = URL_RE.sub(r'<span foreground="blue">\1</span>', mask = r'<span foreground="%s">\1</span>' % (
message) self._options[self.NAMESPACE]['link_colour'])
message = URL_RE.sub(mask, message)
# use a different highlight for the current user # use a different highlight for the current user
#message = re.sub(r'(@'+self.twitter.username+')', #message = re.sub(r'(@'+self.twitter.username+')',
@ -536,7 +538,7 @@ class Interface(object):
#self._update_text.set_sensitive(False) #self._update_text.set_sensitive(False)
#self.statusbar.push(self.statusbar_context, 'Updating your status...') #self.statusbar.push(self.statusbar_context, 'Updating your status...')
def quit_app(self, widget=None, user_data=None): def _quit_app(self, widget=None, user_data=None):
"""Callback when the window is destroyed or the user selects """Callback when the window is destroyed or the user selects
"Quit".""" "Quit"."""
@ -553,6 +555,34 @@ class Interface(object):
gtk.main_quit() gtk.main_quit()
return return
def _window_resize(self, widget, request, data=None):
"""Called when the window is resized. We use it to set the proper
word-wrapping in the message column."""
(width, height) = widget.get_size()
model = self._grid.get_model()
if len(model) == 0:
# nothing in the list, so we don't have what to set proper word
# wrapping
return
column = self._grid.get_column(1)
iter = model.get_iter_first()
path = model.get_path(iter)
column_rectangle = self._grid.get_cell_area(path, column)
for renderer in column.get_cell_renderers():
renderer.set_property('wrap-width', column_rectangle.width)
while iter:
path = model.get_path(iter)
model.row_changed(path, iter)
iter = model.iter_next(iter)
return
# ------------------------------------------------------------ # ------------------------------------------------------------
# Network related functions # Network related functions
# ------------------------------------------------------------ # ------------------------------------------------------------
@ -562,9 +592,10 @@ class Interface(object):
"""Function called after the data from the messages list is """Function called after the data from the messages list is
retrieved.""" retrieved."""
_log.debug('%d new tweets', len(results)) _log.debug('%d new tweets', len(results))
store = self._grid.get_model()
for message in results: for message in results:
_log.debug('Data: %s', str(message)) _log.debug('Data: %s', str(message))
self._grid_store.prepend([message]) store.prepend([message])
return return
def _exception_get_messages(self, widget, exception): def _exception_get_messages(self, widget, exception):
@ -692,4 +723,13 @@ class Interface(object):
default=60, default=60,
conflict_group='interface', conflict_group='interface',
is_cmd_option=False) # TODO: Should it be config only? is_cmd_option=False) # TODO: Should it be config only?
options.add_option(
group=self.NAMESPACE,
option='link_colour',
help='Color of links in the interface',
type='str',
metavar='COLOR',
default='blue',
conflict_group='interface',
is_cmd_option=False)

Loading…
Cancel
Save