-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathuplugin.pas
81 lines (64 loc) · 1.89 KB
/
uplugin.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
unit uplugin;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, uscmdrafttypes, uplugintypes;
function InitMyPlugin(RequestedSections: PRequestedMenuSections): boolean;
function GetMyPluginMenu(Section: TMenuSection): string;
function RunMyPlugin(const AContext: TPluginContext): boolean;
implementation
uses Forms, Interfaces, Windows, umainform, umapinfo;
function InitMyPlugin(RequestedSections: PRequestedMenuSections): boolean;
begin
RequestedSections^[0] := SectionCodeToLongWord(PluginMenuSection);
Application.Initialize;
result := true;
end;
function GetMyPluginMenu(Section: TMenuSection): string;
begin
if Section = SectionCodeToLongWord(PluginMenuSection) then
result := PluginMenu
else
result := '?';
end;
function RunMyPlugin(const AContext: TPluginContext): boolean;
{ procedure DumpChunk(AChunk: PChunkData; AName: string);
var
dump: file;
begin
assignfile(dump,'c:\scmdraft2\'+AName+'.dat');
rewrite(dump,1);
BlockWrite(dump, AChunk^.Data^, AChunk^.Size);
closefile(dump);
end; }
var
fMain: TFMain;
begin
if AContext.Section = SectionCodeToLongWord(PluginMenuSection) then
begin
{ DumpChunk(AContext.Triggers, 'triggers');
DumpChunk(AContext.UnitPropertiesList, 'unitprop');
DumpChunk(AContext.UnitPropUsage, 'unitpropuse'); }
MapInfo := TPluginMapInfo.Create(AContext);
try
fMain := TFMain.Create(nil);
try
fMain.Position := poDefault;
fMain.WindowState := wsMaximized;
fMain.ShowModal;
except
on ex: Exception do
MessageBox(0, pchar(ex.Message), 'Error', 0);
end;
fMain.Free;
except
on ex: Exception do
MessageBox(0, pchar(ex.Message), 'Error', 0);
end;
FreeAndNil(MapInfo);
result := true;
end
else
result := false;
end;
end.