Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Code Viewer - просмотр исходного кода 
Author Message
yozhik



PostPosted: Fri May 24, 2024 20:31    Post subject: Reply with quote

Orion9 wrote:
Не являюсь специалистом по написанию плагинов и детект-строк к ним. Это надо было в справку лезть.

Не надо лезть, конспект лучше возьмите Smile
 Конспект по детект-строке и не только
Лучше когда он под рукой, т.к. нередко бывает, что нужно что-то подправить в ДС. Ну, и вообще ясности больше, когда хоть раз прочтёшь всё подряд.

olegvsk wrote:
Так построен исходный компонент

Ага, я так же приблизительно и понял, что мы тут имеем дело не с чистым белым листом, а с уже готовой системой, логика которой хоть и несколько непривычна, но внутренне не противоречива — вот это то и главное, что в ней самой нет противоречий, а это значит что перекраивать её — дело долгое и часто неблагодарное, поломаешь больше, чем наладишь. Тут два пути: либо отказаться от неё и строить своё с нуля, либо вникнуть в неё и попытаться подстроиться. 2й тип пути тоже интересный, потому что часто оказывается, что новый ракурс не хуже, чем был до этого ))

Добро, я попытаюсь переформулировать пожелания Orion9, как я их понял (если что, поправьте, пожалуйста). Но придётся излагать постепенно, блоками, чтобы не валить в кучу. Начнём со шрифтов. Только со шрифтов (т.к. с цветом дела более разветвлённые).

Для примера посмотрим как устроен AkelPad. Схема в AkelPad иерархическая, где умолчания задаются верхним уровнем:
  1. Первый уровень (он же верхний) — настройки шрифта редактора: гарнитура, размер, стиль — глобальные, распространяются на все нижние уровни.
  2. Второй уровень — настройки тем: три переменные ${HighLight_FontStyle} ${HighLight_FontSize} ${HighLight_FaceName} локальные, но действие распространяется также на всё подмножество нижнего уровня (точнее «полуглобальные»: вниз да, вверх нет). Если в перем. 2го уровня пусто, или ноль, то значение заимствуется из верхнего уровня.
  3. Третий уровень — настройки кодеров (хайлайтеров): опять те же перем. ${HighLight_FontStyle} ${HighLight_FontSize} ${HighLight_FaceName}, чисто локальные, распространяются только на данный кодер. Если в перем. 3го уровня пусто, то значение заимствуется из верхнего уровня, т.е. из 2го, а если пусто во 2м, то из 1го.
  4. Исходное состояние настроек (т.с. из коробки):
    • На 1м уровне прописаны начальные гарнитура (Courier New), размер (10), стиль.
    • На 2м и 3м пусто, т.е. всё наследуется из 1го.
    • Пользователь настраивает 1й уровень, глобально, а затем, спускаясь вниз, корректирует настройки на 2м и 3м: если хочет, то может это сделать отдельно для каждой темы, а затем и отдельно для каждого хайлайтера.
  • «Философия» схемы: более удобна для того, чтобы пользователь использовал сразу несколько тем, регулярно переключаясь между ними по настроению. Исходное множество тем для него — простор для переключений.

А как в плагине?
  1. Первый уровень: настройки глобальные, распространяются на всё подмножество нижнего уровня. Этот уровень нередактируемый, как я понял — значения прописаны в коде плагина.
  2. Второй уровень: настройки тем. У каждой темы свои настройки, но если удалить один из параметров (это делается только вручную, в Тема.json, просто удаляется всё, что в кавычках: "Consolas" -> "" или "9" -> ""), то он заимствуется из верхнего уровня.
  3. Третий уровень: настройки хайлайтеров. Своих настроек шрифта здесь нет, всё заимствуется из верхнего уровня.
  4. Исходное состояние настроек:
    • Уровень 1й есть, но он нередактируемый.
    • Редактирование начинается со 2го уровня. У каждой темы свои настройки шрифта, т.е. фактически 2й уровень становится 1ым, но отсчёт ведётся как-бы не от одной вершины, а от нескольких вершин.
    • Пользователь просматривает все темы, выбирает себе подходящую базовую и на её основе строит свою собственную. Если пользователь хочет поменять тему (вершину), то ему нужно повторить процесс настроек сначала, как в предыдущей теме, отталкиваясь уже от другой вершины.
  • «Философия» схемы: более удобна для того, чтобы пользователь настроил себе одну тему и далее пользовался ей регулярно, по преимуществу. Исходное множество тем для него — простор для единоразового выбора одной, своей постоянной.

Пожелание Orion9 в том, чтобы сделать так, как в AkelPad. Т.е. поменять «философию». Если olegvsk согласен менять «философию», то в CodeViewer потребуется добавить:
  • Сделать 1й уровень редактируемым:
    • Либо расположить его в CodeViewer.ini, но тогда придётся делать для него отдельную вкладку в диалоге Settings, потому что настроек у шрифта много.
    • Либо расположить его в Default.json и использовать имеющийся Theme-редактор, но тогда, учитывая, что потом в рамках изменённой «философии» понадобится корректировать ещё и работу с цветом, придётся делать два дефолта (две вершины): Default_Light.json и Default_Dark.json.
  • Отладить обработку нулевых значений в шрифтовых ключах тем (0 для числовых и <none> для строковых), чтобы работала схема заимствования из верхнего редактируемого уровня.
  • Добавить в редактор тем возможность устанавливать нулевые значения: <none> в выпадающих списках гарнитур, и 0 в числовых переключателях.
  • Исходное (из коробки) состояние настроек тогда имеет смысл сделать таким:
    • На 1м уровне (CodeViewer.ini или Default_*.json) прописаны начальные параметры: гарнитура, размер, стиль.
    • На 2м уровне во всех *.json параметры шрифтовых ключей по нулям.
Ну, как-то так, если пытаться конструктивно. Время только отнимает: у одного на написание, у остальных на чтение. Если появится желание двигаться в этом направлении, то можно и дальше так расписывать, с цветом (представление есть). А если не появится, то пусть этот пост станет памятником конструктивизму Smile
_________________
Amo ergo sum
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group