summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpepperpepperpepper <pepper@scannerjammer.com>2016-03-02 18:20:24 -0800
committerpepperpepperpepper <pepper@scannerjammer.com>2016-03-02 18:20:24 -0800
commite17f45d9ab2ca15bda473d8510d3f78d8c2323ef (patch)
tree669466db021e192a35a331a98a01f3bfe8273027
parent1159eacbc62c2ab7c566be078c43c08bdfda8778 (diff)
ok now we are talking...got plugins to work
-rw-r--r--photoblaster/__init__.py1
-rw-r--r--photoblaster/modules/__init__.py29
-rwxr-xr-xphotoblaster/modules/pbbreaker/__init__.py2
-rwxr-xr-xphotoblaster/modules/pbgenerate/__init__.py2
-rwxr-xr-xphotoblaster/modules/pbgradient/__init__.py2
-rwxr-xr-xphotoblaster/modules/pbgrid/__init__.py10
-rwxr-xr-xphotoblaster/modules/pblandscape/__init__.py8
-rwxr-xr-xphotoblaster/modules/pbpattern/__init__.py2
-rw-r--r--pluginloader.py19
-rw-r--r--run_module_examples.py6
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()