• R/O
  • SSH
  • HTTPS

akdf: Commit


Commit MetaInfo

Revision497 (tree)
Time2020-02-24 04:55:06
Authorderekwildstar

Log Message

Imagem do esquema de INTAEditWindow
Novas funções e comentários em KRK.ToolsAPI.pas

Change Summary

Incremental Difference

--- trunk/rtp/src/ToolsAPI/KRK.ToolsAPI.pas (revision 496)
+++ trunk/rtp/src/ToolsAPI/KRK.ToolsAPI.pas (revision 497)
@@ -34,6 +34,10 @@
3434 //: Obtém o projeto que está atualmente ativo (em negrito) no Project Manager
3535 function GetActiveIOTAProject: IOTAProject;
3636 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;
3741 //: Obtém o projeto que está atualmente selecionado (focado) no Project Manager
3842 function GetSelectedIOTAProject: IOTAProject;
3943 function GetIOTAFormEditor: IOTAFormEditor;
@@ -57,6 +61,25 @@
5761 procedure RemoveNTAProjectMenuCreatorNotifier(ANotifierIndex: Integer);
5862 function AddNTAProjectMenuCreatorNotifier(ANTAProjectMenuCreatorNotifier: INTAProjectMenuCreatorNotifier): Integer;
5963 {$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+
6083 //: Retorna o editor do código-fonte do módulo especificado
6184 function GetIOTASourceEditor(AModule: IOTAModule): IOTASourceEditor;
6285 function GetSourceCode(ASourceEditor: IOTASourceEditor): String;
@@ -152,6 +175,11 @@
152175 Result := GetIOTAModuleServices.MainProjectGroup;
153176 end;
154177
178+function GetIOTAModuleFromFileName(AFileName: String): IOTAModule;
179+begin
180+ Result := GetIOTAModuleServices.FindModule(AFileName);
181+end;
182+
155183 function GetSelectedIOTAProject: IOTAProject;
156184 var
157185 Dummy: String;
Show on old repository browser