2012.02.01

Ginnie ユーザードッキングウィンドウのイベントの発生順

フロート ドッキング左 ドッキング右 ドッキング下
起動 onInitialize onInitialize
onResize
onDockChanging
onResize
onDockChanged
onResize
onResize
onResize
onInitialize
onResize
onDockChanging
onResize
onDockChanged
onResize
onInitialize
onResize
onDockChanging
onResize
onDockChanged
onResize
onResize
ドッキング→フロート onResize
onDockChanging
onResize
onDockChanged
onResize
onDockChanging
onResize
onDockChanged
onResize
onDockChanging
onResize
onResize
onResize
onDockChanged
フロート→ドッキング onResize
onDockChanging
onResize
onDockChanged
onResize
onResize
onResize
onResize
onDockChanging
onResize
onDockChanged
onResize
onResize
onDockChanging
onResize
onDockChanged
onResize
onResize
終了 onFinalize
クリック onClick
ダブルクリック onClick
onDblClick
トリプルクリック onClick
onDblClick
onClick

| | コメント (0) | トラックバック (0)

2012.01.26

拼音変換機.NET版

概要

  • C#をやってみよう!と思い立って作った物。
  • 以前作ったGinnie用JScriptの発展。
  • 拼音(声調の数字表記・符号表記)・ウェード式・注音符号を相互変換。
  • 無駄に.NET Framework 4が必要。

ダウンロード

注意

音節に区切ってから処理するので、発音記号以外が混ざっていても結構問題ない。けど単純に長い方優先で探しているだけなので、適宜隔音符号(拼音)や軽声の0(数字表記・ウェード式)、一声の符号(注音符号)を付すとそこで区切られる。
ウェード式・注音符号が絡むと全て小文字になる。いちいち全パターン用意するのはめんどくさいので。
ファイルからの読み込み・保存はついで。練習。判定も何もしてないのでUTF-8しか使えない。

| | コメント (0) | トラックバック (0)

2011.10.19

メディアクエリ

文法

メディアクエリリスト
メディアクエリを「 , 」で繋いだもの。「 , 」で区切ったブロックのどこか一つがtrueなら全体がtrueとなる。
メディアクエリ
メディアに「 and 」で式を繋いだもの。メディアだけ、式だけというのも可。先頭に「not」か「only」を付けられる。「 and 」で区切ったブロック全てがtrueなら全体がtrueとなる。
メディア特性と値を「:」で繋ぎ、「()」で括ったもの。値を省略した場合「0以外の値ならばtrueとなる状態」とされる。但し「min-/max-」が付いている場合は値を省略できない。
,論理or
メディアクエリを繋ぐ
and論理and
メディアや式を繋ぐ
not論理not
メディアクエリを否定する
only古いユーザーエージェントから隠す
min-/max-最小値/最大値
対応するメディア特性の接頭辞となる

メディア

all全タイプ
省略した場合これになる
braille点字用触覚デバイス
embossedページ付けした点字プリンタ
handheld携帯デバイス
printプリンタ
projectionプロジェクタ
screenカラーのコンピュータ画面
speech音声合成
tty固定ピッチ幅の文字グリッドのメディア
tvテレビ

メディア特性

特性意味min-/max-備考
width表示域の幅o正の実数+単位
height表示域の高さo正の実数+単位
device-width出力デバイスの幅o正の実数+単位
device-height出力デバイスの高さo正の実数+単位
orientation画面の方向xportrait:縦長か正方形
landscape:横長

aspect-ratio表示域のアスペクト比o正の整数 / 正の整数
device-aspect-ratio出力デバイスのアスペクト比o正の整数 / 正の整数
colorディスプレイの色深度o正の整数モノクロは0
color-indexディスプレイのインデックスカラーo正の整数インデックスカラーが無ければ0
monochromeモノクロデバイスのピクセルあたりビット数(bpp)o正の整数モノクロでなければ0
resolutionディスプレイの解像度odpi:dot/inch
dpcm:dot/cm

scantvメディアタイプのスキャニング方式xprogressive:プログレッシブ
interlace:インターレース

gridグリッドデバイスかビットマップデバイスかx0:ビットマップ
1:グリッド

単位

emフォントサイズ
exフォントのxの高さ
chフォントの0の幅
remルート要素のフォントサイズ
vwビューポートの幅
vhビューポートの高さ
vmビューポートの幅と高さの小さい方
cmセンチメートル
mmミリメートル
inインチ
ptポイント
pcパイカ
pxピクセル

メディアと特性の対応


brailleembossedhandheldprintprojectionscreenspeechttytv
widthooooooxoo
heightooooooxoo
device-widthooooooxoo
device-heightooooooxoo
orientationxxxoooxxo
aspect-ratioxxxoooxxo
device-aspect-ratioxxxoooxxo
colorxxooooxoo
color-indexxxooooxoo
monochromexxooooxoo
resolutionxxxoooxxo
scanxxxxxxxxo
gridooooooxoo

| | コメント (0) | トラックバック (0)

2011.09.25

Ginnie 配列からポップアップメニューを作る

前置き

ポップアップメニューは便利なんだけど、作るとなると同じ様な記述を何度も何度も繰り返さなきゃならない。それだけで何十行、そこに処理の分岐が加わり、それでいて処理自体は数行だったり、変数作ってもIDしか要らなかったりってのが何となく気に障る。そういうわけでいっそその辺を関数にして自動的に作成してしまおうという話。手を抜く為に手をかける。

ダウンロード

StructPopupMenu

仕様

PopupMenuオブジェクトの構造は簡単だから、配列に情報を入れて関数に送る。配列はこんな感じ。

argument=[MenuItem,MenuItem...]
MenuItem=[caption,id,function,[MenuItem...]]

MenuItemは子メニューとなるMenuItemオブジェクトの情報。
MenuItemのcaption・idはメニューの各項目。functionは選択した時に実行する処理。関数そのものでも文字列でもいい。4番目のMenuItemは子メニュー(つまり孫メニュー)の配列。構造は同じ。どの項目も省略可だけど、空の配列だとセパレータとみなす。

これを関数に送って実行すると、関数は次の様な配列を返す。

return=[PopupMenu,funcList]
funcList={ID:function...}

PopupMenuはPopupMenuオブジェクトそのもの。funcListはIDとそれに対応する関数からなるオブジェクト。よってreturn[0]を実行してIDを取得、そのIDでreturn[1][ID]を実行するだけでいいので、処理の分岐を書かなくて済む。

実例

例えばこんなメニューを作るとする。

20110914213032

一番上のメニューがa・bの2つ。その間にセパレータがある。aの子にc・dがあって、cの子にeがある。そしてb・d・eを選択した時にはalert()でダイアログを表示する事にする。これを普通に書けばこうなる。

var pop=App.NewObject("PopupMenu");
var a=pop.Add();
a.Caption="a";
a.Id=1;
pop.Add().Id=0;
var b=pop.Add();
b.Caption="b";
b.Id=2;
var c=a.Add();
c.Caption="c";
c.Id=3;
var d=a.Add();
d.Caption="d";
d.Id=4;
var e=c.Add();
e.Caption="e";
e.Id=5;
switch(pop.Execute()){
 case 2:
  alert("parent");
  break;
 case 4:
  alert("child");
  break;
 case 5:
  alert("grandchild");
  break;
}

これをStructPopupMenu()を使う場合、メニューは次の様な配列で表される。

[["a",1,,[["c",3,,[["e",5,"alert(grandchild)"]]],["d",4,"alert(child)"]]],[],["b",2,"alert(parent)"]]

注意が要るのは"[["e",5,"alert(grandchild)"]]"の様に、子メニューが一つだけでも配列の中に入れなければいけないという事。これを関数に送ると、

[PopupMenu,{2:'alert(parent)',4:'alert(child)',5:'alert(grandchild)'}]

という配列が返ってくるので、[0]を実行してIDを取得。[1]からそのIDをキーとするプロパティを取り出せばいい。実際のコードはこんな感じ。

var menu=[["a",1,,[["c",3,,[["e",5,"alert(grandchild)"]]],["d",4,"alert(child)"]]],[],["b",2,"alert(parent)"]];
var t=StructPopupMenu(menu);
var id=t[0].Execute();
if(id>0){eval(t[1][id]);}

最後のeval()は、処理を文字列で指定してるから。関数で指定していれば"t[1][id]()"となる。

StructPM

仕様・実例

StructPopupMenuはIDを指定する。一方こちらはIDを自動的に割り振る。パラメータでIDを渡すみたいに、外部からIDを知られなくてもいい場合にはこちらでいい。配列は殆ど同じで、ただMenuItemからidを省いただけ。返り値も同じ。

argument=[MenuItem,MenuItem...]
MenuItem=[caption,function,[MenuItem...]]
return=[PopupMenu,funcList]
funcList={ID:function...}

実際のコードも少し簡単になる。

var menu=[["a",,[["c",,[["e","alert(grandchild)"]]],["d","alert(child)"]]],[],["b","alert(parent)"]];
var t=StructPopupMenu(menu);
var id=t[0].Execute();
if(id>0){eval(t[1][id]);}

| | コメント (0) | トラックバック (0)

2011.09.23

HPの引っ越し

AAA!CAFEが終了という事で移転。忍者。

http://kimi.buzama.com/

| | コメント (0) | トラックバック (0)

«『論語』に見る「曰・云・謂・言」(2/2)