Здравствуйте, гость ( Вход | Регистрация )

> Плагин графического интерфейса
Cockney
сообщение 24.2.2016, 11:49
Сообщение #1


********

Master
Сообщений: 1.397
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 21339
Пользователь №: 16.156



Набросал ради развлечения небольшой плагин, позволяющий общаться с диалогами любой сложности(но пока урезаные).

Ссылка(ЯДиск, надеюсь можно) : тык или Прикрепленный файл  Release0000.zip ( 93,47 килобайт ) Кол-во скачиваний: 18089


В архиве сам плагин и файл разметки. Плагин в Плагинс, а разметку рядом с пилотом.

Саму разметку пока не документирую(будет, если время позволит), но там несложно разобрать что к чему. Удаление полей чревато исключением(пока нет проверок). Желательно заполнять все поля, однако некоторые спокойно могут быть пустыми(какие именно, укажу возможно позже).

Небольшое описание :

Каждый параметр заключается в *. Например, так : *par1*.

Параметры ЧУВСТВИТЕЛЬНЫ к регистру. Пробелы на концах обрезаются (для поддержки переменных).

Доступные типы элементов:

Form - само окно
Button - кнопка
Edit - поле ввода
Text - текст
Checkbox - флажок

Сами функции :

Код

GUI.ShowForm (<Имя формы>) //Показывает форму с именем

GUI.HideForm (<Имя формы>) //Скрывает форму с именем

GUI.ActionExist () //получение флага события. Возвращает 0 или 1

GUI.GetAcion () //получение описания события. Вернет массив 1х3 с именами
формы, компонента и описанием события.

GUI.Enable (<Тип элемента> <Имя формы> <Имя элемента> <Статус>) //включает/отключает элемент на форме. Статус принимает 0 или 1.

GUI.GetText (<Тип элемента> <Имя формы> <Имя элемента>) //вернет текст элемента.

GUI.SetText (<Тип элемента> <Имя формы> <Имя элемента> <Новый текст>) //устанавливает текст элемента


И небольшой скрипт управления :

Код

//Скрипт обслуживания оболочки
set linedelay 5
//Очистка начального сообщения(пока так)
set $a GUI.ActionExist ()
set #f 1
set logging clear
//Начинаем
while (#f = 1) //пока не прекратим
    set $act_ex GUI.ActionExist () //проверим наличие события
    if ($act_ex = 1)  //если есть событие
        set %action GUI.GetAction () //получаем это событие
        //тут обработка событий
        if (%action[1 3] = BUTTON_CLICK) //если нажата кнопка(любая)
            set logging Произошел клик на кнопке с именем %action[1 2]
        end_if
        if (%action[1 3] = BUTTON_DBL_CLICK) //если дабл.клик кнопки(любая)
            set logging Произошел двойной клик на кнопке с именем %action[1 2]
        end_if
        if (%action[1 3] = EDIT_CHANGE) //если редактируется поле ввода
            set $txt GUI.GetText (*Edit* * %action[1 1] * * %action[1 2] *)
            set logging Новый текст поля %action[1 2] : $txt
            if ($txt = stop) //если введено стоп
                set $a GUI.SetText (*Form* *Main* *Стоп!!!!*) //установка заголовка
                set linedelay 50 //побольше задержка перед выходом
                set #f 0
            end_if
            if ($txt = msg) //если введено стоп
                msg Введено msg
            end_if
        end_if
    end_if
end_while
exit
end_script


Тестировано на XP,7,8,8.1

Вроде все работает, однако могут быть проблемы.


Если понравилось, предлагайте идеи. Может что-то годное и выйдет.
-------------------------------------------------------------
Архив версий:
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
DarkMaster
сообщение 29.2.2016, 11:02
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.485
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27970
Пользователь №: 11.279



Цитата
Потом в описании плагина лучше исправить <> на **.

Спорное утверждение. <> - является стандартным обозначением обязательного параметра. ** - являются никому не понятным костылем из-за особенностей пилота. Возможно стоит ввести оба набора обозначений и/или добавить сноску.

Цитата
В поля Edit и Text уже и так можно выводить переменные.

Тем не менее есть еще паразитные рамки окон, само окно можно было бы сделать прозрачным. Все это очень легко вылазит, когда начинаешь использовать. Сейчас под те же надобности использую лог. Весь набор проблем при использовании окон по сути остается: пропадает куча места, мешает работе, нет цветовых обозначений. Даже еще один момент появляется - нет настройки размера кегля и уйдя на кухню я уже не увижу, что там на мониторе.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 29.2.2016, 18:44
Сообщение #3


********

Master
Сообщений: 1.397
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 21339
Пользователь №: 16.156



Цитата(DarkMaster @ 29.2.2016, 11:02) *

нет настройки размера кегля


это что такое?т.е. шрифт?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
Cockney   Плагин графического интерфейса   24.2.2016, 11:49
cirus   Сделай время для двойного клика побольше, а то ино...   24.2.2016, 14:22
Cockney   Время клика задаю не я, а система. Тут возможно с ...   24.2.2016, 14:31
cirus   Например в игре юзаются банки HP, MP и прочее. Ин...   24.2.2016, 15:07
Cockney   Ну тут тогда подходят чекбоксы. выбираешь, что нуж...   24.2.2016, 15:35
cirus   С флагами понятно как включить/отключить блок код...   24.2.2016, 15:45
Cockney   Теперь понял про что ты. Пока никак. Сейчас поигра...   24.2.2016, 19:20
Cockney   Апдейт. -Новые элементы : чекбоксы(Checkbox), тек...   25.2.2016, 22:52
cirus   Есть немного, галки с чекбоксов как-то вяло ставя...   26.2.2016, 3:40
Cockney   Можно систему узнать?именно процессор и ос. ------...   26.2.2016, 11:37
Cockney   А в чем проблема брать имя чекбокса из GetAction п...   26.2.2016, 11:45
cirus   Запустил утром, уже нормально галки ставятся, но о...   26.2.2016, 11:41
cirus   Можно и так. Просто с заголовком удобнее, т. к. е...   26.2.2016, 12:25
cirus   Проверил. Так и есть. Чекбоксы работают нормальн...   26.2.2016, 13:31
Cockney   Хорошо. Я уж думал мой косяк.   26.2.2016, 13:35
Cockney   По поводу чекбоксов : да, удобнее, если отображает...   26.2.2016, 19:34
Cockney   Апдейт. -Пофикшены несрабатывающие события -Добав...   26.2.2016, 19:45
DarkMaster   Ну и в целом можно коснуться старой, но все еще бо...   26.2.2016, 19:54
cirus   То что всё и так можно сделать это да. Что виж...   27.2.2016, 3:51
cirus   Двойной клик по тексту (label) копирует этот текст...   27.2.2016, 23:47
Cockney   Вроде как нет. ------- А вроде как бы и да. На ХР ...   28.2.2016, 12:35
Cockney   Есть небольшой костыль.   28.2.2016, 13:37
cirus   Я и не знал что такое есть :) Обычно текст прост...   28.2.2016, 13:51
Cockney   Я до сегодняшнего дня тоже не знал....инновации.. ...   28.2.2016, 15:04
Cockney   Апдейт. -Теперь GetAction возвращает 4 элемента: ...   28.2.2016, 17:18
cirus   Спасибо. Так намного удобнее. Да, также, если дв...   28.2.2016, 17:37
Cockney   в целом работает нормально?тормоза,баги?   28.2.2016, 17:53
cirus   Пока только тестил что и как работает. Проблем не...   28.2.2016, 18:15
Cockney   А к чему несколько то их?один плагин в теории смож...   28.2.2016, 19:02
cirus   Я имел ввиду несколько разных плагинов. Например, ...   28.2.2016, 19:05
cirus   Для Edit работает, для других элементов, вроде ка...   28.2.2016, 21:24
Cockney   для кнопки: set $a GUI.Enable (*Button* ...   28.2.2016, 21:45
cirus   Проще было бы по имени, но для начала чтобы вообщ...   28.2.2016, 22:11
Cockney   Странно, я не трогал Enable, но когда тестил он ра...   28.2.2016, 22:21
cirus   Теперь работает.   28.2.2016, 22:21
cirus   Будешь добавлять, сделай чтоб по имени тоже можно...   28.2.2016, 22:42
Cockney   если это для едита,то свойство,позволяющее вмещать...   29.2.2016, 0:37
cirus   Символ перевода строки воспринимается какой-то? Т...   29.2.2016, 10:51
Cockney   Символ перевода строки воспринимается какой-то? Т...   29.2.2016, 18:19
cirus   Для 99% людей, в том числе для меня, <> от ...   29.2.2016, 11:24
DarkMaster   Разве что местных и то сомнительно :) Если челове...   29.2.2016, 11:32
DarkMaster   Размер шрифта. Шрифт желательно иметь возможность...   29.2.2016, 18:58
Cockney   могу,ошибаться,но шрифты так и накладываются на ко...   29.2.2016, 19:29
DarkMaster   Это свойства шрифта моноширный он или нет. В винд...   29.2.2016, 19:43
Cockney   Это свойства шрифта моноширный он или нет. На ...   29.2.2016, 21:07
DarkMaster   По идее все, что нужно - это возможность задать ш...   29.2.2016, 22:49
cirus   set $a GUI.SetText (*Edit* *Main* *edit*...   1.3.2016, 2:17
Cockney   set $a GUI.SetText (*Edit* *Main* *edit*...   1.3.2016, 6:27
DarkMaster   Можно попробовать 0x13, но скорее всего передаст с...   1.3.2016, 7:56
cirus   Да. Hint aaa\nbbb Для кнопки работает такой ...   1.3.2016, 10:47
Cockney   мульти лайн и мульти текст отключаются тем, что му...   1.3.2016, 17:12
DarkMaster   Да ну щас. Это не более чем кнайтовский прасинг. ...   1.3.2016, 15:10
Cockney   Копаюсь в прозрачности окон. Если главное окно про...   1.3.2016, 18:39
DarkMaster   С гуями никогда не работал. Хотя вру - делал формо...   1.3.2016, 19:00
DarkMaster   А если чайлды перебрать и поснимать с них прозрачн...   3.3.2016, 19:12
Cockney   Не-а. Прозрачность лепится либо на все окно(родите...   3.3.2016, 21:22
DarkMaster   а если вспомнить мобидика нашего? оверлеи?   3.3.2016, 21:38
Cockney   что за мобидик?   3.3.2016, 22:52
Cockney   а что оверлей?обычное окно же.   3.3.2016, 23:06
DarkMaster   кхе... Оверлей сильно не обычное окно. Прорисовыва...   4.3.2016, 8:30
Cockney   Я понял про что ты. Да, это реализуемо вроде на GD...   4.3.2016, 13:17
DarkMaster   На директе точно можно, на GDI до конца не уверен...   4.3.2016, 13:54
Cockney   как это инпута не может быть?если в директ-приложе...   4.3.2016, 14:19
DarkMaster   Инпута куда? Инпута в оверлей не может быть даже в...   4.3.2016, 15:46
Cockney   Вот и на кой такие сложности? Плагин позволяет нас...   4.3.2016, 17:55
DarkMaster   Сначала думал решится все прозрачностью без замор...   4.3.2016, 18:36
cirus   За час работы скрипта пару раз вылезла ошибка тако...   6.3.2016, 12:55
Cockney   прикрепи пожалуйста xml. ---------- А если задержк...   6.3.2016, 13:23
cirus   Попробую как время будет.   6.3.2016, 13:50
Cockney   Потестил. Гонял ровно час, баг не воспроизводится....   6.3.2016, 14:58
cirus   Тоже проверял сейчас, причём задержку в 0 поставил...   6.3.2016, 15:24
cirus   Скорее всего из-за маленьких задержек были ошибки....   6.3.2016, 23:13
Cockney   вот этот второй скрипт работает вместе с основным?...   7.3.2016, 6:29
cirus   Отдельно. Пару кликов по любой кнопке и будет та...   7.3.2016, 18:18
Cockney   чет я даже не знаю на че думать.....помнится дарк ...   7.3.2016, 18:48
Cockney   Хотя тут что-то другое. Возможно связанное с поток...   7.3.2016, 18:59
cirus   Пока можно решить проблему таймером. Врят ли кто-т...   7.3.2016, 19:24
DarkMaster   Плагин общий для всех вкладок вроде. Т.е. если в ...   7.3.2016, 19:55
Cockney   если вопрос по созданию окна, то в инит его не на...   7.3.2016, 21:42
cirus   На счёт этой ошибки: https://forum.uokit.com/index...   7.3.2016, 22:06
Cockney   Чудеса. Плагин никак не связан с линейкой. Абсолют...   7.3.2016, 22:23
DarkMaster   Ну дык "если не ошибаюсь". Вроде послед...   7.3.2016, 22:36
Cockney   Вроде последующие тесты это опровергли... Вот ...   7.3.2016, 22:37
DarkMaster   самый простой способ проверить: 1 функция - записы...   7.3.2016, 22:39
Cockney   Когда происходит событие(от 1 скрипта), плагин зап...   7.3.2016, 22:53
DarkMaster   элементарно. больше окон - больше нагрузка на каме...   7.3.2016, 23:00
Cockney   Да, но это сколько окон нужно? + плагин обрабатыв...   7.3.2016, 23:04
cirus   Запуск одного окна l2 может вызвать ошибку. Естес...   7.3.2016, 23:34
DarkMaster   А запись и чтение одновременно не происходят случа...   8.3.2016, 9:41
Cockney   В плагине?структура(это я так обозвал) на самом де...   8.3.2016, 11:24
DarkMaster   очередь надо, чтобы исключить подобные варианты.   8.3.2016, 12:11
Cockney   Эт понятно. Каким методом? читал про мьютексы, но ...   9.3.2016, 14:15
DarkMaster   А там не все так просто. Можно еще натворить взаим...   9.3.2016, 15:20
Cockney   Сильно загнул). ------------------- По поводу пере...   10.3.2016, 18:28
DarkMaster   Посмотри буст там есть готовое решение. Я с полгод...   10.3.2016, 18:57
Cockney   Апдейт. -Пофикшены клики. Теперь одиночный клик н...   11.3.2016, 23:17
Cockney   Предлагаешь мне буст переписать?)   11.3.2016, 23:43
DarkMaster   В смысле? Я наоборот тебе предлагаю взять готовую...   12.3.2016, 7:41
3 страниц V  1 2 3 >


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 4.6.2024, 4:21
Designed by Nickostyle