Skip to content

Commit 2ff4c51

Browse files
author
César Cardoso
committed
bk/2024-05-21-1733
1 parent c115f79 commit 2ff4c51

File tree

3 files changed

+226
-10
lines changed

3 files changed

+226
-10
lines changed

Src/Utils/C4D.Wizard.Utils.OTA.pas

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,11 @@ TC4DWizardUtilsOTA = class
4949
class function GetIOTAWizardServices: IOTAWizardServices;
5050
class function GetIOTAEditView(AIOTAModule: IOTAModule): IOTAEditView; overload;
5151
class function GetIOTAEditView(AIOTASourceEditor: IOTASourceEditor): IOTAEditView; overload;
52+
///<summary> Get the active source editor (Tab selected in editor) </summary>
5253
class function GetIOTASourceEditor(AIOTAModule: IOTAModule): IOTASourceEditor; overload;
54+
///<summary> Get the active source editor (Tab selected in editor) </summary>
5355
class function GetIOTASourceEditor(AIOTAEditor: IOTAEditor): IOTASourceEditor; overload;
56+
///<summary> Get the active source editor (Tab selected in editor) </summary>
5457
class function GetIOTASourceEditor(AIOTAModule: IOTAModule; const AFileName: string): IOTASourceEditor; overload;
5558
class function GetIOTAEditBufferCurrentModule: IOTAEditBuffer;
5659
class function GetIOTAEditBuffer(AIOTAModule: IOTAModule): IOTAEditBuffer;
@@ -530,7 +533,7 @@ class function TC4DWizardUtilsOTA.GetIOTAEditView(AIOTAModule: IOTAModule): IOTA
530533
if(LIOTASourceEditor = nil)then
531534
Exit;
532535

533-
LIOTAEditView := GetIOTAEditView(LIOTASourceEditor);
536+
LIOTAEditView := Self.GetIOTAEditView(LIOTASourceEditor);
534537
if(LIOTAEditView = nil)then
535538
Exit;
536539
//LIOTASourceEditor.Show;

Src/View/C4D.Wizard.View.About.dfm

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2111,8 +2111,34 @@ object C4DWizardViewAbout: TC4DWizardViewAbout
21112111
Align = alLeft
21122112
Caption = 'Teste'
21132113
TabOrder = 1
2114-
Visible = False
21152114
OnClick = btnTesteClick
21162115
end
2116+
object Button1: TButton
2117+
Left = 112
2118+
Top = 3
2119+
Width = 75
2120+
Height = 25
2121+
Caption = 'Button1'
2122+
TabOrder = 2
2123+
OnClick = Button1Click
2124+
end
2125+
object Button2: TButton
2126+
Left = 193
2127+
Top = 6
2128+
Width = 75
2129+
Height = 25
2130+
Caption = 'Button2'
2131+
TabOrder = 3
2132+
OnClick = Button2Click
2133+
end
2134+
object Button3: TButton
2135+
Left = 288
2136+
Top = -1
2137+
Width = 75
2138+
Height = 25
2139+
Caption = 'Button3'
2140+
TabOrder = 4
2141+
OnClick = Button3Click
2142+
end
21172143
end
21182144
end

Src/View/C4D.Wizard.View.About.pas

Lines changed: 195 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ interface
55
uses
66
System.Classes,
77
System.SysUtils,
8+
ToolsAPI,
89
Vcl.Controls,
910
Vcl.ExtCtrls,
1011
Vcl.Forms,
@@ -35,6 +36,9 @@ TC4DWizardViewAbout = class(TForm)
3536
Panel1: TPanel;
3637
lbDonateToCode4Delphi: TLabel;
3738
imgDonate: TImage;
39+
Button1: TButton;
40+
Button2: TButton;
41+
Button3: TButton;
3842
procedure FormShow(Sender: TObject);
3943
procedure btnOKClick(Sender: TObject);
4044
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
@@ -45,6 +49,9 @@ TC4DWizardViewAbout = class(TForm)
4549
procedure FormCreate(Sender: TObject);
4650
procedure btnTesteClick(Sender: TObject);
4751
procedure lbDonateToCode4DelphiClick(Sender: TObject);
52+
procedure Button1Click(Sender: TObject);
53+
procedure Button2Click(Sender: TObject);
54+
procedure Button3Click(Sender: TObject);
4855
private
4956

5057
public
@@ -122,19 +129,199 @@ procedure TC4DWizardViewAbout.lbSiteCode4DelphiMouseMove(Sender: TObject; Shift:
122129
end;
123130

124131
procedure TC4DWizardViewAbout.btnTesteClick(Sender: TObject);
125-
const
126-
MSG = 'Carregando conteúdo.';
127132
var
133+
LIOTAModuleServices: IOTAModuleServices;
134+
LIOTASourceEditor: IOTASourceEditor;
135+
LFileName: string;
136+
i: integer;
137+
LContFile: Integer;
128138
LMsg: string;
139+
140+
LIOTAModule: IOTAModule;
141+
LReader: IOTAEditReader;
142+
begin
143+
LIOTAModule := TC4DWizardUtilsOTA.GetCurrentModule;
144+
LFileName := '';
145+
LIOTASourceEditor := TC4DWizardUtilsOTA.GetIOTASourceEditor(LIOTAModule);
146+
if LIOTASourceEditor <> nil then
147+
LFileName := LIOTASourceEditor.FileName;
148+
149+
TC4DWizardUtils.ShowMsg('Atual: ' + LFileName);
150+
//**
151+
152+
LIOTAModuleServices := TC4DWizardUtilsOTA.GetIOTAModuleServices;
153+
if(not Assigned(LIOTAModuleServices))then
154+
raise Exception.Create('No Units Opened was found');
155+
156+
mmMensagem.Lines.Clear;
157+
for i := 0 to pred(LIOTAModuleServices.ModuleCount) do
158+
begin
159+
LIOTAModule := LIOTAModuleServices.GetModule(i);
160+
161+
LIOTASourceEditor := TC4DWizardUtilsOTA.GetIOTASourceEditor(LIOTAModule);
162+
if LIOTASourceEditor <> nil then
163+
if LIOTASourceEditor.CreateReader <> nil then
164+
mmMensagem.Lines.Add(LIOTAModule.FileName);
165+
166+
167+
168+
{for LContFile := 0 to pred(LIOTAModule.GetModuleFileCount)do
169+
begin
170+
//LIOTAEditor := LIOTAModule.GetModuleFileEditor(LContFile);
171+
//if(Supports(LIOTAEditor, IOTASourceEditor, LIOTASourceEditor))then
172+
//begin
173+
// Self.ListFilesAdd(LIOTAEditor.FileName);
174+
// Break;
175+
//end;
176+
end;}
177+
end;
178+
end;
179+
180+
function CnOtaGetFileEditorForModule(Module: IOTAModule; Index: Integer): IOTAEditor;
129181
begin
130-
LMsg := 'Acesse nosso canal no ' +
131-
'YouTube e acompanhe nossos ' +
132-
'cursos: ' + sLineBreak +
133-
'@code4delphi';
182+
Result := nil;
183+
if not Assigned(Module) then
184+
Exit;
134185

135-
ShowMessage(LMsg);
186+
try
187+
{$IFDEF BCB5}
188+
if IsCpp(Module.FileName) and (Module.GetModuleFileCount = 2) and (Index = 1) then
189+
Index := 2;
190+
{$ENDIF}
191+
Result := Module.GetModuleFileEditor(Index);
192+
except
193+
Result := nil;
194+
end;
195+
end;
136196

137-
ShowMessage(MSG + ' Aguarde...');
197+
function CnOtaIsFileOpen(const FileName: string): Boolean;
198+
var
199+
ModuleServices: IOTAModuleServices;
200+
Module: IOTAModule;
201+
FileEditor: IOTAEditor;
202+
I: Integer;
203+
begin
204+
Result := False;
205+
206+
ModuleServices := BorlandIDEServices as IOTAModuleServices;
207+
if ModuleServices = nil then
208+
Exit;
209+
210+
Module := ModuleServices.FindModule(FileName);
211+
if Assigned(Module) then
212+
begin
213+
for I := 0 to Module.GetModuleFileCount-1 do
214+
begin
215+
FileEditor := CnOtaGetFileEditorForModule(Module, I);
216+
Assert(Assigned(FileEditor));
217+
218+
Result := CompareText(FileName, FileEditor.FileName) = 0;
219+
if Result then
220+
Exit;
221+
end;
222+
end;
223+
end;
224+
225+
procedure TC4DWizardViewAbout.Button1Click(Sender: TObject);
226+
var
227+
LIOTAModuleServices: IOTAModuleServices;
228+
I: Integer;
229+
LIOTAModule: IOTAModule;
230+
LIOTAEditor: IOTAEditor;
231+
begin
232+
mmMensagem.Lines.Clear;
233+
234+
LIOTAModuleServices := BorlandIDEServices as IOTAModuleServices;
235+
for I := 0 to LIOTAModuleServices.ModuleCount - 1 do
236+
begin
237+
LIOTAModule := LIOTAModuleServices.Modules[I];
238+
LIOTAEditor := LIOTAModule.CurrentEditor;
239+
if LIOTAEditor = nil then
240+
Continue;
241+
242+
if not CnOtaIsFileOpen(LIOTAModule.FileName) then
243+
Continue;
244+
245+
if not TC4DWizardUtilsOTA.FileIsOpenInIDE(LIOTAModule.FileName) then
246+
Continue;
247+
248+
mmMensagem.Lines.Add(LIOTAModule.FileName);
249+
end;
250+
end;
251+
252+
procedure TC4DWizardViewAbout.Button2Click(Sender: TObject);
253+
var
254+
LIOTAModuleServices: IOTAModuleServices;
255+
LIOTAModule: IOTAModule;
256+
LIOTAEditor: IOTAEditor;
257+
i: Integer;
258+
LIOTASourceEditor: IOTASourceEditor;
259+
LIOTAEditView: IOTAEditView;
260+
begin
261+
mmMensagem.Lines.Clear;
262+
263+
LIOTAModuleServices := BorlandIDEServices as IOTAModuleServices;
264+
265+
for i := 0 to Pred(LIOTAModuleServices.ModuleCount) do
266+
begin
267+
LIOTAModule := LIOTAModuleServices.Modules[i];
268+
269+
mmMensagem.Lines.Add(LIOTAModule.FileName +
270+
' / ' + LIOTAModule.OwnerCount.ToString + ' / ' + LIOTAModule.OwnerModuleCount.ToString +
271+
' / ' + LIOTAModule.HasCoClasses.ToString(TUseBoolStrs.True) +
272+
' / ' + LIOTAModule.ModuleFileCount.ToString +
273+
' / ' + LIOTAModule.FileSystem);
274+
275+
276+
LIOTAEditor := LIOTAModule.CurrentEditor;
277+
278+
LIOTASourceEditor := TC4DWizardUtilsOTA.GetIOTASourceEditor(LIOTAModule);
279+
if(LIOTASourceEditor <> nil)then
280+
begin
281+
mmMensagem.Lines.Add(' - LIOTASourceEditor: ' + LIOTASourceEditor.GetSubViewCount.ToString +
282+
' / A: ' + LIOTASourceEditor.GetSubViewIndex.ToString +
283+
' / B: ' + LIOTASourceEditor.GetLinesInBuffer.ToString +
284+
' / C: ' + LIOTASourceEditor.EditViewCount.ToString);
285+
286+
287+
LIOTAEditView := TC4DWizardUtilsOTA.GetIOTAEditView(LIOTASourceEditor);
288+
end;
289+
290+
291+
292+
293+
{if LIOTAModule.OwnerCount > 0 then
294+
mmMensagem.Lines.Add(' - Owners: ' + LIOTAModule.Owners[0].FileName);
295+
296+
if LIOTAModule.OwnerModuleCount > 0 then
297+
mmMensagem.Lines.Add(' - Owners: ' + LIOTAModule.OwnerModules[0].FileName);}
298+
299+
end;
300+
end;
301+
302+
procedure TC4DWizardViewAbout.Button3Click(Sender: TObject);
303+
var
304+
LIOTAModuleServices: IOTAModuleServices;
305+
LIOTAModule: IOTAModule;
306+
LIOTASourceEditor: IOTASourceEditor;
307+
i: Integer;
308+
begin
309+
mmMensagem.Lines.Clear;
310+
311+
LIOTAModuleServices := BorlandIDEServices as IOTAModuleServices;
312+
for i := 0 to Pred(LIOTAModuleServices.ModuleCount) do
313+
begin
314+
LIOTAModule := LIOTAModuleServices.Modules[i];
315+
316+
LIOTASourceEditor := TC4DWizardUtilsOTA.GetIOTASourceEditor(LIOTAModule);
317+
if(LIOTASourceEditor = nil)then
318+
Continue;
319+
320+
if LIOTASourceEditor.EditViewCount <= 0 then
321+
Continue;
322+
323+
mmMensagem.Lines.Add(LIOTAModule.FileName + ' / C: ' + LIOTASourceEditor.EditViewCount.ToString);
324+
end;
138325
end;
139326

140327
end.

0 commit comments

Comments
 (0)