This commit reverts namespace for the plugins and uses a module prefix
"deluge_" in it's place. The distribution package name remains the same
for now but will also be considered to use a prefix to help find the
third-party plugins e.g. Deluge-{Plugin} and the pluginmanager will
strip the prefix for displaying.
The change is a result of problems trying to package Deluge with
pyinstaller and the pkg_resources namespaces is not compatible.
Testing alternatives to using the pkgutil or PEP420 (native) namespaces
did not yield any joy either as importing eggs with namespaces does not
work. [1]
At this point importable eggs are considered deprecated but there is no
viable alternative yet. [2]
[1] https://github.com/pypa/packaging-problems/issues/212
[2] https://github.com/pypa/packaging-problems/issues/244
78 lines
2.1 KiB
Python
78 lines
2.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
#
|
|
# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
|
|
#
|
|
# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
|
|
# the additional special exception to link portions of this program with the OpenSSL library.
|
|
# See LICENSE for more details.
|
|
#
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
import logging
|
|
|
|
from deluge import component # for systray
|
|
from deluge.plugins.pluginbase import Gtk3PluginBase
|
|
|
|
from . import label_config, sidebar_menu, submenu
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
NO_LABEL = 'No Label'
|
|
|
|
|
|
def cell_data_label(column, cell, model, row, data):
|
|
cell.set_property('text', str(model.get_value(row, data)))
|
|
|
|
|
|
class GtkUI(Gtk3PluginBase):
|
|
def start(self):
|
|
if self.label_menu:
|
|
self.label_menu.on_show()
|
|
|
|
def enable(self):
|
|
self.plugin = component.get('PluginManager')
|
|
self.torrentmenu = component.get('MenuBar').torrentmenu
|
|
self.label_menu = None
|
|
self.labelcfg = None
|
|
self.sidebar_menu = None
|
|
self.load_interface()
|
|
|
|
def disable(self):
|
|
if self.label_menu in self.torrentmenu.get_children():
|
|
self.torrentmenu.remove(self.label_menu)
|
|
|
|
self.labelcfg.unload()
|
|
self.sidebar_menu.unload()
|
|
del self.sidebar_menu
|
|
|
|
component.get('TorrentView').remove_column(_('Label'))
|
|
|
|
def load_interface(self):
|
|
# sidebar
|
|
# disabled
|
|
if not self.sidebar_menu:
|
|
self.sidebar_menu = sidebar_menu.LabelSidebarMenu()
|
|
# self.sidebar.load()
|
|
|
|
# menu:
|
|
log.debug('add items to torrentview-popup menu.')
|
|
self.label_menu = submenu.LabelMenu()
|
|
self.torrentmenu.append(self.label_menu)
|
|
self.label_menu.show_all()
|
|
|
|
# columns:
|
|
self.load_columns()
|
|
|
|
# config:
|
|
if not self.labelcfg:
|
|
self.labelcfg = label_config.LabelConfig(self.plugin)
|
|
self.labelcfg.load()
|
|
|
|
log.debug('Finished loading Label plugin')
|
|
|
|
def load_columns(self):
|
|
log.debug('add columns')
|
|
|
|
component.get('TorrentView').add_text_column(_('Label'), status_field=['label'])
|