diff options
| author | pepperpepperpepper <pepper@scannerjammer.com> | 2016-03-02 18:20:24 -0800 |
|---|---|---|
| committer | pepperpepperpepper <pepper@scannerjammer.com> | 2016-03-02 18:20:24 -0800 |
| commit | e17f45d9ab2ca15bda473d8510d3f78d8c2323ef (patch) | |
| tree | 669466db021e192a35a331a98a01f3bfe8273027 | |
| parent | 1159eacbc62c2ab7c566be078c43c08bdfda8778 (diff) | |
ok now we are talking...got plugins to work
| -rw-r--r-- | photoblaster/__init__.py | 1 | ||||
| -rw-r--r-- | photoblaster/modules/__init__.py | 29 | ||||
| -rwxr-xr-x | photoblaster/modules/pbbreaker/__init__.py | 2 | ||||
| -rwxr-xr-x | photoblaster/modules/pbgenerate/__init__.py | 2 | ||||
| -rwxr-xr-x | photoblaster/modules/pbgradient/__init__.py | 2 | ||||
| -rwxr-xr-x | photoblaster/modules/pbgrid/__init__.py | 10 | ||||
| -rwxr-xr-x | photoblaster/modules/pblandscape/__init__.py | 8 | ||||
| -rwxr-xr-x | photoblaster/modules/pbpattern/__init__.py | 2 | ||||
| -rw-r--r-- | pluginloader.py | 19 | ||||
| -rw-r--r-- | run_module_examples.py | 6 |
10 files changed, 40 insertions, 41 deletions
diff --git a/photoblaster/__init__.py b/photoblaster/__init__.py index e69de29..26e9f05 100644 --- a/photoblaster/__init__.py +++ b/photoblaster/__init__.py @@ -0,0 +1 @@ +import photoblaster.config diff --git a/photoblaster/modules/__init__.py b/photoblaster/modules/__init__.py index b71f67b..0501fca 100644 --- a/photoblaster/modules/__init__.py +++ b/photoblaster/modules/__init__.py @@ -1,13 +1,34 @@ -""" -contains only the Pb class which is used by the Pb.* modules for inheritance -""" - import sys +import imp +import os from subprocess import call from photoblaster.params import Params import simplejson as json from photoblaster.db.models.imcmd import ImCmd +PLUGIN_FOLDER = "photoblaster/modules" + + +class Modules(object): + """a simple custom plugin system""" + def __init__(self, plugin_folder=PLUGIN_FOLDER): + self.plugin_folder = PLUGIN_FOLDER + self._plugins = [] + for i in os.listdir(self.plugin_folder): + location = os.path.join(self.plugin_folder, i) + if not os.path.isdir(location) or \ + "__init__.py" not in os.listdir(location): + continue + info = imp.find_module("__init__", [location]) + self._plugins.append({"name": i, "info": info}) + + def list_modules(self): + return [plugin["name"] for plugin in self._plugins] + + def get_module(self, name): + plugin = filter(lambda n: n["name"] == name, self._plugins)[0] + return imp.load_module("modules", *plugin["info"]).get_class() + class PbProcessError(Exception): pass diff --git a/photoblaster/modules/pbbreaker/__init__.py b/photoblaster/modules/pbbreaker/__init__.py index 7e6c92c..cda5658 100755 --- a/photoblaster/modules/pbbreaker/__init__.py +++ b/photoblaster/modules/pbbreaker/__init__.py @@ -3,7 +3,7 @@ import os import random import re from photoblaster.config import BIN_CONVERT -from photoblaster.modules_src import ModuleBase +from photoblaster.modules import ModuleBase from photoblaster._file import File DEFAULT_FINALFORMAT = "png" diff --git a/photoblaster/modules/pbgenerate/__init__.py b/photoblaster/modules/pbgenerate/__init__.py index 360a3ea..2d9531f 100755 --- a/photoblaster/modules/pbgenerate/__init__.py +++ b/photoblaster/modules/pbgenerate/__init__.py @@ -1,7 +1,7 @@ #!/usr/bin/python2.7 from photoblaster.config import BIN_CONVERT, OUTPUT_IMAGE_TYPES,\ DEFAULT_FINALFORMAT -from photoblaster.modules_src import ModuleBase +from photoblaster.modules import ModuleBase from photoblaster._file import File _GRAVITY_PARAMS = [ diff --git a/photoblaster/modules/pbgradient/__init__.py b/photoblaster/modules/pbgradient/__init__.py index 343c35a..94d306f 100755 --- a/photoblaster/modules/pbgradient/__init__.py +++ b/photoblaster/modules/pbgradient/__init__.py @@ -3,7 +3,7 @@ from photoblaster.config import DEFAULT_WIDTH, DEFAULT_HEIGHT,\
DEFAULT_FINALFORMAT, \
BIN_CONVERT, BEVELBORDER, OUTPUT_IMAGE_TYPES
-from photoblaster.modules_src import ModuleBase
+from photoblaster.modules import ModuleBase
from photoblaster._file import File
_DEFAULT_COLOR_1 = "white"
diff --git a/photoblaster/modules/pbgrid/__init__.py b/photoblaster/modules/pbgrid/__init__.py index bff0ad6..39686c7 100755 --- a/photoblaster/modules/pbgrid/__init__.py +++ b/photoblaster/modules/pbgrid/__init__.py @@ -1,7 +1,7 @@ from photoblaster.config import DEFAULT_FINALFORMAT, DEFAULT_HEIGHT,\ DEFAULT_WIDTH, OUTPUT_IMAGE_TYPES,\ THREEDROTATE, GRID, BIN_CONVERT, BIN_COMPOSITE -from photoblaster.modules_src import ModuleBase +from photoblaster.modules import ModuleBase from photoblaster._file import File _DEFAULT_LINE_COLOR = "silver" @@ -199,8 +199,6 @@ class PbGrid(ModuleBase): self._call_cmd(cmd) def _overlay_planebgimage(self): - import sys - sys.stderr.write("should be overlaying here!\n\n\n") cmd = [ BIN_COMPOSITE, "-compose", "Dst_Over", "-gravity", "center", @@ -223,12 +221,7 @@ class PbGrid(ModuleBase): self._shadow_cmd() self._threed_rotate_cmd() if self.params.planebgimage: - import sys - sys.stderr.write("what the fuck!!!") self._overlay_planebgimage() - else: - import sys - sys.stderr.write("UMMMMMMMMMMMMMMMMMM\n") if self.params.trim: self._trim_cmd() super(PbGrid, self).create() @@ -236,4 +229,3 @@ class PbGrid(ModuleBase): def get_class(): return PbGrid - diff --git a/photoblaster/modules/pblandscape/__init__.py b/photoblaster/modules/pblandscape/__init__.py index 651f2e9..0e14a2e 100755 --- a/photoblaster/modules/pblandscape/__init__.py +++ b/photoblaster/modules/pblandscape/__init__.py @@ -1,5 +1,5 @@ import base64 -from photoblaster.modules_src import ModuleBase +from photoblaster.modules import ModuleBase import urlparse import re from photoblaster._file import File @@ -53,6 +53,10 @@ class PbLandscape(ModuleBase): except Exception as e: self.err_warn(str(e)) - def create(self, breakmode=""): + def create(self): self._saveImgData() super(PbLandscape, self).create() + + +def get_class(): + return PbLandscape diff --git a/photoblaster/modules/pbpattern/__init__.py b/photoblaster/modules/pbpattern/__init__.py index 355b30f..c4ea379 100755 --- a/photoblaster/modules/pbpattern/__init__.py +++ b/photoblaster/modules/pbpattern/__init__.py @@ -1,5 +1,5 @@ from photoblaster.config import BIN_CONVERT, BIN_COMPOSITE -from photoblaster.modules_src import ModuleBase +from photoblaster.modules import ModuleBase from PIL import Image from photoblaster._file import File diff --git a/pluginloader.py b/pluginloader.py deleted file mode 100644 index 1f568d4..0000000 --- a/pluginloader.py +++ /dev/null @@ -1,19 +0,0 @@ -import imp -import os - -PluginFolder = "./photoblaster/modules_src" -MainModule = "__init__" - -def getPlugins(): - plugins = [] - possibleplugins = os.listdir(PluginFolder) - for i in possibleplugins: - location = os.path.join(PluginFolder, i) - if not os.path.isdir(location) or not MainModule + ".py" in os.listdir(location): - continue - info = imp.find_module(MainModule, [location]) - plugins.append({"name": i, "info": info}) - return plugins - -def loadPlugin(plugin): - return imp.load_module(MainModule, *plugin["info"]) diff --git a/run_module_examples.py b/run_module_examples.py index c6559c8..342892b 100644 --- a/run_module_examples.py +++ b/run_module_examples.py @@ -1,12 +1,12 @@ #!/usr/bin/python2.7 """calls the example_run method on all modules""" -import pluginbase from photoblaster.modules import Modules - modules = Modules() for module_name in modules.list_modules(): - if module_name == 'pbgradient': + if module_name == "pblandscape": + print "\n\n\n" + print "running example for %s" % module_name cls = modules.get_module(module_name) instance = cls.example_run() instance.get_output_file().s3move() |
