Calum Lind 535b13b5f1 [Plugins] Convert plugins to deluge_ module prefix convention
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
2019-05-15 19:20:08 +01:00

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'])