├── .gitignore ├── LICENSE ├── README.rst ├── debugfilters.conf ├── docs ├── Makefile ├── _build │ ├── .buildinfo │ ├── .doctrees │ │ ├── environment.pickle │ │ ├── index.doctree │ │ ├── modules.doctree │ │ ├── plugsy.doctree │ │ ├── plugsy.sdk.PluginTemplate.doctree │ │ ├── plugsy.sdk.doctree │ │ ├── plugsy.sdk.gui.doctree │ │ └── plugsy.utils.doctree │ ├── _modules │ │ ├── index.html │ │ └── plugsy │ │ │ ├── AbstractPlugin.html │ │ │ ├── Exceptions.html │ │ │ ├── Plugsy.html │ │ │ ├── sdk │ │ │ ├── Exceptions.html │ │ │ ├── Plugin.html │ │ │ ├── PluginTemplate │ │ │ │ └── PluginTemplate.html │ │ │ ├── Sdk.html │ │ │ └── gui │ │ │ │ ├── ConfirmationDialogs.html │ │ │ │ ├── SdkGui.html │ │ │ │ └── SdkGuiAbs.html │ │ │ └── utils │ │ │ ├── LaunchPlugsyGui.html │ │ │ ├── Logger.html │ │ │ └── toposort.html │ ├── _sources │ │ ├── index.rst.txt │ │ ├── modules.rst.txt │ │ ├── plugsy.rst.txt │ │ ├── plugsy.sdk.PluginTemplate.rst.txt │ │ ├── plugsy.sdk.gui.rst.txt │ │ ├── plugsy.sdk.rst.txt │ │ └── plugsy.utils.rst.txt │ ├── _static │ │ ├── ajax-loader.gif │ │ ├── basic.css │ │ ├── comment-bright.png │ │ ├── comment-close.png │ │ ├── comment.png │ │ ├── css │ │ │ ├── badge_only.css │ │ │ └── theme.css │ │ ├── doctools.js │ │ ├── documentation_options.js │ │ ├── down-pressed.png │ │ ├── down.png │ │ ├── file.png │ │ ├── fonts │ │ │ ├── Inconsolata-Bold.ttf │ │ │ ├── Inconsolata-Regular.ttf │ │ │ ├── Lato-Bold.ttf │ │ │ ├── Lato-BoldItalic.ttf │ │ │ ├── Lato-Italic.ttf │ │ │ ├── Lato-Regular.ttf │ │ │ ├── RobotoSlab-Bold.ttf │ │ │ ├── RobotoSlab-Regular.ttf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ └── fontawesome-webfont.woff2 │ │ ├── jquery-3.2.1.js │ │ ├── jquery.js │ │ ├── js │ │ │ ├── modernizr.min.js │ │ │ └── theme.js │ │ ├── minus.png │ │ ├── plus.png │ │ ├── pygments.css │ │ ├── searchtools.js │ │ ├── underscore-1.3.1.js │ │ ├── underscore.js │ │ ├── up-pressed.png │ │ ├── up.png │ │ └── websupport.js │ ├── doctrees │ │ ├── Classes.doctree │ │ ├── environment.pickle │ │ ├── index.doctree │ │ ├── install.doctree │ │ ├── modules.doctree │ │ ├── plugsy.doctree │ │ ├── plugsy.sdk.PluginTemplate.doctree │ │ ├── plugsy.sdk.doctree │ │ ├── plugsy.sdk.gui.doctree │ │ └── plugsy.utils.doctree │ ├── genindex.html │ ├── html │ │ ├── .buildinfo │ │ ├── .doctrees │ │ │ ├── environment.pickle │ │ │ ├── index.doctree │ │ │ ├── install.doctree │ │ │ ├── modules.doctree │ │ │ ├── plugsy.doctree │ │ │ ├── plugsy.sdk.PluginTemplate.doctree │ │ │ ├── plugsy.sdk.doctree │ │ │ └── plugsy.sdk.gui.doctree │ │ ├── Classes.html │ │ ├── _modules │ │ │ ├── index.html │ │ │ └── plugsy │ │ │ │ ├── AbstractPlugin.html │ │ │ │ ├── Exceptions.html │ │ │ │ ├── LaunchPlugsyGui.html │ │ │ │ ├── Logger.html │ │ │ │ ├── Plugsy.html │ │ │ │ ├── sdk │ │ │ │ ├── Exceptions.html │ │ │ │ ├── Plugin.html │ │ │ │ ├── PluginTemplate │ │ │ │ │ └── PluginTemplate.html │ │ │ │ ├── Sdk.html │ │ │ │ └── gui │ │ │ │ │ ├── ConfirmationDialogs.html │ │ │ │ │ ├── SdkGui.html │ │ │ │ │ └── SdkGuiAbs.html │ │ │ │ └── utils │ │ │ │ ├── LaunchPlugsyGui.html │ │ │ │ ├── Logger.html │ │ │ │ └── toposort.html │ │ ├── _sources │ │ │ ├── Classes.rst.txt │ │ │ ├── index.rst.txt │ │ │ ├── install.rst.txt │ │ │ ├── modules.rst.txt │ │ │ ├── plugsy.rst.txt │ │ │ ├── plugsy.sdk.PluginTemplate.rst.txt │ │ │ ├── plugsy.sdk.gui.rst.txt │ │ │ ├── plugsy.sdk.rst.txt │ │ │ └── plugsy.utils.rst.txt │ │ ├── _static │ │ │ ├── ajax-loader.gif │ │ │ ├── alabaster.css │ │ │ ├── basic.css │ │ │ ├── comment-bright.png │ │ │ ├── comment-close.png │ │ │ ├── comment.png │ │ │ ├── css │ │ │ │ ├── badge_only.css │ │ │ │ └── theme.css │ │ │ ├── custom.css │ │ │ ├── doctools.js │ │ │ ├── documentation_options.js │ │ │ ├── down-pressed.png │ │ │ ├── down.png │ │ │ ├── file.png │ │ │ ├── fonts │ │ │ │ ├── Inconsolata-Bold.ttf │ │ │ │ ├── Inconsolata-Regular.ttf │ │ │ │ ├── Lato-Bold.ttf │ │ │ │ ├── Lato-BoldItalic.ttf │ │ │ │ ├── Lato-Italic.ttf │ │ │ │ ├── Lato-Regular.ttf │ │ │ │ ├── RobotoSlab-Bold.ttf │ │ │ │ ├── RobotoSlab-Regular.ttf │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ ├── fontawesome-webfont.svg │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ └── fontawesome-webfont.woff2 │ │ │ ├── jquery-3.2.1.js │ │ │ ├── jquery.js │ │ │ ├── js │ │ │ │ ├── modernizr.min.js │ │ │ │ └── theme.js │ │ │ ├── minus.png │ │ │ ├── plus.png │ │ │ ├── pygments.css │ │ │ ├── searchtools.js │ │ │ ├── underscore-1.3.1.js │ │ │ ├── underscore.js │ │ │ ├── up-pressed.png │ │ │ ├── up.png │ │ │ └── websupport.js │ │ ├── genindex.html │ │ ├── index.html │ │ ├── install.html │ │ ├── modules.html │ │ ├── objects.inv │ │ ├── plugsy.html │ │ ├── plugsy.sdk.PluginTemplate.html │ │ ├── plugsy.sdk.gui.html │ │ ├── plugsy.sdk.html │ │ ├── plugsy.utils.html │ │ ├── py-modindex.html │ │ ├── search.html │ │ └── searchindex.js │ ├── index.html │ ├── modules.html │ ├── objects.inv │ ├── plugsy.html │ ├── plugsy.sdk.PluginTemplate.html │ ├── plugsy.sdk.gui.html │ ├── plugsy.sdk.html │ ├── plugsy.utils.html │ ├── py-modindex.html │ ├── search.html │ └── searchindex.js ├── conf.py ├── index.rst ├── make.bat ├── modules.rst ├── plugsy.rst ├── plugsy.sdk.PluginTemplate.rst ├── plugsy.sdk.rst └── plugsy.utils.rst ├── plugsy ├── AbstractPlugin.py ├── Config.py ├── Exceptions.py ├── Plugsy.py ├── __init__.py ├── sdk │ ├── Exceptions.py │ ├── Plugin.py │ ├── PluginTemplate │ │ ├── Config.py │ │ ├── PluginTemplate.py │ │ └── __init__.py │ ├── Sdk.py │ ├── __init__.py │ ├── gui │ │ ├── ConfirmationDialogs.py │ │ ├── SdkGui.py │ │ ├── SdkGuiAbs.py │ │ └── __init__.py │ └── gui_prototypes │ │ └── gui_prototypes.fbp └── utils │ ├── LaunchPlugsyGui.py │ ├── Logger.py │ ├── __init__.py │ └── toposort.py ├── sample_plugins ├── __init__.py ├── addon │ ├── Truck │ │ ├── Config.py │ │ ├── Truck.py │ │ └── __init__.py │ └── __init__.py └── core │ ├── Boat │ ├── Boat.py │ ├── Config.py │ └── __init__.py │ ├── Car │ ├── Car.py │ ├── Config.py │ └── __init__.py │ └── __init__.py └── setup.py /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.pyo 3 | venv/* 4 | PlugSy.egg-info/* 5 | dist/* 6 | .idea/* 7 | __pycache__/* 8 | build/* 9 | plugins/* 10 | Test.py 11 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | PlugSy is a cross-platform threaded plugin framework and SDK for Python. With PlugSy, each plugin runs in a separate 2 | thread and has a handle to the global PlugSy plugin management object, allowing plugins to communicate and interact with 3 | each other. Whilst there are numerous existing Python Plugin frameworks, it's this built-in support for threading that 4 | makes PlugSy slightly different. 5 | 6 | 7 | |Documentation| 8 | 9 | 10 | Links 11 | ============== 12 | * home: https://github.com/sithis993/PlugSy 13 | * docs: http://plugsy.readthedocs.io 14 | * PyPI: https://pypi.org/project/PlugSy/ 15 | 16 | Project Goal 17 | ============== 18 | 19 | The goal of this project is to aid with the rapid development of Python applications of varying size and complexity. 20 | PlugSy tries to make it easy for developers to create small modular components (plugins) that interact and 21 | combine to form the basis of a complete software piece. By keeping extensibility and modularity in mind, PlugSy 22 | allows you to move from a basic single-plugin application, to a large application with a multitude of complex 23 | plugins, at your own pace. 24 | 25 | Features 26 | ============== 27 | * Separation of plugins into core and addon packages 28 | * Cross-platform support 29 | * Pure-python, no dependencies required 30 | * Built-in logging support for the PlugSy manager and each individual plugin 31 | * SDK GUI for quickly creating and deleting plugins 32 | 33 | Roadmap 34 | ============== 35 | * PyInstaller integration and executable production 36 | * Combining PlugSy and any developed plugins into a PyInstaller executable via SDK and SDK GUI 37 | * Option to add a Windows service wrapper 38 | * Further support for additional Python versions 39 | 40 | Similar Projects 41 | ================ 42 | * PluginBase: http://pluginbase.pocoo.org/ 43 | * Yapsy: http://yapsy.sourceforge.net/ 44 | 45 | Example Usage 46 | ================ 47 | 48 | PlugSy 49 | ############# 50 | 51 | Initiating PlugSy 52 | :: 53 | 54 | from plugsy import Plugsy 55 | 56 | plugsy = Plugsy() 57 | 58 | Activating all existing plugins 59 | :: 60 | 61 | plugsy.activate_plugins() 62 | 63 | Activating specific plugins 64 | :: 65 | 66 | plugsy.activate_plugins(["MainPlugin", "FirstPlugin", "FifthPlugin"]) 67 | 68 | Deactivating all plugins 69 | :: 70 | 71 | plugsy.deactivate_plugins() 72 | 73 | Deactivating specific plugins 74 | :: 75 | 76 | plugsy.deactivate_plugins(["MainPlugin", "FirstPlugin", "FifthPlugin"]) 77 | 78 | Interacting with plugin objects 79 | :: 80 | 81 | main_plugin = plugsy.get_plugin("MainPlugin") 82 | main_plugin.do_something() 83 | main_plugin.do_something_else() 84 | 85 | first_plugin = plugsy.get_plugin("FirstPlugin") 86 | first_plugin.take_an_action("some_action") 87 | some_data = first_plugin.get_some_data() 88 | 89 | 90 | SDK 91 | ############# 92 | 93 | Initiating the SDK 94 | :: 95 | 96 | from plugsy.sdk.Sdk import Sdk 97 | 98 | # Pass in path to directory containing plugins (or path to an empty dir) 99 | sdk = Sdk(plugins_home_path=".\\plugins") 100 | 101 | Creating a new plugin 102 | :: 103 | 104 | # Pass in the plugin type (core or addon) and plugin name 105 | sdk.create_plugin(plugin_type="core", name="MyNewPlugin") 106 | 107 | Deleting a plugin 108 | :: 109 | 110 | sdk.delete_plugin(name="MyNewPlugin") 111 | 112 | Installation 113 | ================== 114 | Installation of PlugSy is simple using Pip: 115 | :: 116 | 117 | pip install plugsy 118 | 119 | 120 | Dependencies 121 | ================== 122 | * \*wxPython (4.0.1): https://pypi.org/project/wxPython/#description 123 | 124 | \*wxPython is only required if you're running Windows and want to use the SDK GUI 125 | 126 | 127 | .. |Documentation| image:: https://readthedocs.org/projects/plugsy/badge/?version=latest 128 | :target: http://plugsy.readthedocs.io/en/latest/?badge=latest 129 | :alt: Documentation Status 130 | -------------------------------------------------------------------------------- /debugfilters.conf: -------------------------------------------------------------------------------- 1 | # PlugSy - Debug filters list 2 | # Add debug filters to this file (one filter per line). 3 | # For example, to only see debug from a core plugin called filterexample, add a line containing plugsy.plugins.core/filterexample 4 | -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | SPHINXPROJ = PlugSy 8 | SOURCEDIR = . 9 | BUILDDIR = _build 10 | 11 | # Put it first so that "make" without argument is like "make help". 12 | help: 13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -------------------------------------------------------------------------------- /docs/_build/.buildinfo: -------------------------------------------------------------------------------- 1 | # Sphinx build info version 1 2 | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. 3 | config: 4fba2603eb951b6a34fb23f0435c24a9 4 | tags: 645f666f9bcd5a90fca523b33c5a78b7 5 | -------------------------------------------------------------------------------- /docs/_build/.doctrees/environment.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/.doctrees/environment.pickle -------------------------------------------------------------------------------- /docs/_build/.doctrees/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/.doctrees/index.doctree -------------------------------------------------------------------------------- /docs/_build/.doctrees/modules.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/.doctrees/modules.doctree -------------------------------------------------------------------------------- /docs/_build/.doctrees/plugsy.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/.doctrees/plugsy.doctree -------------------------------------------------------------------------------- /docs/_build/.doctrees/plugsy.sdk.PluginTemplate.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/.doctrees/plugsy.sdk.PluginTemplate.doctree -------------------------------------------------------------------------------- /docs/_build/.doctrees/plugsy.sdk.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/.doctrees/plugsy.sdk.doctree -------------------------------------------------------------------------------- /docs/_build/.doctrees/plugsy.sdk.gui.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/.doctrees/plugsy.sdk.gui.doctree -------------------------------------------------------------------------------- /docs/_build/.doctrees/plugsy.utils.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/.doctrees/plugsy.utils.doctree -------------------------------------------------------------------------------- /docs/_build/_modules/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Overview: module code — PlugSy documentation 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 | 44 | 87 | 88 |
89 | 90 | 91 | 97 | 98 | 99 |
100 | 101 |
102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 |
120 | 121 |
    122 | 123 |
  • Docs »
  • 124 | 125 |
  • Overview: module code
  • 126 | 127 | 128 |
  • 129 | 130 |
  • 131 | 132 |
133 | 134 | 135 |
136 |
137 | 159 | 173 | 174 |
175 |
176 | 177 |
178 | 179 |
180 | 181 | 182 | 183 | 184 | 185 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 212 | 213 | 214 | -------------------------------------------------------------------------------- /docs/_build/_modules/plugsy/sdk/PluginTemplate/PluginTemplate.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | plugsy.sdk.PluginTemplate.PluginTemplate — PlugSy documentation 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 | 44 | 87 | 88 |
89 | 90 | 91 | 97 | 98 | 99 |
100 | 101 |
102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 |
120 | 121 |
    122 | 123 |
  • Docs »
  • 124 | 125 |
  • Module code »
  • 126 | 127 |
  • plugsy.sdk.PluginTemplate.PluginTemplate
  • 128 | 129 | 130 |
  • 131 | 132 |
  • 133 | 134 |
135 | 136 | 137 |
138 |
139 |
140 |
141 | 142 |

Source code for plugsy.sdk.PluginTemplate.PluginTemplate

143 | '''
144 | Plugsy - PluginTemplate
145 | Generated by PlugSy SDK
146 | '''
147 | 
148 | #Import libs
149 | import time
150 | 
151 | # Import Package and PlugSy Modules
152 | from plugsy.AbstractPlugin import AbstractPlugin
153 | 
154 | 
[docs]class PluginTemplate(AbstractPlugin): 155 | ''' 156 | PluginTemplate class 157 | ''' 158 | 159 | def __init__(self, plugsy): 160 | ''' 161 | Constructor. Call parent init fam 162 | 163 | :param plugsy: Parent plugsy object 164 | ''' 165 | AbstractPlugin.__init__(self, plugsy) 166 | 167 | 168 |
[docs] def run(self): 169 | ''' 170 | Main run method. 171 | ''' 172 | self.logger.debug("ENTRY!") 173 | self.logger.info("PluginTemplate running!") 174 | 175 | while not self.stop_event.is_set(): 176 | pass 177 | 178 | self.logger.info("PluginTemplate stopping!") 179 | self.logger.debug("EXIT!")
180 |
181 | 182 |
183 | 184 |
185 | 199 | 200 |
201 |
202 | 203 |
204 | 205 |
206 | 207 | 208 | 209 | 210 | 211 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 238 | 239 | 240 | -------------------------------------------------------------------------------- /docs/_build/_modules/plugsy/utils/LaunchPlugsyGui.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | plugsy.utils.LaunchPlugsyGui — PlugSy documentation 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 | 44 | 87 | 88 |
89 | 90 | 91 | 97 | 98 | 99 |
100 | 101 |
102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 |
120 | 121 |
    122 | 123 |
  • Docs »
  • 124 | 125 |
  • Module code »
  • 126 | 127 |
  • plugsy.utils.LaunchPlugsyGui
  • 128 | 129 | 130 |
  • 131 | 132 |
  • 133 | 134 |
135 | 136 | 137 |
138 |
139 |
140 |
141 | 142 |

Source code for plugsy.utils.LaunchPlugsyGui

143 | '''
144 | SDK GUI Launcher
145 | '''
146 | 
147 | # Check os is Windows
148 | import sys
149 | 
150 | try:
151 |     import wx
152 | except ImportError as ix:
153 |     if not sys.platform.lower().startswith("win"):
154 |         raise OSError("The PlugSy SDK GUI is currently only supported on Windows-based platforms.")
155 |     else:
156 |         raise ix
157 | 
158 | from plugsy.sdk.gui import SdkGui
159 | 
160 | 
[docs]def Go(): 161 | ''' 162 | Initiates and launches the PlugSy GUI 163 | ''' 164 | app = wx.App() 165 | gui = SdkGui() 166 | gui.Show() 167 | app.MainLoop()
168 | 169 | if __name__ == "__main__": 170 | Go() 171 | 172 |
173 | 174 |
175 | 176 |
177 | 191 | 192 |
193 |
194 | 195 |
196 | 197 |
198 | 199 | 200 | 201 | 202 | 203 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 230 | 231 | 232 | -------------------------------------------------------------------------------- /docs/_build/_sources/index.rst.txt: -------------------------------------------------------------------------------- 1 | .. PlugSy documentation master file, created by 2 | sphinx-quickstart on Thu May 17 13:10:00 2018. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | ================================== 7 | PlugSy 8 | ================================== 9 | 10 | About 11 | ========= 12 | 13 | .. include:: ../README.rst 14 | 15 | .. toctree:: 16 | :maxdepth: 2 17 | :caption: Contents: 18 | 19 | Indices and tables 20 | ================== 21 | 22 | * :ref:`genindex` 23 | * :ref:`modindex` 24 | * :ref:`search` 25 | -------------------------------------------------------------------------------- /docs/_build/_sources/modules.rst.txt: -------------------------------------------------------------------------------- 1 | plugsy 2 | ====== 3 | 4 | .. toctree:: 5 | :maxdepth: 4 6 | 7 | plugsy 8 | -------------------------------------------------------------------------------- /docs/_build/_sources/plugsy.rst.txt: -------------------------------------------------------------------------------- 1 | plugsy package 2 | ============== 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | 9 | plugsy.sdk 10 | plugsy.utils 11 | 12 | Submodules 13 | ---------- 14 | 15 | plugsy.AbstractPlugin module 16 | ---------------------------- 17 | 18 | .. automodule:: plugsy.AbstractPlugin 19 | :members: 20 | :undoc-members: 21 | :show-inheritance: 22 | 23 | plugsy.Config module 24 | -------------------- 25 | 26 | .. automodule:: plugsy.Config 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | plugsy.Exceptions module 32 | ------------------------ 33 | 34 | .. automodule:: plugsy.Exceptions 35 | :members: 36 | :undoc-members: 37 | :show-inheritance: 38 | 39 | plugsy.Plugsy module 40 | -------------------- 41 | 42 | .. automodule:: plugsy.Plugsy 43 | :members: 44 | :undoc-members: 45 | :show-inheritance: 46 | 47 | 48 | Module contents 49 | --------------- 50 | 51 | .. automodule:: plugsy 52 | :members: 53 | :undoc-members: 54 | :show-inheritance: 55 | -------------------------------------------------------------------------------- /docs/_build/_sources/plugsy.sdk.PluginTemplate.rst.txt: -------------------------------------------------------------------------------- 1 | plugsy.sdk.PluginTemplate package 2 | ================================= 3 | 4 | Submodules 5 | ---------- 6 | 7 | plugsy.sdk.PluginTemplate.Config module 8 | --------------------------------------- 9 | 10 | .. automodule:: plugsy.sdk.PluginTemplate.Config 11 | :members: 12 | :undoc-members: 13 | :show-inheritance: 14 | 15 | plugsy.sdk.PluginTemplate.PluginTemplate module 16 | ----------------------------------------------- 17 | 18 | .. automodule:: plugsy.sdk.PluginTemplate.PluginTemplate 19 | :members: 20 | :undoc-members: 21 | :show-inheritance: 22 | 23 | 24 | Module contents 25 | --------------- 26 | 27 | .. automodule:: plugsy.sdk.PluginTemplate 28 | :members: 29 | :undoc-members: 30 | :show-inheritance: 31 | -------------------------------------------------------------------------------- /docs/_build/_sources/plugsy.sdk.gui.rst.txt: -------------------------------------------------------------------------------- 1 | plugsy.sdk.gui package 2 | ====================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | plugsy.sdk.gui.ConfirmationDialogs module 8 | ----------------------------------------- 9 | 10 | .. automodule:: plugsy.sdk.gui.ConfirmationDialogs 11 | :members: 12 | :undoc-members: 13 | :show-inheritance: 14 | 15 | plugsy.sdk.gui.SdkGui module 16 | ---------------------------- 17 | 18 | .. automodule:: plugsy.sdk.gui.SdkGui 19 | :members: 20 | :undoc-members: 21 | :show-inheritance: 22 | 23 | plugsy.sdk.gui.SdkGuiAbs module 24 | ------------------------------- 25 | 26 | .. automodule:: plugsy.sdk.gui.SdkGuiAbs 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | 32 | Module contents 33 | --------------- 34 | 35 | .. automodule:: plugsy.sdk.gui 36 | :members: 37 | :undoc-members: 38 | :show-inheritance: 39 | -------------------------------------------------------------------------------- /docs/_build/_sources/plugsy.sdk.rst.txt: -------------------------------------------------------------------------------- 1 | plugsy.sdk package 2 | ================== 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | 9 | plugsy.sdk.PluginTemplate 10 | plugsy.sdk.gui 11 | 12 | Submodules 13 | ---------- 14 | 15 | plugsy.sdk.Exceptions module 16 | ---------------------------- 17 | 18 | .. automodule:: plugsy.sdk.Exceptions 19 | :members: 20 | :undoc-members: 21 | :show-inheritance: 22 | 23 | plugsy.sdk.Plugin module 24 | ------------------------ 25 | 26 | .. automodule:: plugsy.sdk.Plugin 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | plugsy.sdk.Sdk module 32 | --------------------- 33 | 34 | .. automodule:: plugsy.sdk.Sdk 35 | :members: 36 | :undoc-members: 37 | :show-inheritance: 38 | 39 | 40 | Module contents 41 | --------------- 42 | 43 | .. automodule:: plugsy.sdk 44 | :members: 45 | :undoc-members: 46 | :show-inheritance: 47 | -------------------------------------------------------------------------------- /docs/_build/_sources/plugsy.utils.rst.txt: -------------------------------------------------------------------------------- 1 | plugsy.utils package 2 | ==================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | plugsy.utils.LaunchPlugsyGui module 8 | ----------------------------------- 9 | 10 | .. automodule:: plugsy.utils.LaunchPlugsyGui 11 | :members: 12 | :undoc-members: 13 | :show-inheritance: 14 | 15 | plugsy.utils.Logger module 16 | -------------------------- 17 | 18 | .. automodule:: plugsy.utils.Logger 19 | :members: 20 | :undoc-members: 21 | :show-inheritance: 22 | 23 | plugsy.utils.toposort module 24 | ---------------------------- 25 | 26 | .. automodule:: plugsy.utils.toposort 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | 32 | Module contents 33 | --------------- 34 | 35 | .. automodule:: plugsy.utils 36 | :members: 37 | :undoc-members: 38 | :show-inheritance: 39 | -------------------------------------------------------------------------------- /docs/_build/_static/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/ajax-loader.gif -------------------------------------------------------------------------------- /docs/_build/_static/comment-bright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/comment-bright.png -------------------------------------------------------------------------------- /docs/_build/_static/comment-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/comment-close.png -------------------------------------------------------------------------------- /docs/_build/_static/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/comment.png -------------------------------------------------------------------------------- /docs/_build/_static/css/badge_only.css: -------------------------------------------------------------------------------- 1 | .fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../fonts/fontawesome-webfont.eot");src:url("../fonts/fontawesome-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff") format("woff"),url("../fonts/fontawesome-webfont.ttf") format("truetype"),url("../fonts/fontawesome-webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:""}.icon-book:before{content:""}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{height:auto;max-height:100%}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} 2 | -------------------------------------------------------------------------------- /docs/_build/_static/documentation_options.js: -------------------------------------------------------------------------------- 1 | var DOCUMENTATION_OPTIONS = { 2 | URL_ROOT: '', 3 | VERSION: '', 4 | LANGUAGE: 'None', 5 | COLLAPSE_INDEX: false, 6 | FILE_SUFFIX: '.html', 7 | HAS_SOURCE: true, 8 | SOURCELINK_SUFFIX: '.txt' 9 | }; -------------------------------------------------------------------------------- /docs/_build/_static/down-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/down-pressed.png -------------------------------------------------------------------------------- /docs/_build/_static/down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/down.png -------------------------------------------------------------------------------- /docs/_build/_static/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/file.png -------------------------------------------------------------------------------- /docs/_build/_static/fonts/Inconsolata-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/fonts/Inconsolata-Bold.ttf -------------------------------------------------------------------------------- /docs/_build/_static/fonts/Inconsolata-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/fonts/Inconsolata-Regular.ttf -------------------------------------------------------------------------------- /docs/_build/_static/fonts/Lato-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/fonts/Lato-Bold.ttf -------------------------------------------------------------------------------- /docs/_build/_static/fonts/Lato-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/fonts/Lato-BoldItalic.ttf -------------------------------------------------------------------------------- /docs/_build/_static/fonts/Lato-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/fonts/Lato-Italic.ttf -------------------------------------------------------------------------------- /docs/_build/_static/fonts/Lato-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/fonts/Lato-Regular.ttf -------------------------------------------------------------------------------- /docs/_build/_static/fonts/RobotoSlab-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/fonts/RobotoSlab-Bold.ttf -------------------------------------------------------------------------------- /docs/_build/_static/fonts/RobotoSlab-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/fonts/RobotoSlab-Regular.ttf -------------------------------------------------------------------------------- /docs/_build/_static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /docs/_build/_static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /docs/_build/_static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /docs/_build/_static/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/_static/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /docs/_build/_static/js/theme.js: -------------------------------------------------------------------------------- 1 | require=function r(s,a,l){function c(i,n){if(!a[i]){if(!s[i]){var e="function"==typeof require&&require;if(!n&&e)return e(i,!0);if(u)return u(i,!0);var t=new Error("Cannot find module '"+i+"'");throw t.code="MODULE_NOT_FOUND",t}var o=a[i]={exports:{}};s[i][0].call(o.exports,function(n){var e=s[i][1][n];return c(e||n)},o,o.exports,r,s,a,l)}return a[i].exports}for(var u="function"==typeof require&&require,n=0;n"),i("table.docutils.footnote").wrap("
"),i("table.docutils.citation").wrap("
"),i(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var e=i(this);expand=i(''),expand.on("click",function(n){return t.toggleCurrent(e),n.stopPropagation(),!1}),e.prepend(expand)})},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),i=e.find('[href="'+n+'"]');if(0===i.length){var t=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(i=e.find('[href="#'+t.attr("id")+'"]')).length&&(i=e.find('[href="#"]'))}0this.docHeight||(this.navBar.scrollTop(i),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current"),e.siblings().find("li.current").removeClass("current"),e.find("> ul li.current").removeClass("current"),e.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:e.exports.ThemeNav,StickyNav:e.exports.ThemeNav}),function(){for(var r=0,n=["ms","moz","webkit","o"],e=0;e 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Classes — PlugSy documentation 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 | 44 | 90 | 91 |
92 | 93 | 94 | 100 | 101 | 102 |
103 | 104 |
105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 |
123 | 124 |
    125 | 126 |
  • Docs »
  • 127 | 128 |
  • Classes
  • 129 | 130 | 131 |
  • 132 | 133 | 134 | View page source 135 | 136 | 137 |
  • 138 | 139 |
140 | 141 | 142 |
143 |
144 |
145 |
146 | 147 |
148 |

Classes

149 |

Plugsy - Plugin System

150 |
151 | 152 | 153 |
154 | 155 |
156 |
157 | 158 | 159 |
160 | 161 |
162 |

163 | © Copyright 2018, Sithis. 164 | 165 |

166 |
167 | Built with Sphinx using a theme provided by Read the Docs. 168 | 169 |
170 | 171 |
172 |
173 | 174 |
175 | 176 |
177 | 178 | 179 | 180 | 181 | 182 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 209 | 210 | 211 | -------------------------------------------------------------------------------- /docs/_build/html/_modules/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Overview: module code — PlugSy documentation 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 | 44 | 87 | 88 |
89 | 90 | 91 | 97 | 98 | 99 |
100 | 101 |
102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 |
120 | 121 |
    122 | 123 |
  • Docs »
  • 124 | 125 |
  • Overview: module code
  • 126 | 127 | 128 |
  • 129 | 130 |
  • 131 | 132 |
133 | 134 | 135 |
136 |
137 | 161 |
162 | 163 | 164 |
165 | 166 |
167 |

168 | © Copyright 2018, Sithis. 169 | 170 |

171 |
172 | Built with Sphinx using a theme provided by Read the Docs. 173 | 174 |
175 | 176 |
177 |
178 | 179 |
180 | 181 |
182 | 183 | 184 | 185 | 186 | 187 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 214 | 215 | 216 | -------------------------------------------------------------------------------- /docs/_build/html/_modules/plugsy/LaunchPlugsyGui.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | plugsy.LaunchPlugsyGui — PlugSy documentation 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 | 44 | 87 | 88 |
89 | 90 | 91 | 97 | 98 | 99 |
100 | 101 |
102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 |
120 | 121 |
    122 | 123 |
  • Docs »
  • 124 | 125 |
  • Module code »
  • 126 | 127 |
  • plugsy.LaunchPlugsyGui
  • 128 | 129 | 130 |
  • 131 | 132 |
  • 133 | 134 |
135 | 136 | 137 |
138 |
139 |
140 |
141 | 142 |

Source code for plugsy.LaunchPlugsyGui

143 | '''
144 | SDK GUI Launcher
145 | '''
146 | 
147 | # Check os is Windows
148 | import sys
149 | 
150 | try:
151 |     import wx
152 | except ImportError as ix:
153 |     if not sys.platform.lower().startswith("win"):
154 |         raise OSError("The PlugSy SDK GUI is currently only supported on Windows-based platforms.")
155 |     else:
156 |         raise ix
157 | 
158 | from plugsy.sdk.gui import SdkGui
159 | 
160 | 
[docs]def Go(): 161 | ''' 162 | Initiates and launches the PlugSy GUI 163 | ''' 164 | app = wx.App() 165 | gui = SdkGui() 166 | gui.Show() 167 | app.MainLoop()
168 | 169 | if __name__ == "__main__": 170 | Go() 171 | 172 |
173 | 174 |
175 | 176 |
177 |
178 | 179 | 180 |
181 | 182 |
183 |

184 | © Copyright 2018, Sithis. 185 | 186 |

187 |
188 | Built with Sphinx using a theme provided by Read the Docs. 189 | 190 |
191 | 192 |
193 |
194 | 195 |
196 | 197 |
198 | 199 | 200 | 201 | 202 | 203 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 230 | 231 | 232 | -------------------------------------------------------------------------------- /docs/_build/html/_modules/plugsy/sdk/PluginTemplate/PluginTemplate.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | plugsy.sdk.PluginTemplate.PluginTemplate — PlugSy documentation 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 | 44 | 87 | 88 |
89 | 90 | 91 | 97 | 98 | 99 |
100 | 101 |
102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 |
120 | 121 |
    122 | 123 |
  • Docs »
  • 124 | 125 |
  • Module code »
  • 126 | 127 |
  • plugsy.sdk.PluginTemplate.PluginTemplate
  • 128 | 129 | 130 |
  • 131 | 132 |
  • 133 | 134 |
135 | 136 | 137 |
138 |
139 |
140 |
141 | 142 |

Source code for plugsy.sdk.PluginTemplate.PluginTemplate

143 | '''
144 | Plugsy - PluginTemplate
145 | Generated by PlugSy SDK
146 | '''
147 | 
148 | #Import libs
149 | import time
150 | 
151 | # Import Package and PlugSy Modules
152 | from plugsy.AbstractPlugin import AbstractPlugin
153 | 
154 | 
[docs]class PluginTemplate(AbstractPlugin): 155 | ''' 156 | PluginTemplate class 157 | ''' 158 | 159 | def __init__(self, plugsy): 160 | ''' 161 | Constructor. Call parent init fam 162 | 163 | :param plugsy: Parent plugsy object 164 | ''' 165 | AbstractPlugin.__init__(self, plugsy) 166 | 167 | 168 |
[docs] def run(self): 169 | ''' 170 | Main run method. 171 | ''' 172 | self.logger.debug("ENTRY!") 173 | self.logger.info("PluginTemplate running!") 174 | 175 | while not self.stop_event.is_set(): 176 | pass 177 | 178 | self.logger.info("PluginTemplate stopping!") 179 | self.logger.debug("EXIT!")
180 |
181 | 182 |
183 | 184 |
185 |
186 | 187 | 188 |
189 | 190 |
191 |

192 | © Copyright 2018, Sithis. 193 | 194 |

195 |
196 | Built with Sphinx using a theme provided by Read the Docs. 197 | 198 |
199 | 200 |
201 |
202 | 203 |
204 | 205 |
206 | 207 | 208 | 209 | 210 | 211 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 238 | 239 | 240 | -------------------------------------------------------------------------------- /docs/_build/html/_modules/plugsy/utils/LaunchPlugsyGui.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | plugsy.utils.LaunchPlugsyGui — PlugSy documentation 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 | 44 | 87 | 88 |
89 | 90 | 91 | 97 | 98 | 99 |
100 | 101 |
102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 |
120 | 121 |
    122 | 123 |
  • Docs »
  • 124 | 125 |
  • Module code »
  • 126 | 127 |
  • plugsy.utils.LaunchPlugsyGui
  • 128 | 129 | 130 |
  • 131 | 132 |
  • 133 | 134 |
135 | 136 | 137 |
138 |
139 |
140 |
141 | 142 |

Source code for plugsy.utils.LaunchPlugsyGui

143 | '''
144 | SDK GUI Launcher
145 | '''
146 | 
147 | # Check os is Windows
148 | import sys
149 | 
150 | try:
151 |     import wx
152 | except ImportError as ix:
153 |     if not sys.platform.lower().startswith("win"):
154 |         raise OSError("The PlugSy SDK GUI is currently only supported on Windows-based platforms.")
155 |     else:
156 |         raise ix
157 | 
158 | from plugsy.sdk.gui import SdkGui
159 | 
160 | 
[docs]def Go(): 161 | ''' 162 | Initiates and launches the PlugSy GUI 163 | ''' 164 | app = wx.App() 165 | gui = SdkGui() 166 | gui.Show() 167 | app.MainLoop()
168 | 169 | if __name__ == "__main__": 170 | Go() 171 | 172 |
173 | 174 |
175 | 176 |
177 |
178 | 179 | 180 |
181 | 182 |
183 |

184 | © Copyright 2018, Sithis. 185 | 186 |

187 |
188 | Built with Sphinx using a theme provided by Read the Docs. 189 | 190 |
191 | 192 |
193 |
194 | 195 |
196 | 197 |
198 | 199 | 200 | 201 | 202 | 203 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 230 | 231 | 232 | -------------------------------------------------------------------------------- /docs/_build/html/_sources/Classes.rst.txt: -------------------------------------------------------------------------------- 1 | Classes 2 | ================ 3 | 4 | .. automodule:: plugsy.Plugsy -------------------------------------------------------------------------------- /docs/_build/html/_sources/index.rst.txt: -------------------------------------------------------------------------------- 1 | .. PlugSy documentation master file, created by 2 | sphinx-quickstart on Thu May 17 13:10:00 2018. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | ================================== 7 | PlugSy 8 | ================================== 9 | 10 | About 11 | ========= 12 | 13 | .. include:: ../README.rst 14 | 15 | .. toctree:: 16 | :maxdepth: 2 17 | :caption: Contents: 18 | 19 | Indices and tables 20 | ================== 21 | 22 | * :ref:`genindex` 23 | * :ref:`modindex` 24 | * :ref:`search` 25 | -------------------------------------------------------------------------------- /docs/_build/html/_sources/install.rst.txt: -------------------------------------------------------------------------------- 1 | Installing PlugSy 2 | ==================== -------------------------------------------------------------------------------- /docs/_build/html/_sources/modules.rst.txt: -------------------------------------------------------------------------------- 1 | plugsy 2 | ====== 3 | 4 | .. toctree:: 5 | :maxdepth: 4 6 | 7 | plugsy 8 | -------------------------------------------------------------------------------- /docs/_build/html/_sources/plugsy.rst.txt: -------------------------------------------------------------------------------- 1 | plugsy package 2 | ============== 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | 9 | plugsy.sdk 10 | plugsy.utils 11 | 12 | Submodules 13 | ---------- 14 | 15 | plugsy.AbstractPlugin module 16 | ---------------------------- 17 | 18 | .. automodule:: plugsy.AbstractPlugin 19 | :members: 20 | :undoc-members: 21 | :show-inheritance: 22 | 23 | plugsy.Config module 24 | -------------------- 25 | 26 | .. automodule:: plugsy.Config 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | plugsy.Exceptions module 32 | ------------------------ 33 | 34 | .. automodule:: plugsy.Exceptions 35 | :members: 36 | :undoc-members: 37 | :show-inheritance: 38 | 39 | plugsy.Plugsy module 40 | -------------------- 41 | 42 | .. automodule:: plugsy.Plugsy 43 | :members: 44 | :undoc-members: 45 | :show-inheritance: 46 | 47 | 48 | Module contents 49 | --------------- 50 | 51 | .. automodule:: plugsy 52 | :members: 53 | :undoc-members: 54 | :show-inheritance: 55 | -------------------------------------------------------------------------------- /docs/_build/html/_sources/plugsy.sdk.PluginTemplate.rst.txt: -------------------------------------------------------------------------------- 1 | plugsy.sdk.PluginTemplate package 2 | ================================= 3 | 4 | Submodules 5 | ---------- 6 | 7 | plugsy.sdk.PluginTemplate.Config module 8 | --------------------------------------- 9 | 10 | .. automodule:: plugsy.sdk.PluginTemplate.Config 11 | :members: 12 | :undoc-members: 13 | :show-inheritance: 14 | 15 | plugsy.sdk.PluginTemplate.PluginTemplate module 16 | ----------------------------------------------- 17 | 18 | .. automodule:: plugsy.sdk.PluginTemplate.PluginTemplate 19 | :members: 20 | :undoc-members: 21 | :show-inheritance: 22 | 23 | 24 | Module contents 25 | --------------- 26 | 27 | .. automodule:: plugsy.sdk.PluginTemplate 28 | :members: 29 | :undoc-members: 30 | :show-inheritance: 31 | -------------------------------------------------------------------------------- /docs/_build/html/_sources/plugsy.sdk.gui.rst.txt: -------------------------------------------------------------------------------- 1 | plugsy.sdk.gui package 2 | ====================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | plugsy.sdk.gui.ConfirmationDialogs module 8 | ----------------------------------------- 9 | 10 | .. automodule:: plugsy.sdk.gui.ConfirmationDialogs 11 | :members: 12 | :undoc-members: 13 | :show-inheritance: 14 | 15 | plugsy.sdk.gui.SdkGui module 16 | ---------------------------- 17 | 18 | .. automodule:: plugsy.sdk.gui.SdkGui 19 | :members: 20 | :undoc-members: 21 | :show-inheritance: 22 | 23 | plugsy.sdk.gui.SdkGuiAbs module 24 | ------------------------------- 25 | 26 | .. automodule:: plugsy.sdk.gui.SdkGuiAbs 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | 32 | Module contents 33 | --------------- 34 | 35 | .. automodule:: plugsy.sdk.gui 36 | :members: 37 | :undoc-members: 38 | :show-inheritance: 39 | -------------------------------------------------------------------------------- /docs/_build/html/_sources/plugsy.sdk.rst.txt: -------------------------------------------------------------------------------- 1 | plugsy.sdk package 2 | ================== 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | 9 | plugsy.sdk.PluginTemplate 10 | plugsy.sdk.gui 11 | 12 | Submodules 13 | ---------- 14 | 15 | plugsy.sdk.Exceptions module 16 | ---------------------------- 17 | 18 | .. automodule:: plugsy.sdk.Exceptions 19 | :members: 20 | :undoc-members: 21 | :show-inheritance: 22 | 23 | plugsy.sdk.Plugin module 24 | ------------------------ 25 | 26 | .. automodule:: plugsy.sdk.Plugin 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | plugsy.sdk.Sdk module 32 | --------------------- 33 | 34 | .. automodule:: plugsy.sdk.Sdk 35 | :members: 36 | :undoc-members: 37 | :show-inheritance: 38 | 39 | 40 | Module contents 41 | --------------- 42 | 43 | .. automodule:: plugsy.sdk 44 | :members: 45 | :undoc-members: 46 | :show-inheritance: 47 | -------------------------------------------------------------------------------- /docs/_build/html/_sources/plugsy.utils.rst.txt: -------------------------------------------------------------------------------- 1 | plugsy.utils package 2 | ==================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | plugsy.utils.LaunchPlugsyGui module 8 | ----------------------------------- 9 | 10 | .. automodule:: plugsy.utils.LaunchPlugsyGui 11 | :members: 12 | :undoc-members: 13 | :show-inheritance: 14 | 15 | plugsy.utils.Logger module 16 | -------------------------- 17 | 18 | .. automodule:: plugsy.utils.Logger 19 | :members: 20 | :undoc-members: 21 | :show-inheritance: 22 | 23 | plugsy.utils.toposort module 24 | ---------------------------- 25 | 26 | .. automodule:: plugsy.utils.toposort 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | 32 | Module contents 33 | --------------- 34 | 35 | .. automodule:: plugsy.utils 36 | :members: 37 | :undoc-members: 38 | :show-inheritance: 39 | -------------------------------------------------------------------------------- /docs/_build/html/_static/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/ajax-loader.gif -------------------------------------------------------------------------------- /docs/_build/html/_static/comment-bright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/comment-bright.png -------------------------------------------------------------------------------- /docs/_build/html/_static/comment-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/comment-close.png -------------------------------------------------------------------------------- /docs/_build/html/_static/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/comment.png -------------------------------------------------------------------------------- /docs/_build/html/_static/css/badge_only.css: -------------------------------------------------------------------------------- 1 | .fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../fonts/fontawesome-webfont.eot");src:url("../fonts/fontawesome-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff") format("woff"),url("../fonts/fontawesome-webfont.ttf") format("truetype"),url("../fonts/fontawesome-webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:""}.icon-book:before{content:""}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{height:auto;max-height:100%}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} 2 | -------------------------------------------------------------------------------- /docs/_build/html/_static/custom.css: -------------------------------------------------------------------------------- 1 | /* This file intentionally left blank. */ 2 | -------------------------------------------------------------------------------- /docs/_build/html/_static/documentation_options.js: -------------------------------------------------------------------------------- 1 | var DOCUMENTATION_OPTIONS = { 2 | URL_ROOT: '', 3 | VERSION: '', 4 | LANGUAGE: 'None', 5 | COLLAPSE_INDEX: false, 6 | FILE_SUFFIX: '.html', 7 | HAS_SOURCE: true, 8 | SOURCELINK_SUFFIX: '.txt' 9 | }; -------------------------------------------------------------------------------- /docs/_build/html/_static/down-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/down-pressed.png -------------------------------------------------------------------------------- /docs/_build/html/_static/down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/down.png -------------------------------------------------------------------------------- /docs/_build/html/_static/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/file.png -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/Inconsolata-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/fonts/Inconsolata-Bold.ttf -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/Inconsolata-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/fonts/Inconsolata-Regular.ttf -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/Lato-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/fonts/Lato-Bold.ttf -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/Lato-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/fonts/Lato-BoldItalic.ttf -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/Lato-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/fonts/Lato-Italic.ttf -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/Lato-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/fonts/Lato-Regular.ttf -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/RobotoSlab-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/fonts/RobotoSlab-Bold.ttf -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/RobotoSlab-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/fonts/RobotoSlab-Regular.ttf -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/_static/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /docs/_build/html/_static/js/theme.js: -------------------------------------------------------------------------------- 1 | require=function r(s,a,l){function c(i,n){if(!a[i]){if(!s[i]){var e="function"==typeof require&&require;if(!n&&e)return e(i,!0);if(u)return u(i,!0);var t=new Error("Cannot find module '"+i+"'");throw t.code="MODULE_NOT_FOUND",t}var o=a[i]={exports:{}};s[i][0].call(o.exports,function(n){var e=s[i][1][n];return c(e||n)},o,o.exports,r,s,a,l)}return a[i].exports}for(var u="function"==typeof require&&require,n=0;n"),i("table.docutils.footnote").wrap("
"),i("table.docutils.citation").wrap("
"),i(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var e=i(this);expand=i(''),expand.on("click",function(n){return t.toggleCurrent(e),n.stopPropagation(),!1}),e.prepend(expand)})},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),i=e.find('[href="'+n+'"]');if(0===i.length){var t=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(i=e.find('[href="#'+t.attr("id")+'"]')).length&&(i=e.find('[href="#"]'))}0this.docHeight||(this.navBar.scrollTop(i),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current"),e.siblings().find("li.current").removeClass("current"),e.find("> ul li.current").removeClass("current"),e.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:e.exports.ThemeNav,StickyNav:e.exports.ThemeNav}),function(){for(var r=0,n=["ms","moz","webkit","o"],e=0;e 4 | 5 | 6 | 7 | 8 | 9 | Installing PlugSy — PlugSy documentation 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |
29 |
30 |
31 | 32 |
33 |

Installing PlugSy

34 |
35 | 36 | 37 |
38 |
39 |
40 | 69 |
70 |
71 | 82 | 83 | 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /docs/_build/html/modules.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | plugsy — PlugSy documentation 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 | 44 | 90 | 91 |
92 | 93 | 94 | 100 | 101 | 102 |
103 | 104 |
105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 |
123 | 124 |
    125 | 126 |
  • Docs »
  • 127 | 128 |
  • plugsy
  • 129 | 130 | 131 |
  • 132 | 133 | 134 | View page source 135 | 136 | 137 |
  • 138 | 139 |
140 | 141 | 142 |
143 |
144 |
145 | 186 | 187 |
188 |
189 | 190 | 191 |
192 | 193 |
194 |

195 | © Copyright 2018, Sithis. 196 | 197 |

198 |
199 | Built with Sphinx using a theme provided by Read the Docs. 200 | 201 |
202 | 203 |
204 |
205 | 206 |
207 | 208 |
209 | 210 | 211 | 212 | 213 | 214 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 241 | 242 | 243 | -------------------------------------------------------------------------------- /docs/_build/html/objects.inv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/html/objects.inv -------------------------------------------------------------------------------- /docs/_build/html/plugsy.sdk.PluginTemplate.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | plugsy.sdk.PluginTemplate package — PlugSy documentation 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 | 44 | 96 | 97 |
98 | 99 | 100 | 106 | 107 | 108 |
109 | 110 |
111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 |
129 | 130 |
    131 | 132 |
  • Docs »
  • 133 | 134 |
  • plugsy.sdk.PluginTemplate package
  • 135 | 136 | 137 |
  • 138 | 139 | 140 | View page source 141 | 142 | 143 |
  • 144 | 145 |
146 | 147 | 148 |
149 |
150 |
151 |
152 | 153 |
154 |

plugsy.sdk.PluginTemplate package

155 |
156 |

Submodules

157 |
158 |
159 |

plugsy.sdk.PluginTemplate.Config module

160 |

PlugSy - PluginTemplate Config

161 |
162 |
163 |

plugsy.sdk.PluginTemplate.PluginTemplate module

164 |

Plugsy - PluginTemplate 165 | Generated by PlugSy SDK

166 |
167 |
168 | class plugsy.sdk.PluginTemplate.PluginTemplate.PluginTemplate(plugsy)[source]
169 |

Bases: plugsy.AbstractPlugin.AbstractPlugin

170 |

PluginTemplate class

171 |

Constructor. Call parent init fam

172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 |
Parameters:plugsy – Parent plugsy object
180 |
181 |
182 | run()[source]
183 |

Main run method.

184 |
185 | 186 |
187 | 188 |
189 |
190 |

Module contents

191 |

Generated by PlugSy SDK

192 |
193 |
194 | 195 | 196 |
197 | 198 |
199 |
200 | 201 | 202 |
203 | 204 |
205 |

206 | © Copyright 2018, Sithis. 207 | 208 |

209 |
210 | Built with Sphinx using a theme provided by Read the Docs. 211 | 212 |
213 | 214 |
215 |
216 | 217 |
218 | 219 |
220 | 221 | 222 | 223 | 224 | 225 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 252 | 253 | 254 | -------------------------------------------------------------------------------- /docs/_build/html/plugsy.sdk.gui.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | plugsy.sdk.gui package — PlugSy documentation 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 | 44 | 97 | 98 |
99 | 100 | 101 | 107 | 108 | 109 |
110 | 111 |
112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 |
130 | 131 |
    132 | 133 |
  • Docs »
  • 134 | 135 |
  • plugsy.sdk.gui package
  • 136 | 137 | 138 |
  • 139 | 140 | 141 | View page source 142 | 143 | 144 |
  • 145 | 146 |
147 | 148 | 149 |
150 |
151 |
152 |
153 | 154 |
155 |

plugsy.sdk.gui package

156 |
157 |

Submodules

158 |
159 |
160 |

plugsy.sdk.gui.ConfirmationDialogs module

161 |
162 |
163 |

plugsy.sdk.gui.SdkGui module

164 |
165 |
166 |

plugsy.sdk.gui.SdkGuiAbs module

167 |
168 |
169 |

Module contents

170 |
171 |
172 | 173 | 174 |
175 | 176 |
177 |
178 | 179 | 180 |
181 | 182 |
183 |

184 | © Copyright 2018, Sithis. 185 | 186 |

187 |
188 | Built with Sphinx using a theme provided by Read the Docs. 189 | 190 |
191 | 192 |
193 |
194 | 195 |
196 | 197 |
198 | 199 | 200 | 201 | 202 | 203 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 230 | 231 | 232 | -------------------------------------------------------------------------------- /docs/_build/html/search.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Search — PlugSy documentation 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 | 44 | 87 | 88 |
89 | 90 | 91 | 97 | 98 | 99 |
100 | 101 |
102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 |
120 | 121 |
    122 | 123 |
  • Docs »
  • 124 | 125 |
  • Search
  • 126 | 127 | 128 |
  • 129 | 130 | 131 | 132 |
  • 133 | 134 |
135 | 136 | 137 |
138 |
139 |
140 |
141 | 142 | 150 | 151 | 152 |
153 | 154 |
155 | 156 |
157 | 158 |
159 |
160 | 161 | 162 |
163 | 164 |
165 |

166 | © Copyright 2018, Sithis. 167 | 168 |

169 |
170 | Built with Sphinx using a theme provided by Read the Docs. 171 | 172 |
173 | 174 |
175 |
176 | 177 |
178 | 179 |
180 | 181 | 182 | 183 | 184 | 185 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 213 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | -------------------------------------------------------------------------------- /docs/_build/modules.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | plugsy — PlugSy documentation 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 | 44 | 90 | 91 |
92 | 93 | 94 | 100 | 101 | 102 |
103 | 104 |
105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 |
123 | 124 |
    125 | 126 |
  • Docs »
  • 127 | 128 |
  • plugsy
  • 129 | 130 | 131 |
  • 132 | 133 | 134 | View page source 135 | 136 | 137 |
  • 138 | 139 |
140 | 141 | 142 |
143 |
144 |
145 | 186 | 187 |
188 |
189 | 190 | 191 |
192 | 193 |
194 |

195 | © Copyright 2018, Sithis. 196 | 197 |

198 |
199 | Built with Sphinx using a theme provided by Read the Docs. 200 | 201 |
202 | 203 |
204 |
205 | 206 |
207 | 208 |
209 | 210 | 211 | 212 | 213 | 214 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 241 | 242 | 243 | -------------------------------------------------------------------------------- /docs/_build/objects.inv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CSec0ps/PlugSy/066a98909ec590a59ee52fe29da9a5deee9b87d7/docs/_build/objects.inv -------------------------------------------------------------------------------- /docs/_build/plugsy.sdk.PluginTemplate.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | plugsy.sdk.PluginTemplate package — PlugSy documentation 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 | 44 | 96 | 97 |
98 | 99 | 100 | 106 | 107 | 108 |
109 | 110 |
111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 |
129 | 130 |
    131 | 132 |
  • Docs »
  • 133 | 134 |
  • plugsy.sdk.PluginTemplate package
  • 135 | 136 | 137 |
  • 138 | 139 | 140 | View page source 141 | 142 | 143 |
  • 144 | 145 |
146 | 147 | 148 |
149 |
150 |
151 |
152 | 153 |
154 |

plugsy.sdk.PluginTemplate package

155 |
156 |

Submodules

157 |
158 |
159 |

plugsy.sdk.PluginTemplate.Config module

160 |

PlugSy - PluginTemplate Config

161 |
162 |
163 |

plugsy.sdk.PluginTemplate.PluginTemplate module

164 |

Plugsy - PluginTemplate 165 | Generated by PlugSy SDK

166 |
167 |
168 | class plugsy.sdk.PluginTemplate.PluginTemplate.PluginTemplate(plugsy)[source]
169 |

Bases: plugsy.AbstractPlugin.AbstractPlugin

170 |

PluginTemplate class

171 |

Constructor. Call parent init fam

172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 |
Parameters:plugsy – Parent plugsy object
180 |
181 |
182 | run()[source]
183 |

Main run method.

184 |
185 | 186 |
187 | 188 |
189 |
190 |

Module contents

191 |

Generated by PlugSy SDK

192 |
193 |
194 | 195 | 196 |
197 | 198 |
199 |
200 | 201 | 202 |
203 | 204 |
205 |

206 | © Copyright 2018, Sithis. 207 | 208 |

209 |
210 | Built with Sphinx using a theme provided by Read the Docs. 211 | 212 |
213 | 214 |
215 |
216 | 217 |
218 | 219 |
220 | 221 | 222 | 223 | 224 | 225 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 252 | 253 | 254 | -------------------------------------------------------------------------------- /docs/_build/search.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Search — PlugSy documentation 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 | 44 | 87 | 88 |
89 | 90 | 91 | 97 | 98 | 99 |
100 | 101 |
102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 |
120 | 121 |
    122 | 123 |
  • Docs »
  • 124 | 125 |
  • Search
  • 126 | 127 | 128 |
  • 129 | 130 | 131 | 132 |
  • 133 | 134 |
135 | 136 | 137 |
138 |
139 |
140 |
141 | 142 | 150 | 151 | 152 |
153 | 154 |
155 | 156 |
157 | 158 |
159 |
160 | 161 | 162 |
163 | 164 |
165 |

166 | © Copyright 2018, Sithis. 167 | 168 |

169 |
170 | Built with Sphinx using a theme provided by Read the Docs. 171 | 172 |
173 | 174 |
175 |
176 | 177 |
178 | 179 |
180 | 181 | 182 | 183 | 184 | 185 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 213 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | -------------------------------------------------------------------------------- /docs/conf.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # Configuration file for the Sphinx documentation builder. 4 | # 5 | # This file does only contain a selection of the most common options. For a 6 | # full list see the documentation: 7 | # http://www.sphinx-doc.org/en/master/config 8 | 9 | # -- Path setup -------------------------------------------------------------- 10 | 11 | # If extensions (or modules to document with autodoc) are in another directory, 12 | # add these directories to sys.path here. If the directory is relative to the 13 | # documentation root, use os.path.abspath to make it absolute, like shown here. 14 | # 15 | import os 16 | import sys 17 | sys.path.insert(0, os.path.abspath('..')) 18 | 19 | 20 | # -- Project information ----------------------------------------------------- 21 | 22 | project = 'PlugSy' 23 | copyright = '2018, Sithis' 24 | author = 'Sithis' 25 | autoclass_content = "both" 26 | 27 | # The short X.Y version 28 | version = '' 29 | # The full version, including alpha/beta/rc tags 30 | release = '' 31 | 32 | 33 | # -- General configuration --------------------------------------------------- 34 | 35 | # If your documentation needs a minimal Sphinx version, state it here. 36 | # 37 | # needs_sphinx = '1.0' 38 | 39 | # Add any Sphinx extension module names here, as strings. They can be 40 | # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom 41 | # ones. 42 | extensions = [ 43 | 'sphinx.ext.autodoc', 44 | 'sphinx.ext.viewcode', 45 | ] 46 | 47 | # Add any paths that contain templates here, relative to this directory. 48 | templates_path = ['_templates'] 49 | 50 | # The suffix(es) of source filenames. 51 | # You can specify multiple suffix as a list of string: 52 | # 53 | # source_suffix = ['.rst', '.md'] 54 | source_suffix = '.rst' 55 | 56 | # The master toctree document. 57 | master_doc = 'index' 58 | 59 | # The language for content autogenerated by Sphinx. Refer to documentation 60 | # for a list of supported languages. 61 | # 62 | # This is also used if you do content translation via gettext catalogs. 63 | # Usually you set "language" from the command line for these cases. 64 | language = None 65 | 66 | # List of patterns, relative to source directory, that match files and 67 | # directories to ignore when looking for source files. 68 | # This pattern also affects html_static_path and html_extra_path . 69 | exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] 70 | 71 | # The name of the Pygments (syntax highlighting) style to use. 72 | pygments_style = 'sphinx' 73 | 74 | 75 | # -- Options for HTML output ------------------------------------------------- 76 | 77 | # The theme to use for HTML and HTML Help pages. See the documentation for 78 | # a list of builtin themes. 79 | # 80 | #html_theme = 'alabaster' Original theme 81 | html_theme = 'sphinx_rtd_theme' 82 | 83 | # Theme options are theme-specific and customize the look and feel of a theme 84 | # further. For a list of options available for each theme, see the 85 | # documentation. 86 | # 87 | # html_theme_options = {} 88 | 89 | # Add any paths that contain custom static files (such as style sheets) here, 90 | # relative to this directory. They are copied after the builtin static files, 91 | # so a file named "default.css" will overwrite the builtin "default.css". 92 | html_static_path = ['_static'] 93 | 94 | # Custom sidebar templates, must be a dictionary that maps document names 95 | # to template names. 96 | # 97 | # The default sidebars (for documents that don't match any pattern) are 98 | # defined by theme itself. Builtin themes are using these templates by 99 | # default: ``['localtoc.html', 'relations.html', 'sourcelink.html', 100 | # 'searchbox.html']``. 101 | # 102 | # html_sidebars = {} 103 | 104 | 105 | # -- Options for HTMLHelp output --------------------------------------------- 106 | 107 | # Output file base name for HTML help builder. 108 | htmlhelp_basename = 'PlugSydoc' 109 | 110 | 111 | # -- Options for LaTeX output ------------------------------------------------ 112 | 113 | latex_elements = { 114 | # The paper size ('letterpaper' or 'a4paper'). 115 | # 116 | # 'papersize': 'letterpaper', 117 | 118 | # The font size ('10pt', '11pt' or '12pt'). 119 | # 120 | # 'pointsize': '10pt', 121 | 122 | # Additional stuff for the LaTeX preamble. 123 | # 124 | # 'preamble': '', 125 | 126 | # Latex figure (float) alignment 127 | # 128 | # 'figure_align': 'htbp', 129 | } 130 | 131 | # Grouping the document tree into LaTeX files. List of tuples 132 | # (source start file, target name, title, 133 | # author, documentclass [howto, manual, or own class]). 134 | latex_documents = [ 135 | (master_doc, 'PlugSy.tex', 'PlugSy Documentation', 136 | 'Sithis', 'manual'), 137 | ] 138 | 139 | 140 | # -- Options for manual page output ------------------------------------------ 141 | 142 | # One entry per manual page. List of tuples 143 | # (source start file, name, description, authors, manual section). 144 | man_pages = [ 145 | (master_doc, 'plugsy', 'PlugSy Documentation', 146 | [author], 1) 147 | ] 148 | 149 | 150 | # -- Options for Texinfo output ---------------------------------------------- 151 | 152 | # Grouping the document tree into Texinfo files. List of tuples 153 | # (source start file, target name, title, author, 154 | # dir menu entry, description, category) 155 | texinfo_documents = [ 156 | (master_doc, 'PlugSy', 'PlugSy Documentation', 157 | author, 'PlugSy', 'One line description of project.', 158 | 'Miscellaneous'), 159 | ] 160 | 161 | 162 | # -- Extension configuration ------------------------------------------------- 163 | -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | .. PlugSy documentation master file, created by 2 | sphinx-quickstart on Thu May 17 13:10:00 2018. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | ================================== 7 | PlugSy 8 | ================================== 9 | 10 | About 11 | ========= 12 | 13 | .. include:: ../README.rst 14 | 15 | .. toctree:: 16 | :maxdepth: 2 17 | :caption: Contents: 18 | 19 | Indices and tables 20 | ================== 21 | 22 | * :ref:`genindex` 23 | * :ref:`modindex` 24 | * :ref:`search` 25 | -------------------------------------------------------------------------------- /docs/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | pushd %~dp0 4 | 5 | REM Command file for Sphinx documentation 6 | 7 | if "%SPHINXBUILD%" == "" ( 8 | set SPHINXBUILD=sphinx-build 9 | ) 10 | set SOURCEDIR=. 11 | set BUILDDIR=_build 12 | set SPHINXPROJ=PlugSy 13 | 14 | if "%1" == "" goto help 15 | 16 | %SPHINXBUILD% >NUL 2>NUL 17 | if errorlevel 9009 ( 18 | echo. 19 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx 20 | echo.installed, then set the SPHINXBUILD environment variable to point 21 | echo.to the full path of the 'sphinx-build' executable. Alternatively you 22 | echo.may add the Sphinx directory to PATH. 23 | echo. 24 | echo.If you don't have Sphinx installed, grab it from 25 | echo.http://sphinx-doc.org/ 26 | exit /b 1 27 | ) 28 | 29 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 30 | goto end 31 | 32 | :help 33 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 34 | 35 | :end 36 | popd 37 | -------------------------------------------------------------------------------- /docs/modules.rst: -------------------------------------------------------------------------------- 1 | plugsy 2 | ====== 3 | 4 | .. toctree:: 5 | :maxdepth: 4 6 | 7 | plugsy 8 | -------------------------------------------------------------------------------- /docs/plugsy.rst: -------------------------------------------------------------------------------- 1 | plugsy package 2 | ============== 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | 9 | plugsy.sdk 10 | plugsy.utils 11 | 12 | Submodules 13 | ---------- 14 | 15 | plugsy.AbstractPlugin module 16 | ---------------------------- 17 | 18 | .. automodule:: plugsy.AbstractPlugin 19 | :members: 20 | :undoc-members: 21 | :show-inheritance: 22 | 23 | plugsy.Config module 24 | -------------------- 25 | 26 | .. automodule:: plugsy.Config 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | plugsy.Exceptions module 32 | ------------------------ 33 | 34 | .. automodule:: plugsy.Exceptions 35 | :members: 36 | :undoc-members: 37 | :show-inheritance: 38 | 39 | plugsy.Plugsy module 40 | -------------------- 41 | 42 | .. automodule:: plugsy.Plugsy 43 | :members: 44 | :undoc-members: 45 | :show-inheritance: 46 | 47 | 48 | Module contents 49 | --------------- 50 | 51 | .. automodule:: plugsy 52 | :members: 53 | :undoc-members: 54 | :show-inheritance: 55 | -------------------------------------------------------------------------------- /docs/plugsy.sdk.PluginTemplate.rst: -------------------------------------------------------------------------------- 1 | plugsy.sdk.PluginTemplate package 2 | ================================= 3 | 4 | Submodules 5 | ---------- 6 | 7 | plugsy.sdk.PluginTemplate.Config module 8 | --------------------------------------- 9 | 10 | .. automodule:: plugsy.sdk.PluginTemplate.Config 11 | :members: 12 | :undoc-members: 13 | :show-inheritance: 14 | 15 | plugsy.sdk.PluginTemplate.PluginTemplate module 16 | ----------------------------------------------- 17 | 18 | .. automodule:: plugsy.sdk.PluginTemplate.PluginTemplate 19 | :members: 20 | :undoc-members: 21 | :show-inheritance: 22 | 23 | 24 | Module contents 25 | --------------- 26 | 27 | .. automodule:: plugsy.sdk.PluginTemplate 28 | :members: 29 | :undoc-members: 30 | :show-inheritance: 31 | -------------------------------------------------------------------------------- /docs/plugsy.sdk.rst: -------------------------------------------------------------------------------- 1 | plugsy.sdk package 2 | ================== 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | 9 | plugsy.sdk.PluginTemplate 10 | plugsy.sdk.gui 11 | 12 | Submodules 13 | ---------- 14 | 15 | plugsy.sdk.Exceptions module 16 | ---------------------------- 17 | 18 | .. automodule:: plugsy.sdk.Exceptions 19 | :members: 20 | :undoc-members: 21 | :show-inheritance: 22 | 23 | plugsy.sdk.Plugin module 24 | ------------------------ 25 | 26 | .. automodule:: plugsy.sdk.Plugin 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | plugsy.sdk.Sdk module 32 | --------------------- 33 | 34 | .. automodule:: plugsy.sdk.Sdk 35 | :members: 36 | :undoc-members: 37 | :show-inheritance: 38 | 39 | 40 | Module contents 41 | --------------- 42 | 43 | .. automodule:: plugsy.sdk 44 | :members: 45 | :undoc-members: 46 | :show-inheritance: 47 | -------------------------------------------------------------------------------- /docs/plugsy.utils.rst: -------------------------------------------------------------------------------- 1 | plugsy.utils package 2 | ==================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | plugsy.utils.LaunchPlugsyGui module 8 | ----------------------------------- 9 | 10 | .. automodule:: plugsy.utils.LaunchPlugsyGui 11 | :members: 12 | :undoc-members: 13 | :show-inheritance: 14 | 15 | plugsy.utils.Logger module 16 | -------------------------- 17 | 18 | .. automodule:: plugsy.utils.Logger 19 | :members: 20 | :undoc-members: 21 | :show-inheritance: 22 | 23 | plugsy.utils.toposort module 24 | ---------------------------- 25 | 26 | .. automodule:: plugsy.utils.toposort 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | 32 | Module contents 33 | --------------- 34 | 35 | .. automodule:: plugsy.utils 36 | :members: 37 | :undoc-members: 38 | :show-inheritance: 39 | -------------------------------------------------------------------------------- /plugsy/AbstractPlugin.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Defines Abstract Plugin and Interface that all plugins must derive from 3 | ''' 4 | 5 | # Import libs 6 | from threading import Thread 7 | from threading import Event 8 | 9 | # Import package modules 10 | from . import Config 11 | from .utils import Logger 12 | 13 | class AbstractPlugin(Thread, Logger): 14 | 15 | def __init__(self, plugsy, name=None): 16 | ''' 17 | Constructor 18 | 19 | :param plugsy: Parent PlugSy object 20 | :param name: The name of the plugin. Optional, overrides package name 21 | ''' 22 | self.__activated = False 23 | self.__loaded = False 24 | self.__is_core_plugin = False 25 | self.__is_initialised = True 26 | self.plugsy = plugsy 27 | self.stop_event = Event() 28 | 29 | # Set name 30 | if not name: 31 | self.__set_name(self.__class__.__name__) 32 | else: 33 | self.__set_name(name) 34 | 35 | # Super 36 | Thread.__init__(self) 37 | 38 | 39 | def run(self): 40 | ''' 41 | Plugin Main run method holding the main plugin code. Called upon plugin activation 42 | Must be overriden by derived classes (plugins) 43 | 44 | :raises: NotImplementedError If plugin hasn't overridden method 45 | ''' 46 | 47 | self.logger.error("Plugin does not have a run() method") 48 | raise NotImplementedError( 49 | "Abstract run() method must be implemented by '%s'" % 50 | self.__class__.__name__ 51 | ) 52 | 53 | 54 | def stop(self): 55 | ''' 56 | Plugin stop method. Stops plugin execution by setting stop event to iterrupt actions 57 | ''' 58 | self.logger.debug("ENTRY") 59 | 60 | self.stop_event.set() 61 | self.logger.debug("EXIT") 62 | 63 | 64 | def load_configuration(self, configuration): 65 | ''' 66 | Loads the plugin configuration into the plugin object 67 | 68 | :param configuration: Plugin configuration module 69 | ''' 70 | self.logger.debug("ENTRY") 71 | 72 | # Load plugin dependencies 73 | self.set_dependencies(configuration.DEPENDENCIES) 74 | self.logger.debug("EXIT") 75 | 76 | 77 | def activate(self): 78 | ''' 79 | Activates the plugin and starts the thread 80 | ''' 81 | self.logger.debug("ENTRY") 82 | self.__activated = True 83 | 84 | # Start main thread 85 | self.start() 86 | 87 | self.logger.info("Plugin activated!") 88 | self.logger.debug("EXIT") 89 | 90 | 91 | def deactivate(self): 92 | ''' 93 | Deactivates the plugin and calls the plugin stop method 94 | ''' 95 | self.logger.debug("ENTRY") 96 | 97 | self.stop() 98 | 99 | # TODO Wait until we're no longer running before setting this and returning. Might need to close handles etc. 100 | self.__activated = True 101 | self.logger.info("Plugin deactivated!") 102 | self.logger.debug("EXIT") 103 | 104 | 105 | def init_logging(self): 106 | ''' 107 | Initialises plugin logging 108 | ''' 109 | plugin_package = "core" if self.__is_core_plugin else "addon" 110 | 111 | # init logging 112 | Logger.__init__( 113 | self, 114 | name="%s.plugins.%s.%s" % (Config.FULL_NAME, plugin_package, self.__name) 115 | ) 116 | 117 | 118 | # ======================= 119 | # = GETTERS 120 | # ======================= 121 | def is_activated(self): 122 | ''' 123 | Checks whether the plugin has been activated 124 | 125 | :return: True if activated, otherwise False 126 | ''' 127 | self.logger.debug("ENTRY") 128 | 129 | self.logger.debug("EXIT") 130 | return self.__activated 131 | 132 | def get_name(self): 133 | ''' 134 | Gets the plugins name 135 | 136 | :return: Plugin name 137 | ''' 138 | 139 | return self.__name 140 | 141 | 142 | def is_core_plugin(self): 143 | ''' 144 | Checks whether the plugin is a core plugin (within the core subpackage) 145 | 146 | :return: True if plugin is a core plugin, otherwise False 147 | ''' 148 | self.logger.debug("ENTRY") 149 | 150 | self.logger.debug("EXIT") 151 | return self.__is_core_plugin 152 | 153 | 154 | def is_initialised(self): 155 | ''' 156 | Checks if the plugin has been initialised 157 | 158 | :return: True if initialised, otherwise False 159 | ''' 160 | 161 | try: 162 | self.__is_initialised 163 | return True 164 | except AttributeError: 165 | return False 166 | 167 | 168 | def get_dependencies(self): 169 | ''' 170 | Fetches the plugin's dependencies 171 | 172 | :return: Plugin dependencies as a list of strings (plugin names) 173 | ''' 174 | self.logger.debug("ENTRY") 175 | 176 | self.logger.debug("EXIT") 177 | return self.__dependencies 178 | 179 | 180 | # ======================= 181 | # = SETTERS 182 | # ======================= 183 | def __set_name(self, name): 184 | ''' 185 | Sets the plugins name 186 | 187 | :param name: The name of the plugin 188 | ''' 189 | 190 | self.__name = name 191 | 192 | 193 | def set_dependencies(self, dependencies): 194 | ''' 195 | Sets the plugin's dependencies 196 | 197 | :param dependencies: A list of plugins that the plugin depends on 198 | ''' 199 | self.logger.debug("ENTRY") 200 | dependency_set = set() 201 | 202 | for dependency in dependencies: 203 | dependency_set.add(dependency.lower()) 204 | 205 | self.__dependencies = dependency_set 206 | self.logger.debug("Plugin dependencies set to '%s'" % dependencies) 207 | self.logger.debug("EXIT") 208 | 209 | 210 | def set_core_plugin(self): 211 | ''' 212 | sets the plugin as a core plugin when called 213 | ''' 214 | 215 | self.__is_core_plugin = True 216 | 217 | 218 | 219 | -------------------------------------------------------------------------------- /plugsy/Config.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Holds global PlugSy config 3 | ''' 4 | 5 | VERSION = "0.2.31" 6 | FULL_NAME = "PlugSy" 7 | DEBUG_FILTERS = [] -------------------------------------------------------------------------------- /plugsy/Exceptions.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Plugsy Package Exceptions 3 | ''' 4 | 5 | 6 | ################################################# 7 | # InvalidPlugin 8 | ################################################# 9 | class InvalidPlugin(Exception): 10 | ''' 11 | To be raised when trying to import a broken/invalid Plugsy plugin 12 | ''' 13 | 14 | def __init__(self, plugin_name, message): 15 | ''' 16 | Constructor 17 | 18 | :param plugin_name: The name of the plugin at fault 19 | :param message: Exception message 20 | ''' 21 | self.message = "Could not load plugin: {}. Check that the plugin is a valid instance of AbstractPlugin"\ 22 | " and that super() is called".format(message) 23 | self.plugin_name = plugin_name 24 | 25 | super(InvalidPlugin, self).__init__(message) 26 | 27 | 28 | def __str__(self): 29 | return self.message 30 | 31 | ################################################# 32 | # InvalidDependency 33 | ################################################# 34 | class InvalidDependency(Exception): 35 | ''' 36 | To be raised in the event of an invalid plugin dependency, such as a core plugin depending on an addon plugin 37 | ''' 38 | 39 | def __init__(self, message): 40 | ''' 41 | Constructor 42 | 43 | :param message: Exception message 44 | ''' 45 | self.message = message 46 | super(InvalidDependency, self).__init__(message) 47 | 48 | 49 | def __str__(self): 50 | return self.message 51 | 52 | 53 | ################################################# 54 | # CorePluginCircularDependency 55 | ################################################# 56 | class CorePluginCircularDependency(Exception): 57 | ''' 58 | To be raised in the event of a Core plugin Circular Dependency 59 | ''' 60 | 61 | def __init__(self, message): 62 | ''' 63 | Constructor 64 | 65 | :param message: Exception message 66 | ''' 67 | self.message = message 68 | super(CorePluginCircularDependency, self).__init__(message) 69 | 70 | 71 | def __str__(self): 72 | return self.message 73 | 74 | ################################################# 75 | # AddonPluginCircularDependency 76 | ################################################# 77 | class AddonPluginCircularDependency(Exception): 78 | ''' 79 | To be raised in the event of an Addon plugin Circular Dependency 80 | ''' 81 | 82 | def __init__(self, message): 83 | ''' 84 | Constructor 85 | 86 | :param message: Exception message 87 | ''' 88 | self.message = message 89 | super(AddonPluginCircularDependency, self).__init__(message) 90 | 91 | 92 | def __str__(self): 93 | return self.message 94 | 95 | 96 | ################################################# 97 | # Plugin Circular Dependency 98 | ################################################# 99 | class PluginCircularDependency(Exception): 100 | ''' 101 | To be raised in the event of plugin Circular Dependency 102 | ''' 103 | 104 | def __init__(self): 105 | ''' 106 | Constructor 107 | 108 | :param message: Exception message 109 | ''' 110 | self.message = "Circular Dependency error encountered whilst loading plugins" 111 | super(PluginCircularDependency, self).__init__(self.message) 112 | 113 | 114 | def __str__(self): 115 | return self.message 116 | 117 | 118 | ################################################# 119 | # MissingDependencyError 120 | ################################################# 121 | class MissingDependencyError(Exception): 122 | ''' 123 | To be raised in the event of a missing plugin dependency 124 | ''' 125 | 126 | def __init__(self, plugin, dependency): 127 | ''' 128 | Constructor 129 | 130 | :param plugin: Plugin object 131 | :param dependency: Plugin object's failed dependency 132 | ''' 133 | if plugin.is_core_plugin(): 134 | message = "Core plugin '%s' has missing or unresolvable dependency '%s'" % ( 135 | plugin.get_name(), 136 | dependency 137 | ) 138 | else: 139 | message = "Addon plugin '%s' has missing or unresolvable dependency '%s'" % ( 140 | plugin.get_name(), 141 | dependency 142 | ) 143 | self.message = message 144 | super(MissingDependencyError, self).__init__(message) 145 | 146 | 147 | def __str__(self): 148 | return self.message 149 | 150 | ################################################# 151 | # DependentRunning 152 | ################################################# 153 | class DependentRunning(Exception): 154 | ''' 155 | To be raised if a plugin is being deactivated, but there are other plugins running 156 | which depend upon this plugin 157 | ''' 158 | 159 | def __init__(self, plugin, dependent): 160 | ''' 161 | Constructor 162 | 163 | :param plugin: The Plugin object being deactivated 164 | :param dependent: The dependent plugin object 165 | ''' 166 | self.message = "plugin '%s' is depended upon by plugin '%s' and could not be deactivated" % ( 167 | plugin.get_name(), 168 | dependent.get_name() 169 | ) 170 | super(DependentRunning, self).__init__(self.message) 171 | 172 | 173 | def __str__(self): 174 | return self.message 175 | 176 | 177 | ################################################# 178 | # AddonPluginsStillRunning 179 | ################################################# 180 | class AddonPluginsStillRunning(Exception): 181 | ''' 182 | To be raised if trying to deactive a core plugin but there are still add on plugins running 183 | ''' 184 | 185 | def __init__(self, plugin): 186 | ''' 187 | Constructor 188 | 189 | :param plugin: The Plugin object being deactivated 190 | ''' 191 | self.message = "Cannot deactivate core plugin '%s' whilst addon plugins are still running" % plugin.get_name() 192 | super(AddonPluginsStillRunning, self).__init__(self.message) 193 | 194 | 195 | def __str__(self): 196 | return self.message 197 | 198 | 199 | ################################################# 200 | # PluginDoesNotExist 201 | ################################################# 202 | class PluginDoesNotExist(Exception): 203 | ''' 204 | To be raised if a plugin does not exist 205 | ''' 206 | 207 | def __init__(self, name): 208 | ''' 209 | Constructor 210 | 211 | :param name: The name of the plugin 212 | ''' 213 | message = "The plugin '%s' does not exist" % name 214 | Exception.__init__(self, message) 215 | 216 | 217 | ################################################# 218 | # SubpackageImportError 219 | ################################################# 220 | class SubpackageImportError(Exception): 221 | ''' 222 | To be raised in the event of a fatal subpackage import (core, addon) 223 | ''' 224 | 225 | def __init__(self, subpackage, import_exception): 226 | ''' 227 | Constructor 228 | 229 | :param subpackage: The name of the failed subpackage 230 | :param import_exception: The actual import exception 231 | ''' 232 | message = "A fatal error occured whilst attempting to import the subpackage '%s': %s" % ( 233 | subpackage, import_exception 234 | ) 235 | Exception.__init__(self, message) 236 | 237 | 238 | -------------------------------------------------------------------------------- /plugsy/__init__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | PlugSy Plugin framework 3 | ''' 4 | 5 | from .Plugsy import Plugsy 6 | -------------------------------------------------------------------------------- /plugsy/sdk/Exceptions.py: -------------------------------------------------------------------------------- 1 | ''' 2 | SDK - Exceptions 3 | ''' 4 | 5 | class PluginsHomeNotFound(Exception): 6 | ''' 7 | To be raised if the specified plugins home directory is not found 8 | ''' 9 | 10 | def __init__(self, plugins_home_path): 11 | ''' 12 | Constructor 13 | 14 | :param plugins_home_path: The path to the plugins home dir 15 | ''' 16 | message = "The plugins home path at '%s' could not be found, or is not a valid directory" % plugins_home_path 17 | Exception.__init__(self, message) 18 | 19 | 20 | class PluginAlreadyExists(Exception): 21 | ''' 22 | To be raised if a user is trying to create a plugin, but the plugin already exists 23 | ''' 24 | 25 | def __init__(self, plugin_name): 26 | ''' 27 | Constructor 28 | 29 | :param plugin_name: The name of the pluign 30 | ''' 31 | message = "The plugin '%s' already exists" % plugin_name 32 | Exception.__init__(self, message) 33 | 34 | 35 | class PluginCreationFailure(Exception): 36 | ''' 37 | Generic exception to be raised when - for whatever reason - the plugin could not 38 | be created 39 | ''' 40 | 41 | def __init__(self, name, message): 42 | ''' 43 | Constructor 44 | 45 | :param name: The name of the pluigin being created 46 | :param message: The causation 47 | ''' 48 | message = "The plugin '%s' could not be created: %s" % (name, message) 49 | Exception.__init__(self, message) 50 | 51 | 52 | class PluginTypeNotSet(Exception): 53 | ''' 54 | To be raised if the user is trying to create a plugin without setting it as core or addon 55 | ''' 56 | 57 | def __init__(self): 58 | ''' 59 | Constructor 60 | ''' 61 | message = "The plugin type must be set before calling create()" 62 | Exception.__init__(self, message) 63 | 64 | 65 | class BadPluginName(Exception): 66 | ''' 67 | To be raised when a bad plugin name is specified 68 | ''' 69 | 70 | def __init__(self, plugin_name): 71 | ''' 72 | 73 | Constructor 74 | 75 | :param plugin_name: Plugin name 76 | ''' 77 | message = "The specified plugin name is invalid: %s" % plugin_name 78 | Exception.__init__(self, message) 79 | 80 | 81 | class BadPluginType(Exception): 82 | ''' 83 | To be raised when a bad plugin type is specified 84 | ''' 85 | 86 | def __init__(self, plugin_type): 87 | ''' 88 | Constructor 89 | 90 | :param plugin_type: The plugin type 91 | ''' 92 | message = "The specified plugin type is invalid: %s" % plugin_type 93 | Exception.__init__(self, message) 94 | 95 | -------------------------------------------------------------------------------- /plugsy/sdk/PluginTemplate/Config.py: -------------------------------------------------------------------------------- 1 | ''' 2 | PlugSy - PluginTemplate Config 3 | ''' 4 | 5 | DEPENDENCIES = [] -------------------------------------------------------------------------------- /plugsy/sdk/PluginTemplate/PluginTemplate.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Plugsy - PluginTemplate 3 | Generated by PlugSy SDK 4 | ''' 5 | 6 | #Import libs 7 | import time 8 | 9 | # Import Package and PlugSy Modules 10 | from plugsy.AbstractPlugin import AbstractPlugin 11 | 12 | class PluginTemplate(AbstractPlugin): 13 | ''' 14 | PluginTemplate class 15 | ''' 16 | 17 | def __init__(self, plugsy): 18 | ''' 19 | Constructor. Call parent init fam 20 | 21 | :param plugsy: Parent plugsy object 22 | ''' 23 | AbstractPlugin.__init__(self, plugsy) 24 | 25 | 26 | def run(self): 27 | ''' 28 | Main run method. 29 | ''' 30 | self.logger.debug("ENTRY!") 31 | self.logger.info("PluginTemplate running!") 32 | 33 | while not self.stop_event.is_set(): 34 | time.sleep(0.1) 35 | 36 | self.logger.info("PluginTemplate stopping!") 37 | self.logger.debug("EXIT!") 38 | -------------------------------------------------------------------------------- /plugsy/sdk/PluginTemplate/__init__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Generated by PlugSy SDK 3 | ''' 4 | from .PluginTemplate import PluginTemplate 5 | from .Config import * -------------------------------------------------------------------------------- /plugsy/sdk/__init__.py: -------------------------------------------------------------------------------- 1 | from .Sdk import Sdk 2 | 3 | # Import GUI if Win 4 | import sys 5 | if sys.platform.lower().startswith("win"): 6 | from .gui import SdkGui 7 | -------------------------------------------------------------------------------- /plugsy/sdk/gui/ConfirmationDialogs.py: -------------------------------------------------------------------------------- 1 | ''' 2 | SDK Gui Confirmation Dialog - Holds all confirmation dialog classes 3 | ''' 4 | 5 | # Import libs 6 | import wx 7 | 8 | # Import project libs 9 | from .SdkGuiAbs import ConfirmationDialog 10 | 11 | # ====================================== 12 | # = _ConfirmationDialogAbs Class 13 | # ====================================== 14 | class _ConfirmationDialogAbs(ConfirmationDialog): 15 | ''' 16 | Provides an abstract confirmation dialog class 17 | ''' 18 | 19 | def __init__(self, parent, message): 20 | ''' 21 | Constructor 22 | 23 | :param parent: Handle to parent object 24 | :param message: The dialog confirmation message to display 25 | ''' 26 | self.parent = parent 27 | ConfirmationDialog.__init__(self, parent=parent) 28 | self.update_message(message) 29 | 30 | # Set events 31 | self.__set_events() 32 | 33 | # Disable parent 34 | self.parent.Disable() 35 | 36 | 37 | def update_message(self, message): 38 | ''' 39 | Sets the Dialog box message 40 | 41 | :param message: The message to set as the Dialog text 42 | ''' 43 | 44 | self.ConfirmationLabel.SetLabelText(message) 45 | self.ConfirmationLabel.Wrap(250) 46 | self.ConfirmationLabel.Layout() 47 | 48 | def __cancel(self, event): 49 | ''' 50 | Cancels plugin creation and re-enables Main GUI 51 | 52 | :param event: wx event object 53 | ''' 54 | 55 | self.parent.Enable() 56 | self.Destroy() 57 | 58 | 59 | ############# 60 | ## SETTERS ## 61 | ############# 62 | 63 | def __set_events(self): 64 | ''' 65 | Set dialog event handlers 66 | ''' 67 | 68 | self.Bind(wx.EVT_BUTTON, self.__cancel, self.OkCancelSizerCancel) 69 | 70 | 71 | # ====================================== 72 | # = GenericConfirmationDialog Class 73 | # ====================================== 74 | class GenericConfirmationDialog(_ConfirmationDialogAbs): 75 | ''' 76 | Provides a generic confirmation dialog 77 | ''' 78 | 79 | def __init__(self, parent, message): 80 | ''' 81 | Constructor 82 | 83 | :param parent: Handle to parent wx object 84 | :param message: The message to display in the dialog window 85 | ''' 86 | self.__accepted = False 87 | self.__message = message 88 | _ConfirmationDialogAbs.__init__(self, parent, self.__message) 89 | 90 | # Set events 91 | self.Bind(wx.EVT_BUTTON, self.__set_accepted, self.OkCancelSizerOK) 92 | 93 | 94 | def close(self): 95 | ''' 96 | For closing and ending the dialog 97 | ''' 98 | 99 | self.EndModal() 100 | 101 | ############# 102 | ## GETTERS ## 103 | ############# 104 | def was_accepted(self): 105 | ''' 106 | Checks whether the confirmation box was accepted or not 107 | 108 | :return: True if confirmation was accepted, otherwise False 109 | ''' 110 | 111 | return self.__accepted 112 | 113 | 114 | ############# 115 | ## SETTERS ## 116 | ############# 117 | def __set_accepted(self, event): 118 | ''' 119 | Sets the confirmation boxes accepted flag to True 120 | 121 | :param event: wx event object 122 | ''' 123 | 124 | self.__accepted = True 125 | self.Close() 126 | 127 | 128 | # ====================================== 129 | # = DeletePluginConfirmation Class 130 | # ====================================== 131 | class DeletePluginConfirmation(_ConfirmationDialogAbs): 132 | ''' 133 | Provides ab abstract confirmation dialog with a customisable message 134 | ''' 135 | 136 | def __init__(self, parent, plugin_name, sdk): 137 | ''' 138 | Constructor 139 | 140 | :param parent: Handle to parent object 141 | :param plugin_name: The name of the plugin being deleted 142 | :param sdk: A handle to the SDK object 143 | ''' 144 | self.__message = "Are you sure you want to delete the '%s' plugin?" % plugin_name 145 | self.__sdk = sdk 146 | _ConfirmationDialogAbs.__init__(self, parent, self.__message) 147 | 148 | # Set events 149 | self.__set_events() 150 | 151 | 152 | def __delete_plugin(self, event): 153 | ''' 154 | Deletes the specified plugin 155 | 156 | :param event: wx event object 157 | ''' 158 | selected_plugin = self.parent.plugins_tree.get_current_selection_text() 159 | 160 | self.__sdk.delete_plugin(selected_plugin) 161 | self.parent.plugins_tree.remove_plugin() 162 | 163 | self.parent.sync_config_fields() 164 | self.parent.Enable() 165 | self.Destroy() 166 | 167 | 168 | ############# 169 | ## SETTERS ## 170 | ############# 171 | 172 | def __set_events(self): 173 | ''' 174 | Bind events 175 | ''' 176 | 177 | self.Bind(wx.EVT_BUTTON, self.__delete_plugin, self.OkCancelSizerOK) 178 | 179 | -------------------------------------------------------------------------------- /plugsy/sdk/gui/__init__.py: -------------------------------------------------------------------------------- 1 | from .SdkGui import SdkGui -------------------------------------------------------------------------------- /plugsy/utils/LaunchPlugsyGui.py: -------------------------------------------------------------------------------- 1 | ''' 2 | SDK GUI Launcher 3 | ''' 4 | 5 | # Check os is Windows 6 | import sys 7 | 8 | try: 9 | import wx 10 | except ImportError as ix: 11 | if not sys.platform.lower().startswith("win"): 12 | raise OSError("The PlugSy SDK GUI is currently only supported on Windows-based platforms.") 13 | else: 14 | raise ix 15 | 16 | from plugsy.sdk.gui import SdkGui 17 | 18 | def Go(): 19 | ''' 20 | Initiates and launches the PlugSy GUI 21 | ''' 22 | app = wx.App() 23 | gui = SdkGui() 24 | gui.Show() 25 | app.MainLoop() 26 | 27 | if __name__ == "__main__": 28 | Go() 29 | 30 | -------------------------------------------------------------------------------- /plugsy/utils/Logger.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Logger Class. Provides global logger access and handles initiation 3 | ''' 4 | 5 | # import libs 6 | import logging 7 | import os 8 | 9 | # import package content 10 | from .. import Config 11 | 12 | class Logger(): 13 | ''' 14 | Provides a Logger object 15 | ''' 16 | 17 | LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(funcName)s(): %(message)s" 18 | DEFAULT_LEVEL = logging.WARNING 19 | FILTERS_FILENAME = "debugfilters.conf" 20 | 21 | def __init__(self, name, level="", log_path=""): 22 | ''' 23 | Constructor 24 | 25 | :param name: Debug name 26 | :param level: Logging level, 27 | :param log_path: Log file path 28 | ''' 29 | 30 | # Init logger 31 | self.logger = logging.getLogger(name) 32 | 33 | # Configure logger if not already set up 34 | if not self.logger.hasHandlers(): 35 | 36 | self.__formatter = logging.Formatter(self.LOG_FORMAT) 37 | self.__level = self.__get_level(level) 38 | self.logger.setLevel(self.__level) 39 | 40 | # Load filters and create filter object 41 | self.__filter = Filter(self.__get_filter_strings()) 42 | 43 | # Configure handlers 44 | # Console 45 | self.__console = logging.StreamHandler() 46 | self.__console.setFormatter(self.__formatter) 47 | self.__console.addFilter(self.__filter) 48 | self.logger.addHandler(self.__console) 49 | # File 50 | if log_path: 51 | self.__file = logging.FileHandler(log_path, mode="w") 52 | self.__file.setFormatter(self.__formatter) 53 | self.__file.addFilter(self.__filter) 54 | self.logger.addHandler(self.__file) 55 | 56 | self.info("LOGGER INITIALISED") 57 | self.info("Level - '%s'" % logging.getLevelName(self.__level)) 58 | self.info("%s - %s" % (Config.FULL_NAME, Config.VERSION)) 59 | 60 | # Debug warning 61 | if logging.getLevelName(self.__level).lower() == "debug": 62 | self.warning("Debug level set to '%s'. This may hinder performance" % logging.getLevelName(self.__level)) 63 | 64 | 65 | def __get_filter_strings(self): 66 | ''' 67 | Loads and returns a list of debug filter strings 68 | 69 | :return: List of debug filter strings 70 | ''' 71 | 72 | filters = Config.DEBUG_FILTERS 73 | filters_filepath = os.path.join(os.getcwd(), self.FILTERS_FILENAME) 74 | 75 | # Load any additional filters form filters file 76 | if os.path.isfile(filters_filepath): 77 | with open(filters_filepath, "r") as filter_file: 78 | for filter_string in filter_file.readlines(): 79 | if not filter_string.startswith("#"): 80 | filters.append(filter_string.lower().rstrip()) 81 | 82 | return filters 83 | 84 | 85 | 86 | #################### 87 | ## LOGGER METHODS ## 88 | #################### 89 | 90 | def debug(self, msg): 91 | ''' 92 | Logs a DEBUG level entry 93 | 94 | :param msg: Message to log 95 | ''' 96 | self.logger.debug(msg) 97 | 98 | 99 | def info(self, msg): 100 | ''' 101 | Logs an INFO level entry 102 | 103 | :param msg: Message to log 104 | ''' 105 | self.logger.info(msg) 106 | 107 | 108 | def warning(self, msg): 109 | ''' 110 | Logs a WARNING level entry 111 | 112 | :param msg: Message to log 113 | ''' 114 | self.logger.warning(msg) 115 | 116 | 117 | def error(self, msg): 118 | ''' 119 | Logs an ERROR level entry 120 | 121 | :param msg: Message to log 122 | ''' 123 | self.logger.error(msg) 124 | 125 | 126 | def critical(self, msg): 127 | ''' 128 | Logs a CRITICAL level entry 129 | 130 | :param msg: Message to log 131 | ''' 132 | self.logger.critical(msg) 133 | 134 | 135 | ############# 136 | ## GETTERS ## 137 | ############# 138 | 139 | def __get_level(self, level): 140 | ''' 141 | Parses the level string and returns the matching logging integer 142 | 143 | :param level: 144 | ''' 145 | logging_lvl = str(level) 146 | 147 | if level.lower() == "debug": 148 | logging_lvl = logging.DEBUG 149 | elif level.lower() == "info": 150 | logging_lvl = logging.INFO 151 | elif level.lower() == "error": 152 | logging_lvl = logging.ERROR 153 | else: 154 | logging_lvl = self.DEFAULT_LEVEL 155 | 156 | return logging_lvl 157 | 158 | 159 | # ========================== 160 | # = Filter Class 161 | # ========================== 162 | class Filter(logging.Filter): 163 | ''' 164 | Custom filter for filtering to only specific sources, such as core plugins, addon plugins, 165 | or a simple specific plugin 166 | ''' 167 | 168 | 169 | def __init__(self, filters): 170 | ''' 171 | Constructor override 172 | 173 | :param filters: A list of filter names 174 | ''' 175 | self.__filters = filters 176 | 177 | logging.Filter.__init__(self, name="") 178 | 179 | 180 | def filter(self, record): 181 | ''' 182 | Custom filter method 183 | 184 | :param record: Debug record object 185 | :return: True if event is going to be logged. Otherwise False. Defaults to True if no filters found 186 | ''' 187 | 188 | # If no filters, return True 189 | if not self.__filters: 190 | return True 191 | 192 | # Check for matching filter 193 | for filter in self.__filters: 194 | if record.name.lower().startswith(filter.lower()): 195 | return True 196 | 197 | return False 198 | -------------------------------------------------------------------------------- /plugsy/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .toposort import toposort 2 | from .Logger import Logger -------------------------------------------------------------------------------- /plugsy/utils/toposort.py: -------------------------------------------------------------------------------- 1 | ''' 2 | PlugSy Utils - Topological sort for sorting plugin dependencies 3 | ''' 4 | 5 | # Import libs 6 | 7 | # Import package modules 8 | from ..Exceptions import PluginCircularDependency 9 | 10 | def toposort(data): 11 | ''' 12 | Topological sorting function 13 | 14 | :param data: Dictionary of : where string is a an item name of forms, and is a list of the 15 | item's dependencies 16 | :return: Items are yielded in topologically sorted order 17 | ''' 18 | 19 | # Check data isn't empty 20 | if len(data) == 0: 21 | return 22 | 23 | # Copy data 24 | data = data.copy() 25 | 26 | # Remove any self-dependencies 27 | for item, deps in data.items(): 28 | deps.discard(item) 29 | 30 | # Find all independent items (items within a deps set that don't have a dep set of their own) 31 | independent_items = set() 32 | for item, deps in data.items(): 33 | # Iterate all of the keys values and check for deps not in keys list 34 | for dependency in data[item]: 35 | if dependency not in data: 36 | independent_items.update([dependency]) 37 | 38 | # Add independent items with a deps set to the data, with an empty set 39 | for item in independent_items: 40 | data.update({item: set()}) 41 | 42 | # Resolve dependencies until none remaining 43 | while True: 44 | # Add items with no deps to set and yield them. Break if none left 45 | ordered = set(item for item, dep in data.items() if len(dep) == 0) 46 | if not ordered: 47 | break 48 | yield ordered 49 | 50 | # This is where items the deps of items are basically removed until that item has no more deps 51 | data = { 52 | item: (dep - ordered) for item, dep in data.items() if item not in ordered 53 | } 54 | 55 | # If there are items remaining, must be circular dependency 56 | if len(data) > 0: 57 | raise PluginCircularDependency() 58 | -------------------------------------------------------------------------------- /sample_plugins/__init__.py: -------------------------------------------------------------------------------- 1 | from . import core 2 | from . import addon 3 | -------------------------------------------------------------------------------- /sample_plugins/addon/Truck/Config.py: -------------------------------------------------------------------------------- 1 | ''' 2 | PlugSy - Truck Config 3 | @note - Generated by PlugSy SDK 4 | ''' 5 | 6 | DEPENDENCIES = [] -------------------------------------------------------------------------------- /sample_plugins/addon/Truck/Truck.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Plugsy - Truck 3 | @note - Generated by PlugSy SDK 4 | ''' 5 | 6 | #Import libs 7 | import time 8 | 9 | # Import Package and PlugSy Modules 10 | from plugsy.AbstractPlugin import AbstractPlugin 11 | 12 | class Truck(AbstractPlugin): 13 | ''' 14 | Truck class 15 | ''' 16 | 17 | def __init__(self, plugsy): 18 | ''' 19 | Constructor. Call parent init fam 20 | ''' 21 | AbstractPlugin.__init__(self, plugsy) 22 | 23 | 24 | def run(self): 25 | ''' 26 | @summary: Main run method. 27 | @return: 28 | ''' 29 | self.logger.debug("ENTRY!") 30 | self.logger.info("Truck running!") 31 | 32 | while not self.stop_event.is_set(): 33 | pass 34 | 35 | self.logger.info("Truck stopping!") 36 | self.logger.debug("EXIT!") 37 | -------------------------------------------------------------------------------- /sample_plugins/addon/Truck/__init__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | @note - Generated by PlugSy SDK 3 | ''' 4 | from .Truck import Truck 5 | from .Config import * -------------------------------------------------------------------------------- /sample_plugins/addon/__init__.py: -------------------------------------------------------------------------------- 1 | from . import Truck 2 | -------------------------------------------------------------------------------- /sample_plugins/core/Boat/Boat.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Plugsy - Boat 3 | @note - Generated by PlugSy SDK 4 | ''' 5 | 6 | #Import libs 7 | import time 8 | 9 | # Import Package and PlugSy Modules 10 | from plugsy.AbstractPlugin import AbstractPlugin 11 | 12 | class Boat(AbstractPlugin): 13 | ''' 14 | Boat class 15 | ''' 16 | 17 | def __init__(self, plugsy): 18 | ''' 19 | Constructor. Call parent init fam 20 | ''' 21 | AbstractPlugin.__init__(self, plugsy) 22 | 23 | 24 | def run(self): 25 | ''' 26 | @summary: Main run method. 27 | @return: 28 | ''' 29 | self.logger.debug("ENTRY!") 30 | self.logger.info("Boat running!") 31 | 32 | while not self.stop_event.is_set(): 33 | pass 34 | 35 | self.logger.info("Boat stopping!") 36 | self.logger.debug("EXIT!") 37 | -------------------------------------------------------------------------------- /sample_plugins/core/Boat/Config.py: -------------------------------------------------------------------------------- 1 | ''' 2 | PlugSy - Boat Config 3 | @note - Generated by PlugSy SDK 4 | ''' 5 | 6 | DEPENDENCIES = [] -------------------------------------------------------------------------------- /sample_plugins/core/Boat/__init__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | @note - Generated by PlugSy SDK 3 | ''' 4 | from .Boat import Boat 5 | from .Config import * -------------------------------------------------------------------------------- /sample_plugins/core/Car/Car.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Plugsy - Car 3 | @note - Generated by PlugSy SDK 4 | ''' 5 | 6 | #Import libs 7 | import time 8 | 9 | # Import Package and PlugSy Modules 10 | from plugsy.AbstractPlugin import AbstractPlugin 11 | 12 | class Car(AbstractPlugin): 13 | ''' 14 | Car class 15 | ''' 16 | 17 | def __init__(self, plugsy): 18 | ''' 19 | Constructor. Call parent init fam 20 | ''' 21 | AbstractPlugin.__init__(self, plugsy) 22 | 23 | 24 | def run(self): 25 | ''' 26 | @summary: Main run method. 27 | @return: 28 | ''' 29 | self.logger.debug("ENTRY!") 30 | self.logger.info("Car running!") 31 | 32 | while not self.stop_event.is_set(): 33 | pass 34 | 35 | self.logger.info("Car stopping!") 36 | self.logger.debug("EXIT!") 37 | -------------------------------------------------------------------------------- /sample_plugins/core/Car/Config.py: -------------------------------------------------------------------------------- 1 | ''' 2 | PlugSy - Car Config 3 | @note - Generated by PlugSy SDK 4 | ''' 5 | 6 | DEPENDENCIES = [] -------------------------------------------------------------------------------- /sample_plugins/core/Car/__init__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | @note - Generated by PlugSy SDK 3 | ''' 4 | from .Car import Car 5 | from .Config import * -------------------------------------------------------------------------------- /sample_plugins/core/__init__.py: -------------------------------------------------------------------------------- 1 | from . import Boat 2 | from . import Car 3 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup, find_packages 2 | 3 | setup( 4 | name='PlugSy', 5 | version='0.2.31', 6 | packages=[ 7 | "plugsy", "plugsy.utils", "plugsy.sdk", "plugsy.sdk.gui", "plugsy.sdk.PluginTemplate", 8 | "sample_plugins" 9 | ], 10 | url='https://github.com/sithis993/PlugSy', 11 | license='', 12 | author='Sithis', 13 | author_email='sithis999@gmail.com', 14 | description='Threaded plugin system and SDK', 15 | long_description=open('README.rst', 'r').read(), 16 | install_requires=[ 17 | "wxPython==4.0.1; 'win' in sys_platform" # wxPython if on Win 18 | ], 19 | 20 | entry_points={ 21 | # SDK GUI 22 | "console_scripts": ['LaunchPlugsyGui=plugsy.utils.LaunchPlugsyGui:Go'] 23 | } 24 | ) 25 | --------------------------------------------------------------------------------