デスクトップアプリの開発
デスクトップアプリは現在pythonを使用したものが公開されています。
pythonで記述されたスクリプトとアプリが設定を読み込むためのjsonファイルを作成することでアプリに独自のプラグインを導入できます。
pythonバージョン 3.10.8
GUIフレームワーク customtkinter
アプリが要求するプラグインの情報のjsonファイル
{
"plugin_name": "hogePlguin",
"plugin_file": "hogePlguin.py",
"explain": "これはLapisCastデスクトップアプリ用のプラグインです。",
"repository_url": "",
"update_check_url": ""
}
現在「repository_url」及び、「update_check_url」は機能しません。
また、プラグインから利用できる関数をまとめたヘルパーもあります。
from typing import Callable
# customtkinterのmaster要素です
guiMaster = None
def PrintLog(*logtexts:str|list|None):
pass
def PrintLog_warn(*logtexts:str|list|None):
pass
def PrintLog_error(*logtexts:str|list|None):
pass
def SaveValue(key:str="", value:str|list|dict|None=None):
pass
def ReadValue(key:str=""):
pass
def ReadValueWithDefault(key:str="", default:str|list|dict|None=None) -> str|list|dict|None:
pass
class HttpResult():
def __init__(self):
self.method:str = "GET"
self.status_code:int = 0
self.text:str = ""
self.json:Callable[[], dict]
def HTTPAccess(method:str="GET", url:str=None, params:dict=None, headers:dict=None, cookies:dict=None, data:dict=None, json:dict=None) -> HttpResult:
return HttpResult()
def SendLapisCast(eventkey:str=None, value:str|int|float=None, redundantmode:int=0):
pass
# CheckExit
# アプリケーションの終了フラグを返します
# 通常(実行中)は True を返します
def CheckExit() -> bool:
return True
それぞれのファイルの配置場所はデスクトップアプリのexeファイルと同じフォルダにつくられる「LapisAppData」フォルダ内のpluginフォルダの中になります。
ここにプラグイン名のフォルダを作成し、その中にjsonファイルやpythonファイルを配置してください。
customtkinterのバグ
現在customtkinterにはGUIオブジェクトをdelしてもメモリが解放されないバグが確認されています。
デスクトップアプリは長時間動作させるアプリケーションなのでメモリリークには十分ご注意ください。
今後のアップデート
これら提供される新しいバージョンのデスクトップアプリはpythonではなく、typescript react系のものになると思われます。
しかしながら、開発のめどは立っていないのでしばらくはpythonクライアントを利用することになると思います。