diff --git a/default.glade b/default.glade
index 5d6a757..c686b74 100644
--- a/default.glade
+++ b/default.glade
@@ -228,7 +228,20 @@
-
+
+ True
+ True
+
+ True
+ GTK_RELIEF_HALF
+ True
+
+
+
+ 0
+ False
+ False
+
diff --git a/mytwitter.py b/mytwitter.py
index 44c2665..e2fa6d3 100755
--- a/mytwitter.py
+++ b/mytwitter.py
@@ -48,6 +48,7 @@ class MyTwitter():
self.update_count = self.widget_tree.get_widget('update_count')
self.status_bar = self.widget_tree.get_widget('status_bar')
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')
@@ -184,10 +185,9 @@ class MyTwitter():
following = False
if re.match('user:', name):
is_user = True
- relationship = self.api.ShowFriendships(source_screen_name=self.username, target_screen_name=re.sub('user: ', '', name))
- following = relationship.target.following
+ following = self.check_following(name)
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.connect('tweet-reply', self.on_reply)
new_pane.connect('tweet-retweet', self.on_retweet)
@@ -210,6 +210,7 @@ class MyTwitter():
def on_tab_change(self, event, page, page_num):
pane = self.tweet_notebook.get_nth_page(page_num)
pane.set_tweets_read()
+ self.update_follow_button(pane)
def on_search(self, event):
@@ -228,6 +229,40 @@ class MyTwitter():
self.status_bar.pop(self.context_id)
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
diff --git a/twitterwidgets.py b/twitterwidgets.py
index 3984a49..381d663 100644
--- a/twitterwidgets.py
+++ b/twitterwidgets.py
@@ -145,15 +145,15 @@ class TweetPane(gtk.ScrolledWindow):
def get_following(self):
- return following
+ return self.following
def set_following(self, following):
self.following = following
- def is_user(self):
- return is_user
+ def get_is_user(self):
+ return self.is_user
# To keep things simple elsewhere and improve code reuse
# we'll build a list of home-cooked Status objects out of results.