Динамическое/заданное изменение размеров/ сдвиг любых диалогов, меню, списков в зависимости от размера консоли
Динамическое/заданное изменение размеров/ сдвиг любых диалогов, меню, списков в зависимости от размера консоли
ВВИДУ ОТСУТСТВИЯ ОБЩЕСТВЕННОГО ИНТЕРЕСА (нет лайков)
ОБНОВЛЯТСЯ В ДАЛьНЕЙШЕМ НЕ БУДЕТ
(текущая/экспериментальная/обновленная версия находится у меня,
но дальнейшей синхронизации скорее всего не будет
если все-же. кому чего нужно, то пишите сюда,
скорее всего отвечу, и скорее всего быстро)
Предыстория вопроса
Современный мир характеризуется большим количеством больших экранов.
А также длинными именами файлов, и прочими "многа букав"
В то же время, размер диалоговых окон в ФАРе, не менялся десятилетиями,
обладая слишком малой величиной, чтобы полностью соответствать современным вызовам.
Более того, не было никакой возможности расширить окошки до приемлимых размеров даже вручную.
Но эти эти горести остались в далеком темном прошлом (смахивает слезу)
поскольку сейчас у нас есть Автоматический Раздвигатель Окон!
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:
и далее в теме по приведённой ссылке ниже находим более свежий трейсер-профайлер:citRiks wrote: ↑Sat 13 Feb, 2021 14:00 юзеру посылается трейсер (профайлер), и/или усовершентвованный StackTracePlus@Xer0X:
viewtopic.php?f=15&t=9611
Во-первых, прошу обратить Ваще внимание на то, что распакованный модуль называется
StackTracePlusPlus-@Xer0X.lua
(со знаком минус в имени), а в самом же этом файле в инструкции по его установке в строке 28 имя вызываемого модуля указано как StackTracePlusPlus@Xer0X
(т.е. без знака минус). И, соответственно, после перезагрузки макросов модуль не обнаруживается. Во-вторых, после внесения необходимой правки в _macroinit.lua (т.е. после дополнения знака минус в имя модуля) LuaMacro белым по красному ругается при загрузке Фара, если среди макросов есть последняя по времени (вчерашняя) версия Dialog_ReXiZeR.@Xer0X.Lua (с сопутствующими ей модулями): error in error handling
Last edited by Ann on Sat 13 Feb, 2021 16:07, edited 1 time in total.
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
citRiks,
После решения проблемы с установкой StackTracePlusPlus-@Xer0X и комплект Dialog_ReXiZeR.@Xer0X версии 1.2.3 тоже стал устанавливаться и функционировать.
Ещё раз спасибо.
После решения проблемы с установкой StackTracePlusPlus-@Xer0X и комплект Dialog_ReXiZeR.@Xer0X версии 1.2.3 тоже стал устанавливаться и функционировать.
Ещё раз спасибо.
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
Ann,
Ключевая функционалность:
* Эта штука запоминает все меню, и всегда встает на последнее выбранное.
* Прислоняет и запоминает прислонение
* если есть режим прислонения, то изменение размера происходит в соответствии с ним.
Т.е., если например, вы сделали прислонение к левой границе экрана,
и стали расширять диалог, то он будет расширятся направо, не выходя за левую границу.
если диалог же просто произвольно перемещен налево,
то изменение размера будет происходить в обе стороны сохраняя центровку.
Ключевая функционалность:
* Эта штука запоминает все меню, и всегда встает на последнее выбранное.
* Прислоняет и запоминает прислонение
* если есть режим прислонения, то изменение размера происходит в соответствии с ним.
Т.е., если например, вы сделали прислонение к левой границе экрана,
и стали расширять диалог, то он будет расширятся направо, не выходя за левую границу.
если диалог же просто произвольно перемещен налево,
то изменение размера будет происходить в обе стороны сохраняя центровку.
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
Это, как я понял, речь о размерах меню/диалога. Верно?
Нашёл в теме, что прислонение делается ключами AltPageUp/AltPageDown/AltHome/AltEnd. Да, прислонение осуществляется.* Прислоняет и запоминает прислонение
Да, это получается красиво.* если есть режим прислонения, то изменение размера происходит в соответствии с ним.
Т.е., если например, вы сделали прислонение к левой границе экрана,
и стали расширять диалог, то он будет расширятся направо, не выходя за левую границу
Вот только после включения режима прислонения мне не удаётся выйти из него. Т.е. если я нажимаю AltHome, то диалог F6 прислоняется влево. И если я затем мышкой отвожу диалоговое окно правее от края экрана, а затем нажимаю F5, то диалог всё равно вновь липнет влево. И так до перезагрузки макросов. Возможно, нужна кнопка, выводящая из режима прислонения. М.б. типа центрирующая окно?
Это работает, да.если же диалог просто произвольно перемещён налево,
то изменение размера будет происходить в обе стороны сохраняя центровку
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
нет, про пункт меню. вы были в меню, что-то там выбрали, или просто закрыли его так или иначе.
в следующий раз это меню откроется на том же самом месте
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
надо просто передвинуть это окно хоть на пиксель,
тогда это уже не будет считаться режимом прислонения,
логика в этом такая:
так как юзер уже сам двигает окно,
следовательно сам пусть и определяет положение на экране.
Двигается c CtrlAlt+<стрелки>
Last edited by citRiks on Fri 19 Feb, 2021 20:42, edited 2 times in total.
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
UPDATE
v1.2.6, изменения больше косметические, рефакторинг:
https://github.com/dr-dba/far-lua-dialogs-control
надо обновить и этот модуль:
https://github.com/dr-dba/far-lua-general-utils/
v1.2.6, изменения больше косметические, рефакторинг:
https://github.com/dr-dba/far-lua-dialogs-control
надо обновить и этот модуль:
https://github.com/dr-dba/far-lua-general-utils/
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
А в самом файле указано что это version="1.2.5";
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
Но когда я отодвигаю окно от края мышкой, а не клавишами, то по нажатию ключа оно опять липнет к краю. И в обновлённой версии (1.2.5) тоже.
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
да, это не принципиальная путаница с версиями, но в гитхабе у меня действительно последняя обновленная версия
Да, это недоделка, учитываются только клавиатуpное управление,
в будущем будет добавлена аналогичная реакция на мышиные передвижения
Динамическое/заданное изменение размеров/ сдвиг любых диалогов, меню, списков в зависимости от размера консоли
citRiks,
При перезагрузках макросов изредка вылезает .
Уточнение: ошибка появляется не только при перезагрузках. А, например, и одновременно с вызовом какого-либо макроса. Но систему её нерегулярного появления я пока что уловить не смог.
При перезагрузках макросов изредка вылезает .
Уточнение: ошибка появляется не только при перезагрузках. А, например, и одновременно с вызовом какого-либо макроса. Но систему её нерегулярного появления я пока что уловить не смог.
Last edited by Ann on Thu 25 Feb, 2021 13:29, edited 1 time in total.
- John Doe
- Бюрократ
- Posts: 13847
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Динамическое/заданное изменение размеров/ сдвиг любых диалогов, меню, списков в зависимости от размера консоли
По ссылке в шапке 404
https://t.me/FarManager — Telegram чат
Динамическое/заданное изменение размеров/ сдвиг любых диалогов, меню, списков в зависимости от размера консоли
John Doe,
ссылка починена, но тема подзаброшена @Xer0X-ом, к сожалению.
до логического завершения остается следующее:
* учитывание передвигание мышью и запоминание как "custom position" (сейчас только клавой можно)
* запоминание пункта меню РАБОТАЕТ в большинстве случаев, но почему-то не всегда
* добавить запоминание фильтра меню
PS
в этом же скрипте надо реализовать авто-передвигание диалогов в место где не заслоняет курсор или выделенное в редакторе, но это уже судя по темпу делов очень далекая перспектива
ссылка починена, но тема подзаброшена @Xer0X-ом, к сожалению.
до логического завершения остается следующее:
* учитывание передвигание мышью и запоминание как "custom position" (сейчас только клавой можно)
* запоминание пункта меню РАБОТАЕТ в большинстве случаев, но почему-то не всегда
* добавить запоминание фильтра меню
PS
в этом же скрипте надо реализовать авто-передвигание диалогов в место где не заслоняет курсор или выделенное в редакторе, но это уже судя по темпу делов очень далекая перспектива
Last edited by citRiks on Thu 08 Jul, 2021 08:16, edited 1 time in total.
Динамическое/заданное изменение размеров/ сдвиг любых диалогов, меню, списков в зависимости от размера консоли
если уж зашла речь, то прошу совету.citRiks wrote: ↑Sun 11 Jul, 2021 13:06 Единственный недостаток, и по-моему тот же недостаток что и в других размерятелях,
это то что после изменения размера "untouched" (серые) текстовые элементы перестают быть "untouched"/серыми.
Так как размерятель автоматический, то и это происходит автоматически сразу по открытию диалога.
В других размерятелях автоматичности нет, поэтому такое поведение не так критично
Ситуевина:
Есть только что открытый диалог, есть текстовые серые поля (элементы диалога), статус типа "untouched/unchanged/серый"
Надо поменять размер текстового элемента диалога не меняя статуса "unchanged"
Единственный известный мне способ это сделать - это
far.SetDlgItem(...)
Но это убирает статус "unchanged"
Тогда нужны еще ДВА вызова такого месаджа:
https://api.farmanager.com/ru/dialogapi ... dflag.html
первый вызов чтобы получить "статус до", и второй вызов чтобы вернуть статус обратно.
что как-то неизящно.
и еще запутывает ситуацию то что тут:
https://api.farmanager.com/ru/dialogapi ... _edit.html
.. флаг
unchangedflag
не описан, и на практике не виден, т.е. его нельзя получить при GetDlgItem
.А почему собсна не получен и не виден, хотя он есть?
1.) может сделать так чтобы получать UnchangedFlag при GetDlgItem, и устанавливать его вместе с остальными флагами при SetDlgItem[/c]
2.) Может добавить в АПИ что-нибудь вроде
far.SetDlgItemSize(...)
или message DM_SETSIZE
которые не будут менять ChangedFlag
?Стандартный Дисклаймер
Всю документацию и все исходники не успел прошуршать,
могу ошибаться, где ошибаюсь - поправьте.
Спасибо за внимание
Last edited by citRiks on Sun 11 Jul, 2021 13:52, edited 1 time in total.
- buniak_a_h
- Posts: 4259
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Динамическое/заданное изменение размеров/ сдвиг любых диалогов, меню, списков в зависимости от размера консоли
1. ДО изменения размеров пробежаться по всем элементам DI_EDIT и DI_FIXEDIT и запомнить у них признак неизменённости
2. После всех манипуляций восстановить его
Не? Или я вопрос не понял?
Code: Select all
aState[iItem] = hDlg:send(F.DM_EDITUNCHANGEDFLAG, iItem, -1)
Code: Select all
hDlg:send(F.DM_EDITUNCHANGEDFLAG, iItem, aState[iItem])
Динамическое/заданное изменение размеров/ сдвиг любых диалогов, меню, списков в зависимости от размера консоли
buniak_a_h, да, вопрос был "нельзя ли избежать таких вот лишних телодвижений?"
поэтому такой ответ "нельзя избежать" замечательно отвечает на вопрос
если буду дописывать, то приведенным кодом воспользуюсь за это тоже спасибо
поэтому такой ответ "нельзя избежать" замечательно отвечает на вопрос
если буду дописывать, то приведенным кодом воспользуюсь за это тоже спасибо