Almost comfortable text editor
- Python 100%
|
|
||
|---|---|---|
| debian | ||
| example_plugins | ||
| pynote | ||
| .gitignore | ||
| LICENSE | ||
| pyproject.toml | ||
| README.md | ||
| requirements.txt | ||
Pynote
Simple almost comfortable text editor written in Python with PySide6.
Project details
- Was made for python practice
- Maybe will be updated and improved
Plans
Main goal: make an extensible and customizable text editor.
- Plugins support
- App auto reloading
- Plugin sanitizier
- Develop plugins
- Optimize IO more
Conventions
pynote.gui.classescontains only GUI related code- all signal/event handling must be passed to
pynote.gui.event_handlers
- all signal/event handling must be passed to
pynote.gui.classeshave methodlogic_update()it's used only to update data of underlying widgets- PySide6 has own method
update()but it's used to redraw widget
- PySide6 has own method
Contribuition guide:
- Clone this repo
- Checkout to branch
- if you adding new feature name it
/dev/feature - if you fixing an issue name it
/fix/issue
- if you adding new feature name it
- Develop according to conventions
- When you finished submit a pull request to main branch
Plugins
Plugins is an executable by Pynote Python code. Plugins are not maintained in Pynote repo.
Warning
Because plugins are executable code written in Python they are very powerfull. You must check the source of plugin or audit the code of it yourself before enabling it!
Pynote contribuitors are not responsible for any damage caused by third-party plugins.
Details
- All plugins have a reference to current MainWindow class (to accses it use
mainWindowvariable) - MainWindow class contains attachable points for plugins to modify it
- Plugins are running on same thread as GUI
- Plugins are capable of creating own windows/methods and inject them directly in
mainWindow - Plugins state is saved in
plugins-metadata.jsonplugins-metadata.jsonis used to save state of plugins after restart of Pynote
- Plugins will not execute if they are disabled in
config.toml - Pynote is doing small amount of sanitization before loading plugin
- Currently plugins which include:
osmodules will not load
- Currently plugins which include:
Development
Developing plugin for Pynote as easy as writing Python. Pynote is not enforcing on developer any syntax. It can be a simple script or theme for MainWindow. Or something complex with own PySide6 windows and methods.
You can refer to example_plugins/ to see example of plugins.