[client_icons] Remove groupchat roster functionality
- Gajim does not support hooks into the groupchat roster anymore
This commit is contained in:
@@ -33,9 +33,6 @@ class ClientsIconsPlugin(GajimPlugin):
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.gui_extension_points = {
|
self.gui_extension_points = {
|
||||||
'groupchat_control': (
|
|
||||||
self.connect_with_groupchat_control,
|
|
||||||
self.disconnect_from_groupchat_control),
|
|
||||||
'roster_draw_contact': (
|
'roster_draw_contact': (
|
||||||
self.connect_with_roster_draw_contact,
|
self.connect_with_roster_draw_contact,
|
||||||
None),
|
None),
|
||||||
@@ -49,7 +46,6 @@ class ClientsIconsPlugin(GajimPlugin):
|
|||||||
|
|
||||||
self.config_default_values = {
|
self.config_default_values = {
|
||||||
'show_in_roster': (True, ''),
|
'show_in_roster': (True, ''),
|
||||||
'show_in_groupchats': (True, ''),
|
|
||||||
'show_in_tooltip': (True, ''),
|
'show_in_tooltip': (True, ''),
|
||||||
'show_unknown_icon': (True, ''),
|
'show_unknown_icon': (True, ''),
|
||||||
'pos_in_list': ('0', ''),
|
'pos_in_list': ('0', ''),
|
||||||
@@ -216,76 +212,6 @@ class ClientsIconsPlugin(GajimPlugin):
|
|||||||
self.set_icon(
|
self.set_icon(
|
||||||
roster.model, iter_, self.renderer_num, node, contact)
|
roster.model, iter_, self.renderer_num, node, contact)
|
||||||
|
|
||||||
def connect_with_groupchat_control(self, chat_control):
|
|
||||||
chat_control.nb_ext_renderers += 1
|
|
||||||
chat_control.columns += [str]
|
|
||||||
self.groupchats_tree_is_transformed = True
|
|
||||||
self.chat_control = chat_control
|
|
||||||
col = Gtk.TreeViewColumn()
|
|
||||||
self.muc_renderer_num = 4 + chat_control.nb_ext_renderers
|
|
||||||
client_icon_rend = (
|
|
||||||
'client_icon', Gtk.CellRendererPixbuf(), False,
|
|
||||||
'icon_name', self.muc_renderer_num,
|
|
||||||
self.tree_cell_data_func, chat_control)
|
|
||||||
|
|
||||||
# Remove old column
|
|
||||||
chat_control.list_treeview.remove_column(
|
|
||||||
chat_control.list_treeview.get_column(0))
|
|
||||||
|
|
||||||
# Add new renderer in renderers list
|
|
||||||
position_list = ['name', 'avatar']
|
|
||||||
position = position_list[int(self.config['pos_in_list'])]
|
|
||||||
for renderer in chat_control.renderers_list:
|
|
||||||
if renderer[0] == position:
|
|
||||||
break
|
|
||||||
num = chat_control.renderers_list.index(renderer)
|
|
||||||
chat_control.renderers_list.insert(num, client_icon_rend)
|
|
||||||
|
|
||||||
# Fill and append column
|
|
||||||
chat_control.fill_column(col)
|
|
||||||
chat_control.list_treeview.insert_column(col, 0)
|
|
||||||
|
|
||||||
chat_control.model = Gtk.TreeStore(*chat_control.columns)
|
|
||||||
chat_control.model.set_sort_func(1, chat_control.tree_compare_iters)
|
|
||||||
chat_control.model.set_sort_column_id(1, Gtk.SortType.ASCENDING)
|
|
||||||
chat_control.list_treeview.set_model(chat_control.model)
|
|
||||||
|
|
||||||
# Draw roster
|
|
||||||
for nick in app.contacts.get_nick_list(
|
|
||||||
chat_control.account, chat_control.room_jid):
|
|
||||||
gc_contact = app.contacts.get_gc_contact(
|
|
||||||
chat_control.account, chat_control.room_jid, nick)
|
|
||||||
iter_ = chat_control.add_contact_to_roster(nick)
|
|
||||||
if not self.config['show_in_groupchats']:
|
|
||||||
continue
|
|
||||||
caps = gc_contact.client_caps._node
|
|
||||||
self.set_icon(
|
|
||||||
chat_control.model, iter_,
|
|
||||||
self.muc_renderer_num, caps, gc_contact)
|
|
||||||
chat_control.draw_all_roles()
|
|
||||||
|
|
||||||
# Recalculate column width for ellipsizing
|
|
||||||
chat_control.list_treeview.columns_autosize()
|
|
||||||
|
|
||||||
def disconnect_from_groupchat_control(self, gc_control):
|
|
||||||
gc_control.nb_ext_renderers -= 1
|
|
||||||
col = gc_control.list_treeview.get_column(0)
|
|
||||||
gc_control.list_treeview.remove_column(col)
|
|
||||||
col = Gtk.TreeViewColumn()
|
|
||||||
for renderer in gc_control.renderers_list:
|
|
||||||
if renderer[0] == 'client_icon':
|
|
||||||
gc_control.renderers_list.remove(renderer)
|
|
||||||
break
|
|
||||||
gc_control.fill_column(col)
|
|
||||||
gc_control.list_treeview.insert_column(col, 0)
|
|
||||||
gc_control.columns = gc_control.columns[:self.muc_renderer_num] + \
|
|
||||||
gc_control.columns[self.muc_renderer_num + 1:]
|
|
||||||
gc_control.model = Gtk.TreeStore(*gc_control.columns)
|
|
||||||
gc_control.model.set_sort_func(1, gc_control.tree_compare_iters)
|
|
||||||
gc_control.model.set_sort_column_id(1, Gtk.SortType.ASCENDING)
|
|
||||||
gc_control.list_treeview.set_model(gc_control.model)
|
|
||||||
gc_control.draw_roster()
|
|
||||||
|
|
||||||
def activate(self):
|
def activate(self):
|
||||||
self.active = None
|
self.active = None
|
||||||
roster = app.interface.roster
|
roster = app.interface.roster
|
||||||
@@ -372,8 +298,7 @@ class ClientsIconsPlugin(GajimPlugin):
|
|||||||
return
|
return
|
||||||
|
|
||||||
if contact.is_gc_contact:
|
if contact.is_gc_contact:
|
||||||
self._draw_gc_contact(event, contact)
|
return
|
||||||
else:
|
|
||||||
self._draw_roster_contact(event, contact)
|
self._draw_roster_contact(event, contact)
|
||||||
|
|
||||||
def _draw_roster_contact(self, event, contact):
|
def _draw_roster_contact(self, event, contact):
|
||||||
@@ -401,23 +326,6 @@ class ClientsIconsPlugin(GajimPlugin):
|
|||||||
self.set_icon(
|
self.set_icon(
|
||||||
roster.model, iter_, self.renderer_num, caps, contact)
|
roster.model, iter_, self.renderer_num, caps, contact)
|
||||||
|
|
||||||
def _draw_gc_contact(self, event, contact):
|
|
||||||
if not self.config['show_in_groupchats']:
|
|
||||||
return
|
|
||||||
|
|
||||||
control = app.interface.msg_win_mgr.get_gc_control(
|
|
||||||
contact.room_jid, event.conn.name)
|
|
||||||
if control is None:
|
|
||||||
return
|
|
||||||
iter_ = control.get_contact_iter(contact.name)
|
|
||||||
if control.model[iter_][self.muc_renderer_num] is not None:
|
|
||||||
return
|
|
||||||
caps = contact.client_caps._node
|
|
||||||
if not caps:
|
|
||||||
return
|
|
||||||
self.set_icon(
|
|
||||||
control.model, iter_, self.muc_renderer_num, caps, contact)
|
|
||||||
|
|
||||||
def _get_contact_or_gc_contact_for_jid(self, account, fjid):
|
def _get_contact_or_gc_contact_for_jid(self, account, fjid):
|
||||||
contact = app.contacts.get_contact_from_full_jid(account, fjid)
|
contact = app.contacts.get_contact_from_full_jid(account, fjid)
|
||||||
|
|
||||||
@@ -438,24 +346,3 @@ class ClientsIconsPlugin(GajimPlugin):
|
|||||||
return
|
return
|
||||||
|
|
||||||
model[iter_][pos] = icon_name
|
model[iter_][pos] = icon_name
|
||||||
|
|
||||||
def tree_cell_data_func(self, column, renderer, model, iter_, control):
|
|
||||||
if not model.iter_parent(iter_):
|
|
||||||
renderer.set_property('visible', False)
|
|
||||||
return
|
|
||||||
|
|
||||||
if model[iter_][self.muc_renderer_num]:
|
|
||||||
renderer.set_property('visible', True)
|
|
||||||
|
|
||||||
contact = app.contacts.get_gc_contact(
|
|
||||||
control.account, control.room_jid, model[iter_][1])
|
|
||||||
if not contact:
|
|
||||||
return
|
|
||||||
|
|
||||||
bgcolor = app.config.get_per(
|
|
||||||
'themes', app.config.get('roster_theme'), 'contactbgcolor')
|
|
||||||
if bgcolor:
|
|
||||||
renderer.set_property('cell-background', bgcolor)
|
|
||||||
else:
|
|
||||||
renderer.set_property('cell-background', None)
|
|
||||||
renderer.set_property('width', 16)
|
|
||||||
|
|||||||
@@ -38,10 +38,6 @@ class ClientsIconsConfigDialog(SettingsDialog):
|
|||||||
SettingType.VALUE, self.plugin.config['show_in_roster'],
|
SettingType.VALUE, self.plugin.config['show_in_roster'],
|
||||||
callback=self._on_setting, data='show_in_roster'),
|
callback=self._on_setting, data='show_in_roster'),
|
||||||
|
|
||||||
Setting(SettingKind.SWITCH, _('Show Icons in Group Chats'),
|
|
||||||
SettingType.VALUE, self.plugin.config['show_in_groupchats'],
|
|
||||||
callback=self._on_setting, data='show_in_groupchats'),
|
|
||||||
|
|
||||||
Setting(SettingKind.SWITCH, _('Show Icons in Tooltip'),
|
Setting(SettingKind.SWITCH, _('Show Icons in Tooltip'),
|
||||||
SettingType.VALUE, self.plugin.config['show_in_tooltip'],
|
SettingType.VALUE, self.plugin.config['show_in_tooltip'],
|
||||||
callback=self._on_setting, data='show_in_tooltip'),
|
callback=self._on_setting, data='show_in_tooltip'),
|
||||||
|
|||||||
Reference in New Issue
Block a user