Browse Source

Counting happens on the statusbar now

master
Julio Biason 15 years ago
parent
commit
becbcad100
  1. 52
      mitterlib/ui/ui_pygtk.py

52
mitterlib/ui/ui_pygtk.py

@ -234,10 +234,6 @@ class Interface(object):
if self._images['main']: if self._images['main']:
main_window.set_icon(self._images['main']) main_window.set_icon(self._images['main'])
main_window.connect('destroy', self._quit_app)
main_window.connect('delete-event', self._quit_app)
main_window.connect('size-request', self._grid_resize)
(menu, toolbar, accelerators) = self._create_menu_and_toolbar() (menu, toolbar, accelerators) = self._create_menu_and_toolbar()
update_field = self._create_update_box() update_field = self._create_update_box()
self._statusbar = self._create_statusbar() self._statusbar = self._create_statusbar()
@ -266,6 +262,16 @@ class Interface(object):
self._message_count_updated() self._message_count_updated()
# now that all elements are created, connect the signals
main_window.connect('destroy', self._quit_app)
main_window.connect('delete-event', self._quit_app)
main_window.connect('size-request', self._grid_resize)
self._update_text.get_buffer().connect('changed', self._count_chars)
self._update_text.connect('focus-out-event',
self._remove_count_status)
self._update_text.connect('focus-in-event', self._on_textarea_focus)
return main_window return main_window
def _create_grid(self, counter): def _create_grid(self, counter):
@ -476,7 +482,6 @@ class Interface(object):
self._update_text = gtk.TextView() self._update_text = gtk.TextView()
self._update_text.set_property('wrap-mode', gtk.WRAP_WORD) self._update_text.set_property('wrap-mode', gtk.WRAP_WORD)
text_buffer = self._update_text.get_buffer() text_buffer = self._update_text.get_buffer()
text_buffer.connect('changed', self._count_chars)
self._update_button = gtk.Button(label='Send') self._update_button = gtk.Button(label='Send')
self._update_button.connect('clicked', self._update_status) self._update_button.connect('clicked', self._update_status)
@ -491,11 +496,6 @@ class Interface(object):
self._count_label.set_justify(gtk.JUSTIFY_LEFT) self._count_label.set_justify(gtk.JUSTIFY_LEFT)
self._reply_label = gtk.Label() self._reply_label = gtk.Label()
info_box.pack_start(self._count_label, expand=True, fill=True)
info_box.pack_start(self._reply_label, expand=True, fill=True)
self._count_chars(text_buffer)
update_box = gtk.HBox(False, 0) update_box = gtk.HBox(False, 0)
update_box.pack_start(self._update_text, expand=True, fill=True, update_box.pack_start(self._update_text, expand=True, fill=True,
padding=0) padding=0)
@ -504,11 +504,7 @@ class Interface(object):
update_box.pack_start(self._cancel_button, expand=False, fill=False, update_box.pack_start(self._cancel_button, expand=False, fill=False,
padding=0) padding=0)
update_area = gtk.VBox(True, 0) # Spell checking the update box
update_area.pack_start(info_box)
update_area.pack_start(update_box)
""" Spell checking the update box """
spell_check_enabled = self._options[self.NAMESPACE]['spell_check'] spell_check_enabled = self._options[self.NAMESPACE]['spell_check']
if spell_check_enabled: if spell_check_enabled:
try: try:
@ -525,7 +521,7 @@ class Interface(object):
_log.debug('Error initializing spell checking: ' \ _log.debug('Error initializing spell checking: ' \
'spell checking disabled') 'spell checking disabled')
return update_area return update_box
def _create_statusbar(self): def _create_statusbar(self):
"""Create the statusbar.""" """Create the statusbar."""
@ -646,6 +642,7 @@ class Interface(object):
def _update_statusbar(self, message): def _update_statusbar(self, message):
"""Update the statusbar with the message.""" """Update the statusbar with the message."""
self._statusbar.pop(self._statusbar_context)
self._statusbar.push(self._statusbar_context, message) self._statusbar.push(self._statusbar_context, message)
return return
@ -782,7 +779,10 @@ class Interface(object):
count = len(text) count = len(text)
# TODO: gettext to properly use "characters"/"character" # TODO: gettext to properly use "characters"/"character"
self._count_label.set_text('%d characters' % count) text = '%d characters' % (count)
#self._count_label.set_text(text)
self._statusbar.push(self._remove_count_status(), text)
self._update_sensitivity(not (count == 0)) self._update_sensitivity(not (count == 0))
return True return True
@ -796,6 +796,8 @@ class Interface(object):
return return
_log.debug('Status: %s', status) _log.debug('Status: %s', status)
self._remove_count_status()
self._update_statusbar('Sending update...') self._update_statusbar('Sending update...')
self._update_sensitivity(False) self._update_sensitivity(False)
self._threads.add_work(self._post_update_status, self._threads.add_work(self._post_update_status,
@ -811,7 +813,7 @@ class Interface(object):
self._delete_iter = None self._delete_iter = None
self._clear_reply() self._clear_reply()
self._remove_count_status()
return return
def _quit_app(self, widget=None, user_data=None): def _quit_app(self, widget=None, user_data=None):
@ -1105,6 +1107,20 @@ class Interface(object):
self._main_tabs.set_current_page(user_data) self._main_tabs.set_current_page(user_data)
return return
def _remove_count_status(self, widget=None, user_data=None):
"""Find the context with the char count in the statusbar and remove
it (pop). Returns the context of the count, in case some other
function wants to add another message."""
count_context = self._statusbar.get_context_id('counter')
self._statusbar.pop(count_context)
return count_context
def _on_textarea_focus(self, widget, user_data=None):
"""Called when the text area gets the focus. Just to add the counter
again."""
self._count_chars(self._update_text.get_buffer())
return
# ------------------------------------------------------------ # ------------------------------------------------------------
# Network related functions # Network related functions
# ------------------------------------------------------------ # ------------------------------------------------------------

Loading…
Cancel
Save