mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Ignore a plugin with the same name as a builting plugin
This commit is contained in:
parent
deb05bae33
commit
17a6ff32f0
@ -22,6 +22,11 @@ from calibre.utils.config import make_config_dir, Config, ConfigProxy, \
|
||||
from calibre.ebooks.epub.fix import ePubFixer
|
||||
from calibre.ebooks.metadata.sources.base import Source
|
||||
|
||||
builtin_names = frozenset([p.name for p in builtin_plugins])
|
||||
|
||||
class NameConflict(ValueError):
|
||||
pass
|
||||
|
||||
def _config():
|
||||
c = Config('customize')
|
||||
c.add_opt('plugins', default={}, help=_('Installed plugins'))
|
||||
@ -355,6 +360,9 @@ def set_file_type_metadata(stream, mi, ftype):
|
||||
def add_plugin(path_to_zip_file):
|
||||
make_config_dir()
|
||||
plugin = load_plugin(path_to_zip_file)
|
||||
if plugin.name in builtin_names:
|
||||
raise NameConflict(
|
||||
'A builtin plugin with the name %r already exists' % plugin.name)
|
||||
plugin = initialize_plugin(plugin, path_to_zip_file)
|
||||
plugins = config['plugins']
|
||||
zfp = os.path.join(plugin_dir, plugin.name+'.zip')
|
||||
@ -506,7 +514,9 @@ def initialize_plugin(plugin, path_to_zip_file):
|
||||
def initialize_plugins():
|
||||
global _initialized_plugins
|
||||
_initialized_plugins = []
|
||||
for zfp in list(config['plugins'].values()) + builtin_plugins:
|
||||
user_plugins = [p for name, p in config['plugins'].iteritems() if name not
|
||||
in builtin_names]
|
||||
for zfp in user_plugins + builtin_plugins:
|
||||
try:
|
||||
try:
|
||||
plugin = load_plugin(zfp) if not isinstance(zfp, type) else zfp
|
||||
|
@ -13,9 +13,9 @@ from PyQt4.Qt import Qt, QModelIndex, QAbstractItemModel, QVariant, QIcon, \
|
||||
|
||||
from calibre.gui2.preferences import ConfigWidgetBase, test_widget
|
||||
from calibre.gui2.preferences.plugins_ui import Ui_Form
|
||||
from calibre.customize.ui import initialized_plugins, is_disabled, enable_plugin, \
|
||||
disable_plugin, plugin_customization, add_plugin, \
|
||||
remove_plugin
|
||||
from calibre.customize.ui import (initialized_plugins, is_disabled, enable_plugin,
|
||||
disable_plugin, plugin_customization, add_plugin,
|
||||
remove_plugin, NameConflict)
|
||||
from calibre.gui2 import NONE, error_dialog, info_dialog, choose_files, \
|
||||
question_dialog, gprefs
|
||||
from calibre.utils.search_query_parser import SearchQueryParser
|
||||
@ -279,7 +279,11 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
||||
' Are you sure you want to proceed?'),
|
||||
show_copy_button=False):
|
||||
return
|
||||
plugin = add_plugin(path)
|
||||
try:
|
||||
plugin = add_plugin(path)
|
||||
except NameConflict as e:
|
||||
return error_dialog(self, _('Already exists'),
|
||||
unicode(e), show=True)
|
||||
self._plugin_model.populate()
|
||||
self._plugin_model.reset()
|
||||
self.changed_signal.emit()
|
||||
|
Loading…
x
Reference in New Issue
Block a user