From bd09edf1b441dcc6ab098f277bea86a72c009879 Mon Sep 17 00:00:00 2001 From: xj qian <qianxj15@sina.com> Date: 星期四, 05 十二月 2024 17:30:21 +0800 Subject: [PATCH] update --- jrj/xframe/devloper/XDevEditPage.hpp | 17 jrj/xframe/devloper/XDevEditXApp.cpp | 553 +++++ jrj/xframe/devloper/XDevEditXLayer.cpp | 569 ---- jrj/xframe/devloper/XDevEditXOffice.cpp | 613 +---- jrj/xframe/devloper/XDevEditFlow.cpp | 513 ++++ jrj/xframe/devloper/XDevEditXRuler.cpp | 577 ---- jrj/xframe/devloper/XDevEditXMSSQL.cpp | 981 ++++---- jrj/xframe/devloper/XDevEditXWKDlg.cpp | 577 ---- /dev/null | 561 ----- jrj/xframe/devloper/XDevEditXPage.cpp | 7 jrj/xframe/devloper/XDevEditXQuery.cpp | 11 jrj/xframe/wobject/xutil.hpp | 28 jrj/project/business/QuoteFile.cpp | 323 +- jrj/xframe/devloper/XDevEditXWorkNode.cpp | 577 ---- jrj/xframe/devloper/XDevEditHtml.cpp | 109 + jrj/xframe/xcontrol/xdwgrid.hpp | 18 jrj/xframe/xcontrol/xdwtable.hpp | 7 jrj/ext-jrj/ext-jrj.vcxproj | 16 jrj/xframe/devloper/XDevEditXFile.cpp | 25 jrj/xframe/kobject/kutil.hpp | 5 jrj/xframe/xcontrol/xcell.hpp | 6 jrj/xframe/devloper/XDevEditCode.cpp | 122 + 22 files changed, 2,544 insertions(+), 3,671 deletions(-) diff --git a/jrj/ext-jrj/ext-jrj.vcxproj b/jrj/ext-jrj/ext-jrj.vcxproj index 063c9ef..44b75f9 100644 --- a/jrj/ext-jrj/ext-jrj.vcxproj +++ b/jrj/ext-jrj/ext-jrj.vcxproj @@ -193,9 +193,9 @@ <ClInclude Include="..\project\viewobject\shoppingcart.view.hpp" /> <ClInclude Include="..\project\viewobject\supplier.view.hpp" /> <ClInclude Include="..\xframe\adt\xarray.hpp" /> - <ClInclude Include="..\xframe\devloper\XDevEditPage.cpp"> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild> + <ClInclude Include="..\xframe\devloper\XDevEditPage.hpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> </ClInclude> <ClInclude Include="..\xframe\kobject\kapp.hpp" /> <ClInclude Include="..\xframe\kobject\kbase.hpp" /> @@ -1171,6 +1171,10 @@ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild> </ClCompile> + <ClCompile Include="..\xframe\devloper\XDevEditCode.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> + </ClCompile> <ClCompile Include="..\xframe\devloper\XDevEditDbmap.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> @@ -1179,7 +1183,7 @@ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> </ClCompile> - <ClCompile Include="..\xframe\devloper\XDevEditXCode.cpp"> + <ClCompile Include="..\xframe\devloper\XDevEditXApp.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> </ClCompile> @@ -1191,11 +1195,11 @@ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> </ClCompile> - <ClCompile Include="..\xframe\devloper\XDevEditXFlow.cpp"> + <ClCompile Include="..\xframe\devloper\XDevEditFlow.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> </ClCompile> - <ClCompile Include="..\xframe\devloper\XDevEditXHtml.cpp"> + <ClCompile Include="..\xframe\devloper\XDevEditHtml.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> </ClCompile> diff --git a/jrj/project/business/QuoteFile.cpp b/jrj/project/business/QuoteFile.cpp index eb32a9e..bb78ecd 100644 --- a/jrj/project/business/QuoteFile.cpp +++ b/jrj/project/business/QuoteFile.cpp @@ -254,10 +254,10 @@ { xstring content = L""; xstring base = L""; - base += L"<QuoteNo>" + getBaseItem(cell, L"报价单号:") + L"</QuoteNo>"; - base += L"<ExpDate>" + getBaseItem(cell, L"报价截止日期:") + L"</ExpDate>"; - base += L"<PrjName>" + getBaseItem(cell, L"项目名称:") + L"</PrjName>"; - base += L"<QuoteDate>" + dw_base.GetItemString(1, L"QuoteDate") + L"</QuoteDate>"; + base += L"<QuoteNo>" + getBaseXmlItem(cell, L"报价单号:") + L"</QuoteNo>"; + base += L"<ExpDate>" + getBaseXmlItem(cell, L"报价截止日期:") + L"</ExpDate>"; + base += L"<PrjName>" + getBaseXmlItem(cell, L"项目名称:") + L"</PrjName>"; + base += L"<QuoteDate>" + dw_base.GetItemXmlString(1, L"QuoteDate") + L"</QuoteDate>"; int startRow = getItemHeadRow(cell); @@ -313,34 +313,34 @@ xstring itemStr = L""; rowid = getRowID(cell, row); itemStr += L"<RowID>" + getRowID(cell, row) + L"</RowID>"; - itemStr += L"<SKUID>" + cell.GetItemString(row, colSKUID) + L"</SKUID>"; + itemStr += L"<SKUID>" + cell.GetItemXmlString(row, colSKUID) + L"</SKUID>"; itemStr += L"<customer-photo>" + getRowTerm(cell, row, L"customer-photo") + L"</customer-photo>"; itemStr += L"<supplier-photo>" + getRowTerm(cell, row, L"supplier-photo") + L"</supplier-photo>"; itemStr += L"<customer-photo-url>" + getImageList(getRowTerm(cell, row, L"customer-photo")) + L"</customer-photo-url>"; itemStr += L"<supplier-photo-url>" + getImageList(getRowTerm(cell, row, L"supplier-photo")) + L"</supplier-photo-url>"; - itemStr += L"<ItemNo>" + cell.GetItemString(row, colItemNo) + L"</ItemNo>"; - itemStr += L"<CustomItemNo>" + cell.GetItemString(row, colCustomerItemNo) + L"</CustomItemNo>"; - itemStr += L"<ItemName>" + cell.GetItemString(row, colItemName) + L"</ItemName>"; - itemStr += L"<ItemCName>" + cell.GetItemString(row, colItemCName) + L"</ItemCName>"; - itemStr += L"<ItemSpec>" + cell.GetItemString(row, colItemSpec) + L"</ItemSpec>"; - itemStr += L"<CustomerImage>" + cell.GetItemString(row, colCustomerImage) + L"</CustomerImage>"; - itemStr += L"<BuyerPrice>" + cell.GetItemString(row, colBuyerPrice) + L"</BuyerPrice>"; - itemStr += L"<SaleRemark>" + cell.GetItemString(row, colSaleRemark) + L"</SaleRemark>"; + itemStr += L"<ItemNo>" + cell.GetItemXmlString(row, colItemNo) + L"</ItemNo>"; + itemStr += L"<CustomItemNo>" + cell.GetItemXmlString(row, colCustomerItemNo) + L"</CustomItemNo>"; + itemStr += L"<ItemName>" + cell.GetItemXmlString(row, colItemName) + L"</ItemName>"; + itemStr += L"<ItemCName>" + cell.GetItemXmlString(row, colItemCName) + L"</ItemCName>"; + itemStr += L"<ItemSpec>" + cell.GetItemXmlString(row, colItemSpec) + L"</ItemSpec>"; + itemStr += L"<CustomerImage>" + cell.GetItemXmlString(row, colCustomerImage) + L"</CustomerImage>"; + itemStr += L"<BuyerPrice>" + cell.GetItemXmlString(row, colBuyerPrice) + L"</BuyerPrice>"; + itemStr += L"<SaleRemark>" + cell.GetItemXmlString(row, colSaleRemark) + L"</SaleRemark>"; - itemStr += L"<BuyerMOQ>" + cell.GetItemString(row, colBuyerMOQ) + L"</BuyerMOQ>"; - itemStr += L"<BuyerRemark>" + cell.GetItemString(row, colBuyerRemark) + L"</BuyerRemark>"; - itemStr += L"<FactoryImage>" + cell.GetItemString(row, colFactoryImage) + L"</FactoryImage>"; - itemStr += L"<GWT>" + cell.GetItemString(row, colGWT) + L"</GWT>"; - itemStr += L"<NWT>" + cell.GetItemString(row, colNWT) + L"</NWT>"; - itemStr += L"<VolDesc>" + cell.GetItemString(row, colVolDesc) + L"</VolDesc>"; - itemStr += L"<Vol>" + cell.GetItemString(row, colVol) + L"</Vol>"; - itemStr += L"<F40HQ>" + cell.GetItemString(row, col40HQ) + L"</F40HQ>"; - itemStr += L"<Packing>" + cell.GetItemString(row, colInnerOuter) + L"</Packing>"; - itemStr += L"<Quantity>" + cell.GetItemString(row, colItemQty) + L"</Quantity>"; - itemStr += L"<Package>" + cell.GetItemString(row, colPackage) + L"</Package>"; - itemStr += L"<Buyer>" + cell.GetItemString(row, colBuyer) + L"</Buyer>"; - itemStr += L"<RemarkS>" + cell.GetItemString(row, colRemark) + L"</RemarkS>"; - itemStr += L"<FOBPrice>" + cell.GetItemString(row, colFOBPrice) + L"</FOBPrice>"; + itemStr += L"<BuyerMOQ>" + cell.GetItemXmlString(row, colBuyerMOQ) + L"</BuyerMOQ>"; + itemStr += L"<BuyerRemark>" + cell.GetItemXmlString(row, colBuyerRemark) + L"</BuyerRemark>"; + itemStr += L"<FactoryImage>" + cell.GetItemXmlString(row, colFactoryImage) + L"</FactoryImage>"; + itemStr += L"<GWT>" + cell.GetItemXmlString(row, colGWT)+ L"</GWT>"; + itemStr += L"<NWT>" + cell.GetItemXmlString(row, colNWT) + L"</NWT>"; + itemStr += L"<VolDesc>" + cell.GetItemXmlString(row, colVolDesc) + L"</VolDesc>"; + itemStr += L"<Vol>" + cell.GetItemXmlString(row, colVol) + L"</Vol>"; + itemStr += L"<F40HQ>" + cell.GetItemXmlString(row, col40HQ) + L"</F40HQ>"; + itemStr += L"<Packing>" + cell.GetItemXmlString(row, colInnerOuter) + L"</Packing>"; + itemStr += L"<Quantity>" + cell.GetItemXmlString(row, colItemQty) + L"</Quantity>"; + itemStr += L"<Package>" + cell.GetItemXmlString(row, colPackage) + L"</Package>"; + itemStr += L"<Buyer>" + cell.GetItemXmlString(row, colBuyer) + L"</Buyer>"; + itemStr += L"<RemarkS>" + cell.GetItemXmlString(row, colRemark) + L"</RemarkS>"; + itemStr += L"<FOBPrice>" + cell.GetItemXmlString(row, colFOBPrice) + L"</FOBPrice>"; itemStr += L"<PurchedDate>" + sdate + L"</PurchedDate>"; @@ -356,10 +356,10 @@ { xstring content = L""; xstring base = L""; - base += L"<QuoteNo>" + getBaseItem(cell, L"报价单号:") + L"</QuoteNo>"; - base += L"<ExpDate>" + getBaseItem(cell, L"报价截止日期:") + L"</ExpDate>"; - base += L"<PrjName>" + getBaseItem(cell, L"项目名称:") + L"</PrjName>"; - base += L"<QuoteDate>" + dw_base.GetItemString(1, L"QuoteDate") + L"</QuoteDate>"; + base += L"<QuoteNo>" + getBaseXmlItem(cell, L"报价单号:") + L"</QuoteNo>"; + base += L"<ExpDate>" + getBaseXmlItem(cell, L"报价截止日期:") + L"</ExpDate>"; + base += L"<PrjName>" + getBaseXmlItem(cell, L"项目名称:") + L"</PrjName>"; + base += L"<QuoteDate>" + dw_base.GetItemXmlString(1, L"QuoteDate") + L"</QuoteDate>"; int startRow = getItemHeadRow(cell); @@ -423,46 +423,46 @@ xstring itemStr = L""; itemStr += L"<RowID>" + getRowID(cell, row) + L"</RowID>"; - itemStr += L"<SKUID>" + cell.GetItemString(row, colSKUID) + L"</SKUID>"; + itemStr += L"<SKUID>" + cell.GetItemXmlString(row, colSKUID) + L"</SKUID>"; itemStr += L"<customer-photo>" + getRowTerm(cell, row, L"customer-photo") + L"</customer-photo>"; itemStr += L"<supplier-photo>" + getRowTerm(cell, row, L"supplier-photo") + L"</supplier-photo>"; - itemStr += L"<ItemNo>" + cell.GetItemString(row, colItemNo) + L"</ItemNo>"; - itemStr += L"<CustomItemNo>" + cell.GetItemString(row, colCustomerItemNo) + L"</CustomItemNo>"; - itemStr += L"<ItemName>" + cell.GetItemString(row, colItemName) + L"</ItemName>"; - itemStr += L"<ItemCName>" + cell.GetItemString(row, colItemCName) + L"</ItemCName>"; - itemStr += L"<ItemSpec>" + cell.GetItemString(row, colItemSpec) + L"</ItemSpec>"; - itemStr += L"<CustomerImage>" + cell.GetItemString(row, colCustomerImage) + L"</CustomerImage>"; - itemStr += L"<BuyerPrice>" + cell.GetItemString(row, colBuyerPrice) + L"</BuyerPrice>"; - itemStr += L"<SaleRemark>" + cell.GetItemString(row, colSaleRemark) + L"</SaleRemark>"; + itemStr += L"<ItemNo>" + cell.GetItemXmlString(row, colItemNo) + L"</ItemNo>"; + itemStr += L"<CustomItemNo>" + cell.GetItemXmlString(row, colCustomerItemNo) + L"</CustomItemNo>"; + itemStr += L"<ItemName>" + cell.GetItemXmlString(row, colItemName) + L"</ItemName>"; + itemStr += L"<ItemCName>" + cell.GetItemXmlString(row, colItemCName) + L"</ItemCName>"; + itemStr += L"<ItemSpec>" + cell.GetItemXmlString(row, colItemSpec) + L"</ItemSpec>"; + itemStr += L"<CustomerImage>" + cell.GetItemXmlString(row, colCustomerImage) + L"</CustomerImage>"; + itemStr += L"<BuyerPrice>" + cell.GetItemXmlString(row, colBuyerPrice) + L"</BuyerPrice>"; + itemStr += L"<SaleRemark>" + cell.GetItemXmlString(row, colSaleRemark) + L"</SaleRemark>"; - itemStr += L"<BuyerMOQ>" + cell.GetItemString(row, colBuyerMOQ) + L"</BuyerMOQ>"; - itemStr += L"<BuyerRemark>" + cell.GetItemString(row, colBuyerRemark) + L"</BuyerRemark>"; - itemStr += L"<FactoryImage>" + cell.GetItemString(row, colFactoryImage) + L"</FactoryImage>"; - itemStr += L"<GWT>" + cell.GetItemString(row, colGWT) + L"</GWT>"; - itemStr += L"<NWT>" + cell.GetItemString(row, colNWT) + L"</NWT>"; - itemStr += L"<VolDesc>" + cell.GetItemString(row, colVolDesc) + L"</VolDesc>"; - itemStr += L"<Vol>" + cell.GetItemString(row, colVol) + L"</Vol>"; - itemStr += L"<F40HQ>" + cell.GetItemString(row, col40HQ) + L"</F40HQ>"; - itemStr += L"<Packing>" + cell.GetItemString(row, colInnerOuter) + L"</Packing>"; - itemStr += L"<Quantity>" + cell.GetItemString(row, colItemQty) + L"</Quantity>"; - itemStr += L"<Package>" + cell.GetItemString(row, colPackage) + L"</Package>"; - itemStr += L"<Buyer>" + cell.GetItemString(row, colBuyer) + L"</Buyer>"; - itemStr += L"<RemarkS>" + cell.GetItemString(row, colRemark) + L"</RemarkS>"; - itemStr += L"<FOBPrice>" + cell.GetItemString(row, colFOBPrice) + L"</FOBPrice>"; + itemStr += L"<BuyerMOQ>" + cell.GetItemXmlString(row, colBuyerMOQ) + L"</BuyerMOQ>"; + itemStr += L"<BuyerRemark>" + cell.GetItemXmlString(row, colBuyerRemark) + L"</BuyerRemark>"; + itemStr += L"<FactoryImage>" + cell.GetItemXmlString(row, colFactoryImage) + L"</FactoryImage>"; + itemStr += L"<GWT>" + cell.GetItemXmlString(row, colGWT) + L"</GWT>"; + itemStr += L"<NWT>" + cell.GetItemXmlString(row, colNWT) + L"</NWT>"; + itemStr += L"<VolDesc>" + cell.GetItemXmlString(row, colVolDesc) + L"</VolDesc>"; + itemStr += L"<Vol>" + cell.GetItemXmlString(row, colVol) + L"</Vol>"; + itemStr += L"<F40HQ>" + cell.GetItemXmlString(row, col40HQ) + L"</F40HQ>"; + itemStr += L"<Packing>" + cell.GetItemXmlString(row, colInnerOuter) + L"</Packing>"; + itemStr += L"<Quantity>" + cell.GetItemXmlString(row, colItemQty) + L"</Quantity>"; + itemStr += L"<Package>" + cell.GetItemXmlString(row, colPackage) + L"</Package>"; + itemStr += L"<Buyer>" + cell.GetItemXmlString(row, colBuyer) + L"</Buyer>"; + itemStr += L"<RemarkS>" + cell.GetItemXmlString(row, colRemark) + L"</RemarkS>"; + itemStr += L"<FOBPrice>" + cell.GetItemXmlString(row, colFOBPrice) + L"</FOBPrice>"; - itemStr += L"<Supplier>" + cell.GetItemString(row, colSupplier) + L"</Supplier>"; - itemStr += L"<Supplier1>" + cell.GetItemString(row, colSupplier1) + L"</Supplier1>"; - itemStr += L"<Supplier2>" + cell.GetItemString(row, colSupplier2) + L"</Supplier2>"; - itemStr += L"<Supplier3>" + cell.GetItemString(row, colSupplier3) + L"</Supplier3>"; - itemStr += L"<POPrice>" + cell.GetItemString(row, colPOPrice) + L"</POPrice>"; - itemStr += L"<POPrice1>" + cell.GetItemString(row, colPOPrice1) + L"</POPrice1>"; - itemStr += L"<POPrice2>" + cell.GetItemString(row, colPOPrice2) + L"</POPrice2>"; - itemStr += L"<POPrice3>" + cell.GetItemString(row, colPOPrice3) + L"</POPrice3>"; + itemStr += L"<Supplier>" + cell.GetItemXmlString(row, colSupplier) + L"</Supplier>"; + itemStr += L"<Supplier1>" + cell.GetItemXmlString(row, colSupplier1) + L"</Supplier1>"; + itemStr += L"<Supplier2>" + cell.GetItemXmlString(row, colSupplier2) + L"</Supplier2>"; + itemStr += L"<Supplier3>" + cell.GetItemXmlString(row, colSupplier3) + L"</Supplier3>"; + itemStr += L"<POPrice>" + cell.GetItemXmlString(row, colPOPrice) + L"</POPrice>"; + itemStr += L"<POPrice1>" + cell.GetItemXmlString(row, colPOPrice1) + L"</POPrice1>"; + itemStr += L"<POPrice2>" + cell.GetItemXmlString(row, colPOPrice2) + L"</POPrice2>"; + itemStr += L"<POPrice3>" + cell.GetItemXmlString(row, colPOPrice3) + L"</POPrice3>"; - itemStr += L"<BOMType>" + cell.GetItemString(row, colBOMType) + L"</BOMType>"; - itemStr += L"<BOMType1>" + cell.GetItemString(row, colBOMType1) + L"</BOMType1>"; - itemStr += L"<BOMType2>" + cell.GetItemString(row, colBOMType2) + L"</BOMType2>"; - itemStr += L"<BOMType3>" + cell.GetItemString(row, colBOMType2) + L"</BOMType3>"; + itemStr += L"<BOMType>" + cell.GetItemXmlString(row, colBOMType) + L"</BOMType>"; + itemStr += L"<BOMType1>" + cell.GetItemXmlString(row, colBOMType1) + L"</BOMType1>"; + itemStr += L"<BOMType2>" + cell.GetItemXmlString(row, colBOMType2) + L"</BOMType2>"; + itemStr += L"<BOMType3>" + cell.GetItemXmlString(row, colBOMType2) + L"</BOMType3>"; itemStr += L"<PurchedDate>" + sdate + L"</PurchedDate>"; itemStr += L"<EnquiryLineID>" + getRowTerm(cell, row, L"EnquiryLineID") + L"</EnquiryLineID>"; @@ -474,19 +474,19 @@ if (cell.GetItemString(row, colItemName) != L"" || cell.GetItemString(row, colItemSpec) != L"") break; if (cell.GetItemString(row, colSupplier) == L"")break; xstring extStr = L""; - extStr += L"<Supplier>" + cell.GetItemString(row, colSupplier) + L"</Supplier>"; - extStr += L"<Supplier1>" + cell.GetItemString(row, colSupplier1) + L"</Supplier1>"; - extStr += L"<Supplier2>" + cell.GetItemString(row, colSupplier2) + L"</Supplier2>"; - extStr += L"<Supplier3>" + cell.GetItemString(row, colSupplier3) + L"</Supplier3>"; - extStr += L"<POPrice>" + cell.GetItemString(row, colPOPrice) + L"</POPrice>"; - extStr += L"<POPrice1>" + cell.GetItemString(row, colPOPrice1) + L"</POPrice1>"; - extStr += L"<POPrice2>" + cell.GetItemString(row, colPOPrice2) + L"</POPrice2>"; - extStr += L"<POPrice3>" + cell.GetItemString(row, colPOPrice3) + L"</POPrice3>"; + extStr += L"<Supplier>" + cell.GetItemXmlString(row, colSupplier) + L"</Supplier>"; + extStr += L"<Supplier1>" + cell.GetItemXmlString(row, colSupplier1) + L"</Supplier1>"; + extStr += L"<Supplier2>" + cell.GetItemXmlString(row, colSupplier2) + L"</Supplier2>"; + extStr += L"<Supplier3>" + cell.GetItemXmlString(row, colSupplier3) + L"</Supplier3>"; + extStr += L"<POPrice>" + cell.GetItemXmlString(row, colPOPrice) + L"</POPrice>"; + extStr += L"<POPrice1>" + cell.GetItemXmlString(row, colPOPrice1) + L"</POPrice1>"; + extStr += L"<POPrice2>" + cell.GetItemXmlString(row, colPOPrice2) + L"</POPrice2>"; + extStr += L"<POPrice3>" + cell.GetItemXmlString(row, colPOPrice3) + L"</POPrice3>"; - extStr += L"<BOMType>" + cell.GetItemString(row, colBOMType) + L"</BOMType>"; - extStr += L"<BOMType1>" + cell.GetItemString(row, colBOMType1) + L"</BOMType1>"; - extStr += L"<BOMType2>" + cell.GetItemString(row, colBOMType2) + L"</BOMType2>"; - extStr += L"<BOMType3>" + cell.GetItemString(row, colBOMType2) + L"</BOMType3>"; + extStr += L"<BOMType>" + cell.GetItemXmlString(row, colBOMType) + L"</BOMType>"; + extStr += L"<BOMType1>" + cell.GetItemXmlString(row, colBOMType1) + L"</BOMType1>"; + extStr += L"<BOMType2>" + cell.GetItemXmlString(row, colBOMType2) + L"</BOMType2>"; + extStr += L"<BOMType3>" + cell.GetItemXmlString(row, colBOMType2) + L"</BOMType3>"; itemStr += L"<ExtItem>" + extStr + L"</ExtItem>"; //备用采购信息 xstring eid = GetGuid(); @@ -567,6 +567,11 @@ im.Redraw(); return 1; + } + + xstring getBaseXmlItem(xcell dw_cell, xstring colname) + { + return xutil::ToXmlText(getBaseItem(dw_cell, colname)); } xstring getBaseItem(xcell dw_cell, xstring colname) @@ -858,14 +863,14 @@ xstring itemStr = L""; itemStr += L"<RowID>" + getRowID(dw_cell, row) + L"</RowID>"; - itemStr += L"<ItemNo>" + dw_cell.GetItemString(row, colItemNo) + L"</ItemNo>"; - itemStr += L"<CustomerItemNo>" + dw_cell.GetItemString(row, colCustomerItemNo) + L"</CustomerItemNo>"; - itemStr += L"<ItemName>" + dw_cell.GetItemString(row, colItemName) + L"</ItemName>"; - itemStr += L"<ItemCName>" + dw_cell.GetItemString(row, colItemCName) + L"</ItemCName>"; - itemStr += L"<ItemSpec>" + dw_cell.GetItemString(row, colItemSpec) + L"</ItemSpec>"; - itemStr += L"<BuyerPrice>" + dw_cell.GetItemString(row, colBuyerPrice) + L"</BuyerPrice>"; - itemStr += L"<ProductInfo>" + dw_cell.GetItemString(row, colProductInfo) + L"</ProductInfo>"; - itemStr += L"<ProductInfo1>" + dw_cell.GetItemString(row, colProductInfo1) + L"</ProductInfo1>"; + itemStr += L"<ItemNo>" + dw_cell.GetItemXmlString(row, colItemNo) + L"</ItemNo>"; + itemStr += L"<CustomerItemNo>" + dw_cell.GetItemXmlString(row, colCustomerItemNo) + L"</CustomerItemNo>"; + itemStr += L"<ItemName>" + dw_cell.GetItemXmlString(row, colItemName) + L"</ItemName>"; + itemStr += L"<ItemCName>" + dw_cell.GetItemXmlString(row, colItemCName) + L"</ItemCName>"; + itemStr += L"<ItemSpec>" + dw_cell.GetItemXmlString(row, colItemSpec) + L"</ItemSpec>"; + itemStr += L"<BuyerPrice>" + dw_cell.GetItemXmlString(row, colBuyerPrice) + L"</BuyerPrice>"; + itemStr += L"<ProductInfo>" + dw_cell.GetItemXmlString(row, colProductInfo) + L"</ProductInfo>"; + itemStr += L"<ProductInfo1>" + dw_cell.GetItemXmlString(row, colProductInfo1) + L"</ProductInfo1>"; if (dw_cell.GetItemString(row, colBuyerPrice) == L"") return L"采购价格没有录入"; if (dw_cell.GetItemString(row, colGWT) == L"") return L"毛重没有录入"; @@ -884,14 +889,14 @@ { if (dw_cell.GetItemString(row, colPOPrice1) == L"") return L"采购价格1没有录入"; } - itemStr += L"<BuyerMOQ>" + dw_cell.GetItemString(row, colBuyerMOQ) + L"</BuyerMOQ>"; - itemStr += L"<BuyerRemark>" + dw_cell.GetItemString(row, colBuyerRemark) + L"</BuyerRemark>"; - itemStr += L"<FactoryImage>" + dw_cell.GetItemString(row, colFactoryImage) + L"</FactoryImage>"; - itemStr += L"<GWT>" + dw_cell.GetItemString(row, colGWT) + L"</GWT>"; - itemStr += L"<NWT>" + dw_cell.GetItemString(row, colNWT) + L"</NWT>"; - itemStr += L"<VolDesc>" + dw_cell.GetItemString(row, colVolDesc) + L"</VolDesc>"; - itemStr += L"<Vol>" + dw_cell.GetItemString(row, colVol) + L"</Vol>"; - itemStr += L"<F40HQ>" + dw_cell.GetItemString(row, col40HQ) + L"</F40HQ>"; + itemStr += L"<BuyerMOQ>" + dw_cell.GetItemXmlString(row, colBuyerMOQ) + L"</BuyerMOQ>"; + itemStr += L"<BuyerRemark>" + dw_cell.GetItemXmlString(row, colBuyerRemark) + L"</BuyerRemark>"; + itemStr += L"<FactoryImage>" + dw_cell.GetItemXmlString(row, colFactoryImage) + L"</FactoryImage>"; + itemStr += L"<GWT>" + dw_cell.GetItemXmlString(row, colGWT) + L"</GWT>"; + itemStr += L"<NWT>" + dw_cell.GetItemXmlString(row, colNWT) + L"</NWT>"; + itemStr += L"<VolDesc>" + dw_cell.GetItemXmlString(row, colVolDesc) + L"</VolDesc>"; + itemStr += L"<Vol>" + dw_cell.GetItemXmlString(row, colVol) + L"</Vol>"; + itemStr += L"<F40HQ>" + dw_cell.GetItemXmlString(row, col40HQ) + L"</F40HQ>"; itemStr += L"<PurchedDate>" + sdate + L"</PurchedDate>"; itemStr += L"<EnquiryLineID>" + getRowTerm(dw_cell, row, L"EnquiryLineID") + L"</EnquiryLineID>"; @@ -1057,25 +1062,25 @@ xstring itemStr = L""; xstring issend = L"1"; itemStr += L"<RowID>" + getRowID(dw_cell, row) + L"</RowID>"; - itemStr += L"<ItemNo>" + dw_cell.GetItemString(row, colItemNo) + L"</ItemNo>"; - itemStr += L"<ItemName>" + dw_cell.GetItemString(row, colItemName) + L"</ItemName>"; - itemStr += L"<ItemCName>" + dw_cell.GetItemString(row, colItemCName) + L"</ItemCName>"; - itemStr += L"<ItemSpec>" + dw_cell.GetItemString(row, colItemSpec) + L"</ItemSpec>"; + itemStr += L"<ItemNo>" + dw_cell.GetItemXmlString(row, colItemNo) + L"</ItemNo>"; + itemStr += L"<ItemName>" + dw_cell.GetItemXmlString(row, colItemName) + L"</ItemName>"; + itemStr += L"<ItemCName>" + dw_cell.GetItemXmlString(row, colItemCName) + L"</ItemCName>"; + itemStr += L"<ItemSpec>" + dw_cell.GetItemXmlString(row, colItemSpec) + L"</ItemSpec>"; itemStr += L"<RowNo>" + xstring(row - startRow + 1) + L"</RowNo>"; - itemStr += L"<Purchor>" + dw_cell.GetItemString(row, colBuyer) + L"</Purchor>"; - itemStr += L"<Package>" + dw_cell.GetItemString(row, colPackage) + L"</Package>"; - itemStr += L"<NWT>" + dw_cell.GetItemString(row, colNW) + L"</NWT>"; - itemStr += L"<GWT>" + dw_cell.GetItemString(row, colGW) + L"</GWT>"; - itemStr += L"<VolDesc>" + dw_cell.GetItemString(row, colVolDesc) + L"</VolDesc>"; - itemStr += L"<Supplier>" + dw_cell.GetItemString(row, colSupplier) + L"</Supplier>"; - itemStr += L"<BuyPrice>" + dw_cell.GetItemString(row, colPOPrice) + L"</BuyPrice>"; - itemStr += L"<Supplier1>" + dw_cell.GetItemString(row, colSupplier1) + L"</Supplier1>"; - itemStr += L"<BuyPrice1>" + dw_cell.GetItemString(row, colPOPrice1) + L"</BuyPrice1>"; - itemStr += L"<BOMType1>" + dw_cell.GetItemString(row, colBOMType1) + L"</BOMType1>"; - itemStr += L"<BOMType>" + dw_cell.GetItemString(row, colBOMType) + L"</BOMType>"; - itemStr += L"<POPrice>" + dw_cell.GetItemString(row, colPrice) + L"</POPrice>"; - itemStr += L"<ProductInfo>" + dw_cell.GetItemString(row, colProductInfo) + L"</ProductInfo>"; - itemStr += L"<ProductInfo1>" + dw_cell.GetItemString(row, colProductInfo1) + L"</ProductInfo1>"; + itemStr += L"<Purchor>" + dw_cell.GetItemXmlString(row, colBuyer) + L"</Purchor>"; + itemStr += L"<Package>" + dw_cell.GetItemXmlString(row, colPackage) + L"</Package>"; + itemStr += L"<NWT>" + dw_cell.GetItemXmlString(row, colNW) + L"</NWT>"; + itemStr += L"<GWT>" + dw_cell.GetItemXmlString(row, colGW) + L"</GWT>"; + itemStr += L"<VolDesc>" + dw_cell.GetItemXmlString(row, colVolDesc) + L"</VolDesc>"; + itemStr += L"<Supplier>" + dw_cell.GetItemXmlString(row, colSupplier) + L"</Supplier>"; + itemStr += L"<BuyPrice>" + dw_cell.GetItemXmlString(row, colPOPrice) + L"</BuyPrice>"; + itemStr += L"<Supplier1>" + dw_cell.GetItemXmlString(row, colSupplier1) + L"</Supplier1>"; + itemStr += L"<BuyPrice1>" + dw_cell.GetItemXmlString(row, colPOPrice1) + L"</BuyPrice1>"; + itemStr += L"<BOMType1>" + dw_cell.GetItemXmlString(row, colBOMType1) + L"</BOMType1>"; + itemStr += L"<BOMType>" + dw_cell.GetItemXmlString(row, colBOMType) + L"</BOMType>"; + itemStr += L"<POPrice>" + dw_cell.GetItemXmlString(row, colPrice) + L"</POPrice>"; + itemStr += L"<ProductInfo>" + dw_cell.GetItemXmlString(row, colProductInfo) + L"</ProductInfo>"; + itemStr += L"<ProductInfo1>" + dw_cell.GetItemXmlString(row, colProductInfo1) + L"</ProductInfo1>"; if (dw_cell.GetItemString(row, colBuyer) == L"")issend = L"0"; itemStr += L"<IsSend>" + issend + L"</IsSend>"; @@ -1123,19 +1128,19 @@ xstring itemStr = L""; xstring issend = L"1"; itemStr += L"<RowID>" + getRowID(dw_cell, row) + L"</RowID>"; - itemStr += L"<ItemNo>" + dw_cell.GetItemString(row, colItemNo) + L"</ItemNo>"; - itemStr += L"<CustomerItemNo>" + dw_cell.GetItemString(row, colCustomerItemNo) + L"</CustomerItemNo>"; - itemStr += L"<ItemName>" + dw_cell.GetItemString(row, colItemName) + L"</ItemName>"; - itemStr += L"<ItemCName>" + dw_cell.GetItemString(row, colItemCName) + L"</ItemCName>"; - itemStr += L"<ItemSpec>" + dw_cell.GetItemString(row, colItemSpec) + L"</ItemSpec>"; + itemStr += L"<ItemNo>" + dw_cell.GetItemXmlString(row, colItemNo) + L"</ItemNo>"; + itemStr += L"<CustomerItemNo>" + dw_cell.GetItemXmlString(row, colCustomerItemNo) + L"</CustomerItemNo>"; + itemStr += L"<ItemName>" + dw_cell.GetItemXmlString(row, colItemName) + L"</ItemName>"; + itemStr += L"<ItemCName>" + dw_cell.GetItemXmlString(row, colItemCName) + L"</ItemCName>"; + itemStr += L"<ItemSpec>" + dw_cell.GetItemXmlString(row, colItemSpec) + L"</ItemSpec>"; itemStr += L"<RowNo>" + xstring(row - startRow + 1) + L"</RowNo>"; - itemStr += L"<Purchor>" + dw_cell.GetItemString(row, colBuyer) + L"</Purchor>"; - itemStr += L"<Package>" + dw_cell.GetItemString(row, colPackage) + L"</Package>"; - itemStr += L"<NWT>" + dw_cell.GetItemString(row, colNW) + L"</NWT>"; - itemStr += L"<GWT>" + dw_cell.GetItemString(row, colGW) + L"</GWT>"; - itemStr += L"<VolDesc>" + dw_cell.GetItemString(row, colVolDesc) + L"</VolDesc>"; - itemStr += L"<ProductInfo>" + dw_cell.GetItemString(row, colProductInfo) + L"</ProductInfo>"; - itemStr += L"<ProductInfo1>" + dw_cell.GetItemString(row, colProductInfo1) + L"</ProductInfo1>"; + itemStr += L"<Purchor>" + dw_cell.GetItemXmlString(row, colBuyer) + L"</Purchor>"; + itemStr += L"<Package>" + dw_cell.GetItemXmlString(row, colPackage) + L"</Package>"; + itemStr += L"<NWT>" + dw_cell.GetItemXmlString(row, colNW) + L"</NWT>"; + itemStr += L"<GWT>" + dw_cell.GetItemXmlString(row, colGW) + L"</GWT>"; + itemStr += L"<VolDesc>" + dw_cell.GetItemXmlString(row, colVolDesc) + L"</VolDesc>"; + itemStr += L"<ProductInfo>" + dw_cell.GetItemXmlString(row, colProductInfo) + L"</ProductInfo>"; + itemStr += L"<ProductInfo1>" + dw_cell.GetItemXmlString(row, colProductInfo1) + L"</ProductInfo1>"; if (dw_cell.GetItemString(row, colBuyer) == L"")issend = L"0"; itemStr += L"<IsSend>" + issend + L"</IsSend>"; @@ -1177,14 +1182,14 @@ xstring itemStr = L""; xstring issend=L"1"; itemStr += L"<RowID>"+getRowID(dw_cell,row)+L"</RowID>"; - itemStr += L"<ItemNo>"+dw_cell.GetItemString(row, colItemNo)+L"</ItemNo>"; - itemStr += L"<ItemName>"+dw_cell.GetItemString(row, colItemName)+L"</ItemName>"; - itemStr += L"<ItemCName>"+dw_cell.GetItemString(row, colItemCName)+L"</ItemCName>"; - itemStr += L"<ItemSpec>"+dw_cell.GetItemString(row, colItemSpec)+L"</ItemSpec>"; + itemStr += L"<ItemNo>"+dw_cell.GetItemXmlString(row, colItemNo)+L"</ItemNo>"; + itemStr += L"<ItemName>"+dw_cell.GetItemXmlString(row, colItemName)+L"</ItemName>"; + itemStr += L"<ItemCName>"+dw_cell.GetItemXmlString(row, colItemCName)+L"</ItemCName>"; + itemStr += L"<ItemSpec>"+dw_cell.GetItemXmlString(row, colItemSpec)+L"</ItemSpec>"; itemStr += L"<RowNo>"+(row - startRow +1).toString()+L"</RowNo>"; - itemStr += L"<Purchor>"+dw_cell.GetItemString(row, colBuyer)+L"</Purchor>"; - itemStr += L"<Package>"+dw_cell.GetItemString(row, colPackage)+L"</Package>"; - if(dw_cell.GetItemString(row, colBuyer) ==L"")issend=L"0"; + itemStr += L"<Purchor>"+dw_cell.GetItemXmlString(row, colBuyer)+L"</Purchor>"; + itemStr += L"<Package>"+dw_cell.GetItemXmlString(row, colPackage)+L"</Package>"; + if(dw_cell.GetItemXmlString(row, colBuyer) ==L"")issend=L"0"; itemStr += L"<IsSend>"+issend+L"</IsSend>"; items += L"<Item>"+itemStr+L"</Item>"; @@ -1397,14 +1402,14 @@ //if(dw_cell.GetItemString(row, colItemName)==L"")continue; xstring itemStr = L""; itemStr += L"<RowID>" + getRowID(dw_cell, row) + L"</RowID>"; - itemStr += L"<ItemNo>" + dw_cell.GetItemString(row, colItemNo) + L"</ItemNo>"; - itemStr += L"<ItemName>" + dw_cell.GetItemString(row, colItemName) + L"</ItemName>"; - itemStr += L"<ItemCName>" + dw_cell.GetItemString(row, colItemCName) + L"</ItemCName>"; - itemStr += L"<ItemSpec>" + dw_cell.GetItemString(row, colItemSpec) + L"</ItemSpec>"; - itemStr += L"<BuyerPrice>" + dw_cell.GetItemString(row, colBuyerPrice) + L"</BuyerPrice>"; - itemStr += L"<ProductInfo>" + dw_cell.GetItemString(row, colProductInfo) + L"</ProductInfo>"; - itemStr += L"<ProductInfo1>" + dw_cell.GetItemString(row, colProductInfo1) + L"</ProductInfo1>"; - itemStr += L"<Buyer>" + dw_cell.GetItemString(row, colPurchor) + L"</Buyer>"; + itemStr += L"<ItemNo>" + dw_cell.GetItemXmlString(row, colItemNo) + L"</ItemNo>"; + itemStr += L"<ItemName>" + dw_cell.GetItemXmlString(row, colItemName) + L"</ItemName>"; + itemStr += L"<ItemCName>" + dw_cell.GetItemXmlString(row, colItemCName) + L"</ItemCName>"; + itemStr += L"<ItemSpec>" + dw_cell.GetItemXmlString(row, colItemSpec) + L"</ItemSpec>"; + itemStr += L"<BuyerPrice>" + dw_cell.GetItemXmlString(row, colBuyerPrice) + L"</BuyerPrice>"; + itemStr += L"<ProductInfo>" + dw_cell.GetItemXmlString(row, colProductInfo) + L"</ProductInfo>"; + itemStr += L"<ProductInfo1>" + dw_cell.GetItemXmlString(row, colProductInfo1) + L"</ProductInfo1>"; + itemStr += L"<Buyer>" + dw_cell.GetItemXmlString(row, colPurchor) + L"</Buyer>"; /* if(dw_cell.GetItemString(row, colBuyerPrice)==L"") return L"采购价格没有录入"; @@ -1437,14 +1442,14 @@ if(dw_cell.GetItemString(row, colVolDesc)==L"") return L"体积信息没有录入"; } */ - itemStr += L"<BuyerMOQ>" + dw_cell.GetItemString(row, colBuyerMOQ) + L"</BuyerMOQ>"; - itemStr += L"<BuyerRemark>" + dw_cell.GetItemString(row, colBuyerRemark) + L"</BuyerRemark>"; - itemStr += L"<FactoryImage>" + dw_cell.GetItemString(row, colFactoryImage) + L"</FactoryImage>"; - itemStr += L"<GWT>" + dw_cell.GetItemString(row, colGWT) + L"</GWT>"; - itemStr += L"<NWT>" + dw_cell.GetItemString(row, colNWT) + L"</NWT>"; - itemStr += L"<VolDesc>" + dw_cell.GetItemString(row, colVolDesc) + L"</VolDesc>"; - itemStr += L"<Vol>" + dw_cell.GetItemString(row, colVol) + L"</Vol>"; - itemStr += L"<F40HQ>" + dw_cell.GetItemString(row, col40HQ) + L"</F40HQ>"; + itemStr += L"<BuyerMOQ>" + dw_cell.GetItemXmlString(row, colBuyerMOQ) + L"</BuyerMOQ>"; + itemStr += L"<BuyerRemark>" + dw_cell.GetItemXmlString(row, colBuyerRemark) + L"</BuyerRemark>"; + itemStr += L"<FactoryImage>" + dw_cell.GetItemXmlString(row, colFactoryImage) + L"</FactoryImage>"; + itemStr += L"<GWT>" + dw_cell.GetItemXmlString(row, colGWT) + L"</GWT>"; + itemStr += L"<NWT>" + dw_cell.GetItemXmlString(row, colNWT) + L"</NWT>"; + itemStr += L"<VolDesc>" + dw_cell.GetItemXmlString(row, colVolDesc) + L"</VolDesc>"; + itemStr += L"<Vol>" + dw_cell.GetItemXmlString(row, colVol) + L"</Vol>"; + itemStr += L"<F40HQ>" + dw_cell.GetItemXmlString(row, col40HQ) + L"</F40HQ>"; itemStr += L"<PurchedDate>" + sdate + L"</PurchedDate>"; itemStr += L"<supplier-photo>" + getRowTerm(dw_cell, row, L"supplier-photo") + L"</supplier-photo>"; @@ -3882,7 +3887,7 @@ dw_goods.SetItemString(i, L"ItemID", ItemID); xstring Item = L"<Item update.new='1' update.modify='1' guid='" + ItemID + L"'>"; Item += L"<SKUID>" + ItemID + L"</SKUID>"; - Item += L"<GoodsNo>" + dw_goods.GetItemString(i, L"GoodsNo") + L"</GoodsNo>"; + Item += L"<GoodsNo>" + dw_goods.GetItemXmlString(i, L"GoodsNo") + L"</GoodsNo>"; xstring SKUNo = GetNo(); dw_goods.SetItemString(i, L"SKUNo", SKUNo); dw_goods.Redraw(); @@ -3893,9 +3898,9 @@ Item += L"<No>" + SKUNo + L"</No>"; Item += L"<SKUNo>" + SKUNo + L"</SKUNo>"; - Item += L"<CName>" + dw_goods.GetItemString(i, L"CName") + L"</CName>"; - Item += L"<EName>" + dw_goods.GetItemString(i, L"ItemName") + L"</EName>"; - Item += L"<Packing>" + dw_goods.GetItemString(i, L"Packing") + L"</Packing>"; + Item += L"<CName>" + dw_goods.GetItemXmlString(i, L"CName") + L"</CName>"; + Item += L"<EName>" + dw_goods.GetItemXmlString(i, L"ItemName") + L"</EName>"; + Item += L"<Packing>" + dw_goods.GetItemXmlString(i, L"Packing") + L"</Packing>"; Item += L"<CategoryID>" + categoryID + L"</CategoryID>"; Item += L"<FolderID>" + folderID + L"</FolderID>"; @@ -5344,8 +5349,8 @@ if (hasParty(dw_cell.GetItemString(row, colSupplier)) == false) { itemStr += L"<Item update.new='1' update.modify='1'>"; - itemStr += L"<Name>" + dw_cell.GetItemString(row, colSupplier) + L"</Name>"; - itemStr += L"<ShortName>" + dw_cell.GetItemString(row, colSupplier) + L"</ShortName>"; + itemStr += L"<Name>" + dw_cell.GetItemXmlString(row, colSupplier) + L"</Name>"; + itemStr += L"<ShortName>" + dw_cell.GetItemXmlString(row, colSupplier) + L"</ShortName>"; itemStr += L"</Item>"; } } @@ -5357,8 +5362,8 @@ if (hasParty(dw_cell.GetItemString(row, colSupplier1)) == false) { itemStr += L"<Item update.new='1' update.modify='1'>"; - itemStr += L"<Name>" + dw_cell.GetItemString(row, colSupplier1) + L"</Name>"; - itemStr += L"<ShortName>" + dw_cell.GetItemString(row, colSupplier1) + L"</ShortName>"; + itemStr += L"<Name>" + dw_cell.GetItemXmlString(row, colSupplier1) + L"</Name>"; + itemStr += L"<ShortName>" + dw_cell.GetItemXmlString(row, colSupplier1) + L"</ShortName>"; itemStr += L"</Item>"; } } @@ -5370,8 +5375,8 @@ if (hasParty(dw_cell.GetItemString(row, colSupplier2)) == false) { itemStr += L"<Item update.new='1' update.modify='1'>"; - itemStr += L"<Name>" + dw_cell.GetItemString(row, colSupplier2) + L"</Name>"; - itemStr += L"<ShortName>" + dw_cell.GetItemString(row, colSupplier2) + L"</ShortName>"; + itemStr += L"<Name>" + dw_cell.GetItemXmlString(row, colSupplier2) + L"</Name>"; + itemStr += L"<ShortName>" + dw_cell.GetItemXmlString(row, colSupplier2) + L"</ShortName>"; itemStr += L"</Item>"; } } @@ -5383,8 +5388,8 @@ if (hasParty(dw_cell.GetItemString(row, colSupplier3)) == false) { itemStr += L"<Item update.new='1' update.modify='1'>"; - itemStr += L"<Name>" + dw_cell.GetItemString(row, colSupplier3) + L"</Name>"; - itemStr += L"<ShortName>" + dw_cell.GetItemString(row, colSupplier3) + L"</ShortName>"; + itemStr += L"<Name>" + dw_cell.GetItemXmlString(row, colSupplier3) + L"</Name>"; + itemStr += L"<ShortName>" + dw_cell.GetItemXmlString(row, colSupplier3) + L"</ShortName>"; itemStr += L"</Item>"; } } diff --git a/jrj/xframe/devloper/XDevEditCode.cpp b/jrj/xframe/devloper/XDevEditCode.cpp new file mode 100644 index 0000000..1e8dc56 --- /dev/null +++ b/jrj/xframe/devloper/XDevEditCode.cpp @@ -0,0 +1,122 @@ +#include <wobject/xstring.hpp> +#include <wobject/xwin.hpp> +#include <wobject/xaserver.hpp> +#include <wobject/xaserverarg.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xlayersheet.hpp> + +using xml = KXMLDOMDocument; +class export XDevEditCode : public xwin +{ + public: + XDevEditCode(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} +public: + static XDevEditCode* CreateInstance(void* implPtr, void* hWnd) + { + XDevEditCode* pWin = new XDevEditCode(implPtr, (HWND)hWnd); + return pWin; + } +private: // + xnode m_agentNode; //Agent Condition + string m_agentCond; //Agent Node + int SetAgent() + { + /* + string xfNodeAgentArea = "agentarea"; + xnode anode = GetAgentNode(xfNodeAgentArea); + var xframeElement = GetElement(); + var agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*"); + if(agent) + { + string s = agent.xml; + m_agentNode = SetAgentNodeContent (anode,s); + } + */ + return 1; + } + + //焦点激活处理函数 + int OnSetFocus(ref TEvent evt,int param) + { + SetAgent(); + + //重置工具条 + return 1; + } + + //命令发布函数 + int OnCmdDispatch(string comdid) + { + if (comdid == "xmFileSaveEx") + { + xsedit xc = this.GetControl("codecontent"); + + int hCursor = xutil::SetCursorWait(); + + string code; + //save tpp content + xc.GetContent(code); + this.SaveContent(code); + // + xutil::RestoreCursor(hCursor); + + return 1; + } + return 0; + } + + //命令处理事件 + int OnXCommand(ref TXCommandEvent evt,int param) + { + return OnCmdDispatch(evt.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent("WM_XCOMMAND",OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent("WM_SETFOCUS",OnSetFocus); + } + + int LoadData() + { + if (!this.GetParam()) return 1; + + xwin w = GetFrameWindow(); + xtree tv_folder = w.GetControl("DevExplorer"); + int hItem = this.GetParam(); + IXMLDOMElement e = tv_folder.GetItemData(hItem); + string caption = e.getAttribute("caption"); + + xsedit xc = this.GetControl("codecontent"); + string code = this.GetData(); + if (code == "")code == " "; + if (caption.find(".vl",0) >= 0 || caption.find(".vm",0) >= 0 || caption.find(".vf",0) >= 0 || caption.find("voc",0) >= 0 || caption.find("vc",0) >= 0) + { + xc.LoadContent(code,".vl"); + } + else if (caption.find(".scm",0) >= 0) + xc.LoadContent(code,".scm"); + else + xc.LoadContent(code,".cpp"); + + return 1; + } + + int OnInitial() + { + SetAgent(); + + OnAttachEvent(); + + return 1; + } + + int onload() + { + OnInitial(); + LoadData(); + return 1; + } +}; \ No newline at end of file diff --git a/jrj/xframe/devloper/XDevEditFlow.cpp b/jrj/xframe/devloper/XDevEditFlow.cpp new file mode 100644 index 0000000..9b664c3 --- /dev/null +++ b/jrj/xframe/devloper/XDevEditFlow.cpp @@ -0,0 +1,513 @@ +#include <wobject/xstring.hpp> +#include <wobject/xwin.hpp> +#include <wobject/xaserver.hpp> +#include <wobject/xaserverarg.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <xcontrol/xsedit.hpp> +#include <xcontrol/xcombobox.hpp> +#include <xcontrol/xreport.hpp> +#include <xcontrol/xflowchart.hpp> +#include "XDevEditPage.hpp" + + +using xml = KXMLDOMDocument; +class export XDevEditFlow : public XDevEditPage +{ + public: + XDevEditFlow(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {} +public: + static XDevEditFlow* CreateInstance(void* implPtr, void* hWnd) + { + XDevEditFlow* pWin = new XDevEditFlow(implPtr, (HWND)hWnd); + return pWin; + } +private: // + xdwgrid dw_role; + xdwgrid dw_node; + xdwgrid dw_data; + xdwgrid dw_action; + xdwgrid dw_stategraph; + xdwgrid dw_billaction; + + xdwgrid dw_roles; + //xdwgrid dw_nodes; + //xdwgrid dw_actions; + xdwgrid dw_do; + + xdwgrid dw_bills; + xdwgrid dw_scenes; + xdwgrid dw_states; + xdwgrid dw_events; + xdwgrid dw_conds; + + xdwgrid dw_datainterface; + xdwgrid dw_dataarg; + + xdwgrid dw_templates; + xdwgrid dw_pages; + xdwgrid dw_pageconfigs; + + KXMLDOMElement ele; + + xnode m_agentNode; //Agent Condition + xstring m_agentCond; //Agent Node + + xstring m_config; //配置类型 + + int SetAgent() + { + xstring xfNodeAgentArea = L"agentarea"; + xnode anode = GetAgentNode(xfNodeAgentArea); + auto xframeElement = GetElement(); + auto agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"/*[" + m_agentCond + L"]"); + if (agent) + { + xstring s = agent.xml(); + m_agentNode = SetAgentNode(anode,s); + } + return 1; + } + + //焦点激活处理函数 + int OnSetFocus(TEvent* evt,LPARAM param) + { + SetAgent(); + + //重置工具条 + return 1; + } + + int SetFlowChart(KXMLDOMElement e) + { + xstring flowUrl = e.getAttribute(L"flowchart"); + xflowchart flowchart = GetControl(L"flowchart"); + if (flowUrl != L"") + { + xml f; + if (xaserver::FetchXml(GetServerUrl(),flowUrl,L"",f) == 1) + { + flowchart.Load(f.documentElement()); + } + } + return 1; + } + + int FillFlowChart(KXMLDOMElement e) + { + xstring cid = e.getAttribute(L"id"); + auto fn = e.selectNodes(L"//flows//flow"); + int lenf = fn.length(); + + int i = 0; + xstring sp = L""; + xcombobox xc = GetControl(L"flowlist"); + + for (i = 0; i < lenf; i++) + { + sp = L""; + KXMLDOMElement fe = fn.item(i); + KXMLDOMElement p = fe.parentNode(); + while ((xstring)p.tagName() == L"flow") + { + sp += L" "; + p = p.parentNode(); + } + + xstring name = fe.getAttribute(L"name"); + xstring d = fe.getAttribute(L"id"); + xc.AddItem(sp + name); + if (cid == d) + { + xc.SetText(name); + SetFlowChart(fe); + } + } + return 1; + } + + int OnRetrieve(KXMLDOMElement ele) + { + KXMLDOMNode node = ele.selectSingleNode(L"//stategraph"); + if (node) + { + KXMLDOMElement e = node; + dw_stategraph.Retrieve(e); + dw_stategraph.Redraw(); + } + else + { + dw_stategraph.Reset(); + dw_stategraph.Redraw(); + } + + node = ele.selectSingleNode(L"//bill.actions"); + if (node) + { + KXMLDOMElement e = node; + dw_billaction.Retrieve(e); + dw_billaction.Redraw(); + } + else + { + dw_billaction.Reset(); + dw_billaction.Redraw(); + } + + node = ele.selectSingleNode(L"//roles"); + if (node) + { + KXMLDOMElement e = node; + dw_role.Retrieve(e); + dw_role.Redraw(); + } + else + { + dw_role.Reset(); + dw_role.Redraw(); + } + + xstring id = ele.getAttribute(L"id"); + node = ele.selectSingleNode(L"//nodes[@for='" + id + L"']"); + if (node) + { + KXMLDOMElement e = node; + dw_node.Retrieve(e); + dw_node.Redraw(); + } + else + { + dw_node.Reset(); + dw_node.Redraw(); + } + + node = ele.selectSingleNode(L"//actions"); + if (node) + { + KXMLDOMElement e = node; + dw_action.Retrieve(e); + dw_action.Redraw(); + } + else + { + dw_action.Reset(); + dw_action.Redraw(); + } + + node = ele.selectSingleNode(L"//datas"); + if (node) + { + KXMLDOMElement e = node; + dw_data.Retrieve(e); + dw_data.Redraw(); + } + else + { + dw_data.Reset(); + dw_data.Redraw(); + } + + node = ele.selectSingleNode(L"//right"); + if (node) + { + KXMLDOMElement e = node; + dw_roles.Retrieve(e); + dw_roles.Redraw(); + } + else + { + dw_roles.Reset(); + dw_roles.Redraw(); + } + + node = ele.selectSingleNode(L"//bills"); + if (node) + { + KXMLDOMElement e = node; + dw_bills.Retrieve(e); + dw_bills.Redraw(); + } + else + { + dw_bills.Reset(); + dw_bills.Redraw(); + } + + node = ele.selectSingleNode(L"//events"); + if (node) + { + KXMLDOMElement e = node; + dw_events.Retrieve(e); + dw_events.Redraw(); + } + else + { + dw_events.Reset(); + dw_events.Redraw(); + } + + node = ele.selectSingleNode(L"//conds"); + if (node) + { + KXMLDOMElement e = node; + dw_conds.Retrieve(e); + dw_conds.Redraw(); + } + else + { + dw_conds.Reset(); + dw_conds.Redraw(); + } + + node = ele.selectSingleNode(L"//states"); + if (node) + { + KXMLDOMElement e = node; + dw_states.Retrieve(e); + dw_states.Redraw(); + } + else + { + dw_states.Reset(); + dw_states.Redraw(); + } + + node = ele.selectSingleNode(L"//scenes"); + if (node) + { + KXMLDOMElement e = node; + dw_scenes.Retrieve(e); + dw_scenes.Redraw(); + } + else + { + dw_scenes.Reset(); + dw_scenes.Redraw(); + } + + node = ele.selectSingleNode(L"//datainterface"); + if (node) + { + KXMLDOMElement e = node; + dw_datainterface.Retrieve(e); + dw_datainterface.Redraw(); + } + else + { + dw_datainterface.Reset(); + dw_datainterface.Redraw(); + } + if (dw_datainterface.GetRowCount() > 0) + { + KXMLDOMElement e = dw_datainterface.GetRowElement(1); + node = ele.selectSingleNode(L"//args"); + if (node) + { + KXMLDOMElement e = node; + dw_dataarg.Retrieve(e); + dw_dataarg.Redraw(); + } + else + { + dw_dataarg.Reset(); + dw_dataarg.Redraw(); + } + } + + node = ele.selectSingleNode(L"//does"); + if (node) + { + KXMLDOMElement e = node; + dw_do.Retrieve(e); + dw_do.Redraw(); + } + else + { + dw_do.Reset(); + dw_do.Redraw(); + } + if (dw_do.GetRowCount() > 0) + { + KXMLDOMElement e = dw_do.GetRowElement(1); + xstring content = e.text(); + + xsedit xs = GetControl(L"content"); + xs.SetContent(content,L".cpp"); + } + FillFlowChart(ele); + + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + if (comdid == L"xmFileSave") + { + xsedit xs = GetControl(L"xcontent"); + xstring content; + HCURSOR hCursor = xutil::SetCursorWait(); + //save xml content + xs.GetContent(content); + SaveContent(content); + xutil::RestoreCursor(hCursor); + } + else if (comdid == L"flowdef") + { + xsedit xs = GetControl(L"xcontent"); + xstring content; + //save xml content + xs.GetContent(content); + xml x = new xml; + if (x.loadXML(content)) + { + ele = x.documentElement(); + KXMLDOMElement e = x.selectSingleNode(L"//flows/flow"); + if (e) OnRetrieve(e); + } + } + + return 0; + } + + //命令处理事件 + int OnXCommand(TEvent* evt,LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnFlowSelected(TEvent* evt,LPARAM param) + { + //xtree tv_folder = GetControl(L"tv_folder"); + xcombobox cb = GetControl(L"flowlist"); + int nIndex = cb.GetCurSel(); + if (nIndex < 1) nIndex = 1; + + //int hItem = tv_folder.GetCaretItem(); + + //KXMLDOMElement ele = tv_folder.GetItemData(hItem); + KXMLDOMElement e = ele.selectSingleNode(L"(//flows//flow)[" + xstring(nIndex) + L"]"); + SetFlowChart(e); + + return 1; + } + + int OnRowClickedDo(TEvent* evt,LPARAM param) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + int row = hdr.row; + KXMLDOMElement e = dw_do.GetRowElement(row); + xstring content = e.text(); + + xsedit xs = GetControl(L"content"); + xs.SetContent(content,L".cpp"); + + return 1; + } + + int OnRowClicked(TEvent* evt,LPARAM param) + { + return 1; + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND",(FEvent)&XDevEditFlow::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditFlow::OnSetFocus); + + AttachEvent(L"flowlist",L"CBN_SELCHANGE", (FEvent)&XDevEditFlow::OnFlowSelected); + AttachEvent(L"dw_do",L"DWV_ROWFOCUSCHANGED", (FEvent)&XDevEditFlow::OnRowClickedDo); + } + + int OnInitial() + { + m_agentCond = L"1"; + SetAgent(); + + OnAttachEvent(); + + return 1; + } + + int LoadData() + { + if (!GetWinParam()) return 1; + xsedit xs = GetControl(L"xcontent"); + xstring content = GetData(); + if (content != L"") + { + xs.LoadContent(content,L".xml"); + } + + return 1; + } + + int onload() + { + dw_stategraph = GetControl(L"dw_stategraph"); + dw_stategraph.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/状态图]"); + dw_billaction = GetControl(L"dw_billaction"); + dw_billaction.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/单据操作]"); + + dw_role = GetControl(L"dw_role"); + dw_role.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/角色定义]"); + dw_node = GetControl(L"dw_node"); + dw_node.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/工作节点]"); + dw_data = GetControl(L"dw_data"); + dw_data.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/数据集]"); + dw_action = GetControl(L"dw_action"); + dw_action.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/操作]"); + + dw_roles = GetControl(L"dw_roles"); + dw_roles.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/角色权限]"); + //dw_nodes = GetControl(L"dw_nodes"); + //dw_nodes.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/操作数据集]"); + //dw_actions = GetControl(L"dw_actions"); + //dw_actions.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/节点数据集]"); + + dw_bills = GetControl(L"dw_bills"); + dw_bills.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/单据]"); + dw_scenes = GetControl(L"dw_scenes"); + dw_scenes.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/场景]"); + dw_states = GetControl(L"dw_states"); + dw_states.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/状态]"); + dw_events = GetControl(L"dw_events"); + dw_events.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/事件]"); + dw_conds = GetControl(L"dw_conds"); + dw_conds.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/条件]"); + + dw_datainterface = GetControl(L"dw_datainterface"); + dw_datainterface.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/数据接口]"); + dw_dataarg = GetControl(L"dw_dataarg"); + dw_dataarg.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/数据接口参数]"); + + dw_templates = GetControl(L"dw_templates"); + dw_templates.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/模板文件]");; + dw_pages = GetControl(L"dw_pages"); + dw_pages.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/页面文件]");; + dw_pageconfigs = GetControl(L"dw_pageconfigs"); + dw_pageconfigs.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/客户端配置]"); + + + dw_do = GetControl(L"dw_do"); + dw_do.SetDataObject(GetServerUrl(),L"dev:sheet[XRight.tpl/动作定义]"); + + dw_role.SetReadOnly(true); + dw_node.SetReadOnly(true); + dw_data.SetReadOnly(true); + dw_action.SetReadOnly(true); + dw_do.SetReadOnly(true); + + OnInitial(); + + xsedit xs = GetControl(L"content"); + xs.SetContent(L"",L".cpp"); + + LoadData(); + + return 1; + } +}; \ No newline at end of file diff --git a/jrj/xframe/devloper/XDevEditHtml.cpp b/jrj/xframe/devloper/XDevEditHtml.cpp new file mode 100644 index 0000000..35a0706 --- /dev/null +++ b/jrj/xframe/devloper/XDevEditHtml.cpp @@ -0,0 +1,109 @@ +#include <wobject/xstring.hpp> +#include <wobject/xwin.hpp> +#include <wobject/xaserver.hpp> +#include <wobject/xaserverarg.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xsedit.hpp> +#include "XDevEditPage.hpp" + +using xml = KXMLDOMDocument; +class export XDevEditXHtml : public XDevEditPage +{ + public: + XDevEditXHtml(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {} +public: + static XDevEditPage* CreateInstance(void* implPtr, void* hWnd) + { + XDevEditPage* pWin = new XDevEditPage(implPtr, (HWND)hWnd); + return pWin; + } +private: // + xnode m_agentNode; //Agent Condition + xstring m_agentCond; //Agent Node + int SetAgent() + { + xstring xfNodeAgentArea = L"agentarea"; + xnode anode = GetAgentNode(xfNodeAgentArea); + auto xframeElement = GetElement(); + auto agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*"); + if (agent) + { + xstring s = agent.xml(); + m_agentNode = SetAgentNode(anode,s); + } + return 1; + } + + //焦点激活处理函数 + int OnSetFocus(TEvent* evt,LPARAM param) + { + SetAgent(); + + //重置工具条 + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + if (comdid == L"xmFileSave") + { + xstring content; + xsedit xs = GetControl(L"xcontent"); + HCURSOR hCursor = xutil::SetCursorWait(); + //save xml content + xs.GetContent(content); + SaveContent(content); + xutil::RestoreCursor(hCursor); + } + return 0; + } + + //命令处理事件 + int OnXCommand(TEvent* evt,LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&XDevEditXHtml::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXHtml::OnSetFocus); + + return 1; + } + + int LoadData() + { + if (!GetWinParam()) return 1; + xsedit xs = GetControl(L"xcontent"); + xstring content = GetData(); + if (content != L"") + { + xs.LoadContent(content,L".xml"); + } + + return 1; + } + + int OnInitial() + { + SetAgent(); + + OnAttachEvent(); + + return 1; + } + + int onload() + { + + OnInitial(); + LoadData(); + + return 1; + } +}; \ No newline at end of file diff --git a/jrj/xframe/devloper/XDevEditPage.cpp b/jrj/xframe/devloper/XDevEditPage.hpp similarity index 91% rename from jrj/xframe/devloper/XDevEditPage.cpp rename to jrj/xframe/devloper/XDevEditPage.hpp index f45f2db..0eec9ee 100644 --- a/jrj/xframe/devloper/XDevEditPage.cpp +++ b/jrj/xframe/devloper/XDevEditPage.hpp @@ -5,10 +5,14 @@ #include <xcontrol/xtreeview.hpp> #include <xcontrol/xlayersheet.hpp> #include <xcontrol/xcombobox.hpp> +#include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp> using xml = KXMLDOMDocument; class export XDevEditPage : public xwin { +public: + XDevEditPage(void* implPtr,HWND hWnd) :xwin(implPtr,hWnd) {} +public: xstring ProcessDevCmd(xstring cmd, xstring ext) { //trace(ext); @@ -33,7 +37,7 @@ typ = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).tagName(); if (typ == L"project")break; pitem = tv_folder.GetParentItem(pitem); - if (pitem <= 0)break; + if (!pitem)break; } return pitem; } @@ -45,7 +49,7 @@ while (true) { hDomainItem = tv_folder.GetParentItem(hP2Item); - if (tv_folder.GetParentItem(hDomainItem) <= 0)break; + if (!tv_folder.GetParentItem(hDomainItem))break; hP2Item = hDomainItem; } return hP2Item; @@ -65,7 +69,7 @@ HTREEITEM hP2Item = 0; HTREEITEM hDomainItem = 0; - if (tv_folder.GetParentItem(hItem) <= 0) + if (!tv_folder.GetParentItem(hItem)) { hDomainItem = hItem; } @@ -122,7 +126,7 @@ { HTREEITEM hP2Item = 0; HTREEITEM hDomainItem = 0; - if (tv_folder.GetParentItem(hItem) <= 0) + if (!tv_folder.GetParentItem(hItem)) { hDomainItem = hItem; } @@ -167,4 +171,9 @@ { return SaveContentEx(content, 0); } + + xstring GetGuid() + { + return publiccode::GetGuid(); + } }; \ No newline at end of file diff --git a/jrj/xframe/devloper/XDevEditXApp.cpp b/jrj/xframe/devloper/XDevEditXApp.cpp new file mode 100644 index 0000000..d7f0152 --- /dev/null +++ b/jrj/xframe/devloper/XDevEditXApp.cpp @@ -0,0 +1,553 @@ +#include <wobject/xstring.hpp> +#include <wobject/xwin.hpp> +#include <wobject/xaserver.hpp> +#include <wobject/xaserverarg.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <xcontrol/xreport.hpp> +#include <xcontrol/xsedit.hpp> +#include <xcontrol/xcombobox.hpp> +#include "XDevEditPage.hpp" + +using xml = KXMLDOMDocument; +class export XDevEditXApp : public XDevEditPage +{ + public: + XDevEditXApp(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {} +public: + static XDevEditXApp* CreateInstance(void* implPtr, void* hWnd) + { + XDevEditXApp* pWin = new XDevEditXApp(implPtr, (HWND)hWnd); + return pWin; + } +private: // + xreport dw_param; + xstring m_type; + xstring m_mode; + xtreeview tv_folder; + + xnode m_agentNode; //Agent Condition + xstring m_agentCond; //Agent Node + int SetAgent() + { + xstring xfNodeAgentArea = L"agentarea"; + xnode anode = GetAgentNode(xfNodeAgentArea); + auto xframeElement = GetElement(); + auto agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*"); + if (agent) + { + xstring s = agent.xml(); + m_agentNode = SetAgentNode(anode,s); + } + return 1; + } + + //焦点激活处理函数 + int OnSetFocus(TEvent* evt,LPARAM param) + { + SetAgent(); + + //重置工具条 + return 1; + } + + xstring getComboboxData(xcontrol xc) + { + int j = SendMessage(xc.GetHWND(),0x0147,0,0); + if (j > -1) + { + xstring s = (wchar_t*)SendMessage(xc.GetHWND(),0x0150,j,0); + return xstring(s); + } + return L""; + } + + int OnCombSelChanged() + { + xcontrol xc = GetControl(L"image"); + int j = SendMessage(xc.GetHWND(),0x0147,0,0); + if (j > -1) + { + //param s = SendMessage(xc.GetHWND(),0x0150,j,0); + xnode anode = GetAgentNode(L"image_view"); + xstring p = L"<box name='image_view' width='22'><xtoolbutton caption='' image='" + xstring(j) + L"'/></box>"; + SetAgentNode(anode,p); + } + } + + int onClare() + { + xcontrol xc = GetControl(L"caption"); + xc.SetText(L""); + + if (m_type == L"file") + { + xc = GetControl(L"xpage"); + xc.SetText(L""); + + xc = GetControl(L"image"); + SendMessage(xc.GetHWND(), 0x014E, 16, 0); + + xreport dw_param = GetControl(L"dw_param"); + xml x ; + xstring str = L"<params>"; + str += L"<param seq='1' name='' value=''></param>"; + str += L"<param seq='2' name='' value=''></param>"; + str += L"<param seq='3' name='' value=''></param>"; + str += L"<param seq='4' name='' value=''></param>"; + str += L"<param seq='5' name='' value=''></param>"; + str += L"<param seq='6' name='' value=''></param>"; + str += L"<param seq='7' name='' value=''></param>"; + str += L"<param seq='8' name='' value=''></param>"; + str += L"</params>"; + x.loadXML(str); + dw_param.Retrieve(x); + dw_param.SetReadOnly(false); + dw_param.Redraw(); + } + else + { + xc = GetControl(L"image"); + SendMessage(xc.GetHWND(), 0x014E, 15, 0); + } + + xc = GetControl(L"index"); + xc.SetText(L""); + + xc = GetControl(L"code"); + xc.SetText(L""); + + xc = GetControl(L"name"); + xc.SetText(L""); + + xc = GetControl(L"status"); + SendMessage(xc.GetHWND(), 0x014E, 0, 0); + + OnCombSelChanged(); + } + + xstring getTVData(HTREEITEM hitem) + { + xstring result = L""; + HTREEITEM citem = tv_folder.GetChildItem(hitem); + while (citem > 0) + { + xstring str = (wchar_t*)tv_folder.GetItemData(citem); + xstring name = str.mid(1,str.find(L" ",0)); + result += str.mid(0,str.length() - 2) + L">"; + /*xml x; + x.loadXML(IXMLDOMElement(ele).xml); + IXMLDOMElement e = x.documentElement; + xstring name=e.tagName; + result += e.xml; + result = result.mid(0,result.length() - 2)+L">";*/ + xstring tmp = getTVData(citem); + result += tmp; + result += L"</" + name + L">"; + citem = tv_folder.GetNextItem(citem); + } + return result; + } + + int onsave() + { + HTREEITEM root = tv_folder.GetRootItem(); + xstring str = getTVData(root); + xstring content = L"<?xml version='1.0' encoding='utf-16'?><favorites guid='" + GetGuid() + L"' caption='' image='17'>" + str + L"</favorites>"; + //trace(content);// + SaveContent(content); + onClare(); + m_mode = L"new"; + return 1; + } + + HTREEITEM getInsertItem(HTREEITEM hitem,xstring s) + { + if (tv_folder.GetChildItem(hitem) == 0 || s == L"") + return 0; + else + { + int index = s.toInt(); + HTREEITEM h = tv_folder.GetChildItem(hitem); + while (h > 0) + { + xstring p = (wchar_t*)tv_folder.GetItemData(h); + xml x ; + x.loadXML(p); + KXMLDOMElement e = x.documentElement(); + xstring str = e.getAttribute(L"index"); + str = L"" + str; + if (str == L"" && h == tv_folder.GetChildItem(hitem)) + return h; + if (str != L"") + { + if (index < str.toInt()) + return h; + } + else + return h; + h = tv_folder.GetNextItem(h); + } + return 0; + } + } + + int copyNode(HTREEITEM olditem, HTREEITEM newitem) + { + HTREEITEM citem = tv_folder.GetChildItem(olditem); + while (citem) + { + xstring str = (wchar_t*)tv_folder.GetItemData(citem); + xstring name = tv_folder.GetItemLabel(citem); + int image = tv_folder.GetItemImage(citem); + HTREEITEM h = tv_folder.InsertChildItem(newitem,name, (LPARAM)str.c_str(true), image); + copyNode(citem,h); + citem = tv_folder.GetNextItem(citem); + } + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + int LayerFlow_UnLayer_ = 0x00000100; + int LayerFlow_NS_ = 0x00000004; + HCURSOR hCursor = xutil::SetCursorWait(); + + if (comdid == L"NewFolder") + { + m_type = L"folder"; + xnode anode = GetAgentNode(L"file"); + SetAgentNode(anode,L"<vbox/>"); + anode.SetLayerFlow(LayerFlow_UnLayer); + xcontrol xc = GetControl(L"image"); + SendMessage(xc.GetHWND(), 0x014E, 15, 0); + m_mode = L"new"; + onClare(); + } + else if (comdid == L"NewFile") + { + m_type = L"file"; + xnode anode = GetAgentNode(L"file"); + anode.SetLayerFlow(LayerFlow_NS); + KXMLDOMElement e = GetElement().selectSingleNode(L"//vbox[@name='file']"); + SetAgentNode(anode,e.xml()); + xcontrol xc = GetControl(L"image"); + SendMessage(xc.GetHWND(), 0x014E, 16, 0); + m_mode = L"new"; + onClare(); + } + else if (comdid == L"param_add") + { + //dw_param.InsertRow(0); + } + else if (comdid == L"param_del") + { + //int row = dw_param.GetRow(); + //if(row<0) return 0; + //dw_param.DeleteRow(row); + } + else if (comdid == L"selectxpage") + { + xaserverarg arg; + //OpenWindow(L"/developer/XDevXWKDlg.xpage",arg); + OpenWindow(L"dev:xpage[XDevXWKDlg.xpage]",arg); + xcontrol xc = GetControl(L"xpage"); + xc.SetText(arg.GetArgString(L"caption")); + xc = GetControl(L"xpageguid"); + xc.SetText(arg.GetArgString(L"guid")); + } + else if (comdid == L"delete") + { + HTREEITEM hitem = tv_folder.GetSelectedItem(); + if (!hitem) return 0; + if (hitem == tv_folder.GetRootItem()) return 0; + if (tv_folder.GetChildItem(hitem)) return 0; + tv_folder.DeleteItem(hitem); + onsave(); + } + else if (comdid == L"save") + { + //xstring str=L"<"+m_type+L" "; + + xml x ; + x.loadXML(L"<" + m_type + L"/>"); + auto r = x.documentElement(); + + xcontrol xc = GetControl(L"caption"); + xstring name = xc.GetText(); + if (name == L"") + { + alert(L"请填写名称!"); + return 0; + } + //str += L"caption='"+name+L"' "; + r.setAttribute(L"caption",name); + + xstring tmp = GetGuid(); + //str += L"guid='"+tmp+L"' "; + r.setAttribute(L"guid",tmp); + + if (m_type == L"file") + { + xc = GetControl(L"xpage"); + tmp = xc.GetText(); + xstring tmp1 = L"" + tmp + L"?"; + xreport dw_param = GetControl(L"dw_param"); + int i = 1; + xstring ss = L""; + for (i = 1; i <= dw_param.GetRowCount(); i++) + { + xstring name1 = dw_param.GetItemString(i,1); + xstring value1 = dw_param.GetItemString(i,2); + if (name != L"") + { + xstring s = name1 + L"=" + value1 + L"&"; + ss += s; + } + } + ss = ss.mid(0, ss.length() - 1); + tmp1 += ss; + //trace(tmp1); + //str += L"url='worknode:"+tmp+L"/open#1' "; + r.setAttribute(L"url",L"" + tmp1); + } + + xc = GetControl(L"index"); + xstring index = xc.GetText(); + r.setAttribute(L"index",index); + + xc = GetControl(L"name"); + tmp = xc.GetText(); + r.setAttribute(L"name",tmp); + + xc = GetControl(L"code"); + tmp = xc.GetText(); + r.setAttribute(L"code",tmp); + + + xc = GetControl(L"name"); + tmp = xc.GetText(); + r.setAttribute(L"name",tmp); + xc = GetControl(L"status"); + //tmp=getComboboxData(xc); + tmp = xc.GetText(); + //str += L"status='"+tmp+L"' "; + r.setAttribute(L"status",tmp); + + xc = GetControl(L"image"); + //tmp=getComboboxData(xc); + tmp = xc.GetText(); + //str += L"image='"+tmp+L"' "; + r.setAttribute(L"image",tmp); + + //str += L"/>"; + //param p =str; + //trace(r.xml); + xstring p = r.xml(); + + //tv_folder.InsertChildItem(hitem,name,x.documentElement,tmp.toInt()); + HTREEITEM hitem = tv_folder.GetSelectedItem(); + if (hitem == 0) hitem = tv_folder.GetRootItem(); + HTREEITEM ditem = hitem; + if (m_mode == L"edit") + hitem = tv_folder.GetParentItem(ditem); + HTREEITEM bitem = getInsertItem(hitem,L"" + index); + HTREEITEM h; + if (!bitem) + h = tv_folder.InsertChildItem(hitem,name,p,tmp.toInt()); + else + h = tv_folder.InsertItem(hitem,bitem,name,p,tmp.toInt()); + if (m_mode == L"edit") + { + copyNode(ditem,h); + tv_folder.DeleteItem(ditem); + } + tv_folder.ExpandItemEx(hitem); + onsave(); + } + xutil::RestoreCursor(hCursor); + return 0; + } + + //命令处理事件 + int OnXCommand(TEvent* evt,LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnTreeDrag(TEvent* evt, LPARAM param) + { + TVNNMHDR& nmtv = *(TVNNMHDR*)evt->notify.pnmh; + HTREEITEM hItem = nmtv.FromItem; + tv_folder.DeleteItem(hItem); + onsave(); + return 1; + } + + int setXpage(KXMLDOMElement e) + { + xcontrol xc = GetControl(L"caption"); + xstring str = e.getAttribute(L"caption"); + xc.SetText(L"" + str); + + if (m_type == L"file") + { + xstring str = e.getAttribute(L"url"); + str = L"" + str; + if (str.find(L"?",0) < 0) + str = str + L"?"; + + xc = GetControl(L"xpage"); + xstring t = str.mid(0,str.find(L"?",0)); + xc.SetText(L"" + t); + + xstring p = str.mid(str.find(L"?",0) + 1, str.length()); + if (p != L"") + { + p += L"&"; + int i = 1; + while (p.find(L"=L",0) > 0) + { + xstring name = p.mid(0, p.find(L"=L",0)); + xstring value = p.mid(p.find(L"=L",0) + 1, p.find(L"&",0) - p.find(L"=L",0) - 1); + xreport dw_param = GetControl(L"dw_param"); + dw_param.SetItemString(i, 1, L"" + name); + dw_param.SetItemString(i, 2, L"" + value); + i += 1; + p = p.mid(p.find(L"&",0) + 1, p.length()); + } + } + } + xc = GetControl(L"image"); + xstring str = e.getAttribute(L"image"); + //xc.SetText(L""+str); + SendMessage(xc.GetHWND(), 0x014E, str.toInt(), 0); + + xc = GetControl(L"index"); + xstring str = e.getAttribute(L"index"); + xc.SetText(L"" + str); + + xc = GetControl(L"code"); + xstring str = e.getAttribute(L"code"); + xc.SetText(L"" + str); + + xc = GetControl(L"name"); + xstring str = e.getAttribute(L"name"); + xc.SetText(L"" + str); + + xc = GetControl(L"status"); + xstring str = e.getAttribute(L"status"); + xc.SetText(L"" + str); + + OnCombSelChanged(); + } + + int OnTreeSelChanged(ref TNotifyEvent evt,int param) + { + ref NMTREEVIEW nmtv = evt.pnmh; + int hitem = nmtv.itemNew.hItem; + + onClare(); + m_mode = L"new"; + if (hitem == tv_folder.GetRootItem()) return 0; + //IXMLDOMElement e = tv_folder.GetItemData(hitem); + //trace(e.xml); + param p = tv_folder.GetItemData(hitem); + xml x ; + x.loadXML(L"" + xstring(p)); + IXMLDOMElement e = x.documentElement; + m_type = e.tagName; + if (m_type == L"file") + OnCmdDispatch(L"NewFile"); + else + OnCmdDispatch(L"NewFolder"); + setXpage(e); + m_mode = L"edit"; + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND",OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS",OnSetFocus); + AttachEvent(L"image", L"CBN_SELCHANGE",OnCombSelChanged); + AttachEvent(L"tv_folder", L"TVN_ENDDRAG",OnTreeDrag); + AttachEvent(L"tv_folder", L"TVN_SELCHANGED",OnTreeSelChanged); + } + + int OnInitial() + { + SetAgent(); + + OnAttachEvent(); + + xcontrol xc = GetControl(L"image"); + int i; + for (i = 0; i < 35; i++) + { + SendMessage(xc.GetHWND(), 0x0143, 0, i.toString()); + //param p=i.toString(); + //SendMessage(xc.GetHWND(), 0x0151, i, p); + } + SendMessage(xc.GetHWND(), 0x014E, 15, 0); + + return 1; + } + + int OnTreeAdd(int hitem, IXMLDOMElement e) + { + auto list = e.selectNodes(L"*"); + int i; + int s = list.length; + for (i = 0; i < s; i++) + { + IXMLDOMElement ele = list.item(i); + xstring name = ele.getAttribute(L"caption"); + xstring image = ele.getAttribute(L"image"); + image = L"" + image; + xstring data = ele.xml; + data = data.mid(0,data.find(L">",1)) + L"/>"; + param p = data; + int j = tv_folder.InsertChildItem(hitem,name,p,image.toInt()); + OnTreeAdd(j,ele); + } + return 1; + } + + int onload() + { + dw_param = GetControl(L"dw_param"); + dw_param.SetReadOnly(false); + + tv_folder = GetControl(L"tv_folder"); + + OnInitial(); + + m_type = L"folder"; + OnCmdDispatch(L"NewFolder"); + m_mode = L"new"; + + if (!GetParam()) return 1; + xwin w = GetFrameWindow(); + xtree tv = w.GetControl(L"DevExplorer"); + int hItem = GetParam(); + IXMLDOMElement e = tv.GetItemData(hItem); + xstring name = e.getAttribute(L"caption"); + int root = tv_folder.InsertItem(L"" + name,e,17); + xstring content = GetData(); + if (content != L"") + { + //trace(content); + xml x ; + if (x.loadXML(content)) + { + OnTreeAdd(root,x.documentElement); + tv_folder.ExpandItemEx(root); + } + } + + return 1; + } +}; \ No newline at end of file diff --git a/jrj/xframe/devloper/XDevEditXCode.cpp b/jrj/xframe/devloper/XDevEditXCode.cpp deleted file mode 100644 index f26ab17..0000000 --- a/jrj/xframe/devloper/XDevEditXCode.cpp +++ /dev/null @@ -1,561 +0,0 @@ -#include <wobject/xstring.hpp> -#include <wobject/xwin.hpp> -#include <wobject/xaserver.hpp> -#include <wobject/xaserverarg.hpp> -#include <xcontrol/xtreeview.hpp> -#include <xcontrol/xlayersheet.hpp> - -using xml = KXMLDOMDocument; -class export XDeveloper : public xwin -{ - public: - XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} -public: - static XDeveloper* CreateInstance(void* implPtr, void* hWnd) - { - XDeveloper* pWin = new XDeveloper(implPtr, (HWND)hWnd); - return pWin; - } -private: // - xtreeview tv_folder; - xcontrol mle_output; - int sheet_Count; -public: - int trace(xstring msg) - { - xstring t = mle_output.GetText(); - mle_output.SetText(t + msg); - return 1; - } - - int OnProcessUrl(xstring kind, xstring url) - { - xml x ; - xaserverarg xarg; - xarg.AddArg(L"url", url); - xarg.AddArg(L"kind", kind); - xaserver::ExecXQuery(GetServerUrl(), L"[service.url.info.xq]", xarg.GetString(), x); - alert(x.xml()); - return 1; - } - - xstring ProcessDevCmd(xstring cmd, xstring ext) - { - int nlen = 0; - BYTE* pdata=nullptr; - xaserver::ProcessCmd(GetServerUrl(),( L"uri.hxsoft.com/xaserver/developer " + cmd).c_str(), ext.c_str(), pdata, nlen); - - xstring str = ((LPARAM)pdata) + L""; - return str; - } - - int SetAgent(xstring node) - { - auto n = GetElement().selectSingleNode(L"agent/projects/node()[1]"); - if (n) - { - xstring agent = n.xml(); - xstring xfNodeAgentArea = L"agentarea"; - xnode anode = GetAgentNode(xfNodeAgentArea); - SetAgentNode(anode, agent); - } - - return 1; - } - - HTREEITEM GetProjectItem(HTREEITEM hItem) - { - HTREEITEM pitem = hItem; - xstring typ; - while (true) - { - typ = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).tagName(); - if (typ == L"project")break; - pitem = tv_folder.GetParentItem(pitem); - if (!pitem )break; - } - return pitem; - } - - HTREEITEM GetP2Item(HTREEITEM hItem) - { - HTREEITEM hDomainItem; - HTREEITEM hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - return hP2Item; - } - - //树展开事件 - int OnTreeExpanding(TEvent* evt, HTREEITEM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - return 1; - } - - xstring GetData(HTREEITEM hItem) - { - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - if (!tv_folder.GetParentItem(hItem)) - { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - xaserverarg arg; - arg.AddArg(L"project.guid", prjguid); - if (hP2Item) - { - if (hP2Item != hItem) - { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"guid", guid); - } - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - xstring guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - } - else if (hDomainItem) - { - KXMLDOMElement d = tv_folder.GetItemData(hDomainItem); - xstring guid = d.getAttribute(L"guid"); - arg.AddArg(L"domain.guid", guid); - } - xstring str = ProcessDevCmd(L"getobject", arg.GetString()); - return str + L""; - } - else - return L""; - } - - int OnTreeDblClick(TEvent* evt, int param) - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 0; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode(L"//editor[@filetype='" + typ + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } - return 1; - } - - //命令发布函数 - int OnCmdDispatch(xstring comdid) - { - // - if (comdid == L"xmSqlWatch") - { - OpenWindow(L"dev:xpage[sqlWatch.vx]"); - return 1; - } - if (comdid == L"xmCheckUrl") - { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"info", url); - } - else if (comdid == L"xmClearBuffer") - { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"clearbuffer", url); - } - if (comdid == L"xmNewFolder" || comdid == L"xmNewProject" || comdid == L"xmNewFile") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - if (comdid == L"xmNewProject" && prjguid != L"") return 1; - if (comdid == L"xmNewFile" && !tv_folder.GetParentItem(hItem)) return 1; - - xaserverarg arg; - if (comdid == L"xmNewProject") - OpenWindow(L"dev:xpage[XDevProjectDlg.xpage]", arg); - else if (comdid == L"xmNewFolder") - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - else - OpenWindow(L"dev:xpage[XDevFileDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - arg.SetArg(L"project.guid", prjguid); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem)) - { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - e = tv_folder.GetItemData(hItem); - if (hP2Item) - { - if (hP2Item != hItem) - { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"parent.guid", guid); - } - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - xstring guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - } - else if (hDomainItem) - { - KXMLDOMElement d = tv_folder.GetItemData(hDomainItem); - xstring guid = d.getAttribute(L"guid"); - arg.AddArg(L"domain.guid", guid); - } - - - if (hP2Item) - { - if (comdid == L"xmNewFolder") - { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"15"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); - } - } - else - { - if (comdid == L"xmNewFolder") - { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"17"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); - } - } - - xstring str = ProcessDevCmd(L"addfolder", arg.GetString()); - if (str != L"") - { - xml x; - x.loadXML(str); - auto e1 = x.documentElement(); - e.appendChild(e1); - int himage = xstring(e1.getAttribute(L"image")).toInt(); - tv_folder.InsertChildItem(hItem, arg.GetArgString(L"name"), e1, himage); - } - - return 1; - } - else if (comdid == L"xmDeleteObject") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - - int MB_YESNO = 0x00000004; - int IDYES = 6; - - if (MessageBox(GetHWND(), L"确认删除指定的项", L"提示", MB_YESNO) != IDYES) return 1; - ProcessDevCmd(L"deletefolder", arg.GetString()); - tv_folder.DeleteItem(hItem); - - return 1; - } - else if (comdid == L"xmUpdateProject") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem && pitem != hItem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - //trace(p.xml); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - - xstring str; - str = e.getAttribute(L"caption"); - arg.AddArg(L"name", str); - - str = e.getAttribute(L"desc"); - arg.AddArg(L"desc", str); - - str = e.getAttribute(L"uri"); - arg.AddArg(L"uri", str); - - str = e.getAttribute(L"guid"); - arg.AddArg(L"guid", str); - - str = e.getAttribute(L"src"); - arg.AddArg(L"src", str); - - str = e.getAttribute(L"type"); - arg.AddArg(L"type", str); - - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - ProcessDevCmd(L"updatefolder", arg.GetString()); - str = arg.GetArgString(L"name"); - e.setAttribute(L"caption", str); - - str = arg.GetArgString(L"desc"); - e.setAttribute(L"desc", str); - - str = arg.GetArgString(L"uri"); - e.setAttribute(L"uri", str); - - tv_folder.SetItemLabel(hItem, arg.GetArgString(L"name")); - - return 1; - } - else if (comdid == L"xmEditObject") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode((xstring)L"//editor[@filetype='" + L"xml" + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } - - } - return 0; - } - - //树选择事件 - int OnTreeSelChanged(TEvent* evt, LPARAM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - //root node - KXMLDOMElement e = tv_folder.GetItemData(hItem); - SetAgent(L"projects"); - - return 1; - } - - //命令处理事件 - int OnXCommand(TEvent* evt, int param) - { - return OnCmdDispatch(evt->xcommand.pStrID); - } - - int OnSelChanged(TEvent* evt, int param) - { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - - //状态栏显示完成路径 - HTREEITEM hitem = tv_folder.GetSelectedItem(); - xstring path = L"" + tv_folder.GetItemLabel(hitem); - while (tv_folder.GetParentItem(hitem)) - { - hitem = tv_folder.GetParentItem(hitem); - xstring p = L"" + tv_folder.GetItemLabel(hitem); - path = p + L"\\" + path; - } - xcontrol xc = GetControl(L"statusbar"); - xc.SetText(L"" + path); - /* - if(sheet<s) - { - param p=layer.GetParam(sheet); - int hitem = p; - onPrintPath(hitem); - } - */ - - return 1; - } - int OnSelChangedEx(TEvent* evt, int param) - { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - int k = sheet_Count; - if (k < s) - { - void* p = nullptr; - layer.SetParam(s - 1, p); - } - sheet_Count = s; - return 1; - } - int OnAttachEvent() - { - //绑定工具条点击事件 - AttachEvent(L"WM_XCOMMAND", (FEvent)&XDeveloper::OnXCommand); - AttachEvent(L"DevExplorer", L"NM_DBLCLK", (FEvent)&XDeveloper::OnTreeDblClick); - //获得树的展开事件 - //AttachEvent(L"DevExplorer", L"TVN_ITEMEXPANDING",(FEvent)&XDeveloper::OnTreeExpanding); - //获得树的选择事件 - AttachEvent(L"DevExplorer", L"TVN_SELCHANGED", (FEvent)&XDeveloper::OnTreeSelChanged); - //改变页签 - //AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET",(FEvent)&XDeveloper::OnSelChanged); - AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET", (FEvent)&XDeveloper::OnSelChangedEx); - - return 1; - } - - int OnInitial() - { - OnAttachEvent(); - - return 1; - } - - int onload() - { - sheet_Count = -1; - OnInitial(); - - tv_folder = GetControl(L"DevExplorer"); - mle_output = GetControl(L"output"); - SetAgent(L"projects"); - - return 1; - } -}; \ No newline at end of file diff --git a/jrj/xframe/devloper/XDevEditXFile.cpp b/jrj/xframe/devloper/XDevEditXFile.cpp index 50e0dea..8ec2265 100644 --- a/jrj/xframe/devloper/XDevEditXFile.cpp +++ b/jrj/xframe/devloper/XDevEditXFile.cpp @@ -8,12 +8,13 @@ #include <xcontrol/xsedit.hpp> #include <xcontrol/xcombobox.hpp> #include <xcontrol/xreport.hpp> +#include "XDevEditPage.hpp" using xml = KXMLDOMDocument; -class export XDevEditXFile : public xwin +class export XDevEditXFile : public XDevEditPage { public: - XDevEditXFile(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} + XDevEditXFile(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {} public: static XDevEditXFile* CreateInstance(void* implPtr, void* hWnd) { @@ -156,7 +157,7 @@ xml x; if (!x.loadXML(content)) { - KXMLDOMParseError pError = x.parseError; + KXMLDOMParseError pError = x.parseError(); if (pError) { xstring str = pError.srcText(); @@ -255,7 +256,7 @@ //find project folder xstring prjguid = L""; - int pitem = GetProjectItem(tv_folder,hItem); + HTREEITEM pitem = GetProjectItem(tv_folder,hItem); if (pitem) prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); @@ -267,13 +268,13 @@ { auto f = e.selectSingleNode(L"//*[@uri='" + name + L"']"); if (f) { - xstring guid = KXMLDOMElement(f).selectSingleNode(L"@guid").text;//.getAttribute(L"guid"); + xstring guid = f.selectSingleNode(L"@guid").text();//.getAttribute(L"guid"); if (guid == L"") - return ""; + return L""; arg.AddArg(L"guid",guid); } else - return ""; + return L""; } KXMLDOMElement p = tv_folder.GetItemData(hP2Item); xstring guid = p.getAttribute(L"guid"); @@ -291,9 +292,9 @@ return L""; } -int OnDoubleClicked(ref TNotifyEvent evt,int param) +int OnDoubleClicked(TEvent* evt,LPARAM param) { - ref DWNMHDR hdr = evt.pnmh; + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; int row = hdr.row; KXMLDOMElement e = xp.GetRowElement(row); xstring filename = e.getAttribute(L"type"); @@ -332,10 +333,10 @@ int OnAttachEvent() { //绑定工具条点击事件 - AttachEvent(L"WM_XCOMMAND",OnXCommand); + AttachEvent(L"WM_XCOMMAND",(FEvent)&XDevEditXFile::OnXCommand); //获取焦点事件,用于重置工具条 - AttachEvent(L"WM_SETFOCUS",OnSetFocus); - AttachEvent(L"xreport",L"DWV_DOUBLECLICKED",OnDoubleClicked); + AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXFile::OnSetFocus); + AttachEvent(L"xreport",L"DWV_DOUBLECLICKED", (FEvent)&XDevEditXFile::OnDoubleClicked); } int LoadData() diff --git a/jrj/xframe/devloper/XDevEditXFlow.cpp b/jrj/xframe/devloper/XDevEditXFlow.cpp deleted file mode 100644 index f26ab17..0000000 --- a/jrj/xframe/devloper/XDevEditXFlow.cpp +++ /dev/null @@ -1,561 +0,0 @@ -#include <wobject/xstring.hpp> -#include <wobject/xwin.hpp> -#include <wobject/xaserver.hpp> -#include <wobject/xaserverarg.hpp> -#include <xcontrol/xtreeview.hpp> -#include <xcontrol/xlayersheet.hpp> - -using xml = KXMLDOMDocument; -class export XDeveloper : public xwin -{ - public: - XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} -public: - static XDeveloper* CreateInstance(void* implPtr, void* hWnd) - { - XDeveloper* pWin = new XDeveloper(implPtr, (HWND)hWnd); - return pWin; - } -private: // - xtreeview tv_folder; - xcontrol mle_output; - int sheet_Count; -public: - int trace(xstring msg) - { - xstring t = mle_output.GetText(); - mle_output.SetText(t + msg); - return 1; - } - - int OnProcessUrl(xstring kind, xstring url) - { - xml x ; - xaserverarg xarg; - xarg.AddArg(L"url", url); - xarg.AddArg(L"kind", kind); - xaserver::ExecXQuery(GetServerUrl(), L"[service.url.info.xq]", xarg.GetString(), x); - alert(x.xml()); - return 1; - } - - xstring ProcessDevCmd(xstring cmd, xstring ext) - { - int nlen = 0; - BYTE* pdata=nullptr; - xaserver::ProcessCmd(GetServerUrl(),( L"uri.hxsoft.com/xaserver/developer " + cmd).c_str(), ext.c_str(), pdata, nlen); - - xstring str = ((LPARAM)pdata) + L""; - return str; - } - - int SetAgent(xstring node) - { - auto n = GetElement().selectSingleNode(L"agent/projects/node()[1]"); - if (n) - { - xstring agent = n.xml(); - xstring xfNodeAgentArea = L"agentarea"; - xnode anode = GetAgentNode(xfNodeAgentArea); - SetAgentNode(anode, agent); - } - - return 1; - } - - HTREEITEM GetProjectItem(HTREEITEM hItem) - { - HTREEITEM pitem = hItem; - xstring typ; - while (true) - { - typ = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).tagName(); - if (typ == L"project")break; - pitem = tv_folder.GetParentItem(pitem); - if (!pitem )break; - } - return pitem; - } - - HTREEITEM GetP2Item(HTREEITEM hItem) - { - HTREEITEM hDomainItem; - HTREEITEM hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - return hP2Item; - } - - //树展开事件 - int OnTreeExpanding(TEvent* evt, HTREEITEM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - return 1; - } - - xstring GetData(HTREEITEM hItem) - { - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - if (!tv_folder.GetParentItem(hItem)) - { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - xaserverarg arg; - arg.AddArg(L"project.guid", prjguid); - if (hP2Item) - { - if (hP2Item != hItem) - { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"guid", guid); - } - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - xstring guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - } - else if (hDomainItem) - { - KXMLDOMElement d = tv_folder.GetItemData(hDomainItem); - xstring guid = d.getAttribute(L"guid"); - arg.AddArg(L"domain.guid", guid); - } - xstring str = ProcessDevCmd(L"getobject", arg.GetString()); - return str + L""; - } - else - return L""; - } - - int OnTreeDblClick(TEvent* evt, int param) - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 0; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode(L"//editor[@filetype='" + typ + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } - return 1; - } - - //命令发布函数 - int OnCmdDispatch(xstring comdid) - { - // - if (comdid == L"xmSqlWatch") - { - OpenWindow(L"dev:xpage[sqlWatch.vx]"); - return 1; - } - if (comdid == L"xmCheckUrl") - { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"info", url); - } - else if (comdid == L"xmClearBuffer") - { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"clearbuffer", url); - } - if (comdid == L"xmNewFolder" || comdid == L"xmNewProject" || comdid == L"xmNewFile") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - if (comdid == L"xmNewProject" && prjguid != L"") return 1; - if (comdid == L"xmNewFile" && !tv_folder.GetParentItem(hItem)) return 1; - - xaserverarg arg; - if (comdid == L"xmNewProject") - OpenWindow(L"dev:xpage[XDevProjectDlg.xpage]", arg); - else if (comdid == L"xmNewFolder") - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - else - OpenWindow(L"dev:xpage[XDevFileDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - arg.SetArg(L"project.guid", prjguid); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem)) - { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - e = tv_folder.GetItemData(hItem); - if (hP2Item) - { - if (hP2Item != hItem) - { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"parent.guid", guid); - } - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - xstring guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - } - else if (hDomainItem) - { - KXMLDOMElement d = tv_folder.GetItemData(hDomainItem); - xstring guid = d.getAttribute(L"guid"); - arg.AddArg(L"domain.guid", guid); - } - - - if (hP2Item) - { - if (comdid == L"xmNewFolder") - { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"15"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); - } - } - else - { - if (comdid == L"xmNewFolder") - { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"17"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); - } - } - - xstring str = ProcessDevCmd(L"addfolder", arg.GetString()); - if (str != L"") - { - xml x; - x.loadXML(str); - auto e1 = x.documentElement(); - e.appendChild(e1); - int himage = xstring(e1.getAttribute(L"image")).toInt(); - tv_folder.InsertChildItem(hItem, arg.GetArgString(L"name"), e1, himage); - } - - return 1; - } - else if (comdid == L"xmDeleteObject") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - - int MB_YESNO = 0x00000004; - int IDYES = 6; - - if (MessageBox(GetHWND(), L"确认删除指定的项", L"提示", MB_YESNO) != IDYES) return 1; - ProcessDevCmd(L"deletefolder", arg.GetString()); - tv_folder.DeleteItem(hItem); - - return 1; - } - else if (comdid == L"xmUpdateProject") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem && pitem != hItem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - //trace(p.xml); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - - xstring str; - str = e.getAttribute(L"caption"); - arg.AddArg(L"name", str); - - str = e.getAttribute(L"desc"); - arg.AddArg(L"desc", str); - - str = e.getAttribute(L"uri"); - arg.AddArg(L"uri", str); - - str = e.getAttribute(L"guid"); - arg.AddArg(L"guid", str); - - str = e.getAttribute(L"src"); - arg.AddArg(L"src", str); - - str = e.getAttribute(L"type"); - arg.AddArg(L"type", str); - - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - ProcessDevCmd(L"updatefolder", arg.GetString()); - str = arg.GetArgString(L"name"); - e.setAttribute(L"caption", str); - - str = arg.GetArgString(L"desc"); - e.setAttribute(L"desc", str); - - str = arg.GetArgString(L"uri"); - e.setAttribute(L"uri", str); - - tv_folder.SetItemLabel(hItem, arg.GetArgString(L"name")); - - return 1; - } - else if (comdid == L"xmEditObject") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode((xstring)L"//editor[@filetype='" + L"xml" + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } - - } - return 0; - } - - //树选择事件 - int OnTreeSelChanged(TEvent* evt, LPARAM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - //root node - KXMLDOMElement e = tv_folder.GetItemData(hItem); - SetAgent(L"projects"); - - return 1; - } - - //命令处理事件 - int OnXCommand(TEvent* evt, int param) - { - return OnCmdDispatch(evt->xcommand.pStrID); - } - - int OnSelChanged(TEvent* evt, int param) - { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - - //状态栏显示完成路径 - HTREEITEM hitem = tv_folder.GetSelectedItem(); - xstring path = L"" + tv_folder.GetItemLabel(hitem); - while (tv_folder.GetParentItem(hitem)) - { - hitem = tv_folder.GetParentItem(hitem); - xstring p = L"" + tv_folder.GetItemLabel(hitem); - path = p + L"\\" + path; - } - xcontrol xc = GetControl(L"statusbar"); - xc.SetText(L"" + path); - /* - if(sheet<s) - { - param p=layer.GetParam(sheet); - int hitem = p; - onPrintPath(hitem); - } - */ - - return 1; - } - int OnSelChangedEx(TEvent* evt, int param) - { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - int k = sheet_Count; - if (k < s) - { - void* p = nullptr; - layer.SetParam(s - 1, p); - } - sheet_Count = s; - return 1; - } - int OnAttachEvent() - { - //绑定工具条点击事件 - AttachEvent(L"WM_XCOMMAND", (FEvent)&XDeveloper::OnXCommand); - AttachEvent(L"DevExplorer", L"NM_DBLCLK", (FEvent)&XDeveloper::OnTreeDblClick); - //获得树的展开事件 - //AttachEvent(L"DevExplorer", L"TVN_ITEMEXPANDING",(FEvent)&XDeveloper::OnTreeExpanding); - //获得树的选择事件 - AttachEvent(L"DevExplorer", L"TVN_SELCHANGED", (FEvent)&XDeveloper::OnTreeSelChanged); - //改变页签 - //AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET",(FEvent)&XDeveloper::OnSelChanged); - AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET", (FEvent)&XDeveloper::OnSelChangedEx); - - return 1; - } - - int OnInitial() - { - OnAttachEvent(); - - return 1; - } - - int onload() - { - sheet_Count = -1; - OnInitial(); - - tv_folder = GetControl(L"DevExplorer"); - mle_output = GetControl(L"output"); - SetAgent(L"projects"); - - return 1; - } -}; \ No newline at end of file diff --git a/jrj/xframe/devloper/XDevEditXHtml.cpp b/jrj/xframe/devloper/XDevEditXHtml.cpp deleted file mode 100644 index f26ab17..0000000 --- a/jrj/xframe/devloper/XDevEditXHtml.cpp +++ /dev/null @@ -1,561 +0,0 @@ -#include <wobject/xstring.hpp> -#include <wobject/xwin.hpp> -#include <wobject/xaserver.hpp> -#include <wobject/xaserverarg.hpp> -#include <xcontrol/xtreeview.hpp> -#include <xcontrol/xlayersheet.hpp> - -using xml = KXMLDOMDocument; -class export XDeveloper : public xwin -{ - public: - XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} -public: - static XDeveloper* CreateInstance(void* implPtr, void* hWnd) - { - XDeveloper* pWin = new XDeveloper(implPtr, (HWND)hWnd); - return pWin; - } -private: // - xtreeview tv_folder; - xcontrol mle_output; - int sheet_Count; -public: - int trace(xstring msg) - { - xstring t = mle_output.GetText(); - mle_output.SetText(t + msg); - return 1; - } - - int OnProcessUrl(xstring kind, xstring url) - { - xml x ; - xaserverarg xarg; - xarg.AddArg(L"url", url); - xarg.AddArg(L"kind", kind); - xaserver::ExecXQuery(GetServerUrl(), L"[service.url.info.xq]", xarg.GetString(), x); - alert(x.xml()); - return 1; - } - - xstring ProcessDevCmd(xstring cmd, xstring ext) - { - int nlen = 0; - BYTE* pdata=nullptr; - xaserver::ProcessCmd(GetServerUrl(),( L"uri.hxsoft.com/xaserver/developer " + cmd).c_str(), ext.c_str(), pdata, nlen); - - xstring str = ((LPARAM)pdata) + L""; - return str; - } - - int SetAgent(xstring node) - { - auto n = GetElement().selectSingleNode(L"agent/projects/node()[1]"); - if (n) - { - xstring agent = n.xml(); - xstring xfNodeAgentArea = L"agentarea"; - xnode anode = GetAgentNode(xfNodeAgentArea); - SetAgentNode(anode, agent); - } - - return 1; - } - - HTREEITEM GetProjectItem(HTREEITEM hItem) - { - HTREEITEM pitem = hItem; - xstring typ; - while (true) - { - typ = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).tagName(); - if (typ == L"project")break; - pitem = tv_folder.GetParentItem(pitem); - if (!pitem )break; - } - return pitem; - } - - HTREEITEM GetP2Item(HTREEITEM hItem) - { - HTREEITEM hDomainItem; - HTREEITEM hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - return hP2Item; - } - - //树展开事件 - int OnTreeExpanding(TEvent* evt, HTREEITEM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - return 1; - } - - xstring GetData(HTREEITEM hItem) - { - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - if (!tv_folder.GetParentItem(hItem)) - { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - xaserverarg arg; - arg.AddArg(L"project.guid", prjguid); - if (hP2Item) - { - if (hP2Item != hItem) - { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"guid", guid); - } - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - xstring guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - } - else if (hDomainItem) - { - KXMLDOMElement d = tv_folder.GetItemData(hDomainItem); - xstring guid = d.getAttribute(L"guid"); - arg.AddArg(L"domain.guid", guid); - } - xstring str = ProcessDevCmd(L"getobject", arg.GetString()); - return str + L""; - } - else - return L""; - } - - int OnTreeDblClick(TEvent* evt, int param) - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 0; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode(L"//editor[@filetype='" + typ + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } - return 1; - } - - //命令发布函数 - int OnCmdDispatch(xstring comdid) - { - // - if (comdid == L"xmSqlWatch") - { - OpenWindow(L"dev:xpage[sqlWatch.vx]"); - return 1; - } - if (comdid == L"xmCheckUrl") - { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"info", url); - } - else if (comdid == L"xmClearBuffer") - { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"clearbuffer", url); - } - if (comdid == L"xmNewFolder" || comdid == L"xmNewProject" || comdid == L"xmNewFile") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - if (comdid == L"xmNewProject" && prjguid != L"") return 1; - if (comdid == L"xmNewFile" && !tv_folder.GetParentItem(hItem)) return 1; - - xaserverarg arg; - if (comdid == L"xmNewProject") - OpenWindow(L"dev:xpage[XDevProjectDlg.xpage]", arg); - else if (comdid == L"xmNewFolder") - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - else - OpenWindow(L"dev:xpage[XDevFileDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - arg.SetArg(L"project.guid", prjguid); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem)) - { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - e = tv_folder.GetItemData(hItem); - if (hP2Item) - { - if (hP2Item != hItem) - { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"parent.guid", guid); - } - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - xstring guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - } - else if (hDomainItem) - { - KXMLDOMElement d = tv_folder.GetItemData(hDomainItem); - xstring guid = d.getAttribute(L"guid"); - arg.AddArg(L"domain.guid", guid); - } - - - if (hP2Item) - { - if (comdid == L"xmNewFolder") - { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"15"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); - } - } - else - { - if (comdid == L"xmNewFolder") - { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"17"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); - } - } - - xstring str = ProcessDevCmd(L"addfolder", arg.GetString()); - if (str != L"") - { - xml x; - x.loadXML(str); - auto e1 = x.documentElement(); - e.appendChild(e1); - int himage = xstring(e1.getAttribute(L"image")).toInt(); - tv_folder.InsertChildItem(hItem, arg.GetArgString(L"name"), e1, himage); - } - - return 1; - } - else if (comdid == L"xmDeleteObject") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - - int MB_YESNO = 0x00000004; - int IDYES = 6; - - if (MessageBox(GetHWND(), L"确认删除指定的项", L"提示", MB_YESNO) != IDYES) return 1; - ProcessDevCmd(L"deletefolder", arg.GetString()); - tv_folder.DeleteItem(hItem); - - return 1; - } - else if (comdid == L"xmUpdateProject") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem && pitem != hItem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - //trace(p.xml); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - - xstring str; - str = e.getAttribute(L"caption"); - arg.AddArg(L"name", str); - - str = e.getAttribute(L"desc"); - arg.AddArg(L"desc", str); - - str = e.getAttribute(L"uri"); - arg.AddArg(L"uri", str); - - str = e.getAttribute(L"guid"); - arg.AddArg(L"guid", str); - - str = e.getAttribute(L"src"); - arg.AddArg(L"src", str); - - str = e.getAttribute(L"type"); - arg.AddArg(L"type", str); - - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - ProcessDevCmd(L"updatefolder", arg.GetString()); - str = arg.GetArgString(L"name"); - e.setAttribute(L"caption", str); - - str = arg.GetArgString(L"desc"); - e.setAttribute(L"desc", str); - - str = arg.GetArgString(L"uri"); - e.setAttribute(L"uri", str); - - tv_folder.SetItemLabel(hItem, arg.GetArgString(L"name")); - - return 1; - } - else if (comdid == L"xmEditObject") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode((xstring)L"//editor[@filetype='" + L"xml" + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } - - } - return 0; - } - - //树选择事件 - int OnTreeSelChanged(TEvent* evt, LPARAM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - //root node - KXMLDOMElement e = tv_folder.GetItemData(hItem); - SetAgent(L"projects"); - - return 1; - } - - //命令处理事件 - int OnXCommand(TEvent* evt, int param) - { - return OnCmdDispatch(evt->xcommand.pStrID); - } - - int OnSelChanged(TEvent* evt, int param) - { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - - //状态栏显示完成路径 - HTREEITEM hitem = tv_folder.GetSelectedItem(); - xstring path = L"" + tv_folder.GetItemLabel(hitem); - while (tv_folder.GetParentItem(hitem)) - { - hitem = tv_folder.GetParentItem(hitem); - xstring p = L"" + tv_folder.GetItemLabel(hitem); - path = p + L"\\" + path; - } - xcontrol xc = GetControl(L"statusbar"); - xc.SetText(L"" + path); - /* - if(sheet<s) - { - param p=layer.GetParam(sheet); - int hitem = p; - onPrintPath(hitem); - } - */ - - return 1; - } - int OnSelChangedEx(TEvent* evt, int param) - { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - int k = sheet_Count; - if (k < s) - { - void* p = nullptr; - layer.SetParam(s - 1, p); - } - sheet_Count = s; - return 1; - } - int OnAttachEvent() - { - //绑定工具条点击事件 - AttachEvent(L"WM_XCOMMAND", (FEvent)&XDeveloper::OnXCommand); - AttachEvent(L"DevExplorer", L"NM_DBLCLK", (FEvent)&XDeveloper::OnTreeDblClick); - //获得树的展开事件 - //AttachEvent(L"DevExplorer", L"TVN_ITEMEXPANDING",(FEvent)&XDeveloper::OnTreeExpanding); - //获得树的选择事件 - AttachEvent(L"DevExplorer", L"TVN_SELCHANGED", (FEvent)&XDeveloper::OnTreeSelChanged); - //改变页签 - //AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET",(FEvent)&XDeveloper::OnSelChanged); - AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET", (FEvent)&XDeveloper::OnSelChangedEx); - - return 1; - } - - int OnInitial() - { - OnAttachEvent(); - - return 1; - } - - int onload() - { - sheet_Count = -1; - OnInitial(); - - tv_folder = GetControl(L"DevExplorer"); - mle_output = GetControl(L"output"); - SetAgent(L"projects"); - - return 1; - } -}; \ No newline at end of file diff --git a/jrj/xframe/devloper/XDevEditXLayer.cpp b/jrj/xframe/devloper/XDevEditXLayer.cpp index f26ab17..6ce69da 100644 --- a/jrj/xframe/devloper/XDevEditXLayer.cpp +++ b/jrj/xframe/devloper/XDevEditXLayer.cpp @@ -4,544 +4,118 @@ #include <wobject/xaserverarg.hpp> #include <xcontrol/xtreeview.hpp> #include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xsedit.hpp> +#include "XDevEditPage.hpp" using xml = KXMLDOMDocument; -class export XDeveloper : public xwin +class export XDevEditXLayer : public XDevEditPage { public: - XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} + XDevEditXLayer(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {} public: - static XDeveloper* CreateInstance(void* implPtr, void* hWnd) + static XDevEditXLayer* CreateInstance(void* implPtr, void* hWnd) { - XDeveloper* pWin = new XDeveloper(implPtr, (HWND)hWnd); + XDevEditXLayer* pWin = new XDevEditXLayer(implPtr, (HWND)hWnd); return pWin; } private: // - xtreeview tv_folder; - xcontrol mle_output; - int sheet_Count; -public: - int trace(xstring msg) + xnode m_agentNode; //Agent Condition + xstring m_agentCond; //Agent Node + int SetAgent() { - xstring t = mle_output.GetText(); - mle_output.SetText(t + msg); + /* + xstring xfNodeAgentArea = L"agentarea"; + xnode anode = GetAgentNode(xfNodeAgentArea); + var xframeElement = GetElement(); + var agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*"); + if(agent) + { + xstring s = agent.xml; + m_agentNode = SetAgentNodeContent (anode,s); + } + */ return 1; } - int OnProcessUrl(xstring kind, xstring url) + //焦点激活处理函数 + int OnSetFocus(TEvent* evt,LPARAM param) { - xml x ; - xaserverarg xarg; - xarg.AddArg(L"url", url); - xarg.AddArg(L"kind", kind); - xaserver::ExecXQuery(GetServerUrl(), L"[service.url.info.xq]", xarg.GetString(), x); - alert(x.xml()); - return 1; - } + SetAgent(); - xstring ProcessDevCmd(xstring cmd, xstring ext) - { - int nlen = 0; - BYTE* pdata=nullptr; - xaserver::ProcessCmd(GetServerUrl(),( L"uri.hxsoft.com/xaserver/developer " + cmd).c_str(), ext.c_str(), pdata, nlen); - - xstring str = ((LPARAM)pdata) + L""; - return str; - } - - int SetAgent(xstring node) - { - auto n = GetElement().selectSingleNode(L"agent/projects/node()[1]"); - if (n) - { - xstring agent = n.xml(); - xstring xfNodeAgentArea = L"agentarea"; - xnode anode = GetAgentNode(xfNodeAgentArea); - SetAgentNode(anode, agent); - } - - return 1; - } - - HTREEITEM GetProjectItem(HTREEITEM hItem) - { - HTREEITEM pitem = hItem; - xstring typ; - while (true) - { - typ = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).tagName(); - if (typ == L"project")break; - pitem = tv_folder.GetParentItem(pitem); - if (!pitem )break; - } - return pitem; - } - - HTREEITEM GetP2Item(HTREEITEM hItem) - { - HTREEITEM hDomainItem; - HTREEITEM hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - return hP2Item; - } - - //树展开事件 - int OnTreeExpanding(TEvent* evt, HTREEITEM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - return 1; - } - - xstring GetData(HTREEITEM hItem) - { - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - if (!tv_folder.GetParentItem(hItem)) - { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - xaserverarg arg; - arg.AddArg(L"project.guid", prjguid); - if (hP2Item) - { - if (hP2Item != hItem) - { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"guid", guid); - } - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - xstring guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - } - else if (hDomainItem) - { - KXMLDOMElement d = tv_folder.GetItemData(hDomainItem); - xstring guid = d.getAttribute(L"guid"); - arg.AddArg(L"domain.guid", guid); - } - xstring str = ProcessDevCmd(L"getobject", arg.GetString()); - return str + L""; - } - else - return L""; - } - - int OnTreeDblClick(TEvent* evt, int param) - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 0; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode(L"//editor[@filetype='" + typ + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } + //重置工具条 return 1; } //命令发布函数 int OnCmdDispatch(xstring comdid) { - // - if (comdid == L"xmSqlWatch") + if (comdid == L"xmFileSaveEx") { - OpenWindow(L"dev:xpage[sqlWatch.vx]"); - return 1; - } - if (comdid == L"xmCheckUrl") - { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"info", url); - } - else if (comdid == L"xmClearBuffer") - { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"clearbuffer", url); - } - if (comdid == L"xmNewFolder" || comdid == L"xmNewProject" || comdid == L"xmNewFile") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; + xsedit xs = GetControl(L"xpagecontent"); + xsedit xc = GetControl(L"xcodecontent"); + HCURSOR hCursor = xutil::SetCursorWait(); - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); + xstring content; + //save xml content + xs.GetContent(content); + SaveContent(content); - if (comdid == L"xmNewProject" && prjguid != L"") return 1; - if (comdid == L"xmNewFile" && !tv_folder.GetParentItem(hItem)) return 1; - - xaserverarg arg; - if (comdid == L"xmNewProject") - OpenWindow(L"dev:xpage[XDevProjectDlg.xpage]", arg); - else if (comdid == L"xmNewFolder") - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - else - OpenWindow(L"dev:xpage[XDevFileDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - arg.SetArg(L"project.guid", prjguid); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem)) - { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - e = tv_folder.GetItemData(hItem); - if (hP2Item) - { - if (hP2Item != hItem) - { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"parent.guid", guid); - } - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - xstring guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - } - else if (hDomainItem) - { - KXMLDOMElement d = tv_folder.GetItemData(hDomainItem); - xstring guid = d.getAttribute(L"guid"); - arg.AddArg(L"domain.guid", guid); - } - - - if (hP2Item) - { - if (comdid == L"xmNewFolder") - { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"15"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); - } - } - else - { - if (comdid == L"xmNewFolder") - { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"17"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); - } - } - - xstring str = ProcessDevCmd(L"addfolder", arg.GetString()); - if (str != L"") - { - xml x; - x.loadXML(str); - auto e1 = x.documentElement(); - e.appendChild(e1); - int himage = xstring(e1.getAttribute(L"image")).toInt(); - tv_folder.InsertChildItem(hItem, arg.GetArgString(L"name"), e1, himage); - } + xstring code; + //save tpp content + xc.GetContent(code); + SaveContentEx(code,1); + // + xutil::RestoreCursor(hCursor); return 1; - } - else if (comdid == L"xmDeleteObject") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - - int MB_YESNO = 0x00000004; - int IDYES = 6; - - if (MessageBox(GetHWND(), L"确认删除指定的项", L"提示", MB_YESNO) != IDYES) return 1; - ProcessDevCmd(L"deletefolder", arg.GetString()); - tv_folder.DeleteItem(hItem); - - return 1; - } - else if (comdid == L"xmUpdateProject") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem && pitem != hItem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - //trace(p.xml); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - - xstring str; - str = e.getAttribute(L"caption"); - arg.AddArg(L"name", str); - - str = e.getAttribute(L"desc"); - arg.AddArg(L"desc", str); - - str = e.getAttribute(L"uri"); - arg.AddArg(L"uri", str); - - str = e.getAttribute(L"guid"); - arg.AddArg(L"guid", str); - - str = e.getAttribute(L"src"); - arg.AddArg(L"src", str); - - str = e.getAttribute(L"type"); - arg.AddArg(L"type", str); - - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - ProcessDevCmd(L"updatefolder", arg.GetString()); - str = arg.GetArgString(L"name"); - e.setAttribute(L"caption", str); - - str = arg.GetArgString(L"desc"); - e.setAttribute(L"desc", str); - - str = arg.GetArgString(L"uri"); - e.setAttribute(L"uri", str); - - tv_folder.SetItemLabel(hItem, arg.GetArgString(L"name")); - - return 1; - } - else if (comdid == L"xmEditObject") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode((xstring)L"//editor[@filetype='" + L"xml" + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } - } return 0; } - //树选择事件 - int OnTreeSelChanged(TEvent* evt, LPARAM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - //root node - KXMLDOMElement e = tv_folder.GetItemData(hItem); - SetAgent(L"projects"); - - return 1; - } - //命令处理事件 - int OnXCommand(TEvent* evt, int param) + int OnXCommand(TEvent* evt,LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } - int OnSelChanged(TEvent* evt, int param) - { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - - //状态栏显示完成路径 - HTREEITEM hitem = tv_folder.GetSelectedItem(); - xstring path = L"" + tv_folder.GetItemLabel(hitem); - while (tv_folder.GetParentItem(hitem)) - { - hitem = tv_folder.GetParentItem(hitem); - xstring p = L"" + tv_folder.GetItemLabel(hitem); - path = p + L"\\" + path; - } - xcontrol xc = GetControl(L"statusbar"); - xc.SetText(L"" + path); - /* - if(sheet<s) - { - param p=layer.GetParam(sheet); - int hitem = p; - onPrintPath(hitem); - } - */ - - return 1; - } - int OnSelChangedEx(TEvent* evt, int param) - { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - int k = sheet_Count; - if (k < s) - { - void* p = nullptr; - layer.SetParam(s - 1, p); - } - sheet_Count = s; - return 1; - } int OnAttachEvent() { //绑定工具条点击事件 - AttachEvent(L"WM_XCOMMAND", (FEvent)&XDeveloper::OnXCommand); - AttachEvent(L"DevExplorer", L"NM_DBLCLK", (FEvent)&XDeveloper::OnTreeDblClick); - //获得树的展开事件 - //AttachEvent(L"DevExplorer", L"TVN_ITEMEXPANDING",(FEvent)&XDeveloper::OnTreeExpanding); - //获得树的选择事件 - AttachEvent(L"DevExplorer", L"TVN_SELCHANGED", (FEvent)&XDeveloper::OnTreeSelChanged); - //改变页签 - //AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET",(FEvent)&XDeveloper::OnSelChanged); - AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET", (FEvent)&XDeveloper::OnSelChangedEx); + AttachEvent(L"WM_XCOMMAND", (FEvent)&XDevEditXLayer::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXLayer::OnSetFocus); + + return 1; + } + + int LoadData() + { + if (!GetWinParam()) return 1; + + xsedit xs = GetControl(L"xpagecontent"); + xsedit xc = GetControl(L"xcodecontent"); + + xstring content = GetData(); + if (content != L"") + { + xs.LoadContent(content,L".xml"); + } + xstring code = GetData(1); + if (code != L"") + { + xc.LoadContent(code,L".cpp"); + } return 1; } int OnInitial() { + SetAgent(); + OnAttachEvent(); return 1; @@ -549,13 +123,8 @@ int onload() { - sheet_Count = -1; OnInitial(); - - tv_folder = GetControl(L"DevExplorer"); - mle_output = GetControl(L"output"); - SetAgent(L"projects"); - + LoadData(); return 1; - } + } }; \ No newline at end of file diff --git a/jrj/xframe/devloper/XDevEditXMSSQL.cpp b/jrj/xframe/devloper/XDevEditXMSSQL.cpp index f26ab17..d17d8bc 100644 --- a/jrj/xframe/devloper/XDevEditXMSSQL.cpp +++ b/jrj/xframe/devloper/XDevEditXMSSQL.cpp @@ -4,187 +4,177 @@ #include <wobject/xaserverarg.hpp> #include <xcontrol/xtreeview.hpp> #include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xsedit.hpp> +#include <xcontrol/xdwgrid.hpp> +#include "XDevEditPage.hpp" using xml = KXMLDOMDocument; -class export XDeveloper : public xwin +class export XDevEditXMSSQL : public XDevEditPage { - public: - XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} public: - static XDeveloper* CreateInstance(void* implPtr, void* hWnd) + XDevEditXMSSQL(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {} +public: + static XDevEditXMSSQL* CreateInstance(void* implPtr, void* hWnd) { - XDeveloper* pWin = new XDeveloper(implPtr, (HWND)hWnd); + XDevEditXMSSQL* pWin = new XDevEditXMSSQL(implPtr, (HWND)hWnd); return pWin; } private: // - xtreeview tv_folder; - xcontrol mle_output; - int sheet_Count; -public: - int trace(xstring msg) + xtreeview tv_db; + xlayersheet list; + + //xnode m_agentNode; //Agent Condition + //xstring m_agentCond; //Agent Node + int SetAgent() { - xstring t = mle_output.GetText(); - mle_output.SetText(t + msg); - return 1; - } - - int OnProcessUrl(xstring kind, xstring url) - { - xml x ; - xaserverarg xarg; - xarg.AddArg(L"url", url); - xarg.AddArg(L"kind", kind); - xaserver::ExecXQuery(GetServerUrl(), L"[service.url.info.xq]", xarg.GetString(), x); - alert(x.xml()); - return 1; - } - - xstring ProcessDevCmd(xstring cmd, xstring ext) - { - int nlen = 0; - BYTE* pdata=nullptr; - xaserver::ProcessCmd(GetServerUrl(),( L"uri.hxsoft.com/xaserver/developer " + cmd).c_str(), ext.c_str(), pdata, nlen); - - xstring str = ((LPARAM)pdata) + L""; - return str; - } - - int SetAgent(xstring node) - { - auto n = GetElement().selectSingleNode(L"agent/projects/node()[1]"); - if (n) - { - xstring agent = n.xml(); - xstring xfNodeAgentArea = L"agentarea"; - xnode anode = GetAgentNode(xfNodeAgentArea); - SetAgentNode(anode, agent); - } - - return 1; - } - - HTREEITEM GetProjectItem(HTREEITEM hItem) - { - HTREEITEM pitem = hItem; - xstring typ; - while (true) - { - typ = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).tagName(); - if (typ == L"project")break; - pitem = tv_folder.GetParentItem(pitem); - if (!pitem )break; - } - return pitem; - } - - HTREEITEM GetP2Item(HTREEITEM hItem) - { - HTREEITEM hDomainItem; - HTREEITEM hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - return hP2Item; - } - - //树展开事件 - int OnTreeExpanding(TEvent* evt, HTREEITEM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - return 1; - } - - xstring GetData(HTREEITEM hItem) - { - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - if (!tv_folder.GetParentItem(hItem)) - { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - xaserverarg arg; - arg.AddArg(L"project.guid", prjguid); - if (hP2Item) - { - if (hP2Item != hItem) + /* xstring xfNodeAgentArea = L"agentarea"; + xnode anode = GetAgentNode(xfNodeAgentArea); + var xframeElement = GetElement(); + var agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*"); + if(agent) { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"guid", guid); + xstring s = agent.xml; + m_agentNode = SetAgentNodeContent (anode,s); } - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - xstring guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); + */ return 1; } - else if (hDomainItem) - { - KXMLDOMElement d = tv_folder.GetItemData(hDomainItem); - xstring guid = d.getAttribute(L"guid"); - arg.AddArg(L"domain.guid", guid); - } - xstring str = ProcessDevCmd(L"getobject", arg.GetString()); - return str + L""; - } - else - return L""; + + //焦点激活处理函数 + int OnSetFocus(TEvent* evt,LPARAM param) + { + SetAgent(); + + //重置工具条 + return 1; } - int OnTreeDblClick(TEvent* evt, int param) + xstring getLink(HTREEITEM item) { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 0; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) + HTREEITEM p = tv_db.GetParentItem(item); + while (tv_db.GetParentItem(p) > 0) { - if (hItem == layer.GetParam(i))break; + item = tv_db.GetParentItem(item); + p = tv_db.GetParentItem(item); } - if (i < nIndex) + xstring link = tv_db.GetItemData(item); + return link; + } + + KXMLDOMElement OnXQuery(xstring data) + { + HTREEITEM item = tv_db.GetSelectedItem(); + xstring link = getLink(item); + xml x ; + xaserverarg arg; + arg.AddArg(L"type",data); + arg.AddArg(L"link",link); + if (xaserver::ExecXQuery(GetServerUrl(),L"[MSSQL.list.xq]",arg.GetString(),x) != 1) { - layer.SelectSheet(i); + trace(x.xml()); return 1; } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") + return x.documentElement(); + } + + int setGrid(KXMLDOMElement e,xstring caption) + { + xml x; + xdwgrid grid = GetControl(caption); + if (!e.selectSingleNode(L"grid/sheet")) return 0; + x.loadXML(e.selectSingleNode(L"grid/sheet").xml()); + grid.SetDataObject(x); + if (!e.selectSingleNode(L"datas")) return 0; + x.loadXML(e.selectSingleNode(L"datas").xml()); + grid.Retrieve(x); + grid.Redraw(); + return 1; + } + + xstring replace(xstring a, xstring b, xstring c, int s=0) + { + int k = a.find(b,s); + if (k > -1) { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); + xstring str; + if (k == 0) + str = L"" + c + a.right(a.length() - k - b.length()); + else if (k + b.length() == a.length()) + str = L"" + a.left(k) + c; + else + str = L"" + a.left(k) + c + a.right(a.length() - k - b.length()); + replace(str, b, c, k + b.length() + 1); + } + else + return a; + } - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode(L"//editor[@filetype='" + typ + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } + int OnOpen(xstring caption,xstring node) + { + int s = list.GetSheetCount(); + int i; + xstring pa = node + L"." + caption; + for (i = 0; i < s; i++) + { + xstring p = (wchar_t*)list.GetParam(i); + if (pa == p) + break; + } + if (i < s) + { + list.SelectSheet(i); + return 0; + } + KXMLDOMElement xframeElement = GetElement(); + KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + node + L"/*"); + xstring str = replace(agent.xml(), L"{#1}", caption); + xml x ; + x.loadXML(str); + int k = list.InsertSheet(-1,(LPTSTR)caption.c_str(), x.documentElement()); + list.SelectSheet(k); + list.SetParam(k,(void*)pa.c_str(true)); + return 1; + } + int onShow() + { + while (tv_db.GetRootItem() > 0) + tv_db.DeleteItem(tv_db.GetRootItem()); + xsedit xs = GetControl(L"xcontent"); + xstring content; + xs.GetContent(content); + xml x ; + x.loadXML(content); + KXMLDOMElement e = x.documentElement(); + xstring name = e.getAttribute(L"name"); + HTREEITEM root = tv_db.InsertItem(name.c_str(), NULL, 16); + auto lists = e.selectNodes(L"*"); + int i; + int s = lists.length(); + for (i = 0; i < s; i++) + { + KXMLDOMElement ele = lists.item(i); + xstring name = ele.getAttribute(L"name"); + xstring link = ele.getAttribute(L"link"); + HTREEITEM k = tv_db.InsertChildItem(root,L"" + name,L"" + link,15); + HTREEITEM j = tv_db.InsertChildItem(k,L"表",L"table",22); + tv_db.SetItemChild1(j,1); + j = tv_db.InsertChildItem(k,L"视图",L"view",23); + tv_db.SetItemChild1(j,1); + j = tv_db.InsertChildItem(k,L"存储过程",L"procedure",24); + tv_db.SetItemChild1(j,1); + j = tv_db.InsertChildItem(k,L"自定义函数",L"function",25); + tv_db.SetItemChild1(j,1); + } + tv_db.ExpandItem(root); + + if (list.GetSheetCount() < 1) + { + xstring caption = L"Query"; + if (OnOpen(caption,L"query") == 0) return 0; + xsedit xs = GetControl(L"sql_" + caption); + xs.LoadContent(L"",L".sql"); } return 1; } @@ -192,356 +182,411 @@ //命令发布函数 int OnCmdDispatch(xstring comdid) { - // - if (comdid == L"xmSqlWatch") + HCURSOR hCursor = xutil::SetCursorWait(); + xsedit xs = GetControl(L"xcontent"); + xstring content; + xs.GetContent(content); + + if (comdid == L"xmFileSave") { - OpenWindow(L"dev:xpage[sqlWatch.vx]"); - return 1; + //save xml content + SaveContent(content); } - if (comdid == L"xmCheckUrl") + else if (comdid == L"xmValid") { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"info", url); - } - else if (comdid == L"xmClearBuffer") - { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"clearbuffer", url); - } - if (comdid == L"xmNewFolder" || comdid == L"xmNewProject" || comdid == L"xmNewFile") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - if (comdid == L"xmNewProject" && prjguid != L"") return 1; - if (comdid == L"xmNewFile" && !tv_folder.GetParentItem(hItem)) return 1; - - xaserverarg arg; - if (comdid == L"xmNewProject") - OpenWindow(L"dev:xpage[XDevProjectDlg.xpage]", arg); - else if (comdid == L"xmNewFolder") - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - else - OpenWindow(L"dev:xpage[XDevFileDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - arg.SetArg(L"project.guid", prjguid); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem)) + xml x ; + if (!x.loadXML(content)) { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - e = tv_folder.GetItemData(hItem); - if (hP2Item) - { - if (hP2Item != hItem) + KXMLDOMParseError pError = x.parseError(); + if (pError) { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"parent.guid", guid); + xstring str = pError.srcText(); + xstring sError = L"\r\nMSSQL错误: " + str.trim() + L"\r\n"; + int s = pError.errorCode(); + sError += L" 代码: " + xstring(s) + L"\r\n"; + s = pError.line(); + sError += L" 位置: 第" + xstring(s) + L"行,L"; + s = pError.linepos(); + sError += L"第" + xstring(s) + L"列" + L"\r\n"; + str = pError.reason(); + sError += L" 原因: " + str; + trace(sError); } - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - xstring guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - } - else if (hDomainItem) - { - KXMLDOMElement d = tv_folder.GetItemData(hDomainItem); - xstring guid = d.getAttribute(L"guid"); - arg.AddArg(L"domain.guid", guid); - } - - - if (hP2Item) - { - if (comdid == L"xmNewFolder") + else { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"15"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); + trace(L"XML 错误"); } + return -1; } - else - { - if (comdid == L"xmNewFolder") - { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"17"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); - } - } - - xstring str = ProcessDevCmd(L"addfolder", arg.GetString()); - if (str != L"") - { - xml x; - x.loadXML(str); - auto e1 = x.documentElement(); - e.appendChild(e1); - int himage = xstring(e1.getAttribute(L"image")).toInt(); - tv_folder.InsertChildItem(hItem, arg.GetArgString(L"name"), e1, himage); - } - - return 1; } - else if (comdid == L"xmDeleteObject") + else if (comdid == L"show") { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - - int MB_YESNO = 0x00000004; - int IDYES = 6; - - if (MessageBox(GetHWND(), L"确认删除指定的项", L"提示", MB_YESNO) != IDYES) return 1; - ProcessDevCmd(L"deletefolder", arg.GetString()); - tv_folder.DeleteItem(hItem); - - return 1; + if (OnCmdDispatch(L"xmValid") == -1) + return -1; + onShow(); } - else if (comdid == L"xmUpdateProject") + else if (comdid == L"xmQuery") { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem && pitem != hItem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - //trace(p.xml); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - - xstring str; - str = e.getAttribute(L"caption"); - arg.AddArg(L"name", str); - - str = e.getAttribute(L"desc"); - arg.AddArg(L"desc", str); - - str = e.getAttribute(L"uri"); - arg.AddArg(L"uri", str); - - str = e.getAttribute(L"guid"); - arg.AddArg(L"guid", str); - - str = e.getAttribute(L"src"); - arg.AddArg(L"src", str); - - str = e.getAttribute(L"type"); - arg.AddArg(L"type", str); - - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - ProcessDevCmd(L"updatefolder", arg.GetString()); - str = arg.GetArgString(L"name"); - e.setAttribute(L"caption", str); - - str = arg.GetArgString(L"desc"); - e.setAttribute(L"desc", str); - - str = arg.GetArgString(L"uri"); - e.setAttribute(L"uri", str); - - tv_folder.SetItemLabel(hItem, arg.GetArgString(L"name")); - - return 1; + xstring guid = win32::GetGuid(); + xstring caption = L"Query_" + guid.mid(1,8); + if (OnOpen(caption,L"query") == 0) return 0; + xsedit xs = GetControl(L"sql_" + caption); + xs.LoadContent(L"",L".sql"); } - else if (comdid == L"xmEditObject") + else if (comdid.left(8) == L"xmClose_") { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode((xstring)L"//editor[@filetype='" + L"xml" + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } - + list.DeleteSheet(list.GetSheetIndex()); } + else if (comdid.left(6) == L"xmRun_") + { + xstring table = comdid.mid(6,comdid.length()); + xsedit xs = GetControl(L"sql_" + table); + xstring content; + xs.GetContent(content); + xstring sql = L"xquery@" + content + L" for xml path('data'),root('datas'),type"; + KXMLDOMElement e = OnXQuery(sql); + if (e) + setGrid(e,L"grid_" + table); + } + xutil::RestoreCursor(hCursor); return 0; } - //树选择事件 - int OnTreeSelChanged(TEvent* evt, LPARAM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - //root node - KXMLDOMElement e = tv_folder.GetItemData(hItem); - SetAgent(L"projects"); - - return 1; - } - //命令处理事件 - int OnXCommand(TEvent* evt, int param) + int OnXCommand(TEvent* evt,LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } - int OnSelChanged(TEvent* evt, int param) + int OnTreeAdd(HTREEITEM item, xstring data,KXMLDOMElement e) { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - - //状态栏显示完成路径 - HTREEITEM hitem = tv_folder.GetSelectedItem(); - xstring path = L"" + tv_folder.GetItemLabel(hitem); - while (tv_folder.GetParentItem(hitem)) + auto list = e.selectNodes(L"*"); + int i; + int s = list.length(); + for (i = 0; i < s; i++) { - hitem = tv_folder.GetParentItem(hitem); - xstring p = L"" + tv_folder.GetItemLabel(hitem); - path = p + L"\\" + path; + KXMLDOMElement ele = list.item(i); + xstring name = ele.getAttribute(L"name"); + xstring image = ele.getAttribute(L"image"); + xstring d = ele.getAttribute(L"data"); + image = L"" + image; + if (d == L"") + d = data + L"@" + name; + HTREEITEM j = tv_db.InsertChildItem(item,(LPTSTR)name.c_str(), (LPARAM)d.c_str(true), image.toInt()); + if (image.toInt() > 9) + tv_db.SetItemChild1(j,1); + OnTreeAdd(j,d,ele); } - xcontrol xc = GetControl(L"statusbar"); - xc.SetText(L"" + path); - /* - if(sheet<s) - { - param p=layer.GetParam(sheet); - int hitem = p; - onPrintPath(hitem); - } - */ - return 1; } - int OnSelChangedEx(TEvent* evt, int param) + + int OnTreeExpand(HTREEITEM item) { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - int k = sheet_Count; - if (k < s) + xstring data = tv_db.GetItemData(item); + xstring link = getLink(item); + xml x ; + xaserverarg arg; + arg.AddArg(L"type",data); + arg.AddArg(L"link",link); + if (xaserver::ExecXQuery(GetServerUrl(),L"[MSSQL.list.xq]",arg.GetString(),x) != 1) { - void* p = nullptr; - layer.SetParam(s - 1, p); + trace(x.xml()); + return 0; } - sheet_Count = s; + KXMLDOMElement e = x.documentElement(); + OnTreeAdd(item,data,e); return 1; } + + int OnTreeExpanding(TEvent* evt,LPARAM param) + { + NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; + HTREEITEM item = nmtv.itemNew.hItem; + if (tv_db.GetChildItem(item) > 0) return 0; + OnTreeExpand(item); + return 1; + } + + int OnGroupAction(xstring guid,xstring name,xstring flag) + { + xaserverarg arg; + arg.AddArg(L"type",flag); + HTREEITEM item = tv_db.GetSelectedItem(); + xstring str = L"<group guid='" + guid + L"' name='" + name + L"'"; + if (flag.mid(5,7) == L".table.") + { + str += L"/>"; + } + else + { + xstring link = getLink(item); + str += L" link='" + link + L"'/>"; + } + //trace(str); + arg.AddArg(L"context",str); + return xaserver::ExecXAction(GetServerUrl(),L"[MSSQL.action.xa]",arg.GetString()); + } + + int OnNewGroup(HTREEITEM item) + { + tv_db.ExpandItemEx(item); + HTREEITEM gitem = tv_db.GetChildItem(item); + while (gitem > 0) + { + xstring data = L"" + tv_db.GetItemData(gitem); + if (data.left(6) != L"group@") break; + gitem = tv_db.GetNextItem(gitem); + } + xstring guid = win32::GetGuid(); + if (OnGroupAction(guid,L"",L"group.update") != 1) return 0; + HTREEITEM j = tv_db.InsertItem(item,gitem,L"",L"group@" + guid,25); + tv_db.ItemEdit(j); + return 1; + } + + int OnDel(HTREEITEM item) + { + xstring data = tv_db.GetItemData(item); + if (data.left(6) == L"group@") + { + xstring guid = data.mid(6,data.length()); + if (OnGroupAction(guid,L"",L"group.del") != 1) return 0; + tv_db.DeleteItem(item); + } + else if (data.left(6) == L"table@") + { + HTREEITEM pitem = tv_db.GetParentItem(item); + xstring pdata = tv_db.GetItemData(pitem); + if (pdata.left(6) == L"group@") + { + xstring guid = pdata.mid(6,pdata.length()); + xstring table = data.mid(6,data.length()); + if (OnGroupAction(guid,table,L"group.table.del") != 1) return 0; + tv_db.DeleteItem(item); + } + } + return 1; + } + + int OnRefresh(HTREEITEM item) + { + while (tv_db.GetChildItem(item) > 0) + tv_db.DeleteItem(tv_db.GetChildItem(item)); + OnTreeExpand(item); + return 1; + } + + int OnQuery(xstring caption) + { + if (OnOpen(caption,L"query") == 0) return 0; + KXMLDOMElement e = OnXQuery(L"column@" + caption); + if (!e) return 0; + auto list = e.selectNodes(L"columns/column"); + int i; + int s = list.length(); + xstring str; + str = L"SELECT TOP 500 \r\n"; + for (i = 0; i < s; i++) + { + KXMLDOMElement ele = list.item(i); + xstring tmp = ele.getAttribute(L"name"); + if (i < s - 1) tmp = tmp + L",L"; + str += L"\t" + tmp + L"\r\n"; + } + str += L"FROM " + caption; + xsedit xs = GetControl(L"sql_" + caption); + xs.LoadContent(str,L".sql"); + setGrid(e,L"grid_" + caption); + return 1; + } + + int OnEdit(xstring caption) + { + if (OnOpen(caption,L"edit") == 0) return 0; + KXMLDOMElement e = OnXQuery(L"edit@" + caption); + if (!e) return 0; + setGrid(e,L"editgrid_" + caption); + return 1; + } + + int OnDesign(xstring caption) + { + if (OnOpen(caption,L"design") == 0) return 0; + KXMLDOMElement e = OnXQuery(L"design@" + caption); + if (!e) return 0; + setGrid(e,L"designgrid_" + caption); + return 1; + } + + xstring getCaption(xstring str) + { + while (str.find(L"@", 0) > 0) + { + xstring tmp = str.mid(str.find(L"@", 0) + 1, str.length()); + str = tmp; + } + return str; + } + + int OnTreeRClick(TEvent* evt,int param) + { + TVNNMHDR& nmtv = *(TVNNMHDR*)evt->notify.pnmh; + HTREEITEM item = nmtv.FromItem; + xstring data = tv_db.GetItemData(item); + xstring popup; + if (data == L"table") + { + xstring memu = L"<root>"; + memu += L"<Item>新建表</Item>"; + memu += L"<Item>新建分组</Item>"; + memu += L"<Item>-</Item>"; + memu += L"<Item>刷新</Item>"; + memu += L"</root>"; + xstring str = tv_db.PopupMenu(memu); + popup = str; + } + else if (data.left(6) == L"table@" && data.find(L"@",7) < 0) + { + xstring memu = L"<root>"; + memu += L"<Item>新建表</Item>"; + memu += L"<Item>设计</Item>"; + memu += L"<Item>-</Item>"; + memu += L"<Item>打开前500行</Item>"; + memu += L"<Item>编辑前200行</Item>"; + memu += L"<Item>-</Item>"; + memu += L"<Item>重命名</Item>"; + memu += L"<Item>刷新</Item>"; + memu += L"<Item>删除</Item>"; + memu += L"</root>"; + xstring str = tv_db.PopupMenu(memu); + popup = str; + } + else if (data.left(6) == L"group@") + { + xstring memu = L"<root>"; + memu += L"<Item>重命名</Item>"; + memu += L"<Item>刷新</Item>"; + memu += L"<Item>删除</Item>"; + memu += L"</root>"; + xstring str = tv_db.PopupMenu(memu); + popup = str; + } + else if (data.left(5) == L"view@" || data.left(10) == L"procedure@" || data.left(9) == L"function@") + { + xstring memu = L"<root>"; + memu += L"<Item>重命名</Item>"; + memu += L"<Item>修改</Item>"; + memu += L"<Item>删除</Item>"; + memu += L"</root>"; + xstring str = tv_db.PopupMenu(memu); + popup = str; + } + + //trace(L" "+data+L"-->"+getCaption(data)); + xstring caption = getCaption(data);//data.mid(6,data.length()); + if (popup == L"新建分组") + OnNewGroup(item); + else if (popup == L"删除") + OnDel(item); + else if (popup == L"刷新") + OnRefresh(item); + else if (popup == L"打开前500行") + OnQuery(caption); + else if (popup == L"编辑前200行") + OnEdit(caption); + else if (popup == L"设计") + OnDesign(caption); + else if (popup == L"新建表") + { + xstring guid = win32::GetGuid(); + xstring text = L"Table_" + guid.mid(1,8); + OnDesign(text); + } + else if (popup == L"修改") + OnOpen(caption,L"query"); + return 1; + } + + int OnTreeBeginDrag(TEvent* evt,LPARAM param) + { + NMTREEVIEW& nmtv =*(NMTREEVIEW*) evt->notify.pnmh; + HTREEITEM item = nmtv.itemNew.hItem; + xstring data = tv_db.GetItemData(item); + if (data.left(6) != L"table@" || data.find(L"@",7) > 0) + { + int WM_LBUTTONUP = 0x0202; + SendMessage(tv_db.GetHWND(),WM_LBUTTONUP,0,0); + } + return 1; + } + + int OnTreeEndDrag(TEvent* evt, LPARAM param) + { + TVNNMHDR& nmtv = *(TVNNMHDR*)evt->notify.pnmh; + HTREEITEM fitem = nmtv.FromItem; + HTREEITEM titem = nmtv.ToItem; + xstring fdata = tv_db.GetItemData(fitem); + xstring tdata = tv_db.GetItemData(titem); + if (fdata.left(6) == L"table@" && tdata.left(6) == L"group@") + { + xstring table = fdata.mid(6,fdata.length()); + xstring guid = tdata.mid(6,tdata.length()); + if (OnGroupAction(guid,table,L"group.table.update") != 1) return 0; + tv_db.DeleteItem(fitem); + } + return 1; + } + + int OnTreeEndEdit(TEvent* evt, LPARAM param) + { + NMTVDISPINFO& nmtv = *(NMTVDISPINFO*)evt->notify.pnmh; + HTREEITEM item = nmtv.item.hItem; + xstring pszText = nmtv.item.pszText; + if (pszText != L"") + { + xstring data = tv_db.GetItemData(item); + if (data.left(6) == L"group@") + { + xstring guid = data.mid(6,data.length()); + if (OnGroupAction(guid,pszText,L"group.update") != 1) return 0; + } + tv_db.SetItemLabel(item,pszText); + } + return 1; + } + int OnAttachEvent() { //绑定工具条点击事件 - AttachEvent(L"WM_XCOMMAND", (FEvent)&XDeveloper::OnXCommand); - AttachEvent(L"DevExplorer", L"NM_DBLCLK", (FEvent)&XDeveloper::OnTreeDblClick); + AttachEvent(L"WM_XCOMMAND",(FEvent)XDevEditXMSSQL::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)XDevEditXMSSQL::OnSetFocus); //获得树的展开事件 - //AttachEvent(L"DevExplorer", L"TVN_ITEMEXPANDING",(FEvent)&XDeveloper::OnTreeExpanding); + AttachEvent(L"tv_db", L"TVN_ITEMEXPANDING", (FEvent)XDevEditXMSSQL::OnTreeExpanding); //获得树的选择事件 - AttachEvent(L"DevExplorer", L"TVN_SELCHANGED", (FEvent)&XDeveloper::OnTreeSelChanged); - //改变页签 - //AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET",(FEvent)&XDeveloper::OnSelChanged); - AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET", (FEvent)&XDeveloper::OnSelChangedEx); + //AttachEvent(L"tv_db", L"TVN_SELCHANGED",(FEvent)XDevEditXMSSQL::OnTreeSelChanged); + AttachEvent(L"tv_db", L"TVN_RCLICK", (FEvent)XDevEditXMSSQL::OnTreeRClick); + AttachEvent(L"tv_db", L"TVN_BEGINDRAG", (FEvent)XDevEditXMSSQL::OnTreeBeginDrag); + AttachEvent(L"tv_db", L"TVN_ENDDRAG", (FEvent)XDevEditXMSSQL::OnTreeEndDrag); + AttachEvent(L"tv_db", L"TVN_ENDLABELEDIT", (FEvent)XDevEditXMSSQL::OnTreeEndEdit); + } + int LoadData() + { + if (!GetWinParam()) return 1; + xsedit xs = GetControl(L"xcontent"); + xstring content = GetData(); + if (content != L"") + { + xs.LoadContent(content,L".xml"); + } return 1; } int OnInitial() { + SetAgent(); + OnAttachEvent(); return 1; @@ -549,13 +594,13 @@ int onload() { - sheet_Count = -1; + tv_db = GetControl(L"tv_db"); + list = GetControl(L"list"); + OnInitial(); - tv_folder = GetControl(L"DevExplorer"); - mle_output = GetControl(L"output"); - SetAgent(L"projects"); - + LoadData(); + //OnCmdDispatch(L"xmQuery"); return 1; } }; \ No newline at end of file diff --git a/jrj/xframe/devloper/XDevEditXOffice.cpp b/jrj/xframe/devloper/XDevEditXOffice.cpp index f26ab17..da7288b 100644 --- a/jrj/xframe/devloper/XDevEditXOffice.cpp +++ b/jrj/xframe/devloper/XDevEditXOffice.cpp @@ -4,544 +4,174 @@ #include <wobject/xaserverarg.hpp> #include <xcontrol/xtreeview.hpp> #include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xsedit.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <xcontrol/xoffice.hpp> +#include "XDevEditPage.hpp" using xml = KXMLDOMDocument; -class export XDeveloper : public xwin +class export XDevEditXOffice : public XDevEditPage { public: - XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} + XDevEditXOffice(void* implPtr, HWND hWnd) : XDevEditPage(implPtr, hWnd) {} public: - static XDeveloper* CreateInstance(void* implPtr, void* hWnd) + static XDevEditXOffice* CreateInstance(void* implPtr, void* hWnd) { - XDeveloper* pWin = new XDeveloper(implPtr, (HWND)hWnd); + XDevEditXOffice* pWin = new XDevEditXOffice(implPtr, (HWND)hWnd); return pWin; } private: // - xtreeview tv_folder; - xcontrol mle_output; - int sheet_Count; -public: - int trace(xstring msg) + //xdwgrid dw_list; + xoffice m_xdoc; + xnode m_agentNode; //Agent Condition + xstring m_agentCond; //Agent Node + int SetAgent() { - xstring t = mle_output.GetText(); - mle_output.SetText(t + msg); + xstring xfNodeAgentArea = L"agentarea"; + xnode anode = GetAgentNode(xfNodeAgentArea); + auto xframeElement = GetElement(); + auto agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*"); + if (agent) + { + xstring s = agent.xml(); + m_agentNode = SetAgentNode(anode,s); + } return 1; } - int OnProcessUrl(xstring kind, xstring url) + //焦点激活处理函数 + int OnSetFocus(TEvent* evt,LPARAM param) { - xml x ; - xaserverarg xarg; - xarg.AddArg(L"url", url); - xarg.AddArg(L"kind", kind); - xaserver::ExecXQuery(GetServerUrl(), L"[service.url.info.xq]", xarg.GetString(), x); - alert(x.xml()); - return 1; - } + SetAgent(); - xstring ProcessDevCmd(xstring cmd, xstring ext) - { - int nlen = 0; - BYTE* pdata=nullptr; - xaserver::ProcessCmd(GetServerUrl(),( L"uri.hxsoft.com/xaserver/developer " + cmd).c_str(), ext.c_str(), pdata, nlen); - - xstring str = ((LPARAM)pdata) + L""; - return str; - } - - int SetAgent(xstring node) - { - auto n = GetElement().selectSingleNode(L"agent/projects/node()[1]"); - if (n) - { - xstring agent = n.xml(); - xstring xfNodeAgentArea = L"agentarea"; - xnode anode = GetAgentNode(xfNodeAgentArea); - SetAgentNode(anode, agent); - } - - return 1; - } - - HTREEITEM GetProjectItem(HTREEITEM hItem) - { - HTREEITEM pitem = hItem; - xstring typ; - while (true) - { - typ = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).tagName(); - if (typ == L"project")break; - pitem = tv_folder.GetParentItem(pitem); - if (!pitem )break; - } - return pitem; - } - - HTREEITEM GetP2Item(HTREEITEM hItem) - { - HTREEITEM hDomainItem; - HTREEITEM hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - return hP2Item; - } - - //树展开事件 - int OnTreeExpanding(TEvent* evt, HTREEITEM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - return 1; - } - - xstring GetData(HTREEITEM hItem) - { - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - if (!tv_folder.GetParentItem(hItem)) - { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - xaserverarg arg; - arg.AddArg(L"project.guid", prjguid); - if (hP2Item) - { - if (hP2Item != hItem) - { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"guid", guid); - } - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - xstring guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - } - else if (hDomainItem) - { - KXMLDOMElement d = tv_folder.GetItemData(hDomainItem); - xstring guid = d.getAttribute(L"guid"); - arg.AddArg(L"domain.guid", guid); - } - xstring str = ProcessDevCmd(L"getobject", arg.GetString()); - return str + L""; - } - else - return L""; - } - - int OnTreeDblClick(TEvent* evt, int param) - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 0; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode(L"//editor[@filetype='" + typ + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } + //重置工具条 return 1; } //命令发布函数 int OnCmdDispatch(xstring comdid) { - // - if (comdid == L"xmSqlWatch") + xml x ; + m_xdoc.GetData(x); + xstring content = x.xml(); + if (comdid == L"xmFileSave") { - OpenWindow(L"dev:xpage[sqlWatch.vx]"); + //save xml content + SaveContent(content); return 1; } - if (comdid == L"xmCheckUrl") + else if (comdid == L"xmDevPreview") { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"info", url); - } - else if (comdid == L"xmClearBuffer") - { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"clearbuffer", url); - } - if (comdid == L"xmNewFolder" || comdid == L"xmNewProject" || comdid == L"xmNewFile") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - if (comdid == L"xmNewProject" && prjguid != L"") return 1; - if (comdid == L"xmNewFile" && !tv_folder.GetParentItem(hItem)) return 1; - + xml x; + m_xdoc.GetData(x,m_xdoc.GetSelectedSheetIndex()); xaserverarg arg; - if (comdid == L"xmNewProject") - OpenWindow(L"dev:xpage[XDevProjectDlg.xpage]", arg); - else if (comdid == L"xmNewFolder") - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - else - OpenWindow(L"dev:xpage[XDevFileDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - arg.SetArg(L"project.guid", prjguid); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem)) - { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - e = tv_folder.GetItemData(hItem); - if (hP2Item) - { - if (hP2Item != hItem) - { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"parent.guid", guid); - } - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - xstring guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - } - else if (hDomainItem) - { - KXMLDOMElement d = tv_folder.GetItemData(hDomainItem); - xstring guid = d.getAttribute(L"guid"); - arg.AddArg(L"domain.guid", guid); - } - - - if (hP2Item) - { - if (comdid == L"xmNewFolder") - { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"15"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); - } - } - else - { - if (comdid == L"xmNewFolder") - { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"17"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); - } - } - - xstring str = ProcessDevCmd(L"addfolder", arg.GetString()); - if (str != L"") - { - xml x; - x.loadXML(str); - auto e1 = x.documentElement(); - e.appendChild(e1); - int himage = xstring(e1.getAttribute(L"image")).toInt(); - tv_folder.InsertChildItem(hItem, arg.GetArgString(L"name"), e1, himage); - } - + arg.AddArg(L"xml", x.xml()); + OpenWindow(L"dev:xpage[XDevOfficePreview.xpage]", arg); return 1; } - else if (comdid == L"xmDeleteObject") + else if (comdid == L"content") { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - - int MB_YESNO = 0x00000004; - int IDYES = 6; - - if (MessageBox(GetHWND(), L"确认删除指定的项", L"提示", MB_YESNO) != IDYES) return 1; - ProcessDevCmd(L"deletefolder", arg.GetString()); - tv_folder.DeleteItem(hItem); - + return 1; + xsedit xs = GetControl(L"rptcontent"); + xs.LoadContent(content,L".txt"); + //xs.SetText(content); return 1; } - else if (comdid == L"xmUpdateProject") + else if (comdid == L"content1") { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem && pitem != hItem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - //trace(p.xml); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - + xcontrol xs = GetControl(L"rptcontent1"); + SendMessage(xs.GetHWND(), 0x400 + 53,0,4096 * 4096); + xs.SetText(content); + return 1; + } + else if (comdid == L"design") + { + xsedit xs = GetControl(L"rptcontent"); xstring str; - str = e.getAttribute(L"caption"); - arg.AddArg(L"name", str); - - str = e.getAttribute(L"desc"); - arg.AddArg(L"desc", str); - - str = e.getAttribute(L"uri"); - arg.AddArg(L"uri", str); - - str = e.getAttribute(L"guid"); - arg.AddArg(L"guid", str); - - str = e.getAttribute(L"src"); - arg.AddArg(L"src", str); - - str = e.getAttribute(L"type"); - arg.AddArg(L"type", str); - - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - ProcessDevCmd(L"updatefolder", arg.GetString()); - str = arg.GetArgString(L"name"); - e.setAttribute(L"caption", str); - - str = arg.GetArgString(L"desc"); - e.setAttribute(L"desc", str); - - str = arg.GetArgString(L"uri"); - e.setAttribute(L"uri", str); - - tv_folder.SetItemLabel(hItem, arg.GetArgString(L"name")); - + xs.GetContent(str); + if (str != L"" && str != content) + { + m_xdoc.LoadTemplate(str,0); + xs.LoadContent(L"",L".txt"); + } + /* + xcontrol xs = GetControl(L"rptcontent1"); + xstring str ; + xstring str = xs.GetText(); + if(str !=L"" && str != content) + { + m_xdoc.LoadTemplate(str,0); + //xs.LoadContent(L"",L".txt"); + }*/ return 1; - } - else if (comdid == L"xmEditObject") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode((xstring)L"//editor[@filetype='" + L"xml" + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } - } return 0; } - //树选择事件 - int OnTreeSelChanged(TEvent* evt, LPARAM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - //root node - KXMLDOMElement e = tv_folder.GetItemData(hItem); - SetAgent(L"projects"); - - return 1; - } - //命令处理事件 - int OnXCommand(TEvent* evt, int param) + int OnXCommand(TEvent* evt,LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } - int OnSelChanged(TEvent* evt, int param) - { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - - //状态栏显示完成路径 - HTREEITEM hitem = tv_folder.GetSelectedItem(); - xstring path = L"" + tv_folder.GetItemLabel(hitem); - while (tv_folder.GetParentItem(hitem)) - { - hitem = tv_folder.GetParentItem(hitem); - xstring p = L"" + tv_folder.GetItemLabel(hitem); - path = p + L"\\" + path; - } - xcontrol xc = GetControl(L"statusbar"); - xc.SetText(L"" + path); - /* - if(sheet<s) - { - param p=layer.GetParam(sheet); - int hitem = p; - onPrintPath(hitem); - } - */ - - return 1; - } - int OnSelChangedEx(TEvent* evt, int param) - { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - int k = sheet_Count; - if (k < s) - { - void* p = nullptr; - layer.SetParam(s - 1, p); - } - sheet_Count = s; - return 1; - } int OnAttachEvent() { //绑定工具条点击事件 - AttachEvent(L"WM_XCOMMAND", (FEvent)&XDeveloper::OnXCommand); - AttachEvent(L"DevExplorer", L"NM_DBLCLK", (FEvent)&XDeveloper::OnTreeDblClick); - //获得树的展开事件 - //AttachEvent(L"DevExplorer", L"TVN_ITEMEXPANDING",(FEvent)&XDeveloper::OnTreeExpanding); - //获得树的选择事件 - AttachEvent(L"DevExplorer", L"TVN_SELCHANGED", (FEvent)&XDeveloper::OnTreeSelChanged); - //改变页签 - //AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET",(FEvent)&XDeveloper::OnSelChanged); - AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET", (FEvent)&XDeveloper::OnSelChangedEx); + AttachEvent(L"WM_XCOMMAND",(FEvent)&XDevEditXOffice::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXOffice::OnSetFocus); + + return 1; + } + + /* + int OnRetrieve() + { + xstring query=L"[xxx]"; + xml x = new xml; + xaserverarg arg = new xaserverarg; + arg.AddArg(L"xxx",L"xxx"); + if (xaserver::ExecXQuery(GetServerUrl(),query,arg.GetString(),x)!=1) + { + trace(x.GetXmlDoc().text); + return -1; + }else + { + dw_list.Retrieve(x); + dw_list.Redraw(); + } + return 1; + } + */ + + int LoadData() + { + if (!GetWinParam()) return 1; + + m_xdoc = GetControl(L"rpt"); + xstring content = GetData(); + if (content != L"") + { + m_xdoc.LoadTemplate(content,0); + } + else + { + KXMLDOMElement pElement; + xml x ; + auto xdoc = x; + xdoc.loadXML(L"<root/>"); + m_xdoc.LoadTemplate(x,0); + } return 1; } int OnInitial() { + SetAgent(); + OnAttachEvent(); return 1; @@ -549,12 +179,13 @@ int onload() { - sheet_Count = -1; - OnInitial(); + //dw_list = GetControl(L"dw_list"); + //dw_list.SetDataObject(GetServerUrl(),L"dev:sheet[xxx.tpl/List]"); - tv_folder = GetControl(L"DevExplorer"); - mle_output = GetControl(L"output"); - SetAgent(L"projects"); + OnInitial(); + LoadData(); + + //OnRetrieve(); return 1; } diff --git a/jrj/xframe/devloper/XDevEditXPage.cpp b/jrj/xframe/devloper/XDevEditXPage.cpp index 0e63798..874d0f0 100644 --- a/jrj/xframe/devloper/XDevEditXPage.cpp +++ b/jrj/xframe/devloper/XDevEditXPage.cpp @@ -5,12 +5,13 @@ #include <xcontrol/xtreeview.hpp> #include <xcontrol/xlayersheet.hpp> #include <xcontrol/xsedit.hpp> +#include "XDevEditPage.hpp" using xml = KXMLDOMDocument; -class export XDevEditXPage : public xwin +class export XDevEditXPage : public XDevEditPage { public: - XDevEditXPage(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd){} + XDevEditXPage(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd){} public: static XDevEditXPage* CreateInstance(void* implPtr, void* hWnd) { @@ -87,6 +88,8 @@ AttachEvent(L"WM_XCOMMAND", (FEvent)&XDevEditXPage::OnXCommand); //获取焦点事件,用于重置工具条 AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXPage::OnSetFocus); + + return 1; } int LoadData() diff --git a/jrj/xframe/devloper/XDevEditXQuery.cpp b/jrj/xframe/devloper/XDevEditXQuery.cpp index 9d50fc8..634d674 100644 --- a/jrj/xframe/devloper/XDevEditXQuery.cpp +++ b/jrj/xframe/devloper/XDevEditXQuery.cpp @@ -7,12 +7,13 @@ #include <xcontrol/xdwgrid.hpp> #include <xcontrol/xsedit.hpp> #include <xcontrol/xcombobox.hpp> +#include "XDevEditPage.hpp" using xml = KXMLDOMDocument; -class export XDevEditXQuery : public xwin +class export XDevEditXQuery : public XDevEditPage { public: - XDevEditXQuery(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} + XDevEditXQuery(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {} public: static XDevEditXQuery* CreateInstance(void* implPtr, void* hWnd) { @@ -68,7 +69,7 @@ xstring v = e1.getAttribute(L"source"); xc.SetText(L"" + v); xc = GetControl(L"linkname"); - xstring v = e1.getAttribute(L"link"); + v = e1.getAttribute(L"link"); xc.SetText(L"" + v); KXMLDOMElement e2 = e.selectSingleNode(L"paras"); @@ -125,7 +126,7 @@ e.appendChild(e1); root.documentElement().appendChild(e); - xml y (); + xml y; dw_list.DwUpdateTo(y); root.documentElement().appendChild(y.documentElement()); //trace(y.xml()); @@ -249,6 +250,8 @@ AttachEvent(L"WM_XCOMMAND",(FEvent)&XDevEditXQuery::OnXCommand); //获取焦点事件,用于重置工具条 AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXQuery::OnSetFocus); + + return 1; } int OnInitial() diff --git a/jrj/xframe/devloper/XDevEditXRuler.cpp b/jrj/xframe/devloper/XDevEditXRuler.cpp index f26ab17..a62cce0 100644 --- a/jrj/xframe/devloper/XDevEditXRuler.cpp +++ b/jrj/xframe/devloper/XDevEditXRuler.cpp @@ -4,544 +4,149 @@ #include <wobject/xaserverarg.hpp> #include <xcontrol/xtreeview.hpp> #include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <xcontrol/xsedit.hpp> +#include <xcontrol/xcombobox.hpp> +#include "XDevEditPage.hpp" using xml = KXMLDOMDocument; -class export XDeveloper : public xwin +class export XDevEditXRuler : public XDevEditPage { public: - XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} + XDevEditXRuler(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {} public: - static XDeveloper* CreateInstance(void* implPtr, void* hWnd) + static XDevEditXRuler* CreateInstance(void* implPtr, void* hWnd) { - XDeveloper* pWin = new XDeveloper(implPtr, (HWND)hWnd); + XDevEditXRuler* pWin = new XDevEditXRuler(implPtr, (HWND)hWnd); return pWin; } private: // - xtreeview tv_folder; - xcontrol mle_output; - int sheet_Count; -public: - int trace(xstring msg) + //xdwgrid dw_list; + + xnode m_agentNode; //Agent Condition + xstring m_agentCond; //Agent Node + int SetAgent() { - xstring t = mle_output.GetText(); - mle_output.SetText(t + msg); + /*xstring xfNodeAgentArea = L"agentarea"; + xnode anode = GetAgentNode(xfNodeAgentArea); + var xframeElement = GetElement(); + var agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*"); + if(agent) + { + xstring s = agent.xml; + m_agentNode = SetAgentNodeContent (anode,s); + }*/ return 1; } - int OnProcessUrl(xstring kind, xstring url) + //焦点激活处理函数 + int OnSetFocus(TEvent* evt,LPARAM param) { - xml x ; - xaserverarg xarg; - xarg.AddArg(L"url", url); - xarg.AddArg(L"kind", kind); - xaserver::ExecXQuery(GetServerUrl(), L"[service.url.info.xq]", xarg.GetString(), x); - alert(x.xml()); + SetAgent(); + + //重置工具条 return 1; } - xstring ProcessDevCmd(xstring cmd, xstring ext) + int LoadData() { - int nlen = 0; - BYTE* pdata=nullptr; - xaserver::ProcessCmd(GetServerUrl(),( L"uri.hxsoft.com/xaserver/developer " + cmd).c_str(), ext.c_str(), pdata, nlen); + if (!GetWinParam()) return 1; + xstring content = GetData(); + if (content != L"") + { + xsedit xs = GetControl(L"xcontent"); + xs.LoadContent(content,L".xml"); + } + return 1; + } - xstring str = ((LPARAM)pdata) + L""; + xstring OnGetType() + { + xwin w = GetFrameWindow(); + xtreeview tv_folder = w.GetControl(L"DevExplorer"); + HTREEITEM hItem = (HTREEITEM)GetWinParam(); + KXMLDOMElement e = tv_folder.GetItemData(hItem); + xstring str = e.getAttribute(L"type"); return str; - } - - int SetAgent(xstring node) - { - auto n = GetElement().selectSingleNode(L"agent/projects/node()[1]"); - if (n) - { - xstring agent = n.xml(); - xstring xfNodeAgentArea = L"agentarea"; - xnode anode = GetAgentNode(xfNodeAgentArea); - SetAgentNode(anode, agent); - } - - return 1; - } - - HTREEITEM GetProjectItem(HTREEITEM hItem) - { - HTREEITEM pitem = hItem; - xstring typ; - while (true) - { - typ = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).tagName(); - if (typ == L"project")break; - pitem = tv_folder.GetParentItem(pitem); - if (!pitem )break; - } - return pitem; - } - - HTREEITEM GetP2Item(HTREEITEM hItem) - { - HTREEITEM hDomainItem; - HTREEITEM hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - return hP2Item; - } - - //树展开事件 - int OnTreeExpanding(TEvent* evt, HTREEITEM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - return 1; - } - - xstring GetData(HTREEITEM hItem) - { - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - if (!tv_folder.GetParentItem(hItem)) - { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - xaserverarg arg; - arg.AddArg(L"project.guid", prjguid); - if (hP2Item) - { - if (hP2Item != hItem) - { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"guid", guid); - } - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - xstring guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - } - else if (hDomainItem) - { - KXMLDOMElement d = tv_folder.GetItemData(hDomainItem); - xstring guid = d.getAttribute(L"guid"); - arg.AddArg(L"domain.guid", guid); - } - xstring str = ProcessDevCmd(L"getobject", arg.GetString()); - return str + L""; - } - else - return L""; - } - - int OnTreeDblClick(TEvent* evt, int param) - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 0; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode(L"//editor[@filetype='" + typ + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } - return 1; } //命令发布函数 int OnCmdDispatch(xstring comdid) { - // - if (comdid == L"xmSqlWatch") + xstring content; + xsedit xs = GetControl(L"xcontent"); + xs.GetContent(content); + + HCURSOR hCursor = xutil::SetCursorWait(); + if (comdid == L"xmFileSave") { - OpenWindow(L"dev:xpage[sqlWatch.vx]"); - return 1; + //save xml content + SaveContent(content); } - if (comdid == L"xmCheckUrl") + else if (comdid == L"xmValid") { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"info", url); - } - else if (comdid == L"xmClearBuffer") - { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"clearbuffer", url); - } - if (comdid == L"xmNewFolder" || comdid == L"xmNewProject" || comdid == L"xmNewFile") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - if (comdid == L"xmNewProject" && prjguid != L"") return 1; - if (comdid == L"xmNewFile" && !tv_folder.GetParentItem(hItem)) return 1; - - xaserverarg arg; - if (comdid == L"xmNewProject") - OpenWindow(L"dev:xpage[XDevProjectDlg.xpage]", arg); - else if (comdid == L"xmNewFolder") - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - else - OpenWindow(L"dev:xpage[XDevFileDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - arg.SetArg(L"project.guid", prjguid); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem)) + xml x ; + if (!x.loadXML(content)) { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - e = tv_folder.GetItemData(hItem); - if (hP2Item) - { - if (hP2Item != hItem) + KXMLDOMParseError pError = x.parseError(); + if (pError) { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"parent.guid", guid); + xstring str = pError.srcText(); + xstring sError = L"\r\nXML错误: " + str.trim() + L"\r\n"; + int s = pError.errorCode(); + sError += L" 代码: " + xstring(s) + L"\r\n"; + s = pError.line(); + sError += L" 位置: 第" + xstring(s) + L"行,L"; + s = pError.linepos(); + sError += L"第" + xstring(s) + L"列" + L"\r\n"; + str = pError.reason(); + sError += L" 原因: " + str; + trace(sError); } - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - xstring guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - } - else if (hDomainItem) - { - KXMLDOMElement d = tv_folder.GetItemData(hDomainItem); - xstring guid = d.getAttribute(L"guid"); - arg.AddArg(L"domain.guid", guid); - } - - - if (hP2Item) - { - if (comdid == L"xmNewFolder") + else { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"15"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); + trace(L"XML 错误"); } + return -1; } - else + /*xstring sType = OnGetType(); + if (sType == L"xml.xsd") { - if (comdid == L"xmNewFolder") - { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"17"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); - } - } - - xstring str = ProcessDevCmd(L"addfolder", arg.GetString()); - if (str != L"") - { - xml x; - x.loadXML(str); - auto e1 = x.documentElement(); - e.appendChild(e1); - int himage = xstring(e1.getAttribute(L"image")).toInt(); - tv_folder.InsertChildItem(hItem, arg.GetArgString(L"name"), e1, himage); - } - - return 1; + xstring sError; + x.ValidSchema(content, &sError); + trace(sError); + }*/ } - else if (comdid == L"xmDeleteObject") + else if (comdid == L"xmEditFind") { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - - int MB_YESNO = 0x00000004; - int IDYES = 6; - - if (MessageBox(GetHWND(), L"确认删除指定的项", L"提示", MB_YESNO) != IDYES) return 1; - ProcessDevCmd(L"deletefolder", arg.GetString()); - tv_folder.DeleteItem(hItem); - - return 1; + OpenWindow(L"dev:xpage[xcode.finddlg]"); } - else if (comdid == L"xmUpdateProject") + else if (comdid == L"xmEditReplace") { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem && pitem != hItem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - //trace(p.xml); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - - xstring str; - str = e.getAttribute(L"caption"); - arg.AddArg(L"name", str); - - str = e.getAttribute(L"desc"); - arg.AddArg(L"desc", str); - - str = e.getAttribute(L"uri"); - arg.AddArg(L"uri", str); - - str = e.getAttribute(L"guid"); - arg.AddArg(L"guid", str); - - str = e.getAttribute(L"src"); - arg.AddArg(L"src", str); - - str = e.getAttribute(L"type"); - arg.AddArg(L"type", str); - - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - ProcessDevCmd(L"updatefolder", arg.GetString()); - str = arg.GetArgString(L"name"); - e.setAttribute(L"caption", str); - - str = arg.GetArgString(L"desc"); - e.setAttribute(L"desc", str); - - str = arg.GetArgString(L"uri"); - e.setAttribute(L"uri", str); - - tv_folder.SetItemLabel(hItem, arg.GetArgString(L"name")); - - return 1; + OpenWindow(L"dev:xpage[xcode.replacedlg]"); } - else if (comdid == L"xmEditObject") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode((xstring)L"//editor[@filetype='" + L"xml" + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } - - } + xutil::RestoreCursor(hCursor); return 0; } - //树选择事件 - int OnTreeSelChanged(TEvent* evt, LPARAM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - //root node - KXMLDOMElement e = tv_folder.GetItemData(hItem); - SetAgent(L"projects"); - - return 1; - } - //命令处理事件 - int OnXCommand(TEvent* evt, int param) + int OnXCommand(TEvent* evt,LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } - int OnSelChanged(TEvent* evt, int param) - { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - - //状态栏显示完成路径 - HTREEITEM hitem = tv_folder.GetSelectedItem(); - xstring path = L"" + tv_folder.GetItemLabel(hitem); - while (tv_folder.GetParentItem(hitem)) - { - hitem = tv_folder.GetParentItem(hitem); - xstring p = L"" + tv_folder.GetItemLabel(hitem); - path = p + L"\\" + path; - } - xcontrol xc = GetControl(L"statusbar"); - xc.SetText(L"" + path); - /* - if(sheet<s) - { - param p=layer.GetParam(sheet); - int hitem = p; - onPrintPath(hitem); - } - */ - - return 1; - } - int OnSelChangedEx(TEvent* evt, int param) - { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - int k = sheet_Count; - if (k < s) - { - void* p = nullptr; - layer.SetParam(s - 1, p); - } - sheet_Count = s; - return 1; - } int OnAttachEvent() { //绑定工具条点击事件 - AttachEvent(L"WM_XCOMMAND", (FEvent)&XDeveloper::OnXCommand); - AttachEvent(L"DevExplorer", L"NM_DBLCLK", (FEvent)&XDeveloper::OnTreeDblClick); - //获得树的展开事件 - //AttachEvent(L"DevExplorer", L"TVN_ITEMEXPANDING",(FEvent)&XDeveloper::OnTreeExpanding); - //获得树的选择事件 - AttachEvent(L"DevExplorer", L"TVN_SELCHANGED", (FEvent)&XDeveloper::OnTreeSelChanged); - //改变页签 - //AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET",(FEvent)&XDeveloper::OnSelChanged); - AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET", (FEvent)&XDeveloper::OnSelChangedEx); - - return 1; + AttachEvent(L"WM_XCOMMAND", (FEvent)&XDevEditXRuler::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXRuler::OnSetFocus); } int OnInitial() { + SetAgent(); + OnAttachEvent(); return 1; @@ -549,12 +154,8 @@ int onload() { - sheet_Count = -1; OnInitial(); - - tv_folder = GetControl(L"DevExplorer"); - mle_output = GetControl(L"output"); - SetAgent(L"projects"); + LoadData(); return 1; } diff --git a/jrj/xframe/devloper/XDevEditXWKDlg.cpp b/jrj/xframe/devloper/XDevEditXWKDlg.cpp index f26ab17..a62cce0 100644 --- a/jrj/xframe/devloper/XDevEditXWKDlg.cpp +++ b/jrj/xframe/devloper/XDevEditXWKDlg.cpp @@ -4,544 +4,149 @@ #include <wobject/xaserverarg.hpp> #include <xcontrol/xtreeview.hpp> #include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <xcontrol/xsedit.hpp> +#include <xcontrol/xcombobox.hpp> +#include "XDevEditPage.hpp" using xml = KXMLDOMDocument; -class export XDeveloper : public xwin +class export XDevEditXRuler : public XDevEditPage { public: - XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} + XDevEditXRuler(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {} public: - static XDeveloper* CreateInstance(void* implPtr, void* hWnd) + static XDevEditXRuler* CreateInstance(void* implPtr, void* hWnd) { - XDeveloper* pWin = new XDeveloper(implPtr, (HWND)hWnd); + XDevEditXRuler* pWin = new XDevEditXRuler(implPtr, (HWND)hWnd); return pWin; } private: // - xtreeview tv_folder; - xcontrol mle_output; - int sheet_Count; -public: - int trace(xstring msg) + //xdwgrid dw_list; + + xnode m_agentNode; //Agent Condition + xstring m_agentCond; //Agent Node + int SetAgent() { - xstring t = mle_output.GetText(); - mle_output.SetText(t + msg); + /*xstring xfNodeAgentArea = L"agentarea"; + xnode anode = GetAgentNode(xfNodeAgentArea); + var xframeElement = GetElement(); + var agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*"); + if(agent) + { + xstring s = agent.xml; + m_agentNode = SetAgentNodeContent (anode,s); + }*/ return 1; } - int OnProcessUrl(xstring kind, xstring url) + //焦点激活处理函数 + int OnSetFocus(TEvent* evt,LPARAM param) { - xml x ; - xaserverarg xarg; - xarg.AddArg(L"url", url); - xarg.AddArg(L"kind", kind); - xaserver::ExecXQuery(GetServerUrl(), L"[service.url.info.xq]", xarg.GetString(), x); - alert(x.xml()); + SetAgent(); + + //重置工具条 return 1; } - xstring ProcessDevCmd(xstring cmd, xstring ext) + int LoadData() { - int nlen = 0; - BYTE* pdata=nullptr; - xaserver::ProcessCmd(GetServerUrl(),( L"uri.hxsoft.com/xaserver/developer " + cmd).c_str(), ext.c_str(), pdata, nlen); + if (!GetWinParam()) return 1; + xstring content = GetData(); + if (content != L"") + { + xsedit xs = GetControl(L"xcontent"); + xs.LoadContent(content,L".xml"); + } + return 1; + } - xstring str = ((LPARAM)pdata) + L""; + xstring OnGetType() + { + xwin w = GetFrameWindow(); + xtreeview tv_folder = w.GetControl(L"DevExplorer"); + HTREEITEM hItem = (HTREEITEM)GetWinParam(); + KXMLDOMElement e = tv_folder.GetItemData(hItem); + xstring str = e.getAttribute(L"type"); return str; - } - - int SetAgent(xstring node) - { - auto n = GetElement().selectSingleNode(L"agent/projects/node()[1]"); - if (n) - { - xstring agent = n.xml(); - xstring xfNodeAgentArea = L"agentarea"; - xnode anode = GetAgentNode(xfNodeAgentArea); - SetAgentNode(anode, agent); - } - - return 1; - } - - HTREEITEM GetProjectItem(HTREEITEM hItem) - { - HTREEITEM pitem = hItem; - xstring typ; - while (true) - { - typ = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).tagName(); - if (typ == L"project")break; - pitem = tv_folder.GetParentItem(pitem); - if (!pitem )break; - } - return pitem; - } - - HTREEITEM GetP2Item(HTREEITEM hItem) - { - HTREEITEM hDomainItem; - HTREEITEM hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - return hP2Item; - } - - //树展开事件 - int OnTreeExpanding(TEvent* evt, HTREEITEM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - return 1; - } - - xstring GetData(HTREEITEM hItem) - { - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - if (!tv_folder.GetParentItem(hItem)) - { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - xaserverarg arg; - arg.AddArg(L"project.guid", prjguid); - if (hP2Item) - { - if (hP2Item != hItem) - { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"guid", guid); - } - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - xstring guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - } - else if (hDomainItem) - { - KXMLDOMElement d = tv_folder.GetItemData(hDomainItem); - xstring guid = d.getAttribute(L"guid"); - arg.AddArg(L"domain.guid", guid); - } - xstring str = ProcessDevCmd(L"getobject", arg.GetString()); - return str + L""; - } - else - return L""; - } - - int OnTreeDblClick(TEvent* evt, int param) - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 0; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode(L"//editor[@filetype='" + typ + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } - return 1; } //命令发布函数 int OnCmdDispatch(xstring comdid) { - // - if (comdid == L"xmSqlWatch") + xstring content; + xsedit xs = GetControl(L"xcontent"); + xs.GetContent(content); + + HCURSOR hCursor = xutil::SetCursorWait(); + if (comdid == L"xmFileSave") { - OpenWindow(L"dev:xpage[sqlWatch.vx]"); - return 1; + //save xml content + SaveContent(content); } - if (comdid == L"xmCheckUrl") + else if (comdid == L"xmValid") { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"info", url); - } - else if (comdid == L"xmClearBuffer") - { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"clearbuffer", url); - } - if (comdid == L"xmNewFolder" || comdid == L"xmNewProject" || comdid == L"xmNewFile") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - if (comdid == L"xmNewProject" && prjguid != L"") return 1; - if (comdid == L"xmNewFile" && !tv_folder.GetParentItem(hItem)) return 1; - - xaserverarg arg; - if (comdid == L"xmNewProject") - OpenWindow(L"dev:xpage[XDevProjectDlg.xpage]", arg); - else if (comdid == L"xmNewFolder") - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - else - OpenWindow(L"dev:xpage[XDevFileDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - arg.SetArg(L"project.guid", prjguid); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem)) + xml x ; + if (!x.loadXML(content)) { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - e = tv_folder.GetItemData(hItem); - if (hP2Item) - { - if (hP2Item != hItem) + KXMLDOMParseError pError = x.parseError(); + if (pError) { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"parent.guid", guid); + xstring str = pError.srcText(); + xstring sError = L"\r\nXML错误: " + str.trim() + L"\r\n"; + int s = pError.errorCode(); + sError += L" 代码: " + xstring(s) + L"\r\n"; + s = pError.line(); + sError += L" 位置: 第" + xstring(s) + L"行,L"; + s = pError.linepos(); + sError += L"第" + xstring(s) + L"列" + L"\r\n"; + str = pError.reason(); + sError += L" 原因: " + str; + trace(sError); } - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - xstring guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - } - else if (hDomainItem) - { - KXMLDOMElement d = tv_folder.GetItemData(hDomainItem); - xstring guid = d.getAttribute(L"guid"); - arg.AddArg(L"domain.guid", guid); - } - - - if (hP2Item) - { - if (comdid == L"xmNewFolder") + else { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"15"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); + trace(L"XML 错误"); } + return -1; } - else + /*xstring sType = OnGetType(); + if (sType == L"xml.xsd") { - if (comdid == L"xmNewFolder") - { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"17"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); - } - } - - xstring str = ProcessDevCmd(L"addfolder", arg.GetString()); - if (str != L"") - { - xml x; - x.loadXML(str); - auto e1 = x.documentElement(); - e.appendChild(e1); - int himage = xstring(e1.getAttribute(L"image")).toInt(); - tv_folder.InsertChildItem(hItem, arg.GetArgString(L"name"), e1, himage); - } - - return 1; + xstring sError; + x.ValidSchema(content, &sError); + trace(sError); + }*/ } - else if (comdid == L"xmDeleteObject") + else if (comdid == L"xmEditFind") { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - - int MB_YESNO = 0x00000004; - int IDYES = 6; - - if (MessageBox(GetHWND(), L"确认删除指定的项", L"提示", MB_YESNO) != IDYES) return 1; - ProcessDevCmd(L"deletefolder", arg.GetString()); - tv_folder.DeleteItem(hItem); - - return 1; + OpenWindow(L"dev:xpage[xcode.finddlg]"); } - else if (comdid == L"xmUpdateProject") + else if (comdid == L"xmEditReplace") { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem && pitem != hItem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - //trace(p.xml); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - - xstring str; - str = e.getAttribute(L"caption"); - arg.AddArg(L"name", str); - - str = e.getAttribute(L"desc"); - arg.AddArg(L"desc", str); - - str = e.getAttribute(L"uri"); - arg.AddArg(L"uri", str); - - str = e.getAttribute(L"guid"); - arg.AddArg(L"guid", str); - - str = e.getAttribute(L"src"); - arg.AddArg(L"src", str); - - str = e.getAttribute(L"type"); - arg.AddArg(L"type", str); - - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - ProcessDevCmd(L"updatefolder", arg.GetString()); - str = arg.GetArgString(L"name"); - e.setAttribute(L"caption", str); - - str = arg.GetArgString(L"desc"); - e.setAttribute(L"desc", str); - - str = arg.GetArgString(L"uri"); - e.setAttribute(L"uri", str); - - tv_folder.SetItemLabel(hItem, arg.GetArgString(L"name")); - - return 1; + OpenWindow(L"dev:xpage[xcode.replacedlg]"); } - else if (comdid == L"xmEditObject") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode((xstring)L"//editor[@filetype='" + L"xml" + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } - - } + xutil::RestoreCursor(hCursor); return 0; } - //树选择事件 - int OnTreeSelChanged(TEvent* evt, LPARAM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - //root node - KXMLDOMElement e = tv_folder.GetItemData(hItem); - SetAgent(L"projects"); - - return 1; - } - //命令处理事件 - int OnXCommand(TEvent* evt, int param) + int OnXCommand(TEvent* evt,LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } - int OnSelChanged(TEvent* evt, int param) - { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - - //状态栏显示完成路径 - HTREEITEM hitem = tv_folder.GetSelectedItem(); - xstring path = L"" + tv_folder.GetItemLabel(hitem); - while (tv_folder.GetParentItem(hitem)) - { - hitem = tv_folder.GetParentItem(hitem); - xstring p = L"" + tv_folder.GetItemLabel(hitem); - path = p + L"\\" + path; - } - xcontrol xc = GetControl(L"statusbar"); - xc.SetText(L"" + path); - /* - if(sheet<s) - { - param p=layer.GetParam(sheet); - int hitem = p; - onPrintPath(hitem); - } - */ - - return 1; - } - int OnSelChangedEx(TEvent* evt, int param) - { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - int k = sheet_Count; - if (k < s) - { - void* p = nullptr; - layer.SetParam(s - 1, p); - } - sheet_Count = s; - return 1; - } int OnAttachEvent() { //绑定工具条点击事件 - AttachEvent(L"WM_XCOMMAND", (FEvent)&XDeveloper::OnXCommand); - AttachEvent(L"DevExplorer", L"NM_DBLCLK", (FEvent)&XDeveloper::OnTreeDblClick); - //获得树的展开事件 - //AttachEvent(L"DevExplorer", L"TVN_ITEMEXPANDING",(FEvent)&XDeveloper::OnTreeExpanding); - //获得树的选择事件 - AttachEvent(L"DevExplorer", L"TVN_SELCHANGED", (FEvent)&XDeveloper::OnTreeSelChanged); - //改变页签 - //AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET",(FEvent)&XDeveloper::OnSelChanged); - AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET", (FEvent)&XDeveloper::OnSelChangedEx); - - return 1; + AttachEvent(L"WM_XCOMMAND", (FEvent)&XDevEditXRuler::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXRuler::OnSetFocus); } int OnInitial() { + SetAgent(); + OnAttachEvent(); return 1; @@ -549,12 +154,8 @@ int onload() { - sheet_Count = -1; OnInitial(); - - tv_folder = GetControl(L"DevExplorer"); - mle_output = GetControl(L"output"); - SetAgent(L"projects"); + LoadData(); return 1; } diff --git a/jrj/xframe/devloper/XDevEditXWorkNode.cpp b/jrj/xframe/devloper/XDevEditXWorkNode.cpp index f26ab17..a62cce0 100644 --- a/jrj/xframe/devloper/XDevEditXWorkNode.cpp +++ b/jrj/xframe/devloper/XDevEditXWorkNode.cpp @@ -4,544 +4,149 @@ #include <wobject/xaserverarg.hpp> #include <xcontrol/xtreeview.hpp> #include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <xcontrol/xsedit.hpp> +#include <xcontrol/xcombobox.hpp> +#include "XDevEditPage.hpp" using xml = KXMLDOMDocument; -class export XDeveloper : public xwin +class export XDevEditXRuler : public XDevEditPage { public: - XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} + XDevEditXRuler(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {} public: - static XDeveloper* CreateInstance(void* implPtr, void* hWnd) + static XDevEditXRuler* CreateInstance(void* implPtr, void* hWnd) { - XDeveloper* pWin = new XDeveloper(implPtr, (HWND)hWnd); + XDevEditXRuler* pWin = new XDevEditXRuler(implPtr, (HWND)hWnd); return pWin; } private: // - xtreeview tv_folder; - xcontrol mle_output; - int sheet_Count; -public: - int trace(xstring msg) + //xdwgrid dw_list; + + xnode m_agentNode; //Agent Condition + xstring m_agentCond; //Agent Node + int SetAgent() { - xstring t = mle_output.GetText(); - mle_output.SetText(t + msg); + /*xstring xfNodeAgentArea = L"agentarea"; + xnode anode = GetAgentNode(xfNodeAgentArea); + var xframeElement = GetElement(); + var agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*"); + if(agent) + { + xstring s = agent.xml; + m_agentNode = SetAgentNodeContent (anode,s); + }*/ return 1; } - int OnProcessUrl(xstring kind, xstring url) + //焦点激活处理函数 + int OnSetFocus(TEvent* evt,LPARAM param) { - xml x ; - xaserverarg xarg; - xarg.AddArg(L"url", url); - xarg.AddArg(L"kind", kind); - xaserver::ExecXQuery(GetServerUrl(), L"[service.url.info.xq]", xarg.GetString(), x); - alert(x.xml()); + SetAgent(); + + //重置工具条 return 1; } - xstring ProcessDevCmd(xstring cmd, xstring ext) + int LoadData() { - int nlen = 0; - BYTE* pdata=nullptr; - xaserver::ProcessCmd(GetServerUrl(),( L"uri.hxsoft.com/xaserver/developer " + cmd).c_str(), ext.c_str(), pdata, nlen); + if (!GetWinParam()) return 1; + xstring content = GetData(); + if (content != L"") + { + xsedit xs = GetControl(L"xcontent"); + xs.LoadContent(content,L".xml"); + } + return 1; + } - xstring str = ((LPARAM)pdata) + L""; + xstring OnGetType() + { + xwin w = GetFrameWindow(); + xtreeview tv_folder = w.GetControl(L"DevExplorer"); + HTREEITEM hItem = (HTREEITEM)GetWinParam(); + KXMLDOMElement e = tv_folder.GetItemData(hItem); + xstring str = e.getAttribute(L"type"); return str; - } - - int SetAgent(xstring node) - { - auto n = GetElement().selectSingleNode(L"agent/projects/node()[1]"); - if (n) - { - xstring agent = n.xml(); - xstring xfNodeAgentArea = L"agentarea"; - xnode anode = GetAgentNode(xfNodeAgentArea); - SetAgentNode(anode, agent); - } - - return 1; - } - - HTREEITEM GetProjectItem(HTREEITEM hItem) - { - HTREEITEM pitem = hItem; - xstring typ; - while (true) - { - typ = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).tagName(); - if (typ == L"project")break; - pitem = tv_folder.GetParentItem(pitem); - if (!pitem )break; - } - return pitem; - } - - HTREEITEM GetP2Item(HTREEITEM hItem) - { - HTREEITEM hDomainItem; - HTREEITEM hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - return hP2Item; - } - - //树展开事件 - int OnTreeExpanding(TEvent* evt, HTREEITEM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - return 1; - } - - xstring GetData(HTREEITEM hItem) - { - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - if (!tv_folder.GetParentItem(hItem)) - { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - xaserverarg arg; - arg.AddArg(L"project.guid", prjguid); - if (hP2Item) - { - if (hP2Item != hItem) - { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"guid", guid); - } - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - xstring guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - } - else if (hDomainItem) - { - KXMLDOMElement d = tv_folder.GetItemData(hDomainItem); - xstring guid = d.getAttribute(L"guid"); - arg.AddArg(L"domain.guid", guid); - } - xstring str = ProcessDevCmd(L"getobject", arg.GetString()); - return str + L""; - } - else - return L""; - } - - int OnTreeDblClick(TEvent* evt, int param) - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 0; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode(L"//editor[@filetype='" + typ + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } - return 1; } //命令发布函数 int OnCmdDispatch(xstring comdid) { - // - if (comdid == L"xmSqlWatch") + xstring content; + xsedit xs = GetControl(L"xcontent"); + xs.GetContent(content); + + HCURSOR hCursor = xutil::SetCursorWait(); + if (comdid == L"xmFileSave") { - OpenWindow(L"dev:xpage[sqlWatch.vx]"); - return 1; + //save xml content + SaveContent(content); } - if (comdid == L"xmCheckUrl") + else if (comdid == L"xmValid") { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"info", url); - } - else if (comdid == L"xmClearBuffer") - { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"clearbuffer", url); - } - if (comdid == L"xmNewFolder" || comdid == L"xmNewProject" || comdid == L"xmNewFile") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - if (comdid == L"xmNewProject" && prjguid != L"") return 1; - if (comdid == L"xmNewFile" && !tv_folder.GetParentItem(hItem)) return 1; - - xaserverarg arg; - if (comdid == L"xmNewProject") - OpenWindow(L"dev:xpage[XDevProjectDlg.xpage]", arg); - else if (comdid == L"xmNewFolder") - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - else - OpenWindow(L"dev:xpage[XDevFileDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - arg.SetArg(L"project.guid", prjguid); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem)) + xml x ; + if (!x.loadXML(content)) { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - e = tv_folder.GetItemData(hItem); - if (hP2Item) - { - if (hP2Item != hItem) + KXMLDOMParseError pError = x.parseError(); + if (pError) { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"parent.guid", guid); + xstring str = pError.srcText(); + xstring sError = L"\r\nXML错误: " + str.trim() + L"\r\n"; + int s = pError.errorCode(); + sError += L" 代码: " + xstring(s) + L"\r\n"; + s = pError.line(); + sError += L" 位置: 第" + xstring(s) + L"行,L"; + s = pError.linepos(); + sError += L"第" + xstring(s) + L"列" + L"\r\n"; + str = pError.reason(); + sError += L" 原因: " + str; + trace(sError); } - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - xstring guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - } - else if (hDomainItem) - { - KXMLDOMElement d = tv_folder.GetItemData(hDomainItem); - xstring guid = d.getAttribute(L"guid"); - arg.AddArg(L"domain.guid", guid); - } - - - if (hP2Item) - { - if (comdid == L"xmNewFolder") + else { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"15"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); + trace(L"XML 错误"); } + return -1; } - else + /*xstring sType = OnGetType(); + if (sType == L"xml.xsd") { - if (comdid == L"xmNewFolder") - { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"17"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); - } - } - - xstring str = ProcessDevCmd(L"addfolder", arg.GetString()); - if (str != L"") - { - xml x; - x.loadXML(str); - auto e1 = x.documentElement(); - e.appendChild(e1); - int himage = xstring(e1.getAttribute(L"image")).toInt(); - tv_folder.InsertChildItem(hItem, arg.GetArgString(L"name"), e1, himage); - } - - return 1; + xstring sError; + x.ValidSchema(content, &sError); + trace(sError); + }*/ } - else if (comdid == L"xmDeleteObject") + else if (comdid == L"xmEditFind") { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - - int MB_YESNO = 0x00000004; - int IDYES = 6; - - if (MessageBox(GetHWND(), L"确认删除指定的项", L"提示", MB_YESNO) != IDYES) return 1; - ProcessDevCmd(L"deletefolder", arg.GetString()); - tv_folder.DeleteItem(hItem); - - return 1; + OpenWindow(L"dev:xpage[xcode.finddlg]"); } - else if (comdid == L"xmUpdateProject") + else if (comdid == L"xmEditReplace") { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem && pitem != hItem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - //trace(p.xml); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - - xstring str; - str = e.getAttribute(L"caption"); - arg.AddArg(L"name", str); - - str = e.getAttribute(L"desc"); - arg.AddArg(L"desc", str); - - str = e.getAttribute(L"uri"); - arg.AddArg(L"uri", str); - - str = e.getAttribute(L"guid"); - arg.AddArg(L"guid", str); - - str = e.getAttribute(L"src"); - arg.AddArg(L"src", str); - - str = e.getAttribute(L"type"); - arg.AddArg(L"type", str); - - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - ProcessDevCmd(L"updatefolder", arg.GetString()); - str = arg.GetArgString(L"name"); - e.setAttribute(L"caption", str); - - str = arg.GetArgString(L"desc"); - e.setAttribute(L"desc", str); - - str = arg.GetArgString(L"uri"); - e.setAttribute(L"uri", str); - - tv_folder.SetItemLabel(hItem, arg.GetArgString(L"name")); - - return 1; + OpenWindow(L"dev:xpage[xcode.replacedlg]"); } - else if (comdid == L"xmEditObject") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode((xstring)L"//editor[@filetype='" + L"xml" + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } - - } + xutil::RestoreCursor(hCursor); return 0; } - //树选择事件 - int OnTreeSelChanged(TEvent* evt, LPARAM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - //root node - KXMLDOMElement e = tv_folder.GetItemData(hItem); - SetAgent(L"projects"); - - return 1; - } - //命令处理事件 - int OnXCommand(TEvent* evt, int param) + int OnXCommand(TEvent* evt,LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } - int OnSelChanged(TEvent* evt, int param) - { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - - //状态栏显示完成路径 - HTREEITEM hitem = tv_folder.GetSelectedItem(); - xstring path = L"" + tv_folder.GetItemLabel(hitem); - while (tv_folder.GetParentItem(hitem)) - { - hitem = tv_folder.GetParentItem(hitem); - xstring p = L"" + tv_folder.GetItemLabel(hitem); - path = p + L"\\" + path; - } - xcontrol xc = GetControl(L"statusbar"); - xc.SetText(L"" + path); - /* - if(sheet<s) - { - param p=layer.GetParam(sheet); - int hitem = p; - onPrintPath(hitem); - } - */ - - return 1; - } - int OnSelChangedEx(TEvent* evt, int param) - { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - int k = sheet_Count; - if (k < s) - { - void* p = nullptr; - layer.SetParam(s - 1, p); - } - sheet_Count = s; - return 1; - } int OnAttachEvent() { //绑定工具条点击事件 - AttachEvent(L"WM_XCOMMAND", (FEvent)&XDeveloper::OnXCommand); - AttachEvent(L"DevExplorer", L"NM_DBLCLK", (FEvent)&XDeveloper::OnTreeDblClick); - //获得树的展开事件 - //AttachEvent(L"DevExplorer", L"TVN_ITEMEXPANDING",(FEvent)&XDeveloper::OnTreeExpanding); - //获得树的选择事件 - AttachEvent(L"DevExplorer", L"TVN_SELCHANGED", (FEvent)&XDeveloper::OnTreeSelChanged); - //改变页签 - //AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET",(FEvent)&XDeveloper::OnSelChanged); - AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET", (FEvent)&XDeveloper::OnSelChangedEx); - - return 1; + AttachEvent(L"WM_XCOMMAND", (FEvent)&XDevEditXRuler::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXRuler::OnSetFocus); } int OnInitial() { + SetAgent(); + OnAttachEvent(); return 1; @@ -549,12 +154,8 @@ int onload() { - sheet_Count = -1; OnInitial(); - - tv_folder = GetControl(L"DevExplorer"); - mle_output = GetControl(L"output"); - SetAgent(L"projects"); + LoadData(); return 1; } diff --git a/jrj/xframe/kobject/kutil.hpp b/jrj/xframe/kobject/kutil.hpp index 3dfc512..7df58f2 100644 --- a/jrj/xframe/kobject/kutil.hpp +++ b/jrj/xframe/kobject/kutil.hpp @@ -30,4 +30,9 @@ namespace Hxsoft { namespace XUtil{ LPTSTR FormatDecimalString(LPTSTR str, LPTSTR format, bool& bfree); + LPTSTR ToXmlTextAndStartSpace(LPCTSTR str); + LPTSTR ToHtmlTextAndStartSpace(LPCTSTR str); + LPTSTR ToXmlText(LPCTSTR str); + LPTSTR ToHtmlText(LPCTSTR str); + LPTSTR UnXMLText(LPCTSTR str); }} \ No newline at end of file diff --git a/jrj/xframe/wobject/xutil.hpp b/jrj/xframe/wobject/xutil.hpp index 5a702e7..7d2a7ad 100644 --- a/jrj/xframe/wobject/xutil.hpp +++ b/jrj/xframe/wobject/xutil.hpp @@ -58,6 +58,34 @@ return Hxsoft::XUtil::FormatDecimalString(str, format, bfree); } + static xstring ToXmlTextAndStartSpace(xstring str) + { + wchar_t* xmlStr = Hxsoft::XUtil::ToXmlTextAndStartSpace(str.c_str()); + return xmlStr ? xmlStr : str; + } + + static xstring ToHtmlTextAndStartSpace(xstring str) + { + wchar_t* htmlStr = Hxsoft::XUtil::ToHtmlTextAndStartSpace(str.c_str()); + return htmlStr ? htmlStr : str; + } + + static xstring ToXmlText(xstring str) + { + wchar_t* xmlStr = Hxsoft::XUtil::ToXmlText(str.c_str()); + return xmlStr? xmlStr : str; + } + static xstring ToHtmlText(xstring str) + { + wchar_t* htmlStr = Hxsoft::XUtil::ToHtmlText(str.c_str()); + return htmlStr? htmlStr : str; + } + static xstring UnXMLText(xstring str) + { + wchar_t* xmlStr = Hxsoft::XUtil::UnXMLText(str.c_str()); + return xmlStr? xmlStr:str; + } + public: static xstring GetModulePath() { diff --git a/jrj/xframe/xcontrol/xcell.hpp b/jrj/xframe/xcontrol/xcell.hpp index 92911c7..f3dd1e9 100644 --- a/jrj/xframe/xcontrol/xcell.hpp +++ b/jrj/xframe/xcontrol/xcell.hpp @@ -3,6 +3,7 @@ #include "wobject/xcontrol.hpp" #include "kobject/kcell.hpp" #include "wobject/xurl.hpp" +#include "wobject/xutil.hpp" using kcell = Hxsoft::XFrame::XOffice::XCell::IXCell; class xcell : public xcontrol @@ -300,6 +301,11 @@ { return GetKCell()->SetFixedCols(value); } + + xstring GetItemXmlString(int ARow, int ACol) + { + return xutil::ToXmlText(GetKCell()->GetItemString(ARow, ACol)); + } }; diff --git a/jrj/xframe/xcontrol/xdwgrid.hpp b/jrj/xframe/xcontrol/xdwgrid.hpp index f2c0d3b..16c97b0 100644 --- a/jrj/xframe/xcontrol/xdwgrid.hpp +++ b/jrj/xframe/xcontrol/xdwgrid.hpp @@ -572,6 +572,24 @@ DwRetrieve(ServerUrl, src, arg.GetString()); return 1; } + + xstring GetItemDisplayXmlString(int nRow, int nColumn, kdwgrid::DWBuffer dwBuffer = kdwgrid::dbuf_normal) + { + return xutil::ToXmlText(getKReport()->GetItemDisplayString(nRow, nColumn, dwBuffer)); + } + xstring GetItemDisplayXmlString(int nRow, xstring ColumnName, kdwgrid::DWBuffer dwBuffer = kdwgrid::dbuf_normal) + { + return xutil::ToXmlText(getKReport()->GetItemDisplayString(nRow, ColumnName.c_str(), dwBuffer)); + } + xstring GetItemXmlString(int nRow, int nColumn, kdwgrid::DWBuffer dwBuffer = kdwgrid::dbuf_normal) + { + return xutil::ToXmlText(getKReport()->GetItemString_(nRow, nColumn, dwBuffer)); + } + xstring GetItemXmlString(int nRow, xstring ColumnName, kdwgrid::DWBuffer dwBuffer = kdwgrid::dbuf_normal) + { + return xutil::ToXmlText(getKReport()->GetItemString_(nRow, ColumnName.c_str(), dwBuffer)); + } + }; diff --git a/jrj/xframe/xcontrol/xdwtable.hpp b/jrj/xframe/xcontrol/xdwtable.hpp index 78c4ca5..d28d1ce 100644 --- a/jrj/xframe/xcontrol/xdwtable.hpp +++ b/jrj/xframe/xcontrol/xdwtable.hpp @@ -559,6 +559,13 @@ return 0; } + xstring GetItemXmlString(int nRow, int nColumn, kdwtable::DWBuffer dwBuffer = kdwtable::dbuf_normal) { + return xutil::ToXmlText(GetDwTable()->GetItemString_(nRow, nColumn, dwBuffer)); + } + xstring GetItemXmlString(int nRow, LPCTSTR ColumnName, kdwtable::DWBuffer dwBuffer = kdwtable::dbuf_normal) { + return xutil::ToXmlText(GetDwTable()->GetItemString_(nRow, ColumnName, dwBuffer)); + } + }; -- Gitblit v1.9.3