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

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

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

Post by andrey13 » Mon 09 Apr, 2007 08:33

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

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

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


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

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


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


Хочу услышать вердикт разработчиков – признают ли такие «вольности» полезными, тогда их надо будет починить или найти обходной путь. Либо признают извращением, и я пойду юзать старый билд фара.
Attachments
1.GIF
1.GIF (27.28 KiB) Viewed 6373 times
2.GIF
2.GIF (29.36 KiB) Viewed 6373 times
3.GIF
3.GIF (30.99 KiB) Viewed 6373 times

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 1 time

Post by Skirda » Mon 09 Apr, 2007 18:11

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

User avatar
OCTAGRAM
Posts: 72
Joined: Sun 24 Jul, 2005 03:42
Location: Барнаул
Contact:

Post by OCTAGRAM » Mon 09 Apr, 2007 19:25

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

Менять тогда придётся
Image

User avatar
t-rex
Страшный и ужасный
Posts: 4871
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

Post by t-rex » Mon 09 Apr, 2007 19:35

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 » Tue 10 Apr, 2007 07:35

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

А если серьезно - в планах есть т.н. UserFrame, который позволить "рисовать" всю эту хню посредством плагинов.
Image

andrey13
Posts: 8
Joined: Fri 03 Nov, 2006 10:48

Post by andrey13 » Tue 10 Apr, 2007 07:36

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

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

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

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


Спасибо

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 1 time

Post by Skirda » Tue 10 Apr, 2007 08:54

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

andrey13, выкладывай свою заготовку, тока опиши подробно что и как...

Marty
Posts: 170
Joined: Sun 29 Jan, 2006 12:29

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

Post by Marty » Sat 28 Mar, 2009 21:11

Можно ли такое сделать? То есть пользователь что-то вводит, плагин анализирует ввод, и создает менюшку, в которой кнопками Up/Down можно выбрать что-то, что вставится в текст, но весь остальной ввод идет в редактор. Если обсуждалось где-то, ткните носом плс.

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia

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

Post by Centaur » Sun 29 Mar, 2009 08:53

Для любой менюшки можно указать набор клавиш, которые её будут закрывать. Если указать достаточно полный набор «всех клавиш» и все клавиши, кроме собственных пунктов, передавать в редактор, то получится примерно желаемое.

Marty
Posts: 170
Joined: Sun 29 Jan, 2006 12:29

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

Post by Marty » Wed 01 Apr, 2009 18:30

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

Пока не понял, как указать набор клавиш так, чтобы меню обрабатывало только 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: 4535
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 113 times
Contact:

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

Post by DrKnS » Wed 01 Apr, 2009 18:37

Для такого лучше брать не меню, а диалог с листбоксом.

Marty
Posts: 170
Joined: Sun 29 Jan, 2006 12:29

ProcessEditorInput

Post by Marty » Wed 01 Apr, 2009 18:46

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

Marty
Posts: 170
Joined: Sun 29 Jan, 2006 12:29

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

Post by Marty » Wed 01 Apr, 2009 18:49

DrKnS wrote:Для такого лучше брать не меню, а диалог с листбоксом.
Диалог можно сделать немодальным в фаре?
в принципе, можно обдумать и выводить список не средствами фара, а гуевыми, но это как-то не очень, на мой взгляд. И возникает следующий вопрос - как узнать позицию курсора в редакторе в координатах не знакомест, а в оконных координатах винды? Чувствую, без изврата не выйдет.

User avatar
DrKnS
Posts: 4535
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 113 times
Contact:

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

Post by DrKnS » Wed 01 Apr, 2009 19:00

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

Marty
Posts: 170
Joined: Sun 29 Jan, 2006 12:29

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

Post by Marty » Wed 01 Apr, 2009 19:08

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.

User avatar
t-rex
Страшный и ужасный
Posts: 4871
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

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

Post by t-rex » Wed 01 Apr, 2009 19:10

Marty
Читай доки, смотри сорцы плагинов.

Post Reply

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

Who is online

Users browsing this forum: No registered users and 4 guests