Turned user names into clickable buttons that summon up a pane for that user

This commit is contained in:
Anna
2010-04-15 22:37:13 -04:00
parent d4fc2faf78
commit 522edc30cb
2 changed files with 40 additions and 16 deletions

View File

@ -53,6 +53,7 @@ class TweetPane(gtk.ScrolledWindow):
self.tweets[i].connect('reply', self.on_tweet_reply)
self.tweets[i].connect('retweet', self.on_retweet)
self.tweets[i].connect('in-reply-to', self.on_tweet_reply_to)
self.tweets[i].connect('show-user', self.on_show_user)
viewport.add(tweet_box)
@ -144,6 +145,10 @@ class TweetPane(gtk.ScrolledWindow):
self.emit('tweet-in-reply-to', data)
def on_show_user(self, widget, data):
self.emit('show-user', data)
def get_following(self):
return self.following
@ -193,6 +198,9 @@ gobject.signal_new("tweet-retweet", TweetPane,
gobject.signal_new("tweet-in-reply-to", TweetPane,
gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,))
gobject.signal_new("show-user", TweetPane,
gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,))
@ -217,7 +225,7 @@ class TweetBox(gtk.VBox):
def init_widgets(self):
## Build the header
self.header = gtk.Label()
self.header = gtk.Button()
label_eb = gtk.EventBox()
label_eb.add(self.header)
self.pack_start(label_eb)
@ -225,9 +233,11 @@ class TweetBox(gtk.VBox):
# Set the header's properties
label_eb.modify_text(gtk.STATE_NORMAL,gtk.gdk.color_parse("#ffffff"))
label_eb.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse("#8888ff"))
self.header.set_relief(gtk.RELIEF_NONE)
self.header.set_alignment(0.0, 0.0)
self.header.set_selectable(True)
self.header.set_line_wrap(True)
# Handle the header being clicked
self.header.connect('clicked', self.on_user_clicked)
## Build the text
self.text = gtk.Label()
@ -289,7 +299,7 @@ class TweetBox(gtk.VBox):
timestring = timestamp.astimezone(timezone).strftime(time_format)
# Set the header
self.header.set_markup(user.name + " (" + user.screen_name + ") " + timestring)
self.header.set_label(user.name + " (" + user.screen_name + ") " + timestring)
# and the text
new_text = status.text
@ -305,7 +315,7 @@ class TweetBox(gtk.VBox):
def clear_status(self):
self.header.set_markup('')
self.header.set_label('')
self.text.set_markup('')
self.screen_name = None
self.id = None
@ -333,6 +343,10 @@ class TweetBox(gtk.VBox):
self.emit('in-reply-to', {'id': self.in_reply_to_id, 'name': self.in_reply_to_screen_name})
def on_user_clicked(self, widget):
self.emit('show-user', self.screen_name)
def on_mouse_clicked(self, widget, event):
if event.button == 1:
self.set_read(True)
@ -358,6 +372,9 @@ gobject.signal_new("retweet", TweetBox,
gobject.signal_new("in-reply-to", TweetBox,
gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,))
gobject.signal_new("show-user", TweetBox,
gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,))