[wlx] xmltab - просмотр XML файлов

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Моторокер, Avada, CaptainFlint, Nik, d-view

Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):"Брать всё" нет такой опции
Есть брать первый попавшийся элемент - хоть это будет <?xml, хоть CDATA или же выделить первый узел с тегом.
Тогда вообще ничего не понимаю.
И без этой опции все тогда работало - так, как вы пытаетесь описать.
А наличие этой новой опции со значением 0 как раз-таки и вроде предназначено для того, что бы на самом первом объекте/узле/теге на вкладке ТЕКСТ показать ВЕСЬ контент текущего файла в текстовом виде. При этом должно быть фиолетово - ЧЕМ является этот первый объект в тексте - да хоть однострочным комментарием.
А вот при значении 1 при выделении этого первого элемента файла - этого комментария, к примеру, на вкладке ТЕКСТ отражался бы только текст этого комментария. И ни грамма более.
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

Допустим есть файл

Код: Выделить всё

<?xml version="1.0"?>
<node>Hello, world!</node>
В дереве будет два узла первого уровня - ?xml и node.
С включенной опцией (по умолчанию этот вариант) сразу после загрузки файла текущим узлом в дереве будет выбран node. Если значение опции 0, то текущим узлом будет ?xml.

Ни при каком текущем узле всё содержимое файла отображено быть не может.
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):Допустим есть файл

Код: Выделить всё

<?xml version="1.0"?>
<node>Hello, world!</node>
В дереве будет два узла первого уровня - ?xml и node.
С включенной опцией (по умолчанию этот вариант) сразу после загрузки файла текущим узлом в дереве будет выбран node. Если значение опции 0, то текущим узлом будет ?xml.

Ни при каком текущем узле всё содержимое файла отображено быть не может.
Ага. Пояснение к выбранному примеру понял. НО не понял - так зачем вообще тогда реализовывали эту новую опцию?
Из пояснения к причинам её появления и из своих размышлений относительно использования плагина - как раз-таки и "выпестовалось"
то понимание, что нужен кейс, когда при каких-то условиях - я смогу получить в теле плагина (не переключаясь куда-то и как-то) ВСЁ
текстовое значение файла. С подсветками, с нужным форматированием - чтобы получить как бы аналог команды в редакторе - отформатировать всё.
Чтобы просмотреть глазами по быстрому всё, чтобы скопировать что-то частично нужное из всего общего. Ну мало ли что ещё в голову придет.
И для этого нужна опция, когда плагин будет не только лишь по узлам ходить и показывать их частное содержимое, но и как-то в общем сможет отразить весь файл.
И эта опция под это дело идеально подходит. Сейчас с этой опцией я пытаюсь просмотреть несколько файлов тестовых и вообще перестаю видеть разницу.
Только лишь натыкаюсь на ошибочно вставляемый тег #TEXT первым и крэш плагина при попытке с ним поработать. Это как минимум сейчас первое дело для исправления.

А во-вторых - всё же хотелось бы разобраться с логикой новой опции. В том виде, как она сейчас реализована (смотрю ваше определение в ответе-цитате выше) - она без толку.
Ибо первый тег/объект - не важно что это - в файле будет всегда либо супер корневым <ROOT>...</ROOT>, либо очень частным микротегом типа <?xml version="1.0"?>
И толку от реализации логики "показать первый или не первый тег" - становится ну очень мало. Ибо в 85% наверное случаев мы так и так этот первый тег и увидим.
Который чисто ROOT )))) А вот приделать к опции логику - показать или первый найденный полноценный тег (из вашего примера курсор/выделение в дереве тегов ставится
сразу при открытии плагином вашего тестового файла - на узел node и на вкладке TEXT мы видим всю его внутреннюю "кухню" - в текстовом виде все его подузлы+данные)
Или Сразу всё содержимое файла, ток уже отформатированное и подкрашенное (в вашем случае курсор/выделение ставится на первый объект -<?xml version="1.0"?>
и на вкладке TEXT мы видим сразу всё содержимое файла) - вот это да, это полезно и нужно.
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother
Падение плагина-то хоть воспроизвести удалось? Понятно, что правку делать - уже когда и как время появится, но хоть узнать бы, что проблема повторяема и легко. А то может дампы надо генерить же.
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

Падение пока даже не пытался повторить. Времени нет.

По поводу опции: по стандарту <?xml вначале обязательно, а то что у вас его обычно нет - скорее исключение. Опция позволяет сразу просмотреть содержимого тега с данными, т.е. root в вашей нотации.

Сразу все содержимое файла показано быть не может, т.к. справа отображается только содержимое выбранного узла. Тут либо добавлять корень дерева, чтобы и его можно было выбрать, либо делать, чтобы если нет выделения в дереве, то справа показывать весь файл. Оба варианта сомнительны.
Аватара пользователя
yozhik
Сообщения: 363
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

little-brother
Задам вопрос здесь, но по большому счёту он применим ко всем вашим tab-плагинам. Скажите, пожалуйста, не сложно ли будет добавить настройку цвета сетки таблицы? Дело в том, что в режиме Dark Mode белые линии сетки на чёрном фоне (учитывая их частоту и периодичность) сильно контрастят, что очень утомительно для глаз. Я подозреваю, что если вы их сразу не добавили, то значит это связано с какими-то сложностями, нетривиальностями. Или нет? Было бы очень хорошо, если бы получилось. Когда Dark Mode включен во всём TC, то крупные светло-серые элементы окна плагина — полосы прокрутки, статусная строка, заголовки столбцов — не так сильно «бьют» по глазам, как частокол ярких белых тонких линий. Если настройка хотя бы только их цвета станет доступна, то тёмным режимом плагина можно будет пользоваться во время работы.
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

Стандартной функции для этого нет, в отличии от других цветов.
Посмотрел в гугле - вроде не очень сложно должно быть. Надо будет попробовать и, если получится, то во все плагины добавлю, но увы сейчас времени на плагины попросту нет.

Как вариант можно еще отключить рисование сетки вовсе.
Аватара пользователя
yozhik
Сообщения: 363
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

little-brother писал(а):сейчас времени на плагины попросту нет
Добро, подождём пока появится.
little-brother писал(а):Как вариант можно еще отключить рисование сетки вовсе.
Неплохой вариант. А если на него время найдётся, так и вообще хороший :) (Особенно для плагина csvtab, поскольку в нём только таблица.)
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

отключить рисование сетки
Готово для всех плагинов. Изменил три строчки кода в каждом плагине - дольше изменения раскидывал, чем программировал.

Изменение цвета на потом, т.к. это не так просто.
Аватара пользователя
yozhik
Сообщения: 363
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

little-brother писал(а):три строчки кода
Мал золотник, да дорог! У себя посмотрел пока три — xml, csv, json — работают исправно, красота. Спасибо от души и за код, и за добрый отклик.
little-brother писал(а):дольше изменения раскидывал, чем программировал
А вы процесс раскидывания тоже бы запрограммировали :wink: Эх, да, на мелочёвку время уходит. Зато теперь ёжики вас добрым словом поминают.
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother
в сопроводительном default.ini
open-first-element = 1 ; 0/1, The selected item should be element on the plugin start up
исчезло осознанно или очепятка?
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

Происки рептилойдов! Спасибо, поправил.
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

Файл https://www.upload.ee/files/14899365/BC ... s.xml.html

Далее текст можно прочитать, а можно сразу перепрыгнуть к блоку "NB! важное уточнение!"
там описано более позднее и корректное понимание происходящего... имхо.

Вроде как сабж показывает этот файл, но что-то его показываемое не совпадает с написанным.
К примеру, первым блоком в файле идут перечисления
Изображение
но в сабже они показаны абсолютно пустыми:
Изображение
Переключение на вкладку ТЕКСТ вообще не показывает ничего....
Есть подозрение на то, что вроде как при проверке онлайн пишется, что

Код: Выделить всё

Line: 19, Pos: 27, Text: "<ElementStr Value="&#2 ;Keyword"/>", Reason: "&#2 ;" is not a valid entity.
Т.е. вроде как надо бы было прервать обработку такого файла, ну, или показать ВСЁ - но только
ДО момента ошибки. Но вероятно используемая либа парсинга просто такого не позволяет.
НО - хорошо бы что-то придумать по возможности на такой "облом-с".
Само сочетание "&#2 ;" где, понятно дело, пришлось вставить пробел перед точкой с запятой - иначе движок
форума усиленно конвертит "это" в пустой пробел - вроде как официально реально ничем не является. А по
кол-ву вхождений в файле и при проверке в самой проге - ЧЕМ это может быть - можно прийти к выводу, что
это придуманный XML-based набор символов, которые предваряют строку символов, которую надо перевести
тем, что переводит ресурсы проги на родной язык. Так что на первый взгляд этот набор символов надо игнорить
принудительно что ли.... Имя файла стабильно - не меняется уже давно. Можно, если что - цепляться за это и
для этого файла тупо удалять предварительно из текста этот запрещенный набор символов.

Но, почему-то, даже вычистив эти символы при открытии мы получаем пустоту для этих же тегов:
Изображение

NB! важное уточнение!
ТААААК. Похоже я тут сам с собой сломался в анализе. Значений у тегов нет, а в ini есть show-empty=1 отсюда и none.
Блин, писал же - надо бы и перевод для этого сделать. Вписал бы я тут show-empty=<нет значения> а не как сейчас
show-empty=1 - и было бы мне сейчас понятнее... А то в мозгах всё перепуталось. Итак, значений нет, есть атрибуты.
Атрибуты мы видим на вкладке GRID для выделенного тега. Со значком @ перед именем атрибута. Ок, вспомнил это.
Значит тут тока одна ошибка - отсутствие на вкладке TEXT для тегов /BCFileFormats и /BCFileFormats/TTextFormat
их содержимого в текстовом виде. А это похоже результат наличия ошибки во входных данных при парсинге.
НО набор упомянутых символов - это не только эта ошибка. Даже и при их удалении - во вкладке TEXT ничего нет...
А! Ну и ещё Grammar - ну ооооооочень странно выглядит со строкой, состоящей из угловых скобочек...

P.S.
А!!! Я кажется понял про >>>> - плагин/парсер не смог разобраться со всеми субтегами TTextFormat, которые есть в этом
файле. Вот по этому и облом с показом нужного и всего-всего на вкладках.... Он только первый и то - не до конца смог понять...
Парсинг сломался на строке

Код: Выделить всё

<Text Value="<<[a-zA-Z]((_[0-0a-zA-Z])|[0-9a-zA-Z])*>>"/>
потому что в ней есть две подряд угловых скобки, которые надо было то же бы записать в экранированном виде как

Код: Выделить всё

<Text Value="<<[a-zA-Z]((_[0-0a-zA-Z])|[0-9a-zA-Z])*>>"/>
Но этого сделано не было автором xml-файла И далее понеслось...
НО! что удивительно - ни один онлайн-чекер не с'агрился на этот файл, как только лишь я убрал "это", описанное выше.
Странно всё это как-то... Но факт, как только я правлю в атрибуте тега прямое использование угловой скобки > на её
эквивалентное представление в виде xml-entity то парсинг продолжается и ошибка находится дальше, а плагин отображает все больше инфы в дереве тегов и на вкладках.
Но вот тока теперь на вкладках нет обратного превращения символов в один печатный >. А это вроде как ожидается... или нет. Но ведь табличное представление именно визуальное!
Т.е. оно отображает человеческое восприятие информации. Вот на вкладке TEXT - там будет выжимка из файла как-есть.
Чтобы понимать - КАК это записано в файле. А вот на вкладке GRID - по идее именно "превращение" в человеко-читабельный
вариант текста и ожидается от данного плагина.
Последний раз редактировалось Destiny Пн фев 06, 2023 12:46, всего редактировалось 4 раза.
Аватара пользователя
imig73
Сообщения: 285
Зарегистрирован: Вт июн 18, 2013 13:21
Откуда: г. Иркутск

Сообщение imig73 »

Рады за вас и желаем всех благ в программировании.
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother
что-то можно уточнить по поводу мной написанного? :roll: :oops:
Ответить