Пользовательские команды и кнопки с SAVETABS

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Avada
"Файл не найден!".
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sa
Такое сообщение может выводиться в данном контексте только при попытке запуска команды savetabs либо вообще без параметра. либо с чем-то, что не воспринимается как корректный параметр. Тут надо с путём разбираться. В моём варианте записи проверялось? С простейшим параметром типа c:\my.tab проверялось?
Даже самая богатая фантазия
Не представит себе наши безобразия.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Avada писал(а):c:\my.tab
Не помогает.

P.S. Позже попробую кнопку на Win 7.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sa
Тогда я пас, больше идей не имею. Ну ещё для порядка версию и битность системы и TC уточнить надо, пожалуй.
Даже самая богатая фантазия
Не представит себе наши безобразия.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Поведение одинаковое в TC 9.0b9, что на XP, что на Win 7(32).
Пробовал ещё кнопку

Код: Выделить всё

TOTALCMD#BAR#DATA
em_SEL *.txt

wcmicons.dll,39
Выделить TXT-файлы


-1
с пользовательской командой

Код: Выделить всё

[em_SEL]
cmd=SELECTFILES
param=%A
Тоже не работает. При вызове из командной строки файлы выделяются. В TC 8.52a поведение для последней команды аналогичное.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):-del-
Не понял, у самого-то обсуждавшиеся здесь кнопки (для em-команд с %A в параметрах) работают?
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sa
Приведённые выше коды кнопки/команды для выделения файлов, во-первых, не специфичны для TC 9, во-вторых, являют собой пример неправильного синтаксиса. Никакой маски в качестве параметра к имени em-команды, которая сама вызывает "пустую" параметризованную команду, в кнопке добавляться не может. При нормальном указании той же маски в самой юзер-команде как параметра команды SELECTFILES кнопка, разумеется, прекрасно работает. Предлагаю далее обсуждать здесь только команду SAVETABS, не отвлекаясь на посторонние вещи.
Впрочем, один момент этот пример позволил прояснить. Я первоначально за недосугом не отреагировал на второй из приведённых здесь примеров. А там ровно тот же глюк: попытка использовать em-команду с несвойственным для кнопки синтаксисом. Потому и не работает.

Также я убедительно прошу любого, кто желает ссылаться на параметр %A, либо убедительно обосновать, наконец, его необходимость и применимость в данном конкретном случае — для кнопки, опосредованно запускающей команду с параметрами (вариант "кто-то когда-то написал, а я повторяю" аргументом не является), либо прекратить его упоминание как существенного условия воспроизведения проблемы. Дабы не вносить дополнительную путаницу в и без того не особо ясный вопрос.

Желающих продолжать выяснение повторно адресую к своему посту. Создаём em-команду с произвольным именем на основе указанной команды с параметрами (с поправками на пути). Проверяем работу этой юзер-команды из командной строки TC. Затем создаём кнопку, где в поле "Команда" указано только имя новой юзер-команды, а в поле "Параметры" — ничего, и проверяем ещё раз. Без всякой отсебятины, ровно так, как написано.

Кроме того, поскольку обсуждение работы команд и кнопок с SAVETABS приобрело самодостаточный характер и уже никак не связано со cпецификой TC 9.0 beta 9, оно выносится в самостоятельную тему.
Даже самая богатая фантазия
Не представит себе наши безобразия.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Avada писал(а):являют собой пример неправильного синтаксиса
Я с этого и начинал:
em_SaveTabs с параметром, по-моему, из кнопки вызвать невозможно, разве из командной строки.
после чего на мой уточняющий вопрос
второй код кнопки с вызовом приведённой ранее команды em_SaveTabs – работающий (при отсутствии кавычек)?
получил вполне однозначный ответ
Да, код работающий. А почему у кого-то возникла проблема, понятия не имею.
После чего и продолжилось выяснение…
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sa
Значит, второпях я понял вопрос не совсем верно. Ранее данный ответ про "работающий код" конкретной записи аннулируется. Так что мы имеем теперь, с учётом сделанных поправок?
Даже самая богатая фантазия
Не представит себе наши безобразия.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Avada
По-прежнему не ясно, почему у Skif_off не работает и первый код кнопки (со снятыми кавычками). Вариант, что папка Tabs не существует, маловероятен…
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sa
Я правильно понимаю, что реально не закрыта только проблема с его неработающим без кавычек первым кодом? (Который при этом ничем принципиально не отличается от работающего моего.) Или ещё что-то осталось неясным? Вроде бы нет...
Даже самая богатая фантазия
Не представит себе наши безобразия.
Skif_off
Сообщения: 1255
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Добрался попробовать, кнопки на панели инструментов:
[cut="кнопка 1"]

Код: Выделить всё

TOTALCMD#BAR#DATA
savetabs %COMMANDER_PATH%\Tabs\2.tab

wcmicons.dll



-1
[/cut]
[cut="кнопка 2"]

Код: Выделить всё

TOTALCMD#BAR#DATA
em_SaveTabs

wcmicons.dll


0
10000
в usercmd.ini

Код: Выделить всё

[em_SaveTabs]
cmd=savetabs
param=%COMMANDER_PATH%\Tabs\2.tab
[/cut]
[cut="кнопка 3"]

Код: Выделить всё

TOTALCMD#BAR#DATA
em_SaveTabs %COMMANDER_PATH%\Tabs\2.tab

wcmicons.dll


0
10000
в usercmd.ini

Код: Выделить всё

[em_SaveTabs]
cmd=savetabs
[/cut]
1 и 2 работают, 3 - не работает. И я не понимаю логику.

При этом с WM_COPYDATA команда, аналогичная кнопке 3:

Код: Выделить всё

em_SaveTabs %COMMANDER_PATH%\Tabs\2.tab
работает (точнее - работает только если путь абсолютный).

И это, похоже, не баг, т.к. с opentabs и appendtabs всё вроде аналогично (и на 8.52а).
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Skif_off
Третья кнопка и не должна работать. Логика проста, объясняю ещё раз. С одной стороны, пользовательская команда не воспринимает параметры, а её пытаются заставить сделать именно это вместо указания параметров в её собственных настройках. С другой стороны, opentabs и appendtabs можно запустить вообще без параметров, а savetabs — нет. Запуск команды без параметра невозможен, а параметр указан не там, где следует, отсюда и результат.
По каким правилам работают команды с WM_COPYDATA, я — в силу недостаточной квалификации — обсуждать не берусь.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Skif_off
Сообщения: 1255
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Avada
Логика простая, согласен, понял, принял :) Но получается с некоторым изъяном: команда принимает параметр, тогда какая разница, каким из штатных способов этот параметр ей передан?
К тому же, с WM_COPYDATA работает как раз третий вариант.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Skif_off
А это штатный способ передачи параметра данному типу команд?
Поставим на минуточку вопрос шире. Имеется пользовательская команда, созданная — в общем виде — на основе чего угодно (встроенной команды, команды с параметрами, другой пользовательской команды, цепочки команд разного вида, внешней программы с параметрами и без, скрипта/батника и пр.) Вправе ли мы ожидать от такой произвольной юзер-команды подхвата параметров, указанных не в ней самой, а уже в кнопке, в поле "Команда"?
Далее, возможно ли взаимодействие упоминавшегося выше стандартного параметра %A с записанными в юзер-командах параметризованными командами? Это тоже интересный вопрос, требующий выяснения.
И, разумеется, документированность работы в TC с WM_COPYDATA пока оставляет желать много лучшего.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Ответить