Changeset 629 for trunk

Show
Ignore:
Timestamp:
09/16/07 22:55:38 (14 months ago)
Author:
daelstorm
Message:

Add flags to buddy-list and an option in the edit menu to show/hide all flags; auto-fix tts commands in config module (don't wait for the settings dialog);

Location:
trunk/nicotine+/pynicotine
Files:
7 modified

Legend:

Unmodified
Added
Removed
  • trunk/nicotine+/pynicotine/config.py

    r624 r629  
    9191"privatechat":{"store":0, "users":[]}, \ 
    9292\ 
    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 }, \ 
    9494\ 
    9595"searches":{"maxresults":50,"re_filter":0,"history":[], \ 
     
    212212                                                        self.frame.logMessage(message) 
    213213                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                                 
    218223                if "pyslsk" in autojoin and not "nicotine" in autojoin: 
    219224                        autojoin.append("nicotine") 
  • trunk/nicotine+/pynicotine/gtkgui/chatrooms.py

    r628 r629  
    432432                        self.AutoJoin.set_active(True) 
    433433                         
    434                 cols = InitialiseColumns(self.UserList,  
     434                self.cols = cols = InitialiseColumns(self.UserList,  
    435435                        [_("Status"), 20, "pixbuf"], 
    436436                        [_("Country"), 25, "pixbuf"], 
     
    456456                        # Read Show / Hide column settings from last session 
    457457                        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 
    458461                self.users = {} 
    459462 
     
    978981 
    979982        def SetUserFlag(self, user, flag): 
    980                 #print 'ChatRoom.SetUserFlag:', user, 'image:', flag 
    981983                if user not in self.users: 
    982984                        return 
  • trunk/nicotine+/pynicotine/gtkgui/frame.py

    r628 r629  
    243243                        self.vpaned1.pack2(self.LogScrolledWindow, False, True) 
    244244                        self.hide_log_window1.set_active(0) 
    245  
     245                 
    246246                if config["ui"]["roomlistcollapsed"]: 
    247247                        self.hide_room_list1.set_active(1) 
     
    356356                self.UserBrowseCombo.child.connect("activate", self.OnGetShares) 
    357357 
    358                  
     358                if config["columns"]["hideflags"]: 
     359                        self.HideFlags.set_active(1) 
     360                else: 
     361                        self.HideFlags.set_active(0) 
     362                         
    359363                self.SetUserStatus(_("Offline")) 
    360364                self.TrayApp = TrayApp(self) 
     
    13081312                self.flag_users[user] = flag 
    13091313                self.chatrooms.roomsctrl.SetUserFlag(user, flag) 
     1314                self.userlist.SetUserFlag(user, flag) 
    13101315                 
    13111316        def GetUserFlag(self, user): 
    13121317                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] 
    13131321                        return None 
     1322                 
    13141323                else: 
    13151324                        return self.flag_users[user] 
     
    19141923                                ScrollBottom(self.LogScrolledWindow) 
    19151924                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                 
    19171936        def OnHideRoomList(self, widget): 
    19181937                active = widget.get_active() 
  • trunk/nicotine+/pynicotine/gtkgui/nicotine.glade

    r619 r629  
    209209                        <signal name="activate" handler="OnToggleBuddyList"/> 
    210210                        <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"/> 
    211220                      </widget> 
    212221                    </child> 
  • trunk/nicotine+/pynicotine/gtkgui/nicotine_glade.py

    r619 r629  
    159159                self.edit_menu.append(self.buddylist_in_chatrooms1) 
    160160 
     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 
    161168                self.scheidingslijn5 = gtk.MenuItem() 
    162169                self.scheidingslijn5.show() 
     
    15001507 
    15011508        def OnToggleBuddyList(self, widget): 
     1509                pass 
     1510 
     1511        def OnHideFlags(self, widget): 
    15021512                pass 
    15031513 
  • trunk/nicotine+/pynicotine/gtkgui/userlist.py

    r628 r629  
    3232                self.userlist = [] 
    3333                 
    34                 self.usersmodel = gtk.ListStore(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) 
    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, 
    3636                        [_("Status"), 20, "pixbuf"], 
     37                        [_("Country"), 25, "pixbuf"], 
    3738                        [_("User"), 120, "text", self.CellDataFunc], 
    3839                        [_("Speed"), 0, "text", self.CellDataFunc], 
     
    4546                ) 
    4647                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) 
    4950                cols[3].set_sort_column_id(11) 
    50                 cols[4].set_sort_column_id(4) 
     51                cols[4].set_sort_column_id(12) 
    5152                cols[5].set_sort_column_id(5) 
    5253                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) 
    5557                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): 
    5761                        parent = cols[i].get_widget().get_ancestor(gtk.Button) 
    5862                        if parent: 
    5963                                parent.connect('button_press_event', PressHeader) 
    6064                        # 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 
    6569                for render in cols[5].get_cell_renderers(): 
    6670                        render.connect('toggled', self.cell_toggle_callback, self.frame.UserList, 5) 
    6771                for render in cols[6].get_cell_renderers(): 
    6872                        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() 
    7076                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) 
    7278                self.frame.UserList.set_model(self.usersmodel) 
    7379                self.frame.UserList.set_property("rules-hint", True) 
     
    95101                        else: 
    96102                                last_seen = _("Never seen") 
     103                                user += [last_seen] 
    97104                                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] 
    100111                        if len(user) > 2: 
    101112                                if user[2]: 
     
    107118 
    108119                        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) 
    111122                self.popup_menu = popup = PopupMenu(frame) 
    112123                popup.setup( 
     
    141152                value = self.usersmodel.get_value(iter, pos) 
    142153                self.usersmodel.set(iter, pos, not value) 
    143                 if pos == 4: 
     154                if pos == 5: 
    144155                        if user in self.trusted: 
    145156                                self.trusted.remove(user) 
     
    147158                                if not user in self.trusted: 
    148159                                        self.trusted.append(user) 
    149                 elif pos == 5: 
     160                elif pos == 6: 
    150161                        if user in self.notify: 
    151162                                self.notify.remove(user) 
     
    153164                                if not user in self.notify: 
    154165                                        self.notify.append(user) 
    155                 elif pos == 6: 
     166                elif pos == 7: 
    156167                        if user in self.privileged: 
    157168                                self.privileged.remove(user) 
     
    166177                store = treeview.get_model() 
    167178                iter = store.get_iter(index) 
    168                 if pos == 8: 
     179                if pos == 9: 
    169180                        self.SetComment(iter, store, value) 
    170181                 
     
    180191                        if i[0] == user: 
    181192                                i[2] = last_seen 
    182                                 self.usersmodel.set(i[3], 7, last_seen) 
    183                                 self.usersmodel.set(i[3], 12, int(time_from_epoch)) 
     193                                self.usersmodel.set(i[3], 8, last_seen) 
     194                                self.usersmodel.set(i[3], 13, int(time_from_epoch)) 
    184195                                break 
    185196                                 
     
    188199                         
    189200        def SetComment(self, iter, store, comments=None): 
    190                 user = store.get_value(iter, 1) 
     201                user = store.get_value(iter, 2) 
    191202                if comments is not None: 
    192203                        for i in self.userlist: 
    193204                                if i[0] == user: 
    194205                                        i[1] = comments 
    195                                         self.usersmodel.set(iter, 8, comments) 
     206                                        self.usersmodel.set(iter, 9, comments) 
    196207                                        break 
    197208                        self.SaveUserList() 
     
    199210        def ConnClose(self): 
    200211                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) 
    202213 
    203214                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 "": 
    205216                                self.SetLastSeen(user[0]) 
    206217         
     
    211222                if d: 
    212223                        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) 
    214225                         
    215226                        if event.button != 3: 
     
    243254                if iter is None: 
    244255                        return 
    245                 if msg.status == int(self.usersmodel.get_value(iter, 9)): 
     256                if msg.status == int(self.usersmodel.get_value(iter, 10)): 
    246257                        return 
    247258 
     
    252263 
    253264                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) 
    255266 
    256267                if msg.status: # online 
    257268                        self.SetLastSeen(msg.user, online=True) 
    258                 elif self.usersmodel.get(iter, 7)[0] is "": # disconnected 
     269                elif self.usersmodel.get(iter, 8)[0] is "": # disconnected 
    259270                        self.SetLastSeen(msg.user) 
    260271 
     
    265276                hspeed = Humanize(msg.avgspeed) 
    266277                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                                 
    268298 
    269299        def AddToList(self, user): 
     
    271301                        return 
    272302 
    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, ""] 
    274304                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)]) 
    276306                 
    277307                self.SaveUserList() 
     
    299329                                if i[0] == user: 
    300330                                        i[1] = comments 
    301                                         self.usersmodel.set(i[3], 8, comments) 
     331                                        self.usersmodel.set(i[3], 9, comments) 
    302332                                        break 
    303333                        self.SaveUserList() 
     
    307337 
    308338                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]]) 
    310340                self.frame.np.config.sections["server"]["userlist"] = l 
    311341                self.frame.np.config.writeConfig() 
     
    370400                for i in self.userlist: 
    371401                        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  
    626626        def __init__(self, user = None): 
    627627                self.user = user 
    628          
     628                self.country = None 
     629                 
    629630        def makeNetworkMessage(self): 
    630631                return self.packObject(self.user)