plugin_installer. add plugins icon.

This commit is contained in:
Denis Fomin
2012-08-16 16:21:36 +04:00
parent 17bae26657
commit 4389d66930

View File

@@ -37,6 +37,18 @@ from plugins.helpers import log_calls, log
from dialogs import WarningDialog, HigDialog, YesNoDialog
from plugins.gui import GajimPluginConfigDialog
(
C_PIXBUF,
C_DIR,
C_NAME,
C_LOCAL_VERSION,
C_VERSION,
C_UPGRADE,
C_DESCRIPTION,
C_AUTHORS,
C_HOMEPAGE
) = range(9)
def convert_version_to_list(version_str):
version_list = version_str.split('.')
l = []
@@ -161,30 +173,37 @@ class PluginInstaller(GajimPlugin):
attr_list.insert(pango.AttrWeight(pango.WEIGHT_BOLD, 0, -1))
self.plugin_name_label1.set_attributes(attr_list)
self.available_plugins_model = gtk.ListStore(gobject.TYPE_PYOBJECT,
gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING,
gobject.TYPE_BOOLEAN, gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT,
gobject.TYPE_PYOBJECT)
self.available_plugins_model = gtk.ListStore(gtk.gdk.Pixbuf,
gobject.TYPE_PYOBJECT, gobject.TYPE_STRING, gobject.TYPE_STRING,
gobject.TYPE_STRING, gobject.TYPE_BOOLEAN, gobject.TYPE_PYOBJECT,
gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT)
self.available_treeview.set_model(self.available_plugins_model)
self.available_treeview.set_rules_hint(True)
self.progressbar.set_property('no-show-all', True)
renderer = gtk.CellRendererText()
col = gtk.TreeViewColumn(_('Plugin'), renderer, text=1)
col = gtk.TreeViewColumn(_('Plugin'))
cell = gtk.CellRendererPixbuf()
col.pack_start(cell, False)
col.add_attribute(cell, 'pixbuf', C_PIXBUF)
col.pack_start(renderer, True)
col.add_attribute(renderer, 'text', C_NAME)
col.set_resizable(True)
col.set_property('expand', True)
col.set_sizing(gtk.TREE_VIEW_COLUMN_GROW_ONLY)
self.available_treeview.append_column(col)
col = gtk.TreeViewColumn(_('Installed\nversion'), renderer, text=2)
col = gtk.TreeViewColumn(_('Installed\nversion'), renderer,
text=C_LOCAL_VERSION)
self.available_treeview.append_column(col)
col = gtk.TreeViewColumn(_('Available\nversion'), renderer, text=3)
col = gtk.TreeViewColumn(_('Available\nversion'), renderer,
text=C_VERSION)
col.set_property('expand', False)
self.available_treeview.append_column(col)
renderer = gtk.CellRendererToggle()
renderer.set_property('activatable', True)
renderer.connect('toggled', self.available_plugins_toggled_cb)
col = gtk.TreeViewColumn(_('Install /\nUpgrade'), renderer, active=4)
col = gtk.TreeViewColumn(_('Install /\nUpgrade'), renderer, active=C_UPGRADE)
self.available_treeview.append_column(col)
if gobject.signal_lookup('error_signal', self.window) is 0:
@@ -213,12 +232,12 @@ class PluginInstaller(GajimPlugin):
del self.page_num
def available_plugins_toggled_cb(self, cell, path):
is_active = self.available_plugins_model[path][4]
self.available_plugins_model[path][4] = not is_active
is_active = self.available_plugins_model[path][C_UPGRADE]
self.available_plugins_model[path][C_UPGRADE] = not is_active
dir_list = []
for i in xrange(len(self.available_plugins_model)):
if self.available_plugins_model[i][4]:
dir_list.append(self.available_plugins_model[i][0])
if self.available_plugins_model[i][C_UPGRADE]:
dir_list.append(self.available_plugins_model[i][C_DIR])
if not dir_list:
self.inslall_upgrade_button.set_property('sensitive', False)
else:
@@ -237,8 +256,8 @@ class PluginInstaller(GajimPlugin):
self.inslall_upgrade_button.set_property('sensitive', False)
dir_list = []
for i in xrange(len(self.available_plugins_model)):
if self.available_plugins_model[i][4]:
dir_list.append(self.available_plugins_model[i][0])
if self.available_plugins_model[i][C_UPGRADE]:
dir_list.append(self.available_plugins_model[i][C_DIR])
ftp = Ftp(self)
ftp.remote_dirs = dir_list
@@ -246,7 +265,7 @@ class PluginInstaller(GajimPlugin):
def on_some_ftp_error(self, widget, error_text):
for i in xrange(len(self.available_plugins_model)):
self.available_plugins_model[i][4] = False
self.available_plugins_model[i][C_UPGRADE] = False
self.progressbar.hide()
WarningDialog(_('Ftp error'), error_text, self.window)
@@ -275,10 +294,10 @@ class PluginInstaller(GajimPlugin):
gajim.plugin_manager.add_plugin(plugins[0])
plugin = gajim.plugin_manager.plugins[-1]
for row in xrange(len(self.available_plugins_model)):
if plugin.name == self.available_plugins_model[row][1]:
self.available_plugins_model[row][2] = plugin.version
self.available_plugins_model[row][4] = False
continue
if plugin.name == self.available_plugins_model[row][C_NAME]:
self.available_plugins_model[row][C_LOCAL_VERSION] = \
plugin.version
self.available_plugins_model[row][C_UPGRADE] = False
if is_active and plugin.name != self.name:
gobject.idle_add(gajim.plugin_manager.activate_plugin, plugin)
if plugin.name != 'Plugin Installer':
@@ -298,15 +317,17 @@ class PluginInstaller(GajimPlugin):
def available_plugins_treeview_selection_changed(self, treeview_selection):
model, iter = treeview_selection.get_selected()
if iter:
self.plugin_name_label1.set_text(model.get_value(iter, 1))
self.plugin_authors_label1.set_text(model.get_value(iter, 6))
self.plugin_homepage_linkbutton1.set_uri(model.get_value(iter, 7))
self.plugin_homepage_linkbutton1.set_label(model.get_value(iter, 7))
self.plugin_name_label1.set_text(model.get_value(iter, C_NAME))
self.plugin_authors_label1.set_text(model.get_value(iter, C_AUTHORS))
self.plugin_homepage_linkbutton1.set_uri(model.get_value(iter,
C_HOMEPAGE))
self.plugin_homepage_linkbutton1.set_label(model.get_value(iter,
C_HOMEPAGE))
label = self.plugin_homepage_linkbutton1.get_children()[0]
label.set_ellipsize(pango.ELLIPSIZE_END)
self.plugin_homepage_linkbutton1.set_property('sensitive', True)
desc_textbuffer = self.plugin_description_textview1.get_buffer()
desc_textbuffer.set_text(_(model.get_value(iter, 5)))
desc_textbuffer.set_text(_(model.get_value(iter, C_DESCRIPTION)))
self.plugin_description_textview1.set_property('sensitive', True)
else:
self._clear_available_plugin_info()
@@ -403,6 +424,9 @@ class Ftp(threading.Thread):
self.remote_dirs = None
self.append_to_model = True
self.upgrading = False
icon = gtk.Image()
self.def_icon = icon.render_icon(gtk.STOCK_PREFERENCES,
gtk.ICON_SIZE_MENU)
def model_append(self, row):
self.model.append(row)
@@ -450,7 +474,17 @@ class Ftp(threading.Thread):
gobject.idle_add(
self.plugin.inslall_upgrade_button.set_property,
'sensitive', True)
gobject.idle_add(self.model_append, [dir_,
def_icon = self.def_icon
if local_version:
base_dir, user_dir = gajim.PLUGINS_DIRS
local_dir = os.path.join(user_dir, dir_)
icon_name = dir_ + '.png'
filename = os.path.join(local_dir, icon_name)
if os.path.isfile(filename):
def_icon = gtk.gdk.pixbuf_new_from_file_at_size(
filename, 16, 16)
gobject.idle_add(self.model_append, [def_icon, dir_,
self.config.get('info', 'name'), local_version,
self.config.get('info', 'version'), upgrade,
self.config.get('info', 'description'),