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 

Autorun
Goto page Previous  1, 2, 3 ... 124, 125, 126 ... 190, 191, 192  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
yozhik



Joined: 04 May 2014
Posts: 257
Location: Электросталь

Post (Separately) Posted: Thu Aug 10, 2023 20:07    Post subject: Reply with quote

Loopback
Возвращаясь к нулевым вызовам. Сегодня смог сосредоточиться и сгенерил краткий код для воспроизведения. Окружение: Win 10 x64, TC 11.00 32/64. Подопытные: два диалога cm_PackFiles и cm_SetAttrib. Запускаем 32-битный TC.
Вот так ни у одной кнопки в диалогах не будет текста "B1":
Code:
# Диалог упаковки cm_PackFiles Alt+F5
AddDialog  "TDLGZIP"
AddControl "TButton" 1 "B1"

# Диалог атрибутов cm_SetAttrib
AddDialog "TATTRIBDLG"
AddControl "TButton" 1 "B1"

А вот так будет:
Code:
# Диалог упаковки cm_PackFiles Alt+F5
AddDialog  "TDLGZIP"
AddControl "TButton" 0 "B0"
AddControl "TButton" 1 "B1"

# Диалог атрибутов cm_SetAttrib
AddDialog "TATTRIBDLG"
AddControl "TButton" 0 "B0"
AddControl "TButton" 1 "B1"
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1529

Post (Separately) Posted: Fri Aug 11, 2023 12:42    Post subject: Reply with quote

yozhik
Да, спасибо, нашел и исправил. Не устанавливался текст для первого контрола каждого класса.

Установку значков для кнопок добавил. Поскольку можно отображать значок вместе с текстом, решил оставить такую возможность. Поэтому значок устанавливается отдельным параметром. Например:

Code:

AddControl "TButton" 1 "" "%COMMANDER_PATH%\Totalcmd.exe,2"


Также пришлось добавить еще два опциональных переключателя:

/IT - позволяет отображать текст рядом со значком (по умолчанию, если задан непустой параметр с путем к значку, отображается только значок, имеющийся или задаваемый текст игнорируется).
/I:nn - размер значка (например /I:32, по умолчанию 16).

ModifyDialogs 2023-08-11
Back to top
View user's profile Send private message
yozhik



Joined: 04 May 2014
Posts: 257
Location: Электросталь

Post (Separately) Posted: Fri Aug 11, 2023 18:09    Post subject: Reply with quote

Loopback
Спасибо!
В светлой теме с иконками красота и порядок:


А в тёмной не назначаются:
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1529

Post (Separately) Posted: Fri Aug 11, 2023 22:44    Post subject: Reply with quote

yozhik
Вот как всегда, то, что казалось простым, оказывается гораздо сложнее. Совершенно забыл про вселенское зло в виде тёмной темы и не проверил, иначе бы сразу выдал отрицательное заключение и даже не тратил бы время...

Похоже, в тёмной теме тотал сам управляет отрисовкой всех контролов. Метод установки значка, естественно, не работает. Вернее, он работает, но тотал его закрашивает. Попробовал сам отрисовать значок, бесполезно, при наведении на кнопку он опять закрашивается. Так что видимо увы. Делать сабклассинг или что-то такое, чтобы постоянно перерисовывать за тоталом значки - ну честно говоря перебор. И что теперь делать непонятно, оставлять половинчатое решение вроде как-то не очень.
Back to top
View user's profile Send private message
yozhik



Joined: 04 May 2014
Posts: 257
Location: Электросталь

Post (Separately) Posted: Fri Aug 11, 2023 23:19    Post subject: Reply with quote

Loopback wrote:
половинчатое решение вроде как-то не очень

Учитывая, что тёмную тему используют немногие, решение получается не половинчатым, а 5/6-ым (или даже больше). Надо оставлять однозначно. Просто в справке оговорить. Оговорено же в справке, что некоторые контролы в 64-битной версии могут не «слушаться», и нормально, это не воспринимается половинчатым решением. Ну, вот и здесь то же самое. Сделать дополнительное условие и прописать для тёмной темы свою организацию контролов — невелик труд (для тех, кто вообще додумается до перерисовки диалогов).

Loopback wrote:
Попробовал сам отрисовать значок, бесполезно

Ой-ёй! Если б я знал, что так далеко зайдёт, дык и не заикался бы. Мне кажется, что это только у Гислера такой завал с тёмной темой. Вон в Everything изначально (без дополнительных усилий) всё шикарно работает и настраивается до мелочей без проблем и малейших нареканий.
Back to top
View user's profile Send private message
lz57005



Joined: 05 Mar 2020
Posts: 28

Post (Separately) Posted: Fri Aug 11, 2023 23:29    Post subject: Reply with quote

Loopback wrote:
yozhik

Похоже, в тёмной теме тотал сам управляет отрисовкой всех контролов.

Всё ещё хуже, судя по всему это частично хук/детур апи функций отрисовки, Гислер как и все распробовал недокументированные winapi которыми мягкие красили старые приложения, а потом понял что можно рисовать поверх, часть контролов перехвачена, часть отрисована поверх, поэтому даркмод нужно учитывать как отдельную сущность, происходящую после отрисовки контрола, попробуйте ловить сообщения после отрисовки

Добавлено спустя 6 минут:

yozhik проблема в том что он решил её воспроизвести на 7ке, т.е. логика, майки начали даркмод в тихаря, все начали разбираться как на старое апи натянули рисовку и ключевой момент, Гислер решил рисовать сам, чтобы и на семерке и вообще переизобретя скины из Delphi, где контролы рисуются сверху стоковых
Back to top
View user's profile Send private message
yozhik



Joined: 04 May 2014
Posts: 257
Location: Электросталь

Post (Separately) Posted: Fri Aug 11, 2023 23:43    Post subject: Reply with quote

lz57005 wrote:
даркмод нужно учитывать как отдельную сущность

Именно так даркмод (или черноморд, или мавровид)) и воспринимается даже непосвящёнными во внутреннюю кухню. Реализация этого режима в Total Commander сама по себе кривая и половинчатая (ну взять хотя бы на скрине выше чекбоксы и радио-переключатели — это ж вырвиглаз). Поэтому ещё раз повторюсь: надо, мне кажется, в плагине оставлять иконки для кнопок и не придавать большого значения тому, что в недоделанном черноморде они не работают.


Last edited by yozhik on Sat Aug 12, 2023 00:12; edited 1 time in total
Back to top
View user's profile Send private message
lz57005



Joined: 05 Mar 2020
Posts: 28

Post (Separately) Posted: Fri Aug 11, 2023 23:47    Post subject: Reply with quote

yozhik

По сути Гислер в очередной раз взял и изобрёл по своему существующее в данном случае https://www.delphistyles.com/vcl/index.html это, но криво и олдскульно в своём стиле, все эти скины по ссылке, у меня даже частично получилось применить к тоталу

Например так

https://ibb.co/TPpmtDp
Back to top
View user's profile Send private message
yozhik



Joined: 04 May 2014
Posts: 257
Location: Электросталь

Post (Separately) Posted: Fri Aug 11, 2023 23:52    Post subject: Reply with quote

Loopback
Вот, кстати, только что пришло в голову, проверил и вроде получается вовсе неплохо. При записи следующего вида:
Code:
AddControl "TButton" 1 "?" "%WCMICONS%,56" #Help

в светлой теме отображается назначенный значок, а в тёмной назначенный текст. Вполне приемлемо.

Добавлено спустя 8 минут:

lz57005 wrote:
взял и изобрёл

Наверное это потому, что у него x86 на Дельфи, а x64 на Лазарусе, чтоб работало и там, и сям. Получается как в скороговорке «Корабли лавировали, лавировали, да не вылавировали» Smile .
Back to top
View user's profile Send private message
lz57005



Joined: 05 Mar 2020
Posts: 28

Post (Separately) Posted: Sat Aug 12, 2023 00:07    Post subject: Reply with quote

yozhik именно, мне кажется любой кодер на паскале/лазаре/дельфи охренет с кода который пишется в одно лицо уже 30 лет, пусть и с комментами
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1529

Post (Separately) Posted: Sat Aug 12, 2023 03:20    Post subject: Reply with quote

Ну вроде бы что-то и получилось, хотя все-таки пришлось самостоятельно отрисовывать кнопку. Насколько это всё надежно надо тестировать.

Поскольку вариант значок+текст в данный момент весьма проблематичен, да и вообще как мне кажется, смысла в нём мало, уберу этот вариант и оставлю только значок. Тогда отдельный параметр для пути к значку будет не нужен, он будет задаваться вместо текста, а то, что его надо интерпретировать как путь к значку - переключателем /I:nn (он будет обязателен). Так оно и логичнее получится.
Back to top
View user's profile Send private message
yozhik



Joined: 04 May 2014
Posts: 257
Location: Электросталь

Post (Separately) Posted: Sat Aug 12, 2023 06:23    Post subject: Reply with quote

Loopback wrote:
вроде бы что-то и получилось

Выглядит более чем убедительно. Смотрю на время публикации сообщения и испытываю дополнительное благоговение.
Loopback wrote:
надо тестировать

Мы уже готовы. Там, кажется, не так много комбинаций для проверки: помимо битности ещё только подстройка размеров под крупные шрифты. Плотность отличную от 96 dpi я только не смогу поглядеть, нет в округе доступных таких экранов, чтоб ещё и с Windows.
Loopback wrote:
значок+текст... смысла в нём мало

Смысла в нём ещё меньше из-за того, что мы кнопки то не свои создаём, а чужие переделываем. Особо не разгуляешься. Так что совершенно нечувствительная потеря.
Loopback wrote:
переключателем /I:nn (он будет обязателен)

Теоретически возможен был бы доп. вариант /I (без :nn) для 16px, как наиболее распространённого размера. Хотя я не знаю какие экраны сейчас более распространены, 4К или меньше. Тоталовская WCMICON2.DLL укомплектована 16, 24, 32 и 48px. Последнее, думаю, с прицелом на 4К... В общем, три символа после /I набрать совершенно не в лом.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1529

Post (Separately) Posted: Sun Aug 13, 2023 00:32    Post subject: Reply with quote

ModifyDialogs 2023-08-12

Дополнительный параметр убран, теперь путь задается в том же параметре, что и текст, а что будет выводиться определяется наличием переключателя /I (также можно через двоеточие указать размер значка, по умолчанию 16). Метод вывода значка переключается в зависимости от включенной темы (берется из настроек TC, но нужно ещё проверять при значении ключа 1), цвета для отрисовки тоже читаются из конфигурации TC.


Кстати, ещё забыл выложить здесь исправленную версию Tweaks, после этого и этого багрепорта, а там вышло прилично изменений.

Tweaks 2023-06-24

- исправлена работа с переменными в командной записи
- исправлена работа с файлами UTF-16
- исправлен парсинг длинных строк в файлах *.bar
- снят лимит количества пунктов меню
Back to top
View user's profile Send private message
yozhik



Joined: 04 May 2014
Posts: 257
Location: Электросталь

Post (Separately) Posted: Sun Aug 13, 2023 01:10    Post subject: Reply with quote

Loopback wrote:
ModifyDialogs 2023-08-12

404 по ссылке Sad
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1529

Post (Separately) Posted: Sun Aug 13, 2023 01:33    Post subject: Reply with quote

yozhik
Поправил...
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 124, 125, 126 ... 190, 191, 192  Next
Page 125 of 192

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group