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

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


********

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



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

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


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

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

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

Каждый параметр заключается в *. Например, так : *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Отправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
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
DarkMaster   Спорное утверждение. <> - является стандарт...   29.2.2016, 11:02
Cockney   нет настройки размера кегля это что такое?т.е. ...   29.2.2016, 18:44
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

 

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