View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000179 | Wishes | Plugins API.Dialog | public | 2006-05-15 03:15 | 2014-03-27 14:08 |
Reporter | vskirdin | Assigned To | |||
Priority | normal | Severity | feature | Reproducibility | always |
Status | new | Resolution | open | ||
Summary | 0000179: DI_PAGE | ||||
Description | DI_PAGE - начинает новую страницу диалоговых элементов. Видится мне, что это... 1) рамка, в заголовке которой выровненный влево комбобокс с названием страниц. При выборе очередного Page движок сам прячет ненужное и отображает только элементы нужной страницы. 2) или... закладки В обработчик приходит эвент DN_SELECTPAGE с выбранной номером (Param1) страницы. Return TRUE - угу, FALSE - "не переключаться". | ||||
Tags | No tags attached. | ||||
Build | |||||
|
А можно пример в виде картинки для обоих вариантов? |
2008-01-22 02:45
|
Mantis 179.hlf (4,686 bytes)
.Language=Russian,Russian (���᪨�) .Options CtrlColorChar=\ @Contents $^#Mantis 179# \70 \- \70 ����������������������������� Mantis 179 ���������������������������ͻ \-\00 \- \70 � [x] A \7Ef\70ile mask or several file masks delimited with commas: � \-\00 \- \70 � \38*.* \70\78\70� \-\00 \- \70 ��������������������������������������������������������������������Ķ \-\00 \- \70 � �����������������������[\30 �������� ��।��� ��࠭��� \70]\78\70Ŀ � \-\00 \- \70 � � � � \-\00 \- \70 � � � � \-\00 \- \70 � � � � \-\00 \- \70 � � � � \-\00 \- \70 � � � � \-\00 \- \70 � � � � \-\00 \- \70 � � � � \-\00 \- \70 � � � � \-\00 \- \70 � � � � \-\00 \- \70 � � � � \-\00 \- \70 � � � � \-\00 \- \70 � � � � \-\00 \- \70 � � � � \-\00 \- \70 � ������������������������������������������������������������������ � \-\00 \- \70 ��������������������������������������������������������������������Ķ \-\00 \- \70 � [ Ok ] [ Cancel ] � \-\00 \- \70 ��������������������������������������������������������������������ͼ \-\00 \- \70 \-\00 \- \00 \-\00 \- \70 \- \70 ����������������������������� Mantis 179 ���������������������������ͻ \-\00 \- \70 � [x] A \7Ef\70ile mask or several file masks delimited with commas: � \-\00 \- \70 � \38*.* \70\78\70� \-\00 \- \70 ��������������������������������������������������������������������Ķ \-\00 \- \70 � �����������������������[\30 �������� ��।��� ��࠭��� \70]\78\70Ŀ � \-\00 \- \70 � � \3f������������������������������������Ŀ\70 � � \-\00 \- \70 � � \3f�\0f ��ਡ��� \3f\70 � � \-\00 \- \70 � � \3f� ���⮢�� �奬� �\70 � � \-\00 \- \70 � � \3f� �������� �\70 � � \-\00 \- \70 � � \3f� ��������� \70 � � \-\00 \- \70 � � \3f��������������������������������������\70 � � \-\00 \- \70 � � � � \-\00 \- \70 � � � � \-\00 \- \70 � � � � \-\00 \- \70 � � � � \-\00 \- \70 � � � � \-\00 \- \70 � � � � \-\00 \- \70 � � � � \-\00 \- \70 � ������������������������������������������������������������������ � \-\00 \- \70 ��������������������������������������������������������������������Ķ \-\00 \- \70 � [ Ok ] [ Cancel ] � \-\00 \- \70 ��������������������������������������������������������������������ͼ \-\00 \- \70 \-\00 \- \00 \-\00 \- |
|
см. аттач. как вариант 1 |
|
мне нравится, только рамку я б передел - см. "Mantis 179_2.hlf" |
2008-01-22 21:42
|
|
|
понадобилось такое :) как вижу: X1,X2,Y1,Y2 задает область в которой будут свои опции диалога. Param.ListItems задает нередактируемый комбо с именами страниц, выравнивается по правому краю, шириной на 2/3 X1,X2. Flags - во флагах нужно где показывать комбо-заголовок внизу/вверху области X1,X2,Y1,Y2 Data - пояснительная надпись прижатая слева от комбо, т.е. например: |---- Режим: |1-бла-бла-бла | |
|
делать скорее всего лучше по варианту: В обработчик приходит эвент DN_SELECTPAGE с выбранной номером (Param1) страницы. Return TRUE - угу, FALSE - "не переключаться". |
|
Вопрос: как отличить, что вот эти элементы для первой страницы,... а вот эти для N-ой страницы? Какой-то признак нужен... |
|
нужен будет флаг у элементов которые у нас будут меняться, что-то вроде дипейж, + у всех таких элементов заполнять новое поле - айди страницы к которой они относятся. так наверно. хотя, я тут подумал, это усложняет диалоги. может просто флаги для элементов: DIF_PAGE0,...DIF_PAGE9. десяти хватит? |
|
и чтоб не дублировать код в DN_INITDIALOG нужно будет сообщение DM_SETPAGE с номером (Param1) страницы, тогда вся обработка инициализации опций в плагине будет в DN_SELECTPAGE. |
|
> десяти хватит? 640K тоже должно было хватать на все :-) |
|
тык, мы тут не операционку сочиняем. думаю, хватит 10 страниц. |
|
Зачем какие-то флаги с ограничениями? Изначальный вариант - DI_PAGE как DialogItem, засунутый туда, где должна начинаться новая страница - нормальный. |
|
где ее, страницы, окончание? это я про последние сепаратор и кнопки <Угу> <Не угу> |
|
ну, как бы не стал я ждать манны небесной и заюзал у себя в плаге комбо+DN_LISTCHANGE. пришлось правда повозиться, ну-да ладно... |
|
Вариант ещё: Элементы: DI_PAGEBEGIN - элемент начинает очередную страницу DI_PAGEEND - заканчивающий страницу. DM_SETPAGE - установить страницу, заданную в Param1. Far "гасит" все элементы, не из этой страницы (кроме общих элементы, которые вне любых страниц), и делает show всем элементам из этого пейджа. Обработчик диалога сначала получает DN_SETPAGE (соответственно возвращает 1 - "угу" или 0 - "не переключать"), а затем, множество нотификационных эвентов по гашению и отрисовки элементов. Один из FarDialogItem::Reserved[2] становится size_t PageId (это в т.ч. дает возможность оперативно перемещать контролы между пейджами). DM_ITEMTOPAGE - "перемещалка" (get/set) контролов между страницами (нужна структура для Param2) Отрисовка внешнего вида Pages (управление пейджами/общение с юзером) отдается на откуп плагину, Far помогает гасить/показывать нужные наборы. |
|
PageId - это номер страницы? если да, то зачем BEGIN/END? если и так известно какой элемент в какой странице. получается добавится DI_PAGE у которых будут заполнены PageId. фар отрисовывает DI_PAGE указанные плагином. |
|
т.е. вообще достаточно пейдж-йд заполнить для элементов и ввести новые сообщения. |
|
> т.е. вообще достаточно пейдж-йд заполнить для элементов и ввести новые сообщения. ну или так. |
|
Достаточно ли будет: size_t FarDialogItem::PageId (вместо FarDialogItem::Reserved[0]) DM_SETPAGE{Param1=pageid, Param2=0} (или в Param2 структуру? тогда что в структуре? или структура усложнит интерфейс? Но тогда не будет задела на будущее) DM_GETPAGE{Param1=0, Param2=0, Return=current pageid} (или в Param2 структуру?) DN_SELECTPAGE{Param1=pageid, Para2=0, Return=0-не менять,1-менять} FarDialogItem::PageId=0 - "общая область" (элементы видны на каждой странице) что еще? |
|
структура лучше. передавать там не только страницу, но и фокусный элемент на странице. |
|
size_t FarDialogItem::PageId (вместо FarDialogItem::Reserved[0]) FarDialogItem::PageId=0 - "общая область" (элементы видны на каждой странице, скажем, сепаратор и кнопки "Ок"/"Отмена") struct FarDialogPage { size_t StructSize; размер структуры size_t PageId; номер страницы size_t FocusId; фокусный элемент на этой странице }; DM_SETPAGE{Param1=0, Param2=FarDialogPage*} DM_GETPAGE{Param1=0, Param2=FarDialogPage*, Return=FarDialogPage::PageId} DN_SELECTEDPAGE{Param1=0, Para2=FarDialogPage*, Return=0-не менять,1-менять} Вопрос. Что будет для DM_SETPAGE({sizeof(FarDialogPage),0,0}), если у нас есть 2 страницы (PageId=1 и 2) и одна общая область (PageId=0)? Гасим все или высвечиваем первую (PageId=1) страницу (как бы дефолтовую)? |
|
как по мне, то гасим. в том числе и если индекс больше имеющейся. |
|
хотя, пустой диалог некрасиво будет смотреться... |
Date Modified | Username | Field | Change |
---|---|---|---|
2006-05-15 03:15 | vskirdin | New Issue | |
2008-01-21 09:59 | alexmitin | Note Added: 0001154 | |
2008-01-22 02:45 | vskirdin | File Added: Mantis 179.hlf | |
2008-01-22 02:45 | vskirdin | Note Added: 0001155 | |
2008-01-22 21:42 | samlyukov | Note Added: 0001162 | |
2008-01-22 21:42 | samlyukov | File Added: Mantis 179_2.hlf | |
2012-01-19 13:44 | samlyukov | Note Added: 0008457 | |
2012-01-19 13:59 | samlyukov | Note Added: 0008458 | |
2012-01-19 14:02 | vskirdin | Note Added: 0008459 | |
2012-01-19 14:19 | samlyukov | Note Added: 0008460 | |
2012-01-19 14:54 | samlyukov | Note Added: 0008461 | |
2012-01-19 16:12 | samlyukov | Note Edited: 0008461 | |
2012-01-19 16:24 | samlyukov | Note Edited: 0008460 | |
2012-01-19 16:41 | samlyukov | Note Edited: 0008457 | |
2012-01-19 16:48 | samlyukov | Note Edited: 0008457 | |
2012-01-20 05:47 | vskirdin | Note Added: 0008468 | |
2012-01-20 10:24 | samlyukov | Note Added: 0008469 | |
2012-01-20 10:42 | DrKnS | Note Added: 0008470 | |
2012-01-20 13:05 | vskirdin | Note Added: 0008471 | |
2012-02-04 04:26 | samlyukov | Note Added: 0008536 | |
2013-02-03 00:31 | alexy | Severity | minor => feature |
2014-03-26 14:13 | vskirdin | Note Added: 0012040 | |
2014-03-26 15:07 | samlyukov | Note Added: 0012041 | |
2014-03-26 15:11 | samlyukov | Note Edited: 0012041 | |
2014-03-26 15:54 | samlyukov | Note Added: 0012042 | |
2014-03-26 18:50 | vskirdin | Note Added: 0012044 | |
2014-03-27 06:06 | vskirdin | Note Added: 0012046 | |
2014-03-27 09:00 | samlyukov | Note Added: 0012047 | |
2014-03-27 13:57 | vskirdin | Note Added: 0012051 | |
2014-03-27 14:05 | samlyukov | Note Added: 0012052 | |
2014-03-27 14:06 | samlyukov | Note Edited: 0012052 | |
2014-03-27 14:08 | samlyukov | Note Added: 0012053 |