俺得なHWモニター、実験も兼ねて色々やってます(・∀・)
今回の題材は「SkinからSkinを制御する」でございます。
DELLノート用に作ったSkin達は、ひとまず落ち着いた。
前回話題にしたカレンダーやアラームの呼び出しは実装済み。
CPU使用率のバーグラフは普段は使ってないけど、
処理を動かして数値で見たいときは使う(かもしれないw)ので
普段は隠しておいて、見たいときにクリックをすると"シュッ"と出てくるのがやりたい。
ということで、スキンから別のスキンを呼び出したり隠したりできないかを検討する(・∀・)
調べてみたけどピンポイントの情報が出てこない。
そういう動きをさせたい人は絶対居ると思うんだけどなぁ・・・?
リファレンスを読んでいたら「Bangs」に記載があった。
そこの「Skin bangs」によると
Example: !Toggle "illustro\Clock"
※illustroがスキン全体の名称、Clockがその配下のスキンの名称。
※Toggleだけではなく、Show、Hideがある。
とあるので、これをMeterのActionにブチ込めば押す度に表示したり消えたりできそうだ。
Clockディレクトリにはスキンの設定ファイルであるClock.iniが格納されている。
よくわからないけど、参考にした大半のスキンがディレクトリ名と設定ファイル名が
同じにしてあったので倣っておきましょう。
※例によってパス(SUB_SKIN_PATH)は定数として切り出してある
こんな感じで。
[!Redraw]
はMeterを再描画する時に使用する。
で、Actionを設定したMeterをクリックすれば
・・・何も起きない。
何故だ。
場所が悪いのかと思って@Resources
に入れたけど、結果は変わらず。
こういう時は焦らずRainmeterのログを見よう。
モザイク掛けてるけどパスは正しい(はず)。
いやいや、そこに居るだろうが。ナンデヤネン。
リファレンスをもう一度読む。
Shows or hides an active skin.
ん?「active skin」だって?
スキンを表示した状態じゃなきゃ使えないのかモシカシテ。
正解。
対象スキンを有効にしている状態じゃないと動かない。
無駄に1時間程悩んでしまったww(ノ∀`)
更にリファレンスを見ていたら
!ToggleConfig "illustro\Clock" "Clock.ini"
というのを見つけた。
これも前述の!Toggle
と同じように引数にスキンのパスを指定した上で、
スキンの設定ファイル名も指定する。
ファイル名を指定しているのでディレクトリ名と設定ファイル名を一緒にしなくても動く。
こっちは
Activates or deactivates a skin.
ということなので、Activeであろうがなかろうが、押す度に表示ON/OFFが切り替わる。
俺が求めていたのはこっちの動きなのでコレ採用。
Rainmeterは同じディレクトリに2つスキンを入れても、両方同時に表示することが
(多分)できないけど!ToggleConfig
で呼び出すのであれば
サブスキンという形で同居することが可能になる・・・と思ったら
ダメだったw(ノ∀`)
├─Skin A
│ ├─Skin A.ini
│ └─Skin B.ini
こんな構造で、Skin A.ini
の任意のMeterで
って記載したらSkin Bが消えると思ったんだけど、実際に消えたのはSkin Aの方。
理解できないw
大人しくディレクトリを分けておこう・・・。
結論
スキンからスキンの表示、非表示を切り替える場合、
元々表示ONしていたスキンのON/OFFを切り替えたければ!Toggle、
表示ON/OFF問わずスキンのON/OFFを切り替えたければ!ToggleConfigを使う(・∀・)
いやぁ・・・苦戦したわw