[Req] Плагин для search/replace в файлах

Только для тех, кто пишет плагины под Total Commander. Обмен опытом, решение проблем.

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

Ответить
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

[Req] Плагин для search/replace в файлах

Сообщение D1P »

Родилась идея wdx-плагина для find-replace в файлах.
Значением поиска для поля плагина задаём какую-то строку, содержащую в себе параметры какой текст на что менять, например так:
{текст_который_надо_заменить_в_найденных_файлах}{текст_которым_надо_заменить}

Плагин ищет в файлах текст по первому условию и заменяет на текст по второму. Не обязательно текст, любые байтовые последовательности... принцип, думаю, ясен.
Плагиновое API это позволит 100%
Как идея? Кто возьмётся?
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

D1P
Ага. А потом кто-нибудь создасть набор колонок с полем этого плагина и, случайно открыв каталог Windows, будет долго материть всех на свете. :) Плагин же не может определить нормальным способом, откуда его вызывают - из поиска или откуда-то из другого места.
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Хотя стоп. Ты тупишь, а я вслед за тобой! Откуда плагин вообще узнает, что пользователь ввёл в поле поиска? Это же всё Тотал сам обрабатывает, к плагину же лишь выполняются обращения вида: скажи-ка мне, друг любезный, а каково значение такого-то поля для такого-то файла? А вот для этого? А вон для того?..
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

Сообщение D1P »

Откуда плагин вообще узнает, что пользователь ввёл в поле поиска?
На вкладке "плагины" в инструменте поиска в поле "значение" вводим строку с условиями. Из этих условий плагин и будет узнавать, что искать. Естественно, это будет не совсем контентый плагин по функционалу... Скорее это будет просто способ прикручивания нужной фичи к TC обходными путями.

Защиту от дурака тоже можно сделать - плагину достаточно проверять, существует ли дочернее окно TC класса TFindFile.

Вот сейчас подумал: если поиск в TC сначала ищет файлы по общим условиям, а потом "отдаёт" на проверку wdx-плагину, тогда всё просто. А если сначала идёт поиск по полям плагина (что, имхо, маловероятно) - тогда да, овчинка выделки не стоит, слишком сложной будет реализация (одному плагу придётся дублировать все функции поиска TC).

Если непонятно - попытаюсь утром написать простенький примерчик, заодно и проверю, что и как в поиске TC работает.

Сразу предвещу вопрос "а почему бы просто не сделать внешнюю утилиту?" - да как раз потому, что хочется пользоваться поиском TC.
---
И ещё, в качестве оффтопика. Попробовал прогу Yandex Desktop Search (http://desktop.yandex.ru/)... может у кого есть какие идеи, как прикрутить её к поиску в TC? Мне пока приходит только мысль сделать плагин-парсер выходного html...
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

На вкладке "плагины" в инструменте поиска в поле "значение" вводим строку с условиями. Из этих условий плагин и будет узнавать, что искать.
Так ведь эта строка всё равно не передаётся плагину, Тотал сам выполняет сравнение этой строки с тем, что возвращает плагин по запросу. Или я чего-то не так понял?
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

Сообщение D1P »

Да, ты прав, это я ошибся :( Стал писать пример и только тогда понял, что условия не передаются плагину.
Конечно, это можно обойти (находить контрол с условием на закладке "Плагины" и читать текст условия оттуда), но это уже чревато проблемами.
Ладно, идея отклоняется, тему можно считать исчерпанной.
Аватара пользователя
Моторокер
Сообщения: 1517
Зарегистрирован: Пт май 06, 2005 08:22
Откуда: г. Пермь (читается Перьмь)
Контактная информация:

Сообщение Моторокер »

Поиск и замену лучше реализовать через архиваторный плагин – все удобства налицо.
Создать список файлов легко – просто выделить нужные файлы/папки. За программиста это делает Total.

Перед упаковкой вызвать диалог настроек, в котором задать условия для поиска/замены.
Остально делается в цикле упаковки – запрограммировать нужно только функцию замены.
+ Прикрутить RegExp и вперёд! Не нужны больше никакие платные или глюкавые серчеры/реплейсеры!
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
Ответить