inital patch to make status msg change color in gc too [does not work yet]
This commit is contained in:
parent
846e9881fb
commit
b89fe57543
|
@ -366,8 +366,11 @@ class GroupchatWindow(chat.Chat):
|
|||
if status and gajim.config.get('show_status_msgs_in_roster'):
|
||||
status = status.strip()
|
||||
if status != '':
|
||||
colorstring = 'dimgrey'
|
||||
# escape markup entities and make them small italic and fg color
|
||||
colorstring = gajim.config.get('color_for_status_msg_in_roster')
|
||||
#color = gtkgui_helpers._get_fade_color(self.list_treeview[room_jid],
|
||||
# selected)
|
||||
#colorstring = "#%04x%04x%04x" % (color.red, color.green, color.blue)
|
||||
name += '\n' '<span size="small" style="italic" foreground="%s">%s</span>'\
|
||||
% (colorstring, gtkgui_helpers.escape_for_pango_markup(status))
|
||||
|
||||
|
@ -1295,6 +1298,44 @@ current room topic.') % command, room_jid)
|
|||
message_textview.set_sensitive(False)
|
||||
self.xmls[room_jid].get_widget('send_button').set_sensitive(False)
|
||||
|
||||
def iter_contact_rows(self):
|
||||
'''iterate over all contact rows in the tree model'''
|
||||
return # FIXME: impl
|
||||
model = self.tree.get_model()
|
||||
account_iter = model.get_iter_root()
|
||||
while account_iter:
|
||||
group_iter = model.iter_children(account_iter)
|
||||
while group_iter:
|
||||
contact_iter = model.iter_children(group_iter)
|
||||
while contact_iter:
|
||||
yield model[contact_iter]
|
||||
contact_iter = model.iter_next(contact_iter)
|
||||
group_iter = model.iter_next(group_iter)
|
||||
account_iter = model.iter_next(account_iter)
|
||||
|
||||
def _on_list_treeview_style_set(self, treeview, style):
|
||||
'''When style (theme) changes, redraw all contacts'''
|
||||
return # FIXME: impl
|
||||
for contact in self.iter_contact_rows():
|
||||
self.draw_contact(contact[C_JID], contact[C_ACCOUNT])
|
||||
|
||||
def _on_list_treeview_selection_changed(self, selection):
|
||||
return # FIXME: impl
|
||||
model, selected_iter = selection.get_selected()
|
||||
if self._last_selected_contact is not None:
|
||||
# update unselected row
|
||||
jid, account = self._last_selected_contact
|
||||
self.draw_contact(jid, account)
|
||||
if selected_iter is None:
|
||||
self._last_selected_contact = None
|
||||
return
|
||||
contact = model[selected_iter]
|
||||
self._last_selected_contact = (contact[C_JID], contact[C_ACCOUNT])
|
||||
if contact[C_TYPE] != 'contact':
|
||||
return
|
||||
self.draw_contact(contact[C_JID], contact[C_ACCOUNT], selected=True)
|
||||
|
||||
|
||||
def new_room(self, room_jid, nick):
|
||||
self.names[room_jid] = room_jid.split('@')[0]
|
||||
self.xmls[room_jid] = gtk.glade.XML(GTKGUI_GLADE, 'gc_vbox', APP)
|
||||
|
@ -1308,8 +1349,13 @@ current room topic.') % command, room_jid)
|
|||
self.allow_focus_out_line[room_jid] = True
|
||||
self.last_key_tabs[room_jid] = False
|
||||
self.hpaneds[room_jid] = self.xmls[room_jid].get_widget('hpaned')
|
||||
self.list_treeview[room_jid] = self.xmls[room_jid].get_widget(
|
||||
list_treeview = self.list_treeview[room_jid] = self.xmls[room_jid].get_widget(
|
||||
'list_treeview')
|
||||
list_treeview.get_selection().connect('changed',
|
||||
self._on_list_treeview_selection_changed)
|
||||
list_treeview.connect('style-set', self._on_list_treeview_style_set)
|
||||
self._last_selected_contact = None # None or holds jid, account tupple
|
||||
|
||||
self.subject_tooltip[room_jid] = gtk.Tooltips()
|
||||
|
||||
chat.Chat.new_tab(self, room_jid)
|
||||
|
|
|
@ -383,3 +383,18 @@ def file_is_locked(path_to_file):
|
|||
else: # in case all went ok, close file handle (go to hell WinAPI)
|
||||
hfile.Close()
|
||||
return False
|
||||
|
||||
def _get_fade_color(treeview, selected):
|
||||
'''get a gdk color that is halfway between foreground and background
|
||||
colors of the cell for the given treeview'''
|
||||
style = treeview.style
|
||||
if selected:
|
||||
state = gtk.STATE_SELECTED
|
||||
else:
|
||||
state = gtk.STATE_NORMAL
|
||||
bg = style.base[state]
|
||||
fg = style.text[state]
|
||||
|
||||
return gtk.gdk.Color((bg.red + fg.red)/2,
|
||||
(bg.green + fg.green)/2,
|
||||
(bg.blue + fg.blue)/2)
|
||||
|
|
|
@ -215,21 +215,6 @@ class RosterWindow:
|
|||
return self.transports_state_images[transport]
|
||||
return self.jabber_state_images
|
||||
|
||||
def _get_fade_color(self, selected):
|
||||
'''get a gdk color that is halfway between foreground and background
|
||||
colors of the cell'''
|
||||
style = self.tree.style
|
||||
if selected:
|
||||
state = gtk.STATE_SELECTED
|
||||
else:
|
||||
state = gtk.STATE_NORMAL
|
||||
bg = style.base[state]
|
||||
fg = style.text[state]
|
||||
|
||||
return gtk.gdk.Color((bg.red + fg.red)/2,
|
||||
(bg.green + fg.green)/2,
|
||||
(bg.blue + fg.blue)/2)
|
||||
|
||||
def draw_contact(self, jid, account, selected=False):
|
||||
'''draw the correct state image and name'''
|
||||
model = self.tree.get_model()
|
||||
|
@ -248,7 +233,7 @@ class RosterWindow:
|
|||
status = contact.status.strip()
|
||||
if status != '':
|
||||
# escape markup entities and make them small italic and fg color
|
||||
color = self._get_fade_color(selected)
|
||||
color = gtkgui_helpers._get_fade_color(self.tree, selected)
|
||||
colorstring = "#%04x%04x%04x" % (color.red, color.green, color.blue)
|
||||
name += '\n<span size="small" style="italic" foreground="%s">%s</span>'\
|
||||
% (colorstring, gtkgui_helpers.escape_for_pango_markup(status))
|
||||
|
|
Loading…
Reference in New Issue