def send_message(self, user, text=None, show_user=False, bytestring=False): if user not in self.users: tab = PrivateChat(self, user) self.users[user] = tab if user not in self.frame.np.config.sections["privatechat"]["users"]: self.frame.np.config.sections["privatechat"]["users"].append(user) try: status = self.frame.np.users[user].status except Exception: # Offline status = 0 if user not in self.frame.np.watchedusers: self.frame.np.queue.put(slskmessages.AddUser(user)) self.append_page(tab.Main, user, tab.on_close, status=status) if show_user: if self.get_current_page() != self.page_num(self.users[user].Main): self.set_current_page(self.page_num(self.users[user].Main)) if text is not None: self.users[user].send_message(text, bytestring=bytestring)
def AddToList(self, user): if user in [i[0] for i in self.userlist]: return row = [ self.frame.GetStatusImage(0), None, user, "0", "0", False, False, False, _("Never seen"), "", 0, 0, 0, 0, "" ] iter = self.usersmodel.append(row) self.userlist.append( [user, "", _("Never seen"), iter, self.frame.GetUserFlag(user)]) self.SaveUserList() self.frame.np.queue.put(slskmessages.AddUser(user)) self.frame.np.queue.put(slskmessages.GetPeerAddress(user)) for widget in self.frame.BuddiesComboEntries: gobject.idle_add(widget.Append, user) if self.frame.np.config.sections["words"]["buddies"]: gobject.idle_add(self.frame.chatrooms.roomsctrl.UpdateCompletions) gobject.idle_add(self.frame.privatechats.UpdateCompletions)
def send_message(self, user, text=None, show_user=False, bytestring=False): if user not in self.users: tab = PrivateChat(self, user) self.users[user] = tab if user not in self.frame.np.config.sections["privatechat"][ "users"]: self.frame.np.config.sections["privatechat"]["users"].append( user) if not self.frame.np.config.sections["ui"]["tab_status_icons"]: userlabel = "%s (%s)" % (user[:15], _("Offline")) else: userlabel = user self.append_page(tab.Main, userlabel, tab.on_close) self.frame.np.queue.put(slskmessages.AddUser(user)) if show_user: if self.get_current_page() != self.page_num(self.users[user].Main): self.set_current_page(self.page_num(self.users[user].Main)) if text is not None: self.users[user].send_message(text, bytestring=bytestring)
def add_to_list(self, user): if user in (i[2] for i in self.usersmodel): return empty_int = 0 empty_str = "" self.usersmodel.insert_with_valuesv(-1, self.column_numbers, [ GObject.Value(GObject.TYPE_OBJECT, self.frame.get_status_image(0)), GObject.Value(GObject.TYPE_OBJECT, None), user, empty_str, empty_str, False, False, False, _("Never seen"), empty_str, empty_int, empty_int, empty_int, empty_int, empty_str ]) self.save_user_list() self.frame.np.queue.put(slskmessages.AddUser(user)) # Request user's IP address, so we can get the country self.frame.np.queue.put(slskmessages.GetPeerAddress(user)) for widget in self.buddies_combo_entries: widget.append_text(user) if self.frame.np.config.sections["words"]["buddies"]: GLib.idle_add(self.frame.chatrooms.update_completions) GLib.idle_add(self.frame.privatechats.update_completions)
def similar_users(self, msg): self.recommendation_users_model.clear() self.recommendation_users = {} for user in msg.users: iterator = self.recommendation_users_model.append([self.frame.images["offline"], user, "0", "0", 0, 0, 0]) self.recommendation_users[user] = iterator self.np.queue.put(slskmessages.AddUser(user))
def InitWindow(self, user, conn): if user in self.users: self.users[user].conn = conn else: w = self.subwindow(self, user, conn) self.append_page(w.Main, user[:15], w.OnClose) self.users[user] = w self.frame.np.queue.put(slskmessages.AddUser(user))
def AddResult(self, msg, user, country): if user in self.users: return if user not in self.Searches.users: if user in self.frame.np.users and self.frame.np.users[user].status is not None: self.Searches.users[user] = self.frame.np.users[user].status else: self.Searches.users[user] = 0 self.frame.np.queue.put(slskmessages.AddUser(user)) if user == self.frame.np.config.sections["server"]["login"]: self.Searches.users[user] = 1 self.users.append(user) results = [] if msg.freeulslots: imdl = "Y" else: imdl = "N" decode = self.frame.np.decode for result in msg.list: name = result[1].split('\\')[-1] dir = result[1][:-len(name)] bitrate = "" length = "" br = 0 if result[3] != "" and len(result[4]) == 3: a = result[4] if a[2] == 1: bitrate = " (vbr)" bitrate = str(a[0]) + bitrate br = a[0] length = '%i:%02i' %(a[1] / 60, a[1] % 60) results.append([user, name, result[2], msg.ulspeed, msg.inqueue, imdl, bitrate, length, dir, br, result[1], country, self.Searches.users[user]]) if results: self.new_results += results if self._more_results == 0 and len(self.resultsmodel) < self.frame.np.config.sections['searches']["max_displayed_results"]: self._more_results = 1 if len(self.resultsmodel) < 25: # Showing the first 25 results right away, buffering the rest gobject.timeout_add(0, self._realaddresults) else: gobject.timeout_add(self.WAIT_BEFORE_DISPLAYING, self._realaddresults) return len(results)
def init_window(self, user): w = self.users[user] = self.subwindow(self, user) if not self.frame.np.config.sections["ui"]["tab_status_icons"]: userlabel = "%s (%s)" % (user[:15], _("Offline")) else: userlabel = user self.append_page(w.Main, userlabel, w.on_close) self.frame.np.queue.put(slskmessages.AddUser(user))
def init_window(self, user): w = self.users[user] = self.subwindow(self, user) try: status = self.frame.np.users[user].status except Exception: # Offline status = 0 if user not in self.frame.np.watchedusers: self.frame.np.queue.put(slskmessages.AddUser(user)) self.append_page(w.Main, user, w.on_close, status=status)
def SendMessage(self, user, text=None, direction=None, bytestring=False): if user not in self.users: tab = PrivateChat(self, user) self.users[user] = tab self.append_page(tab.Main, user, tab.OnClose) self.frame.np.queue.put(slskmessages.AddUser(user)) if direction: if self.get_current_page() != self.page_num(self.users[user].Main): self.set_current_page(self.page_num(self.users[user].Main)) if text is not None: self.users[user].SendMessage(text, bytestring=bytestring)
def watch_user(self, user, force_update=False): """ Tell the server we want to be notified of status/stat updates for a user """ if not isinstance(user, str): return if not force_update and user in self.watched_users: # Already being watched, and we don't need to re-fetch the status/stats return self.queue.append(slskmessages.AddUser(user)) # Get privilege status self.queue.append(slskmessages.GetUserStatus(user))
def add_to_list(self, user): if user in (i[2] for i in self.usersmodel): return row = [self.frame.get_status_image(0), None, user, "", "", False, False, False, _("Never seen"), "", 0, 0, 0, 0, ""] self.usersmodel.append(row) self.save_user_list() self.frame.np.queue.put(slskmessages.AddUser(user)) self.frame.np.queue.put(slskmessages.GetPeerAddress(user)) for widget in self.buddies_combo_entries: widget.append_text(user) if self.frame.np.config.sections["words"]["buddies"]: GLib.idle_add(self.frame.chatrooms.update_completions) GLib.idle_add(self.frame.privatechats.update_completions)