View previous topic :: View next topic |
Author |
Message |
sa
Joined: 29 Apr 2009 Posts: 2610
|
(Separately) Posted: Tue May 14, 2024 17:14 Post subject: |
|
|
yozhik
Это
Code: | Set hintF3 "View File"
ControlSetHint /B:1 17 hintF3 | показывает hintF3, а это
Code: | ControlSetHint /B:1 17 "My Hint" & auLF & "line 2" | как у вас - половину.
Так что всё, как у вас!
У меня x32.
Orion9 wrote: | срабатывает даже не через раз, а больше | Мне показалось, что для уверенного срабатывания указатель мыши надо подводить к нижней половине кнопки... |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Loopback
Joined: 07 Sep 2009 Posts: 1367
|
(Separately) Posted: Tue May 14, 2024 19:05 Post subject: |
|
|
yozhik wrote: | Эх, похоже да, не работают в ControlSetHint с ф-ми кнопками ни переменные, ни вывод пользовательских Func, ни спец-символы (auTAB, etc.), ни даже конкатенация (&). А как же теперь?
|
Можно по аналогии с ShowPopupMenu использовать функцию с ключом /F.
Остальное тоже всё работает. Просто поскольку функция записана в командном виде, выражения с конкатенациями надо обернуть в вычисляемую строку.
Code: | ControlSetHint /B:1 17 %'"My Hint" & auLF & "line 2"' |
yozhik wrote: | А вот такое показывает только половину, т.е. всё после "My Hint" уже не показывает: |
Да, потому что первый же пробел за ним в командной записи трактуется разделителем параметров. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Orion9
![](images/avatars/209030162965b6083922138.jpg)
Joined: 01 Jan 2024 Posts: 352
|
(Separately) Posted: Tue May 14, 2024 20:00 Post subject: |
|
|
Loopback
Еще раз спасибо за фикс в Runtime.dll, эксперимент удался! Всё работает, как я и ожидал
Code: | If Not IsPressed (0x11) Then
TitleLaunch
Else
ShowTitle = 0
EndIf |
Ништяк просто.) Эти строчка позволяет отключать заголовок при запуске ТС с зажатым CTRL.)
И более того:
Code: | ControlSetHint /F /B:1 17 "FButtonsHintText"
ControlSetHint /F /B:2 17 "FButtonsHintText"
Func FButtonsHintText()
Local tip = "No Info"
If IsPressed (0x11) Then
tip = "CTRL"
else
tip = "CTRL выключен"
EndIf
Return tip
EndFunc |
Выводит разный текст тултипа при заходе мыши на контрол при зажатом или отпущенном CTRL! Развить эту тему далее - дело техники.)
Вот что еще хотелось бы по этому поводу отметить: если функция возвращает пустой текст, то хинт по идее не должен всплывать совсем. Сейчас в такие моменты появляется маленький кусочек тултипа, и это правильно с одной стороны, но с другой - так нельзя управлять его появлением.
Можно еще к функции добавить обработку параметра, хотя бы одного?
ControlSetHint /F /B:2 17 "FButtonsHintText" "param"
Loopback wrote: | Не могу подтвердить. Фокус тотала ничто не перехватывает? Подсказки не будут отображаться на несфокусированном окне. |
Пробую сейчас на Win11 Pro, может, в этом дело. Но на другой системе сейчас не могу проверить. Но, вероятно, какая-то проблема все же есть, поскольку как верно заметил sa при заходе "снизу" вероятность появления тултипа возрастает
Добавлено спустя 6 минут:
Quote: | Вариант подсветки для AkelPad. Скромная-сырая-недоделанная — но поскольку это состояние перманентно, то что есть, то есть: |
Спасибо, забрал.) Сегодня вечером как раз и заценю ![Smile](images/smiles/icon_smile.gif) |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
yozhik
![](images/avatars/1105766287559fb613cb73c.png)
Joined: 04 May 2014 Posts: 233 Location: Электросталь
|
(Separately) Posted: Tue May 14, 2024 20:14 Post subject: |
|
|
Loopback wrote: | надо обернуть в вычисляемую строку |
Ой-ё-ёй, забыл совсем за давностью. Прошу великодушного пардону за напрасный шум Всё работает просто замечательно.
Last edited by yozhik on Tue May 14, 2024 21:23; edited 1 time in total |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
sa
Joined: 29 Apr 2009 Posts: 2610
|
(Separately) Posted: Tue May 14, 2024 21:05 Post subject: |
|
|
Orion9 wrote: | при заходе "снизу" вероятность появления тултипа возрастает |
Откуда идёт заход не имеет значения: важно, где остановить указатель – в верхней (плохо) или нижней (хорошо) половине кнопки. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Loopback
Joined: 07 Sep 2009 Posts: 1367
|
(Separately) Posted: Tue May 14, 2024 22:44 Post subject: |
|
|
Orion9 wrote: | Вот что еще хотелось бы по этому поводу отметить: если функция возвращает пустой текст, то хинт по идее не должен всплывать совсем. |
Соглашусь, надо добавить проверку.
Orion9 wrote: | Можно еще к функции добавить обработку параметра, хотя бы одного? |
Наверно можно, только этим закрывается потенциальная возможность добавить еще параметры в ControlSetHint, останутся только ключи. В принципе никто ведь не мешает сделать под каждый вызов свою функцию.
Orion9 wrote: | Пробую сейчас на Win11 Pro, может, в этом дело. |
Вероятно нет, у меня в виртуалке на Win11 23H2 никаких аномалий. На основной системе с Win10 нормально, на другой с высоким разрешением и масштабом 200% тоже, так что даже разным масштабным коэффициентом не объяснить. Вообще, если на этих кнопках работает ControlSetMouseAction, то должно работать и здесь, код определения окна и прямоугольника кнопки идентичный. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Orion9
![](images/avatars/209030162965b6083922138.jpg)
Joined: 01 Jan 2024 Posts: 352
|
(Separately) Posted: Wed May 15, 2024 01:10 Post subject: |
|
|
sa wrote: | Откуда идёт заход не имеет значения: важно, где остановить указатель – в верхней (плохо) или нижней (хорошо) половине кнопки. |
Да, уже убедился. Достаточно чуть-чуть сдвинуть указатель в нижней части и хинт всплывает исправно даже с клавишами модификаторами.
Сделал на скорую руку скрипт с неплохим потенциалом дальнейшего развития, может кому пригодится (только переменные AutoHotkeyPath и ConfigPath нужно будет определить, а то я в спешке на рабочем конфиге эксперимент ставил)
![](templates/subSilver/images/spoiler_show.png) Shortcuts.ahk Code: | #Requires AutoHotkey v2
#SingleInstance Prompt
tc_ini := EnvGet("COMMANDER_INI")
tc_path := EnvGet("COMMANDER_PATH")
if StrLen(tc_ini) = 0
{
MsgBox "Переменная %COMMANDER_INI% не определена",, "Iconx"
Return
}
ini := IniRead(tc_ini, "Shortcuts")
Ready := ""
Loop Parse, ini, "`n", "`r"
{
aVals:=StrSplit(A_LoopField, "="," `t")
aKeys:=StrSplit(aVals[1], "+"," `t")
OutputVar := aKeys[1]
OutputVar := StrReplace(OutputVar, "C", "Ctrl+")
OutputVar := StrReplace(OutputVar, "A", "Alt+")
OutputVar := StrReplace(OutputVar, "S", "Shift+")
Ready .= OutputVar . (aKeys.Length > 1 ? aKeys[2] : "") . " = " . aVals[2] . "`n"
}
if A_Args.Length > 0
{
fb := ""
Loop Parse, Ready, "`n"
{
if InStr(A_LoopField, A_Args[1])
{
fb .= A_LoopField . "`n"
}
}
Ready := fb
}
Ready := Sort(Ready)
try FileAppend Ready, "*"
|
![](templates/subSilver/images/spoiler_show.png) Title.aucfg Code: | ControlSetHint /F /B:1 17 "FButtonsHintText"
ControlSetHint /F /B:2 17 "FButtonsHintText"
Func FButtonsHintText()
Local script, hotkey
Local pipe, tip = "No Info"
if IsPressed (0x10) Then hotkey = "Shift"
if IsPressed (0x11) Then hotkey = "Ctrl"
if IsPressed (0x12) Then hotkey = "Alt"
script = %COMMANDER_PATH% & ConfigPath & "Shortcuts.ahk"
If Not FileExist(AutoHotkeyPath) Then
MsgBox("Не найден " & AutoHotkeyPath, "Title.ini")
tip = "Не найден AutoHotkey " & AutoHotkeyPath
Return tip
Endif
If Not FileExist(script) Then
MsgBox("Не найден " & script, "Title.ini")
tip = "Не найден скрипт " & script
Return inf
Endif
If StrLen(hotkey) = 0 Then
ProcessExecGetOutput pipe %AutoHotkeyPath% '"%script%"'
Else
ProcessExecGetOutput pipe %AutoHotkeyPath% '"%script%" %hotkey%'
EndIf
If StrLen(pipe) = 0 Then Return tip
Return pipe
EndFunc
|
Считывается информация о назначенных клавишах из конфига ТС и показывается в полном сортированном виде при наведении на F3 и F4. Если при этом зажат Ctrl, Alt или Shift, то фильтруются только комбинации с этой клавишей.
Добавлено спустя 3 минуты:
yozhik
Quote: | ариант подсветки для AkelPad. Скромная-сырая-недоделанная — но поскольку это состояние перманентно, то что есть, то есть: |
Да нормальная подсветка.) Только мне показалось, что зря жирным сделаны функции, непривычно как-то.
Добавлено спустя 3 минуты:
Loopback
Quote: | Наверно можно, только этим закрывается потенциальная возможность добавить еще параметры в ControlSetHint, останутся только ключи. В принципе никто ведь не мешает сделать под каждый вызов свою функцию. |
Да, не нужно это, согласен. Можно через обертку. А с хинтом надо смотреть... |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
yozhik
![](images/avatars/1105766287559fb613cb73c.png)
Joined: 04 May 2014 Posts: 233 Location: Электросталь
|
(Separately) Posted: Wed May 15, 2024 07:15 Post subject: |
|
|
Orion9 wrote: | зря жирным сделаны функции, непривычно как-то |
Помимо вкуса это ещё ж и от шрифта зависит. Если разница в толщине между начертаниями невелика и сбалансирована, то норм. У меня, к примеру, Iosevka Curly.
—————————
Пока подготавливается справка, пускай конспект повисит здесь:
Плагин Tweaks, всплывающие подсказки
ShowHint
Code: | ShowHint("text" [, x, y]) |
Универсальная функция отображения подсказки. Закрывается кликом на самой подсказке, на свободном месте окна или по ESC. Цвета берутся из настроек TC. Поддерживает темную тему и переключение командой cm_SwitchDarkmode. По умолчанию, без задания x, y, показывается под курсором.
ControlSetHint
Code: | ControlSetHint [/F] [/O] [/R] [/D:<ms>] [/H:<area>] [/B:<1..7>] <id> <text> |
Регистрирует подсказку по наведению на элемент окна TC.
При /F параметр <text> — имя функции, возвращающей текст подсказки. По аналогии с ShowPopupMenu.
/O — позволяет избавиться от родной подсказки TC путем временного перевода фокуса на подсказку плагина.
/R — не скрывать подсказку при перемещении мыши в пределах поля подсказки и поля элемента, для которого она создаётся. Несовместим с /O.
/D:<ms> — дополнительная задержка в мс.
/H:<area> — сумма флагов зон окна. Используется только с <id> = 0. Подробнее см. в ControlSetMouseAction.
/B:<1..7> — кнопка нижней панели. Используется только с <id> = 17. Подробнее см. в ControlSetMouseAction.
Примеры:
Code: | ControlSetHint /B:1 17 "My hint"
ControlSetHint /B:1 17 %'"My hint" & auLF & "Line 2"'
ControlSetHint /F /B:1 17 "MyFunc"
Func MyFunc()
Local s = "My hint" & auLF & "Line 2"
Return s
EndFunc |
— отображает подсказку при наведении на кнопку F3 Просмотр.
SetHintParam
Code: | SetHintParam("CSH" | "SH", <param_id>, <param1> [, <param2> ... <param5>]) |
Первый параметр SH или CSH — для какой функции будут заданы параметры: ShowHint или ControlSetHint
Далее: <param_id> — его параметр(ы):
- Reload — перезагружает параметры из конфига TC заново
- Delay — (только для CSH) задержка появления подсказки, в мс
- Font — шрифт, порядок параметров: size, face, weight, style, charset
- BackColor, DarkBackColor — цвет фона: 0xRRGGBB
- Text, DarkText — цвет текста: 0xRRGGBB
- Border, DarkBorder — цвет рамки: 0xRRGGBB
Примеры:
Code: | SetHintParam("SH", "Font", 9, "Courier New")
SetHintParam("SH", "BackColor", 0x00FF00) |
Last edited by yozhik on Fri May 31, 2024 06:11; edited 3 times in total |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
sa
Joined: 29 Apr 2009 Posts: 2610
|
(Separately) Posted: Wed May 15, 2024 11:12 Post subject: |
|
|
Orion9 wrote: | Да, уже убедился. Достаточно чуть-чуть сдвинуть указатель в нижней части и хинт всплывает исправно |
Кажется, проблемы возникают при отключённой командной строке. При её наличии – кнопка используется не на половину, а целиком. Просьба проверить. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Loopback
Joined: 07 Sep 2009 Posts: 1367
|
(Separately) Posted: Wed May 15, 2024 12:54 Post subject: |
|
|
sa wrote: | Кажется, проблемы возникают при отключённой командной строке. |
Точно, дело именно в этом. Неудивительно, учитывая что контрол с кнопками также включает в себя командную строку, и если ее отключить, как раз и будет такой эффект, т.к. вдвое уменьшенная высота контрола будет ещё раз делиться пополам. Так что при расчете нужно учитывать, показывается ли в данный момент командная строка.
Кстати, CSMA ведь тоже этому подвержена, но за столько лет никто этого не заметил. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Orion9
![](images/avatars/209030162965b6083922138.jpg)
Joined: 01 Jan 2024 Posts: 352
|
(Separately) Posted: Wed May 15, 2024 14:29 Post subject: |
|
|
sa
Loopback
Когда попробовал в Win8.1 сразу подумалось, что дело в какой-то тонкой настройке, но идей на это счёт совершенно не было. Спасибо, что нашли в чём причина.
Quote: | Кстати, CSMA ведь тоже этому подвержена, но за столько лет никто этого не заметил. |
Это нормально. Flasher, конечно, расписал всё как с куста в справке, но много ли пойдет так далеко? Не каждый сборщик станет этим заморачиваться, тут нужен особый вид любви:
![](templates/subSilver/images/spoiler_show.png) Hidden text Till death do us part, Auto ![Mr. Green](images/smiles/icon_mrgreen.gif)
А ведь зря. По-сути, можно повесить полезные менюшки повсюду "где хошь", например на той же F3:
ControlSetMouseAction /R /B:1 17 TitleBarMenu
Просто я, к примеру, еще не успел до этого добраться
yozhik
Quote: | Помимо вкуса это ещё ж и от шрифта зависит. Если разница в толщине между начертаниями невелика и сбалансирована, то норм. У меня, к примеру, Iosevka Curly. |
Ну да, с этим шрифтом смотрится получше. Но мне бы хотелось совсем убрать жирный текст, как это сделать? А то я в этом деле совсем не разбираюсь, AkelPad юзаю "как-есть" с их сайта, так и не нашел время в нем поковыряться.)
Quote: | Пока подготавливается справка, пускай конспект повисит здесь:
|
Спасибо! Это дело нужное...))
P.S. Ох чуть не забыл:
sa
Я проверил в Win8.1 на других путях и дисках, с пробелами и без, но проблем не обнаружил. У вас случайно не старая версия Autorun_Process.dll, в которой была загвоздка с функцией ProcessExecGetOutput (она резала путь). Нужна последняя версия библиотеки, где это исправлено:
https://total.darkhost.ru/files/temp/autorun_process_20240318.zip |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
sa
Joined: 29 Apr 2009 Posts: 2610
|
(Separately) Posted: Wed May 15, 2024 15:06 Post subject: |
|
|
Loopback wrote: | Кстати, CSMA ведь тоже этому подвержена, но за столько лет никто этого не заметил. |
Эх, какая фича-то, оказывается была: на нижние половинки функциональных кнопок можно было свои команды навесить (а теперь ещё и снабдить подсказками), в то время, как верхние половинки работали бы по умолчанию!
Я натыкался когда-то на нестабильность работы кнопки (F6 Перемещение) при нажатии левой кнопки мыши с модификатором, но не докопался до причины. Просто закомментировал строку в autorun.cfg до лучших времён. Но там ещё вмешался и мой ляп – пытался использовать в качестве модификатора клавишу Win, которая допустима в SetHotkeyAction, но не в ControlSetMouseAction.
Orion9 wrote: | Нужна последняя версия библиотеки |
"Слонёнка"-то на 131 странице я и не приметил!
Теперь задваивать файл Title.ahk нет необходимости. Спасибо! |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Loopback
Joined: 07 Sep 2009 Posts: 1367
|
(Separately) Posted: Wed May 15, 2024 16:09 Post subject: |
|
|
Orion9 wrote: | По-сути, можно повесить полезные менюшки повсюду "где хошь", например на той же F3 |
Собственно, с этого всё и начиналось, для этого в первую очередь и делалось. Это уже потом разрослось до универсального решения.
sa wrote: | Эх, какая фича-то, оказывается была: на нижние половинки функциональных кнопок можно было свои команды навесить |
Ну, фича-то сомнительная, попадать в нужную половину кнопки вслепую Да и работало только при скрытой командной строке. Но и так достаточно вариантов остаётся - средняя и правая кнопки + модификаторы. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
sa
Joined: 29 Apr 2009 Posts: 2610
|
(Separately) Posted: Wed May 15, 2024 16:25 Post subject: |
|
|
Loopback wrote: | Ну, фича-то сомнительная, попадать в нужную половину кнопки вслепую |
Теперь же подсказка есть.
Да я не серьёзно! ![Smile](images/smiles/icon_smile.gif) |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Orion9
![](images/avatars/209030162965b6083922138.jpg)
Joined: 01 Jan 2024 Posts: 352
|
(Separately) Posted: Wed May 15, 2024 20:43 Post subject: |
|
|
yozhik
Quote: | Но мне бы хотелось совсем убрать жирный текст, как это сделать? А то я в этом деле совсем не разбираюсь, AkelPad юзаю "как-есть" с их сайта, так и не нашел время в нем поковыряться.) |
Таки пришлось поковыряться. Жирный и курсив там отключается легко, а вот сделать, чтобы можно было переключаться между двумя подсветками на одном .aucfg файле, как оказалось, не так уж. Отличия от авторского варианта у вас безусловно есть, и мне синий цвет определения функций даже больше заходит, т.ч. будем пользоваться и хранить обе подсветки.)
Loopback wrote: | Собственно, с этого всё и начиналось, для этого в первую очередь и делалось. Это уже потом разрослось до универсального решения. |
Настолько универсального, что пора Гислеру делать отдельную команду для связи с плагином Autorun, чтобы не задействовать сторонние средства, типа TCFS2 в качестве триггера для зарегистрированных функций.) |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
|
|
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
|