DialogBuilder

Место, где разработчики плагинов могут поделиться своим опытом.
Ariman
Posts: 1203
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

DialogBuilder

Post by Ariman » Tue 01 Jul, 2014 13:31

В Far 3 появилась такая полезная штука как DialogBuilder. В принципе, удобно, но есть по нему несколько вопросов.

1. Совсем не нашёл поддержку combobox-ов и listbox-ов. Это так и задумано или просто руки не дошли?
2. Как бы там получить доступ к элементам? Например, понадобилось по высоте подвигать группу radiobutton-ов, а они наружу никак не доступны.

User avatar
DrKnS
Posts: 5010
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 167 times

Re: Про DialogBuilder.

Post by DrKnS » Tue 01 Jul, 2014 13:53

DialogBuilder бывает внутренний (FarDlgBuilder.?pp) и внешний (DlgBuilder.hpp).
Поддержка комбобоксов во внутреннем точно есть. До внешнего, вероятно, руки не дошли (зачатки в виде класса ComboBoxBinding есть).

Если чего-то не хватает - предлагайте. Желательно сначала посмотрев на внутренний - может быть велосипед уже изобретён, но не опубликован.

Ariman
Posts: 1203
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

Re: Про DialogBuilder.

Post by Ariman » Tue 01 Jul, 2014 14:56

DrKnS wrote:Если чего-то не хватает - предлагайте.
Ну раз так, то предлагаю. :) Пока не хватает вот такого:
  • Combobox-ы. Во внутреннем классе действительно всё есть, надо только вытащить один из методов наружу. Подозреваю что это будет что-то вроде:

    Code: Select all

    FarDialogItem *AddComboBox(int *Value, int Width, const DialogBuilderListItem *Items, size_t ItemCount, FARDIALOGITEMFLAGS Flags = DIF_NONE);
  • Listbox-ы. Нигде не реализовано. Но думаю от комбобокса не сильно должно отличаться.
  • Возможности вставлять элементы внутри группы radiobutton-ов. Например, для задания отдельных параметров для каждого элемента списка.

User avatar
DrKnS
Posts: 5010
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 167 times

Re: Про DialogBuilder.

Post by DrKnS » Tue 01 Jul, 2014 16:05

Если предлагать кодом или хотя бы полным описанием интерфейсов - дело пойдет быстрее :)

Ariman
Posts: 1203
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

Re: DialogBuilder

Post by Ariman » Wed 02 Jul, 2014 19:38

Мы и кодом могём. :)
Вот, для затравки, предложение по комбобоксу. За основу взял код из внутреннего билдера, но переделал немного по-своему. В аттаче diff с кодом.
Attachments
dlg_combo_add.diff.txt
(2.86 KiB) Downloaded 51 times

User avatar
DrKnS
Posts: 5010
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 167 times

Re: DialogBuilder

Post by DrKnS » Wed 02 Jul, 2014 22:28

Добавил.

Ariman
Posts: 1203
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

Re: DialogBuilder

Post by Ariman » Thu 03 Jul, 2014 12:20

Ну раз так хорошо пошло, то продолжим.
Добавил поддержку листбоксов. Немного переделал предыдущий код для унификации обоих боксов, чтобы копипасту не плодить.
Attachments
dlg_listbox_add.diff.txt
(5.58 KiB) Downloaded 48 times

User avatar
DrKnS
Posts: 5010
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 167 times

Re: DialogBuilder

Post by DrKnS » Thu 03 Jul, 2014 18:47

А для внутреннего не хочешь добавить? :)

Ariman
Posts: 1203
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

Re: DialogBuilder

Post by Ariman » Fri 04 Jul, 2014 08:35

Если к моему варианту претензий нет, то могу и туда портировать. Надо только определиться что именно и как переносить. Всё таки интерфейс в моем варианте и во внутреннем билдере немного отличается.

User avatar
DrKnS
Posts: 5010
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 167 times

Re: DialogBuilder

Post by DrKnS » Sat 12 Jul, 2014 07:43

Добавил.

Ariman
Posts: 1203
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

Re: DialogBuilder

Post by Ariman » Fri 26 Sep, 2014 10:40

Новый приступ креатива по расширению билдера. :)
Появилось желание добавлять кнопочки в большем количестве чем OK/Cancel/+1. Плюс не всегда Cancel идет вторым. По этому поводу родилась функция AddButtons, в которую передается массив надписей. Все кнопочки располагаются в ряд на одном уровне. Можно задавать дефолтную кнопку и где именно по порядку Cancel (опционально).

Патч в аттаче. Пришлось поменять некоторые поля в классе, потому что текущая реализация была очень заточена под OK/Cancel.

ЗЫ. Существующий метод AddOKCancel оставлен, но внутри переделан на новую функцию, дабы не плодить одинаковый код.
Attachments
add_buttons.diff.txt
(3.2 KiB) Downloaded 33 times

Ariman
Posts: 1203
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

Re: DialogBuilder

Post by Ariman » Fri 26 Sep, 2014 13:46

Ну и в догонку. Я вроде обещался портировать листбоксы во внутренний билдер. Как бы вот.
Attachments
far_listbox.diff.txt
(17.05 KiB) Downloaded 42 times

Ariman
Posts: 1203
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

Re: DialogBuilder

Post by Ariman » Fri 26 Sep, 2014 14:38

По результатам использования небольшая правка патча на кнопки. Подвинем первую кнопку чуть вправо, а то не очень симметрично получается.
Attachments
add_buttons_v2.diff.txt
(3.26 KiB) Downloaded 36 times

User avatar
DrKnS
Posts: 5010
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 167 times

Re: DialogBuilder

Post by DrKnS » Sat 27 Sep, 2014 13:41

Добавил.

Ariman
Posts: 1203
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

Re: DialogBuilder

Post by Ariman » Mon 29 Sep, 2014 09:35

Ещё патчик. Добавил поддержку флагов для диалога во внешнем билдере.
Attachments
dialog_flags.diff.txt
(2.36 KiB) Downloaded 47 times

User avatar
DrKnS
Posts: 5010
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 167 times

Re: DialogBuilder

Post by DrKnS » Mon 29 Sep, 2014 12:11

Ок, но это как бы публичный код и ломать совместимость не очень хорошо, поэтому флаги в конец списка.

Post Reply

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