Rework Plugins Dialog

This commit is contained in:
Sophie Herold 2018-07-16 22:38:08 +02:00 committed by Philipp Hörist
parent 67d9b7a7ea
commit f89169517e
3 changed files with 321 additions and 356 deletions

View File

@ -1,22 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.20.0 --> <!-- Generated with glade 3.22.0 -->
<interface> <interface>
<requires lib="gtk+" version="3.12"/> <requires lib="gtk+" version="3.20"/>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-apply</property>
</object>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-cancel</property>
</object>
<object class="GtkImage" id="image3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-preferences</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>
@ -29,89 +14,126 @@
<signal name="destroy" handler="on_plugins_window_destroy" swapped="no"/> <signal name="destroy" handler="on_plugins_window_destroy" swapped="no"/>
<signal name="key-press-event" handler="on_key_press_event" swapped="no"/> <signal name="key-press-event" handler="on_key_press_event" swapped="no"/>
<child> <child>
<object class="GtkBox" id="vbox1"> <object class="GtkNotebook" id="plugins_notebook">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">True</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child> <child>
<object class="GtkNotebook" id="plugins_notebook"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">False</property>
<signal name="switch-page" handler="on_plugins_notebook_switch_page" swapped="no"/> <property name="margin_left">18</property>
<property name="margin_right">18</property>
<property name="margin_top">18</property>
<property name="margin_bottom">18</property>
<property name="spacing">18</property>
<child> <child>
<object class="GtkPaned" id="hpaned1"> <object class="GtkBox" id="vbox6">
<property name="width_request">200</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">False</property>
<property name="position">250</property> <property name="hexpand">True</property>
<property name="orientation">vertical</property>
<child> <child>
<object class="GtkBox" id="vbox6"> <object class="GtkScrolledWindow" id="scrolledwindow1">
<property name="width_request">150</property> <property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">never</property>
<property name="shadow_type">out</property>
<child>
<object class="GtkTreeView" id="installed_plugins_treeview">
<property name="visible">True</property>
<property name="can_focus">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection"/>
</child>
<style>
<class name="space"/>
</style>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkToolbar">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="border_width">6</property> <property name="show_arrow">False</property>
<property name="orientation">vertical</property> <property name="icon_size">1</property>
<property name="spacing">6</property>
<child> <child>
<object class="GtkScrolledWindow" id="scrolledwindow1"> <object class="GtkToolButton" id="install_plugin_button">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">False</property>
<property name="hscrollbar_policy">never</property> <property name="tooltip_text" translatable="yes">Install Plugin from File</property>
<child> <property name="label" translatable="yes">Install from File…</property>
<object class="GtkTreeView" id="installed_plugins_treeview"> <property name="use_underline">True</property>
<property name="visible">True</property> <property name="icon_name">document-open-symbolic</property>
<property name="can_focus">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection"/>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="install_plugin_button">
<property name="label" translatable="yes">Install from ZIP</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="halign">start</property>
<property name="image">image1</property>
<signal name="clicked" handler="on_install_plugin_button_clicked" swapped="no"/> <signal name="clicked" handler="on_install_plugin_button_clicked" swapped="no"/>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">False</property> <property name="homogeneous">True</property>
<property name="position">1</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkToolButton" id="uninstall_plugin_button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Uninstall Plugin</property>
<property name="use_underline">True</property>
<property name="icon_name">list-remove-symbolic</property>
<signal name="clicked" handler="on_uninstall_plugin_button_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">True</property>
</packing>
</child>
<style>
<class name="inline-toolbar"/>
</style>
</object> </object>
<packing> <packing>
<property name="resize">False</property> <property name="expand">False</property>
<property name="shrink">False</property> <property name="fill">True</property>
<property name="position">1</property>
</packing> </packing>
</child> </child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="width_request">400</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
<property name="spacing">18</property>
<child> <child>
<object class="GtkBox" id="vbox2"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="border_width">6</property> <property name="hexpand">False</property>
<property name="orientation">vertical</property> <property name="spacing">18</property>
<property name="spacing">6</property>
<child> <child>
<object class="GtkLabel" id="plugin_name_label"> <object class="GtkLabel" id="plugin_name_label">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="label" translatable="yes">&amp;lt;empty&amp;gt;</property> <property name="halign">start</property>
<property name="label" translatable="yes">&lt;Plugin Name&gt;</property>
<property name="selectable">True</property> <property name="selectable">True</property>
<property name="xalign">0</property> <style>
<attributes> <class name="large-header"/>
<attribute name="weight" value="bold"/> </style>
</attributes>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -120,280 +142,242 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkBox" id="hbox1"> <object class="GtkButton" id="configure_plugin_button">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">True</property>
<property name="spacing">6</property> <property name="receives_default">True</property>
<property name="tooltip_text" translatable="yes">Plugin Settings</property>
<signal name="clicked" handler="on_configure_plugin_button_clicked" swapped="no"/>
<child> <child>
<object class="GtkLabel" id="label5"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="label" translatable="yes">Version:</property> <property name="icon_name">applications-system-symbolic</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="plugin_version_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label">&lt;empty&gt;</property>
<property name="selectable">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">False</property>
<property name="pack_type">end</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkBox" id="hbox2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Authors:</property>
<property name="yalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="plugin_authors_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label">&lt;empty&gt;</property>
<property name="wrap_mode">word-char</property>
<property name="selectable">True</property>
<property name="ellipsize">end</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox" id="hbox3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkLabel" id="label6">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Homepage:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLinkButton" id="plugin_homepage_linkbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="focus_on_click">False</property>
<property name="receives_default">True</property>
<property name="relief">none</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkBox" id="vbox3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox" id="hbox5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkLabel" id="label7">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Description:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="shadow_type">in</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkButtonBox" id="hbuttonbox3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">5</property>
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="uninstall_plugin_button">
<property name="label" translatable="yes">Uninstall</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="image">image2</property>
<signal name="clicked" handler="on_uninstall_plugin_button_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="configure_plugin_button">
<property name="label" translatable="yes">Configure</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="image">image3</property>
<signal name="clicked" handler="on_configure_plugin_button_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="resize">True</property> <property name="expand">False</property>
<property name="shrink">False</property> <property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkInfoBar" id="available_text">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="message_type">error</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="can_focus">False</property>
<property name="spacing">6</property>
<property name="layout_style">end</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child internal-child="content_area">
<object class="GtkBox">
<property name="can_focus">False</property>
<property name="spacing">16</property>
<child>
<object class="GtkLabel" id="available_text_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="wrap">True</property>
<property name="wrap_mode">word-char</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="description">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">&lt;Description&gt;</property>
<property name="wrap">True</property>
<property name="wrap_mode">word-char</property>
<property name="selectable">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="row_spacing">6</property>
<property name="column_spacing">12</property>
<child>
<object class="GtkLabel" id="label5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">start</property>
<property name="label" translatable="yes">Version</property>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="plugin_version_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label">&lt;empty&gt;</property>
<property name="wrap">True</property>
<property name="wrap_mode">word-char</property>
<property name="selectable">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">start</property>
<property name="label" translatable="yes">Authors</property>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="plugin_authors_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label">&lt;empty&gt;</property>
<property name="wrap">True</property>
<property name="wrap_mode">word-char</property>
<property name="selectable">True</property>
<property name="lines">10</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label6">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">start</property>
<property name="label" translatable="yes">Homepage</property>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="plugin_homepage_linkbutton">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">&lt;empty&gt;</property>
<property name="wrap">True</property>
<property name="wrap_mode">word-char</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing> </packing>
</child> </child>
</object> </object>
</child>
<child type="tab">
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Installed</property>
</object>
<packing> <packing>
<property name="tab_fill">False</property> <property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing> </packing>
</child> </child>
<child> </object>
<placeholder/> </child>
</child> <child type="tab">
<child type="tab"> <object class="GtkLabel" id="label1">
<placeholder/> <property name="visible">True</property>
</child> <property name="can_focus">False</property>
<property name="label" translatable="yes">Installed</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="tab_fill">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkButtonBox" id="hbuttonbox1"> <placeholder/>
<property name="visible">True</property> </child>
<property name="can_focus">False</property> <child type="tab">
<property name="spacing">15</property> <placeholder/>
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="close_button">
<property name="label">gtk-close</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
<signal name="clicked" handler="on_close_button_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
</object> </object>
</child> </child>
<child type="titlebar">
<placeholder/>
</child>
</object> </object>
<object class="GtkTextBuffer" id="textbuffer1"> <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> <property name="text" translatable="yes">Plug-in decription should be displayed here. This text will be erased during PluginsWindow initialization.</property>

View File

@ -111,14 +111,17 @@ list.settings > row > box {
/* Text style */ /* Text style */
.bold16 { font-size: 16px; font-weight: bold; } .bold16 { font-size: 16px; font-weight: bold; }
.large-header { font-size: 20px; font-weight: bold; }
.status-away { color: #ff8533;} .status-away { color: #ff8533;}
.status-dnd { color: #e62e00;} .status-dnd { color: #e62e00;}
.status-online { color: #66bf10;} .status-online { color: #66bf10;}
/* Treeview */ /* Treeview */
treeview.space { padding: 6px; } treeview.space { padding: 6px; }
/* GtkLinkButton style */
button.flat.link { padding: 0; border: 0; }
/*MessageWindow Notebook*/ /*MessageWindow Notebook*/
.notebook-tab-label {min-width: 80px} .notebook-tab-label {min-width: 80px}

View File

@ -37,7 +37,6 @@ from enum import IntEnum, unique
from gajim import gtkgui_helpers from gajim import gtkgui_helpers
from gajim.dialogs import WarningDialog, YesNoDialog from gajim.dialogs import WarningDialog, YesNoDialog
from gajim.filechoosers import ArchiveChooserDialog from gajim.filechoosers import ArchiveChooserDialog
from gajim.htmltextview import HtmlTextView
from gajim.common import app from gajim.common import app
from gajim.common import configpaths from gajim.common import configpaths
from gajim.plugins.helpers import log_calls from gajim.plugins.helpers import log_calls
@ -68,16 +67,12 @@ class PluginsWindow(object):
'plugin_version_label', 'plugin_authors_label', 'plugin_version_label', 'plugin_authors_label',
'plugin_homepage_linkbutton', 'uninstall_plugin_button', 'plugin_homepage_linkbutton', 'uninstall_plugin_button',
'configure_plugin_button', 'installed_plugins_treeview', 'configure_plugin_button', 'installed_plugins_treeview',
'close_button') 'available_text', 'available_text_label')
for widget_name in widgets_to_extract: for widget_name in widgets_to_extract:
setattr(self, widget_name, builder.get_object(widget_name)) setattr(self, widget_name, builder.get_object(widget_name))
self.plugin_description_textview = HtmlTextView() self.plugin_description_textview = builder.get_object('description')
self.plugin_description_textview.connect_tooltip()
self.plugin_description_textview.set_wrap_mode(Gtk.WrapMode.WORD)
sw = builder.get_object('scrolledwindow2')
sw.add(self.plugin_description_textview)
self.installed_plugins_model = Gtk.ListStore(object, str, bool, bool, self.installed_plugins_model = Gtk.ListStore(object, str, bool, bool,
GdkPixbuf.Pixbuf) GdkPixbuf.Pixbuf)
self.installed_plugins_treeview.set_model(self.installed_plugins_model) self.installed_plugins_treeview.set_model(self.installed_plugins_model)
@ -116,7 +111,6 @@ class PluginsWindow(object):
builder.connect_signals(self) builder.connect_signals(self)
self.plugins_notebook.set_current_page(0) self.plugins_notebook.set_current_page(0)
self.close_button.grab_focus()
# Adding GUI extension point for Plugins that want to hook the Plugin Window # Adding GUI extension point for Plugins that want to hook the Plugin Window
app.plugin_manager.gui_extension_point('plugin_window', self) app.plugin_manager.gui_extension_point('plugin_window', self)
@ -128,9 +122,6 @@ class PluginsWindow(object):
if event.keyval == Gdk.KEY_Escape: if event.keyval == Gdk.KEY_Escape:
self.window.destroy() self.window.destroy()
def on_plugins_notebook_switch_page(self, widget, page, page_num):
GLib.idle_add(self.close_button.grab_focus)
@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()
@ -144,25 +135,20 @@ class PluginsWindow(object):
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)
self.plugin_homepage_linkbutton.set_uri(plugin.homepage) markup = '<a href="%s">%s</a>' % (plugin.homepage, plugin.homepage)
self.plugin_homepage_linkbutton.set_label(plugin.homepage) self.plugin_homepage_linkbutton.set_markup(markup)
label = self.plugin_homepage_linkbutton.get_children()[0]
label.set_ellipsize(Pango.EllipsizeMode.END)
self.plugin_homepage_linkbutton.set_property('sensitive', True)
desc_textbuffer = self.plugin_description_textview.get_buffer()
desc_textbuffer.set_text('')
txt = plugin.description
txt.replace('</body>', '')
if plugin.available_text: if plugin.available_text:
txt += '<br/><br/>' + _('Warning: %s') % plugin.available_text text = _('Warning: %s') % plugin.available_text
if not txt.startswith('<body '): self.available_text_label.set_text(text)
txt = '<body xmlns=\'http://www.w3.org/1999/xhtml\'>' + txt self.available_text.show()
txt += ' </body>' # Workaround for https://bugzilla.gnome.org/show_bug.cgi?id=710888
self.plugin_description_textview.display_html(txt, self.available_text.queue_resize()
self.plugin_description_textview, None) else:
self.available_text.hide()
self.plugin_description_textview.set_text(plugin.description)
self.plugin_description_textview.set_property('sensitive', True)
self.uninstall_plugin_button.set_property( self.uninstall_plugin_button.set_property(
'sensitive', configpaths.get('PLUGINS_USER') in plugin.__path__) 'sensitive', configpaths.get('PLUGINS_USER') in plugin.__path__)
self.configure_plugin_button.set_property( self.configure_plugin_button.set_property(
@ -172,13 +158,9 @@ class PluginsWindow(object):
self.plugin_name_label.set_text('') self.plugin_name_label.set_text('')
self.plugin_version_label.set_text('') self.plugin_version_label.set_text('')
self.plugin_authors_label.set_text('') self.plugin_authors_label.set_text('')
self.plugin_homepage_linkbutton.set_uri('') self.plugin_homepage_linkbutton.set_markup('')
self.plugin_homepage_linkbutton.set_label('')
self.plugin_homepage_linkbutton.set_property('sensitive', False)
desc_textbuffer = self.plugin_description_textview.get_buffer() self.plugin_description_textview.set_text('')
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)
@ -224,10 +206,6 @@ class PluginsWindow(object):
app.plugin_manager.remove_gui_extension_point('plugin_window', self) app.plugin_manager.remove_gui_extension_point('plugin_window', self)
del app.interface.instances['plugins'] del app.interface.instances['plugins']
@log_calls('PluginsWindow')
def on_close_button_clicked(self, widget):
self.window.destroy()
@log_calls('PluginsWindow') @log_calls('PluginsWindow')
def on_configure_plugin_button_clicked(self, widget): def on_configure_plugin_button_clicked(self, widget):
selection = self.installed_plugins_treeview.get_selection() selection = self.installed_plugins_treeview.get_selection()