Botton в диалоге

  • Автор темы Автор темы Agent007
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Agent007

Участник
Топикстартер
Сообщения
17
Реакции
0
Добрый день подскажите как можно добавить кнопку в диалог на jsx, хелп не помог, задача такая, сделать кнопку которая будет открывать openDialog
 
Ответ: Botton в диалоге

Потому что делать надо не в Dialog, а в Window.
Вот пример из SDK:
PHP:
//ButtonBar.jsx
//An InDesign CS3 JavaScript
//
//Provides a button bar for launching InDesign scripts.
//Demonstrates ScriptUI palette, XML reading/writing, app.doScript() method.
//Or that's the idea right now.
//
//Add the button bar to the application session.
var myButtonBar;
main();
function main(){
	myButtonBar = myCreateButtonBar();
	myButtonBar.show();
}
function myCreateButtonBar(){
	var myButtonName, myButtonFileName, myButtonType, myButtonIconFile, myButton;
	var myButtons = myReadXMLPreferences();
	if(myButtons != ""){
		myButtonBar = new Window('window', 'Script Buttons', undefined, {maximizeButton:false, minimizeButton:false});
		with(myButtonBar){
			spacing = 0;
			margins = [0,0,0,0];
			with(add('group')){
				spacing = 2;
				orientation = 'row';
				for(var myCounter = 0; myCounter < myButtons.length(); myCounter++){
					myButtonName = myButtons[myCounter].xpath("buttonName");
					myButtonType = myButtons[myCounter].xpath("buttonType");
					myButtonFileName = myButtons[myCounter].xpath("buttonFileName");
					myButtonIconFile = myButtons[myCounter].xpath("buttonIconFile");
					if(myButtonType == "text"){
						myButton = add('button', undefined, myButtonName);
					}
					else{
						//myButton = add('iconbutton', undefined, File(myButtonIconFile));
					}
					myButton.scriptFile = myButtonFileName;
					myButton.onClick = function(){
						myButtonFile = File(this.scriptFile)
						app.doScript(myButtonFile);
					}
				}
			}
		}
	}
	return myButtonBar;
}
function myReadXMLPreferences(){
	myXMLFile = File.openDialog("Choose the file containing your button bar defaults");
	var myResult = myXMLFile.open("r", undefined, undefined);
	var myButtons = "";
	if(myResult == true){
		var myXMLDefaults = myXMLFile.read();
		myXMLFile.close();
		var myXMLDefaults = new XML(myXMLDefaults);
		var myButtons = myXMLDefaults.xpath("/buttons/button");
	}
	return myButtons;
}
function myDisplayDialog(myButtonArray){
	var myDialog = app.dialogs.add({name: "Button Bar Builder"});
	with(myDialog.dialogColumns.add()){
	}
	var myResult = myDialog.show();
	if(myResult == true){
	}
	else{
	
	}
}
function myReadDefaults(){
}
function myWriteDefaults(){
}
 
Ответ: Botton в диалоге

Этот пример я видел, может я просто не понимаю, он работает в ExtendedScript в Ид не работает, или это для создания плагинов? Объясните пожалуйста. Ведь к примеру у алерта есть кнопка, я так понимаю что она не скриптом описываеться а из винды идет, так вот можно же добавить еще одну?
 
Ответ: Botton в диалоге

Agent007 сказал(а):
Ведь к примеру у алерта есть кнопка, я так понимаю что она не скриптом описываеться а из винды идет, так вот можно же добавить еще одну?

Ну я об этом не задумывался, но если для вывода алерта действительно используется функция WinAPI то тогда добавить туда ничего не получится. Надо использовать другую функцию, которая выводит окно с другим набором кнопок. Это тупиковый путь.
 
Ответ: Botton в диалоге

Видимо другого способа нет, придеться заменять кнопку на textEditboxes
 
Ответ: Botton в диалоге

И еще глупый вопрос))
Есть кусок кода
Код:
myStyles = myDoc.paragraphStyles;
myStylesFind = myDoc.paragraphStyles;
myStyleIndex = myDialogParagraphStyle.selectedIndex;
myStyleIndexFind = myDialogParagraphStyle.selectedIndex;
app.findGrepPreferences.appliedParagraphStyle	= myStylesFind[myStyleIndexFind]
app.findGrepPreferences.findWhat	= myString
changeGrepPreferences.appliedParagraphStyle = myStyles[myStyleIndex];
проблема в том что он в замену подставляет стиль тот который ищет, скажите пожалуйста где ошибка?
 
Ответ: Botton в диалоге

Потому что порядковый номер стиля и для поиска и для замены у вас одинков. Сравните:
PHP:
myDialogParagraphStyle.selectedIndex; //myStyleIndex
myDialogParagraphStyle.selectedIndex; //myStyleIndexFind
И совершенно незачем создавать два массива со стилями документа. Вторая строчка в вашем примере лишняя.
 
Ответ: Botton в диалоге

ведь к примеру у алерта есть кнопка, я так понимаю что она не скриптом описываеться а из винды идет
С какого перепугу из винды? Ее интерпретатор JS создает.
это для создания плагинов
Это скрипт.

Создаете объект Window, создаете в нем объект Panel (или Group, как в примере), создаете на панели (или в группе) Button, описываете его реакцию, скажем, на onClick(). Что непонятно тут?

И к вопросам своим аккуратнее. Приходится раз по десять прочитать, чтобы понять, чего имелось в виду.
 
Статус
Закрыто для дальнейших ответов.