OSDN Git Service

Refresh source code
authorHirotaka Kawata <hktechno@hotmail.com>
Mon, 8 Mar 2010 16:51:15 +0000 (01:51 +0900)
committerHirotaka Kawata <hktechno@hotmail.com>
Mon, 8 Mar 2010 16:51:15 +0000 (01:51 +0900)
main.py
timeline.py
twitterapi.py

diff --git a/main.py b/main.py
index 9e86da3..faebd17 100644 (file)
--- a/main.py
+++ b/main.py
@@ -75,7 +75,7 @@ class Main:
         gtk.gdk.threads_enter()
         # Twitter class instance
         self.twitter = twitterapi(keys, maxn)
-
+        
         # Set statusbar (Show API Remaining)
         self.label_apilimit = gtk.Label()
         self.obj.statusbar1.pack_start(
@@ -85,10 +85,11 @@ class Main:
         # Set Status Views
         for i in (("Home", "home_timeline", 30),
                   ("Mentions", "mentions", 300)):
-            self._tab_append(*i)
-            # insert littledelay
+            # create new timeline and tab view
+            self.new_timeline(*i)
+            # insert little delay
             time.sleep(random.random())
-
+        
         self.obj.notebook1.set_current_page(0)
         gtk.gdk.threads_leave()
     
@@ -100,18 +101,7 @@ class Main:
         
         gtk.main_quit()
     
-    # Get text
-    def _get_text(self):
-        buf = self.obj.textview1.get_buffer()
-        start, end = buf.get_start_iter(), buf.get_end_iter()
-        return  buf.get_text(start, end)
-    
-    # Clear Buf
-    def _clear_buf(self):
-        buf = self.obj.textview1.get_buffer()
-        buf.set_text("")
-    
-    def _tab_append(self, name, method, sleep, *args, **kwargs):
+    def new_timeline(self, name, method, sleep, *args, **kwargs):
         # Create Timeline Object
         tl = timeline(self.twitter, self.icons, self.iconmode)
         self.timelines.append(tl)
@@ -119,20 +109,19 @@ class Main:
         # Start sync timeline
         if method:
             tl.init_timeline(method, sleep, args, kwargs)
-            tl.timeline.tlrefreshEvent = self.on_timeline_refresh
+            tl.timeline.on_timeline_refresh = self.on_timeline_refresh
             tl.start_timeline()
         
         # Add Notebook (Tab view)
         tl.add_notebook(self.obj.notebook1, name)
         # Add Popup Menu
         tl.add_popup(self.obj.menu_timeline)
-
-        # Event handler and extern function set
-        tl._tab_append = self._tab_append
-        tl.status_selection_changedEvent = self.on_status_selection_changed
         
+        # Event handler and extern function set
+        tl.new_timeline = self.new_timeline
+        tl.on_status_selection_changed = self.on_status_selection_changed
         if method != "mentions":
-            tl.add_event = self.on_status_added
+            tl.on_status_added = self.on_status_added
         
         # Treeview double click signal connect
         tl.treeview.connect(
@@ -149,6 +138,30 @@ class Main:
     def get_current_tab(self):
         return self.obj.notebook1.get_current_page()
 
+    # Get text
+    def get_textview(self):
+        buf = self.obj.textview1.get_buffer()
+        start, end = buf.get_start_iter(), buf.get_end_iter()
+        return  buf.get_text(start, end)
+    
+    # Clear Buf
+    def clear_textview(self):
+        buf = self.obj.textview1.get_buffer()
+        buf.set_text("")
+    
+    # Reply to selected status
+    def reply_to_selected_status(self):
+        status = self.get_selected_status()
+        self.re = status.id
+        name = status.user.screen_name
+        buf = self.obj.textview1.get_buffer()
+        buf.set_text("@%s " % (name))
+        self.obj.textview1.grab_focus()
+    
+    
+    ########################################
+    # Original Events    
+    
     # status added event
     def on_status_added(self, i):
         status = self.twitter.statuses[i]
@@ -157,6 +170,7 @@ class Main:
                 status.text.find("@%s" % myname) >= 0:
             self.timelines[1].timeline.add(set((status.id,)))
     
+    # timeline refreshed event
     def on_timeline_refresh(self):
         self.label_apilimit.set_text("API: %d/%d %d/%d" % (
                 self.twitter.api.ratelimit_remaining,
@@ -164,6 +178,7 @@ class Main:
                 self.twitter.api.ratelimit_ipremaining,
                 self.twitter.api.ratelimit_iplimit))
 
+    # status selection changed event
     def on_status_selection_changed(self, status):
         self.obj.statusbar1.pop(0)
         self.obj.statusbar1.push(0, self.twtools.get_footer(status))
@@ -173,16 +188,16 @@ class Main:
     
     # Status Update
     def on_button1_clicked(self, widget):
-        txt = self._get_text()
+        txt = self.get_textview()
         if self.re:
             # in_reply_to is for future
             self.twitter.api.status_update(
                 txt, in_reply_to_status_id = self.re)
-            self._clear_buf()
+            self.clear_textview()
             self.re = None
         elif txt:
             self.twitter.api.status_update(txt)
-            self._clear_buf()
+            self.clear_textview()
         else:
             # Reload timeline if nothing in textview
             n = self.get_current_tab()
@@ -190,20 +205,10 @@ class Main:
     
     # Reply if double-clicked status
     def on_treeview_row_activated(self, treeview, path, view_column):
-        status = self.get_selected_status()
-        self.re = status.id
-        name = status.user.screen_name
-        buf = self.obj.textview1.get_buffer()
-        buf.set_text("@%s " % (name))
-        self.obj.textview1.grab_focus()
-    # Same....
+        self.reply_to_selected_status()
+    
     def on_menuitem_reply_activate(self, menuitem):
-        status = self.get_selected_status()
-        self.re = status.id
-        name = status.user.screen_name
-        buf = self.obj.textview1.get_buffer()
-        buf.set_text("@%s " % (name)) 
-        self.obj.textview1.grab_focus()
+        self.reply_to_selected_status()
     
     # Retweet menu clicked
     def on_menuitem_retweet_activate(self, memuitem):
@@ -224,14 +229,15 @@ class Main:
     # Added user timeline tab
     def on_menuitem_usertl_activate(self, menuitem):
         status = self.get_selected_status()
-        self._tab_append("@%s" % status.user.screen_name,
-                         "user_timeline", -1,
-                         user = status.user.id)
+        self.new_timeline("@%s" % status.user.screen_name,
+                          "user_timeline", -1,
+                          user = status.user.id)
+    
     # favorite
     def on_menuitem_fav_activate(self, menuitem):
         status = self.get_selected_status()
         self.twitter.api.favorite_create(status.id)
-
+    
     # Destroy status
     def on_Delete_activate(self, menuitem):
         status = self.get_selected_status()
index 7360a6d..7b728c6 100644 (file)
@@ -65,7 +65,7 @@ class timeline:
         vadj = self.scrwin.get_vadjustment()
         self.vadj_upper = vadj.upper
         self.vadj_lock = False
-        vadj.connect("changed", self._vadj_changed)
+        vadj.connect("changed", self.on_vadjustment_changed)
         
         # Tools setup
         self.twtools = twittertools.TwitterTools()
@@ -77,7 +77,7 @@ class timeline:
             method, time, args, kwargs)
         
         # Set Event Hander (exec in every get timeline
-        self.timeline.reloadEventHandler = self._prepend_new_statuses    
+        self.timeline.reloadEventHandler = self.prepend_new_statuses    
         # Add timeline to IconStore
         self.icons.add_store(self.store)
     
@@ -91,6 +91,12 @@ class timeline:
         notebook.append_page(self.scrwin, label)
         notebook.show_all()
     
+    # Reload Timeline
+    def reload(self):
+        if not self.timeline.lock.isSet():
+            # lock flag set (unlock)
+            self.timeline.lock.set()
+    
     # Add popup menu
     def add_popup(self, menu):
         self.pmenu = menu
@@ -114,25 +120,12 @@ class timeline:
         id = self.store[path][2]
         return self.twitter.statuses[id]
 
-    # Reload Timeline
-    def reload(self):
-        if not self.timeline.lock.isSet():
-            # lock flag set (unlock)
-            self.timeline.lock.set()
-    
-    # Replace & -> &amp;
-    def _replace_amp(self, string):
-        amp = string.find('&')
-        if amp == -1: return string
-        
-        entity_match = self.noent_amp.finditer(string)
-        
-        for i, e in enumerate(entity_match):
-            string = "%s&amp;%s" % (
-                string[:e.start() + (4 * i)],
-                string[e.start() + (4 * i) + 1:])
-        
-        return string
+    # get status from mouse point
+    def get_status_from_point(self, x, y):
+        path = self.treeview.get_path_at_pos(x, y)
+        it = self.store.get_iter(path[0])
+        sid = self.store.get_value(it, 2)
+        return self.twitter.statuses[sid]
     
     # Color status
     def color_status(self, status = None):
@@ -173,7 +166,7 @@ class timeline:
             i = self.store.iter_next(i)
     
     # Prepend new statuses
-    def _prepend_new_statuses(self, new_ids):
+    def prepend_new_statuses(self, new_ids):
         # Auto scroll lock if adjustment changed manually
         vadj = self.scrwin.get_vadjustment()
         self.vadj_lock = True if vadj.value != 0.0 else False
@@ -208,17 +201,27 @@ class timeline:
              background))
         gtk.gdk.threads_leave()
         
-        self.add_event(i)
+        self.on_status_added(i)
     
-    def add_event(self, i):
-        pass
+    # Replace & -> &amp;
+    def _replace_amp(self, string):
+        amp = string.find('&')
+        if amp == -1: return string
+        
+        entity_match = self.noent_amp.finditer(string)
+        
+        for i, e in enumerate(entity_match):
+            string = "%s&amp;%s" % (
+                string[:e.start() + (4 * i)],
+                string[e.start() + (4 * i) + 1:])
+        
+        return string
+
+    # dummy events and methods
+    def on_status_added(self, *args, **kwargs): pass
+    def on_status_selection_changed(self, *args, **kwargs): pass
+    def new_timeline(self, *args, **kwargs): pass
     
-    # get status from mouse point
-    def get_status_from_point(self, x, y):
-        path = self.treeview.get_path_at_pos(x, y)
-        it = self.store.get_iter(path[0])
-        sid = self.store.get_value(it, 2)
-        return self.twitter.statuses[sid]
     
     ########################################
     # Gtk Signal Events
@@ -253,7 +256,7 @@ class timeline:
         self.vadj_upper = vadj.upper
     
     # Scroll to top if upper(list length) changed Event
-    def _vadj_changed(self, adj):
+    def on_vadjustment_changed(self, adj):
         if not self.vadj_lock and self.vadj_upper < adj.upper:
             if len(self.store):
                 self.treeview.scroll_to_cell((0,))
@@ -282,7 +285,7 @@ class timeline:
                     item.set_image(gtk.image_new_from_stock("gtk-new", gtk.ICON_SIZE_MENU))
                     # Connect click event (open browser)
                     item.connect("activate",
-                                 self._menuitem_url_clicked, i)
+                                 self.on_menuitem_url_clicked, i)
                     # append to menu
                     m.append(item)
             else:
@@ -302,7 +305,7 @@ class timeline:
                     item.set_image(gtk.image_new_from_stock("gtk-add", gtk.ICON_SIZE_MENU))
                     # Connect click event (add tab)
                     item.connect("activate",
-                                 self._menuitem_user_clicked, i)
+                                 self.on_menuitem_user_clicked, i)
                     # append to menu
                     mm.append(item)
             else:
@@ -318,20 +321,20 @@ class timeline:
             self.pmenu.popup(None, None, None, event.button, event.time)
     
     # Open Web browser if url menuitem clicked
-    def _menuitem_url_clicked(self, menuitem, url):
+    def on_menuitem_url_clicked(self, menuitem, url):
         webbrowser.open_new_tab(url)
 
     # Add user timeline tab if mentioned user menu clicked
-    def _menuitem_user_clicked(self, menuitem, sname):
+    def on_menuitem_user_clicked(self, menuitem, sname):
         # search user from screen_name
         for user in self.twitter.users.itervalues():
             if user.screen_name == sname:
-                self._tab_append("@%s" % sname, "user_timeline", -1,
+                self.new_timeline("@%s" % sname, "user_timeline", -1,
                                  user = user.id)
                 return True
             
         # force specify screen_name if not found
-        self._tab_append("@%s" % sname, "user_timeline", -1,
+        self.new_timeline("@%s" % sname, "user_timeline", -1,
                          user = sname, sn = True)
         return True
     
@@ -339,4 +342,4 @@ class timeline:
     def on_treeview_cursor_changed(self, treeview):
         status = self.get_selected_status()
         self.color_status(status)
-        self.status_selection_changedEvent(status)
+        self.on_status_selection_changed(status)
index c7e141d..8a8ab0e 100644 (file)
@@ -85,7 +85,7 @@ class timeline_thread(threading.Thread):
                 print >>sys.stderr, "[Error] TwitterAPI ",
                 print >>sys.stderr, time.strftime("%H:%M:%S"), e
             
-            self.tlrefreshEvent()
+            self.on_timelinel_refresh()
             
             # If Timeline update
             if last:
@@ -127,3 +127,5 @@ class timeline_thread(threading.Thread):
             self.timeline.update(ids)
         
         self.addlock.unlock()
+
+    def on_timelinel_refresh(self, *args, **kwargs): pass