B4rr4cuda писал(а):Например, одинаковых команд с разными параметрами на разные хоткеи. Неюзабельно.
не понял, или понял. =) но его выкидывать не надо он удобен, а для параметизированых акшенов надо другой тип придумать.
B4rr4cuda писал(а):Распиши плиз, как ты это себе представляешь (хоткейные плагины).
думаю что это не хоткейный плагин а контекстный, то есть он может попасть как в главное меню так и в меню на правую кнопу, соответсвенно ему можно будет назнчить хоткей
сам плагин должен давать возможность выдать где он хочет находится (хотя при настраиваемом меню на это можно будет забить) и действие аля как сделанно в ИБэксперте
- Код: Выделить всё
- Should contain list of integers delimited with colon,
 semicolon or space.
 Possible values are:
 
 1 - Adds plugin menu items to the end of Main Menu | Databases
 2 - Adds plugin menu items to the end of Main Menu | Edit
 3 - Adds plugin menu items to the end of Main Menu | View
 4 - Adds plugin menu items to the end of Main Menu | Options
 5 - Adds plugin menu items to the end of Main Menu | Tools
 6 - Adds plugin menu items to the end of Main Menu | Services
 7 - Adds plugin menu items to the end of Main Menu | Plugins
 8 - Adds plugin menu items to the end of Main Menu | Windows
 9 - Adds plugin menu items to the end of Main Menu | Help
 11 - Adds plugin menu items to the end of popup menu of code editors
 
 To place plugin menu directly into main menu use negative
 integer values or 0. For example, -1 places plugin menu
 into main menu just after Database item. 0 places plugin
 menu as first item of main menu etc.
 
 
 *****************
 MenuStructure - defines structure of the plugin menu.
 Each line describes only one menu item.
 Definition of menu item should contain one or more parts
 delimited with '|'. The first symbol of each part is control
 symbol:
 
 C - caption of menu item
 E - procedure associated with menu item (must be listed also
 in an exports clause of your dll)
 B - inserts a separator before this menu item
 S - shortcut
 I - image index
 U - update procedure. Used to disable/enable menu item. Must
 be listed also in an exports clause of your dll
 
 
 Please, see also source of plugins to get examples of menu
 structures.
 
- Код: Выделить всё
- library Test;
 
 uses
 SysUtils,
 Classes,
 IBEIntfEx,
 Forms,
 Windows,
 Dialogs,
 PluginF in 'PluginF.pas' {DBInfoForm},
 TableInfoF in 'TableInfoF.pas' {TableInfoForm};
 
 {$R *.RES}
 
 procedure CreatePluginForm(Intf : TIBEInterfaceEx);
 begin
 
 end;
 
 procedure get_db_info(Intf : TIBEInterfaceEx); stdcall;
 begin
 OldHandle := Application.Handle;
 ShowDatabaseInfo(Intf);
 end;
 
 procedure get_table_info(Intf : TIBEInterfaceEx); stdcall;
 begin
 OldHandle := Application.Handle;
 ShowTableInfo(Intf);
 end;
 
 procedure get_view_info(Intf : TIBEInterfaceEx); stdcall;
 begin
 ShowMessage('Not realized yet.');
 end;
 
 procedure get_plugin_info_ex(Intf: TIBEInterfaceEx; PluginInfo: pointer); stdcall;
 begin
 with PIBEPluginInfoEx(PluginInfo)^ do
 begin
 PluginName := 'Plugin Demonstration';
 Description := 'No description';
 PlaceMenu := '-10';
 MenuStructure := PChar('CPlugin Demo|B' + #13 +
 '    CGetting Database Info|Eget_db_info|I3' + #13 +
 '    CGetting Database Objects Info' + #13 +
 '        CTable Info | Eget_table_info | I17' + #13 +
 '        CView Info | Eget_view_info | I18');
 end;
 end;
 
 exports
 get_db_info,
 get_table_info,
 get_plugin_info_ex,
 get_view_info;
 
 end.
 
только в этом варианте плохо с языковой поддержкой =)
что делает командир (как я предстовляю), 
при запуске 
1,1 смотрит спец каталог где лежат такие плгины
1,2 смотрит в настройках где ему брать плагин 
2, создает экшен , запихивает иму значения из get_plugin_info_ex*  типа кепшен, хинт ну и выполнение
3, получает хоткей из настроек командера
4, запихивается в меню где надо 
5, ждет когда его вызовут 
работа с хоткем будет стандартная.
при вызове будет передоваться выделеный файл\файлы, возможно панель.
правда где такие плагины использовать кроме дискриптион, не знаю =) но можно расширеное инфо о файле напрмер, больше пока не придумал =)