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

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

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

Post by Xerox »

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

https://github.com/dr-dba/LUA-FAR-STUFF ... .XeR0X.Lua

Last edited by Xerox on Fri 03 Jan, 2020 08:52, edited 47 times in total.

citRiks
Posts: 672
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 196 times
Been thanked: 44 times

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

Post by citRiks »

Latest post of the previous page:

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

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

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

Post by Xerox »

citRiks wrote:
Wed 11 Dec, 2019 02:33
C:\FarTest86\Profile\Macros\scripts\dialog-resizer.lua:283: attempt to call global 'wopds' (a nil value)
Это типа tracing у меня там, надо удалить все строчки где есть wopds, не нужный ни для чего кроме кустарного tracing.
debugging-а то нет в ЛУА нормального.
Last edited by Xerox on Wed 11 Dec, 2019 08:16, edited 3 times in total.

citRiks
Posts: 672
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 196 times
Been thanked: 44 times

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

Post by citRiks »

Xerox wrote:
Wed 11 Dec, 2019 08:10
надо удалить все строчки где есть wopds
Закоммитил всего одну 285 строку:

Code: Select all

-- if dlg_init then wopds("DlgITmCnt: "..tostring(far.MacroExecute("return Dlg.ItemCount")[1])) end
и эвент заработал. Спасибо.
debugging-а то нет в ЛУА нормального
Возможно Вам стоит присмотреться к Luacheck и к MacroCheck.
А кто не поверит в наше миролюбие,
Тот кровью умоется.
И будет такая борьба за мир,
Что камня на камне не останется.

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

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

Post by Xerox »

citRiks wrote:
Wed 11 Dec, 2019 09:35
Возможно Вам стоит присмотреться к Luacheck и к MacroCheck.
вы не первый человек для которого проверка корректности и дебаггинг это одно и то же )) Но спасибо за рекоммeндации, в копилку
citRiks wrote:
Wed 11 Dec, 2019 09:35
..и эвент заработал. Спасибо.
чувствуется ли разница к лучшему?
Ф5(или ваш выбор Ф2) сейчас можно делать на любых и всех окнах, потому что сделано через евент
поменять Ф5 на Ф2 можно поменяв 116 на 113, где там проверка инпута у меня
Двиганья/раздвиганье cтрелками делается через макрос, поэтому не везде,
если будет спрос (пока вроде нет спроса) - сделаю тоже двиганье стрелками везде

citRiks
Posts: 672
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 196 times
Been thanked: 44 times

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

Post by citRiks »

* Ctrl-Alt- <Arrows> — дает 2D перемещение
Хорошо. В т.ч. хорошо и то, что есть возможность выводить окно за пределы экрана. Порой полезно посмотреть под диалогом.
* Alt- <Left | Right> — изменение ширины вручную
Тоже хорошо, когда в увеличенную от original сторону. Однако изменение в меньшую сторону (от original) получается забавным по и и чреватым по последствию. Последнее заключается в .
* Если пользователь применил одну из команд выше, этим:
создал «пользовательское» состояние макета, запомнил,
и добавлен в качестве дополнительного состояния к существующим ранее состояниям оригинал / маржа / процент / полный / (+ необязательный пользовательский)
Из этого я не понял, что означает "запомнил"? У меня позиции и размеры окон запоминаются только до перезагрузки макросов.
Кстати, состояние по умолчанию может быть изменено в теле скрипта
Имхо, это желательно особо указать в скрипте, с акцентированием позиции, в которой можно производить данное изменение.
отпишитесь пожалуйста, чего все еще не очень
Весьма желательно запоминание установленных с помощью эвента размеров и позиций диалоговых окон между сессиями Фара.

А другое (* добавить пропорциональность, * дать побольше ума алгоритму позиционирования, и т.д. и т.п.) можно и факультативно, на усмотрение автора. И если сделать не сложно, то лучше бы и сделать. Ведь и посмотреть-поучиться полезно, и, м.б., отложить в загашник для возможного последующего применения в других случаях.
А кто не поверит в наше миролюбие,
Тот кровью умоется.
И будет такая борьба за мир,
Что камня на камне не останется.

citRiks
Posts: 672
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 196 times
Been thanked: 44 times

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

Post by citRiks »

Xerox wrote:
Wed 11 Dec, 2019 10:56
поменять Ф5 на Ф2 можно поменяв 116 на 113, где там проверка инпута у меня
Да, до этого я уже и сам догадался, и у себя поменял F5 на F2. А также опробовал эвент и в ситуации, когда хоткей (F2) работает из тела эвента, и в ситуации, когда из макроса.

И, на мой взгляд, предпочтительнее хоткеи, отвечающие за изменения размеров диалоговых окон, активировать из отдельного макроса, а не из тела самого эвента. Далее попробую сформулировать почему я так полагаю.

Дело в том, что пользователь может назначить на хоткей, совпадающий с назначенным эвенту Вами (или переназначенным в эвенте самим же пользователем), свой макрос или даже несколько. По типу как я привёл реальный пример с макросом на F5. И тогда хоткей эвента и хоткей макроса будут конфликтовать, и необходимо будет делать выбор: что предпочтительнее? И оставить либо эвент, либо макрос обычного вида. Поскольку одновременно оба они активированы быть не могут. Если же управляющий размерами окон хоткей будет активироваться не из эвента, а из макроса, тогда в случаях его совпадения с другими макросами пользователя будет выводиться меню выбора макроса. Для чего оно, собственно, и предназначено.

P.S. С учётом того, что Вы полагаете более целесообразным активировать хоткеи из тела эвента, а не из особого макроса, я сделал запрос на расширение функциональности Меню выбора макроса.
Last edited by citRiks on Wed 11 Dec, 2019 12:44, edited 1 time in total.
А кто не поверит в наше миролюбие,
Тот кровью умоется.
И будет такая борьба за мир,
Что камня на камне не останется.

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

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

Post by Xerox »

citRiks wrote:
Wed 11 Dec, 2019 11:22
Из этого я не понял, что означает "запомнил"? У меня позиции и размеры окон запоминаются только до перезагрузки макросов.
Имелось ввиду "запоминает заданную (кастомную) диспозицию между запусками одного и того же диалога"
Между запускаами ФАРа, не запоминается ничего конечно, да
citRiks wrote:
Wed 11 Dec, 2019 11:22
Но когда диалог копирования эвентом уменьшен по размеру, то мой допмакрос роняет Фар.
насколько я понимаю это не критично?
могу попробовать понять почему ему надо падать здесь, может этот баг вылезет и в другом каком месте

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

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

Post by Xerox »

citRiks wrote:
Wed 11 Dec, 2019 11:22
Имхо, это желательно особо указать в скрипте, с акцентированием позиции, в которой можно производить данное изменение.
Угу
citRiks wrote:
Wed 11 Dec, 2019 12:18
P.S. С учётом того, что Вы полагаете более целесообразным активировать хоткеи из тела эвента, а не из особого макроса, я сделал запрос на расширение функциональности Меню выбора макроса
Спасибо ))
целесообразность заключается в том что макрос НЕ везде получает нажатие.. т.е. его AREAS не все, например ТаскЛист (Ктрл-Щ) не вызывает макрос ни по какому нажатию..
хотя.. идея. я не пробовал что будет если AREA сделать Коммон, может тогда начент ловить отовсюду, и внутри уже макроса решать наш этот поциент или не наш

был мой косяк
Last edited by Xerox on Fri 13 Dec, 2019 21:01, edited 2 times in total.

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

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

Post by Xerox »

citRiks wrote:
Wed 11 Dec, 2019 11:22
Хорошо. В т.ч. хорошо и то, что есть возможность выводить окно за пределы экрана. Порой полезно посмотреть под диалогом.
На ту же тему:
* Ктрл-Альт-Шифт прячет до отпускания клавиш верхнее текущее окно
* Ктрл-Ф5 и потом стрелками двигает окно

citRiks
Posts: 672
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 196 times
Been thanked: 44 times

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

Post by citRiks »

citRiks wrote:
Wed 11 Dec, 2019 12:18
С учётом того, что Вы полагаете более целесообразным активировать хоткеи из тела эвента, а не из особого макроса, я сделал запрос на расширение функциональности Меню выбора макроса.
Но Shmuel ответил, что "Такой возможности нет". Значит будем исходить из этого.

Xerox wrote:
Wed 11 Dec, 2019 13:01
Ктрл-Ф5 и потом стрелками двигает окно
Да, но и Ваши дополнения не помешают.

Ктрл-Альт-Шифт прячет до отпускания клавиш верхнее текущее окно

А вот это клавишесочетание я освобождаю (через System.CASRule в far:config) для использования под макросы. В т.ч. очень мне нравится возможность назначать макросы на двойные нажатия на "чистые" модификаторы.

Xerox wrote:
Wed 11 Dec, 2019 12:56
ТаскЛист (Ктрл-Щ) не вызывает макрос ни по какому нажатию..
У меня на этот ключ назначен макрос от John Doe для сокрытия/показа панелей вместо Ctrl+Alt+Shift.

Xerox wrote:
Wed 11 Dec, 2019 12:51
насколько я понимаю это не критично?
Я пока что не знаю практического применения диалогам уменьшенных размеров.
А кто не поверит в наше миролюбие,
Тот кровью умоется.
И будет такая борьба за мир,
Что камня на камне не останется.

citRiks
Posts: 672
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 196 times
Been thanked: 44 times

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

Post by citRiks »

Last edited by citRiks on Thu 12 Dec, 2019 14:08, edited 1 time in total.
А кто не поверит в наше миролюбие,
Тот кровью умоется.
И будет такая борьба за мир,
Что камня на камне не останется.

citRiks
Posts: 672
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 196 times
Been thanked: 44 times

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

Post by citRiks »

Xerox,

Обнаружен досадный нюанс в действиях текущей редакции скрипта. Дело в следующем.

Если из меню "Ассоциации для файлов" ("Edit file associations") хоткеем Ins вызвать диалог "Редактирование ассоциаций файлов", начать вводить в него какие-либо данные и, не закончив ввода (т.е. не нажав кнопку { OK }), несколько раз применить сабжевый скрипт, то в момент перехода от максимального размера диалога к исходному все введённые данные теряются.

Тоже происходит и с другими диалогами. В частности, если в поле ввода диалога "Копировать" автоматически подставляемый там путь дополнить, например, изменённым именем объекта копирования, и затем применить сабжевый скрипт, то, точно также, как и в первом случае, при переходе от максимального размера диалога к его исходному размеру дополненные данные пропадают.
А кто не поверит в наше миролюбие,
Тот кровью умоется.
И будет такая борьба за мир,
Что камня на камне не останется.

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

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

Post by Xerox »

citRiks wrote:
Thu 12 Dec, 2019 19:44
то в момент перехода от максимального размера диалога к исходному все введённые данные теряются
Да, все верно, есть такой нюанс.
и поскольку нюанс замечен, то пришлось его исправлять )
Возьмите последнюю версию "dialog-ReXiZeR.lua.20191213-2100.7z" и проверьте пожалуйста.
У меня такого уже не повторяется.

2.) Еще реабилитировано срабатывание через макрос, там был мой исправленный косяк,
Как вы справедливо замечали так лучше в плане уживания с дригими макросами, последовательнее, т.е. лучше для экосистемы ФАРа.
Механизм срабатывания (Ф5) через евент нейтрализован, но оставлен в образовательных целях и на всякий случай.
Last edited by Xerox on Thu 12 Dec, 2019 21:59, edited 4 times in total.

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

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

Post by Xerox »

Прочитал Ваши Замечания к ТуДу списку, в принципе со всем согласен, по крайней мере на уровне "добавить как опцию".
На это отвечу отдельно, как кажется на наиболее Вам критичное:
citRiks wrote:
Thu 12 Dec, 2019 14:06
5a) Факультативно дополнение: а нельзя ли сделать для макросов, типа приведённого мною на F5 (он такой у меня действительно не один), кондишен или иным условием так, чтобы подобные макросы не активировались бы в диалоговых окнах меньших по размерам по сравнению с обычными их размерами?
Да, можно, там работы на копейки, если под хорошее настроение делать
Только сначала надо сделать какой-то механизм конфигураций сохраняемых между запусками.
И там хранить эти исключения и все что нужно.
В самом скрипте хранить исключения - не комильфо я считаю,
хотя каждый волен приписать там чего и как ему нравиться конечно
Last edited by Xerox on Thu 12 Dec, 2019 22:15, edited 1 time in total.

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

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

Post by Xerox »

citRiks wrote:
Thu 12 Dec, 2019 14:06
8.) Вероятно, (включить обработку?) дискового меню, центрированного
???
Шо значит "?" ?
Обычное дисковое меню, типа такого:

ПРавда то что я тогда имел ввиду, уже починено и неактуально )
Last edited by Xerox on Thu 12 Dec, 2019 22:13, edited 1 time in total.

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

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

Post by Xerox »

citRiks wrote:
Thu 12 Dec, 2019 14:06
Не слишком ли сложно?
Да не, это фигня. В обычном INI-файлке хранить нечто вроде:

Code: Select all

[<DIALOG-GUID-HERE>]
handle=true
allow-narrowing=false
prefered-size=123
margin-size=5
custom-position-X=15
custom-position-Y=20
custom-width=100
custom-height=50
; .. whatever needed else

[<OTHER-DIALOG-GUID-HERE>]
; that means "do not resize this dialog at all":
handle=false
;...
При инициализции прочитать и запихнуть в двумерный массив, и собственно все.

Отмечу также что это принципиально иной подход чем у Алексиза.
У Алексиза мы должны записать все про все диалоги и элементы диалога.
Мы же пишем сюда только исключения, которые, мне кажется, не нужны-то и особо в 99.99%, т.к. переключение размеров работает гладко
Хотя я и рассмотрю позже тот сценарий когда у СитРикса было вылетание на меньшем размере + ПэйджДаун (кажется), - может там можно вылечить или почерпнуть нечто полезное
Last edited by Xerox on Thu 12 Dec, 2019 22:56, edited 2 times in total.

Post Reply

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