clients_icons. ability to change icon position
This commit is contained in:
@@ -83,7 +83,7 @@ class ClientsIconsPlugin(GajimPlugin):
|
|||||||
|
|
||||||
@log_calls('ClientsIconsPlugin')
|
@log_calls('ClientsIconsPlugin')
|
||||||
def init(self):
|
def init(self):
|
||||||
self.config_dialog = ClientsIconsPluginConfigDialog(self)
|
self.pos_list = ['after statusicon', 'befor avatar']
|
||||||
self.events_handlers = {'CAPS_RECEIVED':
|
self.events_handlers = {'CAPS_RECEIVED':
|
||||||
(ged.POSTGUI, self.caps_received),
|
(ged.POSTGUI, self.caps_received),
|
||||||
'presence-received':
|
'presence-received':
|
||||||
@@ -96,9 +96,10 @@ 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_groupchats': (True,''),
|
||||||
'show_unknown_icon': (True,''),}
|
'show_unknown_icon': (True,''),
|
||||||
|
'pos_in_list': (0,''),}
|
||||||
|
|
||||||
self.groupchats_tree_is_transformed = False
|
self.config_dialog = ClientsIconsPluginConfigDialog(self)
|
||||||
theme = gtk.icon_theme_get_default()
|
theme = gtk.icon_theme_get_default()
|
||||||
self.default_pixbuf = theme.load_icon('gtk-dialog-question', 16,
|
self.default_pixbuf = theme.load_icon('gtk-dialog-question', 16,
|
||||||
gtk.ICON_LOOKUP_USE_BUILTIN)
|
gtk.ICON_LOOKUP_USE_BUILTIN)
|
||||||
@@ -117,9 +118,11 @@ class ClientsIconsPlugin(GajimPlugin):
|
|||||||
# remove old column
|
# remove old column
|
||||||
chat_control.list_treeview.remove_column(
|
chat_control.list_treeview.remove_column(
|
||||||
chat_control.list_treeview.get_column(0))
|
chat_control.list_treeview.get_column(0))
|
||||||
# add new renderer in renderers list after location pixbuf renderer
|
# add new renderer in renderers list
|
||||||
|
position_list = ['name', 'avatar']
|
||||||
|
position = position_list[self.config['pos_in_list']]
|
||||||
for renderer in chat_control.renderers_list:
|
for renderer in chat_control.renderers_list:
|
||||||
if renderer[0] == 'name':
|
if renderer[0] == position:
|
||||||
break
|
break
|
||||||
num = chat_control.renderers_list.index(renderer)
|
num = chat_control.renderers_list.index(renderer)
|
||||||
chat_control.renderers_list.insert(num, client_icon_rend)
|
chat_control.renderers_list.insert(num, client_icon_rend)
|
||||||
@@ -148,9 +151,11 @@ class ClientsIconsPlugin(GajimPlugin):
|
|||||||
roster._fill_pep_pixbuf_renderer, self.renderer_num)
|
roster._fill_pep_pixbuf_renderer, self.renderer_num)
|
||||||
# remove old column
|
# remove old column
|
||||||
roster.tree.remove_column(roster.tree.get_column(0))
|
roster.tree.remove_column(roster.tree.get_column(0))
|
||||||
# add new renderer in renderers list after location pixbuf renderer
|
# add new renderer in renderers list
|
||||||
|
position_list = ['name', 'avatar']
|
||||||
|
position = position_list[self.config['pos_in_list']]
|
||||||
for renderer in roster.renderers_list:
|
for renderer in roster.renderers_list:
|
||||||
if renderer[0] == 'name':
|
if renderer[0] == position:
|
||||||
break
|
break
|
||||||
num = roster.renderers_list.index(renderer)
|
num = roster.renderers_list.index(renderer)
|
||||||
roster.renderers_list.insert(num, client_icon_rend)
|
roster.renderers_list.insert(num, client_icon_rend)
|
||||||
@@ -174,8 +179,12 @@ class ClientsIconsPlugin(GajimPlugin):
|
|||||||
break
|
break
|
||||||
roster.fill_column(col)
|
roster.fill_column(col)
|
||||||
roster.tree.insert_column(col, 0)
|
roster.tree.insert_column(col, 0)
|
||||||
roster.columns.remove(roster.columns[self.renderer_num])
|
roster.columns = roster.columns[:self.renderer_num] + roster.columns[
|
||||||
|
self.renderer_num+1:]
|
||||||
roster.setup_and_draw_roster()
|
roster.setup_and_draw_roster()
|
||||||
|
# TODO remove this
|
||||||
|
import time
|
||||||
|
time.sleep(2)
|
||||||
|
|
||||||
def caps_received(self, account, data):
|
def caps_received(self, account, data):
|
||||||
if not self.config['show_in_roster']:
|
if not self.config['show_in_roster']:
|
||||||
@@ -265,11 +274,20 @@ class ClientsIconsPluginConfigDialog(GajimPluginConfigDialog):
|
|||||||
self.xml = gtk.Builder()
|
self.xml = gtk.Builder()
|
||||||
self.xml.add_objects_from_file(self.GTK_BUILDER_FILE_PATH,
|
self.xml.add_objects_from_file(self.GTK_BUILDER_FILE_PATH,
|
||||||
['vbox1'])
|
['vbox1'])
|
||||||
#config_table = self.xml.get_object('config_table')
|
|
||||||
vbox = self.xml.get_object('vbox1')
|
vbox = self.xml.get_object('vbox1')
|
||||||
self.child.pack_start(vbox)
|
self.child.pack_start(vbox)
|
||||||
self.xml.connect_signals(self)
|
self.xml.connect_signals(self)
|
||||||
self.connect('hide', self.on_hide)
|
self.connect('hide', self.on_hide)
|
||||||
|
self.combo = self.xml.get_object('combobox1')
|
||||||
|
self.liststore = gtk.ListStore(str)
|
||||||
|
self.combo.set_model(self.liststore)
|
||||||
|
cellrenderer = gtk.CellRendererText()
|
||||||
|
self.combo.pack_start(cellrenderer, True)
|
||||||
|
self.combo.add_attribute(cellrenderer, 'text', 0)
|
||||||
|
|
||||||
|
for item in self.plugin.pos_list:
|
||||||
|
self.liststore.append((item,))
|
||||||
|
self.combo.set_active(self.plugin.config['pos_in_list'])
|
||||||
|
|
||||||
def on_hide(self, widget):
|
def on_hide(self, widget):
|
||||||
pass
|
pass
|
||||||
@@ -290,3 +308,6 @@ class ClientsIconsPluginConfigDialog(GajimPluginConfigDialog):
|
|||||||
|
|
||||||
def on_show_unknown_icon_toggled(self, widget):
|
def on_show_unknown_icon_toggled(self, widget):
|
||||||
self.plugin.config['show_unknown_icon'] = widget.get_active()
|
self.plugin.config['show_unknown_icon'] = widget.get_active()
|
||||||
|
|
||||||
|
def on_combobox1_changed(self, widget):
|
||||||
|
self.plugin.config['pos_in_list'] = widget.get_active()
|
||||||
|
|||||||
@@ -52,6 +52,37 @@
|
|||||||
<property name="position">2</property>
|
<property name="position">2</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkHBox" id="hbox1">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="label1">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="xpad">3</property>
|
||||||
|
<property name="label" translatable="yes">Show icon:</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkComboBox" id="combobox1">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<signal name="changed" handler="on_combobox1_changed"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">3</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
|||||||
Reference in New Issue
Block a user