Changeset 402
- Timestamp:
- 01/09/07 20:44:45 (20 months ago)
- Location:
- murmur/trunk/sources
- Files:
-
- 2 modified
-
murmur (modified) (16 diffs)
-
pymurmur/utils.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
murmur/trunk/sources/murmur
r401 r402 971 971 self.frame.ChatRooms.roomsmaster.GetUserStatus( user, status) 972 972 self.frame.userlists.updateStatus(user, status) 973 self.frame.PrivateChats.updateStatus(user, status) 973 974 974 975 except Exception,e: … … 2097 2098 self.frame = chats.frame 2098 2099 self.user = user 2099 2100 self.Status = 0 2100 2101 self.Main = gtk.VBox(False, 0) 2101 2102 self.Main.show() … … 2185 2186 def UpdateColours(self): 2186 2187 def makecolour(buffer, colour): 2187 colour = self.frame.Config["colors"][colour] 2188 if self.frame.Config["colors"].has_key(colour): 2189 colour = self.frame.Config["colors"][colour] 2190 else: 2191 colour = "#AAFF00" 2188 2192 font = self.frame.Config["colors"]["chatfont"] 2193 2189 2194 if colour: 2190 2195 return buffer.create_tag(foreground = colour, font=font) … … 2198 2203 self.tag_me = makecolour(buffer, "chatme") 2199 2204 self.tag_hilite = makecolour(buffer, "chathilite") 2200 2205 2206 if self.frame.user_stats.has_key(self.user): 2207 status = self.frame.user_stats[self.user][0] 2208 if status == 1: 2209 color = "useraway" 2210 elif status == 2: 2211 color = "useronline" 2212 else: 2213 color = "useroffline" 2214 else: 2215 color = "useroffline" 2216 self.tag_username = makecolour(buffer, color) 2217 2218 2219 def changecolour(self, tag, colour): 2220 if self.frame.Config["colors"].has_key(colour): 2221 colour = self.frame.Config["colors"][colour] 2222 else: 2223 colour = "" 2224 font = self.frame.Config["colors"]["chatfont"] 2225 2226 if colour: 2227 tag.set_property("foreground", colour) 2228 tag.set_property("font", font) 2229 else: 2230 tag.set_property("font", font) 2231 2232 def ChangeColours(self): 2233 2234 2235 self.changecolour(self.tag_remote, "chatremote") 2236 self.changecolour(self.tag_local, "chatlocal") 2237 self.changecolour(self.tag_me, "chatme") 2238 self.changecolour(self.tag_hilite, "chathilite") 2239 self.changecolour(self.tag_username, color) 2240 self.setStatus() 2241 2242 def setStatus(self): 2243 2244 if self.frame.user_stats.has_key(self.user): 2245 2246 if self.Status == self.frame.user_stats[self.user][0]: 2247 return 2248 self.Status = self.frame.user_stats[self.user][0] 2249 if self.Status == 1: 2250 color = "useraway" 2251 elif self.Status == 2: 2252 color = "useronline" 2253 else: 2254 color = "useroffline" 2255 else: 2256 color = "useroffline" 2257 self.Status = 0 2258 2259 self.changecolour(self.tag_username, color) 2260 2201 2261 def OnClose(self, widget): 2202 2262 #if self.logfile is not None: … … 2226 2286 line = "[%s] %s" % (username, text) 2227 2287 self.frame.RequestIcon(self.frame.PrivateChatLabel) 2228 AppendLine(self.ChatScroll, line, tag, "%c") 2288 AppendLine(self.ChatScroll, line, tag, "%c", username=self.user, usertag=self.tag_username) 2289 #if self.z: 2290 #self.z = 0 2291 #self.tag_username.set_property("foreground", "#00FF00") 2292 #else: 2293 #self.z = 1 2294 #self.tag_username.set_property("foreground", "#FF0000") 2229 2295 #if self.Log.get_active(): 2230 2296 #self.logfile = WriteLog(self.logfile, self.frame.np.config.sections["logging"]["logsdir"], self.user, line) … … 2248 2314 tag = self.tag_local 2249 2315 2250 AppendLine(self.ChatScroll, line, tag, "%c" )2316 AppendLine(self.ChatScroll, line, tag, "%c", username=self.user, usertag= self.tag_username) 2251 2317 #if self.Log.get_active(): 2252 2318 #self.logfile = WriteLog(self.logfile, self.frame.np.config.sections["logging"]["logsdir"], self.user, line) … … 2484 2550 gobject.idle_add(tab.ChatLine.grab_focus) 2485 2551 break 2486 2487 2552 2553 def updateStatus(self, user, status): 2554 if self.users.has_key(user): 2555 gobject.idle_add(self.users[user].setStatus) 2556 2488 2557 def RemoveTab(self, tab): 2489 2558 self.remove_page(self.page_num(tab.Main) ) … … 3033 3102 self.chatEntry.grab_focus() 3034 3103 self.vbox.set_focus_child(self.chatEntry) 3104 3105 self.UpdateColours() 3035 3106 3036 3107 def autojoin_check(self, widget, string): … … 3097 3168 "/rescan", "/tick", "/nsa", "/info"] 3098 3169 #"/rem ", "/cl", "/t", "/a", "/q", "/l", "/p", "/bs", "/rs", "/us", "/s", "/m", "/w", "/al", "/un", "/w" 3170 3099 3171 def SayInChatRoom(self, user, line): 3100 3172 if len(self.lines) >= 400: … … 3121 3193 3122 3194 message = "\n-- ".join(message.split("\n")) 3123 3124 self.lines.append(AppendLine(self.chatview, message, None)) 3195 3196 self.lines.append(AppendLine(self.chatview, message, None, username=user, usertag=self.tag_users[user])) 3197 3125 3198 #if self.Log.get_active(): 3126 3199 #self.logfile = WriteLog(self.logfile, self.frame.np.config.sections["logging"]["logsdir"], self.room, line) … … 3167 3240 iter = self.usersmodel.append([img, username, hfiles, hspeed, status]) 3168 3241 self.users[username] = iter 3242 color = self.getUserStatusColor(status) 3243 if username in self.tag_users.keys(): 3244 self.changecolour(self.tag_users[username], color) 3245 else: 3246 self.tag_users[username] = self.makecolour(self.chatview.get_buffer(), color, username=username) 3169 3247 3170 3248 def UserLeftRoom(self, username): … … 3174 3252 self.usersmodel.remove(self.users[username]) 3175 3253 del self.users[username] 3254 if username in self.tag_users.keys(): 3255 color = self.getUserStatusColor(-1) 3256 self.changecolour(self.tag_users[username], color) 3176 3257 3177 3258 def GetListStatus(self, user): … … 3191 3272 action = _("%s has returned") 3192 3273 AppendLine(self.RoomLog, action % user, None) 3193 3274 if user in self.tag_users.keys(): 3275 color = self.getUserStatusColor(status) 3276 self.changecolour(self.tag_users[user], color) 3194 3277 self.usersmodel.set(self.users[user], 0, img, 4, status) 3195 3278 3279 def makecolour(self, buffer, colour, username=None): 3280 colour = self.frame.Config["colors"][colour] 3281 font = self.frame.Config["colors"]["chatfont"] 3282 if colour: 3283 tag = buffer.create_tag(foreground = colour, font=font) 3284 else: 3285 tag = buffer.create_tag( font=font) 3286 if username is not None: 3287 3288 #tag.set_property("underline", pango.UNDERLINE_SINGLE) 3289 tag.set_property("weight", pango.WEIGHT_BOLD) 3290 tag.connect("event", self.UserNameEvent, username) 3291 tag.last_event_type = -1 3292 #tag = buffer.create_tag( font=font) 3293 return tag 3294 3295 def UserNameEvent(self, tag, widget, event, iter, user): 3296 if tag.last_event_type == gtk.gdk.BUTTON_PRESS and event.type == gtk.gdk.BUTTON_RELEASE and event.button == 1: 3297 if user in self.users.keys(): 3298 self.popup_menu.set_user(user) 3299 items = self.popup_menu.get_children() 3300 # Chat, Userlists use the normal popup system 3301 num = 5 3302 items[num].set_active(self.frame.Networking.config["buddies"].has_key(user)) 3303 items[num+1].set_active(self.frame.Networking.config["banned"].has_key(user)) 3304 items[num+2].set_active(self.frame.Networking.config["ignored"].has_key(user)) 3305 items[num+3].set_active(self.frame.Networking.config["trusted"].has_key(user)) 3306 self.popup_menu.popup(None, None, None, event.button, event.time) 3307 tag.last_event_type = event.type 3308 def UpdateColours(self): 3309 3310 3311 buffer = self.chatview.get_buffer() 3312 self.tag_remote = self.makecolour(buffer, "chatremote") 3313 self.tag_local = self.makecolour(buffer, "chatlocal") 3314 self.tag_me = self.makecolour(buffer, "chatme") 3315 self.tag_hilite = self.makecolour(buffer, "chathilite") 3316 self.tag_users = {} 3317 for user in self.users: 3318 status = self.usersmodel.get_value(self.users[user], 4) 3319 color = self.getUserStatusColor(status) 3320 self.tag_users[user] = self.makecolour(buffer, color, user) 3321 3322 buffer = self.RoomLog.get_buffer() 3323 self.tag_log = self.makecolour(buffer, "chatremote") 3324 3325 def getUserStatusColor(self, status): 3326 if status == 1: 3327 color = "useraway" 3328 elif status == 2: 3329 color = "useronline" 3330 else: 3331 color = "useroffline" 3332 return color 3333 3334 def changecolour(self, tag, colour): 3335 if self.frame.Config["colors"].has_key(colour): 3336 color = self.frame.Config["colors"][colour] 3337 else: 3338 color = "" 3339 font = self.frame.Config["colors"]["chatfont"] 3340 3341 if color: 3342 tag.set_property("foreground", color) 3343 tag.set_property("font", font) 3344 if colour in ["useraway", "useronline", "useroffline"]: 3345 tag.set_property("weight", pango.WEIGHT_BOLD) 3346 else: 3347 tag.set_property("font", font) 3348 3349 def ChangeColours(self): 3350 3351 3352 self.changecolour(self.tag_remote, "chatremote") 3353 self.changecolour(self.tag_local, "chatlocal") 3354 self.changecolour(self.tag_me, "chatme") 3355 self.changecolour(self.tag_hilite, "chathilite") 3356 self.changecolour(self.tag_username, color) 3357 self.setStatus() 3358 3196 3359 def OnPopupMenuRoom(self, widget, event, string, string2): 3197 3360 if event.button != 3: 3198 3361 return 3199 3362 items = self.popup_menu.get_children() 3200 if DEBUG == True: print string3363 #if DEBUG == True: print string 3201 3364 # Chat, Userlists use the normal popup system 3202 3365 num = 5 … … 3344 3507 3345 3508 self.frame.notebook_roomlist.add(self.Main) 3346 3509 3347 3510 3348 3511 def EnterRoom(self, widget, event): … … 3778 3941 for w in [ self.buddies, self.trusted, self.banned, self.ignored ]: 3779 3942 gobject.idle_add(w.updateStatus, user, status) 3943 3780 3944 def updateListIcon(self, user): 3781 3945 for w in [ self.buddies, self.trusted, self.banned, self.ignored ]: … … 4741 4905 "now-playing-prefix": None, "browse_display_mode": "filesystem", \ 4742 4906 "url reader": "firefox", "url custom prefix": ""}, \ 4743 "colors": { "chatme":"FOREST GREEN", "chatremote":"", "chatlocal":"BLUE", \4907 "colors": { "chatme":"FOREST GREEN", "chatremote":"", "useronline":"BLACK", "useraway":"ORANGE","useroffline":"#aa0000", "chatlocal":"BLUE", \ 4744 4908 "chathilite":"red", "search":"","searchq":"GREY", "chatfont": "" },\ 4745 4909 "logging": { "logcollapsed": "no", "log_dir": "~/.murmur/logs/", "logrooms": -
murmur/trunk/sources/pymurmur/utils.py
r399 r402 17 17 URL_RE = re.compile("(\\w+\\://[\\w\\.].+?)[\\s\\(\\)]|(www\\.\\w+\\.\\w+.*?)[\\s\\(\\)]|(mailto\\:\\w.+?)[\\s\\(\\)]") 18 18 PROTOCOL_HANDLERS = {} 19 CATCH_URLS = 019 CATCH_URLS = 1 20 20 HUMANIZE_URLS = 0 21 21 … … 98 98 tag.last_event_type = event.type 99 99 100 def AppendLine(textview, line, tag = None, timestamp = "%H:%M:%S" ):100 def AppendLine(textview, line, tag = None, timestamp = "%H:%M:%S", username=None, usertag=None): 101 101 def _makeurltag(buffer, tag, url): 102 102 props = {} … … 139 139 match = URL_RE.search(line) 140 140 141 141 142 if line: 142 _append(buffer, line, tag) 143 144 if username != None and usertag != None: 145 np = re.compile(username) 146 match = np.search(line) 147 if match != None: 148 start = line[:match.start()] 149 name = match.group()[:] 150 line = line[match.end():] 151 _append(buffer, start, tag) 152 _append(buffer, name, usertag) 153 _append(buffer, line, tag) 154 else: 155 _append(buffer, line, tag) 156 else: 157 _append(buffer, line, tag) 143 158 144 159 if not hasattr(scrolledwindow, "need_scroll"):
