- Timestamp:
- 09/16/07 22:55:38 (14 months ago)
- Location:
- trunk/nicotine+/pynicotine
- Files:
-
- 7 modified
-
config.py (modified) (2 diffs)
-
gtkgui/chatrooms.py (modified) (3 diffs)
-
gtkgui/frame.py (modified) (4 diffs)
-
gtkgui/nicotine.glade (modified) (1 diff)
-
gtkgui/nicotine_glade.py (modified) (2 diffs)
-
gtkgui/userlist.py (modified) (19 diffs)
-
slskmessages.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/nicotine+/pynicotine/config.py
r624 r629 91 91 "privatechat":{"store":0, "users":[]}, \ 92 92 \ 93 "columns":{"userlist":[1,1,1,1,1,1,1,1,1 ], "chatrooms":{}, "downloads":[1,1,1,1,1,1,1,1,1], "uploads":[1,1,1,1,1,1,1,1,1], "search":[1,1,1,1,1,1,1,1,1,1]}, \93 "columns":{"userlist":[1,1,1,1,1,1,1,1,1,1], "chatrooms":{}, "downloads":[1,1,1,1,1,1,1,1,1], "uploads":[1,1,1,1,1,1,1,1,1], "search":[1,1,1,1,1,1,1,1,1,1], "hideflags": False }, \ 94 94 \ 95 95 "searches":{"maxresults":50,"re_filter":0,"history":[], \ … … 212 212 self.frame.logMessage(message) 213 213 autojoin = self.sections["server"]["autojoin"] 214 for user in self.sections["server"]["userlist"]: 215 if len(user) == 2: 216 user += [0, 0] 217 214 if len(self.sections["columns"]["userlist"]) < len(self.defaults["columns"]["userlist"]): 215 self.sections["columns"]["userlist"] += [True] * (len(self.defaults["columns"]["userlist"]) - len(self.sections["columns"]["userlist"])) 216 217 for i in ["%(user)s", "%(message)s"]: 218 if i not in self.sections["ui"]["speechprivate"]: 219 self.sections["ui"]["speechprivate"] = self.defaults["ui"]["speechprivate"] 220 if i not in self.sections["ui"]["speechrooms"]: 221 self.sections["ui"]["speechrooms"] = self.defaults["ui"]["speechrooms"] 222 218 223 if "pyslsk" in autojoin and not "nicotine" in autojoin: 219 224 autojoin.append("nicotine") -
trunk/nicotine+/pynicotine/gtkgui/chatrooms.py
r628 r629 432 432 self.AutoJoin.set_active(True) 433 433 434 cols = InitialiseColumns(self.UserList,434 self.cols = cols = InitialiseColumns(self.UserList, 435 435 [_("Status"), 20, "pixbuf"], 436 436 [_("Country"), 25, "pixbuf"], … … 456 456 # Read Show / Hide column settings from last session 457 457 cols[i].set_visible(config["columns"]["chatrooms"][room][i]) 458 if config["columns"]["hideflags"]: 459 cols[1].set_visible(0) 460 config["columns"]["chatrooms"][room][1] = 0 458 461 self.users = {} 459 462 … … 978 981 979 982 def SetUserFlag(self, user, flag): 980 #print 'ChatRoom.SetUserFlag:', user, 'image:', flag981 983 if user not in self.users: 982 984 return -
trunk/nicotine+/pynicotine/gtkgui/frame.py
r628 r629 243 243 self.vpaned1.pack2(self.LogScrolledWindow, False, True) 244 244 self.hide_log_window1.set_active(0) 245 245 246 246 if config["ui"]["roomlistcollapsed"]: 247 247 self.hide_room_list1.set_active(1) … … 356 356 self.UserBrowseCombo.child.connect("activate", self.OnGetShares) 357 357 358 358 if config["columns"]["hideflags"]: 359 self.HideFlags.set_active(1) 360 else: 361 self.HideFlags.set_active(0) 362 359 363 self.SetUserStatus(_("Offline")) 360 364 self.TrayApp = TrayApp(self) … … 1308 1312 self.flag_users[user] = flag 1309 1313 self.chatrooms.roomsctrl.SetUserFlag(user, flag) 1314 self.userlist.SetUserFlag(user, flag) 1310 1315 1311 1316 def GetUserFlag(self, user): 1312 1317 if user not in self.flag_users: 1318 for i in self.np.config.sections["server"]["userlist"]: 1319 if user == i[0] and i[6] is not None: 1320 return i[6] 1313 1321 return None 1322 1314 1323 else: 1315 1324 return self.flag_users[user] … … 1914 1923 ScrollBottom(self.LogScrolledWindow) 1915 1924 self.np.config.writeConfig() 1916 1925 1926 def OnHideFlags(self, widget): 1927 active = widget.get_active() 1928 self.np.config.sections["columns"]["hideflags"] = active 1929 for room in self.chatrooms.roomsctrl.joinedrooms: 1930 self.chatrooms.roomsctrl.joinedrooms[room].cols[1].set_visible(int(not active)) 1931 self.np.config.sections["columns"]["chatrooms"][room][1] = int(not active) 1932 self.userlist.cols[1].set_visible(int(not active)) 1933 self.np.config.sections["columns"]["userlist"][1] = int(not active) 1934 self.np.config.writeConfig() 1935 1917 1936 def OnHideRoomList(self, widget): 1918 1937 active = widget.get_active() -
trunk/nicotine+/pynicotine/gtkgui/nicotine.glade
r619 r629 209 209 <signal name="activate" handler="OnToggleBuddyList"/> 210 210 <accelerator key="U" modifiers="GDK_MOD1_MASK" signal="activate"/> 211 </widget> 212 </child> 213 <child> 214 <widget class="GtkCheckMenuItem" id="HideFlags"> 215 <property name="visible">True</property> 216 <property name="label" translatable="yes">Hide flag columns in user lists</property> 217 <property name="use_underline">True</property> 218 <signal name="toggled" handler="OnHideFlags"/> 219 <accelerator key="B" modifiers="GDK_MOD1_MASK" signal="activate"/> 211 220 </widget> 212 221 </child> -
trunk/nicotine+/pynicotine/gtkgui/nicotine_glade.py
r619 r629 159 159 self.edit_menu.append(self.buddylist_in_chatrooms1) 160 160 161 self.HideFlags = gtk.CheckMenuItem(_("Hide flag columns in user lists")) 162 self.HideFlags.show() 163 self.HideFlags.connect("toggled", self.OnHideFlags) 164 self.HideFlags.add_accelerator("activate", self.accel_group, gtk.gdk.keyval_from_name("B"), gtk.gdk.MOD1_MASK, gtk.ACCEL_VISIBLE) 165 166 self.edit_menu.append(self.HideFlags) 167 161 168 self.scheidingslijn5 = gtk.MenuItem() 162 169 self.scheidingslijn5.show() … … 1500 1507 1501 1508 def OnToggleBuddyList(self, widget): 1509 pass 1510 1511 def OnHideFlags(self, widget): 1502 1512 pass 1503 1513 -
trunk/nicotine+/pynicotine/gtkgui/userlist.py
r628 r629 32 32 self.userlist = [] 33 33 34 self.usersmodel = gtk.ListStore(gtk.gdk.Pixbuf, g object.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)35 cols = InitialiseColumns(self.frame.UserList,34 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) 35 self.cols = cols = InitialiseColumns(self.frame.UserList, 36 36 [_("Status"), 20, "pixbuf"], 37 [_("Country"), 25, "pixbuf"], 37 38 [_("User"), 120, "text", self.CellDataFunc], 38 39 [_("Speed"), 0, "text", self.CellDataFunc], … … 45 46 ) 46 47 cols[0].set_sort_column_id(9) 47 cols[1].set_sort_column_id(1 )48 cols[2].set_sort_column_id( 10)48 cols[1].set_sort_column_id(14) 49 cols[2].set_sort_column_id(2) 49 50 cols[3].set_sort_column_id(11) 50 cols[4].set_sort_column_id( 4)51 cols[4].set_sort_column_id(12) 51 52 cols[5].set_sort_column_id(5) 52 53 cols[6].set_sort_column_id(6) 53 cols[7].set_sort_column_id(12) 54 cols[8].set_sort_column_id(8) 54 cols[7].set_sort_column_id(7) 55 cols[8].set_sort_column_id(13) 56 cols[9].set_sort_column_id(9) 55 57 cols[0].get_widget().hide() 56 for i in range (9): 58 cols[1].get_widget().hide() 59 config = self.frame.np.config.sections 60 for i in range (10): 57 61 parent = cols[i].get_widget().get_ancestor(gtk.Button) 58 62 if parent: 59 63 parent.connect('button_press_event', PressHeader) 60 64 # Read Show / Hide column settings from last session 61 cols[i].set_visible( self.frame.np.config.sections["columns"]["userlist"][i])62 63 for render in cols[4].get_cell_renderers():64 render.connect('toggled', self.cell_toggle_callback, self.frame.UserList, 4)65 cols[i].set_visible(config["columns"]["userlist"][i]) 66 if config["columns"]["hideflags"]: 67 cols[1].set_visible(0) 68 config["columns"]["userlist"][1] = 0 65 69 for render in cols[5].get_cell_renderers(): 66 70 render.connect('toggled', self.cell_toggle_callback, self.frame.UserList, 5) 67 71 for render in cols[6].get_cell_renderers(): 68 72 render.connect('toggled', self.cell_toggle_callback, self.frame.UserList, 6) 69 renderers = cols[8].get_cell_renderers() 73 for render in cols[7].get_cell_renderers(): 74 render.connect('toggled', self.cell_toggle_callback, self.frame.UserList, 7) 75 renderers = cols[9].get_cell_renderers() 70 76 for render in renderers: 71 render.connect('edited', self.cell_edited_callback, self.frame.UserList, 8)77 render.connect('edited', self.cell_edited_callback, self.frame.UserList, 9) 72 78 self.frame.UserList.set_model(self.usersmodel) 73 79 self.frame.UserList.set_property("rules-hint", True) … … 95 101 else: 96 102 last_seen = _("Never seen") 103 user += [last_seen] 97 104 time_from_epoch = 0 98 99 row = [self.frame.GetStatusImage(0), user[0], "0", "0", trusted, notify, privileged, last_seen, user[1], 0, 0, 0, int(time_from_epoch)] 105 if len(user) > 6: 106 flag = user[6] 107 else: 108 user += [None] 109 flag = None 110 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] 100 111 if len(user) > 2: 101 112 if user[2]: … … 107 118 108 119 iter = self.usersmodel.append(row) 109 self.userlist.append([user[0], user[1], last_seen, iter ])110 self.usersmodel.set_sort_column_id( 1, gtk.SORT_ASCENDING)120 self.userlist.append([user[0], user[1], last_seen, iter, flag]) 121 self.usersmodel.set_sort_column_id(2, gtk.SORT_ASCENDING) 111 122 self.popup_menu = popup = PopupMenu(frame) 112 123 popup.setup( … … 141 152 value = self.usersmodel.get_value(iter, pos) 142 153 self.usersmodel.set(iter, pos, not value) 143 if pos == 4:154 if pos == 5: 144 155 if user in self.trusted: 145 156 self.trusted.remove(user) … … 147 158 if not user in self.trusted: 148 159 self.trusted.append(user) 149 elif pos == 5:160 elif pos == 6: 150 161 if user in self.notify: 151 162 self.notify.remove(user) … … 153 164 if not user in self.notify: 154 165 self.notify.append(user) 155 elif pos == 6:166 elif pos == 7: 156 167 if user in self.privileged: 157 168 self.privileged.remove(user) … … 166 177 store = treeview.get_model() 167 178 iter = store.get_iter(index) 168 if pos == 8:179 if pos == 9: 169 180 self.SetComment(iter, store, value) 170 181 … … 180 191 if i[0] == user: 181 192 i[2] = last_seen 182 self.usersmodel.set(i[3], 7, last_seen)183 self.usersmodel.set(i[3], 1 2, int(time_from_epoch))193 self.usersmodel.set(i[3], 8, last_seen) 194 self.usersmodel.set(i[3], 13, int(time_from_epoch)) 184 195 break 185 196 … … 188 199 189 200 def SetComment(self, iter, store, comments=None): 190 user = store.get_value(iter, 1)201 user = store.get_value(iter, 2) 191 202 if comments is not None: 192 203 for i in self.userlist: 193 204 if i[0] == user: 194 205 i[1] = comments 195 self.usersmodel.set(iter, 8, comments)206 self.usersmodel.set(iter, 9, comments) 196 207 break 197 208 self.SaveUserList() … … 199 210 def ConnClose(self): 200 211 for user in self.userlist: 201 self.usersmodel.set(user[3], 0, self.frame.GetStatusImage(0), 2, "0", 3, "0", 9, 0, 10, 0, 11, 0)212 self.usersmodel.set(user[3], 0, self.frame.GetStatusImage(0), 3, "0", 4, "0", 10, 0, 11, 0, 12, 0) 202 213 203 214 for user in self.userlist: 204 if self.usersmodel.get(user[3], 7)[0] is "":215 if self.usersmodel.get(user[3], 8)[0] is "": 205 216 self.SetLastSeen(user[0]) 206 217 … … 211 222 if d: 212 223 path, column, x, y = d 213 user = self.frame.UserList.get_model().get_value(self.frame.UserList.get_model().get_iter(path), 1)224 user = self.frame.UserList.get_model().get_value(self.frame.UserList.get_model().get_iter(path), 2) 214 225 215 226 if event.button != 3: … … 243 254 if iter is None: 244 255 return 245 if msg.status == int(self.usersmodel.get_value(iter, 9)):256 if msg.status == int(self.usersmodel.get_value(iter, 10)): 246 257 return 247 258 … … 252 263 253 264 img = self.frame.GetStatusImage(msg.status) 254 self.usersmodel.set(iter, 0, img, 9, msg.status)265 self.usersmodel.set(iter, 0, img, 10, msg.status) 255 266 256 267 if msg.status: # online 257 268 self.SetLastSeen(msg.user, online=True) 258 elif self.usersmodel.get(iter, 7)[0] is "": # disconnected269 elif self.usersmodel.get(iter, 8)[0] is "": # disconnected 259 270 self.SetLastSeen(msg.user) 260 271 … … 265 276 hspeed = Humanize(msg.avgspeed) 266 277 hfiles = Humanize(msg.files) 267 self.usersmodel.set(iter, 2, hspeed, 3, hfiles, 10, msg.avgspeed, 11, msg.files) 278 self.usersmodel.set(iter, 3, hspeed, 4, hfiles, 11, msg.avgspeed, 12, msg.files) 279 if msg.country is not None: 280 flag = "flag_"+msg.country 281 self.usersmodel.set(iter, 1, self.frame.GetFlagImage(flag), 14, flag) 282 for i in self.userlist: 283 if i[0] == msg.user: 284 i[4] = flag 285 break 286 287 def SetUserFlag(self, user, flag): 288 iter = self.GetIter(user) 289 if iter is None: 290 return 291 if user not in [i[0] for i in self.userlist]: 292 return 293 self.usersmodel.set(iter, 1, self.frame.GetFlagImage(flag), 14, flag) 294 for i in self.userlist: 295 if i[0] == user: 296 i[4] = flag 297 268 298 269 299 def AddToList(self, user): … … 271 301 return 272 302 273 row = [self.frame.GetStatusImage(0), user, "0", "0", False, False, False, _("Never seen"), "", 0, 0, 0, 0]303 row = [self.frame.GetStatusImage(0), None, user, "0", "0", False, False, False, _("Never seen"), "", 0, 0, 0, 0, ""] 274 304 iter = self.usersmodel.append(row) 275 self.userlist.append([user, "", _("Never seen"), iter ])305 self.userlist.append([user, "", _("Never seen"), iter, self.frame.GetUserFlag(user)]) 276 306 277 307 self.SaveUserList() … … 299 329 if i[0] == user: 300 330 i[1] = comments 301 self.usersmodel.set(i[3], 8, comments)331 self.usersmodel.set(i[3], 9, comments) 302 332 break 303 333 self.SaveUserList() … … 307 337 308 338 for i in self.userlist: 309 l.append([i[0], i[1], (i[0] in self.notify), (i[0] in self.privileged), (i[0] in self.trusted), i[2] ])339 l.append([i[0], i[1], (i[0] in self.notify), (i[0] in self.privileged), (i[0] in self.trusted), i[2], i[4]]) 310 340 self.frame.np.config.sections["server"]["userlist"] = l 311 341 self.frame.np.config.writeConfig() … … 370 400 for i in self.userlist: 371 401 if i[0] == user: 372 self.usersmodel.set(i[3], 4, (user in self.trusted))373 self.SaveUserList() 374 402 self.usersmodel.set(i[3], 5, (user in self.trusted)) 403 self.SaveUserList() 404 -
trunk/nicotine+/pynicotine/slskmessages.py
r628 r629 626 626 def __init__(self, user = None): 627 627 self.user = user 628 628 self.country = None 629 629 630 def makeNetworkMessage(self): 630 631 return self.packObject(self.user)
