[WFX] VirtualPanel - временная панель для ТК (Unicode)
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
MVV
Имею TC с плагином VP на носителе read-only (CD).
Естественно, при выходе из TC получаю сообщение:
---------------------------
Virtual Panel
---------------------------
Ошибка записи файла конфигурации!
K:\TC_Local\fsplugin.ini
Проверьте права доступа к файлу.
---------------------------
Повтор Отмена
---------------------------
Сам TC при этом зависает и выход возможен только через Диспетчер задач.
Можно ли предусмотреть возможность закрытия TC с отменой записи в файл конфигурации VP?
Имею TC с плагином VP на носителе read-only (CD).
Естественно, при выходе из TC получаю сообщение:
---------------------------
Virtual Panel
---------------------------
Ошибка записи файла конфигурации!
K:\TC_Local\fsplugin.ini
Проверьте права доступа к файлу.
---------------------------
Повтор Отмена
---------------------------
Сам TC при этом зависает и выход возможен только через Диспетчер задач.
Можно ли предусмотреть возможность закрытия TC с отменой записи в файл конфигурации VP?
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Несколько вопросов.
1. При нахождении внутри VP выдаю командуиливылезает уже известное мне
диалоговое окно с кучей цифр и вопросом "Continue execution". При отказе и закрытии ТС еще одно сообщение об ошибке памяти.
а) команда правильная? Если да, то почему вызывается ошибка?
б) если нет, то в чем ошибка? И даже если в командной строке ерунда, не следует ли выдать информацию о причине ошибки, а не исключение?
2. Опечатка в английской справке: "Changeы".
1. При нахождении внутри VP выдаю команду
Код: Выделить всё
<add \ c:\Some\path\*.*Код: Выделить всё
<add \ c:\Some\path\а) команда правильная? Если да, то почему вызывается ошибка?
б) если нет, то в чем ошибка? И даже если в командной строке ерунда, не следует ли выдать информацию о причине ошибки, а не исключение?
2. Опечатка в английской справке: "Changeы".
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Хм, вот хрень. Непонятно мне, почему нельзя нажать кнопку диалога сообщения. Подумаю, что можно сделать. Пока рекомендую выгружать модуль командой cm_UnloadPlugins (предварительно закрыв вкладки с VP).GGS писал(а):Сам TC при этом зависает и выход возможен только через Диспетчер задач.
Можно ли предусмотреть возможность закрытия TC с отменой записи в файл конфигурации VP?
Вообще, маску в команде add указывать нельзя (если хочешь добавлять по маске - юзай put). Но самая серьезная ошибка этой команды - ты пытаешься заменить корневой каталог. Первым параметром нужно указывать путь к новому объекту, который ты хочешь создать. А так это приводило к уничтожению корневого каталога.Вахмурка писал(а):а) команда правильная? Если да, то почему вызывается ошибка?Код: Выделить всё
<add \ c:\Some\path\
б) если нет, то в чем ошибка?
It's not intentional.Вахмурка писал(а):И даже если в командной строке ерунда, не следует ли выдать информацию о причине ошибки, а не исключение?
Спасибо, исправил.
Спасибо, но видно уже исправил - не нашел (везде где есть change, оно либо change, либо changes).Вахмурка писал(а):2. Опечатка в английской справке: "Changeы".
Последний раз редактировалось MVV Сб фев 06, 2010 18:20, всего редактировалось 1 раз.
Сделайте так:Вахмурка писал(а):<add \ c:\Some\path\
Код: Выделить всё
<add Folder {c:\Some\path\}В общем, я перенес диалог недоступности конфига для записи в функцию инициализации. И вызывается он только если конфига изначально не существует, а попытка записать в него пустые параметры провалилась. Спасибо за информацию о баге (хотя и странном баге - видать, ТК и модуль друг другу мешали на этапе завершения).
VirtualPanel 1.0.0.400:
+ удаление физических файлов в корзину по умолчанию (напрямую - если зажата клавиша Shift или в ТК включено удаление напрямую)
+ файл состояния VP сохраняется при закрытии ТК только если содержимое VP было изменено
+ команда load теперь может быть запущена без параметров - для загрузки списка по умолчанию
+ команда eas теперь позволяет изменять имя скрипта автообновления
+ флаг /a для команд save/export, позволяющий сохранять в кодировке ANSI
+ новая команда ifcond для проверки атрибутов файла и т.п.
* убран заблокированный диалог при закрытии при неудачном сохранении настроек
* уменьшен объем текста в окне справки, теперь все команды умещаются в сообщении
* некоторые другие исправления
VirtualPanel 1.0.0.400:
+ удаление физических файлов в корзину по умолчанию (напрямую - если зажата клавиша Shift или в ТК включено удаление напрямую)
+ файл состояния VP сохраняется при закрытии ТК только если содержимое VP было изменено
+ команда load теперь может быть запущена без параметров - для загрузки списка по умолчанию
+ команда eas теперь позволяет изменять имя скрипта автообновления
+ флаг /a для команд save/export, позволяющий сохранять в кодировке ANSI
+ новая команда ifcond для проверки атрибутов файла и т.п.
* убран заблокированный диалог при закрытии при неудачном сохранении настроек
* уменьшен объем текста в окне справки, теперь все команды умещаются в сообщении
* некоторые другие исправления
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
С командой более или менее ясно, буду дальше разбираться.
Твой плагин превращается во всесильного монстра. Это не может не радовать. Когда ты слегка притормозишь в программировании, дай знать - существенно переработаю статью, воздав должное Virtual Рanel. А пока (это тоже следствие "монструозности") - тебе следует существенно расширить документацию, увеличив количество примеров. Пока при чтении голова идет кругом - с трудом понимаешь, как это огромные возможности использовать. В других ВП с более скромными функциями подробное описание излишне, в твоей без этого не обойтись.
[Добавлено]edit <virtual_path> [<new_script_or_real_path>]
Сhangeы script text or target path for object. If second parameter is not specified, edit dialog will be shown;
Твой плагин превращается во всесильного монстра. Это не может не радовать. Когда ты слегка притормозишь в программировании, дай знать - существенно переработаю статью, воздав должное Virtual Рanel. А пока (это тоже следствие "монструозности") - тебе следует существенно расширить документацию, увеличив количество примеров. Пока при чтении голова идет кругом - с трудом понимаешь, как это огромные возможности использовать. В других ВП с более скромными функциями подробное описание излишне, в твоей без этого не обойтись.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
А-а, понял, в файле языка. Мне пришлось поубирать все описания внутренних команд, т.к. выяснилось, что мессейджбокс не вмещает более 1535 символов. Так что этой строки больше нет. Я оставил (и даже добавил) только описания флагов, используемых в некоторых командах.Вахмурка писал(а):С командой более или менее ясно, буду дальше разбираться.edit <virtual_path> [<new_script_or_real_path>]
Сhangeы script text or target path for object. If second parameter is not specified, edit dialog will be shown;
Надеюсь, не сильно в монстра.Вахмурка писал(а):Твой плагин превращается во всесильного монстра. Это не может не радовать. Когда ты слегка притормозишь в программировании, дай знать - существенно переработаю статью, воздав должное Virtual Рanel.
Я постараюсь сохранить основную тематику функций. А статью можешь делать для версии 1.0.0.400, думаю, в ближайшее время у меня будет меньше свободного времени.
Ага, я сам не до конца понимаю, как их использовать.Вахмурка писал(а):Пока при чтении голова идет кругом - с трудом понимаешь, как это огромные возможности использовать. В других ВП с более скромными функциями подробное описание излишне, в твоей без этого не обойтись.
Пожалуй, введение функции ifcond было действительно серьезным шагом - она использует довольно мощный вычислитель выражений. Я сам пока не знаю, нужен ли ей такой. Да и в плане дат я вначале думал просто приводить дату к числу вида 20100205 - для сравнения, а потом подумал, что в таком виде найти файл, который изменен менее чем 10 дней назад, будет сложно, тогда прикрутил преобразование в число секунд от 2000 года, а потом, решив, что секунда - слишком мелко, поменял на минуты. Так что, для поиска файлов, измененных за последние 10 дней, с размером больше 100 КБ, вполне можно использовать скрипт вида:
Код: Выделить всё
<for %f . *.txt { <ifcond "(date>datenow-10*24*60)&&size>100*1024 @ %f" { <ifok "Файл %f изменен за последние 10 дней и весит более 100 КБ." { } } }Но я лично не припомню, когда я в ТК искал файлы, измененные за определенное время, при этом с ограничением по размеру.
Насчет примеров и справки - без помощи мне не обойтись. Нужно выявить наиболее непонятные моменты и задачи, которые могут использоваться часто, но имеющие не совсем тривиальную реализацию - и для таких задач добавлять уточнения и примеры. Например, рекурсивный обход дерева папок я считаю часто всплывающей задачей - потому и добавил пример реализации.
Конечно, хочется надеяться, что при добавлении новых функций и незначительных исправлениях прежние не перестанут работать. Но проверить всё становится всё сложнее.
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
В описании внутренних команд Virtual Panel то и дело встречается "<virtual_path> <physical_path_and_mask>", то есть два пути. Во-первых, это - явный намек на две панели. Во-вторых, очень уныло всякий раз набирать пути вручную.
Да, есть команда cm_AddPathToCmdline. Но это значит, что надо перейти в одну панель, выдать команду, потом в другую - опять ее, а в конце, нажимая Ввод, не забыть перейти в Virtual Panel. Скучно, долго, неудобно, чревато ошибками.
Теперь представим себе скрипт или, лучше, утилиту. Ищется окно ТС, в нем ищутся дексрипторы правой и левой панелей и дескриптор ком. строки. Далее идут вариации: что выделено на "физической" панели и какую команду выдал пользователь?
После непосредственного формирования команды активизируется "виртуальная" панель, фокус ставиться на ком. строку, дальше можно послать cm_Return. Все.
Тут надо задуматься вот о чем. Первое. Чтобы писать эту программу, надо хорошо чувствовать "физику" Virtual Panel. То есть в идеале алгоритм (не обязательно программу) должен писать тот, что в этом успел разобраться. Второе. Скрипт - на самый худой конец, по-хорошему даже vbs не подойдет, не говоря про PowerPro. Возможное решение - AHK, раз уж она умеет свои скрипты компилять в экзешники. В идеале - маленькая, самостоятельная утилитка. С сответствующим названием типа VPTool.
Да, есть команда cm_AddPathToCmdline. Но это значит, что надо перейти в одну панель, выдать команду, потом в другую - опять ее, а в конце, нажимая Ввод, не забыть перейти в Virtual Panel. Скучно, долго, неудобно, чревато ошибками.
Теперь представим себе скрипт или, лучше, утилиту. Ищется окно ТС, в нем ищутся дексрипторы правой и левой панелей и дескриптор ком. строки. Далее идут вариации: что выделено на "физической" панели и какую команду выдал пользователь?
После непосредственного формирования команды активизируется "виртуальная" панель, фокус ставиться на ком. строку, дальше можно послать cm_Return. Все.
Тут надо задуматься вот о чем. Первое. Чтобы писать эту программу, надо хорошо чувствовать "физику" Virtual Panel. То есть в идеале алгоритм (не обязательно программу) должен писать тот, что в этом успел разобраться. Второе. Скрипт - на самый худой конец, по-хорошему даже vbs не подойдет, не говоря про PowerPro. Возможное решение - AHK, раз уж она умеет свои скрипты компилять в экзешники. В идеале - маленькая, самостоятельная утилитка. С сответствующим названием типа VPTool.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Знаю, что неудобно набирать вручную пути вставлять и прыгать по панелям. Но городить огород мне тоже не очень хочется.
Если бы Гислер добавил в ТК возможность запускать файлы с FS-модулей с панели инструментов, эта проблема исчезла бы - можно было бы добалять выделенный файл одной кнопкой. Если нет желания заморачиваться с внутренними командами - без этого вполне можно обойтись.
Потом, в любом случае кому-то придется искать дескрипторы панелей и т.п. Проблема в том, что ТК написан на Delphi - т.е. у компонентов окна нет постоянных идентификаторов, по которым можно было бы понять, левая это панель или правая, панель состояния ли мы нашли, или панель дисков...
Думаю, если есть скрипт, который находит панели и т.п., вполне можно было бы объяснить ему, что надо вставить в командную строку путь к файлу, выделенному на одной панели, потом на другой и т.п. Например, чтобы вставить команду <add, нужно получить путь к файлу, текущую папку на другой панели, добавить к этому пути предлагаемое имя файла и показать диалог подтверждения, а затем просто выполнить командную строку - здесь не требуются никакие глубокие знания физики или геометрии:) просто примитивные действия, доступные из любого скриптового инструмента.
Небольшой оффтоп, AHK по идее просто берет болванку и приписывает к ней закодированное представление скрипта. Но болванка сама по себе не из легких, так что лучше иметь одну среду, которая выполняет все скрипты, чем держать по болванке на каждый из них.
Небольшое обновление.
VirtualPanel 1.0.0.404:
* исправлено сравнение дат в команде ifcond (ошибка преобразования к числу минут)
+ эмуляция вхождения в архив по Shift+Enter
Правда, если VP открыта в правой панели, ТК открывает архив (создает новую вкладку), но почему-то переключает фокус на левую панель. Написал на оф. форуме, посмотрим, что можно сделать.
Если бы Гислер добавил в ТК возможность запускать файлы с FS-модулей с панели инструментов, эта проблема исчезла бы - можно было бы добалять выделенный файл одной кнопкой. Если нет желания заморачиваться с внутренними командами - без этого вполне можно обойтись.
Потом, в любом случае кому-то придется искать дескрипторы панелей и т.п. Проблема в том, что ТК написан на Delphi - т.е. у компонентов окна нет постоянных идентификаторов, по которым можно было бы понять, левая это панель или правая, панель состояния ли мы нашли, или панель дисков...
Думаю, если есть скрипт, который находит панели и т.п., вполне можно было бы объяснить ему, что надо вставить в командную строку путь к файлу, выделенному на одной панели, потом на другой и т.п. Например, чтобы вставить команду <add, нужно получить путь к файлу, текущую папку на другой панели, добавить к этому пути предлагаемое имя файла и показать диалог подтверждения, а затем просто выполнить командную строку - здесь не требуются никакие глубокие знания физики или геометрии:) просто примитивные действия, доступные из любого скриптового инструмента.
Небольшой оффтоп, AHK по идее просто берет болванку и приписывает к ней закодированное представление скрипта. Но болванка сама по себе не из легких, так что лучше иметь одну среду, которая выполняет все скрипты, чем держать по болванке на каждый из них.
Небольшое обновление.
VirtualPanel 1.0.0.404:
* исправлено сравнение дат в команде ifcond (ошибка преобразования к числу минут)
+ эмуляция вхождения в архив по Shift+Enter
Правда, если VP открыта в правой панели, ТК открывает архив (создает новую вкладку), но почему-то переключает фокус на левую панель. Написал на оф. форуме, посмотрим, что можно сделать.
Что-то неудачно реализовано определение доступности файла (valid). Создаю макрос, что-нибудь типаMVV писал(а):+ новая команда ifcond для проверки атрибутов файла и т.п.
<add \>lost_delete {<for %%f . * { <ifcond "valid @ %%f" {} { <del "%%f" } } }
Запускаю. Убиваются не только ссылки на недоступные файлы, но и макросы.
И какая-то засада с пользовательскими колонками. Через заголовки табуляторов включить не получается, выскакивает окно настройки. Если включить через главное меню - макросы исчезают, вместо них появляются задвоенные имена файлов. Пощелкаешь про заголовкам табуляторов - без всякой системы макросы то появляются, то опять превращаются в дубликаты файлов.
Да, согласен, про скрипты я забыл. Думаю, valid возвращает верное значение, т.к. файл не является ссылкой, но добавлю ключевое слово script для проверки, скрипт ли, так что можно будет использовать условие (!srcipt&&valid).
Кстати, если поставить скриптам атрибут только чтение, то без флага /f команда del их удалить не сможет.
А про колонки мы не раз говорили (если не в этой теме, то в этой, начиная с этого поста). Когда выбираешь набор колонок через главное меню ТК, все работает правильно, а когда через меню заголовков табуляторов, ТК почему-то переключает список набора колонок на текущий модуль, и надо вручную выбирать обратно модуль <Общие>.
Кстати, если поставить скриптам атрибут только чтение, то без флага /f команда del их удалить не сможет.
А про колонки мы не раз говорили (если не в этой теме, то в этой, начиная с этого поста). Когда выбираешь набор колонок через главное меню ТК, все работает правильно, а когда через меню заголовков табуляторов, ТК почему-то переключает список набора колонок на текущий модуль, и надо вручную выбирать обратно модуль <Общие>.
Я читал. Речь немного о другом. Когда таки со скрипом включаешь пользовательские колонки, имена скриптов пропадают, вместо них появляеются имена существующих файлов во втором экземпляре.MVV писал(а):А про колонки мы не раз говорили (если не в этой теме, то в этой, начиная с этого поста). Когда выбираешь набор колонок через главное меню ТК, все работает правильно
Код: Выделить всё
File1.ext 1 725
File2.ext 2 233
File3.ext 3 466
File1.ext 1 725
File2.ext 2 233
File3.ext 3 466Код: Выделить всё
File3.ext 3 466
File2.ext 2 233
File1.ext 1 725
>Script3 0
>Script2 0
>Script1 0Странный глюк. У меня не наблюдается. Приложи файл содержимого папки с такой ерундой (сделай экспорт командой <save c:\1.lst .). Заодно проверь, на всех ли наборах колонок такое наблюдается. Кстати, если появляется такое именно при изменении сортировки, глюк в ТК, т.к. он не запрашивает повторно при изменении сортировки содержимое папки - надо только понять, как его поймать.