// ファイル選択ダイアログサンプル //--------------------------2004.12.26 新瀬 進(http://www.os.rim.or.jp/~furu/) var strtCurrentDir = Folder.current.fsName.toString(); var opt = null; var fileList = "全てのファイル形式:*,画像ファイル:*.bmp;*.tif;*.tga, テキスト文書:*.txt;*.cfg;*.ini"; // メイン===================================================================== opt = loadPreference( initPreference() ); var selectFile = new createBuilderDialog(opt); initializeBuilder(selectFile); if(runBuilder(selectFile)){ changePreference(selectFile, opt); savePreference(opt); runProcessing(opt); } Folder.current = strtCurrentDir; selectFile = null; fileList = 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 + "\\fileselect.cfg"; prefer["left"] = "0"; prefer["top"] = "0"; prefer["center"] = "true"; prefer["file"] = ""; return prefer; } // =========================================================================== // ダイアログ(デザイン作成)================================================= function createBuilderDialog(prefer){ var x = Number(prefer["left"]); var y = Number(prefer["top"]); var dlg = new Window('dialog', 'ファイル選択ダイアログ',[x,y,x+400,y+106]); dlg.title = dlg.add('statictext', [16,16,384,32], 'ファイルを指定してください'); dlg.source = dlg.add('edittext',[16,32,330,50], prefer["file"]); dlg.browseBtn = dlg.add('button',[330,32,384,50], '参照'); 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){ with(builder){ browseBtn.onClick = function(){ this.parent.active = false; this.parent.enabled = false; if(source.text){ Folder.current = source.text.replace(/\\[^\\]+$/, ''); } var selFile = File.openDialog( "ファイル選択", fileList ); this.parent.enabled = true; this.parent.active = true; if ( selFile != null ) { source.text = selFile.fsName.toString(); } } 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["file"] = builder.source.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["file"]); }