From 9989afc5181cfa3fdbf3bf08f6e3d51d5ed87a77 Mon Sep 17 00:00:00 2001 From: Thomas Perl Date: Sat, 1 Mar 2008 19:04:00 +0100 Subject: [PATCH] Fullscreen support, UI fixes, reset improved --- debian/changelog | 9 +++++++++ setup.py | 2 +- smpy | 58 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 60 insertions(+), 9 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4e9cdc9..22d73a9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +smpy (2008.3.1) unstable; urgency=low + + * Don't reset the view after sending a SMS + * Disable more widgets when sending messages + * Re-structure UI to be more usable and finger-friendly + * Full-screen support + + -- Thomas Perl Sat, 1 Mar 2008 18:17:03 +0100 + smpy (2008.2.18) unstable; urgency=low * Fix icon sizes (26x26, 40x40 and 64x64) diff --git a/setup.py b/setup.py index a7a0939..543cb02 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from distutils.core import setup setup(name='smpy', - version='2008.2.18', + version='2008.3.1', scripts=['smpy'], packages=['mechanize'], modules=['ClientForm', 'robotparser'], diff --git a/smpy b/smpy index 033b05d..c5eae70 100755 --- a/smpy +++ b/smpy @@ -24,6 +24,7 @@ # 2008-01-07: Fork smpy, first port to Maemo Chinook # 2008-01-10: Maemo Icon added # 2008-01-11: GUI-Configurable, multiple contacts folders +# 2008-03-01: Some UI changes, see the Git history from now on # @@ -44,9 +45,10 @@ import glob class PythonifiedSMSSender(object): host = 'sms.a1.net' - SIZE = 60 + SIZE = 90 def __init__( self): + self.username = '' configfile = os.path.expanduser('~/.smpyrc') try: self.config = shelve.open(configfile) @@ -61,6 +63,9 @@ class PythonifiedSMSSender(object): self.SMSWindow = hildon.Window() self.app.add_window(self.SMSWindow) self.SMSWindow.connect('destroy', self.close_down) + self.SMSWindow.connect('key-press-event', self.on_key_press) + self.SMSWindow.connect('window-state-event', self.on_window_state_change) + self.window_in_fullscreen = False menu = gtk.Menu() folder = gtk.MenuItem('Add contacts folder') @@ -80,19 +85,27 @@ class PythonifiedSMSSender(object): vb.set_border_width( 12) self.SMSWindow.add( vb) + self.title_label = gtk.Label('') + self.title_label.set_markup('smpy :)') + vb.pack_start(self.title_label,False) + + hb = gtk.HBox() + hb.set_spacing(4) + vb.pack_start(hb,True) self.iconview = gtk.IconView() self.set_iconview_model() self.iconview.set_pixbuf_column(2) - self.iconview.set_size_request(-1, 130) + self.iconview.set_size_request(90, -1) self.iconview.set_margin(0) self.iconview.set_spacing(0) self.iconview.set_row_spacing(2) self.iconview.set_column_spacing(2) self.iconview.connect('selection-changed', self.iconview_selection_changed) sw = gtk.ScrolledWindow() - sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) + sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) + hildon.hildon_helper_set_thumb_scrollbar(sw, True) sw.add(self.iconview) - vb.pack_start(sw, False) + hb.pack_start(sw, False) sw.show_all() self.message = gtk.TextView() @@ -100,7 +113,7 @@ class PythonifiedSMSSender(object): frame = gtk.Frame() frame.set_shadow_type( gtk.SHADOW_IN) frame.add( self.message) - vb.pack_start( frame, True) + hb.pack_start( frame, True) hb = gtk.HBox() hb.set_spacing( 6) @@ -124,11 +137,33 @@ class PythonifiedSMSSender(object): self.SMSWindow.move( 200, 200) self.SMSWindow.set_title('Send SMS') self.SMSWindow.show_all() + self.title_label.hide() if 'username' not in self.config or 'password' not in self.config or not self.config['username'] or not self.config['password']: self.show_message('Please configure your account first using the menu.') self.send_button.set_sensitive(False) + self.set_username('') + + def on_window_state_change(self, widget, event, *args): + if event.new_window_state & gtk.gdk.WINDOW_STATE_FULLSCREEN: + self.window_in_fullscreen = True + else: + self.window_in_fullscreen = False + + def on_key_press(self, widget, event, *args): + if event.keyval == gtk.keysyms.F6: + if self.window_in_fullscreen: + self.title_label.hide() + self.SMSWindow.unfullscreen() + else: + self.SMSWindow.fullscreen() + self.title_label.show() + + def set_username(self, username): + gobject.idle_add(self.send_button.set_sensitive, bool(username!='')) + self.username = username + def close_down(self, widget): self.config.close() gtk.main_quit() @@ -168,7 +203,8 @@ class PythonifiedSMSSender(object): def iconview_selection_changed(self, iconview): model = self.iconview.get_model() for selected in self.iconview.get_selected_items(): - self.status.set_text(model.get_value(model.get_iter(selected), 1)+' selected') + self.set_username(model.get_value(model.get_iter(selected), 1)) + self.status.set_text(self.username+' selected') def completion_match_func( self, completion, key, iter, column): text = completion.get_model().get_value( iter, 0) @@ -201,6 +237,8 @@ class PythonifiedSMSSender(object): def send_sms( self, widget): self.send_button.set_sensitive(False) + self.message.set_sensitive(False) + self.iconview.set_sensitive(False) threading.Thread( target = self.send_sms_thread).start() def send_sms_thread( self): @@ -217,16 +255,20 @@ class PythonifiedSMSSender(object): last_message = message if last_message.find(':)') != -1: - gobject.idle_add(self.show_message, 'sms sent to %s'%number) + gobject.idle_add(self.show_message, 'sms sent to %s\n(%s)'%(self.username,number)) gobject.idle_add(self.reset_all) else: gobject.idle_add(self.show_message, 'there has been an error') def reset_all(self, widget=None): self.iconview.unselect_all() - self.message.get_buffer().set_text('') + self.set_username('') + if widget is not None: + self.message.get_buffer().set_text('') self.status.set_text('') self.send_button.set_sensitive(True) + self.message.set_sensitive(True) + self.iconview.set_sensitive(True) def contacts_to_model( self, contacts): model = gtk.ListStore( str, str, gtk.gdk.Pixbuf) -- 2.11.4.GIT