PluginSystem. xhtml in available tab

This commit is contained in:
Denis Fomin 2013-05-04 18:27:32 +04:00
parent 123c6e4d53
commit ddbac25e19
2 changed files with 38 additions and 24 deletions

View File

@ -1,9 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<interface> <interface>
<!-- interface-requires gtk+ 3.0 --> <!-- interface-requires gtk+ 3.0 -->
<object class="GtkTextBuffer" id="textbuffer1">
<property name="text" translatable="yes">Plug-in decription should be displayed here. This text will be erased during PluginsWindow initialization.</property>
</object>
<object class="GtkWindow" id="plugins_window"> <object class="GtkWindow" id="plugins_window">
<property name="width_request">650</property> <property name="width_request">650</property>
<property name="height_request">500</property> <property name="height_request">500</property>
@ -299,17 +296,24 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkTextView" id="plugin_description_textview"> <object class="GtkScrolledWindow" id="scrolledwindow">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="pixels_above_lines">6</property> <property name="shadow_type">in</property>
<property name="editable">False</property> <child>
<property name="wrap_mode">word</property> <object class="GtkTextView" id="plugin_description_textview">
<property name="left_margin">6</property> <property name="visible">True</property>
<property name="right_margin">6</property> <property name="sensitive">False</property>
<property name="indent">1</property> <property name="can_focus">True</property>
<property name="buffer">textbuffer1</property> <property name="pixels_above_lines">6</property>
<property name="editable">False</property>
<property name="wrap_mode">word</property>
<property name="left_margin">6</property>
<property name="right_margin">6</property>
<property name="indent">1</property>
<property name="buffer">textbuffer1</property>
</object>
</child>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
@ -493,4 +497,7 @@
</object> </object>
</child> </child>
</object> </object>
<object class="GtkTextBuffer" id="textbuffer1">
<property name="text" translatable="yes">Plug-in decription should be displayed here. This text will be erased during PluginsWindow initialization.</property>
</object>
</interface> </interface>

View File

@ -36,6 +36,7 @@ import gtkgui_helpers
from dialogs import WarningDialog, YesNoDialog, ArchiveChooserDialog from dialogs import WarningDialog, YesNoDialog, ArchiveChooserDialog
from common import gajim from common import gajim
from plugins.helpers import log_calls, log from plugins.helpers import log_calls, log
from conversation_textview import ConversationTextview
from plugins.helpers import GajimPluginActivateException from plugins.helpers import GajimPluginActivateException
from common.exceptions import PluginsystemError from common.exceptions import PluginsystemError
@ -99,7 +100,7 @@ class PluginsWindow(object):
self.installed_plugins_treeview_selection_changed) self.installed_plugins_treeview_selection_changed)
selection.set_mode(Gtk.SelectionMode.SINGLE) selection.set_mode(Gtk.SelectionMode.SINGLE)
self._clear_installed_plugin_info() #self._clear_installed_plugin_info()
self.fill_installed_plugins_model() self.fill_installed_plugins_model()
root_iter = self.installed_plugins_model.get_iter_first() root_iter = self.installed_plugins_model.get_iter_first()
@ -121,6 +122,11 @@ class PluginsWindow(object):
@log_calls('PluginsWindow') @log_calls('PluginsWindow')
def installed_plugins_treeview_selection_changed(self, treeview_selection): def installed_plugins_treeview_selection_changed(self, treeview_selection):
model, iter = treeview_selection.get_selected() model, iter = treeview_selection.get_selected()
self.xml.get_object('scrolledwindow').get_children()[0].destroy()
self.plugin_description_textview = ConversationTextview(None)
sw = self.xml.get_object('scrolledwindow')
sw.add(self.plugin_description_textview.tv)
sw.show_all()
if iter: if iter:
plugin = model.get_value(iter, PLUGIN) plugin = model.get_value(iter, PLUGIN)
plugin_name = model.get_value(iter, NAME) plugin_name = model.get_value(iter, NAME)
@ -131,6 +137,7 @@ class PluginsWindow(object):
self._clear_installed_plugin_info() self._clear_installed_plugin_info()
def _display_installed_plugin_info(self, plugin): def _display_installed_plugin_info(self, plugin):
from plugins.plugins_i18n import _
self.plugin_name_label.set_text(plugin.name) self.plugin_name_label.set_text(plugin.name)
self.plugin_version_label.set_text(plugin.version) self.plugin_version_label.set_text(plugin.version)
self.plugin_authors_label.set_text(plugin.authors) self.plugin_authors_label.set_text(plugin.authors)
@ -140,19 +147,21 @@ class PluginsWindow(object):
label.set_ellipsize(Pango.EllipsizeMode.END) label.set_ellipsize(Pango.EllipsizeMode.END)
self.plugin_homepage_linkbutton.set_property('sensitive', True) self.plugin_homepage_linkbutton.set_property('sensitive', True)
desc_textbuffer = self.plugin_description_textview.get_buffer()
from plugins.plugins_i18n import _
txt = plugin.description txt = plugin.description
if plugin.available_text: if plugin.available_text:
txt += '\n\n' + _('Warning: %s') % plugin.available_text txt += '\n\n' + _('Warning: %s') % plugin.available_text
desc_textbuffer.set_text(txt) if not txt.startswith('<body '):
self.plugin_description_textview.set_property('sensitive', True) txt = '<body xmlns=\'http://www.w3.org/1999/xhtml\'>' + \
txt + ' </body>'
txt = txt.replace('\n', '<br/>')
self.plugin_description_textview.tv.display_html(
txt, self.plugin_description_textview)
self.plugin_description_textview.tv.set_property('sensitive', True)
self.uninstall_plugin_button.set_property('sensitive', self.uninstall_plugin_button.set_property('sensitive',
gajim.PLUGINS_DIRS[1] in plugin.__path__) gajim.PLUGINS_DIRS[1] in plugin.__path__)
if plugin.config_dialog is None: self.configure_plugin_button.set_property(
self.configure_plugin_button.set_property('sensitive', False) 'sensitive', not plugin.config_dialog is None)
else:
self.configure_plugin_button.set_property('sensitive', True)
def _clear_installed_plugin_info(self): def _clear_installed_plugin_info(self):
self.plugin_name_label.set_text('') self.plugin_name_label.set_text('')
@ -162,9 +171,7 @@ class PluginsWindow(object):
self.plugin_homepage_linkbutton.set_label('') self.plugin_homepage_linkbutton.set_label('')
self.plugin_homepage_linkbutton.set_property('sensitive', False) self.plugin_homepage_linkbutton.set_property('sensitive', False)
desc_textbuffer = self.plugin_description_textview.get_buffer() self.plugin_description_textview.tv.set_property('sensitive', False)
desc_textbuffer.set_text('')
self.plugin_description_textview.set_property('sensitive', False)
self.uninstall_plugin_button.set_property('sensitive', False) self.uninstall_plugin_button.set_property('sensitive', False)
self.configure_plugin_button.set_property('sensitive', False) self.configure_plugin_button.set_property('sensitive', False)