глобальный слом апи.
- zg
- zero-gravity
- Posts: 6036
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
глобальный слом апи.
планируется глобальный слом апи.
понятно, что хочется в последний раз. поэтому если у кого-то есть предложения именно по текущему апи, говорите не стесняйтесь. на текущий момент:
1. struct PluginInfo добавить поле GUID Id; поле обязательно к заполнению.
updated:
1.1. для OPEN_FINDLIST, OPEN_SHORTCUT, OPEN_COMMANDLINE, а также alt-shift-f9 из панели плагина — guid far'а.
1.2. не надо ли что-то сделать с DiskMenuNumbers? Сделали.
1.3. сюда же проблемы с историей и плагинами. или их уже нет?
2. struct PanelInfo добавить поля GUID Id, HANDLE hPlugin.
updated:
3. int WINAPI _export ProcessKeyW(HANDLE hPlugin,const INPUT_RECORD *Rec).
4. DN_KEY, DN_HOTKEY, DM_KEY: Param2 указывает на INPUT_RECORD. реализовано, но вылезли баги фара.починили.
5. ActlKeyMacro Reserved[3] -> Reserved[7]. это валентин попросил - см. п.24
6. struct WindowInfo добавить поле INT_PTR Id, для редакторов EDitorId, для просмотров ViewerID. четно говоря не помню, зачем, но вроде когда-то обсуждалось, что надо.
7. во все структуры добавить StructSize обязательное для заполнения.
8. DialogInfo:
. Owner — GUID плагина или фара. для фара — все нули наверное.
9. LONG_PTR Param в FarDialogItem. устанавливает начальное значение для DM_GETITEMDATA/DM_SETITEMDATA.
9.1 Reserved — что это?
9.2 Selected — возможно тоже во флаги?
9.3 ListPos — что это?
11. переделать struct KeyBarTitles:
12. Info.CmpName убираем.
13. FarMenuItem убираем, FarMenuItemEx переименовываем.
14. PanelMode:
15. OPIF_USEFILTER меняем на OPIF_DISABLEFILTER.
16. FCTL_GETCMDLINESELECTEDTEXT убираем.
17. Изменить функции *Control
18. pluginpanelitem changetime.
19. В OpenPluginInfo убрать поле Reserved, в конец добавить __int64 FreeSize - информация о свободном месте в эмулируемой файловой системе.
и добавить флаг OPIF_USEFREESIZE - плагин оповестит ФАР, что... при отсутствии этого флага поле не заполнено (т.е. не у всех плагинов возможно понятие "свободное место")
20. Добавить PluginHandle в InputBox (как везде) чтоб фар знал откуда топики хэлпа открывать (старый очень баг).
21. Объединить PluginPanelItem и FAR_FIND_DATA
22. Исторические фигни в plugin.hpp надо бы исправить (удалить): DM_SETREDRAW=DM_REDRAW и DM_SETTEXTLENGTH=DM_SETMAXTEXTLENGTH
23. Удалить ACTL_POSTKEYSEQUENCE. Есть аналог в лице ACTL_KEYMACRO. Заменить имя перечисления FARKEYSEQUENCEFLAGS на FARKEYMACROFLAGS (и KSFLAGS_* -> KMFLAGS_* ). Удалить struct KeySequence.
24. ACTL_KEYMACRO перенести в новую функцию MacroControl
25. Control переименовать в PanelControl. Дальше см. п.28
26. http://bugs.farmanager.com/view.php?id=1410 - Добавить флаг в OpenFilePluginW для распознавания архивных операций (ShiftF3)
27. Доделать Analyse. OpenFilePlugin заменить на Analyse+OpenOpugin, OpenOpugin/ClosePlugin переименовать в OpePanel/ClosePanel.
28. Вынести FCTL_*CMDLINE* в CCTL_*. Обработка ком.строки с помощью CmdLineControl()
29. Удалить (без замены) ACTL_GETPOLICIES и enum FarPoliciesFlags - не опубликовано, лишнее, неактуальное
30. Удалить , замена: новая команда ACTL_GETSETTING. и объединить в одно (с заменой префиксов на FSETS_)
31. привести к общему знаменателю возвращаемые значения для диалоговых мессаг.
32. все цвета к структуре:
33. апи для хранения настроек.
34. привести
35. SetDirectoryW должна передавать плагину не const wchar_t *Dir, а указатель на структуру.
36. надо бы починить http://bugs.farmanager.com/view.php?id=1699
37. переделать DM_LISTGETDATA
N-1. скорректированное Писание
N. привести стд.плагины к АПИ 3
понятно, что хочется в последний раз. поэтому если у кого-то есть предложения именно по текущему апи, говорите не стесняйтесь. на текущий момент:
1. struct PluginInfo добавить поле GUID Id; поле обязательно к заполнению.
updated:
1.1. для OPEN_FINDLIST, OPEN_SHORTCUT, OPEN_COMMANDLINE, а также alt-shift-f9 из панели плагина — guid far'а.
1.2. не надо ли что-то сделать с DiskMenuNumbers? Сделали.
1.3. сюда же проблемы с историей и плагинами. или их уже нет?
2. struct PanelInfo добавить поля GUID Id, HANDLE hPlugin.
updated:
3. int WINAPI _export ProcessKeyW(HANDLE hPlugin,const INPUT_RECORD *Rec).
4. DN_KEY, DN_HOTKEY, DM_KEY: Param2 указывает на INPUT_RECORD. реализовано, но вылезли баги фара.починили.
5. ActlKeyMacro Reserved[3] -> Reserved[7]. это валентин попросил - см. п.24
6. struct WindowInfo добавить поле INT_PTR Id, для редакторов EDitorId, для просмотров ViewerID. четно говоря не помню, зачем, но вроде когда-то обсуждалось, что надо.
7. во все структуры добавить StructSize обязательное для заполнения.
8. DialogInfo:
. Owner — GUID плагина или фара. для фара — все нули наверное.
9. LONG_PTR Param в FarDialogItem. устанавливает начальное значение для DM_GETITEMDATA/DM_SETITEMDATA.
9.1 Reserved — что это?
9.2 Selected — возможно тоже во флаги?
9.3 ListPos — что это?
11. переделать struct KeyBarTitles:
12. Info.CmpName убираем.
13. FarMenuItem убираем, FarMenuItemEx переименовываем.
14. PanelMode:
15. OPIF_USEFILTER меняем на OPIF_DISABLEFILTER.
16. FCTL_GETCMDLINESELECTEDTEXT убираем.
17. Изменить функции *Control
18. pluginpanelitem changetime.
19. В OpenPluginInfo убрать поле Reserved, в конец добавить __int64 FreeSize - информация о свободном месте в эмулируемой файловой системе.
и добавить флаг OPIF_USEFREESIZE - плагин оповестит ФАР, что... при отсутствии этого флага поле не заполнено (т.е. не у всех плагинов возможно понятие "свободное место")
20. Добавить PluginHandle в InputBox (как везде) чтоб фар знал откуда топики хэлпа открывать (старый очень баг).
21. Объединить PluginPanelItem и FAR_FIND_DATA
22. Исторические фигни в plugin.hpp надо бы исправить (удалить): DM_SETREDRAW=DM_REDRAW и DM_SETTEXTLENGTH=DM_SETMAXTEXTLENGTH
23. Удалить ACTL_POSTKEYSEQUENCE. Есть аналог в лице ACTL_KEYMACRO. Заменить имя перечисления FARKEYSEQUENCEFLAGS на FARKEYMACROFLAGS (и KSFLAGS_* -> KMFLAGS_* ). Удалить struct KeySequence.
24. ACTL_KEYMACRO перенести в новую функцию MacroControl
25. Control переименовать в PanelControl. Дальше см. п.28
26. http://bugs.farmanager.com/view.php?id=1410 - Добавить флаг в OpenFilePluginW для распознавания архивных операций (ShiftF3)
27. Доделать Analyse. OpenFilePlugin заменить на Analyse+OpenOpugin, OpenOpugin/ClosePlugin переименовать в OpePanel/ClosePanel.
28. Вынести FCTL_*CMDLINE* в CCTL_*. Обработка ком.строки с помощью CmdLineControl()
29. Удалить (без замены) ACTL_GETPOLICIES и enum FarPoliciesFlags - не опубликовано, лишнее, неактуальное
30. Удалить , замена: новая команда ACTL_GETSETTING. и объединить в одно (с заменой префиксов на FSETS_)
31. привести к общему знаменателю возвращаемые значения для диалоговых мессаг.
32. все цвета к структуре:
33. апи для хранения настроек.
34. привести
35. SetDirectoryW должна передавать плагину не const wchar_t *Dir, а указатель на структуру.
36. надо бы починить http://bugs.farmanager.com/view.php?id=1699
37. переделать DM_LISTGETDATA
N-1. скорректированное Писание
N. привести стд.плагины к АПИ 3
- WARP ItSelf
- Самый умный
- Posts: 1011
- Joined: Tue 15 Mar, 2005 23:19
- Contact:
Re: глобальный слом апи.
Да, и может не StructSize, а StructVerision?
P.S. И тут клавиши обсуждали (что часть внутренние, а часть VK_).
P.S. И тут клавиши обсуждали (что часть внутренние, а часть VK_).
Никто не знал, а я...
-
- Posts: 705
- Joined: Tue 05 Apr, 2005 09:26
- Been thanked: 3 times
- Contact:
Re: глобальный слом апи.
Размер структуры, IMHO, не самый лучший вариант, так как размер может остаться прежним, а смысл разительно поменяться, вплоть до завалов.
Ы?
- zg
- zero-gravity
- Posts: 6036
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: глобальный слом апи.
т.е. изначально там 0, и инкрементируется при любом брекинг изменении? что делать с существующими StructSize?WARP ItSelf wrote:Да, и может не StructSize, а StructVerision?
3 и 4 пункты.P.S. И тут клавиши обсуждали (что часть внутренние, а часть VK_).
- WARP ItSelf
- Самый умный
- Posts: 1011
- Joined: Tue 15 Mar, 2005 23:19
- Contact:
Re: глобальный слом апи.
В 2.x+ сломать все и проверять на 0/1/2/3/4, в 1.x игнорировать (подменять при конвертации на текущую).
Никто не знал, а я...
Re: глобальный слом апи.
не знаю, относится ли это к слому API
хотелось бы иметь возможность задавать цвет фона в редакторе для строк, где нет текста, т.е. ниже конца файла.
а пункта 6 мне недавно очень не хватало, когда делаешь рестарт плагина, или наоборот его запускаешь, нужно узнать сколько редакторов открыто и создать под них структуры. Пришлось выкручиваться через EE_GOTFOCUS
хотелось бы иметь возможность задавать цвет фона в редакторе для строк, где нет текста, т.е. ниже конца файла.
а пункта 6 мне недавно очень не хватало, когда делаешь рестарт плагина, или наоборот его запускаешь, нужно узнать сколько редакторов открыто и создать под них структуры. Пришлось выкручиваться через EE_GOTFOCUS
Re: глобальный слом апи.
Рассуждая логически, если враппер пока не отрывается, то KEY_xxxx всё равно придётся поддерживать, куда ж от них... Тогда при наличии FSF.FarInputRecordToKey() и добавлении FSF.FarKeyToInputRecord(), переход сложностей не вызовет. Да и такой механизм нужен просто для компактности хранения данных в плагинах, которым важна только "кнопка", а не все данные из структуры.zg wrote:3. int WINAPI _export ProcessKeyW(HANDLE hPlugin,const INPUT_RECORD *Rec).
4. DN_KEY, DN_HOTKEY: Param2 указывает на INPUT_RECORD.
Закономерный вопрос, будут ли в ProcessKeyW() передаваться кроме KEY_EVENT_RECORD события MOUSE_EVENT_RECORD, WINDOW_BUFFER_SIZE_RECORD, MENU_EVENT_RECORD, FOCUS_EVENT_RECORD, или это будет INPUT_RECORD, тупо сгенерированный из DWORD Key?
Re: глобальный слом апи.
В принципе можно - есть LastEventRecord (но, судя по всему, с ним нужно будет немного попотеть)corwinnt wrote:Закономерный вопрос, будут ли в ProcessKeyW() передаваться кроме KEY_EVENT_RECORD события MOUSE_EVENT_RECORD, WINDOW_BUFFER_SIZE_RECORD, MENU_EVENT_RECORD, FOCUS_EVENT_RECORD, или это будет INPUT_RECORD, тупо сгенерированный из DWORD Key?
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
Re: глобальный слом апи.
Это можно без слома апи сделатьsonar wrote:не знаю, относится ли это к слому API
хотелось бы иметь возможность задавать цвет фона в редакторе для строк, где нет текста, т.е. ниже конца файла.
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
- zg
- zero-gravity
- Posts: 6036
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: глобальный слом апи.
не в эту тему вопрос.corwinnt wrote:Закономерный вопрос, будут ли в ProcessKeyW() передаваться кроме KEY_EVENT_RECORD события MOUSE_EVENT_RECORD, WINDOW_BUFFER_SIZE_RECORD, MENU_EVENT_RECORD, FOCUS_EVENT_RECORD, или это будет INPUT_RECORD, тупо сгенерированный из DWORD Key?
Re: глобальный слом апи.
в свете того, что не всем пагинам "полезен" INPUT_RECORD, предлагается вот такой вариант:zg wrote:3. int WINAPI _export ProcessKeyW(HANDLE hPlugin,const INPUT_RECORD *Rec).
Code: Select all
3. int WINAPI _export ProcessKeyW(HANDLE hPlugin,DWORD FarKey,const INPUT_RECORD *Rec).
ФАРу пофигу, а плагины могут игнорировать либо Rec либо FarKey.
Да, избыточно, но зато и овцы сыта и волки целк...
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
Re: глобальный слом апи.
Согласен. Это больше к целесообразности слома и реальной пользе от него. Меня больше интересовало сохранение KEY_xxxx и преобразование между ним и INPUT_RECORD в обе стороны. Хотя бы потому, что оперировать структурами в switch(Key) не слишком-то удобно.zg wrote:не в эту тему вопрос.
- zg
- zero-gravity
- Posts: 6036
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: глобальный слом апи.
валя, давай вот без этой чуши. есть FSF.FarInputRecordToKey, кому надо, вызовут вначале.Skirda wrote:в свете того, что не всем пагинам "полезен" INPUT_RECORD, предлагается вот такой вариант
- zg
- zero-gravity
- Posts: 6036
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: глобальный слом апи.
там 7 пунктов только я написал. всё равно ломать надо. так уж заодно и просчёты первой версии убрать. а вообще почитай ченжлог, такое было не раз уже.corwinnt wrote:Согласен. Это больше к целесообразности слома и реальной пользе от него.
зачем при предложенных изменениях в обе стороны?Меня больше интересовало сохранение KEY_xxxx и преобразование между ним и INPUT_RECORD в обе стороны. Хотя бы потому, что оперировать структурами в switch(Key) не слишком-то удобно.
Re: глобальный слом апи.
А зачем? Плагины ведь всё равно переписывать. FSF.FarInputRecordToKey() есть. Зачем FAR тратить время и преобразовывать структуру в клавишу "на всякий случай"? Ведь плагин будет использовать только одну ипостась. Хочет KEY_xxxx, пусть сам конвертит, нужны "потроха" - пусть в структуре копается. А при добавлении FSF.FarKeyToInputRecord() вообще счастие наступитSkirda wrote:"Клавиша" представлена сразу в двух ипостасях - как внутренний код, так и INPUT_RECORD.
ФАРу пофигу, а плагины могут игнорировать либо Rec либо FarKey.
Да, избыточно, но зато и овцы сыта и волки целк...