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(
# 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()
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)
# 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(
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]
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,
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))
# 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()
# 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):
# 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()
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()
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)
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
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 & -> &
- 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&%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):
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
background))
gtk.gdk.threads_leave()
- self.add_event(i)
+ self.on_status_added(i)
- def add_event(self, i):
- pass
+ # Replace & -> &
+ 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&%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
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,))
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:
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:
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
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)