import random
import time
-from objects import GtkObjects
from timeline import timeline
from twitterapi import twitterapi
from iconstore import IconStore
# 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
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()
# 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),
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
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
"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
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()
########################################
# 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,)))
# 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
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):
# 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
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)
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():
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):
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()
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()
self.addlock.unlock()
- def on_timelinel_refresh(self, *args, **kwargs): pass
+ def on_timeline_refresh(self): pass
+ def reloadEventHandler(self): pass