PE Viewer 3.0

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

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

Аватара пользователя
SUKER
Сообщения: 49
Зарегистрирован: Пт дек 17, 2004 11:15
Откуда: Санкт-Петербург

Сообщение SUKER »

iteg
Во первых, спасибо большое, что взялись за плагин 🙏
Во вторых есть пожелание/вопрос - можно ли реализовать в плагине обработку .Net-овских AnyCPU и AnyCPU prefer 32bit бинарников?
Сейчас они показываются, как обычные PE32.
iteg
Сообщения: 116
Зарегистрирован: Чт дек 01, 2011 17:01

Сообщение iteg »

SUKER
Спасибо. Рад, что проект приносит пользу.
Сборки "AnyCPU" и "AnyCPU prefer 32bit" в качестве исполняемого формата используют "PE32" 0x010B, т.е. "PE, Intel 386" 32-bit. Формат "PE32" в данном случае можно рассмотреть как контейнер для .Net кода платформ "AnyCPU" и "AnyCPU prefer 32bit". Значения "Solution Platforms" находятся в "CLR Header", наличие которого использую на закладке "Info", как признак .Net сборки. Разбор "CLR Header" запланировал в будущих версиях.
Аватара пользователя
SUKER
Сообщения: 49
Зарегистрирован: Пт дек 17, 2004 11:15
Откуда: Санкт-Петербург

Сообщение SUKER »

iteg
Да понятно, что в данном случае плагин формально прав и в поле magic записано PE32. Но вот в последней вкладке где отображается "PE, Intel 386", думаю было бы здорово выдавать полную ифну. Естественно когда разберете "CLR Header" - ждем 👍
Еще раз спасибо.
Аватара пользователя
imig73
Сообщения: 285
Зарегистрирован: Вт июн 18, 2013 13:21
Откуда: г. Иркутск

Сообщение imig73 »

iteg
Благодарю вас за плагин. Теперь он очень полезен. Вкладка 'Цифровые подписи' вообще позволила отказаться от CertView и вообще от fileinfo. Теперь это настоящий универсал.
Просьбы выше тоже поддерживаю обеими руками.
Аватара пользователя
SUKER
Сообщения: 49
Зарегистрирован: Пт дек 17, 2004 11:15
Откуда: Санкт-Петербург

Сообщение SUKER »

iteg
Еще одно мелкое пожелание/предложение - добавить во вкладке сеттингс пункт About. Где выводить версию плагина и другую информацию (мб как-ть ссылки).
iteg
Сообщения: 116
Зарегистрирован: Чт дек 01, 2011 17:01

Сообщение iteg »

1)
imig73
Благодарю вас за плагин. Теперь он очень полезен. Вкладка 'Цифровые подписи' вообще позволила отказаться от CertView и вообще от fileinfo. Теперь это настоящий универсал.
Спасибо. Будут предложения или замечания - пишите. Если есть желание и время, то тестируйте функционал. Сравнивайте с другими утилитами.
Просьбы выше тоже поддерживаю обеими руками.
Разбор "CLR Header" уже запланировал. Сам жду :).

2)
SUKER
Пункт меню с версией будет в следующем релизе.
Аватара пользователя
imig73
Сообщения: 285
Зарегистрирован: Вт июн 18, 2013 13:21
Откуда: г. Иркутск

Сообщение imig73 »

iteg
Если это не слишком усложнит код, хотелось бы созерцать данные *.crt на вкладке сертификатов, дабы быть совсем самостоятельным. Конечно это выходит за рамки назначения плагина, но было бы реально нужно и здорово.
Аватара пользователя
BeTeP
Сообщения: 135
Зарегистрирован: Чт мар 31, 2005 00:57
Откуда: Санкт-Петербург

Сообщение BeTeP »

imig73 писал(а):хотелось бы созерцать данные *.crt на вкладке сертификатов
Если на то пошло, было бы неплохо ещё и данные *.pem во вкладку сертификатов.
Аватара пользователя
imig73
Сообщения: 285
Зарегистрирован: Вт июн 18, 2013 13:21
Откуда: г. Иркутск

Сообщение imig73 »

BeTeP
Ну да, наверное тоже. Тока не уверен что такой формат прям везде в ходу, в отличии от crt. Я думаю автор уловил что речь про самые ходовые и популярные форматы. Все не нужно, экзотики хватает да и CertView кому сильно надо тоже развивается.
iteg
Сообщения: 116
Зарегистрирован: Чт дек 01, 2011 17:01

Сообщение iteg »

imig73
Если это не слишком усложнит код, хотелось бы созерцать данные *.crt на вкладке сертификатов
BeTeP
Если на то пошло, было бы неплохо ещё и данные *.pem во вкладку сертификатов.
Добавил в список ToDo.

Сейчас реализовал 'Dark Mode' для плагина. Управляется через 'TC\Configuration\Dark<->Normal'.
Если у кого-нибудь будет время, то протестируйте. По замечаниям - отпишитесь.
https://dropmefiles.com/Edeuz
Аватара пользователя
yozhik
Сообщения: 353
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

iteg писал(а):Dark Mode
Большое спасибо!
1. В режиме Normal сейчас панель выглядит как в стиле Windows XP: 3х мерные выпуклые кнопки, отсутствует сетка в таблицах. Так и задумано в тестовой версии или что-то сбилось? Уточняю потому, что если что-то сбилось, то не повлияло ли это и на тёмный режим...

2. В режиме Dark расцветка сейчас слишком контрастна: на чёрном фоне частая белая сетка таблиц — вырвиглаз. Интересно, где Total Commander берёт умолчательную расцветку, когда стартует в тёмном режиме? Кажется, в системе, но где точно я не знаю. Вот, на Windows 11 при старте свежеустановленного TC без доп. настроек в его окне:
  • цвет фона = RGB(32,32,32),
  • цвет разделительных линий = RGB(126,126,126),
  • цвет текста = RGB(220,220,220),
  • цвет подсветки выделенных пунктов = RGB(64,64,64).
Это смотрится лучше, чем у Вас сейчас.
В светлых темах иерархия соотношения цветов следующая: фон — самый светлый, текст — самый тёмный, а линии посередине, но ближе к фону, а не к тексту. По идее, в тёмном режиме должна соблюдаться подобная логика (с поправкой на инвертирование).

3. Идеальный вариант: предоставить выбор палитры пользователю. Здесь при 1м приближении вырисовываются два пути: собственный ini плагина или использование настроек TC, т.е. wincmd.ini.

3.1. Собственные настройки — самое предпочтительное. Но я не знаю насколько это трудоёмко и вообще возможно. Подозреваю, что некоторые контролы понадобится писать самостоятельно, т.к. система не предоставляет доступа к их раскраске. Собственно, авторы плагинов делают по-разному. Например, Loopback, автор Autorun.wdx в субплагине ModifyDialogs по этой причине нарисовал некоторые контролы сам. Получилось прекрасно. А вот, little-brother, автор серии плагинов csvtab-wlx, xmltab-wlx, jsontab-wlx не стал заниматься отрисовкой, чтобы не раздувать размер плагинов. Если Вы выберите такое решение, что сетка таблиц будет недоступна для раскраски, то тогда предусмотрите, пожалуйста, возможность её полного отключения в тёмном режиме. Так сделал little-brother. Лучше обойтись без сетки, чем зреть её вырвиглазной.

3.2. Если считывать цвета из WINCMD.INI, то хорошо бы обратить внимание на секцию ColorsDark. В ней много ключей и какие их них выбирать — это вопрос. С фоном и текстом всё просто. А вот линии, hover-подсветка, selection-подсветка, статусы (те, которые в светлой у Вас раскрашены красным, болотным и т.д.) — с ними вопрос: в ColorsDark есть разные варианты. Все эти ключи подробно описаны в справочнике у Avada, было бы Вам наверное вернее самостоятельно с ними ознакомиться. Вот ссылки: Тёмный режим\Основные настройки, \Файловые панели, \Заголовки вкладок, \Подсказки. Если хотите, можем и мы, конечно, здесь предложить. Но тут мнения могут разойтись.

И, естественно, при работе с wincmd.ini хорошо бы не забыть о следующем. Если указанные ключи в ini отсутствуют, использовать умолчательные значения. Если WINCMD.INI отсутствует, то теоретически эти ключи должны быть в реестре.

4. Деталь. В списках— Headers на вкладке Sections/Headers, и в списке ресурсов на вкладке Resources — значок раскрытия узла ">" при наведении курсора сейчас чернеет, т.е. становится «невидим».
Последний раз редактировалось yozhik Пн ноя 20, 2023 19:34, всего редактировалось 1 раз.
Аватара пользователя
yozhik
Сообщения: 353
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

iteg
Я вчера запостил свой комментарий, а сегодня полностью его переписал. Если Вы вчера его прочитали, то перечитайте, пожалуйста, сегодня.

Добавление:
Для иллюстрации: самостоятельно настроенный тёмный режим в Total Commander, и внизу под ним утилита Everything, где тёмный режим настраивается самостоятельно полностью, до мелочей, даже на порядок лучше, чем в TC (здесь небольшой пример). Как в таком окружении выглядит контрастная раскраска, видно наглядно:

Изображение

Для сравнения: если плагин снабжён достаточными настройками, то можно добиться неплохой сочетаемости. CudaLister.wlx и MarkdownView.wlx:
Изображение Изображение
iteg
Сообщения: 116
Зарегистрирован: Чт дек 01, 2011 17:01

Сообщение iteg »

yozhik, спасибо за столь подробный ответ.

С 'Dark Mode' ситуация такова:
1) В плагине использую только стандартные компоненты, поэтому, кроме установки основного цвета (или от родителя) и цвета шрифта, нет никаких возможностей кастомизации отдельный элементов контролов.
2) Для задания единого цвета всем контролам использую событийные механизмы ParentColor и ParentFont, т.е. настройки от родительской формы Color и Font передаются всем дочерним контролам. При этом установка цвета контрола не всегда применима ко всем внутренним элементам самого контрола, потому что некоторые контролы в Delphi являются обвертками на системными компонентами, которые имеют скудные настройки. Например, TabControl. Фон меняется, а кнопки (метки) нет. Для таких контролов пришлось перекрывать рисование, которое трудоемко в поддержке и не охватывает все возможные ситуации. На текущий момент кастомно рисую заголовки TabControl и ListView.
3) Для TabControl изменил стиль заголовка на Button (ранее было FlatButton) из-за перекрытия рисования в 'Dark Mode' появлялась промежуточная светлая рамка. Поэтому и остановился на трехмерных 'кнопках'.
4) Из-за использования ParentColor в Normal режиме цвет сетки слился с фоном.
5) Изначально предоставил версию 'Dark Mode' для определения реакции на сетку в компонентах ListView. Сейчас GridLines отключил для двух режимов.
6) Цвет фона для 'Dark Mode' - $00202020 цвет Windows 11 Dark Mode, а также Default цвет фона в TC. Поэтому его и выбрал.
7) На данный момент 'Dark Mode' не применим к контролам: контекстное меню, скроллы (только для Windows 10 применил через недокументированное API), диалоги (сообщения и Wait-окно).
8) В текущей выходящей версии оставлю плагин без возможности задания цветов. Реализую в одной из последующий версий. Предположительно, из wincmd.ini буду использовать 'Font color' и 'Background'.
9) Для контрола дерева не смогу исправить затемнение символа узла.

Также ознакомлюсь с кастомизацией вышеуказанных плагинов.

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

Сообщение yozhik »

iteg
Добро. Спасибо и Вам за диалог. И отдельная признательность за то, что взялись за тёмную целину :) Loopback называет Dark Mode «вселенским злом», вот цитата:
Совершенно забыл про вселенское зло в виде тёмной темы и не проверил, иначе бы сразу выдал отрицательное заключение и даже не тратил бы время...
и судя по описанию Ваших перипетий, это действительно так. Единственное, чем я способен посодействовать в этом деле, это поминать Вас добрым словом ежедневно.
iteg писал(а):Также ознакомлюсь с кастомизацией вышеуказанных плагинов.
Тогда пару ссылок ещё, чтобы меньше искать.

Плагины little-brother написаны на C, их исходники открыты: весь репозиторий и отдельно csvtab для примера.

Исходники плагина Autorun.wdx и его субплагиа ModifyDialogs не обнародовались. Возможно, если обратиться к автору, он откликнется. Тема плагина здесь. Но в первом посте отсутствуют последние beta-версии, а именно в них делались интересующие нас доработки. Вот посты, где автор публиковал ссылки: Autorun 2.2.10 beta и ModifyDialogs 2023-08-29. Или вот всё вместе одним файлом на dropmefiles.
Аватара пользователя
yozhik
Сообщения: 353
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

Ещё пара соображений, надеюсь пригодятся.

Подавляющее большинство плагинов (если не все, но уж точно все те, которые используют системные контролы) поддерживают Dark Mode (DM) лишь отчасти. Что красится, то красят, а что нет, то оставляют как есть или отключают. Это уже данность и с ней пришлось смириться. Так что может стоит взвесить за и против, и не жертвовать чем-то уже существующим и хорошо работающим ради половинчатых решений. Проиллюстрирую.

Вот плагин sqlite-wlx
Изображение
Tabs, Scrollbars и Statusbar — белые. Но благодаря тому, что они как бы составляют «рамку», это смотрится приемлемо, не шибко кустарно. В табличном виде отключена сетка (поскольку она не раскрашивалась), но зато добавлена возможность сделать строки «зеброй» — для внятного чтения данных этого вполне достаточно (если уж сетка не укрощается).

Это я к тому, что вот Вы пишете
iteg писал(а):4) Из-за использования ParentColor в Normal режиме цвет сетки слился с фоном.
Normal Mode в PEViewer до сегодняшнего дня выглядел прекрасно. Если всё равно не получается добиться полноценного Dark, то может тогда и не стоит ради него «урезать» Normal. Если как в примере выше контролы по периметру окна останутся белыми, то это не так уж и плохо. По такому принципу сейчас работают все плагины little-brother (csvtab, jsontab, xmltab, sqlite-wlx, odbc-wlx), XML Review, IniEd, TCTorrent, EMLView (см. далее).

Вот, кажется, пример таких же Tabs, как у Вас, утопленных. Плагин EMLView.wlx:
Изображение
При тёмной проработанной серединке светлая рамка не очень обламывает.

В плагине SQLite Viewer у автора получилась качественная, раскрашиваемая табличная сетка:
Изображение
Правда, с остальными контролами беда: у Buttons, ComboBox, Inputbox слишком яркие рамки. Но сетка действительно хороша. Автор Progman13 доступен по email в ReadMe и на письма отвечает. Может быть поделится опытом изысканий.

У него же в плагине PhotoViewer раскрашиваемый Statusbar:
Изображение
который он сделал Flat, т.к. не смог раскрасить разделители. Ну, ничего, ладно. Смотрится прилично.
Ответить