From 5ca5164a50f307cd761f3ea1e694371fe34293f0 Mon Sep 17 00:00:00 2001 From: lars Date: Tue, 31 Oct 2006 15:11:57 +0000 Subject: [PATCH] default plugin icon added plugins moved to /icons/plugins/PLUGINNAME --- pythonrewrite/bin/CryptoBoxPlugin.py | 9 +++++-- pythonrewrite/bin/WebInterfaceSites.py | 25 ++++++++++++++++++ pythonrewrite/plugins/plugin_icon_unknown.png | Bin 0 -> 14269 bytes pythonrewrite/templates/macros.cs | 2 +- pythonrewrite/www-data/cryptobox.css | 3 +++ 5 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 pythonrewrite/plugins/plugin_icon_unknown.png diff --git a/pythonrewrite/bin/CryptoBoxPlugin.py b/pythonrewrite/bin/CryptoBoxPlugin.py index cffb2c2..28f2210 100644 --- a/pythonrewrite/bin/CryptoBoxPlugin.py +++ b/pythonrewrite/bin/CryptoBoxPlugin.py @@ -4,6 +4,7 @@ # import os +import cherrypy class CryptoBoxPlugin: @@ -22,7 +23,7 @@ class CryptoBoxPlugin: ## default icon of this plugin (relative path) - iconFile = "plugin_icon.png" + defaultIconFileName = "plugin_icon.png" def __init__(self, cbox, pluginDir): @@ -47,10 +48,14 @@ class CryptoBoxPlugin: return self.__module__ + @cherrypy.expose def getIcon(self): """return the image data of the icon of the plugin""" import cherrypy - return cherrypy.lib.cptools.serveFile(os.path.join(self.pluginDir, self.iconFile)) + plugin_icon_file = os.path.join(self.pluginDir, self.defaultIconFileName) + if not os.access(plugin_icon_file, os.R_OK): + plugin_icon_file = os.path.join(self.cbox.prefs["Locations"]["PluginDir"], "plugin_icon_unknown.png") + return cherrypy.lib.cptools.serveFile(plugin_icon_file) def getTemplateFileName(self, template_name): diff --git a/pythonrewrite/bin/WebInterfaceSites.py b/pythonrewrite/bin/WebInterfaceSites.py index 9ddf3bb..79df20b 100755 --- a/pythonrewrite/bin/WebInterfaceSites.py +++ b/pythonrewrite/bin/WebInterfaceSites.py @@ -20,6 +20,29 @@ class WebInterfacePlugins: #setattr(getattr(self, plname), "stream_respones", True) +class IconHandler: + + def __init__(self, plugins): + self.plugins = PluginIconHandler(plugins) + self.plugins.exposed = True + + +class PluginIconHandler: + + def __init__(self, plugins): + for plugin in plugins.getPlugins(): + if not plugin: continue + plname = plugin.getName() + ## this should be the "easiest" way to expose all plugins as URLs + x = lambda: plugin.getIcon() + print x + print plugin.getIcon + def getIcon(p): + return p.getIcon() + setattr(self, plname, plugin.getIcon) + ## the function is exposed in the CryptoBoxPlugin class - it did not work here + + class WebInterfaceSites: ''' @@ -46,6 +69,8 @@ class WebInterfaceSites: ## publish the url "/system" as an alias for "/plugins" self.plugins.index = self.system self.dataset = WebInterfaceDataset.WebInterfaceDataset(self.cbox, self.prefs, self.pluginList.getPlugins()) + ## publish plugin icons + self.icons = IconHandler(self.pluginList) def __check_config(self): diff --git a/pythonrewrite/plugins/plugin_icon_unknown.png b/pythonrewrite/plugins/plugin_icon_unknown.png new file mode 100644 index 0000000000000000000000000000000000000000..d6e9b3a184b012df341fe6e378e0b4603f9e3fc9 GIT binary patch literal 14269 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 literal 0 HcmV?d00001 diff --git a/pythonrewrite/templates/macros.cs b/pythonrewrite/templates/macros.cs index bfa4036..d4fcef0 100644 --- a/pythonrewrite/templates/macros.cs +++ b/pythonrewrite/templates/macros.cs @@ -88,6 +88,6 @@ def:print_form_header(form_name, action) ?> class="plugin_"><?cs var:html_escape('icon: ' + plugin) ?>
class="plugin_"><?cs var:html_escape('icon: ' + plugin) ?>
diff --git a/pythonrewrite/www-data/cryptobox.css b/pythonrewrite/www-data/cryptobox.css index e0f22eb..acd8e88 100644 --- a/pythonrewrite/www-data/cryptobox.css +++ b/pythonrewrite/www-data/cryptobox.css @@ -454,6 +454,9 @@ div.plugin_main, div.plugin_system, div.plugin_volume { margin: 5px; } +div.plugin_main img, div.plugin_system img, div.plugin_volume img { + border: 0; +} div.plugin_main { width: 80px;