Changeset 438

Show
Ignore:
Timestamp:
02/15/07 10:39:35 (18 months ago)
Author:
daelstorm
Message:

Murmur: Icons appear in chat room (also hilite icons), private tabs, browse, search, user-info child-tabs; /usearch, /bsearch and /rsearch commands now work, Join/Leave room popups fixed; help dialogs data modified; User stats updated in chatrooms; room list sorting enabled and is fast this time; chatroom userlist sorting enabled; MasterRoom? and Chatrooms classes merged

Location:
murmur/trunk/sources
Files:
1 added
4 modified

Legend:

Unmodified
Added
Removed
  • murmur/trunk/sources/encode_bitmaps.py

    r393 r438  
    2727        ["close.png", "close"], 
    2828        ["logo.png", "logo"], 
     29        ["hilite.png", "hilite"],        
    2930] 
    30  
     31path = "" 
     32if len (sys.argv[1:]) == 1: 
     33    path = sys.argv[1] 
    3134outf = open(os.path.join("pymurmur","imagedata.py"), "w") 
    3235for image in table: 
    3336        print image[0] 
    34         f = open(os.path.join("images", image[0]), "rb") 
     37        if os.path.exists(os.path.join(os.path.join("images", path), image[0])): 
     38            filename = os.path.join(os.path.join("images", path), image[0]) 
     39        else: 
     40            filename = os.path.join("images", image[0]) 
     41         
     42        f = open(filename, "rb") 
    3543        d = f.read() 
    3644        f.close() 
  • murmur/trunk/sources/murmur

    r433 r438  
    284284        button.grab_default() 
    285285        self.ret = None 
     286         
    286287    def quit(self, w=None, event=None): 
    287288        self.hide() 
    288289        self.destroy() 
    289         #gtk.main_quit() 
     290        gtk.main_quit() 
     291         
    290292    def click(self, button): 
    291293        self.ret = None 
     
    325327                                        self.frame.userlists.trusted.update(key, value) 
    326328                                if domain in ("banned", "buddies", "ignored", "trusted"): 
    327                                         self.frame.ChatRooms.roomsmaster.GetListStatus( key) 
     329                                        self.frame.ChatRooms.GetListStatus( key) 
    328330                                        self.frame.userlists.updateListIcon(key) 
    329331                                 
     
    345347                                        self.frame.userlists.trusted.append(key, value) 
    346348                                if domain in ("banned", "buddies", "ignored", "trusted"): 
    347                                         self.frame.ChatRooms.roomsmaster.GetListStatus( key) 
     349                                        self.frame.ChatRooms.GetListStatus( key) 
    348350                                        self.frame.userlists.updateListIcon(key) 
    349351                                         
     
    373375                                self.frame.userlists.trusted.remove(key) 
    374376                        if domain in ("banned", "buddies", "ignored", "trusted"): 
    375                                 self.frame.ChatRooms.roomsmaster.GetListStatus(key) 
     377                                self.frame.ChatRooms.GetListStatus(key) 
    376378                                self.frame.userlists.updateListIcon(key) 
    377379                        if domain == "interests.hate": 
     
    583585 
    584586                if DEBUG == True: print " **** cb_room_list", len(roomlist) 
    585                 self.frame.room_lists = {} 
    586                 for x, y in roomlist.items(): 
    587                         self.frame.room_lists[x] = y 
    588                         #print x, y 
    589                          
    590                 self.frame.ChatRooms.roomsmaster.UpdateRoomList(roomlist) 
     587                #self.frame.room_lists = {} 
     588                #for x, y in roomlist.items(): 
     589                        #self.chatrooms.rooms[x] = y 
     590                        ##print x, y 
     591                         
     592                self.frame.ChatRooms.UpdateRoomList(roomlist) 
    591593                gtk.gdk.threads_leave() 
    592594 
     
    604606                gtk.gdk.threads_enter() 
    605607                 
    606                 if DEBUG == True: print " **** cb_search_ticket" 
     608                if DEBUG == True: print " **** cb_search_ticket", query, ticket 
    607609                self.frame.Searches.NewSearch( query, ticket) 
    608610                 
     
    678680                gtk.gdk.threads_enter() 
    679681                try: 
    680                         self.frame.ChatRooms.roomsmaster.SayChatRoom(room, user, text) 
     682                        self.frame.ChatRooms.SayChatRoom(room, user, text) 
    681683                        self.frame.Logging.ChatRoomLog(room, user, text) 
    682684                except Exception,e: 
     
    688690                if DEBUG == True: print "Logged in, getting Rooms" 
    689691                try: 
    690                         for rooms1, numbers in roomlist.items(): 
    691                                 self.frame.room_lists[str(rooms1)] = numbers 
    692                         self.frame.ChatRooms.roomsmaster.UpdateRoomList(roomlist) 
     692                 
     693                        self.frame.ChatRooms.UpdateRoomList(roomlist) 
    693694                        joined_rooms = joined.keys() 
    694695                        joined_rooms.sort(key=str.lower) 
    695696                        for room in joined_rooms: 
    696                                 room = str(room) 
    697  
    698                                 roomlist = [] 
    699  
    700                                 for users in joined[room]: 
    701                                         roomlist.append(users) 
    702                                         self.frame.user_stats[users] = [joined[room][users][0], joined[room][users][1], joined[room][users][2 ], joined[room][users][3], joined[room][users][4], 1] 
    703                                 self.frame.ChatRooms.roomsmaster.JoinRoom(room, joined[room]) 
    704                         created = [] 
     697                                for users, stats in joined[room].items(): 
     698                                        self.frame.user_stats[users] = [stats[0], stats[1], stats[2], stats[3], stats[4], 1] 
     699                                self.frame.ChatRooms.JoinRoom(str(room), joined[room]) 
    705700 
    706701                except Exception, e: 
     
    717712                         
    718713         
    719                         self.frame.ChatRooms.roomsmaster.JoinRoom(room, list_of_users) 
     714                        self.frame.ChatRooms.JoinRoom(room, list_of_users) 
    720715                                 
    721716                                 
     
    728723                if DEBUG == True: print " **** cb_room_left %s"% room 
    729724                try: 
    730                         self.frame.ChatRooms.roomsmaster.LeaveRoom(room) 
     725                        self.frame.ChatRooms.LeaveRoom(room) 
    731726                except Exception, e: 
    732727                        if DEBUG == True: print "Leave room bug", e 
     
    742737                        self.frame.user_stats[user] = [stats[0], stats[1], stats[2 ], stats[3], stats[4], 1]  
    743738                         
    744                         self.frame.ChatRooms.roomsmaster.UserJoinedRoom(room, user) 
     739                        self.frame.ChatRooms.UserJoinedRoom(room, user) 
    745740                         
    746741                except Exception, e: 
     
    755750                                print "%s left room %s" % (user, room) 
    756751                                 
    757                         self.frame.ChatRooms.roomsmaster.UserLeftRoom(room, user) 
     752                        self.frame.ChatRooms.UserLeftRoom(room, user) 
    758753 
    759754 
     
    806801                                self.frame.TrayApp.SetToolTip( "Couldn't connect to Museek: %s" % "Invalid Password") 
    807802                                self.frame.update_statusbar( "Invalid Password") 
    808                                  
    809                                 #self.connect() 
     803         
    810804                                 
    811805                        else: 
     
    864858                        self.config = {} 
    865859 
    866                         self.frame.ChatRooms.roomsmaster.ConnClose() 
     860                        self.frame.ChatRooms.ConnClose() 
    867861 
    868862                        self.connected = False 
     
    897891                                        self.frame.TrayApp.SetImage("red") 
    898892 
    899                          
    900893                        self.frame.username = username 
    901                         #self.start_MurmurWindow("window") 
    902          
    903                          
     894                                         
    904895                except Exception,e: 
    905896                        if DEBUG == True: print " **** cb_server_state ERROR", e 
     
    956947                        if DEBUG == True: print " **** cb_peer_stats ERROR", e 
    957948                #gtk.gdk.threads_enter() 
     949                 
     950                self.frame.ChatRooms.GetUserStats( user, speed, files) 
    958951                self.frame.userlists.updateStats(user, self.frame.user_stats[user]) 
    959952 
     
    972965                         
    973966                        ## Update Lists with new status information 
    974                         self.frame.ChatRooms.roomsmaster.GetUserStatus( user, status) 
     967                        self.frame.ChatRooms.GetUserStatus( user, status) 
    975968                        self.frame.userlists.updateStatus(user, status) 
    976969                        self.frame.PrivateChats.updateStatus(user, status) 
     
    12211214        # @param searchtype (0:Global, 1:Buddy, 2:Rooms) 
    12221215        # @param query Search string 
    1223         def Search(self, searchtype, query): 
    1224                 message = messages.Search(searchtype, query ) 
    1225                 self.SendMessage(message) 
     1216        def Search(self, searchtype, query, user=None): 
     1217 
     1218                if searchtype in (0, 1, 2): 
     1219                        message = messages.Search(searchtype, query ) 
     1220                        self.SendMessage(message) 
     1221                elif searchtype == 3 and user is not None: 
     1222                        self.UserSearch(user, query) 
     1223                         
    12261224        ## Search a user's shares for a string 
    12271225        # @param self Networking (class) 
     
    14601458        def OnJoinRoom(self, widget): 
    14611459                room = self.user 
    1462                 self.frame.RoomJoin(room) 
     1460                self.frame.JoinARoom(room) 
    14631461 
    14641462         
     
    15041502                hbox1.set_spacing(5) 
    15051503                 
    1506                 label1 = gtk.Label(("Search Shares For:")) 
    1507                 label1.set_padding(5, 0) 
    1508                 label1.show() 
    1509                 hbox1.pack_start(label1, False, False, 5) 
     1504                self.label1 = gtk.Label(("Search Shares For:")) 
     1505                self.label1.set_padding(5, 0) 
     1506                self.label1.show() 
     1507                hbox1.pack_start(self.label1, False, False, 5) 
    15101508                 
    15111509                self.entry = entry= gtk.Entry() 
     
    15171515                hbox1.pack_start(entry, True, True, 5) 
    15181516                 
    1519                 self.searchbutton = self.frame.CreateIconButton(gtk.STOCK_FIND, "stock", self.SearchShares, "Search") 
    1520  
    1521                  
    1522                 hbox1.pack_start(self.searchbutton, False, False, 5) 
     1517                self.SearchButton = self.frame.CreateIconButton(gtk.STOCK_FIND, "stock", self.SearchShares, "Search") 
     1518 
     1519                 
     1520                hbox1.pack_start(self.SearchButton, False, False, 5) 
     1521                 
     1522                self.RefreshButton = self.frame.CreateIconButton(gtk.STOCK_REFRESH, "stock", self.OnRefreshShares, "Refresh") 
     1523 
     1524                 
     1525                hbox1.pack_start(self.RefreshButton, False, False, 5) 
    15231526                 
    15241527                self.Main.pack_start(hbox1, False, True, 0) 
     
    16861689                files = [] 
    16871690                files += self.DownloadDirectoryRecursive(dir, os.path.join(localdir, "")) 
    1688                 print files 
     1691                 
    16891692                # Check the number of files to be downloaded, just to make sure we aren't accidently downloading hundreds or thousands 
    16901693                numfiles = len(files) 
     
    17441747        def OnDownloadFiles(self, widget, prefix = ""): 
    17451748                dir = self.selected_folder 
    1746                 print self.selected_files 
    17471749                for fn in self.selected_files: 
    17481750                        self.frame.Networking.DownloadFileTo(self.user, "\\".join([dir, fn]), prefix) 
     
    18591861                if DEBUG == True:  print "-- dir :", directory 
    18601862                self.BrowseChangeDir(self.user, directory) 
    1861                          
     1863                 
     1864        def SetSensitive(self, bool): 
     1865                self.DirTreeView.set_sensitive(bool) 
     1866                self.FilesTreeView.set_sensitive(bool) 
     1867                self.SearchButton.set_sensitive(bool) 
     1868                self.RefreshButton.set_sensitive(bool) 
     1869                self.entry.set_sensitive(bool) 
     1870                self.label1.set_sensitive(bool) 
     1871                 
    18621872        def ShowShares(self, user, shares): 
    18631873                try: 
     1874                         
    18641875                        if user != self.user: 
    18651876                                return 
     
    18691880                        self.BrowseChangeDir(user, directory) 
    18701881                        self.DirTreeView.expand_all() 
     1882                        self.SetSensitive(True) 
    18711883                         
    18721884                except Exception,e: 
     
    18751887        def OnClose(self, user): 
    18761888                self.browses.RemoveTab(self) 
    1877  
    1878         def SearchShares(self, user): 
     1889                 
     1890        def OnRefreshShares(self, widget): 
     1891                self.SetSensitive(False) 
     1892                self.frame.GetShares(self.user) 
     1893                 
     1894        def SearchShares(self, widget): 
    18791895                query = self.entry.get_text() 
    18801896                if self.query == query: 
     
    18831899                        self.search_position = 0 
    18841900                self.query = query 
     1901                if self.query == "": 
     1902                        return 
    18851903                if DEBUG == True: print "Query:", query 
    18861904                dir = self.directory 
     
    20222040 
    20232041                        self.users[user].ShowShares(user, shares) 
     2042                self.request_changed(self.users[user].Main) 
    20242043                self.frame.RequestIcon(self.frame.UserBrowseLabel)       
    20252044        def OnSwitchPage(self, notebook, page, page_num, force = 0): 
     
    22332252 
    22342253                        self.users[user].ShowInfo(user, info, picture, uploads, queue, slotsfree) 
    2235                          
     2254                self.request_changed(self.users[user].Main) 
    22362255        def OnSwitchPage(self, notebook, page, page_num, force = 0): 
    22372256                 
     
    25522571                elif cmd in ["/s", "/search"]: 
    25532572                        if realargs: 
    2554                                 self.frame.Searches.DoSearch(0, realargs) 
     2573                                self.frame.Networking.Search(0, realargs) 
    25552574                                self.frame.OnSearch(None) 
    25562575                elif cmd in ["/us", "/usearch"]: 
    2557                         if realargs: 
    2558                                 self.frame.searches.user = self.user 
    2559                                 self.frame.searches.DoSearch(3, realargs) 
     2576                        s = args.split(" ", 1) 
     2577                        if len(s) == 2: 
     2578                                self.frame.Networking.Search(3, s[1], s[0]) 
    25602579                                self.frame.OnSearch(None) 
     2580                        else: 
     2581                                return 
    25612582                elif cmd in ["/rs", "/rsearch"]: 
    25622583                        if realargs: 
    2563                                 #self.frame.searches.DoSearch(1, realargs) 
     2584                                self.frame.Networking.Search(1, realargs) 
    25642585                                self.frame.OnSearch(None) 
    25652586                elif cmd in ["/bs", "/bsearch"]: 
    25662587                        if realargs: 
    2567                                 self.frame.searches.DoSearch(2, realargs) 
     2588                                self.frame.Networking.Search(2, realargs) 
    25682589                                self.frame.OnSearch(None) 
    25692590                elif cmd in ["/ad", "/add", "/buddy"]: 
     
    27152736                        return 
    27162737 
    2717                 #ctcpversion = 0 
    2718                 #if text == "\x01VERSION\x01": 
    2719                         #ctcpversion = 1 
    2720                         #text = "CTCP VERSION" 
     2738                ctcpversion = 0 
     2739                if text == "\x01VERSION\x01": 
     2740                        ctcpversion = 1 
     2741                        text = "CTCP VERSION" 
    27212742                self.SendMessage(user, None) 
    27222743                tab = self.users[user] 
     
    27302751                                #self.frame.tray_status["hilites"]["private"].append(msg.user) 
    27312752                                #self.frame.SetImage(None) 
    2732                                  
     2753                self.request_changed(self.users[user].Main) 
     2754                 
    27332755        def OnSwitchPage(self, notebook, page, page_num, force = 0): 
    27342756                if self.frame.notebook_outside.get_current_page() != 1 and not force: 
     
    27662788                del self.tickets[tab.ticket] 
    27672789                 
    2768         def DoSearch(self, searchtype, query): 
    2769                 self.frame.Networking.Search(searchtype, query) 
     2790        def DoSearch(self, searchtype, query, user=None): 
     2791                self.frame.Networking.Search(searchtype, query, user=None) 
    27702792                         
    27712793        def OnSwitchPage(self, notebook, page, page_num, force = 0): 
     
    27812803                if self.tickets.has_key(ticket): 
    27822804                        self.tickets[ticket].NewResults(user, free, speed, queue, results) 
     2805                        self.request_changed(self.tickets[ticket].Main) 
    27832806                         
    27842807        def NewSearch(self, query, ticket): 
     
    28072830                 
    28082831                self.ScrolledWindow =  gtk.ScrolledWindow() 
    2809                 self.ScrolledWindow.set_policy(gtk.POLICY_ALWAYS, gtk.POLICY_ALWAYS) 
     2832                self.ScrolledWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) 
    28102833                self.ScrolledWindow.show() 
    28112834                self.ScrolledWindow.set_shadow_type(gtk.SHADOW_IN) 
     
    31193142class ChatRoom: 
    31203143         
    3121         def __init__(self, roomsmaster, room, users): 
     3144        def __init__(self, chatrooms, room, users): 
    31223145                self.lines = [] 
    3123                 self.roomsmaster = roomsmaster 
    3124                 self.frame = roomsmaster.frame 
     3146                self.chatrooms = chatrooms 
     3147                self.frame = chatrooms.frame 
    31253148                self.room = room 
    31263149                self.leaving = 0 
     
    31953218                        hspeed = Humanize(users[user][1]) 
    31963219                        hfiles = Humanize(users[user][3]) 
    3197                         #iter = self.usersmodel.append([img, user, hspeed, hfiles, users[user][0], users[user][1], users[user][2]]) 
    3198                         iter = self.usersmodel.append([img, str(user), hfiles, hspeed, users[user][0] ] ) #, , users[user][1], users[user][2]]) 
     3220                        iter = self.usersmodel.append([img, str(user), hfiles, hspeed, users[user][0] ] ) 
    31993221                        self.users[user] = iter 
    3200                 #self.usersmodel.set_sort_column_id(1, gtk.SORT_ASCENDING) 
     3222                self.usersmodel.set_sort_column_id(1, gtk.SORT_ASCENDING) 
    32013223                 
    32023224                self.popup_menu = popup = PopupMenu(self.frame, "chat") 
     
    33303352                                 
    33313353                elif cmd == "/reload": 
    3332                         self.Networking.ReloadShares() 
     3354                        self.frame.Networking.ReloadShares() 
    33333355                         
    33343356                elif cmd == "/pm": 
     
    33463368                elif cmd in ["/s", "/search"]: 
    33473369                        if realargs: 
    3348                                 self.frame.Searches.DoSearch(0, realargs) 
     3370                                self.frame.Networking.Search(0, realargs) 
    33493371                                self.frame.OnSearch(None) 
    33503372                elif cmd in ["/us", "/usearch"]: 
    3351                         if realargs: 
    3352                                 self.frame.searches.user = self.user 
    3353                                 self.frame.searches.DoSearch(3, realargs) 
     3373                        s = args.split(" ", 1) 
     3374                        if len(s) == 2: 
     3375                                self.frame.Networking.Search(3, s[1], s[0]) 
    33543376                                self.frame.OnSearch(None) 
     3377                        else: 
     3378                                return 
     3379                        #if realargs: 
     3380                                ##self.frame.Searches.user = self.user 
     3381                                #self.frame.Searches.DoSearch(3, realargs) 
     3382                                #self.frame.OnSearch(None) 
    33553383                elif cmd in ["/rs", "/rsearch"]: 
    33563384                        if realargs: 
     3385                                self.frame.Networking.Search(2, realargs) 
    33573386                                self.frame.OnSearch(None) 
    33583387                elif cmd in ["/bs", "/bsearch"]: 
    33593388                        if realargs: 
    3360                                 self.frame.searches.DoSearch(2, realargs) 
     3389                                self.frame.Networking.Search(1, realargs) 
    33613390                                self.frame.OnSearch(None) 
    33623391                elif cmd in ["/ad", "/add", "/buddy"]: 
     
    34773506 
    34783507                        self.lines.append(AppendLine(self.chatview, message, None, username=user, usertag=self.tag_users[user])) 
    3479                          
     3508                if user != self.frame.username and self.frame.username in message: 
     3509                                self.chatrooms.request_hilite(self.Main) 
     3510                else: 
     3511                        self.chatrooms.request_changed(self.Main) 
    34803512                #if self.Log.get_active(): 
    34813513                        #self.logfile = WriteLog(self.logfile, self.frame.np.config.sections["logging"]["logsdir"], self.room, line) 
     
    35433575                self.usersmodel.set(self.users[user], 0, img, 4, status) 
    35443576                 
     3577        def GetUserStats(self, user, speed, files): 
     3578                if not self.users.has_key(user): 
     3579                        return 
     3580                hspeed = Humanize(speed) 
     3581                hfiles = Humanize(files) 
     3582                self.usersmodel.set(self.users[user], 2, hfiles, 3, hspeed) 
     3583 
    35453584        def GetUserStatus(self, user, status): 
    35463585                if not self.users.has_key(user): 
     
    36683707                if self.leaving: 
    36693708                        return 
    3670                 if self.room in self.roomsmaster.joinedrooms: 
     3709                if self.room in self.chatrooms.joinedrooms: 
    36713710                        self.frame.Networking.LeaveRoom(self.room) 
    36723711                self.Leave.set_sensitive(False) 
     
    36903729                self.popup_enable() 
    36913730                self.frame = frame 
    3692                 self.roomsmaster = MasterRoom(frame) 
     3731                 
     3732                self.joinedrooms = {} 
     3733                self.rooms = {} 
     3734                self.autojoin = 1 
     3735                 
     3736                self.CreateRoomList() 
    36933737                 
    36943738                self.set_tab_pos(gtk.POS_TOP) 
     
    36963740                self.show() 
    36973741                self.connect("switch-page", self.OnSwitchPage) 
    3698                  
    3699         def ConnClose(self): 
    3700                 self.roomsmaster.ConnClose() 
     3742      &