Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг

Здесь обсуждается всё, что касается макросов.
User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 8 times

Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг

Post by Xerox »

Предыстория вопроса
Современный мир характеризуется большим количеством больших экранов.
А также длинными именами файлов, и прочими "многа букав"
В то же время, размер диалоговых окон в ФАРе, не менялся десятилетиями,
обладая слишком малой величиной, чтобы полностью соответствать современным вызовам.
Более того, не было никакой возможности расширить окошки до приемлимых размеров даже вручную.
Но эти эти горести остались в далеком темном прошлом (смахивает слезу)
поскольку сейчас у нас есть Автоматический Раздвигатель Окон!

Итак, дамы и господа, я рад представить Вам эту первую публичную, но уже полностью рабочую версию.
Думаю что будут добавлены новые возможности, и устранены некоторые недоделки.
Пока не могу все подробно расписать, но если вкратце:

1.) По умолчанию размер диалога/меню/списка будет = ширина экрана минус отступы в две символьные позиции
(это поменялось в последующих версиях, далее изначально дается в оригинальном размере)
1.1.) Режим отображения "по умолчанию" "сейчас "оригинальный", можно изменить на строчке 60
2.) По клавише Ф5 на диалоге происходит его переключение в другие "стандартные" размеры по циклу, в том числе и в оригинальный размер
2.1.) .. так что если вдруг что вышло криво, то с помощью Ф5 всегда можно вернуться в оригинальную композицию
3.) Кaк бонус еще можно использовать Ctrl(+Alt)+<стрелки> для измения размеров и даже сдвигания по вертикали
4.) Высотой диалога я не манипулирую, только шириной, потому что вроде как незачем

Планирую развивать этот продукт, в теле скрипта написан список планов,
в том числе написать комментариев в скрипте, что зачем там, улучшить с помошью вас, дорогих специалистов.
Конечно же, буду рад услышать Ваши замечания и пожелания, мoи Дорогие Читатели!
Mногое зависит и от вашей широкой поддержки, вместе мы свернем и горы, и Фары!
Спасибо за внимание (кланяется с достоинством)

PS
В продолжение этой темы, послужившей мне вдохновением:
Изменение размеров диалоговых окон

Скрипт здесь:
dialog-resizer.lua.7z
убраны ненужные "ахтунги" в скрипте
(3.77 KiB) Downloaded 28 times
(остается для истории, и/или если кому-то вдруг понравится больше)

Скрипт улучшенная версия:
dialog-resizer.lua.20191212.7z
(3.63 KiB) Downloaded 21 times
(остается для истории, и/или ..)
* Ctrl-Alt-<Arrows> - gives 2D moving around (with remembering the position)
* Alt-<Left|Right> - manual width resizing (remembered also)
* If the user applied the one of the commands above, by this:
created the "custom" layout state, remembered,
and added as an additional state to pre-existing states original/margin/percent/full/(+optional custom)
* Do not rezied automaticall by default, only by triggering F5, and if triggered - remembered per dialog
BTW, the default state can be changed in the body of the script

Скрипт улучшенная исправленная версия:
dialog-ReXiZeR.lua.20191213.7z
(3.36 KiB) Downloaded 12 times
* F5 (sizing switch mode) put back to macro handling, so it will not fall out or interfere with other macros
* Cleaned out dead code, refactoring
* Brandname is changed to ReXiZeR!
* .. so probably by these certain bugs fixed :-)

Script fixed again, bug reported by citRix:
dialog-ReXiZeR.lua.20191213-2100.7z
(3.36 KiB) Downloaded 17 times
* Fixed reported bug, when the changed by user text after resizing discarded (to original text)
* Even more refactoring and dead code cleaning

Скрипт доработанная версия:
dialog-ReXiZeR.lua.20191214-1400.7z
(3.53 KiB) Downloaded 14 times
* Added wish to align dialogs in "full" and "percent" modes, when it originally belongs to the left or right panel
* Added commented out regular expression for macro keys, which suggested by citRix
* Traditionally code cleaning

Скрипт неплохая в общем версия:
viewtopic.php?p=158081#p158081
Mostly by citRix suggestions implemented:
* Fixed MainMenu handling
* Fixed complex dialog layouts with unadjacent elements
* Added ignoring custom dialog controls (DI_USERCONTROL=255), as in Review plugin color dialogs
* Added adjustment to dialog height in some cases, as in CodePages dialog menu

Скрипт последняя версия:
viewtopic.php?p=158368#p158368
Last edited by Xerox on Fri 03 Jan, 2020 08:52, edited 47 times in total.

User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 8 times

Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг

Post by Xerox »

Latest post of the previous page:

citRiks wrote:
Sun 22 Dec, 2019 09:52
Возможно это от того, что оно не детектится ни как диалоговое, ни как менюшное?
да, оно не вызывает срабатывания в эвенте
а если нет евента, значит у нас нет dialog handle
в макросе получается срабатывание (т.е/ видно что мы на этом окошке поиска)
Ho его не видно тоже как диалог, т.е. без handle тоже там.
если нет handle, то ничего на уровне элементов диалога не сделать..

User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 8 times

Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг

Post by Xerox »

buniak_a_h,
да, там есть такая неясность, но это просто глюк ФАРа такой:
что если мы на живом открытом диалоге уменьшаем размер элемента,
то этим самым обрезается и значение.
Все же изменение размеров элементов для ФАРа это ненатуральная операция,
поэтому не предусмотрен такой сценарий
да и нам это не является необходимостью,
будем сужать элементы пока влазит значение и не дальше
Last edited by Xerox on Sun 22 Dec, 2019 17:33, edited 1 time in total.

User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 8 times

Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг

Post by Xerox »

citRiks wrote:
Sun 22 Dec, 2019 08:10
Поле ввода буквы или цифры в качестве горячей клавиши в диалоге "Назначение горячей клавиши" команды "Параметры плагинов" при увеличении размеров данного диалога сабжевым скриптом текущей версии (dialog-ReXiZeR.lua.20191219-2330.7z) удваивается по размеру. И возвращается в норму при возвращении к нативному размеру диалога.
Эммм... и что с этим не так? )

User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 8 times

Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг

Post by Xerox »

citRiks wrote:
Sun 22 Dec, 2019 14:50
Необходимость реализации данного Вашего вывода ярко подтверждается следующим примером с окном диалога "Информация о плагине" (вызывается через F11 > плагин > F3). Гуид диалога: A39D546A-9A8F-441D-9627-920DED96BDF6. Стоит только чуть-чуть уменьшить размер данного диалогового окна и пропадает вся информация в нём до перезагрузки макросов. .
У меня вроде ничего не пропадает (это ГИФ-анимация):
F3_plugin_info.gif
Last edited by Xerox on Sun 22 Dec, 2019 18:14, edited 3 times in total.

User avatar
zg
zero-gravity
Posts: 5700
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 134 times
Contact:

Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг

Post by zg »

Xerox wrote:
Sun 22 Dec, 2019 17:32
да, там есть такая неясность, но это просто глюк ФАРа такой:
что если мы на живом открытом диалоге уменьшаем размер элемента,
то этим самым обрезается и значение.
это не так. то что вы воспринимаете как глюк, на самом деле фича элемента с типом DI_FIXEDIT. в нём нет горизонтального прокручивания и максимальная длина текста всегда устанавливается в ширину поля. вы ширину уменьшили, максимальная длина уменьшилась, текст обрезался.
Xerox wrote:
Sun 22 Dec, 2019 17:32
Все же изменение размеров элементов для ФАРа это ненатуральная операция
это не так, просто надо понимать, что вы делаете.

buniak_a_h
Posts: 1398
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 96 times
Been thanked: 108 times
Contact:

Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг

Post by buniak_a_h »

Xerox wrote:
Sat 21 Dec, 2019 18:24
на данный момент так, в заголовок чего-то уже не добавляется (лимит количества attachments?), кладу здесь
<…>
Вложения "Не брать" "Не брать" и т.д. …
А почему бы Вам не почистить лишнее? И место освободите, и ограничение преодолеете, м в заблуждение вводить не будете …
Хотел скачать - посмотреть последний вариант, но не понял, откуда . Разбираться лень.
И, кстати, у меня "ручной" вариант ресайзинга (без автоматического выбора размера) занял 121 строчку. Я неправильно задачу понял? Увы, скачать скрипт не удалось из-за тормозов …

citRiks
Posts: 168
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 26 times
Been thanked: 21 times

Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг

Post by citRiks »

Xerox wrote:
Sun 22 Dec, 2019 18:12
У меня вроде ничего не пропадает
Оппа-на! Виноват! Настолько привык благодаря макросу по F11 вместо нативного меню Фара "Команды плагинов" вызывать существенно более информативное и удобное меню плагина "Команды плагинов (PlugMenu)", что нечаянно выдал эту свою устоявшуюся иллюзию за реальность. Прошу прощения!

В действительности же, в отсутствие указанного макроса вызова, окно диалога "Информация о плагине" плагинного меню "Команды плагинов" вызывается через F11 > "Команды плагинов" > F3 (на любой строке меню). И приведённые мною картинки были сделаны оттуда. .
это ГИФ-анимация
Спасибо, что показали эту возможность. Так намного информативнее.
Last edited by HaRT on Mon 23 Dec, 2019 13:55, edited 2 times in total.
Reason: Спрятан офтопик

User avatar
John Doe
Бюрократ
Posts: 12598
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 260 times

Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг

Post by John Doe »

zg wrote:
Sun 22 Dec, 2019 18:41
на самом деле фича элемента с типом DI_FIXEDIT. в нём нет горизонтального прокручивания и максимальная длина текста всегда устанавливается в ширину поля. вы ширину уменьшили, максимальная длина уменьшилась, текст обрезался.
Не правильнее ли будет запретить такие изменения размеров, при которых значение теряется?

User avatar
zg
zero-gravity
Posts: 5700
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 134 times
Contact:

Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг

Post by zg »

John Doe wrote:
Mon 23 Dec, 2019 09:18
Не правильнее ли будет запретить такие изменения размеров, при которых значение теряется?
может это задумано, а следующей командой текст на новый переписывается. не очень понимаю смысл предложения.

citRiks
Posts: 168
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 26 times
Been thanked: 21 times

Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг

Post by citRiks »

Xerox wrote:
Sun 22 Dec, 2019 18:10
citRiks писал(а): ↑
Вс 22 дек, 2019 10:10
Поле ввода буквы или цифры в качестве горячей клавиши в диалоге "Назначение горячей клавиши" команды "Параметры плагинов" при увеличении размеров данного диалога сабжевым скриптом текущей версии (dialog-ReXiZeR.lua.20191219-2330.7z) удваивается по размеру. И возвращается в норму при возвращении к нативному размеру диалога.

Эммм... и что с этим не так? )
Это поле данного диалога предназначено для ввода только одного знака (буквы или цифры). И удвоение его ширины в данном случае неадекватно назначению этого поля.

User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 8 times

Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг

Post by Xerox »

zg wrote:
Mon 23 Dec, 2019 09:25
John Doe wrote:
Mon 23 Dec, 2019 09:18
Не правильнее ли будет запретить такие изменения размеров, при которых значение теряется?
может это задумано, а следующей командой текст на новый переписывается. не очень понимаю смысл предложения.
Не, думаю что товарисч Джон имел ввиду что мне скриптом нехорошо уменьшать РАЗМЕР ФихедЕдита до меньшего когда его ЗНАЧЕНИЕ уже не влазит, и соответсвенно обрезается.
(с эим я согласен и где-то выше сам так уже и сообщал что в дальнейшем исправлю запретом на такие чрезмерные размероуменьшения)
Хотя с другой стороны, это нелогично (хоть и не критично) что геометрические размеры ФихедЕдита должны быть теми же что и размер значения ФикседЕдита.
А ты тоже правильно отметил что в целом это всего лишь функциональность, с которой каждый пусть делает что хочет

User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 8 times

Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг

Post by Xerox »

citRiks wrote:
Mon 23 Dec, 2019 09:37
Это поле данного диалога предназначено для ввода только одного знака (буквы или цифры). И удвоение его ширины в данном случае неадекватно назначению этого поля.
Фик знает
может пусть его, а то слишком много условий получается,
запутывает логику скрипта и посему:
* снижает его образовательную ценность
* менее генерено
* хрупкость перед future downstream changes

User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 8 times

Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг

Post by Xerox »

John Doe wrote:
Mon 23 Dec, 2019 09:18
Не правильнее ли будет запретить такие изменения размеров, при которых значение теряется?
ну да, я так и писал выше

User avatar
John Doe
Бюрократ
Posts: 12598
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 260 times

Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг

Post by John Doe »

zg wrote:
Mon 23 Dec, 2019 09:25
может это задумано, а следующей командой текст на новый переписывается. не очень понимаю смысл предложения.
Смысл в том чтобы уберечь от случайных ошибок.
А после уменьшения ширины значение попросту невалидно, уж лучше его сбросить в ноль, чем куда-то обрезать.

Если же действительно так задумано, то замысел можно выразить в коде явным образом.

User avatar
John Doe
Бюрократ
Posts: 12598
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 260 times

Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг

Post by John Doe »

Xerox wrote:
Mon 23 Dec, 2019 09:57
Хотя с другой стороны, это нелогично (хоть и не критично) что геометрические размеры ФихедЕдита должны быть теми же что и размер значения ФикседЕдита.
Напротив, это вполне логично и наглядно.
И смысла в изменении его размеров вашим скриптом нет никакого.

User avatar
zg
zero-gravity
Posts: 5700
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 134 times
Contact:

Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг

Post by zg »

Xerox wrote:
Mon 23 Dec, 2019 09:57
Хотя с другой стороны, это нелогично (хоть и не критично) что геометрические размеры ФихедЕдита должны быть теми же что и размер значения ФикседЕдита.
какой смысл вы вкладываете в слово «нелогично»? вот описание: Элемент диалога DI_FIXEDIT описывает поле ввода фиксированного размера. То же, что и DI_EDIT, но без возможности прокрутки текста. всё в соответствии с ним.
John Doe wrote:
Mon 23 Dec, 2019 10:44
Смысл в том чтобы уберечь от случайных ошибок.
давайте тогда циклы запретим, ffi, тоже ж можно ошибок наделать, не?

Post Reply

Return to “Обсуждение макросов”