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

Здесь обсуждается всё, что касается макросов.
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
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

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

Post by Xerox »

Latest post of the previous page:

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.
User avatar
HaRT
Moderator
Posts: 10855
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Xerox wrote: Thu 12 Dec, 2019 22:22 В оббычном INI-файлке хранить нечто
Не лучше ли воспользоваться готовым механизмом хранения настроек и метаинформации скрипта, например, используемым во многих скриптах John Doe?
Last edited by HaRT on Thu 12 Dec, 2019 22:53, edited 1 time in total.
Reason: Добавлена ссылка на тему Script Browser'а
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

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

Post by Xerox »

HaRT wrote: Thu 12 Dec, 2019 22:24 Не лучше ли воспользоваться готовым механизмом хранения настроек скрипта, например, используемым во многих скриптах John Doe?
буду благодарен за наиболее актуальную ссылку?
(во избежание моего раскапывания разных версий и прочих блужданий в дебрях кода)

спасибо, ссылка есть

Для ИНИ я пока планировал через ФФИ использовать вот это семейство АПИ для работы с ИНИ,
довольно приятные штуки:
"GetPrivateProfileIntA", "GetPrivateProfile****"
https://docs.microsoft.com/en-us/window ... rofileinta

За этими обскурными названиями скрываются нативные специальные функции,
почти полностью удовлетворящие даже самый изысканный вкус.
"Почти", да не совсем.
Но в нашем случае, думаю, это будет не "почти" а вполне "совсем"
Было бы очень light-weight & native для Винды
Last edited by Xerox on Fri 13 Dec, 2019 08:28, edited 3 times in total.
LAT
Posts: 343
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 22 times
Been thanked: 39 times

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

Post by LAT »

Xerox wrote: Thu 12 Dec, 2019 22:22 В оббычном INI-файлке хранить нечто
Еще можно использовать mf.msave и mf.mload.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Xerox wrote: Thu 12 Dec, 2019 21:46 Например - какого ляда в ЛУА не сделали регекспы такими же как в других языках?
На то были причины.
Но если вам так не нравятся регэкспы луа, то пользуйтесь библиотекой regex, тоже встроенной.
LAT
Posts: 343
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 22 times
Been thanked: 39 times

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

Post by LAT »

Xerox wrote: Thu 12 Dec, 2019 22:22 В обычном INI-файлке хранить нечто вроде
Или вариант с файлом конфигурации: viewtopic.php?f=15&t=11392, viewtopic.php?t=7873 (в файле конфигурации сделать return, в скрипте: config = loadfile(путь))
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

Xerox wrote: Thu 12 Dec, 2019 21:46Например - какого ляда в ЛУА не сделали регекспы такими же как в других языках?
1. пункт правил 1.2.
2. мат.
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: Thu 12 Dec, 2019 21:46 Возьмите последнюю версию "dialog-ReXiZeR.lua.20191213-2100.7z" и проверьте пожалуйста.
У меня такого уже не повторяется
Проверил — нюанс исчерпан, спасибо.

Остальное посмотрел пока что лишь бегло. Впечатление от скрипта хорошее. Ещё раз спасибо.

И желательно бы продолжение на ru-board`е.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

Посмотрел работу последней версии скрипта внимательнее на разного рода диалогах и меню. И в целом прежнее весьма благоприятное впечатление ещё более укрепилось.

Однако пока что сохраняются вылеты фара на диалоговых окнах уменьшенных размеров.

В т.ч. в процессе непосредственного уменьшения скриптом размеров дискового меню.

Кроме того, при работе скрипта с этим меню есть определённая особенность, заключающаяся в следующем.

При первичном вызове дискового меню оно позиционируется в области панели, в которой предполагается активация пункта меню. Но после вызова скрипта оно центрируется, и становится непонятным к какой панели меню относится. А тем более при максимальном его расширении. Особенно если есть несколько дисков (в т.ч. сетевых и выносных) и меню насыщено дополнительными пунктами, то оно перекрывает экран Фара почти полностью. В данном случае желательна бы некая дополнительная метка в заголовке дискового меню типа: "Диск (активная панель)" или, соответственно, "Диск (пассивная панель)".
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

По поводу вылетов - это похоже на баг в Фаре:
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

Xerox,

Касательно регекспов в ключах макросов.

У меня вот такой регексп для макроса сабжевого скрипта работает:

Code: Select all

key="/(.Ctrl)?(.Alt(Right|Left|Up|Down))|(F2)/";
НО!
Имхо, предпочтительно бы ключи макросов задавать без регекспов, всё-таки. Т.е. так как сейчас в макросе сабжевого скрипта, на мой взгляд, существенно лучше.

Когда ключи заданы регекспами, то искать макросы с определёнными ключами неудобно. Да и в макробраузерах заданные регекспами ключи смотрятся как ребусы.

(upd: код регекспа уточнён)
Last edited by citRiks on Sat 14 Dec, 2019 04:05, 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: Fri 13 Dec, 2019 13:58 Но после вызова скрипта оно центрируется, и становится непонятным к какой панели меню относится. А тем более при максимальном его расширении.
так вроде с последующими (вроде необременительными?) переключениями по Ф5 он возвращется в "оригинал", и на правильную сторону, не?
Т.е. так можно и посмотреть на какой он стороне, и потом расширить обратно
Last edited by Xerox on Fri 13 Dec, 2019 21:17, 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: Fri 13 Dec, 2019 20:08 У меня вот такой регексп для макроса сабжевого скрипта работает:..
это спасибо, кладу в скрипт закомментированным
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

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

Post by Xerox »

Shmuel wrote: Fri 13 Dec, 2019 14:25 По поводу вылетов - это похоже на баг в Фаре:..
Я еще не воспрозводил сценарий, и пишу насколько я понял:
1.) Воспроизводится когда при инициализации диалога (евент),
его элементы изменены так или иначе (например моим скриптом)
2.) .. и на него еще запускается кастомный еще один макрос,
который на этот уже изменный диалог делает SetFocus и посылает нажатия.

так?
Last edited by Xerox on Fri 13 Dec, 2019 22:28, edited 2 times in total.
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

Воспроизводится у меня так: AltF2 затем несколько раз AltLeft, пока не вылетит.
Анализ кода скрипта я не производил, похоже, что Фару передаётся какой-то невалидный параметр размера или координат диалога, который Фар должен был бы предварительно обработать или проигнорировать, но Фар его принимает к исполнению и падает.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

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

Post by Xerox »

Shmuel, Интересно.
АльтФ2 - это меню дисков ведь?
И АльтВлево - это ужатие моим макросом?
У меня не воспроизводится..
А, дошло
Так вы же его размер в ноль сужаете )
Ну я бы сказал, что человек желающий превратить ширину диалога в ноль,
вполне заслуженно получает вылет ФАРа,
в принципе это и есть желаемый результат )
В принципе и в скрипт можно предусмотреть проверку MinWidth > 0,
но я посчитал что незачем, - типа пусть убивают/ся таким способом, если хочется )

citRiks, отпишитесь еще раз верно ли мы тут воспроизводим/понимаем ваши сценарии?
Last edited by Xerox on Fri 13 Dec, 2019 22:30, edited 3 times in total.
Post Reply

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