View previous topic :: View next topic |
Author |
Message |
Loopback
Joined: 07 Sep 2009 Posts: 1291
|
(Separately) Posted: Mon Sep 26, 2022 16:47 Post subject: |
|
|
yozhik wrote: | Назрела хотелка. |
Она, похоже, уже раньше когда-то назревала, поскольку есть в моем списке с приоритетом "подумать когда-нибудь" Но пока не чувствую, что время уже пришло... |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2571
|
(Separately) Posted: Mon Sep 26, 2022 16:59 Post subject: |
|
|
yozhik wrote: | на функциональные кнопки (клавиши) теперь можно навесить много всего полезного |
А можно как-нибудь навесить установку языка (русского или английского), например, после Ctrl+D - для удобства перехода по горячим клавишам в меню избранных каталогов? |
|
Back to top |
|
|
yozhik
Joined: 04 May 2014 Posts: 181
|
(Separately) Posted: Mon Sep 26, 2022 17:26 Post subject: |
|
|
sa wrote: | навесить установку языка |
Речь про установку языка в TC, если я правильно понял. Ну, при поверхностном взгляде мне кажется можно при помощи новых SetHotkeyAction и SetMessageAction в субплагине Tweaks. На некий хоткей повесить перезапись в wincmd.ini значения ключа LanguageIni и отправку TC команды перечитать wincmd.ini. Но это теоретичсссски, надо разбираться, я пока туда не лез. А в моей фразе «функциональные кнопки (клавиши)» ключевое слово всё же «кнопки», а «клавиши» только постольку, поскольку на них отображается F3/F4/F5 и т.д. |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2571
|
(Separately) Posted: Mon Sep 26, 2022 17:35 Post subject: |
|
|
yozhik wrote: | Речь про установку языка в TC |
Нет, языка в системе. Если установлен русский язык, а символы перехода по пунктам меню на английском, то приходится менять язык. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1291
|
(Separately) Posted: Mon Sep 26, 2022 19:31 Post subject: |
|
|
sa wrote: | Нет, языка в системе. |
Язык-то всё равно меняется на уровне приложения.
С помощью вспомогательного скрипта можно сделать. В конфиге Autorun переопределить Ctrl+D:
Code: |
SetHotkeyAction /K:C /H:D SetLangAndOpen
Func SetLangAndOpen()
ShellExec /WAIT "<path_to_Autoit>\AutoIt3.exe" "<path_to_Script>\setlang.au3"
SendCommand "cm_DirectoryHotlist"
EndFunc
|
Скрипт (переключает на английский, для русского строка "0419"):
Code: |
_TCHSetKeyboardLayout("0409", __TCHGetActiveInstance())
Func _TCHSetKeyboardLayout($sLayoutID, $hWnd)
Local $WM_INPUTLANGCHANGEREQUEST = 0x50
Local $ret = DllCall("user32.dll", "long", "LoadKeyboardLayout", "str", $sLayoutID, "int", 0)
DllCall("user32.dll", "int", "SendMessage", "hwnd", $hWnd, _
"int", $WM_INPUTLANGCHANGEREQUEST, _
"int", 1, _
"int", $ret[0])
EndFunc
Func __TCHGetActiveInstance()
Local $sInst = EnvGet("COMMANDER_HWND") ; if set by Autorun, preferable
If ($sInst <> "") And StringIsDigit($sInst) Then Return Hwnd($sInst)
; Fallback to "active" window method
Local $aList = WinList("[CLASS:TTOTAL_CMD]")
For $i = 1 To $aList[0][0]
If WinActive($aList[$i][1]) Then Return $aList[$i][1]
Next
Return 0
EndFunc
|
|
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2571
|
(Separately) Posted: Mon Sep 26, 2022 20:42 Post subject: |
|
|
Loopback wrote: | Язык-то всё равно меняется на уровне приложения. | Понятно, просто у yozhik речь велась про ключ LanguageIni (отвечающий за используемый языковой файл), который мне не нужно менять.
Loopback wrote: | С помощью вспомогательного скрипта можно сделать. | Спасибо, сработало!
Можно теперь обойтись без внешней утилиты (для автоматического переключения языка после Ctrl+D). |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1291
|
(Separately) Posted: Mon Sep 26, 2022 22:11 Post subject: |
|
|
Версия 2.2.7 beta
+ добавлена обновленная английская справка
- функции реестра не работали с именами параметров, содержащими "\"
+ Runtime: добавлена функция IsPressed
- опять исправлена директива LegacyExpression
- исправлена проверка переменной для цикла For
+ добавлена функция RunThread |
|
Back to top |
|
|
jentoso
Joined: 20 Dec 2007 Posts: 351
|
(Separately) Posted: Mon Sep 26, 2022 22:56 Post subject: |
|
|
Loopback wrote: |
- функции реестра не работали с именами параметров, содержащими "\"
|
Теперь отрабатывает без ошибки. _________________ TC 11.03 combo, Windows 10 x64 |
|
Back to top |
|
|
yozhik
Joined: 04 May 2014 Posts: 181
|
(Separately) Posted: Tue Sep 27, 2022 02:58 Post subject: |
|
|
Loopback
Вот диалог cm_CopySamePanel (Shift+F5/F6):
Code: | IniRead CRNTLNG "%COMMANDER_INI%" "Configuration" "LanguageIni"
LngRead TREEBTN 5002 "%COMMANDER_PATH%\LANGUAGE\%CRNTLNG%"
If %AUTORUN_TCARCH% = 32 Then
AddDialog /W:105 /CENTER:1 "TCheckComboBox"
AddCondition /TEXT "TButton" 1 "%TREEBTN%"
AddControl /X:106 "TButton" 1
AddControl /X:106 "TButton" 2
AddControl /X:106 "TButton" 3
AddControl /W:109 "TMyComboBox" 1
Else
AddDialog /W:105 /CENTER:1 "TCheckComboBox"
AddCondition /TEXT "Button" 3 "%TREEBTN%"
AddControl /X:106 "Button" 3
AddControl /X:106 "Button" 4
AddControl /X:106 "Button" 5
AddControl /W:108 "LCLComboBox" 1
EndIf |
В 32бит всё чётко работает, а в 64бит ModifyDialogs не может поменять ширину LCLComboBox. А у MVV его Autorun_FixWindows.dll меняет ширину этого комбобокса! Может можно что-нибудь «подкрутить»? Или смириться с тем что под 64бит сей комбобокс несгибаем? |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1291
|
(Separately) Posted: Tue Sep 27, 2022 14:46 Post subject: |
|
|
yozhik wrote: | Или смириться с тем что под 64бит сей комбобокс несгибаем? |
Увы, в данной реализации да. В том плагине в целом используется другой метод и, скорее всего, дополнительная поддержка именно этого контрола, позволяющая снять ограничения на изменение ширины. |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2571
|
(Separately) Posted: Tue Sep 27, 2022 15:18 Post subject: |
|
|
Команда SetHotkeyAction: у меня комбинации с модификатором Alt почему-то не работают. Пробовал и левую, и правую клавишу. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1291
|
(Separately) Posted: Tue Sep 27, 2022 21:30 Post subject: |
|
|
sa
Да, что-то упустил, похоже альт вообще забыл проверить. |
|
Back to top |
|
|
yozhik
Joined: 04 May 2014 Posts: 181
|
(Separately) Posted: Wed Sep 28, 2022 08:22 Post subject: |
|
|
Loopback
Пара замеченных очепяток в справке:
глава RegDelete
Code: | RegDelete [\K] <ключ> [<параметр>] |
слэш в переключателе надо бы перевернуть
глава While...Wend
Code: | While var > 0
MsgBox(var) # --> 3 --> 2 --> 1
var = var - 1
Next |
вместо Next надо бы WEnd |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1291
|
(Separately) Posted: Wed Sep 28, 2022 20:21 Post subject: |
|
|
yozhik
Спасибо, поправлю. |
|
Back to top |
|
|
yozhik
Joined: 04 May 2014 Posts: 181
|
(Separately) Posted: Fri Sep 30, 2022 00:47 Post subject: |
|
|
Loopback
Вы AkelPad пользуетесь? Я сделал для него подсветку синтаксиса autorun.cfg.
------
Партия замеченных опечаток и недоумений:
В описании CommandExec
Описание гласит:
CommandExec wrote: | Выполнить пользовательскую команду em_* или установить в панелях заданные пути. |
При этом в примерах видим выполнение не только пользовательских команд:
Code: | # открывает диалог настроек
CommandExec cm_Config |
и это работает. Хорошо, но чем тогда CommandExec отличается от SendCommand? Только тем, что во 2й внутренние команды TC можно передавать числами? А литерально в обеих — не создаст ли это путаницы? Далее читаем:
CommandExec wrote: | Параметры отправки внутренней команды |
и при этом в последующей таблице сведения только о пользовательских em_ командах TC. В русской справке TC эти термины не пересекаются: внутренняя/встроенная — только о cm_, а пользовательская — только о em_.
В описании RunThread
Code: | RunThread <funcname> [<param1> [.. <paramN>]
RunThread(<funcname> [, <param1> [, .. <paramN>]] |
В 1й строке не хватает закрывающей ], во 2й закрывающей )
В описаниях строчных ф-ций намёк на то, что вместо casesense требуется подставлять boolean есть только в StrReplace. Может в др., там где casesense используется, тоже стоит добавить?
В описании StrPart
Code: | StrPart(<str>, <delim>, <index> [, <casesense>] |
Не хватает закрывающей ).
Code: | sDay = StrPart("Понедельник|Вторник|Среда|Четверг|Пятница|Суббота|Воскресенье" "|", nDay) |
Не хватает запятой перед delim.
------
Теперь внимание: очень сильная хотелка. Я давно уже её вынашиваю, и вот настало исполнение времён. Пожалуйста!
Дело в том, что у известного хорошего плагина TWinKey есть два существенных недостатка:
- он заброшенный, и с новыми версиями TC всё больше и больше подглючивает;
- если TC видит, что он подключен, то блокирует собственную раскраску табов, даже если в TWinKey она не используется.
Поэтому, без лишних слов, вот бы часть самых полезных избранных ф-ций из TWinKey реализовать в субплагинах Autorun. И самой первой сделать эту:
Специальная обработка клавиши Esc Включение этой опции позволяет, максимально сохраняя обычную функциональность клавиши Esc, использовать её также как простой и удобный способ снять и/или восстановить выделение в активной файловой панели.
В Total Commander полное снятие выделения (как с папок, так и с файлов независимо от настроек) выполняется командой cm_ClearAll (клавиатурный стандарт Ctrl+Num-), а восстановление выделения, снятого, например, после выполнения файловой операции — командой cm_RestoreSelection (клавиатурный стандарт Num/). Клавиша же Esc обычно применяется в главном окне TC в совершенно иных целях:
- для очистки командной строки без перехода в неё (с сохранением фокуса в файловой панели);
- для скрытия диалога быстрой фильтрации (при этом фильтр останется активным), а при повторном нажатии — для сброса фильтрации;
- для закрытия диалога быстрого поиска (пустого или с отключённой быстрой фильтрацией).
После включения опции алгоритм применения клавиши Esc будет следующим:
- Если фокус находится не в файловой панели, то Esc работает обычным образом (закрывает диалоги, очищает командную строку и пр.).
- Если в текущей файловой панели есть выделенные папки/файлы (в том числе и при включённом быстром фильтре), то нажатие Esc вызывает команду cm_ClearAll, снимающую всё выделение.
- Если в текущей файловой панели нет выделения, а Esc нажимается в таком состоянии первый раз, то клавиша работает обычным образом (в зависимости от ситуации может, например, сбросить быстрый фильтр или очистить командную строку).
- Если при отсутствии выделения в файловой панели Esc нажимается второй раз, то вызывается команда cm_RestoreSelection и восстанавливается последнее снятое выделение, если таковое имелось в данном каталоге.
- Далее и вплоть до использования любой другой клавиши Esc будет циклически снимать/восстанавливать в данном каталоге сохранённое выделение.
Она могла бы хорошо поместиться среди ф-ций Tweaks. Мне кажется, что Вам на то, чтобы её сделать, всего несколько минут понадобится. А я бы тогда отключил TWinkey, из-за этой ф-ции его держу преимущественно. Там, конечно, много ещё других хороших, но без них прожить можно, а эту я по нескольку раз на дню использую, привык-с даже. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|