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

Здесь обсуждается всё, что касается макросов.
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 »

Latest post of the previous page:

При уменьшении размеров сабжевым скриптом до 0 меню (гуид 0E0B4A2B-BC1F-44D4-A986-C24E48142955) скрипта Менеджер закладок для папок (BookmarkManager.3.0.3) Фар валится.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

citRiks wrote: Mon 23 Dec, 2019 20:03Фар валится
(1) Скачайте PDB ровно для своей сборки Фара (в т.ч. той же битности) — с той же странички, где скачивание Фара. (2) Файл Far.pdb положите рядом с Far.exe. (3) Воспроизведите падение — вместо многочисленных Far.exe!<unknown> (get the pdb) должна появиться более содержательная информация. (4) Выложите новый текстовый снимок сообщения об ошибке тут.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

не надо ничего качать, нашли уже причину.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

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

Post by Xerox »

citRiks писал: ↑
Это поле данного диалога предназначено для ввода только одного знака (буквы или цифры). И удвоение его ширины в данном случае неадекватно назначению этого поля.
согласен в принципе, HO.
Я там писал что в принципе миллион "если .. то .. " в коде я считаю некоторым злом, но посмотрим
Kаждый один такой "edge case" довавляет ~10 строчек кода
Становится трудно майнтейнить (в том числе и самому) и 2.) становиться трудно понимать (в том числе и самому)

ПС
Я тут у себя победил (выложу попозжее на неделе):
1.) критичную проблему с обрезанием значения.
2.) проблемЫ с ПлугМеню:
2.1.) Вами упомянутое исчезамние значения
(это не связано с уменьшением размера, это связано c кривой постройкой самого диалога -
там в оригинале элементы налазят друг на друга и при сжатии и потом расширении
получается что начинают прятаться друг за другом)
Еще надо иметь ввиду что в процессе мутаций таких текст может "уехать" взад как бы,
но если встать на тексте и сделать Home/End то он возвращается
2.2.) Вами не упомянутую проблему с КастомЭлеменмт диалога ПлагМеню
До конца не вылечено, и похоже что это невозможно совсем вылечить,
но использовать можно, и ущерба восприятию как минимум нет
КастомЭлемнты делают проблемы всегда похоже.
похожее, но не то же самое было в КастомЭлемнте плагина Ревью

И вот эти вот workarounds создают 95% проблем,
и удлиняют количество кода/сложность кода в разы
А "сложность кода=хрупкость кода" )
Поэтому не критичные edge cases лучше оставлять "как есть пусть будет"
Мы этим самым признаем обьективные трудности и ограничения платформы на которой пишем,
а это в принципе неизбежно, ведь каждая платформа имеет свои стеклянные потолки об которые лучше не биться головой
Last edited by Xerox on Mon 23 Dec, 2019 23:22, edited 3 times in total.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

John Doe wrote: Mon 23 Dec, 2019 16:58Польза того же рода, что не позволяет переменной типа uint принять значение -1.
(uint)-1 — работает.
есть некоторое поведение, задокументированное и работающее. даже не падает ничего. но вы предлагаете ограничить. типа потеря данных. но потеря тут исключительно по причине того, что автор кода не читал документацию. принципиально. а если не читать документацию, то можно много чего поуничтожать. так что я не вижу практической пользы от такого ограничения. вон чуть выше человек DI_USERCONTROL'ы ресайзил, там вообще всё падало, но вы как-то даже не возмутились.
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 23 Dec, 2019 23:15 citRiks писал: ↑
Это поле данного диалога предназначено для ввода только одного знака (буквы или цифры). И удвоение его ширины в данном случае неадекватно назначению этого поля.

согласен в принципе, HO.
Я там писал что в принципе миллион "если .. то .. " в коде я считаю некоторым злом, но посмотрим
Kаждый один такой "edge case" довавляет ~10 строчек кода
Становится трудно майнтейнить (в том числе и самому) и 2.) становиться трудно понимать (в том числе и самому)
Ранее я уже сообщал конкретно по данному диалогу о том, что вполне согласен с тем, чтобы оставить его как есть. Но сообщение это было убрано модератором вкупе с допущенным мною оффтопиком и, видимо, Вы не успели его прочесть. В этом расширенном диалоге если кто и захочет ввести двузначный хоткей, то этот хоткей будет сокращён до одного первого знака самим диалогом. Т.е. ни чего критичного в любом случае не будет, и значит пусть так и останется.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

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

Post by Xerox »

zg wrote: Tue 24 Dec, 2019 01:26 вон чуть выше человек DI_USERCONTROL'ы ресайзил, там вообще всё падало, но вы как-то даже не возмутились.
А можно мне повозмущаться? :)
ЮзерКонтролы непредсказуему себя ведут.
попортили немало крови мне :'-(
При попытках с ними что-то сделать через ФАР АПИ (да, изменить размер например),
то если не убивают ФАР на месте, товсе равно непредсказуемо себя ведут во многом,
например дают ложную информацию о своих размерах,
и даже как-то влияют по-моему на диспозицию всего диалога
Может я чего-то не прочитал конечно,
и если честно совсем не читал как бороться с ЮзерКонтролами,
так как пока отношу проблемы с ними к "стеклянному потолку" платформы :)
Last edited by Xerox on Tue 24 Dec, 2019 08:34, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

zg wrote: Tue 24 Dec, 2019 01:26(uint)-1 — работает.
Это немного не то же самое.
zg wrote: Tue 24 Dec, 2019 01:26 есть некоторое поведение, задокументированное и работающее.
Не знал, что документировано.
А где именно?
https://api.farmanager.com/ru/dialogapi ... xedit.html
Тут не вижу.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

Xerox wrote: Tue 24 Dec, 2019 08:33ЮзерКонтролы непредсказуему себя ведут.
они ведут себя в соответствии с документацией, которую надо читать.
Xerox wrote: Tue 24 Dec, 2019 08:33попортили немало крови мне :'-(
сами виноваты, читайте документацию.
Xerox wrote: Tue 24 Dec, 2019 08:33При попытках с ними что-то сделать через ФАР АПИ (да, изменить размер например),
то если не убивают ФАР на месте, товсе равно непредсказуемо себя ведут во многом,
вы бы почитали документацию, узнали о том, что это просто экранный буфер, который плагин , а фр его отрисовывает. а если вы его увеличили, никто ж не знает этого, опа и обращение за пределы буфера. т.е. это такой контрол, изменение размеров которого не владельцем смысла не имеет вообще.
John Doe wrote: Tue 24 Dec, 2019 12:29А где именно?
https://api.farmanager.com/ru/dialogapi ... xedit.html
Тут не вижу.
Элемент диалога DI_FIXEDIT описывает поле ввода фиксированного размера. То же, что и DI_EDIT, но без возможности прокрутки текста.
выделенных частей достаточно, чтобы сделать вывод, что длина текста в контроле не может быть больше его ширины.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

zg wrote: Tue 24 Dec, 2019 15:34 что длина текста в контроле не может быть больше его ширины.
Бесспорно.
И обсуждаемое потенциальное усовершенствование никак этому не противоречит.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

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

Post by Xerox »

zg wrote: Tue 24 Dec, 2019 15:34 изменение размеров которого не владельцем смысла не имеет вообще.
я думаю что имеет смысл, ну например ресайзить диалог.. почему нет?
в результате смелых экспериментов оказалось что ЮзерКонтрол он может сужаться,
и расширяться, но до каких-то пределов, как в ГИФе тут:
user_contol_resizing.gif
Дальше ФАР молча вылетает, и появляется Tвое Послание Человечеству ))
Hо опытным путем выяснилось что у него предел 130 символов в ширину :)
В этом случае 130, в других непонятно что будет,
но в принципе другой пример ЮзерКонтрола в ПлугМеню переносит все измения размеров почти нормально, не вылетая
(экспериментировал на еще неопубликованной версии, пока тестирую)

PS
Если что, то ЮзерКонтрол там это "text text text.."
Last edited by Xerox on Tue 24 Dec, 2019 18:03, edited 3 times in total.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

последний раз прошу по хорошему, читайте то, что вам пишут.
Xerox wrote: Tue 24 Dec, 2019 16:37я думаю что имеет смысл, ну например ресайзить диалог.. почему нет?
в результате смелых экспериментов оказалось что ЮзерКонтрол он может сужаться,
вы взяли очень частный и простой случай из одной строки. в чуть более сложных случаях и с сужением будет всё плохо.
Xerox wrote: Tue 24 Dec, 2019 16:37и расширяться, но до каких-то пределов, как в ГИФе тут:
user_contol_resizing.gif
Дальше ФАР молча вылетает, и появляется Tвое Послание Человечеству ))
Hо опытным путем выяснилось что у него предел 130 символов в ширину :)
я понимаю, что вы принципиально не читаете то, что вам пишут, но для других повторю: при создании контрола плагин передаёт фару буфер на символы с атрибутам нужного размера. и фар тупо отрисовывает буфер на экран. если кто-то увеличит контрол, то недостающие данные будут читаться из-за пределов буфера.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

zg wrote: Tue 24 Dec, 2019 18:06в чуть более сложных случаях и с сужением будет всё плохо.
можно окно отсюда попробовать.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

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

Post by Xerox »

zg wrote: Tue 24 Dec, 2019 19:55 можно окно отсюда попробовать.
по моему получилось забавно, не?
А твой скрипт крутой там
Упс. гиф не грузится, щас я..
Last edited by Xerox on Wed 25 Dec, 2019 08:07, 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 »

воть так воть
hexedit_script_4.gif
Хмм, не возвращается в прежнююпозицию потому что у меня изменение ширины всегда на 2, по одному символу справа и слева ..
Last edited by Xerox on Wed 25 Dec, 2019 09: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 »

воть так воть лучше, не?
hexedit_script_5.gif
т.е. в принципе поведение адекватное, и возвращается в исходную позицию с сохранением потребительских свойств
для хексэдитора это может быть полезным видеть ороигинальный текст, сдвигая его диалог туда-сюда.
вот и практическое применение мы нашли совместными усилиями )
Last edited by Xerox on Wed 25 Dec, 2019 09:57, edited 2 times in total.
Post Reply

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