// スライダーサンプル //--------------------------2004.12.26 新瀬 進(http://www.os.rim.or.jp/~furu/) var opt = null; // メイン===================================================================== opt = loadPreference( initPreference() ); var selectDir = new createBuilderDialog(opt); initializeBuilder(selectDir, opt); if(runBuilder(selectDir)){ changePreference(selectDir, opt); savePreference(opt); runProcessing(opt); } selectDir = null; opt = null; // =========================================================================== // =========================================================================== // パラメータ(初期設定)===================================================== function initPreference(){ var configPath = "~\\Photoshop Scripting Temp"; var configFolder = new Folder(configPath); if(!configFolder.exists){ configFolder.create(); } var prefer = new Array(); prefer["cfg"] = configPath + "\\slider.cfg"; prefer["left"] = "0"; prefer["top"] = "0"; prefer["center"] = "true"; prefer["max"] = "100"; prefer["min"] = "0"; prefer["value"] = "0"; return prefer; } // =========================================================================== // ダイアログ(デザイン作成)================================================= function createBuilderDialog(prefer){ var x = Number(prefer["left"]); var y = Number(prefer["top"]); var val = Number(prefer["value"]); var max = Number(prefer["max"]); var min = Number(prefer["min"]); var dlg = new Window('dialog', 'スライダー',[x,y,x+400,y+106]); dlg.pnl = dlg.add('panel', [16,8,384,50], '値を決定してください'); dlg.pnl.sld = dlg.pnl.add('slider',[16,16,320,36], 0, min, max); dlg.pnl.sld.value = val; dlg.pnl.vtext = dlg.pnl.add('edittext',[320,16,352,36], val); dlg.cancelBtn = dlg.add('button',[200,66,284,90], 'キャンセル', {name:'cancel'}); dlg.buildBtn = dlg.add('button',[300,66,384,90], '実行',{name:'ok'}); if(prefer["center"] == "true"){ dlg.center(); } return dlg; } // ダイアログ(ボタンを押したときなどの動作設定)============================= function initializeBuilder(builder, prefer){ with(builder){ pnl.sld.onChange = function(){ this.value = Math.round(this.value); this.parent.vtext.text = this.value; }; pnl.vtext.onChange = function(){ this.text = this.text > Number(prefer["max"]) ? prefer["max"] : this.text; this.text = this.text < Number(prefer["min"]) ? prefer["min"] : this.text; this.parent.sld.value = this.text; cancelBtn.active = true; buildBtn.active = true; cancelBtn.active = false; buildBtn.active = false; }; cancelBtn.onClick = function(){ this.parent.close( false ); }; buildBtn.onClick = function(){ this.parent.close( true ); }; } } // ダイアログ(起動・実行)=================================================== function runBuilder(builder){ return builder.show(); } // =========================================================================== // パラメータ(変更)========================================================= function changePreference(builder, prefer){ prefer["left"] = builder.bounds.left; prefer["top"] = builder.bounds.top; prefer["center"] = "false"; prefer["value"] = builder.pnl.vtext.text; } // パラメータ(ロード)======================================================= function loadPreference(prefer){ var str,preStr; var preferFile = new File(prefer["cfg"]); preferFile.open("r"); while(true){ str = preferFile.readln(); if(preferFile.eof){ break; } preStr = str.split('='); prefer[preStr[0]] = preStr[1]; } preferFile.close(); return prefer; } // パラメータ(セーブ)======================================================= function savePreference(prefer){ var key; var preferFile = new File(prefer["cfg"]); preferFile.open("w"); for(key in prefer){ preferFile.writeln( key + "=" + prefer[key]); } } // =========================================================================== // 実行したい処理============================================================= function runProcessing(prefer){ alert(prefer["value"]); }