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: Ultra TC Editors 
Author Message
yozhik



PostPosted: Thu May 07, 2026 21:46    Post subject: Reply with quote

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)">&lt;&gt;</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 не переписывать Smile Хотя, если изменения действительно понадобятся, то перепишем и сценарий, конечно. Ну и сейчас, добавления типа «<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
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group