예제 #1
0
 def _load_catalogs(self, refresh=False):
     expiration = datetime.timedelta(hours=4)
     self._update_status_bar('Loading, catalogs...', idle=True)
     self.catalog_plugins = plugins.ClientCatalogManager(
         self.application.user_data_path)
     catalog_cache = self.catalog_plugins.get_cache()
     now = datetime.datetime.utcnow()
     for catalog_url in self.config['catalogs']:
         catalog_cache_dict = catalog_cache.get_catalog_by_url(catalog_url)
         if not refresh and catalog_cache_dict and catalog_cache_dict[
                 'created'] + expiration > now:
             try:
                 catalog = Catalog(catalog_cache_dict['value'])
             except (KeyError, TypeError) as error:
                 self.logger.warning(
                     "{0} error when trying to add catalog dict to manager".
                     format(error.__class__.__name))
             else:
                 self.catalog_plugins.add_catalog(
                     catalog,
                     catalog_url=catalog_cache_dict['url'],
                     cache=False)
                 continue
         self.logger.debug("downloading catalog: {}".format(catalog_url))
         self._update_status_bar(
             "Loading, downloading catalog: {}".format(catalog_url))
         catalog = self._load_catalog_from_url(catalog_url)
         if not catalog:
             continue
         self.catalog_plugins.add_catalog(catalog,
                                          catalog_url=catalog_url,
                                          cache=True)
     self._load_plugins()
예제 #2
0
	def _load_catalogs(self):
		self._update_status_bar('Loading, downloading catalogs...', idle=True)
		self.catalog_plugins = plugins.ClientCatalogManager(self.application.user_data_path)
		for catalog in self.config['catalogs']:
			self.logger.debug("downloading catalog: {}".format(catalog))
			self._update_status_bar("Loading, downloading catalog: {}".format(catalog))
			self.catalog_plugins.add_catalog_url(catalog)
		self._load_plugins()
예제 #3
0
 def _load_catalogs(self, refresh=False):
     expiration = datetime.timedelta(hours=4)
     self._update_status_bar('Loading, catalogs...', idle=True)
     self.catalog_plugins = plugins.ClientCatalogManager(
         self.application.user_data_path)
     catalog_cache = self.catalog_plugins.get_cache()
     now = datetime.datetime.utcnow()
     for catalog_url in self.config['catalogs']:
         catalog_cache_dict = catalog_cache.get_catalog_by_url(catalog_url)
         if not refresh and catalog_cache_dict and catalog_cache_dict[
                 'created'] + expiration > now:
             try:
                 catalog = Catalog(catalog_cache_dict['value'])
             except (KeyError, TypeError) as error:
                 self.logger.warning(
                     "{0} error when trying to add catalog dict to manager".
                     format(error.__class__.__name))
             else:
                 self.catalog_plugins.add_catalog(
                     catalog,
                     catalog_url=catalog_cache_dict['url'],
                     cache=False)
                 continue
         self.logger.debug("downloading catalog: {}".format(catalog_url))
         self._update_status_bar(
             "Loading, downloading catalog: {}".format(catalog_url))
         try:
             catalog = Catalog.from_url(catalog_url)
         except requests.exceptions.ConnectionError:
             self.logger.warning(
                 "connection error trying to download catalog url: {}".
                 format(catalog))
             self.idle_show_dialog_error(
                 'Catalog Loading Error',
                 "Failed to download catalog, check your internet connection."
             )
         except Exception:
             self.logger.warning("failed to add catalog by url",
                                 exc_info=True)
             self.idle_show_dialog_error('Catalog Loading Error',
                                         "Failed to add catalog")
         else:
             self.catalog_plugins.add_catalog(catalog,
                                              catalog_url=catalog_url,
                                              cache=True)
     self._load_plugins()
예제 #4
0
    def __init__(self, *args, **kwargs):
        super(PluginManagerWindow, self).__init__(*args, **kwargs)
        self.catalog_plugins = plugins.ClientCatalogManager(
            self.application.user_data_path)
        self.plugin_path = os.path.join(self.application.user_data_path,
                                        'plugins')
        self.status_bar = self.gobjects['statusbar']
        self._installed_plugins_treeview_tracker = None
        """
		This is used to track and make sure all plugins make it into the
		treeview. It is set each time catalogs are loaded or refreshed. Once the
		loading operation is complete, plugins that remain were not loaded due
		their data (repo or id) missing from the catalog, likely due to it
		having been removed.
		"""
        self._worker_thread = None
        self._worker_thread_start(self._load_catalogs_tsafe)
        self.__load_errors = {}
        self.__installing_plugin = None

        tvm = managers.TreeViewManager(self.gobjects['treeview_plugins'])
        toggle_renderer_enable = Gtk.CellRendererToggle()
        toggle_renderer_enable.connect('toggled',
                                       self.signal_renderer_toggled_enable)
        toggle_renderer_install = Gtk.CellRendererToggle()
        toggle_renderer_install.connect('toggled',
                                        self.signal_renderer_toggled_install)
        tvm.set_column_titles(
            ('Installed', 'Enabled', 'Title', 'Compatible', 'Version'),
            column_offset=1,
            renderers=(toggle_renderer_install, toggle_renderer_enable,
                       Gtk.CellRendererText(), Gtk.CellRendererText(),
                       Gtk.CellRendererText()))
        tvm.column_views['Enabled'].set_cell_data_func(
            toggle_renderer_enable, self._toggle_enabled_cell_data_func)
        tvm.column_views['Enabled'].add_attribute(toggle_renderer_enable,
                                                  'visible', 6)
        tvm.column_views['Enabled'].add_attribute(toggle_renderer_enable,
                                                  'sensitive', 1)
        tvm.column_views['Installed'].set_cell_data_func(
            toggle_renderer_install, self._toggle_install_cell_data_func)
        tvm.column_views['Installed'].add_attribute(toggle_renderer_install,
                                                    'visible', 7)
        tvm.column_views['Installed'].add_attribute(toggle_renderer_install,
                                                    'sensitive', 8)
        self._model = Gtk.TreeStore(str, bool, bool, str, str, str, bool, bool,
                                    bool, str)
        self._model.set_sort_column_id(3, Gtk.SortType.ASCENDING)
        self.gobjects['treeview_plugins'].set_model(self._model)

        self._tv_popup_menu = managers.MenuManager(tvm.get_popup_menu())
        self._tv_popup_menu.append_item(Gtk.SeparatorMenuItem())
        self._tv_popup_menu.append('Reload',
                                   self.signal_popup_menu_activate_reload)
        self._tv_popup_menu.append('Reload All',
                                   self.signal_popup_menu_activate_reload_all)
        self._tv_popup_menu.append_item(Gtk.SeparatorMenuItem())
        self._tv_popup_menu.append(
            'Show Documentation',
            self.signal_popup_menu_activate_show_documentation)
        self._tv_popup_menu.append('Update',
                                   self.signal_popup_menu_activate_update)

        self._info_popup_menu = managers.MenuManager()
        self._info_popup_menu.append('Reload',
                                     self.signal_popup_menu_activate_reload)
        self._info_popup_menu.append_item(Gtk.SeparatorMenuItem())
        self._info_popup_menu.append(
            'Show Documentation',
            self.signal_popup_menu_activate_show_documentation)
        self._info_popup_menu.append('Update',
                                     self.signal_popup_menu_activate_update)
        self.gobjects['menubutton_plugin_info'].set_popup(
            self._info_popup_menu.menu)

        self._update_status_bar('Loading...')
        self.window.show()
        paned = self.gobjects['paned_plugins']
        self._paned_offset = paned.get_allocation(
        ).height - paned.get_position()