Autorun
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3 ... 109, 110, 111 ... 133, 134, 135  Next  :| |:
Total Commander -> Плагины Total Commander

#1636:  Author: Loopback PostPosted: Mon May 18, 2020 14:43
    —
Flasher wrote:
Вот бы ещё для безмышиного вызова такое.

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

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

На неделе поправлю, некогда еще было.

#1637:  Author: FlasherLocation: Москва PostPosted: Mon May 18, 2020 14:47
    —
Loopback wrote:
В смысле? Экзешник отдельный?
Ну, как вариант, если чисто клавишный для плагина отпадает. Типа TcMenuPopup посл. редакции с опциями размещения по центу и под перекрестием разделителя с верхними углами файловых панелей.

#1638:  Author: Loopback PostPosted: Mon May 18, 2020 15:08
    —
Flasher
Ладно, как-нибудь можно будет подумать. У каждого подхода свои проблемы в реализации, неизвестно что проще.

#1639:  Author: FlasherLocation: Москва PostPosted: Mon May 18, 2020 15:20
    —
Loopback
Хорошо. Если будет утилита, то публикацию, как понимаю, стоит ожидать в отдельном топике.

Вижу косяк. После вызова меню не работает навигация стрелками и его скрытие по Esc.

#1640:  Author: Loopback PostPosted: Mon May 18, 2020 16:48
    —
Flasher wrote:
Вижу косяк.

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

Перезалил по той же ссылке.

#1641:  Author: FlasherLocation: Москва PostPosted: Mon May 18, 2020 16:59
    —
Loopback wrote:
учитывая что меню сейчас вызывается только мышью.
Почему только? А как же клавишные модификаторы? Wink

Спасибо за фикс.

#1642:  Author: Loopback PostPosted: Sat May 30, 2020 23:57
    —
В общем, поскольку проблем вроде больше не возникло, плагин ушел в релиз.

2.1.1
- небольшие исправления в документации
* чистки в коде
+ Tweaks: ShowPopupMenu может отображать значки в меню

#1643:  Author: FlasherLocation: Москва PostPosted: Sun May 31, 2020 00:38
    —
Loopback
Да не сказать, что сильно тестировал менюшки. До баров даже руки не дошли, тем более с такими ограничениями.

По справкам:
Страница GetSystemMetrics опустела.
В англ. справке примеры для ModifyDialogs так и не поправил. Там же к неисправленным знакам вопроса добавилась страница ControlSetMouseAction в моих примерах.

#1644:  Author: yozhik PostPosted: Sun May 31, 2020 03:33
    —
А как по кнопке на тулбаре попасть, чтобы на неё менюшку повесить? Вижу класс TButtonBar, а как внутри него до кнопки добраться не понимаю. Вот так на всех кнопках одна и та же менюшка получается:
Code:
ControlSetMouseAction /L:U /C:TButtonBar 1 ShowPopupMenu %COMMANDER_PATH%\Profile\tools\MenuPopup\TCMenuSystem.mnu

#1645:  Author: FlasherLocation: Москва PostPosted: Sun May 31, 2020 03:46
    —
yozhik
Никак. Кнопки рисованые и не имеют отдельных оконных идентификаторов и классов.

#1646:  Author: Loopback PostPosted: Sun May 31, 2020 11:23
    —
Flasher wrote:
Страница GetSystemMetrics опустела.

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

Да, надо бы это сразу править, потом забывается...

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

Add: исправления вижу, теперь ОК.

#1648:  Author: Loopback PostPosted: Sun May 31, 2020 20:53
    —
Новая версия. Даже не знаю - бета это или альфа... Самые глобальные изменения за последние семь лет 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 Обновил, последний раз, если что осталось - потом.

#1649:  Author: FlasherLocation: Москва PostPosted: Sun May 31, 2020 22:31
    —
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:
Обновил, последний раз
См. добавку в пред. посте.

#1650:  Author: Loopback PostPosted: Mon Jun 01, 2020 01:15
    —
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:
А тут только и остаётся добавить флаг в качестве последнего параметра.

Да, так и планировалось.



Total Commander -> Плагины Total Commander


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

Goto page Previous  1, 2, 3 ... 109, 110, 111 ... 133, 134, 135  Next  :| |:
Page 110 of 135

Powered by phpBB © 2001, 2005 phpBB Group