<?xml version="1.0" encoding="macintosh"?>
<widget version="1.2" minimumVersion="2.0">
<debug>off</debug>// дебаг косоль
<!--
sliv_button
Written by: _SKif_
Специально для hottabych.net
Generated by Photoshop Widget Generator Script
Copyright (C) 2004 - 2005 Pixoria, Inc. All Rights Reserved.
-->
<window title="Кнопка слива"> // название окна
<name>mainWindow</name> // имя окна
<width>449</width> // его ширина
<height>435</height> // высота
<visible>1</visible> // видимость
<shadow>0</shadow> // тень
<onFirstDisplay> // то что между этими тегами выполняется при первом запуске виджета
mainWindow.locked = true; // запретить перетаскивание виджета
mainWindow.level = "desktop" // его уровень - можно потом поменять в настройках
// так как виджет делался из большой картинки 1600х1200 - это подгонит его размеры к разрешению пользователя
mainWindow.width = screen.width/1600*mainWindow.width;
mainWindow.height= screen.height/1200*mainWindow.height;
// то же самое для картинки backgr и button
backgr.width = screen.width/1600*backgr.width;
backgr.height= screen.height/1200*backgr.height;
button.width = screen.width/1600*button.width;
button.height= screen.height/1200*button.height;
// центрирование окна
mainWindow.hOffset = screen.width/2-mainWindow.width/2;
mainWindow.vOffset = screen.height/2-mainWindow.height/2;
// центрирование кнопки в окне
button.hOffset = mainWindow.width/2-button.width/2;
button.vOffset = mainWindow.height/2-button.height/2;
// Первоначальные настройки
alert("Настройте ваше соединение");
showWidgetPreferences();// показывает окно настроек виджета
</onFirstDisplay>
</window>
// здесь мы встречаем нечто новое, о именно тэги, описывающие добавление новых настроек виджету
<preferenceGroup name="prefsDial" // создаем новую группу настроек с именем prefsDiad для настроек соединения
title="Настройки соединения"/>
<preference name="prefNameConnection" // создаем настройку имени соединения
group="prefsDial" // в только что созданной группе prefsDial
type="text" // ее тип - текстовое поле
style="open"
title="Введите имя соединения"
/>
// все также
<preference name="prefUser"
group="prefsDial"
type="text"
style="open"
title="Введите имя пользователя"
/>
<preference name="prefPass"
group="prefsDial"
type="text"
secure="yes"
title="Введите пароль"
/>
// здесь появляется новая группа "Другие настройки"
<preferenceGroup name="prefsOther"
title="Другие настройки"/>
<preference name="prefSize"// настройка размеров виджета
group="prefsOther"
style="open"
title="Размер"
defaultValue = 100 // значение по умолчанию
description = "Масштабирование виджета"
>
<type>slider</type>// ее тип - ползунок
<ticks>5</ticks> // содержит 5 меток
<tickLabel>x1</tickLabel>// а это надписи к меткам
<tickLabel>x1,5</tickLabel>
<tickLabel>x2</tickLabel>
<tickLabel>x2,5</tickLabel>
<tickLabel>x3</tickLabel>
<minLength>100</minLength> // минимальное значение
<maxLength>300</maxLength> // максимальное
</preference>
<preference name="prefShowMessage"// настройка сообщения
group="prefsOther"
style="open"
title="Показывать сообщение"
defaultValue = "0" // чекбокс принимает 2 значения 0 и 1
description = 'Определяет, будет ли показываться сообщение Соединение установлено"'
>
<type>checkbox</type> // типа чекбокс
</preference>
// все тоже самое
<preference name="prefNoSound"
group="prefsOther"
style="open"
title="НЕ использовать звуки"
defaultValue = "0"
>
<type>checkbox</type>
</preference>
<preference name="prefPlaySound"
group="prefsOther"
style="open"
title="Проигрывать стандартный звук слива"
defaultValue = "1"
>
<type>checkbox</type>
</preference>
// а вот это новое
<preference name="prefUserSound"
group="prefsOther"
style="open"
title="Проигрывать свой звук"
defaultValue = ""
description = "Выберите свой звук"
>
<type>selector</type>// тип - не знаю как по-русски, короче может открывать диалоговое окно для выбора файла
<extension>.mp3</extension>// можно задать поддерживаемые расширения
<extension>.WAV</extension>
<extension>.AIFF</extension>
<extension>.AU</extension>
<extension>.SND</extension>
</preference>
<preference name="prefCenter"
group="prefsOther"
style="open"
title="Центрировать"
defaultValue = "0"
description = "Определяет, будет ли кнопка выровнена по центру рабочего стола. Полезно для тех кто использует кнопку вместе с обоями"
>
<type>checkbox</type>
</preference>
<preference name="prefVoice"
group="prefsOther"
style="open"
title="Голосовые сообщения"
defaultValue = "0"
description = "Голос, сообщающий о коннекте/дисконнекте"
>
<type>checkbox</type>
</preference>
// теперь тэг action. Он реагирует на некоторые события, происходящие с виджетом
<action trigger="onLoad">// это например активируется при загрузке виджета
// объявляем переменную size
var size = preferences.prefSize.value/100;
// что мы сейчас сделали? Мы считали из настроек настройку prefSize (помните, чуть выше мы ее создавали?), разделили на 100 и присвоили переменной size
// так мы получаем доступ к настройке : references.имя_настройки.value
// далее устанавливаем размеры окна и его элементов
mainWindow.width = screen.width/1600*mainWindow.width*size;
mainWindow.height= screen.height/1200*mainWindow.height*size;
backgr.width = screen.width/1600*backgr.width*size;
backgr.height= screen.height/1200*backgr.height*size;
button.width = screen.width/1600*button.width*size;
button.height= screen.height/1200*button.height*size;
// центрирование кнопки в окне
button.hOffset = mainWindow.width/2-button.width/2;
button.vOffset = mainWindow.height/2-button.height/2;
if (preferences.prefCenter.value==1) {
// центрирование окна
mainWindow.hOffset = screen.width/2-mainWindow.width/2;
mainWindow.vOffset = screen.height/2-mainWindow.height/2;
}
// здесь мы проверяем, заданны ли настройки соединения - это критично, т.к. без них мы не сможем законнектиться
if (!preferences.prefNameConnection.value) alert("Введите имя соединения");// дословно: если нет значения настройки prefNameConnection то показываем алерт
if (!preferences.prefUser.value) alert("Введите имя пользователя, которое вы используете для подключения к интернету");
if (!preferences.prefPass.value) alert("Введите пароль для подключения к интернету");
// теперь к звуку
var sound = "Resources/sliv_sound.mp3";// извлекаем звук
if (preferences.prefPlaySound.value == 0) sound = preferences.prefUserSound.value;// если не стоит галочка "Проигрывать стандартный звук слива" то sound присваивается определенный пользователем звук.
// извлекаем из виджета прогу rasdial. Переменная converter теперь содержит ее адрес
converter = widget.extractFile("tools/rasdial.exe");
// надо проверить, подключен ли инет
var connected = false;// по дефолту false
// новый объект url
var url = new URL();
url.location = "https://hottabych.org";
url.fetch();// отправить запрос
if ( url.response == 200 ){ // если ответ 200 ОК
connected = true; // значит подключено
}
</action>
<action trigger="onPreferencesChanged"> // при изменении настроек
reloadWidget();// перезагрузим виджет
</action>
// уже знакомый объект image
<image src="Resources/backgr.png">
<name>backgr</name>
<hOffset>0</hOffset>
<vOffset>0</vOffset>
<width>435</width>
<height>435</height>
<opacity>100%</opacity>
</image>
<image src="Resources/button.png">
<name>button</name>
<hOffset>111</hOffset>
<vOffset>104</vOffset>
<width>224</width>
<height>225</height>
<opacity>100%</opacity>
<onMouseEnter>
button.src = "Resources/button_over.png";
</onMouseEnter>
<onMouseExit>
button.src = "Resources/button.png";
</onMouseExit>
<onMouseUp>
if (connected){
if (preferences.prefNoSound.value!=1) play(sound); // проиграть звук
// запускаем converter с переменными
runCommand('\"' + converter + '\" '+preferences.prefNameConnection.value + '\ /disconnect');
connected = false;
if (preferences.prefVoice.value==1)speak("disconnected");
// функция speak("что_сказать") проговаривает стандартным виндовским голосом что вы захотите но только по-английски
}else{
if (preferences.prefNoSound.value!=1) play(sound);
runCommand('\"' + converter + '\" '+preferences.prefNameConnection.value + '\ '+preferences.prefUser.value + '\ '+preferences.prefPass.value);
connected = true;
if (preferences.prefVoice.value==1) speak("connected");
if (preferences.prefShowMessage.value==1) alert("Соединение установлено");
}
</onMouseUp>
</image>
// описывает опцию about
<about-box>
<image>Resources/About.png</image> // его изображение
<about-text>// а это текст - ссылка
<data>Hottabych.net</data>
<url>https://hottabych.org</url>
<font>Arial</font>
<size>16</size>
<hOffset>190</hOffset>
<vOffset>168</vOffset>
<color>#fff000</color>
<shadow>
<color>#000000</color>
<hOffset>0</hOffset>
<vOffset>1</vOffset>
</shadow>
</about-text>
</about-box>
</widget> |