Динамическое/заданное изменение размеров/ сдвиг любых диалогов, меню, списков в зависимости от размера консоли
Динамическое/заданное изменение размеров/ сдвиг любых диалогов, меню, списков в зависимости от размера консоли
ВВИДУ ОТСУТСТВИЯ ОБЩЕСТВЕННОГО ИНТЕРЕСА (нет лайков)
ОБНОВЛЯТСЯ В ДАЛьНЕЙШЕМ НЕ БУДЕТ
(текущая/экспериментальная/обновленная версия находится у меня,
но дальнейшей синхронизации скорее всего не будет
если все-же. кому чего нужно, то пишите сюда,
скорее всего отвечу, и скорее всего быстро)
Предыстория вопроса
Современный мир характеризуется большим количеством больших экранов.
А также длинными именами файлов, и прочими "многа букав"
В то же время, размер диалоговых окон в ФАРе, не менялся десятилетиями,
обладая слишком малой величиной, чтобы полностью соответствать современным вызовам.
Более того, не было никакой возможности расширить окошки до приемлимых размеров даже вручную.
Но эти эти горести остались в далеком темном прошлом (смахивает слезу)
поскольку сейчас у нас есть Автоматический Раздвигатель Окон!
https://github.com/dr-dba/far-lua-dialogs-control
Этот "мануал/ридми" старый и не отражает всего функционала.
вопросы, пожелания - писать, опять же, см. начало текста
ОБНОВЛЯТСЯ В ДАЛьНЕЙШЕМ НЕ БУДЕТ
(текущая/экспериментальная/обновленная версия находится у меня,
но дальнейшей синхронизации скорее всего не будет
если все-же. кому чего нужно, то пишите сюда,
скорее всего отвечу, и скорее всего быстро)
Предыстория вопроса
Современный мир характеризуется большим количеством больших экранов.
А также длинными именами файлов, и прочими "многа букав"
В то же время, размер диалоговых окон в ФАРе, не менялся десятилетиями,
обладая слишком малой величиной, чтобы полностью соответствать современным вызовам.
Более того, не было никакой возможности расширить окошки до приемлимых размеров даже вручную.
Но эти эти горести остались в далеком темном прошлом (смахивает слезу)
поскольку сейчас у нас есть Автоматический Раздвигатель Окон!
https://github.com/dr-dba/far-lua-dialogs-control
Этот "мануал/ридми" старый и не отражает всего функционала.
вопросы, пожелания - писать, опять же, см. начало текста
Last edited by citRiks on Fri 27 Aug, 2021 11:25, edited 50 times in total.
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
Latest post of the previous page:
Ой. А вы что ли не знали, что по АльтРайт можно и расширять?
Проверял все это, сейчас еще раз проверил - вроде все ОК.
Моя ФАРа версия 3.0.0.5511 x64.
Нужна иллюстрация ваша значит действительно.
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
Собираюсь на этих выходных испоравить наползания элементов.
Там надо просто при раширяниях проверять не стоит ли на пути другой элемент.
Eсли стоит, то не лезть дальше.
Таким образом расширятся до стенки будут только крайние правые.
Другая альтернатива - пропорциональное расширение всех, - возможно красивше, но чуть сложнее..
Там надо просто при раширяниях проверять не стоит ли на пути другой элемент.
Eсли стоит, то не лезть дальше.
Таким образом расширятся до стенки будут только крайние правые.
Другая альтернатива - пропорциональное расширение всех, - возможно красивше, но чуть сложнее..
Last edited by Xerox on Fri 20 Dec, 2019 14:19, edited 1 time in total.
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
Делал такое в GUI. Ничего не сложнее. И Left, и Width умножаете на к-т. Проще, чем проверять, не налезло ли. Тем более, что элемент справа в массиве может быть где угодно (и раньше, и намного позже анализируемого)
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
buniak_a_h, ну я могу и согласиться наверное, как и доверить вам такое допиливание может?
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
может, да, надо проверять все элементы.
Да, в потенциале может получиться многовато итераций, но можно (и нетрудно) сделать это эффективно
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
Непросто. Есть ещё многострочные элементы (LIST, BOX-ы, TEXT). Не так всё просто … А ещё есть элементы, у которых не заполнен (== 0) X2 (текст, например, обходится без этого).
Не, не интересно … Я уже выпендрился - сделал wrap для элементов, не влезающих по ширине.
Кстати, есть заметочка(если Вы этот момент учитываете - звиняйте, я не смотрел Ваш скрипт):
надо как-то смотреть на флаг FDLG_SMALLDIALOG: в зависимости от него принимать решение о координатах BOX-а, который на весь диалог . И не только BOX-ы: ещё и тексты с DIF_SEPARATOR… . Это - так, к слову. Я собирался когда-то такой сервис делать, а потом не стал.
Last edited by buniak_a_h on Fri 20 Dec, 2019 15:02, edited 1 time in total.
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
Last edited by Guest on Fri 20 Dec, 2019 15:12, edited 1 time in total.
Reason: Спрятан офтопик
Reason: Спрятан офтопик
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
не предусматривал я ничего, и Ваше сотрудничество очень ценно для нашего проекта.
Посмотрим по ходу дела, пока я не буду предусматривать ничего кроме самой геометрии элемента.
учитывая что есть и "прозрачные" (кроме границы) элементы-рамки
В связи с этим, а где это есть multi-line text box (=FDLG_SMALLDIALOG) ?FDLG_SMALLDIALOG
Он должне быть непрозрачный конечно тогда, но мне казалось что ФАРе такого элемента нет в принципе
Ну давайте сделаем так, пока киньте мне где сидят диалоги с такими проблемными флагами (FDLG_SMALLDIALOG, DIFF), буду на них тестить
Last edited by Xerox on Fri 20 Dec, 2019 15:16, edited 2 times in total.
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
Я вопроса не понял. Это - две не связанные темы.
multi-line text получается при DI_TEXT с ключом DIF_WORDWRAP. Причем сколько строк в реали этот текст занимает - надо считать. Представьте, что Y1 у него = 5, а Вы пытаетесь определить, как надо ограничить элемент DI_EDIT с Y1=7 . Далее всё зависит от содержимого текста. Если он поместился в две строки (5 и 6), то ограничивать edit не требуется, а если не поместился - надо.
Теперь про ключ FDLG_SMALLDIALOG. Если этот флаг есть, то надо, чтоб "основная рамка" (рамка вокруг диалога) была от X1=1 до X2=w-1 (w - ширина диалога), а если нет - то от X1=4 до X2=w-4 ( или 3? точно не помню). Иначе DI_TEXT с флагом DIF_SEPARATOR вылезет или не дотянется до рамки.
Не знаю, учитываете ли Вы при расчёте координат "исключения":
1. если у элемента DI_TEXT с флагом DIF_SEPARATOR указано X1=-1, то сдвигать (менять X1) нельзя. Это означает "текст по центру".
2. Касаемо как раз "основной рамки": X1 менять нельзя, а X2 должно соответствовать ширине диалога с учётом обсужденного флага …
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
Это просто я так подтверждал, что в этом случае всё нормально. Извиняюсь, если по контексту непонятно изложил.Xerox wrote: ↑Fri 20 Dec, 2019 14:15Code: Select all
citRiks писал(а): ↑ Пт 20 дек, 2019 10:13 а по AltRight возвращаются к прежнему размеру и увеличиваются далее.
Ой. А вы что ли не знали, что по АльтРайт можно и расширять?
Последовательные . Фар 5530 x86 и в x64 тоже.Xerox wrote: ↑Fri 20 Dec, 2019 14:15Code: Select all
citRiks писал(а): ↑ Пт 20 дек, 2019 10:13 А вот при тех же действиях в дисковым меню и в Главным меню наблюдаются очевидные артефакты
Проверял все это, сейчас еще раз проверил - вроде все ОК.
Моя ФАРа версия 3.0.0.5511 x64.
Нужна иллюстрация ваша значит действительно
Last edited by citRiks on Fri 20 Dec, 2019 16:39, edited 1 time in total.
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
citRiks,
Ааа, не, ну это опять загонять в ноль ширину диалога и удивлятся.
Hy, будет диалог ноль, элементы куда-нибудь уедут или исчезнут,
но все равно. переключаясь по Ф5 попадаем в адекватное сосстояние
Ааа, не, ну это опять загонять в ноль ширину диалога и удивлятся.
Hy, будет диалог ноль, элементы куда-нибудь уедут или исчезнут,
но все равно. переключаясь по Ф5 попадаем в адекватное сосстояние
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
артефактов, наблюдаемых в дисковом меню (в предыдущий пост картинки не поместились). Это наблюдается и под КонЭму и без.citRiks wrote: ↑Fri 20 Dec, 2019 08:13 В 5530 диалоги "Копировать" (F5), "Переместить" (F6), "Создание папки" (F7), меню "Экраны" (F12) и другие текущей вресией сабжевого скрипта по AltLeft плавно уменьшаются до 0-рамера (и, похоже, что и далее в минус тоже), а по AltRight возвращаются к прежнему размеру и увеличиваются далее.
А вот при тех же действиях в дисковым меню и в Главным меню наблюдаются очевидные артефакты
Насчёт дискового меню полагаю, что такое поведение связано с его заполнением плагином "Редактор меню дисков (Disk menu)". Потому что в свежей ночной сборке без добавлений это не воспроизводтся, а только в присутствии добавлений плагином.
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
Да, это самое главное. Выше приведённые два примера запоминаются до перезагрузки. Желательно бы, чтобы запоминание позиции было не автоматическим, а произвольным, т.е. по команде пользователя. И действовало бы до последующей смены/отмены, т.е. переходило бы от сессии к сессии Фара.
- HaRT
- Moderator
- Posts: 10823
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
В каких сценариях безусловное запоминание выставленной пользователем геометрии диалога нежелательно?
Фар есть инструмент, а не нянька. © 2009 DrKnS
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
В любых, когда слишком пережал или разжал размеры диалога/меню и затем впопыхах или просто необдуманно прешёл к другим оперециям. Включая и самые крайние случаи, которые приведены постами выше.
- HaRT
- Moderator
- Posts: 10823
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
Мне кажется, ориентироваться на такой сценарий неоправданно. В гораздо большей доле случаев пользователю будет как раз удобно, чтобы тщательно выверенные и руками выставленные размеры сохранялись и без явной команды. Если работать с компьютером впопыхах и необдуманно, то размеры диалогов — это меньшая из проблем.
Фар есть инструмент, а не нянька. © 2009 DrKnS