Ultra TC Editors

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

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

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

Сообщение yozhik »

VBScript работает в CHM. Но JS всё же лучше. JS не то чтобы вообще не работает в CHM — разворачивающееся оглавление же в справочниках работает, а оно на JS — но работает с ограничениями. Orion9, быть может попробовать дать деревянному солдату команду «чтобы работало в IE» или сразу «в CHM»? Вы же опытный Урфин Джюс, а я не Урфин Джюс вообще :)

Если получится сделать работоспособное в CHM переключение на JS, то можно было бы его вставить в каждую ячейку Description в виде маленькой кнопочки [<>]. Тогда и кол-во столбцов можно было бы учесть и для верхних таблиц использовать одну ф-цию, а для нижних — другую. Расставить кнопки по ячейкам — минутное дело при помощи регулярок. А хоткей не использовать совсем. Я не против хоткея, но чем проще код, тем больше шансов, что он заведётся в CHM.

Для лучшего понимания — вот это в CHM сейчас работает исправно:

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

<script type="text/javascript">function toggleBlock(e){var l=document.getElementById(e+"-data"),s=document.getElementById(e+"-toggler");"none"==l.style.display?(l.style.display="block",s.className="shown"):(l.style.display="none",s.className="hidden")}</script>

<span id="keys-contents-toggler" class="hidden" onclick="javascript:toggleBlock('keys-contents');"></span><a href="#keyslist">Список ключей</a>
Amo ergo sum
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Avada писал(а):Локальный файл изменяться не может, поскольку предусмотрено в т.ч. его скачивание "как есть".
Да. Понятно.
yozhik писал(а):а я не Урфин Джюс вообще
Так ведь надо им становиться! :) Тем более, что ничего сложного в общении с ИИ нет. Он, конечно, иногда болванится, но в целом радует вменяемым кодом и полезными советами.

А вообще, вы гений! Я, конечно, и раньше игрался с болваном, но так чтобы рубануть его прямо в лоб не догадался бы, а зря!

[cut="why does the following code not work in chm or ie?"]

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

onclick="toggleColumn()">Показать/Скрыть колонку (Alt+H)</button>
<script type="text/javascript">
      function toggleColumn() {
        // Просто включаем/выключаем класс на таблице
        document.body.classList.toggle('hide-cols');        
      }
      document.addEventListener('keydown', function(event) {
        // Например, переключаем по нажатию Alt + H (Hide)
        if (event.altKey && event.code === 'KeyH') {
          event.preventDefault(); // чтобы не сработали системные функции
          toggleColumn(); 
        }
      });        
    </script>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><style type="text/css">
        /*.hide-cols td:nth-child(1),*/
          .hide-cols td:nth-child(2),
          .hide-cols td:nth-child(3),
          .hide-cols td:nth-child(4),
          .hide-cols td:nth-child(5),          
          .hide-cols td:nth-child(6) 
[/cut]

[cut="Ответ"]

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

Основная причина в том, что формат CHM использует движок Internet Explorer (часто в режиме совместимости с очень старыми версиями), который не поддерживает современные стандарты JavaScript.Вот три критические ошибки в вашем коде для этих сред:⚠️ Почему это не работаетclassList: Свойство classList.toggle появилось только в IE10. В более старых версиях (или в CHM) оно просто не существует.event.code: Свойство 'KeyH' — это стандарт современного JS. Старый IE понимает только event.keyCode (числовой код клавиши).addEventListener: В совсем древних версиях IE (до 9-й) использовался attachEvent.✅ Исправленный код (совместимый с CHM и старым IE)Этот вариант будет работать везде, включая старые файлы справок:javascriptfunction toggleColumn() {
    var body = document.body;
    // Заменяем classList.toggle на проверку строки className
    if (body.className.indexOf('hide-cols') !== -1) {
        body.className = body.className.replace('hide-cols', '').trim();
    } else {
        body.className += ' hide-cols';
    }
}

// Используем старый способ отлова клавиш
document.onkeydown = function(e) {
    e = e || window.event;
    // 72 — это код клавиши H
    if (e.altKey && e.keyCode === 72) {
        if (e.preventDefault) e.preventDefault(); else e.returnValue = false;
        toggleColumn();
    }
};
Используйте код с осторожностью.💡 Важные советы для CHM:Режим рендеринга: Добавьте этот тег в <head>, чтобы заставить CHM использовать более современный движок (если он установлен в системе):<meta http-equiv="X-UA-Compatible" content="IE=edge">CSS: Псевдоселектор :nth-child работает только в IE9+. Если вам нужна поддержка еще более старых версий, придется циклом проходить по строкам таблицы в JS и менять display у конкретных td.Хотите, я помогу переписать CSS-часть, чтобы она гарантированно работала даже в самых старых версиях справочников?
[/cut]
[cut]

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

Чтобы CSS гарантированно работал в старых движках (IE6–8), которые часто встречаются в CHM, нужно отказаться от :nth-child. Старые версии IE этот селектор просто игнорируют.Единственный надежный способ — добавлять классы конкретным ячейкам.1. Измените HTMLДобавьте класс (например, col-hide) всем ячейкам (th и td), которые нужно скрывать.html<table>
  <tr>
    <th>Постоянная колонка</th>
    <th class="col-hide">Скрываемая 1</th>
    <th class="col-hide">Скрываемая 2</th>
  </tr>
  <tr>
    <td>Данные</td>
    <td class="col-hide">Скрыто 1</td>
    <td class="col-hide">Скрыто 2</td>
  </tr>
</table>
Используйте код с осторожностью.2. Используйте простой CSSВместо сложных селекторов используем каскад. Если у body есть класс hide-cols, то элементы с классом col-hide исчезают.css/* Этот синтаксис понимают абсолютно все версии IE */
.hide-cols .col-hide {
    display: none;
}
Используйте код с осторожностью.3. Скрипт (адаптированный под старый IE)Для полноты картины используем максимально совместимый JS, который мы обсуждали ранее:javascriptfunction toggleColumn() {
    var b = document.body;
    // Простая проверка наличия класса в строке className
    if (b.className.indexOf('hide-cols') !== -1) {
        b.className = b.className.replace('hide-cols', '').trim();
    } else {
        b.className += ' hide-cols';
    }
}

// Назначаем горячую клавишу Alt+H
document.onkeydown = function() {
    var e = window.event; // Особенности старого IE
    if (e.altKey && e.keyCode === 72) {
        e.returnValue = false; // Отмена системного действия
        toggleColumn();
    }
};
Используйте код с осторожностью.Почему это лучше для CHM?Совместимость: Классы и обычный каскад .class1 .class2 работают со времен IE4.Производительность: Движку старого IE гораздо проще скрыть элементы по классу, чем высчитывать «каждый пятый элемент в строке» через :nth-child.Надежность: В CHM часто включен «режим совместимости», который ломает любой современный CSS3.У вас большая таблица, или вы можете быстро проставить классы в HTML вручную?
[/cut]
В общем, я проверил оба варианта. Оба работают в плагине HTMLView! Первый такой

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

<html>
<head><meta http-equiv="X-UA-Compatible" content="IE=edge">
<button onclick="toggleColumn()">Показать/Скрыть колонку (Alt+H)</button>
<script type="text/javascript">
     function toggleColumn() {
        var body = document.body;
        // Заменяем classList.toggle на проверку строки className
        if (body.className.indexOf('hide-cols') !== -1) {
            body.className = body.className.replace('hide-cols', '').trim();
        } else {
            body.className += ' hide-cols';
        }
        alert("Привет! Я уведомление.");
    }
    
    // Используем старый способ отлова клавиш
    document.onkeydown = function(e) {
        e = e || window.event;
        // 72 — это код клавиши H
        if (e.altKey && e.keyCode === 72) {
            if (e.preventDefault) e.preventDefault(); else e.returnValue = false;
            toggleColumn();
        }
    };
    </script>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><style type="text/css">
        /*.hide-cols td:nth-child(1),*/
          .hide-cols td:nth-child(2),
          .hide-cols td:nth-child(3),
          .hide-cols td:nth-child(4),
          .hide-cols td:nth-child(5),          
          .hide-cols td:nth-child(6) {
            display: none;
          }
Второй без X-UA-Compatible работает только на поовину, но тогда придется отказаться от td:nth-child и откатиться на скрытие полей по классу, как в VBScript, с вытекающей проблемой скрытия заголовков.

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

<html>
<head><meta http-equiv="X-UA-Compatible" content="IE=edge">
<button onclick="toggleColumn()">Показать/Скрыть колонку (Alt+H)</button>
<script type="text/javascript">
     function toggleColumn() {
        var body = document.body;
        // Заменяем classList.toggle на проверку строки className
        if (body.className.indexOf('hide-cols') !== -1) {
            body.className = body.className.replace('hide-cols', '').trim();
        } else {
            body.className += ' hide-cols';
        }
        alert("Привет! Я уведомление.");
    }
    
    // Используем старый способ отлова клавиш
    document.onkeydown = function(e) {
        e = e || window.event;
        // 72 — это код клавиши H
        if (e.altKey && e.keyCode === 72) {
            if (e.preventDefault) e.preventDefault(); else e.returnValue = false;
            toggleColumn();
        }
    };
    </script>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><style type="text/css">
          td {
            border-style: solid;
            border-width: 1px;
            vertical-align: top;
            padding: 8px;
            }
          .td_header {font-weight: bold; background-color: #A3E4A3; color: #000;border-style: solid;border-width: 1px 1px 1px 0; border-color: #000;}
          .td_key {background-color: #FFF7E8; color: #000; border-style: solid;border-width: 0 1px 1px 1px;padding: 8px;}
          .td_file {background-color: #fff; border-width: 0 1px 1px 0;padding: 8px;}
          .td_section {background-color: #fff; border-width: 0 1px 1px 0;padding: 8px;}
          .td_version {background-color: #fff; border-width: 0 1px 1px 0;padding: 8px;}
          .td_default {background-color: #fff; border-width: 0 1px 1px 0;padding: 8px;}
          .td_advanced {background-color: #fff; border-width: 0 1px 1px 0;padding: 8px;}
          .td_description {background-color: #FFF7E8; border-width: 0 1px 1px 0;padding: 8px;}
          .keyscount {font-size: 0.8em;}
          a:link {text-decoration:none;}
          a:visited {text-decoration:none;}
          a:hover {text-decoration:underline;}
          a:active {text-decoration:underline;}
          .hidden, .shown {
            cursor: pointer;
            margin-right: 0.5em;
          }            
          .hide-cols .td_header { display: none; }          
          .hide-cols .td_file { display: none; }
          .hide-cols .td_section { display: none; }          
          .hide-cols .td_version { display: none; }     
          .hide-cols .td_default { display: none; }
          .hide-cols .td_advanced { display: none; }   
Ну, и оба варианта работают без Alt + H в плагине. Но что-то мне подсказывает, что это дело в самом плагине, там надо искать.

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

Сообщение yozhik »

Ну, вот так работает и в CHM, и в HTMLView, и на Win 7 (Pro SP1 x64 2018.08 )
https://dropmefiles.com/yuV4G
(обменник перепаковывает архив с паролем 123 — прошу прощения, это не я).

Только остался один существенный недостаток: поскольку колонки сворачиваются во всех таблицах, строки улетают, и чем ближе к концу файла, тем разница существенней. Вариант решения мне представляется таким. Каждой ячейке Descritpion присваиваем якорь или ID — это я умею (надеюсь), а при вызове ф-ции сворачивания передаём этот якорь или ID параметром, например:

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

<td class="td_description"><a name="1234"></a><button onclick="toggleColumn(1234)"><></button>
Нужно в ф-ции toggleColumn дописать переход к якорю. А это я не умею :)

meta http-equiv="X-UA-Compatible" content="IE=edge" у меня в CHM с самого начала был — без этой директивы CSS плохо работает. Но я всё равно выбрал вариант без :nth-child — для нас сейчас чем топорней, тем надёжней, пмсм.
Orion9 писал(а):вы гений
Нет, это не я. Гений — это Игорь Северянин.
Amo ergo sum
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

yozhik
чЁтко получилось :) Мне нравится. Очень нравится!
yozhik писал(а):Только остался один существенный недостаток: поскольку колонки сворачиваются во всех таблицах, строки улетают, и чем ближе к концу файла, тем разница существенней.
Да, я писал об этой проблеме. Реально обламывает.
yozhik писал(а):Но я всё равно выбрал вариант без :nth-child — для нас сейчас чем топорней, тем надёжней, пмсм.
А может быть все-таки попробовать с :nth-child? Там меньше улетает позиция, почти и не видно, и с якорями не придется заморачиваться. Ну а если ничего не получится, будем дальше думать, только уже на свежую голову )
yozhik писал(а):Нет, это не я. Гений — это Игорь Северянин.
Ладно, уговорили. Вы — нормальный, как и я, и все мы :lol:
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

yozhik
В HTMLView и MarkdownView на Windows 7 SP1 у меня переключение не работает. В браузере — да.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
yozhik
Сообщения: 353
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

Avada
Первым шагом давайте, пожалуйста, сравним наши настройки плагинов. Поскольку MarkdownView сконструирован на основе HTMLView, вся базовая часть настроек у них общая. Вот мой MarkdownView.ini:
https://disk.yandex.ru/d/V6O6jhr5S3SXMA
Amo ergo sum
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

yozhik
Там по сути только два ключа могут играть роль, как мне кажется

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

; Set to 1 to allow scripts execution
AllowScripting=1
;
; Set to 1 to allow Java applets to execute
AllowJava=1
yozhik писал(а):Нужно в ф-ции toggleColumn дописать переход к якорю. А это я не умею
Не игнорируйте болвана — он все умеет.

[cut="how do i go to an anchor in JS?"]

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

Для перехода к якорю (anchor) в JavaScript есть несколько способов, от классических до современных с плавной анимацией.1. Самый надежный (совместим с CHM и старым IE)Этот метод просто меняет хеш в адресной строке, и браузер мгновенно перепрыгивает к элементу с соответствующим id или name.javascriptwindow.location.hash = 'myAnchor'; // Перейдет к <a id="myAnchor"> или <a name="myAnchor">
Используйте код с осторожностью.2. С помощью метода scrollIntoView (Современный)Позволяет сделать переход более гибким. Работает в большинстве современных браузеров (Chrome, Firefox, Edge, IE11).javascriptvar element = document.getElementById("myAnchor");
element.scrollIntoView();
Используйте код с осторожностью.Если хотите плавный скролл (не работает в старых IE/CHM):javascriptelement.scrollIntoView({ behavior: 'smooth' });
Используйте код с осторожностью.3. Как сделать это в вашем CHM-проекте?Поскольку мы боремся за совместимость со старым движком IE, лучше всего использовать location.hash.Пример функции для кнопки:html<button onclick="goToSection('part2')">Перейти к разделу 2</button>

<script type="text/javascript">
  function goToSection(id) {
    var el = document.getElementById(id);
    if (el) {
      window.location.hash = id;
    } else {
      alert("Секция не найдена!");
    }
  }
</script>

<!-- Где-то ниже в коде -->
<h2 id="part2">Раздел 2</h2>
Используйте код с осторожностью.💡 Важные нюансы для CHM:ID vs Name: В совсем древних версиях IE якоря лучше работают через тег <a> с атрибутом name: <a name="myAnchor"></a>.Смещение: Если у вас есть фиксированная шапка (header), переход по якорю может «закинуть» заголовок под нее. В этом случае лучше использовать window.scrollBy(0, -50) после перехода.Нужно ли нам объединить это с вашей функцией скрытия колонок (например, чтобы после скрытия фокус возвращался в начало таблицы)? Пишите, если нужен готовый кусок кода!
[/cut]
Но у меня через тег <a> с атрибутом name почему-то не сработало. Зато сработало через id. Сначала скрипт
[cut]

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

<script type="text/javascript">function toggleBlock(e){var l=document.getElementById(e+"-data"),s=document.getElementById(e+"-toggler");"none"==l.style.display?(l.style.display="block",s.className="shown"):(l.style.display="none",s.className="hidden")}</script>
<script type="text/javascript">function toggleColumn(id) {var body = document.body;if (body.className.indexOf('hide-cols') !== -1) {body.className = body.className.replace('hide-cols', '').trim();} else {body.className += ' hide-cols';
var el = document.getElementById(id);
      if (el) {
        window.location.hash = id;
      } else {
        alert("Секция не найдена!");
      }
} }</script>
[/cut]
Два первых ключа
[cut]

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

<td class="td_key">ButtonBar</td>
<td class="td_file col-hide">Wincmd.ini</td>
<td class="td_section col-hide">Layout</td>
<td class="td_version col-hide">3.00+</td>
<td class="td_default col-hide">1</td>
<td class="td_advanced col-hide">---</td>
<td class="td_description" id="1234"><button onclick="toggleColumn('1234')"><></button><br>Управляет отображением главной (горизонтальной) панели инструментов:<br>	1 (по умолчанию): отображать;<br>	0: скрывать.<br><br><br>ПРИМЕЧАНИЯ:<br><br>Ключи этой подкатегории отвечают за отображение/скрытие компонентов основного окна TC (кроме заголовка, главного меню и файловых панелей), описываемых в порядке следования (сверху вниз), таков же порядок соответствующих опций на странице настроек "Вид окна". (Опции иного предназначения рассматриваются в других подкатегориях.)<br><br>В TC по умолчанию имеются две панели инструментов — главная, горизонтальная (ниже строки главного меню) и вспомогательная, вертикальная (между файловыми панелями). Каждая такая панель содержит некоторое количество кнопок для запуска команд/программ, навигации, открытия в различном виде других панелей инструментов и т.д. В английском интерфейсе TC введено понятие "button bar" (буквально — "панель кнопок"), однако в русском переводе используется более традиционный и употребительный термин.<br><br>Можно скрыть главную панель инструментов, привязав постоянную (загружаемую по умолчанию) панель к файлу no.bar, входящему в дистрибутив TC (см. в подкатегории "Интерфейс программы" — "Панели инструментов" — "Главная панель" ключ Buttonbar из одноимённой секции, лишь по названию совпадающий с ключом ButtonBar в секции [Layout]). Однако механизм скрытия там иной: функция сохранена, а в текущем файле просто нет ничего, что можно отобразить.<br><br><br>ПОЯСНЕНИЯ ПО ТАБЛИЧНОМУ ПРЕДСТАВЛЕНИЮ КЛЮЧЕЙ И СЕКЦИЙ:<br><br>Интерфейс Ultra TC Configuration Editor позволяет получить информацию о ключах и секциях из основных INI-файлов TC с помощью т.н. атрибутов, записанных в файлах данных программы-редактора. Виды атрибутов и их предназначение подробно пояснены в справке Ultra TC Editors. Ключи и секции распределены в файле данных по категориям разной степени вложенности. Корневым в этой структуре, отображаемой в окне Configuration Editor в виде дерева, является элемент "Настройки Total Commander", а все прочие элементы можно считать вложенными категориями (подкатегориями). Ссылки на другие ключи или секции могут даваться в описаниях как с указанием соответствующей цепочки подкатегорий, так и без него. В Configuration Editor для поиска имён, описаний и значений ключей имеется специальный диалог, открываемый в т.ч. клавишами CTRL+F, а при табличном представлении ключей и секций (например, через веб-браузер или плагин HTMLView/MarkdownView) работает стандартный поиск по странице, в т.ч. с помощью тех же клавиш.<br><br>При просмотр файла данных в табличном виде атрибуты отображаются в колонках с заголовками, взятыми из текущего файла style.xsl. Для ключей почти все они (кроме "Description") повторяют в оригинальном англоязычном XSL-файле имена атрибутов из используемых в указанном редакторе подкатегорий для стабильных секций INI-файла с предопределёнными именами ключей. Русскоязычные заголовки колонок добавлены из модифицированного файла style.xsl и означают следующее:<br><br>Ключ — Имя ключа (атрибут "name)".<br><br>Файл — INI-файл TC с ключом (атрибут "file"). Значение — wincmd.ini либо wcx_ftp.ini (или же их аналоги с другими именами — например, при запуске файла totalcmd.exe/totalcmd64.exe с параметрами командной строки /i и/или /f). Перенос (редирект) секций при табличном представлении файлов данных не учитывается, местоположение ключа всегда привязывается к исходному INI-файлу.<br><br>Секция — имя секции, содержащей ключ (атрибут "section"), записанное без квадратных скобок либо как переменная [%Screen_Resolution%] (для загрузки зависящих от разрешения экрана секций, с именем, например, [1024x768 (8x16)]; переменная в таблице не будет заменена актуальным именем секции).<br><br>Версия — информация о том, в какой версии TC появился ключ (атрибут "version"); последующие его модификации (порой весьма радикальные) не учитываются.<br><br>Умолчание — значение ключа по умолчанию (атрибут "default"). Иногда используется условный заменитель значения по умолчанию, а если их несколько, указывается наиболее востребованный вариант.<br><br>Расширенный — информация о том, можно ли задать/изменить значение ключа только через стандартные диалоги и меню TC (атрибут "advanced") или требуется его ручная правка. Значение Yes подразумевает расширенный режим правки, когда все или некоторые значения ключа надо задавать вручную. Прочерк означает, что все до единого значения данного ключа можно задать не вручную, а через интерфейс TC.<br><br>Описание — информация о предназначении ключа, соответствующая не атрибуту, а специальному элементу — редактируемому пользовательскому тексту, сохраняемому в файле данных как содержимое тега "description".<br><br>Несколько меньший набор заголовков используется при описании целых секций, не имеющих постоянного названия и/или не содержащих стабильного набора ключей (это, например, параметры настроенных FTP-соединений, списки подключённых плагинов, содержимое пользовательских меню, используемые шаблоны и т.д.). Первым для секции следует заголовок "Имя", а заголовки "Файл", "Версия" и "Описание" означают примерно то же, что и одноимённые элементы таблиц для ключей.<br><br>Табличные описания целых секций из разных подкатегорий выстраиваются по порядку своего вхождения в файл данных и располагаются отдельно после всех таблиц с ключами. В общих названиях таблиц для секций из-за специфики их обработки отсутствуют имена подкатегорий низшего уровня, непосредственно содержащих наборы ключей. Для каждой такой секции единым текстовыми блоками даны общие описания ключей, которые могут там находиться. Увидеть полную структуру категорий и реальное содержимое текущих INI-файлов TC можно только в интерфейсе Configuration Editor. Происхождением этих таблиц объясняется и то, что в описаниях ключей могут упоминаются некоторые собственные функции Configuration Editor, не имеющие отношения к интерфейсу Total Commander (например, клавиши CTRL+B для открытия из редактора дополнительных диалогов или имеющийся у ряда ключей цветовой индикатор).<br><br>В онлайновом варианте таблиц доступны дополнительные удобства. В частности, вместо последовательного поиска по всей странице клавишами CTRL+F и т.д. можно сразу перейти в нужную подкатегорию, выбрав её в выпадающем списке ключей или секций, открываемом кнопкой с плюсом. Для каждой такой подкатегории в адресной строке браузера после базового адреса таблицы добавляется следом за символом решётки (#) уникальный текстовый идентификатор. Используя такой формат адреса, можно давать (в т.ч. на форумах) ссылки не на справочник в целом, а сразу на нужную его часть. Если в веб-браузере по такой ссылке первоначально открывается (как в Firefox) не искомая подкатегория, а весь справочник, то для правильного перехода следует затем нажать клавишу ENTER в адресной строке браузера.<br><br><br>Значение ключа можно изменить на странице настроек "Вид окна". Аналогичной функциональностью обладает встроенная команда cm_VisButtonBar — обычно с изменением ключа, но если к числовому параметру 0..2 прибавить 4, то эффект будет временным, без изменений в INI-файле.</td>
</tr>
<tr>
<td class="td_key">ButtonBarVertical</td>
<td class="td_file col-hide">Wincmd.ini</td>
<td class="td_section col-hide">Layout</td>
<td class="td_version col-hide">9.00+</td>
<td class="td_default col-hide">1</td>
<td class="td_advanced col-hide">---</td>
<td class="td_description" id="1235"><button onclick="toggleColumn('1235')"><></button><br>Управляет отображением вертикальной панели инструментов:<br>	1 (по умолчанию): отображать;<br>	0: скрывать.<br><br><br>ПРИМЕЧАНИЯ:<br><br>Вертикальная панель инструментов обычно находится между файловыми панелями, а если они расположены одна над другой, то в правой части основного окна TC.<br><br>Можно скрыть вертикальную панель инструментов, привязав постоянную (загружаемую по умолчанию) панель к файлу no.bar, входящему в дистрибутив TC (см. в подкатегории "Интерфейс программы" — "Панели инструментов" — "Вертикальная панель" ключ Buttonbar из секции ButtonbarVertical, лишь по названию совпадающий с ключом ButtonBar в секции [Layout]). Однако механизм скрытия там иной: функция сохранена, а в текущем файле просто нет ничего, что можно отобразить.<br><br><br>Значение ключа можно изменить на странице настроек "Вид окна", а также командой "Скрыть вертикальную панель инструментов" в контекстном меню вертикальной панели или, соответственно, командой "Показать вертикальную панель инструментов" в контекстном меню разделителя файловых панелей. Аналогичной функциональностью обладает встроенная команда cm_VisButtonBar2 — обычно с изменением ключа, но если к числовому параметру 0..2 прибавить 4, то эффект будет временным, без изменений в INI-файле.</td>
[/cut]
Твою-ж материю! Кажись, работает! Ну, болван... опять сделал мой день :D

[cut="P.s."]Кстати, на инглиш в запросах не обращайте внимание. Это я так с ним играюсь :oops: :lol: [/cut]
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

yozhik
Orion9
Спасибо, всё прояснилось. В INI обоих плагинов должна быть строка AllowScripting=1, а у меня был 0. О чём, собственно, выше и сказано. Изменение AllowJava у меня на эту функцию не влияет.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
nemo9
Сообщения: 4
Зарегистрирован: Вт апр 14, 2026 15:13

Сообщение nemo9 »

Orion9 писал(а):Хотелось бы еще шрифт другой
Я решил эту проблему удалив/закомментировав все теги типа:

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

font-family: 'Segoe UI Semibold';
При таком подходе браузер использует шрифт установленный по умолчанию (а он, как правило, уже настроен под личные предпочтения).
Не знаю, как это будет выглядеть в плагине просмотровщика, т.к. принципиально использую для HTML - браузер. Полагаю, в настройках плагина должно быть указание шрифта по умолчанию. Ну, или вручную менять содержимое всех тегов font-family
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Avada
Хорошо, что так. Я был склонен думать, что проблема где-то глубже в системе, и что вам придется намного сложнее ее выявлять. Хотя, как показывает практика, сейчас можно в лоб у ИИ-шки спросить "Почему у меня не работает JavaScript на компе", от до чего дожили то )

yozhik
В скрипте есть косяк, я его не сразу заметил. Не в том месте фигурная скобка оказалась после вставки (мой косяк). Из-за этого переход работал глючно. Исправленная версия

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

<script type="text/javascript">function toggleColumn(id) {var body = document.body;if (body.className.indexOf('hide-cols') !== -1) {body.className = body.className.replace('hide-cols', '').trim();} else {body.className += ' hide-cols';}
var el = document.getElementById(id);
      if (el) {
        window.location.hash = id;
      } else {
        alert("Секция не найдена! " + id);
      }
}</script>
Так все работает. Но вот что я не пойму, почему name не хочет работать. Ставлю <a id="id1234"> работает. Ставлю <a name="id1234"> не работает. Чудеса и немцы.

nemo9
Понятно. Но я сейчас ориентируюсь на CHM от yozhik. Думаю, мы завершим это дело. Ведь поклёв уже пошёл, осталось только немного потянуть и вытащить мечту наружу :lol:
Аватара пользователя
BeTeP
Сообщения: 135
Зарегистрирован: Чт мар 31, 2005 00:57
Откуда: Санкт-Петербург

Сообщение BeTeP »

Orion9 писал(а):Но вот что я не пойму, почему name не хочет работать. Ставлю <a id="id1234"> работает. Ставлю <a name="id1234"> не работает. Чудеса и немцы.
Orion9, если у "болвана" спросить, то получаем что-то типа этого:
Для создания якорных ссылок в современном HTML (HTML5) следует использовать <a id="anchor">. Атрибут id обеспечивает уникальный идентификатор элемента на странице, который используется для CSS, JS и якорных ссылок. Устаревший name заменен на id в XHTML и HTML5 для ссылок, тогда как name используется в основном для передачи данных форм на сервер.
Основные отличия:
• <a id="target"> (Рекомендуется): Это глобальный атрибут, уникальный для всей страницы. Подходит для создания якорей (URL с #).
• <a name="target"> (Устарело): Ранее использовался для якорей, теперь предпочтителен только в тегах <form>, <a> (в контексте name), <input> и т.д. для отправки данных.
«The Truth Is Out There»
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

BeTeP
Просто он ранее советовал

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

Важные нюансы для CHM:ID vs Name: В совсем древних версиях IE якоря лучше работают через тег <a> с атрибутом name: <a name="myAnchor"></a>
а мы вроде как с yozhik негласно договорились придерживаться максимальной обратной совместимости, вплоть до IE4! (шутка)

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

Сообщение yozhik »

Orion9, я сделал с name

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

window.location = window.location.toString().replace(/#[0-9]+/g, '') + "#" + loc;
Всё вместе так:

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

<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(/#[0-9]+/g, '') + "#" + loc; }</script>
Работает. Сделал ещё подгрузку внешнего CSS, в котором можно настраивать шрифты — заготовка была, но надо было переписать, чтобы имя CSS наследовалось из имени CHM. Осталось только собрать и причесать. Отвлекли нежданчики )) Как только доделаю, сразу здесь напишу.

Добавлено: XP тоже есть на виртуалке. Можно будет и там проверить.
Amo ergo sum
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

yozhik писал(а): Всё вместе так:
Я ничего не понял, но главное чтобы оно работало :lol:
yozhik писал(а):Как только доделаю, сразу здесь напишу.
Окей. Ждемс )

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

Avada
А последний релиз ТС, который вот-вот состоится, много затронет изменений в справочнике по ключам? Как долго ждать обновлений, если навскидку?

Я не знаю, будет ли CaptainFlint делать обновления на сайте, но вообще не помешало бы добавить якоря ко всем ключам в справочнике для более удобной работы с ним.

Например, сейчас такой якорь приводит в раздел интерфейса программы и вкладок папок
https://flint-inc.ru/tcinfo/Russian.ced ... older-tabs
Но можно сделать, как yozhik, и присвоить ID каждому ключу. Тогда если у ключа "DarkBackground", допустим, ID=567, то ссылка
https://flint-inc.ru/tcinfo/Russian.cedf#567
будет приводить точно к этому ключу. Может быть удобно для отсылки к справочнику или каких-то других целей. ID, конечно, может быть любым, не обязательно цифровым.
Аватара пользователя
yozhik
Сообщения: 353
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

Готов 2й тестовый вариант:
https://dropmefiles.com/wp4Nz
(пароль на распаковку: 123)

На Windows 7 работает. На XP SP3 x86 — нет, точнее работает только сворачивание, а при разворачивании ругается на неподдерживаемый метод объекта, т.е. для XP надо ещё упрощать код.

Чего доделал:
-- Кнопки теперь выровнены по правому краю, со стилем, есть всплываха с подсказкой при наведении курсора.
-- При нажатии содержимое окна чуть дёргается — это мы так переходим к якорю и ещё проматываем 100 пикселей вверх, чтобы лучше смотрелось.
-- В CSS файле настраиваем шрифты для показа в CHM. Помимо гарнитуры можно и размер указать и чего угодно, главное в конце правила добавлять команду !important . Имя CSS должно быть таким же, как и у CHM. Сейчас у 1156t2_.css в конце имени подчёркивание — убрать его и CSS заработает. Если кто CHM переименует, переименовывайте и CSS тем же именем и будет работать. Только кириллицу в имени пока не тестировал.

Чего заметил:
В современных браузерах (пробовал в хромоклоне Vivaldi и в Edge) городить перемещение к якорю не нужно — при скрытии/показе колонок текущая строка остаётся на месте, не улетает.
Amo ergo sum
Ответить