General cleanup in the plugin manager.
svn: r10638
This commit is contained in:
parent
5218afd3ab
commit
141c38cde3
@ -94,8 +94,6 @@ def load_plugins(direct):
|
|||||||
successfully loads, it is added to the success_list list. Each plugin is
|
successfully loads, it is added to the success_list list. Each plugin is
|
||||||
responsible for registering itself in the correct manner. No attempt
|
responsible for registering itself in the correct manner. No attempt
|
||||||
is done in this routine to register the tasks. Returns True on error. """
|
is done in this routine to register the tasks. Returns True on error. """
|
||||||
|
|
||||||
global success_list, attempt_list, loaddir_list, failmsg_list
|
|
||||||
|
|
||||||
# if the directory does not exist, do nothing
|
# if the directory does not exist, do nothing
|
||||||
if not os.path.isdir(direct):
|
if not os.path.isdir(direct):
|
||||||
@ -125,10 +123,10 @@ def load_plugins(direct):
|
|||||||
attempt_list.append(filename)
|
attempt_list.append(filename)
|
||||||
plugin = match.groups()[0]
|
plugin = match.groups()[0]
|
||||||
try:
|
try:
|
||||||
a = __import__(plugin)
|
_module = __import__(plugin)
|
||||||
success_list.append((filename,a))
|
success_list.append((filename, _module))
|
||||||
except:
|
except:
|
||||||
failmsg_list.append((filename,sys.exc_info()))
|
failmsg_list.append((filename, sys.exc_info()))
|
||||||
|
|
||||||
return len(failmsg_list) != 0 # return True if there are errors
|
return len(failmsg_list) != 0 # return True if there are errors
|
||||||
|
|
||||||
@ -139,7 +137,7 @@ def load_plugins(direct):
|
|||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
def reload_plugins():
|
def reload_plugins():
|
||||||
""" Reload previously loaded plugins """
|
""" Reload previously loaded plugins """
|
||||||
global success_list, attempt_list, loaddir_list, failmsg_list
|
global failmsg_list
|
||||||
|
|
||||||
pymod = re.compile(r"^(.*)\.py$")
|
pymod = re.compile(r"^(.*)\.py$")
|
||||||
|
|
||||||
@ -172,9 +170,9 @@ def reload_plugins():
|
|||||||
# For some strange reason second importing of a failed plugin
|
# For some strange reason second importing of a failed plugin
|
||||||
# results in success. Then reload reveals the actual error.
|
# results in success. Then reload reveals the actual error.
|
||||||
# Looks like a bug in Python.
|
# Looks like a bug in Python.
|
||||||
a = __import__(plugin)
|
_module = __import__(plugin)
|
||||||
reload(a)
|
reload(_module)
|
||||||
success_list.append((filename, a))
|
success_list.append((filename, _module))
|
||||||
except:
|
except:
|
||||||
failmsg_list.append((filename, sys.exc_info()))
|
failmsg_list.append((filename, sys.exc_info()))
|
||||||
|
|
||||||
@ -190,10 +188,10 @@ def reload_plugins():
|
|||||||
attempt_list.append(filename)
|
attempt_list.append(filename)
|
||||||
plugin = match.groups()[0]
|
plugin = match.groups()[0]
|
||||||
try:
|
try:
|
||||||
a = __import__(plugin)
|
_module = __import__(plugin)
|
||||||
if a not in [plugin[1]
|
if _module not in [plugin[1]
|
||||||
for plugin in success_list]:
|
for plugin in success_list]:
|
||||||
success_list.append((filename, a))
|
success_list.append((filename, _module))
|
||||||
except:
|
except:
|
||||||
failmsg_list.append((filename, sys.exc_info()))
|
failmsg_list.append((filename, sys.exc_info()))
|
||||||
|
|
||||||
@ -202,7 +200,8 @@ def reload_plugins():
|
|||||||
# Plugin registering
|
# Plugin registering
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
def register_export(exportData, title, description='', config=None, filename=''):
|
def register_export(exportData, title, description='', config=None,
|
||||||
|
filename=''):
|
||||||
"""
|
"""
|
||||||
Register an export filter, taking the task, file filter,
|
Register an export filter, taking the task, file filter,
|
||||||
and the list of patterns for the filename matching.
|
and the list of patterns for the filename matching.
|
||||||
@ -261,19 +260,19 @@ def register_tool(
|
|||||||
|
|
||||||
import _Tool
|
import _Tool
|
||||||
|
|
||||||
(junk,gui_task) = divmod(modes,2**_Tool.MODE_GUI)
|
(junk, gui_task) = divmod(modes, 2**_Tool.MODE_GUI)
|
||||||
if gui_task:
|
if gui_task:
|
||||||
_register_gui_tool(tool_class, options_class,translated_name,
|
_register_gui_tool(tool_class, options_class, translated_name,
|
||||||
name,category,description,
|
name, category, description,
|
||||||
status,author_name,author_email,unsupported,
|
status, author_name, author_email, unsupported,
|
||||||
require_active)
|
require_active)
|
||||||
|
|
||||||
(junk,cli_task) = divmod(modes-gui_task,2**_Tool.MODE_CLI)
|
(junk, cli_task) = divmod(modes-gui_task, 2**_Tool.MODE_CLI)
|
||||||
if cli_task:
|
if cli_task:
|
||||||
_register_cli_tool(name,category,tool_class, options_class,
|
_register_cli_tool(name, category, tool_class, options_class,
|
||||||
translated_name,unsupported)
|
translated_name, unsupported)
|
||||||
|
|
||||||
def _register_gui_tool(tool_class, options_class,translated_name,
|
def _register_gui_tool(tool_class, options_class, translated_name,
|
||||||
name,category,
|
name,category,
|
||||||
description=_unavailable,
|
description=_unavailable,
|
||||||
status=_("Unknown"),
|
status=_("Unknown"),
|
||||||
@ -282,28 +281,28 @@ def _register_gui_tool(tool_class, options_class,translated_name,
|
|||||||
unsupported=False,
|
unsupported=False,
|
||||||
require_active=True):
|
require_active=True):
|
||||||
del_index = -1
|
del_index = -1
|
||||||
for i in range(0,len(tool_list)):
|
for i in range(0, len(tool_list)):
|
||||||
val = tool_list[i]
|
val = tool_list[i]
|
||||||
if val[4] == name:
|
if val[4] == name:
|
||||||
del_index = i
|
del_index = i
|
||||||
if del_index != -1:
|
if del_index != -1:
|
||||||
del tool_list[del_index]
|
del tool_list[del_index]
|
||||||
mod2text[tool_class.__module__] = description
|
mod2text[tool_class.__module__] = description
|
||||||
tool_list.append((tool_class, options_class,translated_name,
|
tool_list.append((tool_class, options_class, translated_name,
|
||||||
category, name,description,status,
|
category, name, description, status,
|
||||||
author_name,author_email,unsupported, require_active))
|
author_name, author_email, unsupported, require_active))
|
||||||
|
|
||||||
def _register_cli_tool(name,category,tool_class, options_class,
|
def _register_cli_tool(name, category, tool_class, options_class,
|
||||||
translated_name,unsupported=False):
|
translated_name, unsupported=False):
|
||||||
del_index = -1
|
del_index = -1
|
||||||
for i in range(0,len(cli_tool_list)):
|
for i in range(0, len(cli_tool_list)):
|
||||||
val = cli_tool_list[i]
|
val = cli_tool_list[i]
|
||||||
if val[0] == name:
|
if val[0] == name:
|
||||||
del_index = i
|
del_index = i
|
||||||
if del_index != -1:
|
if del_index != -1:
|
||||||
del cli_tool_list[del_index]
|
del cli_tool_list[del_index]
|
||||||
cli_tool_list.append((name,category,tool_class, options_class,
|
cli_tool_list.append((name, category, tool_class, options_class,
|
||||||
translated_name,unsupported, None))
|
translated_name, unsupported, None))
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -332,25 +331,25 @@ def register_report(
|
|||||||
The low-level functions (starting with '_') should not be used
|
The low-level functions (starting with '_') should not be used
|
||||||
on their own. Instead, this function will call them as needed.
|
on their own. Instead, this function will call them as needed.
|
||||||
"""
|
"""
|
||||||
(junk,standalone_task) = divmod(modes,2**MODE_GUI)
|
(junk, standalone_task) = divmod(modes, 2**MODE_GUI)
|
||||||
if standalone_task:
|
if standalone_task:
|
||||||
_register_standalone(report_class, options_class,translated_name,
|
_register_standalone(report_class, options_class, translated_name,
|
||||||
name,category,description,
|
name, category, description,
|
||||||
status,author_name,author_email,unsupported,
|
status, author_name, author_email, unsupported,
|
||||||
require_active)
|
require_active)
|
||||||
|
|
||||||
(junk,book_item_task) = divmod(modes-standalone_task,2**MODE_BKI)
|
(junk, book_item_task) = divmod(modes-standalone_task, 2**MODE_BKI)
|
||||||
if book_item_task:
|
if book_item_task:
|
||||||
book_item_category = book_categories[category]
|
book_item_category = book_categories[category]
|
||||||
register_book_item(translated_name,book_item_category,
|
register_book_item(translated_name, book_item_category,
|
||||||
report_class, options_class, name,unsupported,
|
report_class, options_class, name, unsupported,
|
||||||
require_active)
|
require_active)
|
||||||
|
|
||||||
(junk,command_line_task) = divmod(modes-standalone_task-book_item_task,
|
(junk, command_line_task) = divmod(modes-standalone_task-book_item_task,
|
||||||
2**MODE_CLI)
|
2**MODE_CLI)
|
||||||
if command_line_task:
|
if command_line_task:
|
||||||
_register_cl_report(name,category,report_class, options_class,
|
_register_cl_report(name, category, report_class, options_class,
|
||||||
translated_name,unsupported, require_active)
|
translated_name, unsupported, require_active)
|
||||||
|
|
||||||
def _register_standalone(report_class, options_class, translated_name, name,
|
def _register_standalone(report_class, options_class, translated_name, name,
|
||||||
category, description=_unavailable,
|
category, description=_unavailable,
|
||||||
@ -360,7 +359,7 @@ def _register_standalone(report_class, options_class, translated_name, name,
|
|||||||
"""Register a report with the plugin system."""
|
"""Register a report with the plugin system."""
|
||||||
|
|
||||||
del_index = -1
|
del_index = -1
|
||||||
for i in range(0,len(report_list)):
|
for i in range(0, len(report_list)):
|
||||||
val = report_list[i]
|
val = report_list[i]
|
||||||
if val[4] == name:
|
if val[4] == name:
|
||||||
del_index = i
|
del_index = i
|
||||||
@ -377,7 +376,7 @@ def register_book_item(translated_name, category, report_class,
|
|||||||
"""Register a book item."""
|
"""Register a book item."""
|
||||||
|
|
||||||
del_index = -1
|
del_index = -1
|
||||||
for i in range(0,len(bkitems_list)):
|
for i in range(0, len(bkitems_list)):
|
||||||
val = bkitems_list[i]
|
val = bkitems_list[i]
|
||||||
if val[4] == name:
|
if val[4] == name:
|
||||||
del_index = i
|
del_index = i
|
||||||
@ -390,7 +389,7 @@ def register_book_item(translated_name, category, report_class,
|
|||||||
def _register_cl_report(name, category, report_class, options_class,
|
def _register_cl_report(name, category, report_class, options_class,
|
||||||
translated_name, unsupported, require_active):
|
translated_name, unsupported, require_active):
|
||||||
del_index = -1
|
del_index = -1
|
||||||
for i in range(0,len(cl_list)):
|
for i in range(0, len(cl_list)):
|
||||||
val = cl_list[i]
|
val = cl_list[i]
|
||||||
if val[0] == name:
|
if val[0] == name:
|
||||||
del_index = i
|
del_index = i
|
||||||
@ -404,11 +403,11 @@ def _register_cl_report(name, category, report_class, options_class,
|
|||||||
# Text document generator registration
|
# Text document generator registration
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
def register_text_doc(name,classref, table, paper, style, ext,
|
def register_text_doc(name, classref, table, paper, style, ext,
|
||||||
print_report_label=None, clname=''):
|
print_report_label=None, clname=''):
|
||||||
"""Register a text document generator."""
|
"""Register a text document generator."""
|
||||||
del_index = -1
|
del_index = -1
|
||||||
for i in range(0,len(textdoc_list)):
|
for i in range(0, len(textdoc_list)):
|
||||||
val = textdoc_list[i]
|
val = textdoc_list[i]
|
||||||
if val[0] == name:
|
if val[0] == name:
|
||||||
del_index = i
|
del_index = i
|
||||||
@ -428,11 +427,11 @@ def register_text_doc(name,classref, table, paper, style, ext,
|
|||||||
# Book document generator registration
|
# Book document generator registration
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
def register_book_doc(name,classref, table, paper, style, ext,
|
def register_book_doc(name, classref, table, paper, style, ext,
|
||||||
print_report_label=None, clname=''):
|
print_report_label=None, clname=''):
|
||||||
"""Register a text document generator"""
|
"""Register a text document generator"""
|
||||||
del_index = -1
|
del_index = -1
|
||||||
for i in range(0,len(bookdoc_list)):
|
for i in range(0, len(bookdoc_list)):
|
||||||
val = bookdoc_list[i]
|
val = bookdoc_list[i]
|
||||||
if val[0] == name:
|
if val[0] == name:
|
||||||
del_index = i
|
del_index = i
|
||||||
@ -441,19 +440,19 @@ def register_book_doc(name,classref, table, paper, style, ext,
|
|||||||
|
|
||||||
if not clname:
|
if not clname:
|
||||||
clname = ext[1:]
|
clname = ext[1:]
|
||||||
bookdoc_list.append((name,classref,table,paper,style,ext,
|
bookdoc_list.append((name, classref, table, paper, style, ext,
|
||||||
print_report_label,clname))
|
print_report_label, clname))
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Drawing document generator registration
|
# Drawing document generator registration
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
def register_draw_doc(name,classref,paper,style, ext,
|
def register_draw_doc(name, classref, paper, style, ext,
|
||||||
print_report_label=None,clname=''):
|
print_report_label=None, clname=''):
|
||||||
"""Register a drawing document generator"""
|
"""Register a drawing document generator"""
|
||||||
del_index = -1
|
del_index = -1
|
||||||
for i in range(0,len(drawdoc_list)):
|
for i in range(0, len(drawdoc_list)):
|
||||||
val = drawdoc_list[i]
|
val = drawdoc_list[i]
|
||||||
if val[0] == name:
|
if val[0] == name:
|
||||||
del_index = i
|
del_index = i
|
||||||
@ -461,7 +460,7 @@ def register_draw_doc(name,classref,paper,style, ext,
|
|||||||
del drawdoc_list[del_index]
|
del drawdoc_list[del_index]
|
||||||
if not clname:
|
if not clname:
|
||||||
clname = ext[1:]
|
clname = ext[1:]
|
||||||
drawdoc_list.append((name, classref, paper,style, ext,
|
drawdoc_list.append((name, classref, paper, style, ext,
|
||||||
print_report_label, clname))
|
print_report_label, clname))
|
||||||
mod2text[classref.__module__] = name
|
mod2text[classref.__module__] = name
|
||||||
|
|
||||||
@ -490,11 +489,8 @@ def register_quick_report(
|
|||||||
The low-level functions (starting with '_') should not be used
|
The low-level functions (starting with '_') should not be used
|
||||||
on their own. Instead, this function will call them as needed.
|
on their own. Instead, this function will call them as needed.
|
||||||
"""
|
"""
|
||||||
"""Register a report with the plugin system"""
|
|
||||||
global quick_report_list
|
|
||||||
|
|
||||||
del_index = -1
|
del_index = -1
|
||||||
for i in range(0,len(quick_report_list)):
|
for i in range(0, len(quick_report_list)):
|
||||||
val = quick_report_list[i]
|
val = quick_report_list[i]
|
||||||
if val[3] == name:
|
if val[3] == name:
|
||||||
del_index = i
|
del_index = i
|
||||||
@ -520,7 +516,7 @@ def purge_failed():
|
|||||||
|
|
||||||
failed_module_names = [
|
failed_module_names = [
|
||||||
os.path.splitext(os.path.basename(filename))[0]
|
os.path.splitext(os.path.basename(filename))[0]
|
||||||
for filename,junk in failmsg_list
|
for filename, junk in failmsg_list
|
||||||
]
|
]
|
||||||
|
|
||||||
#although these are global variables, we may not change the pointer of
|
#although these are global variables, we may not change the pointer of
|
||||||
@ -567,16 +563,3 @@ def register_relcalc(relclass, languages):
|
|||||||
def relationship_class():
|
def relationship_class():
|
||||||
global _relcalc_class
|
global _relcalc_class
|
||||||
return _relcalc_class()
|
return _relcalc_class()
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Image attributes
|
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
_image_attributes = []
|
|
||||||
def register_image_attribute(name):
|
|
||||||
if name not in _image_attributes:
|
|
||||||
_image_attributes.append(name)
|
|
||||||
|
|
||||||
def get_image_attributes():
|
|
||||||
return _image_attributes
|
|
||||||
|
Loading…
Reference in New Issue
Block a user