機能 #722
完了機能追加:ユーザスキンの適用
0%
説明
TLで言っていた件です。
下記仕様のユーザスキンの仕組みを提案します。
(1)ユーザースキンディレクトリ
ユーザースキンは~/.mikutter/skin/のサブディレクトリに格納する事にします。
ユーザースキンディレクトリはUserConfig[:skin_dir]に相対パスで指定する事とします。
(2)設定画面
設定画面はプラグインとして実装します。
肝は前述のUserConfig[:skin_dir]の設定です。
設定画面は複数インストールされたスキンから1つを選ぶI/Fを持ちます。
現状は*.pngのあるディレクトリをユーザースキンディレクトリ候補としています。
これは最近出てきたスキン「miq」をそのまま展開して使える様にと言うポリシーです。
(miq/darkgray/64/*.pngとかそんな階層になってるので)
でも、これだとWebでのプレビュー用pngを置いているディレクトリもピックアップされるのでイマイチです。
ディレクトリ構成を決めてしまってもいいかも知れません。
ユーザースキンの変更は再起動にて反映される様にします。
(3)画像ファイルの優先度
ユーザースキンは全画像を用意する必要は無く、存在しない画像はデフォルトのスキンが適用されます。
それでもダメならデフォルトの画像(後述)を表示します。
(4)プラグインへのSkinの解放
miqでは一部のプラグインのアイコンも提供してくれています。
折角なのでプラグインもスキンの恩恵を受けられる様にしたいです。
具体的にはSkin::get()にデフォルト画像を渡せる様にします。
プラグインからはこんな感じに使います。第二引数がデフォルトの画像のパスです。
Skin.get(“hoge.png”, "プラグイン自前のhoge.png”))
ユーザースキンもしくはデフォルトスキンに該当する名前の画像があればそれを採用し、無ければプラグイン内蔵の画像を返す様にしたいなと。
なお、Skin.getの第二引数を省略した場合、従来通り、デフォルトスキンのnotfound.pngが適用されます。
こんな感じで実働する物を作ってみましたので添付します。
ぜひ一度揉んで頂ければと思います。
ファイル