def TabPopup(self, user): popup = PopupMenu(self.frame) popup.setup(("#" + _("Send _message"), popup.OnSendMessage), ("#" + _("Show IP a_ddress"), popup.OnShowIPaddress), ("#" + _("Get user i_nfo"), popup.OnGetUserInfo), ("#" + _("Brow_se files"), popup.OnBrowseUser), ("#" + _("Gi_ve privileges"), popup.OnGivePrivileges), ("#" + _("Client Version"), popup.OnVersion), ("", None), ("$" + _("Add user to list"), popup.OnAddToList), ("$" + _("Ban this user"), popup.OnBanUser), ("$" + _("Ignore this user"), popup.OnIgnoreUser), ("", None), ("#" + _("Detach this tab"), self.users[user].Detach), ("#" + _("Close this tab"), self.users[user].OnClose)) popup.set_user(user) items = popup.get_children() items[7].set_active(user in [ i[0] for i in self.frame.np.config.sections["server"]["userlist"] ]) items[8].set_active( user in self.frame.np.config.sections["server"]["banlist"]) items[9].set_active( user in self.frame.np.config.sections["server"]["ignorelist"]) return popup
def TabPopup(self, user): popup = PopupMenu(self.frame) popup.setup( ("#" + _("Send _message"), popup.OnSendMessage, gtk.STOCK_EDIT), ("#" + _("Show IP a_ddress"), popup.OnShowIPaddress, gtk.STOCK_NETWORK), ("#" + _("Get user i_nfo"), popup.OnGetUserInfo, gtk.STOCK_DIALOG_INFO), ("#" + _("Brow_se files"), popup.OnBrowseUser, gtk.STOCK_HARDDISK), ("#" + _("Gi_ve privileges"), popup.OnGivePrivileges, gtk.STOCK_JUMP_TO), ("#" + _("Client Version"), popup.OnVersion, gtk.STOCK_ABOUT), ("", None), ("$" + _("Add user to list"), popup.OnAddToList), ("$" + _("Ban this user"), popup.OnBanUser), ("$" + _("Ignore this user"), popup.OnIgnoreUser), ("", None), ("#" + _("Detach this tab"), self.users[user].Detach, gtk.STOCK_REDO), ("#" + _("Close this tab"), self.users[user].OnClose, gtk.STOCK_CLOSE), ) popup.set_user(user) items = popup.get_children() items[7].set_active(user in [ i[0] for i in self.frame.np.config.sections["server"]["userlist"] ]) items[8].set_active( user in self.frame.np.config.sections["server"]["banlist"]) items[9].set_active( user in self.frame.np.config.sections["server"]["ignorelist"]) return popup
def OnPopupMenuUsers(self, widget): self.selected_transfers = [] self.selected_users = [] self.widget.get_selection().selected_foreach( self.SelectedTransfersCallback) self.popup_menu_users.clear() if len(self.selected_users) > 0: items = [] self.selected_users.sort(key=str.lower) for user in self.selected_users: popup = PopupMenu(self.frame) popup.setup( ("#" + _("Send _message"), popup.OnSendMessage), ("#" + _("Show IP a_ddress"), popup.OnShowIPaddress), ("#" + _("Get user i_nfo"), popup.OnGetUserInfo), ("#" + _("Brow_se files"), popup.OnBrowseUser), ("#" + _("Gi_ve privileges"), popup.OnGivePrivileges), ("", None), ("$" + _("_Add user to list"), popup.OnAddToList), ("$" + _("_Ban this user"), popup.OnBanUser), ("$" + _("_Ignore this user"), popup.OnIgnoreUser), ("#" + _("Select User's Transfers"), self.OnSelectUserTransfer)) popup.set_user(user) items.append((1, user, popup, self.OnPopupMenuUser, popup)) self.popup_menu_users.setup(*items) return True
def OnPopupMenuUsers(self, widget): self.select_results() #(user, fn, size, bitrate, length) self.popup_menu_users.clear() if len(self.selected_users) > 0: items = [] self.selected_users.sort(key=str.lower) for user in self.selected_users: popup = PopupMenu(self.frame) popup.setup( ("#" + _("Send _message"), popup.OnSendMessage, gtk.STOCK_EDIT), ("#" + _("Show IP a_ddress"), popup.OnShowIPaddress, gtk.STOCK_NETWORK), ("#" + _("Get user i_nfo"), popup.OnGetUserInfo, gtk.STOCK_DIALOG_INFO), ("#" + _("Brow_se files"), popup.OnBrowseUser, gtk.STOCK_HARDDISK), ("#" + _("Gi_ve privileges"), popup.OnGivePrivileges, gtk.STOCK_JUMP_TO), ("", None), ("$" + _("_Add user to list"), popup.OnAddToList), ("$" + _("_Ban this user"), popup.OnBanUser), ("$" + _("_Ignore this user"), popup.OnIgnoreUser), ("#" + _("Select User's Results"), self.OnSelectUserResults, gtk.STOCK_INDEX), ) popup.set_user(user) items.append((1, user, popup, self.OnPopupMenuUser, popup)) self.popup_menu_users.setup(*items) return True
def TabPopup(self, id): popup = PopupMenu(self.frame) popup.setup( ("#" + _("Detach this tab"), self.searches[id][2].Detach, gtk.STOCK_REDO), ("#" + _("Close this tab"), self.searches[id][2].OnClose, gtk.STOCK_CLOSE), ) items = popup.get_children() return popup
def TabPopup(self, user): if user not in self.users: return popup = PopupMenu(self.frame) popup.setup( ("#" + _("Show IP a_ddress"), popup.OnShowIPaddress), ("#" + _("Get user i_nfo"), popup.OnGetUserInfo), ("#" + _("Brow_se files"), popup.OnBrowseUser), ("#" + _("Gi_ve privileges"), popup.OnGivePrivileges), ("#" + _("Client Version"), popup.OnVersion), ("", None), ("$" + _("Add user to list"), popup.OnAddToList), ("$" + _("Ban this user"), popup.OnBanUser), ("$" + _("Ignore this user"), popup.OnIgnoreUser), ("$" + _("B_lock this user's IP Address"), popup.OnBlockUser), ("$" + _("Ignore this user's IP Address"), popup.OnIgnoreIP), ("", None), ("#" + _("Detach this tab"), self.users[user].Detach), ("#" + _("Close this tab"), self.users[user].OnClose)) popup.set_user(user) me = (popup.user is None or popup.user == self.frame.np.config.sections["server"]["login"]) items = popup.get_children() items[6].set_active(user in [ i[0] for i in self.frame.np.config.sections["server"]["userlist"] ]) items[7].set_active( user in self.frame.np.config.sections["server"]["banlist"]) items[8].set_active( user in self.frame.np.config.sections["server"]["ignorelist"]) items[9].set_active(self.frame.UserIpIsBlocked(user)) items[9].set_sensitive(not me) items[10].set_active(self.frame.UserIpIsIgnored(user)) items[10].set_sensitive(not me) return popup
def __init__(self, frame): TransferList.__init__(self, frame, frame.DownloadList, type='downloads') self.myvbox = self.frame.downloadsvbox self.frame.DownloadList.set_property("rules-hint", True) self.accel_group = gtk.AccelGroup() self.popup_menu2 = popup2 = PopupMenu(frame) popup2.setup( ("#" + _("Clear finished/aborted"), self.OnClearFinishedAborted), ("#" + _("Clear finished"), self.OnClearFinished), ("#" + _("Clear aborted"), self.OnClearAborted), ("#" + _("Clear paused"), self.OnClearPaused), ("#" + _("Clear filtered"), self.OnClearFiltered), ("#" + _("Clear queued"), self.OnClearQueued)) self.popup_menu_users = PopupMenu(frame) self.popup_menu = popup = PopupMenu(frame) popup.setup( ("#" + _("Get place in _queue"), self.OnGetPlaceInQueue), ("", None), ("#" + _("Copy _URL"), self.OnCopyURL), ("#" + _("Copy folder URL"), self.OnCopyDirURL), ("#" + _("Send to _player"), self.OnPlayFiles), ("#" + _("View Metadata of file(s)"), self.OnDownloadMeta), ("#" + _("Open Directory"), self.OnOpenDirectory), ("#" + _("Search"), self.OnFileSearch), (1, _("User(s)"), self.popup_menu_users, self.OnPopupMenuUsers), ("", None), ("#" + _("_Retry"), self.OnRetryTransfer), ("", None), ("#" + _("Abor_t"), self.OnAbortTransfer), ("#" + _("Abort & Delete"), self.OnAbortRemoveTransfer), ("#" + _("_Clear"), self.OnClearTransfer), ("", None), (1, _("Clear Groups"), self.popup_menu2, None)) frame.DownloadList.connect("button_press_event", self.OnPopupMenu, "mouse") frame.DownloadList.connect("key-press-event", self.on_key_press_event) cols = frame.DownloadList.get_columns() for i in range(9): parent = cols[i].get_widget().get_ancestor(gtk.Button) if parent: parent.connect("button_press_event", PressHeader) # Read Show / Hide column settings from last session cols[i].set_visible(self.frame.np.config.sections["columns"] ["downloads_columns"][i]) frame.clearFinishedAbortedButton.connect("clicked", self.OnClearFinishedAborted) frame.clearQueuedButton.connect("clicked", self.OnTryClearQueued) frame.retryTransferButton.connect("clicked", self.OnRetryTransfer) frame.abortTransferButton.connect("clicked", self.OnSelectAbortTransfer) frame.deleteTransferButton.connect("clicked", self.OnAbortRemoveTransfer) frame.banDownloadButton.connect("clicked", self.OnBan) frame.DownloadList.expand_all() self.frame.ToggleAutoRetry.set_active( self.frame.np.config.sections["transfers"]["autoretry_downloads"]) frame.ToggleAutoRetry.connect("toggled", self.OnToggleAutoRetry) self.frame.ToggleTreeDownloads.set_active( self.frame.np.config.sections["transfers"]["groupdownloads"]) frame.ToggleTreeDownloads.connect("toggled", self.OnToggleTree) self.OnToggleTree(None) self.frame.ExpandDownloads.set_active( self.frame.np.config.sections["transfers"]["downloadsexpanded"]) frame.ExpandDownloads.connect("toggled", self.OnExpandDownloads) self.OnExpandDownloads(None)
def __init__(self, userinfos, user, conn): # Build the window builder = gtk.Builder() builder.set_translation_domain('nicotine') builder.add_from_file( os.path.join(os.path.dirname(os.path.realpath(__file__)), "ui", "userinfo.ui")) self.UserInfoTab = builder.get_object("UserInfoTab") for i in builder.get_objects(): try: self.__dict__[gtk.Buildable.get_name(i)] = i except TypeError: pass self.UserInfoTab.remove(self.Main) self.UserInfoTab.destroy() builder.connect_signals(self) self.userinfos = userinfos self.frame = userinfos.frame self.frame.np.queue.put(slskmessages.UserInterests(user)) self.user = user self.conn = conn self._descr = "" self.image_pixbuf = None self.zoom_factor = 5 self.actual_zoom = 0 self.status = 0 self.hatesStore = gtk.ListStore(gobject.TYPE_STRING) self.Hates.set_model(self.hatesStore) cols = InitialiseColumns(self.Hates, [_("Hates"), 0, "text", self.CellDataFunc]) cols[0].set_sort_column_id(0) self.hatesStore.set_sort_column_id(0, gtk.SORT_ASCENDING) self.likesStore = gtk.ListStore(gobject.TYPE_STRING) self.Likes.set_model(self.likesStore) cols = InitialiseColumns(self.Likes, [_("Likes"), 0, "text", self.CellDataFunc]) cols[0].set_sort_column_id(0) self.likesStore.set_sort_column_id(0, gtk.SORT_ASCENDING) # Encoding Combobox self.Elist = {} self.encoding, m = EncodingsMenu(self.frame.np, "userencoding", user) self.EncodingStore = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING) self.Encoding.set_model(self.EncodingStore) cell = gtk.CellRendererText() self.Encoding.pack_start(cell, True) self.Encoding.add_attribute(cell, 'text', 0) cell2 = gtk.CellRendererText() self.Encoding.pack_start(cell2, False) self.Encoding.add_attribute(cell2, 'text', 1) for item in m: self.Elist[item[1]] = self.EncodingStore.append([item[1], item[0]]) if self.encoding == item[1]: self.Encoding.set_active_iter(self.Elist[self.encoding]) self.tag_local = self.makecolour(buffer, "chatremote") self.ChangeColours() self.InterestsExpander.connect("activate", self.ExpanderStatus) self.InformationExpander.connect("activate", self.ExpanderStatus) self.DescriptionExpander.connect("activate", self.ExpanderStatus) self.likes_popup_menu = popup = PopupMenu(self) popup.setup( ("$" + _("I _like this"), self.frame.OnLikeRecommendation), ("$" + _("I _don't like this"), self.frame.OnDislikeRecommendation), ("", None), ("#" + _("_Search for this item"), self.frame.OnRecommendSearch)) self.Likes.connect("button_press_event", self.OnPopupLikesMenu) self.hates_popup_menu = popup = PopupMenu(self) popup.setup( ("$" + _("I _like this"), self.frame.OnLikeRecommendation), ("$" + _("I _don't like this"), self.frame.OnDislikeRecommendation), ("", None), ("#" + _("_Search for this item"), self.frame.OnRecommendSearch)) self.Hates.connect("button_press_event", self.OnPopupHatesMenu) self.image_menu = popup = PopupMenu(self) popup.setup(("#" + _("Zoom 1:1"), self.MakeZoomNormal), ("#" + _("Zoom In"), self.MakeZoomIn), ("#" + _("Zoom Out"), self.MakeZoomOut), ("", None), ("#" + _("Save Image"), self.OnSavePicture))
def __init__(self, chats, user): self.user = user self.chats = chats self.frame = chats.frame # We should reference the user as soon as possible self.chats.users[self.user] = self builder = gtk.Builder() builder.set_translation_domain('nicotine') builder.add_from_file( os.path.join(os.path.dirname(os.path.realpath(__file__)), "ui", "privatechat.ui")) self.PrivateChatTab = builder.get_object("PrivateChatTab") for i in builder.get_objects(): try: self.__dict__[gtk.Buildable.get_name(i)] = i except TypeError: pass self.PrivateChatTab.remove(self.Main) self.PrivateChatTab.destroy() builder.connect_signals(self) self.autoreplied = 0 self.offlinemessage = 0 self.status = -1 self.clist = [] # Encoding Combobox self.Elist = {} self.encoding, m = EncodingsMenu(self.frame.np, "userencoding", user) self.EncodingStore = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING) self.Encoding.set_model(self.EncodingStore) cell = gtk.CellRendererText() self.Encoding.pack_start(cell, True) self.Encoding.add_attribute(cell, 'text', 0) cell2 = gtk.CellRendererText() self.Encoding.pack_start(cell2, False) self.Encoding.add_attribute(cell2, 'text', 1) for item in m: self.Elist[item[1]] = self.EncodingStore.append([item[1], item[0]]) if self.encoding == item[1]: self.Encoding.set_active_iter(self.Elist[self.encoding]) if self.frame.SEXY and self.frame.np.config.sections["ui"][ "spellcheck"]: import sexy self.hbox5.remove(self.ChatLine) self.ChatLine.destroy() self.ChatLine = sexy.SpellEntry() self.ChatLine.show() self.ChatLine.connect("activate", self.OnEnter) self.ChatLine.connect("key_press_event", self.OnKeyPress) self.hbox5.pack_start(self.ChatLine) self.hbox5.reorder_child(self.ChatLine, 0) completion = gtk.EntryCompletion() self.ChatLine.set_completion(completion) liststore = gtk.ListStore(gobject.TYPE_STRING) completion.set_model(liststore) completion.set_text_column(0) completion.set_match_func(self.frame.EntryCompletionFindMatch, self.ChatLine) completion.connect("match-selected", self.frame.EntryCompletionFoundMatch, self.ChatLine) self.Log.set_active( self.frame.np.config.sections["logging"]["privatechat"]) self.popup_menu_user = popup = PopupMenu(self.frame) popup.setup( ("#" + _("Show IP a_ddress"), popup.OnShowIPaddress), ("#" + _("Get user i_nfo"), popup.OnGetUserInfo), ("#" + _("Brow_se files"), popup.OnBrowseUser), ("#" + _("Gi_ve privileges"), popup.OnGivePrivileges), ("#" + _("Client Version"), popup.OnVersion), ("", None), ("$" + _("Add user to list"), popup.OnAddToList), ("$" + _("Ban this user"), popup.OnBanUser), ("$" + _("Ignore this user"), popup.OnIgnoreUser), ("$" + _("B_lock this user's IP Address"), popup.OnBlockUser), ("$" + _("Ignore this user's IP Address"), popup.OnIgnoreIP)) popup.set_user(user) self.popup_menu = popup = PopupMenu(self.frame) popup.setup(("USERMENU", _("User"), self.popup_menu_user, self.OnPopupMenuUser), ("", None), ("#" + _("Find"), self.OnFindChatLog), ("", None), ("#" + _("Copy"), self.OnCopyChatLog), ("#" + _("Copy All"), self.OnCopyAllChatLog), ("", None), ("#" + _("Clear log"), self.OnClearChatLog), ("", None), ("#" + _("Close"), self.OnClose)) popup.set_user(user) self.ChatScroll.connect("button_press_event", self.OnPopupMenu) self.ChatScroll.connect("key_press_event", self.OnPopupMenu) self.UpdateColours() self.chats.UpdateCompletions() self.ReadPrivateLog()
def __init__(self, frame): # Build the window self.frame = frame builder = gtk.Builder() builder.set_translation_domain('nicotine') builder.add_from_file( os.path.join(os.path.dirname(os.path.realpath(__file__)), "ui", "buddylist.ui")) self.TempWindow = builder.get_object("TempWindow") for i in builder.get_objects(): try: self.__dict__[gtk.Buildable.get_name(i)] = i except TypeError: pass self.TempWindow.remove(self.userlistvbox) self.TempWindow.destroy() builder.connect_signals(self) TARGETS = [('text/plain', 0, 1)] self.UserList.enable_model_drag_source(gtk.gdk.BUTTON1_MASK, TARGETS, gtk.gdk.ACTION_COPY) self.UserList.enable_model_drag_dest(TARGETS, gtk.gdk.ACTION_COPY) self.UserList.connect("drag_data_get", self.buddylist_drag_data_get_data) self.UserList.connect("drag_data_received", self.DragUserToBuddylist) self.userlist = [] self.usersmodel = gtk.ListStore( gtk.gdk.Pixbuf, gtk.gdk.Pixbuf, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_BOOLEAN, gobject.TYPE_BOOLEAN, gobject.TYPE_BOOLEAN, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_INT, gobject.TYPE_INT, gobject.TYPE_INT, gobject.TYPE_INT, gobject.TYPE_STRING) statusiconwidth = self.frame.images["offline"].get_width() + 4 self.cols = cols = InitialiseColumns( self.UserList, [_("Status"), statusiconwidth, "pixbuf"], [_("Country"), 25, "pixbuf"], [_("User"), 120, "text", self.CellDataFunc], [_("Speed"), 0, "number", self.CellDataFunc], [_("Files"), 0, "number", self.CellDataFunc], [_("Trusted"), 0, "toggle"], [_("Notify"), 0, "toggle"], [_("Privileged"), 0, "toggle"], [_("Last seen"), 160, "text", self.CellDataFunc], [_("Comments"), -1, "edit", self.CellDataFunc]) self.col_status, self.col_country, self.col_user, self.col_speed, self.col_files, self.col_trusted, self.col_notify, self.col_privileged, self.col_last, self.col_comments = cols self.col_status.set_sort_column_id(10) self.col_country.set_sort_column_id(14) self.col_user.set_sort_column_id(2) self.col_speed.set_sort_column_id(11) self.col_files.set_sort_column_id(12) self.col_trusted.set_sort_column_id(5) self.col_notify.set_sort_column_id(6) self.col_privileged.set_sort_column_id(7) self.col_last.set_sort_column_id(13) self.col_comments.set_sort_column_id(9) self.col_status.get_widget().hide() self.col_country.get_widget().hide() config = self.frame.np.config.sections for i in range(10): parent = cols[i].get_widget().get_ancestor(gtk.Button) if parent: parent.connect('button_press_event', PressHeader) # Read Show / Hide column settings from last session cols[i].set_visible(config["columns"]["userlist"][i]) if config["columns"]["hideflags"]: cols[1].set_visible(0) config["columns"]["userlist"][1] = 0 for render in self.col_trusted.get_cell_renderers(): render.connect('toggled', self.cell_toggle_callback, self.UserList, 5) for render in self.col_notify.get_cell_renderers(): render.connect('toggled', self.cell_toggle_callback, self.UserList, 6) for render in self.col_privileged.get_cell_renderers(): render.connect('toggled', self.cell_toggle_callback, self.UserList, 7) renderers = self.col_comments.get_cell_renderers() for render in renderers: render.connect('edited', self.cell_edited_callback, self.UserList, 9) self.UserList.set_model(self.usersmodel) self.UserList.set_property("rules-hint", True) self.privileged = [] self.notify = [] self.trusted = [] for user in self.frame.np.config.sections["server"]["userlist"]: notify = user[2] privileged = user[3] if len(user) > 4: trusted = user[4] else: trusted = 0 if len(user) > 5: last_seen = user[5] try: time_from_epoch = time.mktime( time.strptime(last_seen, "%m/%d/%Y %H:%M:%S")) except: if last_seen == '': time_from_epoch = sys.maxint else: time_from_epoch = 0 else: last_seen = _("Never seen") user += [last_seen] time_from_epoch = 0 if len(user) > 6: flag = user[6] else: user += [None] flag = None row = [ self.frame.GetStatusImage(0), self.frame.GetFlagImage(flag), user[0], "0", "0", trusted, notify, privileged, last_seen, user[1], 0, 0, 0, int(time_from_epoch), flag ] if len(user) > 2: if user[2]: self.notify.append(user[0]) if user[3]: self.privileged.append(user[0]) if trusted: self.trusted.append(user[0]) iter = self.usersmodel.append(row) self.userlist.append([user[0], user[1], last_seen, iter, flag]) self.usersmodel.set_sort_column_id(2, gtk.SORT_ASCENDING) self.Popup_Menu_PrivateRooms = PopupMenu(self.frame) self.popup_menu = popup = PopupMenu(frame) popup.setup( ("#" + _("Send _message"), popup.OnSendMessage), ("", None), ("#" + _("Show IP a_ddress"), popup.OnShowIPaddress), ("#" + _("Get user i_nfo"), popup.OnGetUserInfo), ("#" + _("Brow_se files"), popup.OnBrowseUser), ("#" + _("Gi_ve privileges"), popup.OnGivePrivileges), ("$" + _("_Ban this user"), popup.OnBanUser), ("$" + _("_Ignore this user"), popup.OnIgnoreUser), ("", None), ("$" + _("_Online notify"), self.OnNotify), ("$" + _("_Privileged"), self.OnPrivileged), ("$" + _("_Trusted"), self.OnTrusted), ("", None), ("#" + _("Edit _comments"), self.OnEditComments), ("#" + _("_Remove"), self.OnRemoveUser), (1, _("Private rooms"), self.Popup_Menu_PrivateRooms, popup.OnPrivateRooms)) items = self.popup_menu.get_children() self.Menu_SendMessage = items[0] self.Menu_ShowIPaddress = items[2] self.Menu_GetUserInfo = items[3] self.Menu_BrowseUser = items[4] self.Menu_GivePrivileges = items[5] self.Menu_BanUser = items[6] self.Menu_IgnoreUser = items[7] self.Menu_OnNotify = items[9] self.Menu_OnPrivileged = items[10] self.Menu_OnTrusted = items[11] self.Menu_EditComments = items[13] self.Menu_RemoveUser = items[14] self.Menu_PrivateRooms = items[15] self.UserList.connect("button_press_event", self.OnPopupMenu)
def __init__(self, frame): TransferList.__init__(self, frame, frame.UploadList) self.myvbox = self.frame.vboxuploads self.frame.UploadList.set_property("rules-hint", True) self.popup_menu2 = popup2 = PopupMenu(frame) popup2.setup( ("#" + _("Clear finished/erred"), self.OnClearFinishedErred, gtk.STOCK_CLEAR), ("#" + _("Clear finished/aborted"), self.OnClearFinishedAborted, gtk.STOCK_CLEAR), ("#" + _("Clear finished"), self.OnClearFinished, gtk.STOCK_CLEAR), ("#" + _("Clear aborted"), self.OnClearAborted, gtk.STOCK_CLEAR), ("#" + _("Clear queued"), self.OnClearQueued, gtk.STOCK_CLEAR), ("#" + _("Clear failed"), self.OnClearFailed, gtk.STOCK_CLEAR), ) self.popup_menu_users = PopupMenu(frame) self.popup_menu = popup = PopupMenu(frame) popup.setup( ("#" + _("Copy _URL"), self.OnCopyURL, gtk.STOCK_COPY), ("#" + _("Copy folder URL"), self.OnCopyDirURL, gtk.STOCK_COPY), ("#" + _("Send to _player"), self.OnPlayFiles, gtk.STOCK_MEDIA_PLAY), ("#" + _("Open Directory"), self.OnOpenDirectory, gtk.STOCK_OPEN), ("#" + _("Search"), self.OnFileSearch, gtk.STOCK_FIND), (1, _("User(s)"), self.popup_menu_users, self.OnPopupMenuUsers), ("", None), ("#" + _("Abor_t"), self.OnAbortTransfer, gtk.STOCK_CANCEL), ("#" + _("_Clear"), self.OnClearTransfer, gtk.STOCK_CLEAR), ("#" + _("_Retry"), self.OnUploadTransfer, gtk.STOCK_REDO), ("", None), (1, _("Clear Groups"), self.popup_menu2, None), ) frame.UploadList.connect("button_press_event", self.OnPopupMenu, "mouse") frame.UploadList.connect("key-press-event", self.on_key_press_event) cols = frame.UploadList.get_columns() for i in range(9): parent = cols[i].get_widget().get_ancestor(gtk.Button) if parent: parent.connect('button_press_event', PressHeader) # Read Show / Hide column settings from last session cols[i].set_visible( self.frame.np.config.sections["columns"]["uploads"][i]) frame.clearUploadFinishedErredButton.connect("clicked", self.OnClearFinishedErred) frame.clearUploadQueueButton.connect("clicked", self.OnTryClearQueued) frame.abortUploadButton.connect("clicked", self.OnAbortTransfer) frame.abortUserUploadButton.connect("clicked", self.OnAbortUser) frame.banUploadButton.connect("clicked", self.OnBan) frame.UploadList.expand_all() self.frame.ToggleAutoclear.set_active( self.frame.np.config.sections["transfers"]["autoclear_uploads"]) frame.ToggleAutoclear.connect("toggled", self.OnToggleAutoclear) self.frame.ToggleTreeUploads.set_active( self.frame.np.config.sections["transfers"]["groupuploads"]) frame.ToggleTreeUploads.connect("toggled", self.OnToggleTree) self.OnToggleTree(None) self.frame.ExpandUploads.set_active( self.frame.np.config.sections["transfers"]["uploadsexpanded"]) frame.ExpandUploads.connect("toggled", self.OnExpandUploads) self.OnExpandUploads(None)
def __init__(self, userbrowses, user, conn, data_dir): self.data_dir = data_dir # Build the window builder = gtk.Builder() builder.set_translation_domain('nicotine') builder.add_from_file( os.path.join(os.path.dirname(os.path.realpath(__file__)), "ui", "userbrowse.ui")) self.UserBrowseTab = builder.get_object("UserBrowseTab") for i in builder.get_objects(): try: self.__dict__[gtk.Buildable.get_name(i)] = i except TypeError: pass self.UserBrowseTab.remove(self.Main) self.UserBrowseTab.destroy() builder.connect_signals(self) self.userbrowses = userbrowses self.frame = userbrowses.frame self.user = user self.conn = conn # selected_folder is the current selected folder self.selected_folder = None self.search_list = [] self.query = None self.search_position = 0 self.selected_files = [] self.shares = [] # Iters for current DirStore self.directories = {} # Iters for current FileStore self.files = {} self.totalsize = 0 self.encoding, m = EncodingsMenu(self.frame.np, "userencoding", user) # Encoding Combobox self.Elist = {} self.EncodingStore = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING) self.Encoding.set_model(self.EncodingStore) cell = gtk.CellRendererText() self.Encoding.pack_start(cell, True) self.Encoding.add_attribute(cell, 'text', 0) cell2 = gtk.CellRendererText() self.Encoding.pack_start(cell2, False) self.Encoding.add_attribute(cell2, 'text', 1) for item in m: self.Elist[item[1]] = self.EncodingStore.append([item[1], item[0]]) if self.encoding == item[1]: self.Encoding.set_active_iter(self.Elist[self.encoding]) self.DirStore = gtk.TreeStore(str, str) self.FolderTreeView.set_headers_visible(True) self.FolderTreeView.set_enable_tree_lines(True) cols = InitialiseColumns( self.FolderTreeView, [_("Directories"), -1, "text", self.CellDataFunc] # 0 ) cols[0].set_sort_column_id(0) self.popup_menu_users = PopupMenu(self.frame) self.popup_menu_users2 = PopupMenu(self.frame) for menu in [self.popup_menu_users, self.popup_menu_users2]: menu.setup(("#" + _("Send _message"), menu.OnSendMessage), ("#" + _("Show IP a_ddress"), menu.OnShowIPaddress), ("#" + _("Get user i_nfo"), menu.OnGetUserInfo), ("#" + _("Gi_ve privileges"), menu.OnGivePrivileges), ("", None), ("$" + _("_Add user to list"), menu.OnAddToList), ("$" + _("_Ban this user"), menu.OnBanUser), ("$" + _("_Ignore this user"), menu.OnIgnoreUser)) self.popup_menu_downloads_folders = PopupMenu(self.frame) self.popup_menu_downloads_folders.setup( ("#" + _("_Download directory"), self.OnDownloadDirectory), ("#" + _("Download directory _to..."), self.OnDownloadDirectoryTo), ("#" + _("Download _recursive"), self.OnDownloadDirectoryRecursive), ("#" + _("Download r_ecursive to..."), self.OnDownloadDirectoryRecursiveTo)) self.popup_menu_downloads_files = PopupMenu(self.frame) self.popup_menu_downloads_files.setup( ("#" + _("_Download file(s)"), self.OnDownloadFiles), ("#" + _("Download _to..."), self.OnDownloadFilesTo), ("", None), ("#" + _("_Download directory"), self.OnDownloadDirectory), ("#" + _("Download directory _to..."), self.OnDownloadDirectoryTo), ("#" + _("Download _recursive"), self.OnDownloadDirectoryRecursive), ("#" + _("Download r_ecursive to..."), self.OnDownloadDirectoryRecursiveTo)) self.popup_menu_uploads_folders = PopupMenu(self.frame) self.popup_menu_uploads_folders.setup( ("#" + _("Upload Directory to..."), self.OnUploadDirectoryTo), ("#" + _("Upload Directory recursive to..."), self.OnUploadDirectoryRecursiveTo)) self.popup_menu_uploads_files = PopupMenu(self.frame) self.popup_menu_uploads_files.setup( ("#" + _("Upload Directory to..."), self.OnUploadDirectoryTo), ("#" + _("Upload Directory recursive to..."), self.OnUploadDirectoryRecursiveTo), ("#" + _("Up_load file(s)"), self.OnUploadFiles)) self.folder_popup_menu = PopupMenu(self.frame) self.folder_popup_menu.set_user(user) if user == self.frame.np.config.sections["server"]["login"]: self.folder_popup_menu.setup( ("USERMENU", _("User"), self.popup_menu_users, self.OnPopupMenuFolderUser), ("", None), (1, _("Download"), self.popup_menu_downloads_folders, self.OnPopupMenuDummy), (1, _("Upload"), self.popup_menu_uploads_folders, self.OnPopupMenuDummy), ("", None), ("#" + _("Copy _URL"), self.OnCopyDirURL), ("#" + _("Open in File Manager"), self.OnFileManager)) else: self.folder_popup_menu.setup( ("USERMENU", _("User"), self.popup_menu_users, self.OnPopupMenuFolderUser), ("", None), (1, _("Download"), self.popup_menu_downloads_folders, self.OnPopupMenuDummy), ("", None), ("#" + _("Copy _URL"), self.OnCopyDirURL)) self.FolderTreeView.connect("button_press_event", self.OnFolderClicked) self.FolderTreeView.get_selection().connect("changed", self.OnSelectDir) # DecodedFilename, HSize, Bitrate, HLength, Size, Length, RawFilename self.FileStore = gtk.ListStore(str, str, str, str, gobject.TYPE_INT64, int, str) self.FileTreeView.set_model(self.FileStore) cols = InitialiseColumns( self.FileTreeView, [_("Filename"), 250, "text", self.CellDataFunc], [_("Size"), 100, "text", self.CellDataFunc], [_("Bitrate"), 70, "text", self.CellDataFunc], [_("Length"), 50, "text", self.CellDataFunc]) cols[0].set_sort_column_id(0) cols[1].set_sort_column_id(4) cols[2].set_sort_column_id(2) cols[3].set_sort_column_id(5) self.FileStore.set_sort_column_id(0, gtk.SORT_ASCENDING) for i in range(4): parent = cols[i].get_widget().get_ancestor(gtk.Button) if parent: parent.connect('button_press_event', PressHeader) # Read Show / Hide column settings from last session self.FileTreeView.get_selection().set_mode(gtk.SELECTION_MULTIPLE) self.FileTreeView.set_headers_clickable(True) self.FileTreeView.set_property("rules-hint", True) self.file_popup_menu = PopupMenu(self.frame) if user == self.frame.np.config.sections["server"]["login"]: self.file_popup_menu.setup( ("USERMENU", "User", self.popup_menu_users2, self.OnPopupMenuFileUser), ("", None), (1, _("Download"), self.popup_menu_downloads_files, self.OnPopupMenuDummy), (1, _("Upload"), self.popup_menu_uploads_files, self.OnPopupMenuDummy), ("", None), ("#" + _("Copy _URL"), self.OnCopyURL), ("#" + _("Send to _player"), self.OnPlayFiles), ("#" + _("Open in File Manager"), self.OnFileManager)) else: self.file_popup_menu.setup( ("USERMENU", "User", self.popup_menu_users2, self.OnPopupMenuFileUser), ("", None), (1, _("Download"), self.popup_menu_downloads_files, self.OnPopupMenuDummy), ("", None), ("#" + _("Copy _URL"), self.OnCopyURL)) self.FileTreeView.connect("button_press_event", self.OnFileClicked) self.ChangeColours() for name, object in self.__dict__.items(): if type(object) is PopupMenu: object.set_user(self.user)
def __init__(self, userinfos, user, conn): self.wTree = gtk.glade.XML( os.path.join(os.path.dirname(os.path.realpath(__file__)), "userinfo.glade"), None) widgets = self.wTree.get_widget_prefix("") for i in widgets: name = gtk.glade.get_widget_name(i) self.__dict__[name] = i self.UserInfoTab.remove(self.Main) self.UserInfoTab.destroy() self.wTree.signal_autoconnect(self) self.userinfos = userinfos self.frame = userinfos.frame #self.tooltips = self.frame.tooltips #if not self.frame.np.config.sections["ui"]["tooltips"]: # self.tooltips.disable() self.frame.np.queue.put(slskmessages.UserInterests(user)) self.user = user self.conn = conn self._descr = "" self.image_pixbuf = None self.zoom_factor = 5 self.actual_zoom = 0 self.status = 0 self.hatesStore = gtk.ListStore(gobject.TYPE_STRING) self.Hates.set_model(self.hatesStore) cols = InitialiseColumns(self.Hates, [_("Hates"), 0, "text", self.CellDataFunc]) cols[0].set_sort_column_id(0) self.hatesStore.set_sort_column_id(0, gtk.SORT_ASCENDING) self.likesStore = gtk.ListStore(gobject.TYPE_STRING) self.Likes.set_model(self.likesStore) cols = InitialiseColumns(self.Likes, [_("Likes"), 0, "text", self.CellDataFunc]) cols[0].set_sort_column_id(0) self.likesStore.set_sort_column_id(0, gtk.SORT_ASCENDING) self.Elist = {} self.encoding, m = EncodingsMenu(self.frame.np, "userencoding", user) self.EncodingStore = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING) self.Encoding.set_size_request(100, -1) self.Encoding.set_model(self.EncodingStore) cell = gtk.CellRendererText() self.Encoding.pack_start(cell, True) self.Encoding.add_attribute(cell, 'text', 0) cell2 = gtk.CellRendererText() self.Encoding.pack_start(cell2, False) self.Encoding.add_attribute(cell2, 'text', 1) for item in m: self.Elist[item[1]] = self.EncodingStore.append([item[1], item[0]]) if self.encoding == item[1]: self.Encoding.set_active_iter(self.Elist[self.encoding]) self.tag_local = self.makecolour(buffer, "chatremote") self.ChangeColours() self.InterestsExpander.connect("activate", self.ExpanderStatus) self.InformationExpander.connect("activate", self.ExpanderStatus) self.DescriptionExpander.connect("activate", self.ExpanderStatus) self.likes_popup_menu = popup = PopupMenu(self) popup.setup( ("$" + _("I _like this"), self.frame.OnLikeRecommendation), ("$" + _("I _don't like this"), self.frame.OnDislikeRecommendation), ("", None), ("#" + _("_Search for this item"), self.frame.OnRecommendSearch, gtk.STOCK_FIND), ) self.Likes.connect("button_press_event", self.OnPopupLikesMenu) self.hates_popup_menu = popup = PopupMenu(self) popup.setup( ("$" + _("I _like this"), self.frame.OnLikeRecommendation), ("$" + _("I _don't like this"), self.frame.OnDislikeRecommendation), ("", None), ("#" + _("_Search for this item"), self.frame.OnRecommendSearch, gtk.STOCK_FIND), ) self.Hates.connect("button_press_event", self.OnPopupHatesMenu) self.image_menu = popup = PopupMenu(self) popup.setup( ("#" + _("Zoom 1:1"), self.MakeZoomNormal, gtk.STOCK_ZOOM_100), ("#" + _("Zoom In"), self.MakeZoomIn, gtk.STOCK_ZOOM_IN), ("#" + _("Zoom Out"), self.MakeZoomOut, gtk.STOCK_ZOOM_OUT), ("", None), ("#" + _("Save Image"), self.OnSavePicture, gtk.STOCK_SAVE), )
def __init__(self, Searches, text, id, mode, remember): self.Searches = Searches self.frame = Searches.frame # self.tooltips = self.frame.tooltips # if not self.frame.np.config.sections["ui"]["tooltips"]: # self.tooltips.disable() self.wTree = gtk.glade.XML(os.path.join(os.path.dirname(os.path.realpath(__file__)), "search.glade"), None) widgets = self.wTree.get_widget_prefix("") for i in widgets: name = gtk.glade.get_widget_name(i) self.__dict__[name] = i self.SearchTab.remove(self.Main) self.SearchTab.destroy() self.wTree.signal_autoconnect(self) self.FilterBitrate_List = gtk.ListStore(gobject.TYPE_STRING) self.FilterBitrate.set_model(self.FilterBitrate_List) self.FilterBitrate.set_text_column(0) self.FilterSize_List = gtk.ListStore(gobject.TYPE_STRING) self.FilterSize.set_model(self.FilterSize_List) self.FilterSize.set_text_column(0) self.FilterCountry_List = gtk.ListStore(gobject.TYPE_STRING) self.FilterCountry.set_model(self.FilterCountry_List) self.FilterCountry.set_text_column(0) self.FilterIn_List = gtk.ListStore(gobject.TYPE_STRING) self.FilterIn.set_model(self.FilterIn_List) self.FilterIn.set_text_column(0) self.FilterOut_List = gtk.ListStore(gobject.TYPE_STRING) self.FilterOut.set_model(self.FilterOut_List) self.FilterOut.set_text_column(0) self.wTree.signal_autoconnect(self) # self.ResultsList.set_double_buffered(False) self.text = text self.id = id self.mode = mode self.remember = remember self.usersiters = {} self.users = [] self.resultslimit = 2000 self.QueryLabel.set_text(text) self.all_data = [] self.filters = None self.COLUMN_TYPES = [ int, # num str, # user str, # filename str, # h_size str, # h_speed str, # h_queue str, # immediatedl str, # h_bitrate str, # length gtk.gdk.Pixbuf, # self.get_flag(user, country) str, # directory int, # bitrate str, # fullpath str, # country gobject.TYPE_UINT64, # size int, # speed int, # queue int # status ] self.resultsmodel = gtk.TreeStore(* self.COLUMN_TYPES) if mode > 0: self.RememberCheckButton.set_sensitive(False) self.RememberCheckButton.set_active(remember) self.PopulateFilters() self.FilterSize.clear() sizecell = gtk.CellRendererText() sizecell.set_property("xalign", 1) self.FilterSize.pack_start(sizecell, True) self.FilterSize.add_attribute(sizecell, "text", 0) self.FilterBitrate.clear() bit_cell = gtk.CellRendererText() bit_cell.set_property("xalign", 1) self.FilterBitrate.pack_start(bit_cell, True) self.FilterBitrate.add_attribute(bit_cell, "text", 0) self.FilterIn.connect("changed", self.OnFilterChanged) self.FilterOut.connect("changed", self.OnFilterChanged) self.FilterSize.connect("changed", self.OnFilterChanged) self.FilterBitrate.connect("changed", self.OnFilterChanged) self.FilterCountry.connect("changed", self.OnFilterChanged) self.FilterIn.child.connect("activate", self.OnRefilter) self.FilterOut.child.connect("activate", self.OnRefilter) self.FilterSize.child.connect("activate", self.OnRefilter) self.FilterBitrate.child.connect("activate", self.OnRefilter) self.FilterCountry.child.connect("activate", self.OnRefilter) self.selected_results = [] self.selected_users = [] self.ResultsList.get_selection().set_mode(gtk.SELECTION_MULTIPLE) self.ResultsList.set_property("show-expanders", False) self.ResultsList.set_property("rules-hint", True) cols = InitialiseColumns( self.ResultsList, [_("Number"), 50, "number", self.CellDataFunc], [_("User"), 100, "text", self.CellDataFunc], [_("Filename"), 250, "text", self.CellDataFunc], [_("Size"), 100, "number", self.CellDataFunc], [_("Speed"), 90, "text", self.CellDataFunc], [_("In queue"), 50, "number", self.CellDataFunc], [_("Immediate Download"), 20, "text", self.CellDataFunc], [_("Bitrate"), 50, "text", self.CellDataFunc], [_("Length"), 50, "number", self.CellDataFunc], [_("Country"), 25, "pixbuf"], [_("Directory"), 1000, "text", self.CellDataFunc] ) self.col_num, self.col_user, self.col_file, self.col_size, self.col_speed, self.col_queue, self.col_immediate, self.col_bitrate, self.col_length, self.col_country, self.col_directory = cols cols[0].get_widget().hide() for i in range (10): parent = cols[i].get_widget().get_ancestor(gtk.Button) if parent: parent.connect('button_press_event', PressHeader) # Read Show / Hide column settings from last session cols[i].set_visible(self.frame.np.config.sections["columns"]["search"][i]) self.ResultsList.set_model(self.resultsmodel) #for ix in range(len(cols)): #col = cols[ix] #col.connect("clicked", self.OnResort, ix) #for r in col.get_cell_renderers(): #r.set_fixed_height_from_font(1) #for r in self.col_num.get_cell_renderers() + self.col_size.get_cell_renderers() + self.col_length.get_cell_renderers(): #r.set_property("xalign",1) self.col_num.set_sort_column_id(0) self.col_user.set_sort_column_id(1) self.col_file.set_sort_column_id(2) self.col_size.set_sort_column_id(14) self.col_speed.set_sort_column_id(15) self.col_queue.set_sort_column_id(16) self.col_immediate.set_sort_column_id(6) self.col_bitrate.set_sort_column_id(11) self.col_length.set_sort_column_id(8) self.col_country.set_sort_column_id(13) self.col_directory.set_sort_column_id(10) self.ResultsList.set_enable_tree_lines(True) self.ResultsList.set_headers_clickable(True) self.popup_menu_users = PopupMenu(self.frame) self.popup_menu = popup = PopupMenu(self.frame) popup.setup( ("#" + _("_Download file(s)"), self.OnDownloadFiles, gtk.STOCK_GO_DOWN), ("#" + _("Download file(s) _to..."), self.OnDownloadFilesTo, gtk.STOCK_GO_DOWN), ("#" + _("Download containing _folder(s)"), self.OnDownloadFolders, gtk.STOCK_GO_DOWN), ("#" + _("Download containing f_older(s) to..."), self.OnDownloadFoldersTo, gtk.STOCK_GO_DOWN), ("#" + _("View Metadata of file(s)"), self.OnSearchMeta, gtk.STOCK_PROPERTIES), ("", None), ("#" + _("Copy _URL"), self.OnCopyURL, gtk.STOCK_COPY), ("#" + _("Copy folder U_RL"), self.OnCopyDirURL, gtk.STOCK_COPY), ("", None), (1, _("User(s)"), self.popup_menu_users, self.OnPopupMenuUsers) ) self.ResultsList.connect("button_press_event", self.OnListClicked) self._more_results = 0 self.new_results = [] self.ChangeColours()