View previous topic :: View next topic |
Author |
Message |
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Jan 05, 2017 10:07 Post subject: Снятие выделения по Esc |
|
|
При использование быстрой фильтрации [ Настройка: Быстрый поиск > Буква (с диалогом поиска) ] стандартное назначение на Esc комадны cm_ClearAll не даёт возможность вернуться к нефильтрованному списку, как это происходит по умолчанию. Задавался ранее этим вопросом здесь (п. 5) и здесь.
Поскольку запрошенная реализация в Twinkey меня не устраивает, набросал скрипт: Code: | ;••••••••••••••••••••••••••••••• AHK ••••••••••••••••••••••••••••••••
; Снятие/восстановление выделения с объектов в активной панели по Esc
; Условие: TC 9.0+. Запускать желательно контентным плагином Autorun.
;••••••••••••••••••••••••••••••••••••••••••••••• Автор: Flasher © •••
#NoEnv
#NoTrayIcon
ListLines, Off
#KeyHistory, 0
SetBatchLines,-1
#SingleInstance, Off
DetectHiddenWindows, On
If DupComplete() || RegExMatch(StrGet(DllCall("GetCommandLine",Ptr)), "i)\s/(restart|r|force|f)\s")
ExitApp
DupComplete()
{ WinGet, List, List, % A_ScriptFullPath " ahk_class AutoHotkey"
Loop % List
If WinExist("ahk_id" List%A_Index%) != A_ScriptHwnd && R := true
WinClose
Return R
}
WinWaitClose, ahk_class TTOTAL_CMD
ExitApp
#IfWinActive, ahk_class TTOTAL_CMD
$Esc::
ControlGetFocus, Class, A
If !InStr(Class, "TMyListBox") || WinExist("ahk_class #32768") || MainMenuFocus()
SendInput, {Esc}
Else
{ N := SubStr(Class, 0) = 2 ? 1 : 0
SendMessage, 1074, % 1006-N, 0,, A
Sel := % ErrorLevel
SendMessage, 1074, % 8 - N, 0,, A
ControlGetPos, x, y, w, h,, ahk_id %ErrorLevel%
PixelSearch,,, % x+w-5, % y, % x+w, % y+h/2, 0x333333,, Fast
If ErrorLevel
PostMessage, 0x433, 52 (Sel?4:9),,, A
Else
SendInPut, {Esc}
}
MainMenuFocus()
{ VarSetCapacity(MBI, size := 16 + A_PtrSize*4, 0)
NumPut(size, MBI)
DllCall("GetMenuBarInfo", Ptr, WinExist("A"), Int, 0xFFFFFFFD, Int, 0, Ptr, &MBI)
Return *(&MBI + 16 + A_PtrSize*3) & 1
} |
При повтроном вызове скрипта AHK-процесс самозавершается, тем самым давая возможность использовать его как инверсную команду-опцию (Вкл/Выкл).
При отсутствии экземляров TC процесс завершается. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Sat Jan 14, 2017 11:39; edited 8 times in total |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10275 Location: Россия, Саратов
|
(Separately) Posted: Thu Jan 05, 2017 11:17 Post subject: |
|
|
Flasher
Если упоминается не устраивающий тебя алгоритм TWinKey, наверное, есть смысл привести и устраивающий тебя алгоритм, реализуемый скриптом. В том числе чтобы ни у кого не было не было надобности вникать во все нюансы достаточно длинного обсуждения в теме по TWinKey. Кстати, и пояснение насчёт условия с 9.0+ тут было бы уместым. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Jan 05, 2017 11:29 Post subject: |
|
|
Avada
Алгоритм самый обычный, не нарушающий стандартное поведение в ТС.
Выделение снимается только не в режиме быстрой фильтрации.
Что именно нужно пояснять в отношении 9.0+? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10275 Location: Россия, Саратов
|
(Separately) Posted: Thu Jan 05, 2017 11:58 Post subject: |
|
|
Flasher
Стандартное поведение TC не предполагает снятие выделения по Esc ни до, ни после снятия фильтра, так что любой дополнительный алгоритм обработки этой клавиши обычным не будет. Это тебе всё понятно, а читающим, возможно, и нет. От более подробного расписывания того, что происходит при очередном нажатии клавиши как в условиях быстрой фильтрации, так и после закрытия фильтра, была бы только польза. Разумеется, не в шапке скрипта, а в посте, как дополнительное пояснение.
А насчёт пояснения про 9.0+ напоминаю, что в своё время нынешний (а не обратный) алгоритм обработки Esc в TWinKey при быстрой фильтрации был принят из-за невозможности обнаружить со стороны плагина этот режим. Если в новациях девятки что-то позволяет ограничение обойти, надо бы это указать явно. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Jan 05, 2017 12:24 Post subject: |
|
|
Avada
Стандатное - это не обязательно то, которое предполагает чистый ТС без доп. настроек, а то, которое не нарушает работу этой клавиши в имеющихся условиях. Т.к. в нефильтрованном быстрым поиском режиме никаких назначений по умолчанию нет, то нет и нарушения, как и в случае любого другого хоткея, не занятого самим ТС.
Насчёт новаций мимо. Вариант определения я предлагал в ветке TwinKey. Невозможность и нежелание автора пользоваться таким методом - разные вещи. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10275 Location: Россия, Саратов
|
(Separately) Posted: Thu Jan 05, 2017 12:46 Post subject: |
|
|
Flasher
Говоря коротко, мои предложения у тебя поддержки не получили. Что ж, дело хозяйское. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Jan 05, 2017 13:11 Post subject: |
|
|
Avada
Предложение добавить небольшое пояснение в первый пост я не отклоняю. Тут ещё с AutoRun ситуация, так что пока откладывается.
А ты бы лучше проверил работу при отключённых "аналогах". _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10275 Location: Россия, Саратов
|
(Separately) Posted: Thu Jan 05, 2017 13:33 Post subject: |
|
|
Flasher
Проверил. Да, работает. Но, запустивши скрипт, потом этот режим выделения, если захочется, отключить оказывается не так-то просто. А при использовании TWinKey при такой последовательности действий приходится ещё и файловые группы отключать, иначе при снятии фильтра выделено окажется совсем не то, что следует. К тому же я привык, что по Esc можно и восстанавливать выделение. Так что ничего против не имею, но эта методика, скорее всего, не для меня. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Jan 05, 2017 14:09 Post subject: |
|
|
Avada wrote: | Но, запустивши скрипт, потом этот режим выделения, если захочется, отключить оказывается не так-то просто. | Что ты имеешь в виду?
Avada wrote: | А при использовании TWinKey при такой последовательности действий приходится ещё и файловые группы отключать, иначе при снятии фильтра выделено окажется совсем не то, что следует. | Снятие фильтра здесь - это тот же Esc, что и в ТС по умолчанию. Если TwinKey с ним себя ведёт неоднозначно, то считай, что это его баг.
Avada wrote: | К тому же я привык, что по Esc можно и восстанавливать выделение. | Я давно уже отвык, т.к. ранее заменял на упрощённый вариант, отключив опцию, надоел костыль с двух/трёхкратным нажатием. Впрочем, восстановление добавить не проблема, если мой вариант станет более приемлем. Ты, полагаю, сам видел в обсуждении, как много я писал о том, чтобы добиться более качественного поведения.
И да. А в чём плюс восстановления выделения? Да в том, что выделенные объекты можно увидеть без фильтрации (т.е. с уже иным расположением). В моём же случае это уже есть, так как выделение не сбрасывается в момент сроса фильтрации. По мне это ещё удобней. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10275 Location: Россия, Саратов
|
(Separately) Posted: Thu Jan 05, 2017 14:28 Post subject: |
|
|
Flasher wrote: | Что ты имеешь в виду? |
Активный неубитый процесс, естественно. То ли AHK закрывать приходится, то ли скомпилированный экзешник, смотря по тому, в каком виде скрипт использовать.
Flasher wrote: | Снятие фильтра здесь - это тот же Esc, что и в ТС по умолчанию. Если TwinKey с ним себя ведёт неоднозначно, то считай, что это его баг. |
А вот это я специально проверял. Если выделение по ESC в TWinKey не включено и скрипт не используется, то выделение, сделанное в режиме фильтрации, нормально сохраняется при включённой групповой сортировке и при стандартном выходе из фильтрации. А при выходе со скриптом, мягко говоря, есть проблемы.
Flasher wrote: | Впрочем, восстановление добавить не проблема, если мой вариант станет более приемлем. Ты, полагаю, сам видел в обсуждении, как много я писал о том, чтобы добиться долее качественного поведения. |
Да, видел. А если можно добавить восстановление выделения (пусть и опционально) — попробуй. Но, скажем, отключать групповую сортировку я не намерен, а с ней в нынешнем виде сохранение выделения вне фильтрации просто теряет смысл. Мне лучше жать два/три раза, чем наблюдать вот это.
А плюс восстановления выделения по ESC в том, что эта методика применяется далеко не только при выходе из режима фильтрации.
И почему всё-таки только девятка, а не более ранние версии TC? _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Jan 05, 2017 15:27 Post subject: |
|
|
Avada wrote: | Активный неубитый процесс, естественно. То ли AHK закрывать приходится, то ли скомпилированный экзешник, смотря по тому, в каком виде скрипт использовать. | А, ну я их убиваю через Autorun (пример снизу). Можно, конечно, любой хоткей на закрытие прописать, например, 3 сек. удержание Esc. Или сделать, чтобы завершался с повторого запуска. Как лучше?
С групповой сортировкой позже попробую разобраться. Пока не проверял.
Avada wrote: | А плюс восстановления выделения по ESC в том, что эта методика применяется далеко не только при выходе из режима фильтрации. | Это понятно, но, ИМХО, в TwinKey оно делалось из указанных мной соображений.
Avada wrote: | И почему всё-таки только девятка, а не более ранние версии TC? | C новыми WM_USER+50 цель достигается куда более коротким путём в отличии от WM_CopyData. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
(Separately) Posted: Thu Jan 05, 2017 15:35 Post subject: |
|
|
Avada wrote: | И почему всё-таки только девятка, а не более ранние версии TC? |
Используются эти фичи. В принципе, их можно заменить, работая непосредственно с окном ТС и ListBox, тогда заработает и с более ранними.
Зачем PixelSearch? И почему только TMyListBox? |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10275 Location: Россия, Саратов
|
(Separately) Posted: Thu Jan 05, 2017 16:48 Post subject: |
|
|
Flasher wrote: | Или сделать, чтобы завершался с повторого запуска. Как лучше? |
Чисто теоретически мне кажется удобнее повторный запуск.
Flasher wrote: | но, ИМХО, в TwinKey оно делалось из указанных мной соображений. |
В том числе, но не только.
Про девятку понял, спасибо. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jan 06, 2017 11:38 Post subject: |
|
|
Avada wrote: | Если выделение по ESC в TWinKey не включено и скрипт не используется, то выделение, сделанное в режиме фильтрации, нормально сохраняется при включённой групповой сортировке и при стандартном выходе из фильтрации. | А что с прикреплёнными объектами? С ними у меня всё время выделение меняется c дефолтным Esc. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10275 Location: Россия, Саратов
|
(Separately) Posted: Fri Jan 06, 2017 11:51 Post subject: |
|
|
Flasher
Да, с этим были и есть вполне предсказуемые проблемы, не только при быстрой фильтрации. Выделение и прикрепление объектов в некоторых моментах не очень дружат. Но при использовании ESC по методике 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
|