Pygin — Python adapter
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Python adapter
Latest post of the previous page:
Smitis, текущая стадия разработки не предполагает наличия обратной совместимости. Вывод на экран переделан, helloworld, идущий в комплекте, должен работать.Python adapter
help(__hello__) co ccылкой на исходники было бы любопытно.
Так и не надо выпиливать низкоуровневый. Оставить как есть. Документацию можно в README.md засунуть. Там всего-то 5е колбэков в http://api.farmanager.com/ru/basicapi/index.html нужно. Примера будет достаточно.
https://github.com/trexinc/evil-program ... l/30/files
Python adapter
Что-то там какие-то неизвестные функции:
Code: Select all
Available API:
- GetUserScreen
- SetUserScreen
- __doc__
- __loader__
- __name__
- __package__
- __spec__
- api_pointer
- error
Python adapter
Лежит http://api.farmanager.com/ru/exported_f ... index.html однако и не грузиццо.
Абстракция не ради абстракции, а для программеров на Python. Основной же принцип языка в том, что код читается гораздо больше раз, чем пишется. Здесь тоже - сделать нормальный интерфейс для плагина, интуитивно понятный про чтении кода - большое дело. Мне легко, потому что я пытался на C плагины писать много лет назад, но посадить питоняшу без сакрального знания наваять плагин будет тяжеловато. Даже по образу и подобию.
Абстракция не ради абстракции, а для программеров на Python. Основной же принцип языка в том, что код читается гораздо больше раз, чем пишется. Здесь тоже - сделать нормальный интерфейс для плагина, интуитивно понятный про чтении кода - большое дело. Мне легко, потому что я пытался на C плагины писать много лет назад, но посадить питоняшу без сакрального знания наваять плагин будет тяжеловато. Даже по образу и подобию.
Python adapter
А как обращаться к полям https://api.farmanager.com/ru/structures/openinfo.html ? Там пустой dict в OpenW передаётся.
https://github.com/techtonik/discovery/ ... _init__.py
https://github.com/techtonik/discovery/ ... _init__.py
Python adapter
pygin_140517_6b26d5f.7z - это клёвое имя, но pygin_170514_6b26d5f.7z лучше сортируется по имени.
Да, что-то мудрёно получается. Непонятно что в какой последовательности запускается. Может рановато пока убирать сишные заглушки?.. В общем надо чуток помедитировать.
FarPluginClass - это хорошо, но вот плохо, что в __init__ ему ничего не валится. Там farapi всякие и т.п. Идея высокоуровневого интерфейса в том, чтобы всю статическую информацию Far взял из свойств плагина, а остальное уже происходило во время и после инициализации.
Да, что-то мудрёно получается. Непонятно что в какой последовательности запускается. Может рановато пока убирать сишные заглушки?.. В общем надо чуток помедитировать.
FarPluginClass - это хорошо, но вот плохо, что в __init__ ему ничего не валится. Там farapi всякие и т.п. Идея высокоуровневого интерфейса в том, чтобы всю статическую информацию Far взял из свойств плагина, а остальное уже происходило во время и после инициализации.
Python adapter
Теперь две ошибки выдаётся для 04class. Первая, что `AttributeError: module '04class' has no attribute 'FarPluginClass'`, а вторая
Вот вторая ошибка вообще непонятна. Ожидается что-нибудь типа такого.
Code: Select all
Error loading plugin
C:\Far Manager\Plugins\04class\__init__.py
The data area passed to a system call is too small.
Code: Select all
Error loading plugin
Plugins\04class\__init__.py
Module '04class' doesn't define 'FarPluginClass'.
Python adapter
Code: Select all
FarPluginClass = HelloWorldPlugin
Здесь на самом деле не создаётся объекта. Поэтому все изменения здесь будут во всех созданных объектах отражатся, пока объект их не перекроет. иметь больше одного объекта типа плагин в одном файле смысла нет, поэтому вроде ничего плохого.
Code: Select all
class HelloWorldPlugin(object):
Title = "Hello Python world"
Python adapter
Code: Select all
╔═ Pygin: std::exception ═╗
║ bad cast ║
╟─────────────────────────╢
║ { OK } ║
╚═════════════════════════╝
Python adapter
Code: Select all
import pygin
from pygin.farapi_types import *
...
def GetPluginInfoW(self):
info = PluginInfo()
Code: Select all
import pygin
...
def GetPluginInfoW(self):
info = self.far.PluginInfo()