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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
unit ua;
interface
implementation
uses
windows, commctrl, messages,
mirutils, common, dbsettings, io, m_api, wrapper, editwrapper,
global;
{$R ua.res}
{$include i_uconst.inc}
{$include i_uavars.inc}
// in - Action ID, out - action (group) number
function GetUABranch(setting:pAnsiChar;id:cardinal):pAnsiChar;
var
i:integer;
p,p1:pAnsiChar;
begin
result:=nil;
p1:=StrCopyE(setting,opt_groups);
for i:=0 to CallService(MS_ACT_GETLIST,0,0)-1 do
begin
p:=StrEnd(IntToStr(p1,i));
p^:='/'; inc(p);
StrCopy(p,opt_id);
if DBReadDWord(0,DBBranch,setting)=id then
begin
p^:=#0;
result:=p;
break;
end;
end;
end;
var
amLink:tActionLink;
{$include i_uaplaces.inc}
{$include i_options.inc}
{$include i_opt_dlg.inc}
{$include i_ua.inc}
{$include i_inoutxm.inc}
// ------------ base interface functions -------------
procedure CheckPlacesAbility;
var
i:integer;
begin
for i:=0 to NumTypes-1 do
begin
with NamesArray[i] do
begin
enable:=(service=nil) or (ServiceExists(service)<>0);
end;
end;
end;
procedure Init;
begin
GetModuleFileNameW(hInstance,szMyPath,MAX_PATH);
CreateServiceFunction(SERVICE_WITH_LPARAM_NAME,@ServiceCallWithLParam);
CreateServiceFunction(TTB_SERVICE_NAME ,@TTBServiceCall);
CheckPlacesAbility;
CreateUActionList;
HookEvent(ME_TTB_MODULELOADED ,@OnTTBLoaded);
HookEvent(ME_MSG_TOOLBARLOADED,@OnTabBBLoaded);
HookEvent(ME_MSG_BUTTONPRESSED,@OnTabButtonPressed);
HookEvent(ME_ACT_CHANGED ,@ActListChange);
HookEvent(ME_CLIST_PREBUILDMAINMENU , PreBuildMainMenu);
HookEvent(ME_CLIST_PREBUILDCONTACTMENU, PreBuildContactMenu);
HookEvent(ME_CLIST_PREBUILDTRAYMENU , PreBuildTrayMenu);
HookEvent(ME_ACT_INOUT,@ActInOut);
end;
procedure DeInit;
var
i:integer;
begin
if Length(UActionList)>0 then
begin
for i:=HIGH(UActionList) downto 0 do
begin
DeleteUAction(i,false);
end;
SetLength(UActionList,0);
end;
SetLength(arMenuRec,0);
end;
function AddOptionPage(var tmpl:pAnsiChar;var proc:pointer;var name:PAnsiChar):integer;
begin
result:=0;
tmpl:=PAnsiChar(IDD_UA);
proc:=@DlgProcOpt;
name:='Use Actions';
end;
procedure InitLink;
begin
amLink.Next :=ActionLink;
amLink.Init :=@Init;
amLink.DeInit :=@DeInit;
amLink.AddOption:=@AddOptionPage;
ActionLink :=@amLink;
end;
initialization
InitLink;
end.
|