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

Здесь обсуждается всё, что касается макросов.
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: 219
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 63 times
Been thanked: 26 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: 9258
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 94 times
Been thanked: 200 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: 5710
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 134 times
Contact:

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

Post by zg »

не надо ничего качать, нашли уже причину.

User avatar
Xerox
Posts: 393
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: 5710
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 134 times
Contact:

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

Post by zg »

John Doe wrote:
Mon 23 Dec, 2019 16:58
Польза того же рода, что не позволяет переменной типа uint принять значение -1.
(uint)-1 — работает.
есть некоторое поведение, задокументированное и работающее. даже не падает ничего. но вы предлагаете ограничить. типа потеря данных. но потеря тут исключительно по причине того, что автор кода не читал документацию. принципиально. а если не читать документацию, то можно много чего поуничтожать. так что я не вижу практической пользы от такого ограничения. вон чуть выше человек DI_USERCONTROL'ы ресайзил, там вообще всё падало, но вы как-то даже не возмутились.

citRiks
Posts: 219
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 63 times
Been thanked: 26 times

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

Post by citRiks »

Xerox wrote:
Mon 23 Dec, 2019 23:15
citRiks писал: ↑
Это поле данного диалога предназначено для ввода только одного знака (буквы или цифры). И удвоение его ширины в данном случае неадекватно назначению этого поля.

согласен в принципе, HO.
Я там писал что в принципе миллион "если .. то .. " в коде я считаю некоторым злом, но посмотрим
Kаждый один такой "edge case" довавляет ~10 строчек кода
Становится трудно майнтейнить (в том числе и самому) и 2.) становиться трудно понимать (в том числе и самому)
Ранее я уже сообщал конкретно по данному диалогу о том, что вполне согласен с тем, чтобы оставить его как есть. Но сообщение это было убрано модератором вкупе с допущенным мною оффтопиком и, видимо, Вы не успели его прочесть. В этом расширенном диалоге если кто и захочет ввести двузначный хоткей, то этот хоткей будет сокращён до одного первого знака самим диалогом. Т.е. ни чего критичного в любом случае не будет, и значит пусть так и останется.

User avatar
Xerox
Posts: 393
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: 12647
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 35 times
Been thanked: 268 times

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

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: 5710
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 134 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: 12647
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 35 times
Been thanked: 268 times

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

Post by John Doe »

zg wrote:
Tue 24 Dec, 2019 15:34
что длина текста в контроле не может быть больше его ширины.
Бесспорно.
И обсуждаемое потенциальное усовершенствование никак этому не противоречит.

User avatar
Xerox
Posts: 393
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: 5710
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 134 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: 5710
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 134 times
Contact:

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

Post by zg »

zg wrote:
Tue 24 Dec, 2019 18:06
в чуть более сложных случаях и с сужением будет всё плохо.
можно окно отсюда попробовать.

User avatar
Xerox
Posts: 393
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: 393
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: 393
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 “Обсуждение макросов”