Хотелось бы, чтоб плагины могли пользоваться функционалом фаровской маски файла в полном объёме (а не усечённом, как в ProcessName). Поскольку в Фаре всё это уже есть и используется из разных мест кода, то дать это ещё и плагинам не должно быть сложно.changelog wrote:drkns 24.02.2012 14:27:51 +0200 - build 2488
1. Новая сущность: "группы масок файлов" (Options - Groups of file masks).
Произвольное количество масок файлов можно объединить в группу и присвоить ей имя.
В дальнейшем имя группы, заключенное в угловые скобки ("<имя>"), может использоваться везде, где могут использоваться сами маски.
Маски файлов в API
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Маски файлов в API
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Маски файлов
Помимо того, что это довольно мощный и полезный функционал, предоставление его плагинам обеспечит для пользователя везде одинаковый синтаксис масок. Например, для плагина LuaFAR Search пришлось написать свою ф-цию. Совпадение с синтаксисом фаровских масок получилось на уровне порядка 95%, что в общем-то устраивало. Но вот теперь, с появлением именованных групп и выражений - уже облом, так как их надо брать из Фара, а не делать свои.
Ну в общем - надеюсь.
Ну в общем - надеюсь.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Маски файлов
+1.
Мне то же самое пришлось в свое время написать в Фарнете. Тоже где-то примерно совпадает, но не на 100%. И тоже теперь облом (либо нужен АПИ получения груп этих масок, но это, имхо, извращение - в Фаре-то все уже есть, плагинам не следует изобретать велик).
Мне то же самое пришлось в свое время написать в Фарнете. Тоже где-то примерно совпадает, но не на 100%. И тоже теперь облом (либо нужен АПИ получения груп этих масок, но это, имхо, извращение - в Фаре-то все уже есть, плагинам не следует изобретать велик).
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Маски файлов
Поигрался.DrKnS wrote:
1. Общая просьба: патчи прикладывать как файлы, так как движок форума заменяет табы на спейсы и удаляет последний перевод строки.
2. Пропатченная функция прошла все мои тесты, так что уже хорошо.
3. На некоторых масках вылезает следующее:
Code: Select all
╔════════════ Warning ═════════════╗
║ File-mask string contains errors ║
╟──────────────────────────────────╢
║ { OK } ║
╚══════════════════════════════════╝
Code: Select all
enum ProcessNameReturn {
PNR_NOMATCH=0,
PNR_MATCH=1,
PNR_BADMASK=2
};
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Маски файлов
Плагину может и не обязательно, а вот для пользователя это не одно и то же - не зря же "Find File" выводит это сообщение при ошибочной маске. То-есть сообщение-то полезное при обычной пользовательской работе, а вот при автоматическом тестировании оно просто подвешивает тесты, требуя ручного вмешательства.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Маски файлов
Пока это было внутри Фара, это нормально, что диалог ошибки был забит в ф-ю. Но раз это становится АПИ, то диалог надо либо убрать (но тогда в Фаре использовать оберточную ф-ю, которая показывает диалог при ошибке), это наиболее грамотный вариант. Либо иметь возможность подавлять диалог. Менее красиво, но достаточно.
(В Фаре еще есть АПИ, который показывает диалоги при ошибках, жаловался давно, но не убедил. Если есть интерес, могу попробовать вспомнить, где это было).
(В Фаре еще есть АПИ, который показывает диалоги при ошибках, жаловался давно, но не убедил. Если есть интерес, могу попробовать вспомнить, где это было).
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Маски файлов
Спасибо за 2513. Но... Неужели дополнительный код возврата (пусть даже без enum) может кому-то помешать? То, что раньше жили без этого - не аргумент, раньше жили и без телефонов, и без нового API.
Если проще - сейчас у плагинов отобрали как встроенное сообщение об ошибке в маске, так и возможность самому плагину это сообщение вывести.
Если проще - сейчас у плагинов отобрали как встроенное сообщение об ошибке в маске, так и возможность самому плагину это сообщение вывести.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Маски файлов
Или такая задача плагина - нужно просто проверить маски, то есть допускается, что есть невалидные, но сама такая ситуация - валидная. Только вызывающий АПИ может знать нужен диалог или нет, и какое сообщение, да.
ИМХО, диалоги об ошибках из АПИ надо устранять и заменять на возврат флага или кода ошибок. Для сравнения - в Win32 АПИ где-нибудь диалоги об ошибках есть?
ИМХО, диалоги об ошибках из АПИ надо устранять и заменять на возврат флага или кода ошибок. Для сравнения - в Win32 АПИ где-нибудь диалоги об ошибках есть?
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Re: Маски файлов
Мне не сильно нравится новый код возврата тем, что ProcessName как бы BOOL, и если кто-то в коде делал так:
- то условие тихо и незаметно сработает и для PNR_BADMASK тоже.
Можете считать паранойей, да.
Code: Select all
if(fsf.processname(blabla))
{
MyHadronCollider->Collapse();
}
Можете считать паранойей, да.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Маски файлов
Это не проблема. Просто нужна новая ф-я с новой сигнатурой и документацией. Можно и не ломать, иметь 2 ф-ии, одну как было и одну продвинутую.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Re: Маски файлов
Могу из фара SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX) убрать, сам посмотришь.NightRoman wrote:Для сравнения - в Win32 АПИ где-нибудь диалоги об ошибках есть?
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Маски файлов
Может даже лучше структуру в качестве параметра использовать. На случай расширений АПИ. Функция полезная и не такая тривиальная, может, еще что будет с ней развиваться в будущем.NightRoman wrote:Это не проблема. Просто нужна новая ф-я с новой сигнатурой и документацией. Можно и не ломать, иметь 2 ф-ии, одну как было и одну продвинутую.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Маски файлов
То есть вин апи позволяет подавить диалоги об ошибках? О том и речь. И что характерно, Фар, как пользователь этого АПИ, их подавляет. Но своим пользователям такую услугу не везде дает.DrKnS wrote:Могу из фара SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX) убрать, сам посмотришь.
Если диалоги опциональны в дополнение к кодам ошибок, то нет проблем, пусть будут. Но в Фар апи (кое где) эти диалоги просто вбиты.