Panels UI が不安定で頻繁に foobar2000 がクラッシュする問題についてチョット纏めてみました。あくまでも、私自身のソフトウェア環境、経験、検証に基づくものだと言う事を前置きしておきます
私が主に foobar2000 を動かしている環境としては…
以上のような環境なんですが、Panels UI を使い始めた頃は、まともに設定画面を開けなくて苦労しました。そこで、以下の事を試しました
1番に関してはほとんど (と言うか、全く) 効果が得られませんでした。アプリケーションの言語を色々と変更してみたんですが…劇的な効果が得られたのは 2番でした。ウィンドウを制御するソフトウェアに私は ぴたすちお 1 を使用していたんですが、このソフトウェアの使用をやめる事によって、設定画面を開く事によって foobar2000 がクラッシュすると言う問題は完全に解消しました
これで、設定画面が完全に開けるようになって、るんるん気分 2 で TF を書き、foobar2000 でお気に入りを再生させていたのですが、長時間再生させていると下記に示している不具合が出てくるケースに遭遇 3
上記、2つの問題はかなりの時間を浪費して調べた 4 結果、Panels UI の TF を記述する際には以下の点に注意する様にする事によって解消しました
以上のような対策を施す事によって、私の環境下では foobar2000 + Panels UI 0.14.12 は安定して動作しています
Panels UI の私的マニュアルです。Commands references なんていきなりディープなものを作っておきながら、introduction (序章、入り口) 部分のマニュアルがないのはオカシイので作ってみました。特に 原文: Foobar2000:Components 0.9/Panels UI (foo ui panels) - Hydrogenaudio Knowledgebase には特にタイトルが明記されていなかったので、内容から推測して勝手に introduction と命名しました
Panels User Interface
Maintainer: | terrestrial |
Stable release: | 0.13.8 beta [June 12 2007] |
Preview release: | 0.14.12 beta [Jul 18 2007] |
Foobar version: | 0.9.4.x |
Use: | Graphical user interface |
License: | - |
Website: | panels.fooblog2000.com |
Discussion thread: | Hydrogenaudio Forums |
Panels UI は titleformatting の使用によるfoobar2000 の外観を変更する為の GUI です。これらは Panels UI 独自の titleformat 機能およびフィールドと foobar2000 の機能とフィールドを含んでいます。Panels UI は現在統合されている Track Info Mod と Single Columns Playlist コンポーネントの後継者です
Panels UI はまだベータ段階にあって、それは手広くテストされていません
Panels UI の開発は 2007年7月現在 停止している様です…('A`)
以下の特徴を提供するカスタマイズ可能なユーザーインターフェイス (UI) です
このインポート、エクスポートは機能していません。インポートは PanelsUI ディレクトリに .PUI ファイルをコピーする事で代用できます。エクスポートは Layout を変更または foobar2000 を終了した際に .PUI ファイルが保存されるので、適当なディレクトリにコピーする事で代用できます
バージョン 0.14.x は foobar2000 をクラッシュさせる場合があって不安定です。この理由から 0.14.x は公式の Known Problematic Components(問題のあるコンポーネント) にリストされています
foo_uie_tabs の中に Track Display を加えた場合、その中の Track Display の $panel は機能しません
0.14.12 のダウンロード: Panels UI : 0.14.12
今回はタイトルの通り $newsyntax を使って一つ作ってみました。楽ですね、これは。表示するパーツをカテゴリーに分けて、$alignabs を行えば、あとはその中では最後に行った $alignabs からの相対座標になるので、座標を考えるのに頭を悩ます事はなさそうです
※ 掲載されているスクリーンショットの内容などは記事執筆者 zodiac の趣味、趣向を表すモノではありません
zodiac-1.02.pui.zip (2.43MB)
注意: 各コンポーネントの日付、バージョン番号等は記事執筆時点のものです
注意: コンポーネントの日付、バージョン番号等は記事執筆時点のものです
// ----- font names
$puts(f.n1,'ヒラギノ丸ゴ Pro W4')
$puts(f.n2,'Silkscreen')
$puts(f.n3,'Tahoma')
$puts(f.n4,'Georgia')
// ----- album art work image file
$if($fileexists($replace(%_path%,$ext(%_path%),png)),
$puts(CoverImg,$replace(%_path%,$ext(%_path%),png)),
$if($fileexists($replace(%_path%,$ext(%_path%),jpg)),
$puts(CoverImg,$replace(%_path%,$ext(%_path%),jpg)),
$if($fileexists($replace(%_path%,$ext(%_path%),gif)),
$puts(CoverImg,$replace(%_path%,$ext(%_path%),gif)),)))
参照: how to use
バージョン | 日付 | 内容 |
1.02 | 2008/07/12 (土) | こっそり更新…('A`) |
1.01 | 2008/02/17 (日) | ちょこっと修正 |
1.00 | 2008/02/13 (水) | 新規作成。この名前は何とかならんかったものか…('A`) |
某掲示板のスレにやっつけで、矩形だけでレーティングの設定を行う Panels UI の TF を挙げたんですが、その時に書いた TF のコードをもっと汎用的にしてみました
線描画のみなので、画像などのリソースは必要ありません。…が、下記のコードを見てお解りの様に美しくないです。2 TF はループインストラクションがないので、どうしてもこうなってしまいます。あとは、レートの設定を行う事はできるんですが、該当のタグを消す事はできません
- // Global
- // padding (ボタン間の隙間)
- $puts(m.p, 1)
- // start at position (左上隅の描画開始位置 m.l=左 m.t=上)
- $puts(m.l, 15)
- $puts(m.t, 15)
- // 矩形の幅 (ボタンの幅)
- $puts(w, 20)
- // 矩形の高さ (ボタンの高さ)
- $puts(h, 5)
- // 通常表示時の線の色
- $puts(c.n, 212121)
- // レイティングが設定されていた時のボタン全体の色
- $puts(c.o, 212121)
- // マウスポインターをボタン上に重ねた時のボタンの枠線の色
- $puts(c.h, 808080)
- // PerTrack
- $rectabs(0, 0, %_width%, %_height%, $c(220,220,220), null)
- $select(%rating%,
- $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*4}+{$get(m.p)*4}), $get(w), $get(h), $get(c.o), null),
- $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*4}+{$get(m.p)*4}), $get(w), $get(h), $get(c.o), null)
- $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*3}+{$get(m.p)*3}), $get(w), $get(h), $get(c.o), null),
- $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*4}+{$get(m.p)*4}), $get(w), $get(h), $get(c.o), null)
- $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*3}+{$get(m.p)*3}), $get(w), $get(h), $get(c.o), null)
- $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*2}+{$get(m.p)*2}), $get(w), $get(h), $get(c.o), null),
- $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*4}+{$get(m.p)*4}), $get(w), $get(h), $get(c.o), null)
- $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*3}+{$get(m.p)*3}), $get(w), $get(h), $get(c.o), null)
- $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*2}+{$get(m.p)*2}), $get(w), $get(h), $get(c.o), null)
- $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*1}+{$get(m.p)*1}), $get(w), $get(h), $get(c.o), null),
- $rectabs($get(m.l), $eval($get(m.t)), $get(w), $get(h), $get(c.o), null)
- $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*4}+{$get(m.p)*4}), $get(w), $get(h), $get(c.o), null)
- $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*3}+{$get(m.p)*3}), $get(w), $get(h), $get(c.o), null)
- $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*2}+{$get(m.p)*2}), $get(w), $get(h), $get(c.o), null)
- $rectabs($get(m.l), $eval($get(m.t)+{$get(h)*1}+{$get(m.p)*1}), $get(w), $get(h), $get(c.o), null)
- )
- $textbutton($get(m.l), $get(m.t), $get(w), $get(h),
- $rectabs(0, 0, $get(w), $get(h), null, $get(c.n)),
- $rectabs(0, 0, $get(w), $get(h), null, $get(c.h)), 'Custom Info/Rate 5', tooltip, 'rate 5')
- $textbutton($get(m.l), $eval($get(m.t)+{$get(h)*1}+{$get(m.p)*1}), $get(w), $get(h),
- $rectabs(0, 0, $get(w), $get(h), null, $get(c.n)),
- $rectabs(0, 0, $get(w), $get(h), null, $get(c.h)), 'Custom Info/Rate 4', tooltip, 'rate 4')
- $textbutton($get(m.l), $eval($get(m.t)+{$get(h)*2}+{$get(m.p)*2}), $get(w), $get(h),
- $rectabs(0, 0, $get(w), $get(h), null, $get(c.n)),
- $rectabs(0, 0, $get(w), $get(h), null, $get(c.h)), 'Custom Info/Rate 3', tooltip, 'rate 3')
- $textbutton($get(m.l), $eval($get(m.t)+{$get(h)*3}+{$get(m.p)*3}), $get(w), $get(h),
- $rectabs(0, 0, $get(w), $get(h), null, $get(c.n)),
- $rectabs(0, 0, $get(w), $get(h), null, $get(c.h)), 'Custom Info/Rate 2', tooltip, 'rate 2')
- $textbutton($get(m.l), $eval($get(m.t)+{$get(h)*4}+{$get(m.p)*4}), $get(w), $get(h),
- $rectabs(0, 0, $get(w), $get(h), null, $get(c.n)),
- $rectabs(0, 0, $get(w), $get(h), null, $get(c.h)), 'Custom Info/Rate 1', tooltip, 'rate 1')
ボタンの表示順は上から 5, 4, 3…1 と 5段階に表示しています。基本的に太字部分の変数を適切な値に変更を行う事によって動作します。$textbutton() のパラメーター command はメニューを呼び出していますが、これも適切な値に変更します
ボタンの並び順は縦方向ですが、$textbutton() や $rectabs() の座標パラメーターを変更する事で横方向にボタンを描画させる事もできます
Panels UI 0.14.12 のマニュアルメモです。公式マニュアルの体裁を維持しつつ Panels UI を使っている時にプレーンテキストファイルにメモとして残していたのを加えたものを加筆したモノなので公式マニュアルのローカライズ版ではありません
また Panels UI 0.14.12 を使いながら titleformat の実行結果やその時のコード、スクリーンショットなども掲載しています
なお、ここの blog の仕様上、投稿記事の容量に制限がある為、現在の所 2つの記事に分けて掲載しています。記事の続きの方にさらに続けて内容が書けるのでそちらの方に vol.2 の分を加えました。私のブログでは記事の続きを閲覧する為にクリックは必要なく、続けて表示される様にテンプレートを修正しています
※ 掲載されているスクリーンショットの内容は記事執筆者 zodiac の趣味、趣向を表すモノではありません
このリファレンスは Panels UI 特有の titleformat 機能と変数に関する情報です。ほとんどの情報が Panels UI 0.14.10 で導入された新しい構文を使用しています
色指定を異なった書式で指定します。各関数は BGR 16進数 の書式文字列を返します
パラメーター r には赤。g には緑。b には青 を 10進数表記の文字列で 0~255 の範囲内で指定します。RGB 形式でパラーメーターで指定された色を返します
$c(0,128,255)
$color(0,128,255)
パラメーター h には色相。s には彩度。l には輝度 を 10進数表記の文字列で指定します。HLS 形式でパラーメーターで指定された色を返します
$h(359,359,255)
色相、彩度、輝度で指定する値に統一性が見られない理由からなのか、指定する値の有効範囲に関する明示的な記述がありません。ただ、パラメーター h(色相) と s(彩度) は 0~359 が有効範囲の様です。無効な値を指定すると近似値を返す様です
パラメーター c には 16進数表記の文字列で指定します。RGB 16進数 形式でパラーメーターで指定された色を返します。HTML 記述の様に先頭の # (シャープ) は不要です
$hexcolor(00ff80)
パラメーター b の % を n% の色 a および (100-n) で色を返します
$blendcolor(10,10,5)
パラメーター n で指定されたシステムで定義されている色を返します。n は 0~30 の整数値を指定します。n の値の記述については msdn または下記テーブルを参照してください
値 | 意味 |
---|---|
21 | 3D オブジェクトの暗い影の色 |
15 | 3D オブジェクトの表面色と、ダイアログボックスの背景色 |
20 | 3D オブジェクトの最も明るい色(光源に面した辺) |
22 | 3D オブジェクトの明るい色(光源に面した辺) |
16 | 3D オブジェクトの影の色(光源に面していない辺) |
10 | アクティブウィンドウの境界の色 |
2 | アクティブウィンドウのタイトルバーの色 Windows98 と Windows2000: グラデーション効果が有効になっている場合、アクティブウィンドウのタイトルバーのグラデーションのうち、左端の色を指定します |
12 | マルチドキュメントインターフェイス(MDI) アプリケーションの背景色 |
1 | デスクトップの色 |
18 | プッシュボタンのテキストの色 |
9 | タイトルバー、サイズボックス、スクロールバーの矢印ボックス内のテキスト |
27 | Windows98, Windows2000: アクティブウィンドウのタイトルバーのグラデーションのうち、右端の色を指定します |
28 | Windows98 と Windows2000: 非アクティブウィンドウのタイトルバーのグラデーションのうち、右端の色を指定します |
17 | 淡色状態(無効状態) のテキストの色。現在のディスプレイドライバが純色(ベタ色) の淡色(灰色) をサポートしていない場合、この色は 0 に設定されます |
13 | コントロール内で選択されている項目の色 |
14 | コントロール内で選択されている項目のテキストの色 |
26 | ホットトラッキング項目の色 |
11 | 非アクティブウィンドウの境界の色 |
3 | 非アクティブウィンドウのタイトルバーのテキストの色 Windows98, Windows2000: グラデーション効果が有効になっている場合、非アクティブウィンドウのタイトルバーのグラデーションのうち、左端の色を指定します |
19 | 非アクティブウィンドウのタイトルバーのテキストの色 |
24 | ツールチップコントロールの背景色 |
23 | ツールチップコントロールのテキストの色 |
4 | メニューの背景色 |
7 | メニュー内のテキストの色 |
0 | スクロールバーの軸の色 |
5 | ウィンドウの背景色 |
6 | ウィンドウの枠の色 |
8 | ウィンドウ内のテキストの色 |
文字配置を全てリセットします。この関数は以下の例と同様です
$alignabs(0,0)$align(left,top)
$rectabs(0,0,0,0,$c(220,220,220),null)
$align(right,bottom)$textcolor(0-128-255)これは右下に表示される foobar2000
$alignabs()$textcolor(0-0-255)これは左上に表示される foobar2000
上記のサンプルコードでは 1行目では描画領域全体を塗りつぶし、2行目で右下に文字列を表示し、3行目にて $alignabs() で文字配置を全てリセットし、文字列表示を行っています
文字描画開始位置を指定します。パラメーター x には横座標、y には縦の座標を整数値、画素単位で指定します
パラメーター
$alignabs(,10)$textcolor(0-128-255)foobar2000
$alignabs(10,)$textcolor(255-0-128)foobar2000$textcolor(0-255-0)foobar2000
$alignabs(20,20)$textcolor(0-0-255)foobar2000
サンプルコードと実行結果の画像から解るようにパラメーターを省略すると 0 と解釈されるようです
文字列の描画を行う矩形を設定します
パラメーター
$alignabs(10, 10, $sub(%_width%,20), $sub(%_height%,20) )
$textcolor(0-128-255)1-foobar2000
$alignabs(10, 10, $sub(%_width%,20), $sub(%_height%,20), right, )
$textcolor(0-64-255)2-foobar2000
$alignabs(10, 10, $sub(%_width%,20), $sub(%_height%,20), , bottom )
$textcolor(0-0-255)3-foobar2000
$alignabs(10, 10, $sub(%_width%,20), $sub(%_height%,20), center, middle )
$textcolor(255-0-128)4-foobar2000
パラメーターを省略するには , (カンマ) を記述する必要があるようです。また w, h に 0 を指定すると、幅と高さが最大になるようです
水平および垂直方向の文字列の配置方法を指定します
パラメーター
$alignabs(0,0,0,0)$textcolor(0-128-255)
$align(,middle)foobar2000
$align(right,)foobar2000
パラメーターを省略するには , (カンマ) を記述する必要があるようです。2~3行目のコードの結果から解るようにそれぞれ left, top に設定されるようです
現在の行の高さパラメーター n を整数値、画素単位で指定します
$lineheight(18)
foobar2000$char(10)
こんにちわ$char(10)
$lineheight()
foobar2000$char(10)
こんにちわ$char(10)
パラメーターを省略したり、無効な値を指定するとリセットされるようです
現在の行の幅で表示しきれない文字列は次の行に折り返されます。$char(10) を出力することによってこの設定を解除できます
哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位
$char(10)
$char(10)
$wordwrap()哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位
表示しきれない文字列は末尾が ... (3つのピリオド) に置き換わります
パラメーター n で指定した分だけ整数値、画素単位にて字下げを行います
foo$tabx(20)bar$tabx(60)2000$char(10)
hello$tabx(20)world$tabx(60)!!$char(10)
パラーメーター n が画素単位だと言う事に注意。タブコード $char(9) を出力する訳ではない
現在の短径領域の幅を返します
$alignabs(10,10,$sub(%_width%,20),$sub(%_height%,20),left,top)
'%_width%' : $tabx(60)%_width%$char(10)
'$width()' : $tabx(60)$width()$char(10)
'%_height%' : $tabx(60)%_height%$char(10)
'$height()' : $tabx(60)$height()
右の実行結果画像からも解るように機能していないようです。戻り値が %_width% よりも小さい値が返ってくるはずなんですが…
現在の短径領域の高さを返します
サンプルコードと実行結果は $width() を参照してください
これも、どうやら機能していないようです。戻り値が %_height% よりも小さい値が返ってくるはずなんですが…
フォントの外観を設定します
パラメーター
bold と thin オプションは排他的なものなので同時に指定すると表示がおかしくなります
注釈
Panels UI の設定画面の Effects ボタンを押す事によって、上記オプションをプレビューで確認しながら GUI で操作できるプレビューダイアログが表示されます。このダイアログ最下部に確定した $font() 関数のパラメーターが記述されているので、これをクリップボードにコピーし、元の Panels UI の設定ダイアログ上にペーストして使用できます
$font(Tahoma,30,bold,italic,strikeout,underline)札幌は$char(10)
$font(Tahoma,30,textalpha,128,alpha,128,
radius,2,iterations,1,offset,5,glow,3,effectcolor,$c(0,0,255))雪が積もってる
上記のコードを実行すると右の画像の様な結果になります
文字にパラメーター n を整数値、画素単位で指定された分加えます。$addcharspace() は各文字の間を n 画素分追加、削除します
foobar2000だもん$char(10)
$addcharspace(5)foobar2000だもん$char(10)
foobar2000だもん$char(10)
$addcharspace(-1)foobar2000だもん$char(10)
$addcharspace(0)foobar2000だもん
設定を解除するには明示的にパラメーターに 0 を指定する必要があるようです。追加、削除される間隔は文字の右側です
文字をパラメーター n を整数値で指定された幅に設定します
foobar2000だもん$char(10)
$fixedwidth(5)foobar2000だもん$char(10)
$fixedwidth(-1)foobar2000だもん$char(10)
$fixedwidth(10)foobar2000だもん$char(10)
$fixedwidth(0)foobar2000だもん
設定を解除するには明示的にパラメーターに 0 を指定する必要があるようです
文字の色を BGR 16進数文字列パラメーター c によって設定します
サンプル
例1: 下記の例では文字が赤くなります
$textcolor($hexcolor(ff0000))
例2: 下記の例でも文字が赤くなります
$textcolor(255,0,0)
と、公式マニュアルでは記述されていますが、上記の2つの例は $newsyntax() 関数で新書式対応にしていないと動作しません。旧書式で上記の例と同じようにするには以下の様に記述します
$textcolor(255-0-0)
$textcolor($hexcolor(ff0000))foobar2000だもん$char(10)
$textcolor(255,0,128)foobar2000だもん$char(10)
$newsyntax()
$textcolor($hexcolor(ff0000))foobar2000だもん$char(10)
$textcolor(255,0,128)foobar2000だもん
$newsyntax() を行っていないと新書式では動作しないので注意。$newsyntax() を行いたくない場合は旧書式でパラメーターを記述する必要があります
パラメーター text のキャピタライズによってフォントを切り替えます。その際、同時に $textcolor() 等で色指定も可能です
$smallcaps(
$font(Tahoma,14,bold)$textcolor(0-128-255),
$font(Tahoma,12)$textcolor(255-0-128),
fooBar2000$char(10)
)
$smallcaps(
$font(Tahoma,14,bold)$textcolor(0-128-255),
$font(Tahoma,12)$textcolor(255-0-128),
FooフーバーBar
)
サンプルコードの実行結果からも解るようにマルチバイト文字は小文字扱いの様です。また、パラメーター text は大文字に変換されるようです
この関数でサポートされる画像ファイルフォーマットは PNG, BMP, GIF, JPEG, ICO の 5種類
パラメーター
n | 意味 |
---|---|
1 | 時計廻りに 90°回転 |
2 | 時計廻りに 180°回転 |
3 | 時計廻りに 270°回転 |
4 | 左右反転 |
5 | 時計廻りに 90°回転し、左右反転 |
6 | 上下反転 |
7 | 時計廻りに 90°回転し、上下反転 |
n/a | 左右 反転 | 上下 反転 | 左右 上下 反転 | n/a |
時計廻りに 90°回転 | 5 | 7 | 3 | 1 |
時計廻りに 180°回転 | 6 | 4 | 0 | 2 |
時計廻りに 270°回転 | 7 | 5 | 1 | 3 |
n/a | 4 | 6 | 2 | 0 |
右の基準となる画像を元にパラメーターの関係を表したサンプルコードと結果画像を以下に示します
resize,w,h パラメーターと clip,x,y,w,h パラメーターとの関係
$imageabs(0,$sub(%_height%,225),/i\imageabs_sample.png)
$imageabs($sub(%_width%,150),0,/i\imageabs_sample.png,resize,150,113)
$imageabs(10,10,/i\imageabs_sample.png,clip,55,84,33,28,resize,150,113)
rotateflip,n パラメーターと clip,x,y,w,h パラメーターとの関係
$imageabs(0,0,/i\imageabs_sample.png,rotateflip,1)
$imageabs($sub(%_height%,70),0,/i\imageabs_sample.png,
rotateflip,1,clip,130,200,70,70)
resize,w,h パラメーターによる拡大処理
$imageabs(-90,0,/i\imageabs_sample.png,nokeepaspect,resize,400,300)
元画像より大きなサイズでリサイズを行うには nokeepaspect を指定しなければなりません
以上の結果から $imageabs() における同時指定パラメーターの優先順位は以下の順です
矩形を描画します。元の関数名は $drawrect() です
パラメーター
$rectabs(0,0,%_width%,%_height%,$c(0,128,255),null)
$imageabs(0,25,/i\10028807.jpg,resize,200,150)
$rectabs(30,30,$sub(%_width%,60),$sub(%_height%,60),null,$c(0,0,255))
$rectabs(50,50,$sub(%_width%,100),$sub(%_height%,100),
$c(255,128,255),$c(255,128,255),alpha,128)
Persistent Variable (略して PVARS) これらの変数の定義、取得関数は foobar2000 が起動している間、値を保つ変数です。Panels UI 自身、Track Display, Single Column Playlist, Library Filter の titleformat 中で共通して使用できます
コード | 結果 |
$getpvar(foo,bar) | [unknown pvar] |
$setpvar(foo,bar) | |
$getpvar(foo) | bar |
$getpvar(Foo) | bar |
$setpvar(foo,2000) | |
$getpvar(foo) | 2000 |
foobar2000 の変数操作関数 $put(), $puts(), $get() を使用して PVARS にアクセスすることができない事に注意
最後にパラメーター name に格納された PVARS の値を返します。指定された変数が未定義であった場合 '[unknown pvar]' 文字列を返します
$select( $getpvar(display),
シナリオ1,
シナリオ2,
シナリオ3
)
display 変数の値がそれぞれ 1, 2, 3 であった場合、それぞれの値に対応して シナリオ1、シナリオ2、シナリオ3 を実行します
パラメーター name で指定された変数に value を格納します
$setpvar(display,2)
PVARS 変数名 display に 値 2 を格納します
// Background
$if($strcmp($getpvar(display),'[unknown pvar]'),
$setpvar(display,1)
)
文字列パラメーター s の高さの画素数を返します
文字列パラメーター s の幅の画素数を返します
expression を評価してその結果を返します。整数値ではないオペランドが指定された場合は 0 に変換されます。エラーの場合 -1 を返します
パラメーター
演算子 | 意味 | 優先順位 |
{ } | { } 内の式を結合 | 1 |
* | 乗算 | 2 |
/ | 除算 | 2 |
@ | 剰余 | 2 |
+ | 加算 | 3 |
- | 減算 | 3 |
$eval(100/4@7+{5+3}*3)
上記の結果は 28 となります。式の結合規則は左から右の様です
パラメーター file で指定されたファイルが存在すれば 真(true) を、そうでなければ 偽(false) を返します
$if($fileexists(%foobar_path%foobar2000.exe),'あるよ','ないね')
この関数は戻り値が 真/偽(boolean) を返すので $if() などを使う必要があります。file にはワイルドカード (*, ?) も使用できます
パラメーター name で指定されたフォントが存在すれば 真(true) を、そうでなければ 偽(false) を返します
$if($fontexists(MS ゴシック),'ある','ない')
この関数は戻り値が 真/偽(boolean) を返すので $if() などを使う必要があります。大文字、小文字の区別はしていないようですが、それ以外は厳密にチェックしている様です
バージョン 0.14.10 以前の推奨されない関数、構文の処理をパスします。その結果、新しい関数と構文の完全な利用を可能にします。推奨されない関数、構文は認識されなくなります
注釈
// Global 再描画セクションの中でこの関数を使用しなければなりません
現在、この関数を使用して影響を受ける関数を以下に示します
下記の例は $newsyntax() を使用しなかった場合の記述例です。$textcolor(c) は旧書式しか受け付けません
$textcolor(0-128-255)
$newsyntax() を使用した場合には以下の様に記述しなければなりません
$textcolor(0,128,255)
上記、5つの関数は下記で記述している動作の様に受ける影響が同じです
$alignabs(0,0,%_width%,%_height%,left,top)
$rectabs(0,0,%_width%,%_height%,null,$c(0,128,255))
$imageabs(50,50,/i\10028807.jpg,resize,100,75)
$rectabs(50,50,100,75,null,$c(255,0,128))
$alignabs(10,10,$eval(%_width%-20),$eval(%_height%-20),right,bottom)
$rectabs(0,0,$eval(%_width%-20),$eval(%_height%-20),null,$c(0,0,255))
$imageabs(50,50,/i\10028807.jpg,resize,100,75)
$rectabs(50,50,100,75,null,$c(255,128,0))
$font(Tahoma,20)$textcolor(0,64,220)sample
この例からも解るように $newsyntax() を使用すると、$alignabs(x,y,w,h,[h-align,v-align]), $imageabs(x,y,filename[,options]), $rectabs(x,y,w,h[,brush color,pen color,options]), $imagebutton(x,y,image,hover image,command[,options]), $textbutton(x,y,w,h,text,hover text,command[,options]) の 5つの関数のパラメーター x,y はパネル全体からの座標ではなく、最後に使用した $alignabs(x,y,w,h,[h-align,v-align]) からの相対座標となります。サンプルコードの 7~9行目の座標パラメーターでそれが解ります
現在のパネルの高さが画素単位で格納されています
現在のパネルの幅が画素単位で格納されています
foobar2000 がインストールされているディレクトリが完全なパス名で格納されています。末尾に \ (バックスラッシュまたは円記号)が付いています
$glass() 関数がサポートされていれば 真(true) を、そうでなければ 偽(false) が格納されいます
現在のプレイリスト名が格納されています
現在のソートグループのプリセット名が格納されています
ソートグループプリセット数が格納されています
トラックディスプレイ (Track Display) だけで使用できる titleformat です。User Interface Module を Panels UI にした場合の foobar2000 メインウィンドウはこのトラックディスプレイとなります
titleformat スクリプトを効率的に動作させる為に再描画のタイミングを各セクションによって分類しています。それぞれのセクションはトラックディスプレイパネルに一度だけ宣言します。セクションの開始を表す構文は厳密に評価されます
このセクションでは変数の定義を行うのに最適です
パネルの背景画像、塗りつぶしなど一度だけ実行するようなコードを定義するのに最適です
トラックが動的に変化する場合にこのセクションにコードを定義するのが最適です。%album%, %artist% またはボタンなど
秒単位で動的に変化する値を再描画するのにこのセクションにコードを定義するのが最適です。%playback_time% やシークバーなど
// Global
$if($meta_test(album artist),
$puts(album_is_va,1)
)
$puts(fontStyle,Calibri,20,bold)
// Background
$imageabs(0,0,/images\background.png)
// PerTrack
Current song information: %artist% - %title%
$imagebutton(20,20,
/images\play.png,
/images\play_hover.png,
'Play or Pause')
// PerSecond
$font($get(fontStyle))
%playback_time%
ボタンは様々な機能を実行させる事ができるクリック可能なホットスポットを生成します。これらは masstagger スクリプト、metatag の値、メインメニューコマンド、コンテキストメニューコマンドなどを含む様々な foobar2000 の操作、変数の操作、ボタン特定のコマンド実行、および操作を含んでいます。ボタン関係の関数は // PerTrack 再描画セクションに定義しなければなりません
イメージベースのボタンを描画します
パラメーター
$imagebutton(5,10,
/images\rating_star.png, /images\rating_star_hover.png,
TAG:SET:rating:5,
tooltip,,
hotspot,0,0,25,25,
)
座標 x,y に 5,10 を指定し、通常表示とマウスカーソルを重ねた時の表示イメージファイル名 image,hover image を指定。ボタンが押された時の動作 command は rating というタグに値 5 を設定するように指定。ツールチップテキスト tooltip,text は非表示にし、クリック可能な領域 hotspot,x,y,w,h を 0,0,25,25 に指定
$imagebutton(0,0,
/images\resize.png, /images\resize_hover.png,
WINDOWSIZE:400:500:LEFT:TOP,
tooltip,'Resize window'
)
座標 x,y に 0,0 を指定し、通常表示とマウスカーソルを重ねた時の表示イメージファイル名 image,hover image を指定。ボタンが押された時の動作 command は ウィンドウサイズ WINDOWSIZE:width:height[:h-anchor:v-anchor] を左上を基点にして幅400 高さ400 にリサイズするように指定。ツールチップテキスト tooltip に Resize Window というテキスト text を指定しています
テキスト(文字列) ベースのボタンを描画します。$textbutton(x,y,w,h,text,hover text,command[,options]) は $imagebutton() と同じコマンドとオプションを使用します。コマンドとオプションパラメーターについては $imagebutton() を参照してください
パラメーター
$textbutton(0,0,150,14,
Click for preferences,
$textcolor(0-0-255)Click for preferences,
Preferences
)
座標 x,y を 0,0 を指定し、幅、高さはそれぞれ w,h 150, 14 に指定。通常表示テキスト text を Click for preferences に指定し、マウスカーソルを重ねた時のテキスト hover text を青色で表示するように指定。ボタンが押された時の動作 command は foobar2000 の設定画面を表示するように指定しています
Windows Vista Aero Glass のマージンを広げます。left, top, right, bottom が画素単位で指定する整数値パラメーターです。例えば $glass(0,0,0,100) とすると、下部の Vista Aero Glass マージンを広げます
パラメーター s で指定された文字列をメインウィンドウタイトルに設定します
パラメーター s で指定された文字列をタスクトレイアイコンテキストに設定します
foobar2000 ウィンドウスタイルを設定します。$windowstyle(option[,option]) は // Background 再描画セクションに記述しなければなりません
パラメーター
現在のパネルにコンポーネント(パネルとも言う) を追加します。パネルには Track Display の様に互いに重ね合わせる事が可能です。特定のパネルは常に再描画されるものがあります
パラメーター
$panel(MyPanel,Peakmeter,0,0,100,500)
と、上記の様に公式マニュアルには記載されていますが、これでは機能しないので下記の様にする必要があります
$panel(MyPanel,Peakmeter,0,0,100,500,)
パラメーター n で指定されたソートグループプリセット名称を返します
Track Display での現在のトラック情報に関する現在のモードが格納されています。格納されている文字列は Now Playing か Follow cursor です
"%_trackinfo_mode%"$char(10)
"%_trackinfo_notrack%"$char(10)
Panels UI 0.14.12 で Track Display のモードを Now Playing の状態で、再生している曲を停止すると変数の後ろにゴミ(?) が付いているのが解ると思います
Track Display のモードが Now Playing の場合に、トラック情報が格納されていない場合には 真(true) を、そうでなければ 偽(false) が格納されています
$if($strcmp($left(%_trackinfo_mode%,3),'Now'),
'%'_trackinfo_mode'%' is Now playing,
'%'_trackinfo_mode'%' is Follow cusor
)
$char(10)
$if($strcmp($left(%_trackinfo_notrack%,1),1),
'%'_trackinfo_notrack'%' is true,
'%'_trackinfo_notrack'%' is false
)
これらの変数と関数は Single Column Playlist 特有の titleformat です
グループにおける field の合計値を返します
グループにおける field の合計値を返します
以上で Panels UI Commands reference は終了です。できる限り正確な情報を掲載したつもりでしたが、如何でしたでしょうか?
日付 | 内容 |
2008/07/03 (木) | スタイルシートの改修に沿って修正 |
2008/02/03 (日) | 章番号が思いっきり間違ってました…('A`) |
2008/02/01 (金) | なんかリンクのパラグラフ指定がまぬけなのを修正('A`) |
foobar2000 を 0.9.5 にバージョンアップしました。バージョンアップは 0.9.4.5 をインストールしていたディレクトリをバックアップして、上書きインストールで完了。致命的な問題もなく起動、動作を確認
で、ついでに以前から行おうと思っていた Panels UI を 0.13.8 から 0.14.12 へのバージョンアップも行いました。0.13.8 と 0.14.12 ではマニュアルが別に用意されているぐらいかなり変更がされているので、0.14.12 をベースに試しに作ってみました。0.13.8 での関数名、パラメーター書式は一応使えますが、一部で動作がオカシイ所があるかもしれないので、関数名、パラメーター書式を 0.14.12 のマニュアルを参照しつつ、作っていきました
作っていて気付いた 0.13.8 との相違点
スクリーンショットの画像は新しくした foobar2000 と Panels UI で試しに作った UI です。インストール、設定方法などは中の HTML 形式の readme を読んでください
こっそりと更新しました…
※曲目や背景画像の内容は Panels UI 0.14.12 を試す為のリソースであり、foobar2000 や Panels UI 等と関係するものではありません('A`)