| View previous topic :: View next topic |
| Author |
Message |
Avada

Joined: 01 Aug 2008 Posts: 10509 Location: Россия, Саратов
|
(Separately) Posted: Tue May 05, 2026 07:02 Post subject: |
|
|
| Orion9 wrote: | | А последний релиз ТС, который вот-вот состоится, много затронет изменений в справочнике по ключам? Как долго ждать обновлений, если навскидку? |
Не безумно много, но есть: более 30 изменённых и добавленных мест. Но надо учесть, что во все версии файла данных уже внесена очень объёмная ретроспективная правка прежних описаний, и пока не факт, что она на этом этапе полностью завершена. Опять же выкладка делается вместе с прочими справочниками, а не по частям. Ориентировочно (если не трогать общую прежнюю схему) планирую в мае, точнее сказать не могу.
| Orion9 wrote: | | Я не знаю, будет ли CaptainFlint делать обновления на сайте, но вообще не помешало бы добавить якоря ко всем ключам в справочнике для более удобной работы с ним. |
И я пока не знаю, не обсуждалось. Там не так всё просто. В частности, id= давно уже внедрены в сам CEDF для других целей (онлайновый переход к подкатегории справочника по точной ссылке и формирование оглавления). Внедрение их для каждого ключа в CDEF, если это и возможно, создаст мне проблемы при подготовке и сверке разных версий файла. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1092
|
(Separately) Posted: Tue May 05, 2026 12:05 Post subject: |
|
|
Супер получилось! Просто суперецки ❤️
Все ключи, конечно, не проверить, но я долго игрался, всё работает. Включая, кстати, секции, о чём вы скромно умолчали )
Никаких багов и недостатков не найдено: можно сказать, это не тестовая, а вполне рабочая версия.
Отдельно спаибо за CSS. Мне с шрифтом Arial действительно привычнее и удобнее читать. А для тёмной версии CSS тоже будет работать? А то сейчас на HTML-файлах не получилось проверить.
| yozhik wrote: | | На XP SP3 x86 — нет, точнее работает только сворачивание, а при разворачивании ругается на неподдерживаемый метод объекта, т.е. для XP надо ещё упрощать код. |
Очень странно. Можно, конечно, дальше искать решение, но я бы просто дропнул ХРюшу, и всё.
Avada
Спасибо за информацию. В принципе, мы уже в мае, т.ч. надеюсь, ждать осталсь недолго.
| Avada wrote: | | Внедрение их для каждого ключа в CDEF, если это и возможно, создаст мне проблемы при подготовке и сверке разных версий файла. |
Да, об этом я не подумал. На сайте, как я понимаю, сейчас оригинальные CEDF с дополнительным JS скриптом для выбора версий. CaptainFlint довольно занятый человек, не уверен, что он найдет на это время. Но для начала можно хотя добавить скрытие лишних столбцов для более удобного чтения онлайн. Там вопрос всего нескольких строк, и, возможно, с якорями не придется заморачиваться, т.к. это браузерный вариант, а некоторые современные бразуеры держат позицию (что, кстати, и ввело меня в заблуждение, когда я утверждал, что :nth-child в CHM меньше прыгает, хотя по факту это не так). Но yozhik тоже это заметил.
| yozhik wrote: | В современных браузерах (пробовал в хромоклоне Vivaldi и в Edge) городить перемещение к якорю не нужно — при скрытии/показе колонок текущая строка остаётся на месте, не улетает.
|
У меня Mozilla тоже держит позицию на самом первом файле Russian (Alt+H).7z по ссылке выше. |
|
| Back to top |
|
 |
yozhik

Joined: 04 May 2014 Posts: 332 Location: Электросталь
|
(Separately) Posted: Tue May 05, 2026 15:29 Post subject: |
|
|
Обновил CHM-ы
TC.11.56.chm
TC.11.56.Dark.chm
TC.Inikeys.chm
TC.Inikeys.Dark.chm
Теперь все здесь:
https://disk.yandex.ru/d/jiSb9EoxdnEXVw
— по мере выхода новых редакций буду конвертировать и добавлять новую папку со всем набором. Пока крайняя (она же синхронизированная с родительскими справочниками) — TC_HELP_1156_u1.
Orion9, с тёмными CHM наружный CSS тоже работает, конечно, только имя CSS == имя CHM. Позднее напишу это в README.MD вместе с примерами CSS-настроек. Но для TC.11.56.(Dark.)chm я пока наружный CSS не сделал, потому что там сборник справочников, а не только по INI, и надо так придумать, чтобы их стили не пересекались, или наоборот, чтобы из одного CSS било сразу по всем. _________________ Amo ergo sum |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1092
|
(Separately) Posted: Tue May 05, 2026 18:04 Post subject: |
|
|
yozhik
Понятно. Я просто хотел посмотреть, как будет выглядеть смена шрифта в темной версии справочника. Собственно, сейчас это и сделал. Переименовал каскад в TC.Inikeys.Dark.css и проверил. Все работает.
Здоровский у вас набор справочников на диске! Прям флеш рояль какой-то ) Спасибо!
Напоследок пара пожеланий, которые выполнять необязательно.
1) В списках, следующих за ключами, можно сделать отступ для более наглядного представления. Сейчас это
| Code: | Управляет отображением главной (горизонтальной) панели инструментов:
1 (по умолчанию): отображать;
0: скрывать. |
А может быть
| Code: | Определяет количество отображаемых панелей с кнопками дисков:
0 (по умолчанию): одна (только для активной файловой панели);
1: две (для каждой файловой панели). |
В оригинальном CEDF на этом месте символ табуляции, его можно заменить обычными пробелами. У меня в скрипте используются 4 пробела
| Code: | out = StrReplace(out, auTAB, " ") |
У вас тоже наверняка скрипт, вы же как-то добавили отступ к абзацам и кнопки с якорями.
2) В дополнение к TC.Inikeys.chm со всеми версиями справочников можно сделать отдельный файл на последнюю версию ТС. Просто я понимаю сборщиков. Дело не в мегабайтах. Когда открываешь файл справки, получаешь целую вереницу ненужных версий, не имеющих никакого отношения к сборке.
А в остальном всё ТОП. |
|
| Back to top |
|
 |
yozhik

Joined: 04 May 2014 Posts: 332 Location: Электросталь
|
(Separately) Posted: Wed May 06, 2026 01:22 Post subject: |
|
|
Orion9
Отступы перед значениями ключей я не стал делать, потому что есть много длинных строк, в которых это будет выглядеть «красной строкой» и сбивать с толку, пмсм, т.к. «красные» больше нигде не используются. Обрамлять их в блочные тэги — усложнение структуры, и алгоритм их выявления нерегулярен. А вот пустые строки перед списками значений я добавил — спасибо за наводку, стало лучше. Ещё кнопки разворачивания сделал «плавающими», чтобы не занимали всю первую строку (странно, почему сразу до этого не догадался). Скачайте, пожалуйста, заново (ссылку на папку см. выше):
TC.11.56.chm
TC.11.56.Dark.chm
TC.Inikeys.chm
TC.Inikeys.Dark.chm
| Orion9 wrote: | | В дополнение к TC.Inikeys.chm со всеми версиями... можно сделать отдельный файл на последнюю версию ТС |
TC.11.56.chm — это он и есть, в нём три страницы: команды, клавосочетания и INI-ключи — всё только для 11.56. И для него теперь тоже можно создавать одноимённый CSS, но влиять он будет только на страницу с INI-ключами. _________________ Amo ergo sum |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1092
|
(Separately) Posted: Wed May 06, 2026 12:17 Post subject: |
|
|
| yozhik wrote: | TC.11.56.chm
TC.11.56.Dark.chm
TC.Inikeys.chm
TC.Inikeys.Dark.chm |
Да, лучше стало. Вы правы: возможно, отступ и не нужен. Сейчас хорошо смотрится.
| yozhik wrote: | | TC.11.56.chm — это он и есть, в нём три страницы: |
Хех... Признаюсь, пропустил. Возможно, вам нужно больше акцента сделать на том, что это "три в одном". Я его открыл, но даже мысли не возникло, что последний пункт "Настройки" это полноценный Inikeys. На мой взгляд, для большего привлечения внимания этот пункт можно завернуть в отдельный раздел (например, назвав его "Ключи Wincmd.ini"), чтобы при открытии справочника было сразу видно, что в нем три раздела. А в Readme.md можно переместить его на первое место, чтобы он не затерялся:
| Code: | `TC.11.56.chm` — набор из трёх справочников по командам, параметрам, клавиатурным назначениям и INI-ключам для последней версии Total Commander 11.56. |
Этот справочник — главный туз в вашей коллекции, которого так долго ждал Мэверик. Нельзя, чтобы он затерялся.
 Hidden text Эх, давно я не смотрел этот фильм... Все такие молодые, бодрые, аж спеть захотелось: и Гибсон такой молодой  |
|
| Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6229 Location: Москва
|
(Separately) Posted: Thu May 07, 2026 18:13 Post subject: |
|
|
| Orion9 wrote: | | не помешало бы добавить якоря ко всем ключам в справочнике для более удобной работы с ним. |
| Avada wrote: | | Там не так всё просто. В частности, id= давно уже внедрены в сам CEDF для других целей (онлайновый переход к подкатегории справочника по точной ссылке и формирование оглавления). Внедрение их для каждого ключа в CDEF, если это и возможно, создаст мне проблемы при подготовке и сверке разных версий файла. |
Это довольно легко, и CEDF трогать совсем не требуется. HTML формируется через XSLT, и какие там были исходные атрибуты в XML, никого не касается. Поэтому и к выкладыванию справочников привязывать необязательно, так как XSLT по большому счёту независимый.
Выложил экспериментальную тестовую версию:
https://flint-inc.ru/Temp/tcinfo-test/Russian.cedf
К каждому TD с именем ключа добавлен атрибут id со значением "секция--имя" (чтобы гарантировать уникальность). Невалидные символы заменяются подчёркиваниями. Пример:
https://flint-inc.ru/Temp/tcinfo-test/Russian.cedf#Configuration--ShowLastVisitedInMiddle
Что касается скрытия столбцов, это тоже может реализовываться через добавление скрипта в XSLT, но я пока не имел возможности проанализировать примеры, которые тут выкладывались. Могу только сказать, что первые варианты были абсолютно кошмарные, начиная буквально с первой строчки, где кнопка засовывалась прямо в тег <html> до всех служебных заголовков и <body>. Реализацию скрытия можно упростить, если добавить служебных классов во все ячейки, и скрипт тогда сможет опираться на названия этих классов, а не пытаться высчитывать, что там где по порядку находится. Собственно, в ячейках таблицы классы и так уже уникальные, надо только для заголовков дополнительно их же прописать, да сверить, чтобы классовые стили там друг другу не противоречили.
И вот ещё что. Недавно пробегала новость, что в хромодвижках собираются отказаться от поддержки XSLT. Так что 99% браузеров наш онлайн-справочник больше открывать не смогут. Я пока не знаю, какую альтернативу тут можно предложить. В крайнем случае я всегда могу написать скрипт, который все эти XSLT-преобразования выполняет локально и публикует уже сформированный HTML на сайте. То есть это не конец света, но определённые проблемы и телодвижения, по всей видимости, нам предстоят. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1092
|
(Separately) Posted: Thu May 07, 2026 20:46 Post subject: |
|
|
| CaptainFlint wrote: | | Выложил экспериментальную тестовую версию: |
Спасибо! Но как можно сослаться на якорь конкретного ключа? Может быть сам ключ тогда ссылкой должен быть?
| CaptainFlint wrote: | | Могу только сказать, что первые варианты были абсолютно кошмарные, начиная буквально с первой строчки, где кнопка засовывалась прямо в тег <html> до всех служебных заголовков и <body>. |
Я сам смеялся, когда увидел, как в гаждете сделано ) Но мы в этих делах профаны (агенты три нуля), что не раз озвучивалось в топике. Главное, что все получилось. Я очень доволен результатом в CHM: сразу читать захотелось  |
|
| Back to top |
|
 |
yozhik

Joined: 04 May 2014 Posts: 332 Location: Электросталь
|
(Separately) Posted: Thu May 07, 2026 21:16 Post subject: |
|
|
| Orion9 wrote: | | назвав его "Ключи Wincmd.ini"... в Readme.md ... его на первое место |
Сделал. (Заодно обновил и дополнил TC.Extra.html)
| CaptainFlint wrote: | | пока не имел возможности проанализировать примеры, которые тут выкладывались |
Кратко о последней реализации, которая сейчас используется в CHM по ссылке чуть выше (в этом посте).
В начало body добавляется скрипт:
| Code: | <script type="text/javascript">function toggleColumn(loc){var body=document.body;if(body.className.indexOf('hide-cols')!==-1){body.className=body.className.replace('hide-cols','').trim();}else{body.className+=' hide-cols';}window.location=window.location.toString().replace(/#[a-z0-9\-]+/g,'')+"#"+loc;window.scrollBy(0,-100);}</script> |
В каждую ячейку с описанием <td class="td_description"> добавляется div с маленькой кнопочкой (без надписи, только угловые скобки):
| Code: | <div class=btn><button name="10001" title="Развернуть/Свернуть описание" onclick="toggleColumn(10001)"><></button></div> |
В каждую ячейку, которая принадлежит колонке, которую нужно сворачивать, добавляется служебный класс col-hide, например:
| Code: | <td class="td_header col-hide">Секция</td>
...
<td class="td_section col-hide">Layout</td> |
В head/style добавляются стили для кнопки и скрытия ячеек:
| Code: | .hide-cols .col-hide{display:none;}
div.btn{display:block;float:right;margin-left:1em;}
button{color:#444C56;border:1px solid #444C56;border-radius:4px;cursor:pointer;padding:2px 5px;}
button:hover{color:#0075EA;border-color:#0075EA;text-shadow: 0 0 10px #80BFFF;}
button:active{background:#fff;} |
Т.е. это как раз то, о чём вы написали:
| CaptainFlint wrote: | | Реализацию скрытия можно упростить, если добавить служебных классов во все ячейки, и скрипт тогда сможет опираться на названия этих классов |
Почему у каждой кнопки уникальный якорь (name) и зачем скрипт запускается с параметром, например, toggleColumn(10001) ?
Это сделано только для работоспособности скрипта в CHM и в IE9, движок которого используется в CHM. В IE9, когда после сворачивания/разворачивания колонок кол-во строк меняется, текущая горизонтальная позиция улетает вверх или вниз. Чтобы вернуться к той ячейке, в которой была нажата кнопка, скрипт делает переход к её якорю.
Но в современных браузерах этого делать не нужно, потому что при сворачивании/разворачивании текущая горизонтальная позиция автоматически восстанавливается самим браузером. Поэтому для современных браузеров достаточно будет скрипта:
| Code: | <script type="text/javascript">function toggleColumn(loc){var body=document.body;if(body.className.indexOf('hide-cols')!==-1){body.className=body.className.replace('hide-cols','').trim();}else{body.className+=' hide-cols';}}</script> |
и одной единственной кнопки (плавающей в правом верхнем углу окна, например) для скрытия колонок.
Если же требуется сохранить совместимость с IE9 (и с CHM, как следствие), то лучше использовать многокнопочный вариант, или реализовать выполнение условия в зависимости от браузера.
Добавлено спустя 15 минут:
Да, и ещё один момент: вообще разговор о добавлении каждому ключу уникального ID зашёл в связи с тем, чтобы можно было организовать переход к нему при помощи «window.location.hash = id;». Но поскольку с того момента мы уже организовали переход другим способом, то и насущная необходимость в ID отпадает.
Я ведь ещё думаю о том, чтобы свой сценарий по конвертации CHM не переписывать Хотя, если изменения действительно понадобятся, то перепишем и сценарий, конечно. Ну и сейчас, добавления типа «<td class="td_key" id="Layout--ButtonBar">» мой сценарий не затрагивают.
Добавлено спустя 16 минут:
| Orion9 wrote: | | Но как можно сослаться на якорь конкретного ключа? |
Для подавляющего большинства ключей имя якоря очевидно — это "<имя_секции>--<имя_ключа>" (и то, и другое смотрим в таблице). Дописываем такой якорь в конец адреса после #. А если не сработало, то открываем ячейку с ключом в Инспекторе браузера и копируем ID оттуда.
Например: https://flint-inc.ru/Temp/tcinfo-test/Russian.cedf#Packer--PackEncrypted _________________ Amo ergo sum |
|
| Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6229 Location: Москва
|
(Separately) Posted: Thu May 07, 2026 22:10 Post subject: |
|
|
| Orion9 wrote: | | Но как можно сослаться на якорь конкретного ключа? Может быть сам ключ тогда ссылкой должен быть? |
То есть, как пользователю такую ссылку получить? Да, я такой сценарий не учитывал. Думал, что речь как раз о том, чтобы применять это дело лишь для всяких внутренних поделок. Поэтому да, пока что — либо угадыванием, либо вытаскиванием из веб-отладчика. Про ссылки — вариант, но если каждый ключ будет ссылкой, не станет ли это избыточным загромождением? _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1092
|
(Separately) Posted: Fri May 08, 2026 00:37 Post subject: |
|
|
yozhik
CaptainFlint
Спасибо за пояснение. Но это сложно простому пользователю.
Как мне кажется, должна быть маленькая кнопка рядом с ключом, которая будет копировать ссылку с якорем. Эту ссылку можно расшаривать на форуме: удобно же, чем просто отсылать человека искать ключ в справочнике. |
|
| Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6229 Location: Москва
|
(Separately) Posted: Fri May 08, 2026 02:41 Post subject: |
|
|
Тогда это надо обсудить с Avada. Справочник — его вотчина, поэтому любые модификации, проявляющиеся визуально, будут добавлены лишь с его одобрения. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1092
|
(Separately) Posted: Fri May 08, 2026 13:21 Post subject: |
|
|
| yozhik wrote: | | Сделал. (Заодно обновил и дополнил TC.Extra.html) |
Вчера не успел посмотреть и оставить отзыв, теперь выглядит классно! Как всегда, вы сделали больше, чем ожидалось: навигация на левой панели лишней не будет
| CaptainFlint wrote: | | любые модификации, проявляющиеся визуально, будут добавлены лишь с его одобрения. |
Если я правильно понял, оригинальные CEDF затронуты не будут, а это уже хорошо. А сделать кнопку с копированием ссылки, не должно составить проблем. Спросил у сами знаете кого
| Code: | <button onclick="copyUrl()">Скопировать ссылку</button>
<script>
function copyUrl() {
navigator.clipboard.writeText(window.location.href)
.then(() => alert("Ссылка в буфере!"))
.catch(err => console.error("Ошибка:", err));
}
</script>
|
| Code: | Чтобы добавить якорь (id элемента) к текущей ссылке перед копированием, просто прибавьте строку с символом # к значению URL.
const anchor = 'my-section'; // ID элемента на странице
const linkWithAnchor = window.location.href + '#' + anchor;
await navigator.clipboard.writeText(linkWithAnchor);
Часто нужно копировать ссылку на конкретный заголовок при клике по нему:
function copySectionLink(id) {
const url = new URL(window.location.href);
url.hash = id;
navigator.clipboard.writeText(url.toString())
.then(() => console.log(`Ссылка на секцию ${id} скопирована`));
} |
|
|
| Back to top |
|
 |
|
|
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
|