OSDN Git Service

Show API Ratelimit remaining on statusbar
authorHirotaka Kawata <hktechno@hotmail.com>
Fri, 5 Mar 2010 16:10:27 +0000 (01:10 +0900)
committerHirotaka Kawata <hktechno@hotmail.com>
Fri, 5 Mar 2010 16:10:27 +0000 (01:10 +0900)
main.py
timeline.py
twitterapi.py

diff --git a/main.py b/main.py
index 10d0208..ff10ed7 100644 (file)
--- a/main.py
+++ b/main.py
@@ -71,6 +71,12 @@ 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(
+            self.label_apilimit, expand = False, padding = 10)
+        self.obj.statusbar1.show_all()
         
         # Set Status Views
         for i in (("Home", "home_timeline", 30),
@@ -108,7 +114,9 @@ class Main:
         
         # Start sync timeline
         if method:
-            tl.start_sync(method, sleep, args, kwargs)
+            tl.init_timeline(method, sleep, args, kwargs)
+            tl.timeline.tlrefreshEvent = self.on_timeline_refresh
+            tl.start_timeline()
         
         # Add Notebook (Tab view)
         tl.add_notebook(self.obj.notebook1, name)
@@ -145,6 +153,13 @@ class Main:
             self.timelines[1].color_status()
             self.timelines[1].timeline.timeline.add(status.id)
     
+    def on_timeline_refresh(self):
+        self.label_apilimit.set_text("%d/%d %d/%d" % (
+                self.twitter.api.ratelimit_remaining,
+                self.twitter.api.ratelimit_limit,
+                self.twitter.api.ratelimit_ipremaining,
+                self.twitter.api.ratelimit_iplimit))
+    
     ########################################
     # Gtk Signal Events
     
index 9f7bfe8..6aba825 100644 (file)
@@ -67,23 +67,25 @@ class timeline:
         self.vadj_upper = vadj.upper
         self.vadj_lock = False
         vadj.connect("changed", self._vadj_changed)
-
+        
         # Regex setup
         self.urlre = urlregex()
         self.noent_amp = re.compile("&(?![A-Za-z]+;)")
     
     # Start Sync Timeline (new twitter timeline thread create)
-    def start_sync(self, method, time, args, kwargs):
+    def init_timeline(self, method, time, args, kwargs):
         self.timeline = self.twitter.create_timeline(
             method, time, args, kwargs)
-
-        # Set Event Hander (exec in every get timeline
-        self.timeline.reloadEventHandler = self._prepend_new_statuses
-        self.timeline.start()
         
+        # Set Event Hander (exec in every get timeline
+        self.timeline.reloadEventHandler = self._prepend_new_statuses    
         # Add timeline to IconStore
         self.icons.add_store(self.store)
     
+    def start_timeline(self):
+        # Start Timeline sync thread
+        self.timeline.start()
+    
     # Add Notebook
     def add_notebook(self, notebook, name = None):
         label = gtk.Label(name)
index 4ee1d22..1ca88f4 100644 (file)
@@ -82,6 +82,8 @@ class timeline_thread(threading.Thread):
                 print >>sys.stderr, "[Error] TwitterAPI ",
                 print >>sys.stderr, time.strftime("%H:%M:%S"), e
             
+            self.tlrefreshEvent()
+            
             # If Timeline update
             if last:
                 # Append status cache