OSDN Git Service

modified for new pygtk, python-twoauth
authorHirotaka Kawata <hktechno@hotmail.com>
Sat, 12 Jun 2010 20:14:50 +0000 (05:14 +0900)
committerHirotaka Kawata <hktechno@hotmail.com>
Sat, 12 Jun 2010 20:14:50 +0000 (05:14 +0900)
gwit
main.py
objects.py [deleted file]
timeline.py
twitterapi.py

diff --git a/gwit b/gwit
index bf8554b..9289ca6 100755 (executable)
--- a/gwit
+++ b/gwit
@@ -68,7 +68,7 @@ if __name__ == "__main__":
    # Read settings
    user = settings["DEFAULT"]["default_user"]
    keys = (settings[user]["ckey"], settings[user]["csecret"], 
-           settings[user]["atoken"], settings[user]["asecret"])
+           settings[user]["atoken"], settings[user]["asecret"], user)
    footer = settings[user]["footer"]
    
    # Run Main()
diff --git a/main.py b/main.py
index 70e1e8d..5b74f77 100644 (file)
--- a/main.py
+++ b/main.py
@@ -11,7 +11,6 @@ import threading
 import random
 import time
 
-from objects import GtkObjects
 from timeline import timeline
 from twitterapi import twitterapi
 from iconstore import IconStore
@@ -34,16 +33,12 @@ class Main:
         
         # GtkBuilder instance
         builder = gtk.Builder()
+        self.builder = builder
         # Glade file input
         builder.add_from_file(glade)
         # Connect signals
         builder.connect_signals(self)
         
-        # GtkObjects instance
-        # usage: self.obj.`objectname`
-        # ex) self.obj.button1
-        self.obj = GtkObjects(builder.get_objects())
-        
         # Set Default Mention Flag
         self.re = 0
         self.iconmode = iconmode
@@ -64,12 +59,12 @@ class Main:
         try:
             alloc = get_config("DEFAULT", "allocation")
             alloc = eval(alloc)
-            self.obj.window1.resize(alloc.width, alloc.height)
+            window = self.builder.get_object("window1")
+            window.resize(alloc.width, alloc.height)
+            window.show_all()
         except:
             print >>sys.stderr, "[Warning] Allocation not defined"        
         
-        self.obj.window1.show_all()
-        
         # Start gtk main loop
         gtk.main()
         gtk.gdk.threads_leave()
@@ -82,9 +77,11 @@ class Main:
         
         # Set statusbar (Show API Remaining)
         self.label_apilimit = gtk.Label()
-        self.obj.statusbar1.pack_start(
+        
+        sbar = self.builder.get_object("statusbar1")
+        sbar.pack_start(
             self.label_apilimit, expand = False, padding = 10)
-        self.obj.statusbar1.show_all()
+        sbar.show_all()
         
         # Set Status Views
         for i in (("Home", "home_timeline", 30),
@@ -101,8 +98,9 @@ class Main:
         self.icons.add_store(users.store, 1)
         users.set_userdict(self.twitter.users, self.icons)
         self.new_tab(users, "Users")
-        
-        self.obj.notebook1.set_current_page(0)
+
+        notebook = self.builder.get_object("notebook1")        
+        notebook.set_current_page(0)
         gtk.gdk.threads_leave()
     
     # Window close event
@@ -123,10 +121,13 @@ class Main:
         tl.timeline.on_timeline_refresh = self.on_timeline_refresh
         tl.start_timeline()
         
+        notebook = self.builder.get_object("notebook1")
+        menu = self.builder.get_object("menu_timeline")
+
         # Add Notebook (Tab view)
-        tl.add_notebook(self.obj.notebook1, name)
+        tl.add_notebook(notebook, name)
         # Add Popup Menu
-        tl.add_popup(self.obj.menu_timeline)
+        tl.add_popup(menu)
         
         # Event handler and extern function set
         tl.new_timeline = self.new_timeline
@@ -139,30 +140,35 @@ class Main:
             "row-activated",
             self.on_treeview_row_activated)
         
-        n = self.obj.notebook1.get_n_pages()
-        self.obj.notebook1.set_current_page(n - 1)
+        n = notebook.get_n_pages()
+        notebook.set_current_page(n - 1)
 
     def new_tab(self, widget, label):
-        self.obj.notebook1.append_page(widget, gtk.Label(label))
-        self.obj.notebook1.show_all()
+        notebook = self.builder.get_object("notebook1")
+        notebook.append_page(widget, gtk.Label(label))
+        notebook.show_all()
         self.timelines.append(None)
     
     def get_selected_status(self):
-        n = self.obj.notebook1.get_current_page()
+        notebook = self.builder.get_object("notebook1")
+        n = notebook.get_current_page()
         return self.timelines[n].get_selected_status()
     
     def get_current_tab(self):
-        return self.obj.notebook1.get_current_page()
+        notebook = self.builder.get_object("notebook1")
+        return notebook.get_current_page()
 
     # Get text
     def get_textview(self):
-        buf = self.obj.textview1.get_buffer()
+        textview = self.builder.get_object("textview1")
+        buf = textview.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()
+        textview = self.builder.get_object("textview1")
+        buf = textview.get_buffer()
         buf.set_text("")
     
     # Reply to selected status
@@ -170,9 +176,11 @@ class Main:
         status = self.get_selected_status()
         self.re = status.id
         name = status.user.screen_name
-        buf = self.obj.textview1.get_buffer()
+        
+        textview = self.builder.get_object("textview1")
+        buf = textview.get_buffer()
         buf.set_text("@%s " % (name))
-        self.obj.textview1.grab_focus()
+        textview.grab_focus()
     
     
     ########################################
@@ -181,8 +189,8 @@ class Main:
     # status added event
     def on_status_added(self, i):
         status = self.twitter.statuses[i]
-        myname = self.twitter.users[self.twitter.myid]
-        if status.in_reply_to_user_id == self.twitter.myid or \
+        myname = self.twitter.myname
+        if status.in_reply_to_screen_name == myname or \
                 status.text.find("@%s" % myname) >= 0:
             self.timelines[1].timeline.add(set((status.id,)))
     
@@ -196,8 +204,9 @@ class Main:
 
     # 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))
+        sbar = self.builder.get_object("statusbar1")
+        sbar.pop(0)
+        sbar.push(0, self.twtools.get_footer(status))
     
     ########################################
     # Gtk Signal Events
@@ -241,10 +250,11 @@ class Main:
         self.re = status.id
         name = status.user.screen_name
         text = status.text
-        buf = self.obj.textview1.get_buffer()
+        textview = self.builder.get_object("textview1")
+        buf = textview.get_buffer()
         buf.set_text("RT @%s: %s" % (name, text))
         self.re = None
-        self.obj.textview1.grab_focus()    
+        textview.grab_focus()    
     
     # Added user timeline tab
     def on_menuitem_usertl_activate(self, menuitem):
diff --git a/objects.py b/objects.py
deleted file mode 100644 (file)
index f466e5e..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env python
-#-*- coding: utf-8 -*-
-
-class GtkObjects:
-    def __init__(self, objs):
-        for i in objs:
-            try:
-                setattr(self, i.name, i)
-            except:
-                try:
-                    setattr(self, i.get_name(), i)
-                except:
-                    pass
index 80097fa..39060ef 100644 (file)
@@ -129,7 +129,8 @@ class timeline:
     
     # Color status
     def color_status(self, status = None):
-        me = self.twitter.users[self.twitter.myid]
+        myname = self.twitter.myname
+        myid = self.twitter.me.id if self.twitter.me != None else None
         
         # if not set target status
         if status == None:
@@ -143,11 +144,11 @@ class timeline:
             s = self.twitter.statuses[id]
             u = s.user
             
-            if u.id == me.id:
+            if u.id == myid:
                 # My status (Blue)
                 bg = "#CCCCFF"
-            elif s.in_reply_to_user_id == me.id or \
-                    s.text.find("@%s" % me.screen_name) != -1:
+            elif s.in_reply_to_user_id == myid or \
+                    s.text.find("@%s" % myname) != -1:
                 # Reply to me (Red)
                 bg = "#FFCCCC"
             
@@ -171,7 +172,7 @@ class timeline:
         vadj = self.scrwin.get_vadjustment()
         self.vadj_lock = True if vadj.value != 0.0 else False
         
-        myname = self.twitter.users[self.twitter.myid].screen_name
+        myname = self.twitter.myname
         
         # Insert New Status
         for i in new_ids:
index e7d5ecb..a323bab 100644 (file)
@@ -10,9 +10,11 @@ import twoauth
 
 # Twitter API Class
 class twitterapi():
-    def __init__(self, keys, maxn):
+    def __init__(self, keys, maxn = 20):
         # Generate API Library instance
         self.api = twoauth.api(*keys)
+        self.myname = self.api.user["screen_name"]
+        self.me = None
         self.threads = list()
         
         # User, Status Buffer
@@ -20,10 +22,9 @@ class twitterapi():
         self.statuses = dict()
         
         self.maxn = maxn
-        #self.myid = self.api.user.id
-        #self.users[self.myid] = self.api.user
+        self.my_name = keys[-1]
     
-    def create_timeline(self, func, interval, args, kwargs):
+    def create_timeline(self, func, interval, args = (), kwargs = {}):
         # Add New Timeline Thread
         th = timeline_thread(getattr(self.api, func),
                              interval, self.maxn, args, kwargs)
@@ -43,6 +44,9 @@ class twitterapi():
     def add_user(self, user):
         self.users[user.id] = user
 
+        if user.screen_name == self.myname:
+            self.me = user
+    
     def get_user_from_screen_name(self, screen_name):
         # search user from screen_name
         for user in self.users.itervalues():
@@ -51,6 +55,9 @@ class twitterapi():
         
         return None
 
+    def get_statuses(self, ids):
+        return tuple(self.statuses[i] for i in sorted(tuple(ids), reverse=True))
+
 # Timeline Thread
 class timeline_thread(threading.Thread):
     def __init__(self, func, interval, maxn, args, kwargs):
@@ -90,8 +97,7 @@ class timeline_thread(threading.Thread):
                 last = self.func(*self.args, **self.kwargs)
             except Exception, e:
                 last = None
-                print >>sys.stderr, "[Error] TwitterAPI ",
-                print >>sys.stderr, time.strftime("%H:%M:%S"), e
+                print "[Error] TwitterAPI %s %s" % (e, self.func)
             
             self.on_timeline_refresh()
             
@@ -111,8 +117,8 @@ class timeline_thread(threading.Thread):
                 self.kwargs["since_id"] = self.lastid
             
             # debug print
-            print "[debug] reload", time.strftime("%H:%M:%S"),
-            print self.func.func_name, self.args, self.kwargs
+#            print "[debug] reload", time.strftime("%H:%M:%S"),
+#            print self.func.func_name, self.args, self.kwargs
             
             # Reload lock
             self.lock.clear()
@@ -136,4 +142,5 @@ class timeline_thread(threading.Thread):
         
         self.addlock.unlock()
 
-    def on_timelinel_refresh(self, *args, **kwargs): pass
+    def on_timeline_refresh(self): pass
+    def reloadEventHandler(self): pass