[WFX] VirtualPanel - временная панель для ТК (Unicode)

Обсуждение только плагинов и утилит для Total Commander.

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

GGS
Сообщения: 322
Зарегистрирован: Сб май 02, 2009 13:00

Сообщение GGS »

MVV
Когда я использую AskParam.exe совместно с VPBatch.exe, возможно отключить окно сообщения VPBatch.exe?
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

GGS писал(а):MVV
Когда я использую AskParam.exe совместно с VPBatch.exe, возможно отключить окно сообщения VPBatch.exe?
Это не окно VPBatch, это вопрос, прописанный в скрипте командой ifok. Просто отредактируй скрипт, и всё. Например, так:

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

AskParam.exe /c"Добавление ссылки" /t"%%${}Path%%"%N /p"Добавить "%N" как:" VPBatch.exe ^exec { ^add /r "%%1" %P%N }
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

В первой публичной бете ТК 7.55 замечено устранение некоторых недочетов в работе с временными панелями, в частности, глюк при переключении наборов колонок через контекстное меню заголовков табуляторов. Помимо этого, новый ТК позволяет выполнять операции копирования/перемещения файлов между виртуальной и физической файловой системой в фоновом потоке, позволяя параллельно выполнять другие операции с временной панелью. Я не мог обойти эту возможность в VP.

VirtualPanel 1.0.0.580 (изменения после 1.0.0.560): 8)
+ многопоточный доступ к виртуальной системе
+ команда <move
+ команда <for позволяет вставлять только имя файла вместо %~<symbol>
+ возможность отменить прерывание операции (внутренняя проверка удержания Esc вместо учета флага прерывания ТК)
* переход по Shift+Enter к папке файла, а не к самому файлу (после 1.0.0.550)
* Shift+Enter в ТК 7.55 не обрабатывался из-за более высокого приоритета внутреннего выполнения
* ошибка обработки параметров команды <for
* некорректная интерпретация ".." в путях
* убраны запросы в командах <save и <export после <silent
* некоторые другие исправления

Помимо всего прочего, добавлен шизофренический скрипт, позволяющий перемещать структуру папок в другое место, выполняя слияние её содержимого с уже существующими папками (собственно, ради этого пришлось расширить функциональность команды <for - но нововведение не будет лишним). :D
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

1) Допустим, есть скрипт >abc, и я выполняю команду

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

<add >abc ...
Что происходит? По моим наблюдениям, ничего. Приходится сначала стирать старый скрипт и только потом выполнять команду. А здорово бы было, если бы он традиционно спрашивал: типа такой уже есть, заменить/нет/переименовать?
2) Соорудил два скрипта (может, кому пригодится). Скрипт удаляет в текущей и ниже файлы с заданной маской, кроме скриптов и хомяка (index.*)

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

<add \>MaskDelKeepIndex { <for %%f . "%1" { <ifcond { !script && !like "index.*" @ %%f } { <del "%%f" } } <for /d! %%d . * { <cd "%%d" <exec \>MaskDelKeepIndex "%1" } }
То же, но без маски (все файлы):

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

<add \>FileDelKeepIndex { <for %%f . * { <ifcond { !script && !like "index.*" @ %%f } { <del "%%f" } } <for /d! %%d . * { <cd "%%d" <exec \>FileDelKeepIndex } }
3) За VPBatch.exe спасибо. Собственно, ты выполнил мое предложение.
Теперь эпитет "монстр" в отношении Virtual Panel - это просто уменьшитеьно-ласкательное...
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

1) Внутренние команды не обязаны выполнять все пожелания:) Почему бы тебе не написать себе такой вариант скрипта >add, который удовлетворил бы все твои запросы, и пользоваться им вместо команды <add (благо, проверять существование файла и спрашивать у юзера возможность имеется)? Кстати, команда <add раньше заменяла существующие объекты, но это было не всегда безопасно, т.к. при замене папки файлом все содержимое папки уничтожалось. Поэтому с версии 1.0.0.560 по умолчанию команда <add не заменяет объекты, а заменяет их только при указании флага /f.


2) Лучше вместо строчки

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

<exec \>MaskDelKeepIndex "%1"
написать

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

<exec "%0" "%1"
- будет работать независимо от расположения и имени файла скрипта.
Кстати, можно добавить проверку на наличие параметра-маски и, если он не задан, запускать себя же, передав в качестве маски звездочку. :) Кстати, без команды <cd тоже можно обойтись. :)
В конечном итоге скрипт может принять следующий вид:

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

<add /f \>MaskDelKeepIndex { <ifdef "%2" { <for %%f "%1" "%2" { <ifcond { !script && !like "index.*" @ %%f } { <del "%%f" } } <for /d! %%d "%1" "*" { <exec "%0" "%%d" "%2" } } { <ifdef "%1" { <exec "%0" "%1" "*" } { <exec "%0" "." "*" } } }
Кстати, удобно вначале писать скрипт, указывая каждую команду на новой строке, с увеличенной табуляцией вложенных блоков:

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

<add /f \>MaskDelKeepIndex {
	<ifdef "%2" {
		<for %%f "%1" "%2" {
			<ifcond { !script && !like "index.*" @ %%f } { <del "%%f" }
		}
		<for /d! %%d "%1" "*" { <exec "%0" "%%d" "%2" }
	}
	{
		<ifdef "%1" { <exec "%0" "%1" "*" } { <exec "%0" "." "*" }
	}
}
(лишние разрывы строк и табуляции потом можно удалить regex-заменой "(\r\n|\t)+" на пробел или несколько пробелов)

3) Я сам довольный, что теперь можно вызывать внутренние команды с кнопочек панели инструментов. :)
Еще была мысль написать нечто вроде браузера виртуальной системы с поддержкой перетаскивания отдельно от виртуальной панели, чтобы не засорять её, но не знаю, как обращаться к ней - хотя, если это будет отдельный плагин ТК, то в принципе будет возможно передать ему указатель на экземпляр виртуальной системы и использовать его из нескольких потоков (благо, сейчас сам экземпляр имеет свою критическую секцию для многопоточного доступа). :wink:
Последний раз редактировалось MVV Вт мар 30, 2010 14:51, всего редактировалось 2 раза.
GGS
Сообщения: 322
Зарегистрирован: Сб май 02, 2009 13:00

Сообщение GGS »

MVV
Кто-то в связке AskParam.exe/VPBatch.exe не поддерживает Unicode, возникает подмена имени, например Español.txt на Espanol.txt.
Возможно это исправить?
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

AskParam не поддерживает Юникод, когда я ее писал, в этом не было необходимости, а мне пока все-таки char* писать привычнее, чем wchar_t*. В принципе, могу переделать.

Заметил, что в 1.0.0.580 в команде <for параметры обрабатываются неверно - путь и маска поменялись местами. Поэтому до исправления (следующий релиз) можно использовать следующий трюк (он же будет работать и после исправления - надеюсь, это очевидно не только мне :)):

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

<for %f "<путь>\<маска>" "" {}
Видимо, придется писать для редактора схему подсветки, чтобы удобнее было править скрипты. :D
Кстати, команды можно писать короче, они идентифицируются по 3-4 буквам (например, move, ifcond, properties и т.п. - но это пока имена не пересекаются). :roll:


По просьбам трудящихся обновленная Юникод-версия AskParam (больше не знаю, куда выложить, так что тут).


VirtualPanel 1.0.0.590: :roll:
* неправильный порядок параметров команды for
* ошибка установки даты/времени файлов скриптов
* некоторые оптимизации
GGS
Сообщения: 322
Зарегистрирован: Сб май 02, 2009 13:00

Сообщение GGS »

MVV писал(а):обновленная Юникод-версия AskParam
Спасибо, работает. Я всегда в Вас верил.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

GGS писал(а):
MVV писал(а):обновленная Юникод-версия AskParam
Спасибо, работает. Я всегда в Вас верил.
Пожалуйста. :D

Кстати, теперь AskParam имеет постоянное место на wincmd.ru.


Интересно, кто какой максимальный файла состояния тестировал. У меня максимальный с где-то 346К объектов весит около 90 МБ (на больше дури не хватило :D), грузится 8 секунд, сохраняется 25 (P4@2200x1, 512 МБ ОЗУ) и ест 130 МБ памяти (разница с пустой панелью). Кстати, заметил, что не сохранение файла, а убийство виртуальной системы занимает большую часть времени.
Внес некоторые изменения в формат пути в файле списка, теперь этот же файл списка весит в полтора раза меньше, правда читабельность немного снизилась (разумеется, поддержка полного формата останется).
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Свершилось. Новый релиз с новыми багами. :D


VirtualPanel 1.0.0.620: 8)
+ сокращенный формат файла состояния
+ флаг 'o' команды save для сохранения файла состояния полного формата
+ безопасное многопоточное перечисление файлов (список файлов формируется за один заход в критическую секцию при вызове FsFindFirst)
+ более быстрое сохранение состояния (файлы подпапок ищутся от дескрипторов папок, а не из корневого каталога)
+ более быстрые загрузка/выгрузка больших состояний (используется boost::fast_pool_allocator как аллокатор для map)
* неправильный порядок параметров команды for
* ошибка установки даты/времени файлов скриптов
* неверная обработка относительных путей для команды put
* ошибка обработки маски для команды export
* некоторые другие исправления и оптимизации


Кстати (не совсем в тему), я доделал AskParam, теперь она позволяет запускать программу с переменными окружения в пути (%COMMANDER_PATH%, например).
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Простенькая панелька-менюшка инструментов для работы с одной виртуальной панелью (путь к VPBatch и AskParam нужно прописать свой):

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

[Buttonbar]
Buttoncount=10
button1=WCMICONS.dll,65
cmd1=%COMMANDER_PATH%\Addons\AskParam.exe
param1=/c"Добавление ссылки на временную панель" /t"%%${}Path%%\"%N /p"Добавить "%N" как:" "%%COMMANDER_PATH%%\Plugins\FileSystem\VirtualPanel\VPBatch.exe" ^add "%%1" %P%N
path1=%COMMANDER_PATH%\Plugins\FileSystem\VirtualPanel\
iconic1=0
menu1=P>V  Добавить объект на временную панель...
button2=WCMICONS.dll,64
cmd2=%COMMANDER_PATH%\Plugins\FileSystem\VirtualPanel\VPBatch.exe
param2=^ifok "Удалить %%${}Path%%\"%S1" из виртуальной панели?" { ^del /rd "%%${}Path%%\"%S1 }
iconic2=0
menu2=V>X  Удалить объект из временной панели
button3=
iconic3=0
button4=WCMICONS.dll,4
cmd4=%COMMANDER_PATH%\Addons\AskParam.exe
param4=/c"Загрузка файла состояния" /t%P%N /p"Укажите путь к файлу состояния:" "%%COMMANDER_PATH%%\Plugins\FileSystem\VirtualPanel\VPBatch.exe" ^load "%%1"
iconic4=0
menu4=P>V  Загрузить файл состояния...
button5=WCMICONS.dll,76
cmd5=%COMMANDER_PATH%\Plugins\FileSystem\VirtualPanel\VPBatch.exe
param5=^ifok "Удалить всё содержимое папки %%${}Path%%?" { ^del /rd "%%${}Path%%\*" }
iconic5=0
menu5=V>X  Очистить текущую папку...
button6=WCMICONS.dll,51
cmd6=%COMMANDER_PATH%\Addons\AskParam.exe
param6=/c"Загрузка файла состояния в папку" /t%P%N /p"Файл состояния для загрузки в %%${}Path%%:" "%%COMMANDER_PATH%%\Plugins\FileSystem\VirtualPanel\VPBatch.exe" ^load "%%1" "%%%%${}Path%%%%"
iconic6=0
menu6=P>V  Загрузить содержимое файла состояния в текущую папку...
button7=
iconic7=0
button8=WCMICONS.dll,50
cmd8=%COMMANDER_PATH%\Addons\AskParam.exe
param8=/c"Экспорт списка имен файлов" /t%P"%O.m3u" /p"Создаваемый список MP3-файлов из %%${}Path%%:" "%%COMMANDER_PATH%%\Plugins\FileSystem\VirtualPanel\VPBatch.exe" ^export /a "%%1" "%%%%${}Path%%%%" *.mp3
menu8=P<V  Создать M3U-список из MP3-файлов текущей виртуальной папки...
button9=
iconic9=0
button10=WCMICONS.dll,34
cmd10=%COMMANDER_PATH%\Plugins\FileSystem\VirtualPanel\VPBatch.exe
param10=^prop
iconic10=0
menu10=Параметры
Первая буква подсказки говорит о том, на какой панели должен быть курсор - на обычной (P) или на виртуальной (V), далее знак < или > указывает направление действия.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

VirtualPanel 1.0.0.640:
+ групповые ответы на вопрос создания ссылок при перемещении в виртуальную папку
* показ свойств в ТК 7.55 не обрабатывался из-за более высокого приоритета операции внутреннего выполнения
* исключение при перемещении из физической папки в виртуальную
* ошибка перезаписи файлов только для чтения

Грандиозные идеи почти иссякли:) нужна помощь:wink:
Аватара пользователя
mrmerak
Сообщения: 441
Зарегистрирован: Пн авг 20, 2007 03:48

Сообщение mrmerak »

MVV писал(а): Грандиозные идеи почти иссякли:) нужна помощь:wink:
Слава Богу.
А теперь я скажу как нормальный пользователь (и думаю, что большинство думают также), который НИКОГДА В ЖИЗНИ не будет пользоваться всеми этими скриптами.

Вы хотите идею? Вот Вам идея с которой нужно было начинать все это дело: нормальное окно настроек.
Сейчас оно для гиков\прогеров\фенов скриптов. А пользователь хочет GUI, а-ля лук-анд-фил.

Например:
Флаги событий для отчета:
0x0
что это такое???
Файл отчета:
%TEMP%\VirtualPanel.log
и что дальше? а простой EditBox в котором можно сразу задать путь слабо влепить?
Максимальный размер:
0
опять-таки нормальную формочку, где я сам впишу цифру жалко?

И так далее по списку...
Вобщем, объяснил думаю доходчиво.
TC 9.51 | Win10 1903
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Mr.Merak писал(а):Слава Богу.
Не нравится мне тон монолога. Не слишком ли резко?
Если нововведения не по душе - пожалуйста, пользуйте старую версию, или не пользуйте вообще. Мысль в чём-то верная, но ее можно было выразить куда более благоприятным для ответного действия образом. Например, "О, раз глобальные идеи закончились, может быть, пришло время сделать подробный диалог настроек?". И дальнейшая беседа проходила бы совсем в другом тоне.
Mr.Merak писал(а):Вот Вам идея с которой нужно было начинать все это дело: нормальное окно настроек.
Я лично предпочитаю нечто нормально работающее, чем бессмысленные диалоги настроек и ноль функциональности. Не вижу необходимости забивать плагин диалогами настроек, в которые пользователь зайдет один раз, настроит и забудет об их существовании. Вам шашечки или ехать? К сожалению, сейчас глобальные тенденции явно не в сторону ехать - сплошь и рядом пустые красивости. Да, диалог настроек не слишком удобен, но это что, единственное, чего вам всем для полного счастья не хватает?

Про файл отчета и максимальный размер лога - тут вообще не извращено, просто прокрутить колесо мыши (лень?) и вписать цифру или путь. И вообще, с учетом наличия VPBatch можно один раз создать кнопку панели инструментов для указания лог-файла, и не нужно входить в диалог вообще.
Последний раз редактировалось MVV Сб апр 03, 2010 21:32, всего редактировалось 1 раз.
Аватара пользователя
mrmerak
Сообщения: 441
Зарегистрирован: Пн авг 20, 2007 03:48

Сообщение mrmerak »

MVV писал(а): Не нравится мне тон монолога.
Изо всех сил старался без мата
MVV писал(а): Если нововведения не по душе - пожалуйста, пользуйте старую версию
вот по-поводу версий, что за странная нумерация? Ненавижу я эти 0.0.0.0.0.0
MVV писал(а): Я лично предпочитаю нечто нормально работающее, чем бессмысленные диалоги настроек
А про нормальное работающее и нормальный диалог слыхали?
"бессмысленные" это какое? градиенты на кнопках? я разве этого прошу? Откройте диалог настроек ТС - бессмысленно?
MVV писал(а): Не вижу необходимости забивать плагин диалогами настроек, в которые пользователь зайдет один раз, настроит и забудет об их существовании
А я и добрая половина юзеров не видет смысла в скриптах
MVV писал(а):сплошь и рядом пустые красивости.
похоже на фобию
Тогда надо было для ФАРа писать плаг... а, ну да там же уже есть такой. Может тогда cmd.exe - и не париться?
MVV писал(а): VPBatch можно один раз создать кнопку панели инструментов для указания лог-файла, и не нужно входить в диалог вобще.
Exec.exe, VPBatch.exe - имхо, вообще бред. Вспомогательные какие-то программы - а зачем они и как их использовать НАТЬ-НЕ-НАДО
TC 9.51 | Win10 1903
Ответить