Немодальный диалог

Место, где разработчики плагинов могут поделиться своим опытом.
andrey13
Posts: 8
Joined: Fri 03 Nov, 2006 10:48

Немодальный диалог

Post by andrey13 »

Года 4 назад мне пришла в голову мысль сделать из редактора Far-а что-то вроде IDE, по мотивам Турбо-Си (Для своей основной работы, там система старше даже туробо-сей).

Результаты на скриншотах. Я сделал показ ошибок компиляции внизу окна, автокомлишен, показ аргументов функций и многое ещё, но сейчас говорю про эти 3 фичи.

идея была такая
1) поверх редактора показать диалог без бордера
2) принудительно включить текстовый курор (ведь когда диалог стартует, фар отключает курсор редактора)
3) ловить в диалоге все кнопки, нужные обрабатывать, ненужные форвардить в редактор, чтобы он продолжал функционировать.


Таким образом, были реализованы как бы хинты , которые реагируют на определенные кнопки, но фокус на себя не забирают и работать не мешают.
На скриншотах не виден текстовый курсор, но он там есть.
(В целом все получилось гладко, без всяких натяжек и скидок на то, что это не-IDE)

Далее, список ошибок компиляции. Этот диалог уже модальный. При перемещении по ошибкам, редактор позиционируется на строку с ошибкой и красит её в красный цвет. На скриншоте не видно красной строки, а почему - я написал в предыдущей теме.


Действительно, для всех этих трюков требуется принудительная прорисовка редактора (при активном диалоге). Как я уже писал, какое-то время назад прорисовку стали откладывать до завершения работы диалога.


Хочу услышать вердикт разработчиков – признают ли такие «вольности» полезными, тогда их надо будет починить или найти обходной путь. Либо признают извращением, и я пойду юзать старый билд фара.
Attachments
1.GIF
1.GIF (27.28 KiB) Viewed 18524 times
2.GIF
2.GIF (29.36 KiB) Viewed 18524 times
3.GIF
3.GIF (30.99 KiB) Viewed 18524 times
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Post by Skirda »

andrey13, смотреть надо, опять же :)
Плагин дай (без сорцов).
User avatar
OCTAGRAM
Posts: 72
Joined: Sun 24 Jul, 2005 03:42
Location: Барнаул
Contact:

Post by OCTAGRAM »

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

Менять тогда придётся
Image
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

OCTAGRAM
Ya chto to ne slyishal takih sluhov.
User avatar
OCTAGRAM
Posts: 72
Joined: Sun 24 Jul, 2005 03:42
Location: Барнаул
Contact:

Post by OCTAGRAM »

Skirda wrote:А еще эта...
...Hex-редактор, калькулятор, пара-тройках игрух, среда разработки в стиле борландовских текстовых сред и кучу всякого хлама...
И все это обязательно внутри кода ФАРа!
:crazy:

А если серьезно - в планах есть т.н. UserFrame, который позволить "рисовать" всю эту хню посредством плагинов.
Image
andrey13
Posts: 8
Joined: Fri 03 Nov, 2006 10:48

Post by andrey13 »

Skirda wrote:andrey13, смотреть надо, опять же :)
Плагин дай (без сорцов).

Плагин давать нет смысла, он только в моем офисе и запустится (нужен хост-сервер системы). Но я могу сделать мелкую заготовку, такую. Вывожу по центру экрана диалог с листбоксом, в нем строки "Home", "PgDn", "Pgup", "End". При движении курсора вверх-вниз, буду командовать редактору позиционироваться как указано, и перерисовываться.

(Имхо поведение будет таким - результаты позиционирования отобразятся лишь после закрытия диалога).

Жду отмашки.
И еще, я это, паскалист (дельфи).


Спасибо
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Post by Skirda »

OCTAGRAM, к диалогам это не имеет никакого отношения.

andrey13, выкладывай свою заготовку, тока опиши подробно что и как...
Marty
Posts: 170
Joined: Sun 29 Jan, 2006 12:29

Диалог/меню в редакторе, не перехватывающий ввод

Post by Marty »

Можно ли такое сделать? То есть пользователь что-то вводит, плагин анализирует ввод, и создает менюшку, в которой кнопками Up/Down можно выбрать что-то, что вставится в текст, но весь остальной ввод идет в редактор. Если обсуждалось где-то, ткните носом плс.
User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Re: Диалог/меню в редакторе, не перехватывающий ввод

Post by Centaur »

Для любой менюшки можно указать набор клавиш, которые её будут закрывать. Если указать достаточно полный набор «всех клавиш» и все клавиши, кроме собственных пунктов, передавать в редактор, то получится примерно желаемое.
Marty
Posts: 170
Joined: Sun 29 Jan, 2006 12:29

Re: Диалог/меню в редакторе, не перехватывающий ввод

Post by Marty »

Спасибо, буду думать.

Пока не понял, как указать набор клавиш так, чтобы меню обрабатывало только Enter, Up, Down и (возможно) их комбинации с Ctrl, Shift, и Alt, а по всем другим нажатиям закрывалось - надо задать все клавиши из BaseDefKeyboard (за исключением перечисленных), затем задать все возможные их комбинации с флагами PKF_CONTROL, PKF_ALT и PKF_SHIFT? Как быть с KEY_CTRLALTSHIFTPRESS, KEY_CTRLALTSHIFTRELEASE,
KEY_MSWHEEL_UP, KEY_MSWHEEL_DOWN, KEY_END_FKEY, KEY_NONE, KEY_IDLE, KEY_END_SKEY? К базовым, к заданным именованными константами, полагаю, надо еще задать все алфавитно-цифровые '`', '1', '2', ...?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Диалог/меню в редакторе, не перехватывающий ввод

Post by DrKnS »

Для такого лучше брать не меню, а диалог с листбоксом.
Marty
Posts: 170
Joined: Sun 29 Jan, 2006 12:29

ProcessEditorInput

Post by Marty »

И еще, может не совсем по теме, но не хочу лишнюю ветку заводить. Я хочу сделать упрощенную возможность создания сабплагинов для обработки ProcessEditorEvent и ProcessEditorInput. По первой вопросов нет, дергаем все сабплагины и возвращаем всегда ноль. По второму - наверно надо поступать, как и внутри фара сделано, и вот это для меня вопрос. Обрабатывать сабплагины до тех пор, пока они возвращают 0 и останавливаться на том, который вернул не 0?
Marty
Posts: 170
Joined: Sun 29 Jan, 2006 12:29

Re: Диалог/меню в редакторе, не перехватывающий ввод

Post by Marty »

DrKnS wrote:Для такого лучше брать не меню, а диалог с листбоксом.
Диалог можно сделать немодальным в фаре?
в принципе, можно обдумать и выводить список не средствами фара, а гуевыми, но это как-то не очень, на мой взгляд. И возникает следующий вопрос - как узнать позицию курсора в редакторе в координатах не знакомест, а в оконных координатах винды? Чувствую, без изврата не выйдет.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Диалог/меню в редакторе, не перехватывающий ввод

Post by DrKnS »

Marty wrote:Диалог можно сделать немодальным в фаре?
Формально нет. Как и меню.
Но вот это:
Marty wrote:чтобы меню обрабатывало только Enter, Up, Down и (возможно) их комбинации с Ctrl, Shift, и Alt, а по всем другим нажатиям закрывалось
- в листбоксе делается пятью строками, а не перечислением сотен клавиш, как в меню.
Marty
Posts: 170
Joined: Sun 29 Jan, 2006 12:29

Re: Диалог/меню в редакторе, не перехватывающий ввод

Post by Marty »

DrKnS wrote:Но вот это:
Marty wrote:чтобы меню обрабатывало только Enter, Up, Down и (возможно) их комбинации с Ctrl, Shift, и Alt, а по всем другим нажатиям закрывалось
- в листбоксе делается пятью строками, а не перечислением сотен клавиш, как в меню.
А вот с этого момента поподробнее ;)
Last edited by Marty on Wed 01 Apr, 2009 19:24, edited 2 times in total.
Post Reply

Return to “Разработка плагинов”