Page 10 of 18

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

Posted: Sun 08 Dec, 2019 11:17
by citRiks
ВВИДУ ОТСУТСТВИЯ ОБЩЕСТВЕННОГО ИНТЕРЕСА (нет лайков)
ОБНОВЛЯТСЯ В ДАЛьНЕЙШЕМ НЕ БУДЕТ
(текущая/экспериментальная/обновленная версия находится у меня,
но дальнейшей синхронизации скорее всего не будет
если все-же. кому чего нужно, то пишите сюда,
скорее всего отвечу, и скорее всего быстро)

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

https://github.com/dr-dba/far-lua-dialogs-control


Этот "мануал/ридми" старый и не отражает всего функционала.
вопросы, пожелания - писать, опять же, см. начало текста

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

Posted: Mon 23 Dec, 2019 20:03
by citRiks

Latest post of the previous page:

При уменьшении размеров сабжевым скриптом до 0 меню (гуид 0E0B4A2B-BC1F-44D4-A986-C24E48142955) скрипта Менеджер закладок для папок (BookmarkManager.3.0.3) Фар валится.

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

Posted: Mon 23 Dec, 2019 21:48
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) Выложите новый текстовый снимок сообщения об ошибке тут.

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

Posted: Mon 23 Dec, 2019 22:57
by zg
не надо ничего качать, нашли уже причину.

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

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

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

И вот эти вот workarounds создают 95% проблем,
и удлиняют количество кода/сложность кода в разы
А "сложность кода=хрупкость кода" )
Поэтому не критичные edge cases лучше оставлять "как есть пусть будет"
Мы этим самым признаем обьективные трудности и ограничения платформы на которой пишем,
а это в принципе неизбежно, ведь каждая платформа имеет свои стеклянные потолки об которые лучше не биться головой

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

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

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

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

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

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

Posted: Tue 24 Dec, 2019 08:33
by Xerox
zg wrote: Tue 24 Dec, 2019 01:26 вон чуть выше человек DI_USERCONTROL'ы ресайзил, там вообще всё падало, но вы как-то даже не возмутились.
А можно мне повозмущаться? :)
ЮзерКонтролы непредсказуему себя ведут.
попортили немало крови мне :'-(
При попытках с ними что-то сделать через ФАР АПИ (да, изменить размер например),
то если не убивают ФАР на месте, товсе равно непредсказуемо себя ведут во многом,
например дают ложную информацию о своих размерах,
и даже как-то влияют по-моему на диспозицию всего диалога
Может я чего-то не прочитал конечно,
и если честно совсем не читал как бороться с ЮзерКонтролами,
так как пока отношу проблемы с ними к "стеклянному потолку" платформы :)

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

Posted: Tue 24 Dec, 2019 12:29
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
Тут не вижу.

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

Posted: Tue 24 Dec, 2019 15:34
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, но без возможности прокрутки текста.
выделенных частей достаточно, чтобы сделать вывод, что длина текста в контроле не может быть больше его ширины.

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

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

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

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

PS
Если что, то ЮзерКонтрол там это "text text text.."

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

Posted: Tue 24 Dec, 2019 18:06
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 символов в ширину :)
я понимаю, что вы принципиально не читаете то, что вам пишут, но для других повторю: при создании контрола плагин передаёт фару буфер на символы с атрибутам нужного размера. и фар тупо отрисовывает буфер на экран. если кто-то увеличит контрол, то недостающие данные будут читаться из-за пределов буфера.

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

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

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

Posted: Wed 25 Dec, 2019 08:05
by Xerox
zg wrote: Tue 24 Dec, 2019 19:55 можно окно отсюда попробовать.
по моему получилось забавно, не?
А твой скрипт крутой там
Упс. гиф не грузится, щас я..

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

Posted: Wed 25 Dec, 2019 09:01
by Xerox
воть так воть
hexedit_script_4.gif
Хмм, не возвращается в прежнююпозицию потому что у меня изменение ширины всегда на 2, по одному символу справа и слева ..

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

Posted: Wed 25 Dec, 2019 09:46
by Xerox
воть так воть лучше, не?
hexedit_script_5.gif
т.е. в принципе поведение адекватное, и возвращается в исходную позицию с сохранением потребительских свойств
для хексэдитора это может быть полезным видеть ороигинальный текст, сдвигая его диалог туда-сюда.
вот и практическое применение мы нашли совместными усилиями )