Added right-click labels to the pane tabs, and a follow/unfollow button. It still seems to work inconsistently.
This commit is contained in:
parent
d572d8b8e9
commit
5f75520380
|
@ -228,7 +228,20 @@
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
<child>
|
<child>
|
||||||
<placeholder/>
|
<widget class="GtkButton" id="following_button">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="label" translatable="yes"></property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="relief">GTK_RELIEF_HALF</property>
|
||||||
|
<property name="focus_on_click">True</property>
|
||||||
|
<signal name="clicked" handler="on_following_button_clicked" last_modification_time="Wed, 14 Apr 2010 16:55:44 GMT"/>
|
||||||
|
</widget>
|
||||||
|
<packing>
|
||||||
|
<property name="padding">0</property>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
<child>
|
<child>
|
||||||
|
|
41
mytwitter.py
41
mytwitter.py
|
@ -48,6 +48,7 @@ class MyTwitter():
|
||||||
self.update_count = self.widget_tree.get_widget('update_count')
|
self.update_count = self.widget_tree.get_widget('update_count')
|
||||||
self.status_bar = self.widget_tree.get_widget('status_bar')
|
self.status_bar = self.widget_tree.get_widget('status_bar')
|
||||||
self.search_entry = self.widget_tree.get_widget('search_entry')
|
self.search_entry = self.widget_tree.get_widget('search_entry')
|
||||||
|
self.following_button = self.widget_tree.get_widget('following_button')
|
||||||
|
|
||||||
self.context_id = self.status_bar.get_context_id('message')
|
self.context_id = self.status_bar.get_context_id('message')
|
||||||
|
|
||||||
|
@ -184,10 +185,9 @@ class MyTwitter():
|
||||||
following = False
|
following = False
|
||||||
if re.match('user:', name):
|
if re.match('user:', name):
|
||||||
is_user = True
|
is_user = True
|
||||||
relationship = self.api.ShowFriendships(source_screen_name=self.username, target_screen_name=re.sub('user: ', '', name))
|
following = self.check_following(name)
|
||||||
following = relationship.target.following
|
|
||||||
new_pane = TweetPane(name, num_entries=self.num_entries, single_tweet=single_tweet, is_user=is_user, following=following)
|
new_pane = TweetPane(name, num_entries=self.num_entries, single_tweet=single_tweet, is_user=is_user, following=following)
|
||||||
self.tweet_notebook.append_page(new_pane, new_pane.get_tab_label())
|
self.tweet_notebook.append_page_menu(new_pane, new_pane.get_tab_label(), gtk.Label(name))
|
||||||
new_pane.get_tab_label().connect('close-clicked', self.remove_view, name)
|
new_pane.get_tab_label().connect('close-clicked', self.remove_view, name)
|
||||||
new_pane.connect('tweet-reply', self.on_reply)
|
new_pane.connect('tweet-reply', self.on_reply)
|
||||||
new_pane.connect('tweet-retweet', self.on_retweet)
|
new_pane.connect('tweet-retweet', self.on_retweet)
|
||||||
|
@ -210,6 +210,7 @@ class MyTwitter():
|
||||||
def on_tab_change(self, event, page, page_num):
|
def on_tab_change(self, event, page, page_num):
|
||||||
pane = self.tweet_notebook.get_nth_page(page_num)
|
pane = self.tweet_notebook.get_nth_page(page_num)
|
||||||
pane.set_tweets_read()
|
pane.set_tweets_read()
|
||||||
|
self.update_follow_button(pane)
|
||||||
|
|
||||||
|
|
||||||
def on_search(self, event):
|
def on_search(self, event):
|
||||||
|
@ -228,6 +229,40 @@ class MyTwitter():
|
||||||
self.status_bar.pop(self.context_id)
|
self.status_bar.pop(self.context_id)
|
||||||
self.status_bar.push(self.context_id, text)
|
self.status_bar.push(self.context_id, text)
|
||||||
|
|
||||||
|
|
||||||
|
def on_following_button_clicked(self, event):
|
||||||
|
current_pane = self.tweet_notebook.get_nth_page(self.tweet_notebook.get_current_page())
|
||||||
|
user_name = re.sub('^user: ', '', current_pane.get_list_name())
|
||||||
|
if current_pane.get_following():
|
||||||
|
self.api.DestroyFriendship(user_name)
|
||||||
|
current_pane.set_following(self.check_following(user_name))
|
||||||
|
else:
|
||||||
|
self.api.CreateFriendship(user_name)
|
||||||
|
current_pane.set_following(self.check_following(user_name))
|
||||||
|
|
||||||
|
self.update_follow_button(current_pane)
|
||||||
|
|
||||||
|
|
||||||
|
# Name is the name of a pane, with the 'user: ' in place
|
||||||
|
def check_following(self, name):
|
||||||
|
print 'debug check_following(' + name + ')'
|
||||||
|
screen_name = re.sub('user: ', '', name)
|
||||||
|
relationship = self.api.ShowFriendships(target_screen_name=screen_name)
|
||||||
|
return relationship.source.following
|
||||||
|
|
||||||
|
|
||||||
|
def update_follow_button(self, pane):
|
||||||
|
if not pane.get_is_user():
|
||||||
|
self.following_button.set_label('')
|
||||||
|
self.following_button.hide()
|
||||||
|
elif pane.get_following():
|
||||||
|
self.following_button.set_label('Unfollow')
|
||||||
|
self.following_button.show()
|
||||||
|
else:
|
||||||
|
self.following_button.set_label('Follow')
|
||||||
|
self.following_button.show()
|
||||||
|
|
||||||
|
|
||||||
### end class MyTwitter
|
### end class MyTwitter
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -145,15 +145,15 @@ class TweetPane(gtk.ScrolledWindow):
|
||||||
|
|
||||||
|
|
||||||
def get_following(self):
|
def get_following(self):
|
||||||
return following
|
return self.following
|
||||||
|
|
||||||
|
|
||||||
def set_following(self, following):
|
def set_following(self, following):
|
||||||
self.following = following
|
self.following = following
|
||||||
|
|
||||||
|
|
||||||
def is_user(self):
|
def get_is_user(self):
|
||||||
return is_user
|
return self.is_user
|
||||||
|
|
||||||
# To keep things simple elsewhere and improve code reuse
|
# To keep things simple elsewhere and improve code reuse
|
||||||
# we'll build a list of home-cooked Status objects out of results.
|
# we'll build a list of home-cooked Status objects out of results.
|
||||||
|
|
Reference in New Issue
Block a user