summaryrefslogtreecommitdiff
path: root/plugins/Actman
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2015-06-20 13:55:58 +0000
committerGeorge Hazan <george.hazan@gmail.com>2015-06-20 13:55:58 +0000
commit04f4e2acfbc82946ca3def654214c08071a87359 (patch)
tree871e1f476ed5086e8ebbd7e182ea2a89707cc249 /plugins/Actman
parent24cbc87262dc8856741db8e9f8388c18b16583ad (diff)
xml api became a set of functions
git-svn-id: http://svn.miranda-ng.org/main/trunk@14288 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/Actman')
-rw-r--r--plugins/Actman/iac_chain.pas27
-rw-r--r--plugins/Actman/iac_contact.pas29
-rw-r--r--plugins/Actman/iac_dbrw.pas89
-rw-r--r--plugins/Actman/iac_global.pas71
-rw-r--r--plugins/Actman/iac_inout.pas50
-rw-r--r--plugins/Actman/iac_jump.pas122
-rw-r--r--plugins/Actman/iac_messagebox.pas23
-rw-r--r--plugins/Actman/iac_program.pas37
-rw-r--r--plugins/Actman/iac_service.pas109
-rw-r--r--plugins/Actman/iac_storage.pas9
-rw-r--r--plugins/Actman/iac_text.pas18
-rw-r--r--plugins/Actman/inoutxml.pas134
-rw-r--r--plugins/Actman/ua/i_inoutjson.inc2
-rw-r--r--plugins/Actman/ua/i_inoutxm.inc389
14 files changed, 432 insertions, 677 deletions
diff --git a/plugins/Actman/iac_chain.pas b/plugins/Actman/iac_chain.pas
index 48b187259f..5be20d6d8c 100644
--- a/plugins/Actman/iac_chain.pas
+++ b/plugins/Actman/iac_chain.pas
@@ -141,37 +141,18 @@ begin
end;
1: begin
- with xmlparser do
- begin
- StrDupW(actname,getText(HXML(node)));
- flags:=flags or ACF_BYNAME;
-
- if StrToInt(getAttrValue(HXML(node),ioNoWait))=1 then
- flags:=flags or ACF_NOWAIT;
-
- if StrToInt(getAttrValue(HXML(node),ioKeepOld))=1 then
- flags:=flags or ACF_KEEPOLD;
-
- if StrToInt(getAttrValue(HXML(node),ioSameThread))=1 then
- flags:=flags or ACF_SAMETHREAD;
- end;
- end;
-{
- 2: begin
-
- UF8ToWide(GetParamSectionStr(node,'name',nil),actname);
+ StrDupW(actname,xmlGetText(HXML(node)));
flags:=flags or ACF_BYNAME;
- if GetParamSectionInt(node,ioNoWait)=1 then
+ if StrToInt(xmlGetAttrValue(HXML(node),ioNoWait))=1 then
flags:=flags or ACF_NOWAIT;
- if GetParamSectionInt(node,ioKeepOld)=1 then
+ if StrToInt(xmlGetAttrValue(HXML(node),ioKeepOld))=1 then
flags:=flags or ACF_KEEPOLD;
- if GetParamSectionInt(node,ioSameThread)=1 then
+ if StrToInt(xmlGetAttrValue(HXML(node),ioSameThread))=1 then
flags:=flags or ACF_SAMETHREAD;
end;
-}
end;
end;
diff --git a/plugins/Actman/iac_contact.pas b/plugins/Actman/iac_contact.pas
index 7c17334f15..561c8840fa 100644
--- a/plugins/Actman/iac_contact.pas
+++ b/plugins/Actman/iac_contact.pas
@@ -84,25 +84,12 @@ begin
contact:=LoadContact(DBBranch,node);
1: begin
- with xmlparser do
- begin
- contact:=ImportContact(HXML(node));
- if StrToInt(getAttrValue(HXML(node),ioKeepOnly))=1 then
- flags:=flags or ACF_KEEPONLY;
- if StrToInt(getAttrValue(HXML(node),ioWindow))=1 then
- flags:=flags or ACF_GETACTIVE;
- end;
- end;
-{
- 2: begin
- contact:=ImportContactINI(node);
-
- if GetParamSectionInt(node,ioKeepOnly)=1 then
+ contact:=ImportContact(HXML(node));
+ if StrToInt(xmlGetAttrValue(HXML(node),ioKeepOnly))=1 then
flags:=flags or ACF_KEEPONLY;
- if GetParamSectionInt(node,ioWindow)=1 then
+ if StrToInt(xmlGetAttrValue(HXML(node),ioWindow))=1 then
flags:=flags or ACF_GETACTIVE;
end;
-}
end;
end;
@@ -112,7 +99,6 @@ var
cws:TDBVARIANT;
p1:pAnsiChar;
p:pWideChar;
-// tmpbuf:array [0..63] of WideChar;
is_chat:boolean;
begin
result:=0;
@@ -168,14 +154,7 @@ begin
case fmt of
0: if (flags and ACF_GETACTIVE)=0 then
SaveContact(contact,DBBranch,node);
-{
- 1: begin
- 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;
-}
+
13: begin
tTextExport(node).AddFlag('keeponly' ,(flags or ACF_KEEPONLY )<>0);
tTextExport(node).AddFlag('getactive',(flags or ACF_GETACTIVE)<>0);
diff --git a/plugins/Actman/iac_dbrw.pas b/plugins/Actman/iac_dbrw.pas
index f9faa18293..dffd5ca233 100644
--- a/plugins/Actman/iac_dbrw.pas
+++ b/plugins/Actman/iac_dbrw.pas
@@ -389,79 +389,40 @@ begin
end;
1: begin
- with xmlparser do
+ tmp:=xmlGetAttrValue(HXML(node),ioOper);
+ if lstrcmpiw(tmp,ioDelete)=0 then flags:=flags or ACF_DBDELETE
+ else if lstrcmpiw(tmp,ioWrite )=0 then flags:=flags or ACF_DBWRITE;
+ tmp:=xmlGetAttrValue(HXML(node),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
- tmp:=getAttrValue(HXML(node),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(HXML(node),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
- dbcontact:=ImportContact(HXML(node));
- end;
-
- StrDupW(dbmodule ,getAttrValue(HXML(node),ioModule));
- StrDupW(dbsetting,getAttrValue(HXML(node),ioSetting));
-
- if StrToInt(getAttrValue(HXML(node),ioFileVariable))=1 then flags:=flags or ACF_RW_MODULE;
- if StrToInt(getAttrValue(HXML(node),ioArgVariable ))=1 then flags:=flags or ACF_RW_SETTING;
- if StrToInt(getAttrValue(HXML(node),ioVariables ))=1 then flags:=flags or ACF_RW_VALUE;
-
- tmp:=getAttrValue(HXML(node),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,ioAnsi )=0 then flags:=flags or ACF_DBANSI
- else flags:=flags or ACF_DBUTEXT;
-
- if StrToInt(getAttrValue(HXML(node),ioSaveValue))=1 then
- flags:=flags or ACF_SAVE;
-
- if StrToInt(getAttrValue(HXML(node),ioLast))=1 then
- flags:=flags or ACF_LAST
- else
- StrDupW(dbvalue,getText(HXML(node)));
- end;
- end;
-{
- 2: begin
- pc:=GetParamSectionStr(node,ioOper);
- if lstrcmpi(pc,ioDelete)=0 then flags:=flags or ACF_DBDELETE
- else if lstrcmpi(pc,ioWrite )=0 then flags:=flags or ACF_DBWRITE;
-// else if lstrcmpiw(tmp,ioRead)=0 then ;
- pc:=GetParamSectionStr(node,ioContact);
- if lstrcmpi(pc,ioCurrent)=0 then flags:=flags or ACF_CURRENT
- else if lstrcmpi(pc,ioResult )=0 then flags:=flags or ACF_RESULT
- else if lstrcmpi(pc,ioParam )=0 then flags:=flags or ACF_PARAM
- else if lstrcmpi(pc,ioContact)=0 then
- begin
- dbcontact:=ImportContactINI(node);
+ dbcontact:=ImportContact(HXML(node));
end;
- UF8ToWide(GetParamSectionStr(node,ioModule ),dbmodule);
- UF8ToWide(GetParamSectionStr(node,ioSetting),dbsetting);
+ StrDupW(dbmodule ,xmlGetAttrValue(HXML(node),ioModule));
+ StrDupW(dbsetting,xmlGetAttrValue(HXML(node),ioSetting));
- if GetParamSectionInt(node,ioFileVariable)=1 then flags:=flags or ACF_RW_MODULE;
- if GetParamSectionInt(node,ioArgVariable )=1 then flags:=flags or ACF_RW_SETTING;
- if GetParamSectionInt(node,ioVariables )=1 then flags:=flags or ACF_RW_VALUE;
+ if StrToInt(xmlGetAttrValue(HXML(node),ioFileVariable))=1 then flags:=flags or ACF_RW_MODULE;
+ if StrToInt(xmlGetAttrValue(HXML(node),ioArgVariable ))=1 then flags:=flags or ACF_RW_SETTING;
+ if StrToInt(xmlGetAttrValue(HXML(node),ioVariables ))=1 then flags:=flags or ACF_RW_VALUE;
+
+ tmp:=xmlGetAttrValue(HXML(node),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,ioAnsi )=0 then flags:=flags or ACF_DBANSI
+ else flags:=flags or ACF_DBUTEXT;
- pc:=GetParamSectionStr(node,ioType);
- if lstrcmpi(pc,ioByte )=0 then flags:=flags or ACF_DBBYTE
- else if lstrcmpi(pc,ioWord )=0 then flags:=flags or ACF_DBWORD
- else if lstrcmpi(pc,ioDword)=0 then
- else if lstrcmpi(pc,ioAnsi )=0 then flags:=flags or ACF_DBANSI
- else flags:=flags or ACF_DBUTEXT;
+ if StrToInt(xmlGetAttrValue(HXML(node),ioSaveValue))=1 then
+ flags:=flags or ACF_SAVE;
- if GetParamSectionInt(node,ioLast))=1 then
+ if StrToInt(xmlGetAttrValue(HXML(node),ioLast))=1 then
flags:=flags or ACF_LAST
else
- UF8ToWide(GetParamSectionStr(node,'value'),dbvalue); //!!
+ StrDupW(dbvalue,xmlGetText(HXML(node)));
end;
-}
end;
end;
diff --git a/plugins/Actman/iac_global.pas b/plugins/Actman/iac_global.pas
index aee55d1bfb..aa5b9bb87c 100644
--- a/plugins/Actman/iac_global.pas
+++ b/plugins/Actman/iac_global.pas
@@ -14,9 +14,6 @@ const
rtAnsi = 3;
rtUTF8 = 4;
-var
- xmlparser:TXML_API_W;
-
const
IcoLibPrefix = 'action_type_';
const
@@ -175,22 +172,11 @@ begin
end;
1: begin
- with xmlparser do
- begin
- if StrToInt(getAttrValue(HXML(node),ioDisabled))=1 then
- flags:=flags or ACF_DISABLED;
-
- StrDupW(ActionDescr,getAttrValue(HXML(node),ioName));
- end;
- end;
-{
- 2: begin
- if GetParamSectionInt(node,ioDisabled))=1 then
+ if StrToInt(xmlGetAttrValue(HXML(node),ioDisabled))=1 then
flags:=flags or ACF_DISABLED;
- UF8ToWide(GetParamSectionStr(node,ioName),ActionDescr);
+ StrDupW(ActionDescr,xmlGetAttrValue(HXML(node),ioName));
end;
-}
end;
end;
@@ -335,36 +321,33 @@ var
is_chat:boolean;
bufLen:int;
begin
- with xmlparser do
+ proto:=FastWideToAnsiBuf(xmlGetAttrValue(node,ioCProto),tmpbuf);
+ if (proto=nil) or (proto^=#0) then
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;
+ result:=0;
+ exit;
+ end;
+ is_chat:=StrToInt(xmlGetAttrValue(node,ioIsChat))<>0;
- tmp:=getAttrValue(node,ioCUID);
- if is_chat then
- begin
- dbv.szVal.W:=tmp;
- end
- else
- begin
- FillChar(dbv,SizeOf(TDBVARIANT),0);
- dbv._type:=StrToInt(getAttrValue(node,ioCUIDType));
- case dbv._type of
- DBVT_BYTE : dbv.bVal:=StrToInt(tmp);
- DBVT_WORD : dbv.wVal:=StrToInt(tmp);
- DBVT_DWORD : dbv.dVal:=StrToInt(tmp);
- DBVT_ASCIIZ: FastWideToAnsi(tmp,dbv.szVal.A);
- DBVT_UTF8 : WideToUTF8(tmp,dbv.szVal.A);
- DBVT_WCHAR : dbv.szVal.W:=tmp;
- DBVT_BLOB : begin
- dbv.pbVal := mir_base64_decode(FastWideToAnsi(tmp,pAnsiChar(dbv.pbVal)),bufLen);
- dbv.cpbVal := bufLen;
- end;
+ tmp:=xmlGetAttrValue(node,ioCUID);
+ if is_chat then
+ begin
+ dbv.szVal.W:=tmp;
+ end
+ else
+ begin
+ FillChar(dbv,SizeOf(TDBVARIANT),0);
+ dbv._type:=StrToInt(xmlGetAttrValue(node,ioCUIDType));
+ case dbv._type of
+ DBVT_BYTE : dbv.bVal:=StrToInt(tmp);
+ DBVT_WORD : dbv.wVal:=StrToInt(tmp);
+ DBVT_DWORD : dbv.dVal:=StrToInt(tmp);
+ DBVT_ASCIIZ: FastWideToAnsi(tmp,dbv.szVal.A);
+ DBVT_UTF8 : WideToUTF8(tmp,dbv.szVal.A);
+ DBVT_WCHAR : dbv.szVal.W:=tmp;
+ DBVT_BLOB : begin
+ dbv.pbVal := mir_base64_decode(FastWideToAnsi(tmp,pAnsiChar(dbv.pbVal)),bufLen);
+ dbv.cpbVal := bufLen;
end;
end;
end;
diff --git a/plugins/Actman/iac_inout.pas b/plugins/Actman/iac_inout.pas
index 5ae7a1cedf..b5fcbb466a 100644
--- a/plugins/Actman/iac_inout.pas
+++ b/plugins/Actman/iac_inout.pas
@@ -327,36 +327,32 @@ begin
end;
1: begin
- with xmlparser do
+ tmp:=xmlGetAttrValue(HXML(node),ioObject);
+ if lstrcmpiw(tmp,ioClipboard)=0 then
begin
- tmp:=getAttrValue(HXML(node),ioObject);
- if lstrcmpiw(tmp,ioClipboard)=0 then
- begin
- flags:=flags or ACF_CLIPBRD;
- tmp:=getAttrValue(HXML(node),ioOper);
- if lstrcmpiw(tmp,ioCopy)=0 then flags:=flags or ACF_COPYTO;
- // else if lstrcmpiw(tmp,'paste')=0 then ;
- end
- else
+ flags:=flags or ACF_CLIPBRD;
+ tmp:=xmlGetAttrValue(HXML(node),ioOper);
+ if lstrcmpiw(tmp,ioCopy)=0 then flags:=flags or ACF_COPYTO;
+ end
+ else
+ begin
+ if lstrcmpiw(tmp,ioFile)=0 then
begin
- if lstrcmpiw(tmp,ioFile)=0 then
- begin
- if StrToInt(getAttrValue(HXML(node),ioFileVariable))=1 then
- flags:=flags or ACF_FILE_PATH;
-
- flags:=flags or ACF_FILE;
- StrDupW(tfile,getAttrValue(HXML(node),ioFile));
- tmp:=getAttrValue(HXML(node),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(HXML(node),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;
+ if StrToInt(xmlGetAttrValue(HXML(node),ioFileVariable))=1 then
+ flags:=flags or ACF_FILE_PATH;
+
+ flags:=flags or ACF_FILE;
+ StrDupW(tfile,xmlGetAttrValue(HXML(node),ioFile));
+ tmp:=xmlGetAttrValue(HXML(node),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(xmlGetAttrValue(HXML(node),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;
diff --git a/plugins/Actman/iac_jump.pas b/plugins/Actman/iac_jump.pas
index 4ac0473405..8e2bba787c 100644
--- a/plugins/Actman/iac_jump.pas
+++ b/plugins/Actman/iac_jump.pas
@@ -293,100 +293,54 @@ begin
end;
1: begin
- with xmlparser do
+ sub:=xmlGetNthChild(HXML(node),ioIf,0);
+ if sub<>0 then
begin
- sub:=getNthChild(HXML(node),ioIf,0);
- if sub<>0 then
- begin
- tmp:=getAttrValue(sub,ioOper);
- if lstrcmpiw(tmp,'math')=0 then flags:=flags or ACF_MATH
- else if lstrcmpiw(tmp,ioNop )=0 then flags:=flags or ACF_NOP;
+ tmp:=xmlGetAttrValue(sub,ioOper);
+ if lstrcmpiw(tmp,'math')=0 then flags:=flags or ACF_MATH
+ else if lstrcmpiw(tmp,ioNop )=0 then flags:=flags or ACF_NOP;
- tmp:=getAttrValue(sub,ioCond);
- if lstrcmpiw(tmp,ioNop)=0 then flags:=flags or ACF_NOP // compatibility
- else if (flags and ACF_NOP)=0 then
+ tmp:=xmlGetAttrValue(sub,ioCond);
+ if lstrcmpiw(tmp,ioNop)=0 then flags:=flags or ACF_NOP // compatibility
+ else if (flags and ACF_NOP)=0 then
+ begin
+ if flags and ACF_MATH<>0 then
begin
- if flags and ACF_MATH<>0 then
- begin
- if lstrcmpiw(tmp,'gt' )=0 then condition:=aeGT
- else if lstrcmpiw(tmp,'lt' )=0 then condition:=aeLT
- else if lstrcmpiw(tmp,'eq' )=0 then condition:=aeEQ
- else if lstrcmpiw(tmp,'xor')=0 then condition:=aeXR
- else if lstrcmpiw(tmp,'and')=0 then condition:=aeND;
- end
- else
- begin
- if lstrcmpiw(tmp,'empty')=0 then condition:=aeEMP
- else if lstrcmpiw(tmp,'eq' )=0 then condition:=aeEQU
- else if lstrcmpiw(tmp,'cont' )=0 then condition:=aeCON
- else if lstrcmpiw(tmp,'start')=0 then condition:=aeSTR
- else if lstrcmpiw(tmp,'ends' )=0 then condition:=aeEND;
-
- if StrToInt(getAttrValue(sub,ioCase))=1 then
- flags:=flags or ACF_CASE;
- if StrToInt(getAttrValue(sub,ioBack))=1 then
- flags:=flags or ACF_BACK;
- end;
- if StrToInt(getAttrValue(sub,ioNot))=1 then
- flags:=flags or ACF_NOT;
-
- if ((flags and ACF_MATH)<>0) or (condition<>aeEMP) then
- StrDupW(value,getAttrValue(sub,ioValue));
+ if lstrcmpiw(tmp,'gt' )=0 then condition:=aeGT
+ else if lstrcmpiw(tmp,'lt' )=0 then condition:=aeLT
+ else if lstrcmpiw(tmp,'eq' )=0 then condition:=aeEQ
+ else if lstrcmpiw(tmp,'xor')=0 then condition:=aeXR
+ else if lstrcmpiw(tmp,'and')=0 then condition:=aeND;
+ end
+ else
+ begin
+ if lstrcmpiw(tmp,'empty')=0 then condition:=aeEMP
+ else if lstrcmpiw(tmp,'eq' )=0 then condition:=aeEQU
+ else if lstrcmpiw(tmp,'cont' )=0 then condition:=aeCON
+ else if lstrcmpiw(tmp,'start')=0 then condition:=aeSTR
+ else if lstrcmpiw(tmp,'ends' )=0 then condition:=aeEND;
+
+ if StrToInt(xmlGetAttrValue(sub,ioCase))=1 then
+ flags:=flags or ACF_CASE;
+ if StrToInt(xmlGetAttrValue(sub,ioBack))=1 then
+ flags:=flags or ACF_BACK;
end;
- end;
+ if StrToInt(xmlGetAttrValue(sub,ioNot))=1 then
+ flags:=flags or ACF_NOT;
- sub:=getNthChild(HXML(node),ioPost,0);
- if sub<>0 then
- begin
- tmp:=getAttrValue(sub,ioOper);
- if lstrcmpiw(tmp,ioBreak)=0 then flags:=flags or ACF_BREAK
- else if lstrcmpiw(tmp,ioJump )=0 then StrDupW(actlabel,getAttrValue(sub,ioValue));
+ if ((flags and ACF_MATH)<>0) or (condition<>aeEMP) then
+ StrDupW(value,xmlGetAttrValue(sub,ioValue));
end;
end;
- end;
-{
- 2: begin
- pc:=GetParamSectionStr(node,ioOper);
- if lstrcmpi(pc,'math')=0 then flags:=flags or ACF_MATH
- else if lstrcmpi(pc,ioNop )=0 then flags:=flags or ACF_NOP;
-
- pc:=GetParamSectionStr(node,ioCond);
- if lstrcmpi(pc,ioNop)=0 then flags:=flags or ACF_NOP // compatibility
- else if (flags and ACF_NOP)=0 then
- begin
- if flags and ACF_MATH<>0 then
- begin
- if lstrcmpi(pc,'gt' )=0 then condition:=aeGT
- else if lstrcmpi(pc,'lt' )=0 then condition:=aeLT
- else if lstrcmpi(pc,'eq' )=0 then condition:=aeEQ
- else if lstrcmpi(pc,'xor')=0 then condition:=aeXR
- else if lstrcmpi(pc,'and')=0 then condition:=aeND;
- end
- else
- begin
- if lstrcmpi(pc,'empty')=0 then condition:=aeEMP
- else if lstrcmpi(pc,'eq' )=0 then condition:=aeEQU
- else if lstrcmpi(pc,'cont' )=0 then condition:=aeCON
- else if lstrcmpi(pc,'start')=0 then condition:=aeSTR
- else if lstrcmpi(pc,'ends' )=0 then condition:=aeEND;
-
- if GetParamSectionInt(node,ioCase)=1 then
- flags:=flags or ACF_CASE;
- if GetParamSectionInt(node,ioBack)=1 then
- flags:=flags or ACF_BACK;
- end;
- if GetParamSectionInt(node,ioNot)=1 then
- flags:=flags or ACF_NOT;
- if ((flags and ACF_MATH)<>0) or (condition<>aeEMP) then
- UTF8ToWide(GetParamSectionStr(node,ioValue),value);
+ sub:=xmlGetNthChild(HXML(node),ioPost,0);
+ if sub<>0 then
+ begin
+ tmp:=xmlGetAttrValue(sub,ioOper);
+ if lstrcmpiw(tmp,ioBreak)=0 then flags:=flags or ACF_BREAK
+ else if lstrcmpiw(tmp,ioJump )=0 then StrDupW(actlabel,xmlGetAttrValue(sub,ioValue));
end;
-
- pc:=GetParamSectionStr(node,ioAction);
- if lstrcmpi(pc,ioBreak)=0 then flags:=flags or ACF_BREAK
- else if lstrcmpi(pc,ioJump )=0 then UTF8ToWide(GetParamSectionStr(node,ioLabel),actlabel);
end;
-}
end;
end;
diff --git a/plugins/Actman/iac_messagebox.pas b/plugins/Actman/iac_messagebox.pas
index 41a1068ab2..78320e1cd5 100644
--- a/plugins/Actman/iac_messagebox.pas
+++ b/plugins/Actman/iac_messagebox.pas
@@ -147,26 +147,13 @@ begin
end;
1: begin
- with xmlparser do
- begin
- StrDupW(msgtitle,getAttrValue(HXML(node),ioTitle));
- StrDupW(msgtext,getText(HXML(node)));
- boxopts:=StrToInt(getAttrValue(HXML(node),ioType));
-
- if StrToInt(getAttrValue(HXML(node),ioArgVariable))=1 then flags:=flags or ACF_MSG_TXT;
- if StrToInt(getAttrValue(HXML(node),ioVariables ))=1 then flags:=flags or ACF_MSG_TTL;
- end;
- end;
-{
- 2: begin
- UTF8ToWide(GetParamSectionInt(node,ioTitle),msgtitle);
- UTF8ToWide(GetParamSectionInt(node,ioText ),msgtext);
- boxopts:=GetParamSectionInt(node,ioType);
+ StrDupW(msgtitle,xmlGetAttrValue(HXML(node),ioTitle));
+ StrDupW(msgtext,xmlGetText(HXML(node)));
+ boxopts:=StrToInt(xmlGetAttrValue(HXML(node),ioType));
- if GetParamSectionInt(node,ioArgVariable)=1 then flags:=flags or ACF_MSG_TXT;
- if GetParamSectionInt(node,ioVariables )=1 then flags:=flags or ACF_MSG_TTL;
+ if StrToInt(xmlGetAttrValue(HXML(node),ioArgVariable))=1 then flags:=flags or ACF_MSG_TXT;
+ if StrToInt(xmlGetAttrValue(HXML(node),ioVariables ))=1 then flags:=flags or ACF_MSG_TTL;
end;
-}
end;
end;
diff --git a/plugins/Actman/iac_program.pas b/plugins/Actman/iac_program.pas
index 33924c4279..d16c356019 100644
--- a/plugins/Actman/iac_program.pas
+++ b/plugins/Actman/iac_program.pas
@@ -244,30 +244,27 @@ begin
end;
1: begin
- with xmlparser do
- begin
- StrDupW(prgname,getText(HXML(node)));
- StrDupW(args,getAttrValue(HXML(node),ioArgs));
- if StrToInt(getAttrValue(HXML(node),ioCurrent))=1 then
- flags:=flags or ACF_CURPATH;
+ StrDupW(prgname,xmlGetText(HXML(node)));
+ StrDupW(args,xmlGetAttrValue(HXML(node),ioArgs));
+ if StrToInt(xmlGetAttrValue(HXML(node),ioCurrent))=1 then
+ flags:=flags or ACF_CURPATH;
- if StrToInt(getAttrValue(HXML(node),ioParallel))=1 then
- flags:=flags or ACF_PRTHREAD
- else
- time:=StrToInt(getAttrValue(HXML(node),ioWait));
+ if StrToInt(xmlGetAttrValue(HXML(node),ioParallel))=1 then
+ flags:=flags or ACF_PRTHREAD
+ else
+ time:=StrToInt(xmlGetAttrValue(HXML(node),ioWait));
- if StrToInt(getAttrValue(HXML(node),ioFileVariable))=1 then
- flags:=flags or ACF_PRG_PRG;
+ if StrToInt(xmlGetAttrValue(HXML(node),ioFileVariable))=1 then
+ flags:=flags or ACF_PRG_PRG;
- if StrToInt(getAttrValue(HXML(node),ioArgVariable))=1 then
- flags:=flags or ACF_PRG_ARG;
+ if StrToInt(xmlGetAttrValue(HXML(node),ioArgVariable))=1 then
+ flags:=flags or ACF_PRG_ARG;
- tmp:=getAttrValue(HXML(node),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;
+ tmp:=xmlGetAttrValue(HXML(node),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;
{
2: begin
diff --git a/plugins/Actman/iac_service.pas b/plugins/Actman/iac_service.pas
index cfeb456191..1868b89214 100644
--- a/plugins/Actman/iac_service.pas
+++ b/plugins/Actman/iac_service.pas
@@ -174,25 +174,22 @@ begin
result:=ACF_TYPE_NUMBER;
if act=0 then
exit;
- with xmlparser do
+
+ tmp:=xmlGetAttrValue(act,ioType);
+ if lstrcmpiw(tmp,ioCurrent)=0 then result:=ACF_TYPE_CURRENT
+ else if lstrcmpiw(tmp,ioResult )=0 then result:=ACF_TYPE_RESULT
+ else if lstrcmpiw(tmp,ioParam )=0 then result:=ACF_TYPE_PARAM
+ else if lstrcmpiw(tmp,ioStruct )=0 then
begin
- tmp:=getAttrValue(act,ioType);
- if lstrcmpiw(tmp,ioCurrent)=0 then result:=ACF_TYPE_CURRENT
- else if lstrcmpiw(tmp,ioResult )=0 then result:=ACF_TYPE_RESULT
- else if lstrcmpiw(tmp,ioParam )=0 then result:=ACF_TYPE_PARAM
- else if lstrcmpiw(tmp,ioStruct )=0 then
- begin
- result:=ACF_TYPE_STRUCT;
-//!!!! param:=ReadStruct(act);
- end
- else
- begin
- StrDupW(pWideChar(param),getAttrValue(act,ioValue));
-
- if lstrcmpiw(tmp,ioNumber )=0 then result:=ACF_TYPE_NUMBER
- else if lstrcmpiw(tmp,ioUnicode)=0 then result:=ACF_TYPE_UNICODE
- else if lstrcmpiw(tmp,ioAnsi )=0 then result:=ACF_TYPE_STRING;
- end;
+ result:=ACF_TYPE_STRUCT;
+ end
+ else
+ begin
+ StrDupW(pWideChar(param),xmlGetAttrValue(act,ioValue));
+
+ if lstrcmpiw(tmp,ioNumber )=0 then result:=ACF_TYPE_NUMBER
+ else if lstrcmpiw(tmp,ioUnicode)=0 then result:=ACF_TYPE_UNICODE
+ else if lstrcmpiw(tmp,ioAnsi )=0 then result:=ACF_TYPE_STRING;
end;
end;
{
@@ -329,60 +326,32 @@ begin
service.w_flags:=0;
service.l_flags:=0;
- with xmlparser do
- begin
- FastWideToAnsi(getAttrValue(HXML(node),ioService),service.service);
-//!!!! StrDupW(service,getAttrValue(HXML(node),ioService));
- if StrToInt(getAttrValue(HXML(node),ioVariables))=1 then
- service.flags:=service.flags or ACF_FLAG_SCRIPT;
+ FastWideToAnsi(xmlGetAttrValue(HXML(node),ioService),service.service);
+ if StrToInt(xmlGetAttrValue(HXML(node),ioVariables))=1 then
+ service.flags:=service.flags or ACF_FLAG_SCRIPT;
- sub:=getNthChild(HXML(node),ioWParam,0);
- if StrToInt(getAttrValue(sub,ioVariables))=1 then
- service.w_flags:=service.w_flags or ACF_FLAG_SCRIPT;
- service.w_flags:=service.w_flags or
- ReadParam(sub,PWideChar(service.wparam),(service.w_flags and ACF_FLAG_SCRIPT)<>0);
-
- sub:=getNthChild(HXML(node),ioLParam,0);
- if StrToInt(getAttrValue(sub,ioVariables))=1 then
- service.l_flags:=service.l_flags or ACF_FLAG_SCRIPT;
- service.l_flags:=service.l_flags or
- ReadParam(sub,PWideChar(service.lparam),(service.l_flags and ACF_FLAG_SCRIPT)<>0);
-
- sub:=getNthChild(HXML(node),ioOutput,0);
- if StrToInt(getAttrValue(sub,ioFree))=1 then
- service.flags:=service.flags or ACF_FLAG_FREEMEM;
-
- tmp:=getAttrValue(sub,ioType);
- if lstrcmpiw(tmp,ioUnicode)=0 then service.flags:=service.flags or ACF_TYPE_UNICODE
- else if lstrcmpiw(tmp,ioAnsi )=0 then service.flags:=service.flags or ACF_TYPE_STRING
- else if lstrcmpiw(tmp,ioStruct )=0 then service.flags:=service.flags or ACF_TYPE_STRUCT
- else if lstrcmpiw(tmp,ioInt )=0 then service.flags:=service.flags or ACF_TYPE_NUMBER;
- end;
- end;
-{
- 2: begin
- StrDup(service,GetParamSectionStr(node,ioService));
-//!!!! UTF8ToWide(GetParamSectionStr(node,ioService),service);
- if GetParamSectionInt(node,ioVariables)=1 then
- flags:=flags or ACF_SCRIPT_SERVICE;
-
- if GetParamSectionInt(node,ioWParam+'.'+ioVariables))=1 then
- flags:=flags or ACF_SCRIPT_PARAM;
- flags:=flags or ReadParamINI(node,ioWParam+'.',wparam,(flags and ACF_SCRIPT_PARAM)<>0);
-
- if GetParamSectionInt(node,ioLParam+'.'+ioVariables))=1 then
- flags2:=flags2 or ACF_SCRIPT_PARAM;
- flags2:=flags2 or ReadParamINI(node,ioLParam+'.',lparam,(flags2 and ACF_SCRIPT_PARAM)<>0);
-
- if GetParamSectionInt(node,ioFree)=1 then flags:=flags or ACF_RFREEMEM;
-
- pc:=GetParamSectionStr(node,ioType);
- if lstrcmpi(pñ,ioUnicode)=0 then flags:=flags or ACF_RUNICODE
- else if lstrcmpi(pñ,ioAnsi )=0 then flags:=flags or ACF_RSTRING
- else if lstrcmpi(pñ,ioStruct )=0 then flags:=flags or ACF_RSTRUCT
-// else if lstrcmpi(pñ,ioInt )=0 then ;
+ sub:=xmlGetNthChild(HXML(node),ioWParam,0);
+ if StrToInt(xmlGetAttrValue(sub,ioVariables))=1 then
+ service.w_flags:=service.w_flags or ACF_FLAG_SCRIPT;
+ service.w_flags:=service.w_flags or
+ ReadParam(sub,PWideChar(service.wparam),(service.w_flags and ACF_FLAG_SCRIPT)<>0);
+
+ sub:=xmlGetNthChild(HXML(node),ioLParam,0);
+ if StrToInt(xmlGetAttrValue(sub,ioVariables))=1 then
+ service.l_flags:=service.l_flags or ACF_FLAG_SCRIPT;
+ service.l_flags:=service.l_flags or
+ ReadParam(sub,PWideChar(service.lparam),(service.l_flags and ACF_FLAG_SCRIPT)<>0);
+
+ sub:=xmlGetNthChild(HXML(node),ioOutput,0);
+ if StrToInt(xmlGetAttrValue(sub,ioFree))=1 then
+ service.flags:=service.flags or ACF_FLAG_FREEMEM;
+
+ tmp:=xmlGetAttrValue(sub,ioType);
+ if lstrcmpiw(tmp,ioUnicode)=0 then service.flags:=service.flags or ACF_TYPE_UNICODE
+ else if lstrcmpiw(tmp,ioAnsi )=0 then service.flags:=service.flags or ACF_TYPE_STRING
+ else if lstrcmpiw(tmp,ioStruct )=0 then service.flags:=service.flags or ACF_TYPE_STRUCT
+ else if lstrcmpiw(tmp,ioInt )=0 then service.flags:=service.flags or ACF_TYPE_NUMBER;
end;
-}
end;
end;
diff --git a/plugins/Actman/iac_storage.pas b/plugins/Actman/iac_storage.pas
index 500d366334..186e88240a 100644
--- a/plugins/Actman/iac_storage.pas
+++ b/plugins/Actman/iac_storage.pas
@@ -155,12 +155,9 @@ begin
end;
1: begin
- with xmlparser do
- begin
- if lstrcmpiw(getAttrValue(HXML(node),ioOper),ioCopy)=1 then
- flags:=flags or ACF_COPYFROM;
- Number:=StrToInt(getAttrValue(HXML(node),ioNumber));
- end;
+ if lstrcmpiw(xmlGetAttrValue(HXML(node),ioOper),ioCopy)=1 then
+ flags:=flags or ACF_COPYFROM;
+ Number:=StrToInt(xmlGetAttrValue(HXML(node),ioNumber));
end;
end;
end;
diff --git a/plugins/Actman/iac_text.pas b/plugins/Actman/iac_text.pas
index 68f9acf7ba..8614d6430e 100644
--- a/plugins/Actman/iac_text.pas
+++ b/plugins/Actman/iac_text.pas
@@ -361,22 +361,12 @@ begin
end;
1: begin
- with xmlparser do
- begin
- StrDupW(text,getText(HXML(node)));
- if StrToInt(getAttrValue(HXML(node),ioVariables))=1 then
- flags:=flags or ACF_TEXTSCRIPT;
- if StrToInt(getAttrValue(HXML(node),ioPost))=1 then
- flags:=flags or ACF_POSTPROCESS;
- end;
- end;
-{
- 2: begin
- UTF8ToWide(GetParamSectionInt(node,ioText),text);
- if GetParamSectionInt(node,ioVariables)=1 then
+ StrDupW(text,xmlGetText(HXML(node)));
+ if StrToInt(xmlGetAttrValue(HXML(node),ioVariables))=1 then
flags:=flags or ACF_TEXTSCRIPT;
+ if StrToInt(xmlGetAttrValue(HXML(node),ioPost))=1 then
+ flags:=flags or ACF_POSTPROCESS;
end;
-}
end;
end;
diff --git a/plugins/Actman/inoutxml.pas b/plugins/Actman/inoutxml.pas
index cd11c1a963..bcf91222bf 100644
--- a/plugins/Actman/inoutxml.pas
+++ b/plugins/Actman/inoutxml.pas
@@ -31,17 +31,14 @@ var
begin
result:=nil;
if actnode=0 then exit;
- with xmlparser do
+ pa:=GetLinkByName(FastWideToAnsiBuf(xmlGetAttrValue(actnode,ioClass),buf));
+ if pa<>nil then
begin
- pa:=GetLinkByName(FastWideToAnsiBuf(getAttrValue(actnode,ioClass),buf));
- if pa<>nil then
- begin
- result:=pa.Create;
- result.Load(pointer(actnode),1);
- end
- else
- result:=tBaseAction(1);
- end;
+ result:=pa.Create;
+ result.Load(pointer(actnode),1);
+ end
+ else
+ result:=tBaseAction(1);
end;
function Import(list:tMacroList;fname:PWideChar;aflags:dword):integer;
@@ -76,79 +73,72 @@ begin
BlockRead(f,res^,i);
CloseHandle(f);
-//MessageBoxW(0,res,'SRC',0);
- xmlparser.cbSize:=SizeOf(TXML_API_W);
- CallService(MS_SYSTEM_GET_XI,0,lparam(@xmlparser));
- with xmlparser do
- begin
- root:=parseString(ChangeUnicode(res),@i,nil);
- nodenum:=0;
- impact:=imp_yes;
- repeat
- actnode:=getNthChild(root,ioAction,nodenum);
- if actnode=0 then break;
-//?? if StrCmpW(getName(actnode),ioAction)<>0 then break;
- tmp:=getAttrValue(actnode,ioName);
- if tmp<>nil then //!!
+ root:=xmlParseString(ChangeUnicode(res),@i,nil);
+ nodenum:=0;
+ impact:=imp_yes;
+ repeat
+ actnode:=xmlGetNthChild(root,ioAction,nodenum);
+ if actnode=0 then break;
+ tmp:=xmlGetAttrValue(actnode,ioName);
+ if tmp<>nil then //!!
+ begin
+ p:=list.GetMacro(tmp);
+ oldid:=$FFFFFFFF;
+ if p<>nil then
begin
- p:=list.GetMacro(tmp);
- oldid:=$FFFFFFFF;
- if p<>nil then
+ if (impact<>imp_yesall) and (impact<>imp_noall) then
begin
- if (impact<>imp_yesall) and (impact<>imp_noall) then
- begin
- StrCopyW(buf,TranslateW('Action "$" exists, do you want to rewrite it?'));
- impact:=ShowQuestion(StrReplaceW(buf,'$',tmp));
- end;
- if (impact=imp_yesall) or (impact=imp_yes) then
- begin
- oldid:=p^.id;
- FreeMacro(p);
- end;
+ StrCopyW(buf,TranslateW('Action "$" exists, do you want to rewrite it?'));
+ impact:=ShowQuestion(StrReplaceW(buf,'$',tmp));
end;
- // if new or overwriting then read macro details/actions
- if (p=nil) or (impact=imp_yesall) or (impact=imp_yes) or (impact=imp_append) then
+ if (impact=imp_yesall) or (impact=imp_yes) then
begin
- with List[list.NewMacro()]^ do
+ oldid:=p^.id;
+ FreeMacro(p);
+ end;
+ end;
+ // if new or overwriting then read macro details/actions
+ if (p=nil) or (impact=imp_yesall) or (impact=imp_yes) or (impact=imp_append) then
+ begin
+ with List[list.NewMacro()]^ do
+ begin
+ if (p<>nil) and (oldid<>$FFFFFFFF) then // set old id to keep UseAction setting
begin
- if (p<>nil) and (oldid<>$FFFFFFFF) then // set old id to keep UseAction setting
- begin
- flags:=flags or ACF_IMPORT or ACF_OVERLOAD;
- id:=oldid;
- end
- else
- flags:=flags or ACF_IMPORT;
- if StrToInt(getAttrValue(actnode,ioVolatile))=1 then flags:=flags or ACF_VOLATILE;
- StrCopyW(descr,tmp,MacroNameLen-1);
+ flags:=flags or ACF_IMPORT or ACF_OVERLOAD;
+ id:=oldid;
+ end
+ else
+ flags:=flags or ACF_IMPORT;
+ if StrToInt(xmlGetAttrValue(actnode,ioVolatile))=1 then flags:=flags or ACF_VOLATILE;
+ StrCopyW(descr,tmp,MacroNameLen-1);
- // reading actions
- actcnt:=0; // count in file
- ActionCount:=0; // amount of loaded
- repeat
- act:=ImportAction(getChild(actnode,actcnt));
- if act=nil then
- break;
- if uint_ptr(act)<>1 then
- begin
- arr[ActionCount]:=act;
- inc(ActionCount);
- end;
- inc(actcnt);
- until false;
- // moving actions to their place
- if Actioncount>0 then
+ // reading actions
+ actcnt:=0; // count in file
+ ActionCount:=0; // amount of loaded
+ repeat
+ act:=ImportAction(xmlGetChild(actnode,actcnt));
+ if act=nil then
+ break;
+ if uint_ptr(act)<>1 then
begin
- GetMem(ActionList,SizeOf(tBaseAction)*ActionCount);
- move(arr,ActionList^,SizeOf(tBaseAction)*ActionCount);
+ arr[ActionCount]:=act;
+ inc(ActionCount);
end;
- inc(result);
+ inc(actcnt);
+ until false;
+ // moving actions to their place
+ if Actioncount>0 then
+ begin
+ GetMem(ActionList,SizeOf(tBaseAction)*ActionCount);
+ move(arr,ActionList^,SizeOf(tBaseAction)*ActionCount);
end;
+ inc(result);
end;
end;
- inc(nodenum);
- until false;
- destroyNode(root);
- end;
+ end;
+ inc(nodenum);
+ until false;
+ xmlDestroyNode(root);
mFreeMem(res);
end;
diff --git a/plugins/Actman/ua/i_inoutjson.inc b/plugins/Actman/ua/i_inoutjson.inc
index b560e99fb1..95f793e9f2 100644
--- a/plugins/Actman/ua/i_inoutjson.inc
+++ b/plugins/Actman/ua/i_inoutjson.inc
@@ -342,7 +342,7 @@ begin
f:=Rewrite(fname);
BlockWrite(f,res^,i*SizeOf(WideChar));
CloseHandle(f);
- xmlparser.FreeMem(res);
+ FreeMem(res);
DestroyNode(root);
end;
result:=1;
diff --git a/plugins/Actman/ua/i_inoutxm.inc b/plugins/Actman/ua/i_inoutxm.inc
index bf53ff954a..4a539a8275 100644
--- a/plugins/Actman/ua/i_inoutxm.inc
+++ b/plugins/Actman/ua/i_inoutxm.inc
@@ -1,6 +1,4 @@
{}
-var
- xmlparser:TXML_API_W;
const
ioAction :PWideChar = 'Action';
@@ -32,27 +30,24 @@ function ImportMenuItems(node:HXML;var MenuItem:tUAMenuItem):integer;
begin
result:=0;
- with xmlparser do
+ with MenuItem 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;
- // no translate
- if StrToInt(getAttrValue(node,ioNoTranslate))<>0 then
- menu_opt:=menu_opt or UAF_NOTRANS;
- end;
+ menu_opt:=0;
+ // popup
+ StrDupW(szMenuPopup,xmlGetAttrValue(node,ioMenuPopup));
+ // name
+ StrDupW(szMenuNameVars,xmlGetAttrValue(node,ioMenuName));
+ // show
+ StrDupW(szMenuShowWhenVars,xmlGetAttrValue(node,ioMenuShow));
+ // used
+ if StrToInt(xmlGetAttrValue(node,ioMenuUsed))<>0 then
+ menu_opt:=menu_opt or UAF_MENUUSE;
+ // separated
+ if StrToInt(xmlGetAttrValue(node,ioMenuSeparated))<>0 then
+ menu_opt:=menu_opt or UAF_MENUSEP;
+ // no translate
+ if StrToInt(xmlGetAttrValue(node,ioNoTranslate))<>0 then
+ menu_opt:=menu_opt or UAF_NOTRANS;
end;
end;
@@ -64,52 +59,44 @@ 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;
+ UA.flags:=0;
+ // ----- Common -----
+ if StrToInt(xmlGetAttrValue(actnode,ioTwoState))<>0 then
+ UA.flags:=UA.flags or UAF_2STATE;
+
+ if StrToInt(xmlGetAttrValue(actnode,ioSaveState))<>0 then
+ UA.flags:=UA.flags or UAF_SAVESTATE;
+
+ if StrToInt(xmlGetAttrValue(actnode,ioHotkey))<>0 then
+ UA.flags:=UA.flags or UAF_REGHOTKEY;
+ if StrToInt(xmlGetAttrValue(actnode,ioToolbar))<>0 then
+ UA.flags:=UA.flags or UAF_REGTTBB;
+ if StrToInt(xmlGetAttrValue(actnode,ioTabSRMM))<>0 then
+ UA.flags:=UA.flags or UAF_REGTABB;
+
+ // ----- Hotkey -----
+ // nothing
+
+ // ----- Modern CList toolbar -----
+ // source - ANSI text
+ sub:=xmlGetNthChild(actnode,ioToolbar,0);
+ WideToAnsi(xmlGetAttrValue(sub,ioTooltip ),UA.szTTBTooltip ,MirandaCP);
+ WideToAnsi(xmlGetAttrValue(sub,ioTooltipPressed),UA.szTTBTooltipPressed,MirandaCP);
+
+ // ----- TabSRMM toolbar -----
+ sub:=xmlGetNthChild(actnode,ioTabSRMM,0);
+ StrDupW(UA.szTabBTooltip ,xmlGetAttrValue(sub,ioTooltip));
+ StrDupW(UA.szTabBTooltipPressed,xmlGetAttrValue(sub,ioTooltipPressed));
+
+ // ----- Menus -----
+ num:=0;
+ repeat
+ sub:=xmlGetNextChild(actnode,ioMenuItem,@num);
+ if sub=0 then break;
+
+ i:=StrToInt(xmlGetAttrValue(sub,ioType));
+ ImportMenuItems(sub,UA.UAMenuItem[tMenuType(i)]);
+ until false;
end;
function Import(fname:PWideChar;aflags:dword):integer;
@@ -139,50 +126,45 @@ begin
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
+ root:=xmlParseString(ChangeUnicode(res),@i,nil);
+ j:=0;
+ repeat
+ actnode:=xmlGetNthChild(root,ioAction,j);
+ if actnode=0 then break;
+ // search id by name?
+ pcw:=xmlGetAttrValue(actnode,ioName);
+ ptr:=ptr1;
+ inc(pbyte(ptr),4);
+ for i:=0 to num-1 do
+ begin
+ if (ptr.flags and ACF_SELECTED)<>0 then
begin
- if (ptr.flags and ACF_SELECTED)<>0 then
+ if StrCmpw(pcw,ptr.descr)=0 then
begin
- if StrCmpw(pcw,ptr.descr)=0 then
+ // delete old UA for overwrited actions
+ if (ptr.flags and ACF_OVERLOAD)<>0 then
begin
- // delete old UA for overwrited actions
- if (ptr.flags and ACF_OVERLOAD)<>0 then
+ for act:=0 to HIGH(UActionList) do
begin
- for act:=0 to HIGH(UActionList) do
+ if ptr.id=UActionList[act].dwActID then
begin
- if ptr.id=UActionList[act].dwActID then
- begin
- DeleteUAction(act,true);
- break;
- end;
+ DeleteUAction(act,true);
+ break;
end;
end;
- num1:=AddUAction(-1,ptr);
- ImportUAction(getNthChild(actnode,ioUA,0),UActionList[num1]);
- break;
end;
+ num1:=AddUAction(-1,ptr);
+ ImportUAction(xmlGetNthChild(actnode,ioUA,0),UActionList[num1]);
+ break;
end;
- inc(ptr);
end;
-
- inc(j);
- until false;
+ inc(ptr);
+ end;
+
+ inc(j);
+ until false;
+ xmlDestroyNode(root);
- DestroyNode(root);
- end;
CallService(MS_ACT_FREELIST,0,LPARAM(ptr1));
mFreeMem(res);
result:=1;
@@ -197,27 +179,24 @@ end;
function ExportMenuItems(node:HXML;const MenuItem:tUAMenuItem):HXML;
begin
- with xmlparser do
+ result:=xmlAddChild(node,ioMenuItem,nil);
+ with MenuItem 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));
- // no translate
- AddAttrInt(result,ioNoTranslate,ord((menu_opt AND UAF_NOTRANS)<>0));
- end;
+ // popup
+ if (szMenuPopup<>nil) and (szMenuPopup^<>#0) then
+ xmlAddAttr(result,ioMenuPopup,szMenuPopup);
+ // name
+ if (szMenuNameVars<>nil) and (szMenuNameVars^<>#0) then
+ xmlAddAttr(result,ioMenuName,szMenuNameVars);
+ // show
+ if (szMenuShowWhenVars<>nil) and (szMenuShowWhenVars^<>#0) then
+ xmlAddAttr(result,ioMenuShow,szMenuShowWhenVars);
+ // used
+ xmlAddAttrInt(result,ioMenuUsed,ord((menu_opt AND UAF_MENUUSE)<>0));
+ // separated
+ xmlAddAttrInt(result,ioMenuSeparated,ord((menu_opt AND UAF_MENUSEP)<>0));
+ // no translate
+ xmlAddAttrInt(result,ioNoTranslate,ord((menu_opt AND UAF_NOTRANS)<>0));
end;
end;
@@ -229,70 +208,66 @@ var
actnode,sub:HXML;
UA:pMyActionItem;
begin
- with xmlparser do
+ for i:=0 to HIGH(UActionList) do
begin
- for i:=0 to HIGH(UActionList) do
+ if UActionList[i].dwActID=id then
begin
- if UActionList[i].dwActID=id then
+ UA:=@UActionList[i];
+ actnode:=xmlGetChildByAttrValue(root,ioAction,ioName,name);
+ if actnode=0 then break;
+ // we don't need that node as is, just it's child for UA
+ actnode:=xmlAddChild(actnode,ioUA,nil);
+
+ // ----- Common -----
+ xmlAddAttrInt(actnode,ioTwoState ,ORD((UA.flags and UAF_2STATE )<>0));
+ xmlAddAttrInt(actnode,ioSaveState,ORD((UA.flags and UAF_SAVESTATE)<>0));
+
+ xmlAddAttrInt(actnode,ioHotkey ,ORD((UA.flags and UAF_REGHOTKEY)<>0));
+ xmlAddAttrInt(actnode,ioToolbar,ORD((UA.flags and UAF_REGTTBB )<>0));
+ xmlAddAttrInt(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
- 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
+ sub:=xmlAddChild(actnode,ioToolbar,nil);
+ if (UA.szTTBTooltip<>nil) and (UA.szTTBTooltip^<>#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;
+ AnsiToWide(UA.szTTBTooltip,pc,MirandaCP);
+ xmlAddAttr(sub,ioTooltip,pc);
+ mFreeMem(pc);
end;
-
- // ----- TabSRMM toolbar -----
- if ((UA.szTabBTooltip <>nil) and (UA.szTabBTooltip^ <>#0)) or
- ((UA.szTabBTooltipPressed<>nil) and (UA.szTabBTooltipPressed^<>#0)) then
+ if (UA.szTTBTooltipPressed<>nil) and (UA.szTTBTooltipPressed^<>#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);
+ AnsiToWide(UA.szTTBTooltipPressed,pc,MirandaCP);
+ xmlAddAttr(sub,ioTooltipPressed,pc);
+ mFreeMem(pc);
end;
+ end;
- // ----- Menus -----
- for lmenu:=main_menu to HIGH(tMenuType) do
- begin
- sub:=ExportMenuItems(actnode,UA.UAMenuItem[lmenu]);
- AddAttrInt(sub,ioType,ORD(lmenu));
- end;
+ // ----- TabSRMM toolbar -----
+ if ((UA.szTabBTooltip <>nil) and (UA.szTabBTooltip^ <>#0)) or
+ ((UA.szTabBTooltipPressed<>nil) and (UA.szTabBTooltipPressed^<>#0)) then
+ begin
+ sub:=xmlAddChild(actnode,ioTabSRMM,nil);
+ if (UA.szTabBTooltip<>nil) and (UA.szTabBTooltip^<>#0) then
+ xmlAddAttr(sub,ioTooltip,UA.szTabBTooltip);
+ if (UA.szTabBTooltipPressed<>nil) and (UA.szTabBTooltipPressed^<>#0) then
+ xmlAddAttr(sub,ioTooltipPressed,UA.szTabBTooltipPressed);
+ end;
- break;
+ // ----- Menus -----
+ for lmenu:=main_menu to HIGH(tMenuType) do
+ begin
+ sub:=ExportMenuItems(actnode,UA.UAMenuItem[lmenu]);
+ xmlAddAttrInt(sub,ioType,ORD(lmenu));
end;
+
+ break;
end;
end;
end;
@@ -306,47 +281,43 @@ var
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
+
+ // 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:=xmlParseString(res,@i,nil);
+ mFreeMem(res);
+
+ num:=CallService(MS_ACT_GETLIST,0,LPARAM(@ptr));
+ if num>0 then
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
+ ptr1:=ptr;
+ inc(pbyte(ptr),4);
+ for i:=0 to num-1 do
begin
- ptr1:=ptr;
- inc(pbyte(ptr),4);
- for i:=0 to num-1 do
+ if ((aflags and ACIO_SELECTED)=0) or
+ ((ptr.flags and ACCF_EXPORT)<>0) then
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);
+ WriteUAction(root,ptr.id,ptr.descr);
end;
- CallService(MS_ACT_FREELIST,0,LPARAM(ptr1));
+ inc(ptr);
end;
+ CallService(MS_ACT_FREELIST,0,LPARAM(ptr1));
+ end;
- res:=toString(root,@i);
+ res:=xmlToString(root,@i);
- f:=Rewrite(fname);
- BlockWrite(f,res^,i*SizeOf(WideChar));
- CloseHandle(f);
- xmlparser.FreeMem(res);
- DestroyNode(root);
- end;
+ f:=Rewrite(fname);
+ BlockWrite(f,res^,i*SizeOf(WideChar));
+ CloseHandle(f);
+ xmlFree(res);
+ xmlDestroyNode(root);
result:=1;
end;