Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Autorun
Goto page Previous  1, 2, 3 ... 109, 110, 111 ... 130, 131, 132  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Mon May 18, 2020 14:43    Post subject: Reply with quote

Flasher wrote:
Вот бы ещё для безмышиного вызова такое.

В смысле? Экзешник отдельный?

Flasher wrote:
P.S.: Шапку потом будешь править?

На неделе поправлю, некогда еще было.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon May 18, 2020 14:47    Post subject: Reply with quote

Loopback wrote:
В смысле? Экзешник отдельный?
Ну, как вариант, если чисто клавишный для плагина отпадает. Типа TcMenuPopup посл. редакции с опциями размещения по центу и под перекрестием разделителя с верхними углами файловых панелей.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Mon May 18, 2020 15:08    Post subject: Reply with quote

Flasher
Ладно, как-нибудь можно будет подумать. У каждого подхода свои проблемы в реализации, неизвестно что проще.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon May 18, 2020 15:20    Post subject: Reply with quote

Loopback
Хорошо. Если будет утилита, то публикацию, как понимаю, стоит ожидать в отдельном топике.

Вижу косяк. После вызова меню не работает навигация стрелками и его скрытие по Esc.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Mon May 18, 2020 16:48    Post subject: Reply with quote

Flasher wrote:
Вижу косяк.

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

Перезалил по той же ссылке.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon May 18, 2020 16:59    Post subject: Reply with quote

Loopback wrote:
учитывая что меню сейчас вызывается только мышью.
Почему только? А как же клавишные модификаторы? Wink

Спасибо за фикс.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Sat May 30, 2020 23:57    Post subject: Reply with quote

В общем, поскольку проблем вроде больше не возникло, плагин ушел в релиз.

2.1.1
- небольшие исправления в документации
* чистки в коде
+ Tweaks: ShowPopupMenu может отображать значки в меню
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun May 31, 2020 00:38    Post subject: Reply with quote

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

По справкам:
Страница GetSystemMetrics опустела.
В англ. справке примеры для ModifyDialogs так и не поправил. Там же к неисправленным знакам вопроса добавилась страница ControlSetMouseAction в моих примерах.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
yozhik



Joined: 04 May 2014
Posts: 178

Post (Separately) Posted: Sun May 31, 2020 03:33    Post subject: Reply with quote

А как по кнопке на тулбаре попасть, чтобы на неё менюшку повесить? Вижу класс TButtonBar, а как внутри него до кнопки добраться не понимаю. Вот так на всех кнопках одна и та же менюшка получается:
Code:
ControlSetMouseAction /L:U /C:TButtonBar 1 ShowPopupMenu %COMMANDER_PATH%\Profile\tools\MenuPopup\TCMenuSystem.mnu
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun May 31, 2020 03:46    Post subject: Reply with quote

yozhik
Никак. Кнопки рисованые и не имеют отдельных оконных идентификаторов и классов.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Sun May 31, 2020 11:23    Post subject: Reply with quote

Flasher wrote:
Страница GetSystemMetrics опустела.

Точно. Интернет вчера отвратительно работал, страничка недогрузилась. Перезалил архив, версию не поднимал.
Flasher wrote:
В англ. справке

Да, надо бы это сразу править, потом забывается...
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun May 31, 2020 17:11    Post subject: Reply with quote

Loopback wrote:
Да, надо бы это сразу править
Так и? См. выделения в цитате из второй половины сообщения в ЛС от 25 апр. 15:36. Плюс:
Quote:
# Shift+??? anywhere = switch to main toolbar,
Остальное, вроде, починил.

Add: исправления вижу, теперь ОК.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Sun May 31, 2020 20:53    Post subject: Reply with quote

Новая версия. Даже не знаю - бета это или альфа... Самые глобальные изменения за последние семь лет Very Happy Пока называю 2.2.x, но вероятнее всего, это будет 2.5 или 3.0.

Список изменений:

Унифицированы интерфейсы команд - внутренних и экспортируемых из плагинов (внутреннее изменение, оптимизация)
Парсер переписан с нуля, с учетом сохранения совместимости
Соответственно, переписаны условия If..Else..Endif, добавлена возможность однострочного If .. Then
Добавлены циклы For и While
Code:
    For var = 1 To 5 [Step x]
    ...
    Next

    While var > 0
    ...
    Wend

Ключевые слова для управления выполнением (break, continue, return)
Добавлены пользовательские функции
Code:
    Func FuncName([ByRef] var1, var2, var3 = 1)
    ...
    EndFunc

Переменные в функциях локальны
Добавлено присваивание переменной
Code:
    var = expression

Поддержка разделения на строки с символом "_" в конце
Code:
    var = expression_1 + _
          expression_2 - _
          expression_N

Поддержка загрузки подключаемых файлов (includes)
Code:
    Pragma Include "path_to_include" (алгоритм аналогичен LoadLibrary, но работают только переменные окружения)

В подключаемых файлах можно использовать Pragma IncludeOnce
В выражениях можно использовать переменные без %%


В целом, совместимость со старыми скриптами сохраняется. Если команда/функция находится в начале строки (без присваивания), то Autorun их различает по наличию "(" после имени. Если вдруг понадобится запустить "старую" команду, где первый символ после имени должен быть скобкой, ее можно просто взять в кавычки.
Code:
MsgBox 123 Title - OK
MsgBox("123", "Title") - OK

А вот в присваивании в правой части писать команды "старым" методом нельзя.
Code:
ex = FileExist "c:\Total\NoClose.exe" - работать не будет
ex = FileExist("c:\Total\NoClose.exe") - ОК


Синтаксис %"expression" используется только в параметрах команд старого типа.

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

- Убрана команда AutorunBlockUnload(YES), которая оставалась с древних времен для совместимости, оставлена только Pragma AutorunBlockUnload.
- Убран старый синтаксис FileExists в условиях, можно легко переписать FileExists "file" -> FileExists("file") (имя должно быть в кавычках). Реально, тут было слишком много лишнего кривого кода ради одной функции.
- Убрана директива AutorunAllowWriteEnv, я ее и раньше считал невразумительным костылем, а в новом коде она вообще нормально не ложится.
- Еще не убрана, но есть желание убрать директиву AutorunLoadInSubrocess, все же сомневаюсь, что кому-то может понадобиться загружать Autorun повторно в процессе, например, поиска. А сейчас, с учетом подключаемых файлов, поиск этой директивы может быть уже не так безболезнен как раньше.

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

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

Справка еще не обновлялась, поэтому достаточно подробно расписал пока здесь, возможно, что-то еще будет меняться. У тех, кто знаком с Autoit, проблем с синтаксисом не будет Smile

Flasher wrote:
Так и?

Правил-правил, в итоге скопировал старый вариант Smile Обновил, последний раз, если что осталось - потом.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun May 31, 2020 22:31    Post subject: Reply with quote

Loopback
Быстро же ты синтаксис в приоритет над последними хотелками вывел. Smile

Loopback wrote:
добавлена возможность однострочного If .. Then
Наконец-то! А сделать, чтобы такая запись заработала в качестве параметра ControlSetMouseAction, можно?

Loopback wrote:
Добавлены пользовательские функции
А вызывать их как? Через Call, со скобками, без? Интерактивно (ControlSetMouseAction) можно?
Loopback wrote:
Переменные в функциях локальны
А если они объявлены до вызова?

Loopback wrote:
Поддержка загрузки подключаемых файлов (includes)
Имеется в виду скриптов с синтаксисом autorun?

Loopback wrote:
В целом, совместимость со старыми скриптами сохраняется.
Это очень хорошо. Smile

Loopback wrote:
есть желание убрать директиву AutorunLoadInSubrocess
Нисколько не против.

Loopback wrote:
Наверно, придется немного переделать.
А тут только и остаётся добавить флаг в качестве последнего параметра.

Loopback wrote:
Обновил, последний раз
См. добавку в пред. посте.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Mon Jun 01, 2020 01:15    Post subject: Reply with quote

Flasher wrote:
Быстро же ты синтаксис в приоритет над последними хотелками вывел.

А чего тянуть-то? Wink

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

Flasher wrote:
Наконец-то! А сделать, чтобы такая запись заработала в качестве параметра ControlSetMouseAction, можно?

А вызывать их как? Через Call, со скобками, без? Интерактивно (ControlSetMouseAction) можно?

Напрямую в качестве параметра нет, но можно вызывать функцию с нужными If-ами и прочим. Вызов по имени точно такой же, как у любой другой команды. Можно без скобок командой (если не нужно возвращаемое значение), можно со скобками:
Code:

    FuncName 123 "asdf"   - OK
    FuncName(123, "asdf")  - OK
    ControlSetMouseAction ... FuncName 123 zxcv - OK

    Func FuncName(var1, var2)
    ...
    EndFunc


Flasher wrote:
А если они объявлены до вызова?

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

Flasher wrote:
Имеется в виду скриптов с синтаксисом autorun?

Конечно. Не знаю пока, насколько это будет востребовано именно в качестве библиотеки, но лично мне давно было нужно иметь возможность вынести основной конфиг из каталога плагина в заданное место. Даже думал дополнительный инишник делать, но так явно лучше.
Flasher wrote:
Это очень хорошо

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

Flasher wrote:
А тут только и остаётся добавить флаг в качестве последнего параметра.

Да, так и планировалось.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 109, 110, 111 ... 130, 131, 132  Next
Page 110 of 132

 
Jump to:  
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