Revision | 497 (tree) |
---|---|
Time | 2020-02-24 04:55:06 |
Author | ![]() |
Imagem do esquema de INTAEditWindow
Novas funções e comentários em KRK.ToolsAPI.pas
@@ -34,6 +34,10 @@ | ||
34 | 34 | //: Obtém o projeto que está atualmente ativo (em negrito) no Project Manager |
35 | 35 | function GetActiveIOTAProject: IOTAProject; |
36 | 36 | function GetActiveIOTAProjectGroup: IOTAProjectGroup; |
37 | +//: Obtém um IOTAModule a partir de um nome de arquivo completo (arquivo pas). | |
38 | +//: Pressupõe-se que o arquivo em questão esteja aberto na IDE. Eu não testei | |
39 | +//: isso sem que o arquivo esteja aberto | |
40 | +function GetIOTAModuleFromFileName(AFileName: String): IOTAModule; | |
37 | 41 | //: Obtém o projeto que está atualmente selecionado (focado) no Project Manager |
38 | 42 | function GetSelectedIOTAProject: IOTAProject; |
39 | 43 | function GetIOTAFormEditor: IOTAFormEditor; |
@@ -57,6 +61,25 @@ | ||
57 | 61 | procedure RemoveNTAProjectMenuCreatorNotifier(ANotifierIndex: Integer); |
58 | 62 | function AddNTAProjectMenuCreatorNotifier(ANTAProjectMenuCreatorNotifier: INTAProjectMenuCreatorNotifier): Integer; |
59 | 63 | {$IFEND} |
64 | + | |
65 | +// A regra para registro de notificadores é: ao necessitar de um notificador da | |
66 | +// unit ToolsApi, faça uma busca para saber se a interface deste notificar está | |
67 | +// sendo usada como argumento de alguma função de registro, que normalmente tem | |
68 | +// o nome AddNotifier. Se esta função existir, verifique o nome da interface | |
69 | +// onde ela está e busque na unit atual (KRK.ToolsApi) alguma função | |
70 | +// "GetNomeDaInterface" e use-a para retornar uma instância da Interface e | |
71 | +// assim usar seu métdo AddNotifier. Caso não exista uma função | |
72 | +// GetNomeDaInterface, implemente-a usando como exemplo outras funções | |
73 | +// semelhantes contidas aqui. Caso não seja encontrada na unit ToolsApi alguma | |
74 | +// função AddNotifier que tenha como argumento a interface do notificador, | |
75 | +// busque a mesma função na interface pai. Siga toda a hierarquia reversa até | |
76 | +// achar alguma função de registro adequada. Ao achar uma interface com a | |
77 | +// função AddNotifier, volte para a unit atual (KRK.ToolsApi) e busque pela | |
78 | +// função "GetNomeDaInterface". O resto do procedimento pode ser deduzido | |
79 | +// agora. Caso na hierarquia exista mais de uma função AddNotifier, utilize | |
80 | +// sempre aquela que contém o argumento mais próximo da interface que se quer | |
81 | +// registrar. | |
82 | + | |
60 | 83 | //: Retorna o editor do código-fonte do módulo especificado |
61 | 84 | function GetIOTASourceEditor(AModule: IOTAModule): IOTASourceEditor; |
62 | 85 | function GetSourceCode(ASourceEditor: IOTASourceEditor): String; |
@@ -152,6 +175,11 @@ | ||
152 | 175 | Result := GetIOTAModuleServices.MainProjectGroup; |
153 | 176 | end; |
154 | 177 | |
178 | +function GetIOTAModuleFromFileName(AFileName: String): IOTAModule; | |
179 | +begin | |
180 | + Result := GetIOTAModuleServices.FindModule(AFileName); | |
181 | +end; | |
182 | + | |
155 | 183 | function GetSelectedIOTAProject: IOTAProject; |
156 | 184 | var |
157 | 185 | Dummy: String; |