DialogBuilder
-
- Posts: 1351
- Joined: Fri 30 Nov, 2007 15:32
- Location: Крым
- Has thanked: 15 times
- Been thanked: 50 times
- Contact:
DialogBuilder
В Far 3 появилась такая полезная штука как DialogBuilder. В принципе, удобно, но есть по нему несколько вопросов.
1. Совсем не нашёл поддержку combobox-ов и listbox-ов. Это так и задумано или просто руки не дошли?
2. Как бы там получить доступ к элементам? Например, понадобилось по высоте подвигать группу radiobutton-ов, а они наружу никак не доступны.
1. Совсем не нашёл поддержку combobox-ов и listbox-ов. Это так и задумано или просто руки не дошли?
2. Как бы там получить доступ к элементам? Например, понадобилось по высоте подвигать группу radiobutton-ов, а они наружу никак не доступны.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Re: Про DialogBuilder.
DialogBuilder бывает внутренний (FarDlgBuilder.?pp) и внешний (DlgBuilder.hpp).
Поддержка комбобоксов во внутреннем точно есть. До внешнего, вероятно, руки не дошли (зачатки в виде класса ComboBoxBinding есть).
Если чего-то не хватает - предлагайте. Желательно сначала посмотрев на внутренний - может быть велосипед уже изобретён, но не опубликован.
Поддержка комбобоксов во внутреннем точно есть. До внешнего, вероятно, руки не дошли (зачатки в виде класса ComboBoxBinding есть).
Если чего-то не хватает - предлагайте. Желательно сначала посмотрев на внутренний - может быть велосипед уже изобретён, но не опубликован.
-
- Posts: 1351
- Joined: Fri 30 Nov, 2007 15:32
- Location: Крым
- Has thanked: 15 times
- Been thanked: 50 times
- Contact:
Re: Про DialogBuilder.
Ну раз так, то предлагаю. Пока не хватает вот такого:DrKnS wrote:Если чего-то не хватает - предлагайте.
- Combobox-ы. Во внутреннем классе действительно всё есть, надо только вытащить один из методов наружу. Подозреваю что это будет что-то вроде:
Code: Select all
FarDialogItem *AddComboBox(int *Value, int Width, const DialogBuilderListItem *Items, size_t ItemCount, FARDIALOGITEMFLAGS Flags = DIF_NONE);
- Listbox-ы. Нигде не реализовано. Но думаю от комбобокса не сильно должно отличаться.
- Возможности вставлять элементы внутри группы radiobutton-ов. Например, для задания отдельных параметров для каждого элемента списка.
-
- Posts: 1351
- Joined: Fri 30 Nov, 2007 15:32
- Location: Крым
- Has thanked: 15 times
- Been thanked: 50 times
- Contact:
Re: DialogBuilder
Мы и кодом могём.
Вот, для затравки, предложение по комбобоксу. За основу взял код из внутреннего билдера, но переделал немного по-своему. В аттаче diff с кодом.
Вот, для затравки, предложение по комбобоксу. За основу взял код из внутреннего билдера, но переделал немного по-своему. В аттаче diff с кодом.
- Attachments
-
- dlg_combo_add.diff.txt
- (2.86 KiB) Downloaded 251 times
-
- Posts: 1351
- Joined: Fri 30 Nov, 2007 15:32
- Location: Крым
- Has thanked: 15 times
- Been thanked: 50 times
- Contact:
Re: DialogBuilder
Ну раз так хорошо пошло, то продолжим.
Добавил поддержку листбоксов. Немного переделал предыдущий код для унификации обоих боксов, чтобы копипасту не плодить.
Добавил поддержку листбоксов. Немного переделал предыдущий код для унификации обоих боксов, чтобы копипасту не плодить.
- Attachments
-
- dlg_listbox_add.diff.txt
- (5.58 KiB) Downloaded 234 times
-
- Posts: 1351
- Joined: Fri 30 Nov, 2007 15:32
- Location: Крым
- Has thanked: 15 times
- Been thanked: 50 times
- Contact:
Re: DialogBuilder
Если к моему варианту претензий нет, то могу и туда портировать. Надо только определиться что именно и как переносить. Всё таки интерфейс в моем варианте и во внутреннем билдере немного отличается.
-
- Posts: 1351
- Joined: Fri 30 Nov, 2007 15:32
- Location: Крым
- Has thanked: 15 times
- Been thanked: 50 times
- Contact:
Re: DialogBuilder
Новый приступ креатива по расширению билдера.
Появилось желание добавлять кнопочки в большем количестве чем OK/Cancel/+1. Плюс не всегда Cancel идет вторым. По этому поводу родилась функция AddButtons, в которую передается массив надписей. Все кнопочки располагаются в ряд на одном уровне. Можно задавать дефолтную кнопку и где именно по порядку Cancel (опционально).
Патч в аттаче. Пришлось поменять некоторые поля в классе, потому что текущая реализация была очень заточена под OK/Cancel.
ЗЫ. Существующий метод AddOKCancel оставлен, но внутри переделан на новую функцию, дабы не плодить одинаковый код.
Появилось желание добавлять кнопочки в большем количестве чем OK/Cancel/+1. Плюс не всегда Cancel идет вторым. По этому поводу родилась функция AddButtons, в которую передается массив надписей. Все кнопочки располагаются в ряд на одном уровне. Можно задавать дефолтную кнопку и где именно по порядку Cancel (опционально).
Патч в аттаче. Пришлось поменять некоторые поля в классе, потому что текущая реализация была очень заточена под OK/Cancel.
ЗЫ. Существующий метод AddOKCancel оставлен, но внутри переделан на новую функцию, дабы не плодить одинаковый код.
- Attachments
-
- add_buttons.diff.txt
- (3.2 KiB) Downloaded 225 times
-
- Posts: 1351
- Joined: Fri 30 Nov, 2007 15:32
- Location: Крым
- Has thanked: 15 times
- Been thanked: 50 times
- Contact:
Re: DialogBuilder
Ну и в догонку. Я вроде обещался портировать листбоксы во внутренний билдер. Как бы вот.
- Attachments
-
- far_listbox.diff.txt
- (17.05 KiB) Downloaded 235 times
-
- Posts: 1351
- Joined: Fri 30 Nov, 2007 15:32
- Location: Крым
- Has thanked: 15 times
- Been thanked: 50 times
- Contact:
Re: DialogBuilder
По результатам использования небольшая правка патча на кнопки. Подвинем первую кнопку чуть вправо, а то не очень симметрично получается.
- Attachments
-
- add_buttons_v2.diff.txt
- (3.26 KiB) Downloaded 226 times
-
- Posts: 1351
- Joined: Fri 30 Nov, 2007 15:32
- Location: Крым
- Has thanked: 15 times
- Been thanked: 50 times
- Contact:
Re: DialogBuilder
Ещё патчик. Добавил поддержку флагов для диалога во внешнем билдере.
- Attachments
-
- dialog_flags.diff.txt
- (2.36 KiB) Downloaded 258 times