Динамическое/заданное изменение размеров/ сдвиг любых диалогов, меню, списков в зависимости от размера консоли

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Динамическое/заданное изменение размеров/ сдвиг любых диалогов, меню, списков в зависимости от размера консоли

Post by citRiks »

ВВИДУ ОТСУТСТВИЯ ОБЩЕСТВЕННОГО ИНТЕРЕСА (нет лайков)
ОБНОВЛЯТСЯ В ДАЛьНЕЙШЕМ НЕ БУДЕТ
(текущая/экспериментальная/обновленная версия находится у меня,
но дальнейшей синхронизации скорее всего не будет
если все-же. кому чего нужно, то пишите сюда,
скорее всего отвечу, и скорее всего быстро)

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

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.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

Xerox,

Спасибо! Имхо, получился даже несколько более удобный lua-эвент, чем ранее публиковавшийся moon-эвент от Alexyz21.

При этом у себя я внёс в сабжевый скрипт следующие косметические изменения:

1. После строки 268:

Code: Select all

if dlg_guid == "7646F761-8954-42CA-9CFC-E3F98A1C54D3" then return false; end
добавил для исключения из обработки эвентом "Меню выбора макроса" строку 269:

Code: Select all

if dlg_guid == "165AA6E3-C89B-4F82-A0C5-C309243FD21B" then return false; end
Т.к., во-первых, в текущей реализации эвент неадекватно расширяет данные меню, и при этом не обрабатывает их ключами "F5 CtrlAltRight CtrlAltLeft AltRight AltLeft CtrlAltUp CtrlAltDown", как он это делает с другими диалогами и меню.

2. Клавишу макроса настройки F5 заменил на клавишу F2 (как предложено у Alexyz21), поскольку F5 всё-таки ассоциируется с копированием, а F2 больше подходит для настройки.

3. Добавил в макрос настройки поле priority=60; для избегания конфликтов с другими макросами соответствующих макрообластей.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

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

Post by Xerox »

citRiks, Модификации разумные, и вами совершенно правильно выбрано место для исключения определенных диалогов по их ГУИД-ам
Да, клавиша Ф5 ассоциируется с копироиванием, а Ф2 не ассоциируется с выбором меню? :)
Ф5 выбран чтобы соответствовать существующей стилистике, по Ктрл-Ф5 уже искаропки можно передвигать диалоги.
А то что не все окошки реагируют на Ф5 - это просто потому что с них почему-то не приходит эвент Ф5, кажется никакие макросные кнопконажтия не проходят почемут.
Впрочем сейчас у меня идея сейчас, там где не проходит Ф5 через макросы, сделать это через евент.
чтобы поведение было консистентным.
Last edited by Xerox on Sun 08 Dec, 2019 19:21, edited 1 time in total.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

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

Post by Xerox »

citRiks wrote: Sun 08 Dec, 2019 18:41 Имхо, получился даже несколько более удобный lua-эвент, чем ранее публиковавшийся moon-эвент от Alexyz21.
Макрос на FML от Алексиса впечатляет обьемом, и что круто, там еще кажется пропорциональное расширение реализовано, не?
Я этот его макрос и не видел раньше даже.
А он умеет перестраиваться динамически в зависомости от текущих размеров окна?
И переключаться в режимы?
Если не умеет - то это как раз то что надо было решать и не решено.
Еще грустновато на каждый диалог в отдельности лепить рассчитывать диспозиции элементов, как я понял (у Алексиса),
но это не так критично как отсутствие самоподстраивание в динамике ..
Last edited by Xerox on Sun 08 Dec, 2019 19:37, edited 2 times in total.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

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

Post by Xerox »

citRiks wrote: Sun 08 Dec, 2019 18:41 эвент неадекватно расширяет данные меню
А можно ли принтскрин неадекватности?
А реакцию на Ф5 сделаю через евенты (а не макро-реакцию)
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

Xerox wrote: Sun 08 Dec, 2019 19:40 А можно ли принтскрин неадекватности?
Last edited by citRiks on Sun 08 Dec, 2019 20:44, edited 1 time in total.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

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

Post by Xerox »

citRiks, ну он в принципе расширили АльтФ7 до правой границы, он не знал что надо делать align а не раширять ..
в принципе можно замутить или припорциональное расширения, или детектить что этот label маленкий и ему логичнее быть прислоненным к стенке чем расширяться до стенки
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

Xerox wrote: Sun 08 Dec, 2019 21:31 он не знал что надо делать align а не раширять
А стоит ли Вам вообще заморачиваться с этим меню?
Во-первых, если пользователю будет надо, то он сделает длинный дескрипшен и меню подстроится под нужную ширину.
Во-вторых, с регулированием размеров этого меню очень хорошо справляется модуль key2Process.lua.
Xerox wrote: Sun 08 Dec, 2019 19:35 Макрос на FML от Алексиса впечатляет обьемом...
А он умеет перестраиваться динамически в зависомости от текущих размеров окна?
И переключаться в режимы?
Автор так описывает возможности своего скрипта.

И это не FML, а moon-скрипт. Вы можете сами посмотреть его возможности, скопировав его код в файл с расширением .moon и положив рядом со своим скриптом. moon-скриты подхватываются Фаром также хорошо как и lua.
[Dialog_Maximize_2019-09-10-1545](Alexyz21).moon
(13.12 KiB) Downloaded 178 times
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

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

Post by Xerox »

citRiks wrote: Mon 09 Dec, 2019 05:24 А стоит ли Вам вообще заморачиваться с этим меню?
Может и не стоит, но у меня несколько другой подход, может докажется как ошибочный в конечном итоге:

Я стараюсь "не знать" что за тип окна/диалого передо мной, и просто ресайзить все "диалоговое" что есть
Так как это дает искомую универсальность, плюс динамичность, плюсь консистентность поведения.
И потом уж делать исключения из общего правила, по ГУИДу например.
Поэтому я не зню что это меню, или не меню, просто проверяю возможность поменять размер этого окна

Я тут пофиксил кое-что уже, но ЕЩЕ НЕЗАГРУЗИЛ загрузил
(надо почистить мои матерщину в каментах и дампы разных структур) да хрен с ним.
В новопм дизайне я совсме избавился от маркоса, оставил только евент, и всем это пошло только на пользу
Т.е. сейчас за нажатие Ф5 будет отвечать Евент а не макрос раньше
Потому что макрос собака реагирет не на все диалоговые окна, а евенты приходят все как есть
И в принципе логично все держать в евенте, потому что например, инициация размера окна все равно приходит через евент.
Пусть тогда и ресайз/сдвигание делается по евенту..
Зaгружи не сегодня, а завтра наверное, вспомнил что в евент я еще не перевел управление стрелками

ЕЩЕ НЕ ЗАГРУЗИЛ ЭТОТ АПДЭЙТ уже
Last edited by Xerox on Tue 10 Dec, 2019 21:18, edited 3 times in total.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

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

Post by Xerox »

citRiks wrote: Mon 09 Dec, 2019 05:24 Вы можете сами посмотреть его возможности, скопировав его код в файл с расширением .moon
Посмотрел, выглядит тоже прилично
Это правильно что вы его сюда вставили, это последняя версия я так понимаю?
Пусть будет для коллекции
2.) Я и не знал что там есть такая мощная ветка дискуссии, помимо тутошнего форума

Алексиз ручную назадавал наиболее распространные диалоги
но при этом все же это вручную заданное у него и подстраивается под текущие размеры консоли, что хорошо
Но вот например, мне надо часто смотреть в свойствах файла куда он линкуется,
там есть список его (файла) линков, которые в стандартноого размера диалоге обрезаны
А у Алексиза нету такого, с диалогом "свойства файла" он не знаком, кто-то должен написать ему диспозицию
А в этом диалоге 200+ элементов, на всех них надо писать диспозиции, или отлавливать только нужные? ой
А что если диспозиция которая искаропки поменяется, и все нажитое непосильным трудом .. ? ой
Last edited by Xerox on Mon 09 Dec, 2019 12:39, edited 2 times in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

Xerox wrote: Mon 09 Dec, 2019 12:30 это последняя версия я так понимаю?
На текущий момент, да.
кто-то должен написать ему диспозицию
Вероятно, лучше всего это можете сделать Вы, запросто зарегистрировавшись на том форуме.
Xerox wrote: Sun 08 Dec, 2019 11:17 Планирую развивать этот продукт
В текущей реализации скрипта после его установки диалоговые окна раскрываются нараспашку.
Это не критично, но не всегда эстетично.
Имхо, было бы целесообразно, чтобы они 1) меняли нативные размеры только после того, как пользователь этого захочет, и 2) установленный пользователем размер окна (м.б. серии окон) запоминался бы.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

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

Post by Xerox »

citRiks wrote: Mon 09 Dec, 2019 16:38 кто-то должен написать ему диспозицию
Вероятно, лучше всего это можете сделать Вы, запросто зарегистрировавшись на том форуме.
да, точно, счас все брошу и буду писать и проверять (а там есть много чего проверять) 200+ элементов диалога. гы.
citRiks wrote: Mon 09 Dec, 2019 16:38Это не критично, но не всегда эстетично.
ну зато забавно и доказывает работоспособмость скрипта по всем окнам искаропки ))
citRiks wrote: Mon 09 Dec, 2019 16:38 1) меняли нативные размеры только после того, как пользователь этого захочет
Ну в принципе то да, можно например и сейчас поставить layout_mode = "original" где-то у меня в начале скрипта, это специально вынесено как параметер в начало. (там где сейчас стоит layout_mode="margin")
Тогда все окна будут вначале в "оригинале", но можно по Ф5 будет раздвигать если что
citRiks wrote: Mon 09 Dec, 2019 16:38 2) установленный пользователем размер окна (м.б. серии окон) запоминался бы.
вы имеетее ввиду ту ширину что пользователь стрелками задал?
В принципе, это из той же серии что и predefined режимов, и переключение будет в том чилсе и по нему.
Т.е. original => custom => percent=> margin => full =>original => .. итд
с запоминанием последнего выбранного.
Так?
Пока он у меня custom просто не запоминается, но добавить совсем не трудно, вопрос времени,
А я наверное возьму таймаут, хоть и хочеца и допилить и выпилить хер знает чего уже
Last edited by Xerox on Mon 09 Dec, 2019 17:08, edited 2 times in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

Xerox wrote: Mon 09 Dec, 2019 17:01 можно например и сейчас поставить layout_mode = "original" ... там где сейчас стоит layout_mode="margin"
Тогда все окна будут вначале в "оригинале", но можно по Ф5 будет раздвигать если что
Точнее, в строке 105: local layout_sizing_type = "margin" "margin" заменить на "original". Да, так работает: вначале остаётся "оригинал" и по хоткею циклично меняет размеры. И запоминает установленное таким способом состояние до перезагрузки макросов.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

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

Post by Xerox »

citRiks,
допилил, загрузил, частично пожелания исполнены,
отпишитесь пожалуйста чего все еще не очень
Кроме вас тестировщики молчаливые, помогайте )
Бесит то, что легко можно допилить до конца, -
* добавить пропорциональность,
* дать побольше ума алгоритму позиционирования,
* запоминать между запусками ФАРа, -
.. но все разумные сроки на эти допиливания (в ущерб работе и личной жизни) уже закончились,
возьму тайм-аут на недельку думаю что ..
а кто без меня воплотит, допилит, отполирует - тот вообще молодец! ))
Last edited by Xerox on Tue 10 Dec, 2019 21:26, edited 2 times in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

dialog-resizer.lua.20191212.7z
Xerox wrote: Tue 10 Dec, 2019 21:23 возьму тайм-аут на недельку
Об этом можете совсем не беспокоиться. Здесь у большинства так: если нет времени (по службе или быту завал), то и где же его взять. Не впадать же в "проклятое переутомление", как выразился классик.
Post Reply

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