[Autoit] Редактор комментариев descript.ion
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Автоматизация Total Commander

#1: [Autoit] Редактор комментариев descript.ion Author: Loopback PostPosted: Wed Mar 20, 2019 13:22
    —
Скрипт для визуальной мультиправки комментариев. Практически полностью повторяет внешний вид стандартного диалога правки комментариев.

Предыдущие версии скрипта выкладывались в этой теме, но там решалась частная задача, и сейчас из результатов поиска понять что эта тема релевантна - не так просто.

По сравнению с предыдущей версией:

+Чтение/запись комментариев в юникоде, поддержка юникодных имен файлов
+Возможность преобразования между кодировками
+При открытии нескольких файлов можно переключаться между режимом мультиправки и отдельно выбранными файлами

Скрипт пока наверняка сыроват, пользуйтесь с осторожностью. Обратите внимание, что входные параметры теперь принимают юникодный список файлов: %WF "%P"

Скачать


Last edited by Loopback on Wed Mar 20, 2019 20:16; edited 1 time in total

#2:  Author: LonerDLocation: Макеевка PostPosted: Thu Mar 21, 2019 17:12
    —
Спасибо за обновление.
У меня с флагом MCE_MULTI_ONLY при попытке добавлении комментария к одиночному файлу никакой диалог не вызывается.
Если можно - просьба выкладывать и в виде простого au3-файла (когда скриптов много, удобней не компилировать каждый, а запускать в качестве скриптов).

#3:  Author: AvadaLocation: Россия, Саратов PostPosted: Thu Mar 21, 2019 17:57
    —
LonerD
Тогда уж лучше выкладывать пару AU3 и EXE.

Loopback
Спасибо!

#4:  Author: Loopback PostPosted: Thu Mar 21, 2019 20:21
    —
LonerD
Хорошо, флаг гляну. Я просто его в последнее время не использовал.

Сам скрипт выложу, просто он всё ещё не совсем готов, много завязок на другие UDF, надо почистить немного.

Второй момент - он будет работать только под бета-версией Autoit. Сейчас, учитывая что будущее бета-версии Autoit с функционалом хэш-таблиц туманно, я уже не так уверен, что стоило сильно на него завязываться. Но было трудно удержаться, уж больно удобная штука.

#5:  Author: yozhikLocation: Электросталь PostPosted: Tue Mar 17, 2020 03:42
    —
Loopback wrote:
Хорошо, флаг гляну.

Гляньте, пожалуйста. Не работает.

Ещё момент. Если выделено несколько файлов и ни у одного из них нет комментария, то кнопка Neighbour неактивна. Но при этом окошко Neighbour всё равно вызывается по Ctrl+W! Вот бы поправить это, чтобы не вызывалось при неактивной кнопке. А то непоследовательно получается.

#6:  Author: Loopback PostPosted: Tue Jun 09, 2020 13:02
    —
Обновил утилиту, скачать последние версии можно будет с этой страницы.



По поводу флага MCE_MULTI_ONLY - проблем не нашел. Если что, параметры команды должны быть такие:

Code:
%WF "%P" MCE_MULTI_ONLY

#7:  Author: yozhikLocation: Электросталь PostPosted: Tue Jun 09, 2020 21:48
    —
Loopback
Спасибо! У меня всё замечательно работает, в том числе и флаг.

На русской странице утилиты ссылка на последнюю версию, а на английской старая ссылка на предыдущую версию.

Пару дней назад искал эту тему поиском, но так и не нашёл, пока носом меня не ткнули. А дело то было в ключевых словах! Оказывается на этой странице ни в одном посте утилита не названа своим старым именем. Оставлю их здесь в посте, чтоб другим легче было искать.
Ключевые слова: tc_multi_comment_edit; multi_comment_edit; TCMultiCommentEditor; MultiCommentEdit; Multi Comment Edit.

#8:  Author: FlasherLocation: Москва PostPosted: Thu Jun 11, 2020 14:42
    —
Loopback
1. Системный масштаб не учтён — возникают лишние поля по краям.
2. В UTF-8 descript.ion сохраняется с лишней пустой строкой сверху.
3. Скорость появления окон оставляет желать лучшего. Для системной Ctrl+Z вместо MCE_MULTI_ONLY пришлось делать 2 команды:
em_MultiComment:
Code:
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef if(msg(1074,1004+msg(1074,1000))<2,tcm(2700),tem(em_MultiComment2))
em_MultiComment2 — вызов проги.

#9:  Author: imig73Location: г. Иркутск PostPosted: Thu Jun 11, 2020 17:15
    —
Flasher
Скорость появления окна действительно заставляет подождать, но это только в первый раз в пределах сессии.

#10:  Author: FlasherLocation: Москва PostPosted: Thu Jun 11, 2020 18:31
    —
imig73
При чём тут сессия? Никакой разницы в моментах запуска нет.

#11:  Author: Loopback PostPosted: Thu Jun 11, 2020 23:52
    —
Flasher wrote:
Системный масштаб не учтён — возникают лишние поля по краям.

Учтён, но в прошлогодней версии был сломан. Исправлю.

Flasher wrote:
В UTF-8 descript.ion сохраняется с лишней пустой строкой сверху.

Этот вопрос к Гислеру, зачем он сделал обязательную пустую строку в UTF-8.

Flasher wrote:
Скорость появления окон оставляет желать лучшего.

Ясное дело, что интерпретируемый язык всегда будет работать медленнее нативной реализации - если сравнивать со скоростью появления родного окна тотала. Но вот по конкретной скорости всё субъективно.

Чтобы не быть голословным, измерил скорость загрузки скрипта от момента запуска до момента после появления окна. Виртуалка, в файле 18 записей, скорость загрузки в нескольких запусках 40-55мс. Та же виртуалка, для теста взят каталог 440 файлов, у всех есть комментарии по 20 символов, скорость загрузки 200-205мс.

Много это или мало? Не знаю. Я весьма критично отношусь к скорости запуска программ, но до сих пор в обычном использовании я ни разу не сталкивался задержками, которые могли бы доставить дискомфорт. Если кто-то эти задержки ощущает и кого-то это напрягает - увы, тут я не могу ничем помочь.

#12:  Author: imig73Location: г. Иркутск PostPosted: Thu Jun 11, 2020 23:58
    —
Loopback
Задержки ощущаю в сравнении с нативным окном, но вовсе не напрягают учитывая что скрипт внешний и его функционал полностью перекрывает эти вынужденные подтормаживания при вызове окна.

#13:  Author: FlasherLocation: Москва PostPosted: Fri Jun 12, 2020 00:36
    —
Loopback wrote:
Этот вопрос к Гислеру
При чём тут Гислер, если утилита файл таким создаёт?

Loopback wrote:
Много это или мало?
У меня даже на паре файлов около 6-8 дс. Для меня это ощутимо. Окна в твоих скриптах замены появляются шустрее.
Loopback wrote:
тут я не могу ничем помочь
Я это отчасти за тебя сделал. Мне главное, чтобы системный появлялся быстрее, т. к. в десятки раз чаще требуется.

#14:  Author: Loopback PostPosted: Fri Jun 12, 2020 01:04
    —
Flasher wrote:
При чём тут Гислер, если утилита файл таким создаёт?

При том, что тотал создает точно так же, и если пробел не добавлять - файл не читает.

Flasher wrote:
У меня даже на паре файлов около 6-8 дс. Для меня это ощутимо. Окна в твоих скриптах замены появляются шустрее.

6-8 дс - это сколько?

Скрипты замены не делают ничего сложного перед появлением окна. Тут же приходится прочитать файл и в зависимости от кодировки делать или не делать преобразования, которые занимают время. Да еще и реализация DllStruct в Autoit хоть и весьма удобна, но и довольно нетороплива.

К слову, самый быстрый вариант, при котором вообще нет дополнительных преобразований - если сохранять в UTF-16 LE.

#15:  Author: FlasherLocation: Москва PostPosted: Fri Jun 12, 2020 01:26
    —
Loopback wrote:
При том, что тотал создает точно так же, и если пробел не добавлять - файл не читает.
Пробел? Я не писал про пробел. А без верхнего перевода строки прекрасно читает.

Loopback wrote:
6-8 дс - это сколько?
0.6-0.8 сек. Эта дольная единица изучается с младших классов школы.
Loopback wrote:
и в зависимости от кодировки делать или не делать преобразования
ТС же только с ВОМ пишет, чтение с анализом малюсенького кусочка должно быть мгновенным.
Loopback wrote:
самый быстрый вариант - если сохранять в UTF-16 LE.
Для начала код нужен. Тут вообще раздел по скриптам, утилиты — в Плагинах. Тем более, что с учётом маркера в заголовке исходник сам напрашивается. Rolling Eyes

#16:  Author: Loopback PostPosted: Fri Jun 12, 2020 02:30
    —
Flasher wrote:
Пробел? Я не писал про пробел. А без верхнего перевода строки прекрасно читает.

Перевод, конечно.

На 9.51 в самом деле читает, на версии, на которой делалось - не читал, просто не отображал подсказку, и при правке стандартным методом ничего не выводилось.

Но при создании лишний перевод строки тотал добавляет и сейчас.

Flasher wrote:
0.6-0.8 сек. Эта дольная единица изучается с младших классов школы.

Вот как-то меньше всего ожидал здесь увидеть децисекунды вместо привычных миллисекунд. Ок, зато оригинально.

Ни разу не встречал таких цифр, уж тем более на двух файлах. Может антивирус тормозит или что еще.

Flasher wrote:
Для начала код нужен. Тут вообще раздел по скриптам, утилиты — в Плагинах. Тем более, что с учётом маркера в заголовке исходник сам напрашивается.

И в самом деле, давно обещал. Выложил.

#17:  Author: FlasherLocation: Москва PostPosted: Fri Jun 12, 2020 03:22
    —
Loopback wrote:
Но при создании лишний перевод строки тотал добавляет и сейчас.
Я понимаю, но я про то и пишу, что неважно, как там Тотал, просто об этом баге Гислеру написать надо, а здесь поправить, не ориентируюясь на текущее положение.

Loopback wrote:
Может антивирус тормозит или что еще.
Не пользуюсь, но, благо, теперь есть код, смогу точнее проверить. Спасибо, что выложил.

#18:  Author: lschedLocation: Россия, Саратов PostPosted: Fri Jun 12, 2020 23:46
    —
Flasher wrote:
0.6-0.8 сек. Эта дольная единица изучается с младших классов школы.

Вы хоть свои же ссылки иногда читайте (если школьную программу не помните). Например, такие:
«С единицей измерения «секунда», как правило, используются только дольные приставки СИ (кроме деци- и санти-).».

#19:  Author: Loopback PostPosted: Fri Jun 12, 2020 23:59
    —
По следам вчерашнего обсуждения, новая версия 2.2.

+ оптимизирована библиотека для работы с descript.ion, скорость загрузки ANSI/UTF8 увеличена на ~15%
- исправлена потеря непустого описания по умолчанию при переключении файлов
- добавлен забытый скроллбар в список файлов при большом числе файлов
- убран ненужный в последних версиях ТС дополнительный перевод строки в файлах с кодировкой UTF-8
- исправлено масштабирование на DPI выше стандартного

Надеюсь, не заоптимизировал до полной неработоспособности...

#20:  Author: FlasherLocation: Москва PostPosted: Sat Jun 13, 2020 05:19
    —
lsched wrote:
Вы хоть свои же ссылки иногда читайте (если школьную программу не помните).
О, какие мы дерзкие. Laughing Жизнь не задалась? Или сильно обидел кто? Сочувствую.
P.S.: Что хотел своей бессмысленной цитатой сказать "знаток" школьной программы я, пожалуй, оставлю за оффтопным бортом...


Loopback
Спасибо. Вообще инструменту откровенно не хватает важного — проверки имён и коммента на наличие юникодных символов для автоматической подстановки правильной кодировки (по CommentPreferredFormat, как я в своих скриптах раньше делал).
И лучше сделать опциональным вывод сообщения:
Quote:
При изменении кодировки из ANSI в юникод, может потребоваться конвертация имен файлов. Вы хотите чтобы программа попыталась это сделать?
---------------------------
Да Нет
---------------------------

#21:  Author: Loopback PostPosted: Sat Jun 13, 2020 18:18
    —
Flasher
Кмк конкретно у нас это не такая уж и критичная проблема. Вот для китайцев да. Но сделать можно, польза будет.

Только надо понять, в какой момент пользователю будет выдаваться сообщение, при сохранении? Мне, честно говоря, не очень нравится такая логика, когда после нажатия сохранить появляется сообщение, потом происходит возврат в интерфейс, пользователь выбирает юникод, потом опять сохранить. А по другому тут не сделать, т.к. юникодных кодировок целых три. Насчет автоматики - не очень понятно, как ее тут прикрутить нормально, смена кодировки при появлении юникодного символа в вводе? Лично я не приемлю, когда такие вещи меняются незаметно. Тогда индикатор делать какой-нибудь?

Возможно, сейчас было бы правильно всегда по умолчанию использовать какой-нибудь из юникодных вариантов. Все же ANSI пора отправляться на покой, не вижу ни единого резона его сейчас использовать в комментариях.

По опцональному сообщению: не хотел здесь делать конфигурацию, еще один флаг? А если подумать, может оно и вовсе не нужно, все равно без преобразования работать не будет (наверно, не помню), а так есть шанс восстановить полное имя.

#22:  Author: FlasherLocation: Москва PostPosted: Sat Jun 13, 2020 18:39
    —
Loopback
Это проблема далеко не только для китайцев, список языков с Юникодом там длинный. И у нас никто имена скачанного контента с Юникодом не отменял.

Сообщение при сохрании вообще не должно выдаваться. Зачем? Выделил имена с юникодом или добавил текст с ним, сохранение произойдёт в Юникод автоматом. То, что кодировки 3, — это не проблема, я же назвал регулирующий ключ.
 Я вот так у себя делал:
Насчёт индикатора сам смотри, если нужен. Мне не особо.

Вариант умолчательного Юникода может быть разве что опциональным, т. к. в ТС предусмотрены проверочные варианты "Простой текст+...", поэтому я и ориентируюсь на них.

Сообщение при смене в списке лично мне только мешает. Поэтому сам решай — опция или совсем убрать.

#23:  Author: Loopback PostPosted: Sat Jun 13, 2020 20:09
    —
Flasher wrote:
Это проблема далеко не только для китайцев

Я не говорю, что совсем нет проблемы, просто у нас она значительно менее актуальна. Даже по скачанному - ну может пару раз за последние несколько лет с таким сталкивался.

Flasher wrote:
Сообщение при сохрании вообще не должно выдаваться. Зачем? Выделил имена с юникодом или добавил текст с ним, сохранение произойдёт в Юникод автоматом. То, что кодировки 3, — это не проблема, я же назвал регулирующий ключ.

Так полностью меняется логика работы. Сейчас в комбобоксе при запуске показывается актуальная кодировка файла, которую пользователь может явным образом изменить. Если делать автоматический режим, там будет показываться "требуемая" кодировка. И комбобокс в этом случае должен быть неактивным и не должен давать возможности менять что-то.

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

"Проверочные" варианты вообще считаю излишними. Наличие их в ТС здесь ни к чему не обязывает, так же как наличие в нём кодировки DOS.

#24:  Author: FlasherLocation: Москва PostPosted: Sat Jun 13, 2020 20:29
    —
Loopback wrote:
ну может пару раз за последние несколько лет с таким сталкивался.
Это уже вопрос востребованности, у всех она разная. Как пример наше обсуждение пользы от автосмены кодировки. Кому-то постоянно требуется, а кому-то вообще нет, как в твоём случае.

Loopback wrote:
И комбобокс в этом случае должен быть неактивным и не должен давать возможности менять что-то.
Почему же? Просто список при юникодных именах должен быть сокращён до юникодных кодировок. А вот если есть появляется юникодный коммент, то запись должна оринетироваться на ключ.

Loopback wrote:
Ну можно наверно какой-то опцией всё организовать
Пусть будет опция. Лично мне бы она не потребовалась.

Loopback wrote:
Наличие их в ТС здесь ни к чему не обязывает, так же как наличие в нём кодировки DOS.
В смысле не обязывает? Код же конкретно под ТС написан. Логична опциональная связка с Тоталом. Если юникодных символов нет, то — ANSI, если есть, то — в соответствии со значениями (4,5,6) ключа. В случае первых 3-х (1,2,3) связка уже жёсткая (безусловная). А DOS-кодировка — это рудимент от древнючих версий, она и в справке не рекомендована, её нет смысла учитывать.

#25:  Author: Loopback PostPosted: Sat Jun 13, 2020 23:38
    —
Flasher wrote:
А вот если есть появляется юникодный коммент, то запись должна оринетироваться на ключ.

А при юникодных именах, значит, ориентироваться не должна? Кодировка-то едина для всего файла.
Flasher wrote:
Лично мне бы она не потребовалась.

Если сделать этот режим не по умолчанию - очень даже потребуется Wink
Flasher wrote:
В смысле не обязывает? Код же конкретно под ТС написан. Логична опциональная связка с Тоталом. Если юникодных символов нет, то — ANSI, если есть, то — в соответствии со значениями (4,5,6) ключа. В случае первых 3-х (1,2,3) связка уже жёсткая (безусловная).

Под ТС, но вовсе не обязательно слепо повторять все возможные опции, это все-таки отдельное приложение. Вот мне представляются довольно бессмысленными эти три опции в тотале. Если уж прям так хочется использовать ANSI - ок, но какой смысл сохранять в ANSI, если все равно на первом же юникодном символе файл перекодируется в юникод? Если это вопрос совместимости, то с чем? В любом случае скрипт может прочитать созданные ТС файлы, и наоборот.

Опять же, есть резон форсить использование юникода - скорость. Загрузка юникода почти в 2 раза быстрее ANSI, UTF-8 - примерно в полтора.

В общем, в целом идея имеет место быть, но в деталях реализации пока не уверен. Так или иначе, все равно же буду делать в своем понимании прекрасного, не устроит - исходник выложен Smile

#26:  Author: FlasherLocation: Москва PostPosted: Sun Jun 14, 2020 00:36
    —
Loopback wrote:
А при юникодных именах, значит, ориентироваться не должна?
Должна только для автовыбора, но замораживать комбобокс не следует.

Loopback wrote:
Если сделать этот режим не по умолчанию - очень даже потребуется
Я же пишу "бы". Если бы сам делал, имеется в виду.

Loopback wrote:
Если уж прям так хочется использовать ANSI - ок, но какой смысл сохранять в ANSI, если все равно на первом же юникодном символе файл перекодируется в юникод?
Так сейчас ANSI присутствует в списке безусловно, а так будет по условию. Или теперь вообще хочешь его полностью выпилить?
Loopback wrote:
В любом случае скрипт может прочитать созданные ТС файлы, и наоборот.
Это да.
Loopback wrote:
Опять же, есть резон форсить использование юникода - скорость.
Но у тебя всё равно 2 юникода в списке. Второй, получается, будет задвинут? И с таким успехом можно вообще от комбобокса отказаться в пользу одной кодировки без всяких условий. Ты к этому ведёшь? Smile

#27:  Author: Loopback PostPosted: Sun Jun 14, 2020 01:20
    —
Flasher wrote:
но замораживать комбобокс не следует

Уже подумал, соглашусь.

Flasher wrote:
Или теперь вообще хочешь его полностью выпилить?

Нет, конечно.

Flasher wrote:
Но у тебя всё равно 2 юникода в списке. Второй, получается, будет задвинут? И с таким успехом можно вообще от комбобокса отказаться в пользу одной кодировки без всяких условий. Ты к этому ведёшь?

Не 2, а 3 - UTF-8 же тоже юникод.

Нет, конечно, я веду к тому, чтобы подталкивать пользователя к явному выбору юникода любого типа для всех файлов и комментариев. Т.е. всегда юникод. Что эквивалентно второй-четвертой опции в ТС.

Если же будет в наличии опция с ansi+юникод (пятая -седьмая опция ТС), то при выборе ее пользователем большую часть времени (а может и всегда, если не встретится юникодный символ) работа будет вестись в ANSI. А это не оптимальный вариант, да еще и не имеющий какого-то особого смысла (ну или я его не вижу).

#28:  Author: FlasherLocation: Москва PostPosted: Sun Jun 14, 2020 01:52
    —
Loopback wrote:
Т.е. всегда юникод.
Ты же выше ответил, что ANSI не хочешь выпиливать. Question
Loopback wrote:
Если же будет в наличии опция с ansi+юникод
Я такую опцию не предлагал. Предполагалось, что при выборе неюникодных имён число пунктов списка будет тем же, и по умолчанию будет установлена кодировка ANSI. А если в комменте появится Юникод, то descript.ion сохранится автоматически в той смежной кодировке, которая соответствует 4-6 значениям ключа. Она же выберется в списке при наличии Юникода в именах.

#29:  Author: imig73Location: г. Иркутск PostPosted: Sun Jun 14, 2020 03:47
    —
Loopback
Спасибо огромное, всё очень круто.

Flasher
Ну вот теперь время запуска от оригинала мало чем отличается, или мне кажется и надо креститься?

#30:  Author: FlasherLocation: Москва PostPosted: Sun Jun 14, 2020 08:19
    —
imig73
От оригинала, запущенного стандартно, или хотя бы по той команде, что я привёл, ощутимо отличается.
Сперва показатели были 500+ мс по нарастающей (40+ мс на объект).
И я тут заглянул в ОУ и вспомнил, что запускал два экземпляра volumouse из под под юзера и админа, чтобы оно хоть как-то работало. После отключения/включения обеих скорость резко возросла (хоть и не перестала быть ощутимой).
Минимальные показатели вышли такими:

• 154 мс на объекте с одним символом
• 175 мс на объекте со 100 символами

• 170 мс на 5 объектах по одному символу
• 223 мс на 5 объектах по 100 символов

• 195 мс на 10 объектах по одному символу
• 256 мс на 10 объектах по 100 символов

• 1600 мс на 7424 объектах в папке winsxs

#31:  Author: Loopback PostPosted: Sun Jun 14, 2020 17:36
    —
imig73 wrote:
или мне кажется и надо креститься?

Думаю, кажется, 15% не так просто заметить, только если на очень больших массивах.

Flasher wrote:
Я такую опцию не предлагал.

Flasher wrote:
Если юникодных символов нет, то — ANSI, если есть, то — в соответствии со значениями (4,5,6) ключа

Ну как же не предлагал. Это и есть смешанный режим, ansi+юникод. Вот зачем он, почему просто не выбрать по умолчанию какой-нибудь юникод?

Flasher wrote:
Минимальные показатели вышли такими

Уже больше похоже на норму.

Хотя, как оказалось я не совсем правильно оценивал скорость. Не там искал, называется, основная причина не в скорости загрузки файла (хотя то, что в результате удалось ускорить 15% - все равно неплохо).

В искусственных условиях, когда все комменты одинаковые, на большом количестве выделенных файлов, задержка оказывается значительно больше, чем когда комментарии разные. Причина в функции _GetDefDescr, которая возвращает общий коммент для выделенных файлов. Если у большого числа файлов одинаковый комментарий, функция пройдет все эти файлы до конца, а это очень, очень долго. Чем больше, тем дольше.

Замерил чистую скорость загрузки descript.ion, она оказалась на фоне всего остального очень малой: например, файл из 8500 записей загружается за ~250мс, файлы в несколько сотен записей вообще исчезающе малые 5-15мс.

В общем получатся, что главная проблема - медленная выборка из массива. Если бы в Autoit все же довели до релиза поддержку хэш-таблиц, думаю это можно было бы радикально ускорить.

#32:  Author: FlasherLocation: Москва PostPosted: Sun Jun 14, 2020 21:40
    —
Loopback wrote:
Ну как же не предлагал. Это и есть смешанный режим, ansi+юникод.
Ты пишешь "Если же будет в наличии опция". Где в наличии? Она в ТС уже есть (в ini и настройках), в самой утилите опции (пункту меню) откуда взяться и зачем? Я такой не предлагал. Тип тут ни при чём.

Loopback wrote:
Вот зачем он, почему просто не выбрать по умолчанию какой-нибудь юникод?
Я уже объяснял. Изначально я написал, как теперь работает мой Ctrl+Z. Системный диалог для одного объекта и твой — для нескольких. Логично, что должно быть аналогичное поведение с автовыбором кодировки при одном вызове/хоткее (с режимом MCE_MULTI_ONLY или без — не суть).

Loopback wrote:
Уже больше похоже на норму.
Только ты описываешь ситуацию с наличием комментов, а я тестировал без них.

Loopback wrote:
Причина в функции _GetDefDescr, которая возвращает общий коммент для выделенных файлов.
А, типа чтобы показать этот коммент в случае совпадения. Ясно.

Loopback wrote:
Чем больше, тем дольше.
Так и при отсутствии descript.ion это момент никуда не уходит.

Loopback wrote:
Если бы в Autoit все же довели до релиза поддержку хэш-таблиц
Можно SQL-запросом общие числа по фильтру получать на сравнение. Но я бы начал со сравнения верхней и нижней строки.

#33:  Author: Loopback PostPosted: Mon Jun 15, 2020 21:15
    —
Flasher wrote:
Где в наличии? Она в ТС уже есть (в ini и настройках), в самой утилите опции (пункту меню) откуда взяться и зачем? Я такой не предлагал. Тип тут ни при чём.

Ладно, проехали, выложу сегодня новую версию, будет так как будет.

Flasher wrote:
Так и при отсутствии descript.ion это момент никуда не уходит

Ну тогда смотри дальше. Кроме этого момента я больше не нашел узких мест.

Flasher wrote:
Можно SQL-запросом общие числа по фильтру получать на сравнение. Но я бы начал со сравнения верхней и нижней строки.

Долго думал. При чем тут SQL, еще и БД сюда прикрутить?

#34:  Author: FlasherLocation: Москва PostPosted: Mon Jun 15, 2020 21:44
    —
Loopback wrote:
Ну тогда смотри дальше.
А у тебя сколько даёт winsxs без файла?

Loopback wrote:
При чем тут SQL, еще и БД сюда прикрутить?
Читаем текст через OLEDB по типу csv, фильтруем по первому значению. Если число найденного совпадает с числом строк, то выводим общий коммент.
Хотя не, там же пробел как делитель пойдёт, это не годится...

#35:  Author: Loopback PostPosted: Mon Jun 15, 2020 23:24
    —
Flasher wrote:
А у тебя сколько даёт winsxs без файла?

На текущей версии ~4400мс, но там 21900 каталогов. Однако в данном случае еще дает о себе знать операция по заполнению комбобокса с файлами, попробую его через функции API заполнять, может будет быстрее. UP: не быстрее.

Flasher wrote:
Читаем текст через OLEDB

А, вот оно что. Ну, если бы я хотел использовать COM, можно было бы и Scripting.Dictionary задействовать.

Интереса ради попробовал использовать хэш-таблицы (Map в Autoit) для выборки в _GetDefDescr в худшем сценарии (одинаковые комментарии). На 300 элементах скорость 60 и 0,5мс соответственно. На 8500 - аж 44с(!) и 20мс, разница больше чем на три порядка...

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


Выложил бету.

Логика такая: если нет юникодных имен, и в загружаемом файле нет юникодных символов - разрешена запись в ANSI, в противном случае для сохранения разрешен только юникод. Если загружается ANSI-файл, можно сохранить кодировку или поменять на юникод. Если после запуска после учета вышеописанных условий запись в ANSI была разрешена, то при появлении в редакторе юникодного символа возможность сохранения ограничивается юникодом, при удалении символа снова появляется возможность сохранить в ANSI и т.д.

В интерфейсе показывается текущая кодировка, в комбобоксе - выбор целевой.

Тип дефолтного юникода можно задавать третьим параметром через "|": MCE_DEFENC_UTF8, MCE_DEFENC_UTF16, MCE_DEFENC_UTF16BE. Если параметра нет - используется UTF-8.

#36:  Author: FlasherLocation: Москва PostPosted: Tue Jun 16, 2020 09:26
    —
Loopback wrote:
На текущей версии ~4400мс, но там 21900 каталогов.
Ну так и куда мне смотреть дальше?

Loopback wrote:
Ну, если бы я хотел использовать COM, можно было бы и Scripting.Dictionary задействовать.
И что от него толку на больших массивах? Как можно добавку с проверкой каждого элемента в коллекцию с SQL-фильтрацией уже имеющегося файла сравнивать? Это земля и небо.

Loopback wrote:
На 8500 - аж 44с(!) и 20мс, разница больше чем на три порядка...
Вот это тормоза. Только 20 мс на объект что-то маловато для 44 сек. Ничего не путаешь?

Loopback wrote:
в противном случае для сохранения разрешен только юникод.
После выделения юникодных по умолчанию вижу ANSI.

Loopback wrote:
Если параметра нет - используется UTF-8.
Ты же сам писал, что Юникод (UTF-16) вдвое быстрее, а UTF-8 только в 1.5. Question

P.S.: В исходнике инклудов целая гора, хотел, собстно, скрипт в коллекцию, а вышло, что надо аж 14... Не вариант.
Кстати, почему он по умолчанию с англ. языком выводит?

#37:  Author: Loopback PostPosted: Tue Jun 16, 2020 12:39
    —
Flasher wrote:
Ну так и куда мне смотреть дальше?

Не знаю, это же в основном у тебя, кажется, были проблемы со скоростью. Я нашел только два узких места. Выборку потенциально можно ускорить, а вот загрузку комбобокса с файлами нет, только если совсем отключить.

Flasher wrote:
Как можно добавку с проверкой каждого элемента в коллекцию с SQL-фильтрацией уже имеющегося файла сравнивать?

Если изначально хранить комменты в коллекции вместо массива, то очень даже можно. Не знаю, насколько быстро работает Dictionary, но разницу с использованием Map-ов Auutoit я привел.

Flasher wrote:
Только 20 мс на объект что-то маловато для 44 сек. Ничего не путаешь?

Так обе цифры - это время обработки всего списка файлов. Сам удивился разнице, дважды перепроверил, но факт.

Flasher wrote:
После выделения юникодных по умолчанию вижу ANSI.

Значит не совсем юникод и имена могут быть без потерь сохранены в ANSI в системной кодировке.

Flasher wrote:
Ты же сам писал, что Юникод (UTF-16) вдвое быстрее, а UTF-8 только в 1.5.

В той реализации, сейчас без разницы. ANSI будет медленнее, но только на очень старых файлах, в которых юникодные имена были сохранены с потерями.

Flasher wrote:
В исходнике инклудов целая гора, хотел, собстно, скрипт в коллекцию, а вышло, что надо аж 14... Не вариант.

Кроме трёх, что приложены, они стандартные. Но все решаемо, есть два пути, сложный и простой. Можешь выковырять нужные константы и функции и поместить в основной скрипт. Или просто скомпилировать всё в a3x.

Flasher wrote:
Кстати, почему он по умолчанию с англ. языком выводит?

Кто выводит и что? Язык берется из активной копии TC, русский перевод в lng-файле.

#38:  Author: FlasherLocation: Москва PostPosted: Tue Jun 16, 2020 13:32
    —
Loopback wrote:
Не знаю, это же в основном у тебя, кажется, были проблемы со скоростью.
Ты реагировал на тезис:
Flasher wrote:
Так и при отсутствии descript.ion это момент никуда не уходит
И подтвердил его. Какие у меня проблемы, если это проблемы кода?
Loopback wrote:
только если совсем отключить.
Вот эта опция бы точно не помешала.

Loopback wrote:
Если изначально хранить комменты в коллекции вместо массива
Что значит "изначально"? Изначально там быть не может, т. к. коллекция формируется цикличным помещением в неё двух элементов, в данном случае — имён и комментариев.

Loopback wrote:
Так обе цифры - это время обработки всего списка файлов.
Числа. А второе что проверяет? Запись в ion?

Loopback wrote:
Значит не совсем юникод и имена могут быть без потерь сохранены в ANSI в системной кодировке.
Нет, там ??? появлялись. Уточню — ANSI появляется, если descript.ion в ней уже был.

Loopback wrote:
Кроме трёх, что приложены, они стандартные.
Я не храню, как и многие, инклюды в сборке. Или совсем по минимуму.

Loopback wrote:
Или просто скомпилировать всё в a3x.
Пожалуй, так и сделаю.

Loopback wrote:
русский перевод в lng-файле.
Точно, не подумал. В Source-то его нет.

#39:  Author: Loopback PostPosted: Tue Jun 16, 2020 15:05
    —
Flasher wrote:
Какие у меня проблемы, если это проблемы кода?

Так я и написал, что на больших количествах файлов проблема с комбобоксом. Ну вот специально протестировал на том же каталоге в 21900 элементов, при отключенном комбобоксе задержка полного запуска ~300мс (вместо 4,4с), что для такого количества более чем приемлемо. На количестве до 1000 элементов у меня задержка не превышает 100мс. Скорость чистой загрузки скрипта на одном файле где-то 50-70мс, быстрее уже не сделаешь. Но нужно понимать, что эти измерения производятся уже после того, как интерпретатор загрузил и отпарсил скрипт, сам парсинг тоже занимает какое-то время, которое, наверно, можно замерить, но лень да и не имеет смысла, поскольку это время все равно существенно не уменьшить.

Flasher wrote:
Вот эта опция бы точно не помешала.

Ну вот только ее и можно сделать.

Flasher wrote:
Изначально там быть не может, т. к. коллекция формируется цикличным помещением в неё двух элементов, в данном случае — имён и комментариев.

Если точнее - ключа (имя файла) со значением (комментарий). Естественно, предполагается что коллекция создается один раз на этапе парсинга descript.ion и в дальнейшем вся работа идет с ней.

Flasher wrote:
Нет, там ??? появлялись. Уточню — ANSI появляется, если descript.ion в ней уже был.

Тогда было бы неплохо образцы файлов с этими именами. Проверка как раз и проводится по принципу, ожидаются ли символы замещения при конвертации в ANSI на текущей кодовой странице. На моих тестовых файлах варианта ANSI не появляется.

#40:  Author: FlasherLocation: Москва PostPosted: Tue Jun 16, 2020 15:26
    —
Loopback wrote:
Так я и написал, что на больших количествах файлов проблема с комбобоксом.
Она на небольших такая. Просто менее ощутимая.
Loopback wrote:
где-то 50-70мс, быстрее уже не сделаешь.
Ну вот только ее и можно сделать.
Желательно, т. к. это куда ближе к доле чел. реакции (41 мс). Плюс я не вижу удобным использовать выпадающий список для правки попунктным выбором.

Loopback wrote:
Естественно, предполагается что коллекция создается один раз на этапе парсинга descript.ion
Так на это уходит куда больше времени, чем обращение к базе с SQL-выборкой.

Loopback wrote:
Тогда было бы неплохо образцы файлов с этими именами.
Зачем тебе образцы? Имён должно быть достаточно: àéÿüĄŀĦĤŕž☠ | オリジナルサウンドトラック~
Ты условие выполнил? Если бы проблема была в поиске символов, то и при отсутствии ion была бы та же проблема.

#41:  Author: Loopback PostPosted: Tue Jun 16, 2020 15:45
    —
Flasher wrote:
Так на это уходит куда больше времени, чем обращение к базе с SQL-выборкой.

Тестировал, в данном конкретном случае?

Flasher wrote:
Имён должно быть достаточно:

На этих именах у меня ANSI не появляется.

#42:  Author: FlasherLocation: Москва PostPosted: Tue Jun 16, 2020 16:16
    —
Loopback wrote:
Тестировал, в данном конкретном случае?
В данном нет, т. к. объяснял, почему тут сие не канает.

Loopback wrote:
На этих именах у меня ANSI не появляется.
В комбобоксе — нет, там пусто. После сохранения:
Code:
ANI test
aeyuA?HHrz? ЄхёЄ
?????????????~ ЄхёЄ

#43:  Author: Loopback PostPosted: Tue Jun 16, 2020 16:41
    —
Flasher wrote:
В комбобоксе — нет, там пусто


Ну вот. А в исходном багрепорте:

Flasher wrote:
После выделения юникодных по умолчанию вижу ANSI.

И потом
Flasher wrote:
Уточню — ANSI появляется, если descript.ion в ней уже был.


Вот как это можно было понять? "Вижу ANSI", "ANSI появляется" - значит вроде как в вариантах выбора. А там его нет. Проблема не в определении юникода в именах, а в не установленной в этом случае целевой кодировке.

#44:  Author: FlasherLocation: Москва PostPosted: Tue Jun 16, 2020 16:48
    —
Loopback wrote:
значит вроде как в вариантах выбора.
Я смотрел на выделенное слева от комбобокса со стрелочным указателем и пустое поле. Понял это так, что раз ANSI нет в комбобоксе, то она и идёт умолчательной.

Loopback wrote:
Проблема не в определении юникода в именах, а в не установленной в этом случае целевой кодировке.
Не только неустановленной, но и несохраняемой. Ты же это мог и без меня заметить, не правда ли? Wink

#45:  Author: Loopback PostPosted: Tue Jun 16, 2020 21:48
    —
Flasher
Кто-то мог бы заметить, кто-то мог бы чуть точнее описывать проблему...

Так или иначе, исправил. Флаг MCE_DISABLE_SINGLEEDIT для отключения пофайлового редактора добавил. Лежит тут.

#46:  Author: FlasherLocation: Москва PostPosted: Tue Jun 16, 2020 22:06
    —
Loopback
Теперь порядок. Сворачиваемся. Cool

#47:  Author: FlasherLocation: Москва PostPosted: Sun Jun 21, 2020 13:08
    —
Loopback wrote:
если нет юникодных имен, и в загружаемом файле нет юникодных символов - разрешена запись в ANSI
Вот это "разрешена" нельзя заменить на "установлена"? А то ты даже параметр такой не предусмотрел.

Loopback wrote:
при удалении символа снова появляется возможность сохранить в ANSI
Не подтверждаю. Вставляю в поле юникод, потом удаляю, UTF-8 обратно на ANSI не меняется.

#48:  Author: Loopback PostPosted: Sun Jun 21, 2020 13:59
    —
Flasher wrote:
Вот это "разрешена" нельзя заменить на "установлена"?

Исходник открыт - всё можно. А я вообще не вижу какого-то смысла сейчас хранить в ANSI.

Flasher wrote:
Вставляю в поле юникод, потом удаляю, UTF-8 обратно на ANSI не меняется

А где написано, что должно меняться? Появляется "возможность", т.е. можно снова переключиться на ANSI. Возврат делать лень.

#49:  Author: FlasherLocation: Москва PostPosted: Sun Jun 21, 2020 14:25
    —
Loopback wrote:
Возврат делать лень.
Получается концептуальный отход от ТС-шного подхода. Это плохо. Пользователь сознательно по Ctrl+Z создавал ion в ANSI, а прога без обоснования принудительно перекодировала его в UTF-8. Да и параметр MCE_MULTI_ONLY в таком случае становится просто бессмысленным...

#50:  Author: Loopback PostPosted: Sun Jun 21, 2020 16:59
    —
Flasher wrote:
Получается концептуальный отход от ТС-шного подхода. Это плохо. Пользователь сознательно по Ctrl+Z создавал ion в ANSI, а прога без обоснования принудительно перекодировала его в UTF-8.

Я уже говорил, что сторонняя утилита не обязана полностью повторять поведение ТС. И каких-либо доводов в пользу необходимости сохранения в ANSI, кроме "концептуального отхода от традиционного подхода" не услышал. Но спорить уже устал. Добавил флаг для предпочтения ANSI и возврат. Поведение теперь повторяет все варианты ТС, кроме сохранения всегда в ANSI, которое бессмысленно совсем, т.к. на юникодных файлах даже в ТС не работает.

Лежит здесь.

Flasher wrote:
MCE_MULTI_ONLY в таком случае становится просто бессмысленным

Да он во всех случаях бессмысленный, его вообще не нужно было делать.

#51:  Author: FlasherLocation: Москва PostPosted: Sun Jun 21, 2020 17:28
    —
Loopback wrote:
Я уже говорил, что сторонняя утилита не обязана полностью повторять поведение ТС.
А где я пишу о полном повторении?

Loopback wrote:
И каких-либо доводов в пользу необходимости сохранения в ANSI
Я уже писал о соответствии. Комменты читает ТС (подсказки, колонки). Комменты читаются другими скриптами (через FSO, например, я UTF-8 не прочту, приходится через ADO, который может отсутствовать на WinPE). Что ТС быстрее выводит в подсказки — ANSI или UTF-8? У тебя есть ответ? А поиск по [=tc.Комментарий] он с какой кодировкой быстрее производит? Не всё утыкается только в твой скрипт.

Loopback wrote:
Добавил флаг для предпочтения ANSI и возврат.
Спасибо. Что-то инклудов понадбавилось. Аж 13 штук помимо 4 вложенных. Aux вырос с 57 до 76 Кб.
àéÿüĄ — эти символы не читает как Юникод и коцает при сохранении.

Loopback wrote:
Да он во всех случаях бессмысленный
При наличии TCFS2 — конечно.

#52:  Author: Loopback PostPosted: Sun Jun 21, 2020 18:25
    —
Flasher wrote:
Я уже писал о соответствии.

Ок. Спорить больше не собираюсь.

Flasher wrote:
Что-то инклудов понадбавилось.

Во всех последних версиях новых не добавлялось, в чём легко убедиться, сравнив исходник.

Flasher wrote:
àéÿüĄ — эти символы не читает как Юникод и коцает при сохранении.

А, ну да, по умолчанию WideCharToMultiByte считает, что конвертация àéÿ -> aey - это норма. Исправил, по той же ссылке.

#53:  Author: FlasherLocation: Москва PostPosted: Sun Jun 21, 2020 19:10
    —
Loopback wrote:
Во всех последних версиях новых не добавлялось, в чём легко убедиться, сравнив исходник.
Откуда тогда такая разница в 19.2 Кб?

Loopback wrote:
Исправил, по той же ссылке.
Ага, сейчас порядок.

#54:  Author: Loopback PostPosted: Sun Jun 21, 2020 20:43
    —
Flasher wrote:
Откуда тогда такая разница в 19.2 Кб?

Не знаю, если ты Autoit не обновлял в последнее время (новая версия библиотеки функций могла растолстеть), то нет объективных причин такого изменения. У меня размер a3x выходит около 76-77кб, что со старым кодом, что с новым. Да это и по размеру экзешника видно, он почти не меняется.

Где-то на оффсайте Autoit выкладывали скрипт, собирающий из инклудов только используемые константы/функции. Но помнится, работал он кривовато. Я же этим вообще не заморачиваюсь, т.к. в плане скриптов вся моя сборка ТС построена исключительно на Autoit, соответственно, логично держать в ней все стандартные библиотеки. Только некоторые скрипты, для которых критична скорость, отвязаны от библиотек.

#55:  Author: FlasherLocation: Москва PostPosted: Sun Jun 21, 2020 20:59
    —
Loopback wrote:
если ты Autoit не обновлял в последнее время
Было бы с чего обновлять. С последнего релиза уже больше 2-х лет прошло.

Loopback wrote:
новая версия библиотеки функций могла растолстеть
Мда. А я то думал, что конвертер (я уже и старый пробовал) тащит только нужное...
Как же прежний вариант в 58 Кб ужался, не понимаю...

Loopback wrote:
Где-то на оффсайте Autoit выкладывали скрипт
А как называется-то хоть? Не этот ли? Там ссылки мёртвые. Может, у тебя в закромах завалялся?

Народ, вбейте filelist:"Au3PP.zip|Au3PP.exe" в Everything, может, найдёт что.

#56:  Author: Loopback PostPosted: Sun Jun 21, 2020 23:02
    —
Flasher wrote:
Было бы с чего обновлять.

Актуальные беты есть. Так или иначе, исправлений библиотек там много.

Flasher wrote:
Как же прежний вариант в 58 Кб ужался, не понимаю...

Аналогично.

Flasher wrote:
Не этот ли?

Да, кажется этот. У меня не остался. Но я бы все равно от него многого не ожидал, последняя версия от 2010 года, с тех пор было много изменений.

Еще вспомнил, в комплекте родного редактора Scite есть утилита AU3Stripper, актуальная, по идее должна делать то же самое. Попробовал, сходу не заработала, что-то с окружением наверно не то.

#57:  Author: FlasherLocation: Москва PostPosted: Sun Jun 21, 2020 23:51
    —
Loopback wrote:
Актуальные беты есть. Так или иначе, исправлений библиотек там много.
А, так они появились только в прошлом месяце в той же линейке 3.3.15. И там совсем незначительные изменения у Array.au3 и ArrayDisplayInternals.au3. Остальные инклюды, считай, те же.

Loopback wrote:
в комплекте родного редактора Scite есть утилита AU3Stripper
Там снизу она отдельно выложена. Эта у меня была, забыл про неё. Спасибо, что напомнил. )
Loopback wrote:
Попробовал, сходу не заработала
У меня сработала, только с 3-мя ошибками в логах. Вот код. В итоге a3x ужался в 23 Кб.
С /RM вообще ужалось до 17-ти, но, к сожалению, lng не смог подхватиться.

#58:  Author: yozhikLocation: Электросталь PostPosted: Fri Jul 23, 2021 01:00
    —
Loopback
Я записал в комментариях пути к файлам – была необходимость, чтобы не забыть откуда что взял. И вдруг обнаружил, что при сохранении descript.ion утилитой у меня обратные слэши в комментариях удваиваются. После трёх сохранений получилась такая вот картина:

Родной Тоталовский редактор комментариев слэши не удваивает. Посмотрел в исходниках и, кажется, нашёл виновника: в DescrIon.au3 строка 206:
Code:
$sLine = StringReplace($sLine, "\", "\\")

Но ведь зачем то эта строка понадобилась? Может глянете? Может можно и без неё обойтись? Чтобы обратные слэши в комментах не удваивались при каждом сохранении.

#59:  Author: Loopback PostPosted: Fri Jul 23, 2021 14:02
    —
yozhik wrote:
Но ведь зачем то эта строка понадобилась? Может глянете? Может можно и без неё обойтись? Чтобы обратные слэши в комментах не удваивались при каждом сохранении.

Обойтись без нее нельзя: в многострочных комментариях используется символ переноса строки \n, а для ввода собственно слеша он должен экранироваться вторым. Однако это необходимо только для многострочных комментариев, а применялось и для однострочных.

Спасибо, поправил, исправленная версия на сайте.

#60:  Author: yozhikLocation: Электросталь PostPosted: Sat Jul 24, 2021 06:58
    —
Loopback
Спасибо, теперь всё в порядке. И новый значок зачётный Very Happy .

#61:  Author: yozhikLocation: Электросталь PostPosted: Wed Jul 28, 2021 10:42
    —
Loopback
Запрос хотелок.

1) Вот было бы хорошо, если бы была возможность копировать в комментарии имена файлов. Я и раньше об этом думал, но в быту не сталкивался с необходимостью. А тут накачал книжек с gen.lib.rus.ec, и у каждого файла в имени полное библиографическое описание. Подозреваю, что это не единичный случай, а скорее всего многие так именуют свои собрания. Это значит, что функция filenames2comments вполне пригодилась бы.

2) Вот было бы хорошо, если бы у кнопок "Neighbour" и "F2 OK" были бы всплывающие подсказки с их shortcut' ами (Ctrl+W и Ctrl+S). А у комбобокса со списком загруженных файлов была б всплывающая подсказка с его shortcut' ами. Ну, или как вариант, или как альтернатива простой MsgBox, вызываемый по F1, с подсказками всех горячих клавиш.

Если есть согласие и время, может сделаете? Smile

#62:  Author: yozhikLocation: Электросталь PostPosted: Thu Jul 29, 2021 02:58
    —
И ещё одна очень умная мысль меня посетила. Very Happy
Знаю, что люди бывают «мышисты», а бывают «клавишники». Я из второй категории. У сочетания Ctrl+W, закреплённого за кнопкой Neighbour, есть логика, и если я её правильно понял, то W это Window, т.е. «вызываем доп. окошко». Но в большинстве программ за этим сочетанием как правило закрепляется функция закрытия окна или вкладки. Я, например, настолько к этому привык, до автоматизма: Ctrl+W всегда закрывает, а не открывает. И тут, подзабыв, какое сочетание у Neighbour, стал в уме перебирать возможные логические варианты, ничего не подошло, полез в справку, вижу Ctrl+W. Ну, думаю, уж на это точно никогда бы не подумал.

С другой стороны, вызов функций или окошек специальных вставок (а ведь Neighbour и есть по сути спец. вставка) в программах обычно происходит по Ctrl+Shift+V (в Adobe Photoshop, InDesign, например) или по Ctrl+Alt+V (в Microsoft Word, Excel). Так и запоминается лучше: Ctrl+V — вставка обычная, а Ctrl+V+другой_модификатор — вставка дополнительная, специальная. Так может и в вашей утилите можно так сделать? Это, мне кажется, было бы и логичней, и клавишникам привычней. Или поменять, или добавить доп.-шоткатом.

#63:  Author: Loopback PostPosted: Wed Aug 04, 2021 13:08
    —
yozhik wrote:
Вот было бы хорошо, если бы была возможность копировать в комментарии имена файлов.

Давно уже есть мысль добавить возможность вставки информации из wdx-плагинов, тогда бы автоматом и имя было (через встроенный плагин "tc"). Но нужно найти: 1 - время, 2 - место в интерфейсе, куда можно безболезненно добавить кнопку, да и в целом продумать, как это все лучше реализовать.
yozhik wrote:
если бы у кнопок "Neighbour" и "F2 OK" были бы всплывающие подсказки с их shortcut' ами (Ctrl+W и Ctrl+S)

Легко, но как бы они не стали мешать в работе (уже попробовал). Возможно и правда лучше отдельное окошко с мини-справкой, либо кнопка "?" в заголовке, ныне почти забытый метод справки.

По клавишам. Да, соглашусь, что комбинации надо бы выбирать более осмысленно. Если считать функцию вставки соседа как одну из функций вставки, то наверно можно. В конце-концов можно и настраиваемые сделать, но придется вводить ini-файл, чего хотелось избежать.

#64:  Author: imig73Location: г. Иркутск PostPosted: Wed Aug 04, 2021 16:05
    —
Loopback wrote:
но придется вводить ini-файл, чего хотелось избежать

Ну почему так? Ради благого дела можно бы и поступиться, а ещё пользователю может быть удобно править ini для чего то.

Давно слежу за темой тут. Вообще замечательный и удобный скрипт, спасибо. А в последней версии иконка просто супер.

#65:  Author: yozhikLocation: Электросталь PostPosted: Wed Aug 04, 2021 19:07
    —
Loopback wrote:
возможность вставки информации из wdx-плагинов

Ну, это было бы вообще шикарно. Только ждать дольше, пока готово будет. Smile

Loopback wrote:
2 - место в интерфейсе, куда можно безболезненно добавить кнопку

Кнопку обязательно именно добавлять? А если переименовать существующую Neighbour в Paste (Вставка), а в открывающемся окне сделать выбор во вкладках чего вставлять? Вкладка Neighbour, вкладка Plugins. Переключаться между ними по Ctrl+Tab. Если согласиться на ini, то запоминать в нём последнюю открытую. Правда, мышью будет открываться вкладка только последняя или первая (если без ini), зато с клавиатуры можно будет разными шоткатами открывать напрямую ту вкладку, которая нужна. В общем, у меня такой вариант в голове нарисовался. Но, кажется, он не такой уж и фантастический, функции вкладок то в автоитовском GUI уже есть.

Loopback wrote:
1 - время

Это да, тут уж ничего не предложишь. Жили бы рядом, я бы предложил в магазин за продуктами для вас ходить. Smile

Loopback wrote:
придется вводить ini-файл, чего хотелось избежать

А есть уже файл переводов lng. Можно было бы всё привести к общему знаменателю: сделать единый ini, а переводы убрать внутрь него, в секции. И переключатель в ini тогда можно было бы сделать на нужный язык. Вообще, идея настраиваемых шоткатов в ini мне очень нравится. А справочную подсказу для доп-окошка тогда тоже можно было бы оттуда считывать.

#66:  Author: Loopback PostPosted: Thu Aug 05, 2021 11:33
    —
imig73 wrote:
Ну почему так? Ради благого дела можно бы и поступиться, а ещё пользователю может быть удобно править ini для чего то.

Просто изначально хотелось чтобы утилита была максимально простой, но видимо после определенного уровня это невозможно. В предыдущем изменении для кодировок добавилось уже столько ключей командной строки, что при дальнейшем усложнении держаться за эту схему, наверно, нет смысла.
yozhik wrote:
Только ждать дольше, пока готово будет.

Это да, но делать половинчатые решения вроде тоже смысла нет.
yozhik wrote:
А если переименовать существующую Neighbour в Paste (Вставка), а в открывающемся окне сделать выбор во вкладках чего вставлять?

Да, на эту кнопку я уже покушался, только думал из нее тоже меню сделать. Но возможно с вкладками будет лучше.
yozhik wrote:
А есть уже файл переводов lng. Можно было бы всё привести к общему знаменателю: сделать единый ini, а переводы убрать внутрь него, в секции.

Нет, ну объединять конфигурацию и языки точно не стоит.
yozhik wrote:
Вообще, идея настраиваемых шоткатов в ini мне очень нравится.

Если сделать ini, то ничего невозможного тут уже нет. Но если будет, то эта настройка только ручной правкой ini, городить под это интерфейс совсем не интересно.

#67:  Author: yozhikLocation: Электросталь PostPosted: Fri Aug 06, 2021 04:03
    —
Loopback wrote:
только ручной правкой ini, городить под это интерфейс совсем не интересно

А интерфейс совершенно и не нужен, на мой взгляд. Пользователь, который додумался найти и установить TCMCE, способен без малейших затруднений отредактировать вручную ini. А тот, у кого ручная правка ini способна вызвать затруднения, вряд ли вообще будет пользоваться даже встроенной функцией комментариев, не говоря уже о сторонней утилите.

Иконка у утилиты хороша, но может более подходяще будет родную тоталовскую подгрузить?
Code:
GUISetIcon(EnvGet("COMMANDER_PATH") & "\WCMICONS.DLL", 29, $hGUI)
...
GUISetIcon(EnvGet("COMMANDER_PATH") & "\WCMICONS.DLL", 29, $hOtherGUI)




Правда, кто-то может другую библиотеку использовать, например, wcmicon2.dll или wciconex.dll... Но можно было бы тогда проверять значение ключа DefaultLib в wincmd.ini. Правда, кто-то может у себя сделать редирект этой секции в другой файл... Но можно было бы тогда вынести имя библиотеки и индекс иконки в ini утилиты. В общем, на ваше усмотрение.

#68:  Author: imig73Location: г. Иркутск PostPosted: Fri Aug 06, 2021 04:32
    —
yozhik
По мне так возня с иконками в сабж совсем лишнее, сейчас новая иконка замечательна и хорошо вписалась, а встроенные приедаются за годы.

#69:  Author: Loopback PostPosted: Fri Aug 06, 2021 17:15
    —
yozhik wrote:
Иконка у утилиты хороша, но может более подходяще будет родную тоталовскую подгрузить?

Соглашусь с imig73, должна же как-то иконка отличаться от стандартной. Если уж она кому-то совсем не понравится, тот всегда может поменять ее в ресурсах экзешника или исходник скомпилировать.
yozhik wrote:
Правда, кто-то может другую библиотеку использовать,

Вот именно. Я, например, wciconex использую. К тому же в кастомной библиотеке может быть другой индекс нужной иконки, т.е. надо тогда еще связанный *.inc проверять. Не то чтобы это всё сложно, но мне кажется это менее надежно и лучше не привязываться к внешним ресурсам.

#70:  Author: Loopback PostPosted: Tue Aug 17, 2021 13:39
    —
Бета-версия

+ добавлена поддержка вставки данных из wdx-плагинов
+ добавлена поддержка шаблонов с быстрой вставкой
+ добавлен ini-файл для конфигурации
+ добавлена мини-справка по горячим клавишам
- исправлено появление лишнего пустого комментария в списке соседних

Написано и переписано очень много чего, баги весьма возможны. Особенно прошу обратить внимание на работу горячих клавиш, они сейчас переделаны: когда-то давно я столкнулся с неработоспособностью акселераторов при запуске с русской раскладкой клавиатуры и, недолго думая, прикрутил стороннюю библиотеку, в то время как у проблемы есть решение, стоило лишь чуть глубже копнуть тему.

Редактор теперь может использовать данные из wdx-плагинов, установленных в TC. В качестве макросов используется такой же формат, как в TC: [=plugin.column.unit]. Набор из макросов и текста можно сохранить как шаблон и потом быстро его вставлять.

По поводу получения пути и прочего из плагина "tc" я несколько погорячился, т.к. этот плагин виртуальный и недоступен извне. Пришлось делать такой же виртуальный аналог Smile

В свете появления ini, способ с ключами командной строки можно считать устаревшим, но для совместимости он останется, при этом ключи командной строки имеют приоритет над соответствующими ключами в ini.

Насчет настраиваемых в ini хоткеев все же не уверен, стоит ли их вообще делать для небольшой утилиты с несколькими хоткеями. Возможно, лучше в процессе бета-тестирования определиться с удобными вариантами. Тем более что настраиваемость некоторых хоткеев (например, вставка шаблонов) будет трудновато реализовать.

#71:  Author: yozhikLocation: Электросталь PostPosted: Wed Aug 18, 2021 14:00
    —
Loopback
Ох, даже не запустилась Confused :
Code:
Line 531  (File "C:\totalcmd\Profile\tools\TCMCE\tc_multi_comment_edit.exe"):
Error: Variable used without being declared.

#72:  Author: imig73Location: г. Иркутск PostPosted: Wed Aug 18, 2021 15:00
    —
Loopback
И у меня не запустилась с такой же ошибкой.

#73:  Author: Loopback PostPosted: Wed Aug 18, 2021 18:41
    —
Это называется: работает - не трогай Very Happy В последний момент решил немного оптимизировать главную библиотеку и вот накосячил. Буду теперь дополнительно проверять на чистой установке тотала.

Бета-версия 2021-08-18

Относительно вчерашней версии сделал достаточно болезненный, но необходимый рефакторинг кода, плюс избавился от пары тяжеловесных стандартных библиотек. Так что возможно косяков стало еще больше, а может все-таки меньше.

#74:  Author: yozhikLocation: Электросталь PostPosted: Wed Aug 18, 2021 19:02
    —
Loopback
Ура, запустилось. Всё очень красиво. ))

Я по косякам, прошу пардону, буду отчитываться по порядку выявления. Т.е. не буду дожидаться, пока соберутся несколько, и отправлять партиями. Если так не годится, то скажите как надо, исправимся.

Косяк № 1. На вкладке Plugins пункты выпадающего списка не отсортированы по алфавиту. Хорошо бы отсортировать, а то искать долго.

Косяк № 2. На вкладке Plugins выпадающий список содержит только 30 пунктов. Если плагинов больше 30, и если выбрать какой-нибудь плагин ближе к концу списка, то при следующем обращении к этому списку опять отобразится только 30 плагинов и (!) те плагины, которые были в самом начале списка не отобразятся. Помогает только перезапуск утилиты.

Хотелка № 1. И сразу хотелка. Хорошо бы в ini добавить ключ со списком плагинов (через запятую, например), которые не надо отображать в выпадающем списке. Этакий игнорлист. Например, плагин autorun или TWinKey — они полезной инфы для комментариев не предоставляют.

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

Косяк № 3. В главном окне при использовании Alt+стрелки вверх/вниз (т.е. при перемещении по выпадающему списку файлов) в поле редактирования не отображается комментарий текущего файла. При выборе файла из списка мышью ком-й отображается. В предыдущей версии утилиты ком-й отображался в обоих режимах.

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

Хотелка № 2. Во вкладке Neighbour, если ком-й длинный, то он не умещается в поле вкладки, и просмотреть его полностью невозможно. Хорошо бы или сделать полосы прокрутки в этом окне или (если полосы не сделать) отображать текст полного комментария во всплывающей подсказке.

#75:  Author: Loopback PostPosted: Wed Aug 18, 2021 20:11
    —
yozhik wrote:
Я по косякам, прошу пардону, буду отчитываться по порядку выявления.

Без проблем, как будет удобно.

yozhik wrote:
Хорошо бы отсортировать, а то искать долго.

Ок.

yozhik wrote:
На вкладке Plugins выпадающий список содержит только 30 пунктов.

Ага, забыл стиль вертикального скроллера, у меня плагинов только 21, все помещались.

yozhik wrote:
В главном окне при использовании Alt+стрелки вверх/вниз (т.е. при перемещении по выпадающему списку файлов) в поле редактирования не отображается комментарий текущего файла.

Да, подтверждаю. Как раз косяк, порожденный вчерашними переделками.

yozhik wrote:
Хорошо бы в ini добавить ключ со списком плагинов (через запятую, например), которые не надо отображать

Полезно, добавлю.

yozhik wrote:
Во вкладке Neighbour, если ком-й длинный, то он не умещается в поле вкладки

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

#76:  Author: yozhikLocation: Электросталь PostPosted: Wed Aug 18, 2021 23:55
    —
Loopback
Кнопка с вопросиком включает псевдо-контекстный режим. Т.е. выглядит он как контекстный, но при этом куда ни ткни, отовсюду откроется одно и то же окно. Невелика проблема, но выглядит, как мне кажется, немного как костыль. Возможно ли убрать этот промежуточный курсор со знаком вопросика? Я немножко знаю, что там системная ф-ция задействуется и AutoIt'ом в неё так просто не влезешь. Но Вы то профи. Wink В общем, если долго ковыряться, то и не надо.

Косметическое предложение: в самом справочном окне если установить моноширинный шрифт, можно будет выравнивать отступы и текст станет читабельней. Например, Courier New (а можно и Consolas):


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

Чекбокс "Insert value" на вкладке Plugins активен только в режиме SINGLEEDIT. А когда запускаемся в режиме MULTIEDIT, не активен — это понятно. Но когда запустились в MULTIEDIT, а затем из выпадающего списка отдельных файлов выбрали один файл? Это получается запустились в MULTIEDIT, а потом внутри переключились в SINGLEEDIT, значит и чекбокс по идее должен разблокироваться. Но он по-прежнему неактивен, что не логично как-то.

Но могла бы быть и другая логика. Мне даже сейчас кажется, что она была бы удобнее. Добавить в главное окно возможность применять (раскрывать) макросы прямо в окне по кнопке или хоткею. Может быть это слишком, но я всё же озвучу.

1) Например, у меня в поле комментария строка макросов. Зажимаю Alt и щёлкаю по кнопке OK с зажатым Alt.
2) Если выбран один файл, то макросы заменяются на текст, который они содержат, прямо в поле.
3) А если несколько файлов (MULTIEDIT), то поле очищается, а макросы раскрываются в массив списка тех файлов, которые выбраны. И теперь можно переключаться между ними в окне и у каждого в поле будет индивидуальный текст, раскрытый из макросов, который теперь можно индивидуально редактировать.

Надеюсь, не запутал. Smile А с клавиатуры это можно было бы делать по Alt+Enter. Что думаете?
Тогда и чекбокс тот можно было бы убрать.

А то сейчас как получается с макросами: если выбрано несколько файлов и мне нужно записать их имена в комментарии и затем подредактировать записанное, то приходится запускать утилиту дважды:
1й раз, чтобы записать имена в комментарии;
2й раз, чтобы отредактировать комментарии.
А если б была ф-ция «Раскрыть макросы», то это бы решалось за один запуск.

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

По хоткеям соображения следующие:

Ctrl+W лучше бы всё же не использовать. Это закрывающий хоткей во всех программах, в том числе и в Тотале: умолчательный хоткей на закрытие вкладки. Какой бы пример тут привести... Вот, магнитофон. Можно кнопку Play покрасить в красный цвет, а кнопку Record в зелёный. Но это приведёт к тому, что тот, кто привык ориентироваться по цвету, будет их путать. Хотя пиктограммы на них и разные.

Ctrl+Shift+V мне по-прежнему кажется самым подходящим. Но если не хочется вводить второй модификатор, то ещё вариант Ctrl+D (Dialog), вполне логично и одной рукой можно нажать. Или Ctrl+I (Insert) — по названию кнопки, но нажимать придётся уже двумя руками.

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

Ctrl+Enter — закрывает окно утилиты и записывает комментарии. Очень удобный хоткей, т.к. обе клавиши всегда под пальцами. Этим хоткеем отправляются письма во многих почтовых программах, в том числе и в веб-интерфейсе GMail. Можно было бы добавить его к имеющимся F2 и Ctrl+S. Я бы только им пользовался.

Ins — вызов диалога Insert с последней запомненной вкладкой. Очень логично. На стандартных клавах эта клавиша точно есть. И на ноутах тоже не редкость. В дополнение к Ctrl+[DI].

F5 — вкладка Neighbour (в дополнение к Ctrl+N).
F6 — вкладка Plugins (в дополнение к Ctrl+P).
F7 — вкладка Templates (в дополнение к Ctrl+T).
Они удобны тем, что их легко находить «вслепую» на стандартной клавиатуре. И они расположены в ряд, как и сами вкладки, которые они будут активировать. А со временем, если постоянно пользуешься хоткеями, то и на ноуте их очень быстро «находишь». Это я по себе сужу.

Если всё это добавить, то тогда, мне кажется, и настройки хоткеев в ini выносить отпадает необходимость, поскольку все основные области клавиатуры будут задействованы, и пожелать чего-то принципиально большего уже вряд ли получится, и каждый будет удовлетворён имеющимся.

#77:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Thu Aug 19, 2021 06:35
    —
Только что обратил внимание на эту тему, начал было читать все подряд, но сломался: слишком много букв.
Поэтому тупо спрошу. Можно отвечать просто "да/нет".
Предоставляет ли представленный скрипт следующие возможности:
1) Добавлять новый комментарий к уже имеющимся;
2) Обрабатывать многострочные комментарии;
3) Удалять комментарии;
4) Редактировать комментарий к директории (тот, что появляется при наведении курсора на updir [..]);
5) Просмотреть список файлов, к которым в данный момент редактируются комментарии, с текущими комментариями к ним.
Вопросы проистекают из свойств моего собственного скрипта, который я писал, разумеется, только под собственные нужды. В частности, мне никогда не приходилось комментировать файлы с юникодными именами, но тут чисто из любопытства проверил - все работает. Пустячок, но приятно Smile

#78:  Author: yozhikLocation: Электросталь PostPosted: Thu Aug 19, 2021 12:00
    —
Вахмурка
Предлагаю взглянуть на скриншоты всех окон утилиты (сфотографировал специально для Вас): немногословно, зато вполне наглядно.

Loopback
Хотелка № 3. Хорошо бы центрировать дочернее окно Insert не по центру экрана, а относительно родительского окна утилиты (по центру с маленьким смещением вниз, например).

Хотелка № 4. Хорошо бы центрировать окно утилиты не по центру экрана, а по центру окна Тотала, или по центру Тотала со смещением вправо/влево в зависимости от активной панели, т.е. по аналогии с Тоталовским ini-ключом NewFolderOverPanel. А сделать такой же ключ с выбором вообще было бы замечательно.

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

Loopback
В связи с вопросом Вахмурки «3) Удалять комментарии»: мне кажется, что это хорошая идея для ключа запуска утилиты из командной строки — удалить комментарии в выделенных файлах «тихо», без вывода окна — отличная команда для кнопки или для пользовательской em_ с хоткеем.

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

Косяк № 4. После закрытия окна утилиты раскладка клавиатуры самостоятельно переключается на английскую. Запустил утилиту при активной русской раскладке, переключился на русскую уже в окне утилиты — не важно, после закрытия окна раскладка сама переключится на английскую. Или это только у меня так? Или это так и задумано? Подозреваю, что это последствия:
Loopback wrote:
недолго думая, прикрутил стороннюю библиотеку, в то время как у проблемы есть решение, стоило лишь чуть глубже копнуть тему.

Если возможно исправить такое поведение, хорошо бы его исправить.

#79:  Author: Loopback PostPosted: Thu Aug 19, 2021 13:40
    —
Ох, сколько всего Very Happy

yozhik wrote:
Возможно ли убрать этот промежуточный курсор со знаком вопросика?

Да, уже переделал. Тестировал контекстный вариант, но что-то мне кажется он здесь ни к чему.

yozhik wrote:
Чекбокс "Insert value" на вкладке Plugins активен только в режиме SINGLEEDIT.

Да, это недоработка.

yozhik wrote:
Зажимаю Alt и щёлкаю по кнопке OK с зажатым Alt.

yozhik wrote:
А с клавиатуры это можно было бы делать по Alt+Enter.

Тут есть одно но. Получается, что существенный функционал будет вызываться только хоткеем (или с модификатором, в любом случае с участием клавиатуры), что я считаю неприемлемым. Все же в моем понимании хоткеи удобно дополняют интерфейс, но не заменяют его.

yozhik wrote:
А если несколько файлов (MULTIEDIT), то поле очищается, а макросы раскрываются в массив списка тех файлов, которые выбраны. И теперь можно переключаться между ними в окне и у каждого в поле будет индивидуальный текст, раскрытый из макросов, который теперь можно индивидуально редактировать.

Здесь я вижу одну существенную проблему. Раскрыть макросы по списку несложно (но опять же, должны как-то учитываться опции - в конец/начало), но вот очистилось окно, нажали ОК и... все комментарии стёрлись. Как их после этого сохранять? Обязательно переключаться на какой-нибудь файл?

Идея интересная, но я не вижу, как ее "бесшовно" совместить с имеющейся логикой работы. Как отдельную специфичную функцию (в меню, например) это сделать можно, но не как часть основного процесса.

yozhik wrote:
Ctrl+W лучше бы всё же не использовать.

Тут я согласен, выбрано было неудачно. Учитывая глобальное обновление можно и заменить ее.

yozhik wrote:
Ctrl+Shift+V мне по-прежнему кажется самым подходящим. Но если не хочется вводить второй модификатор, то ещё вариант Ctrl+D (Dialog), вполне логично и одной рукой можно нажать. Или Ctrl+I (Insert) — по названию кнопки, но нажимать придётся уже двумя руками.

Самый интуитивный вариант, все же, Ctrl+I, как мне кажется. Лично у меня все что связано с Ctrl-V - это не даже не вставка, а вставка именно из буфера обмена.

yozhik wrote:
Ctrl+Enter — закрывает окно утилиты и записывает комментарии. Очень удобный хоткей, т.к. обе клавиши всегда под пальцами. Этим хоткеем отправляются письма во многих почтовых программах, в том числе и в веб-интерфейсе GMail. Можно было бы добавить его к имеющимся F2 и Ctrl+S. Я бы только им пользовался.

Да, тут вполне согласен.

yozhik wrote:
Ins — вызов диалога Insert с последней запомненной вкладкой. Очень логично. На стандартных клавах эта клавиша точно есть. И на ноутах тоже не редкость. В дополнение к Ctrl+[DI].

Увы, далеко не на всех. Например, Логитек, делают совершенно ужасную раскладку с увеличенным Del за счет отсутствующего Ins. На ноутбуках эта клавиша если и есть, то как правило доступна только через Fn. Но как дополнение - может быть.

yozhik wrote:
F5 — вкладка Neighbour (в дополнение к Ctrl+N).
F6 — вкладка Plugins (в дополнение к Ctrl+P).
F7 — вкладка Templates (в дополнение к Ctrl+T).
Они удобны тем, что их легко находить «вслепую» на стандартной клавиатуре. И они расположены в ряд, как и сами вкладки, которые они будут активировать. А со временем, если постоянно пользуешься хоткеями, то и на ноуте их очень быстро «находишь». Это я по себе сужу.

Кстати, а вот это действительно хорошая идея, однозначно удобнее разбросанных Ctrl+N и т.д. Может они и не нужны тогда?
Хотя, на некоторых ноутбуках уже нет функциональных клавиш, или они доступны только через Fn.
yozhik wrote:
Хорошо бы центрировать дочернее окно Insert не по центру экрана, а относительно родительского окна утилиты (по центру с маленьким смещением вниз, например).

yozhik wrote:
Хорошо бы центрировать окно утилиты не по центру экрана, а по центру окна Тотала, или по центру Тотала со смещением вправо/влево в зависимости от активной панели, т.е. по аналогии с Тоталовским ini-ключом NewFolderOverPanel. А сделать такой же ключ с выбором вообще было бы замечательно.

Центрирование можно, со смещением не уверен. Посмотрим.
yozhik wrote:

В связи с вопросом Вахмурки «3) Удалять комментарии»: мне кажется, что это хорошая идея для ключа запуска утилиты из командной строки — удалить комментарии в выделенных файлах «тихо», без вывода окна — отличная команда для кнопки или для пользовательской em_ с хоткеем.

Посмотрим, сложного тут ничего не должно быть.

yozhik wrote:
Подозреваю, что это последствия:
Если возможно исправить такое поведение, хорошо бы его исправить.

Да, похоже на то. Изначально такого не было, я это в первую очередь проверял. Что-то в какой-то момент сломал значит.

Вахмурка
Идеология скриптов несколько различаются, здесь все же больше визуальный редактор с расширенными возможностями. По пунктам:
1) Да
2) Да
3) Да
4) Нет, Тотал не передаёт его в списке выделенных файлов.
5) Да

#80:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Thu Aug 19, 2021 16:06
    —
Loopback wrote:
1) Да
2) Да
3) Да
4) Нет, Тотал не передаёт его в списке выделенных файлов.
5) Да
Благодарю, более чем исчерпывающе!

#81:  Author: yozhikLocation: Электросталь PostPosted: Thu Aug 19, 2021 17:59
    —
Loopback wrote:
однозначно удобнее разбросанных Ctrl+N и т.д. Может они и не нужны тогда? Хотя, на некоторых ноутбуках уже нет функциональных клавиш

Это про F5, etc. И те оставить, и функциональные добавить, мне думается. Хоткеев много не бывает. Их может не хватать в больших комбайнах из-за множества ф-ций. Но если утилита небольшая, то разные способы обращаться к её инструментам только её украсят, мне кажется.

Loopback wrote:
Центрирование можно, со смещением не уверен.

Да, я теперь тоже не уверен. Присмотрелся к ТС: со смещением отображаются только диалоги маленького размера (создание файла, папки) — вот они, действительно, когда смещаются, не вызывают чувства небезопасности. А если диалог большой, то его двигать как-то громоздко. Всё равно что грузовик на стоянке перед домом припарковывать. Smile

Loopback wrote:
Идея интересная, но я не вижу, как ее "бесшовно" совместить с имеющейся логикой работы.

Вот тут, мне кажется, надо бы хорошо сосредоточиться, чтобы не осталось недоделок, чтобы логика не была половинчатой. Я пару строк напишу, и прошу прощения, если и без того всё понятно. Но тут бы всё по полочкам разложить, чтобы ничего не упустить.

Основная неясность при работе с ТСМСЕ возникает (ну, у меня по крайней мере) в ситуации, когда пользователь загружает в ТСМСЕ несколько файлов. Что он, пользователь, при этом хочет? От ответа на этот вопрос зависит расстановка приоритетов и, следовательно, выбор логики работы.

1) Он хочет отредактировать имеющиеся комменты по одному индивидуально. Но это можно сделать и запуская утилиту на каждом файле по отдельности. Понижаем приоритет.

2) Он хочет записать в комменты ко всем файлам один и тот же текст (заменить или добавить к имеющемуся, или удалить). Тут вопросов нет, утилита это прекрасно делает, есть опции Replace/Add и т.д. Но для этой операции вовсе не нужен ComboBox с переключением между файлами. Добавил везде один и тот же текст и добавил, дальше там нечего проверять. Но поскольку этот переключающий ComboBox всё же есть, напрашивается третий вариант.

3) Он хочет вначале ввести общий текст для всех выделенных файлов, а потом добавить в каждый индивидуальное уточнение. Например, выделяю несколько пдф'ов, в первом окне набираю «Собрание моих сочинений. Том » — это вступление копируется автоматически во все комментарии, а затем переключаюсь по файлам и добираю 1, 2, 3 и т. д. А где-то могу ещё добавить «Том 4 (неполный)» и т. п. Сохраняю. Можно конечно делать это в несколько заходов: а) выделил файлы, внёс общую часть, сохранил; б) открываешь теперь по одному, добавляя индивидуальное. Но это как-то громоздко. И, ведь, для того же и утилита, чтобы всё такое упростить. И ComboBox на это очень неоднозначно намекает.

Но возникает теперь вопрос: каковы приоритеты? Если я набираю текст в окне МУЛЬТИ, то он автоматом копируется во все комменты (заменяя или добавляя в зависимости от настроек)? Если нет, то откатываемся к логике «многозаходности». А если да, то идём дальше. А после того, как отредактировал комменты по одному и снова переключился в окно МУЛЬТИ, что должно произойти? Что в этом окне отобразится: только общая часть с игнором индивидуальных, или вообще ничего? Или общая часть и потом какое-нибудь служебное обозначение что, мол, «там дальше в разных комментах ещё что-то есть»? Или общая часть отобразится и автоматом затрёт все индивид. правки, которые я только что сделал? Мне кажется, что если ComboBox с выбором индивидуальных файлов существует, то эти вопросы не обойти. А если этими вопросами не задаваться, то тогда лучше убирать и ComboBox, чтобы не сбивал с толку.

А теперь к этому всему добавляются контекстные плагины. После того, как я выбрал макрос(ы) во вкладке плагинов, для применения этой строки макросов мне нужно нажать ОК и заново загружаться потом по отдельности для индивидуальной правки («многозаходность»)? Или макросы автоматически применятся ко всем комментам и можно будет тут же переключаться между файлами и править value, вставленные макросами?

В общем, этот момент мне пока не ясен. И в зависимости от того, как Вы его разрулите, станет ясно как должен работать «Insert value» и тогда реальность моих фантазий по поводу «Alt+Enter» и др. способов для применения макросов (и не только их) «на лету» станет яснее.

#82:  Author: Loopback PostPosted: Fri Aug 20, 2021 13:38
    —
Бета-версия 2021-08-19

+ добавлен ряд новых горячих клавиш (F5-F7, Ctrl+I, Ctrl+Enter)
- исправлен сброс раскладки клавиатуры после выхода
+ список исключений плагинов
+ сортировка списка плагинов
- исправлено переключение файлов горячими клавишами
- добавлен отсутствующий скроллбар в список плагинов

Активность чекбокса "Вставка значений" не исправлял, скорее всего он будет убран.

yozhik wrote:
Основная неясность при работе с ТСМСЕ возникает (ну, у меня по крайней мере) в ситуации, когда пользователь загружает в ТСМСЕ несколько файлов. Что он, пользователь, при этом хочет? От ответа на этот вопрос зависит расстановка приоритетов и, следовательно, выбор логики работы.


В том-то и дело, что приоритеты у всех разные и всем не угодишь. Мои приоритеты:
1. Правка одиночных файлов
2. Правка нескольких файлов, в 99% случаев с заменой
3. Теперь будет быстрое добавление стандартизированных комментариев с помощью шаблонов, в т.ч. из плагинов.

Т.е. правкой индивидуальных комментариев я практически не пользуюсь, использую их только для быстрой ревизии, для чего этот режим и предназначался. Да собственно и название утилиты намекает, что изначальная цель - работа с несколькими комментариями. Правка индивидуальных комментариев - приятный бонус, но не один из основных режимов работы.

Собственно, главная проблема заключается в том, что после правки индивидуальных комментариев есть опасность их затереть, т.к. при нажатии ОК в режиме мультиправки по умолчанию производится замена. Это было и в предыдущих версиях и на самом деле напрягало, это надо устранить, или хотя бы как-то защитить. Пока у меня только один вариант. Придется ввести новый чекбокс (в виде кнопки). Если был изменен любой из индивидуальных комментариев, при возврате в режим мультиправки чекбокс снимается и редактор становится неактивным, при сохранении в этом режиме будет происходить просто сохранение файла без замены, а чтобы опять включить мультиправку нужно будет вновь поставить чекбокс, явно продемонстрировав свои намерения.

Для раскрытия макросов без закрытия редактора сделать пункт меню с сопутствующим хоткеем. После вызова функции новый комментарий применяется ко всем файлам и снимает чекбокс, но не закрывает редактор. Возможно, вместо пункта меню стоило бы все же ввести кнопку "Применить" как наиболее логичное и универсальное (как для мультиправки, так и для индивидуальных комментариев) решение, но интерфейс будет асимметричный и тесный. Как вариант - мини-кнопка вплотную к ОК, открывающая выпадающее меню с пунктом Применить, это также позволит при необходимости добавить еще какие-нибудь способы сохранения.

Что касается опции разворачивать или нет макросы, то это в принципе не самая нужная опция, поскольку необходимость иметь именно такой текст в формате макроса представляется маловероятной. Можно возвращать текст макроса, если плагин не найден, тогда эта вероятность еще уменьшится.

Конечно, такой вариант тоже далеко не идеальный, но решает главную проблему. В любом случае без кардинальной переделки интерфейса однозначно красивого решения я не вижу, слишком много всего необходимо уместить в ограниченный интерфейс. А переделывать интерфейс - значит уйти от сходства со стандартным диалогом редактирования комментариев, чего бы очень не хотелось. Если есть конкретные идеи - готов рассмотреть.

yozhik wrote:
А если этими вопросами не задаваться, то тогда лучше убирать и ComboBox, чтобы не сбивал с толку.

Комбобокс хоть сейчас можно убрать - MCE_DISABLE_SINGLEEDIT Very Happy

yozhik wrote:
А теперь к этому всему добавляются контекстные плагины.

На самом деле плагины ничего принципиального не добавили к имеющейся неопределенности, а только высветили проблему.


Last edited by Loopback on Fri Aug 20, 2021 15:59; edited 1 time in total

#83:  Author: imig73Location: г. Иркутск PostPosted: Fri Aug 20, 2021 15:41
    —
Loopback
Возможно ошибка, качается по ссылке https://total.darkhost.ru/files/mce/beta/multi_comment_edit_20210817.zip. Ошибка в строке 531 вернулась и сабж не запускается.


Last edited by imig73 on Fri Aug 20, 2021 16:05; edited 2 times in total

#84:  Author: Loopback PostPosted: Fri Aug 20, 2021 16:00
    —
imig73
Это я опять забыл изменить цифры в ссылке... Исправил.

#85:  Author: imig73Location: г. Иркутск PostPosted: Fri Aug 20, 2021 16:18
    —
Loopback
Думаю в PluginExclude по умолчанию можно и TCFS2Tools добавить.
Понимаю что временно, но описания для новых горячих клавиш пока не добавлено.

#86:  Author: yozhikLocation: Электросталь PostPosted: Fri Aug 20, 2021 19:00
    —
Loopback
Эх, красота. Smile Всё основное вроде работает. Я пока кратко по косячкам пробегусь, а потом засяду писать послание.

1) Вызов справки по F1 поломался.
2) Окну Insert может присвоить атрибут модального? А то сейчас оно само по себе, а родительское само по себе, можно при открытом Insert набирать текст в родительском, открывать КомбоБоксы, только кнопки не работают.
3) Ctrl+I – вызов последней вкладки — пока работает только в пределах текущей сессии. Так и задумано? Может лучше запоминать последнюю вкладку в ini, чтобы открывалась и после перезапуска? Так, вроде, последовательней: написано «последняя», значит должна быть всегда «последняя», а не иногда.

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

4) Про центрирование по центру окна Тотала скромно напоминаю, вроде же решили делать или передумали?

#87:  Author: Loopback PostPosted: Fri Aug 20, 2021 20:27
    —
imig73 wrote:
Думаю в PluginExclude по умолчанию можно и TCFS2Tools добавить.

Да, вполне можно.
yozhik wrote:
1) Вызов справки по F1 поломался.

Ага, просто похоже когда был обработчик сообщения WM_HELP (вариант с контекстной справкой), этот хоткей назначался автоматом. Исправил.
yozhik wrote:
2) Окну Insert может присвоить атрибут модального? А то сейчас оно само по себе, а родительское само по себе, можно при открытом Insert набирать текст в родительском, открывать КомбоБоксы, только кнопки не работают.

Да, конечно, но в последнюю очередь. Кстати сейчас и модальность окна тотала временно отключил, т.к. скрипт часто падает и окно остается неактивным, что очень неудобно, а обработчиков исключений в Autoit, к сожалению, не завезли. Потом верну.
yozhik wrote:
Ctrl+I – вызов последней вкладки — пока работает только в пределах текущей сессии.

Да, в принципе так и задумывал. Сделать сохранение между сессиями несложно, но мне так кажется логичнее: я же на обязан помнить, какая последняя вкладка была открыта, скажем, пару дней назад. Если сохранять, то уже через небольшое время будет невозможно предсказать, какая вкладка будет открыта. А так я к примеру в пределах сессии хочу работать с плагинами - открыл, переключился, и далее работаю с плагинами.
yozhik wrote:
Про центрирование по центру окна Тотала скромно напоминаю, вроде же решили делать или передумали?

Всё что уже подтвердил - сделаю. Но не сразу Smile Сейчас все-таки важнее решить, что делать с сохранением.

#88:  Author: yozhikLocation: Электросталь PostPosted: Fri Aug 20, 2021 23:10
    —
Loopback wrote:
новый чекбокс (в виде кнопки)... при возврате в режим мультиправки чекбокс снимается и редактор становится неактивным
мини-кнопка вплотную к ОК, открывающая выпадающее меню с пунктом Применить

Эти идеи мне очень нравятся и они, кажется, вполне уравновешивают все пожелания. Только осталось представить как это будет выглядеть.

Кнопка рядом с ОК наподобие такой?

Вполне хорошо выглядит. И симметрию не нарушает. И в это маленькое меню можно было бы перенести из "Options" опцию "Replace macro", как имеющую непосредственное отношение к сохранению. Т.о. уже два пункта: опция "Replace macro" и команда "Apply macro to all files". И между ними сепаратор.

А что если сразу добавить туда ещё одну команду, третью: "Apply text to all files"? Это чтобы можно было написать что-то типа «Мои сочинения, том », применить это ко всем файлам, не выходя из редактора, и тут же отправиться дописывать «том 1», «том 2» и т. д. И ей тоже хоткей присвоить. Rolling Eyes

Чекбокс-кнопка редактирования мне пока представляется только в одном месте — справа от комбобокса:

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

Вот, только что экспериментировал с кодировками и поймал ещё один косячок. Прервусь, запишу его, а потом продолжу про интерфейс.

Если сохранять текст только английский и русский, то всё работает исправно. Но если в комментарий добавить ещё текст на третьем языке (например, на греческом), то происходит вот что. Шаги для воспроизведения:
Code:
Test text. Тестовый текст. Δοκιμαστικό κείμενο.

1) Выделяем несколько файлов без комментов в новой папке (т.е. в этой папке вообще нет файла descript.ion).
2) Копируем тестовый текст, вставляем в поле редактора TCMCE.
3) Обращаем внимание на то, что для новых комментов кодировка по умолчанию выставляется UTF-8. Жмём ОК.
4) Вновь выделяем те же файлы, вызываем TCMCE.
5) Видим, что кодировка комментов стала UTF-16 BE! Вместо обещанной UTF-8. Причём, вот именно Big Endian (почему?).

Собственно, это происходит не только с тремя тестовыми языками, но и с одним любым, отличающимся от русского и английского (я попробовал ещё армянский Cool). Главное, чтобы файлов было несколько (на одном не воспроизводится) и чтобы descript.ion не существовал либо был в ANSI, т.е. чтобы было создание либо конвертация в UTF-8 (когда descript.ion изначально в UTF-8, то всё нормально отрабатывает).

Ну, вот, пока это отправлю и буду дальше про интерфейс дописывать.

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

Loopback wrote:
я же на обязан помнить, какая последняя вкладка была открыта, скажем, пару дней назад.

Ну, конечно же, через пару дней это становится неактуально. А в течение дня? В течение дня я могу несколько раз закрыть и открыть TCMCE и прекрасно буду помнить, какая вкладка у меня была последней. Эх, не то, чтобы это прям очень важно. Но добавляет аккуратности и последовательности в действиях. Дополнительная, т.с., шлифовочка. Работать, естественно, и без неё будет...
Loopback wrote:
А так я к примеру в пределах сессии

А Вы под «сессии» что подразумеваете? Я подразумеваю «рабочий день». Smile

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

А вот слева от комбобокса, тоже вроде ничего:

При таком расположении можно и надписи про кодировки оставить, но тогда придётся уменьшать длину комбобокса. А это не очень, наверное, хорошо, т. к. имена файлов подлиннее будут неумещаться.

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

Вообще, вот сейчас смотрю-присматриваюсь и вариант чекбокс-кнопка слева мне побольше глянется. Он и логичней, и симметричней. Ладно, пока приостановлю творческий поток, подожду, что Вы скажете. А то может Вы тем временем что-то другое уже сделали. Smile

#89:  Author: Loopback PostPosted: Sat Aug 21, 2021 00:05
    —
yozhik wrote:
Кнопка рядом с ОК наподобие такой?

Да, почти, так красиво ее вряд ли получится сделать, такого контрола в Autoit нет, стандартными средствами API ее вроде тоже не создать. Но надо будет посмотреть.

yozhik wrote:
А что если сразу добавить туда ещё одну команду, третью: "Apply text to all files"?

А зачем вообще плодить сущности и разделять макросы и текст? Учитывая что произвольный текст может содержать макросы Smile Применить - и применяется всё что в редакторе, макросы при этом разворачиваются.

"Replace macro" как раз нужно оставить в опциях, это именно опция, а не команда, и её трогать скорее всего вообще никому не потребуется. В этом меню должны быть только команды. Вот сохранение шаблона как раз тут неплохо разместится, я его в опции просто от отсутствия альтернатив пока воткнул.

yozhik wrote:
Чекбокс-кнопка редактирования мне пока представляется только в одном месте — справа от комбобокса:

Именно так, я еще вчера пробовал его поставить.

yozhik wrote:
Правда, придётся убрать надписи о кодировках, но они, мне кажется, не являются необходимыми. С надписями, конечно, нагляднее и симпатичнее, но и без них всё вполне понятно.

Не обязательно, чуть сузить комбо и всё уместится.
yozhik wrote:
Вот, только что экспериментировал с кодировками и поймал ещё один косячок.

Да, спасибо, повторил. Вполне может быть, пришлось очень много перелопатить всего, в том числе связанного с кодировками, где-то похоже индекс поехал.

yozhik wrote:
А в течение дня? В течение дня я могу несколько раз закрыть и открыть TCMCE и прекрасно буду помнить, какая вкладка у меня была последней.

Ладно, попробую, посмотрю как это будет.

yozhik wrote:
А Вы под «сессии» что подразумеваете? Я подразумеваю «рабочий день»

Не, в моем понимании сессия - это один запуск программы.

yozhik wrote:
А вот слева от комбобокса, тоже вроде ничего:

Я и так вчера пробовал, пока больше нравится справа Smile

#90:  Author: yozhikLocation: Электросталь PostPosted: Sat Aug 21, 2021 00:16
    —
Loopback wrote:
чуть сузить комбо и всё уместится

Я, вот, не удержался и тоже сузил. Два варианта: кнопка справа и слева:

Оба ничего себе. Но кнопка слева вроде пологичней...

#91:  Author: Loopback PostPosted: Sat Aug 21, 2021 00:33
    —
yozhik
Ладно, расположение это в общем-то детали. Возможно слева она больше в глаза бросаться будет, т.к. важный элемент. Будем смотреть.

PS: Что самое-то смешное, баг с кодировками был и во всех предыдущих версиях, и за год его никто не заметил Smile

#92:  Author: yozhikLocation: Электросталь PostPosted: Sat Aug 21, 2021 00:33
    —
Loopback wrote:
Применить - и применяется всё что в редакторе, макросы при этом разворачиваются

Да, точно, вряд ли кому-то в голову придёт применять, не разворачивая при этом макросов. Это только в процессе теоретических штудий можно недодумать.
Loopback wrote:
"Replace macro"... нужно оставить в опциях... сохранение шаблона как раз тут неплохо разместится

А я по другому рассуждал: слева всё, что относится к диалогу Insert и полю редактирования; справа всё, что относится к действию сохранения, т.е. к тому, что происходит при нажатии на кнопку ОК.

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

Loopback wrote:
и за год его никто не заметил

А вот приполз грекоговорящий ёжик-армянин и сразу всё заметил. Very Happy

#93:  Author: Loopback PostPosted: Sun Aug 22, 2021 15:44
    —
Бета-версия 2021-08-22

+ возможность сохранения активной страницы диалога вставки между запусками (ini)
* слегка переделана мини-справка (внутреннее изменение)
+ добавлено меню к кнопке ОК для дополнительных вариантов применения/сохранения
+ добавлена кнопка "мультиправка" для переключения режима мультиправки/одиночных комментариев
- исправлена кодировка при сохранении нового файла descript.ion с юникодным комментарием
+ центрирование диалогов относительно родительских окон
+ пользовательские плагины (не установленные в TC)

Стиль кнопки со стрелкой (split-button), оказывается, уже есть стандартно, но только в системах начиная с Vista. Так что пользователи XP, получается, в пролёте.

Что еще не очень хорошо, кнопка мультиправки в русской локализации неприлично широкая получается. Как бы это немного сократить. Думаю, как вариант, может быть на иконку вместо текста заменить.

В целом по логике работы всё равно получилось не то чтобы очень, но так хотя бы какая-то защита для правок индивидуальных комментариев.

Подробным документированием пока не занимаюсь, т.к. возможны еще изменения.

#94:  Author: imig73Location: г. Иркутск PostPosted: Sun Aug 22, 2021 18:27
    —
Loopback
Это здорово и я даже не ожидал такого быстрого развития.

#95:  Author: yozhikLocation: Электросталь PostPosted: Mon Aug 23, 2021 01:04
    —
Loopback wrote:
может быть на иконку вместо текста заменить

Я вот такие сварганил:

Сингл и Мульти. Годятся? Если что, вот svg и ico...

#96:  Author: imig73Location: г. Иркутск PostPosted: Mon Aug 23, 2021 07:16
    —
yozhik
Да перестаньте вы про иконку шорох наводить. Сейчас иконка основная зачётная и больше для диалогов ничего не надо, иначе ещё одного раскрашенного монстра получим.

#97:  Author: yozhikLocation: Электросталь PostPosted: Mon Aug 23, 2021 12:24
    —
Loopback
Очень здорово, что сделали поле с отображением значений плагинов. Я позавчера несколько раз порывался об этом написать, но побоялся, не будет ли это наглостью в хотелках.

Заметка клавишника: Во вкладке Template при перемещении по Tab фокус никогда не попадает в поле редактирования, бегает только по кнопкам. В других вкладках не так: там фокус переносится в редактуру при первом нажатии Tab. А в Templates сейчас, получается, в редактуру можно попасть только мышью. Было бы хорошо это понадстроить. Также было бы удобнее, если бы по Tab фокус сразу выделял первую строку в поле (сейчас Tab переносит фокус в поле, а чтобы выделить строку нужно ещё нажать стрелку вниз).

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

Пока всё чётко работает: плагины, сохранение/несохранение вкладок, хоткеи. Вообще очень удобная утилита получается. Но я ещё не всё успел протестировать. Обязательно отчитаюсь, когда всё перепробую.

imig73
По сути дела: предложение об иконках я сделал в ответ на мысль Loopback поменять чекбокс с надписью на чекбокс с иконкой (в его посте об этом ясно написано). У этого чекбокса два состояния: Сингл и Мульти, поэтому и иконки две. Умолчательная на эту роль не годится, если только не сделать её бесцветной в состоянии Сингл, что тоже вариант. А чекбокс с надписью, действительно, получился слишком большим и выглядит неряшливо – это заметил не только я, но и Loopback. Так что наезжать только на меня по меньшей мере несправедливо, наезжайте уж тогда на нас обоих (хотя, может вы так и сделали, просто второе имя дипломатично умолчали). Но, если честно, я не вижу повода для волнений: иконки предлагаются, а не навязываются, да – да, нет – нет.

А в целом: проявление оформительского шовинизма – явление не редкое, к сожалению. Свойственно в основном технарям, но не всем. Авиаконструктор Туполев, когда сказал «Летают только красивые самолёты», неужели ошибся?! Конечно, внешний вид – дело второстепенное, но и не бесполезное. А жизненный опыт показывает, что за нетерпимостью к разговорам о внешнем виде часто скрывается элементарная примитивность мышления, а значит и невнимательность (верю и надеюсь, что к вам это не относится). В конце концов, как бы то ни было, простой вежливости в общении никто не отменял.

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

Loopback
У плагина AKFontInfo загружаются 20 с небольшим реальных строк и более 200 пустых. Вполне возможно, что это вина самого плагина, поскольку и ранее за ним замечались разные кривоватости. Но, может, стоит и Вам взглянуть, вдруг утилита что подшаманивает.

У плагина Expander2 помимо реальных строк Part1, Part2... Part32, загружаются ещё строки с минусовыми значениями Part-32, Part-31... Part-1. Может тоже стоит глянуть? Меня лично это явление не напрягает, можно проигнорировать, но вдруг там какой баг притаился.

В CustomPlugins раскрываются переменные в пути — ну, вообще, красота. Smile Тестирую дальше...

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

Ещё одну странность заметил: если по стрелке у split-button нажать несколько раз (я случайно нажал дважды и это обнаружил), то потом надо столько же раз нажать Esc (или столько же раз щёлкнуть в любом другом месте), чтобы меню закрылось. Посмотрел в EmEditor'е, где такие же кнопки используются — там такого нет, там повторный клик по стрелке закрывает открытое меню.

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

В режиме МУЛЬТИ и при выбранном МУЛЬТИ в комбобоксе команда Save в меню по стрелке не срабатывает. Вроде логично, но зачем она тогда активна в этом режиме?

Думал-думал, так и не понял смысл зависимости состояния MUTLI от команды Save. Если я сохраняю комментарий, это разве значит, что его уже не нужно защищать? Вдобавок ещё и переключение происходит «по-тихому», можно не заметить.

Честно говоря, пока не могу придумать, когда команда Save реально может понадобиться. Если действительно нужна, то хоткей Ctrl+S логичнее было бы присвоить ей, мне кажется.

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

Ай, отловил таки. Smile Воспроизводим:
1) В папке нет файла descript.ion (комментов нет).
2) Набираем комментарий к одному файлу, но сохраняем его командой Save, а не F2. Из диалога утилиты выходим по Esc.
3) descript.ion создаётся в ANSI, а не в UTF-8 как ожидалось и как прописано в настройках для новых descript.ion.

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

Косметика: При сохранении шаблона командой "Save text as template", MsgBox сообщает "Apply". Может лучше "Template saved."? Раньше было нормально, а теперь Apply у другой команды.

#98:  Author: Loopback PostPosted: Mon Aug 23, 2021 15:09
    —
yozhik wrote:
Годятся?

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

imig73 wrote:
Да перестаньте вы про иконку шорох наводить.

Уже ответили, это про другую иконку. Мне тоже не очень хотелось бы ее делать, лишний код ради пары значков, но очень уж широченная выходит текстовая кнопка.

yozhik wrote:
Заметка клавишника: Во вкладке Template при перемещении по Tab фокус никогда не попадает в поле редактирования ...
было бы здорово добавить, если бы после открытия вкладки фокус перемещался в поле редактирования (в Plugins на первый комбобокс) по нажатию стрелки вниз (я такое встречал во многих редакторах).

Ок, посмотрю.

yozhik wrote:
У плагина AKFontInfo загружаются 20 с небольшим реальных строк и более 200 пустых.

yozhik wrote:
У плагина Expander2 помимо реальных строк Part1, Part2... Part32, загружаются ещё строки с минусовыми значениями Part-32, Part-31... Part-1

Да, есть такое. Посмотрю, чей это баг, хотя если в TC они видны нормально, то наверно проблема с моей реализацией wdx-интерфейса.

yozhik wrote:
Ещё одну странность заметил: если по стрелке у split-button нажать несколько раз (я случайно нажал дважды и это обнаружил), то потом надо столько же раз нажать Esc (или столько же раз щёлкнуть в любом другом месте), чтобы меню закрылось. Посмотрел в EmEditor'е, где такие же кнопки используются — там такого нет, там повторный клик по стрелке закрывает открытое меню.

С трудом смог повторить, пришлось буквально раз десять быстро ткнуть, чтобы такое случилось, и убирается максимум со второго раза. Предположу что-то связанное с очередью сообщений в Autoit. Посмотрю, но не факт, что это получится исправить.

yozhik wrote:
В режиме МУЛЬТИ и при выбранном МУЛЬТИ в комбобоксе команда Save в меню по стрелке не срабатывает. Вроде логично, но зачем она тогда активна в этом режиме?

Почему не срабатывает, она сохраняет файл комментариев (без применения ), но если сохранять нечего, то ничего и не сохранит. Возможно, ее надо делать неактивной, если нет актуальных изменений (набор текста для мультирежима до применения не считается изменением файла). Либо совсем убрать, пока не знаю.

yozhik wrote:
Думал-думал, так и не понял смысл зависимости состояния MUTLI от команды Save. Если я сохраняю комментарий, это разве значит, что его уже не нужно защищать? Вдобавок ещё и переключение происходит «по-тихому», можно не заметить.

Да я вот тоже думал, пока это всё не очень логично.

yozhik wrote:
Честно говоря, пока не могу придумать, когда команда Save реально может понадобиться. Если действительно нужна, то хоткей Ctrl+S логичнее было бы присвоить ей, мне кажется.

Пока тоже думаю, не знаю. Менять этот хоткей уже точно не получится.

yozhik wrote:
Ай, отловил таки.

Ок, но пока неясно, останется ли вообще Save.

yozhik wrote:
Косметика: При сохранении шаблона командой "Save text as template", MsgBox сообщает "Apply". Может лучше "Template saved."?

Не успеваю уже за изменениями темы Smile
Раньше так и было, наверно неверная строка перевода берется.

#99:  Author: yozhikLocation: Электросталь PostPosted: Mon Aug 23, 2021 15:54
    —
А я пока погонял ключи ком-строки: всё работает как часы. Уже не знаю, что ещё можно протестировать. Smile Только скромно напоминаю про ключ REMOVE – ключ удаления комментов в выделенных файлах, чтобы не забылся (мы говорили про такой).

Хотелка последняя (наверное). Если не очень трудозатратно, не могли бы добавить удаление предыдущего слова (т.е. слева от курсора) по Ctrl+Backspace в поле редактирования? Сейчас по этому хоткею вставляется символ 007F. Очень распространённый в редакторах хоткей, до автоматизма, поэтому и прошу: постоянно на нём попадаюсь, жму, а он не удаляет. Правда, в родном Гислеровском диалоге комментов он так же работает: вставляет 007F, но может можно в утилите этот момент улучшить.

#100:  Author: yozhikLocation: Электросталь PostPosted: Mon Aug 23, 2021 19:30
    —
Loopback
Работал, работал, вдруг папку не могу удалить. Проверил кто держит, оказалось TCMCE повисла в памяти. Причём внешне ничего не заметил, всё стандартно открывалось/закрывалось. Из-за чего такое может быть? Просто глюк? Окна не видно, а в Диспетчере:

 !  Avada:
Картинка преобразована в ссылку (слишком широкая).

#101:  Author: Loopback PostPosted: Mon Aug 23, 2021 19:48
    —
yozhik wrote:
Только скромно напоминаю про ключ REMOVE – ключ удаления комментов в выделенных файлах, чтобы не забылся (мы говорили про такой).

Я помню, но по размышлению не совсем уверен в правильности этой идеи.

Во-первых, утилита изначально для визуальной правки, а не для работы через комстроку. Сделать не так уж сложно, но это будет фактически отдельный, никак не связанный с остальным блок кода. Во-вторых, добавить только удаление не совсем логично. А почему тогда не добавление и замена? Да и интерфейс параметров здесь не слишком подходит для командной строки. В общем не очень уверен, тут как-то больше напрашивается отдельная утилита.

yozhik wrote:
Хотелка последняя (наверное). Если не очень трудозатратно, не могли бы добавить удаление предыдущего слова (т.е. слева от курсора) по Ctrl+Backspace в поле редактирования?

Да, в моем редакторе тоже используется. Пробежал по интернету, действительно, это уже де факто стандарт (ну еще бы, недавно эта комбинация была даже добавлена в Блокнот). Но стандартной реализации в поле редактирования, как я понимаю, нет, придется делать свою. Посмотрю.

yozhik wrote:
Проверил кто держит, оказалось TCMCE повисла в памяти.

Вот с таким точно ни разу не сталкивался. Да и зацикливаться особо негде, бесконечный тут только цикл обработки сообщений, но в нём окно нигде не скрывается.

#102:  Author: yozhikLocation: Электросталь PostPosted: Mon Aug 23, 2021 20:37
    —
Loopback wrote:
по размышлению не совсем уверен

Раз поразмыслили и пришли к выводу, значит так тому и быть. Я то подумал, что, может, забылось (второй раз уже, кстати, но теперь вижу, что это не ваш случай). И с аргументами contra я согласен.
Loopback wrote:
стандартной реализации в поле редактирования, как я понимаю, нет, придется делать свою

Я, прежде чем попросить, тоже посмотрел в сети на предмет делал ли кто это уже в AutoIt. Нашёл пару решений, все немногострочные, но хотя условия в них немного другие, всё же сложилось впечатление, что это приемлемая хотелка — ну, вот и озвучил.
Loopback wrote:
с таким точно ни разу не сталкивался

Да, скорее всего локальный глюк у меня. На всякий случай оставил Диспетчер открытым, понаблюдаю, если что опять случится у меня, отрепортую.

#103:  Author: Loopback PostPosted: Mon Aug 23, 2021 21:30
    —
yozhik wrote:
Я, прежде чем попросить, тоже посмотрел в сети на предмет делал ли кто это уже в AutoIt. Нашёл пару решений, все немногострочные, но хотя условия в них немного другие, всё же сложилось впечатление, что это приемлемая хотелка — ну, вот и озвучил.

Задача, кстати, с подвохом и, несмотря на ее кажущуюся простоту, не столь тривиальна. Вопрос в том, как ее реализовать - просто или правильно Smile Сделал пока "просто" (4 строчки кода), как дополнительный акселератор, потому что если "правильно" - это сочетание должно работать только в пределах Edit-контрола, когда он в фокусе. А это городить еще кучку кода, делать сабклассинг Edit'a... Если проблем не будет, пусть остаётся так. Тем более что Ctrl+A работает так же.

#104:  Author: Loopback PostPosted: Wed Aug 25, 2021 14:45
    —
Бета-версия 2021-08-25

- исправлено залипание меню на кнопке ОК
- исправлена проблема с переходом по Tab на странице шаблонов
+ горячая клавиша Ctrl+Backspace для редактора
* текстовая кнопка режимов заменена на графическую, добавлен хоткей
+ возможность редактирования комментария к ".." (переход к родительскому каталогу)

Правку комментария к ".." я вообще сначала не планировал делать, но оказалось что там минимальные изменения, почему бы и нет, раз такая штука работает. Правильно не планировал, функция эта неполноценна, комментарий кроме как в подсказке нигде не отображается, функция убрана. Да и вообще никаких гарантий, что Гислер завтра не сочтет это багом (каковым оно по-сути и является) и не уберет.

Кнопку заменил, по-моему очень даже прилично смотрится, надо будет только подсказку добавить к ней. Зато теперь ширина комбобокса вполне достаточна.

В общем, осталось решить с логикой кнопки Save и ее необходимости (про найденный баг помню, но пока не смотрю) и почистить код. В остальном вроде все баги исправлены и хотелки учтены.

yozhik wrote:
У плагина AKFontInfo загружаются 20 с небольшим реальных строк и более 200 пустых.

Это косяк плагина, т.к. при получении имён колонок он по спецификации должен возвращать ft_nomorefields, если больше не остается полей, а он возвращает ft_nosuchfield, который используется при получении данных. Учёл в условии, на правильно написанные плагины это никак не повлияет.

yozhik wrote:
У плагина Expander2 помимо реальных строк Part1, Part2... Part32, загружаются ещё строки с минусовыми значениями Part-32, Part-31... Part-1.

C Expander2 это норма. Судя по беглому знакомству с плагином, эти поля служат для отсчета частей с обратной стороны имени файла. И вроде даже отключается в конфигурации плагина.

yozhik wrote:
фокус перемещался в поле редактирования (в Plugins на первый комбобокс) по нажатию стрелки вниз (я такое встречал во многих редакторах)

Увы, тут совсем не так всё просто, слишком объемная реализация выходит, просто акселератор не прикрутишь. Но сейчас на вкладке шаблонов должен нормально работать переход по Tab (тут был баг в Autoit с порядком создания контролов: несмотря на то, что ListView я создаю на вкладке, по факту Autoit создает его перед Tab-контролом).

#105:  Author: yozhikLocation: Электросталь PostPosted: Thu Aug 26, 2021 00:50
    —
Loopback wrote:
Кнопку заменил, по-моему очень даже прилично смотрится

Я, правда, старался, чтобы она не аляпистая была, а сдержанная и чтобы согласовалась с диалогами Тотала. Мне самому не нравится, когда интерфейс в новогоднюю ёлку превращают. Вот, кстати, сравнение с фрагментом из тоталовского диалога Переименования файлов:

Вроде, всё по-фирменному выглядит: как в родительском, так и в дочернем. Я, вон, себе и основную убрал (точнее поставил на её место прозрачную пустышку) и по мне даже поспокойней стало. Я этого не предлагаю, конечно, это уже за пределом объективности.

Loopback wrote:
возможность редактирования комментария к ".."

Если честно, никаких существенных примеров использования этой функции я придумать не смог. Она больше похожа на «пасхалку», привет от программиста. Увидел, улыбнулся и забыл.

Loopback wrote:
осталось решить с логикой кнопки Save и ее необходимости

А здесь удалось сочинить ситуацию (пока только одну), когда эта команда может быть оправдана. Вот если помимо сохранения descript.ion Save ещё будет высылать окну Тотала команду перечитать содержимое descript.ion, чтобы оно отобразилось на файловой панели (при выбранном режиме комментов, естественно), то тогда мог бы получиться вполне удобный предпросмотр всех комментов за раз. Тогда последовательность действий могла бы быть такой:

1) Включаю режим отображения комментов в файловой панели.
2) Вызываю ТСМСЕ, редактирую комменты (хоть все, хоть по одному), вызываю Save.
3) На файловой панели Тотала, позади окна ТСМСЕ, вижу все свои комментарии в ряд, как в таблице, и могу тут же продолжить редактировать их в утилите.

Сейчас же, после применения Save, при открытой ТСМСЕ файловая панель Тотала не обновляется даже если пощёлкать по ней мышкой.

Loopback wrote:
а он возвращает ft_nosuchfield, который используется при получении данных

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

Loopback wrote:
C Expander2 это норма

Прошу прощения, что сигнализировал, а сам толком не присмотрелся. Надеюсь, времени много не отнял.

Loopback wrote:
слишком объемная реализация выходит, просто акселератор не прикрутишь

И не надо, и так всё очень хорошо. А то лучшее, как известно, есть враг хорошего.

Вообще утилита замечательная получилась, не нарадуюсь. Всё вроде работает исправно.

Автозакрытие MsgBox'а о сохранении Template — приятный бонус. )) Правда, в первый раз я не ожидал, что он сам закроется и пытался в него мышкой попасть.

Один момент только покритикую, но больше для порядку, т.к. по большому счёту меня лично он не напрягает. В Options когда выбираю переключатель Add, меню закрывается и чтобы переключиться на Beginning (т.к. по умолчанию там End), нужно лезть в меню во второй раз. Вот, если бы оно не закрывалось автоматически, и после выбора Add можно было бы сразу выбрать Beginning или End, то тогда это было бы оправдано. А сейчас ради сокращения кликов мне представляется логичней вместо двух групп из двух пунктов, сделать одну группу из трёх пунктов:
1. Replace
2. Add to Beginning
3. Add to End
И радио-переключатель между ними тремя.

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

Кстати, вот иллюстрация использования Save при условии обновления тоталовской панели. Вполне наглядный предпросмотр получается:

#106:  Author: Loopback PostPosted: Thu Aug 26, 2021 15:33
    —
yozhik wrote:
Вроде, всё по-фирменному выглядит: как в родительском, так и в дочернем.

Да, по-моему тоже всё отлично.
yozhik wrote:
Она больше похожа на «пасхалку», привет от программиста.

Всё может быть, но мне представляется, что сам факт отображения подсказки над ".." - это такой мелкий безобидный баг. Именно потому, что этот комментарий не отображается в колонках и его нельзя изменить стандартными средствами, а значит изменение и отображение этого комментария и не предусматривалось. Показ подсказки выпадает из общей картины, а значит скорее всего это непредусмотренное поведение. Хотя конечно, если бы редактирование осуществлялось только стандартными средствами, эту подсказку никто и никогда не увидел бы.

Впрочем, что это на самом деле - баг, фича или пасхалка - знает только Гислер.

yozhik wrote:
А здесь удалось сочинить ситуацию (пока только одну), когда эта команда может быть оправдана.

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

Главный аргумент "за" в том, что результатом работы кнопки Применить будет только изменение в памяти, т.е. при последующем нажатии Отмена никакие изменения не сохраняются. А раз есть применение, должно быть и сохранение, кнопка F2 - не то, поскольку она фактически делает последовательно оба действия.

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

И по-видимому, сохранение все же не должно возвращать режим мультиправки, это было ошибкой. Возможно, также стоит добавить в заголовок звёздочку или надпись, если есть изменения. Добавить обновление панели, разумеется, тоже можно.

И еще одна проблема - с хоткеем. Разумеется, Ctrl+S значительно логичнее присвоить именно сохранению, но этот хоткей уже много лет задействован как псевдоним F2. Напоминает ситуацию с TC, когда появились вкладки, а Ctrl+T был подо что-то занят.

yozhik wrote:
Автозакрытие MsgBox'а о сохранении Template — приятный бонус. )) Правда, в первый раз я не ожидал, что он сам закроется и пытался в него мышкой попасть.

Вот эффект неожиданности - это как раз плохо... По-хорошему надо не в MsgBox таймаут добавлять, а совсем избавиться от него, но тут нужна какая-то обратная связь. Вообще я сейчас в скриптах в таких случаях делаю всплывающее уведомление в трее на пару секунд, но здесь, боюсь, это будет как-то "оторвано" от окна. Наверно, лучше какую-нибудь всплывашку на секунду на фоне окна редактора.

yozhik wrote:
А сейчас ради сокращения кликов мне представляется логичней вместо двух групп из двух пунктов, сделать одну группу из трёх пунктов:

Однозначно! Интересно, откуда вообще появилась эта идея с четырьмя переключателями... усложнение логики, лишние активации/деактивации и двойной заход в меню.

#107:  Author: yozhikLocation: Электросталь PostPosted: Thu Aug 26, 2021 18:17
    —
В связи с командой Save, учитывая всё сказанное, у меня выстраивается такая иерархия (выполнения операций):

1) Apply — Применяем, Не сохраняем, Не закрываем.
2) Save — Применяем, Сохраняем, Не закрываем.
3) OK — Применяем, Сохраняем, Закрываем.

Вроде получается системно и легко запоминаемо. А при Save если не применять, то что тогда сохранять?! Если не применишь, то и сохранять нечего. Следовательно, и «проблема с мультикомментарием, который нельзя сохранить без применения» отпадает.

А с работой команды Save у меня выстраивается такая логика:

а) Результат выполнения Save зависит от того, какой режим активен (или какое окно открыто) в момент выполнения.

б) Если активен MULTIEDIT (вспоминаем, что он у нас просто так не бывает активен: либо мы с него начали, либо мы его осознанно активировали кнопкой), то Save применяет и сохраняет во всех комментариях то, что мы видим в поле редактирования. Противоречий тут нет, т.к. если он у нас активен, то значит мы его активировали сами и осознаём, что все комментарии у нас перезапишутся. При этом учитываются настройки [Replace, Add to Beginning, Add to End], а также учитывается настройка Replace macro для операции применения.

в) Если MULTIEDIT открыт, но не активен, то и команда Save тоже неактивна.

г) Если активен SINGLEEDIT, то Save сохраняет (и применяет, если есть что применить, и в зависимости от настройки Replace macro) только тот комментарий, который мы видим в поле редактирования. А другие не применяет и не сохраняет. Иначе будет нелогично. Логично так: что вижу, то и сохраняю. При этом состояние настройки [Replace, Add to Beginning, Add to End] здесь тоже может быть учтено.

д) Звёздочка (знак несохранённости) — идея хорошая. Появляется после внесения изменений в поле редактирования. Вопрос где ей появляться.

д.1) Если посложнее. В строке комбобокса, в самом начале строки. В режиме активного MULTI: если что-то изменили в поле редактирования. В режиме неактивного MULTI: если есть хоть один несохранённый комментарий. В режиме SINGLE: если что-то изменили в конкретном комментарии. Но тогда логически напрашиваются все эти звёздочки (их наличие или отсутствие) при открытии комбобокса, в выпадающем списке. Ой, уж что-то всего много получается, как реализовывать то )) Но теоретически вроде стройно.

д.2) Если попроще. В заголовке окна File comment, после заголовка. В режиме MULTI: если есть общие изменения или есть изменения хоть в одном комменте. В режиме SINGLE: если есть изменение в конкретном открытом комменте. Хотя, может это и не «проще», всё равно же надо запоминать состояния что сохранёно, что не сохранёно. Или тогда уж вообще со звёздочками не связываться.

е) При таком раскладе возвращение активности MULTI при выполнении Save совсем не логично. Одно с другим не связано.

ж) С хоткеем Ctrl+S прямо-таки гамлетовские сомнения: либо ему быть, либо не быть. Однозначно Ctrl+S ассоциируется в первую очередь с сохранением без закрытия. Относительно ломания при этом устоявшихся традиций я не советчик, ибо по характеру консерватор. Только шёпотом скажу: я бы поломал. Very Happy

Ох, Вы уже не сочтите за нескромность, реализовывать то Вам. Я просто стараюсь быть чем-то полезным.

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

Loopback wrote:
лучше какую-нибудь всплывашку на секунду на фоне окна редактора

Такое решение мне очень нравится. И чем она будет проще, тем лучше. Идеальный вариант без кнопок вообще. Я в своих маленьких вспомогательных скриптиках так всегда и делаю, и уже к этому привык. Вот, например, в InDesign при экспорте так (на Маке, правда, как оно на Windows пока не смотрел, но думаю, что тоже будет неплохо):


А вот в AkelPad при сборе статистики по документу вообще минимализм:

Эту я подсмотрел в скриптах у KDJ и с тех пор везде её вставляю. А всплываха в системном трее неуместна хотя бы потому, что у ТСМСЕ нет там иконки.

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

Не утерпел, попробовал на Windows. Кнопочка всё равно отображается, хотя и запрещена в скрипте:

#108:  Author: Loopback PostPosted: Thu Aug 26, 2021 20:54
    —
yozhik wrote:
Вроде получается системно и легко запоминаемо.


Да, наверно это лучший возможный вариант. Увы, сохранение без применения здесь бессмысленно.

yozhik wrote:
только тот комментарий, который мы видим в поле редактирования. А другие не применяет и не сохраняет. Иначе будет нелогично.

Так не получится, комментарии изменяются сразу в процессе набора/вставки, и если применить еще можно только один, то сохранить их можно только все сразу.

Поменять это, наверно, было бы можно, но опять же, к примеру: применили общий коммент ко всем файлам, переключились на одиночный, сохранили -> сохранился только один, а я может просто подправить его хотел.

Все равно кое-где логика будет хромать, чувствую, придется смириться. Все равно стало лучше, чем было до.

yozhik wrote:
Ой, уж что-то всего много получается, как реализовывать то ))

Отпадает сразу, комбо динамически менять не хочу.
yozhik wrote:
В заголовке окна File comment, после заголовка.

Планировался именно тут.
Чисто по логике, даже не нужно завязываться на режимы. Если изменен один или несколько комментариев (индивидуально или после нажатия Apply) - есть маркер. Save его сбрасывает. Активность пункта Save связана с этим же состоянием.

yozhik wrote:
При таком раскладе возвращение активности MULTI при выполнении Save совсем не логично.

Именно, я об этом и писал.

yozhik wrote:
Только шёпотом скажу: я бы поломал.

Я бы наверно тоже. Если будет запрос потом - всегда можно добавить опцию.

yozhik wrote:
Идеальный вариант без кнопок вообще.

Да, так уже и сделал, вариант как в Akelpad.

#109:  Author: Loopback PostPosted: Mon Aug 30, 2021 14:12
    —
Бета-версия 2021-08-30

* чистка кода и перевода, доработка справки
+ хоткей сохранения шаблона
+ всплывающие подсказки для длинных строк в списках
+ опция для задания режима замены/вставки по умолчанию
* упрощена логика опций замены/вставки

Если каких-то критичных проблем не всплывет, это будет последняя версия перед релизом.

#110:  Author: imig73Location: г. Иркутск PostPosted: Mon Aug 30, 2021 15:42
    —
Loopback
На мой не искушённый взгляд в Win10/TC10 x64 всё очень удобно и работает без ошибок. Для тех кто в теме, супер-утилита получилась.

#111:  Author: yozhikLocation: Электросталь PostPosted: Mon Aug 30, 2021 20:12
    —
Loopback
Я тоже утилитой не нарадуюсь. Но до пары моментов всё же докопался.

Косячок: после применения Ctrl+S фокус улетает в панель Тотала. И вернуть его в окно ТСМСЕ можно только мышью, с клавиатуры никак.

Побочный эффект. Воспроизводим:
1) Открываю ТСМСЕ. Утилита в фокусе.
2) По Alt+Tab переключаюсь на другую программу.
3) По Alt+Tab переключаюсь обратно в Тотал. Фокус в панели Тотала. Утилита не в фокусе.
Я вначале подумал, что может и хорошо, что родительское окно не блокируем. Вроде можно при открытой утилите пощёлкать что-то в Тотале, поменять набор колонок на Комментарии, например. А теперь смотрю: потеря фокуса, пожалуй, это ощутимое неудобство, лучше уж тогда блокировать родительское.

Сообщение о сохранении Template может сделать на секунду побольше? Или на две. Очень быстро пропадает, не успеваю полюбоваться. Smile Правда, очень красивое получилось, аккуратное такое. А вообще, пмсм, времени сейчас маловато, чтобы успеть восприять написанное.

Косметика (на работу не влияет, но глаз царапает): при сохранении комментов по Ctrl+S не обновляется надпись текущей кодировки. Точнее так: надпись кодировки рассогласована с действием Ctr+S. Воспроизводим:
а) В папке нет файла descript.ion. Вызываем ТСМСЕ и видим надпись None в углу кодировок. Всё правильно.
б) Набираем комменты. Жмём Ctrl+S (или мышью) – сохранили комменты.
в) А в углу кодировок по-прежнему None, хотя по факту None там уже быть не может, descript.ion то создали только что.
г) А если теперь ещё поменять кодировку из комбобокса и сохранить по Ctrl+S, то всё равно останется None.
д) И если вместо None была кодировка, и я её поменял и сохранил по Ctrl+S, в надписи так и останется предыдущая кодировка.
е) А если я сохранил по Ctrl+S и после этого поменял кодировку в комбобоксе, у меня Ctrl+S остаётся неактивно, хотя кодировка то поменялась, а может я именно новую кодировку хочу сохранить.

Корректура readme_ru.txt (пара очепяток, пара забытых точек, одно имя собственное, одна вставка, одна смысловая ракировка).

Корректура readme_en.txt (пара очепяток, один лишний абзац, одна точка).

#112:  Author: Loopback PostPosted: Mon Aug 30, 2021 23:03
    —
yozhik wrote:
после применения Ctrl+S фокус улетает в панель Тотала.

Это потому, что теперь окну тотала отправляется сообщение обновить панель. А окно не модальное.
yozhik wrote:
Побочный эффект. Воспроизводим:

Да, я об этом писал, что было временно отключено. Обновил по той же ссылке с включенной модальностью, надо было сегодня сразу включить. Лазить по тоталу во время работы точно не стоит.

yozhik wrote:
Сообщение о сохранении Template может сделать на секунду побольше? Или на две. Очень быстро пропадает, не успеваю полюбоваться.

Это сейчас так, потом большая задержка начнёт раздражать Smile Мне две секунды уже реально некомфортно. Сделаю полторы, если будет очень надо - потом можно будет в коде поменять.

yozhik wrote:
при сохранении комментов по Ctrl+S не обновляется надпись текущей кодировки

Ага, конечно. Раньше же не было возможности сохранить файл без закрытия окна. Исправлю.

yozhik wrote:
е) А если я сохранил по Ctrl+S и после этого поменял кодировку в комбобоксе, у меня Ctrl+S остаётся неактивно, хотя кодировка то поменялась, а может я именно новую кодировку хочу сохранить.

Кстати, тоже момент. Считать смену кодировки изменением или нет.

yozhik wrote:
пара очепяток

Спасибо, обновлю.

#113:  Author: Loopback PostPosted: Thu Sep 09, 2021 14:42
    —
Версия 3.0 от 2021-09-09

+ смена кодировки устанавливает флаг модификации
- исправлено состояние кодировки после сохранения

Спасибо всем, кто помогал и участвовал в разработке!

#114:  Author: imig73Location: г. Иркутск PostPosted: Tue Apr 26, 2022 05:53
    —
Loopback
В TC 10.50 появилась возможность
Quote:
17.04.22 Added: Ctrl+Z on [..] now allows to edit the comment of the folder itself (32/64)

Возможно ли и MCE (и так классную) привести в соответствие с новой фишкой? Может уже после выхода финала ТС.
И ещё может ли есть возможность опционально увеличить кегль шрифта в окне редактирования? А то слепошарые и в очках щурятся Smile

#115:  Author: Loopback PostPosted: Wed Apr 27, 2022 18:51
    —
imig73
Видел, пока подожду, может что-то еще поменяется. В том виде как она реализована сейчас польза и удобство мне кажутся сомнительными, но уж что имеем. Так или иначе, мультиправка на [..] работать не будет, только одиночное редактирование.

По шрифту, думаю, вполне возможно, опцией через ini. Просто изначально стояла цель, чтобы окно редактора максимально повторяло стандартное, шрифты в том числе.

#116:  Author: imig73Location: г. Иркутск PostPosted: Wed Apr 27, 2022 19:43
    —
Loopback
По первой части вопроса всё так, абсолютно согласен и не только я.

Если с кеглей получится, будет респект от меня персональный, обещаю. Smile

#117:  Author: Loopback PostPosted: Sun Jul 10, 2022 20:44
    —
Раз уж в финале ничего не поменялось, будет как есть.

Версия 3.1 от 2022-07-10

- мелкие исправления
+ настраиваемый шрифт окна редактора
+ поддержка нового поведения ТК на ".." в каталогах (только одиночное редактирование)

#118: поиск и замена в комментариях Author: Seyran72 PostPosted: Tue Jul 11, 2023 16:45
    —
спасибо за утилиту, Loopback. Но - пара вопросов%

Как сделать, чтобы при запуске НЕ менялся язык ввода текста?! По умолчанию Ваша программка меняет на латиницу. Мне это совсем не нужно!

Нет ли возможности добавить функцию ЗАМЕНЫ текста, а не просто добавления. То есть: найдено в 6 файлах в комментариях слово "Х" и надо заменить пакетно на слово "Y"

#119:  Author: AvadaLocation: Россия, Саратов PostPosted: Tue Jul 11, 2023 20:55
    —
Seyran72
Там по умолчанию и есть замена вместо добавления. Но всего текста, без всякого поиска.

#120:  Author: Seyran72 PostPosted: Tue Jul 11, 2023 23:50
    —
если бы меня устраивала замена ВСЕГО текста, я бы не писал сообщение )))

#121:  Author: Loopback PostPosted: Sun Jul 16, 2023 23:01
    —
Seyran72 wrote:
Как сделать, чтобы при запуске НЕ менялся язык ввода текста?! По умолчанию Ваша программка меняет на латиницу. Мне это совсем не нужно!

Возможно, это издержки работы хака, исправляющего работу горячих клавиш. Но у меня язык, установленный до запуска программы, не меняется после запуска. На какой версии ОС такое происходит?
Seyran72 wrote:
Нет ли возможности добавить функцию ЗАМЕНЫ текста, а не просто добавления. То есть: найдено в 6 файлах в комментариях слово "Х" и надо заменить пакетно на слово "Y"

Честно говоря не вижу, как такое можно совместить с существующей концепцией и интерфейсом.

#122:  Author: AvadaLocation: Россия, Саратов PostPosted: Mon Jul 17, 2023 06:42
    —
Loopback wrote:
На какой версии ОС такое происходит?

Я легко могу воспроизвести на Windows 7 x64. Если текущая раскладка русская, то при открытии редактора она автоматически меняется на английскую, а при его закрытии восстанавливается. Ключ KeyboardID не используется.

#123:  Author: Loopback PostPosted: Tue Jul 18, 2023 22:57
    —
Avada
Да, точно. Похоже, не особо я это всё на семёрке тестировал. Посмотрю, что тут можно сделать.

#124:  Author: Loopback PostPosted: Sat Jul 22, 2023 21:47
    —
Исправил переключение раскладки на семёрке. Плюс несколько небольших изменений сделанных ранее.

Версия 3.2 от 2023-07-22

- исправлена смена раскладки при запуске на Win7
* обновлены некоторые библиотеки
+ Ctrl+F12: удаление содержимого редактора и закрытие окна (= удаление комментария)
+ F12: удаление содержимого редактора
- забытый Ctrl-Backspace добавлен в мини-справку
+ при использовании Ctrl+Backspace теперь работает отмена действия с Ctrl+Z



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group