def __build_reply_item(self, menu, info): if not info['own']: re_one = "@%s " % info['user'] re_all, mentions = util.get_reply_all(re_one, self.mainwin.me, info['msg']) reply = gtk.MenuItem(_('Reply')) reply.connect('activate', self.__update_box, re_one, info['uid'], info['user']) menu.append(reply) if mentions > 0: reply_all = gtk.MenuItem(_('Reply All')) reply_all.connect('activate', self.__update_box, re_all, info['uid'], info['user']) menu.append(reply_all) return menu
def __popup_menu(self, widget, event): model, row = widget.get_selection().get_selected() if (row is None): return False if (event.button == 3): user = model.get_value(row, 1) msg = model.get_value(row, 5) id = model.get_value(row, 6) in_reply_to_id = model.get_value(row, 8) menu = gtk.Menu() rtn = self.mainwin.request_popup_info(id, user) if rtn.has_key('busy'): busymenu = gtk.MenuItem(rtn['busy']) busymenu.set_sensitive(False) menu.append(busymenu) else: re = "@%s " % user rt = "RT @%s %s" % (user, msg) dm = "D @%s " % user re_all, mentions = util.get_reply_all(re, self.mainwin.me, msg) reply = gtk.MenuItem(_('Reply')) reply_all = gtk.MenuItem(_('Reply All')) retweet_old = gtk.MenuItem(_('Retweet (Old)')) retweet = gtk.MenuItem(_('Retweet')) save = gtk.MenuItem(_('+ Fav')) unsave = gtk.MenuItem(_('- Fav')) delete = gtk.MenuItem(_('Delete')) direct = gtk.MenuItem(_('DM')) follow = gtk.MenuItem(_('Follow')) unfollow = gtk.MenuItem(_('Unfollow')) loading = gtk.MenuItem(_('Loading friends...')) loading.set_sensitive(False) usermenu = gtk.MenuItem('@' + user) inreplymenu = gtk.MenuItem(_('In reply to')) mutemenu = gtk.MenuItem(_('Mute')) open = self.__build_open_menu(user, msg) if not rtn['own']: menu.append(reply) if mentions > 0: menu.append(reply_all) menu.append(retweet_old) menu.append(retweet) menu.append(direct) if not rtn.has_key('friend'): item = loading elif rtn['friend'] is True: item = unfollow elif rtn['friend'] is False: item = follow else: menu.append(delete) if rtn['fav']: menu.append(unsave) else: menu.append(save) if open: menu.append(open) if in_reply_to_id: menu.append(inreplymenu) menu.append(gtk.SeparatorMenuItem()) menu.append(usermenu) if not rtn['own']: if item != loading and item != follow: menu.append(mutemenu) menu.append(item) user_profile = '/'.join(['http://www.twitter.com', user]) usermenu.connect('activate', self.__open_url, user_profile) reply.connect('activate', self.__show_update_box, re, id, user) reply_all.connect('activate', self.__show_update_box, re_all, id, user) retweet_old.connect('activate', self.__show_update_box, rt) retweet.connect('activate', self.__retweet, id) direct.connect('activate', self.__show_update_box, dm) save.connect('activate', self.__fav, True, id) unsave.connect('activate', self.__fav, False, id) delete.connect('activate', self.__delete, id) follow.connect('activate', self.__follow, True, user) unfollow.connect('activate', self.__follow, False, user) inreplymenu.connect('activate', self.__in_reply_to, user, in_reply_to_id) mutemenu.connect('activate', self.__mute, user) menu.show_all() menu.popup(None, None, None, event.button , event.time)