Metadata-Version: 2.1
Name: yapsygui
Version: 1.1.0
Summary: GUI for Yapsy plugin system
Home-page: https://github.com/leonelhs/yapsy-gui
Author: leonel hernandez
Author-email: leonelhs@gmail.com
License: Apache
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3 :: Only
Description-Content-Type: text/markdown
License-File: LICENSE

# Yapsy QT GUI
## Python plugin manager

This project is a GUI python plugin manager. Backend is implemented over [Yapsy](https://github.com/tibonihoo/yapsy/)

### Basic plugin structure:


###### plugin1.plugin

```properties
# Plugin descriptor file
[Core]
Name = Plugin Test
Module = plugin1

[Documentation]
Author = Leonel Hernandez
Version = 0.1
Website = https://github.com/leonelhs/
Description = This is a demo plugin
```

######  plugin1.py
```python
# Plugin module file
from qtpy.QtWidgets import QPushButton
from yapsy.IPlugin import IPlugin


class PluginOne(IPlugin):

    def __init__(self):
        super().__init__()
        self.context = None
        self.name = "Plugin test-01"

    def action(self, context):
        self.context = context
        button = QPushButton(self.name)
        button.clicked.connect(self.task)
        context.layout().addWidget(button)

    def task(self):
        self.context.output.append("This is a text from plugin test-01")
```
### Minimal Application
```python
import sys
from qtpy import QtWidgets
from qtpy.QtWidgets import QWidget, QVBoxLayout, QPushButton, QTextBrowser
from yapsygui import DialogPlugins


def fetchPlugins(plugins):
    for plugin in plugins:
        plugin.plugin_object.action(win)


app = QtWidgets.QApplication()
win = QWidget(None)
win.setLayout(QVBoxLayout())
btn_manager = QPushButton("Show Manager")
win.layout().addWidget(btn_manager)

manager = DialogPlugins(win, "./plugins")
manager.connect(fetchPlugins)
manager.loadPlugins()

btn_manager.clicked.connect(manager.show)
win.output = QTextBrowser(win)
win.layout().addWidget(win.output)

win.show()
sys.exit(app.exec_())
```            

### For install a new plugin just locate plugin descriptor
![Screenshot 2](./screenshots/screen02.png)

### Test plugin action
![Screenshot 1](./screenshots/screen01.png)

