吉里吉里2/吉里吉里Z用UIウィジェット実装kwidgets

吉里吉里2/吉里吉里ZでTJSによるGUIアプリを構築するためのUIウィジェット実装kwidgetsの解説ツイートです。マニュアルが整備できてないので、twitterで少しずつつぶやいて、こちらのまとめにまとめて行く予定です。 (2017/6/5) 以前は吉里吉里2のSVNレポジトリで管理していたkwidgetsですが、この度GitHubのkrkrzプロジェクトの下にワーキングレポジトリを移動させました。以後、メンテナンスはそちらで行います。 https://github.com/krkrz/kwidgets
27
ゆんゆん探偵 @yunyundetective

ウィジェット間のドラッグ&ドロップは、異なるウィンドウ間でも有効。ウィンドウの垣根を越えてパケットを送達できる。(続く)

2012-04-21 15:01:10
ゆんゆん探偵 @yunyundetective

ドラッグ&ドロップに関してもう1つ。吉里吉里では Window.onFileDrop() で外部アプリからのファイルのD&Dに対応しているけど、kwidegtsではこれを拡張して KWidget.onFileDrop() でウィジェット単位で受け入れ判定が出来る。本日ここまで。

2012-04-21 15:03:20
ゆんゆん探偵 @yunyundetective

kwidgets講座その6。一緒に使うと便利なDLL。今日はちょっと脇道に逸れて、kwidgetsと一緒に使うとツール作るのに便利なDLLを色々紹介する。吉里吉里本体のI/Oは微妙に弱いので、それを補強するDLLと組み合わせると一気に便利になるのだ。

2012-04-25 14:53:53
ゆんゆん探偵 @yunyundetective

ここから紹介するDLL、主立った物は最近の吉里吉里の配布アーカイブにはビルド済みの物が含まれている。無い場合は、吉里吉里のソースレポジトリをチェックアウトして、自分でVC使ってビルドする必要がある。

2012-04-25 14:54:55
ゆんゆん探偵 @yunyundetective

まずはド定番、fstat.dll。吉里吉里で各種ファイル操作するならこいつが必須。ファイルを削除したり一覧取得したりディレクトリ選択したりファイルサイズや日付を取得したりと色々出来る。fstatって名前は歴史的経緯で、今となってはちょっとこの名前不適切なんだけど。

2012-04-25 14:57:04
ゆんゆん探偵 @yunyundetective

csvParser.dll。CSV形式のファイルをパースしてくれるパーサー。仕様はかなりガチ。よくあるadhocなパーサーでは無いので、ダブルクオート付きのCSVなんかでもちゃんと読めたはず。

2012-04-25 14:59:43
ゆんゆん探偵 @yunyundetective

json.dll。JSON形式のファイルの読み書きが出来る。JSONは、オクテットを除いてTJS式と論理構造に互換性があるので、JSONを介するとrubyやCと言った他の言語との間での、構造を持ったデータのやり取りが一気に楽になる。

2012-04-25 15:01:19
ゆんゆん探偵 @yunyundetective

saveStruct.dll。これ地味に便利。元々TJSに実装されているArray/Dictionary.saveStruct()関数は、データの内容をテキスト形式で書き出す関数なんだけど、UTF16なのがちょっと使いづらい。このDLLはそのSJIS/UTF8版を提供してくれる。

2012-04-25 15:03:13
ゆんゆん探偵 @yunyundetective

clipboardEx.dll。吉里吉里のクリップボード機能を拡張して、テキストだけで無く「画像データ」と「TJS式」をクリップボードを介して他のアプリとやりとり出来るようにする。

2012-04-25 15:05:52
ゆんゆん探偵 @yunyundetective

windowEx.dll。ウィンドウの最小化や最大化など、各種ウィンドウ操作に関する拡張を詰め込んだDLL。kwidgetsでアプリ作るとウィンドウ操作もしたくなる事多いので、これがあるとありがたい。

2012-04-25 15:08:20
ゆんゆん探偵 @yunyundetective

messenger.dll。同時起動している複数の吉里吉里間でWin32のメッセージを送受信するためのDLL。複数アプリを同時起動させないケースで、後から起動したアプリが起動時引数だけ、起動済みのアプリに送信してファイルを開かせたりする目的に使える。

2012-04-25 15:09:53
ゆんゆん探偵 @yunyundetective

layerExDraw.dll。GDI+の機能を利用して、様々な形状の図形の描画が出来る。線にはアンチエイリアスがかかるので、非常に綺麗に描画を行える。ツール的にに必要な絵の描画は概ねこれでまかなえる。

2012-04-25 15:12:02
ゆんゆん探偵 @yunyundetective

htmlhelp.dll。これものっそい地味なんだけど(^^; 吉里吉里内からHTMLヘルプを開くためのDLL。このDLLを使うと、吉里吉里に連動して一個だけヘルプが開くあたりがポイント。吉里吉里閉じるとちゃんとヘルプも閉じてくれる。

2012-04-25 15:13:30
ゆんゆん探偵 @yunyundetective

layerExSave.dll。データのセーブをBMP以外の、TLG5やPNG形式で行えるようにするDLL。これがあれば、αつき画像を読み込んで加工して吐き出すところまで完結したツールが作れる。

2012-04-25 15:15:01
ゆんゆん探偵 @yunyundetective

まだまだ半分も紹介し切れてない。吉里吉里には本当に便利なDLLがたくさんあるので(ほとんどワムソフトさん作 ^^;)、kwidegtsでツール作ろうと思う人は、一度プラグインのソースフォルダ一通り見ておくといい。てなとこで今日は締め。

2012-04-25 15:16:45
わたなべごう @wtnbgo

fstat.dll は StragesEx.dll に名前かえてもいいのかもね

2012-04-26 00:13:18
わたなべごう @wtnbgo

他の似たような拡張系はたいてい元のクラス+Ex の名前になってるはず

2012-04-26 00:13:44
わたなべごう @wtnbgo

ScritsEx プラグインちょー便利よ。まじでまじで

2012-04-26 00:14:24
わたなべごう @wtnbgo

ツールとして吉里吉里を使いたい日とは Rev.5002 以降のをつかったほうがいいです。System.exit(エラーコード), System.terminate(エラーコード) が使えるようになってるので

2012-04-26 00:18:23
わたなべごう @wtnbgo

コマンドラインツールをつくりたい人は stdio プラグインを使えばわりと用はたせる

2012-04-26 00:21:45
ゆんゆん探偵 @yunyundetective

kwidgets講座その7。ツリービューであるKListの解説。KListを大幅更新したのを機に解説を書こうとと思ったのだが、前のポストからすでに1年半経っていた。しかも個別ウィジェットの解説まるでしていない…。ということで、改めて1から「KListの解説」を行おうと思う。

2013-11-15 16:06:06
ゆんゆん探偵 @yunyundetective

KListは、いわゆるツリービュー。Explorerのツリービューみたいな感じの代物を簡単に実現できる。もちろん、D&D完備。構造化エディタみたいな物もたぶん作れるよ。

2013-11-15 16:06:19
ゆんゆん探偵 @yunyundetective

ツリーのルートになるウィジェットが KList、 個々のリスト項目を KListItem と言うクラスで定義している。

2013-11-15 16:06:43
ゆんゆん探偵 @yunyundetective

ちょっと注意が必要なのは KListItem は KWidget 継承クラス「ではない」と言う事。parent,enabledなどのプロパティ、onMouseDownなどのフック関数など一通り装備してるので、KWidget継承クラスと感覚的にはそう変わりなく扱えるケド。

2013-11-15 16:06:46
ゆんゆん探偵 @yunyundetective

KListに対してKListItemをadd()すると、ルートにリスト項目がずらっと並ぶ。KListItemに対してKListItemをadd()するとその子階層のリストが出来上がる。簡単。リストアイテム先端の開閉アイコンをクリックするすることで子階層以降の開閉ができる。

2013-11-15 16:07:14