Фар3: AnalyseW + OPEN_ANALYSE
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Фар3: AnalyseW + OPEN_ANALYSE
Я правильно понимаю, что AnalyseW только анализирует файл, а панель надо открывать по OPEN_ANALYSE? Если да, то как в OPEN_ANALYSE узнать, для какого именно файла делается открытие? Может, это OpenInfo.Data по задумке? У меня там вроде 0.
Re: Фар3: AnalyseW + OPEN_ANALYSE
Ты вроде должен сохранить то, что пришло в AnalyseW.
Дико неудобно, да...
Дико неудобно, да...
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Фар3: AnalyseW + OPEN_ANALYSE
А если AnalyseW не приводит к открытию (например, более одного открывальщика нашлось и для моего OPEN_ANALYSE не вызывается), то кто и когда будет освобождать подвешенные в AnalyseW глобальные данные, ждущие OPEN_ANALYSE ? Или такой ситуации не может быть?
Re: Фар3: AnalyseW + OPEN_ANALYSE
Освобождение запомненных данных - это проблемы плагина (и API).
Освободить ты их сможешь видимо в после ExitFarW или при следующем вызове AnalyseW/OpenW.
Вобщем это как-то не то...
Освободить ты их сможешь видимо в после ExitFarW или при следующем вызове AnalyseW/OpenW.
Вобщем это как-то не то...
Re: Фар3: AnalyseW + OPEN_ANALYSE
Я бы предложил что-то вроде
- Attachments
-
- Analyse.diff.7z
- (688 Bytes) Downloaded 174 times
-
- Posts: 1351
- Joined: Fri 30 Nov, 2007 15:32
- Location: Крым
- Has thanked: 15 times
- Been thanked: 50 times
- Contact:
Re: Фар3: AnalyseW + OPEN_ANALYSE
Присоединяюсь к мысли, что с OPEN_ANALYZE надо бы передать информацию о том какой файл мы открываем. А то сейчас как-то странно это реализовано.
Re: Фар3: AnalyseW + OPEN_ANALYSE
Извините, я чего-то набредил и случайно сообщение отредактировал. W.I.
- WARP ItSelf
- Самый умный
- Posts: 1011
- Joined: Tue 15 Mar, 2005 23:19
- Contact:
Re: Фар3: AnalyseW + OPEN_ANALYSE
В свете решения данного вопроса возникли 2 варианта:
1. Analyse возвращает HANDLE, появляется CloseAnalyse. CloseAnalyse вызывается для всех, кто не был выбран. Для выбранного плагина вызывается Open.
2. Analyse возвращает HANDLE, Close расширяется флагом (nMode {MODE_PANEL и MODE_ANALYSE}). Далее то же самое.
P.S. Это уведомительный опрос, в настоящий момент выбран и считается приоритетным 1 вариант.
1. Analyse возвращает HANDLE, появляется CloseAnalyse. CloseAnalyse вызывается для всех, кто не был выбран. Для выбранного плагина вызывается Open.
2. Analyse возвращает HANDLE, Close расширяется флагом (nMode {MODE_PANEL и MODE_ANALYSE}). Далее то же самое.
P.S. Это уведомительный опрос, в настоящий момент выбран и считается приоритетным 1 вариант.
Никто не знал, а я...
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Фар3: AnalyseW + OPEN_ANALYSE
Есть вопрос вообще не связанный с заданным выше. Не рассматривается такая возможность, что у плагина А у самого более одного варианта/кандидата на открытие файла - В1, В2? Плюс также есть другой плагин Б, который претендует на открытие - В3. Как быть плагину А? Задать вопрос что выбрать - В1 или В2? А если реально пользователь выберет В3, то этот диалог получается напрасным. А если цель пользователя выбрать В1 или В2, то тогда последующий или предыдущий вопрос Фара о выборе между плагинами А и Б будет лишним.
Ситуация может быть типичной для плагинов с субплагинами/модулями. Пример - FarNet, но могут быть и другие плагины открывашки файлов, которые просто оболочку для своих субплагинов/модулей предоставляют.
В случае с Фарнет он просто разошлет OPEN_ANALYSE (в преобразованном виде) тем модулям, которые на это подписались. Что если в ответ на это их более одного вызвались открывать? Как рекомендуется такую ситуацию разрулить? (Пока-то я приостановил использование OPEN_ANALYSE в Фарнет, все равно еще АПИ устаканивается, но интересно на будущее).
Некоторая аналогия - по F11 Фар предлагает выбрать пользователю не только разные плагины, но и разные команды одного и того же плагина. OPEN_ANALYSE - в сущности похожая ситуация, только команды плагинов узко специализированы именно на этот файл. Если из более 1, Фар показывает в сущности меню плагинов для этого файла. Но в этом меню более одного элемента от плагина быть не может в отличие от F11 меню.
Ситуация может быть типичной для плагинов с субплагинами/модулями. Пример - FarNet, но могут быть и другие плагины открывашки файлов, которые просто оболочку для своих субплагинов/модулей предоставляют.
В случае с Фарнет он просто разошлет OPEN_ANALYSE (в преобразованном виде) тем модулям, которые на это подписались. Что если в ответ на это их более одного вызвались открывать? Как рекомендуется такую ситуацию разрулить? (Пока-то я приостановил использование OPEN_ANALYSE в Фарнет, все равно еще АПИ устаканивается, но интересно на будущее).
Некоторая аналогия - по F11 Фар предлагает выбрать пользователю не только разные плагины, но и разные команды одного и того же плагина. OPEN_ANALYSE - в сущности похожая ситуация, только команды плагинов узко специализированы именно на этот файл. Если из более 1, Фар показывает в сущности меню плагинов для этого файла. Но в этом меню более одного элемента от плагина быть не может в отличие от F11 меню.
- WARP ItSelf
- Самый умный
- Posts: 1011
- Joined: Tue 15 Mar, 2005 23:19
- Contact:
Re: Фар3: AnalyseW + OPEN_ANALYSE
Пока идеала достичь не получится. Т.е. можно усложнить все это с добавлением пунктов меню B1 и B2 в меню выбора, но это, пожалуй, перебор. Хотя посмотреть на точный план можно. В newarc я так делаю - выясняю все субплагины, которые готовый открыть файл и запоминаю. Потом говорю фару, что newarc готов открыть файл. Фар рисует меню, если выбран newarc, то я рисую свое меню с выбором B1 и B2.
Никто не знал, а я...
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Фар3: AnalyseW + OPEN_ANALYSE
Да, видимо, я тоже буду придерживаться этого плана, если ничего не предвидится на предмет нескольких открывателей от плагина. Но просто обозначил проблему, так сказать, хотя проблема мелкая, конечно.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Фар3: AnalyseW + OPEN_ANALYSE
Кажется интуитивным и здравым вариантом.WARP ItSelf wrote:1. Analyse возвращает HANDLE, появляется CloseAnalyse. CloseAnalyse вызывается для всех, кто не был выбран. Для выбранного плагина вызывается Open.
Как вариация, можно возвращать не только HANDLE, но c ним и указатель на функу void X(HANDLE), которую Фар дернет для невыбранных. Если плугу на самом деле ничего не надо освобождать, он может передавать просто 0. Тогда и нет нужды экспортировать лишнюю функцию.
- Alexey Samlyukov
- Posts: 1765
- Joined: Tue 15 Mar, 2005 17:28
- Been thanked: 7 times
- Contact:
Re: Фар3: AnalyseW + OPEN_ANALYSE
смотрю:
+ HANDLE WINAPI AnalyseW(const struct AnalyseInfo *Info);
+ void WINAPI CloseAnalyseW(const struct CloseAnalyseInfo *Info);
+struct OpenAnalyseInfo
+{
+ size_t StructSize;
+ struct AnalyseInfo* Info;
+ HANDLE Handle;
+};
+struct CloseAnalyseInfo
+{
+ size_t StructSize;
+ HANDLE Handle;
+};
все правильно? OpenAnalyseInfo для OpenW()?
upd. все правильно. глянул в сорцы, для OpenW().
+ HANDLE WINAPI AnalyseW(const struct AnalyseInfo *Info);
+ void WINAPI CloseAnalyseW(const struct CloseAnalyseInfo *Info);
+struct OpenAnalyseInfo
+{
+ size_t StructSize;
+ struct AnalyseInfo* Info;
+ HANDLE Handle;
+};
+struct CloseAnalyseInfo
+{
+ size_t StructSize;
+ HANDLE Handle;
+};
все правильно? OpenAnalyseInfo для OpenW()?
upd. все правильно. глянул в сорцы, для OpenW().