From 690f5e6d29d1c85c4be72638eb22843964c2f512 Mon Sep 17 00:00:00 2001 From: Alexander Lantsev Date: Fri, 24 Apr 2015 08:21:28 +0000 Subject: All non-working stuff moved from trunk git-svn-id: http://svn.miranda-ng.org/main/trunk@13071 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/!Deprecated/Actman20/actman.dpr | 197 -- plugins/!Deprecated/Actman20/global.pas | 21 - plugins/!Deprecated/Actman20/hooks/hooks.pas | 73 - plugins/!Deprecated/Actman20/hooks/hooks.rc | 28 - plugins/!Deprecated/Actman20/hooks/hooks.res | Bin 688 -> 0 bytes plugins/!Deprecated/Actman20/hooks/i_hconst.inc | 20 - plugins/!Deprecated/Actman20/hooks/i_hook.inc | 154 -- plugins/!Deprecated/Actman20/hooks/i_opt_dlg.inc | 410 ----- plugins/!Deprecated/Actman20/hooks/i_options.inc | 71 - plugins/!Deprecated/Actman20/i_action.inc | 951 ---------- plugins/!Deprecated/Actman20/i_actlow.inc | 836 --------- plugins/!Deprecated/Actman20/i_const.inc | 219 --- plugins/!Deprecated/Actman20/i_contact.inc | 113 -- plugins/!Deprecated/Actman20/i_dlglists.inc | 75 - plugins/!Deprecated/Actman20/i_inoutxm.inc | 1212 ------------- plugins/!Deprecated/Actman20/i_opt_dlg.inc | 215 --- plugins/!Deprecated/Actman20/i_opt_dlg2.inc | 2095 ---------------------- plugins/!Deprecated/Actman20/i_options.inc | 459 ----- plugins/!Deprecated/Actman20/i_services.inc | 131 -- plugins/!Deprecated/Actman20/i_vars.inc | 31 - plugins/!Deprecated/Actman20/i_visual.inc | 1073 ----------- plugins/!Deprecated/Actman20/ico/advance.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/apply.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/chain.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/contact.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/delete.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/down.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/export.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/format.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/import.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/insert.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/message.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/new.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/program.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/reload.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/rw.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/service.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/test.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/up.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/vcheck.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ico/vuncheck.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/m_actions.inc | 193 -- plugins/!Deprecated/Actman20/make.bat | 30 - plugins/!Deprecated/Actman20/options.rc | 328 ---- plugins/!Deprecated/Actman20/options.res | Bin 32904 -> 0 bytes plugins/!Deprecated/Actman20/question.pas | 51 - plugins/!Deprecated/Actman20/readme.txt | 126 -- plugins/!Deprecated/Actman20/services.ini | 497 ----- plugins/!Deprecated/Actman20/tasks/i_opt_dlg.inc | 536 ------ plugins/!Deprecated/Actman20/tasks/i_options.inc | 99 - plugins/!Deprecated/Actman20/tasks/i_service.inc | 87 - plugins/!Deprecated/Actman20/tasks/i_task.inc | 242 --- plugins/!Deprecated/Actman20/tasks/i_tconst.inc | 27 - plugins/!Deprecated/Actman20/tasks/scheduler.pas | 86 - plugins/!Deprecated/Actman20/tasks/tasks.rc | 47 - plugins/!Deprecated/Actman20/tasks/tasks.res | Bin 1288 -> 0 bytes plugins/!Deprecated/Actman20/ua/action.ico | Bin 1150 -> 0 bytes plugins/!Deprecated/Actman20/ua/i_inoutxm.inc | 357 ---- plugins/!Deprecated/Actman20/ua/i_opt_dlg.inc | 571 ------ plugins/!Deprecated/Actman20/ua/i_options.inc | 337 ---- plugins/!Deprecated/Actman20/ua/i_ua.inc | 155 -- plugins/!Deprecated/Actman20/ua/i_uaplaces.inc | 831 --------- plugins/!Deprecated/Actman20/ua/i_uavars.inc | 124 -- plugins/!Deprecated/Actman20/ua/i_uconst.inc | 34 - plugins/!Deprecated/Actman20/ua/ua.pas | 124 -- plugins/!Deprecated/Actman20/ua/ua.rc | 51 - plugins/!Deprecated/Actman20/ua/ua.res | Bin 2512 -> 0 bytes 67 files changed, 13317 deletions(-) delete mode 100644 plugins/!Deprecated/Actman20/actman.dpr delete mode 100644 plugins/!Deprecated/Actman20/global.pas delete mode 100644 plugins/!Deprecated/Actman20/hooks/hooks.pas delete mode 100644 plugins/!Deprecated/Actman20/hooks/hooks.rc delete mode 100644 plugins/!Deprecated/Actman20/hooks/hooks.res delete mode 100644 plugins/!Deprecated/Actman20/hooks/i_hconst.inc delete mode 100644 plugins/!Deprecated/Actman20/hooks/i_hook.inc delete mode 100644 plugins/!Deprecated/Actman20/hooks/i_opt_dlg.inc delete mode 100644 plugins/!Deprecated/Actman20/hooks/i_options.inc delete mode 100644 plugins/!Deprecated/Actman20/i_action.inc delete mode 100644 plugins/!Deprecated/Actman20/i_actlow.inc delete mode 100644 plugins/!Deprecated/Actman20/i_const.inc delete mode 100644 plugins/!Deprecated/Actman20/i_contact.inc delete mode 100644 plugins/!Deprecated/Actman20/i_dlglists.inc delete mode 100644 plugins/!Deprecated/Actman20/i_inoutxm.inc delete mode 100644 plugins/!Deprecated/Actman20/i_opt_dlg.inc delete mode 100644 plugins/!Deprecated/Actman20/i_opt_dlg2.inc delete mode 100644 plugins/!Deprecated/Actman20/i_options.inc delete mode 100644 plugins/!Deprecated/Actman20/i_services.inc delete mode 100644 plugins/!Deprecated/Actman20/i_vars.inc delete mode 100644 plugins/!Deprecated/Actman20/i_visual.inc delete mode 100644 plugins/!Deprecated/Actman20/ico/advance.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/apply.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/chain.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/contact.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/delete.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/down.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/export.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/format.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/import.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/insert.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/message.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/new.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/program.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/reload.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/rw.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/service.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/test.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/up.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/vcheck.ico delete mode 100644 plugins/!Deprecated/Actman20/ico/vuncheck.ico delete mode 100644 plugins/!Deprecated/Actman20/m_actions.inc delete mode 100644 plugins/!Deprecated/Actman20/make.bat delete mode 100644 plugins/!Deprecated/Actman20/options.rc delete mode 100644 plugins/!Deprecated/Actman20/options.res delete mode 100644 plugins/!Deprecated/Actman20/question.pas delete mode 100644 plugins/!Deprecated/Actman20/readme.txt delete mode 100644 plugins/!Deprecated/Actman20/services.ini delete mode 100644 plugins/!Deprecated/Actman20/tasks/i_opt_dlg.inc delete mode 100644 plugins/!Deprecated/Actman20/tasks/i_options.inc delete mode 100644 plugins/!Deprecated/Actman20/tasks/i_service.inc delete mode 100644 plugins/!Deprecated/Actman20/tasks/i_task.inc delete mode 100644 plugins/!Deprecated/Actman20/tasks/i_tconst.inc delete mode 100644 plugins/!Deprecated/Actman20/tasks/scheduler.pas delete mode 100644 plugins/!Deprecated/Actman20/tasks/tasks.rc delete mode 100644 plugins/!Deprecated/Actman20/tasks/tasks.res delete mode 100644 plugins/!Deprecated/Actman20/ua/action.ico delete mode 100644 plugins/!Deprecated/Actman20/ua/i_inoutxm.inc delete mode 100644 plugins/!Deprecated/Actman20/ua/i_opt_dlg.inc delete mode 100644 plugins/!Deprecated/Actman20/ua/i_options.inc delete mode 100644 plugins/!Deprecated/Actman20/ua/i_ua.inc delete mode 100644 plugins/!Deprecated/Actman20/ua/i_uaplaces.inc delete mode 100644 plugins/!Deprecated/Actman20/ua/i_uavars.inc delete mode 100644 plugins/!Deprecated/Actman20/ua/i_uconst.inc delete mode 100644 plugins/!Deprecated/Actman20/ua/ua.pas delete mode 100644 plugins/!Deprecated/Actman20/ua/ua.rc delete mode 100644 plugins/!Deprecated/Actman20/ua/ua.res (limited to 'plugins/!Deprecated/Actman20') diff --git a/plugins/!Deprecated/Actman20/actman.dpr b/plugins/!Deprecated/Actman20/actman.dpr deleted file mode 100644 index e2a67414f5..0000000000 --- a/plugins/!Deprecated/Actman20/actman.dpr +++ /dev/null @@ -1,197 +0,0 @@ -{$include compilers.inc} -{$IFDEF COMPILER_16_UP} - {$WEAKLINKRTTI ON} - {.$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} -{$ENDIF} -{$IMAGEBASE $13200000} -library actman; -{%ToDo 'actman.todo'} -{%File 'i_actlow.inc'} -{%File 'm_actions.inc'} -{%File 'm_actman.inc'} -{%File 'i_action.inc'} -{%File 'i_const.inc'} -{%File 'i_contact.inc'} -{%File 'i_opt_dlg2.inc'} -{%File 'i_opt_dlg.inc'} -{%File 'i_visual.inc'} -{%File 'i_options.inc'} -{%File 'i_services.inc'} -{%File 'i_vars.inc'} -{%File 'i_inoutxm.inc'} -{%File 'tasks\i_opt_dlg.inc'} -{%File 'tasks\i_options.inc'} -{%File 'tasks\i_task.inc'} -{%File 'hooks\i_options.inc'} -{%File 'hooks\i_hook.inc'} -{%File 'hooks\i_opt_dlg.inc'} -{%File 'ua\i_opt_dlg.inc'} -{%File 'ua\i_inoutxm.inc'} -{%File 'ua\i_options.inc'} -{%File 'ua\i_ua.inc'} -{%File 'ua\i_uaplaces.inc'} -{%File 'ua\i_uconst.inc'} - -uses - m_api, - Windows, - messages, - commctrl, - common, - wrapper, - io, - dbsettings, - mirutils, - syswin, - question, - mApiCardM, - mircontacts, - global, - sedit, - strans, - ua in 'ua\ua.pas', - hooks in 'hooks\hooks.pas', - scheduler in 'tasks\scheduler.pas'; - -{$r options.res} - -const - PluginName = 'Action Manager'; -var - hHookShutdown, - onloadhook, - opthook:cardinal; - hevaction,hHookChanged,hevinout:cardinal; - hsel,hinout,hfree,hget,hrun,hrung,hrunp:cardinal; - -{$include m_actions.inc} -{$include m_actman.inc} - - -function MirandaPluginInfoEx(mirandaVersion:DWORD):PPLUGININFOEX; cdecl; -begin - result:=@PluginInfo; - PluginInfo.cbSize :=SizeOf(TPLUGININFOEX); - PluginInfo.shortName :='Action manager'; - PluginInfo.version :=$00020001; - PluginInfo.description:='Plugin for manage hotkeys to open contact window, insert text, '+ - 'run program and call services'; - PluginInfo.author :='Awkward'; - PluginInfo.authorEmail:='panda75@bk.ru; awk1975@ya.ru'; - PluginInfo.copyright :='(c) 2007-2012 Awkward'; - PluginInfo.homepage :='http://code.google.com/p/delphi-miranda-plugins/'; - PluginInfo.flags :=UNICODE_AWARE; - PluginInfo.uuid :=MIID_ACTMAN; -end; - -{$include i_const.inc} -{$include i_vars.inc} - -{$include i_action.inc} -{$include i_actlow.inc} -{$include i_options.inc} -{$include i_contact.inc} -{$include i_opt_dlg.inc} -{$include i_inoutxm.inc} -{$include i_services.inc} - -function PreShutdown(wParam:WPARAM;lParam:LPARAM):int;cdecl; -var - ptr:pActionLink; -begin - result:=0; - - ptr:=ActionLink; - while ptr<>nil do - begin - if @ptr^.DeInit<>nil then - ptr^.DeInit; - ptr:=ptr^.Next; - end; - - FreeGroups; - - UnhookEvent(hHookShutdown); - UnhookEvent(opthook); - - DestroyHookableEvent(hHookChanged); - DestroyHookableEvent(hevinout); - DestroyHookableEvent(hevaction); - - DestroyServiceFunction(hfree); - DestroyServiceFunction(hget); - DestroyServiceFunction(hrun); - DestroyServiceFunction(hrung); - DestroyServiceFunction(hrunp); - DestroyServiceFunction(hinout); - DestroyServiceFunction(hsel); -end; - -// This function implements autostart action execution after all others plugins loading -function DoAutostart(wParam:WPARAM;lParam:LPARAM):int;cdecl; -begin - Result:=0; - UnhookEvent(onloadhook); - - CallService(MS_ACT_RUNBYNAME,TWPARAM(AutoStartName),0); -end; - -function OnModulesLoaded(wParam:WPARAM;lParam:LPARAM):int;cdecl; -var - ptr:pActionLink; -begin - Result:=0; - UnhookEvent(onloadhook); - - LoadGroups; - RegisterIcons; - - opthook :=HookEvent(ME_OPT_INITIALISE ,@OnOptInitialise); - hHookShutdown:=HookEvent(ME_SYSTEM_SHUTDOWN{ME_SYSTEM_OKTOEXIT},@PreShutdown); - NotifyEventHooks(hHookChanged,twparam(ACTM_LOADED),0); - - IsMultiThread:=true; - // Load additional modules - ptr:=ActionLink; - while ptr<>nil do - begin - if @ptr^.Init<>nil then - ptr^.Init; - ptr:=ptr^.Next; - end; - - onloadhook:=HookEvent(ME_SYSTEM_MODULESLOADED,@DoAutostart); -end; - -function Load():int; cdecl; -begin - Result:=0; - Langpack_register; - - hHookChanged:=CreateHookableEvent(ME_ACT_CHANGED); - hevinout :=CreateHookableEvent(ME_ACT_INOUT); - hevaction :=CreateHookableEvent(ME_ACT_ACTION); - - hfree :=CreateServiceFunction(MS_ACT_FREELIST ,@ActFreeList); - hget :=CreateServiceFunction(MS_ACT_GETLIST ,@ActGetList); - hrun :=CreateServiceFunction(MS_ACT_RUNBYID ,@ActRun); - hrung :=CreateServiceFunction(MS_ACT_RUNBYNAME,@ActRunGroup); - hrunp :=CreateServiceFunction(MS_ACT_RUNPARAMS,@ActRunParam); - hinout:=CreateServiceFunction(MS_ACT_INOUT ,@ActInOut); - hsel :=CreateServiceFunction(MS_ACT_SELECT ,@ActSelect); - - onloadhook:=HookEvent(ME_SYSTEM_MODULESLOADED,@OnModulesLoaded); -end; - -function Unload: int; cdecl; -begin - Result:=0; -end; - -exports - Load, Unload, MirandaPluginInfoEx; - -initialization - DisableThreadLibraryCalls(hInstance); - -end. diff --git a/plugins/!Deprecated/Actman20/global.pas b/plugins/!Deprecated/Actman20/global.pas deleted file mode 100644 index 50254b383e..0000000000 --- a/plugins/!Deprecated/Actman20/global.pas +++ /dev/null @@ -1,21 +0,0 @@ -unit global; - -interface - -type - tAddOption = function(var tmpl:pAnsiChar;var proc:pointer;var name:PAnsiChar):integer; -type - pActionLink=^tActionLink; - tActionLink=record - Next :pActionLink; - Init :procedure; - DeInit :procedure; - AddOption:tAddOption; - end; - -const - ActionLink:pActionLink=nil; - -implementation - -end. \ No newline at end of file diff --git a/plugins/!Deprecated/Actman20/hooks/hooks.pas b/plugins/!Deprecated/Actman20/hooks/hooks.pas deleted file mode 100644 index b3309c327a..0000000000 --- a/plugins/!Deprecated/Actman20/hooks/hooks.pas +++ /dev/null @@ -1,73 +0,0 @@ -unit hooks; - -interface - -procedure Init; -procedure DeInit; -function AddOptionPage(var tmpl:pAnsiChar;var proc:pointer;var name:PAnsiChar):integer; - -implementation - -uses - windows, commctrl, messages, - mirutils, common, dbsettings, io, m_api, wrapper, - global, mApiCardM; - -{$R hooks.res} - -{$include m_actman.inc} - -{$include i_hook.inc} -{$include i_hconst.inc} -{$include i_options.inc} -{$include i_opt_dlg.inc} - -// ------------ base interface functions ------------- - -procedure Init; -begin - - MessageWindow:=CreateWindowExW(0,'STATIC',nil,0,1,1,1,1,HWND_MESSAGE,0,hInstance,nil); - if MessageWindow<>0 then - SetWindowLongPtrW(MessageWindow,GWL_WNDPROC,LONG_PTR(@HookWndProc)); - - if LoadHooks=0 then - begin - MaxHooks:=8; - GetMem (HookList ,MaxHooks*SizeOf(tHookRec)); - FillChar(HookList^,MaxHooks*SizeOf(tHookRec),0); - end - else - SetAllHooks; -end; - -procedure DeInit; -begin - ClearHooks; - if MessageWindow<>0 then - DestroyWindow(MessageWindow); -end; - -function AddOptionPage(var tmpl:pAnsiChar;var proc:pointer;var name:PAnsiChar):integer; -begin - result:=0; - tmpl:=PAnsiChar(IDD_HOOKS); - proc:=@DlgProcOpt; - name:='Hooks'; -end; - -var - amLink:tActionLink; - -procedure InitLink; -begin - amLink.Next :=ActionLink; - amLink.Init :=@Init; - amLink.DeInit :=@DeInit; - amLink.AddOption:=@AddOptionPage; - ActionLink :=@amLink; -end; - -initialization - InitLink; -end. diff --git a/plugins/!Deprecated/Actman20/hooks/hooks.rc b/plugins/!Deprecated/Actman20/hooks/hooks.rc deleted file mode 100644 index ff351cc94d..0000000000 --- a/plugins/!Deprecated/Actman20/hooks/hooks.rc +++ /dev/null @@ -1,28 +0,0 @@ -#include "i_hconst.inc" - -LANGUAGE 0,0 - -IDD_HOOKS DIALOGEX 0, 0, 304, 226, 0 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0 -{ - CONTROL "", IDC_HOOKLIST, "SysListView32", - WS_BORDER | WS_TABSTOP | - LVS_SHOWSELALWAYS| LVS_REPORT | LVS_EDITLABELS,// | LVS_SINGLESEL - 0, 2, 280, 160, WS_EX_CONTROLPARENT - - CONTROL "Help" ,IDC_EVENT_HELP ,"MButtonClass",WS_TABSTOP,284, 2,16,16,$18000000 - CONTROL "Delete",IDC_HOOK_DELETE,"MButtonClass",WS_TABSTOP,284, 96,16,16,$18000000 - - CONTROL "New" ,IDC_HOOK_NEW ,"MButtonClass",WS_TABSTOP,284,126,16,16,$18000000 - CONTROL "Apply" ,IDC_HOOK_APPLY ,"MButtonClass",WS_TABSTOP,284,146,16,16,$18000000 - - CONTROL "Help" ,IDC_EVENT_CHELP,"MButtonClass",WS_TABSTOP,2 ,162,16,16,$18000000 - CTEXT "Event" ,-1 ,18, 165, 121, 11, SS_CENTERIMAGE - COMBOBOX IDC_EVENTLIST , 0, 178, 157, 128, CBS_DROPDOWN | CBS_SORT | WS_VSCROLL - CTEXT "Action",-1 , 0, 195, 157, 11, SS_CENTERIMAGE - COMBOBOX IDC_ACTIONLIST, 0, 208, 157, 128, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL - - LTEXT "",IDC_DESCR, 160, 165, 138, 57 -} diff --git a/plugins/!Deprecated/Actman20/hooks/hooks.res b/plugins/!Deprecated/Actman20/hooks/hooks.res deleted file mode 100644 index 1cf202f414..0000000000 Binary files a/plugins/!Deprecated/Actman20/hooks/hooks.res and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/hooks/i_hconst.inc b/plugins/!Deprecated/Actman20/hooks/i_hconst.inc deleted file mode 100644 index d011278b7e..0000000000 --- a/plugins/!Deprecated/Actman20/hooks/i_hconst.inc +++ /dev/null @@ -1,20 +0,0 @@ -{resource constants} -const - // dialogs - IDD_HOOKS = 1029; - - // icons - IDI_NEW = 1025; - IDI_DELETE = 1028; - - // Hook editor - IDC_HOOKLIST = 1025; - IDC_ACTIONLIST = 1026; - IDC_EVENTLIST = 1027; - IDC_EVENT_HELP = 1028; - IDC_HOOK_NEW = 1029; - IDC_HOOK_DELETE = 1030; - IDC_HOOK_APPLY = 1031; - IDC_EVENT_CHELP = 1032; - - IDC_DESCR = 1040; diff --git a/plugins/!Deprecated/Actman20/hooks/i_hook.inc b/plugins/!Deprecated/Actman20/hooks/i_hook.inc deleted file mode 100644 index 8b7b487d98..0000000000 --- a/plugins/!Deprecated/Actman20/hooks/i_hook.inc +++ /dev/null @@ -1,154 +0,0 @@ -{} - -const - HWND_MESSAGE = HWND(-3); -const - ACF_ASSIGNED = $80000000; // hook assigned - ACF_DISABLED = $10000000; // hook disabled -const - WM_RESETHOOKS = WM_USER+1312; - WM_FIRSTHOOK = WM_USER+1313; - WM_LASTHOOK = WM_FIRSTHOOK+1000; - -type - pHookRec = ^tHookRec; - tHookRec = record - flags :dword; - name :PAnsiChar; // name for hook - handle :THANDLE; // handle of hook - descr :PWideChar; // name for list - action :dword; // assigned action - message:uint; // window message for hook - end; - pHookList = ^tHookList; - tHookList = array [0..1023] of tHookRec; - -var - HookList:pHookList = nil; - MaxHooks:integer = 0; - MessageWindow:HWND = 0; - -function GetNextMessage:uint; -var - i:uint; - j:integer; -begin - result:=0; - for i:=WM_FIRSTHOOK to WM_LASTHOOK do - begin - for j:=0 to MaxHooks-1 do - begin - with HookList^[j] do - begin - if ((flags and ACF_ASSIGNED)<>0) and (i=message) then - begin - inc(result); - break; - end; - end; - end; - if result=0 then - begin - result:=i; - break; - end - else - result:=0; - end; -end; - -procedure SetAllHooks; -var - i:integer; - msg:cardinal; -begin - msg:=WM_FIRSTHOOK; - for i:=0 to MaxHooks-1 do - begin - with HookList[i] do - begin - message:=msg; - if (flags and ACF_ASSIGNED)<>0 then - begin - if (flags and ACF_DISABLED)<>0 then - begin - if handle<>0 then - begin - UnhookEvent(handle); - handle:=0; - end; - end - else - begin - if handle<>0 then - UnhookEvent(handle); - handle:=HookEventMessage(name,MessageWindow,message); - end; - end; - end; - inc(msg); - end; -end; - -function GetHookByMessage(msg:uint):pHookRec; -var - i:integer; -begin - result:=nil; - for i:=0 to MaxHooks-1 do - begin - with HookList[i] do - begin - if ((flags and ACF_ASSIGNED)<>0) and (msg=message) then - begin - result:=@HookList[i]; - break; - end; - end; - end; -end; - -function HookWndProc(Dialog:HWnd;hMessage:UINT;wParam:WPARAM;lParam:LPARAM):lresult; stdcall; -var - p:pHookRec; - ap:tAct_Param; -begin - result:=0; - case hMessage of - WM_FIRSTHOOK..WM_LASTHOOK: begin - p:=GetHookByMessage(hMessage); - if p<>nil then - begin - ap.flags :=ACTP_WAIT; - ap.Id :=p^.action; - ap.wParam:=wParam; - ap.lParam:=lParam; - result:=CallService(MS_ACT_RUNPARAMS,0,TLPARAM(@ap)); - end; - end; - else - result:=DefWindowProc(Dialog,hMessage,wParam,lParam); - end; -end; - -procedure ClearHooks; -var - i:integer; -begin - for i:=0 to MaxHooks-1 do - begin - with HookList[i] do - begin - if (flags and ACF_ASSIGNED)<>0 then - begin - mFreeMem(descr); - mFreeMem(name); - if handle<>0 then - UnhookEvent(handle); - end; - end; - end; - FreeMem(HookList); - MaxHooks:=0; -end; - diff --git a/plugins/!Deprecated/Actman20/hooks/i_opt_dlg.inc b/plugins/!Deprecated/Actman20/hooks/i_opt_dlg.inc deleted file mode 100644 index d208ec4384..0000000000 --- a/plugins/!Deprecated/Actman20/hooks/i_opt_dlg.inc +++ /dev/null @@ -1,410 +0,0 @@ -{} -const - settings:HWND = 0; -var - OldTableProc:pointer; - onactchanged:THANDLE; - ApiCard:tmApiCard; - -const - ACI_NEW :PAnsiChar = 'ACI_New'; - ACI_APPLY :PAnsiChar = 'ACI_Apply'; - ACI_DELETE :PAnsiChar = 'ACI_Delete'; - -procedure CheckHookList(wnd:HWND); -var - i:integer; - li:LV_ITEMW; - arr:array [0..127] of WideChar; -begin - ClearHooks; - - li.mask :=LVIF_TEXT or LVIF_PARAM; - li.pszText :=@arr; - li.cchTextMax:=SizeOf(arr) div SizeOf(WideChar); - - MaxHooks:=SendMessage(wnd,LVM_GETITEMCOUNT,0,0); - - GetMem (HookList ,MaxHooks*SizeOf(tHookRec)); - FillChar(HookList^,MaxHooks*SizeOf(tHookRec),0); - for i:=0 to MaxHooks-1 do - begin - with HookList[i] do - begin - flags:=ACF_ASSIGNED; - li.iItem :=i; - li.iSubItem:=0; - SendMessageW(wnd,LVM_GETITEMW,0,LPARAM(@li)); - StrDupW(descr,arr); - action:=li.lParam; - li.iSubItem:=1; - SendMessageA(wnd,LVM_GETITEMA,0,LPARAM(@li)); - StrDup(name,pAnsiChar(@arr)); - - if ListView_GetCheckState(wnd,i)=0 then // disabled - flags:=flags or ACF_DISABLED; - end; - end; -end; - -procedure FillHookList(wnd:HWND); -var - i:integer; - li:LV_ITEMW; -begin - SendMessage(wnd,LVM_DELETEALLITEMS,0,0); - for i:=0 to MaxHooks-1 do - begin - with HookList[i] do - begin - if (flags and ACF_ASSIGNED)<>0 then - begin - li.mask :=LVIF_TEXT+LVIF_PARAM; - li.iSubItem:=0; - li.iItem :=i; - li.lParam :=action; - li.pszText :=descr; - li.iItem :=SendMessageW(wnd,LVM_INSERTITEMW,0,LPARAM(@li)); - li.mask :=LVIF_TEXT; - li.iSubItem:=1; - li.pszText :=pWideChar(name); - SendMessageA(wnd,LVM_SETITEMA,0,LPARAM(@li)); - ListView_SetCheckState(wnd,li.iItem,(flags and ACF_DISABLED)=0); - end; - end; - end; - ListView_SetItemState(wnd,0, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); -end; - -procedure FillActionList(wnd:HWND); -var - ptr,ptr1:pChain; - i,cnt:integer; -begin - cnt:=CallService(MS_ACT_GETLIST,0,LPARAM(@ptr)); - SendMessage(wnd,CB_RESETCONTENT,0,0); - if cnt>0 then - begin - ptr1:=ptr; - inc(pbyte(ptr),4); - for i:=0 to cnt-1 do - begin - CB_AddStrDataW(wnd,ptr^.descr,ptr^.id); - inc(ptr); - end; - - CallService(MS_ACT_FREELIST,0,LPARAM(ptr1)); - SendMessage(wnd,CB_SETCURSEL,0,0); - end; -end; - -function ActListChange(wParam:WPARAM;lParam:LPARAM):integer; cdecl; -begin - result:=0; - if settings<>0 then - FillActionList(GetDlgItem(settings,IDC_ACTIONLIST)); -end; - -procedure ShowHookData(Dialog:HWND; item:integer=-1); -var - li:LV_ITEM; - arr:array [0..127] of WideChar; - wnd:HWND; -begin - wnd:=GetDlgItem(Dialog,IDC_HOOKLIST); - if item<0 then - li.iItem:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED) - else - li.iItem:=item; - - li.mask :=LVIF_TEXT+LVIF_PARAM; - li.iSubItem :=1; - li.pszText :=@arr; - li.cchTextMax:=SizeOf(arr) div SizeOf(WideChar); - arr[0]:=#0; - SendMessageW(wnd,LVM_GETITEMW,0,LPARAM(@li)); - if arr[0]<>#0 then - SetDlgItemTextW(Dialog,IDC_EVENTLIST,arr); - CB_SelectData(GetDlgItem(Dialog,IDC_ACTIONLIST),li.lParam); -end; - -procedure SaveHookData(Dialog:HWND; item:integer=-1); -var - wnd:HWND; - li:LV_ITEM; -begin - wnd:=GetDlgItem(Dialog,IDC_HOOKLIST); - if item<0 then - li.iItem:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED) - else - li.iItem:=item; - li.mask :=LVIF_PARAM; - li.lParam :=CB_GetData(GetDlgItem(Dialog,IDC_ACTIONLIST)); - li.iSubItem :=0; - SendMessageW(wnd,LVM_SETITEMW,0,LPARAM(@li)); - li.mask :=LVIF_TEXT; - li.iSubItem :=1; - li.pszText :=GetDlgText(Dialog,IDC_EVENTLIST); - SendMessageW(wnd,LVM_SETITEMW,0,LPARAM(@li)); - mFreeMem(li.pszText); -end; - -function NewHook(Dialog:HWND;item:integer=-1):integer; -var - wnd:HWND; - li:LV_ITEMW; -begin - wnd:=GetDlgItem(Dialog,IDC_HOOKLIST); - li.mask :=LVIF_TEXT; - if item<0 then - li.iItem :=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED)+1 - else - li.iItem :=item; - li.iSubItem:=0; - li.pszText :=TranslateW('hook sample'); - result:=SendMessageW(wnd,LVM_INSERTITEMW,0,LPARAM(@li)); -end; - -function DeleteHook(Dialog:HWND):integer; -var - wnd:HWND; - i:integer; -begin - result:=0; - wnd:=GetDlgItem(Dialog,IDC_HOOKLIST); - for i:=ListView_GetItemCount(wnd)-1 downto 0 do - begin - if ListView_GetItemState(wnd,i,LVIS_SELECTED)<>0 then - SendMessage(wnd,LVM_DELETEITEM,i,0); - end; - Listview_SetItemState(wnd,0,LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); -end; - -function NewHKTableProc(Dialog:HWnd;hMessage:UINT;wParam:WPARAM;lParam:LPARAM):lresult; stdcall; -var - i:integer; -begin - result:=0; - case hMessage of - WM_KEYDOWN: begin - if (lParam and (1 shl 30))=0 then - begin - case wParam of - VK_F2: begin - i:=SendMessage(Dialog,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); - if i>=0 then - PostMessageW(Dialog,LVM_EDITLABELW,i,0); - exit; - end; - VK_INSERT: begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_HOOK_NEW,0); - exit; - end; - VK_DELETE: begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_HOOK_DELETE,0); - exit; - end; - end; - end; - end; - end; - result:=CallWindowProc(OldTableProc,Dialog,hMessage,wParam,lParam); -end; - -procedure SetIcons(Dialog:HWND); -var - ti:TTOOLINFOW; - hwndTooltip:HWND; -begin - hwndTooltip:=CreateWindowW(TOOLTIPS_CLASS,nil,TTS_ALWAYSTIP, - integer(CW_USEDEFAULT),integer(CW_USEDEFAULT), - integer(CW_USEDEFAULT),integer(CW_USEDEFAULT), - Dialog,0,hInstance,nil); - - FillChar(ti,SizeOf(ti),0); - ti.cbSize :=sizeof(TOOLINFO); - ti.uFlags :=TTF_IDISHWND or TTF_SUBCLASS; - ti.hwnd :=dialog; - ti.hinst :=hInstance; - - ti.lpszText:=TranslateW('Help'); - ti.uId :=GetDlgItem(Dialog,IDC_EVENT_HELP); - SendMessage(ti.uId,BM_SETIMAGE,IMAGE_ICON, - CallService(MS_SKIN_LOADICON,SKINICON_OTHER_HELP,0)); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,LPARAM(@ti)); - ti.uId :=GetDlgItem(Dialog,IDC_EVENT_CHELP); - SendMessage(ti.uId,BM_SETIMAGE,IMAGE_ICON, - CallService(MS_SKIN_LOADICON,SKINICON_OTHER_HELP,0)); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,LPARAM(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_HOOK_NEW); - ti.lpszText:=TranslateW('New'); - SetButtonIcon(ti.uId,ACI_NEW); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,LPARAM(@ti)); - ti.uId :=GetDlgItem(Dialog,IDC_HOOK_APPLY); - ti.lpszText:=TranslateW('Apply'); - SetButtonIcon(ti.uId,ACI_APPLY); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,LPARAM(@ti)); - ti.uId :=GetDlgItem(Dialog,IDC_HOOK_DELETE); - ti.lpszText:=TranslateW('Delete'); - SetButtonIcon(ti.uId,ACI_DELETE); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,LPARAM(@ti)); -end; - -function DlgProcOpt(Dialog:HWnd;hMessage:UINT;wParam:WPARAM;lParam:LPARAM):lresult; stdcall; -var - wnd:HWND; - lv:LV_COLUMNW; - i:integer; - tmp:pAnsiChar; - buf:array [0..255] of AnsiChar; -begin - result:=0; - case hMessage of - WM_CLOSE: begin - ApiCard.Free; - - UnhookEvent(onactchanged); - settings:=0; - end; - - WM_INITDIALOG: begin - ApiCard:=CreateEventCard(Dialog); - - wnd:=GetDlgItem(Dialog,IDC_HOOKLIST); - SendMessage(wnd,LVM_SETUNICODEFORMAT,1,0); - FillChar(lv,SizeOf(lv),0); - lv.mask :=LVCF_TEXT or LVCF_WIDTH; - lv.pszText:=TranslateW('Description'); - lv.cx :=110; - SendMessageW(wnd,LVM_INSERTCOLUMNW ,0,TLPARAM(@lv)); - lv.pszText:=TranslateW('Name'); - lv.cx :=110; - SendMessageW(wnd,LVM_INSERTCOLUMNW ,1,TLPARAM(@lv)); - SendMessageW(wnd,LVM_SETCOLUMNWIDTH,1,LVSCW_AUTOSIZE_USEHEADER); -// SendMessage (wnd,LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_CHECKBOXES,LVS_EX_CHECKBOXES); - SendMessage (wnd,LVM_SETEXTENDEDLISTVIEWSTYLE,0, - LVS_EX_FULLROWSELECT or LVS_EX_CHECKBOXES or LVS_EX_GRIDLINES); - SendMessage(wnd,LVM_SETUNICODEFORMAT,1,0); - OldTableProc:=pointer(SetWindowLongPtrW(wnd,GWL_WNDPROC,LONG_PTR(@NewHKTableProc))); - TranslateDialogDefault(Dialog); - - SetIcons(Dialog); - - ApiCard.FillList(GetDlgItem(Dialog,IDC_EVENTLIST)); - FillActionList(GetDlgItem(Dialog,IDC_ACTIONLIST)); - FillHookList(wnd); - ShowHookData(Dialog); - - onactchanged:=HookEvent(ME_ACT_CHANGED,@ActListChange); - settings:=Dialog; - end; - - WM_HELP: begin - ApiCard.Show; - end; - - WM_RESETHOOKS:begin - FillHookList(GetDlgItem(Dialog,IDC_HOOKLIST)); - end; - - WM_COMMAND: begin - case wParam shr 16 of - EN_CHANGE, - CBN_EDITCHANGE, - CBN_SELCHANGE: begin - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - end; - end; - - case wParam shr 16 of - CBN_EDITCHANGE: begin - case loword(wParam) of - IDC_EVENTLIST: begin - tmp :=GetDlgText(Dialog,IDC_EVENTLIST,true); - ApiCard.Event:=tmp; - mFreeMem(tmp); - tmp:=ApiCard.Description; - SetDlgItemTextA(Dialog,IDC_DESCR,Translate(tmp)); - mFreeMem(tmp); - end; - end; - end; - - CBN_SELENDOK: begin - case loword(wParam) of - IDC_EVENTLIST: begin - i:=SendMessage(LOWORD(lParam),CB_GETCURSEL,0,0); - SendMessageA(LOWORD(lParam),CB_GETLBTEXT,i,TLPARAM(@buf)); - ApiCard.Event:=@buf; - tmp:=ApiCard.Description; - SetDlgItemTextA(Dialog,IDC_DESCR,Translate(tmp)); - mFreeMem(tmp); - end; - end; - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - end; - - BN_CLICKED: begin - case loword(wParam) of - IDC_EVENT_CHELP: ; - IDC_EVENT_HELP : ; - IDC_HOOK_NEW : NewHook(Dialog); - IDC_HOOK_DELETE: DeleteHook(Dialog); - IDC_HOOK_APPLY : SaveHookData(Dialog); - end; - end; - end; - end; - - WM_NOTIFY: begin - case integer(PNMHdr(lParam)^.code) of - PSN_APPLY: begin - SaveHookData(Dialog); - CheckHookList(GetDlgItem(Dialog,IDC_HOOKLIST)); - SetAllHooks; - SaveHooks; - end; - - NM_DBLCLK: begin - if PNMListView(lParam)^.iItem>=0 then - PostMessageW(PNMHdr(lParam)^.hWndFrom,LVM_EDITLABELW, - PNMListView(lParam)^.iItem,0); - end; - - LVN_ENDLABELEDITW: begin - with PLVDISPINFOW(lParam)^ do - begin - if item.pszText<>nil then - begin - item.mask:=LVIF_TEXT; - SendMessageW(hdr.hWndFrom,LVM_SETITEMW,0,TLPARAM(@item)); - end; - end; - result:=1; - end; - - LVN_ITEMCHANGED: begin - if PNMLISTVIEW(lParam)^.uChanged=LVIF_STATE then - begin - i:=(PNMLISTVIEW(lParam)^.uOldState and LVNI_FOCUSED)- - (PNMLISTVIEW(lParam)^.uNewState and LVNI_FOCUSED); - - if i>0 then // old focus - SaveHookData(Dialog,PNMLISTVIEW(lParam)^.iItem) - else if i<0 then // new focus - begin - ShowHookData(Dialog,PNMLISTVIEW(lParam)^.iItem); - end - else if (settings<>0) and - ((PNMLISTVIEW(lParam)^.uOldState or PNMLISTVIEW(lParam)^.uNewState)=$3000) then - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - end; - end; - end; - end; - end; -end; diff --git a/plugins/!Deprecated/Actman20/hooks/i_options.inc b/plugins/!Deprecated/Actman20/hooks/i_options.inc deleted file mode 100644 index 4404cfbde6..0000000000 --- a/plugins/!Deprecated/Actman20/hooks/i_options.inc +++ /dev/null @@ -1,71 +0,0 @@ -{} -const - opt_hook :PAnsiChar = 'Hook'; - opt_hooks :PAnsiChar = 'Hooks'; - opt_count :PAnsiChar = 'numhooks'; - opt_flags :PAnsiChar = 'flags'; - opt_descr :PAnsiChar = 'descr'; - opt_name :PAnsiChar = 'name'; - opt_action:PAnsiChar = 'action'; - -procedure SaveHooks; -var - section:array [0..63] of AnsiChar; - p,p1:PAnsiChar; - i,amount:integer; -begin - DBDeleteGroup(0,DBBranch,opt_hooks); - amount:=0; - p1:=StrCopyE(section,opt_hooks); - p1^:='/'; inc(p1); - p1:=StrCopyE(p1,opt_hook); - for i:=0 to MaxHooks-1 do - begin - if (HookList[i].flags and ACF_ASSIGNED)=0 then - continue; - - p:=StrEnd(IntToStr(p1,amount)); - p^:='/'; inc(p); - - with HookList[i] do - begin - StrCopy(p,opt_flags ); DBWriteDWord (0,DBBranch,section,flags); - StrCopy(p,opt_descr ); DBWriteUnicode(0,DBBranch,section,descr); - StrCopy(p,opt_name ); DBWriteString (0,DBBranch,section,name); - StrCopy(p,opt_action); DBWriteDWord (0,DBBranch,section,action); - end; - inc(amount); - end; - DBWriteByte(0,DBBranch,opt_count,amount); -end; - -function LoadHooks:integer; -var - section:array [0..63] of AnsiChar; - p,p1:PAnsiChar; - i:integer; -begin - MaxHooks:=DBReadByte(0,DBBranch,opt_count); - result:=MaxHooks; - if MaxHooks>0 then - begin - GetMem (HookList ,MaxHooks*SizeOf(tHookRec)); - FillChar(HookList^,MaxHooks*SizeOf(tHookRec),0); - p1:=StrCopyE(section,opt_hooks); - p1^:='/'; inc(p1); - p1:=StrCopyE(p1,opt_hook); - for i:=0 to MaxHooks-1 do - begin - p:=StrEnd(IntToStr(p1,i)); - p^:='/'; inc(p); - - with HookList[i] do - begin - StrCopy(p,opt_flags ); flags :=DBReadDWord (0,DBBranch,section); - StrCopy(p,opt_descr ); descr :=DBReadUnicode(0,DBBranch,section); - StrCopy(p,opt_name ); name :=DBReadString (0,DBBranch,section); - StrCopy(p,opt_action); action:=DBReadDWord (0,DBBranch,section); - end; - end; - end; -end; diff --git a/plugins/!Deprecated/Actman20/i_action.inc b/plugins/!Deprecated/Actman20/i_action.inc deleted file mode 100644 index 01b02d1b2f..0000000000 --- a/plugins/!Deprecated/Actman20/i_action.inc +++ /dev/null @@ -1,951 +0,0 @@ -{Action code} -const - rtInt = 1; - rtWide = 2; - -const - SST_BYTE = 0; - SST_WORD = 1; - SST_DWORD = 2; - SST_QWORD = 3; - SST_NATIVE = 4; - SST_BARR = 5; - SST_WARR = 6; - SST_BPTR = 7; - SST_WPTR = 8; - SST_LAST = 9; - SST_PARAM = 10; - -const - protostr = ''; - -const - BufferSize = 8192; - -function DBRW(act:pHKAction;hContact:THANDLE;avalue:uint_ptr; - last,restype:uint_ptr):uint_ptr; -var - buf ,buf1 :array [0..127] of AnsiChar; - sbuf:array [0..127] of AnsiChar; - module,setting:pAnsiChar; - tmp:pWideChar; - tmpa,tmpa1:pAnsichar; -begin - module :=act^.dbmodule; - setting:=act^.dbsetting; - - with act^ do - begin - if restype=rtWide then - FastWideToAnsiBuf(pWideChar(last),@sbuf) - else - IntToStr(sbuf,last); - - if (flags2 and ACF2_RW_MVAR)<>0 then module :=ParseVarString(module ,hContact,sbuf); - if (flags2 and ACF2_RW_SVAR)<>0 then setting:=ParseVarString(setting,hContact,sbuf); - StrCopy(buf,module); - StrReplace(buf,protostr,GetContactProtoAcc(hContact)); - - StrReplace(buf,'',sbuf); - StrCopy(buf1,setting); - StrReplace(buf1,'',sbuf); - - if (flags2 and ACF2_RW_TVAR)<>0 then - pWideChar(avalue):=ParseVarString(pWideChar(avalue),hContact,@sbuf); - - if ((flags and ACF_DBUTEXT)=0) and - ((flags2 and ACF2_RW_TVAR)<>0) then - begin - tmp:=pWideChar(avalue); - avalue:=StrToInt(tmp); - mFreeMem(tmp); - end; - - if (flags and ACF_DBDELETE)<>0 then - begin - result:=DBDeleteSetting(hContact,buf,setting); - end - else if (flags and ACF_DBWRITE)<>0 then - begin - if (flags and ACF_DBANSI)=ACF_DBANSI then - begin - WideToAnsi(pWideChar(avalue),tmpa,MirandaCP); - DBWriteString(hContact,buf,buf1,tmpa); - mFreeMem(tmpa); - if (flags2 and ACF2_RW_TVAR)=0 then - StrDupW(pWideChar(avalue),pWideChar(avalue)); - end - else if (flags and ACF_DBBYTE )=ACF_DBBYTE then DBWriteByte(hContact,buf,setting,avalue) - else if (flags and ACF_DBWORD )=ACF_DBWORD then DBWriteWord(hContact,buf,setting,avalue) - else if (flags and ACF_DBUTEXT)=ACF_DBUTEXT then - begin - DBWriteUnicode(hContact,buf,buf1,pWideChar(avalue)); - if (flags2 and ACF2_RW_TVAR)=0 then - StrDupW(pWideChar(avalue),pWideChar(avalue)); - end - else DBWriteDWord(hContact,buf,setting,avalue); - - result:=avalue; - end - else - begin - if (flags and ACF_DBANSI)=ACF_DBANSI then - begin - WideToAnsi(pWideChar(avalue),tmpa1,MirandaCP); - tmpa:=DBReadString(hContact,buf,buf1,tmpa1); - AnsiToWide(tmpa,PWideChar(result),MirandaCP); - mFreeMem(tmpa1); - mFreeMem(tmpa); - - if (flags2 and ACF2_RW_TVAR)<>0 then - mFreeMem(avalue); - end - else if (flags and ACF_DBBYTE )=ACF_DBBYTE then result:=DBReadByte(hContact,buf,setting,avalue) - else if (flags and ACF_DBWORD )=ACF_DBWORD then result:=DBReadWord(hContact,buf,setting,avalue) - else if (flags and ACF_DBUTEXT)=ACF_DBUTEXT then - begin - result:=uint_ptr(DBReadUnicode(hContact,buf,buf1,pWideChar(avalue))); - if (flags2 and ACF2_RW_TVAR)<>0 then - mFreeMem(avalue); - end - else result:=DBReadDWord(hContact,buf,setting,avalue); - - end; - if (flags2 and ACF2_RW_MVAR)<>0 then mFreeMem(module); - if (flags2 and ACF2_RW_SVAR)<>0 then mFreeMem(setting); - end; -end; - -function OpenContact(hContact:THANDLE):THANDLE; -begin - ShowContactDialog(hContact); -{ - if CallService(MS_DB_CONTACT_IS,hContact,0)<>0 then - begin - if ServiceExists(MS_MSG_CONVERS)<>0 then - begin - CallService(MS_MSG_CONVERS,hContact,0) - end - else - CallService(MS_MSG_SENDMESSAGE,hContact,0) - end; -} - result:=hContact; -end; - -function replany(var str:pWideChar;aparam:LPARAM;alast:pWideChar):boolean; -var - buf:array [0..31] of WideChar; - tmp:pWideChar; -begin - if StrScanW(str,'<')<>nil then - begin - result:=true; - mGetMem(tmp,2048); - StrCopyW(tmp,str); - StrReplaceW(tmp,'',IntToStr(buf,aparam)); - StrReplaceW(tmp,'' ,alast); - - str:=tmp; - end - else - result:=false; -end; - -function RunProgram(act:pHKAction;aparam:LPARAM;alast:pWideChar):dword; -var - tmp,tmpp,lpath:PWideChar; - replPrg ,replArg :PWideChar; - replPrg1,replArg1:PWideChar; - pd:LPARAM; - vars1,vars2,prgs,argss:boolean; -begin - with act^ do - begin - - replPrg:=prgname; - prgs :=replany(replPrg,aparam,alast); - - replArg:=args; - argss :=replany(replArg,aparam,alast); - - if ((flags2 and ACF2_PRG_PRG)<>0) or - ((flags2 and ACF2_PRG_ARG)<>0) then - begin - pd:=WndToContact(WaitFocusedWndChild(GetForegroundwindow){GetFocus}); - if (pd=0) and (CallService(MS_DB_CONTACT_IS,aparam,0)<>0) then - pd:=aparam; - end; - - if (flags2 and ACF2_PRG_ARG)<>0 then - begin - vars2:=true; - tmp :=ParseVarString(replArg,pd,alast); - end - else - begin - vars2:=false; - tmp :=replArg; - end; - - if (flags2 and ACF2_PRG_PRG)<>0 then - begin - vars1:=true; - tmpp :=ParseVarString(replPrg,pd,alast); - end - else - begin - vars1:=false; - tmpp:=replPrg; - end; - - if StrScanW(tmpp,'%')<>nil then - begin - mGetMem(replPrg1,8192*SizeOf(WideChar)); - ExpandEnvironmentStringsW(tmpp,replPrg1,8191); - if vars1 then mFreeMem(tmpp); - if prgs then mFreeMem(replPrg); - tmpp :=replPrg1; - prgs :=false; - vars1:=true; - end; - if StrScanW(tmp,'%')<>nil then - begin - mGetMem(replArg1,8192*SizeOf(WideChar)); - ExpandEnvironmentStringsW(tmp,replArg1,8191); - if vars2 then mFreeMem(tmp); - if argss then mFreeMem(replArg); - tmp :=replArg1; - argss:=false; - vars2:=true; - end; - - if (flags and ACF_CURPATH)=0 then - lpath:=ExtractW(tmpp,false) - else - lpath:=nil; - - if (flags and ACF_PRTHREAD)<>0 then - time:=0 - else if time=0 then - time:=INFINITE; - result:=ExecuteWaitW(tmpp,tmp,lpath,show,time,@pd); - - if vars2 then mFreeMem(tmp); - if vars1 then mFreeMem(tmpp); - - if prgs then mFreeMem(replPrg); - if argss then mFreeMem(replArg); - end; - mFreeMem(lpath); -end; -{ -function MakeStructure(txt:pWideChar;aparam,alast:LPARAM; - var code,alen:integer;var ofs:int_ptr; restype:integer=rtInt):pointer; forward; -procedure FreeStructure(var struct;descr:pWideChar); forward; -} -function RunService(act:pHKAction;LastResult,Param:LPARAM;var restype:dword):uint_ptr; -var - res:int_ptr; - buf:array [0..255] of AnsiChar; - cc:integer; - lservice:pAnsiChar; - lwparam,llparam:LPARAM; - tmp1,tmp2:pWideChar; - code,len:integer; -begin - result:=uint_ptr(-1); - - lservice:=act^.service; - lwparam :=act^.wparam; - llparam :=act^.lparam; - with act^ do - begin - if (flags2 and ACF2_SRV_SRVC)<>0 then - lservice:=ParseVarString(lservice,Param); - - StrCopy(buf,lservice); - if StrPos(lservice,protostr)<>nil then - if CallService(MS_DB_CONTACT_IS,Param,0)=0 then - begin - if (flags2 and ACF2_SRV_SRVC)<>0 then - mFreeMem(lservice); - exit - end - else - StrReplace(buf,protostr,GetContactProtoAcc(Param)); - - if ServiceExists(buf)<>0 then - begin - - cc:=-1; - - tmp1:=nil; - tmp2:=nil; - code:=-1; - if (flags and ACF_WSTRUCT)<>0 then - begin - lwparam:=twParam(MakeStructure(pAnsiChar(lwparam),Param,LastResult,restype)) - end - else if (flags and ACF_WPARAM)<>0 then - begin - lwparam:=Param; - end - else if (flags and ACF_WRESULT)<>0 then - begin - lwparam:=LastResult; - end - else if (flags and ACF_WCURRENT)<>0 then - begin - cc:=WndToContact(WaitFocusedWndChild(GetForegroundwindow){GetFocus}); - lwparam:=cc; - end - else if (flags2 and ACF2_SRV_WPAR)<>0 then - begin - if (flags and ACF_WPARNUM)=0 then - begin - if (flags and ACF_WUNICODE)=0 then - lwparam:=uint_ptr(ParseVarString(pAnsiChar(lwparam),Param)) - else - lwparam:=uint_ptr(ParseVarString(pWideChar(lwparam),Param)) - end - else - begin - tmp1:=ParseVarString(pWideChar(lwparam),Param); - lwparam:=StrToInt(tmp1); - end; - end; - - if (flags and ACF_LSTRUCT)<>0 then - begin - llparam:=tlParam(MakeStructure(pAnsiChar(llparam),Param,LastResult,restype)) - end - else if (flags and ACF_LPARAM)<>0 then - begin - llparam:=Param; - end - else if (flags and ACF_LRESULT)<>0 then - begin - llparam:=LastResult; - end - else if (flags and ACF_LCURRENT)<>0 then - begin - if cc<>-1 then - llparam:=cc - else - llparam:=WndToContact(WaitFocusedWndChild(GetForegroundwindow){GetFocus}); - end - else if (flags2 and ACF2_SRV_LPAR)<>0 then - begin - if (flags and ACF_LPARNUM)=0 then - begin - if (flags and ACF_LUNICODE)=0 then - llparam:=uint_ptr(ParseVarString(pAnsiChar(llparam),Param)) - else - llparam:=uint_ptr(ParseVarString(pWideChar(llparam),Param)) - end - else - begin - tmp2:=ParseVarString(pWideChar(llparam),Param); - llparam:=StrToInt(tmp2); - end; - end; - - res:=CallServiceSync(buf,lwparam,llparam); - result:=res; - if (flags and ACF_STRING)<>0 then - begin -//!! delete old or not? - if (flags and ACF_UNICODE)=0 then - begin - AnsiToWide(pAnsiChar(res),pWideChar(result),MirandaCP); - if (flags2 and ACF2_FREEMEM)<>0 then - mFreeMem(pAnsiChar(res)); - end - else if (flags2 and ACF2_FREEMEM)=0 then - StrDupW(pWideChar(result),pWideChar(res)); - restype:=rtWide; - end - else if (flags and ACF_STRUCT)=0 then - restype:=rtInt; - - if (flags and ACF_WSTRUCT)<>0 then - begin - if (flags and ACF_STRUCT)<>0 then - begin - result:=GetStructureResult(lwparam,@code,@len); - case code of - SST_LAST: begin - result:=LastResult; - end; - SST_PARAM: begin - result:=Param; - restype:=rtInt; - end; - SST_BYTE,SST_WORD,SST_DWORD, - SST_QWORD,SST_NATIVE: begin - restype:=rtInt; - end; - SST_BARR: begin -{ - mGetMem(pAnsiChar(res),len+1); - StrCopy(pAnsiChar(res),pAnsiChar(ofs),len); -} - StrDup(pAnsiChar(res),pAnsiChar(result),len); - AnsiToWide(pAnsiChar(res),PWideChar(result),MirandaCP); - mFreeMem(pAnsiChar(res)); - restype:=rtWide; - end; - SST_WARR: begin -{ - mGetMem(pWideChar(result),len+2); - len:= len div 2; - StrCopyW(pWideChar(result),pWideChar(ofs),len); -} - StrDupW(pWideChar(result),pWideChar(result),len); - restype:=rtWide; - end; - SST_BPTR: begin - AnsiToWide(pAnsiChar(result),pWideChar(result),MirandaCP); - restype:=rtWide; - end; - SST_WPTR: begin - StrDupW(pWideChar(result),pWideChar(result)); - restype:=rtWide; - end; - end; - end; - code:=SST_UNKNOWN; - FreeStructure(lwparam); - res:=result; - end - else if (flags2 and ACF2_SRV_WPAR)<>0 then - begin - if (flags and ACF_LPARNUM)=0 then - mFreeMem(pAnsiChar(lwparam)) - else - mFreeMem(tmp1); - end; - - if (flags and ACF_LSTRUCT)<>0 then - begin - if (flags and ACF_STRUCT)<>0 then - begin - result:=GetStructureResult(llparam,@code,@len); - case code of - SST_LAST: begin - result:=LastResult; - end; - SST_PARAM: begin - result:=Param; - restype:=rtInt; - end; - SST_BYTE,SST_WORD,SST_DWORD, - SST_QWORD,SST_NATIVE: begin - restype:=rtInt; - end; - SST_BARR: begin -{ - mGetMem(pAnsiChar(res),len+1); - StrCopy(pAnsiChar(res),pAnsiChar(ofs),len); -} - StrDup(pAnsiChar(res),pAnsiChar(result),len); - AnsiToWide(pAnsiChar(res),PWideChar(result),MirandaCP); - mFreeMem(pAnsiChar(res)); - restype:=rtWide; - end; - SST_WARR: begin -{ - mGetMem(pWideChar(result),len+2); - len:= len div 2; - StrCopyW(pWideChar(result),pWideChar(ofs),len); -} - StrDupW(pWideChar(result),pWideChar(result),len); - restype:=rtWide; - end; - SST_BPTR: begin - AnsiToWide(pAnsiChar(result),pWideChar(result),MirandaCP); - restype:=rtWide; - end; - SST_WPTR: begin - StrDupW(pWideChar(result),pWideChar(result)); - restype:=rtWide; - end; - end; - end; - code:=SST_UNKNOWN; - FreeStructure(llparam); - res:=result; - end - else if (flags2 and ACF2_SRV_LPAR)<>0 then - begin - if (flags and ACF_LPARNUM)=0 then - mFreeMem(pAnsiChar(llparam)) - else - mFreeMem(tmp2); - end; - - if (flags and (ACF_INSERT or ACF_MESSAGE or ACF_POPUP))<>0 then - begin - if restype=rtInt then - begin - if (flags and ACF_HEX)<>0 then - IntToHex(pWideChar(@buf),result) - else if ((flags and ACF_SIGNED)<>0) and (res<0) then - begin - pWideChar(@buf)[0]:='-'; - IntToStr(PWideChar(@buf)+1,-result); - end - else - IntToStr(pWideChar(@buf),result); - res:=int_ptr(@buf); - end - else - res:=result; - end; - - if (flags and ACF_INSERT )<>0 then SendMessageW(WaitFocusedWndChild(GetForegroundwindow){GetFocus},EM_REPLACESEL,0,res); - if (flags and ACF_POPUP )<>0 then ShowPopupW(PWideChar(res)); - if (flags and ACF_MESSAGE)<>0 then MessageBoxW(0,PWideChar(res),'',0); - - end; - if (flags2 and ACF2_SRV_SRVC)<>0 then - mFreeMem(lservice); - end; -end; - -procedure PasteClipboard(dst:pWideChar); -var - p:pWideChar; - fh:tHandle; -begin - if StrPosW(dst,'^v')<>nil then - begin -{ - p:=PasteFromClipboard(false); - StrReplaceW(dst,'^v',p); - mFreeMem(p); -} - if OpenClipboard(0) then - begin - fh:=GetClipboardData(cf_UnicodeText); - p:=GlobalLock(fh); - StrReplaceW(dst,'^v',p); - GlobalUnlock(fh); - CloseClipboard; - end - end -end; - -type - trec = record - text:PAnsiChar; - one, two:integer; - end; - -function GetFileString(fname:PAnsiChar;linenum:integer):pWideChar; -var - pc,FileBuf,CurLine:PAnsiChar; - f:THANDLE; - NumLines, j:integer; -begin - f:=Reset(fname); - if f<>INVALID_HANDLE_VALUE then - begin - j:=FileSize(f); - mGetMem(FileBuf,j+1); - BlockRead(f,FileBuf^,j); - while (FileBuf+j)^<' ' do dec(j); - (FileBuf+j+1)^:=#0; - CloseHandle(f); - pc:=FileBuf; - CurLine:=pc; - NumLines:=1; - while pc^<>#0 do // count number of lines - begin - if pc^=#13 then - begin - if linenum=NumLines then - break; - inc(pc); - if pc^=#10 then - inc(pc); - inc(NumLines); - CurLine:=pc; - end - else - inc(pc); - end; - if (linenum>NumLines) or (linenum=0) then //ls - lastline - else if linenum<0 then - begin - randomize; - linenum:=random(NumLines)+1; - pc:=FileBuf; - NumLines:=1; - CurLine:=pc; - repeat - if (pc^=#13) or (pc^=#0) then - begin - if linenum=NumLines then - break; - if pc^<>#0 then - begin - inc(pc); - if pc^=#10 then - inc(pc); - end; - inc(NumLines); - CurLine:=pc; - end - else - inc(pc); - until false; - end; - pc^:=#0; - StrReplace(CurLine,'\n',#13#10); - StrReplace(CurLine,'\t',#09); - AnsiToWide(CurLine,result,CP_ACP); - mFreeMem(FileBuf); - end - else - result:=nil; -end; - -function Split(buf:PWideChar;macro:PWideChar;var r:trec):integer; -type - tconv = packed record - case boolean of - false: (res:int); - true: (lo,hi:word); - end; -var - i:integer; - p,pp,lp:pWideChar; - ls:array [0..511] of WideChar; -begin - result:=0; - i:=StrIndexW(buf,macro); - if i>0 then - begin - dec(i); - p:=buf+i+StrLenW(macro); - pp:=p; - while (p^<>#0) and (p^<>')') do - inc(p); - ls[0]:=#0; - if p^<>#0 then // correct syntax - begin - lp:=ls; - while (pp<>p) and (pp^<>',') do // filename - begin - lp^:=pp^; - inc(lp); - inc(pp); - end; - lp^:=#0; - WideToAnsi(ls,r.text,MirandaCP); - r.one:=-1; - r.two:=-1; - if pp^=',' then - begin - inc(pp); - r.one:=StrToInt(pp); - while (pp<>p) and (pp^<>',') do inc(pp); - if pp^=',' then - begin - inc(pp); - r.two:=StrToInt(pp); - end; - end; - tconv(result).lo:=p-buf-i+1; // length - tconv(result).hi:=i; // position - end; - end; -end; - -procedure PasteFileString(dst:pWideChar); -var - i:integer; - lp:pWideChar; - buf:array [0..511] of AnsiChar; - r:trec; -begin - repeat - i:=Split(dst,'^f(',r); - if i>0 then - begin - StrDeleteW(dst,i shr 16,loword(i)); - ConvertFileName(r.text,buf); - lp:=GetFileString(@buf,r.one); - if lp<>nil then - begin - StrInsertW(lp,dst,i shr 16); - mFreeMem(lp); - end; - end - else - break; - until false; -end; - -procedure PasteSelectedText(wnd:hwnd;dst:pWideChar); -var - sel:integer; - buf:pWideChar; -begin - if (StrPosW(dst,'^s')<>nil) and (wnd<>0) then - begin - sel:=SendMessageW(wnd,EM_GETSEL,0,0); - if loword(sel)=(sel shr 16) then - StrReplaceW(dst,'^s',nil) - else - begin - buf:=GetDlgText(wnd,false); -//!! next line was active. why? -// SendMessageW(wnd,WM_GETTEXT,4095,dword(@buf)); - buf[sel shr 16]:=#0; - StrReplaceW(dst,'^s',buf+loword(sel)); - mFreeMem(buf); - end; - end; -end; - -function CheckAuto(dst:pWideChar):bool; -var - p:PWideChar; -begin - result:=false; - if dst<>nil then - begin - p:=StrEndW(dst); - if (p-dst)>2 then - begin - dec(p,2); - if (p^='^') and ((p+1)^='a') then - begin - result:=true; - p^:=#0; - end; - end; - end; -end; - -function InsertText(act:pHKAction;param:LPARAM;last:pWideChar):uint_ptr; -var - tmp:PWideChar; - blob,p:PAnsiChar; - w:PWideChar; - hContact:THANDLE; - wnd:HWND; - fexist,autosend:bool; - dbei:TDBEVENTINFO; - i:cardinal; - cp:integer; - fh:THANDLE; - lstr:pWideChar; - llen:integer; - buf:array [0..31] of WideChar; - b,b1:array [0..MAX_PATH] of AnsiChar; -begin - result:=uint_ptr(last); - with act^ do - begin - if (flags and ACF_CLIPBRD)<>0 then - begin - if (flags and ACF_COPYTO)<>0 then - CopyToClipboard(last,false) - else - result:=uint_ptr(PasteFromClipboard(false)); - exit; - end; - - hContact:=0; - if (flags and ACF_FILE)=0 then - begin - wnd:=WaitFocusedWndChild(GetForegroundWindow){GetFocus}; - if wnd<>0 then - hContact:=WndToContact(wnd); - end - else - wnd:=0; - - if hContact=0 then - begin - if CallService(MS_DB_CONTACT_IS,param,0)<>0 then - hContact:=param; - end; - - if (flags and (ACF_FILE or ACF_FAPPEND or ACF_FWRITE))<>ACF_FILE then - begin - mGetMem (w ,BufferSize*SizeOf(WideChar)); - FillChar(w^,BufferSize*SizeOf(WideChar),0); - StrCopyW(w,text); - PasteClipboard(w); // ^v - PasteFileString(w); // ^f - PasteSelectedText(wnd,w); // ^s - autosend:=CheckAuto(w); // ^a - StrReplaceW(w,'^l',last); // ^l - StrReplaceW(w,'^h',IntToHex(buf,StrToInt(last))); // ^h - StrReplaceW(w,'^t',#9); // ^t - StrReplaceW(w,'^e',nil); // ^e - end - else - autosend:=false; - - if (flags2 and ACF2_TXT_TEXT)<>0 then - begin - tmp:=ParseVarString(w,hContact,last); - mFreeMem(w); - w:=tmp; - end; - - if (flags and ACF_FILE)<>0 then - begin - cp:=0; - if (flags and ACF_ANSI)=ACF_ANSI then cp:=1 - else if (flags and (ACF_UTF8 or ACF_SIGN))=ACF_UTF8 then cp:=2 - else if (flags and (ACF_UTF8 or ACF_SIGN))=ACF_SIGN then cp:=4 - else if (flags and (ACF_UTF8 or ACF_SIGN))=(ACF_UTF8 or ACF_SIGN) then cp:=3; - - if (flags2 and ACF2_TXT_FILE)<>0 then - tmp:=ParseVarString(tfile,hContact,last) - else - tmp:=tfile; - - if (flags and (ACF_FAPPEND or ACF_FWRITE))<>0 then - begin - case cp of - 1: begin - llen:=StrLen(WideToAnsi(w,pAnsiChar(lstr),MirandaCP)); - end; - 2,3: begin - llen:=StrLen(WideToUTF8(w,pAnsiChar(lstr))); - end; - else - lstr:=w; - llen:=StrLenW(lstr)*SizeOf(WideChar); - end; - end - else - llen:=0; - - fexist:=FileExists(tmp); - if fexist and ((flags and ACF_FAPPEND)<>0) then - begin - fh:=Append(tmp); - if fh<>THANDLE(INVALID_HANDLE_VALUE) then - begin - BlockWrite(fh,lstr^,llen); - end; - if (cp<>0) and (cp<>4) then - mFreeMem(lstr); - end - else if ((flags and ACF_FWRITE)<>0) or - (not fexist and ((flags and ACF_FAPPEND)<>0)) then - begin - fh:=ReWrite(tmp); - if fh<>THANDLE(INVALID_HANDLE_VALUE) then - begin - if cp=3 then - begin - i:=SIGN_UTF8; - BlockWrite(fh,i,3); // UTF8 sign - end - else if cp=4 then - begin - i:=SIGN_UNICODE; - BlockWrite(fh,i,2); // UTF16 sign - end; - - BlockWrite(fh,lstr^,llen); - if (cp<>0) and (cp<>4) then - mFreeMem(lstr); - end; - end - else - begin - if StrPosW(tmp,'://')<>nil then // remote - begin - GetTempPathA(MAX_PATH,b); - GetTempFileNameA(b,'wat',GetCurrentTime,b1); - GetFile(FastWideToAnsiBuf(tmp,b),b1); - if tmp<>tfile then - mFreeMem(tmp); - FastAnsiToWide(b1,tmp); - end - else - b1[0]:=#0; - fh:=Reset(tmp); - if fh<>THANDLE(INVALID_HANDLE_VALUE) then - begin - i:=GetFSize(tmp); - mGetMem (w ,i+SizeOf(WideChar)); - FillChar(w^,i+SizeOf(WideChar),0); - BlockRead(fh,w^,i); - if (flags and ACF_ANSI)<>0 then - begin - AnsiToWide(pAnsiChar(w),lstr,MirandaCP); - mFreeMem(w); - w:=lstr; - end - else if (flags and ACF_UTF8)<>0 then - begin - if (pdword(w)^ and $FFFFFF)=SIGN_UTF8 then - p:=pAnsiChar(w)+3 - else - p:=pAnsiChar(w); - mFreeMem(w); - UTF8ToWide(p,w); - end - else - ChangeUnicode(w); - end; - if b1[0]<>#0 then - DeleteFileA(b1); - end; - if fh<>THANDLE(INVALID_HANDLE_VALUE) then - CloseHandle(fh); - if tmp<>tfile then - mFreeMem(tmp); - end; - - result:=uint_ptr(w); - - if (flags and ACF_FILE)=0 then - begin - if autosend then - begin - if hContact=0 then exit; - p:=GetContactProtoAcc(hContact); - cp:=DBReadDWord(hContact,'Tab_SRMsg','ANSIcodepage',MirandaCP); - if DBReadByte(hContact,p,'ChatRoom',0)<>1 then - begin - i:=WideToCombo(w,blob,cp); - // if CallContactService(hContact,PSS_MESSAGEW,0,dword(blob))= - // ACKRESULT_FAILED then - CallContactService(hContact,PSS_MESSAGE,PREF_UNICODE,tlparam(blob)); - dbei.cbSize :=sizeof(dbei); - dbei.cbBlob :=i; - dbei.pBlob :=pByte(blob); - dbei.eventType:=EVENTTYPE_MESSAGE; - dbei.timestamp:=GetCurrentTime; - dbei.szModule :=p; - dbei.flags :=DBEF_SENT; - db_event_add(hContact, @dbei); - mFreeMem(blob); - end - else - SendToChat(hContact,w); - end - else - begin - GetWindowThreadProcessId(GetForegroundWindow,@i); - if (i=GetCurrentProcessId) and (wnd<>0) then - SendMessageW(wnd,EM_REPLACESEL,1,tlparam(w)) - else - SendString(0,w); - end; - end; - end; -end; diff --git a/plugins/!Deprecated/Actman20/i_actlow.inc b/plugins/!Deprecated/Actman20/i_actlow.inc deleted file mode 100644 index a620471398..0000000000 --- a/plugins/!Deprecated/Actman20/i_actlow.inc +++ /dev/null @@ -1,836 +0,0 @@ -{Lowlevel actions work: clone, create, delete, execute} - -type - tAdvExpr = (aeNot,aeAdd,aeSub,aeMul,aeDiv,aeMod,aeAnd,aeOr,aeXor,aeSet); - -function GetActNameById(id:dword):PWideChar; -var - i:integer; -begin - for i:=0 to MaxGroups-1 do - begin - if ((GroupList^[i].flags and ACF_ASSIGNED)<>0) and - (id=GroupList^[i].id) then - begin - result:=GroupList^[i].descr; - exit; - end; - end; - result:=nil; -end; - -function GetActIdByName(name:PWideChar):integer; -var - i:integer; -begin - for i:=0 to MaxGroups-1 do - begin - if ((GroupList^[i].flags and ACF_ASSIGNED)<>0) and - (StrCmpW(name,GroupList^[i].descr)=0) then - begin - result:=GroupList^[i].id; - exit; - end; - end; - result:=0; -end; - -function GetActIdxByName(name:PWideChar):integer; -var - i:integer; -begin - for i:=0 to MaxGroups-1 do - begin - if ((GroupList^[i].flags and ACF_ASSIGNED)<>0) and - (StrCmpW(name,GroupList^[i].descr)=0) then - begin - result:=i; - exit; - end; - end; - result:=-1; -end; - -function GetActIdxById(id:dword):integer; -var - i:integer; -begin - for i:=0 to MaxGroups-1 do - begin - if ((GroupList^[i].flags and ACF_ASSIGNED)<>0) and - (id=GroupList^[i].id) then - begin - result:=i; - exit; - end; - end; - result:=-1; -end; - -function FreeAction(act:pHKAction):dword; -begin - result:=act^.next; - with act^ do - begin - if (flags and ACF_ASSIGNED)<>0 then - begin - mFreeMem(descr); - case actionType of - ACT_SERVICE: begin - mFreeMem(service); - if (flags and (ACF_WPARNUM or ACF_WRESULT or ACF_WPARAM))=0 then - mFreeMem(pointer(wparam)); - if ((flags and ACF_WPARNUM)<>0) and ((flags2 and ACF2_SRV_WPAR)<>0) then - mFreeMem(pointer(wparam)); - if (flags and (ACF_LPARNUM or ACF_LRESULT or ACF_LPARAM))=0 then - mFreeMem(pointer(lparam)); - if ((flags and ACF_LPARNUM)<>0) and ((flags2 and ACF2_SRV_LPAR)<>0) then - mFreeMem(pointer(lparam)); - end; - ACT_PROGRAM: begin - mFreeMem(prgname); - mFreeMem(args); - end; - ACT_TEXT: begin - if (flags and ACF_CLIPBRD)=0 then - begin - mFreeMem(text); - if (flags and ACF_FILE)<>0 then - mFreeMem(tfile); - end; - end; - ACT_ADVANCE: begin - mFreeMem(varval); - if (action and ADV_ACT_POST)=ADV_ACT_JUMP then - mFreeMem(operval); - end; - ACT_CHAIN: begin - if (flags and ACF_BYNAME)<>0 then - mFreeMem(actname); - end; - ACT_RW: begin - mFreeMem(dbmodule); - mFreeMem(dbsetting); - if (flags and ACF_DBUTEXT)<>0 then - mFreeMem(dbvalue) - else if (flags2 and ACF2_RW_TVAR)<>0 then - mFreeMem(dbvalue); - end; - ACT_MESSAGE: begin - mFreeMem(msgtitle); - mFreeMem(msgtext); - end; - end; - end; - end; - FillChar(act^,SizeOf(act^),0); -end; - -procedure FreeActions(list:pActList;idx:cardinal); -begin - while idx<>0 do - idx:=FreeAction(@list^[idx]); -end; - -procedure FreeActionsContinued(act:pHKAction); -var - act_org:pHKAction; -begin - act_org:=act; - repeat - FreeAction(act); - if act^.next<>0 then - inc(act) - else - break; - until false; - FreeMem(act_org); -end; - -procedure DestroyActions(act:pActList;count:integer); -var - pact:pHKAction; -begin - pact:=@act^; - while count>0 do - begin - FreeAction(pact); - inc(pact); - dec(count); - end; - FreeMem(act); -end; - -procedure CloneAction(dst,src:pHKAction); -begin - move(src^,dst^,SizeOf(tHKAction)); - with dst^ do - begin - if (flags and ACF_ASSIGNED)<>0 then - begin - StrDupW(descr,descr); - case actionType of - ACT_SERVICE: begin - StrDup(service,service); - if (flags and ACF_WPARNUM)=0 then - begin - if (flags and ACF_WSTRUCT)<>0 then - StrDupW(pWideChar(wparam),pWideChar(wparam)) - else if (flags and ACF_WUNICODE)<>0 then - StrDupW(pWideChar(wparam),pWideChar(wparam)) - else - StrDup(PAnsiChar(wparam),PAnsiChar(wparam)); - end - else if (flags2 and ACF2_SRV_WPAR)<>0 then - StrDupW(pWideChar(wparam),pWideChar(wparam)); - - if (flags and ACF_LPARNUM)=0 then - begin - if (flags and ACF_LSTRUCT)<>0 then - StrDupW(pWideChar(lparam),pWideChar(lparam)) - else if (flags and ACF_LUNICODE)<>0 then - StrDupW(pWideChar(lparam),pWideChar(lparam)) - else - StrDup(PAnsiChar(lparam),PAnsiChar(lparam)); - end - else if (flags2 and ACF2_SRV_LPAR)<>0 then - StrDupW(pWideChar(lparam),pWideChar(lparam)); - end; - - ACT_PROGRAM: begin - StrDupW(prgname,prgname); - StrDupW(args,args); - end; - - ACT_TEXT: begin - if (flags and ACF_CLIPBRD)=0 then - begin - StrDupW(text,text); - if (flags and ACF_FILE)<>0 then - StrDupW(tfile,tfile); - end; - end; - - ACT_ADVANCE: begin - StrDupW(varval,varval); - if (action and ADV_ACT_POST)=ADV_ACT_JUMP then - StrDupW(operval,operval); - end; - - ACT_CHAIN: begin - if (flags or ACF_BYNAME)<>0 then - StrDupW(actname,actname); - end; - - ACT_RW: begin - StrDup(dbmodule,dbmodule); - StrDup(dbsetting,dbsetting); - if (flags and ACF_DBUTEXT)<>0 then - StrDupW(pWideChar(dbvalue),pWideChar(dbvalue)) - else if (flags2 and ACF2_RW_TVAR)<>0 then - StrDupW(pWideChar(dbvalue),pWideChar(dbvalue)); - end; - - ACT_MESSAGE: begin - StrDupW(msgtitle,msgtitle); - StrDupW(msgtext,msgtext); - end; - end; - end; - end; -end; - -function CloneActions(idx:cardinal):pointer; -var - i,count:integer; - aList:pHKAction; -begin - count:=0; - i:=idx; - while i<>0 do - begin - inc(count); - i:=ActionList^[i].next; - end; - if count>0 then - begin - GetMem(result,count*SizeOf(tHKAction)); - aList:=result; - i:=idx; - while i<>0 do - begin - CloneAction(aList,@ActionList^[i]); - i:=ActionList^[i].next; - inc(aList); - end; - end - else - result:=nil; -end; - -function DoAction(action:dword;aparam:LPARAM;var last:uint_ptr;restype:dword):integer; -var - tmpact,act,act_org:pHKAction; - val,prelast:uint_ptr; - b:boolean; - i:integer; - lContact:THANDLE; - buf:array [0..31] of WideChar; - tmpc,tmpc1,tmpc2,tmpcv1,tmpcv2:pWideChar; - oldrestype:integer; -begin - if action<>0 then - begin - act:=CloneActions(action); - // if act=nil then exit; - act_org :=act; - oldrestype:=restype; - prelast :=0; - repeat - if (act^.flags and ACF_DISABLED)=0 then - begin - - if (oldrestype=rtWide) and (last<>prelast) then - mFreeMem(prelast); - oldrestype:=restype; - prelast:=last; - - with act^ do - begin - case actionType of - - ACT_CONTACT: begin - if (flags and ACF_KEEPONLY)=0 then - last:=OpenContact(contact) - else - last:=contact; - - restype:=rtInt; - end; - - ACT_SERVICE: begin - last:=RunService(act,last,aparam,restype); -{ - if (flags and ACF_STRING)<>0 then - begin - if (flags and ACF_UNICODE)=0 then - begin - val:=last; - AnsiToWide(pAnsiChar(val),pWideChar(last),MirandaCP); - mFreeMem(val); - end - else - StrDupW(pWideChar(last),pWideChar(last)); - restype:=rtWide; - end - else - restype:=rtInt; -} - end; - - ACT_PROGRAM: begin - if restype=rtInt then - last:=uint_ptr(IntToStr(buf,last)); - - last:=RunProgram(act,aparam,pWideChar(last)); - - restype:=rtInt; - end; - - ACT_TEXT: begin - if restype=rtInt then - last:=uint_ptr(IntToStr(buf,last)); - - last:=InsertText(act,aparam,pWideChar(last)); - - restype:=rtWide; - end; - - ACT_ADVANCE: begin - if restype=rtWide then - val:=StrToInt(pWideChar(last)) - else - val:=last; - - case condition and not ADV_COND_NOT of - ADV_COND_EQ: b:=val=value; - ADV_COND_GT: b:=integer(val)>integer(value); - ADV_COND_LT: b:=integer(val)0) and (condition<>ADV_COND_NOP) then - b:=not b; - if b then - begin - case action and ADV_ACTION of - - ADV_ACT_MATH: begin - case tAdvExpr(oper) of - aeNot: last:= not val; - aeAdd: last:= integer(val) + integer(mathval); - aeSub: last:= integer(val) - integer(mathval); - aeMul: last:= integer(val) * integer(mathval); - aeDiv: last:= integer(val) div integer(mathval); - aeMod: last:= val mod mathval; - aeAnd: last:= val and mathval; - aeOr : last:= val or mathval; - aeXor: last:= val xor mathval; - aeSet: last:= mathval; - end; - restype:=rtInt; - end; - - ADV_ACT_VARS: begin -//!! need to clear 'Last' if was string? - if (varval<>NIL) and (varval^<>#0) then - begin - if CallService(MS_DB_CONTACT_IS,aparam,0)<>0 then - lContact:=aparam - else - lContact:=0; - if restype=rtInt then - last:=uint_ptr(IntToStr(buf,last)); - - pWideChar(last):=ParseVarString(varval,lContact,pWideChar(last)); - - if (flags and ACF_VARASINT)<>0 then - begin - tmpc:=pWideChar(last); - last:=StrToInt(tmpc); - mFreeMem(tmpc); - restype:=rtInt; - end - else - restype:=rtWide; - end; - end; - - end; - case action and ADV_ACT_POST of - - ADV_ACT_JUMP : begin - tmpact:=act_org; - repeat - if StrCmpW(tmpact^.descr,operval)=0 then - begin - act:=tmpact; - tmpact:=nil; - break; - end; - if tmpact^.next=0 then - break; - inc(tmpact); - until false; - if tmpact=nil then continue; - end; - - ADV_ACT_BREAK: break; - end; - end; - end;//last:=MakeAdvanced(act,last); - - ACT_CHAIN: begin - if (flags and ACF_BYNAME)<>0 then - i:=GetActIdxByName(actname) - else - i:=GetActIdxById(id); - - if i>=0 then - begin - restype:=DoAction(GroupList^[i].firstAction,aparam,last,restype); - // cleared in called Action - oldrestype:=rtInt; - prelast:=0; - end - else - begin - restype:=rtInt; - last:=0; - end; - end; - - ACT_RW: begin - if (flags and ACF_CURRENT)<>0 then i:=0 - else if (flags and ACF_PARAM )<>0 then i:=aparam - else if (flags and ACF_RESULT )<>0 then i:=last - else - i:=dbcontact; - if (flags and ACF_LAST)=0 then - val:=dbvalue - else - begin - val:=last; - if (flags and ACF_DBUTEXT)<>0 then - begin - if restype=rtInt then - val:=uint_ptr(IntToStr(buf,val)); - end - else - begin - if restype=rtWide then - val:=StrToInt(pWideChar(val)); - end; - end; - - last:=DBRW(act,i,val,last,restype); - - if (flags and ACF_DBUTEXT)<>0 then - restype:=rtWide - else - restype:=rtInt; - end; - - ACT_MESSAGE: begin - if restype=rtWide then - tmpc:=PWideChar(last) - else - begin - IntToStr(buf,last); - tmpc:=@buf; - end; - - if StrPosW(msgtitle,'')<>nil then - begin - mGetMem(tmpc1,8192); - StrCopyW(tmpc1,msgtitle); - StrReplaceW(tmpc1,'',tmpc); - end - else - tmpc1:=msgtitle; - if StrPosW(msgtext,'')<>nil then - begin - mGetMem(tmpc2,8192); - StrCopyW(tmpc2,msgtext); - StrReplaceW(tmpc2,'',tmpc); - end - else - tmpc2:=msgtext; - - if (flags2 and ACF2_MSG_TTL)<>0 then - tmpcv1:=ParseVarString(tmpc1,aparam,tmpc) - else - tmpcv1:=tmpc1; - if (flags2 and ACF2_MSG_TXT)<>0 then - tmpcv2:=ParseVarString(tmpc2,aparam,tmpc) - else - tmpcv2:=tmpc2; - - i:=MessageBoxW(0,tmpcv2,tmpcv1,boxopts); - - if (flags and ACF_MSG_KEEP)=0 then - begin - restype:=rtInt; - last:=i - end; - - if tmpcv1<>tmpc1 then mFreeMem(tmpcv1); - if tmpcv2<>tmpc2 then mFreeMem(tmpcv2); - if tmpc1 <>msgtitle then mFreeMem(tmpc1); - if tmpc2 <>msgtext then mFreeMem(tmpc2); - end; - - else - last:=0; - end; - end; - end; - if (act_org^.flags and ACF_DOBREAK)<>0 then - break; - if act^.next=0 then - break; - inc(act); - until false; - FreeActionsContinued(act_org); - if (oldrestype=rtWide) and (last<>prelast) then - mFreeMem(prelast); - end; - result:=restype; -end; - -type - pActStartData = ^tActStartData; - tActStartData = record - event :THANDLE; - action:dword; - param :LPARAM; - group :pHKRecord; - last :LPARAM; - end; - -procedure ThDoAction(arg:pActStartData); cdecl; -var - ltmp:uint_ptr; - res:integer; -begin - ltmp:=arg^.last; - - if arg^.group<>nil then - begin - NotifyEventHooks(hevaction,arg^.group.id,0); // started - arg^.group.flags:=arg^.group.flags or ACF_USEDNOW; - end; - - res:=DoAction(arg^.action,arg^.param,ltmp,rtInt); - - if arg^.group<>nil then - begin - arg^.group.flags:=arg^.group.flags and not ACF_USEDNOW; - NotifyEventHooks(hevaction,arg^.group.id,1); // finished - end; - - if arg^.event<>0 then - begin - arg^.last:=ltmp; - SetEvent(arg^.event); - end - else if res=rtWide then - begin - mFreeMem(ltmp); - end; -end; - -function ActionStarterWait(action:dword;aparam:LPARAM=0;group:pHKRecord=nil;alast:LPARAM=0):LPARAM; -var - tmp:pActStartData; -begin - mGetMem(tmp,SizeOf(tActStartData)); - tmp^.action:=action; - tmp^.param :=aparam; - tmp^.group :=group; - tmp^.last :=alast; - tmp^.event :=CreateEvent(nil,FALSE,FALSE,nil); - mir_forkthread(@ThDoAction,tmp); - WaitForSingleObjectEx(tmp.event,INFINITE,true); - CloseHandle(tmp^.event); - result:=tmp^.last; -end; - -function ActionStarter(action:dword;aparam:dword=0;group:pHKRecord=nil;alast:dword=0):integer; -var - tmp:pActStartData; -begin - result:=0; - mGetMem(tmp,SizeOf(tActStartData)); - tmp^.action:=action; - tmp^.param :=aparam; - tmp^.group :=group; - tmp^.last :=alast; - tmp^.event :=0; - mir_forkthread(@ThDoAction,tmp); -end; - -procedure ReallocActionList(var ActList:pActList;var MaxAct:cardinal); -var - i:cardinal; - tmp:pActList; -begin - i:=(MaxAct+ActListPage)*SizeOf(tHKAction); - GetMem(tmp,i); - FillChar(tmp^,i,0); - if MaxAct>0 then - begin - move(ActList^,tmp^,MaxAct*SizeOf(tHKAction)); - FreeMem(ActList); - end; - ActList:=tmp; - inc(MaxAct,ActListPage); -end; - -function NewAction(var ActList:pActList;var MaxAct:cardinal):cardinal; -var - i:cardinal; - pAct:pHKAction; -begin - i:=1; - pAct:=@ActList^; - inc(pAct); // skip zero - while i0 then - begin - move(HKList^,tmp^,MaxHK*SizeOf(tHKRecord)); - FreeMem(HKList); - end; - HKList:=tmp; - inc(MaxHK,HKListPage); -end; - -procedure InitGroupValue(pHK:pHKRecord); -var -// time:TSYSTEMTIME; - tmp:int64; -begin - with pHK^ do - begin - StrDupW(descr,NoDescription); -{ - GetSystemTime(time); - id :=time.wSecond+time.wMinute*60+time.wHour*3600+time.wMilliseconds*86400; -} - QueryPerformanceCounter(tmp); - id :=tmp and $FFFFFFFF; - firstAction:=0; - active :=nil; - flags :=ACF_ASSIGNED; - end; -end; - -// Root,Size,MaxCount(Page,flag) -function NewGroup(var HKList:pHKList;var MaxHK:cardinal):cardinal; -var - i:cardinal; - pHK:pHKRecord; -begin - i:=0; - pHK:=@HKList^; - while i0 then - begin - flags:=0; - mFreeMem(descr); - FreeActions(ActionList,firstAction); - end; - end; -end; - -procedure FreeGroups; -var - i:integer; -begin - for i:=0 to MaxGroups-1 do - begin - FreeGroup(i); - end; - MaxGroups:=0; - FreeMem(GroupList); - FreeMem(ActionList); - GroupList:=nil; - ActionList:=nil; -end; - -procedure DestroyGroups(HKList:pHKList;count:integer); -var - pHK:pHKRecord; -begin - pHK:=@HKList^; - while count>0 do - begin - if (pHK^.flags and ACF_ASSIGNED)<>0 then - mFreeMem(pHK^.descr); - inc(pHK); - dec(count); - end; - FreeMem(HKList); -end; - -function CloneActionList:pActList; -var - src,dst:pHKAction; - i:integer; -begin - i:=MaxActions; - GetMem(result,i*SizeOf(tHKAction)); - src:=@ActionList^; - dst:=@result^; - while i>0 do - begin - CloneAction(dst,src); - inc(src); - inc(dst); - dec(i); - end; -end; - -procedure CloneGroup(dst,src:pHKRecord); -begin - move(src^,dst^,SizeOf(tHKRecord)); - if (src^.flags and ACF_ASSIGNED)<>0 then - StrDupW(dst^.descr,src^.descr); -end; - -function CloneGroupList:pHKList; -var - src,dst:pHKRecord; - i:integer; -begin - i:=MaxGroups; - GetMem(result,i*SizeOf(tHKRecord)); - src:=@GroupList^; - dst:=@result^; - while i>0 do - begin - CloneGroup(dst,src); - inc(src); - inc(dst); - dec(i); - end; -end; - -function ActSelect(wParam:WPARAM;lParam:LPARAM):int;cdecl; -begin - if (wParam and ACCF_ID)<>0 then - result:=GetActIdxById(lParam) - else - result:=GetActIdxByName(pWideChar(lParam)); - if result=-1 then - exit; - with GroupList^[result] do - begin - if (wParam and ACCF_CLEAR)<>0 then - flags:=flags and not (uint_ptr(wParam) and ACCF_FLAGS) - else - flags:=flags or (uint_ptr(wParam) and ACCF_FLAGS); - end; -end; diff --git a/plugins/!Deprecated/Actman20/i_const.inc b/plugins/!Deprecated/Actman20/i_const.inc deleted file mode 100644 index 3e9950414f..0000000000 --- a/plugins/!Deprecated/Actman20/i_const.inc +++ /dev/null @@ -1,219 +0,0 @@ -{resource constants} -const - // dialogs - IDD_ACTION = 1025; - IDD_STRUCTURE = 1027; - IDD_ASK = 1028; - - // icons - IDI_NEW = 1025; - IDI_UP = 1026; - IDI_DOWN = 1027; - IDI_DELETE = 1028; - IDI_RELOAD = 1029; - IDI_CONTACT = 1030; - IDI_SERVICE = 1031; - IDI_PROGRAM = 1032; - IDI_INSERT = 1033; - IDI_ADVANCE = 1034; - IDI_CHAIN = 1035; - IDI_RW = 1036; - IDI_TEST = 1037; - IDI_EXPORT = 1038; - IDI_IMPORT = 1039; - IDI_MESSAGE = 1040; - IDI_VAR_CHECKED = 1041; - IDI_VAR_UNCHECKED = 1042; - IDI_FORMAT = 1043; - IDI_APPLY = 1044; - - // Structure editor - IDC_DATA_FULL = 2001; - IDC_DATA_TYPE = 2002; - IDC_DATA_EDIT = 2005; - IDC_DATA_LEN = 2006; - IDC_DATA_HELP = 2007; - - IDC_DATA_NEW = 2008; - IDC_DATA_DELETE = 2009; - IDC_DATA_UP = 2010; - IDC_DATA_DOWN = 2011; - IDC_DATA_CHANGE = 2012; - IDC_DATA_VARS = 2013; - IDC_DATA_PACKED = 2014; - - // Action page -// IDC_RESET = 2001; - - IDC_ACTION_TYPE = 2005; - IDC_STAT_ACTION = 2006; - - IDC_ACTION_LIST = 2007; - IDC_ACTION_NEW = 2008; - IDC_ACTION_DELETE = 2009; - IDC_ACTION_UP = 2010; - IDC_ACTION_DOWN = 2011; - - IDC_ACTION_GROUP = 2012; - IDC_GROUP_NEW = 2015; - IDC_GROUP_RELOAD = 2016; - IDC_GROUP_DELETE = 2017; - IDC_GROUP_TEST = 2018; - IDC_GROUP_UP = 2019; - IDC_GROUP_DOWN = 2020; - IDC_GROUP_EXPORT = 2021; - IDC_GROUP_IMPORT = 2022; - IDC_ACTION_HELP = 2023; - - IDC_STAT_CONTACT = 2140; - IDC_CONTACTLIST = 2141; - IDC_CNT_KEEP = 2142; - IDC_STAT_FORMAT = 2143; - IDC_EDIT_FORMAT = 2144; - IDC_CNT_FILTER = 2145; - IDC_CNT_APPLY = 2146; - IDC_STAT_FHELP = 2147; - - IDC_STAT_WPAR1 = 2150; - IDC_STAT_LPAR1 = 2151; - IDC_STAT_WPAR = 2152; - IDC_STAT_LPAR = 2153; - IDC_FLAG_WPAR = 2154; - IDC_FLAG_LPAR = 2155; - IDC_EDIT_WPAR = 2156; - IDC_EDIT_LPAR = 2157; - IDC_STAT_SERVICE = 2158; - IDC_EDIT_SERVICE = 2159; - IDC_WSTRUCT = 2160; - IDC_LSTRUCT = 2161; - - IDC_RES_POPUP = 2251; - IDC_RES_MESSAGE = 2252; - IDC_RES_INSERT = 2253; - IDC_SRV_RESSTAT = 2254; - IDC_SRV_RESULT = 2255; - IDC_RES_FREEMEM = 2256; - IDC_RES_UNICODE = 2257; - IDC_RES_SIGNED = 2258; - IDC_RES_GROUP = 2259; - - IDC_FLAG_MINIMIZE = 2350; - IDC_STAT_PRGPATH = 2351; - IDC_EDIT_PRGPATH = 2352; - IDC_PROGRAM = 2353; - IDC_STAT_PRGARGS = 2354; - IDC_EDIT_PRGARGS = 2355; - IDC_EDIT_PROCTIME = 2356; - IDC_PROCESS_GROUP = 2357; - IDC_STAT_PROCTIME = 2358; - IDC_PRSTART_GROUP = 2359; - IDC_FLAG_NORMAL = 2360; - IDC_FLAG_HIDDEN = 2361; - IDC_FLAG_MAXIMIZE = 2362; - IDC_FLAG_CURPATH = 2363; - IDC_FLAG_PARALLEL = 2364; - IDC_FLAG_CONTINUE = 2365; - IDC_HLP_FVARS = 2366; - - IDC_HLP_VARS = 2451; - IDC_STAT_INSERT = 2452; - IDC_EDIT_INSERT = 2453; - - IDC_FLAG_CLIP = 2454; - IDC_FLAG_MESSAGE = 2455; - IDC_CLIP_COPYTO = 2456; - IDC_CLIP_PASTE = 2457; - IDC_CLIP_GROUP = 2458; - IDC_FILE_ENC = 2459; -// IDC_CLIP_ANSI = 2459; -// IDC_CLIP_WIDE = 2460; - IDC_FLAG_FILE = 2461; - IDC_FILE_PATH = 2462; - IDC_FILE_FILEBTN = 2463; - IDC_FILE_READ = 2464; - IDC_FILE_WRITE = 2465; - IDC_FILE_APPEND = 2466; - IDC_FILE_GROUP = 2467; - - IDC_STAT_GROUPS = 2500; - IDC_GROUP_LIST = 2501; - - IDC_CONDITION = 2505; - IDC_FLAG_GT = 2506; - IDC_FLAG_LT = 2507; - IDC_FLAG_EQ = 2508; - IDC_FLAG_NOP = 2509; - IDC_FLAG_NOT = 2510; - - IDC_OPERATION = 2511; - IDC_FLAG_BREAK = 2512; - IDC_FLAG_JUMP = 2513; - IDC_FLAG_ANOP = 2514; - IDC_ADV_VALUE = 2515; - IDC_STAT_VAL = 2516; - - IDC_FLAG_MATH = 2519; - IDC_ADV_OPER = 2520; - IDC_ADV_VAL1 = 2521; - IDC_ADV_VAL2 = 2522; - IDC_FLAG_VARS = 2523; - IDC_ADV_VARS = 2524; - IDC_ADV_HVARS = 2526; - IDC_ADV_ASINT = 2527; - - IDC_RW_READ = 2601; - IDC_RW_WRITE = 2602; - IDC_RW_DELETE = 2603; - IDC_RW_STATM = 2605; - IDC_RW_MODULE = 2606; - IDC_RW_STATS = 2607; - IDC_RW_SETTING = 2608; - IDC_RW_TEXT = 2609; - IDC_RW_VALUE = 2610; - IDC_RW_DATATYPE = 2611; - IDC_RW_CURRENT = 2614; - IDC_RW_PARAM = 2615; - IDC_RW_MANUAL = 2616; - IDC_RW_OPER = 2617; - IDC_RW_VAL = 2618; - IDC_RW_RESULT = 2619; - IDC_RW_LAST = 2620; - - IDC_MSG_STAT1 = 2701; - IDC_MSG_STAT2 = 2702; - IDC_MSG_TITLE = 2703; - IDC_MSG_TEXT = 2704; - IDC_MSG_BTNS = 2705; - IDC_MSGB_ARI = 2706; - IDC_MSGB_OK = 2707; - IDC_MSGB_OC = 2708; - IDC_MSGB_RC = 2709; - IDC_MSGB_YN = 2710; - IDC_MSGB_YNC = 2711; - IDC_MSG_ICONS = 2712; - IDC_MSGI_NONE = 2713; - IDC_MSGI_WARN = 2714; - IDC_MSGI_INFO = 2715; - IDC_MSGI_QUEST = 2716; - IDC_MSGI_ERROR = 2717; - IDC_MSG_KEEP = 2718; - -// Variables buttons - IDC_SRV_WPAR = 3000; - IDC_SRV_LPAR = 3001; - IDC_SRV_SRVC = 3002; - IDC_PRG_PRG = 3003; - IDC_PRG_ARG = 3004; - IDC_TXT_FILE = 3005; - IDC_TXT_TEXT = 3006; - IDC_RW_MVAR = 3008; - IDC_RW_SVAR = 3009; - IDC_RW_TVAR = 3010; - IDC_MSG_TTL = 3011; - IDC_MSG_TXT = 3012; - -// Question - IDC_ASK = 1025; - IDC_YESALL = 1026; - IDC_NOALL = 1027; - IDC_APPEND = 1028; diff --git a/plugins/!Deprecated/Actman20/i_contact.inc b/plugins/!Deprecated/Actman20/i_contact.inc deleted file mode 100644 index c73df31435..0000000000 --- a/plugins/!Deprecated/Actman20/i_contact.inc +++ /dev/null @@ -1,113 +0,0 @@ -{hkContact} -const - defformat = '%name% - %uid% (%account%:%group%)'; - -procedure FillContactList(list:hwnd; filter:boolean=true;format:pWideChar=nil); -var - hContact:THANDLE; - buf:array [0..511] of WideChar; - buf1:array [0..63] of WideChar; - p:PWideChar; - uid:pAnsiChar; - ldbv:TDBVARIANT; - acc:pAnsiChar; - lName, - lGroup, - lAccount, - lUID:boolean; -begin - if format=nil then format:=defformat; - - SendMessage(list,CB_RESETCONTENT,0,0); - hContact:=db_find_first(); - - lName :=StrPosW(format,'%name%')<>nil; - lGroup :=StrPosW(format,'%group%')<>nil; - lAccount:=StrPosW(format,'%account%')<>nil; - lUID :=StrPosW(format,'%uid%')<>nil; - - while hContact<>0 do - begin - if ((not filter) and ((IsContactActive(hContact)+1)>=0)) or // + disabled (not deleted) - (filter and (IsContactActive(hContact) >=0)) then - begin - StrCopyW(buf,format); - if lName then - StrReplaceW(buf,'%name%', - PWideChar(CallService(MS_CLIST_GETCONTACTDISPLAYNAME,hContact,GCDNF_UNICODE))); - - if lGroup then - begin - p:=DBReadUnicode(hContact,strCList,'Group',nil); - StrReplaceW(buf,'%group%',p); - mFreeMem(p); - end; - - if lAccount then - begin - acc:=GetContactProtoAcc(hContact); - StrReplaceW(buf,'%account%',FastAnsiToWideBuf(acc,buf1)); - end - else - acc:=nil; - - if lUID then - begin - if acc=nil then - acc:=GetContactProtoAcc(hContact); - if IsChat(hContact) then - begin - p:=DBReadUnicode(hContact,acc,'ChatRoomID'); - StrReplaceW(buf,'%uid%',p); - mFreeMem(p); - end - else - begin - uid:=pAnsiChar(CallProtoService(acc,PS_GETCAPS,PFLAG_UNIQUEIDSETTING,0)); - if uid <> pAnsiChar(CALLSERVICE_NOTFOUND) then - begin - if DBReadSetting(hContact,acc,uid,@ldbv)=0 then - begin - case ldbv._type of - DBVT_DELETED: p:='[deleted]'; - DBVT_BYTE : p:=IntToStr(buf1,ldbv.bVal); - DBVT_WORD : p:=IntToStr(buf1,ldbv.wVal); - DBVT_DWORD : p:=IntToStr(buf1,ldbv.dVal); - DBVT_UTF8 : UTF8ToWide(ldbv.szVal.A,p); - DBVT_ASCIIZ : AnsiToWide(ldbv.szVal.A,p,MirandaCP); - DBVT_WCHAR : p:=ldbv.szVal.W; - DBVT_BLOB : p:='blob'; - end; - StrReplaceW(buf,'%uid%',p); - if ldbv._type in [DBVT_UTF8,DBVT_ASCIIZ] then - mFreeMem(p); - DBFreeVariant(@ldbv); - end; - end; - StrReplaceW(buf,'%uid%',nil); - end; - end; - - SendMessage(list,CB_SETITEMDATA, - SendMessageW(list,CB_ADDSTRING,0,tlparam(@buf)), - hContact); - end; - hContact:=db_find_next(hContact); - end; -end; - -function FindContact(list:hwnd;contact:THANDLE):integer; -var - i,j:integer; -begin - result:=0; - j:=SendMessage(list,CB_GETCOUNT,0,0); - for i:=0 to j-1 do - begin - if THANDLE(SendMessage(list,CB_GETITEMDATA,i,0))=contact then - begin - result:=i; - break; - end; - end; -end; diff --git a/plugins/!Deprecated/Actman20/i_dlglists.inc b/plugins/!Deprecated/Actman20/i_dlglists.inc deleted file mode 100644 index 52808e63cd..0000000000 --- a/plugins/!Deprecated/Actman20/i_dlglists.inc +++ /dev/null @@ -1,75 +0,0 @@ -{Dialog list filling} - procedure InsertString(wnd:HWND;num:dword;str:PAnsiChar); - var - buf:array [0..127] of WideChar; - begin - SendMessageW(wnd,CB_SETITEMDATA, - SendMessageW(wnd,CB_ADDSTRING,0, - lparam(TranslateW(FastAnsiToWideBuf(str,buf)))), - num); - { - SendMessageW(wnd,CB_INSERTSTRING,num, - LPARAM(TranslateW(FastAnsiToWideBuf(str,buf)))); - } - end; - - procedure MakeMathOperList(wnd:HWND); - begin - SendMessage(wnd,CB_RESETCONTENT,0,0); - InsertString(wnd,cardinal(aeNot),'! not'); - InsertString(wnd,cardinal(aeAdd),'+ add'); - InsertString(wnd,cardinal(aeSub),'- sub'); - InsertString(wnd,cardinal(aeMul),'* mul'); - InsertString(wnd,cardinal(aeDiv),'/ div'); - InsertString(wnd,cardinal(aeMod),'% mod'); - InsertString(wnd,cardinal(aeAnd),'& and'); - InsertString(wnd,cardinal(aeOr ),'| or'); - InsertString(wnd,cardinal(aeXor),'^ xor'); - InsertString(wnd,cardinal(aeSet),'= set'); - SendMessage(wnd,CB_SETCURSEL,0,0); - end; - - procedure MakeParamTypeList(wnd:HWND); - begin - SendMessage(wnd,CB_RESETCONTENT,0,0); - InsertString(wnd,ptNumber ,'number value'); - InsertString(wnd,ptString ,'ANSI string'); - InsertString(wnd,ptUnicode,'Unicode string'); - InsertString(wnd,ptCurrent,'current contact'); - InsertString(wnd,ptResult ,'last result'); - InsertString(wnd,ptParam ,'parameter'); - InsertString(wnd,ptStruct ,'structure'); - SendMessage(wnd,CB_SETCURSEL,0,0); - end; - - procedure MakeResultTypeList(wnd:HWND); - begin - SendMessage(wnd,CB_RESETCONTENT,0,0); - InsertString(wnd,sresInt ,'Integer'); - InsertString(wnd,sresHex ,'Hexadecimal'); - InsertString(wnd,sresString,'String'); - InsertString(wnd,sresStruct,'Structure'); - SendMessage(wnd,CB_SETCURSEL,0,0); - end; - - procedure MakeFileEncList(wnd:HWND); - begin - SendMessage(wnd,CB_RESETCONTENT,0,0); - InsertString(wnd,0,'Ansi'); - InsertString(wnd,1,'UTF8'); - InsertString(wnd,2,'UTF8+sign'); - InsertString(wnd,3,'UTF16'); - InsertString(wnd,4,'UTF16+sign'); - SendMessage(wnd,CB_SETCURSEL,0,0); - end; - - procedure MakeDataTypeList(wnd:HWND); - begin - SendMessage(wnd,CB_RESETCONTENT,0,0); - InsertString(wnd,0,'Byte'); - InsertString(wnd,1,'Word'); - InsertString(wnd,2,'DWord'); - InsertString(wnd,3,'Ansi'); - InsertString(wnd,4,'Unicode'); - SendMessage(wnd,CB_SETCURSEL,0,0); - end; diff --git a/plugins/!Deprecated/Actman20/i_inoutxm.inc b/plugins/!Deprecated/Actman20/i_inoutxm.inc deleted file mode 100644 index 41e705f418..0000000000 --- a/plugins/!Deprecated/Actman20/i_inoutxm.inc +++ /dev/null @@ -1,1212 +0,0 @@ -{} -var - xmlparser:TXML_API_W; -const - // Nodes - ioRoot :PWideChar = 'ActMan_Export'; - ioAction :PWideChar = 'Action'; - ioSubAction :PWideChar = 'SubAction'; - ioContactWindow:PWideChar = 'Contact'; - ioCallService :PWideChar = 'Service'; - ioRunProgram :PWideChar = 'Program'; - ioInsertText :PWideChar = 'In/Out'; - ioAdvanced :PWideChar = 'Jump'; - ioLinkAction :PWideChar = 'Chain'; - ioProfile :PWideChar = 'Database'; - ioMessageBox :PWideChar = 'MessageBox'; - ioWParam :PWideChar = 'WPARAM'; - ioLParam :PWideChar = 'LPARAM'; - ioItem :PWideChar = 'ITEM'; - ioPost :PWideChar = 'POST'; - ioIf :PWideChar = 'IF'; - ioAct :PWideChar = 'ACT'; - ioOutput :PWideChar = 'OUTPUT'; - ioClass :PWideChar = 'class'; - // Attributes - ioType :PWideChar = 'type'; - ioInverse :PWideChar = 'inverse'; - ioName :PWideChar = 'name'; - ioDisabled :PWideChar = 'disabled'; - ioVolatile :PWideChar = 'volatile'; - ioLast :PWideChar = 'last'; - ioWindow :PWideChar = 'window'; - ioParallel :PWideChar = 'parallel'; - ioArgs :PWideChar = 'args'; - ioWait :PWideChar = 'wait'; - ioObject :PWideChar = 'object'; - ioOper :PWideChar = 'oper'; - ioMessage :PWideChar = 'message'; -// ioDest :PWideChar = 'dest'; - ioEnc :PWideChar = 'enc'; - ioValue :PWideChar = 'value'; - ioService :PWideChar = 'service'; - ioNot :PWideChar = 'not'; - ioCond :PWideChar = 'cond'; - ioVariables :PWideChar = 'variables'; - ioFileVariable :PWideChar = 'modvariables'; - ioArgVariable :PWideChar = 'argvariables'; - ioModule :PWideChar = 'module'; - ioSetting :PWideChar = 'setting'; - ioCProto :PWideChar = 'cproto'; - ioCUIDType :PWideChar = 'cuidtype'; - ioCUID :PWideChar = 'cuid'; - ioIsChat :pWideChar = 'ischat'; - ioTitle :PWideChar = 'title'; - ioFile :PWideChar = 'file'; - ioAsInt :PWideChar = 'asint'; - ioKeepOnly :PWideChar = 'keeponly'; - ioKeepLast :PWideChar = 'keeplast'; - ioReturn :PWideChar = 'return'; - ioLength :PWideChar = 'length'; - ioFree :PWideChar = 'free'; - ioPacked :PWideChar = 'packed'; - - // Values - ioNumber :PWideChar = 'number'; - ioCurrent :PWideChar = 'current'; - ioContact :PWideChar = 'contact'; - ioStruct :PWideChar = 'struct'; - ioResult :PWideChar = 'result'; - ioParam :PWideChar = 'param'; - ioByte :PWideChar = 'byte'; - ioWord :PWideChar = 'word'; - ioDword :PWideChar = 'dword'; - ioAnsi :PWideChar = 'ansi'; - ioUnicode :PWideChar = 'unicode'; -// ioWStruct :PWideChar = 'wordstruct'; -// ioBStruct :PWideChar = 'bytestruct'; - ioHex :PWideChar = 'hex'; - ioInt :PWideChar = 'int'; - ioSigned :PWideChar = 'signed'; - ioPopup :PWideChar = 'popup'; - ioMsgBox :PWideChar = 'msgbox'; - ioHidden :PWideChar = 'hidden'; - ioMinimized :PWideChar = 'minimized'; - ioMaximized :PWideChar = 'maximized'; - ioNormal :PWideChar = 'normal'; - ioClipboard :PWideChar = 'clipboard'; - ioCopy :PWideChar = 'copy'; - ioPaste :PWideChar = 'paste'; - ioBreak :PWideChar = 'break'; - ioJump :PWideChar = 'jump'; - ioNop :PWideChar = 'nop'; -// ioArray :PWideChar = 'array'; - ioScript :PWideChar = 'script'; - ioWrite :PWideChar = 'write'; - ioRead :PWideChar = 'read'; - ioAppend :PWideChar = 'append'; - ioDelete :PWideChar = 'delete'; - -const - imp_yes = 1; - imp_yesall = 2; - imp_no = 3; - imp_noall = 4; - imp_append = 5; - -function ReadStruct(act:HXML):int_ptr; -{ -var - child,i:integer; - tmp:pWideChar; - sub:HXML; - typ:pWideChar; -} -begin - result:=0; -(* - mGetMem (tmp ,32768); - FillChar(tmp^,32768,0); - result:=int_ptr(tmp); - with xmlparser do - begin -{ - typ:=getAttrValue(act,ioPacked); - if (typ<>nil) and (typ^<>#0) and (typ^<>'0') then - begin - tmp^:=char_packed; inc(tmp); - end; -} - child:=0; - repeat - sub:=getNextChild(act,ioItem,@child); - if sub=0 then break; - - typ:=getAttrValue(sub,ioType); - for i:=0 to MaxStructTypes-1 do - begin - if lstrcmpiw(typ,StructElems[i].short)=0 then break; - end; - if StrToInt(getAttrValue(sub,ioReturn))=1 then - begin - tmp^:=char_return; inc(tmp); - end; - if StrToInt(getAttrValue(sub,ioScript))=1 then - begin - tmp^:=char_script; inc(tmp); - end; - tmp:=StrCopyEW(tmp,typ); - tmp^:=' '; inc(tmp); - case StructElems[i].typ of - SST_LAST, SST_PARAM: ; - SST_BYTE, - SST_WORD, - SST_DWORD, - SST_QWORD, - SST_NATIVE: begin - tmp:=StrCopyEW(tmp,getAttrValue(sub,ioValue)); - end; - SST_BARR, SST_WARR, - SST_BPTR, SST_WPTR: begin - tmp:=StrCopyEW(tmp,getAttrValue(sub,ioLength)); - tmp^:=' '; inc(tmp); - tmp:=StrCopyEW(tmp,getAttrValue(sub,ioValue)); - end; - end; - tmp^:='|'; inc(tmp); - until false; - dec(tmp); tmp^:=#0; - end; -*) -end; - -function ReadParam(act:HXML; var param:int_ptr;isvar:boolean):dword; -var - tmp:pWideChar; -begin - result:=0; - if act=0 then - exit; - with xmlparser do - begin - tmp:=getAttrValue(act,ioType); - if lstrcmpiw(tmp,ioCurrent)=0 then result:=result or ACF_WCURRENT - else if lstrcmpiw(tmp,ioResult )=0 then result:=result or ACF_WRESULT - else if lstrcmpiw(tmp,ioParam )=0 then result:=result or ACF_WPARAM - else if lstrcmpiw(tmp,ioNumber )=0 then - begin - result:=result or ACF_WPARNUM; - tmp:=getAttrValue(act,ioValue); - if isvar then - StrDupW(pWideChar(param),tmp) - else - param:=StrToInt(tmp); - end - else if lstrcmpiw(tmp,ioStruct)=0 then - begin - result:=result or ACF_WSTRUCT; - param:=ReadStruct(act); - end - else if lstrcmpiw(tmp,ioUnicode)=0 then - begin - result:=result or ACF_WUNICODE; - StrDupW(pWideChar(param),getAttrValue(act,ioValue)); - end - else if lstrcmpiw(tmp,ioAnsi)=0 then - begin - WideToAnsi(getAttrValue(act,ioValue),pAnsiChar(param),MirandaCP); - end; - end; -end; - -function ImportContact(node:HXML):THANDLE; -var - proto:pAnsiChar; - tmpbuf:array [0..63] of AnsiChar; - dbv:TDBVARIANT; - is_chat:boolean; - bufLen:int; -begin - with xmlparser do - begin - proto:=FastWideToAnsiBuf(getAttrValue(node,ioCProto),tmpbuf); - if (proto=nil) or (proto^=#0) then - begin - result:=0; - exit; - end; - is_chat:=StrToInt(getAttrValue(node,ioIsChat))<>0; - - if is_chat then - begin - dbv.szVal.W:=getAttrValue(node,ioCUID); - end - else - begin - FillChar(dbv,SizeOf(TDBVARIANT),0); - dbv._type:=StrToInt(getAttrValue(node,ioCUIDType)); - case dbv._type of - DBVT_BYTE : dbv.bVal:=StrToInt(getAttrValue(node,ioCUID)); - DBVT_WORD : dbv.wVal:=StrToInt(getAttrValue(node,ioCUID)); - DBVT_DWORD : dbv.dVal:=StrToInt(getAttrValue(node,ioCUID)); - DBVT_ASCIIZ: FastWideToAnsi(getAttrValue(node,ioCUID),dbv.szVal.A); - DBVT_UTF8 : WideToUTF8(getAttrValue(node,ioCUID),dbv.szVal.A); - DBVT_WCHAR : StrDupW(dbv.szVal.W,getAttrValue(node,ioCUID)); - DBVT_BLOB : begin - dbv.pbVal := mir_base64_decode(FastWideToAnsi(getAttrValue(node,ioCUID),pAnsiChar(dbv.pbVal)), bufLen); - dbv.cpbVal := bufLen; - end; - end; - end; - end; - result:=FindContactHandle(proto,dbv,is_chat); - if not is_chat then - case dbv._type of - DBVT_WCHAR, - DBVT_ASCIIZ, - DBVT_UTF8 : mFreeMem(dbv.szVal.A); - DBVT_BLOB : mFreeMem(dbv.pbVal); - end; -end; - -function ImportAction(actnode:HXML):integer; -var - tmp:pWideChar; - act:tHKAction; - sub:HXML; -begin - FillChar(act,SizeOf(act),0); - with xmlparser,act do - begin - flags:=ACF_ASSIGNED; - if StrToInt(getAttrValue(actnode,ioDisabled))=1 then - flags:=flags or ACF_DISABLED; - - StrDupW(descr,getAttrValue(actnode,ioName)); - - actnode:=getChild(actnode,0); - tmp:=getName(actnode); -//MessageBoxW(0,tmp,'node',0); - - // CONTACT - if StrCmpW(tmp,ioContactWindow)=0 then - begin - actionType:=ACT_CONTACT; - contact:=ImportContact(actnode); -// contact:=StrToInt(getAttrValue(actnode,ioNumber)); - if StrToInt(getAttrValue(actnode,ioKeepOnly))=1 then - flags:=flags or ACF_KEEPONLY; - end - - // SERVICE - else if StrCmpW(tmp,ioCallService)=0 then - begin - actionType:=ACT_SERVICE; - FastWideToAnsi(getAttrValue(actnode,ioService),service); -//MessageBoxA(0,service,'service',0); - if StrToInt(getAttrValue(actnode,ioVariables))=1 then - flags2:=flags2 or ACF2_SRV_SRVC; - - sub:=getNthChild(actnode,ioWParam,0); - if StrToInt(getAttrValue(sub,ioVariables))=1 then - flags2:=flags2 or ACF2_SRV_WPAR; - if StrToInt(getAttrValue(sub,ioHex))=1 then - flags2:=flags2 or ACF2_SRV_WHEX; - flags:=flags or ReadParam(sub,int_ptr(wparam),(flags2 and ACF2_SRV_WPAR)<>0); - - sub:=getNthChild(actnode,ioLParam,0); - if StrToInt(getAttrValue(sub,ioVariables))=1 then - flags2:=flags2 or ACF2_SRV_LPAR; - if StrToInt(getAttrValue(sub,ioHex))=1 then - flags2:=flags2 or ACF2_SRV_LHEX; - flags:=flags or (ReadParam(sub,lparam,(flags2 and ACF2_SRV_LPAR)<>0) shl 1); - - sub:=getNthChild(actnode,ioOutput,0); - if StrToInt(getAttrValue(sub,ioMessage))=1 then flags:=flags or ACF_INSERT; - if StrToInt(getAttrValue(sub,ioPopup ))=1 then flags:=flags or ACF_POPUP; - if StrToInt(getAttrValue(sub,ioMsgBox ))=1 then flags:=flags or ACF_MESSAGE; - - if StrToInt(getAttrValue(sub,ioFree))=1 then flags2:=flags2 or ACF2_FREEMEM; - - tmp:=getAttrValue(sub,ioType); - if lstrcmpiw(tmp,ioUnicode)=0 then flags:=flags or ACF_UNICODE+ACF_STRING - else if lstrcmpiw(tmp,ioAnsi )=0 then flags:=flags or ACF_STRING - else if lstrcmpiw(tmp,ioSigned )=0 then flags:=flags or ACF_SIGNED - else if lstrcmpiw(tmp,ioHex )=0 then flags:=flags or ACF_HEX - else if lstrcmpiw(tmp,ioStruct )=0 then flags:=flags or ACF_STRUCT - else if lstrcmpiw(tmp,ioInt )=0 then ; -//MessageBoxW(0,'','end',0); - end - - // PROGRAM - else if StrCmpW(tmp,ioRunProgram)=0 then - begin - actionType:=ACT_PROGRAM; - StrDupW(prgname,getText(actnode)); - StrDupW(args,getAttrValue(actnode,ioArgs)); - if StrToInt(getAttrValue(actnode,ioCurrent))=1 then - flags:=flags or ACF_CURPATH; - - if StrToInt(getAttrValue(actnode,ioParallel))=1 then - flags:=flags or ACF_PRTHREAD - else - time:=StrToInt(getAttrValue(actnode,ioWait)); - - if StrToInt(getAttrValue(actnode,ioFileVariable))=1 then - flags2:=flags2 or ACF2_PRG_PRG; - - if StrToInt(getAttrValue(actnode,ioArgVariable))=1 then - flags2:=flags2 or ACF2_PRG_ARG; - - tmp:=getAttrValue(actnode,ioWindow); - if lstrcmpiw(tmp,ioHidden )=0 then show:=SW_HIDE - else if lstrcmpiw(tmp,ioMinimized)=0 then show:=SW_SHOWMINIMIZED - else if lstrcmpiw(tmp,ioMaximized)=0 then show:=SW_SHOWMAXIMIZED - else show:=SW_SHOWNORMAL; - end - - // INSERT TEXT - else if StrCmpW(tmp,ioInsertText)=0 then - begin - actionType:=ACT_TEXT; - tmp:=getAttrValue(actnode,ioObject); - if lstrcmpiw(tmp,ioClipboard)=0 then - begin - flags:=flags or ACF_CLIPBRD; - tmp:=getAttrValue(actnode,ioOper); - if lstrcmpiw(tmp,ioCopy)=0 then flags:=flags or ACF_COPYTO; -// else if lstrcmpiw(tmp,'paste')=0 then ; - tmp:=getAttrValue(actnode,ioEnc); - if lstrcmpiw(tmp,ioAnsi)=0 then flags:=flags or ACF_ANSI; -// else if lstrcmpiw(tmp,'unicode')=0 then ; - end - else - begin - StrDupW(text,getText(actnode)); - - if StrToInt(getAttrValue(actnode,ioVariables))=1 then - flags2:=flags2 or ACF2_TXT_TEXT; - - if lstrcmpiw(tmp,ioFile)=0 then - begin - - if StrToInt(getAttrValue(actnode,ioFileVariable))=1 then - flags2:=flags2 or ACF2_TXT_FILE; - - flags:=flags or ACF_FILE; - StrDupW(tfile,getAttrValue(actnode,ioFile)); - tmp:=getAttrValue(actnode,ioOper); - if lstrcmpiw(tmp,ioWrite )=0 then flags:=flags or ACF_FWRITE - else if lstrcmpiw(tmp,ioAppend)=0 then flags:=flags or ACF_FAPPEND; - case StrToInt(getAttrValue(actnode,ioEnc)) of - 0: flags:=flags or ACF_ANSI; - 1: flags:=flags or ACF_UTF8; - 2: flags:=flags or ACF_UTF8 or ACF_SIGN; - 3: flags:=flags or 0; - 4: flags:=flags or ACF_SIGN; - end; - end; - end; - end - - // ADVANCED - else if StrCmpW(tmp,ioAdvanced)=0 then - begin - actionType:=ACT_ADVANCE; - sub:=getNthChild(actnode,ioIf,0); - if sub<>0 then - begin - tmp:=getAttrValue(sub,ioCond); - if lstrcmpiw(tmp,'gt' )=0 then condition:=condition or ADV_COND_GT - else if lstrcmpiw(tmp,'lt' )=0 then condition:=condition or ADV_COND_LT - else if lstrcmpiw(tmp,'eq' )=0 then condition:=condition or ADV_COND_EQ - else if lstrcmpiw(tmp,ioNop)=0 then ; - - if StrToInt(getAttrValue(sub,ioNot))=1 then - condition:=condition or ADV_COND_NOT; - - value:=StrToInt(getAttrValue(sub,ioValue)); - end; - - sub:=getNthChild(actnode,ioAct,0); - tmp:=getAttrValue(sub,ioType); - if lstrcmpiw(tmp,ioValue)=0 then - begin - action:=action or ADV_ACT_MATH; - tmp:=getAttrValue(sub,ioOper); - if lstrcmpiw(tmp,ioInverse)=0 then - oper:=Cardinal(aeNot) - else - begin - case tmp^ of - '+': oper:=Cardinal(aeAdd); - '-': oper:=Cardinal(aeSub); - '*': oper:=Cardinal(aeMul); - '\': oper:=Cardinal(aeDiv); - '%': oper:=Cardinal(aeMod); - '&': oper:=Cardinal(aeAnd); - '|': oper:=Cardinal(aeOr ); - '^': oper:=Cardinal(aeXor); - '=': oper:=Cardinal(aeSet); - end; - mathval:=StrToInt(getAttrValue(sub,ioValue)); - end; - end - else if lstrcmpiw(tmp,ioScript)=0 then - begin - if StrToInt(getAttrValue(sub,ioAsInt))<>0 then - flags:=flags or ACF_VARASINT; - action:=action or ADV_ACT_VARS; - StrDupW(varval,getText(sub)); - end; - - sub:=getNthChild(actnode,ioPost,0); - if sub<>0 then - begin - tmp:=getAttrValue(sub,ioOper); - if lstrcmpiw(tmp,ioBreak)=0 then action:=action or ADV_ACT_BREAK - else if lstrcmpiw(tmp,ioJump )=0 then action:=action or ADV_ACT_JUMP - else if lstrcmpiw(tmp,ioNop )=0 then ; - - tmp:=getAttrValue(sub,ioValue); - case action and ADV_ACT_POST of - ADV_ACT_JUMP: StrDupW(operval,tmp); - end; - end; - end - - // CHAIN - else if StrCmpW(tmp,ioLinkAction)=0 then - begin - actionType:=ACT_CHAIN; - StrDupW(actname,getText(actnode)); - flags:=flags or ACF_BYNAME; - end - - // DBRW - else if StrCmpW(tmp,ioProfile)=0 then - begin - actionType:=ACT_RW; - tmp:=getAttrValue(actnode,ioOper); - if lstrcmpiw(tmp,ioDelete)=0 then flags:=flags or ACF_DBDELETE - else if lstrcmpiw(tmp,ioWrite )=0 then flags:=flags or ACF_DBWRITE; -// else if lstrcmpiw(tmp,ioRead)=0 then ; - tmp:=getAttrValue(actnode,ioContact); - if lstrcmpiw(tmp,ioCurrent)=0 then flags:=flags or ACF_CURRENT - else if lstrcmpiw(tmp,ioResult )=0 then flags:=flags or ACF_RESULT - else if lstrcmpiw(tmp,ioParam )=0 then flags:=flags or ACF_PARAM - else if lstrcmpiw(tmp,ioContact)=0 then - begin - contact:=ImportContact(actnode); - end; - - FastWideToAnsi(getAttrValue(actnode,ioModule ),dbmodule); - FastWideToAnsi(getAttrValue(actnode,ioSetting),dbsetting); - - if StrToInt(getAttrValue(actnode,ioFileVariable))=1 then flags2:=flags2 or ACF2_RW_MVAR; - if StrToInt(getAttrValue(actnode,ioArgVariable ))=1 then flags2:=flags2 or ACF2_RW_SVAR; - if StrToInt(getAttrValue(actnode,ioVariables ))=1 then flags2:=flags2 or ACF2_RW_TVAR; - if StrToInt(getAttrValue(actnode,ioHex ))=1 then flags2:=flags2 or ACF2_RW_HEX; - - tmp:=getAttrValue(actnode,ioType); - if lstrcmpiw(tmp,ioByte )=0 then flags:=flags or ACF_DBBYTE - else if lstrcmpiw(tmp,ioWord )=0 then flags:=flags or ACF_DBWORD - else if lstrcmpiw(tmp,ioDword)=0 then - else // if lstrcmpiw(tmp,ioUnicode)=0 then - begin - if lstrcmpiw(tmp,ioAnsi)=0 then - flags:=flags or ACF_DBANSI - else - flags:=flags or ACF_DBUTEXT; - StrDupW(pWideChar(dbvalue),getText(actnode)); - end; - - if StrToInt(getAttrValue(actnode,ioLast))=1 then - flags:=flags or ACF_LAST - else if (flags and ACF_DBUTEXT)=0 then - begin - if (flags2 and ACF2_RW_TVAR)<>0 then - StrDupW(pWideChar(dbvalue),getText(actnode)) - else - dbvalue:=StrToInt(getAttrValue(actnode,ioValue)); - end; - end - - // MessageBox - else if StrCmpW(tmp,ioMessageBox)=0 then - begin - actionType:=ACT_MESSAGE; - StrDupW(msgtitle,getAttrValue(actnode,ioTitle)); - StrDupW(msgtext,getText(actnode)); - boxopts:=StrToInt(getAttrValue(actnode,ioType)); - if StrToInt(getAttrValue(actnode,ioArgVariable))=1 then flags2:=flags2 or ACF2_MSG_TXT; - if StrToInt(getAttrValue(actnode,ioVariables ))=1 then flags2:=flags2 or ACF2_MSG_TTL; - if StrToInt(getAttrValue(actnode,ioKeepLast ))=1 then flags :=flags or ACF_MSG_KEEP; - end - - else - begin - actionType:=ACT_UNKNOWN; - result:=0; - Exit; - end; - end; - result:=NewAction(ActionList,MaxActions); - move(act,ActionList^[result],SizeOf(tHKAction)); -end; - -function Import(fname:PWideChar;aflags:dword):integer; -var - f:THANDLE; - i,j:integer; - tmp,res:pWideChar; - root,actnode:HXML; - last,next:integer; - impact:integer; - buf:array [0..511] of WideChar; - oldid:dword; -begin - result:=0; - for i:=0 to MaxGroups-1 do - with GroupList[i] do - if (flags and (ACF_IMPORT or ACF_ASSIGNED))= - (ACF_IMPORT or ACF_ASSIGNED) then - flags:=flags and not (ACF_IMPORT or ACF_OVERLOAD); - - if (fname=nil) or (fname^=#0) then - exit; - i:=GetFSize(fname); - if i=0 then - exit; - mGetMem (res ,i+SizeOf(WideChar)); - FillChar(res^,i+SizeOf(WideChar),0); - f:=Reset(fname); - BlockRead(f,res^,i); - CloseHandle(f); - -//MessageBoxW(0,res,'SRC',0); - xmlparser.cbSize:={XML_API_SIZEOF_V1;//}SizeOf(TXML_API_W); - CallService(MS_SYSTEM_GET_XI,0,lparam(@xmlparser)); - with xmlparser do - begin - root:=parseString(ChangeUnicode(res),@i,nil); - j:=0; - impact:=imp_yes; - repeat - actnode:=getNthChild(root,ioAction,j); - if actnode=0 then break; -//MessageBoxW(0,'not zero','actnode',0); -//?? if StrCmpW(getName(actnode),ioAction)<>0 then break; - tmp:=getAttrValue(actnode,ioName); -//MessageBoxW(0,tmp,'nodename',0); - if tmp<>nil then //!! - begin - i:=GetActIdxByName(tmp); - oldid:=$FFFFFFFF; - if i>=0 then - begin - if (impact<>imp_yesall) and (impact<>imp_noall) then - begin - StrCopyW(buf,TranslateW('Action "$" exists, do you want to rewrite it?')); - impact:=DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_ASK),0, - @QuestionDlg,TLPARAM(StrReplaceW(buf,'$',tmp))); - end; - if (impact=imp_yesall) or (impact=imp_yes) then - begin - oldid:=GroupList^[i].id; - FreeGroup(i); - end; - end; - if (i<0) or (impact=imp_yesall) or (impact=imp_yes) or (impact=imp_append) then - begin - with GroupList^[NewGroup(GroupList,MaxGroups)] do - begin - if (i>=0) and (oldid<>$FFFFFFFF) then // set old id to keep UseAction setting - begin - flags:=flags or ACF_IMPORT or ACF_OVERLOAD; - id:=oldid; - end; - flags:=flags or ACF_IMPORT; - if StrToInt(getAttrValue(actnode,ioDisabled))=1 then flags:=flags or ACF_DISABLED; - if StrToInt(getAttrValue(actnode,ioVolatile))=1 then flags:=flags or ACF_VOLATILE; - mFreeMem(descr); - StrDupW(descr,tmp); - i:=0; - last:=-1; -//MessageBoxW(0,descr,'descr',0); - repeat - next:=ImportAction(getChild(actnode,i)); - if next=0 then - break; - if last<0 then - firstAction:=next - else - ActionList[last].next:=next; - last:=next; - inc(i); - until false; - inc(result); - end; - end; - end; - inc(j); - until false; - DestroyNode(root); - end; - mFreeMem(res); -end; - -//-------------------------- - -procedure WriteStruct(node:HXML;struct:PWideChar); -{var - sub:HXML; - ppc,value,lsrc,p,pc:pWideChar; - i,len:integer; - typ:integer; -} -begin -(* - if struct=nil then exit; - - mGetMem(pc,4096); - lsrc:=pWideChar(struct); - with xmlparser do - begin -{ - if lsrc^=char_packed then - begin - AddAttrInt(node,ioPacked,1); - inc(lsrc); - end; -} - while lsrc^<>#0 do - begin - sub:=AddChild(node,ioItem,nil); - p:=StrScanW(lsrc,'|'); - StrCopyW(pc,lsrc,p-lsrc); - - ppc:=pc; - if ppc^=char_return then - begin - AddAttrInt(sub,ioReturn,1); - inc(ppc); - end; - - if ppc^=char_script then - begin - AddAttrInt(sub,ioScript,1); - inc(ppc); - end; - - typ:=GetOneElement(ppc,len,value); - - i:=0; - while i0 then - begin - s:=ioNumber; - if (flags2 and ACF2_SRV_WPAR)<>0 then - AddAttr(node,ioValue,PWideChar(param)) - else - AddAttrInt(node,ioValue,param); - end - else if (flags and ACF_WCURRENT)<>0 then - begin - s:=ioCurrent; - end - else if (flags and ACF_WRESULT)<>0 then - begin - s:=ioResult; - end - else if (flags and ACF_WPARAM)<>0 then - begin - s:=ioParam; - end - else if (flags and ACF_WSTRUCT)<>0 then - begin - s:=ioStruct; - WriteStruct(node,pointer(param)); - end - else if (flags and ACF_WUNICODE)<>0 then - begin - s:=ioUnicode; - AddAttr(node,ioValue,PWideChar(param)); - end - else - begin - s:=ioAnsi; - AddAttr(node,ioValue,AnsiToWide(PAnsiChar(param),tmp)); - mFreeMem(tmp); - end; - AddAttr(node,ioType,s); - end; -end; - -function ExportContact(node:HXML;hContact:THANDLE):integer; -var - proto,uid:pAnsiChar; - cws:TDBVARIANT; - p1:pAnsiChar; - p:pWideChar; - tmpbuf:array [0..63] of WideChar; - is_chat:boolean; -begin - result:=0; - proto:=GetContactProtoAcc(hContact); - if proto<>nil then - begin - is_chat:=IsChat(hContact); - if is_chat then - begin - with xmlparser do - begin - p:=DBReadUnicode(hContact,proto,'ChatRoomID'); - addAttr(node,ioCUID,p); - mFreeMem(p); - end; - result:=1; - end - else - begin - uid:=pAnsiChar(CallProtoService(proto,PS_GETCAPS,PFLAG_UNIQUEIDSETTING,0)); - if DBReadSetting(hContact,proto,uid,@cws)=0 then - begin - result:=1; - with xmlparser do - begin - addAttrInt(node,ioCUIDType,cws._type); - case cws._type of - DBVT_BYTE : AddAttrInt(node,ioCUID,cws.bVal); - DBVT_WORD : AddAttrInt(node,ioCUID,cws.wVal); - DBVT_DWORD : AddAttrInt(node,ioCUID,cws.dVal); - DBVT_ASCIIZ: begin - AddAttr(node,ioCUID,FastAnsiToWide(cws.szVal.A,p)); - mFreeMem(p); - end; - DBVT_UTF8 : begin - AddAttr(node,ioCUID,UTF8ToWide(cws.szVal.A,p)); - // AddAttr(node,'cuid',FastAnsiToWide(cws.szVal.A,p)); - mFreeMem(p); - end; - DBVT_WCHAR : AddAttr(node,ioCUID,cws.szVal.W); - DBVT_BLOB : begin - p1:=mir_base64_encode(cws.pbVal,cws.cpbVal); - AddAttr(node,ioCUID,FastAnsiToWide(p1,p)); - mir_free(p1); - mFreeMem(p); - end; - end; - end; - end; - DBFreeVariant(@cws); - end; - if result<>0 then - begin - with xmlparser do - begin - addAttr (node,ioCProto,FastAnsiToWideBuf(proto,tmpbuf)); - addAttrInt(node,ioIsChat,ord(is_chat)); - end; - end; - end; -end; - -procedure WriteAction(actnode:HXML;idx:integer); -var - sub, act: HXML; - s:PWideChar; - i:integer; - tmp:pWideChar; -begin - with xmlparser,ActionList[idx] do - begin - actnode:=AddChild(actnode,ioSubAction,nil); - if descr<>nil then - AddAttr(actnode,ioName,descr); - if (flags and ACF_DISABLED)<>0 then - AddAttrInt(actnode,ioDisabled,1); - - case actionType of -// ----- CONTACT ----- - ACT_CONTACT: begin - AddAttr(actnode,ioClass,ioContactWindow); - sub:=actnode; -// sub:=AddChild(actnode,ioContactWindow,nil); - ExportContact(sub,contact); -// AddAttrInt(sub,ioNumber,0); // contact - if (flags and ACF_KEEPONLY)<>0 then AddAttrInt(sub,ioKeepOnly,1); - end; -// ----- SERVICE ----- - ACT_SERVICE: begin - AddAttr(actnode,ioClass,ioCallService); - sub:=actnode; -// sub:=AddChild(actnode,ioCallService,nil); - AddAttr(sub,ioService,FastAnsiToWide(service,tmp)); - if (flags2 and ACF2_SRV_SRVC)<>0 then AddAttrInt(sub,ioVariables,1); - mFreeMem(tmp); - act:=AddChild(sub,ioWParam,nil); WriteParam(act,flags ,wparam,flags2); - if (flags2 and ACF2_SRV_WPAR)<>0 then AddAttrInt(act,ioVariables,1); - if (flags2 and ACF2_SRV_WHEX)<>0 then AddAttrInt(act,ioHex ,1); - act:=AddChild(sub,ioLParam,nil); WriteParam(act,flags shr 1,lparam,flags2 shr 1); - if (flags2 and ACF2_SRV_LPAR)<>0 then AddAttrInt(act,ioVariables,1); - if (flags2 and ACF2_SRV_LHEX)<>0 then AddAttrInt(act,ioHex ,1); - - act:=AddChild(sub,ioOutput,nil); - if (flags and (ACF_MESSAGE+ACF_POPUP+ACF_INSERT))<>0 then - begin - if (flags and ACF_INSERT )<>0 then AddAttrInt(act,ioMessage,1); - if (flags and ACF_POPUP )<>0 then AddAttrInt(act,ioPopup ,1); - if (flags and ACF_MESSAGE)<>0 then AddAttrInt(act,ioMsgBox ,1); - end; - - if (flags2 and ACF2_FREEMEM)<>0 then AddAttrInt(sub,ioFree,1); - - if (flags and ACF_STRUCT)<>0 then - s:=ioStruct - else if (flags and ACF_STRING)<>0 then - begin - if (flags and ACF_UNICODE)<>0 then - s:=ioUnicode - else - s:=ioAnsi; - end - else - begin - if (flags and ACF_SIGNED)<>0 then s:=ioSigned - else if (flags and ACF_HEX )<>0 then s:=ioHex - else s:=ioInt; - end; - AddAttr(act,ioType,s); - end; -// ----- PROGRAM ----- - ACT_PROGRAM: begin - AddAttr(actnode,ioClass,ioRunProgram); - setText(actnode,prgname); - sub:=actnode; -// sub:=AddChild(actnode,ioRunProgram,prgname); - if args<>nil then - AddAttr(sub,ioArgs,args); - if (flags and ACF_CURPATH)<>0 then AddAttrInt(sub,ioCurrent,1); - if (flags and ACF_PRTHREAD)=0 then AddAttrInt(sub,ioWait,time) - else AddAttrInt(sub,ioParallel,1); - - if (flags2 and ACF2_PRG_PRG)<>0 then AddAttrInt(sub,ioFileVariable,1); - if (flags2 and ACF2_PRG_ARG)<>0 then AddAttrInt(sub,ioArgVariable ,1); - - case show of - SW_HIDE : s:=ioHidden; - SW_SHOWMINIMIZED: s:=ioMinimized; - SW_SHOWMAXIMIZED: s:=ioMaximized; - else - s:=ioNormal; - end; - AddAttr(sub,ioWindow,s); - end; -// ----- TEXT ----- - ACT_TEXT: begin - if (flags and ACF_CLIPBRD)<>0 then - begin - AddAttr(actnode,ioClass,ioInsertText); - end - else - begin - if (flags and ACF_FILE)<>0 then - AddAttr(actnode,ioClass,ioInsertText) - else - begin - AddAttr(actnode,ioClass,'Text'); - setText(actnode,text); - end; - end; - sub:=actnode; -// sub:=AddChild(actnode,ioInsertText,tmp); - if (flags and ACF_CLIPBRD)<>0 then - begin - AddAttr(sub,ioObject,ioClipboard); - if (flags and ACF_COPYTO)<>0 then - s:=ioCopy - else - s:=ioPaste; - AddAttr(sub,ioOper,s); - if (flags and ACF_ANSI)=0 then - s:=ioUnicode - else - s:=ioAnsi; - AddAttr(sub,ioEnc,s); - end - else - begin - if (flags and ACF_FILE)<>0 then - begin - if (flags2 and ACF2_TXT_FILE)<>0 then - AddAttrInt(sub,ioFileVariable,1); - AddAttr(sub,ioObject,ioFile); - AddAttr(sub,ioFile,tfile); - if (flags and ACF_FWRITE )<>0 then AddAttr(sub,ioOper,ioWrite) - else if (flags and ACF_FAPPEND)<>0 then AddAttr(sub,ioOper,ioAppend); - - if (flags and ACF_ANSI)<>0 then - i:=0 - else if (flags and ACF_UTF8)<>0 then - begin - if (flags and ACF_SIGN)<>0 then - i:=2 - else - i:=1; - end - else if (flags and ACF_SIGN)<>0 then - i:=4 - else - i:=3; - AddAttrInt(sub,ioEnc,i); - end - else - AddAttr(sub,ioObject,ioWindow); - - if (flags2 and ACF2_TXT_TEXT)<>0 then - AddAttrInt(sub,ioVariables,1); - end; - end; -// ----- ADVANCED ----- - ACT_ADVANCE: begin - AddAttr(actnode,ioClass,ioAdvanced); - sub:=actnode; -// sub:=AddChild(actnode,ioAdvanced,nil); - if lobyte(condition)<>0 then - begin - act:=AddChild(sub,ioIf,nil); - if (lobyte(condition) and ADV_COND_NOT)<>0 then - AddAttrInt(act,ioNot,1); - case lobyte(condition) and not ADV_COND_NOT of - ADV_COND_GT: s:='gt'; - ADV_COND_LT: s:='lt'; - ADV_COND_EQ: s:='eq'; - else - s:=ioNop; - end; - AddAttr(act,ioOper,'math'); - AddAttr(act,ioCond,s); - AddAttrInt(act,ioValue,value); - end; - - if (action and not 3)<>ADV_ACT_VARS then - tmp:=nil - else - tmp:=varval; - act:=AddChild(sub,ioAct,tmp); - case action and ADV_ACTION of - ADV_ACT_MATH: begin - AddAttr(act,ioType,ioValue); - if tAdvExpr(oper)=aeNot then - AddAttr(act,ioOper,ioInverse) - else - begin - case tAdvExpr(oper) of - aeAdd: s:='+'; - aeSub: s:='-'; - aeMul: s:='*'; - aeDiv: s:='\'; - aeMod: s:='%'; - aeAnd: s:='&'; - aeOr : s:='|'; - aeXor: s:='^'; - aeSet: s:='='; - else - s:=nil; - end; - AddAttr(act,ioOper,s); - AddAttrInt(act,ioValue,mathval); - end; - end; - ADV_ACT_VARS: begin - if (flags and ACF_VARASINT)<>0 then - AddAttrInt(act,ioAsInt,1); - AddAttr(act,ioType,ioScript); - end; - end; - - if (action and ADV_ACT_POST)<>0 then - begin - act:=AddChild(sub,ioPost,nil); - case action and ADV_ACT_POST of - ADV_ACT_BREAK: s:=ioBreak; - ADV_ACT_JUMP : begin - s:=ioJump; - AddAttr(act,ioValue,operval); - end; - else - s:=ioNop - end; - AddAttr(act,ioOper,s); - end; - //!! - end; -// ----- LINK ----- - ACT_CHAIN: begin - if (flags and ACF_BYNAME)<>0 then - s:=actname - else - s:=GetActNameById(id); - AddAttr(actnode,ioClass,ioLinkAction); - setText(actnode,s); -// AddChild(actnode,ioLinkAction,s); - end; -// ----- DATABASE ----- - ACT_RW: begin - if ((flags and ACF_DBUTEXT)=0) and ((flags2 and ACF2_RW_TVAR)=0) then - tmp:=nil - else - tmp:=pWideChar(dbvalue); - AddAttr(actnode,ioClass,ioProfile); - setText(actnode,tmp); - sub:=actnode; -// sub:=AddChild(actnode,ioProfile,tmp); - if (flags and ACF_DBDELETE)<>0 then s:=ioDelete - else if (flags and ACF_DBWRITE )<>0 then s:=ioWrite - else s:=ioRead; - AddAttr(sub,ioOper,s); - if (flags and ACF_CURRENT)<>0 then s:=ioCurrent - else if (flags and ACF_RESULT )<>0 then s:=ioResult - else if (flags and ACF_PARAM )<>0 then s:=ioParam - else - begin - s:=ioContact; - ExportContact(sub,dbcontact); - end; - AddAttr(sub,ioContact,s); - AddAttr(sub,ioModule ,FastAnsiToWide(dbmodule ,tmp)); mFreeMem(tmp); - AddAttr(sub,ioSetting,FastAnsiToWide(dbsetting,tmp)); mFreeMem(tmp); - - if (flags and ACF_DBANSI )=ACF_DBANSI then s:=ioAnsi - else if (flags and ACF_DBBYTE )=ACF_DBBYTE then s:=ioByte - else if (flags and ACF_DBWORD )=ACF_DBWORD then s:=ioWord - else if (flags and ACF_DBUTEXT)= 0 then s:=ioDword - else s:=ioUnicode; - AddAttr(sub,ioType,s); - - if (flags2 and ACF2_RW_MVAR)<>0 then AddAttrInt(sub,ioFileVariable,1); - if (flags2 and ACF2_RW_SVAR)<>0 then AddAttrInt(sub,ioArgVariable ,1); - if (flags2 and ACF2_RW_TVAR)<>0 then AddAttrInt(sub,ioVariables ,1); - if (flags2 and ACF2_RW_HEX )<>0 then AddAttrInt(sub,ioHex ,1); - - if ( flags and ACF_LAST )<>0 then AddAttrInt(sub,ioLast ,1) - else if ((flags and ACF_DBUTEXT )=0) and - ((flags2 and ACF2_RW_TVAR)=0) then AddAttrInt(sub,ioValue,dbvalue); - end; -// ----- MESSAGEBOX ----- - ACT_MESSAGE: begin - AddAttr(actnode,ioClass,ioMessageBox); - setText(actnode,msgtext); - sub:=actnode; -// sub:=AddChild(actnode,ioMessageBox,msgtext); - if (flags2 and ACF2_MSG_TTL)<>0 then AddAttrInt(sub,ioVariables ,1); - if (flags2 and ACF2_MSG_TXT)<>0 then AddAttrInt(sub,ioArgVariable,1); - if (flags and ACF_MSG_KEEP)<>0 then AddAttrInt(sub,ioKeepLast ,1); - AddAttr (sub,ioTitle,msgtitle); - AddAttrInt(sub,ioType ,boxopts); - end; - end; - end; -end; - -procedure Export({act:integer;}fname:pWideChar;aflags:dword); -var - i:integer; - f:THANDLE; - root,actnode:HXML; - res:pWideChar; - act:integer; -begin - xmlparser.cbSize:={XML_API_SIZEOF_V1;//}SizeOf(TXML_API_W); - CallService(MS_SYSTEM_GET_XI,0,lparam(@xmlparser)); - root:=0; - with xmlparser do - begin - i:=0; - if (aflags and ACIO_APPEND)<>0 then - begin - i:=GetFSize(fname); - if i<>0 then - begin - mGetMem (res ,i+SizeOf(WideChar)); - FillChar(res^,i+SizeOf(WideChar),0); - f:=Reset(fname); - BlockRead(f,res^,i); - CloseHandle(f); - root:=parseString(res,@i,nil); - mFreeMem(res); - i:=1; - end; - end; - if i=0 then // new file - root:=CreateNode(ioRoot,nil,false); - - for act:=0 to MaxGroups-1 do - if ((aflags and ACIO_SELECTED)=0) or - ((GroupList[act].flags and (ACF_EXPORT or ACF_ASSIGNED))= - (ACF_EXPORT or ACF_ASSIGNED)) then - begin -// GroupList[act].flags:=GroupList[act].flags and not ACF_EXPORT; - actnode:=addChild(root,ioAction,nil); - AddAttr(actnode,ioName,GroupList[act].descr); - if (GroupList[act].flags and ACF_DISABLED)<>0 then - AddAttrInt(actnode,ioDisabled,1); - - i:=GroupList[act].firstAction; - if i<>0 then - repeat - WriteAction(actnode,i); - i:=ActionList[i].next; - until i=0; - end; - - res:=toString(root,@i); - if i>0 then - begin - f:=Rewrite(fname); - BlockWrite(f,res^,i*SizeOf(WideChar)); - CloseHandle(f); - end; - xmlparser.FreeMem(res); - DestroyNode(root); - end; -end; - -function ActInOut(wParam:WPARAM;lParam:LPARAM):int_ptr; cdecl; -begin - if (wParam and ACIO_EXPORT)=0 then - begin - result:=Import(pWideChar(lParam),wParam); - end - else - begin - result:=1; - Export(pWideChar(lParam),wParam); - end; - NotifyEventHooks(hevinout,wParam,lParam); -end; diff --git a/plugins/!Deprecated/Actman20/i_opt_dlg.inc b/plugins/!Deprecated/Actman20/i_opt_dlg.inc deleted file mode 100644 index 3e07cd97ae..0000000000 --- a/plugins/!Deprecated/Actman20/i_opt_dlg.inc +++ /dev/null @@ -1,215 +0,0 @@ -{} -const - etHK = 1; // Groups changed - etACT = 2; // Actions changed -const - ACI_APPLY :PAnsiChar = 'ACI_Apply'; - ACI_NEW :PAnsiChar = 'ACI_New'; - ACI_UP :PAnsiChar = 'ACI_Up'; - ACI_DOWN :PAnsiChar = 'ACI_Down'; - ACI_DELETE :PAnsiChar = 'ACI_Delete'; - ACI_RELOAD :PAnsiChar = 'ACI_Reload'; - ACI_TEST :PAnsiChar = 'ACI_Test'; - ACI_IMPORT :PAnsiChar = 'ACI_Import'; - ACI_EXPORT :PAnsiChar = 'ACI_Export'; -const - ACI_CONTACT = 'ACI_Contact'; - ACI_SERVICE = 'ACI_Service'; - ACI_PROGRAM = 'ACI_Program'; - ACI_INSERT = 'ACI_Insert'; - ACI_ADVANCE = 'ACI_Advanced'; - ACI_CHAIN = 'ACI_Chain'; - ACI_RW = 'ACI_Database'; - ACI_MESSAGE = 'ACI_Message'; - - ACI_FORMAT = 'ACI_Format'; - - ACI_VAR_UNCHECKED = 'ACI_VarUnChecked'; - ACI_VAR_CHECKED = 'ACI_VarChecked'; - -const - sresInt = 0; - sresHex = 1; - sresString = 2; - sresStruct = 3; -type - tActId = record - code:dword; - id :dword; - icon:PAnsiChar; - text:PAnsiChar; - end; -const - ActIds:array [0..ACT_MAXTYPE-1] of tActId = ( - (code:ACT_CONTACT; id:IDI_CONTACT; icon:ACI_CONTACT; text:'Open contact window'), - (code:ACT_SERVICE; id:IDI_SERVICE; icon:ACI_SERVICE; text:'Call service'), - (code:ACT_PROGRAM; id:IDI_PROGRAM; icon:ACI_PROGRAM; text:'Execute program'), - (code:ACT_TEXT ; id:IDI_INSERT ; icon:ACI_INSERT ; text:'Insert text'), - (code:ACT_ADVANCE; id:IDI_ADVANCE; icon:ACI_ADVANCE; text:'Advanced'), - (code:ACT_CHAIN ; id:IDI_CHAIN ; icon:ACI_CHAIN ; text:'Link to action'), - (code:ACT_RW ; id:IDI_RW ; icon:ACI_RW ; text:'Profile'), - (code:ACT_MESSAGE; id:IDI_MESSAGE; icon:ACI_MESSAGE; text:'MessageBox')); - -procedure RegisterIcon(var sid:TSKINICONDESC;id:uint_ptr;name:PAnsiChar;descr:PAnsiChar); -var - buf:array [0..63] of WideChar; -begin - sid.hDefaultIcon :=LoadImage(hInstance,MAKEINTRESOURCE(id),IMAGE_ICON,16,16,0); - sid.pszName :=name; - sid.szDescription.w:=FastAnsiToWideBuf(descr,buf); - Skin_AddIcon(@sid); - DestroyIcon(sid.hDefaultIcon); -end; - -procedure RegisterIcons; -var - sid:TSKINICONDESC; - i:integer; -begin - FillChar(sid,SizeOf(TSKINICONDESC),0); - sid.cbSize :=SizeOf(TSKINICONDESC); - sid.cx :=16; - sid.cy :=16; - sid.flags :=SIDF_UNICODE; - sid.szSection.w:='Actions'; - - RegisterIcon(sid,IDI_APPLY ,ACI_APPLY ,'Apply'); - RegisterIcon(sid,IDI_NEW ,ACI_NEW ,'New'); - RegisterIcon(sid,IDI_DELETE ,ACI_DELETE ,'Delete'); - RegisterIcon(sid,IDI_UP ,ACI_UP ,'Up'); - RegisterIcon(sid,IDI_DOWN ,ACI_DOWN ,'Down'); - RegisterIcon(sid,IDI_RELOAD ,ACI_RELOAD ,'Reload'); - RegisterIcon(sid,IDI_TEST ,ACI_TEST ,'Test'); - RegisterIcon(sid,IDI_IMPORT ,ACI_IMPORT ,'Import'); - RegisterIcon(sid,IDI_EXPORT ,ACI_EXPORT ,'Export'); - - RegisterIcon(sid,IDI_FORMAT ,ACI_FORMAT ,'Contact list format'); - - for i:=0 to ACT_MAXTYPE-1 do - with ActIds[i] do - RegisterIcon(sid,id,icon,text); - - sid.cx:=8; - sid.cy:=8; - RegisterIcon(sid,IDI_VAR_CHECKED ,ACI_VAR_CHECKED ,'Use Variables'); - RegisterIcon(sid,IDI_VAR_UNCHECKED,ACI_VAR_UNCHECKED,'Don''t use Variables'); -end; - -procedure SetStart; -begin - if NewGroupList=nil then - begin - NewGroupList:=GroupList; - NewMaxGroups:=MaxGroups; - end; - if NewActionList=nil then - begin - NewActionList:=ActionList; - NewMaxActions:=MaxActions; - end; -end; - -procedure SetChanged(wnd:HWND;atype:integer); -begin - SendMessage(GetParent(wnd),PSM_CHANGED,0,0); - if ((atype and etHK )<>0) and (NewGroupList =GroupList ) then NewGroupList :=CloneGroupList; - if ((atype and etACT)<>0) and (NewActionList=ActionList) then NewActionList:=CloneActionList; -end; - -procedure SetSave(Dialog:HWND;curIdx:integer); -var - i,j:integer; - li:LV_ITEMW; - wnd:HWND; -begin - if NewGroupList<>GroupList then - begin - - DestroyGroups(GroupList,MaxGroups); - wnd:=GetDlgItem(Dialog,IDC_ACTION_GROUP); - j:=SendMessageW(wnd,LVM_GETITEMCOUNT,0,0); - MaxGroups:=j; - if j>0 then - begin - GetMem (GroupList ,MaxGroups*SizeOf(tHKRecord)); - FillChar(GroupList^,MaxGroups*SizeOf(tHKRecord),0); - li.mask :=LVIF_PARAM; - li.iSubItem:=0; - for i:=0 to j-1 do - begin - li.iItem:=i; - SendMessageW(wnd,LVM_GETITEMW,0,lparam(@li)); // GetLParam(wnd,i); - move(NewGroupList^[li.lParam],GroupList^[i],SizeOf(tHKRecord)); - li.lParam:=i; - SendMessageW(wnd,LVM_SETITEMW,0,lparam(@li)); - end; - end - else - GroupList:=nil; - - FreeMem(NewGroupList); - NewGroupList:=GroupList; - NewMaxGroups:=MaxGroups; - end; -end; - -procedure SetCancel; -begin - if NewActionList<>nil then - begin - if (NewActionList<>ActionList) then - DestroyActions(NewActionList,NewMaxActions); - NewActionList:=nil; - end; - if NewGroupList<>nil then - begin - if (NewGroupList<>GroupList) then - DestroyGroups(NewGroupList,NewMaxGroups); - NewGroupList:=nil; - end; -end; - -{$include i_opt_dlg2.inc} - -function OnOptInitialise(wParam:WPARAM;lParam:LPARAM):int;cdecl; -var - odp:TOPTIONSDIALOGPAGE; - ptr:pActionLink; - tmpl:pAnsiChar; - name:pansiChar; - proc:pointer; - i:integer; -begin - result:=0; - NoDescription :=TranslateW('No description'); - StrCopyW(xmlfilename,'c:\export.xml'); - - DoInitCommonControls(ICC_USEREX_CLASSES); - - FillChar(odp,SizeOf(odp),0); - odp.cbSize :=SizeOf(odp); - odp.flags :=ODPF_BOLDGROUPS; - odp.Position :=900003000; - odp.hInstance :=hInstance; - odp.szGroup.a :='Services'; - odp.szTitle.a :='Actions'; - odp.szTab.a :='Actions'; - odp.pfnDlgProc :=@DlgProcOpt2; - odp.pszTemplate:=PAnsiChar(IDD_ACTION); - Options_AddPage(wParam,@odp); - - ptr:=ActionLink; - while ptr<>nil do - begin - if @ptr^.AddOption<>nil then - begin - i:=ptr^.AddOption(tmpl,proc,name); - odp.pszTemplate:=tmpl; - odp.pfnDlgProc :=proc; - odp.szTab.a :=name; - Options_AddPage(wParam,@odp); - if i>0 then continue; - end; - ptr:=ptr^.Next; - end; -end; diff --git a/plugins/!Deprecated/Actman20/i_opt_dlg2.inc b/plugins/!Deprecated/Actman20/i_opt_dlg2.inc deleted file mode 100644 index 4462c12d7d..0000000000 --- a/plugins/!Deprecated/Actman20/i_opt_dlg2.inc +++ /dev/null @@ -1,2095 +0,0 @@ -{} - -const - inoutfilter:pWideChar = 'XML files'#0'*.xml'#0'All files'#0'*.*'#0#0; -const - NoChainText:PWideChar = 'not defined'; -const - ActionNames:array [0..ACT_MAXTYPE] of pWideChar=( - 'Unknown','Contact','Service','Program','Text','Advanced','Action','Profile','Message'); -const - checknames:array [BST_UNCHECKED..BST_CHECKED] of PAnsiChar=( - ACI_VAR_UNCHECKED,ACI_VAR_CHECKED); -const - MaxDescrLen = 128; -const - hlpContact = 0; - hlpService = 1; - hlpProgram = 2; - hlpText = 3; - hlpAdvance = 4; - hlpChain = 5; - hlpDBRW = 6; - hlpMessage = 7; - hlpVariables = 30; - hlpAdvVariables = 31; -const - ptNumber = 0; - ptString = 1; - ptUnicode = 2; - ptCurrent = 3; - ptResult = 4; - ptParam = 5; - ptStruct = 6; - -var - wstruct,lstruct:pAnsiChar; - DontReact:bool; - OldGroupTableProc, - OldActTableProc:pointer; - ChMask:dword; - -function GetNumValue(wnd:HWND;usevar:boolean;var dst):boolean; -var - tmp:pWideChar; -begin - result:=false; - pWideChar(dst):=GetDlgText(wnd); - if Pointer(dst)=nil then exit; - if not usevar then - begin - tmp:=PWideChar(dst); - if pWideChar(dst)^='$' then - begin - integer(dst):=HexToInt(pWideChar(dst)+1); - result:=true; - end - else - integer(dst):=StrToInt(pWideChar(dst)); - mFreeMem(tmp); - end; -end; - -function GetGroupName(id:dword):pWideChar; -var - i:integer; -begin - for i:=0 to NewMaxGroups-1 do - begin - if ((NewGroupList^[i].flags and ACF_ASSIGNED)<>0) and (id=NewGroupList^[i].id) then - begin - result:=NewGroupList^[i].descr; - exit; - end; - end; - result:=NoChainText; -end; - -function AddGroup(Dialog:HWND;HKnum:dword):integer; -var - li:LV_ITEMW; - list:HWND; -begin - with NewGroupList^[HKnum] do - begin - if (flags and ACF_ASSIGNED)<>0 then - begin - list:=GetDlgItem(Dialog,IDC_ACTION_GROUP); - li.mask :=LVIF_PARAM+LVIF_TEXT; - li.iItem :=SendMessage(list,LVM_GETNEXTITEM,-1,LVNI_FOCUSED)+1; - li.iSubItem :=0; - li.lParam :=HKnum; - if descr=nil then - li.pszText:=NoDescription - else - li.pszText:=descr; - li.iItem :=SendMessageW(list,LVM_INSERTITEMW,0,lparam(@li)); - if li.iItem>0 then - dec(li.iItem); - ListView_SetItemState(list,li.iItem,LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - result:=li.iItem; - end - else - result:=-1; - end; -end; - -// Fill action type combobox -procedure FillActTypeList(list:hwnd); -var - cbei:TCOMBOBOXEXITEMW; - il:HIMAGELIST; - i:integer; - buf:array [0..127] of WideChar; -begin - SendMessage(list,CB_RESETCONTENT,0,0); - il:=ImageList_Create(16,16,ILC_COLOR32 or ILC_MASK,0,1); - - cbei.mask:=CBEIF_IMAGE or CBEIF_SELECTEDIMAGE or CBEIF_TEXT; //!! - for i:=0 to ACT_MAXTYPE-1 do - begin - ImageList_AddIcon(il,CallService(MS_SKIN2_GETICON,0,lparam(ActIds[i].icon))); - - cbei.pszText :=TranslateW(FastAnsiToWideBuf(ActIds[i].text,buf)); - cbei.iItem :=i; - cbei.iImage :=i; - cbei.iSelectedImage:=i; - if SendMessageW(list,CBEM_INSERTITEMW,0,lparam(@cbei))=-1 then break; - end; - ImageList_Destroy(SendMessage(list,CBEM_SETIMAGELIST,0,il)); - SendMessage(list,CB_SETCURSEL,0,0); -end; - -procedure FillSubList(Dialog:hwnd); -var - list,wnd:HWND; - i,act:integer; - arr:array [0..127] of WideChar; - li:LV_ITEMW; -begin - wnd:=GetDlgItem(Dialog,IDC_ADV_VAL2); - - SendMessage(wnd,CB_RESETCONTENT,0,0); - - list:=GetDlgItem(Dialog,IDC_ACTION_LIST); - act:=SendMessageW(list,LVM_GETITEMCOUNT,0,0); - i:=0; - li.mask :=LVIF_TEXT; - li.iSubItem :=0; - li.pszText :=@arr; - li.cchTextMax:=SizeOf(arr) div SizeOf(WideChar); - while i=0 then - PostMessageW(Dialog,LVM_EDITLABELW,i,0); - exit; - end; - VK_INSERT: begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_GROUP_NEW,0); - exit; - end; - VK_DELETE: begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_GROUP_DELETE,0); - exit; - end; - VK_UP: begin - if (GetKeyState(VK_CONTROL) and $8000)<>0 then - begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_GROUP_UP,0); - exit; - end; - end; - VK_DOWN: begin - if (GetKeyState(VK_CONTROL) and $8000)<>0 then - begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_GROUP_DOWN,0); - exit; - end; - end; - end; - end; - end; - end; - result:=CallWindowProc(OldGroupTableProc,Dialog,hMessage,wParam,lParam); -end; - -// action (chain) table procedure (key hook) -function NewActTableProc(Dialog:HWnd;hMessage:uint;wParam:WPARAM;lParam:LPARAM):lresult; stdcall; -var - i:integer; -begin - result:=0; - case hMessage of - WM_KEYDOWN: begin - if (lParam and (1 shl 30))=0 then - begin - case wParam of - VK_F2: begin - i:=SendMessage(Dialog,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); - if i>=0 then - PostMessageW(Dialog,LVM_EDITLABELW,i,0); - exit; - end; - VK_UP: begin - if (GetKeyState(VK_CONTROL) and $8000)<>0 then - begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_ACTION_UP,0); - exit; - end; - end; - VK_DOWN: begin - if (GetKeyState(VK_CONTROL) and $8000)<>0 then - begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_ACTION_DOWN,0); - exit; - end; - end; - VK_INSERT: begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_ACTION_NEW,0); - exit; - end; - VK_DELETE: begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_ACTION_DELETE,0); - exit; - end; - end; - end; - end; - end; - result:=CallWindowProc(OldActTableProc,Dialog,hMessage,wParam,lParam); -end; - -// miranda button icon paint -procedure SetButtonIcons2(Dialog:HWND); -var - ti:TTOOLINFOW; - hwndTooltip:HWND; -begin - hwndTooltip:=CreateWindowW(TOOLTIPS_CLASS,nil,TTS_ALWAYSTIP, - integer(CW_USEDEFAULT),integer(CW_USEDEFAULT), - integer(CW_USEDEFAULT),integer(CW_USEDEFAULT), - Dialog,0,hInstance,nil); - - FillChar(ti,SizeOf(ti),0); - ti.cbSize :=sizeof(TOOLINFO); - ti.uFlags :=TTF_IDISHWND or TTF_SUBCLASS; - ti.hwnd :=Dialog; - ti.hinst :=hInstance; - - ti.uId :=GetDlgItem(Dialog,IDC_ACTION_HELP); - ti.lpszText:=TranslateW('Help'); - SendMessage(ti.uId,BM_SETIMAGE,IMAGE_ICON, - CallService(MS_SKIN_LOADICON,SKINICON_OTHER_HELP,0)); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_ACTION_NEW); - ti.lpszText:=TranslateW('New'); - SetButtonIcon(ti.uId,ACI_NEW); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_GROUP_NEW); - SetButtonIcon(ti.uId,ACI_NEW); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_ACTION_UP); - ti.lpszText:=TranslateW('Up'); - SetButtonIcon(ti.uId,ACI_UP); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_GROUP_UP); - SetButtonIcon(ti.uId,ACI_UP); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_ACTION_DOWN); - ti.lpszText:=TranslateW('Down'); - SetButtonIcon(ti.uId,ACI_DOWN); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_GROUP_DOWN); - SetButtonIcon(ti.uId,ACI_DOWN); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_ACTION_DELETE); - ti.lpszText:=TranslateW('Delete'); - SetButtonIcon(ti.uId,ACI_DELETE); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_GROUP_DELETE); - SetButtonIcon(ti.uId,ACI_DELETE); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_GROUP_RELOAD); - ti.lpszText:=TranslateW('Reload'); - SetButtonIcon(ti.uId,ACI_RELOAD); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_GROUP_TEST); - ti.lpszText:=TranslateW('Test'); - SetButtonIcon(ti.uId,ACI_TEST); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_CNT_APPLY); - ti.lpszText:=TranslateW('Apply format'); - SetButtonIcon(ti.uId,ACI_FORMAT); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_GROUP_IMPORT); - ti.lpszText:=TranslateW('Import'); - SetButtonIcon(ti.uId,ACI_IMPORT); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_GROUP_EXPORT); - ti.lpszText:=TranslateW('Export'); - SetButtonIcon(ti.uId,ACI_EXPORT); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.lpszText:=TranslateW('Use Variables'); - ti.uId:=GetDlgItem(Dialog,IDC_SRV_WPAR); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - -{ - pc:=TranslateW(''); - wnd:=GetDlgItem(Dialog,IDC_NEW); - SendMessage(hNew,BUTTONADDTOOLTIP,TWPARAM(pc),BATF_UNICODE); - SetButtonIcon(wnd,QS_NEW); -} - ti.uId:=GetDlgItem(Dialog,IDC_SRV_LPAR); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_SRV_SRVC); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_PRG_PRG); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_PRG_ARG); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_TXT_FILE); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_TXT_TEXT); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_RW_MVAR); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_RW_SVAR); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_RW_TVAR); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_MSG_TTL); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - - ti.uId:=GetDlgItem(Dialog,IDC_MSG_TXT); - SetButtonIcon(ti.uId,ACI_VAR_UNCHECKED); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,lparam(@ti)); - -end; - -function MoveLVItem(list:HWND;num:integer;incr:integer):integer; -var - li:LV_ITEM; - buf:array [0..127] of WideChar; -begin - li.mask :=LVIF_PARAM+LVIF_STATE+LVIF_TEXT; - li.iItem :=num; - li.iSubItem :=0; - li.StateMask :=dword(-1); - li.pszText :=@buf; - li.cchTextMax:=127; - SendMessageW(list,LVM_GETITEMW,0,lparam(@li)); - SendMessageW(list,LVM_DELETEITEM,li.iItem,0); - inc(li.iItem,incr); - - SendMessageW(list,LVM_INSERTITEMW,0,lparam(@li)); - SendMessageW(list,LVM_SETITEMSTATE,li.iItem,lparam(@li)); - result:=li.iItem; -end; - -function MoveGroup(list:HWND;num:integer=-1;incr:integer=0):integer; -var - i,j:integer; -begin - if num<0 then - begin - result:=-1; - j:=SendMessage(list,LVM_GETITEMCOUNT,0,0)-1; - if incr<0 then // up, from beginning - begin - for i:=0 to j do - begin - if SendMessage(list,LVM_GETITEMSTATE,i,LVIS_SELECTED)<>0 then - begin - if i=0 then break; - LV_MoveItem(list,incr,i); -// MoveLVItem(list,i,incr); - if result<0 then result:=i+incr; - end; - end; - end - else // down, from the end - begin - for i:=j downto 0 do - begin - if SendMessage(list,LVM_GETITEMSTATE,i,LVIS_SELECTED)<>0 then - begin - if i=j then break; - LV_MoveItem(list,incr,i); -// MoveLVItem(list,i,incr); - if result<0 then result:=i+incr; - end; - end; - end; - end - else - begin - MoveLVItem(list,num,incr); - result:=num; - end; -end; - -{$include i_dlglists.inc} - -procedure SetNumValue(wnd:HWND;value:dword;isvar:boolean;ishex:boolean); -var - buf:array [0..31] of WideChar; -begin - if isvar then - SendMessageW(wnd,WM_SETTEXT,0,value) - else if ishex then - begin - buf[0]:='$'; - IntToHex(PWideChar(@buf[1]),value); - SendMessageW(wnd,WM_SETTEXT,0,tlparam(@buf)); - end - else - SendMessageW(wnd,WM_SETTEXT,0,tlparam(IntToStr(buf,value))); -end; - -function DlgProcOpt2(Dialog:HWnd;hMessage:uint;wParam:WPARAM;lParam:LPARAM):lresult; stdcall; - - {$include i_visual.inc} - - procedure ShowHelp(code:integer); - var - buf:PAnsiChar; - vhi:TVARHELPINFO; - begin - case code of - hlpVariables: begin - FillChar(vhi,SizeOf(vhi),0); - with vhi do - begin - cbSize:=SizeOf(vhi); - flags:=VHF_NOINPUTDLG; - end; - CallService(MS_VARS_SHOWHELPEX,Dialog,tlparam(@vhi)); - end; - hlpAdvVariables: begin - FillChar(vhi,SizeOf(vhi),0); - with vhi do - begin - cbSize :=SizeOf(vhi); - flags :=VHF_FULLDLG or VHF_SETLASTSUBJECT; - hwndCtrl :=GetDlgItem(Dialog,IDC_ADV_VARS); - szSubjectDesc:='test your variables'; - end; - CallService(MS_VARS_SHOWHELPEX,Dialog,tlparam(@vhi)); - end; - hlpContact: begin - MessageBoxW(0, - TranslateW('Select contact to open its window'), - TranslateW('Contacts'),0); - end; - hlpService: begin - buf:=GetDlgText(Dialog,IDC_EDIT_SERVICE,true); -//!! if buf<>nil then - begin - ApiCard.Service:=buf; - mFreeMem(buf); - ApiCard.Show; - end; - end; - hlpProgram: begin - MessageBoxW(0, - TranslateW('Text replacing'#13#10+ - 'by last result'#13#10#13#10+ - 'Text replacing'#13#10+ - 'by parameter'), - TranslateW('Text'),0); - end; - hlpText: begin - MessageBoxW(0, - TranslateW('^s - selected (and replaced) part'#13#10+ - '^e - replaced by empty string'#13#10+ - '^v - paste text from Clipboard'#13#10+ - '^t - replaced by tabulation'#13#10+ - '^l - replaced by last result as unicode'#13#10+ - '^h - replaced by last result as hex'#13#10+ - '^a - in the end: autosend'#13#10+ - '^f(name[,str])'#13#10+ - ' paste line from text file.'#13#10+ - ' brackets contents must be w/o spaces'), - TranslateW('Text'),0); - end; - hlpAdvance: begin - end; - hlpChain: begin - MessageBoxW(0, - TranslateW('You can select another group from combobox, '+ - 'then it will be executed, after that current '+ - 'action group will be continued.'), - TranslateW('Macros'),0); - end; - hlpDBRW: begin - end; - hlpMessage: begin - MessageBoxW(0, - TranslateW( - 'Text replacing'#13#10+ - 'by last result'#13#10#13#10+ - 'Returns:'#13#10+ - '--------'#13#10+ - 'OK'#9'= 1'#13#10+ - 'CANCEL'#9'= 2'#13#10+ - 'ABORT'#9'= 3'#13#10+ - 'RETRY'#9'= 4'#13#10+ - 'IGNORE'#9'= 5'#13#10+ - 'YES'#9'= 6'#13#10+ - 'NO'#9'= 7'#13#10+ - 'CLOSE'#9'= 8'), - TranslateW('MessageBox'),0); - end; - end; - end; - - // enable/disable navigation chain buttons - procedure CheckGrpList(num:integer=-1); - var - wnd:HWND; - dir:integer; - okup,okdown:boolean; - begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_GROUP); -// if num<0 then - begin - dir:=LV_CheckDirection(wnd); - okup :=odd(loword(dir)); - okdown:=(loword(dir) and 2)<>0; - end; -{ - else - begin - okup :=num>0; - okdown:=(num+1)0); - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_DOWN), - (num+1)0; - end; -{ - else - begin - okup :=num>0; - okdown:=(num+1)0); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_DOWN), - (num+1)=0 then - begin - li.iSubItem:=0; - // getting SubAction number - li.mask:=LVIF_PARAM; - SendMessage(wnd,LVM_GETITEM,0,tlparam(@li)); - - // changing to default name - if str=nil then - begin - if num>=0 then // new item - screen only - str1:=TranslateW(ActionNames[ACT_CONTACT]) - else // change action type - begin - str1:=NewActionList[li.lParam].descr; - if str1=nil then // not in memory yet - str1:=TranslateW(ActionNames[acttype]) - else - exit; - end; - end - else // rename - begin - str1:=str; - mFreeMem(NewActionList[li.lParam].descr); - StrDupW (NewActionList[li.lParam].descr,str); - end; - -// screen - li.mask :=LVIF_TEXT; - li.pszText:=str1; - SendMessageW(wnd,LVM_SETITEMW,0,tlparam(@li)); - end; - end; - - // Fill Chain list - procedure MakeActionList(HK:pHKRecord); - var - i,idx:integer; - wnd:HWND; - li:LV_ITEMW; - p:pWideChar; - begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - SendMessage(wnd,LVM_DELETEALLITEMS,0,0); - - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_UP),false); - if (HK=nil) or (HK^.firstAction=0) then - begin - SHWindows; - SHActButtons(SW_HIDE); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_LIST ),false); - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_TEST ),false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_HELP ),false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_DELETE),false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_DOWN ),false); - exit; - end; - SHActButtons(SW_SHOW); - - li.mask :=LVIF_TEXT or LVIF_PARAM; - li.iSubitem:=0; - i:=HK^.firstAction; - idx:=0; - repeat - p:=NewActionList^[i].descr; - if p=nil then - p:=TranslateW(ActionNames[NewActionList^[i].actionType]); - li.pszText:=p; - li.iItem :=idx; - li.lParam :=i; - SendMessageW(wnd,LVM_INSERTITEMW,0,tlparam(@li)); - ListView_SetCheckState(wnd,idx,(NewActionList^[i].flags and ACF_DISABLED)=0); - - i:=NewActionList^[i].next; - inc(idx); - until i=0; - - Listview_SetItemState(wnd,0, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_LIST ),true); - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_TEST ),true); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_HELP ),true); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_DELETE),true); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_DOWN),idx>1); -// FillSubList(Dialog); - FillAction(HK^.firstAction); - CheckActList(0); - end; - - procedure SaveAction(listnum,actnum:integer); - var - wnd:HWND; - i:integer; - tmp:pWideChar; - arr: array [0..255] of WideChar; - li:LV_ITEMW; - begin - if (ChMask and ACTM_ACT)=0 then exit; - ChMask:=ChMask and not ACTM_ACT; - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - if listnum<0 then - begin - listnum:=SendMessageW(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); - if listnum<0 then - exit; - end; - if actnum<0 then - actnum:=LV_GetLParam(wnd,listnum); - StrDupW(tmp,NewActionList^[actnum].descr); // keeping old name - FreeAction(@NewActionList^[actnum]); - with NewActionList^[actnum] do - begin - flags :=ACF_ASSIGNED; - flags2:=0; - - descr:=tmp; - if descr=nil then - begin - li.iItem :=listnum; - li.mask :=LVIF_TEXT; - li.iSubItem :=0; - li.pszText :=@arr; - li.cchTextMax:=SizeOf(arr) div SizeOf(WideChar); - SendDlgItemMessageW(Dialog,IDC_ACTION_LIST,LVM_GETITEMW,0,tlparam(@li)); - StrDupW(descr,arr); - end; - - if ListView_GetCheckState(wnd,listnum)=0 then - flags:=flags or ACF_DISABLED; - - actionType:=ActIds[SendDlgItemMessage(Dialog,IDC_ACTION_TYPE,CB_GETCURSEL,0,0)].code; - case actionType of - ACT_CONTACT: begin - contact:=SendDlgItemMessage(Dialog,IDC_CONTACTLIST,CB_GETITEMDATA, - SendDlgItemMessage(Dialog,IDC_CONTACTLIST,CB_GETCURSEL,0,0),0); - if IsDlgButtonChecked(Dialog,IDC_CNT_KEEP)=BST_CHECKED then - flags:=flags or ACF_KEEPONLY; - end; - - ACT_SERVICE: begin - if IsDlgButtonChecked(Dialog,IDC_SRV_WPAR)=BST_CHECKED then - flags2:=flags2 or ACF2_SRV_WPAR; - if IsDlgButtonChecked(Dialog,IDC_SRV_LPAR)=BST_CHECKED then - flags2:=flags2 or ACF2_SRV_LPAR; - if IsDlgButtonChecked(Dialog,IDC_SRV_SRVC)=BST_CHECKED then - flags2:=flags2 or ACF2_SRV_SRVC; - - case CB_GetData(GetDlgItem(Dialog,IDC_FLAG_WPAR)) of - ptParam: begin - flags:=flags or ACF_WPARAM - end; - ptResult: begin - flags:=flags or ACF_WRESULT - end; - ptCurrent: begin - flags:=flags or ACF_WPARNUM or ACF_WCURRENT - end; - ptNumber: begin - flags:=flags or ACF_WPARNUM; - if GetNumValue(GetDlgItem(Dialog,IDC_EDIT_WPAR), - (flags2 and ACF2_SRV_WPAR)<>0,wparam) then - flags2:=flags2 or ACF2_SRV_WHEX; -// wparam:=GetDlgItemInt(Dialog,IDC_EDIT_WPAR,pbool(nil)^,true); - end; - ptStruct: begin - flags:=flags or ACF_WSTRUCT; - StrDup(pAnsiChar(wparam),wstruct); - end; - ptUnicode: begin - flags:=flags or ACF_WUNICODE; - pointer(wparam):=GetDlgText(Dialog,IDC_EDIT_WPAR); - end; - ptString: pointer(wparam):=GetDlgText(Dialog,IDC_EDIT_WPAR,true); - end; - - case CB_GetData(GetDlgItem(Dialog,IDC_FLAG_LPAR)) of - ptParam: begin - flags:=flags or ACF_LPARAM - end; - ptResult: begin - flags:=flags or ACF_LRESULT - end; - ptCurrent: begin - flags:=flags or ACF_LPARNUM or ACF_LCURRENT - end; - ptNumber: begin - flags:=flags or ACF_LPARNUM; - if GetNumValue(GetDlgItem(Dialog,IDC_EDIT_LPAR), - (flags2 and ACF2_SRV_LPAR)<>0,lparam) then - flags2:=flags2 or ACF2_SRV_LHEX; -// lparam:=GetDlgItemInt(Dialog,IDC_EDIT_LPAR,pbool(nil)^,true); - end; - ptStruct: begin - flags:=flags or ACF_LSTRUCT; - StrDup(pAnsiChar(lparam),lstruct); - end; - ptUnicode: begin - flags:=flags or ACF_LUNICODE; - pointer(lparam):=GetDlgText(Dialog,IDC_EDIT_LPAR); - end; - ptString: pointer(lparam):=GetDlgText(Dialog,IDC_EDIT_LPAR,true); - end; - - if IsDlgButtonChecked(Dialog,IDC_RES_INSERT)=BST_CHECKED then - flags:=flags or ACF_INSERT; - if IsDlgButtonChecked(Dialog,IDC_RES_MESSAGE)=BST_CHECKED then - flags:=flags or ACF_MESSAGE; - if IsDlgButtonChecked(Dialog,IDC_RES_POPUP)=BST_CHECKED then - flags:=flags or ACF_POPUP; - - case CB_GetData(GetDlgItem(Dialog,IDC_SRV_RESULT)) of - sresHex: flags:=flags or ACF_HEX; - sresInt: begin - if IsDlgButtonChecked(Dialog,IDC_RES_SIGNED)=BST_CHECKED then - flags:=flags or ACF_SIGNED; - end; - sresString: begin - flags:=flags or ACF_STRING; - if IsDlgButtonChecked(Dialog,IDC_RES_UNICODE)=BST_CHECKED then - flags:=flags or ACF_UNICODE; - if IsDlgButtonChecked(Dialog,IDC_RES_FREEMEM)=BST_CHECKED then - flags2:=flags2 or ACF2_FREEMEM; - end; - sresStruct: flags:=flags or ACF_STRUCT; - end; - - service:=GetDlgText(Dialog,IDC_EDIT_SERVICE,true); - - end; - - ACT_PROGRAM: begin - prgname:=GetDlgText(Dialog,IDC_EDIT_PRGPATH); - args:=GetDlgText(Dialog,IDC_EDIT_PRGARGS); - if IsDlgButtonChecked(Dialog,IDC_FLAG_PARALLEL)=BST_CHECKED then - flags:=flags or ACF_PRTHREAD; - if IsDlgButtonChecked(Dialog,IDC_FLAG_CURPATH)=BST_CHECKED then - flags:=flags or ACF_CURPATH; - time:=GetDlgItemInt(Dialog,IDC_EDIT_PROCTIME,pbool(nil)^,false); - if IsDlgButtonChecked(Dialog,IDC_FLAG_MINIMIZE)=BST_CHECKED then - show:=SW_SHOWMINIMIZED - else if IsDlgButtonChecked(Dialog,IDC_FLAG_MAXIMIZE)=BST_CHECKED then - show:=SW_SHOWMAXIMIZED - else if IsDlgButtonChecked(Dialog,IDC_FLAG_HIDDEN)=BST_CHECKED then - show:=SW_HIDE - else //if IsDlgButtonChecked(Dialog,IDC_FLAG_NORMAL)=BST_CHECKED then - show:=SW_SHOWNORMAL; - - if IsDlgButtonChecked(Dialog,IDC_PRG_PRG)=BST_CHECKED then - flags2:=flags2 or ACF2_PRG_PRG; - if IsDlgButtonChecked(Dialog,IDC_PRG_ARG)=BST_CHECKED then - flags2:=flags2 or ACF2_PRG_ARG; - end; - - ACT_TEXT: begin - if IsDlgButtonChecked(Dialog,IDC_FLAG_CLIP)<>BST_UNCHECKED then - begin - flags:=flags or ACF_CLIPBRD; - if IsDlgButtonChecked(Dialog,IDC_CLIP_COPYTO)<>BST_UNCHECKED then - flags:=flags or ACF_COPYTO; - end - else - begin - if IsDlgButtonChecked(Dialog,IDC_TXT_TEXT)=BST_CHECKED then - flags2:=flags2 or ACF2_TXT_TEXT; - text:=GetDlgText(Dialog,IDC_EDIT_INSERT); - if IsDlgButtonChecked(Dialog,IDC_FLAG_FILE)<>BST_UNCHECKED then - begin - flags:=flags or ACF_FILE; - case CB_GetData(GetDlgItem(Dialog,IDC_FILE_ENC)) of - 0: flags:=flags or ACF_ANSI; - 1: flags:=flags or ACF_UTF8; - 2: flags:=flags or ACF_UTF8 or ACF_SIGN; - 3: flags:=flags or 0; - 4: flags:=flags or ACF_SIGN; - end; - - if IsDlgButtonChecked(Dialog,IDC_TXT_FILE)=BST_CHECKED then - flags2:=flags2 or ACF2_TXT_FILE; - tfile:=GetDlgText(Dialog,IDC_FILE_PATH); - if IsDlgButtonChecked(Dialog,IDC_FILE_APPEND)<>BST_UNCHECKED then - flags:=flags or ACF_FAPPEND - else if IsDlgButtonChecked(Dialog,IDC_FILE_WRITE)<>BST_UNCHECKED then - flags:=flags or ACF_FWRITE; - end; - end; - end; - - ACT_ADVANCE: begin - condition:=ADV_COND_NOP; - if IsDlgButtonChecked(Dialog,IDC_FLAG_GT )=BST_CHECKED then - condition:=ADV_COND_GT - else if IsDlgButtonChecked(Dialog,IDC_FLAG_LT )=BST_CHECKED then - condition:=ADV_COND_LT - else if IsDlgButtonChecked(Dialog,IDC_FLAG_EQ )=BST_CHECKED then - condition:=ADV_COND_EQ; - value:=GetDlgItemInt(Dialog,IDC_ADV_VALUE,pbool(nil)^,false); - - if IsDlgButtonChecked(Dialog,IDC_FLAG_NOT)=BST_CHECKED then - condition:=condition or ADV_COND_NOT; - - if IsDlgButtonChecked(Dialog,IDC_FLAG_BREAK)=BST_CHECKED then - action:=ADV_ACT_BREAK - else if IsDlgButtonChecked(Dialog,IDC_FLAG_JUMP )=BST_CHECKED then - action:=ADV_ACT_JUMP - else - action:=ADV_ACT_NOP; - - case action of - ADV_ACT_JUMP: operval:=GetDlgText(Dialog,IDC_ADV_VAL2); - end; - - if IsDlgButtonChecked(Dialog,IDC_FLAG_VARS)<>BST_UNCHECKED then - begin - varval:=GetDlgText(Dialog,IDC_ADV_VARS); - action:=action or ADV_ACT_VARS; - if IsDlgButtonChecked(Dialog,IDC_ADV_ASINT)<>BST_UNCHECKED then - flags:=flags or ACF_VARASINT; - end -;{//!!executively!! - else }if IsDlgButtonChecked(Dialog,IDC_FLAG_MATH)=BST_CHECKED then - begin - mathval:=GetDlgItemInt(Dialog,IDC_ADV_VAL1,pbool(nil)^,true); - action :=action or ADV_ACT_MATH; - oper :=CB_GetData(GetDlgItem(Dialog,IDC_ADV_OPER)); -// oper :=SendDlgItemMessage(Dialog,IDC_ADV_OPER,CB_GETCURSEL,0,0); - end; - end; - - ACT_CHAIN: begin - wnd:=GetDlgItem(Dialog,IDC_GROUP_LIST); - i:=SendMessage(wnd,CB_GETCURSEL,0,0); - if i>0 then - id:=SendMessage(wnd,CB_GETITEMDATA,i,0) - else - id:=0; - end; - - ACT_RW: begin - if IsDlgButtonChecked(Dialog,IDC_RW_CURRENT)=BST_CHECKED then - flags:=flags or ACF_CURRENT - else if IsDlgButtonChecked(Dialog,IDC_RW_RESULT)=BST_CHECKED then - flags:=flags or ACF_RESULT - else if IsDlgButtonChecked(Dialog,IDC_RW_PARAM)=BST_CHECKED then - flags:=flags or ACF_PARAM - else - dbcontact:=SendDlgItemMessage(Dialog,IDC_CONTACTLIST,CB_GETITEMDATA, - SendDlgItemMessage(Dialog,IDC_CONTACTLIST,CB_GETCURSEL,0,0),0); - dbmodule :=GetDlgText(Dialog,IDC_RW_MODULE ,true); - dbsetting:=GetDlgText(Dialog,IDC_RW_SETTING,true); - if IsDlgButtonChecked(Dialog,IDC_RW_MVAR)=BST_CHECKED then - flags2:=flags2 or ACF2_RW_MVAR; - if IsDlgButtonChecked(Dialog,IDC_RW_SVAR)=BST_CHECKED then - flags2:=flags2 or ACF2_RW_SVAR; - - if IsDlgButtonChecked(Dialog,IDC_RW_WRITE)=BST_CHECKED then - flags:=flags or ACF_DBWRITE - else if IsDlgButtonChecked(Dialog,IDC_RW_DELETE)=BST_CHECKED then - flags:=flags or ACF_DBDELETE; - - if IsDlgButtonChecked(Dialog,IDC_RW_LAST)=BST_CHECKED then - flags:=flags or ACF_LAST; - - if IsDlgButtonChecked(Dialog,IDC_RW_TVAR)=BST_CHECKED then - flags2:=flags2 or ACF2_RW_TVAR; - - i:=CB_GetData(GetDlgItem(Dialog,IDC_RW_DATATYPE)); - case i of - 0: flags:=flags or ACF_DBBYTE; - 1: flags:=flags or ACF_DBWORD; - 2: flags:=flags or 0; - 3: flags:=flags or ACF_DBANSI; - 4: flags:=flags or ACF_DBUTEXT; - end; - if i<3 then - begin - if (flags and ACF_LAST)=0 then - begin - if GetNumValue(GetDlgItem(Dialog,IDC_RW_VALUE), - (flags2 and ACF2_RW_TVAR)<>0,dbvalue) then - flags2:=flags2 or ACF2_RW_HEX; - end; - end - else - begin - if (flags and ACF_LAST)=0 then - pWideChar(dbvalue):=GetDlgText(Dialog,IDC_RW_TEXT); - end; - - if (IsDlgButtonChecked(Dialog,IDC_RW_LAST)=BST_CHECKED) or - ((flags and ACF_LAST)<>0) then - flags:=flags or ACF_LAST; - end; - - ACT_MESSAGE: begin - pWideChar(msgtitle):=GetDlgText(Dialog,IDC_MSG_TITLE); - pWideChar(msgtext ):=GetDlgText(Dialog,IDC_MSG_TEXT); - if IsDlgButtonChecked(Dialog,IDC_MSG_KEEP)=BST_CHECKED then - flags:=flags or ACF_MSG_KEEP; - if IsDlgButtonChecked(Dialog,IDC_MSG_TTL)=BST_CHECKED then - flags2:=flags2 or ACF2_MSG_TTL; - if IsDlgButtonChecked(Dialog,IDC_MSG_TXT)=BST_CHECKED then - flags2:=flags2 or ACF2_MSG_TXT; - - if IsDlgButtonChecked(Dialog,IDC_MSGB_OC )=BST_CHECKED then boxopts:=MB_OKCANCEL - else if IsDlgButtonChecked(Dialog,IDC_MSGB_ARI)=BST_CHECKED then boxopts:=MB_ABORTRETRYIGNORE - else if IsDlgButtonChecked(Dialog,IDC_MSGB_YNC)=BST_CHECKED then boxopts:=MB_YESNOCANCEL - else if IsDlgButtonChecked(Dialog,IDC_MSGB_YN )=BST_CHECKED then boxopts:=MB_YESNO - else if IsDlgButtonChecked(Dialog,IDC_MSGB_RC )=BST_CHECKED then boxopts:=MB_RETRYCANCEL - else{if IsDlgButtonChecked(Dialog,IDC_MSGB_OK )=BST_CHECKED then}boxopts:=MB_OK; - - if IsDlgButtonChecked(Dialog,IDC_MSGI_ERROR)=BST_CHECKED then boxopts:=boxopts or MB_ICONHAND - else if IsDlgButtonChecked(Dialog,IDC_MSGI_QUEST)=BST_CHECKED then boxopts:=boxopts or MB_ICONQUESTION - else if IsDlgButtonChecked(Dialog,IDC_MSGI_WARN )=BST_CHECKED then boxopts:=boxopts or MB_ICONWARNING - else if IsDlgButtonChecked(Dialog,IDC_MSGI_INFO )=BST_CHECKED then boxopts:=boxopts or MB_ICONINFORMATION - ;//else if IsDlgButtonChecked(Dialog,IDC_MSGI_NONE)=BST_CHECKED then ; - end; - - end; - end; - end; - - procedure BuildActionChain(group:integer=-1); - var - i,j,item:integer; - wnd:HWND; - act:pHKAction; - idx:integer; - begin - if (ChMask and ACTM_ACTS)=0 then exit; - ChMask:=ChMask and not ACTM_ACTS; - SaveAction(-1,-1); - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - i:=SendMessageW(wnd,LVM_GETITEMCOUNT,0,0); - idx:=LV_GetLParam(GetDlgItem(Dialog,IDC_ACTION_GROUP),group); - if i>0 then - begin - j:=LV_GetLParam(wnd,0); - NewGroupList^[idx].firstAction:=j; - act:=@NewActionList^[j]; - for item:=1 to i-1 do - begin - j:=LV_GetLParam(wnd,item); - act^.next:=j; - act:=@NewActionList^[j]; - end; - act^.next:=0; - end - else - begin - if idx>=0 then - NewGroupList^[idx].firstAction:=0; - end; - end; - - procedure CheckActionList(next:integer); - var - i:integer; - wnd:HWND; - begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - i:=SendMessage(wnd,LVM_GETITEMCOUNT,0,0); - if i>0 then - begin - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_HELP),true); - if next=i then - dec(next); - ListView_SetItemState(wnd,next, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - end - else - begin - SHWindows; - SHActButtons(SW_HIDE); - EnableWindow(wnd,false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_HELP ),false); - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_TEST ),false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_DELETE),false); - next:=0; - end; - CheckActList(next); - end; - - procedure CheckGroupList(next:integer); - var - i:integer; - wnd:HWND; - li:LV_ITEMW; - begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_GROUP); - i:=SendMessage(wnd,LVM_GETITEMCOUNT,0,0); - if i>0 then - begin - if next=i then - dec(next); - ListView_SetItemState(wnd,next,LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - li.iItem :=next; - li.iSubItem:=0; - li.mask :=LVIF_PARAM; - SendMessage(wnd,LVM_GETITEM,0,tlparam(@li)); - end - else - begin - EnableWindow(wnd,false); - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_DELETE),false); - CheckActionList(0); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_NEW),false); - end; - CheckGrpList(next); - end; - - // Fill action group list and disable chain controls - function FillGroupList{(Dialog:hwnd)}:integer; - var - CurGroup:pHKRecord; - i:integer; - list:HWND; - lvi:TLVITEMW; - begin - SendDlgItemMessage(Dialog,IDC_ACTION_LIST,LVM_DELETEALLITEMS,0,0); - CheckActionList(-1); - list:=GetDlgItem(Dialog,IDC_ACTION_GROUP); - - SendMessage(list,LVM_DELETEALLITEMS,0,0); - CurGroup:=@NewGroupList^; - result:=-1; - lvi.mask:=LVIF_TEXT+LVIF_PARAM; - lvi.iSubItem:=0; - for i:=0 to NewMaxGroups-1 do - begin - if (CurGroup^.flags and ACF_ASSIGNED)<>0 then - begin - lvi.iItem :=i; - lvi.lParam:=i; - if CurGroup^.descr=nil then - lvi.pszText:=NoDescription - else - lvi.pszText:=CurGroup^.descr; - SendMessageW(list,LVM_INSERTITEMW,0,tlparam(@lvi)); - inc(result); - end; - inc(CurGroup); - end; - - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_GROUP ),result>=0); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_LIST ),result>=0); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_NEW ),result>=0); - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_DELETE ),result>=0); - if result<0 then - begin - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_TEST ),false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_HELP ),false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_DELETE),false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_UP ),false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_DOWN ),false); - EnableWindow(GetDlgItem(Dialog,IDC_STAT_GROUPS ),false); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_TYPE ),false); - end - else - result:=0; - SendMessage(list,CB_SETCURSEL,0,0); - SendMessage(list,LVM_SETCOLUMNWIDTH,0,LVSCW_AUTOSIZE_USEHEADER); - - ListView_SetItemState(list,0, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - end; - - procedure SHMath(show:boolean); - var - wnd:HWND; - begin - EnableWindow(GetDlgItem(Dialog,IDC_ADV_ASINT),not show); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VARS ),not show); - - wnd:=GetDlgItem(Dialog,IDC_ADV_OPER); - EnableWindow(wnd,show); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL1), - show and (CB_GetData(wnd)<>lresult(aeNot)));//(SendMessage(wnd,CB_GETCURSEL,0,0)<>0)); - end; - - procedure SetMBRadioIcon(h:THANDLE;id:dword;icon:uint_ptr); - begin - SendDlgItemMessage(Dialog,id,BM_SETIMAGE,IMAGE_ICON, - LoadImage(h,MAKEINTRESOURCE(icon),IMAGE_ICON,16,16,0{LR_SHARED})); - // SendDlgItemMessage(Dialog,id,BM_SETIMAGE,IMAGE_ICON,LoadIcon(0,icon)); - end; - - procedure SetMBRadioIcons; - var - h:THANDLE; - begin - h:=LoadLibrary('user32.dll'); - // SetMBRadioIcon(IDC_MSGI_NONE,IDI_); //? - SetMBRadioIcon(h,IDC_MSGI_ERROR,103{IDI_HAND}); - SetMBRadioIcon(h,IDC_MSGI_QUEST,102{IDI_QUESTION}); - SetMBRadioIcon(h,IDC_MSGI_WARN ,101{IDI_EXCLAMATION}); - SetMBRadioIcon(h,IDC_MSGI_INFO ,104{IDI_ASTERISK}); - FreeLibrary(h); - end; - - procedure FillFileName(idc:integer); - var - pw,ppw:pWideChar; - begin - mGetMem(pw,1024*SizeOf(WideChar)); - ppw:=GetDlgText(Dialog,idc); - if ShowDlgW(pw,ppw) then - SetDlgItemTextW(Dialog,idc,pw); - mFreeMem(ppw); - mFreeMem(pw); - end; - -var - wnd,wnd1,wnd2:HWND; - i,j:int_ptr; - lvflag:integer; - pc:pAnsiChar; - li:LV_ITEMW; - lv:LV_COLUMNW; - b:boolean; - ico:HICON; -begin - result:=0; - case hMessage of - WM_DESTROY: begin - ApiCard.Free; - SetCancel; - mFreeMem(wstruct); - mFreeMem(lstruct); - end; - - WM_INITDIALOG: begin - ApiCard:=CreateServiceCard(Dialog); - wstruct:=nil; - lstruct:=nil; - SetStart; - DontReact :=true; - SHWindows; - TranslateDialogDefault(Dialog); - SetButtonIcons2(Dialog); - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - SendMessage(wnd,LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_CHECKBOXES,LVS_EX_CHECKBOXES); - SendMessage(wnd,LVM_SETUNICODEFORMAT,1,0); - zeromemory(@lv,sizeof(lv)); - lv.mask:=LVCF_WIDTH; - lv.cx :=110; - SendMessageW(wnd,LVM_INSERTCOLUMNW ,0,tlparam(@lv)); - SendMessageW(wnd,LVM_SETCOLUMNWIDTH,0,LVSCW_AUTOSIZE_USEHEADER); - - MakeResultTypeList(GetDlgItem(Dialog,IDC_SRV_RESULT)); - MakeParamTypeList (GetDlgItem(Dialog,IDC_FLAG_WPAR)); - MakeParamTypeList (GetDlgItem(Dialog,IDC_FLAG_LPAR)); - MakeMathOperList (GetDlgItem(Dialog,IDC_ADV_OPER)); - MakeFileEncList (GetDlgItem(Dialog,IDC_FILE_ENC)); - MakeDataTypeList (GetDlgItem(Dialog,IDC_RW_DATATYPE)); - - // service list for RunService - ApiCard.FillList(GetDlgItem(Dialog,IDC_EDIT_SERVICE)); - // contact list for ContactMessage - FillContactList(GetDlgItem(Dialog,IDC_CONTACTLIST),fCLfilter,fCLformat); - // action type combobox - FillActTypeList(GetDlgItem(Dialog,IDC_ACTION_TYPE)); - - if isVarsInstalled then - begin - ico:=CallService(MS_VARS_GETSKINITEM,0,VSI_HELPICON); - SendDlgItemMessage(Dialog,IDC_HLP_FVARS,BM_SETIMAGE,IMAGE_ICON,ico); - SendDlgItemMessage(Dialog,IDC_HLP_VARS ,BM_SETIMAGE,IMAGE_ICON,ico); - SendDlgItemMessage(Dialog,IDC_ADV_HVARS,BM_SETIMAGE,IMAGE_ICON,ico); - end; - - if ServiceExists(MS_SYSTEM_GET_XI)=0 then - begin - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_EXPORT),false); - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_IMPORT),false); - end; - - OldActTableProc :=pointer(SetWindowLongPtrW(wnd,GWL_WNDPROC,long_ptr(@NewActTableProc))); - OldGroupTableProc:=pointer(SetWindowLongPtrW(GetDlgItem(Dialog,IDC_ACTION_GROUP), - GWL_WNDPROC,long_ptr(@NewGroupTableProc))); - - // fill group list - wnd:=GetDlgItem(Dialog,IDC_ACTION_GROUP); - SendMessage(wnd,LVM_SETUNICODEFORMAT,1,0); - lv.mask:=LVCF_WIDTH; - lv.cx :=110; - SendMessageW(wnd,LVM_INSERTCOLUMNW,0,tlparam(@lv)); - FillGroupList{(Dialog)}; - FillChainList(Dialog); - - SetMBRadioIcons; - - // fill current group - MakeActionList(@NewGroupList^); - ChMask:=0; - CheckGrpList(-1); - DontReact:=false; - end; - - WM_COMMAND: begin - if DontReact then exit; - case wParam shr 16 of - CBN_EDITCHANGE: begin - ChMask:=ChMask or ACTM_ACT or ACTM_ACTS; - SetChanged(Dialog,etACT); - end; - EN_CHANGE: begin -// check for group renaming - if loword(wParam)<>IDC_EDIT_FORMAT then - begin - ChMask:=ChMask or ACTM_ACT or ACTM_ACTS; - SetChanged(Dialog,etACT); - end; - end; - CBN_SELCHANGE: begin - ChMask:=ChMask or ACTM_ACT or ACTM_ACTS; - SetChanged(Dialog,etACT); - case loword(wParam) of - IDC_SRV_RESULT: begin - i:=CB_GetData(lParam); - case i of - sresHex,sresInt,sresStruct: begin - SHControl(IDC_RES_FREEMEM,SW_HIDE); - SHControl(IDC_RES_UNICODE,SW_HIDE); - if i=sresInt then - SHControl(IDC_RES_SIGNED,SW_SHOW) - else - SHControl(IDC_RES_SIGNED,SW_HIDE); - end; - sresString: begin - SHControl(IDC_RES_FREEMEM,SW_SHOW); - SHControl(IDC_RES_UNICODE,SW_SHOW); - SHControl(IDC_RES_SIGNED ,SW_HIDE); - end; - end; - end; - - IDC_ADV_OPER: begin - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL1), - (CB_GetData(lParam)<>lresult(aeNot))); -// SendMessage(lParam,CB_GETCURSEL,0,0)<>0); - end; - - IDC_RW_DATATYPE: begin - if CB_GetData(GetDlgItem(Dialog,IDC_RW_DATATYPE))>2 then - begin - SHControl(IDC_RW_TEXT ,SW_SHOW); - SHControl(IDC_RW_VALUE,SW_HIDE); - end - else - begin - SHControl(IDC_RW_TEXT ,SW_HIDE); - SHControl(IDC_RW_VALUE,SW_SHOW); - end; - end; - - IDC_ACTION_TYPE: begin - i:=SendMessage(lParam,CB_GETCURSEL,0,0); - SHWindows(ActIds[i].code); - ChangeActionName(-1,i+1); - case ActIds[i].code of - ACT_CONTACT: EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),true); - ACT_RW: begin - EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST), - (IsDlgButtonChecked(Dialog,IDC_RW_MANUAL)=BST_CHECKED)); - - if CB_GetData(GetDlgItem(Dialog,IDC_RW_DATATYPE))>2 then - begin - SHControl(IDC_RW_TEXT ,SW_SHOW); - SHControl(IDC_RW_VALUE,SW_HIDE); - end - else - begin - SHControl(IDC_RW_TEXT ,SW_HIDE); - SHControl(IDC_RW_VALUE,SW_SHOW); - end; - - end; - ACT_ADVANCE: FillSubList(Dialog); - end; - end; -{ - IDC_EDIT_WPAR,IDC_EDIT_LPAR: begin - SendMessage(lParam,CB_GETLBTEXT, - SendMessage(lParam,CB_GETCURSEL,0,0),TLPARAM(@buf)); - if loword(wParam)=IDC_EDIT_WPAR then - FixParam(buf,IDC_EDIT_WPAR,IDC_FLAG_WPAR) - else - FixParam(buf,IDC_EDIT_LPAR,IDC_FLAG_LPAR) - end; -} - IDC_FLAG_WPAR,IDC_FLAG_LPAR: begin - if loword(wParam)=IDC_FLAG_WPAR then - begin - wnd :=GetDlgItem(Dialog,IDC_EDIT_WPAR); - wnd1:=GetDlgItem(Dialog,IDC_WSTRUCT); - wnd2:=GetDlgItem(Dialog,IDC_SRV_WPAR); - end - else - begin - wnd :=GetDlgItem(Dialog,IDC_EDIT_LPAR); - wnd1:=GetDlgItem(Dialog,IDC_LSTRUCT); - wnd2:=GetDlgItem(Dialog,IDC_SRV_LPAR); - end; - i:=CB_GetData(GetDlgItem(Dialog,loword(wParam))); - - if i=ptStruct then - begin - ShowWindow(wnd ,SW_HIDE); - ShowWindow(wnd2,SW_HIDE); - ShowWindow(wnd1,SW_SHOW); - end - else - begin - ShowWindow(wnd ,SW_SHOW); - ShowWindow(wnd2,SW_SHOW); - ShowWindow(wnd1,SW_HIDE); - if i in [ptCurrent,ptResult,ptParam] then - EnableWindow(wnd,false) - else - begin - EnableWindow(wnd,true); -{ - flag:=GetWindowLongPtr(wnd,GWL_STYLE); - if i=ptNumber then - flag:=flag or ES_NUMBER - else - flag:=flag and not ES_NUMBER; - SetWindowLongPtr(wnd,GWL_STYLE,flag); -} - end; - end; - end; - IDC_EDIT_SERVICE: ReloadService; - end; - end; - BN_CLICKED: begin - case loword(wParam) of - IDC_GROUP_RELOAD, // don't affect to saved (DB) datas - IDC_WSTRUCT, // 'Changed' on process - IDC_LSTRUCT, // 'Changed' on process - IDC_HLP_FVARS, - IDC_HLP_VARS, - IDC_ADV_HVARS, - IDC_ACTION_HELP, - IDC_GROUP_EXPORT, - IDC_CNT_APPLY, - IDC_CNT_FILTER, - IDC_GROUP_TEST: ; - - IDC_GROUP_UP, - IDC_GROUP_DOWN, - IDC_GROUP_NEW : SetChanged(Dialog,etHK); - - IDC_GROUP_DELETE, // action deleting with subactions - IDC_GROUP_IMPORT, - IDC_ACTION_NEW, - IDC_ACTION_DELETE, - IDC_ACTION_UP, - IDC_ACTION_DOWN: begin - ChMask:=ChMask or ACTM_ACT or ACTM_ACTS; - SetChanged(Dialog,etHK+etACT); - end; - else - ChMask:=ChMask or ACTM_ACT or ACTM_ACTS; - SetChanged(Dialog,etACT); - end; - - case loword(wParam) of - IDC_SRV_WPAR, - IDC_SRV_LPAR, - IDC_SRV_SRVC, - IDC_PRG_PRG , - IDC_PRG_ARG , - IDC_TXT_FILE, - IDC_TXT_TEXT, - IDC_RW_MVAR , - IDC_RW_SVAR , - IDC_RW_TVAR , - IDC_MSG_TTL , - IDC_MSG_TXT : SetButtonIcon(lParam,checknames[IsDlgButtonChecked(Dialog,loword(wParam))]); - end; - - case loword(wParam) of - IDC_CNT_FILTER, - IDC_CNT_APPLY: begin - if loword(wParam)=IDC_CNT_APPLY then - begin - mFreeMem(fCLformat); - fCLformat:=GetDlgText(Dialog,IDC_EDIT_FORMAT); - DBWriteUnicode(0,DBBranch,'CLformat',fCLformat); - end - else - begin - fCLfilter:=IsDlgButtonChecked(Dialog,IDC_CNT_FILTER)<>BST_UNCHECKED; - DBWriteByte(0,DBBranch,'CLfilter',ord(fCLfilter)); - end; -// Saving and restoring contact after list rebuild - wnd:=GetDlgItem(Dialog,IDC_CONTACTLIST); - i:=SendMessage(wnd,CB_GETITEMDATA,SendMessage(wnd,CB_GETCURSEL,0,0),0); - - FillContactList(wnd,fCLfilter,fCLformat); - - SendMessage(wnd,CB_SETCURSEL,FindContact(wnd,i),0); - end; - IDC_HLP_FVARS, - IDC_HLP_VARS : ShowHelp(hlpVariables); - IDC_ADV_HVARS: ShowHelp(hlpAdvVariables); - - IDC_GROUP_EXPORT: begin - if ShowDlgW(xmlfilename,xmlfilename,inoutfilter,false) then - begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_GROUP); - for i:=0 to ListView_GetItemCount(wnd)-1 do - begin - if ListView_GetItemState(wnd,i,LVIS_SELECTED)<>0 then - begin - with GroupList[LV_GetLParam(wnd,i)] do - if (flags and ACF_ASSIGNED)<>0 then // must be always true - flags:=flags or ACF_EXPORT; - end - else - with GroupList[i] do - if (flags and (ACF_EXPORT or ACF_ASSIGNED))= - (ACF_EXPORT or ACF_ASSIGNED) then - flags:=flags and not ACF_EXPORT; - end; - i:=ACIO_EXPORT or ACIO_SELECTED; - if GetFSize(xmlfilename)>0 then - if MessageBoxW(Dialog,TranslateW('Append data to file?'), - PluginName,MB_YESNO+MB_ICONWARNING)=IDYES then - i:=i or ACIO_APPEND; - CallService(MS_ACT_INOUT,i,TLPARAM(@xmlfilename)); -// Export({GetLParam(GetDlgItem(Dialog,IDC_ACTION_GROUP)),}xmlfilename,i); - for i:=0 to MaxGroups-1 do - with GroupList[i] do - if (flags and (ACF_EXPORT or ACF_ASSIGNED))= - (ACF_EXPORT or ACF_ASSIGNED) then - flags:=flags and not ACF_EXPORT; - end; - end; - - IDC_GROUP_IMPORT: begin - if ShowDlgW(xmlfilename,xmlfilename,inoutfilter) then - begin -// if Import(xmlfilename) then - if CallService(MS_ACT_INOUT,0,TLPARAM(@xmlfilename))<>0 then - begin - ChMask:=ChMask or ACTM_NEW; - SendMessage(Dialog,WM_COMMAND,IDC_GROUP_RELOAD+(BN_CLICKED shl 16), - GetDlgItem(Dialog,IDC_GROUP_RELOAD)); -//(in reload) FillChainList(Dialog); - end; - end; - end; - - IDC_WSTRUCT, IDC_LSTRUCT: begin - if loword(wParam)=IDC_WSTRUCT then - pc:=wstruct - else - pc:=lstruct; -//!!!! - pAnsiChar(j):=EditStructure(pAnsiChar(pc),Dialog); - if j<>0 then - begin - ChMask:=ChMask or ACTM_ACT or ACTM_ACTS; - SetChanged(Dialog,etACT); - mFreeMem(pAnsiChar(pc)); - pc:=pAnsiChar(j); - - if loword(wParam)=IDC_WSTRUCT then - wstruct:=pc - else - lstruct:=pc; - end; - end; - - IDC_PROGRAM: begin - FillFileName(IDC_EDIT_PRGPATH); - end; - IDC_FILE_FILEBTN: begin - FillFileName(IDC_FILE_PATH); - end; - - IDC_GROUP_TEST: begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - li.mask :=LVIF_PARAM; - li.iSubItem:=0; - li.iItem :=0; - SendMessageW(wnd,LVM_GETITEMW,0,tlparam(@li)); - j:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); - - ActionStarterWait(li.lParam); - // doubling from "reload" button - wnd:=GetDlgItem(Dialog,IDC_ACTION_GROUP); - i:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); - NewGroupList :=GroupList; - NewMaxGroups :=MaxGroups; - NewActionList:=ActionList; - NewMaxActions:=MaxActions; - FillGroupList{(Dialog)}; - FillChainList(Dialog); - - Listview_SetItemState(wnd,0,0,LVIS_FOCUSED or LVIS_SELECTED); - Listview_SetItemState(wnd,i, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - SendMessage(wnd,LVM_ENSUREVISIBLE,i,0); - - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - Listview_SetItemState(wnd,0,0,LVIS_FOCUSED or LVIS_SELECTED); - Listview_SetItemState(wnd,j, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - SendMessage(wnd,LVM_ENSUREVISIBLE,j,0); - - end; - IDC_GROUP_NEW: begin - i:=AddGroup(Dialog,NewGroup(NewGroupList,NewMaxGroups)); - if i>=0 then - begin - ChMask:=ChMask or ACTM_NEW or ACTM_SORT; - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_GROUP),true); - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_DELETE),true); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_NEW ),true); - FillChainList(Dialog); - CheckGrpList(i); - end; - end; - IDC_GROUP_DELETE: begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_GROUP); - for i:=ListView_GetItemCount(wnd)-1 downto 0 do - begin - if ListView_GetItemState(wnd,i,LVIS_SELECTED)<>0 then - begin - ChMask:=ChMask or ACTM_DELETE or ACTM_SORT; - - with NewGroupList^[LV_GetLParam(wnd,i)] do - begin - flags:=0; - mFreeMem(descr); - FreeActions(NewActionList,firstAction); - end; - - SendMessage(wnd,LVM_DELETEITEM,i,0); - end; - end; - SendDlgItemMessage(Dialog,IDC_ACTION_LIST,LVM_DELETEALLITEMS,0,0); - FillChainList(Dialog); - Listview_SetItemState(wnd,0,LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - CheckGroupList(-1); -{ - i:=SendMessageW(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); //?? - if i>=0 then - begin - ChMask:=ChMask or ACTM_DELETE; - j:=GetLParam(wnd,i); - - with NewGroupList^[j] do - begin - flags:=0; - mFreeMem(descr); - FreeActions(NewActionList,firstAction); - end; - SendDlgItemMessage(Dialog,IDC_ACTION_LIST,LVM_DELETEALLITEMS,0,0); - -//?? i:=ListView_GetNextItem(wnd,-1,LVNI_FOCUSED); - SendMessage(wnd,LVM_DELETEITEM,i,0); - FillChainList(Dialog); - CheckGroupList(i); - end; -} - end; - IDC_GROUP_RELOAD: begin - ChMask:=ChMask or ACTM_RELOAD; - SetCancel; - NewGroupList :=GroupList; - NewMaxGroups :=MaxGroups; - NewActionList:=ActionList; - NewMaxActions:=MaxActions; - FillGroupList{(Dialog)}; - FillChainList(Dialog); - end; - - IDC_ACTION_HELP: begin - ShowHelp(SendDlgItemMessage(Dialog,IDC_ACTION_TYPE,CB_GETCURSEL,0,0)); - end; - - IDC_ACTION_NEW: begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - li.mask :=LVIF_PARAM; - i :=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); - li.iItem :=i+1; - li.iSubItem:=0; - li.lParam :=NewAction(NewActionList,NewMaxActions); - SendMessageW(wnd,LVM_INSERTITEMW,0,tlparam(@li)); - ListView_SetCheckState(wnd,li.iItem,true); - if li.iItem=0 then - begin - ListView_SetItemState(wnd,0,LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - SHActButtons(SW_SHOW); - end; - ChangeActionName(li.iItem); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_LIST ),true); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_HELP ),true); - EnableWindow(GetDlgItem(Dialog,IDC_GROUP_TEST ),true); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_DELETE),true); - EnableWindow(GetDlgItem(Dialog,IDC_ACTION_TYPE ),true); - CheckActList(i); - - wnd:=GetDlgItem(Dialog,IDC_ADV_VAL2); - i:=SendMessage(wnd,CB_GETCURSEL,0,0); - FillSubList(Dialog); - SendMessage(wnd,CB_SETCURSEL,i,0); - end; - IDC_ACTION_DELETE: begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - for i:=ListView_GetItemCount(wnd)-1 downto 0 do - begin - if ListView_GetItemState(wnd,i,LVIS_SELECTED)<>0 then - begin - FreeAction(@NewActionList^[LV_GetLParam(wnd,i)]); - SendMessage(wnd,LVM_DELETEITEM,i,0); - end; - end; - Listview_SetItemState(wnd,0,LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - CheckActionList(0); -{ - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); - li.iItem:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); //?? - if li.iItem>=0 then - begin - li.mask :=LVIF_PARAM; - li.iSubItem:=0; - SendMessageW(wnd,LVM_GETITEM,0,TLPARAM(@li)); - FreeAction(@NewActionList^[li.lParam]); - - SendMessage(wnd,LVM_DELETEITEM,li.iItem,0); - CheckActionList(li.iItem); - end; -} - end; - - IDC_GROUP_UP: begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_GROUP); -// i:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); -// if i>0 then - begin - CheckGrpList(MoveGroup(wnd,-1,-1)); - ChMask:=ChMask or ACTM_SORT; - end; - end; - IDC_GROUP_DOWN: begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_GROUP); -// i:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); -// if i<(SendMessage(wnd,LVM_GETITEMCOUNT,0,0)-1) then - begin - CheckGrpList(MoveGroup(wnd,-1,1)); - ChMask:=ChMask or ACTM_SORT; - end; - end; - - IDC_ACTION_UP: begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); -// i:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); -// if i>0 then - CheckActList(MoveGroup(wnd,-1,-1)); - end; - IDC_ACTION_DOWN: begin - wnd:=GetDlgItem(Dialog,IDC_ACTION_LIST); -// i:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); -// if i<(SendMessage(wnd,LVM_GETITEMCOUNT,0,0)-1) then - CheckActList(MoveGroup(wnd,-1,1)); - end; - - IDC_FILE_WRITE, IDC_FILE_READ, IDC_FILE_APPEND: - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_INSERT), - loword(wParam)<>IDC_FILE_APPEND); - - IDC_RW_DELETE, - IDC_RW_READ, - IDC_RW_WRITE: begin - b:=loword(wParam)<>IDC_RW_DELETE; - EnableWindow(GetDlgItem(Dialog,IDC_RW_DATATYPE),b); - EnableWindow(GetDlgItem(Dialog,IDC_RW_LAST ),b); - EnableWindow(GetDlgItem(Dialog,IDC_RW_VALUE ),b); - EnableWindow(GetDlgItem(Dialog,IDC_RW_TEXT ),b); - end; - - IDC_FLAG_CLIP,IDC_FLAG_FILE,IDC_FLAG_MESSAGE: begin - b:=loword(wParam)=IDC_FLAG_CLIP; -//!! +text read = disabled - EnableWindow(GetDlgItem(Dialog,IDC_CLIP_COPYTO),b); - EnableWindow(GetDlgItem(Dialog,IDC_CLIP_PASTE ),b); - b:=b or ((loword(wParam)=IDC_FLAG_FILE) and - (IsDlgButtonChecked(Dialog,IDC_FILE_READ)<>BST_UNCHECKED)); - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_INSERT),not b); - - b:=loword(wParam)=IDC_FLAG_FILE; - EnableWindow(GetDlgItem(Dialog,IDC_FILE_ENC ),b); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_PATH ),b); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_FILEBTN),b); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_READ ),b); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_WRITE ),b); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_APPEND ),b); - end; - - IDC_FLAG_JUMP: begin - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL2),true); - end; - - IDC_FLAG_BREAK,IDC_FLAG_ANOP: - begin - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL2),false); - end; - - IDC_FLAG_VARS: begin - if IsDlgButtonChecked(Dialog,IDC_FLAG_VARS)<>BST_UNCHECKED then - begin - SHMath(false); - CheckDlgButton(Dialog,IDC_FLAG_MATH,BST_UNCHECKED); - end - else - begin - EnableWindow(GetDlgItem(Dialog,IDC_ADV_ASINT),false); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VARS ),false); - end; - end; - IDC_FLAG_MATH: begin - if IsDlgButtonChecked(Dialog,IDC_FLAG_MATH)<>BST_UNCHECKED then - begin - SHMath(true); - CheckDlgButton(Dialog,IDC_FLAG_VARS,BST_UNCHECKED); - end - else - begin - EnableWindow(GetDlgItem(Dialog,IDC_ADV_OPER),false); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL1),false); - end; - end; - - IDC_RW_CURRENT, IDC_RW_RESULT, IDC_RW_PARAM: begin - EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),false); - end; - IDC_RW_MANUAL: EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),true); - - IDC_RW_LAST: begin - b :=IsDlgButtonChecked(Dialog,IDC_RW_LAST )=BST_UNCHECKED; - EnableWindow(GetDlgItem(Dialog,IDC_RW_VALUE), b); - EnableWindow(GetDlgItem(Dialog,IDC_RW_TEXT ), b); - end; - end; - end; - end; - end; - - WM_HELP: begin - if (PHELPINFO(lParam)^.iContextType=HELPINFO_WINDOW) then - ShowHelp(SendDlgItemMessage(Dialog,IDC_ACTION_TYPE,CB_GETCURSEL,0,0)); - end; - - WM_NOTIFY: begin - case integer(PNMHdr(lParam)^.code) of - PSN_APPLY: begin - BuildActionChain; - SetSave(Dialog,LV_GetLParam(GetDlgItem(Dialog,IDC_ACTION_GROUP))); - - if ActionList<>NewActionList then - begin - DestroyActions(ActionList,MaxActions); - ActionList:=NewActionList; - MaxActions:=NewMaxActions; - end; - - SaveGroups; - - if ChMask<>0 then //?? - begin - NotifyEventHooks(hHookChanged,ChMask,0); - ChMask:=0; - end; - - end; - - NM_DBLCLK: begin - if PNMListView(lParam)^.iItem>=0 then - PostMessageW(PNMHdr(lParam)^.hWndFrom,LVM_EDITLABELW, - PNMListView(lParam)^.iItem,0); - end; - - LVN_ITEMCHANGED: begin - if DontReact then exit; // bug when group moved avoid - - if wParam=IDC_ACTION_GROUP then - begin - if PNMLISTVIEW(lParam)^.uChanged=LVIF_STATE then - begin - lvflag:=(PNMLISTVIEW(lParam)^.uOldState and LVNI_FOCUSED)- - (PNMLISTVIEW(lParam)^.uNewState and LVNI_FOCUSED); - - if lvflag>0 then // old focus - BuildActionChain(PNMLISTVIEW(lParam)^.iItem) - else if lvflag<0 then // new focus - begin - DontReact:=true; - - ClearDialogData; - MakeActionList(@NewGroupList^[PNMLISTVIEW(lParam)^.lParam]); - CheckGrpList(PNMLISTVIEW(lParam)^.iItem); - - DontReact:=false; - end - else - begin - lvflag:=(PNMLISTVIEW(lParam)^.uOldState and LVNI_SELECTED)- - (PNMLISTVIEW(lParam)^.uNewState and LVNI_SELECTED); - if lvflag<>0 then - CheckGrpList(PNMLISTVIEW(lParam)^.iItem); - end; - end; - end - else if wParam=IDC_ACTION_LIST then - begin - lvflag:=(PNMLISTVIEW(lParam)^.uOldState and LVNI_FOCUSED)- - (PNMLISTVIEW(lParam)^.uNewState and LVNI_FOCUSED); - if lvflag>0 then // old focus - SaveAction(PNMLISTVIEW(lParam)^.iItem, - PNMLISTVIEW(lParam)^.lParam) - else if lvflag<0 then // new focus - begin - DontReact:=true; - - ClearDialogData; - j:=PNMLISTVIEW(lParam)^.lParam; - FillAction(j); - CheckActList(PNMLISTVIEW(lParam)^.iItem); - - DontReact:=false; - end - else - begin // checkboxes - lvflag:=(PNMLISTVIEW(lParam)^.uOldState and LVNI_SELECTED)- - (PNMLISTVIEW(lParam)^.uNewState and LVNI_SELECTED); - if lvflag<>0 then - CheckGrpList(PNMLISTVIEW(lParam)^.iItem); - - if (PNMLISTVIEW(lParam)^.uOldState or PNMLISTVIEW(lParam)^.uNewState)=$3000 then - begin - if PNMLISTVIEW(lParam)^.uOldState=$1000 then - i:=0 - else - i:=ACF_DISABLED; - j:=PNMLISTVIEW(lParam)^.lParam; - NewActionList^[j].flags:=(NewActionList^[j].flags and not ACF_DISABLED) or dword(i); - ChMask:=ChMask or ACTM_ACT or ACTM_ACTS; - SetChanged(Dialog,etACT); - end; - end; - end; - end; - - LVN_ENDLABELEDITW: begin - if DontReact then exit; - if wParam=IDC_ACTION_GROUP then - begin - with PLVDISPINFOW(lParam)^ do - begin - if item.pszText<>nil then - begin - ChMask:=ChMask or ACTM_RENAME; - SetChanged(Dialog,etHK); - item.mask:=LVIF_TEXT; - if pWideChar(item.pszText)^=#0 then - pWideChar(item.pszText):=NoDescription; - SendMessageW(hdr.hWndFrom,LVM_SETITEMW,0,tlparam(@item)); - - with NewGroupList^[item.lParam] do - begin - mFreeMem(descr); - StrDupW(descr,item.pszText); - end; - - FillChainList(Dialog); - result:=1; - end; - end; - end - else if wParam=IDC_ACTION_LIST then - begin - with PLVDISPINFOW(lParam)^ do - begin - if item.pszText<>nil then - begin - ChMask:=ChMask or ACTM_ACT or ACTM_ACTS; - SetChanged(Dialog,etACT); - ChangeActionName(item.iItem,0,pWideChar(item.pszText)); - result:=1; - end; -//?? - end; - end; - end; - - end; - end; - else -// {result:=}DefWindowProc(Dialog,hMessage,wParam,lParam); - end; -// {result:=}DefWindowProc(Dialog,hMessage,wParam,lParam); -end; diff --git a/plugins/!Deprecated/Actman20/i_options.inc b/plugins/!Deprecated/Actman20/i_options.inc deleted file mode 100644 index 26dd8e1f08..0000000000 --- a/plugins/!Deprecated/Actman20/i_options.inc +++ /dev/null @@ -1,459 +0,0 @@ -{Save/load options} - -const - opt_group = 'Group'; - opt_actions = 'Action'; - opt_numacts = 'numactions'; - opt_numhk = 'numgroups'; - opt_firstAction = 'firstaction'; - - opt_cproto = 'cproto'; - opt_cuid = 'cuid'; - opt_ischat = 'ischat'; - - opt_descr = 'descr'; - opt_id = 'id'; - opt_flags = 'flags'; - opt_flags2 = 'flags2'; - opt_time = 'time'; - opt_show = 'show'; - opt_action = 'action'; - opt_value = 'value'; - opt_file = 'file'; - - opt_next = 'next'; - opt_type = 'type'; - opt_contact = 'contact'; - opt_text = 'text'; - opt_prg = 'program'; - opt_args = 'arguments'; - opt_service = 'service'; - opt_wparam = 'wparam'; - opt_wlparam = 'wparamlen'; - opt_llparam = 'lparamlen'; - opt_lparam = 'lparam'; - opt_chain = 'chain'; - opt_cond = 'condition'; - opt_count = 'count'; - opt_module = 'module'; - opt_setting = 'setting'; - opt_oper = 'operation'; - opt_mathval = 'mathval'; - opt_operval = 'operval'; - opt_varval = 'varval'; - opt_msgtitle = 'msgtitle'; - opt_msgtext = 'msgtext'; - opt_boxopts = 'boxopts'; - - -//----- Save settings ----- - -procedure SaveNumValue(setting:pAnsiChar;value:uint_ptr;isvar:boolean); -begin - if isvar then - DBWriteUnicode(0,DBBranch,setting,pWideChar(value)) - else - DBWriteDWord (0,DBBranch,setting,value); -end; - -function SaveActions(section:pAnsiChar;first:integer):integer; -var - p,p1:PAnsiChar; - act:pHKAction; - i:integer; -begin - result:=0; - // in: section = "Group#/" - p1:=StrCopyE(StrEnd(section),opt_actions); // "Group#/Action" - DBDeleteGroup(0,DBBranch,section); - i:=1; - while first<>0 do - begin - act:=@ActionList[first]; - p:=StrEnd(IntToStr(p1,i)); //!!! - p^:='/'; inc(p); // "Group#/Action#/" - - StrCopy(p,opt_flags ); DBWriteDWord(0,DBBranch,section,act^.flags); - StrCopy(p,opt_flags2); DBWriteDWord(0,DBBranch,section,act^.flags2); - StrCopy(p,opt_type ); DBWriteByte (0,DBBranch,section,act^.actionType); - if act^.descr<>nil then - begin - StrCopy(p,opt_descr); DBWriteUnicode(0,DBBranch,section,act^.descr); - end; - - case act^.actionType of - ACT_CONTACT: begin - p^:=#0; - SaveContact(act^.contact,DBBranch,section); - end; - - ACT_SERVICE: begin - StrCopy(p,opt_service); DBWriteString(0,DBBranch,section,act^.service); - - if (act^.flags and (ACF_WCURRENT or ACF_WRESULT or ACF_WPARAM))=0 then - begin - StrCopy(p,opt_wparam); - if (act^.flags and ACF_WPARNUM)<>0 then - SaveNumValue(section,act^.wparam,(act^.flags2 and ACF2_SRV_WPAR)<>0) -// DBWriteDWord(0,DBBranch,section,act^.wparam) - else if act^.wparam<>0 then - begin - if (act^.flags and ACF_WSTRUCT)<>0 then - DBWriteUTF8(0,DBBranch,section,pAnsiChar(act^.wparam)) - else if (act^.flags and ACF_WUNICODE)<>0 then - DBWriteUnicode(0,DBBranch,section,pWideChar(act^.wparam)) - else - DBWriteString(0,DBBranch,section,PAnsiChar(act^.wparam)); - end; - end; - - if (act^.flags and (ACF_LCURRENT or ACF_LRESULT or ACF_LPARAM))=0 then - begin - StrCopy(p,opt_lparam); - if (act^.flags and ACF_LPARNUM)<>0 then - SaveNumValue(section,act^.lparam,(act^.flags2 and ACF2_SRV_LPAR)<>0) -// DBWriteDWord(0,DBBranch,section,act^.lparam) - else if act^.lparam<>0 then - begin - if (act^.flags and ACF_LSTRUCT)<>0 then - DBWriteUTF8(0,DBBranch,section,pAnsiChar(act^.lparam)) - else if (act^.flags and ACF_LUNICODE)<>0 then - DBWriteUnicode(0,DBBranch,section,pWideChar(act^.lparam)) - else - DBWriteString(0,DBBranch,section,PAnsiChar(act^.lparam)); - end; - end; - - end; - - ACT_PROGRAM: begin - StrCopy(p,opt_prg ); DBWriteUnicode(0,DBBranch,section,act^.prgname); - StrCopy(p,opt_args); DBWriteUnicode(0,DBBranch,section,act^.args); - StrCopy(p,opt_time); DBWriteDWord (0,DBBranch,section,act^.time); - StrCopy(p,opt_show); DBWriteDWord (0,DBBranch,section,act^.show); - end; - - ACT_TEXT: begin - if (act^.flags and ACF_CLIPBRD)=0 then - begin - StrCopy(p,opt_text); DBWriteUnicode(0,DBBranch,section,act^.text); - if (act^.flags and ACF_FILE)<>0 then - begin - StrCopy(p,opt_file); DBWriteUnicode(0,DBBranch,section,act^.tfile); - end; - end; - end; - - ACT_ADVANCE: begin - StrCopy(p,opt_cond ); DBWriteByte (0,DBBranch,section,act^.condition); - StrCopy(p,opt_value ); DBWriteDWord (0,DBBranch,section,act^.value); - StrCopy(p,opt_action ); DBWriteByte (0,DBBranch,section,act^.action); - StrCopy(p,opt_operval); DBWriteUnicode(0,DBBranch,section,act^.operval); - StrCopy(p,opt_oper ); DBWriteByte (0,DBBranch,section,act^.oper); - StrCopy(p,opt_mathval); DBWriteDWord (0,DBBranch,section,act^.mathval); - StrCopy(p,opt_varval ); DBWriteUnicode(0,DBBranch,section,act^.varval); - end; - - ACT_CHAIN: begin - StrCopy(p,opt_text); DBWriteDWord(0,DBBranch,section,act^.id); - end; - - ACT_RW: begin - if (act^.flags and ACF_NOCNTCT)=0 then - begin - p^:=#0; - SaveContact(act^.dbcontact,DBBranch,section); - end; - StrCopy(p,opt_module ); DBWriteString(0,DBBranch,section,act^.dbmodule); - StrCopy(p,opt_setting); DBWriteString(0,DBBranch,section,act^.dbsetting); - StrCopy(p,opt_value ); - if (act^.flags and ACF_DBUTEXT)=0 then - begin - SaveNumValue(section,act^.dbvalue,(act^.flags2 and ACF2_RW_TVAR)<>0); -// DBWriteDWord(0,DBBranch,section,act^.dbvalue) - end - else - DBWriteUnicode(0,DBBranch,section,pWideChar(act^.dbvalue)); - end; - - ACT_MESSAGE: begin - StrCopy(p,opt_msgtitle); DBWriteUnicode(0,DBBranch,section,act^.msgtitle); - StrCopy(p,opt_msgtext ); DBWriteUnicode(0,DBBranch,section,act^.msgtext); - StrCopy(p,opt_boxopts ); DBWriteByte (0,DBBranch,section,act^.boxopts); //!! - end; - - end; - inc(result); - inc(i); - first:=ActionList^[first].next; - end; -end; - -procedure SaveGroups; -var - HK:pHKRecord; - NumHK:integer; - i,num:integer; - section:array [0..127] of AnsiChar; - p,p1:PAnsiChar; - Actions:integer; -begin -// even if crap in settings, skip on read -// DBDeleteGroup(0,DBBranch,opt_group); - HK:=@GroupList^; - i:=MaxGroups; - NumHK:=0; - Actions:=1; - DBWriteUnicode(0,DBBranch,'CLformat',fCLformat); - DBWriteByte (0,DBBranch,'CLfilter',ord(fCLfilter)); - - p1:=StrCopyE(section,opt_group); - while i>0 do - begin - with HK^ do - begin - if (flags and (ACF_ASSIGNED or ACF_VOLATILE))=ACF_ASSIGNED then - begin - p:=StrEnd(IntToStr(p1,NumHK)); - p^:='/'; inc(p); - - StrCopy(p,opt_id ); DBWriteDWord(0,DBBranch,section,id); - StrCopy(p,opt_flags); DBWriteDWord(0,DBBranch,section,flags); - StrCopy(p,opt_descr); - if descr<>nil then - DBWriteUnicode (0,DBBranch,section,descr) - else - DBDeleteSetting(0,DBBranch,section); - - p^:=#0; - //?? - num:=SaveActions(section,firstAction); - StrCopy(p,opt_numacts); DBWriteWord(0,DBBranch,section,num); - - inc(Actions,num); - inc(NumHK); - end; - end; - inc(HK); - dec(i); - end; - DBWriteWord(0,DBBranch,opt_numhk ,NumHK); - DBWriteWord(0,DBBranch,opt_numacts,Actions-1); -end; - -//----- Load settings ----- - -function LoadNumValue(setting:pAnsiChar;isvar:boolean):uint_ptr; -begin - if isvar then - result:=uint_ptr(DBReadUnicode(0,DBBranch,setting,nil)) - else - result:=DBReadDWord(0,DBBranch,setting); -end; - -function LoadActions(section:pAnsiChar;count:integer):integer; -var - p,p1:PAnsiChar; - act:tHKAction; - i,num,oldnum:integer; -begin - result:=0; - p1:=StrCopyE(StrEnd(section),opt_actions); // "Group#/Action" - - oldnum:=0; - for i:=1 to count do - begin - p:=StrEnd(IntToStr(p1,i)); - p^:='/'; inc(p); // "Group#/Action#/" - FillChar(act,SizeOf(act),0); - - StrCopy(p,opt_flags ); act.flags :=DBReadDWord (0,DBBranch,section,0); - if (act.flags and ACF_ASSIGNED)<>0 then - begin - StrCopy(p,opt_flags2); act.flags2 :=DBReadDWord (0,DBBranch,section,0); - StrCopy(p,opt_descr ); act.descr :=DBReadUnicode(0,DBBranch,section,nil); - StrCopy(p,opt_type ); act.actionType:=DBReadByte (0,DBBranch,section,ACT_CONTACT); - - case act.actionType of - ACT_CONTACT: begin - p^:=#0; - act.contact:=LoadContact(DBBranch,section); - end; - - ACT_SERVICE: begin - StrCopy(p,opt_service); - act.service:=DBReadString(0,DBBranch,section,nil); - - if (act.flags and (ACF_WCURRENT or ACF_WRESULT or ACF_WPARAM))=0 then - begin - StrCopy(p,opt_wparam); - if (act.flags and ACF_WPARNUM)<>0 then - act.wparam:=LoadNumValue(section,(act.flags2 and ACF2_SRV_WPAR)<>0) - else if (act.flags and ACF_WSTRUCT)<>0 then - act.wparam:=wparam(DBReadUTF8(0,DBBranch,section,nil)) - else if (act.flags and ACF_WUNICODE)<>0 then - act.wparam:=wparam(DBReadUnicode(0,DBBranch,section,nil)) - else - act.wparam:=wparam(DBReadString (0,DBBranch,section,nil)); - end; - - if (act.flags and (ACF_LCURRENT or ACF_LRESULT or ACF_LPARAM))=0 then - begin - StrCopy(p,opt_lparam); - if (act.flags and ACF_LPARNUM)<>0 then - act.lparam:=LoadNumValue(section,(act.flags2 and ACF2_SRV_LPAR)<>0) - // act.lparam:=DBReadDWord(0,DBBranch,section,0) - else if (act.flags and ACF_LSTRUCT)<>0 then - act.lparam:=lparam(DBReadUTF8(0,DBBranch,section,nil)) - else if (act.flags and ACF_LUNICODE)<>0 then - act.lparam:=lparam(DBReadUnicode(0,DBBranch,section,nil)) - else - act.lparam:=lparam(DBReadString(0,DBBranch,section,nil)); - end; - - end; - - ACT_PROGRAM: begin - StrCopy(p,opt_prg ); act.prgname:=DBReadUnicode(0,DBBranch,section,nil); - StrCopy(p,opt_args); act.args :=DBReadUnicode(0,DBBranch,section,nil); - StrCopy(p,opt_time); act.time :=DBReadDWord (0,DBBranch,section,0); - StrCopy(p,opt_show); act.show :=DBReadDWord (0,DBBranch,section,SW_SHOW); - end; - - ACT_TEXT: begin - if (act.flags and ACF_CLIPBRD)=0 then - begin - StrCopy(p,opt_text); act.text:=DBReadUnicode(0,DBBranch,section,nil); - if (act.flags and ACF_FILE)<>0 then - begin - StrCopy(p,opt_file); act.tfile:=DBReadUnicode(0,DBBranch,section,nil); - end; - end; - end; - - ACT_ADVANCE: begin - StrCopy(p,opt_cond ); act.condition:=DBReadByte (0,DBBranch,section); - StrCopy(p,opt_value ); act.value :=DBReadDWord (0,DBBranch,section); - StrCopy(p,opt_action ); act.action :=DBReadByte (0,DBBranch,section); - StrCopy(p,opt_oper ); act.oper :=DBReadByte (0,DBBranch,section); - StrCopy(p,opt_mathval); act.mathval :=DBReadDWord (0,DBBranch,section); - StrCopy(p,opt_operval); act.operval :=DBReadUnicode(0,DBBranch,section); - StrCopy(p,opt_varval ); act.varval :=DBReadUnicode(0,DBBranch,section); - end; - - ACT_CHAIN: begin - StrCopy(p,opt_text); act.id:=DBReadDWord(0,DBBranch,section); - end; - - ACT_RW: begin - if (act.flags and ACF_NOCNTCT)=0 then - begin - p^:=#0; - act.dbcontact:=LoadContact(DBBranch,section); - end; - StrCopy(p,opt_module ); act.dbmodule :=DBReadString(0,DBBranch,section); - StrCopy(p,opt_setting); act.dbsetting:=DBReadString(0,DBBranch,section); - StrCopy(p,opt_value ); - - if (act.flags and ACF_DBUTEXT)=0 then - act.dbvalue:=LoadNumValue(section,(act.flags2 and ACF2_RW_TVAR)<>0) - else - act.dbvalue:=uint_ptr(DBReadUnicode(0,DBBranch,section)); - end; - - ACT_MESSAGE: begin - StrCopy(p,opt_msgtitle); act.msgtitle:=DBReadUnicode(0,DBBranch,section); - StrCopy(p,opt_msgtext ); act.msgtext :=DBReadUnicode(0,DBBranch,section); - StrCopy(p,opt_boxopts ); act.boxopts :=DBReadByte (0,DBBranch,section); - end; - - end; - num:=NewAction(ActionList,MaxActions); - move(act,ActionList^[num],SizeOf(tHKAction)); - if i=1 then - result:=num - else - ActionList^[oldnum].next:=num; - oldnum:=num; - end; - end; -end; - -procedure LoadGroups; -var - HK:pHKRecord; - i,num:cardinal; - p,p1:PAnsiChar; - section:array [0..127] of AnsiChar; - NumGroups,NumActions:cardinal; -begin -{ remove doubling - no need? (called just once) - if MaxGroups>0 then - begin - while MaxGroups>0 do - begin - FreeGroup(MaxGroups); - dec(MaxGroups); - end; - FreeMem(GroupList); - end; -} - NumGroups:=DBReadWord(0,DBBranch,opt_numhk,HKListPage); - if NumGroups0 then - begin - act:=@ActionList[1]; - while MaxActions>0 do - begin - FreeAction(act); - inc(act); - dec(MaxActions); - end; - FreeMem(ActionList); - end; -} - NumActions:=DBReadWord(0,DBBranch,opt_numacts,ActListPage); - if NumActions0 then // not needed in normal cases - begin - StrCopy(p,opt_id ); id :=DBReadDWord (0,DBBranch,section); - StrCopy(p,opt_descr); descr:=DBReadUnicode(0,DBBranch,section,nil); - if descr=nil then - StrDupW(descr,TranslateW('No description')); - - StrCopy(p,opt_numacts); num:=DBReadWord(0,DBBranch,section); - p^:=#0; - firstAction:=LoadActions(section,num); - end; - end; - inc(HK); - inc(i); - end; - fCLfilter:=DBReadByte (0,DBBranch,'CLfilter',0)<>0; - fCLformat:=DBReadUnicode(0,DBBranch,'CLformat'); -end; diff --git a/plugins/!Deprecated/Actman20/i_services.inc b/plugins/!Deprecated/Actman20/i_services.inc deleted file mode 100644 index d835c9225a..0000000000 --- a/plugins/!Deprecated/Actman20/i_services.inc +++ /dev/null @@ -1,131 +0,0 @@ -{Basic ActMan services} - -function ActFreeList(wParam:WPARAM;lParam:LPARAM):int_ptr;cdecl; -begin - result:=0; - mFreeMem(PAnsiChar(lParam)); -end; - -function ActGetList(wParam:WPARAM;lParam:LPARAM):int_ptr;cdecl; -var - pc:^tChain; - p:pHKRecord; - i,cnt:integer; -begin - p:=@GroupList[0]; - cnt:=0; - for i:=0 to MaxGroups-1 do - begin - if (p^.flags and (ACF_ASSIGNED or ACF_VOLATILE))=ACF_ASSIGNED then inc(cnt); - inc(p); - end; - result:=cnt; - if lParam=0 then exit; - if cnt>0 then - begin - mGetMem(pc,cnt*SizeOf(tChain)+4); - puint_ptr(lParam)^:=uint_ptr(pc); -// {$IFDEF WIN64}pqword{$ELSE}pdword{$ENDIF}(lParam)^:=uint_ptr(pc); - pdword(pc)^:=SizeOf(tChain); - inc(PByte(pc),4); - - p:=@GroupList[0]; - for i:=0 to MaxGroups-1 do - begin - if (p^.flags and (ACF_ASSIGNED or ACF_VOLATILE))=ACF_ASSIGNED then - begin - pc^.descr:=p^.descr; - pc^.id :=p^.id; - pc^.flags:=p^.flags; - inc(pc); - end; - inc(p); - end; - end - else - puint_ptr(lParam)^:=0; -// {$IFDEF WIN64}pqword{$ELSE}pdword{$ENDIF}(lParam)^:=0; -end; - -function ActRun(wParam:WPARAM;lParam:LPARAM):int_ptr;cdecl; -var - i:integer; - p:pHKRecord; -begin - result:=-1; - p:=@GroupList[0]; - for i:=0 to MaxGroups-1 do - begin - if ((p^.flags and ACF_ASSIGNED)<>0) and (p^.id=dword(wParam)) then - begin - result:=p^.firstAction; - break; - end; - inc(p); - end; - if result>0 then - result:=ActionStarter(result,lParam,p); -end; - -function ActRunGroup(wParam:WPARAM;lParam:LPARAM):int_ptr;cdecl; -var - i:integer; - p:pHKRecord; -begin - result:=-1; - p:=@GroupList[0]; - for i:=0 to MaxGroups-1 do - begin - if ((p^.flags and ACF_ASSIGNED)<>0) and (StrCmpW(p^.descr,pWideChar(wParam))=0) then - begin - result:=p^.firstAction; - break; - end; - inc(p); - end; - if result>0 then - result:=ActionStarter(result,lParam,p); -end; - -function ActRunParam(wParam:WPARAM;lParam:LPARAM):int_ptr;cdecl; -var - i:integer; - p:pHKRecord; -begin - result:=-1; - p:=@GroupList[0]; - - if (pAct_Param(lParam)^.flags and ACTP_BYNAME)=0 then - begin - for i:=0 to MaxGroups-1 do - begin - if ((p^.flags and ACF_ASSIGNED)<>0) and (p^.id=pAct_Param(lParam)^.Id) then - begin - result:=p^.firstAction; - break; - end; - inc(p); - end; - end - else - begin - for i:=0 to MaxGroups-1 do - begin - if ((p^.flags and ACF_ASSIGNED)<>0) and - (StrCmpW(p^.descr,pWideChar(pAct_Param(lParam)^.Id))=0) then - begin - result:=p^.firstAction; - break; - end; - inc(p); - end; - end; - - if result>0 then - begin - if (pAct_Param(lParam)^.flags and ACTP_WAIT)=0 then - result:=ActionStarter (result,pAct_Param(lParam)^.wParam,p,pAct_Param(lParam)^.lParam) - else - result:=ActionStarterWait(result,pAct_Param(lParam)^.wParam,p,pAct_Param(lParam)^.lParam); - end; -end; diff --git a/plugins/!Deprecated/Actman20/i_vars.inc b/plugins/!Deprecated/Actman20/i_vars.inc deleted file mode 100644 index 4ca6764191..0000000000 --- a/plugins/!Deprecated/Actman20/i_vars.inc +++ /dev/null @@ -1,31 +0,0 @@ -{variables} -type - pHKList = ^tHKList; - tHKList = array [0..1023] of tHKRecord; - pActList = ^tActList; - tActList = array [0..1023] of tHKAction; -const - StructDelim = #7; -const - HKListPage = 8; - ActListPage = 16; -var - MaxGroups :cardinal=0; // current array size - MaxActions:cardinal=0; // current array size -var - GroupList :pHKList =nil; - ActionList:pActList=nil; -var - NoDescription:PWideChar; -var - NewGroupList :pHKList = nil; - NewActionList:pActList = nil; - NewMaxGroups :cardinal; - NewMaxActions:cardinal; -var - xmlfilename:array [0..511] of WideChar; -var - fCLfilter:boolean = true; - fCLformat:pWideChar = nil; -var - ApiCard:tmApiCard; \ No newline at end of file diff --git a/plugins/!Deprecated/Actman20/i_visual.inc b/plugins/!Deprecated/Actman20/i_visual.inc deleted file mode 100644 index ab32488165..0000000000 --- a/plugins/!Deprecated/Actman20/i_visual.inc +++ /dev/null @@ -1,1073 +0,0 @@ -{Dialog visual part, depends of Dialog window} - procedure SHControl(ctrl,mode:dword); - begin - ShowWindow(GetDlgItem(Dialog,ctrl),mode); - end; - - procedure SetupControls(group,mode:dword); - begin - case group of - ACT_CONTACT: begin - SHControl(IDC_STAT_CONTACT,mode); - SHControl(IDC_CONTACTLIST ,mode); - SHControl(IDC_CNT_KEEP ,mode); - SHControl(IDC_CNT_FILTER ,mode); - SHControl(IDC_STAT_FORMAT ,mode); - SHControl(IDC_EDIT_FORMAT ,mode); - SHControl(IDC_CNT_APPLY ,mode); - SHControl(IDC_STAT_FHELP ,mode); - end; - ACT_SERVICE: begin - SHControl(IDC_STAT_WPAR ,mode); - SHControl(IDC_STAT_LPAR ,mode); - SHControl(IDC_STAT_WPAR1 ,mode); - SHControl(IDC_STAT_LPAR1 ,mode); - SHControl(IDC_STAT_SERVICE,mode); - SHControl(IDC_EDIT_SERVICE,mode); - SHControl(IDC_SRV_SRVC ,mode); - SHControl(IDC_FLAG_WPAR ,mode); - SHControl(IDC_FLAG_LPAR ,mode); - - SHControl(IDC_RES_GROUP ,mode); - SHControl(IDC_RES_POPUP ,mode); - SHControl(IDC_RES_MESSAGE ,mode); - SHControl(IDC_RES_INSERT ,mode); - - SHControl(IDC_SRV_RESULT ,mode); - SHControl(IDC_SRV_RESSTAT ,mode); - - if mode=SW_SHOW then - begin -//!! Check parameter type - if CB_GetData(GetDlgItem(Dialog,IDC_FLAG_WPAR))=ptStruct then -// if SendDlgItemMessage(Dialog,IDC_FLAG_WPAR,CB_GETCURSEL,0,0)=ptStruct then - begin - SHControl(IDC_WSTRUCT ,SW_SHOW); - SHControl(IDC_EDIT_WPAR,SW_HIDE); - SHControl(IDC_SRV_WPAR ,SW_HIDE); - end - else - begin - SHControl(IDC_WSTRUCT ,SW_HIDE); - SHControl(IDC_EDIT_WPAR,SW_SHOW); - SHControl(IDC_SRV_WPAR ,SW_SHOW); - end; - if CB_GetData(GetDlgItem(Dialog,IDC_FLAG_LPAR))=ptStruct then -// if SendDlgItemMessage(Dialog,IDC_FLAG_LPAR,CB_GETCURSEL,0,0)=ptStruct then - begin - SHControl(IDC_LSTRUCT ,SW_SHOW); - SHControl(IDC_EDIT_LPAR,SW_HIDE); - SHControl(IDC_SRV_LPAR ,SW_HIDE); - end - else - begin - SHControl(IDC_LSTRUCT ,SW_HIDE); - SHControl(IDC_EDIT_LPAR,SW_SHOW); - SHControl(IDC_SRV_LPAR ,SW_SHOW); - end; - - case CB_GetData(GetDlgItem(Dialog,IDC_SRV_RESULT)) of - sresHex: ; - sresInt: SHControl(IDC_RES_SIGNED,SW_SHOW); - sresString: begin - SHControl(IDC_RES_UNICODE,SW_SHOW); - SHControl(IDC_RES_FREEMEM,SW_SHOW); - end; - sresStruct: ; - end; - - end - else - begin - SHControl(IDC_WSTRUCT ,SW_HIDE); - SHControl(IDC_LSTRUCT ,SW_HIDE); - SHControl(IDC_SRV_WPAR ,SW_HIDE); - SHControl(IDC_SRV_LPAR ,SW_HIDE); - SHControl(IDC_EDIT_WPAR ,SW_HIDE); - SHControl(IDC_EDIT_LPAR ,SW_HIDE); - SHControl(IDC_RES_FREEMEM,SW_HIDE); - SHControl(IDC_RES_UNICODE,SW_HIDE); - SHControl(IDC_RES_SIGNED ,SW_HIDE); - end; - end; - ACT_PROGRAM: begin - SHControl(IDC_PROCESS_GROUP,mode); - SHControl(IDC_PROGRAM ,mode); - SHControl(IDC_EDIT_PROCTIME,mode); - SHControl(IDC_EDIT_PRGPATH ,mode); - SHControl(IDC_PRG_PRG ,mode); - SHControl(IDC_EDIT_PRGARGS ,mode); - SHControl(IDC_PRG_ARG ,mode); - SHControl(IDC_STAT_PROCTIME,mode); - SHControl(IDC_STAT_PRGPATH ,mode); - SHControl(IDC_STAT_PRGARGS ,mode); - - SHControl(IDC_PRSTART_GROUP,mode); - SHControl(IDC_FLAG_NORMAL ,mode); - SHControl(IDC_FLAG_HIDDEN ,mode); - SHControl(IDC_FLAG_MAXIMIZE,mode); - SHControl(IDC_FLAG_MINIMIZE,mode); - - SHControl(IDC_FLAG_CURPATH,mode); - SHControl(IDC_FLAG_CONTINUE,mode); - SHControl(IDC_FLAG_PARALLEL,mode); - - if mode=SW_SHOW then - begin - if isVarsInstalled then - SHControl(IDC_HLP_FVARS,SW_SHOW); - end - else - SHControl(IDC_HLP_FVARS,SW_HIDE); - end; - ACT_TEXT: begin - SHControl(IDC_FLAG_CLIP ,mode); - SHControl(IDC_FLAG_MESSAGE,mode); - SHControl(IDC_CLIP_COPYTO ,mode); - SHControl(IDC_CLIP_PASTE ,mode); - SHControl(IDC_CLIP_GROUP ,mode); - SHControl(IDC_FILE_ENC ,mode); - - SHControl(IDC_FLAG_FILE ,mode); - SHControl(IDC_FILE_PATH ,mode); - SHControl(IDC_TXT_FILE ,mode); - SHControl(IDC_FILE_FILEBTN,mode); - SHControl(IDC_FILE_READ ,mode); - SHControl(IDC_FILE_WRITE ,mode); - SHControl(IDC_FILE_APPEND ,mode); - SHControl(IDC_FILE_GROUP ,mode); - - SHControl(IDC_TXT_TEXT ,mode); - SHControl(IDC_EDIT_INSERT ,mode); - SHControl(IDC_STAT_INSERT ,mode); - - if mode=SW_SHOW then - begin - if isVarsInstalled then - SHControl(IDC_HLP_VARS,SW_SHOW); - end - else - SHControl(IDC_HLP_VARS,SW_HIDE); - end; - ACT_ADVANCE: begin - SHControl(IDC_CONDITION,mode); - SHControl(IDC_FLAG_GT ,mode); - SHControl(IDC_FLAG_LT ,mode); - SHControl(IDC_FLAG_EQ ,mode); - SHControl(IDC_FLAG_NOP ,mode); - SHControl(IDC_FLAG_NOT ,mode); - SHControl(IDC_ADV_VALUE,mode); - SHControl(IDC_STAT_VAL ,mode); - SHControl(IDC_ADV_ASINT,mode); - - SHControl(IDC_OPERATION ,mode); - SHControl(IDC_FLAG_BREAK,mode); - SHControl(IDC_FLAG_JUMP ,mode); - SHControl(IDC_FLAG_ANOP ,mode); - - SHControl(IDC_FLAG_MATH,mode); - SHControl(IDC_ADV_OPER ,mode); - SHControl(IDC_ADV_VAL2 ,mode); - SHControl(IDC_ADV_VAL1 ,mode); - - if mode=SW_SHOW then - begin - if isVarsInstalled then - SHControl(IDC_ADV_HVARS,SW_SHOW); - end - else - SHControl(IDC_ADV_HVARS,SW_HIDE); - SHControl(IDC_FLAG_VARS,mode); - SHControl(IDC_ADV_VARS ,mode); - end; - ACT_CHAIN: begin - SHControl(IDC_STAT_GROUPS,mode); - SHControl(IDC_GROUP_LIST ,mode); - end; - ACT_RW: begin - SHControl(IDC_STAT_CONTACT,mode); - SHControl(IDC_CONTACTLIST ,mode); - - SHControl(IDC_RW_OPER ,mode); - SHControl(IDC_RW_VAL ,mode); - SHControl(IDC_RW_READ ,mode); - SHControl(IDC_RW_WRITE ,mode); - SHControl(IDC_RW_DELETE ,mode); - SHControl(IDC_RW_STATM ,mode); - SHControl(IDC_RW_MODULE ,mode); - SHControl(IDC_RW_STATS ,mode); - SHControl(IDC_RW_SETTING,mode); - SHControl(IDC_RW_TVAR ,mode); - - if mode=SW_SHOW then - begin - if CB_GetData(GetDlgItem(Dialog,IDC_RW_DATATYPE))>2 then - begin - SHControl(IDC_RW_VALUE,SW_HIDE); - SHControl(IDC_RW_TEXT ,SW_SHOW); - end - else - begin - SHControl(IDC_RW_VALUE,SW_SHOW); - SHControl(IDC_RW_TEXT ,SW_HIDE); - end - end - else - begin - SHControl(IDC_RW_VALUE,SW_HIDE); - SHControl(IDC_RW_TEXT ,SW_HIDE); - end; - SHControl(IDC_RW_DATATYPE,mode); - - SHControl(IDC_RW_CURRENT,mode); - SHControl(IDC_RW_PARAM ,mode); - SHControl(IDC_RW_RESULT ,mode); - SHControl(IDC_RW_MANUAL ,mode); - SHControl(IDC_RW_LAST ,mode); - - SHControl(IDC_RW_MVAR ,mode); - SHControl(IDC_RW_SVAR ,mode); - end; - ACT_MESSAGE: begin - SHControl(IDC_MSG_KEEP ,mode); - SHControl(IDC_MSG_STAT1 ,mode); - SHControl(IDC_MSG_STAT2 ,mode); - SHControl(IDC_MSG_TITLE ,mode); - SHControl(IDC_MSG_TEXT ,mode); - SHControl(IDC_MSG_BTNS ,mode); - SHControl(IDC_MSGB_ARI ,mode); - SHControl(IDC_MSGB_OK ,mode); - SHControl(IDC_MSGB_OC ,mode); - SHControl(IDC_MSGB_RC ,mode); - SHControl(IDC_MSGB_YN ,mode); - SHControl(IDC_MSGB_YNC ,mode); - SHControl(IDC_MSG_ICONS ,mode); - SHControl(IDC_MSGI_NONE ,mode); - SHControl(IDC_MSGI_WARN ,mode); - SHControl(IDC_MSGI_INFO ,mode); - SHControl(IDC_MSGI_QUEST,mode); - SHControl(IDC_MSGI_ERROR,mode); - - SHControl(IDC_MSG_TTL ,mode); - SHControl(IDC_MSG_TXT ,mode); - end; - end; - end; - - procedure SetButtonOnOff(ctrl,state:dword); - begin - CheckDlgButton(Dialog,ctrl,state); - case ctrl of - IDC_SRV_WPAR, - IDC_SRV_LPAR, - IDC_SRV_SRVC, - IDC_PRG_PRG , - IDC_PRG_ARG , - IDC_TXT_FILE, - IDC_TXT_TEXT, - IDC_RW_MVAR , - IDC_RW_SVAR , - IDC_RW_TVAR , - IDC_MSG_TTL , - IDC_MSG_TXT : SetButtonIcon(GetDlgItem(Dialog,ctrl),checknames[state]); - end; - end; - - procedure ButtonOff(ctrl:dword); {$IFDEF MSWINDOWS}inline;{$ENDIF} - begin - SetButtonOnOff(ctrl,BST_UNCHECKED); - end; - - procedure ButtonOn(ctrl:dword); {$IFDEF MSWINDOWS}inline;{$ENDIF} - begin - SetButtonOnOff(ctrl,BST_CHECKED); - end; - - procedure TextClear(ctrl:dword); - begin - SetDlgItemTextW(Dialog,ctrl,nil); - end; - - function FixParam(buf:PAnsiChar;flag:integer):integer; - begin - if lstrcmpia(buf,Translate('hContact' ))=0 then result:=ptCurrent - else if lstrcmpia(buf,Translate('parameter'))=0 then result:=ptParam - else if lstrcmpia(buf,Translate('result' ))=0 then result:=ptResult - else if lstrcmpia(buf,Translate('structure'))=0 then result:=ptStruct - else - begin - if (buf[0] in ['0'..'9']) or ((buf[0]='-') and (buf[1] in ['0'..'9'])) or - ((buf[0]='$') and (buf[1] in sHexNum)) then - result:=ptNumber - else - result:=ptString; - end; - - CB_SelectData(Dialog,flag,result); -// SendDlgItemMessage(Dialog,flag,CB_SETCURSEL,result,0); - SendMessage(Dialog,WM_COMMAND,(CBN_SELCHANGE shl 16) or flag,GetDlgItem(Dialog,flag)); - end; - - procedure ReloadService; - var - pc:pAnsiChar; - buf,buf1:array [0..MaxDescrLen] of AnsiChar; - wnd:hwnd; - i:integer; -// bufw:array [0..MaxDescrLen] of WideChar; - begin - wnd:=GetDlgItem(Dialog,IDC_EDIT_SERVICE); - SendMessageA(wnd,CB_GETLBTEXT,SendMessage(wnd,CB_GETCURSEL,0,0),tlparam(@buf)); - ApiCard.Service:=@buf; - - pc:=ApiCard.FillParams(GetDlgItem(Dialog,IDC_EDIT_WPAR),true); - if pc<>nil then - begin - if GetDlgItemTextA(Dialog,IDC_EDIT_WPAR,buf1,SizeOf(buf1))>0 then - case FixParam(@buf1,IDC_FLAG_WPAR) of - ptStruct: begin - mFreeMem(wstruct); - StrDup(wstruct,StrScan(pc,'|')+1); -// AnsiToWide(StrScan(pc,'|')+1,wstruct,MirandaCP); - end; - end; - mFreeMem(pc); - end; - - pc:=ApiCard.FillParams(GetDlgItem(Dialog,IDC_EDIT_LPAR),false); - if pc<>nil then - begin - if GetDlgItemTextA(Dialog,IDC_EDIT_LPAR,buf1,SizeOf(buf1))>0 then - case FixParam(@buf1,IDC_FLAG_LPAR) of - ptStruct: begin - mFreeMem(lstruct); - StrDup(lstruct,StrScan(pc,'|')+1); -// AnsiToWide(StrScan(pc,'|')+1,lstruct,MirandaCP); - end; - end; - mFreeMem(pc); - end; - - pc:=ApiCard.ResultType; - i:=sresInt; - if pc<>nil then - begin - if lstrcmpia(pc,'struct')=0 then i:=sresStruct - else if lstrcmpia(pc,'hex' )=0 then i:=sresHex - else if lstrcmpia(pc,'int')=0 then - begin - i:=sresInt; - ButtonOff(IDC_RES_SIGNED); - end - else if lstrcmpia(pc,'signed')=0 then - begin - i:=sresInt; - ButtonOn(IDC_RES_SIGNED); - end - else if lstrcmpia(pc,'str')=0 then - begin - i:=sresString; - ButtonOff(IDC_RES_UNICODE); - end - else if lstrcmpia(pc,'wide')=0 then - begin - i:=sresString; - ButtonOn(IDC_RES_UNICODE); - end; - mFreeMem(pc); - end; - CB_SelectData(Dialog,IDC_SRV_RESULT,i); - -// ApiCard.Show; - end; - - procedure SelectActionType(group:dword); - var - i:integer; - begin - for i:=0 to ACT_MAXTYPE-1 do - if ActIds[i].code=group then break; - SendDlgItemMessage(Dialog,IDC_ACTION_TYPE,CB_SETCURSEL,i,0); - end; - - procedure ClearControls(group:dword); - begin -//! SelectActionType(group); - case group of - ACT_CONTACT: begin - EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),true); - SendDlgItemMessage(Dialog,IDC_CONTACTLIST,CB_SETCURSEL,0,0); - ButtonOff(IDC_CNT_KEEP); - ButtonOff(IDC_CNT_FILTER); - TextClear(IDC_EDIT_FORMAT); - end; - ACT_SERVICE: begin - TextClear(IDC_EDIT_SERVICE); - TextClear(IDC_EDIT_WPAR); - TextClear(IDC_EDIT_LPAR); - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_WPAR),true); - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_LPAR),true); -// SendDlgItemMessage(Dialog,IDC_FLAG_WPAR,CB_SETCURSEL,0,0); -// SendDlgItemMessage(Dialog,IDC_FLAG_LPAR,CB_SETCURSEL,0,0); - CB_SelectData(GetDlgItem(Dialog,IDC_FLAG_WPAR),ptNumber); - CB_SelectData(GetDlgItem(Dialog,IDC_FLAG_LPAR),ptNumber); - - CB_SelectData(GetDlgItem(Dialog,IDC_SRV_RESULT),sresInt); - - SendMessage(GetDlgItem(Dialog,IDC_EDIT_WPAR),CB_RESETCONTENT,0,0); - SendMessage(GetDlgItem(Dialog,IDC_EDIT_LPAR),CB_RESETCONTENT,0,0); - - ButtonOff(IDC_RES_POPUP); - ButtonOff(IDC_RES_MESSAGE); - ButtonOff(IDC_RES_INSERT); - - ButtonOff(IDC_RES_FREEMEM); - ButtonOff(IDC_RES_UNICODE); - ButtonOff(IDC_RES_SIGNED); - - ButtonOff(IDC_SRV_WPAR); - ButtonOff(IDC_SRV_LPAR); - ButtonOff(IDC_SRV_SRVC); - end; - ACT_PROGRAM: begin - TextClear(IDC_EDIT_PROCTIME); - TextClear(IDC_EDIT_PRGPATH); - TextClear(IDC_EDIT_PRGARGS); - - ButtonOff(IDC_FLAG_NORMAL); - ButtonOff(IDC_FLAG_HIDDEN); - ButtonOff(IDC_FLAG_MINIMIZE); - ButtonOff(IDC_FLAG_MAXIMIZE); - - ButtonOff(IDC_FLAG_CURPATH); - ButtonOff(IDC_FLAG_CONTINUE); - ButtonOff(IDC_FLAG_PARALLEL); - - ButtonOff(IDC_PRG_PRG); - ButtonOff(IDC_PRG_ARG); - end; - ACT_TEXT: begin - ButtonOff(IDC_FLAG_CLIP); - ButtonOff(IDC_FLAG_MESSAGE); - ButtonOff(IDC_CLIP_COPYTO); - ButtonOff(IDC_CLIP_PASTE); - - ButtonOff(IDC_FLAG_FILE); - TextClear(IDC_FILE_PATH); - ButtonOff(IDC_FILE_READ); - ButtonOff(IDC_FILE_WRITE); - ButtonOff(IDC_FILE_APPEND); - - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_INSERT ),false); - EnableWindow(GetDlgItem(Dialog,IDC_CLIP_COPYTO ),false); - EnableWindow(GetDlgItem(Dialog,IDC_CLIP_PASTE ),false); - - EnableWindow(GetDlgItem(Dialog,IDC_FILE_ENC ),false); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_PATH ),false); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_FILEBTN),false); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_READ ),false); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_WRITE ),false); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_APPEND ),false); - - TextClear(IDC_EDIT_INSERT); - - ButtonOff(IDC_TXT_FILE); - ButtonOff(IDC_TXT_TEXT); - end; - ACT_ADVANCE: begin - ButtonOff(IDC_FLAG_GT); - ButtonOff(IDC_FLAG_LT); - ButtonOff(IDC_FLAG_EQ); - ButtonOff(IDC_FLAG_NOP); - ButtonOff(IDC_FLAG_NOT); - TextClear(IDC_ADV_VALUE); - - ButtonOff(IDC_FLAG_BREAK); - ButtonOff(IDC_FLAG_JUMP); - ButtonOff(IDC_FLAG_ANOP); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL2),false); - - ButtonOff(IDC_FLAG_MATH); - SendDlgItemMessage(Dialog,IDC_ADV_OPER,CB_SETCURSEL,0,0); - TextClear(IDC_ADV_VAL1); - ButtonOff(IDC_ADV_ASINT); - - EnableWindow(GetDlgItem(Dialog,IDC_ADV_OPER),false); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL1),false); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VARS),false); - - ButtonOff(IDC_FLAG_VARS); - TextClear(IDC_ADV_VARS); - end; - ACT_CHAIN: begin -// FillChainList(Dialog); - SendDlgItemMessage(Dialog,IDC_GROUP_LIST,CB_SETCURSEL,0,0); - end; - ACT_RW: begin - ButtonOff(IDC_RW_READ); - ButtonOff(IDC_RW_WRITE); - ButtonOff(IDC_RW_DELETE); - SendDlgItemMessage(Dialog,IDC_CONTACTLIST,CB_SETCURSEL,0,0); - EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),true); - TextClear(IDC_CONTACTLIST); - TextClear(IDC_RW_MODULE); - TextClear(IDC_RW_SETTING); - TextClear(IDC_RW_VALUE); - TextClear(IDC_RW_TEXT); - - ButtonOff(IDC_RW_CURRENT); - ButtonOff(IDC_RW_PARAM); - ButtonOff(IDC_RW_RESULT); - ButtonOff(IDC_RW_MANUAL); - ButtonOff(IDC_RW_LAST); - - ButtonOff(IDC_RW_MVAR); - ButtonOff(IDC_RW_SVAR); - ButtonOff(IDC_RW_TVAR); - end; - ACT_MESSAGE: begin - TextClear(IDC_MSG_TITLE); - TextClear(IDC_MSG_TEXT); - ButtonOff(IDC_MSG_KEEP); - ButtonOff(IDC_MSGB_OK); - ButtonOff(IDC_MSGB_OC); - ButtonOff(IDC_MSGB_ARI); - ButtonOff(IDC_MSGB_YNC); - ButtonOff(IDC_MSGB_YN); - ButtonOff(IDC_MSGB_RC); - ButtonOff(IDC_MSGI_NONE); - ButtonOff(IDC_MSGI_ERROR); - ButtonOff(IDC_MSGI_QUEST); - ButtonOff(IDC_MSGI_WARN); - ButtonOff(IDC_MSGI_INFO); - - ButtonOff(IDC_MSG_TTL); - ButtonOff(IDC_MSG_TXT); - end; - end; - end; - - procedure ClearDialogData; - begin - ClearControls(ACT_CONTACT); - ClearControls(ACT_SERVICE); - ClearControls(ACT_PROGRAM); - ClearControls(ACT_TEXT); - ClearControls(ACT_ADVANCE); - ClearControls(ACT_CHAIN); - ClearControls(ACT_RW); - ClearControls(ACT_MESSAGE); - mFreeMem(wstruct); - mFreeMem(lstruct); - end; - - procedure SHWindows(exclude:dword=0); - begin - SetupControls(ACT_CONTACT,SW_HIDE); - SetupControls(ACT_SERVICE,SW_HIDE); - SetupControls(ACT_PROGRAM,SW_HIDE); - SetupControls(ACT_TEXT ,SW_HIDE); - SetupControls(ACT_ADVANCE,SW_HIDE); - SetupControls(ACT_CHAIN ,SW_HIDE); - SetupControls(ACT_RW ,SW_HIDE); - SetupControls(ACT_MESSAGE,SW_HIDE); -{ - if exclude<>ACT_CONTACT then SetupControls(ACT_CONTACT,SW_HIDE); - if exclude<>ACT_SERVICE then SetupControls(ACT_SERVICE,SW_HIDE); - if exclude<>ACT_PROGRAM then SetupControls(ACT_PROGRAM,SW_HIDE); - if exclude<>ACT_TEXT then SetupControls(ACT_TEXT ,SW_HIDE); - if exclude<>ACT_ADVANCE then SetupControls(ACT_ADVANCE,SW_HIDE); - if exclude<>ACT_CHAIN then SetupControls(ACT_CHAIN ,SW_HIDE); - if exclude<>ACT_RW then SetupControls(ACT_RW ,SW_HIDE); -} - case exclude of - ACT_CONTACT, - ACT_SERVICE, - ACT_PROGRAM, - ACT_TEXT , - ACT_ADVANCE, - ACT_CHAIN , - ACT_RW , - ACT_MESSAGE: begin - SetupControls(exclude,SW_SHOW); - end; - end; - end; - - procedure SHActButtons(mode:integer); - begin - ShowWindow(GetDlgItem(Dialog,IDC_STAT_ACTION),mode); - ShowWindow(GetDlgItem(Dialog,IDC_ACTION_TYPE),mode); - end; - - procedure InitDef(exclude:dword=0); - begin - if exclude<>ACT_CONTACT then - begin - ButtonOn(IDC_CNT_FILTER); - // do nothing - end; - if exclude<>ACT_SERVICE then - begin - CB_SelectData(Dialog,IDC_SRV_RESULT,sresInt); - end; - if exclude<>ACT_PROGRAM then - begin - ButtonOn(IDC_FLAG_PARALLEL); - ButtonOn(IDC_FLAG_NORMAL); - SetDlgItemInt(Dialog,IDC_EDIT_PROCTIME,0,false); - end; - if exclude<>ACT_TEXT then - begin - ButtonOn(IDC_FLAG_CLIP); - EnableWindow(GetDlgItem(Dialog,IDC_CLIP_COPYTO),true); - EnableWindow(GetDlgItem(Dialog,IDC_CLIP_PASTE ),true); - ButtonOn(IDC_CLIP_COPYTO); - - ButtonOn(IDC_FILE_READ); - // do nothing - end; - if exclude<>ACT_ADVANCE then - begin - ButtonOn(IDC_FLAG_NOP); - ButtonOn(IDC_FLAG_ANOP); - SetDlgItemInt(Dialog,IDC_ADV_VALUE,0,false); - SetDlgItemInt(Dialog,IDC_ADV_VAL1 ,0,false); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL1),false); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL2),false); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_OPER),false); -// SendDlgItemMessage(Dialog,IDC_ADV_OPER,CB_SETCURSEL,0,0); - CB_SelectData(Dialog,IDC_ADV_OPER,ORD(aeNot)); - end; - if exclude<>ACT_CHAIN then - begin -// FillChainList(Dialog); - SendDlgItemMessage(Dialog,IDC_GROUP_LIST,CB_SETCURSEL,0,0); - end; - if exclude<>ACT_RW then - begin - ButtonOn(IDC_RW_READ); - SetDlgItemInt(Dialog,IDC_RW_VALUE,0,false); - ButtonOn(IDC_RW_MANUAL); - EnableWindow(GetDlgItem(Dialog,IDC_RW_VALUE),true); - EnableWindow(GetDlgItem(Dialog,IDC_RW_TEXT ),true); - end; - if exclude<>ACT_MESSAGE then - begin - ButtonOn(IDC_MSGB_OK); - ButtonOn(IDC_MSGI_NONE); - end; - end; - - // set buttons by options - procedure FillAction(CurAction:integer); - var - i:integer; - bb:boolean; - wnd:HWND; - begin - with NewActionList^[CurAction] do - begin - if (flags and ACF_ASSIGNED)=0 then - exit; - if actionType=0 then - actionType:=ACT_CONTACT; - - InitDef(actionType); - SelectActionType(actionType); - case actionType of - - ACT_CONTACT: begin - if (flags and ACF_KEEPONLY)<>0 then - ButtonOn(IDC_CNT_KEEP); - if fCLfilter then - ButtonOn(IDC_CNT_FILTER); - SetDlgItemTextW(Dialog,IDC_EDIT_FORMAT,fCLformat); - - SendDlgItemMessage(Dialog,IDC_CONTACTLIST,CB_SETCURSEL, - FindContact(GetDlgItem(Dialog,IDC_CONTACTLIST),contact),0); - end; - - ACT_SERVICE: begin - if SendDlgItemMessageA(Dialog,IDC_EDIT_SERVICE,CB_SELECTSTRING,twparam(-1),tlparam(service))<>CB_ERR then - ReloadService - else - SetDlgItemTextA(Dialog,IDC_EDIT_SERVICE,service); - - if (flags2 and ACF2_SRV_WPAR)<>0 then ButtonOn(IDC_SRV_WPAR); - if (flags2 and ACF2_SRV_LPAR)<>0 then ButtonOn(IDC_SRV_LPAR); - if (flags2 and ACF2_SRV_SRVC)<>0 then ButtonOn(IDC_SRV_SRVC); - - if (flags and ACF_MESSAGE)<>0 then ButtonOn(IDC_RES_MESSAGE); - if (flags and ACF_POPUP )<>0 then ButtonOn(IDC_RES_POPUP); - if (flags and ACF_INSERT )<>0 then ButtonOn(IDC_RES_INSERT); - - if (flags and ACF_HEX)<>0 then - i:=sresHex - else if (flags and ACF_STRUCT)<>0 then - i:=sresStruct - else if (flags and ACF_STRING)<>0 then - begin - i:=sresString; - if (flags and ACF_UNICODE )<>0 then ButtonOn(IDC_RES_UNICODE); - if (flags2 and ACF2_FREEMEM)<>0 then ButtonOn(IDC_RES_FREEMEM); - end - else - begin - i:=sresInt; - if (flags and ACF_SIGNED)<>0 then - ButtonOn(IDC_RES_SIGNED); - end; - CB_SelectData(Dialog,IDC_SRV_RESULT,i); - - if (flags and ACF_WPARAM)<>0 then - begin - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_WPAR),false); - i:=ptParam; - end - else if (flags and ACF_WRESULT)<>0 then - begin - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_WPAR),false); - i:=ptResult; - end - else if (flags and ACF_WPARNUM)<>0 then - begin - if (flags and ACF_WCURRENT)<>0 then - begin - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_WPAR),false); - i:=ptCurrent - end - else - begin - i:=ptNumber; - SetNumValue(GetDlgItem(Dialog,IDC_EDIT_WPAR),wparam, - (flags2 and ACF2_SRV_WPAR)<>0, - (flags2 and ACF2_SRV_WHEX)<>0); -// SetDlgItemInt(Dialog,IDC_EDIT_WPAR,wparam,true) - end; - end - else if (flags and ACF_WSTRUCT)<>0 then - begin - i:=ptStruct; - SHControl(IDC_EDIT_WPAR,SW_HIDE); - SHControl(IDC_WSTRUCT ,SW_SHOW); - mFreeMem(wstruct); - StrDup(wstruct,PAnsiChar(wparam)); - end - else if (flags and ACF_WUNICODE)<>0 then - begin - i:=ptUnicode; - SetDlgItemTextW(Dialog,IDC_EDIT_WPAR,pWideChar(wparam)); - end - else - begin - i:=ptString; - SetDlgItemTextA(Dialog,IDC_EDIT_WPAR,PAnsiChar(wparam)); - end; - CB_SelectData(GetDlgItem(Dialog,IDC_FLAG_WPAR),i); - SendDlgItemMessage(Dialog,IDC_FLAG_WPAR,CB_SETCURSEL,i,0); - - if (flags and ACF_LPARAM)<>0 then - begin - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_LPAR),false); - i:=ptParam; - end - else if (flags and ACF_LRESULT)<>0 then - begin - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_LPAR),false); - i:=ptResult; - end - else if (flags and ACF_LPARNUM)<>0 then - begin - if (flags and ACF_LCURRENT)<>0 then - begin - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_LPAR),false); - i:=ptCurrent; - end - else - begin - i:=ptNumber; - SetNumValue(GetDlgItem(Dialog,IDC_EDIT_LPAR),lparam, - (flags2 and ACF2_SRV_LPAR)<>0, - (flags2 and ACF2_SRV_LHEX)<>0); -// SetDlgItemInt(Dialog,IDC_EDIT_LPAR,lparam,true) - end; - end - else if (flags and ACF_LSTRUCT)<>0 then - begin - i:=ptStruct; - SHControl(IDC_EDIT_LPAR,SW_HIDE); - SHControl(IDC_LSTRUCT ,SW_SHOW); - mFreeMem(lstruct); - StrDup(lstruct,PAnsiChar(lparam)); - end - else if (flags and ACF_LUNICODE)<>0 then - begin - i:=ptUnicode; - SetDlgItemTextW(Dialog,IDC_EDIT_LPAR,pWideChar(lparam)); - end - else - begin - i:=ptString; - SetDlgItemTextA(Dialog,IDC_EDIT_LPAR,PAnsiChar(lparam)); - end; - CB_SelectData(GetDlgItem(Dialog,IDC_FLAG_LPAR),i); - - end; - - ACT_PROGRAM: begin - if (flags2 and ACF2_PRG_PRG)<>0 then - ButtonOn(IDC_PRG_PRG); - if (flags2 and ACF2_PRG_ARG)<>0 then - ButtonOn(IDC_PRG_ARG); - - SetDlgItemTextW(Dialog,IDC_EDIT_PRGPATH ,prgname); - SetDlgItemTextW(Dialog,IDC_EDIT_PRGARGS ,args); - SetDlgItemInt (Dialog,IDC_EDIT_PROCTIME,time,false); - case show of - SW_HIDE : ButtonOn(IDC_FLAG_HIDDEN); - SW_SHOWMINIMIZED: ButtonOn(IDC_FLAG_MINIMIZE); - SW_SHOWMAXIMIZED: ButtonOn(IDC_FLAG_MAXIMIZE); - else - {SW_SHOWNORMAL :} ButtonOn(IDC_FLAG_NORMAL); - end; - if (flags and ACF_CURPATH)<>0 then - ButtonOn(IDC_FLAG_CURPATH); - if (flags and ACF_PRTHREAD)<>0 then - ButtonOn(IDC_FLAG_PARALLEL) - else - ButtonOn(IDC_FLAG_CONTINUE); - - end; - - ACT_TEXT: begin - if (flags and ACF_CLIPBRD)<>0 then - begin - ButtonOn(IDC_FLAG_CLIP); - EnableWindow(GetDlgItem(Dialog,IDC_CLIP_COPYTO),true); - EnableWindow(GetDlgItem(Dialog,IDC_CLIP_PASTE ),true); - if (flags and ACF_COPYTO)<>0 then - ButtonOn(IDC_CLIP_COPYTO) - else - ButtonOn(IDC_CLIP_PASTE); -// for switches - ButtonOn(IDC_FILE_READ); - end - - else - begin - if (flags and (ACF_FILE or ACF_FAPPEND or ACF_FWRITE))<>ACF_FILE then - EnableWindow(GetDlgItem(Dialog,IDC_EDIT_INSERT),true); - SetDlgItemTextW(Dialog,IDC_EDIT_INSERT,text); -// for switches - ButtonOn(IDC_CLIP_COPYTO); - - if (flags2 and ACF2_TXT_TEXT)<>0 then - ButtonOn(IDC_TXT_TEXT); - - if (flags and ACF_FILE)<>0 then - begin - if (flags2 and ACF2_TXT_FILE)<>0 then - ButtonOn(IDC_TXT_FILE); - ButtonOn(IDC_FLAG_FILE); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_PATH ),true); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_FILEBTN),true); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_READ ),true); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_WRITE ),true); - EnableWindow(GetDlgItem(Dialog,IDC_FILE_APPEND ),true); - - wnd:=GetDlgItem(Dialog,IDC_FILE_ENC); - EnableWindow(wnd,true); - if (flags and ACF_ANSI)<>0 then - CB_SelectData(wnd,0) - else if (flags and ACF_UTF8)<>0 then - begin - if (flags and ACF_SIGN)<>0 then - CB_SelectData(wnd,2) - else - CB_SelectData(wnd,1); - end - else if (flags and ACF_SIGN)<>0 then - CB_SelectData(wnd,4) - else - CB_SelectData(wnd,3); - - if (flags and ACF_FAPPEND)<>0 then ButtonOn(IDC_FILE_APPEND) - else if (flags and ACF_FWRITE )<>0 then ButtonOn(IDC_FILE_WRITE) - else ButtonOn(IDC_FILE_READ); - SetDlgItemTextW(Dialog,IDC_FILE_PATH,tfile); - end - else - begin - ButtonOn(IDC_FLAG_MESSAGE); -// for switches - ButtonOn(IDC_FILE_READ); - end; - end; - - end; - - ACT_ADVANCE: begin - FillSubList(Dialog); -// SendDlgItemMessage(Dialog,IDC_ADV_VAL2,CB_SETCURSEL,0,0); - - case condition and not ADV_COND_NOT of - ADV_COND_GT: ButtonOn(IDC_FLAG_GT); - ADV_COND_LT: ButtonOn(IDC_FLAG_LT); - ADV_COND_EQ: ButtonOn(IDC_FLAG_EQ); - else // ADV_COND_NOP - ButtonOn(IDC_FLAG_NOP); - end; - SetDlgItemInt(Dialog,IDC_ADV_VALUE,value,false); - if (condition and ADV_COND_NOT)<>0 then - ButtonOn(IDC_FLAG_NOT); - - SetDlgItemInt(Dialog,IDC_ADV_VAL1,mathval,true); - case action and ADV_ACTION of - ADV_ACT_MATH: begin - ButtonOn(IDC_FLAG_MATH); - CB_SelectData(GetDlgItem(Dialog,IDC_ADV_OPER),oper); -// SendDlgItemMessage(Dialog,IDC_ADV_OPER,CB_SETCURSEL,oper,0); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL1),true); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_OPER),true); - end; - ADV_ACT_VARS: begin - ButtonOn(IDC_FLAG_VARS); - if (flags and ACF_VARASINT)<>0 then - ButtonOn(IDC_ADV_ASINT); - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VARS),true); - SetDlgItemTextW(Dialog,IDC_ADV_VARS,varval); - end; - end; - bb:=false; - case action and ADV_ACT_POST of - ADV_ACT_BREAK: ButtonOn(IDC_FLAG_BREAK); - ADV_ACT_JUMP : begin - SendDlgItemMessageW(Dialog,IDC_ADV_VAL2,CB_SELECTSTRING,twparam(-1),tlparam(operval)); - ButtonOn(IDC_FLAG_JUMP); - bb:=true; - end; - else // ADV_ACT_NOP - ButtonOn(IDC_FLAG_ANOP); - end; - EnableWindow(GetDlgItem(Dialog,IDC_ADV_VAL2),bb); - end; - - ACT_CHAIN: begin -// FillChainList(Dialog); - if (flags and ACF_BYNAME)<>0 then - SendDlgItemMessageW(Dialog,IDC_GROUP_LIST,CB_SELECTSTRING,twparam(-1),tlparam(actname)) - else - SendDlgItemMessageW(Dialog,IDC_GROUP_LIST,CB_SELECTSTRING,twparam(-1),tlparam(GetGroupName(id))); - end; - - ACT_RW: begin - if (flags and ACF_DBDELETE)<>0 then ButtonOn(IDC_RW_DELETE) - else if (flags and ACF_DBWRITE )= 0 then ButtonOn(IDC_RW_READ) - else ButtonOn(IDC_RW_WRITE); - - bb:=false; - if (flags and ACF_CURRENT)<>0 then - begin - ButtonOn(IDC_RW_CURRENT); - EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),false); - end - else if (flags and ACF_PARAM)<>0 then - begin - ButtonOn(IDC_RW_PARAM); - EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),false); - end - else if (flags and ACF_RESULT)<>0 then - begin - ButtonOn(IDC_RW_RESULT); - EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),false); - end - else - begin - ButtonOn(IDC_RW_MANUAL); - bb:=true; - EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),true); - SendDlgItemMessage(Dialog,IDC_CONTACTLIST,CB_SETCURSEL, - FindContact(GetDlgItem(Dialog,IDC_CONTACTLIST),dbcontact),0); - end; - EnableWindow(GetDlgItem(Dialog,IDC_CONTACTLIST),bb); - - if (flags and ACF_LAST)<>0 then - begin - ButtonOn(IDC_RW_LAST); - bb:=false; - end - else - bb:=true; - if (flags and ACF_DBDELETE)<>0 then - bb:=false; - - EnableWindow(GetDlgItem(Dialog,IDC_RW_VALUE),bb); - EnableWindow(GetDlgItem(Dialog,IDC_RW_TEXT ),bb); - - SetDlgItemTextA(Dialog,IDC_RW_MODULE ,dbmodule); - SetDlgItemTextA(Dialog,IDC_RW_SETTING,dbsetting); - if (flags2 and ACF2_RW_MVAR)<>0 then ButtonOn(IDC_RW_MVAR); - if (flags2 and ACF2_RW_SVAR)<>0 then ButtonOn(IDC_RW_SVAR); - if (flags2 and ACF2_RW_TVAR)<>0 then ButtonOn(IDC_RW_TVAR); - - - wnd:=GetDlgItem(Dialog,IDC_RW_DATATYPE); - if ((flags and ACF_DBANSI )=ACF_DBANSI) or - ((flags and ACF_DBUTEXT)=ACF_DBUTEXT) then - begin - SHControl(IDC_RW_TEXT ,SW_SHOW); - SHControl(IDC_RW_VALUE,SW_HIDE); - if (flags and ACF_DBANSI)=ACF_DBANSI then - CB_SelectData(wnd,3) - else - CB_SelectData(wnd,4); - SetDlgItemTextW(Dialog,IDC_RW_TEXT,pWideChar(dbvalue)); - end - else - begin - if (flags and ACF_DBBYTE)=ACF_DBBYTE then - CB_SelectData(wnd,0) - else if (flags and ACF_DBWORD)=ACF_DBWORD then - CB_SelectData(wnd,1) - else - CB_SelectData(wnd,2); - SHControl(IDC_RW_TEXT ,SW_HIDE); - SHControl(IDC_RW_VALUE,SW_SHOW); - - SetNumValue(GetDlgItem(Dialog,IDC_RW_VALUE),dbvalue, - (flags2 and ACF2_RW_TVAR)<>0, - (flags2 and ACF2_RW_HEX )<>0); - end; - - end; - - ACT_MESSAGE: begin - SetDlgItemTextW(Dialog,IDC_MSG_TITLE,msgtitle); - SetDlgItemTextW(Dialog,IDC_MSG_TEXT ,msgtext); - if (flags2 and ACF2_MSG_TTL)<>0 then ButtonOn(IDC_MSG_TTL); - if (flags2 and ACF2_MSG_TXT)<>0 then ButtonOn(IDC_MSG_TXT); - if (flags and ACF_MSG_KEEP)<>0 then ButtonOn(IDC_MSG_KEEP); - - case boxopts and $0F of - 1: ButtonOn(IDC_MSGB_OC); - 2: ButtonOn(IDC_MSGB_ARI); - 3: ButtonOn(IDC_MSGB_YNC); - 4: ButtonOn(IDC_MSGB_YN); - 5: ButtonOn(IDC_MSGB_RC); - else - ButtonOn(IDC_MSGB_OK); - end; - case boxopts and $F0 of - $10: ButtonOn(IDC_MSGI_ERROR); - $20: ButtonOn(IDC_MSGI_QUEST); - $30: ButtonOn(IDC_MSGI_WARN); - $40: ButtonOn(IDC_MSGI_INFO); - else - ButtonOn(IDC_MSGI_NONE); - end; - end; - end; - SHWindows(actionType); - end; - end; diff --git a/plugins/!Deprecated/Actman20/ico/advance.ico b/plugins/!Deprecated/Actman20/ico/advance.ico deleted file mode 100644 index 6cc054ccc3..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/advance.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/apply.ico b/plugins/!Deprecated/Actman20/ico/apply.ico deleted file mode 100644 index 27def2fb4b..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/apply.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/chain.ico b/plugins/!Deprecated/Actman20/ico/chain.ico deleted file mode 100644 index d3a9c9b59c..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/chain.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/contact.ico b/plugins/!Deprecated/Actman20/ico/contact.ico deleted file mode 100644 index 5f06f02312..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/contact.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/delete.ico b/plugins/!Deprecated/Actman20/ico/delete.ico deleted file mode 100644 index 3770daf2fc..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/delete.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/down.ico b/plugins/!Deprecated/Actman20/ico/down.ico deleted file mode 100644 index 79ec3929df..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/down.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/export.ico b/plugins/!Deprecated/Actman20/ico/export.ico deleted file mode 100644 index 7c6b07c71a..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/export.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/format.ico b/plugins/!Deprecated/Actman20/ico/format.ico deleted file mode 100644 index 7c6b07c71a..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/format.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/import.ico b/plugins/!Deprecated/Actman20/ico/import.ico deleted file mode 100644 index a3d5232741..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/import.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/insert.ico b/plugins/!Deprecated/Actman20/ico/insert.ico deleted file mode 100644 index a3d5232741..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/insert.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/message.ico b/plugins/!Deprecated/Actman20/ico/message.ico deleted file mode 100644 index 6cc054ccc3..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/message.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/new.ico b/plugins/!Deprecated/Actman20/ico/new.ico deleted file mode 100644 index fcfa03a6ad..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/new.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/program.ico b/plugins/!Deprecated/Actman20/ico/program.ico deleted file mode 100644 index 0ce8a9a24d..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/program.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/reload.ico b/plugins/!Deprecated/Actman20/ico/reload.ico deleted file mode 100644 index feadf04bf2..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/reload.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/rw.ico b/plugins/!Deprecated/Actman20/ico/rw.ico deleted file mode 100644 index df5cd0f6c7..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/rw.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/service.ico b/plugins/!Deprecated/Actman20/ico/service.ico deleted file mode 100644 index 7c6b07c71a..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/service.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/test.ico b/plugins/!Deprecated/Actman20/ico/test.ico deleted file mode 100644 index 06db21a127..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/test.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/up.ico b/plugins/!Deprecated/Actman20/ico/up.ico deleted file mode 100644 index 6efc4d7257..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/up.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/vcheck.ico b/plugins/!Deprecated/Actman20/ico/vcheck.ico deleted file mode 100644 index d7c042119c..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/vcheck.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ico/vuncheck.ico b/plugins/!Deprecated/Actman20/ico/vuncheck.ico deleted file mode 100644 index 05c93a1281..0000000000 Binary files a/plugins/!Deprecated/Actman20/ico/vuncheck.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/m_actions.inc b/plugins/!Deprecated/Actman20/m_actions.inc deleted file mode 100644 index 7600d0dcdf..0000000000 --- a/plugins/!Deprecated/Actman20/m_actions.inc +++ /dev/null @@ -1,193 +0,0 @@ -// defined in interfaces.inc -//const MIID_ACTMANAGER:MUUID='{9584DA04-FB4F-40c1-9325-E4F9CAAFCB5D}'; - -// hotkey and action (common) flags -const - ACF_DISABLED = $10000000; // action disabled - ACF_USEDNOW = $20000000; // action in use (reserved) - ACF_DOBREAK = $40000000; // special, make break; - ACF_ASSIGNED = $80000000; // action assigned - ACF_EXPORT = $08000000; // action to export - ACF_IMPORT = ACF_EXPORT; // imported - ACF_VOLATILE = $04000000; // don't save in DB - ACF_PARALLEL = $02000000; // parallel action work (no wait thread) - ACF_OVERLOAD = $01000000; // imported action overwrite old - -// action flags -const - // ACT_CONTACT - ACF_KEEPONLY = $00000001; // keep contact handle in Last, don't show window - - // ACT_SERVICE - ACF_WPARNUM = $00000001; // wParam is number - ACF_LPARNUM = $00000002; // lParam is number - ACF_WUNICODE = $00000004; // wParam is Unicode string - ACF_LUNICODE = $00000008; // lParam is Unicode string - ACF_WCURRENT = $00000010; // wParam is ignored, used current user handle - // from current message window - ACF_LCURRENT = $00000020; // lParam is ignored, used current user handle - // from current message window - ACF_WPARHEX = $00000040; //!! Show as hex - ACF_LPARHEX = $00000080; //!! Show as hex - - ACF_WRESULT = $00010000; // wParam is previous action result - ACF_LRESULT = $00020000; // lParam is previous action result - ACF_WPARAM = $00040000; // wParam is Call parameter - ACF_LPARAM = $00080000; // lParam is Call parameter - ACF_WSTRUCT = $00100000; - ACF_LSTRUCT = $00200000; - ACF_WPARTYPE = ACF_WPARNUM or ACF_WUNICODE or ACF_WCURRENT or ACF_WPARAM or ACF_WSTRUCT; - ACF_LPARTYPE = ACF_LPARNUM or ACF_LUNICODE or ACF_LCURRENT or ACF_LPARAM or ACF_LSTRUCT; - - ACF_INSERT = $00000100; // Insert result in message - ACF_MESSAGE = $00000200; // Show service result as message - ACF_POPUP = $00000400; // Show service result as popup - ACF_STRING = $00000800; // Service result is string - ACF_UNICODE = $00001000; // Service result is Widestring - ACF_HEX = $00002000; // Result as Hex - ACF_SIGNED = $00004000; // Result as signed value -//!! - ACF_STRUCT = $00008000; // Service result in structure - - // ACT_TEXT - ACF_CLIPBRD = $00000002; // Clipboard operations, not window - ACF_ANSI = $00000004; // File: ANSI or Unicode (UTF8/UTF16) text - ACF_COPYTO = $00000008; // Clipboard operations: 'copy to' or 'paste from' - - ACF_FILE = $00000010; // File operations - ACF_FWRITE = $00000020; // read/write file - ACF_FAPPEND = $00000040; // append file - - ACF_UTF8 = $00000080; // File: UTF8 or UTF16 - ACF_SIGN = $00000100; // File: with signature or not - - // ACT_PROGRAM - ACF_CURPATH = $00000002; // Current (not program) path - ACF_PRTHREAD = $00000004; // parallel Program - - // ACT_ADVANCED - ACF_VARASINT = $00000001; // if variables script, translate to int - - // ACT_DBRW - ACF_DBWRITE = $00000001; // write to (not read from) DB - ACF_DBBYTE = $00000002; // read/write byte (def. dword) - ACF_DBWORD = $00000004; // read/write word (def. dword) - ACF_PARAM = $00000008; // hContact from parameter - ACF_CURRENT = $00000010; // hContact is 0 (user settings) - ACF_RESULT = $00000020; // hContact is last result value - ACF_LAST = $00000040; // use last result for DB writing - ACF_DBUTEXT = $00000080; // read/write Unicode string - ACF_DBANSI = $00000082; // read/write ANSI string - ACF_DBDELETE = $00000100; // delete setting - ACF_NOCNTCT = ACF_PARAM or ACF_CURRENT or ACF_RESULT; - - // ACT_CHAIN - ACF_BYNAME = $00000001; // Address action link by name, not Id - - // ACT_MESSAGE - ACF_MSG_KEEP = $00000001; // Keep past 'last result' - -const - // Variables use - ACF2_SRV_WPAR = $00000001; - ACF2_SRV_LPAR = $00000002; - ACF2_SRV_SRVC = $00000004; - ACF2_SRV_WHEX = $00000008; - ACF2_SRV_LHEX = $00000010; - ACF2_PRG_PRG = $00000001; - ACF2_PRG_ARG = $00000002; - ACF2_TXT_FILE = $00000001; - ACF2_TXT_TEXT = $00000002; - ACF2_RW_MVAR = $00000001; - ACF2_RW_SVAR = $00000002; - ACF2_RW_TVAR = $00000004; - ACF2_RW_HEX = $00000008; - ACF2_MSG_TTL = $00000001; - ACF2_MSG_TXT = $00000002; - - ACF2_FREEMEM = $00000100; - -const - ADV_COND_NOP = 0; - ADV_COND_GT = 1; - ADV_COND_LT = 2; - ADV_COND_EQ = 3; - ADV_COND_NOT = $80; - - ADV_ACT_NOP = 0; // two lower bits $03 mask - ADV_ACT_BREAK = 1; - ADV_ACT_JUMP = 2; - - ADV_ACT_POST = $0F; - - ADV_ACT_MATH = $10; // bit masks - ADV_ACT_VARS = $20; - - ADV_ACTION = $F0; - -const - ACT_UNKNOWN = 0; - ACT_CONTACT = 1; - ACT_SERVICE = 2; - ACT_PROGRAM = 3; - ACT_TEXT = 4; - ACT_ADVANCE = 5; - ACT_CHAIN = 6; - ACT_RW = 7; - ACT_MESSAGE = 8; - ACT_MAXTYPE = 8; - ACT_SPECIAL = ACT_MAXTYPE+1; - ACT_FINISH = ACT_SPECIAL+1; - -type - pHKRecord = ^tHKRecord; - tHKRecord = record - descr :pWideChar; // like name - id :dword; - flags :dword; // Assigned or not - firstAction:dword; // array [0..0] of dword - active :pointer; - end; - - pHKAction = ^tHKAction; - tHKAction = record - flags :dword; // See ACF_* constants - flags2:dword; // See ACF2_* constants (Variables use etc.) - next :dword; - descr :PWideChar; - case actionType:dword of - ACT_CONTACT: - (contact:THANDLE); - ACT_SERVICE: - (service:PAnsiChar; - wparam :WPARAM; - lparam :LPARAM); - ACT_PROGRAM: - (prgname:pWideChar; - args :pWideChar; - show :dword; - time :dword); - ACT_TEXT: - (text :pWideChar; - tfile :pWideChar); - ACT_ADVANCE: - (condition:dword; - value :uint_ptr; - action :dword; - operval :pWideChar; - oper :dword; - mathval :dword; - varval :pWideChar); - ACT_CHAIN: - (id :dword; - actname:pWideChar); - ACT_RW: - (dbcontact:THANDLE; - dbmodule :PAnsiChar; - dbsetting :PAnsiChar; - dbvalue :uint_ptr); - ACT_MESSAGE: - (boxopts:dword; - msgtitle:pWideChar; - msgtext :pWideChar); - end; diff --git a/plugins/!Deprecated/Actman20/make.bat b/plugins/!Deprecated/Actman20/make.bat deleted file mode 100644 index 7f324c52a0..0000000000 --- a/plugins/!Deprecated/Actman20/make.bat +++ /dev/null @@ -1,30 +0,0 @@ -@echo off -set p1=%1 -set p2=%2 -if "%p1%" == "" (echo "please specify target platform by adding 'fpc' or 'fpc64 parameter to command line!'"&&pause&&goto :EOF) -if "%p2%" == "" (echo "please specify target output directory by adding 10 for bin10 or 12 for bin12 to command line!'"&&pause&&goto :EOF) -if /i '%1' == 'fpc' ( - set OUTDIR="..\..\bin%2\Release\Plugins" - set FPCBIN=fpc.exe -) else if /i '%1' == 'fpc64' ( - set OUTDIR="..\..\bin%2\Release64\Plugins" - set FPCBIN=ppcrossx64.exe -) -set PROJECT=Actman - -if not exist %OUTDIR% mkdir %OUTDIR% -md tmp - -rem brcc32.exe %myopts% options.rc -fooptions.res -rem brcc32.exe %myopts% hooks\hooks.rc -fohooks\hooks.res -rem brcc32.exe %myopts% tasks\tasks.rc -fotasks\tasks.res -rem brcc32.exe %myopts% ua\ua.rc -foua\ua.res - -%FPCBIN% @..\Utils.pas\fpc.cfg %PROJECT%.dpr %3 %4 %5 %6 %7 %8 %9 -if errorlevel 1 exit /b 1 - -move .\tmp\%PROJECT%.dll %OUTDIR% -move .\tmp\%PROJECT%.map . -del /Q tmp\* -rd tmp -exit /b 0 diff --git a/plugins/!Deprecated/Actman20/options.rc b/plugins/!Deprecated/Actman20/options.rc deleted file mode 100644 index c221bf0f49..0000000000 --- a/plugins/!Deprecated/Actman20/options.rc +++ /dev/null @@ -1,328 +0,0 @@ -#include "i_const.inc" - -LANGUAGE 0,0 -/* -IDD_STRUCTURE DIALOGEX 0, 0, 332,184, 0 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_VISIBLE | WS_THICKFRAME -CAPTION "Structure editor" -//EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0 -{ - CONTROL "" , IDC_DATA_FULL, "SysListView32", - WS_BORDER | WS_TABSTOP | - LVS_NOCOLUMNHEADER | LVS_SHOWSELALWAYS | - LVS_SINGLESEL | LVS_REPORT, - 2, 2, 160, 180, WS_EX_CONTROLPARENT - - CONTROL "New" ,IDC_DATA_NEW ,"MButtonClass",WS_TABSTOP,166, 2,16,16,$18000000// | WS_GROUP - CONTROL "Up" ,IDC_DATA_UP ,"MButtonClass",WS_TABSTOP,166,22,16,16,$18000000 - CONTROL "Down" ,IDC_DATA_DOWN ,"MButtonClass",WS_TABSTOP,166,40,16,16,$18000000 - CONTROL "Delete",IDC_DATA_DELETE,"MButtonClass",WS_TABSTOP,166,60,16,16,$18000000 - - COMBOBOX IDC_DATA_TYPE , 186, 2, 142, 96, CBS_DROPDOWNLIST | WS_VSCROLL - EDITTEXT IDC_DATA_LEN , 186, 18, 32, 11 - LTEXT "Data length" ,-1 , 222, 18, 106, 11, SS_CENTERIMAGE - EDITTEXT IDC_DATA_EDIT, 186, 32, 142, 11, ES_AUTOHSCROLL - AUTOCHECKBOX "Use Variables", IDC_DATA_VARS, 186, 45, 142, 14 - - DEFPUSHBUTTON "&Change", IDC_DATA_CHANGE, 186, 62, 46, 14//, WS_GROUP - PUSHBUTTON "&OK" , IDOK , 234, 62, 46, 14 - PUSHBUTTON "C&ancel", IDCANCEL , 282, 62, 46, 14 - - AUTOCHECKBOX "Packed structure", IDC_DATA_PACKED, 166, 78, 162, 14 - - CTEXT "Use Byte array/pointer for ANSI strings\n"\ - "Use Word array/pointer for Unicode strings\n\n"\ - "$## replaces by byte with hex value ##\n"\ - "$#### replaces by word with hex value #### (for Unicode strings only)\n\n"\ - "All data length calculating in bytes", - IDC_DATA_HELP,166,94,162,88 - -} -*/ -IDD_ACTION DIALOGEX 0, 0, 304, 226, 0 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0 -{ - CONTROL "New" ,IDC_GROUP_NEW ,"MButtonClass",WS_TABSTOP,114, 1,16,16,$18000000 | WS_GROUP - CONTROL "Up" ,IDC_GROUP_UP ,"MButtonClass",WS_TABSTOP,114, 18,16,16,$18000000 - CONTROL "Down" ,IDC_GROUP_DOWN ,"MButtonClass",WS_TABSTOP,114, 34,16,16,$18000000 - CONTROL "Reload",IDC_GROUP_RELOAD,"MButtonClass",WS_TABSTOP,114, 51,16,16,$18000000 - CONTROL "Delete",IDC_GROUP_DELETE,"MButtonClass",WS_TABSTOP,114, 68,16,16,$18000000 - CONTROL "Test" ,IDC_GROUP_TEST ,"MButtonClass",WS_TABSTOP,114, 85,16,16,$18000000 - CONTROL "Export",IDC_GROUP_EXPORT,"MButtonClass",WS_TABSTOP,114,102,16,16,$18000000 - CONTROL "Import",IDC_GROUP_IMPORT,"MButtonClass",WS_TABSTOP,114,119,16,16,$18000000 - - CONTROL "", IDC_ACTION_GROUP, "SysListView32", - WS_BORDER | WS_TABSTOP | - LVS_NOCOLUMNHEADER | LVS_SHOWSELALWAYS | LVS_REPORT | LVS_EDITLABELS,// | LVS_SINGLESEL, - 0, 2, 110, 132, WS_EX_CONTROLPARENT - - CONTROL "", IDC_ACTION_LIST, "SysListView32", - WS_BORDER | WS_TABSTOP | - LVS_NOCOLUMNHEADER | LVS_SHOWSELALWAYS| LVS_REPORT | LVS_EDITLABELS,// | LVS_SINGLESEL - 0, 138, 110, 86, WS_EX_CONTROLPARENT - - CONTROL "Help" ,IDC_ACTION_HELP ,"MButtonClass",WS_TABSTOP,114,138,16,16,$18000000 | WS_GROUP - CONTROL "New" ,IDC_ACTION_NEW ,"MButtonClass",WS_TABSTOP,114,156,16,16,$18000000 - CONTROL "Up" ,IDC_ACTION_UP ,"MButtonClass",WS_TABSTOP,114,174,16,16,$18000000 - CONTROL "Down" ,IDC_ACTION_DOWN ,"MButtonClass",WS_TABSTOP,114,190,16,16,$18000000 - CONTROL "Delete",IDC_ACTION_DELETE,"MButtonClass",WS_TABSTOP,114,208,16,16,$18000000 - -// PUSHBUTTON "Reset", IDC_RESET, 264, 2, 40, 12 - GROUPBOX "" , -1, 132, 0, 172, 226 - - RTEXT "Action",IDC_STAT_ACTION, 135, 6, 63, 12, SS_CENTERIMAGE - CONTROL "", IDC_ACTION_TYPE, "ComboBoxEx32", - WS_TABSTOP | WS_VSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST, 200, 6, 101, 96 - -// Contact - RTEXT "Choose contact", IDC_STAT_CONTACT , 135, 24, 160, 10 - COMBOBOX IDC_CONTACTLIST, 135, 35, 166, 128, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL - AUTOCHECKBOX "Keep handle only" , IDC_CNT_KEEP , 135, 53, 160, 11 - AUTOCHECKBOX "Active accounts only",IDC_CNT_FILTER, 135, 65, 160, 11 - RTEXT "Dropdown list format",IDC_STAT_FORMAT, 135, 78, 160, 11 - EDITTEXT IDC_EDIT_FORMAT , 153, 92, 142, 12, ES_AUTOHSCROLL - CONTROL "Apply",IDC_CNT_APPLY,"MButtonClass",WS_TABSTOP,135,90,16,16,$18000000 - CTEXT "You can use %name%, %uid%, %account% and %group% macros",IDC_STAT_FHELP, 135, 107, 160, 24 - -// Service - RTEXT "wParam type", IDC_STAT_WPAR1, 135, 125, 63, 14, SS_CENTERIMAGE - COMBOBOX IDC_FLAG_WPAR , 200, 125, 102, 56, CBS_DROPDOWNLIST | WS_VSCROLL - RTEXT "lParam type", IDC_STAT_LPAR1, 135, 140, 63, 14, SS_CENTERIMAGE - COMBOBOX IDC_FLAG_LPAR , 200, 140, 102, 56, CBS_DROPDOWNLIST | WS_VSCROLL - - RTEXT "Service name", IDC_STAT_SERVICE, 135, 153, 160, 8 - AUTOCHECKBOX "", IDC_SRV_SRVC,135,162,8,8,BS_ICON | BS_PUSHLIKE - COMBOBOX IDC_EDIT_SERVICE, 144, 162, 157, 96, CBS_DROPDOWN | WS_VSCROLL | CBS_AUTOHSCROLL | CBS_SORT - RTEXT "wParam" , IDC_STAT_WPAR , 135, 177, 160, 8 - AUTOCHECKBOX "", IDC_SRV_WPAR,135,186,8,8,BS_ICON | BS_PUSHLIKE - COMBOBOX IDC_EDIT_WPAR , 144, 186, 157, 76, CBS_DROPDOWN | WS_VSCROLL | CBS_AUTOHSCROLL - RTEXT "lParam" , IDC_STAT_LPAR , 135, 201, 160, 8 - AUTOCHECKBOX "", IDC_SRV_LPAR,135,210,8,8,BS_ICON | BS_PUSHLIKE - COMBOBOX IDC_EDIT_LPAR , 144, 210, 157, 76, CBS_DROPDOWN | WS_VSCROLL | CBS_AUTOHSCROLL - PUSHBUTTON "Structure" , IDC_WSTRUCT , 135, 186, 166, 14 - PUSHBUTTON "Structure" , IDC_LSTRUCT , 135, 210, 166, 14 - - GROUPBOX "Result action" , IDC_RES_GROUP , 135, 24, 166, 99, WS_GROUP - AUTOCHECKBOX "Show in popup" , IDC_RES_POPUP , 138, 34, 159, 11 - AUTOCHECKBOX "Show in messagebox" , IDC_RES_MESSAGE, 138, 45, 159, 11 - AUTOCHECKBOX "Insert into message", IDC_RES_INSERT , 138, 56, 159, 11 - - LTEXT "Service result" , IDC_SRV_RESSTAT, 138, 72, 159, 11 - COMBOBOX IDC_SRV_RESULT , 138, 83, 159, 76, CBS_DROPDOWN | WS_VSCROLL | CBS_AUTOHSCROLL - AUTOCHECKBOX "Free memory" , IDC_RES_FREEMEM, 138, 99, 159, 11 - AUTOCHECKBOX "Unicode string" , IDC_RES_UNICODE, 138, 110, 159, 11 - AUTOCHECKBOX "Signed value" , IDC_RES_SIGNED , 138, 99, 159, 11 - -// Program - GROUPBOX "Process options" , IDC_PROCESS_GROUP, 135, 24, 166, 46, WS_GROUP - AUTORADIOBUTTON "Parallel" , IDC_FLAG_PARALLEL, 138, 33, 161, 11 - AUTORADIOBUTTON "Continued" , IDC_FLAG_CONTINUE, 138, 44, 161, 11 - EDITTEXT IDC_EDIT_PROCTIME, 138, 56, 31, 11, ES_RIGHT | ES_NUMBER - LTEXT "Process time, ms", IDC_STAT_PROCTIME, 171, 56, 128, 11, SS_CENTERIMAGE - - AUTOCHECKBOX "Current path" , IDC_FLAG_CURPATH, 138, 72, 161, 11 - - GROUPBOX "Window option" , IDC_PRSTART_GROUP, 135, 83, 166, 55, WS_GROUP - AUTORADIOBUTTON "Start normal" , IDC_FLAG_NORMAL , 138, 92, 162, 11 - AUTORADIOBUTTON "Start hidden" , IDC_FLAG_HIDDEN , 138, 103, 162, 11 - AUTORADIOBUTTON "Start minimized", IDC_FLAG_MINIMIZE, 138, 114, 162, 11 - AUTORADIOBUTTON "Start maximized", IDC_FLAG_MAXIMIZE, 138, 125, 162, 11 - - CONTROL "V", IDC_HLP_FVARS, "MButtonClass",WS_TABSTOP, 285,139,16,16,$18000000 - RTEXT "Program path", IDC_STAT_PRGPATH, 135, 155, 160, 8 - AUTOCHECKBOX "", IDC_PRG_PRG,135,164,8,8,BS_ICON | BS_PUSHLIKE - EDITTEXT IDC_EDIT_PRGPATH, 144, 164, 139, 12, ES_AUTOHSCROLL - PUSHBUTTON "..." , IDC_PROGRAM , 285, 164, 16, 12 - RTEXT "Program args", IDC_STAT_PRGARGS, 135, 179, 160, 8 - AUTOCHECKBOX "", IDC_PRG_ARG,135,186,8,8,BS_ICON | BS_PUSHLIKE - EDITTEXT IDC_EDIT_PRGARGS, 144, 188, 157, 12, ES_AUTOHSCROLL - -// Text - AUTORADIOBUTTON "Clipboard" , IDC_FLAG_CLIP , 135, 20, 166, 11, WS_GROUP - AUTORADIOBUTTON "File" , IDC_FLAG_FILE , 135, 66, 166, 11 - AUTORADIOBUTTON "Message window", IDC_FLAG_MESSAGE, 135, 128, 166, 11 - - GROUPBOX "" , IDC_CLIP_GROUP , 135, 30, 166, 33 - AUTORADIOBUTTON "Copy to" , IDC_CLIP_COPYTO, 140, 36, 160, 11, WS_GROUP - AUTORADIOBUTTON "Paste from", IDC_CLIP_PASTE , 140, 47, 160, 11 - - GROUPBOX "" , IDC_FILE_GROUP , 135, 75, 166, 52 - AUTORADIOBUTTON "Read" , IDC_FILE_READ , 138, 83, 52, 11, WS_GROUP - AUTORADIOBUTTON "Write" , IDC_FILE_WRITE , 191, 83, 52, 11 - AUTORADIOBUTTON "Append" , IDC_FILE_APPEND , 244, 83, 52, 11 - AUTOCHECKBOX "", IDC_TXT_FILE,138,96,8,8,BS_ICON | BS_PUSHLIKE - EDITTEXT IDC_FILE_PATH , 147, 96, 131, 12, ES_AUTOHSCROLL - PUSHBUTTON "..." , IDC_FILE_FILEBTN, 281, 96, 16, 12 - COMBOBOX IDC_FILE_ENC , 138, 111, 160, 76, CBS_DROPDOWNLIST | WS_VSCROLL - - CONTROL "V", IDC_HLP_VARS, "MButtonClass",WS_TABSTOP, 285,139,16,16,$18000000 -// PUSHBUTTON "vars" , IDC_HLP_VARS , 264, 140, 37, 14 - RTEXT "Text to insert", IDC_STAT_INSERT , 135, 155, 160, 9 - AUTOCHECKBOX "", IDC_TXT_TEXT,135,164,8,8,BS_ICON | BS_PUSHLIKE - EDITTEXT IDC_EDIT_INSERT , 144, 164, 157, 59, - ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN - -// Advanced - GROUPBOX "Condition" , IDC_CONDITION , 135, 24, 166, 34, WS_GROUP - AUTORADIOBUTTON ">" , IDC_FLAG_GT , 138, 33, 32, 11 - AUTORADIOBUTTON "<" , IDC_FLAG_LT , 170, 33, 32, 11 - AUTORADIOBUTTON "=" , IDC_FLAG_EQ , 202, 33, 32, 11 - AUTORADIOBUTTON "NOP" , IDC_FLAG_NOP , 234, 33, 32, 11 - AUTOCHECKBOX "NOT" , IDC_FLAG_NOT , 138, 44, 32, 11 - RTEXT "Value" , IDC_STAT_VAL , 170, 44, 78, 11, SS_CENTERIMAGE - EDITTEXT IDC_ADV_VALUE , 250, 44, 48, 11, ES_RIGHT //| ES_NUMBER - - AUTOCHECKBOX "Math" , IDC_FLAG_MATH , 138, 61, 64, 13, WS_GROUP - COMBOBOX IDC_ADV_OPER , 204, 61, 44, 96, - CBS_DROPDOWNLIST | WS_VSCROLL - EDITTEXT IDC_ADV_VAL1 , 250, 61, 48, 13, ES_RIGHT //| ES_NUMBER - - AUTOCHECKBOX "Variables" , IDC_FLAG_VARS , 138, 78, 124, 12 - CONTROL "V", IDC_ADV_HVARS, "MButtonClass",WS_TABSTOP, 285,75,16,16,$18000000 -// PUSHBUTTON "vars" , IDC_ADV_HVARS , 264, 78, 37, 12 - EDITTEXT IDC_ADV_VARS , 144, 92, 157, 68, - ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN - AUTOCHECKBOX "Result as integer", IDC_ADV_ASINT , 135, 161, 164, 13, BS_RIGHT | BS_LEFTTEXT - - GROUPBOX "Operation" , IDC_OPERATION , 135, 174, 166, 49, WS_GROUP - AUTORADIOBUTTON "JUMP" , IDC_FLAG_JUMP , 138, 183, 62, 12 - AUTORADIOBUTTON "BREAK" , IDC_FLAG_BREAK, 138, 196, 62, 12 - AUTORADIOBUTTON "NOP" , IDC_FLAG_ANOP , 138, 209, 62, 12 - COMBOBOX IDC_ADV_VAL2 , 200, 183, 99, 96, CBS_DROPDOWNLIST | WS_VSCROLL | CBS_AUTOHSCROLL - -// Chain - RTEXT "Other Action groups",IDC_STAT_GROUPS,135, 24, 160, 10 - COMBOBOX IDC_GROUP_LIST, 135, 35, 166, 128, - CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL - -// Read / write setting - - AUTORADIOBUTTON "Own settings", IDC_RW_CURRENT, 135, 50, 80, 11, BS_RIGHT | BS_LEFTTEXT | WS_GROUP - AUTORADIOBUTTON "Manual" , IDC_RW_MANUAL , 135, 62, 80, 11, BS_RIGHT | BS_LEFTTEXT - AUTORADIOBUTTON "Parameter" , IDC_RW_PARAM , 217, 50, 80, 11 - AUTORADIOBUTTON "Last result" , IDC_RW_RESULT , 217, 62, 80, 11 - - RTEXT "Module" , IDC_RW_STATM , 135, 75, 160, 8, SS_CENTERIMAGE - AUTOCHECKBOX "", IDC_RW_MVAR,135,84,8,8,BS_ICON | BS_PUSHLIKE - EDITTEXT IDC_RW_MODULE , 144, 84, 157, 12, ES_AUTOHSCROLL - RTEXT "Setting" , IDC_RW_STATS , 135, 99, 160, 8, SS_CENTERIMAGE - AUTOCHECKBOX "", IDC_RW_SVAR,135,108,8,8,BS_ICON | BS_PUSHLIKE - EDITTEXT IDC_RW_SETTING, 144, 108, 157, 12, ES_AUTOHSCROLL - - GROUPBOX "Operation" , IDC_RW_OPER , 135, 124, 166, 21, WS_GROUP - AUTORADIOBUTTON "Read" , IDC_RW_READ , 138, 133, 52, 11 - AUTORADIOBUTTON "Write" , IDC_RW_WRITE , 191, 133, 52, 11 - AUTORADIOBUTTON "Delete" , IDC_RW_DELETE , 244, 133, 52, 11 - - GROUPBOX "Value" , IDC_RW_VAL , 135, 146, 166, 76, WS_GROUP - - COMBOBOX IDC_RW_DATATYPE, 220, 155, 79, 96, - CBS_DROPDOWNLIST | WS_VSCROLL - - AUTOCHECKBOX "Last result" , IDC_RW_LAST , 140, 179, 156, 11, BS_RIGHT | BS_LEFTTEXT - EDITTEXT IDC_RW_VALUE , 149, 191, 147, 11, ES_AUTOHSCROLL | ES_RIGHT// | ES_NUMBER - AUTOCHECKBOX "", IDC_RW_TVAR,140,191,8,8,BS_ICON | BS_PUSHLIKE - EDITTEXT IDC_RW_TEXT , 149, 191, 147, 29, - ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN - -// MessageBox - - AUTOCHECKBOX "", IDC_MSG_TTL,135,32,8,8,BS_ICON | BS_PUSHLIKE - EDITTEXT IDC_MSG_TITLE, 144, 32, 157, 12, - ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN - RTEXT "Message text" ,IDC_MSG_STAT2, 137, 46, 164, 11, SS_CENTERIMAGE - AUTOCHECKBOX "", IDC_MSG_TXT,135,58,8,8,BS_ICON | BS_PUSHLIKE - EDITTEXT IDC_MSG_TEXT , 144, 58, 157, 49, - ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN - AUTOCHECKBOX "Keep last result" , IDC_MSG_KEEP, 138, 109, 163, 11, BS_RIGHT | BS_LEFTTEXT - - GROUPBOX "Icons" , IDC_MSG_ICONS , 135, 123, 166, 28, WS_GROUP - AUTORADIOBUTTON "Error" , IDC_MSGI_ERROR, 140, 130, 24, 20, BS_ICON - AUTORADIOBUTTON "Question", IDC_MSGI_QUEST, 166, 130, 24, 20, BS_ICON - AUTORADIOBUTTON "Warning" , IDC_MSGI_WARN , 192, 130, 24, 20, BS_ICON - AUTORADIOBUTTON "Info" , IDC_MSGI_INFO , 218, 130, 24, 20, BS_ICON - AUTORADIOBUTTON "None" , IDC_MSGI_NONE , 246, 130, 53, 20//, BS_ICON - - GROUPBOX "Buttons" , IDC_MSG_BTNS, 135, 152, 166, 71, WS_GROUP - AUTORADIOBUTTON "OK" , IDC_MSGB_OK , 140, 161, 156, 10 - AUTORADIOBUTTON "OK, Cancel" , IDC_MSGB_OC , 140, 171, 156, 10 - AUTORADIOBUTTON "Abort, Retry, Ignore", IDC_MSGB_ARI, 140, 181, 156, 10 - AUTORADIOBUTTON "Yes, No, Cancel" , IDC_MSGB_YNC, 140, 191, 156, 10 - AUTORADIOBUTTON "Yes, No" , IDC_MSGB_YN , 140, 201, 156, 10 - AUTORADIOBUTTON "Retry, Cancel" , IDC_MSGB_RC , 140, 211, 156, 10 - - RTEXT "Message title",IDC_MSG_STAT1, 137, 20, 164, 11, SS_CENTERIMAGE -} - -IDD_ASK DIALOGEX 0, 0, 276, 72, 0 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_CONTROLPARENT -CAPTION "Choose action" -FONT 8, "MS Shell Dlg", 0, 0 -{ - CTEXT "", IDC_ASK,4,4,268,42,SS_CENTERIMAGE - - CONTROL "", -1, "STATIC", SS_ETCHEDHORZ, 2, 50, 272, 2 - - DEFPUSHBUTTON "&Yes" , IDOK , 4, 54, 40, 16 - PUSHBUTTON "&No" , IDCANCEL , 52, 54, 40, 16 - PUSHBUTTON "A&ppend" , IDC_APPEND, 100, 54, 52, 16 - PUSHBUTTON "Yes to &All", IDC_YESALL, 160, 54, 52, 16 - PUSHBUTTON "N&o to All" , IDC_NOALL , 220, 54, 52, 16 -} - -IDI_NEW ICON "ico\new.ico" -IDI_UP ICON "ico\up.ico" -IDI_DOWN ICON "ico\down.ico" -IDI_DELETE ICON "ico\delete.ico" -IDI_RELOAD ICON "ico\reload.ico" -IDI_TEST ICON "ico\test.ico" -IDI_EXPORT ICON "ico\export.ico" -IDI_IMPORT ICON "ico\import.ico" - -IDI_CONTACT ICON "ico\contact.ico" -IDI_SERVICE ICON "ico\service.ico" -IDI_PROGRAM ICON "ico\program.ico" -IDI_INSERT ICON "ico\insert.ico" -IDI_ADVANCE ICON "ico\advance.ico" -IDI_CHAIN ICON "ico\chain.ico" -IDI_RW ICON "ico\rw.ico" -IDI_MESSAGE ICON "ico\message.ico" -IDI_FORMAT ICON "ico\format.ico" - -IDI_APPLY ICON "ico\apply.ico" - -IDI_VAR_CHECKED ICON "ico\vcheck.ico" -IDI_VAR_UNCHECKED ICON "ico\vuncheck.ico" - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,2,0,1 - PRODUCTVERSION 0,2,0,1 - FILEFLAGSMASK $3F - FILEOS 4 - FILETYPE 2 - FILESUBTYPE 0 -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "000004b0" - BEGIN - VALUE "CompanyName","" - VALUE "Comments", "Plugin for managing different Miranda actions "0 - VALUE "FileDescription", "Action manager for Miranda NG"0 - VALUE "FileVersion", "0, 2, 0, 1 "0 - VALUE "InternalName", "ActManager"0 - VALUE "OriginalFilename", "actman.dll"0 - VALUE "ProductName", "Action Manager Dynamic Link Library (DLL)"0 - VALUE "ProductVersion", "0, 2, 0, 1 "0 - VALUE "SpecialBuild", "18.08.2011 "0 - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation",0,1200 - END -END diff --git a/plugins/!Deprecated/Actman20/options.res b/plugins/!Deprecated/Actman20/options.res deleted file mode 100644 index 6385d76f43..0000000000 Binary files a/plugins/!Deprecated/Actman20/options.res and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/question.pas b/plugins/!Deprecated/Actman20/question.pas deleted file mode 100644 index 84bbd60604..0000000000 --- a/plugins/!Deprecated/Actman20/question.pas +++ /dev/null @@ -1,51 +0,0 @@ -unit question; - -interface -uses windows,messages; - -function QuestionDlg(Dialog:HWnd;hMessage:UINT;wParam:WPARAM;lParam:LPARAM):LRESULT; stdcall; - -implementation - -uses m_api; - -{$include i_const.inc} - -const - imp_yes = 1; - imp_yesall = 2; - imp_no = 3; - imp_noall = 4; - imp_append = 5; - -function QuestionDlg(Dialog:HWnd;hMessage:UINT;wParam:WPARAM;lParam:LPARAM):LRESULT; stdcall; -var - i:integer; -begin - result:=0; - case hMessage of - WM_INITDIALOG: begin - TranslateDialogDefault(Dialog); - SetDlgItemTextW(Dialog, IDC_ASK,pWideChar(lParam)); - result:=1; - end; - WM_COMMAND: begin - case loword(wParam) of - IDOK : i:=imp_yes; - IDCANCEL : i:=imp_no; - IDC_YESALL: i:=imp_yesall; - IDC_NOALL : i:=imp_noall; - IDC_APPEND: i:=imp_append; - else - i:=0; - end; - if i<>0 then - begin - EndDialog(Dialog,i); - result:=1; - end; - end; - end; -end; - -end. diff --git a/plugins/!Deprecated/Actman20/readme.txt b/plugins/!Deprecated/Actman20/readme.txt deleted file mode 100644 index 0c6359ebe3..0000000000 --- a/plugins/!Deprecated/Actman20/readme.txt +++ /dev/null @@ -1,126 +0,0 @@ -Note ----- -'Actions' is action groups which can be executed through services -'Subactions' is single simple action like 'Call service', 'run program' etc. - -Description ------------ -This service plugin can be used for defining, management and executing some -actions. -Action can be executed later through miranda service. - -Settings --------- -Main window consist of two parts. Left part is for action list and subaction list -for selected action. Navigation buttons for action list and subaction list positioned near -these lists. -'New' - to add new list item -'Delete' - to delete selected item -'Reload' - to reload settings from DB -'Test' - executes currently selected action -'Up','Down' - for place selected subaction upper or lower current position -With DblClick on action groups list item you can rename this item - -When action list is not empty, in right side you can see combobox for subaction type selecting. -At this moment only next types supported: - Open contact window - Call service - Execute program - Insert text - Advanced - Link to action - Profile - MessageBox - --- Open contact window -Just select needed contact from combobox. - --- Call service -This is one of hard to understand action type. -wParam and lParam comboboxes in upper part are for parameter type. - 'number' - just integer number (decimal or hex started from $ sign) - 'ANSI string' - single-byte character string - 'Unicode string' - double-byte character string - 'Current contact' - mean what parameter is current user handle. - Current user is active window owner - 'Last result' - result from previous action or calling parameter - 'Parameter' - parameter from calling service - 'Structure' - parameter is structure which can be edited in options dialog - but will not saving changes in runtime. - -wParam and lParam in lower part are for values, passed to service. -If service.ini file presents in plugins directory, you can press F1 to see short help -notes for selected from combobox service name. -Most upper part, 'result action' is for action, what we must to do with result: -show in popup, in message window or paste into text. -Option to translate result are: integer decimal value (signed or not), hex value or -string value (Unicode or ANSI) -'' in service name will be replaced by protocol name for contact handle in parameter - --- Execute program -More hard for understanding than the upper settings. -Process settings: 'parallel' means executing next subaction or return from executing action -immediately, 'continued' mean what next subaction will be only after finishing this program. -'Process time' option specifies a period of time, after which the process will be shut down. -'Current path' mean what program will run with current directory as start directory. -Window options are for starting window view: minimized, normal, maximized etc. -Several macros can be used in program name: - - parameter - - last result - --- Insert text -You can work with Clipboard or file/message window here. -In field below action type combobox you can write some text which will be inserted -into text field of miranda and other program. -Or, that text can be written to file or some text can be readed. -If you want help for text formatting, you can press F1. -You can use Variables plugin. If you want it, just mark checkbox. help button can -get help notes for available variables and functions. - --- Advanced -This block is the most difficult for understanding. Upper group is conditions for operation executing. -'Value' is value for comparing last subaction result with it. -Next actions will be if condition is true: -'Math' - mathematic operations with last result and presented in 'value' field value. -After math calculations (or w/o it) can be used next operations: -'Operation' block consist of several operations: - 'BREAK' - break action executing (and return for 'parent' action executing - if exist) - 'JUMP' - jump to subaction with selected name - 'NOP' - not operation - -As 'Math' alternative, you can use Variables plugin scripts. -Script can be written in text field below and checked by pressing 'Vars' button. -Variables %subject% and %extratext% can be used in the script. - --- Call chain -Select action from combobox below. This action will be executed. After that next subaction -will be executed. - --- Database -This subaction is for database reading/writing (see Operation block). -Value and value type is for type of data, reading or writing from/to database. -'Last result' mean that value is result of previous action. -Group of radioboxes is for contact type. - 'Own settings' - all settings only for our contact (our profle settings) - 'Parameter' - settings for contact with handle, passed from start parameter - 'Last result' - contact handle is result of last action - 'Manual' - contact handle selected from combobox -'' in module name will be replaced with contact protocol name - --- MessageBox - Subaction uses for standard windows MessageBox showing. text will be replaced -by last result value. - -Using ------ -Executing action from option dialog is possible but not recommended. -First way is assign action to button for toolbar (maybe through modern clist skin engine) -Second way is assign action to hotkey (miranda core not so good for this now) -Third way is to insert action into menu by other plugin. -Pluginmaker Vasilich wrote his plugin (UserActions) which works with ActMan and gives -access to ability to assign actions to some controls (menu, toolbar, hotkey). - -Byte/Word/DWord - numeric integer data -byte/word pointers - pointers to some data (really, like ANSI/Unicode strings) -byte/word array - array of mixed data (really, like ANSI/Unicode strings) -last result/param - current working data = dword diff --git a/plugins/!Deprecated/Actman20/services.ini b/plugins/!Deprecated/Actman20/services.ini deleted file mode 100644 index fcf82289c6..0000000000 --- a/plugins/!Deprecated/Actman20/services.ini +++ /dev/null @@ -1,497 +0,0 @@ -;Small Service list -;if wparam or lparam consists of list, "|" is separator -;in list: if translation not needed, just add space before help -;numeric parameter format: numberhelp -;hContact will setup "Current contact" feature -;structure will setup "structure" feature -;if "return" starts from int/hex/str/struct then separator, result type will set - - -;[Event:Event (name or constant] -;alias=constant name -;descr=text -;plugin=placement (including "core" and empty = "unknown" -;wparam= -;lparam= - -;full: full structure, with aliases -;short: smallest needed structure -;descr: structure description -;plugin: where defined - -[Service:CListFrames/HideALLFramesTB] -alias=MS_CLIST_FRAMES_HIDEALLFRAMESTB -wparam=0 -lparam=0 -return=int 0, if successful -descr=Hide All Titlebars - -[Service:CListFrames/ShowALLFrames] -alias=MS_CLIST_FRAMES_SHOWALLFRAMES -wparam=0 -lparam=0 -return=int 0, if successful -descr=Show All Frames - -[Service:CListFrames/ShowALLFramesTB] -alias=MS_CLIST_FRAMES_SHOWALLFRAMESTB -wparam=0 -lparam=0 -return=int 0, if successful -descr=Show All Titlebars - -[Service:CList/MenuBuildContact] -alias=MS_CLIST_MENUBUILDCONTACT -wparam=hContact -lparam=0 -return=int hMenu handle -descr=Built the context menu for a specific contact. Menu should be DestroyMenu()ed after done - -[Service:CList/SetHideOffline] -alias=MS_CLIST_SETHIDEOFFLINE -wparam=0 Show All Users|1 Show only Online Users|-1 Toggle status -lparam=0 -return=int 0, if successful -descr=Change 'hide offline contacts' option value - -[Service:CList/SetStatusMode] -alias=MS_CLIST_SETSTATUSMODE -wparam=40071 Offline|40072 Online|40073 Away|40074 DND|40075 NA|40076 Occupied|40077 Free for Chat|40078 Invisible|40079 On the Phone|40080 Out to Lunch -lparam=0 -return=int 0, if successful -descr=Set global status - -[Service:CList/ShowHide] -alias=MS_CLIST_SHOWHIDE -wparam=0 -lparam=0 -return=int 0, if successful -descr=Switch contact list status - -[Service:CloseAction] -wparam=0 -lparam=0 -descr=Closes Miranda - -[Service:Console/Show/Hide] -wparam=0 -lparam=0 -plugin=Console (console.dll) -descr=Show or hide netlog console window - -[Service:DB/Contact/GetCount] -alias=MS_DB_CONTACT_GETCOUNT -wparam=0 -lparam=0 -return=int Value -descr=Returns contact amount, excluding user account - -[Service:DB/Module/Delete] -alias=MS_DB_MODULE_DELETE -wparam=0 -lparam=Ansi Text -descr=Removes all settings for the specified module - -[Service:DBEditorpp/Import] -alias=MS_DBEDIT_IMPORT -wparam=hContact -lparam=Ansi Text -return=int 0 -descr=Import settings\contacts from file -plugin=Database Editor++ (dbeditorpp.dll) - -[Service:DBEditorpp/MenuCommand] -alias=MS_DBEDIT_MENUCOMMAND -wparam=0 -lparam=0 -return=int 0 -plugin=Database Editor++ (dbeditorpp.dll) -descr=Opens or activate database editor - -[Service:FindAdd/FindAddCommand] -alias=MS_FINDADDFINDADD -wparam=0 -lparam=0 -return=int 0 -descr=Opens or activate user search dialog - -[Service:FtMgr/Show] -wparam=0 -lparam=0 -return=int 0 -descr=displays File Transfer window - -[Service:Help/AboutCommand] -wparam=0 on Desktop|parent window handle -lparam=0 -Show "About..." window - -[Service:Help/IndexCommand] -wparam=0 -lparam=0 -descr=Open support (originaly - Miranda wiki) page - -[Service:Help/WebsiteCommand] -wparam=0 -lparam=0 -descr=Go to Miranda IM Homepage - -[Service:Help/BugCommand] -wparam=0 -lparam=0 -descr=Open bug report page - -[Service:History/ShowContactHistory] -alias=MS_HISTORY_SHOWCONTACTHISTORY -wparam=0 System|hContact -lparam=0 -descr=Shows contact history or (wParam=0) system history - -[Service:History++/EmptyHistory] -alias=MS_HPP_EMPTYHISTORY -wparam=hContact -lparam=0 -plugin=History++ (historypp.dll) -descr=Erases contact's history. hContact can be NULL(0) to empty system history - -[Service:History++/ShowGlobalSearch] -alias=MS_HPP_SHOWGLOBALSEARCH -wparam=0 -lparam=0 -plugin=History++ (historypp.dll) -descr=Show Global history search window. If already opened, bring it to front. - -[Service:Ignore/Ignore] -alias=MS_IGNORE_IGNORE -wparam=hContact -lparam=-1 Ignore all|1 Ignore messages|2 Ignore URLs|3 Ignore files|4 Ignore User Online|5 Ignore requests|6 Ignore 'You were added' -return=int 0, if successful -descr=Ignore Contact - -[Service:Ignore/Unignore] -alias=MS_IGNORE_UNIGNORE -wparam=hContact -lparam=-1 Ignore all|1 Ignore messages|2 Ignore URLs|3 Ignore files|4 Ignore User Online|5 Ignore requests|6 Ignore 'You were added' -return=int 0, if successful -descr=Unignore Contact - -[Service:mDynDNS/GetIP] -wparam=0 auto|1 mDynDNS-checkip|2 DNS querry -lparam=structure|*b.arr 16| -return=struct -descr=Returns the IP (empty string on failure) - -[Service:MIMLocker/Lock] -wparam=0 -wparam=0 -plugin=MIMLocker (MIMLocker.dll) -descr=Locks & hides Miranda's contact list and message sessions until password is entered - -[Service:Miranda/System/Restart] -alias=MS_SYSTEM_RESTART -wparam=0 restart in default profile or profile manager|1 restart with current profile -lparam=0 -descr=Restarts Miranda ver.0.8+ - -[Service:mRadio/PlayStop] -alias=MS_RADIO_PLAYSTOP -wparam=hContact|Station name -lparam=0 wParam is Handle|1 wParam is Ansi station name|2 wParam is Unicode station name -descr=Starting or stopping radio station - -[Service:MyDetails/CicleThroughtProtocols] -alias=MS_MYDETAILS_CICLE_THROUGHT_PROTOCOLS -wparam=0 Stop cycle|1 Start cycle -lparam=0 -return=int 0, if successful -plugin=My Details (mydetails.dll) -descr=Start/stops the cycling throught protocols - -[Service:MyDetails/SetMyAvatarUI] -alias=MS_MYDETAILS_SETMYAVATARUI -wparam=0 -lparam=0 All protocols|Protocol -return=signed -2 if proto can't set this, -1 on protocol not found, else 0 -plugin=My Details (mydetails.dll) -descr=Shows a dialog to set the avatar for all possible protocols - -[Service:MyDetails/ShowNextProtocol] -alias=MS_MYDETAILS_SHOWNEXTPROTOCOL -wparam=0 -lparam=0 -return=int 0, if successful -plugin=My Details (mydetails.dll) -descr=Shows the next protocol in the frame - -[Service:MyDetails/ShowPreviousProtocol] -alias=MS_MYDETAILS_SHOWPREVIOUSPROTOCOL -wparam=0 -lparam=0 -return=int 0, if successful -plugin=My Details (mydetails.dll) -descr=Shows the previous protocol in the frame - -[Service:Options/OptionsCommand] -wparam=0 -lparam=0 -descr=Open Options dialog - -[Service:Opt/OpenOptions] -alias=MS_OPT_OPENOPTIONS -wparam=0 -lparam=structure|0|native|bptr|bptr|bptr| -return=int 0, if successful -descr=Opens the options dialog, optionally at the specified page - -[Service:Popup/EnableDisableMenuCommand] -wparam=0 -lparam=0 -plugin=Popup Plus (popup.dll) -descr=Enables or disables Popup windows - -[Service:Popup/ShowMessage] -alias=MS_POPUP_SHOWMESSAGE -wparam=Ansi Text -lparam=1 Warning|2 Notify|3 Error -return=int 0, if successful -plugin=YAPP or Popup -descr=Popup window - -[Service:Popup/ShowMessageW] -alias=MS_POPUP_SHOWMESSAGEW -wparam=Unicode Text -lparam=1 Warning|2 Notify|3 Error -return=int 0, if successful -plugin=YAPP only -descr=Popup window - -[Service:Popup/ToggleEnabled] -wparam=0 -lparam=0 -plugin=YAPP (yapp.dll) -descr=Enables or disables Popup windows - -[Service:Proto/CallContactService] -alias=MS_PROTO_CALLCONTACTSERVICE -wparam=0 -lparam=structure|0|native|b.ptr|native|native| -return=result of protocol service call -descr=Send a general request through the protocol chain for a contact - -[Service:Protos/ShowAccountManager] -alias=MS_PROTO_SHOWACCMGR -wparam=0 -lparam=0 -descr=displays the Account Manager - -[Service:QuickContacts/ShowDialog] -alias=MS_QC_SHOW_DIALOG -wparam=0 -lparam=0 -plugin=Quick Contacts (quickcontacts.dll) -descr=Show the dialog to select the contact - -[Service:QuickSearch_PLUGIN/Show] -wparam=0|filter text -lparam=0 wparam is unicode|1 wparam is Ansi|2 reserved -plugin=Quick Search (Mod) (quicksearch.dll) -descr= - -[Service:Skin/Sounds/Play] -alias=MS_SKIN_PLAYSOUND -wparam=0 -lparam=Name -descr=Plays sound added through Skin/Sounds/AddNew. If sound not found, standard Windows sound plays - -[Service:SREMail/SendCommand] -alias=MS_EMAIL_SENDEMAIL -wparam=hContact -lparam=0 -return=int 0, if successful -descr=Send Email to contact - -[Service:SRFile/GetReceivedFilesFolder] -alias=MS_FILE_GETRECEIVEDFILESFOLDER -wparam=hContact -lparam=structure|*b.arr 300| -return=struct -descr=Returns the received files folder for a contact - -[Service:SRFile/OpenContRecDir] -wparam=hContact -lparam=0 -descr=Open contact received file directory - -[Service:SRFile/SendCommand] -alias=MS_FILE_SENDFILE -wparam=hContact -lparam=0 -return=int 0, if successful -descr=Send file to contact. - -[Service:SRMsg/SendCommand] -alias=MS_MSG_SENDMESSAGE -wparam=hContact;parameter -lparam=0 -descr=Opens message window for contact with handle in wparam - -[Service:StopSpam/RemoveTempContacts] -alias=MS_STOPSPAM_REMTEMPCONTACTS -wparam=0 -lparam=0 -return=int 0 -plugin=StopSpam (stopspam.dll) -descr=remove all temporary contacts from db - -[Service:SV_Avatars/ContactOptions] -alias=MS_AV_CONTACTOPTIONS -wparam=hContact -lparam=0 -plugin=Avatar service (loadavatars.dll) -descr=Call avatar option dialog for contact - -[Service:SV_Avatars/SetAvatar] -alias=MS_AV_SETAVATAR -wparam=hContact -lparam=0|Filename -plugin=Avatar service (loadavatars.dll) -descr=Set (and optionally protect) a local contact picture for the given hContact. If lParam = NIL, the service will open a file selection dialog. - -[Service:Update/CheckForUpdates] -wparam=0 -lparam=0 -return=int 0 -plugin=Updater (updater.dll) -descr=Check for plugin updates - -[Service:UserInfo/ShowDialog] -alias=MS_USERINFO_SHOWDIALOG -wparam=0 System|hContact -lparam=0 -plugin=Extended UserInfo (uinfoex.dll) -descr=Shows contact property window. - -[Service:Utils/OpenURL] -alias=MS_UTILS_OPENURL -wparam=0 Open URL in current window -lparam=URL -return=int 0 -descr=Open URL in default browser - -[Service:Versioninfo/GetInfo] -alias=MS_VERSIONINFO_GETINFO -wparam=0 With formating|1 Don't use formating -lparam=structure|*b.ptr 0| -plugin=VersionInfo -return=int 0, if succesful -descr=Returns a string containing the versioninfo post - -[Service:VersionInfo/MenuCommand] -alias=MS_VERSIONINFO_MENU_COMMAND -wparam=0 -lparam=0 -plugin=VersionInfo -descr=Show or save (call default action) Modules version Info - -[Service:WATrack/ShowMusicInfo] -alias=MS_WAT_SHOWMUSICINFO -wparam=0 -lparam=0 -plugin=Winamp Track (watrack.dll) -descr=Show popup or Info window with current music information. - -[Service:WATrack/MakeReport] -alias=MS_WAT_MAKEREPORT -wparam=log filename| -lparam=report filename| -return=int 0, if unsuccessful -plugin=Winamp Track (watrack.dll) -descr=Create report from log and run it (if option is set). If wParam or lParam is empty then file names from options are used. - -[Service:WhenWasIt/List/Show] -alias=MS_WWI_LIST_SHOW -wparam=0 -lparam=0 -plugin=WhenWasIt Birthday Reminder (whenwasit.dll) -descr=display birthdays window - -[Service:/Bookmarks] -wparam=0 -lparam=0 -plugin=Jabber -descr=Manage Jabber Bookmarks - -[Service:/SetAwayMsg] -alias=PS_SETAWAYMSG -wparam=40071 Offline|40072 Online|40073 Away|40074 DND|40075 NA|40076 Occupied|40077 Free for Chat|40078 Invisible|40079 On the Phone|40080 Out to Lunch -lparam=text -return=int 0, if successful -descr=Set status message - -[Service:/SetStatus] -alias=PS_SETSTATUS -wparam=40071 Offline|40072 Online|40073 Away|40074 DND|40075 NA|40076 Occupied|40077 Free for Chat|40078 Invisible|40079 On the Phone|40080 Out to Lunch -lparam=0 -return=int 0, if successful -descr=Set protocol status - -[Service:/SetXStatus] -alias=PS_ICQ_SETCUSTOMSTATUS -;alias=JS_SETXSTATUSEX -wparam=0 None|1 Angry|2 Taking a bath|3 Tired|4 Birthday|5 Drinking beer|6 Thinking|7 Eating|8 Watching TV|9 Meeting|10 Coffee|11 Listening to music|12 Business|13 Shooting|14 Having fun|15 On the phone|16 Gaming|17 Studying|18 Shopping|19 Feeling sick|20 Sleeping|21 Surfing|22 Browsing|23 Working|24 Typing|25 Picnic|26 Cooking|27 Smoking|28 I'm high|29 On WC|30 To be or not to be|31 Watching pro7 on TV|32 Love -lparam=0 -plugin=ICQ -descr=Sets owner current custom status - -[Service:/ShowXStatusDetails] -alias=MS_XSTATUS_SHOWDETAILS -wparam=0|hContact -lparam=0 -plugin=ICQ -descr=Display xStatus detail - -[Event:Actions/Changed] -alias=ME_ACT_CHANGED -plugin=ActMan -descr='Action group list was changed: some was added or deleted' -wparam=ACTM_NEW|ACTM_DELETE|ACTM_RELOAD|ACTM_RENAME|ACTM_SORT|ACTM_LOADED -lparam=0 - -[Event:CList/PreBuildContactMenu] -alias=ME_CLIST_PREBUILDCONTACTMENU -plugin=contact list -descr='The context menu for a contact is about to be built' -wparam=hContact -lparam=0 - -[Event:CList/DoubleClicked] -alias=ME_CLIST_DOUBLECLICKED -plugin=contact list -descr='Double click on the contact list' -wparam=hContact -lparam=0 - -[Event:DB/Contact/Added] -alias=ME_DB_CONTACT_ADDED -plugin=database driver -descr='New contact added to database' -wparam=hContact -lparam=0 - -[Event:DB/Contact/Deleted] -alias=ME_DB_CONTACT_DELETED -plugin=database driver -descr='Contact deleting' -wparam=hContact -lparam=0 - -[Structure:CCSDATA] -; variant: Handle -> param -full=0| \ -param (HANDLE) hContact| \ -b.ptr (const char *) szProtoService| \ -native (WPARAM) wParam| \ -native (LPARAM) lParam| -short=0|param|b.ptr|native|native| -descr= -plugin= diff --git a/plugins/!Deprecated/Actman20/tasks/i_opt_dlg.inc b/plugins/!Deprecated/Actman20/tasks/i_opt_dlg.inc deleted file mode 100644 index c8025c278d..0000000000 --- a/plugins/!Deprecated/Actman20/tasks/i_opt_dlg.inc +++ /dev/null @@ -1,536 +0,0 @@ -{} -const - settings:HWND = 0; - -var - OldTableProc:pointer; - onactchanged:THANDLE; - -const - ACI_NEW :PAnsiChar = 'ACI_New'; - ACI_DELETE :PAnsiChar = 'ACI_Delete'; - -procedure CheckTaskList(Dialog:HWND;enable:boolean); -begin - if not enable then - enable:=SendMessage(GetDlgItem(Dialog,IDC_TASK_NAME),LVM_GETITEMCOUNT,0,0)>0; - - EnableWindow(GetDlgItem(Dialog,IDC_TASK_ABSOLUTE ),enable); - EnableWindow(GetDlgItem(Dialog,IDC_TASK_DATEV ),enable); - EnableWindow(GetDlgItem(Dialog,IDC_TASK_DAYSV ),enable); - EnableWindow(GetDlgItem(Dialog,IDC_TASK_TIMEV ),enable); - EnableWindow(GetDlgItem(Dialog,IDC_TASK_REPEAT ),enable); - EnableWindow(GetDlgItem(Dialog,IDC_TASK_INTERVAL ),enable); - EnableWindow(GetDlgItem(Dialog,IDC_TASK_BREAK ),enable); - EnableWindow(GetDlgItem(Dialog,IDC_TASK_EVENT ),enable); - EnableWindow(GetDlgItem(Dialog,IDC_TASK_ONCE ),enable); - if not enable then - begin - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DAYST),SW_HIDE); - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DAYSV),SW_HIDE); - end; -end; - -procedure FillTaskList(wnd:HWND); -var - i:integer; - li:LV_ITEMW; -begin - SendMessage(wnd,LVM_DELETEALLITEMS,0,0); - for i:=0 to MaxTasks-1 do - begin - with TaskList[i] do - begin - if (flags and ACF_ASSIGNED)<>0 then - begin - li.mask :=LVIF_TEXT+LVIF_PARAM; - li.iSubItem:=0; - li.iItem :=i; - li.lParam :=i; - li.pszText :=name; - li.iItem :=SendMessageW(wnd,LVM_INSERTITEMW,0,LPARAM(@li)); - ListView_SetCheckState(wnd,li.iItem,(flags and ACF_DISABLED)=0); - end; - end; - end; - ListView_SetItemState(wnd,0, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); -end; - -procedure ClearTaskData(Dialog:HWND); -var - st:TSystemTime; -begin - SendMessage(GetDlgItem(Dialog,IDC_TASK_ABSOLUTE),CB_SETCURSEL,0,0); - CheckDlgButton(Dialog,IDC_TASK_BREAK ,BST_UNCHECKED); - CheckDlgButton(Dialog,IDC_TASK_EVENT ,BST_UNCHECKED); - CheckDlgButton(Dialog,IDC_TASK_ONCE ,BST_UNCHECKED); - EnableWindow(GetDlgItem(Dialog,IDC_TASK_ONCE),false); - - SetDlgItemInt(Dialog,IDC_TASK_DAYSV ,1,false); - SetDlgItemInt(Dialog,IDC_TASK_REPEAT,0,false); - - FillChar(st,SizeOf(st),0); - SendDlgItemMessage(Dialog,IDC_TASK_TIMEV ,DTM_SETSYSTEMTIME,GDT_VALID,lParam(@st)); - SendDlgItemMessage(Dialog,IDC_TASK_INTERVAL,DTM_SETSYSTEMTIME,GDT_VALID,lParam(@st)); -{ - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DATET),SW_SHOW); - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DATEV),SW_SHOW); - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DAYST),SW_HIDE); - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DAYSV),SW_HIDE); -} -end; - -procedure ShowDateType(Dialog:HWND;start:integer); -var - sh1,sh2,sh3:integer; -begin - case start of - 1: begin // start after - sh1:=SW_HIDE; - sh2:=SW_SHOW; - sh3:=SW_SHOW; - end; - 2: begin // start from - sh1:=SW_SHOW; - sh2:=SW_HIDE; - sh3:=SW_SHOW; - end; - else - begin -// 3: begin // start immediately - sh1:=SW_HIDE; - sh2:=SW_HIDE; - sh3:=SW_HIDE; - end; - end; - - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DATET),sh1); - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DATEV),sh1); - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DAYST),sh2); - ShowWindow(GetDlgItem(Dialog,IDC_TASK_DAYSV),sh2); - ShowWindow(GetDlgItem(Dialog,IDC_TASK_TIMET),sh3); - ShowWindow(GetDlgItem(Dialog,IDC_TASK_TIMEV),sh3); -end; - -procedure ShowTaskData(Dialog:HWND; item:integer=-1); -var - st:TSystemTime; - lwnd:HWND; - start:integer; -begin - lwnd:=settings; - settings:=0; - - ClearTaskData(Dialog); - - with TaskList[LV_GetLParam(GetDlgItem(Dialog,IDC_TASK_NAME),item)] do - begin - // flags - - if (flags and TCF_NONZEROBREAK)<>0 then - CheckDlgButton(Dialog,IDC_TASK_BREAK,BST_CHECKED); - if (flags and TCF_MAKEEVENT)<>0 then - CheckDlgButton(Dialog,IDC_TASK_EVENT,BST_CHECKED); - if (flags and TCF_EVENTONCE)<>0 then - CheckDlgButton(Dialog,IDC_TASK_ONCE,BST_CHECKED); - - EnableWindow(GetDlgItem(Dialog,IDC_TASK_ONCE), - IsDlgButtonChecked(Dialog,IDC_TASK_EVENT)<>BST_UNCHECKED); - - // action - CB_SelectData(GetDlgItem(Dialog,IDC_TASK_ACTION),action); - // times - FileTimeToSystemTime(starttime,st); - - if (flags and TCF_IMMEDIATELY)<>0 then - begin - start:=3; - end - else if (flags and TCF_ABSOLUTE)<>0 then - begin - start:=2; - SendDlgItemMessage(Dialog,IDC_TASK_DATEV,DTM_SETSYSTEMTIME,GDT_VALID,lParam(@st)) - end - else - begin - start:=1; - SetDlgItemInt(Dialog,IDC_TASK_DAYSV,dayoffset,false); - end; - CB_SelectData(GetDlgItem(Dialog,IDC_TASK_ABSOLUTE),start); - - SendDlgItemMessage(Dialog,IDC_TASK_TIMEV,DTM_SETSYSTEMTIME,GDT_VALID,lParam(@st)); - - SetDlgItemInt(Dialog,IDC_TASK_REPEAT,count,true); - - FileTimeToSystemTime(interval,st); - SendDlgItemMessage(Dialog,IDC_TASK_INTERVAL,DTM_SETSYSTEMTIME,GDT_VALID,lParam(@st)); - SetDlgItemInt(Dialog,IDC_TASK_INTDAYS,intdays,false); - end; - - ShowDateType(Dialog,start); - - settings:=lwnd; -end; - -procedure SaveTaskData(Dialog:HWND; item:integer=-1); -var - wnd:HWND; - li:LV_ITEM; - st,st1:TSystemTime; - tmp:longbool; -begin - wnd:=GetDlgItem(Dialog,IDC_TASK_NAME); - - if item<0 then - li.iItem:=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED) // LVNI_SELECTED - else - li.iItem:=item; - - if li.iItem>=0 then - begin - li.mask :=LVIF_PARAM; - li.iSubItem :=0; - SendMessageW(wnd,LVM_GETITEMW,0,LPARAM(@li)); - - with TaskList[li.lParam] do - begin - if (flags and ACF_ASSIGNED)<>0 then - begin - flags:=ACF_ASSIGNED; - // flags - if ListView_GetCheckState(wnd,li.iItem)=0 then - flags:=flags or ACF_DISABLED; - - if IsDlgButtonChecked(Dialog,IDC_TASK_BREAK)<>BST_UNCHECKED then - flags:=flags or TCF_NONZEROBREAK; - if IsDlgButtonChecked(Dialog,IDC_TASK_EVENT)<>BST_UNCHECKED then - begin - flags:=flags or TCF_MAKEEVENT; - if IsDlgButtonChecked(Dialog,IDC_TASK_ONCE )<>BST_UNCHECKED then - flags:=flags or TCF_EVENTONCE; - end; - // action - action:=CB_GetData(GetDlgItem(Dialog,IDC_TASK_ACTION)); - // times - SendDlgItemMessage(Dialog,IDC_TASK_TIMEV,DTM_GETSYSTEMTIME,0,lParam(@st)); - - case CB_GetData(GetDlgItem(Dialog,IDC_TASK_ABSOLUTE)) of - 1: begin - dayoffset:=GetDlgItemInt(Dialog,IDC_TASK_DAYSV,tmp,false); - end; - 2: begin - flags:=flags or TCF_ABSOLUTE; - SendDlgItemMessage(Dialog,IDC_TASK_DATEV,DTM_GETSYSTEMTIME,0,lParam(@st1)); - st.wYear :=st1.wYear; - st.wMonth :=st1.wMonth; - st.wDayOfWeek:=st1.wDayOfWeek; - st.wDay :=st1.wDay; - end; - 3: begin - flags:=flags or TCF_IMMEDIATELY; - end; - end; - SystemTimeToFileTime(st,starttime); - - count:=GetDlgItemInt(Dialog,IDC_TASK_REPEAT,tmp,true); - - SendDlgItemMessage(Dialog,IDC_TASK_INTERVAL,DTM_GETSYSTEMTIME,0,lParam(@st)); - SystemTimeToFileTime(st,interval); - intdays:=GetDlgItemInt(Dialog,IDC_TASK_INTDAYS,tmp,false); - end; - end; - end; -end; - -function NewTask(Dialog:HWND;item:integer=-1):integer; -var - wnd:HWND; - li:LV_ITEMW; -begin - wnd:=GetDlgItem(Dialog,IDC_TASK_NAME); - if item<0 then - li.iItem :=SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED)+1 - else - li.iItem :=item; - li.iSubItem:=0; - li.mask :=LVIF_TEXT + LVIF_PARAM; - li.lParam :=CreateNewTask; - li.pszText :=TranslateW('Task sample'); - result:=SendMessageW(wnd,LVM_INSERTITEMW,0,LPARAM(@li)); - - ListView_SetCheckState(wnd,li.iItem, - (TaskList[li.lParam].flags and ACF_DISABLED)=0); - StrDupW(TaskList[li.lParam].name,li.pszText); - - CheckTaskList(Dialog,true); - - if li.iItem=0 then - Listview_SetItemState(wnd,0,LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); -end; - -function DeleteTask(Dialog:HWND):integer; -var - li:LV_ITEM; - wnd:HWND; - i:integer; -begin - result:=0; - wnd:=GetDlgItem(Dialog,IDC_TASK_NAME); - for i:=ListView_GetItemCount(wnd)-1 downto 0 do - begin - if ListView_GetItemState(wnd,i,LVIS_SELECTED)<>0 then - begin - li.iItem :=i; - li.mask :=LVIF_PARAM; - li.iSubItem :=0; - SendMessageW(wnd,LVM_GETITEMW,0,LPARAM(@li)); - - TaskList[li.lParam].flags:=TaskList[li.lParam].flags and not ACF_ASSIGNED; - - SendMessage(wnd,LVM_DELETEITEM,i,0); - end; - end; - Listview_SetItemState(wnd,0,LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - - CheckTaskList(Dialog,false); -end; - -function NewHKTableProc(Dialog:HWnd;hMessage:UINT;wParam:WPARAM;lParam:LPARAM):lresult; stdcall; -var - i:integer; -begin - result:=0; - case hMessage of - WM_KEYDOWN: begin - if (lParam and (1 shl 30))=0 then - begin - case wParam of - VK_F2: begin - i:=SendMessage(Dialog,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); - if i>=0 then - PostMessageW(Dialog,LVM_EDITLABELW,i,0); - exit; - end; - - VK_INSERT: begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_TASK_NEW,0); - exit; - end; - - VK_DELETE: begin - PostMessage(GetParent(Dialog),WM_COMMAND,(BN_CLICKED shl 16)+IDC_TASK_DELETE,0); - exit; - end; - end; - end; - end; - end; - result:=CallWindowProc(OldTableProc,Dialog,hMessage,wParam,lParam); -end; - -procedure FillStartTimeList(wnd:HWND); -begin - SendMessage(wnd,CB_RESETCONTENT,0,0); - CB_AddStrDataW(wnd,TranslateW('Starting after' ),1); - CB_AddStrDataW(wnd,TranslateW('Starting from' ),2); - CB_AddStrDataW(wnd,TranslateW('Start immediately'),3); - SendMessage(wnd,CB_SETCURSEL,0,0); -end; - -procedure FillActionList(wnd:HWND); -var - ptr,ptr1:pChain; - i,cnt:integer; -begin - cnt:=CallService(MS_ACT_GETLIST,0,LPARAM(@ptr)); - SendMessage(wnd,CB_RESETCONTENT,0,0); - if cnt>0 then - begin - ptr1:=ptr; - inc(pbyte(ptr),4); - for i:=0 to cnt-1 do - begin - CB_AddStrDataW(wnd,ptr^.descr,ptr^.id); - inc(ptr); - end; - - CallService(MS_ACT_FREELIST,0,LPARAM(ptr1)); - SendMessage(wnd,CB_SETCURSEL,0,0); - end; -end; - -function ActListChange(wParam:WPARAM;lParam:LPARAM):integer; cdecl; -begin - result:=0; - if settings<>0 then - FillActionList(GetDlgItem(settings,IDC_TASK_ACTION)); -end; - -procedure SetIcons(Dialog:HWND); -var - ti:TTOOLINFOW; - hwndTooltip:HWND; -begin - hwndTooltip:=CreateWindowW(TOOLTIPS_CLASS,nil,TTS_ALWAYSTIP, - integer(CW_USEDEFAULT),integer(CW_USEDEFAULT), - integer(CW_USEDEFAULT),integer(CW_USEDEFAULT), - Dialog,0,hInstance,nil); - - FillChar(ti,SizeOf(ti),0); - ti.cbSize :=sizeof(TOOLINFO); - ti.uFlags :=TTF_IDISHWND or TTF_SUBCLASS; - ti.hwnd :=dialog; - ti.hinst :=hInstance; -{ - ti.uId :=GetDlgItem(Dialog,IDC_EVENT_HELP); - ti.lpszText:=TranslateW('Help'); - SendMessage(ti.uId,BM_SETIMAGE,IMAGE_ICON, - CallService(MS_SKIN_LOADICON,SKINICON_OTHER_HELP,0)); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,LPARAM(@ti)); -} - ti.uId :=GetDlgItem(Dialog,IDC_TASK_NEW); - ti.lpszText:=TranslateW('New'); - SetButtonIcon(ti.uId,ACI_NEW); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,LPARAM(@ti)); - - ti.uId :=GetDlgItem(Dialog,IDC_TASK_DELETE); - ti.lpszText:=TranslateW('Delete'); - SetButtonIcon(ti.uId,ACI_DELETE); - SendMessageW(hwndTooltip,TTM_ADDTOOLW,0,LPARAM(@ti)); -end; - -function DlgProcOpt(Dialog:HWnd;hMessage:UINT;wParam:WPARAM;lParam:LPARAM):lresult; stdcall; -var - wnd:HWND; - lv:LV_COLUMNW; - li:LV_ITEMW; - i:integer; -begin - result:=0; - case hMessage of - WM_CLOSE: begin - UnhookEvent(onactchanged); - settings:=0; - end; - - WM_INITDIALOG: begin - settings:=0; - wnd:=GetDlgItem(Dialog,IDC_TASK_NAME); - SendMessage(wnd,LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_CHECKBOXES,LVS_EX_CHECKBOXES); - SendMessage(wnd,LVM_SETUNICODEFORMAT,1,0); - zeromemory(@lv,sizeof(lv)); - lv.mask:=LVCF_WIDTH; - lv.cx :=110; - SendMessageW(wnd,LVM_INSERTCOLUMNW ,0,tlparam(@lv)); - SendMessageW(wnd,LVM_SETCOLUMNWIDTH,0,LVSCW_AUTOSIZE_USEHEADER); - - CreateUpDownControl( - WS_CHILD+WS_BORDER+WS_VISIBLE+UDS_ARROWKEYS+UDS_SETBUDDYINT+UDS_ALIGNRIGHT, - 190,112,14,18, - Dialog, IDC_TASK_UPDOWN, hInstance, GetDlgItem(Dialog,IDC_TASK_REPEAT), - 10000, -1, 0); - - OldTableProc:=pointer(SetWindowLongPtrW(wnd,GWL_WNDPROC,LONG_PTR(@NewHKTableProc))); - TranslateDialogDefault(Dialog); - - SetIcons(Dialog); - - FillActionList(GetDlgItem(Dialog,IDC_TASK_ACTION)); - FillStartTimeList(GetDlgItem(Dialog,IDC_TASK_ABSOLUTE)); - FillTaskList(wnd); - CheckTaskList(Dialog,false); - onactchanged:=HookEvent(ME_ACT_CHANGED,@ActListChange); - settings:=Dialog; - end; - - WM_COMMAND: begin - case wParam shr 16 of - CBN_SELCHANGE: begin - ShowDateType(Dialog,CB_GetData(lParam)); - end; - - EN_CHANGE: begin - end; - - BN_CLICKED: begin - case loword(wParam) of - IDC_TASK_NEW : NewTask(Dialog); - IDC_TASK_DELETE: DeleteTask(Dialog); - - IDC_TASK_EVENT: begin - EnableWindow(GetDlgItem(Dialog,IDC_TASK_ONCE), - IsDlgButtonChecked(Dialog,IDC_TASK_EVENT)<>BST_UNCHECKED); - end; - end; - end; - end; - if settings<>0 then - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - end; - - WM_NOTIFY: begin - case integer(PNMHdr(lParam)^.code) of - PSN_APPLY: begin - SaveTaskData(Dialog); - SaveTasks; - SetAllTasks; - end; - - DTN_DATETIMECHANGE: begin - if settings<>0 then - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - end; - - NM_DBLCLK: begin - if PNMListView(lParam)^.iItem>=0 then - PostMessageW(PNMHdr(lParam)^.hWndFrom,LVM_EDITLABELW, - PNMListView(lParam)^.iItem,0); - end; - - LVN_ITEMCHANGED: begin - if PNMLISTVIEW(lParam)^.uChanged=LVIF_STATE then - begin - i:=(PNMLISTVIEW(lParam)^.uOldState and LVNI_FOCUSED)- - (PNMLISTVIEW(lParam)^.uNewState and LVNI_FOCUSED); - - if i>0 then // old focus - SaveTaskData(Dialog,PNMLISTVIEW(lParam)^.iItem) - else if i<0 then // new focus - begin - ShowTaskData(Dialog,PNMLISTVIEW(lParam)^.iItem); - end - else if (settings<>0) and - ((PNMLISTVIEW(lParam)^.uOldState or PNMLISTVIEW(lParam)^.uNewState)=$3000) then - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - end; - end; - - LVN_ENDLABELEDITW: begin - with PLVDISPINFOW(lParam)^ do - begin - if item.pszText<>nil then - begin - item.mask:=LVIF_TEXT; - SendMessageW(hdr.hWndFrom,LVM_SETITEMW,0,TLPARAM(@item)); - - li.iItem :=item.iItem; - li.mask :=LVIF_PARAM; - li.iSubItem :=0; - SendMessageW(hdr.hWndFrom,LVM_GETITEMW,0,TLPARAM(@li)); - with TaskList[li.lParam] do - begin - mFreeMem(name); - StrDupW (name,item.pszText); - end; - end; - end; - result:=1; - end; - end; - end; - end; -end; diff --git a/plugins/!Deprecated/Actman20/tasks/i_options.inc b/plugins/!Deprecated/Actman20/tasks/i_options.inc deleted file mode 100644 index 527e8d0c88..0000000000 --- a/plugins/!Deprecated/Actman20/tasks/i_options.inc +++ /dev/null @@ -1,99 +0,0 @@ -{} -const - opt_task :PAnsiChar = 'Task'; - opt_tasks :PAnsiChar = 'Tasks'; - opt_count :PAnsiChar = 'numtasks'; - - opt_name :PAnsiChar = 'name'; - opt_flags :PAnsiChar = 'flags'; - opt_action :PAnsiChar = 'action'; - opt_repeat :PAnsiChar = 'repeat'; - opt_days :PAnsiChar = 'dayoffset'; - opt_intdays :PAnsiChar = 'intdays'; - - opt_time_lo :PAnsiChar = 'starttime_lo'; - opt_time_hi :PAnsiChar = 'starttime_hi'; - opt_interval_lo:PAnsiChar = 'interval_lo'; - opt_interval_hi:PAnsiChar = 'interval_hi'; - opt_lastcall_lo:PAnsiChar = 'lastcall_lo'; - opt_lastcall_hi:PAnsiChar = 'lastcall_hi'; - -procedure SaveTasks; -var - section:array [0..63] of AnsiChar; - p,p1:PAnsiChar; - i,amount:integer; -begin - DBDeleteGroup(0,DBBranch,opt_tasks); - amount:=0; - p1:=StrCopyE(section,opt_tasks); - p1^:='/'; inc(p1); - p1:=StrCopyE(p1,opt_task); - for i:=0 to MaxTasks-1 do - begin - if (TaskList[i].flags and ACF_ASSIGNED)=0 then - continue; - - p:=StrEnd(IntToStr(p1,amount)); - p^:='/'; inc(p); - with TaskList[i] do - begin - StrCopy(p,opt_flags ); DBWriteDWord (0,DBBranch,section,flags); - StrCopy(p,opt_name ); DBWriteUnicode(0,DBBranch,section,name); - StrCopy(p,opt_action); DBWriteDWord (0,DBBranch,section,action); - StrCopy(p,opt_repeat); DBWriteWord (0,DBBranch,section,count); - StrCopy(p,opt_days ); DBWriteByte (0,DBBranch,section,dayoffset); - //systemtime to filetime if needs - StrCopy(p,opt_time_lo ); DBWriteDWord(0,DBBranch,section,starttime.dwLowDateTime); - StrCopy(p,opt_time_hi ); DBWriteDWord(0,DBBranch,section,starttime.dwHighDateTime); - StrCopy(p,opt_interval_lo); DBWriteDWord(0,DBBranch,section,interval .dwLowDateTime); - StrCopy(p,opt_interval_hi); DBWriteDWord(0,DBBranch,section,interval .dwHighDateTime); - StrCopy(p,opt_intdays ); DBWriteByte (0,DBBranch,section,intdays); - StrCopy(p,opt_lastcall_lo); DBWriteDWord(0,DBBranch,section,lastcall .dwLowDateTime); - StrCopy(p,opt_lastcall_hi); DBWriteDWord(0,DBBranch,section,lastcall .dwHighDateTime); - end; - inc(amount); - end; - DBWriteByte(0,DBBranch,opt_count,amount); -end; - -function LoadTasks:integer; -var - section:array [0..63] of AnsiChar; - p,p1:PAnsiChar; - i:integer; -begin - MaxTasks:=DBReadByte(0,DBBranch,opt_count); - result:=MaxTasks; - if MaxTasks>0 then - begin - GetMem (TaskList ,MaxTasks*SizeOf(tTaskRec)); - FillChar(TaskList^,MaxTasks*SizeOf(tTaskRec),0); - p1:=StrCopyE(section,opt_tasks); - p1^:='/'; inc(p1); - p1:=StrCopyE(p1,opt_task); - for i:=0 to MaxTasks-1 do - begin - p:=StrEnd(IntToStr(p1,i)); - p^:='/'; inc(p); - - with TaskList[i] do - begin - StrCopy(p,opt_flags ); flags :=DBReadDWord (0,DBBranch,section); - StrCopy(p,opt_name ); name :=DBReadUnicode(0,DBBranch,section); - StrCopy(p,opt_action); action :=DBReadDWord (0,DBBranch,section); - StrCopy(p,opt_days ); dayoffset:=DBReadByte (0,DBBranch,section); - StrCopy(p,opt_repeat); count :=Shortint(DBReadWord(0,DBBranch,section)); - - StrCopy(p,opt_time_lo ); starttime.dwLowDateTime :=DBReadDWord(0,DBBranch,section); - StrCopy(p,opt_time_hi ); starttime.dwHighDateTime:=DBReadDWord(0,DBBranch,section); - StrCopy(p,opt_interval_lo); interval .dwLowDateTime :=DBReadDWord(0,DBBranch,section); - StrCopy(p,opt_interval_hi); interval .dwHighDateTime:=DBReadDWord(0,DBBranch,section); - StrCopy(p,opt_intdays ); intdays:=DBReadByte(0,DBBranch,section); - StrCopy(p,opt_lastcall_lo); lastcall .dwLowDateTime :=DBReadDWord(0,DBBranch,section); - StrCopy(p,opt_lastcall_hi); lastcall .dwHighDateTime:=DBReadDWord(0,DBBranch,section); - // filetime to systemtime if needs - end; - end; - end; -end; diff --git a/plugins/!Deprecated/Actman20/tasks/i_service.inc b/plugins/!Deprecated/Actman20/tasks/i_service.inc deleted file mode 100644 index 376e75cba0..0000000000 --- a/plugins/!Deprecated/Actman20/tasks/i_service.inc +++ /dev/null @@ -1,87 +0,0 @@ -{} -// wParam: 1/0 (enable/disable), lParam = task name -// works for all tasks with same started name -function TaskEnable(wParam:WPARAM;lParam:LPARAM):int_ptr;cdecl; -var - i,j:integer; -begin - result:=0; - if lParam=0 then exit; - j:=StrLenW(pWideChar(lParam)); - - for i:=0 to MaxTasks-1 do - begin - if (TaskList[i].flags and ACF_ASSIGNED)<>0 then - begin - if StrCmpW(TaskList[i].name,pWideChar(lParam),j)=0 then - begin - if wParam=0 then // disable - begin - if (TaskList[i].flags and ACF_DISABLED)=0 then - begin - inc(result); - TaskList[i].flags:=TaskList[i].flags or ACF_DISABLED; - if TaskList[i].timer<>0 then - begin - KillTimer(0,TaskList[i].timer); - TaskList[i].timer:=0; - end; - end; - end - else - begin - if (TaskList[i].flags and ACF_DISABLED)<>0 then - begin - inc(result); - TaskList[i].flags:=TaskList[i].flags and not ACF_DISABLED; - SetTask(TaskList[i]); - end; - end; - end; - end; - end; -end; - -function TaskDelete(wParam:WPARAM;lParam:LPARAM):int_ptr;cdecl; -var - i,j:integer; -begin - result:=0; - if lParam=0 then exit; - j:=StrLenW(pWideChar(lParam)); - - for i:=0 to MaxTasks-1 do - begin - if (TaskList[i].flags and ACF_ASSIGNED)<>0 then - begin - if StrCmpW(TaskList[i].name,pWideChar(lParam),j)=0 then - begin - TaskList[i].flags:=TaskList[i].flags and not ACF_ASSIGNED; - end; - end; - end; -end; - -function TaskCount(wParam:WPARAM;lParam:LPARAM):int_ptr;cdecl; -var - i,j:integer; -begin - result:=0; - if lParam=0 then exit; - j:=StrLenW(pWideChar(lParam)); - - for i:=0 to MaxTasks-1 do - begin - with TaskList[i] do - begin - if (flags and ACF_ASSIGNED)<>0 then - begin - if StrCmpW(name,pWideChar(lParam),j)=0 then - begin - result:=count; - count:=wParam; - end; - end; - end; - end; -end; diff --git a/plugins/!Deprecated/Actman20/tasks/i_task.inc b/plugins/!Deprecated/Actman20/tasks/i_task.inc deleted file mode 100644 index 2c860db85f..0000000000 --- a/plugins/!Deprecated/Actman20/tasks/i_task.inc +++ /dev/null @@ -1,242 +0,0 @@ -{} -const - ACF_ASSIGNED = $80000000; // Task assigned - ACF_DISABLED = $10000000; // Task disabled - - TCF_ABSOLUTE = $00000001; - TCF_IMMEDIATELY = $00000002; - TCF_NONZEROBREAK = $00000004; - TCF_MAKEEVENT = $00000008; - TCF_EVENTONCE = $00000010; - -const - WM_RESETTASKS = WM_USER+1312; - WM_FIRSTTASK = WM_USER+1313; - WM_LASTTASK = WM_FIRSTTASK+1000; - -type - pTaskRec = ^tTaskRec; - tTaskRec = record - // option values - flags :dword; - name :PWideChar; // name for task - action :dword; // assigned action - intdays, // interval,days - dayoffset :integer; //!! offset, days - starttime, // task starttime - interval :TFileTime; // interval for repeat - count :integer; // repeat count - // support values - lastcall :TFileTime; // last timer event time - nextcall :TFileTime; // ?? next start time? - // runtime values - timer :uint_ptr; // timer handle - curcount :integer; // repeat count - inprocess :bool; // starting processing - inaction :bool; // timer event processing - end; - pTaskList = ^tTaskList; - tTaskList = array [0..1023] of tTaskRec; - -var - TaskList:pTaskList = nil; - MaxTasks:integer = 0; - -procedure TimerProc(wnd:HWND;uMsg:uint;idEvent:uint_ptr;dwTime:dword); stdcall; -var - ltime:uint; - i:integer; - res:int_ptr; - st:tSystemTime; -begin - for i:=0 to MaxTasks-1 do - begin - with TaskList[i] do - begin - if (flags and (ACF_ASSIGNED or ACF_DISABLED))=ACF_ASSIGNED then - if timer=idEvent then - begin - inaction:=true; - if ((flags and TCF_MAKEEVENT)<>0) and - (((flags and TCF_EVENTONCE) =0) or (curcount=count)) then - NotifyEventHooks(hevent,count-curcount,lParam(name)); - - GetLocalTime(st); - SystemTimeToFileTime(st,lastcall); - - res:=CallService(MS_ACT_RUNBYID,action,0); - - if ((res<>0) and ((flags and TCF_NONZEROBREAK)<>0)) or // non-zero result - (count=0) or (curcount=0) then // no need to repeat or all repeats done - begin - KillTimer(0,idEvent); - timer:=0; - flags:=flags or ACF_DISABLED; - end - else - begin - if (count<>0) and (count=curcount) then // next timer - repeat interval - begin - KillTimer(0,idEvent); - FileTimeToSystemTime(interval,st); - ltime:={st.wMilliseconds+}st.wSecond*1000+st.wMinute*1000*60+st.wHour*60*60*1000; - timer:=SetTimer(0,0,ltime,@TimerProc); - if count=-1 then - curcount:=1; - end; - if count>0 then - dec(curcount); - end; - inaction:=false; - break; - end; - end; - end; -end; - -procedure SetTask(var task:tTaskRec); -var - ltime:uint; - uli1,uli2:ULARGE_INTEGER; - sft:tFileTime; - st:tSystemTime; - dif:int64; -begin - task.inprocess:=true; - // Check task time - if (task.flags and TCF_IMMEDIATELY)<>0 then - begin - FileTimeToSystemTime(task.interval,st); - ltime:={st.wMilliseconds+}st.wSecond*1000+st.wMinute*1000*60+ - st.wHour*60*60*1000; - end - else if (task.flags and TCF_ABSOLUTE)<>0 then - begin - uli1.LowPart :=task.starttime.dwLowDateTime; - uli1.HighPart:=task.starttime.dwHighDateTime; - GetLocalTime(st); - SystemTimeToFileTime(st,sft); - uli2.LowPart :=sft.dwLowDateTime; - uli2.HighPart:=sft.dwHighDateTime; - dif:=uli1.QuadPart-uli2.QuadPart; - if dif>0 then // time in future - ltime:=dif div 10000 // 100ns to 1 ms - else // was in past - begin - task.flags:=task.flags or ACF_DISABLED; - exit; - end; - end - else - begin - // days+hours+minutes+seconds+millseconds - FileTimeToSystemTime(task.starttime,st); - ltime:={st.wMilliseconds+}st.wSecond*1000+st.wMinute*1000*60+ - st.wHour*60*60*1000+task.dayoffset*24*60*60*1000; - end; - // set timer - task.curcount:=task.count; - task.timer :=SetTimer(0,0,ltime,@TimerProc); - - if (task.flags and TCF_IMMEDIATELY)<>0 then - TimerProc(0,WM_TIMER,task.timer,0); - task.inprocess:=false; -end; - -procedure SetAllTasks; -var - i:integer; -begin - for i:=0 to MaxTasks-1 do - begin - if (TaskList[i].flags and ACF_ASSIGNED)<>0 then - begin - if (TaskList[i].flags and ACF_DISABLED)=0 then - SetTask(TaskList[i]) - else if TaskList[i].timer<>0 then - begin - KillTimer(0,TaskList[i].timer); - TaskList[i].timer:=0; - end; - end; - end; -end; - -procedure StopAllTasks; -var - i:integer; -begin - for i:=0 to MaxTasks-1 do - begin - if (TaskList[i].flags and (ACF_ASSIGNED or ACF_DISABLED))=ACF_ASSIGNED then - if TaskList[i].timer<>0 then - begin - KillTimer(0,TaskList[i].timer); - TaskList[i].timer:=0; - end; - end; -end; - -procedure ClearTasks; -var - i:integer; -begin - for i:=0 to MaxTasks-1 do - begin - with TaskList[i] do - begin -//!! if (flags and ACF_ASSIGNED)<>0 then - mFreeMem(name); - end; - end; - FreeMem(TaskList); - MaxTasks:=0; -end; - -function CreateNewTask:integer; -var - i:integer; - tmp:pTaskList; - st:tSystemTime; -begin - result:=-1; - // if list is not empty, search for hole - if MaxTasks>0 then - begin - for i:=0 to MaxTasks-1 do - begin - if (TaskList[i].flags and ACF_ASSIGNED)=0 then - begin - FillChar(TaskList[i],SizeOf(tTaskRec),0); - result:=i; - break; - end; - end; - end; - if result<0 then - begin - // not found or empty list - i:=(MaxTasks+16)*SizeOf(tTaskRec); - GetMem (tmp ,i); - FillChar(tmp^,i,0); - if MaxTasks>0 then - begin - move(TaskList^,tmp^,MaxTasks*SizeOf(tTaskRec)); - FreeMem(TaskList); - end; - TaskList:=tmp; - result:=MaxTasks; - inc(MaxTasks,16); - end; - with TaskList^[result] do - begin - flags:=flags or ACF_ASSIGNED or ACF_DISABLED or TCF_ABSOLUTE; - GetLocalTime(st); - SystemTimeToFileTime(st,starttime); - //!!! CHEAT - st.wHour :=0; - st.wMinute:=0; - st.wSecond:=1; - SystemTimeToFileTime(st,interval); - end; -end; diff --git a/plugins/!Deprecated/Actman20/tasks/i_tconst.inc b/plugins/!Deprecated/Actman20/tasks/i_tconst.inc deleted file mode 100644 index f4df810d32..0000000000 --- a/plugins/!Deprecated/Actman20/tasks/i_tconst.inc +++ /dev/null @@ -1,27 +0,0 @@ -{resource constants} -const - IDD_TASKS = 2030; - - IDC_TASK_NAME = 1025; - - IDC_TASK_DATET = 1026; - IDC_TASK_DATEV = 1027; - IDC_TASK_DAYST = 1028; - IDC_TASK_DAYSV = 1029; - IDC_TASK_TIMET = 1030; - IDC_TASK_TIMEV = 1031; - - IDC_TASK_REPEAT = 1032; - IDC_TASK_BREAK = 1034; - IDC_TASK_INTERVAL = 1035; - IDC_TASK_EVENT = 1036; - IDC_TASK_ONCE = 1037; - IDC_TASK_UPDOWN = 1038; - IDC_TASK_ABSOLUTE = 1039; - - IDC_TASK_ACTION = 1040; - - IDC_TASK_INTDAYS = 1041; - - IDC_TASK_NEW = 1050; - IDC_TASK_DELETE = 1051; diff --git a/plugins/!Deprecated/Actman20/tasks/scheduler.pas b/plugins/!Deprecated/Actman20/tasks/scheduler.pas deleted file mode 100644 index 05e9cb6a58..0000000000 --- a/plugins/!Deprecated/Actman20/tasks/scheduler.pas +++ /dev/null @@ -1,86 +0,0 @@ -unit scheduler; - -interface - -procedure Init; -procedure DeInit; -function AddOptionPage(var tmpl:pAnsiChar;var proc:pointer;var name:PAnsiChar):integer; - -implementation - -uses - windows, commctrl, messages, - mirutils, common, dbsettings, io, m_api, wrapper, - global; - -{$R tasks.res} - -{$include m_actman.inc} - -var - hevent: THANDLE; - -{$include i_task.inc} -{$include i_tconst.inc} -{$include i_options.inc} -{$include i_opt_dlg.inc} -{$include i_service.inc} - -// ------------ base interface functions ------------- - -var - hendis, - hcount, - hdel: THANDLE; - -procedure Init; -begin - - if LoadTasks=0 then - begin - MaxTasks:=8; - GetMem (TaskList ,MaxTasks*SizeOf(tTaskRec)); - FillChar(TaskList^,MaxTasks*SizeOf(tTaskRec),0); - end - else - SetAllTasks; - - hcount:=CreateServiceFunction(MS_ACT_TASKCOUNT ,@TaskCount); - hendis:=CreateServiceFunction(MS_ACT_TASKENABLE,@TaskEnable); - hdel :=CreateServiceFunction(MS_ACT_TASKDELETE,@TaskDelete); - hevent:=CreateHookableEvent(ME_ACT_BELL); - -end; - -procedure DeInit; -begin - StopAllTasks; - DestroyServiceFunction(hendis); - DestroyServiceFunction(hdel); - DestroyServiceFunction(hcount); - ClearTasks; -end; - -function AddOptionPage(var tmpl:pAnsiChar;var proc:pointer;var name:PAnsiChar):integer; -begin - result:=0; - tmpl:=PAnsiChar(IDD_TASKS); - proc:=@DlgProcOpt; - name:='Scheduler'; -end; - -var - amLink:tActionLink; - -procedure InitLink; -begin - amLink.Next :=ActionLink; - amLink.Init :=@Init; - amLink.DeInit :=@DeInit; - amLink.AddOption:=@AddOptionPage; - ActionLink :=@amLink; -end; - -initialization - InitLink; -end. diff --git a/plugins/!Deprecated/Actman20/tasks/tasks.rc b/plugins/!Deprecated/Actman20/tasks/tasks.rc deleted file mode 100644 index 2bc558fbc3..0000000000 --- a/plugins/!Deprecated/Actman20/tasks/tasks.rc +++ /dev/null @@ -1,47 +0,0 @@ -#include "i_tconst.inc" - -LANGUAGE 0,0 - -IDD_TASKS DIALOGEX 0, 0, 304, 226, 0 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0 -{ - CONTROL "", IDC_TASK_NAME, "SysListView32", - WS_BORDER | WS_TABSTOP | - LVS_NOCOLUMNHEADER | LVS_SHOWSELALWAYS | LVS_REPORT | LVS_EDITLABELS,// | LVS_SINGLESEL, - 2, 2, 130, 174, WS_EX_CONTROLPARENT - - CTEXT "Action",-1 , 140, 2, 160, 12, SS_CENTERIMAGE - COMBOBOX IDC_TASK_ACTION, 140, 14, 160, 128, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL - - GROUPBOX "Start" , -1, 138, 30, 164, 54 - - COMBOBOX IDC_TASK_ABSOLUTE, 142, 40, 156, 60, CBS_DROPDOWNLIST | WS_VSCROLL - - CTEXT "Date", IDC_TASK_DATET, 140, 54, 76, 12, SS_CENTERIMAGE - CONTROL "Date", IDC_TASK_DATEV, "SysDateTimePick32", WS_TABSTOP, 150, 66, 56, 14 - - CTEXT "Days", IDC_TASK_DAYST, 140, 54, 76, 12, SS_CENTERIMAGE - EDITTEXT IDC_TASK_DAYSV, 162, 66, 32, 14 - - CTEXT "Time", IDC_TASK_TIMET, 220, 54, 76, 12, SS_CENTERIMAGE - CONTROL "Time", IDC_TASK_TIMEV, "SysDateTimePick32", WS_TABSTOP|$09, 230, 66, 56, 14 - - GROUPBOX "Repeat" , -1, 138, 88, 164, 88 - - CTEXT "Repeat, times", -1, 140, 98, 70, 14, SS_CENTERIMAGE - EDITTEXT IDC_TASK_REPEAT, 155, 114, 40, 14 - - CTEXT "Interval", -1, 212, 98, 84, 14, SS_CENTERIMAGE - EDITTEXT IDC_TASK_INTDAYS, 212, 114, 24, 14 - CONTROL "Interval", IDC_TASK_INTERVAL, "SysDateTimePick32", WS_TABSTOP|$09, 240, 114, 56, 14 - - AUTOCHECKBOX "Break on non-zero result", IDC_TASK_BREAK, 142, 132, 156, 14 - AUTOCHECKBOX "Send event on start time", IDC_TASK_EVENT, 142, 146, 156, 14 - AUTOCHECKBOX "Send event just once" , IDC_TASK_ONCE , 142, 160, 156, 14 - - CONTROL "New" ,IDC_TASK_NEW ,"MButtonClass",WS_TABSTOP, 2,178,16,16,$18000000 - CONTROL "Delete",IDC_TASK_DELETE,"MButtonClass",WS_TABSTOP,22,178,16,16,$18000000 -// CONTROL "Help" ,IDC_EVENT_HELP ,"MButtonClass",WS_TABSTOP,42,164,16,16,$18000000 -} diff --git a/plugins/!Deprecated/Actman20/tasks/tasks.res b/plugins/!Deprecated/Actman20/tasks/tasks.res deleted file mode 100644 index bc72f06406..0000000000 Binary files a/plugins/!Deprecated/Actman20/tasks/tasks.res and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ua/action.ico b/plugins/!Deprecated/Actman20/ua/action.ico deleted file mode 100644 index 06db21a127..0000000000 Binary files a/plugins/!Deprecated/Actman20/ua/action.ico and /dev/null differ diff --git a/plugins/!Deprecated/Actman20/ua/i_inoutxm.inc b/plugins/!Deprecated/Actman20/ua/i_inoutxm.inc deleted file mode 100644 index 098a262b1e..0000000000 --- a/plugins/!Deprecated/Actman20/ua/i_inoutxm.inc +++ /dev/null @@ -1,357 +0,0 @@ -{} -var - xmlparser:TXML_API_W; - -const - ioAction :PWideChar = 'Action'; - ioUA :PWideChar = 'UA'; - - ioName :PWideChar = 'name'; - - ioTwoState :PWideChar = 'twostate'; - ioSaveState :PWideChar = 'savestate'; - - ioHotkey :PWideChar = 'Hotkey'; - ioToolbar :PWideChar = 'Toolbar'; - ioTabSRMM :PWideChar = 'TabSRMM'; - ioMenuItem :PWideChar = 'Menu'; - - ioTooltip :PWideChar = 'tooltip'; - ioTooltipPressed :PWideChar = 'tt_pressed'; - - ioType :PWideChar = 'type'; - ioMenuPopup :PWideChar = 'Popup'; - ioMenuName :PWideChar = 'Name'; - ioMenuShow :PWideChar = 'Show'; - ioMenuUsed :PWideChar = 'Used'; - ioMenuSeparated :PWideChar = 'Separated'; - - -function ImportMenuItems(node:HXML;var MenuItem:tUAMenuItem):integer; -begin - result:=0; - - with xmlparser do - begin - with MenuItem do - begin - menu_opt:=0; - // popup - StrDupW(szMenuPopup,getAttrValue(node,ioMenuPopup)); - // name - StrDupW(szMenuNameVars,getAttrValue(node,ioMenuName)); - // show - StrDupW(szMenuShowWhenVars,getAttrValue(node,ioMenuShow)); - // used - if StrToInt(getAttrValue(node,ioMenuUsed))<>0 then - menu_opt:=menu_opt or UAF_MENUUSE; - // separated - if StrToInt(getAttrValue(node,ioMenuSeparated))<>0 then - menu_opt:=menu_opt or UAF_MENUSEP; - end; - end; -end; - -function ImportUAction(actnode:HXML;var UA:tMyActionItem):integer; -var - num,i:integer; - sub:HXML; -begin - result:=0; - if actnode=0 then exit; - - with xmlparser do - begin - // we don't need that node as is, just it's child for UA -// actnode:=GetNthChild(actnode,ioUA,0); - - UA.flags:=0; - // ----- Common ----- - if StrToInt(getAttrValue(actnode,ioTwoState))<>0 then - UA.flags:=UA.flags or UAF_2STATE; - - if StrToInt(getAttrValue(actnode,ioSaveState))<>0 then - UA.flags:=UA.flags or UAF_SAVESTATE; - - // sub:=AddChild(actnode,ioRegister,nil); - if StrToInt(getAttrValue(actnode,ioHotkey))<>0 then - UA.flags:=UA.flags or UAF_REGHOTKEY; - if StrToInt(getAttrValue(actnode,ioToolbar))<>0 then - UA.flags:=UA.flags or UAF_REGTTBB; - if StrToInt(getAttrValue(actnode,ioTabSRMM))<>0 then - UA.flags:=UA.flags or UAF_REGTABB; - - // ----- Hotkey ----- - // nothing - - // ----- Modern CList toolbar ----- - // source - ANSI text - sub:=GetNthChild(actnode,ioToolbar,0); - WideToAnsi(GetAttrValue(sub,ioTooltip ),UA.szTTBTooltip ,MirandaCP); - WideToAnsi(GetAttrValue(sub,ioTooltipPressed),UA.szTTBTooltipPressed,MirandaCP); - - // ----- TabSRMM toolbar ----- - sub:=GetNthChild(actnode,ioTabSRMM,0); - StrDupW(UA.szTabBTooltip ,getAttrValue(sub,ioTooltip)); - StrDupW(UA.szTabBTooltipPressed,getAttrValue(sub,ioTooltipPressed)); - - // ----- Menus ----- - num:=0; - repeat - sub:=getNextChild(actnode,ioMenuItem,@num); - if sub=0 then break; - - i:=StrToInt(getAttrValue(sub,ioType)); - ImportMenuItems(sub, - UA.UAMenuItem[tMenuType(i)]); - until false; - end; -end; - -function Import(fname:PWideChar;aflags:dword):integer; -var - i,j,act:integer; - root,actnode:HXML; - pcw,res:pWideChar; - f:THANDLE; - num,num1:integer; - ptr,ptr1:pChain; -begin - result:=0; - - if (fname=nil) or (fname^=#0) then - exit; - i:=GetFSize(fname); - if i=0 then - exit; - - num:=CallService(MS_ACT_GETLIST,0,LPARAM(@ptr)); - if num=0 then exit; - ptr1:=ptr; - - mGetMem (res ,i+SizeOf(WideChar)); - FillChar(res^,i+SizeOf(WideChar),0); - f:=Reset(fname); - BlockRead(f,res^,i); - CloseHandle(f); - - xmlparser.cbSize:={XML_API_SIZEOF_V1;//}SizeOf(TXML_API_W); - CallService(MS_SYSTEM_GET_XI,0,lparam(@xmlparser)); - with xmlparser do - begin - root:=parseString(ChangeUnicode(res),@i,nil); - j:=0; - repeat - actnode:=getNthChild(root,ioAction,j); - if actnode=0 then break; - // search id by name? - pcw:=GetAttrValue(actnode,ioName); - ptr:=ptr1; - inc(pbyte(ptr),4); - for i:=0 to num-1 do - begin - if (ptr.flags and ACCF_IMPORTED)<>0 then - begin - if StrCmpw(pcw,ptr.descr)=0 then - begin - // delete old UA for overwrited actions - if (ptr.flags and ACCF_OVERLOAD)<>0 then - begin - for act:=0 to HIGH(UActionList) do - begin - if ptr.id=UActionList[act].dwActID then - begin - DeleteUAction(act); - break; - end; - end; - end; - num1:=AddUAction(-1,ptr); - ImportUAction(getNthChild(actnode,ioUA,0),UActionList[num1]); - break; - end; - end; - inc(ptr); - end; - - inc(j); - until false; - - DestroyNode(root); - end; - CallService(MS_ACT_FREELIST,0,LPARAM(ptr1)); - mFreeMem(res); - result:=1; - if settings<>0 then - begin - FillActionList(settings); - ShowAction(settings,-1); - end; -end; - -//-------------------------- - -function ExportMenuItems(node:HXML;MenuItem:tUAMenuItem):HXML; -begin - with xmlparser do - begin - result:=AddChild(node,ioMenuItem,nil); - with MenuItem do - begin - // popup - if (szMenuPopup<>nil) and (szMenuPopup^<>#0) then - AddAttr(result,ioMenuPopup,szMenuPopup); - // name - if (szMenuNameVars<>nil) and (szMenuNameVars^<>#0) then - AddAttr(result,ioMenuName,szMenuNameVars); - // show - if (szMenuShowWhenVars<>nil) and (szMenuShowWhenVars^<>#0) then - AddAttr(result,ioMenuShow,szMenuShowWhenVars); - // used - AddAttrInt(result,ioMenuUsed,ord((menu_opt AND UAF_MENUUSE)<>0)); - // separated - AddAttrInt(result,ioMenuSeparated,ord((menu_opt AND UAF_MENUSEP)<>0)); - end; - end; -end; - -procedure WriteUAction(root:HXML;id:dword;name:pWideChar); -var - i:integer; - lmenu:tMenuType; - pc:pWideChar; - actnode,sub:HXML; - UA:pMyActionItem; -begin - with xmlparser do - begin - for i:=0 to HIGH(UActionList) do - begin - if UActionList[i].dwActID=id then - begin - UA:=@UActionList[i]; - actnode:=getChildByAttrValue(root,ioAction,ioName,name); - if actnode=0 then break; - // we don't need that node as is, just it's child for UA - actnode:=addChild(actnode,ioUA,nil); - - // ----- Common ----- - AddAttrInt(actnode,ioTwoState ,ORD((UA.flags and UAF_2STATE )<>0)); - AddAttrInt(actnode,ioSaveState,ORD((UA.flags and UAF_SAVESTATE)<>0)); - - // sub:=AddChild(actnode,ioRegister,nil); - AddAttrInt(actnode,ioHotkey ,ORD((UA.flags and UAF_REGHOTKEY)<>0)); - AddAttrInt(actnode,ioToolbar,ORD((UA.flags and UAF_REGTTBB )<>0)); - AddAttrInt(actnode,ioTabSRMM,ORD((UA.flags and UAF_REGTABB )<>0)); - - // ----- Hotkey ----- - // nothing - - // ----- Modern CList toolbar ----- - // source - ANSI text - if ((UA.szTTBTooltip <>nil) and (UA.szTTBTooltip^ <>#0)) or - ((UA.szTTBTooltipPressed<>nil) and (UA.szTTBTooltipPressed^<>#0)) then - begin - sub:=AddChild(actnode,ioToolbar,nil); - if (UA.szTTBTooltip<>nil) and (UA.szTTBTooltip^<>#0) then - begin - AnsiToWide(UA.szTTBTooltip,pc,MirandaCP); - AddAttr(sub,ioTooltip,pc); - mFreeMem(pc); - end; - if (UA.szTTBTooltipPressed<>nil) and (UA.szTTBTooltipPressed^<>#0) then - begin - AnsiToWide(UA.szTTBTooltipPressed,pc,MirandaCP); - AddAttr(sub,ioTooltipPressed,pc); - mFreeMem(pc); - end; - end; - - // ----- TabSRMM toolbar ----- - if ((UA.szTabBTooltip <>nil) and (UA.szTabBTooltip^ <>#0)) or - ((UA.szTabBTooltipPressed<>nil) and (UA.szTabBTooltipPressed^<>#0)) then - begin - sub:=AddChild(actnode,ioTabSRMM,nil); - if (UA.szTabBTooltip<>nil) and (UA.szTabBTooltip^<>#0) then - AddAttr(sub,ioTooltip,UA.szTabBTooltip); - if (UA.szTabBTooltipPressed<>nil) and (UA.szTabBTooltipPressed^<>#0) then - AddAttr(sub,ioTooltipPressed,UA.szTabBTooltipPressed); - end; - - // ----- Menus ----- - for lmenu:=main_menu to HIGH(tMenuType) do - begin - sub:=ExportMenuItems(actnode,UA.UAMenuItem[lmenu]); - AddAttrInt(sub,ioType,ORD(lmenu)); - end; - - break; - end; - end; - end; -end; - -function Export(fname:pWideChar;aflags:dword):integer; -var - i,num:integer; - f:THANDLE; - root:HXML; - res:pWideChar; - ptr,ptr1:pChain; -begin - result:=0; - xmlparser.cbSize:={XML_API_SIZEOF_V1;//}SizeOf(TXML_API_W); - CallService(MS_SYSTEM_GET_XI,0,lparam(@xmlparser)); - with xmlparser do - begin - // we need append file, not rewrite - i:=GetFSize(fname); - if i=0 then exit; - - mGetMem (res ,i+SizeOf(WideChar)); - FillChar(res^,i+SizeOf(WideChar),0); - f:=Reset(fname); - BlockRead(f,res^,i); - CloseHandle(f); - root:=parseString(res,@i,nil); - mFreeMem(res); - - num:=CallService(MS_ACT_GETLIST,0,LPARAM(@ptr)); - if num>0 then - begin - ptr1:=ptr; - inc(pbyte(ptr),4); - for i:=0 to num-1 do - begin - if ((aflags and ACIO_SELECTED)=0) or - ((ptr.flags and ACCF_EXPORT)<>0) then - begin - WriteUAction(root,ptr.id,ptr.descr); - end; - inc(ptr); - end; - CallService(MS_ACT_FREELIST,0,LPARAM(ptr1)); - end; - - res:=toString(root,@i); - - f:=Rewrite(fname); - BlockWrite(f,res^,i*SizeOf(WideChar)); - CloseHandle(f); - xmlparser.FreeMem(res); - DestroyNode(root); - end; - result:=1; -end; - -function ActInOut(wParam:WPARAM;lParam:LPARAM):int_ptr; cdecl; -begin - if (wParam and ACIO_EXPORT)=0 then - begin - result:=Import(pWideChar(lParam),wParam); - end - else - begin - result:=Export(pWideChar(lParam),wParam); - end; -end; diff --git a/plugins/!Deprecated/Actman20/ua/i_opt_dlg.inc b/plugins/!Deprecated/Actman20/ua/i_opt_dlg.inc deleted file mode 100644 index e9d7dc5048..0000000000 --- a/plugins/!Deprecated/Actman20/ua/i_opt_dlg.inc +++ /dev/null @@ -1,571 +0,0 @@ -{} -const - settings:HWND = 0; -const - NumControls = 17; - - IDsArray:array [0..NumControls-1] of integer =( - // Menu settings controls - IDC_UA_SEPARATE ,IDC_UA_POPUPT ,IDC_UA_POPUPV, - IDC_UA_VARNAMEST,IDC_UA_VARNAMESV,IDC_UA_VARNAMESH, - IDC_UA_SHOWVART ,IDC_UA_SHOWVARV ,IDC_UA_SHOWVARH, - IDC_UA_TWOSTATE ,IDC_UA_SAVSTATE ,IDC_UA_COMMON, - // toolbar settings controls - IDC_UA_TTNORMALT,IDC_UA_TTNORMALV,IDC_UA_TTPRESSEDT,IDC_UA_TTPRESSEDV, - IDC_UA_GLOBAL - ); - - // Show-hide controls by place type - SHArray:array [0..NumTypes-1, 0..NumControls-1] of integer = ( - // CList Modern toolbar - (SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE,SW_HIDE,SW_HIDE, SW_SHOW,SW_SHOW,SW_SHOW, - SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW,SW_SHOW, SW_HIDE), - // TabSRMM toolbar - (SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE,SW_HIDE,SW_HIDE, - SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW), - // Core Hotkey - (SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE,SW_HIDE,SW_HIDE, - SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE,SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE), - // Main menu - (SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, - SW_SHOW,SW_SHOW,SW_SHOW, SW_HIDE,SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE), - // Contact menu - (SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, - SW_SHOW,SW_SHOW,SW_SHOW, SW_HIDE,SW_HIDE,SW_HIDE,SW_HIDE, SW_SHOW), - // Tray menu - (SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, - SW_SHOW,SW_SHOW,SW_SHOW, SW_HIDE,SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE), - // Protocol menu - (SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, - SW_SHOW,SW_SHOW,SW_SHOW, SW_HIDE,SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE), - // Status menu - (SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, - SW_SHOW,SW_SHOW,SW_SHOW, SW_HIDE,SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE) - ); - // additional show/hide controls check by Variables installings (1 - need to check) - SHVarArray:array [0..NumControls-1] of byte = ( - 0,0,0, 0,0,1, 1,1,1, - 0,0,0,0,0,0,0, 0); - // additional enable/disable controls check (1 - always enable) - EnDisArray:array [0..NumControls-1] of byte = ( - 0,0,0, 0,0,0, 0,0,0, - 1,1,1,0,0,0,0, 1); - -var - hIC:THANDLE; - -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; - -function CompareItem(lParam1,lParam2:LPARAM;SortType:LPARAM):int; stdcall; -begin - result:=UActionList[lParam1].wSortIndex-UActionList[lParam2].wSortIndex; -end; - -// Show or hide option items -procedure SetupControls(Dialog:HWND;atype:integer;item:integer=-1); -var - i: cardinal; - typ:integer; - wnd,wnd1:HWND; - enable:boolean; -begin - if atype<0 then - begin - for i:=0 to NumControls-1 do - begin - ShowWindow(GetDlgItem(Dialog,IDsArray[i]),SW_HIDE); - end; - end - else - begin - wnd1:=GetDlgItem(Dialog,IDC_UA_PLACELIST); - if item<0 then - item:=SendMessage(wnd1,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); - enable:=ListView_GetCheckState(wnd1,item)<>0; - - for i:=0 to NumControls-1 do - begin - typ:=SHArray[LoByte(atype)+HiByte(atype)][i]; - if typ=SW_SHOW then - if (SHVarArray[i]<>0) and (not IsVarsInstalled) then - typ:=SW_HIDE; - wnd:=GetDlgItem(Dialog,IDsArray[i]); - ShowWindow(wnd,typ); - EnableWindow(wnd,enable or (EnDisArray[i]<>0)); - end; - - // common settings - EnableWindow(GetDlgItem(Dialog,IDC_UA_SAVSTATE), - IsDlgButtonChecked(Dialog,IDC_UA_TWOSTATE)<>BST_UNCHECKED); - - // personal settings - case LoByte(atype) of - uaTTB, uaTAB: begin - enable:=false; - if IsDlgButtonChecked(Dialog,IDC_UA_TWOSTATE)<>BST_UNCHECKED then - if IsWindowEnabled(GetDlgItem(Dialog,IDC_UA_TTNORMALV)) then - enable:=true; - EnableWindow(GetDlgItem(Dialog,IDC_UA_TTPRESSEDV),enable); - end; - end; - end; -end; - -// Clear all screen buttons/text fields (reset) -procedure ClearControls(Dialog:HWND); -var - s:HWND; -begin - s:=settings; - settings:=0; - CheckDlgButton (Dialog,IDC_UA_TWOSTATE ,BST_UNCHECKED); - CheckDlgButton (Dialog,IDC_UA_SAVSTATE ,BST_UNCHECKED); - - CheckDlgButton (Dialog,IDC_UA_SEPARATE ,BST_UNCHECKED); - SetDlgItemTextW(Dialog,IDC_UA_POPUPV ,nil); - SetDlgItemTextW(Dialog,IDC_UA_VARNAMESV,nil); - SetDlgItemTextW(Dialog,IDC_UA_SHOWVARV ,nil); - settings:=s; -end; - -procedure ShowSubAction(Dialog:HWND;aType:integer;item:integer=-1); -var - UA:pMyActionItem; - s:HWND; -begin - s:=settings; - settings:=0; - ClearControls(Dialog); - - // get UAction number - item:=LV_GetLParam(GetDlgItem(Dialog,IDC_UA_ACTIONLIST),item); - - UA:=@UActionList[item]; - - // common settings - if (UA.flags and UAF_2STATE)<>0 then - CheckDlgButton(Dialog,IDC_UA_TWOSTATE,BST_CHECKED); - - if (UA.flags and UAF_SAVESTATE)<>0 then - CheckDlgButton(Dialog,IDC_UA_SAVSTATE,BST_CHECKED); - - if (UA.flags and UAF_GLOBAL)=0 then - CheckDlgButton(Dialog,IDC_UA_GLOBAL,BST_CHECKED); - - // Show real UA settings - case LoByte(aType) of - uaTTB: begin // CList modern toolbar - SetDlgItemTextA(Dialog,IDC_UA_TTNORMALV ,UA.szTTBTooltip); - SetDlgItemTextA(Dialog,IDC_UA_TTPRESSEDV,UA.szTTBTooltipPressed); - SetDlgItemTextW(Dialog,IDC_UA_SHOWVARV ,UA.szTTBShowWhenVars); - end; - - uaTAB: begin // TabSRMM toolbar - SetDlgItemTextW(Dialog,IDC_UA_TTNORMALV ,UA.szTabBTooltip); - SetDlgItemTextW(Dialog,IDC_UA_TTPRESSEDV,UA.szTabBTooltipPressed); - end; - - uaMenu: begin - with UA.UAMenuItem[tMenuType(HiByte(aType))] do - begin - if (menu_opt and UAF_MENUSEP)<>0 then - CheckDlgButton(Dialog,IDC_UA_SEPARATE,BST_CHECKED); - SetDlgItemTextW(Dialog,IDC_UA_POPUPV ,szMenuPopup); - SetDlgItemTextW(Dialog,IDC_UA_VARNAMESV,szMenuNameVars); - SetDlgItemTextW(Dialog,IDC_UA_SHOWVARV ,szMenuShowWhenVars); - end; - end; - - uaHotkey: begin // Hotkey - // Settings in Customize/Hotkeys - end; - end; - SetupControls(Dialog,aType,-1); - settings:=s; -end; - -function isPlaceActive(idx,place:integer):boolean; -begin - result:=false; - with UActionList[idx] do - case LoByte(place) of - uaTTB : result:=(flags and UAF_REGTTBB)<>0; - uaTAB : result:=(flags and UAF_REGTABB)<>0; - uaHotkey : result:=(flags and UAF_REGHOTKEY)<>0; - uaMenu: begin - result:=(UAMenuItem[tMenuType(HiByte(place))].menu_opt and UAF_MENUUSE)<>0 - end; - end; -end; - -procedure ShowAction(Dialog:HWND;item:integer=-1); -var - i,j:integer; - wnd:HWND; - li:LV_ITEMW; - buf:array [0..255] of WideChar; - lset:HWND; -begin - wnd:=GetDlgItem(Dialog,IDC_UA_PLACELIST); - SendMessage(wnd,LVM_DELETEALLITEMS,0,0); - j:=LV_GetLParam(GetDlgItem(Dialog,IDC_UA_ACTIONLIST),item); - if j>=0 then - begin - with UActionList[j] do - begin - lset:=settings; - settings:=0; - // make "places" list - for i:=0 to NumTypes-1 do - begin - with NamesArray[i] do - begin - if enable then // cached ability flag - begin - li.mask :=LVIF_TEXT+LVIF_PARAM; - li.iSubItem:=0; - li.iItem :=i; - li.lParam :=atype; //!!!!!! need to add subtype - li.pszText :=TranslateW(FastAnsiToWideBuf(name,buf)); - li.iItem :=SendMessageW(wnd,LVM_INSERTITEMW,0,LPARAM(@li)); - - ListView_SetCheckState(wnd,li.iItem,isPlaceActive(j,atype)); - end; - end; - end; - ListView_SetItemState(wnd,0, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); - // show first selected "place" - ShowSubAction(Dialog,LV_GetLParam(wnd)); - settings:=lset; - end; - end - else - begin - ClearControls(Dialog); - SetupControls(Dialog,-1,-1); - end; -end; - -procedure SetChangedFlag(Dialog:HWND); -var - num,atype:integer; -begin - num :=LV_GetLParam(GetDlgItem(Dialog,IDC_UA_ACTIONLIST),-1); - atype:=LV_GetLParam(GetDlgItem(Dialog,IDC_UA_PLACELIST ),-1); - UActionList[num].UAMenuItem[tMenuType(HiByte(atype))].changed:=true; -end; - -procedure SaveMenuSubAction(Dialog:HWND;var MenuItem:tUAMenuItem); -begin - with MenuItem do - begin - mFreeMem(szMenuPopup ); szMenuPopup :=GetDlgText(Dialog,IDC_UA_POPUPV); - mFreeMem(szMenuNameVars ); szMenuNameVars :=GetDlgText(Dialog,IDC_UA_VARNAMESV); - mFreeMem(szMenuShowWhenVars); szMenuShowWhenVars:=GetDlgText(Dialog,IDC_UA_SHOWVARV); - menu_opt:=0; - if IsDlgButtonchecked(Dialog,IDC_UA_SEPARATE)<>BST_UNCHECKED then - menu_opt:=menu_opt or UAF_MENUSEP; - end; -end; - -procedure SetPlaceActive(idx,place:integer;active:boolean); -begin - with UActionList[idx] do - case LoByte(place) of - uaTTB : if active then flags:=flags or UAF_REGTTBB else flags:=flags and not UAF_REGTTBB; - uaTAB : if active then flags:=flags or UAF_REGTABB else flags:=flags and not UAF_REGTABB; - uaHotkey: if active then flags:=flags or UAF_REGHOTKEY else flags:=flags and not UAF_REGHOTKEY; - uaMenu : - with UAMenuItem[tMenuType(HiByte(place))] do - if active then menu_opt:=menu_opt or UAF_MENUUSE - else menu_opt:=menu_opt and not UAF_MENUUSE; - end; -end; - -procedure SaveAction(Dialog:HWND;item:integer=-1;atype:integer=-1); -var - i,num:integer; - wnd:HWND; -begin - num:=LV_GetLParam(GetDlgItem(Dialog,IDC_UA_ACTIONLIST),item); - if num<0 then exit; - - wnd:=GetDlgItem(Dialog,IDC_UA_PLACELIST); - atype:=LV_GetLParam(wnd,atype); - with UActionList[num] do - begin - // main flags - flags:=flags and not UAF_USING; - // common section - if IsDlgButtonChecked(Dialog,IDC_UA_TWOSTATE)<>BST_UNCHECKED then - flags:=flags or UAF_2STATE - else - flags:=flags and not UAF_2STATE; - - if IsDlgButtonChecked(Dialog,IDC_UA_SAVSTATE)<>BST_UNCHECKED then - flags:=flags or UAF_SAVESTATE - else - flags:=flags and not UAF_SAVESTATE; - - if IsDlgButtonChecked(Dialog,IDC_UA_GLOBAL)=BST_UNCHECKED then - flags:=flags or UAF_GLOBAL - else - flags:=flags and not UAF_GLOBAL; - - // custom data - case LoByte(atype) of - uaTTB: begin // CList modern toolbar - mFreeMem(szTTBTooltip ); szTTBTooltip :=GetDlgText(Dialog,IDC_UA_TTNORMALV ,true); - mFreeMem(szTTBTooltipPressed); szTTBTooltipPressed:=GetDlgText(Dialog,IDC_UA_TTPRESSEDV,true); - mFreeMem(szTTBShowWhenVars ); szTTBShowWhenVars :=GetDlgText(Dialog,IDC_UA_SHOWVARV); - end; - - uaTAB: begin // TabSRMM toolbar - mFreeMem(szTabBTooltip ); szTabBTooltip :=GetDlgText(Dialog,IDC_UA_TTNORMALV); - mFreeMem(szTabBTooltipPressed); szTabBTooltipPressed:=GetDlgText(Dialog,IDC_UA_TTPRESSEDV); - end; - - uaMenu: SaveMenuSubAction(Dialog,UAMenuItem[tMenuType(HiByte(atype))]); - - uaHotkey: begin // Hotkey - // Settings in Customize/Hotkeys - end; - end; - for i:=0 to SendMessage(wnd,LVM_GETITEMCOUNT,0,0)-1 do - begin - SetPlaceActive(num,LV_GetLParam(wnd,i),ListView_GetCheckState(wnd,i)<>0); - end; - //just after Action (not place) changes - if item<0 then - SaveUA(num); - end; -end; - -procedure FillActionList(wnd:HWND); -var - i:integer; - li:LV_ITEMW; - il:HIMAGELIST; - lmenu:tMenuType; -begin - wnd:=GetDlgItem(wnd,IDC_UA_ACTIONLIST); - SendMessage(wnd,LVM_DELETEALLITEMS,0,0); - - il:=ImageList_Create(16,16,ILC_COLOR32 or ILC_MASK,0,1); - for i:=0 to HIGH(UActionList) do - begin - li.mask :=LVIF_TEXT+LVIF_PARAM+LVIF_IMAGE; - li.iSubItem:=0; - li.iItem :=i; - li.lParam :=i; - li.pszText :=UActionList[i].szActDescr; - li.iImage:=ImageList_AddIcon(il, - HICON(CallService(MS_SKIN2_GETICONBYHANDLE,0,LPARAM(UActionList[i].hIcolibIcon)))); - li.iItem :=SendMessageW(wnd,LVM_INSERTITEMW,0,LPARAM(@li)); - - for lmenu:=main_menu to HIGH(tMenuType) do - UActionList[i].UAMenuItem[lmenu].changed:=false; - end; - ImageList_Destroy(SendMessage(wnd,LVM_SETIMAGELIST,LVSIL_SMALL,il)); - - SendMessage(wnd,LVM_SORTITEMS,0,LPARAM(@CompareItem)); - - ListView_SetItemState(wnd,0, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED); -end; - -// refresh icons in UA list (at least) -function IconChanged(wParam:WPARAM;lParam:LPARAM):int;cdecl; -var - i:integer; - li:LV_ITEMW; - il:HIMAGELIST; - wnd:HWND; -begin - result:=0; - wnd:=GetDlgItem(settings,IDC_UA_ACTIONLIST); - - il:=ImageList_Create(16,16,ILC_COLOR32 or ILC_MASK,0,1); - for i:=0 to HIGH(UActionList) do - begin - li.mask :=LVIF_IMAGE; - li.iSubItem:=0; - li.iItem :=i; - li.iImage:=ImageList_AddIcon(il, - HICON(CallService(MS_SKIN2_GETICONBYHANDLE,0,TLPARAM(UActionList[i].hIcolibIcon)))); - SendMessageW(wnd,LVM_SETITEM,0,TLPARAM(@li)); - end; - ImageList_Destroy(SendMessage(wnd,LVM_SETIMAGELIST,LVSIL_SMALL,il)); -//!!refresh? -end; - -function DlgProcOpt(Dialog:HWnd;hMessage:UINT;wParam:WPARAM;lParam:LPARAM):lresult; stdcall; -var - wnd:HWND; - lv:LV_COLUMNW; - i:integer; -begin - result:=0; - case hMessage of - WM_CLOSE: begin - settings:=0; - UnhookEvent(hIC); - end; - - WM_INITDIALOG: begin - settings:=0; - TranslateDialogDefault(Dialog); - - wnd:=GetDlgItem(Dialog,IDC_UA_PLACELIST); - SendMessage(wnd,LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_CHECKBOXES,LVS_EX_CHECKBOXES); - SendMessage(wnd,LVM_SETUNICODEFORMAT,1,0); - zeromemory(@lv,sizeof(lv)); - lv.mask:=LVCF_WIDTH; - lv.cx :=110; - SendMessageW(wnd,LVM_INSERTCOLUMNW ,0,tlparam(@lv)); - SendMessageW(wnd,LVM_SETCOLUMNWIDTH,0,LVSCW_AUTOSIZE_USEHEADER); - - wnd:=GetDlgItem(Dialog,IDC_UA_ACTIONLIST); -// SendMessage(wnd,LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_CHECKBOXES,LVS_EX_CHECKBOXES); - SendMessage(wnd,LVM_SETUNICODEFORMAT,1,0); - zeromemory(@lv,sizeof(lv)); - lv.mask:=LVCF_WIDTH; - lv.cx :=110; - SendMessageW(wnd,LVM_INSERTCOLUMNW ,0,tlparam(@lv)); - SendMessageW(wnd,LVM_SETCOLUMNWIDTH,0,LVSCW_AUTOSIZE_USEHEADER); - FillActionList(Dialog); - ShowAction(Dialog,-1); - -// if isVarsInstalled then - begin - SendDlgItemMessage(Dialog,IDC_UA_VARNAMESH,BM_SETIMAGE,IMAGE_ICON, - CallService(MS_VARS_GETSKINITEM,0,VSI_HELPICON)); - SendDlgItemMessage(Dialog,IDC_UA_SHOWVARH,BM_SETIMAGE,IMAGE_ICON, - CallService(MS_VARS_GETSKINITEM,0,VSI_HELPICON)); -// SendDlgItemMessage(Dialog,IDC_UA_VARNAMESH,BUTTONSETASFLATBTN,0,0); -// SendDlgItemMessage(Dialog,IDC_UA_SHOWVARH ,BUTTONSETASFLATBTN,0,0); - end; - - settings:=Dialog; - hIC:=HookEvent(ME_SKIN2_ICONSCHANGED,@IconChanged); - end; - - WM_COMMAND: begin - case wParam shr 16 of - EN_CHANGE: begin - if settings<>0 then - begin - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - if loword(wParam)=IDC_UA_POPUPV then - SetChangedFlag(Dialog); - end; - end; - - BN_CLICKED: begin - if settings<>0 then - begin - case loword(wParam) of - IDC_UA_TWOSTATE: begin - SetupControls(Dialog, - LV_GetLParam(GetDlgItem(Dialog,IDC_UA_PLACELIST)),-1); - { - EnableWindow(GetDlgItem(Dialog,IDC_UA_TTPRESSEDV), - IsDlgButtonChecked(Dialog,IDC_UA_TWOSTATE)<>BST_UNCHECKED); - } - if IsDlgButtonChecked(Dialog,IDC_UA_TWOSTATE)=BST_UNCHECKED then - DeleteIcolibIconP( - UActionList[LV_GetLParam(GetDlgItem(Dialog,IDC_UA_ACTIONLIST),-1)]) - else - AddIcolibIconP( - UActionList[LV_GetLParam(GetDlgItem(Dialog,IDC_UA_ACTIONLIST),-1)]); - - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - end; - - IDC_UA_VARNAMESH: ShowVarHelp(Dialog,IDC_UA_VARNAMESV); - IDC_UA_SHOWVARH : ShowVarHelp(Dialog,IDC_UA_SHOWVARV); - - IDC_UA_SAVSTATE, - IDC_UA_GLOBAL: SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - - IDC_UA_SEPARATE: begin - SetChangedFlag(Dialog); - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - end; - end; - end; - end; - end; - end; - - WM_NOTIFY: begin - case integer(PNMHdr(lParam)^.code) of - PSN_APPLY: begin - SaveAction(Dialog); - SaveUAs; - FillChar(arMenuRec[0],Length(arMenuRec)*SizeOf(tuaMenuRecA),0); - for i:=0 to HIGH(UActionList) do - begin - SetAllActionUsers(UActionList[i],false); - end; - end; - - LVN_ITEMCHANGED: begin - if settings=0 then exit; - if PNMLISTVIEW(lParam)^.uChanged=LVIF_STATE then - begin - i:=(PNMLISTVIEW(lParam)^.uOldState and LVNI_FOCUSED)- - (PNMLISTVIEW(lParam)^.uNewState and LVNI_FOCUSED); - - if i>0 then // old focus - begin - if wParam=IDC_UA_ACTIONLIST then - SaveAction(Dialog,PNMLISTVIEW(lParam)^.iItem) - else //if wParam=IDC_UA_PLACELIST then - SaveAction(Dialog,-1,PNMLISTVIEW(lParam)^.iItem); - end - else if i<0 then // new focus - begin - if wParam=IDC_UA_ACTIONLIST then - ShowAction(Dialog,PNMLISTVIEW(lParam)^.iItem) - else//if wParam=IDC_UA_PLACELIST then - ShowSubAction(Dialog, - LV_GetLParam(GetDlgItem(Dialog,IDC_UA_PLACELIST), - PNMLISTVIEW(lParam)^.iItem)); - end - else if (settings<>0) and - ((PNMLISTVIEW(lParam)^.uOldState or PNMLISTVIEW(lParam)^.uNewState)=$3000) then - begin - // which type - wnd:=GetDlgItem(Dialog,IDC_UA_PLACELIST); - if PNMLISTVIEW(lParam)^.iItem<> - SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED) then - ListView_SetItemState(wnd,PNMLISTVIEW(lParam)^.iItem, - LVIS_FOCUSED or LVIS_SELECTED, - LVIS_FOCUSED or LVIS_SELECTED) - else - SetupControls(Dialog,LV_GetLParam(wnd,PNMLISTVIEW(lParam)^.iItem), - PNMLISTVIEW(lParam)^.iItem); - - SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); - end; - end; - end; - end; - end; - end; -end; diff --git a/plugins/!Deprecated/Actman20/ua/i_options.inc b/plugins/!Deprecated/Actman20/ua/i_options.inc deleted file mode 100644 index 91f54e89d8..0000000000 --- a/plugins/!Deprecated/Actman20/ua/i_options.inc +++ /dev/null @@ -1,337 +0,0 @@ -{} -const - opt_TTBTooltip :pAnsiChar = 'MTBTooltip'; - opt_TTBTooltipPressed :pAnsiChar = 'MTBTooltipPressed'; - opt_TTBShowWhenVars :pAnsiChar = 'MTBVarStr'; - - opt_TabBTooltip :pAnsiChar = 'TabBTooltip'; - opt_TabBTooltipPressed:pAnsiChar = 'TabBTooltipPressed'; - - opt_MenuPopup :pAnsiChar = 'MenuPopup'; - opt_MenuNameVars :pAnsiChar = 'MenuName'; - opt_MenuShowWhenVars:pAnsiChar = 'MenuVarStr'; - opt_MenuOptions :pAnsiChar = 'MenuOptions'; - -{} -procedure DeleteUASettings(idx:integer); -var - setting:array [0..63] of AnsiChar; - p,pm:pAnsiChar; - lmenu:tMenuType; -begin - with UActionList[idx] do - begin - p:=GetUABranch(setting,dwActID); - if p<>nil then - begin - p:=StrCopyE(p,opt_UA); - p^:='/'; inc(p); - - StrCopy(p,opt_Flags); DBDeleteSetting(0,DBBranch,setting); - - StrCopy(p,opt_TTBTooltip ); DBDeleteSetting(0,DBBranch,setting); - StrCopy(p,opt_TTBTooltipPressed ); DBDeleteSetting(0,DBBranch,setting); - StrCopy(p,opt_TTBShowWhenVars ); DBDeleteSetting(0,DBBranch,setting); - - StrCopy(p,opt_TabBTooltip ); DBDeleteSetting(0,DBBranch,setting); - StrCopy(p,opt_TabBTooltipPressed); DBDeleteSetting(0,DBBranch,setting); - - for lmenu:=main_menu to HIGH(tMenuType) do - begin - pm:=p; - pm^:=AnsiChar(ORD(lmenu)+ORD('0')); inc(pm); - pm^:='_'; inc(pm); - StrCopy(pm,opt_MenuPopup ); DBDeleteSetting(0,DBBranch,setting); - StrCopy(pm,opt_MenuNameVars ); DBDeleteSetting(0,DBBranch,setting); - StrCopy(pm,opt_MenuShowWhenVars); DBDeleteSetting(0,DBBranch,setting); - StrCopy(pm,opt_MenuOptions ); DBDeleteSetting(0,DBBranch,setting); - end; - end; - end; -end; - -procedure addSaveUA(setting:pAnsiChar;txt:pWideChar); overload; -begin - if (txt=nil) or (txt^=#0) then DBDeleteSetting(0,DBBranch,setting) - else DBWriteUnicode(0,DBBranch,setting,txt); -end; - -procedure addSaveUA(setting:pAnsiChar;txt:pAnsiChar); overload; -begin - if (txt=nil) or (txt^=#0) then DBDeleteSetting(0,DBBranch,setting) - else DBWriteString(0,DBBranch,setting,txt); -end; - -procedure SaveUA(idx:integer); -var - setting:array [0..63] of AnsiChar; - p,pm:pAnsiChar; - lmenu:tMenuType; -begin - with UActionList[idx] do - begin - p:=GetUABranch(setting,dwActID); - if p<>nil then - begin - p:=StrCopyE(p,opt_UA); - p^:='/'; inc(p); - - StrCopy(p,opt_Flags); DBWriteDWord(0,DBBranch,setting, - flags and not (UAF_REALTIME OR UAF_SPECIAL)); - - StrCopy(p,opt_TTBTooltip ); addSaveUA(setting,szTTBTooltip); - StrCopy(p,opt_TTBTooltipPressed); addSaveUA(setting,szTTBTooltipPressed); - StrCopy(p,opt_TTBShowWhenVars ); addSaveUA(setting,szTTBShowWhenVars); - - StrCopy(p,opt_TabBTooltip ); addSaveUA(setting,szTabBTooltip); - StrCopy(p,opt_TabBTooltipPressed); addSaveUA(setting,szTabBTooltipPressed); - - for lmenu:=main_menu to HIGH(tMenuType) do - begin - pm:=p; - pm^:=AnsiChar(ORD(lmenu)+ORD('0')); inc(pm); - pm^:='_'; inc(pm); - with UAMenuItem[lmenu] do - begin - StrCopy(pm,opt_MenuPopup ); addSaveUA(setting,szMenuPopup); - StrCopy(pm,opt_MenuNameVars ); addSaveUA(setting,szMenuNameVars); - StrCopy(pm,opt_MenuShowWhenVars); addSaveUA(setting,szMenuShowWhenVars); - StrCopy(pm,opt_MenuOptions ); DBWriteWord(0,DBBranch,setting,menu_opt); - end; - end; - end; - end; -end; - -procedure SaveUAs; -var - i:integer; -begin - for i:=0 to HIGH(UActionList) do - SaveUA(i); -end; - -function LoadUA(idx:integer):integer; -var - setting:array [0..63] of AnsiChar; - p,pm:pAnsiChar; - lmenu:tMenuType; -begin - result:=0; - with UActionList[idx] do - begin - p:=GetUABranch(setting,dwActID); - if p<>nil then - begin - p:=StrCopyE(p,opt_UA); - p^:='/'; inc(p); - - StrCopy(p,opt_Flags); - flags:=DBReadDWord(0,DBBranch,setting,dword(UAF_SPECIAL)); - if flags=dword(UAF_SPECIAL) then // no settings - begin - flags:=0; - exit; - end; - // no need to use previous "pressed" state - if (flags and UAF_SAVESTATE)=0 then - flags:=flags and not UAF_PRESSED; - - flags:=flags and not UAF_REALTIME; - result:=1; - - StrCopy(p,opt_TTBTooltip ); szTTBTooltip :=DBReadString (0,DBBranch,setting); - StrCopy(p,opt_TTBTooltipPressed); szTTBTooltipPressed:=DBReadString (0,DBBranch,setting); - StrCopy(p,opt_TTBShowWhenVars ); szTTBShowWhenVars :=DBReadUnicode(0,DBBranch,setting); - - StrCopy(p,opt_TabBTooltip ); szTabBTooltip :=DBReadUnicode(0,DBBranch,setting); - StrCopy(p,opt_TabBTooltipPressed); szTabBTooltipPressed:=DBReadUnicode(0,DBBranch,setting); - - for lmenu:=main_menu to HIGH(tMenuType) do - begin - pm:=p; - pm^:=AnsiChar(ORD(lmenu)+ORD('0')); inc(pm); - pm^:='_'; inc(pm); - with UAMenuItem[lmenu] do - begin - StrCopy(pm,opt_MenuPopup ); szMenuPopup :=DBReadUnicode(0,DBBranch,setting); - StrCopy(pm,opt_MenuNameVars ); szMenuNameVars :=DBReadUnicode(0,DBBranch,setting); - StrCopy(pm,opt_MenuShowWhenVars); szMenuShowWhenVars:=DBReadUnicode(0,DBBranch,setting); - StrCopy(pm,opt_MenuOptions ); menu_opt :=DBReadWord (0,DBBranch,setting); - end; - end; - end; - end; -end; -(* -function LoadUAs:integer; -{ -var - section:array [0..63] of AnsiChar; - p:PAnsiChar; - i:integer; -} -begin - result:=0; -{ - MaxTasks:=DBReadByte(0,opt_tasks,opt_count); - result:=MaxTasks; - if MaxTasks>0 then - begin - GetMem (TaskList ,MaxTasks*SizeOf(tTaskRec)); - FillChar(TaskList^,MaxTasks*SizeOf(tTaskRec),0); - for i:=0 to MaxTasks-1 do - begin - p:=StrEnd(IntToStr(section,i)); - with TaskList[i] do - begin - StrCopy(p,opt_flags ); flags :=DBReadDWord (0,opt_tasks,section); - StrCopy(p,opt_name ); name :=DBReadUnicode(0,opt_tasks,section); - StrCopy(p,opt_action); action :=DBReadDWord (0,opt_tasks,section); - end; - end; - end; -} -end; -*) -procedure SetAllActionUsers(var ActionItem:tMyActionItem; initial:boolean); -var - setting:array [0..63] of AnsiChar; - p:pAnsiChar; - luse:boolean; - lmenu:tMenuType; -begin - if NamesArray[uaHotkey].enable then - begin - if (ActionItem.flags and UAF_REGHOTKEY)<>0 then - AddCoreHotkey(ActionItem) - else - DeleteCoreHotkey(ActionItem); - end; - if not initial then - begin - if NamesArray[uaTTB].enable then - begin - DeleteTTBButton(ActionItem); // no modify command there, just delete, then insert back - if (ActionItem.flags and UAF_REGTTBB)<>0 then - AddTTBButton(ActionItem); - end; - - if NamesArray[uaTAB].enable then - begin - if (ActionItem.flags and UAF_REGTABB)<>0 then - AddTabBBButton(ActionItem) - else - DeleteTabBBButton(ActionItem); - end; - end; - - luse:=false; - for lmenu:=main_menu to HIGH(tMenuType) do - begin - if NamesArray[uaMenu+ORD(lmenu)].enable then - begin - if (ActionItem.UAMenuItem[lmenu].menu_opt and UAF_MENUUSE)<>0 then - begin - luse:=true; - if ActionItem.UAMenuItem[lmenu].changed then - DeleteMenuItem(ActionItem,lmenu); - CreateMenuItem(ActionItem,lmenu); - end - else - DeleteMenuItem(ActionItem,lmenu); - end; - end; - - if (not luse) and (ActionItem.hMenuService<>0) then - begin - DestroyServiceFunction(ActionItem.hMenuService); - ActionItem.hMenuService:=0; - end; - - // First run (ok ok, if ppl ask for it....) - p:=GetUABranch(setting,ActionItem.dwActID); - if p<>nil then - begin - p:=StrCopyE(p,opt_UA); - p^:='/'; inc(p); - StrCopy(p,'_FirstRun'); - if DBReadByte(0,DBBranch,setting,0)<>0 then - begin - CAllService(MS_ACT_RUNBYID,ActionItem.dwActID,0); - DBDeleteSetting(0,DBBranch,setting); - end; - end; - -end; - -procedure DeleteUAction(num:integer); -var - ActionItem:pMyActionItem; - setting:array [0..63] of AnsiChar; - p:pAnsiChar; - luse:boolean; - lmenu:tMenuType; -begin - DeleteUASettings(num); - - ActionItem:=@UActionList[num]; - - DeleteIcolibIcon(ActionItem^); - - if (ActionItem.flags and UAF_REGHOTKEY)<>0 then - DeleteCoreHotkey(ActionItem^); - - if (ActionItem.flags and UAF_REGTTBB)<>0 then - DeleteTTBButton(ActionItem^); - mFreeMem(ActionItem.szTTBTooltip); - mFreeMem(ActionItem.szTTBTooltipPressed); - mFreeMem(ActionItem.szTTBShowWhenVars); - - if (ActionItem.flags and UAF_REGTABB)<>0 then - DeleteTabBBButton(ActionItem^); - mFreeMem(ActionItem.szTabBTooltip); - mFreeMem(ActionItem.szTabBTooltipPressed); - - luse:=false; - for lmenu:=main_menu to HIGH(tMenuType) do - begin - with ActionItem.UAMenuItem[lmenu] do - begin - if (menu_opt and UAF_MENUUSE)<>0 then - begin - luse:=true; - DeleteMenuItem(ActionItem^,lmenu); - end; - mFreeMem(szMenuPopup); - mFreeMem(szMenuNameVars); - mFreeMem(szMenuShowWhenVars); - end; - end; - - if (not luse) and (ActionItem.hMenuService<>0) then - begin - DestroyServiceFunction(ActionItem.hMenuService); - ActionItem.hMenuService:=0; - end; - - p:=GetUABranch(setting,ActionItem.dwActID); - if p<>nil then - begin - p:=StrCopyE(p,opt_UA); - p^:='/'; inc(p); - StrCopy(p,'_FirstRun'); - DBDeleteSetting(0,DBBranch,setting); - end; - - // Free Memory - mFreeMem(ActionItem.szNameID); - mFreeMem(ActionItem.szActDescr); - - // compact list - if num0 then - flags:=UAF_DISABLED; - StrDupW(szActDescr,ptr^.descr); - wSortIndex:=idx; - - // prepare for work - IntToStr(StrCopyE(buf,'Actions/Action_'),ptr^.id); - StrDup(szNameID,@buf); - AddIcolibIcon (UActionList[idx]); - end; - - SetLength(arMenuRec,Length(UActionList)+1); - FillChar (arMenuRec[HIGH(arMenuRec)],SizeOf(tuaMenuRecA),0); - result:=idx; -end; - -function CreateUActionList:integer; -var - ptr,ptr1:pChain; - i:integer; -begin - result:=CallService(MS_ACT_GETLIST,0,LPARAM(@ptr)); - SetLength(UActionList,result); - - SetLength(arMenuRec, result+1); - FillChar (arMenuRec[0],(result+1)*SizeOf(tuaMenuRecA),0); - - if result>0 then - begin - ptr1:=ptr; - inc(pbyte(ptr),4); - for i:=0 to result-1 do - begin - AddUAction(i,ptr); - LoadUA(i); // just here coz at list changes for new we don't have settings - if (UActionList[i].flags and UAF_2STATE)<>0 then - AddIcolibIconP(UActionList[i]); - SetAllActionUsers(UActionList[i],true); - inc(ptr); - end; - CallService(MS_ACT_FREELIST,0,LPARAM(ptr1)); - end; -end; - -function ActListChange(wParam:WPARAM;lParam:LPARAM):integer; cdecl; -var - ptr,ptr1:pChain; - idx,i,j,count:integer; - bFound:boolean; -begin - result:=0; - - count:=CallService(MS_ACT_GETLIST,0,TLPARAM(@ptr)); - - if count>0 then - begin - ptr1:=ptr; - inc(pbyte(ptr),4); - // maybe add ACTM_RELOAD (as NEW and DELETE) here too? - if (wParam and (ACTM_NEW or ACTM_RENAME or ACTM_SORT or ACTM_DELETE))<>0 then - for i:=0 to count-1 do - begin - // search corresponding element - idx:=-1; - for j:=0 to HIGH(UActionList) do - begin - if UActionList[j].dwActID=ptr^.id then - begin - idx:=j; - break; - end; - end; - // if we have no item in list for this action - then add new one - if idx<0 then - AddUAction(-1,ptr) - else - begin - if (wParam and ACTM_RENAME)<>0 then - begin - // check for time economy - no need to change ALL items - if StrCmpW(UActionList[idx].szActDescr,ptr^.descr)<>0 then - begin - mFreeMem(UActionList[idx].szActDescr); - StrDupW (UActionList[idx].szActDescr,ptr^.descr); - end; - end; - - if (wParam and (ACTM_SORT or ACTM_DELETE or ACTM_NEW))<>0 then - UActionList[idx].wSortIndex:=i; - end; - inc(ptr); - end; - end - else - ptr1:=nil; - - // now search deleted items - if (wParam and ACTM_DELETE)<>0 then - begin - for j:=HIGH(UActionList) downto 0 do - begin - bFound:=false; - if count>0 then - begin - ptr:=ptr1; - inc(pbyte(ptr),4); - for i:=0 to count-1 do - begin - if UActionList[j].dwActID=ptr^.id then - begin - bFound:=true; - break; - end; - inc(ptr); - end; - end; - if not bFound then - DeleteUAction(j); - end; - end; - - if count>0 then - CallService(MS_ACT_FREELIST,0,TLPARAM(ptr1)); - - if settings<>0 then - begin - FillActionList(settings); - ShowAction(settings,-1); - SendMessage(GetParent(settings),PSM_CHANGED,0,0); - end - else - begin - SaveUAs; - FillChar(arMenuRec[0],Length(arMenuRec)*SizeOf(tuaMenuRecA),0); - for i:=0 to HIGH(UActionList) do - begin - SetAllActionUsers(UActionList[i],false); - end; - end; -end; diff --git a/plugins/!Deprecated/Actman20/ua/i_uaplaces.inc b/plugins/!Deprecated/Actman20/ua/i_uaplaces.inc deleted file mode 100644 index 4b1f46a762..0000000000 --- a/plugins/!Deprecated/Actman20/ua/i_uaplaces.inc +++ /dev/null @@ -1,831 +0,0 @@ -{} - -const - MenuServices:array [tMenuType] of pAnsiChar = ( - 'CList/AddMainMenuItem' {MS_CLIST_ADDMAINMENUITEM }, - 'CList/AddContactMenuItem'{MS_CLIST_ADDCONTACTMENUITEM}, - 'CList/AddTrayMenuItem' {MS_CLIST_ADDTRAYMENUITEM }, - 'CList/AddProtoMenuItem' {MS_CLIST_ADDPROTOMENUITEM }, - 'CList/AddStatusMenuItem' {MS_CLIST_ADDSTATUSMENUITEM } - ); -type - tuaMenuRec = record - hMenuRoot:HMENU; - position :integer; - end; - tuaMenuRecA = array [tMenuType] of tuaMenuRec; - -var - arMenuRec: array of tuaMenuRecA; - -//===== Support ===== - -function ServiceCallWithLParam(wParam:WPARAM; lParam:LPARAM):int_ptr; cdecl; -begin - result:=CallService(MS_ACT_RUNBYID, lParam, wParam); -end; - -procedure SetTTBState(var ActionItem:tMyActionItem); -var - lflag:integer; -begin - if ActionItem.hTTBButton=0 then exit; - if (ActionItem.flags and UAF_2STATE)=0 then exit; - - lflag:=CallService(MS_TTB_GETBUTTONSTATE,ActionItem.hTTBButton,0); - if lflag=TTBST_PUSHED then - begin - if (ActionItem.flags and (UAF_2STATE+UAF_PRESSED))<>(UAF_2STATE+UAF_PRESSED) then exit; - lflag:=0; - end - else - begin - if (ActionItem.flags and (UAF_2STATE+UAF_PRESSED))=(UAF_2STATE+UAF_PRESSED) then exit; - if (ActionItem.flags and UAF_PRESSED)=0 then exit; - lflag:=TTBST_PUSHED; - end; - CallService(MS_TTB_SETBUTTONSTATE,ActionItem.hTTBButton,lflag); -end; - -procedure SetTABState(hContact:THANDLE;var ActionItem:tMyActionItem;pressed:integer); -var - tabb:TBBButton; - pc:pWideChar; -begin - FillChar(tabb,SizeOf(tabb),0); - tabb.cbSize :=SizeOf(tabb); - tabb.dwButtonID :=ActionItem.dwActID; - tabb.pszModuleName:=MODULE_NAME; - - if pressed<>0 then - begin - pc:=ActionItem.szTabBTooltipPressed; - if pc=nil then pc:=ActionItem.szTabBTooltip; - tabb.hIcon:=ActionItem.hIcolibIconPressed; - tabb.bbbFlags:=BBSF_PUSHED; - end - else - begin - pc:=ActionItem.szTabBTooltip; - tabb.hIcon:=ActionItem.hIcolibIcon; - tabb.bbbFlags:=BBSF_RELEASED; - end; - if pc=nil then pc:=ActionItem.szActDescr; - tabb.szTooltip.w:=pc; - CallService(MS_BB_SETBUTTONSTATE,hContact,TLPARAM(@tabb)); -end; - -function IsLocalItem(const UAItem:tMyActionItem):boolean; -begin - result:=((UAItem.flags and UAF_GLOBAL)=0) and - (UAItem.UAMenuItem[main_menu ].hMenuItem=0) and - (UAItem.UAMenuItem[tray_menu ].hMenuItem=0) and - (UAItem.UAMenuItem[proto_menu ].hMenuItem=0) and - (UAItem.UAMenuItem[status_menu].hMenuItem=0) and - (UAItem.hTTBButton=0); -end; - -function ServiceCallWithFParam(wParam:WPARAM; lParam:LPARAM; fParam:LPARAM):int_ptr; cdecl; -var - i:integer; - setting:array [0..63] of AnsiChar; - p:pAnsiChar; - cnt:THANDLE; - state:integer; -begin - for i:=0 to HIGH(UActionList) do - begin - with UActionList[i] do - if dwActID=cardinal(fParam) then - if (flags and UAF_2STATE)<>0 then - begin - // sync buttons/menus - if IsLocalItem(UActionList[i]) then - begin - // if (flags and UAF_SAVESTATE)<>0 then - begin - state:=DBReadByte(lastContact,opt_ua,szNameID); - state:=state xor 1; - DBWriteByte(lastContact,opt_ua,szNameID,state); - cnt:=lastContact; - end; - end - else - begin - flags:=flags xor UAF_PRESSED; - // save "pressed" state - if (flags and UAF_SAVESTATE)<>0 then - begin - p:=GetUABranch(setting,dwActID); - if p<>nil then - begin - p:=StrCopyE(p,opt_ua); - p^:='/'; inc(p); - StrCopy(p,opt_flags); - DBWriteDWord(0,DBBranch,setting,flags and not UAF_REALTIME); - end; - end; - - if hTTBButton<>0 then - SetTTBState(UActionList[i]); - - cnt:=0; - state:=ORD(flags and UAF_PRESSED); - end; - if (flags and UAF_REGTABB)<>0 then - SetTABState(cnt,UActionList[i],state); - - break; - end; - end; - - result:=CallService(MS_ACT_RUNBYID, fParam, wParam); -end; - -function AddIcolibIconP(var ActionItem:tMyActionItem):THANDLE; -var - sid:TSKINICONDESC; - buf,buf1:array [0..63] of WideChar; -begin - if (ActionItem.hIcolibIconPressed=0) or - (ActionItem.hIcolibIconPressed=ActionItem.hIcolibIcon) then - begin - // add icon for action to icolib - fillChar(sid,SizeOf(sid),0); - sid.cbSize :=sizeof(sid); - sid.szSection .w:=ICOLIB_ACTSECTION; - sid.szDefaultFile.w:=szMyPath; - sid.iDefaultIndex :=-IDI_ACTION; - sid.cx :=16; - sid.cy :=16; - sid.flags :=SIDF_ALL_UNICODE; - // icon "off" - StrCopyW(StrCopyEW(buf,ActionItem.szActDescr),' (pressed)'); - sid.szDescription.w:=@buf; - StrCopy(StrCopyE(@buf1,ActionItem.szNameID),'_pressed'); - sid.pszName :=@buf1; - ActionItem.hIcolibIconPressed:=Skin_AddIcon(@sid); - end; - result:=ActionItem.hIcolibIconPressed; -end; - -function AddIcolibIcon(var ActionItem:tMyActionItem):THANDLE; -var - sid:TSKINICONDESC; -begin - if ActionItem.hIcolibIcon=0 then - begin - // add icon for action to icolib - fillChar(sid,SizeOf(sid),0); - sid.cbSize :=sizeof(sid); - sid.szSection .w:=ICOLIB_ACTSECTION; - sid.szDefaultFile.w:=szMyPath; - sid.iDefaultIndex :=-IDI_ACTION; - sid.cx :=16; - sid.cy :=16; - sid.flags :=SIDF_ALL_UNICODE; - // icon "on" - sid.szDescription.w:=ActionItem.szActDescr; - sid.pszName :=ActionItem.szNameID; - ActionItem.hIcolibIcon:=Skin_AddIcon(@sid); - end; - result:=ActionItem.hIcolibIcon; -end; - -procedure DeleteIcolibIconP(var ActionItem:tMyActionItem); -var - buf1:array [0..63] of WideChar; -begin - if (ActionItem.hIcolibIconPressed<>0) and - (ActionItem.hIcolibIconPressed<>ActionItem.hIcolibIcon) then - begin - StrCopy(StrCopyE(@buf1,ActionItem.szNameID),'_pressed'); - CallService(MS_SKIN2_REMOVEICON,0,LPARAM(@buf1)); - ActionItem.hIcolibIconPressed:=ActionItem.hIcolibIcon; - end; -end; - -procedure DeleteIcolibIcon(var ActionItem:tMyActionItem); -begin - DeleteIcolibIconP(ActionItem); - CallService(MS_SKIN2_REMOVEICON,0,LPARAM(ActionItem.szNameID)); - ActionItem.hIcolibIcon :=0; - ActionItem.hIcolibIconPressed:=0; -end; - -//===== Really places ===== - -//----- Hotkeys ----- - -function AddCoreHotkey(var ActionItem:tMyActionItem):boolean; -var - hkd:THOTKEYDESC; -begin - if (ActionItem.flags and UAF_HKREGGED)=0 then - begin - FillChar(hkd,SizeOf(hkd),0); - hkd.cbSize := SizeOf(hkd); - hkd.dwFlags := HKD_UNICODE; - hkd.pszName := ActionItem.szNameID; - hkd.pszDescription.w:= ActionItem.szActDescr; - hkd.pszSection .w:= MODULE_NAME; - hkd.pszService := SERVICE_WITH_LPARAM_NAME; - hkd.lParam := ActionItem.dwActID; - result:=Hotkey_Register(@hkd)<>0; - if result then - ActionItem.flags:=ActionItem.flags or UAF_HKREGGED; - end - else - result:=true; //!! -end; - -procedure DeleteCoreHotkey(var ActionItem:tMyActionItem); -begin - if // bCoreHotkeyPresents and - // (ServiceExists(MS_HOTKEY_UNREGISTER)<>0) and - ((ActionItem.flags and UAF_HKREGGED)<>0) then - begin - CallService(MS_HOTKEY_UNREGISTER,0,LParam(ActionItem.szNameID)); - ActionItem.flags:=ActionItem.flags and not UAF_HKREGGED; - end; -end; - -//----- Common menu functions ----- - -function AddRootMenuIcon(szPopupName:pWideChar):THANDLE; -var - sid:TSKINICONDESC; -begin - FillChar(sid,SizeOf(sid),0); - //first - register icon for root popup - sid.cbSize := sizeof(sid); - sid.szSection.w := ICOLIB_MNUSECTION; - sid.flags := SIDF_ALL_UNICODE; - sid.cx := 16; - sid.cy := 16; - sid.szDescription.w:= szPopupName; - sid.szDefaultFile.w:= szMyPath; - sid.iDefaultIndex := -IDI_ACTION; - WideToAnsi(szPopupName,sid.pszName); - result:=Skin_AddIcon(@sid); - mFreeMem(sid.pszName); -end; - -procedure DeleteMenuItem(var ActionItem:tMyActionItem;mtype:tMenuType); -var - i:integer; - hMenuRoot:THANDLE; - p:pMyActionItem; -begin - with ActionItem.UAMenuItem[mtype] do - begin - if hMenuItem=0 then exit; - CallService(MO_REMOVEMENUITEM,hMenuItem,0); - hMenuItem:=0; - end; - - hMenuRoot:=ActionItem.UAMenuItem[mtype].hMenuRoot; - if hMenuRoot<>0 then - begin - for i:=0 to HIGH(UActionList) do - begin - p:=@UActionList[i]; - // presents somethere else - if (p<>@ActionItem) and (p.UAMenuItem[mtype].hMenuRoot=hMenuRoot) then - exit; - end; - // menu array cleanup now? - for i:=0 to HIGH(arMenuRec) do - begin - if arMenuRec[i][mtype].hMenuRoot=hMenuRoot then - begin - FillChar(arMenuRec[i][mtype],SizeOf(tuaMenuRec),0); -// arMenuRec[i][mtype].hMenuRoot:=0; - break; - end; - end; - CallService(MO_REMOVEMENUITEM,hMenuRoot,0); - ActionItem.UAMenuItem[mtype].hMenuRoot:=0; - end; -end; - -function GetMenuPosition(hMenu:HMENU;mtype:tMenuType;toset:boolean):integer; -var - i:integer; -begin - result:=0; - for i:=0 to HIGH(arMenuRec) do - begin - if arMenuRec[i][mtype].hMenuRoot=hMenu then - begin - if toset then - inc(arMenuRec[i][mtype].position,100000); - result:=arMenuRec[i][mtype].position; - break; - end; - end; -end; - -function MakeMenuItem(mtype:tMenuType;clmi:PCListMenuItem):THANDLE; -begin - case mtype of - main_menu : result:=Menu_AddMainMenuItem(clmi); - contact_menu: result:=Menu_AddContactMenuItem(clmi); - tray_menu : result:=Menu_AddTrayMenuItem(clmi); - proto_menu : result:=Menu_AddProtoMenuItem(clmi); - status_menu : result:=Menu_AddStatusMenuItem(clmi); - else - result:=0; - end; -end; - -procedure CreateMenuItem(var ActionItem:tMyActionItem;mtype:tMenuType); -var - i:integer; - ActItem:pMyActionItem; - ActMItem,UAMenuItem:pUAMenuItem; - clmi:TCListMenuItem; - res:boolean; - extra:pWideChar; -begin -{} - UAMenuItem:=@ActionItem.UAMenuItem[mtype]; - if UAMenuItem.hMenuItem<>0 then exit; - - // create popup menu -{}{} - res:=true; - if (UAMenuItem.szMenuPopup<>nil) and (UAMenuItem.szMenuPopup^<>#0) then - begin - res:=false; - for i:=0 to HIGH(UActionList) do - begin - // try to find root popup with same name (if we already created one) - ActItem :=@UActionList[i]; - ActMItem:=@ActItem.UAMenuItem[mtype]; - - if (ActMItem.szMenuPopup<>nil) and - (ActMItem.hMenuRoot<>0) and - ( (ActItem<>@ActionItem) and - (StrCmpW(ActMItem.szMenuPopup,UAMenuItem.szMenuPopup)=0) ) then - begin - UAMenuItem.hMenuRoot:=ActMItem.hMenuRoot; - res:=true; - break; - end; - end; - end; - // popup menu not found - if not res then - begin - FillChar(clmi,SizeOf(clmi),0); - clmi.cbSize:=SizeOf(clmi); - clmi.flags :=CMIF_UNICODE; - - if (UAMenuItem.szMenuPopup<>nil) and (UAMenuItem.szMenuPopup^<>#0) then - clmi.szName.w:=ParseVarString(UAMenuItem.szMenuPopup) - else - clmi.szName.w:=ActionItem.szActDescr; - - clmi.hIcon :=AddRootMenuIcon(clmi.szName.w); - clmi.position:=ActionItem.wSortIndex*10; - - // position in Root Menu - inc(clmi.position,GetMenuPosition(0,mtype, - (UAMenuItem.menu_opt and UAF_MENUSEP)<>0)); - - UAMenuItem.hMenuRoot:=MakeMenuItem(mtype,@clmi); - //CallService(MenuServices[mtype],0,LPARAM(@clmi)); - if clmi.szName.w<>ActionItem.szActDescr then - mFreeMem(clmi.szName.w); - - for i:=1 to HIGH(arMenuRec) do - begin - with arMenuRec[i][mtype] do - if hMenuRoot=0 then - begin -// MenuName :=ActionItem.szActDescr; - hMenuRoot:=UAMenuItem.hMenuRoot; - break; - end; - end; - - end; -{}{} - - // Now Menu Item preparing -{}{} - FillChar(clmi,SizeOf(clmi),0); - clmi.cbSize:=SizeOf(clmi); - clmi.flags:=CMIF_UNICODE; - if (ActionItem.flags and (UAF_2STATE+UAF_PRESSED))<>(UAF_2STATE+UAF_PRESSED) then - begin - clmi.hIcon:=ActionItem.hIcolibIcon; - extra:='0'; - end - else - begin - clmi.hIcon:=ActionItem.hIcolibIconPressed; - clmi.flags:=CMIF_UNICODE or CMIF_CHECKED; - extra:='1'; - end; - - with ActionItem.UAMenuItem[mtype] do - begin - if (szMenuNameVars<>nil) and (szMenuNameVars^<>#0) then - clmi.szName.w:=ParseVarString(szMenuNameVars,0,extra) - else - clmi.szName.w:=ActionItem.szActDescr; - - if hMenuRoot<>0 then - begin - clmi.flags:=clmi.flags or CMIF_ROOTHANDLE; - clmi.szPopupName.w:=pWideChar(hMenuRoot); - end; - end; - - clmi.pszService:=ActionItem.szNameID; - if ActionItem.hMenuService=0 then - ActionItem.hMenuService:=CreateServiceFunctionParam( - clmi.pszService,@ServiceCallWithFParam,ActionItem.dwActID); - - clmi.position:=ActionItem.wSortIndex*10; -{}{} - inc(clmi.position,GetMenuPosition(UAMenuItem.hMenuRoot,mtype, - (UAMenuItem.menu_opt and UAF_MENUSEP)<>0)); - - UAMenuItem.hMenuItem:=MakeMenuItem(mtype,@clmi); - //CallService(MenuServices[mtype],0,LPARAM(@clmi)); - if clmi.szName.w<>ActionItem.szActDescr then - mFreeMem(clmi.szName.w); -{} - -end; - -function PreBuildMenu(mtype:tMenuType;hContact:THANDLE=0):int; -var - i:integer; - mi:TCListMenuItem; - p,extra:pWideChar; -begin - result:=0; - - FillChar(mi,SizeOf(mi),0); - mi.cbSize:=SizeOf(mi); - - for i:=0 to HIGH(UActionList) do - begin - mi.flags:=CMIM_FLAGS; - p:=nil; - with UActionList[i] do - begin - with UAMenuItem[mtype] do - begin - if hMenuItem<>0 then // it means, we process that item here - begin - mi.szName.w:=nil; - // Show / hide - if isVarsInstalled then - begin - if (szMenuShowWhenVars<>nil) and (szMenuShowWhenVars^<>#0) then - begin - p:=ParseVarString(szMenuShowWhenVars,hContact); - if p<>nil then - begin - if StrCmpW(p,'1')<>0 then - mi.flags:=CMIM_FLAGS or CMIF_HIDDEN; - mFreeMem(p); - end; - end; - end; - - // change if need to show only - // (popup can be used by many items, keep unchanged) - if (mi.flags and CMIF_HIDDEN)=0 then - begin - //!!!! icon (check for contact menu) - mi.flags:=mi.flags or CMIM_ICON or CMIM_FLAGS; - - if (mtype=contact_menu) and IsLocalItem(UActionList[i]) then - begin - lastContact:=hContact; - if ((flags and UAF_2STATE)<>0) and - (DBReadByte(hContact,opt_ua,szNameID)<>0) then - begin - mi.flags:=mi.flags or CMIF_CHECKED; - mi.hIcon:=hIcolibIconPressed; - extra:='1'; - flags:=flags or UAF_PRESSED; - end - else - begin - mi.hIcon:=hIcolibIcon; - flags:=flags and not UAF_PRESSED; - extra:='0'; - end; - - end - else - begin - if (flags and (UAF_2STATE+UAF_PRESSED))=(UAF_2STATE+UAF_PRESSED) then - begin - mi.flags:=mi.flags or CMIF_CHECKED; - mi.hIcon:=hIcolibIconPressed; - extra:='1'; - end - else - begin - mi.hIcon:=hIcolibIcon; - extra:='0'; - end; - end; - - // new name - mi.flags:=mi.flags or CMIM_NAME or CMIF_UNICODE; - if (szMenuNameVars<>nil) and (szMenuNameVars^<>#0) then - mi.szName.w:=ParseVarString(szMenuNameVars,hContact,extra); - - if mi.szName.w=nil then - mi.szName.w:=szActDescr; - end; - - CallService(MS_CLIST_MODIFYMENUITEM,hMenuItem,LPARAM(@mi)); - if mi.szName.w<>szActDescr then - mFreeMem(mi.szName.w); - end; - end; - end; - - end; -end; - -function PreBuildMainMenu(wParam:WPARAM;lParam:LPARAM):int; cdecl; -begin - result:=PreBuildMenu(main_menu,wParam); -end; - -function PreBuildContactMenu(wParam:WPARAM;lParam:LPARAM):int; cdecl; -begin - result:=PreBuildMenu(contact_menu,wParam); -end; - -function PreBuildTrayMenu(wParam:WPARAM;lParam:LPARAM):int; cdecl; -begin - result:=PreBuildMenu(tray_menu,wParam); -end; - -//----- TopToolbar ----- - -procedure AddTTBButton(var ActionItem:tMyActionItem); -var - mtButton:TTBButton; - pc,pc1,pc2:pAnsiChar; - res:boolean; - p:pWideChar; -begin - if not NamesArray[uaTTB].enable then exit; - - if ActionItem.hTTBButton=0 then - begin - // Add or not - if isVarsInstalled then - begin - if (ActionItem.szTTBShowWhenVars<>nil) and (ActionItem.szTTBShowWhenVars^<>#0) then - begin - p:=ParseVarString(ActionItem.szTTBShowWhenVars); - if p<>nil then - begin - res:=StrCmpW(p,'1')<>0; - mFreeMem(p); - end - else - res:=true; - if res then - exit; - end; - end; - - FillChar(mtButton,SizeOf(mtButton),0); - mtButton.cbSize :=SizeOf(mtButton); - - mtButton.pszService:=TTB_SERVICE_NAME;//SERVICE_WITH_LPARAM_NAME; - mtButton.lParamUp :=ActionItem.dwActID; - mtButton.lParamDown:=ActionItem.dwActID; - - mtButton.hIconUp:=ActionItem.hIcolibIcon; - mtButton.hIconDn:=ActionItem.hIcolibIconPressed; - - WideToAnsi(ActionItem.szActDescr,pc); - - if (ActionItem.flags and UAF_2STATE)<>0 then - mtButton.dwFlags:=TTBBF_VISIBLE or TTBBF_SHOWTOOLTIP{ or TTBBF_ASPUSHBUTTON} - else - mtButton.dwFlags:=TTBBF_VISIBLE or TTBBF_SHOWTOOLTIP; - - if ActionItem.szTTBTooltip =nil then - pc1:=pc - else pc1:=ActionItem.szTTBTooltip; - - if ((ActionItem.flags and UAF_2STATE)=0) or - (ActionItem.szTTBTooltipPressed=nil) then - pc2:=pc1 - else - pc2:=ActionItem.szTTBTooltipPressed; - - mtButton.Name :=pc; - mtButton.pszTooltipUp :=pc1; - mtButton.pszTooltipDn :=pc2; - - ActionItem.hTTBButton:=TopToolbar_AddButton(@mtButton); - if ActionItem.hTTBButton=THANDLE(-1) then - ActionItem.hTTBButton:=0; - mFreeMem(pc); - end; -end; - -procedure DeleteTTBButton(var ActionItem:tMyActionItem); -begin - if ActionItem.hTTBButton<>0 then - begin - CallService(MS_TTB_REMOVEBUTTON,ActionItem.hTTBButton,0); - ActionItem.hTTBButton:=0; - end; -end; - -function TTBServiceCall(wParam:WPARAM; lParam:LPARAM):int_ptr; cdecl; -var - i,lflag:integer; -begin - result:=0; - for i:=0 to HIGH(UActionList) do - begin - if TLPARAM(UActionList[i].dwActID)=lParam then - begin - with UActionList[i] do - begin - if (flags and UAF_2STATE)<>0 then - begin - if CallService(MS_TTB_GETBUTTONSTATE,hTTBButton,0)=TTBST_PUSHED then - begin - lflag:=0; - end - else - begin - lflag:=TTBST_PUSHED; - end; - CallService(MS_TTB_SETBUTTONSTATE,hTTBButton,lflag); - end; - end; - - result:=ServiceCallWithFParam(0,0,lParam); - break; - end; - end; -end; - -function OnTTBLoaded(wParam:WPARAM;lParam:LPARAM):int; cdecl; -var - i:integer; -begin - result:=0; - for i:=HIGH(UActionList) downto 0 do - begin - if (UActionList[i].flags and UAF_REGTTBB)<>0 then - AddTTBButton(UActionList[i]); - end; -end; - -//----- TabSRMM Toolbar ----- - -const - TABTOOLBAR_INITPOS = 350; - -procedure AddTabBBButton(var ActionItem:tMyActionItem); -var - tabb:TBBButton; -begin - if not NamesArray[uaTAB].enable then exit; - - if (ActionItem.flags and UAF_TBREGGED)=0 then - begin - FillChar(tabb,SizeOf(tabb),0); - // register Tab ButtonBar button - tabb.cbSize :=SizeOf(tabb); - tabb.dwButtonID :=ActionItem.dwActID; - tabb.pszModuleName:=MODULE_NAME; - tabb.dwDefPos :=(TABTOOLBAR_INITPOS+ActionItem.wSortIndex*10) and $7FFF; - tabb.iButtonWidth :=0; - tabb.hIcon :=ActionItem.hIcolibIcon; - if (ActionItem.flags and UAF_2STATE)<>0 then - tabb.bbbFlags:=BBBF_ISIMBUTTON or BBBF_ISLSIDEBUTTON or - BBBF_ISCHATBUTTON or BBBF_ISPUSHBUTTON - else - tabb.bbbFlags:=BBBF_ISIMBUTTON or BBBF_ISLSIDEBUTTON or - BBBF_ISCHATBUTTON; - - if ActionItem.szTabBTooltip<>nil then - tabb.szTooltip.w:=ActionItem.szTabBTooltip - else - tabb.szTooltip.w:=ActionItem.szActDescr; - - if CallService(MS_BB_ADDBUTTON,0,LPARAM(@tabb))=0 then - ActionItem.flags:=ActionItem.flags or UAF_TBREGGED; - end; -end; - -procedure DeleteTabBBButton(var ActionItem:tMyActionItem); -var - tabb:TBBButton; -begin - if (ActionItem.flags and UAF_TBREGGED)<>0 then - begin - FillChar(tabb,SizeOf(tabb),0); - tabb.cbSize :=SizeOf(tabb); - tabb.dwButtonID :=ActionItem.dwActID; - tabb.pszModuleName:=MODULE_NAME; - CallService(MS_BB_REMOVEBUTTON,0,LPARAM(@tabb)); - ActionItem.flags:=ActionItem.flags and not UAF_TBREGGED; - end; -end; - -function OnTabButtonPressed(wParam:WPARAM;lParam:LPARAM):int; cdecl; -var - cbcd:pCustomButtonClickData; -// tabb:TBBButton; -// pc:pWideChar; - i:integer; -begin - result:=0; - cbcd:=pointer(lParam); - if StrCmp(cbcd.pszModule,MODULE_NAME)<>0 then - exit; - - for i:=0 to HIGH(UActionList) do - begin - with UActionList[i] do - begin - if cbcd.dwButtonId=dwActID then - begin -{ - FillChar(tabb,SizeOf(tabb),0); - tabb.cbSize :=SizeOf(tabb); - tabb.dwButtonID :=cbcd.dwButtonId; - tabb.pszModuleName:=MODULE_NAME; - if (flags and UAF_2STATE)<>0 then - begin - CallService(MS_BB_GETBUTTONSTATE,cbcd.hContact,TLPARAM(@tabb)); - if IsLocalItem(UActionList[i]) then - begin - if DBReadByte(hContact,opt_ua,szNameID)<>0 then - end - else - begin - if (tabb.bbbFlags and BBSF_PUSHED)<>0 then - begin - pc:=szTabBTooltipPressed; - if pc=nil then pc:=szTabBTooltip; - tabb.hIcon:=hIcolibIconPressed; - end - else - begin - pc:=szTabBTooltip; - tabb.hIcon:=hIcolibIcon; - end; - if pc=nil then pc:=szActDescr; - tabb.szTooltip.w:=pc; - tabb.bbbFlags :=BBBF_ISIMBUTTON or BBBF_ISLSIDEBUTTON or - BBBF_ISCHATBUTTON or BBBF_ISPUSHBUTTON; - end - else - begin - tabb.hIcon:=hIcolibIcon; - tabb.szTooltip.w:=szTabBTooltip; - if tabb.szTooltip.w=nil then tabb.szTooltip.w:=szActDescr; - tabb.bbbFlags :=BBBF_ISIMBUTTON or BBBF_ISLSIDEBUTTON or - BBBF_ISCHATBUTTON; - end; - - tabb.iButtonWidth:=0; - tabb.dwDefPos :=(TABTOOLBAR_INITPOS+wSortIndex*10) and $7FFF; - CallService(MS_BB_MODIFYBUTTON,0,TLPARAM(@tabb)); -} - ServiceCallWithFParam(cbcd.hContact,0,cbcd.dwButtonId); - result:=1; - break; - end; - end; - end; - -end; - -function OnTabBBLoaded(wParam:WPARAM;lParam:LPARAM):int; cdecl; -var - i:integer; -begin - result:=0; - for i:=HIGH(UActionList) downto 0 do - begin - if (UActionList[i].flags and UAF_REGTABB)<>0 then - AddTabBBButton(UActionList[i]); - end; -end; diff --git a/plugins/!Deprecated/Actman20/ua/i_uavars.inc b/plugins/!Deprecated/Actman20/ua/i_uavars.inc deleted file mode 100644 index bab2ac12a1..0000000000 --- a/plugins/!Deprecated/Actman20/ua/i_uavars.inc +++ /dev/null @@ -1,124 +0,0 @@ -{} -const - MODULE_NAME = 'Actions'; -const - opt_groups:PAnsiChar = 'Group'; - opt_ua :PAnsiChar = 'UA'; - opt_id :PAnsiChar = 'id'; - opt_flags :PAnsiChar = 'Flags'; - -const - ICOLIB_ACTSECTION = MODULE_NAME+'/Registered actions'; - ICOLIB_MNUSECTION = MODULE_NAME+'/Menu icons'; - - SERVICE_WITH_LPARAM_NAME = MODULE_NAME+'/CallAction'; - TTB_SERVICE_NAME = MODULE_NAME+'/TTBAction'; - -type - tMenuType = (main_menu,contact_menu,tray_menu,proto_menu,status_menu); - pUAMenuItem = ^tUAMenuItem; - tUAMenuItem = record - hMenuItem :THANDLE; - szMenuPopup :pWideChar; - szMenuNameVars :pWideChar; - szMenuShowWhenVars:pWideChar; - hMenuRoot :THANDLE; - menu_opt :dword; - changed :boolean; - end; -type - pMyActionItem = ^tMyActionItem; - tMyActionItem = record - flags :dword; - dwActID :dword; // action ID - wSortIndex :word; // list/menu/toolbar order - // UseActions/Action_ID - szNameID :pAnsiChar; // uaction ID - szActDescr :pWideChar; // action name - - hIcolibIcon, - hIcolibIconPressed :THANDLE; - - hTTBButton :THANDLE; // TopToolbar button - szTTBTooltip :PAnsiChar; - szTTBTooltipPressed :PAnsiChar; - szTTBShowWhenVars :pWideChar; - - szTabBTooltip :PWideChar; // TabSRMM toolbar button - szTabBTooltipPressed:PWideChar; - - lastContact :THANDLE; // for contact menu - hMenuService :THANDLE; // common menu service - UAMenuItem :array [tMenuType] of tUAMenuItem; - end; - -const - UAF_NONE = 0; - - UAF_REGHOTKEY = 1 shl 0; // hotkey - UAF_REGTTBB = 1 shl 1; // modern toolbar - - UAF_REGTABB = 1 shl 5; // TabSRMM toolbar - UAF_USING = UAF_REGHOTKEY or UAF_REGTTBB or UAF_REGTABB; - - UAF_2STATE = 1 shl 11; // Buttons/menu items are 2-state - UAF_PRESSED = 1 shl 12; // Button pressed/menu item selected - UAF_SAVESTATE = 1 shl 13; // Save or not "pressed" state - UAF_GLOBAL = 1 shl 14; // not contact related even if in contact menu only - - // realtime, no save - UAF_HKREGGED = 1 shl 16; // hotkey registered - UAF_TBREGGED = 1 shl 17; // TabSRMM button registered - UAF_DISABLED = 1 shl 30; // action disabled atm - UAF_REALTIME = UAF_HKREGGED or UAF_TBREGGED or UAF_DISABLED; - - UAF_SPECIAL = 1 shl 31; // for settings read - - // menu options - UAF_MENUSEP = 1 shl 1; // menu item separated - UAF_MENUUSE = 1 shl 8; // use this menu - -type - tNameRec = record - name :PAnsiChar; - service:PAnsiChar; - mask :dword; - atype :word; - enable :boolean; - end; - -const - NumTypes = 8; -const - uaTTB = 0; - uaTAB = 1; - uaHotkey = 2; - uaMenu = 3; - -const - NamesArray: array [0..NumTypes-1] of tNameRec = ( - (name:'TopToolbar'; service:'TopToolBar/AddButton'; - mask:UAF_REGTTBB ; atype:uaTTB; enable:false), - (name:'TabSRMM toolbar' ; service:'TabSRMM/ButtonsBar/AddButton'; - mask:UAF_REGTABB ; atype:uaTAB; enable:false), - (name:'Core Hotkey' ; service:nil{MS_HOTKEY_REGISTER}; - mask:UAF_REGHOTKEY; atype:uaHotkey; enable:false), - (name:'Main menu' ; service:nil; - mask:0; atype:uaMenu+(ORD(main_menu ) shl 8); enable:false), - (name:'Contact menu' ; service:nil; - mask:0; atype:uaMenu+(ORD(contact_menu) shl 8); enable:false), - (name:'Tray menu' ; service:'CList/AddTrayMenuItem'; - mask:0; atype:uaMenu+(ORD(tray_menu ) shl 8); enable:false), - (name:'Protocol menus' ; service:'CList/AddProtoMenuItem'; - mask:0; atype:uaMenu+(ORD(proto_menu ) shl 8); enable:false), - (name:'Status menu' ; service:'CList/AddStatusMenuItem'; - mask:0; atype:uaMenu+(ORD(status_menu ) shl 8); enable:false) - ); - -var - UActionList:array of tMyActionItem; -var - szMyPath:array [0..MAX_PATH] of WideChar; -var - hServiceWithLParam:THANDLE; - hTTBService:THANDLE; diff --git a/plugins/!Deprecated/Actman20/ua/i_uconst.inc b/plugins/!Deprecated/Actman20/ua/i_uconst.inc deleted file mode 100644 index 34dde3ee9e..0000000000 --- a/plugins/!Deprecated/Actman20/ua/i_uconst.inc +++ /dev/null @@ -1,34 +0,0 @@ -{resource constants} -const - IDD_UA = 1031; - - IDC_UA_ACTIONLIST = 1025; - IDC_UA_PLACELIST = 1026; - - // menu settings - IDC_UA_SEPARATE = 1027; - IDC_UA_POPUPT = 1028; - IDC_UA_POPUPV = 1029; - - IDC_UA_VARNAMEST = 1030; - IDC_UA_VARNAMESV = 1031; - IDC_UA_VARNAMESH = 1032; - - IDC_UA_SHOWVART = 1033; - IDC_UA_SHOWVARV = 1034; - IDC_UA_SHOWVARH = 1035; - - // toolbar settings - IDC_UA_TTNORMALT = 2028; - IDC_UA_TTNORMALV = 2029; - IDC_UA_TTPRESSEDT = 2030; - IDC_UA_TTPRESSEDV = 2031; - - // common - IDC_UA_COMMON = 2000; - IDC_UA_TWOSTATE = 2001; - IDC_UA_SAVSTATE = 2002; - - IDC_UA_GLOBAL = 2003; - - IDI_ACTION = 101; diff --git a/plugins/!Deprecated/Actman20/ua/ua.pas b/plugins/!Deprecated/Actman20/ua/ua.pas deleted file mode 100644 index 62b9604286..0000000000 --- a/plugins/!Deprecated/Actman20/ua/ua.pas +++ /dev/null @@ -1,124 +0,0 @@ -unit ua; - -interface - -procedure Init; -procedure DeInit; -function AddOptionPage(var tmpl:pAnsiChar;var proc:pointer;var name:PAnsiChar):integer; - -implementation - -uses - windows, commctrl, messages, - mirutils, common, dbsettings, io, m_api, wrapper, - global; - -{$R ua.res} - -{$include m_actman.inc} - -{$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 ------------- - -var - iohook:THANDLE; - hontabloaded, - honttbloaded, - ontabbtnpressed, - onactchanged:THANDLE; - hPreBuildMMenu, - hPreBuildCMenu, - hPreBuildTMenu:THANDLE; - -procedure Init; -begin - GetModuleFileNameW(hInstance,szMyPath,MAX_PATH); - - hServiceWithLParam:=CreateServiceFunction(SERVICE_WITH_LPARAM_NAME,@ServiceCallWithLParam); - hTTBService :=CreateServiceFunction(TTB_SERVICE_NAME ,@TTBServiceCall); - CheckPlacesAbility; - - CreateUActionList; - - honttbloaded :=HookEvent(ME_TTB_MODULELOADED ,@OnTTBLoaded); - hontabloaded :=HookEvent(ME_MSG_TOOLBARLOADED,@OnTabBBLoaded); - ontabbtnpressed:=HookEvent(ME_MSG_BUTTONPRESSED,@OnTabButtonPressed); - onactchanged :=HookEvent(ME_ACT_CHANGED ,@ActListChange); - - hPreBuildMMenu:=HookEvent(ME_CLIST_PREBUILDMAINMENU , PreBuildMainMenu); - hPreBuildCMenu:=HookEvent(ME_CLIST_PREBUILDCONTACTMENU, PreBuildContactMenu); - hPreBuildTMenu:=HookEvent(ME_CLIST_PREBUILDTRAYMENU , PreBuildTrayMenu); - - iohook:=HookEvent(ME_ACT_INOUT,@ActInOut); -end; - -procedure DeInit; -begin - SetLength(arMenuRec,0); - - UnhookEvent(hPreBuildMMenu); - UnhookEvent(hPreBuildCMenu); - UnhookEvent(hPreBuildTMenu); - - UnhookEvent(honttbloaded); - UnhookEvent(hontabloaded); - UnhookEvent(ontabbtnpressed); - UnhookEvent(onactchanged); - UnhookEvent(iohook); - DestroyServiceFunction(hServiceWithLParam); - DestroyServiceFunction(hTTBService); -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. diff --git a/plugins/!Deprecated/Actman20/ua/ua.rc b/plugins/!Deprecated/Actman20/ua/ua.rc deleted file mode 100644 index 76d8c0ad77..0000000000 --- a/plugins/!Deprecated/Actman20/ua/ua.rc +++ /dev/null @@ -1,51 +0,0 @@ -#include "i_uconst.inc" - -LANGUAGE 0,0 - -IDD_UA DIALOGEX 0, 0, 304, 226, 0 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0 -{ - CTEXT "Action list",-1, 2,2,132,10, SS_CENTERIMAGE - CONTROL "", IDC_UA_ACTIONLIST, "SysListView32", - WS_BORDER | WS_TABSTOP | - LVS_NOCOLUMNHEADER | LVS_SHOWSELALWAYS | LVS_REPORT | LVS_SINGLESEL, - 2, 12, 132, 212, WS_EX_CONTROLPARENT - - CTEXT "Where to use",-1, 138,2,160,10, SS_CENTERIMAGE - CONTROL "", IDC_UA_PLACELIST, "SysListView32", - WS_BORDER | WS_TABSTOP | - LVS_NOCOLUMNHEADER | LVS_SHOWSELALWAYS | LVS_REPORT | LVS_SINGLESEL, - 138, 12, 160, 74, WS_EX_CONTROLPARENT - - GROUPBOX "Common" , IDC_UA_COMMON , 138, 88,160,38 - AUTOCHECKBOX "2 state button/item" , IDC_UA_TWOSTATE, 140, 96,156,14, BS_LEFTTEXT | BS_RIGHT - AUTOCHECKBOX "Save button/item state", IDC_UA_SAVSTATE, 140,110,156,14, BS_LEFTTEXT | BS_RIGHT - - AUTOCHECKBOX "Contact related", IDC_UA_GLOBAL, 138,128,160,14, BS_LEFTTEXT | BS_RIGHT - - // Buttons settings block - RTEXT "Normal button tooltip",IDC_UA_TTNORMALT, 138,148,160,8 - EDITTEXT IDC_UA_TTNORMALV, 138,158,160,12, ES_AUTOHSCROLL - - RTEXT "Pressed button tooltip",IDC_UA_TTPRESSEDT, 138,172,160,8 - EDITTEXT IDC_UA_TTPRESSEDV, 138,182,160,12, ES_AUTOHSCROLL - - // Menu settings block - AUTOCHECKBOX "Separated",IDC_UA_SEPARATE, 138,142,160,14, BS_LEFTTEXT | BS_RIGHT - - RTEXT "Root popup:",IDC_UA_POPUPT,138,158,80,12, SS_CENTERIMAGE - EDITTEXT IDC_UA_POPUPV, 218,158,80,12, ES_AUTOHSCROLL - - RTEXT "Menu item name:",IDC_UA_VARNAMEST, 138,172,140,8 - EDITTEXT IDC_UA_VARNAMESV, 138,182,140,12, ES_AUTOHSCROLL - CONTROL "V",IDC_UA_VARNAMESH,"MButtonClass",WS_TABSTOP, 282,180,16,16, $18000000 - - RTEXT "Show only if variables return 1",IDC_UA_SHOWVART, 138,200,140,8 - EDITTEXT IDC_UA_SHOWVARV,138,210,140,12,ES_AUTOHSCROLL - CONTROL "V",IDC_UA_SHOWVARH,"MButtonClass",WS_TABSTOP, 282,208,16,16, $18000000 - -} - -IDI_ACTION ICON "action.ico" diff --git a/plugins/!Deprecated/Actman20/ua/ua.res b/plugins/!Deprecated/Actman20/ua/ua.res deleted file mode 100644 index c8f5fd5ea1..0000000000 Binary files a/plugins/!Deprecated/Actman20/ua/ua.res and /dev/null differ -- cgit v1.2.3