Страница 2 из 20

Добавлено: Чт мар 29, 2007 14:29
VadiMGP
но на фига тогда этот плагин, если ничего с найденными файлами сделать нельзя?
Почему "ничего"? Поскольку я уже говорил, что плагин предназначен для ТС7, я полагаю, что мы про ТС 7 и говорим, верно? И я вроде бы постом выше перечислил пяток операций, которые Гислер уже реализовал.
Что мне теперь сделать, чтобы...
Написать ему просьбу добавить поддержку нужных функций.
Легче основную программу использовать или какой-нибудь Renamer...
Так все от личных потребностей зависит. Я, например, переименованием пользуюсь пару раз в год, по большим праздникам, а просмотром и сравнением - двадцать раз в день.

Добавлено: Чт мар 29, 2007 14:35
Ник
VadiMGP писал(а):Написать ему просьбу добавить поддержку нужных функций
А как правильно сформулировать:
добавить функции доступа к инструменту группового переименования в АПИ файловых плагинов?

Добавлено: Пт мар 30, 2007 00:38
VadiMGP
добавить функции доступа к инструменту группового переименования в АПИ файловых плагинов?
Нет в API ничего добавлять не надо, проблема в другом.

Но для начала небольшое пояснение. В ТС7 введена концепция "виртуальных (временных) панелей". Фактически это файловые плагины, объекты которых, на самом деле являются ссылками на реальные файлы. Мой плагин как раз и является такой "виртуальной панелью". Если имеется настоящий файл с именем "c:\temp\abc.txt", то в результате поиска в файловой системе плагина может появиться объект с именем "\\\FSE\result\c:\temp\abc.txt" или "\\\FSE\result\c:/temp/abc.txt" (в зависимисти от режима поиска). Этот новый объект ссылается на настоящий файл.

Теперь к нашей проблеме. Сегодня ТС пытается переименовать объект файловой системы плагина. А чтобы работало групповое переименование он должен переименовывать настоящий файл. Вот об этом и надо просить - чтобы ТС не забывал, что в "виртуальных панелях" он имеет дело со ссылками на настоящие файлы и переименовывал именно их, а не ссылки.

ЗЫ. Между прочим, с упаковкой ситуация вообще анекдотическая - если попытаться упаковать файл после поиска в режиме Branch, то ТС сначала попытается упаковать плагиновый объект, выругается, а потом упакует настоящий файл. :)

Добавлено: Пт мар 30, 2007 01:49
CaptainFlint
VadiMGP писал(а):Вот об этом и надо просить - чтобы ТС не забывал, что в "виртуальных панелях" он имеет дело со ссылками на настоящие файлы и переименовывал именно их, а не ссылки.
Категорически не согласен. В том-то и удобство временной панели, что ты не обязан называть ссылку одним именем с оригинальным файлом. И, вообще говоря, это уже задача автору плагина - реализовать функции переименования и при вызове этой функции переименовывать и оригинальный файл, и ссылку (раз уж в случае с locate32 они по определению будут одноимёнными) - но никак не автору Тотала. Тотал делает в точности то, о чём его просят: обращается к плагину с требованием переименовать файл. А уж как плагин будет это обрабатывать - Тотала не касается.

Добавлено: Пт мар 30, 2007 02:14
Alextp
Это реализуемо , если Гислер сделает для плагинов флаг "плагин использует реальные имена файлов", и , опционально, поле для этих реальных имен. Т.е. расширение интерфейса такое.

В Фаре что-то подобное есть, но я не помню деталей: давно писал.

Добавлено: Пт мар 30, 2007 04:11
VadiMGP
И, вообще говоря, это уже задача автору плагина - реализовать функции переименования
Категорически не согласен. :wink: Задача поискового плагина - найти файлы и отрапортовать Тоталу "Файлы нашел - вот они". Что плагин и делает. А что с файлами делать - это задача Тотала. Причем, с учетом всех настроек юзера - порядок обслуживания конфликта имен, корректировка descript.ion, использование режима проводника для файловых операций или compatibility mode для доступа к конкретному диску и т.д. и т.п.
Тотал делает в точности то, о чём его просят: обращается к плагину с требованием переименовать файл.
Нет, никто не просил у Тотала "обратиться к плагину". Это именно его(Тотала) просили переименовать файл. Когда юзер нажимает F3 мы что говорим "Юзер хочет посмотреть файл" или "Юзер просит у Тотала, чтобы Тотал обратился к плагину с требованием показать файл"?

Да и вообще - где проходит граница - сейчас плагин должен делать переименование, потом - копирование, потом - удаление, упаковку... Заметим, что все это плагин будет делать заведомо хуже, чем Тотал, потому что у него нет всех тех фич, которые добавлялись в Тотал годами. Копирование в фоне, поддержка чертовой прорвы архиваторов, ну не мне вам рассказывать... Кстати, почему бы тогда заодно плагину не делать показ файлов, их редактирование и сравнение??? А если, не дай бог:), плагин все это будет делать не хуже Тотала, то зачем мне тогда будет нужен Тотал? Ради кнопок на тулбаре?
раз уж в случае с locate32 они по определению будут одноимёнными
Это реализуемо , если Гислер сделает для плагинов флаг "плагин использует реальные имена файлов",
Я совершенно не понимаю, какое значение имеет одинаковые имена или нет. Тем более, что, строго говоря, они не одинаковые. Выше я давал пример. Настоящий файл "c:\temp\abc.txt", в плагине - "\\\FSE\Result\c:/temp/abc.txt" Понятно, что имя в плагине создано на основе реального имени, но какое это имеет значение одинаковые они или разные? Ведь в любом случае, второе - ссылка на первое.

Добавлено: Пт мар 30, 2007 09:20
CaptainFlint
VadiMGP писал(а):Задача поискового плагина - найти файлы и отрапортовать Тоталу "Файлы нашел - вот они".
Если бы в Тотале было специфическое понятие "поисковый FS-плагин" - был бы полностью согласен. Но такого понятия там нет, поэтому "поисковость" - это исключительно семантическая составляющая, а не интерфейсная. Просите Гислера превратить семунтику в реальные компоненты интерфейса (как это было сделано в семёрке для той же поддержки плагинов временной панели) - слова не скажу, только вот вряд ли он согласится...
VadiMGP писал(а):Когда юзер нажимает F3 мы что говорим "Юзер хочет посмотреть файл" или "Юзер просит у Тотала, чтобы Тотал обратился к плагину с требованием показать файл"?
С точки зрения Тотала - только и исключительно второе. Он, к сожалению, не может угадывать мысли юзера, поэтому вынужден остановиться на каком-нибудь одном конкретном варианте. Юзер жмёт F3 - это значит, юзер хочет просмотреть содержимое того файла или псевдо-файла, который он выделил курсором. Какова в данном конкретном случае семантика этого действия - Тотал не знает и знать не может в принципе. Сейчас это поисковый плагин, через две минуты это будет обычный плагин временной панели, ещё через две минуты - содержимое реестра...
VadiMGP писал(а):Кстати, почему бы тогда заодно плагину не делать показ файлов, их редактирование и сравнение???
Всё дело в интерфейсе. Тотал не может знать семантику и вынужден за каждым действием обращаться к плагину - ведь именно в этом и заключается суть FS-плагинов: предоставить список элементов, которые ведут себя как файлы и каталоги, но представляют собой совершенно произвольные с точки зрения семантики объекты. В семёрке был добавлен новый спец-класс таких объектов - ссылки на реальные файлы, следовательно, плагины, семантика которых как раз в том, чтобы предоставлять ссылки на реальные объекты, сильно упростились: часть работы за них теперь выполняет Тотал. Других классов добавлено не было, поэтому другие классы плагинов не упростились. И пока этот новый класс добавлен не будет, упрощены они быть не могут (хотя бы из-за той же совместимости).

Добавлено: Пт мар 30, 2007 15:28
VadiMGP
Если бы в Тотале было специфическое понятие "поисковый FS-плагин" - был бы полностью согласен. Но такого понятия там нет,
Как это нет, когда вот он, есть. :) Формально да, термин "поисковый FS-плагин" автором ТС не вводился. Но был введен более широкий термин - "виртуальные панели". А что это такое по сути? Их функционал (в смысле интерфейса с ТС) Гислером определен вполне четко и достаточно узко - "Temporary file panels just hold links to files on the local file system." (только, чтобы содержать линки на локальные файлы). Больше от виртуальной панели ничего не требуется.
А вот откуда в этой панели берутся объекты и как они организованы - это функционал плагина по отношению к юзеру. Если элементы в панели появляются в результате поиска - то это поисковый плагин, если в результате помахивания волшебной палочкой, то это волшебнопалочковый плагин.

Между прочим, когда-то давно я попытался в обычном FS-плагине реализовать кое-какую работу с локальными файлами, напоролся на одну проблему и обратился к Гислеру. Он отреагировал на удивление быстро - "I have already described that the file system plugin must use the temp panel API to redirect TC to already existing files. The temp panel API has been created exactly for this purpose." Типа, "Я уже объяснял тебе, тупому - если надо что-то делать с локальными файлами используй API "виртуальных панелей" и отдавай ссылки на файлы ТС. Именно для этого API и был создан".
Позже, когда обсуждалась возможность сделать быстрый поиск в ТС я вспомнил, про этот ответ и , как радостный дурак, поскакал делать FSE. А тут и выяснилось, что ТС почему-то согласен в виртуальных панелях обслуживать только запросы по F3 и F4.
Просите Гислера превратить семунтику в реальные компоненты интерфейса
Вот это хороший совет, согласен. Я лично просил его дважды. И для поисковых плагинов, и для консоли. Так что, пока будут просить единицы - глухой номер, а если будет много народу просить - может и сделает.
С точки зрения Тотала - только и исключительно второе.
Извини, я спрашивал не про точку зрения Тотала. Я спрашивал про то, что мы(юзера) говорим.
Юзер жмёт F3 - это значит, юзер хочет просмотреть содержимое того файла или псевдо-файла, который он выделил курсором.
О! Золотые слова! Вот это и есть семантика.
Он, к сожалению, не может угадывать мысли юзера,
Он и не должен гадать. Они уже совершенно точно знает чего именно хочет юзер - "юзер хочет просмотреть содержимое того файла...".
Какова в данном конкретном случае семантика этого действия - Тотал не знает и знать не может в принципе.
Мы уже договорились о семантике - прекрасно знает - "юзер хочет просмотреть содержимое того файла..." Осталось только решить кто должен выполнить это действие. Сегодня Тотал решает, что именно он и показывает файл. А вот когда юзер хочет переименовать файл, то тут ТС почему-то не желает этого делать, хотя, опять-таки совершенно точно знает, чего именно хочет юзер - переименовать файл.
ведь именно в этом и заключается суть FS-плагинов: предоставить список элементов, которые ведут себя как файлы и каталоги, но представляют собой совершенно произвольные с точки зрения семантики объекты.
Это было бы верно для обычных FS-плагинов, но мы же говорим о виртуальных панелях. А в них все обстоит с точностью до наоборот - они содержат элементы, с жестко закрепленной семантикой - ссылки на локальные файлы. И это предопределяет все, что ты можешь с ними сделать. В том то и состоит отличие, скажем, Registry FS-плагина от виртуальной панели, что ТС заранее знает семантику объектов и умеет выполнять все нужные операции.
плагины, семантика которых как раз в том, чтобы предоставлять ссылки на реальные объекты, сильно упростились: часть работы за них теперь выполняет Тотал.
Абсолютно верно. Проблемка только в том, что эта часть должна быть чуть-чуть побольше. Причем, это "чуть-чуть" хорошо известно.
ТС в разных местах обращается к функции FsGetFile(RemoteFile,LocalFile). Все, что нужно это (для плагинов виртуальных панелей!) заменить эти вызовы на FsGetLocalName(RemoteFile,LocalFile), чтобы плагин сообщил ТС на какой именно LocalFile ссылается объект RemoteFile. Аналогичная замена нужна для функций удаления и переименования. Все. После этого во всех без исключения виртуальных панелях будет доступна вся мощь ТС.
Кстати, Гислер не отрицает, что это действительно так, но тратить на эти доработки несколько недель (по его же оценкам) не желает. Вот и вся история.

Добавлено: Пт мар 30, 2007 16:46
funduk
Я бы оставил определение семантики действий на совести авторов плагинов: что если бы плагин тоталу при своей загрузке передавал информацию о том, что вот эти действия с файлами плагин выполнит сам, а вон те действия должен выполнить тотал? Т.е. например: пусть сделан поисковый плагин аля FSE, и пусть имена файлов в нём формируются тем же способом. Как копировать из панели плагина: сохраняя структуру папок или нет? Если будет копировать тотал, то структура папок не сохранится. Вот пусть плагин скажет тоталу, что копировать и перемещать будет он (плагин), а всё остальное будет делать тотал. Тогда плагин сможет копировать вместе с файлами ещё и структуру папок.
Я понятно объяснил?

Добавлено: Пт мар 30, 2007 16:53
funduk
Хехе, писал-писал и вдруг понял, ЧТО именно лень делать Гислеру. Ведь если вдруг нашлись через FSE одновременно файл и содержащая его папка, как копировать/удалять/перемещать выделение, содержащее такие пары? Это потребует (достаточно сложного) алгоритма определения существенной части выделения.

Добавлено: Пт мар 30, 2007 17:16
Ник
А если просто заблокировать работу с директориями через такой плагин (как временную меру)?
Или через пару лет получим полный гемор?...

Добавлено: Пт мар 30, 2007 17:21
VadiMGP
Если будет копировать тотал, то структура папок не сохранится.
Почему? Я не понял.
А сегодня, при копировании из панели результатов поиска сохраняется структура? тогда в чем разница? Панель поиска - тоже в определенном смысле виртуальная панель.
Хехе, писал-писал и вдруг понял, ЧТО именно лень делать Гислеру. Ведь если вдруг нашлись через FSE одновременно файл и содержащая его папка, как копировать/удалять/перемещать выделение, содержащее такие пары? Это потребует (достаточно сложного) алгоритма определения существенной части выделения.
А вот тут совсем не понял. Объясни, пожалуйста. И опять-таки в чем принципиальная разница работы с виртуальной панелью и с сегодняшней панелью результатов поиска? Я и без плагина сегодня могу сделать такой поиск, чтобы нашлись и файлы и папки.

Добавлено: Пт мар 30, 2007 17:38
VadiMGP
А если просто заблокировать работу с директориями через такой плагин (как временную меру)?
Что ты имеешь в виду? Что заблокировать и как?

Добавлено: Пт мар 30, 2007 17:44
CaptainFlint
VadiMGP писал(а):А вот когда юзер хочет переименовать файл, то тут ТС почему-то не желает этого делать, хотя, опять-таки совершенно точно знает, чего именно хочет юзер - переименовать файл.
Отнюдь. Точнее - отнюдь нет. А вдруг юзер хочет переименовать не оригинальный файл, а только ссылку на него? Вот это уже и есть чистейшая семантика, никоим образом не зафиксированная в API. Именно поэтому Тотал оставляет решение на долю автора плагина: как автор решит, что удобнее, так и будет.

Кстати говоря, с переименованием оригинальных файлов будут ба-альшие траблы. Я сразу что-то не сообразил... Смотри сам: пользователь вызывает переименование, Гислер внял твоим мольбам и реализовал переименование оригинальных файлов напрямую. И теперь всё то, что показывает плагин, попросту некорректно: псевдо-файлы ссылаются на файлы, не существующие в реальной системе.

Добавлено: Пт мар 30, 2007 18:25
VadiMGP
А вдруг юзер хочет переименовать не оригинальный файл, а только ссылку на него?
Ну прям, как ответ от суппорта Microsoft (честное слово, не хочу обидеть :), просто улыбнуло), но звучит это как "Вдруг юзер захочет сделать что-то нам неясное. Давайте-ка запретим ему делать что-то нам понятное" :) А если без шуток, то такая проблема может возникнуть (по крайней мере, при сегодняшнем API), только если плагин явно сообщит ТС, что он (плагин) поддерживает переименование своих собственных элементов. Вот тогда можно и у юзера поинтересоваться "Друг милый, ты кого переименовать хочешь?" Либо можно ключик предусмотреть для разрешения неоднозначности. В общем методов разрешения неоднозначности иного, это не тупик, выбирай на свой вкус.
Гислер внял твоим мольбам и реализовал переименование оригинальных файлов напрямую. И теперь всё то, что показывает плагин, попросту некорректно: псевдо-файлы ссылаются на файлы, не существующие в реальной системе.
А это уже моя (плагина) забота. А я никого не прошу делать работу за меня. Этот вопрос мне все равно приходится решать уже сегодня, и без всякого переименования. Например, когда ты через FSE (Locate32) находишь файлы, которых уже давно и в помине нет - ведь Locate32 дает результат поиска на момент последней индексации. Или находишь еще существующие файлы, но тут же удаляешь их через эксплорер. Да, господи, у самого ТС те же проблемы например на ФТП панели. Файл, вроде бы, тут в панели есть, а на самом деле этого суслика уже может и не быть. Короче, на сегодняшний день, это даже проблемой нельзя назвать. Так, еще один рабочий момент, который надо учесть виртуало-плагино-писателям.

А вообще-то, все равно, я считаю, что самый нормальный путь - это создание поисковых (и других видов) плагинов. Тогда не надо будет впихивать нужную функциональность в чуждые рамки. Я понимаю, что я сужу со своей колокольни, но другой у меня все равно нету. Дайте тулбарные плагины - исчезнут проблемы с ТСMenu, дайте оконные - переделаю в нормальном виде консоль. Ну и там много чего еще...