From 9ec063cf34b6cd13f21c3438330992f03c8665ac Mon Sep 17 00:00:00 2001
From: xj qian <qianxj15@sina.com>
Date: 星期四, 26 十二月 2024 10:17:08 +0800
Subject: [PATCH] update

---
 jrj/xframe/devloper/XDevEditPage.hpp |  139 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 139 insertions(+), 0 deletions(-)

diff --git a/jrj/xframe/devloper/XDevEditPage.hpp b/jrj/xframe/devloper/XDevEditPage.hpp
index 23ade44..5f615e1 100644
--- a/jrj/xframe/devloper/XDevEditPage.hpp
+++ b/jrj/xframe/devloper/XDevEditPage.hpp
@@ -6,6 +6,7 @@
 #include <xcontrol/xlayersheet.hpp>
 #include <xcontrol/xcombobox.hpp>
 #include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp>
+#include <win32/xfile.hpp>
 
 using xml = KXMLDOMDocument;
 class export XDevEditPage : public xwin
@@ -176,4 +177,142 @@
 	{
 		return publiccode::GetGuid();
 	}
+
+	int ImportItem(HTREEITEM hItem, KXMLDOMElement ele, xstring prjguid, xstring domainguid, xstring rootguid)
+	{
+		xwin w = GetFrameWindow();
+		xtreeview tv_folder = w.GetControl(L"DevExplorer");
+		xstring caption = ele.getAttribute(L"src");
+		xstring guid = ((KXMLDOMElement)tv_folder.GetItemData(hItem)).getAttribute(L"guid");
+		xstring typ = ele.tagName();
+		KXMLDOMElement e = tv_folder.GetItemData(hItem);
+
+
+		xaserverarg arg;
+		KXMLDOMNode node = e.selectSingleNode(typ + L"[@caption='" + caption + L"']");
+		if (!node)
+		{
+			//add file folder
+			arg.AddArg(L"image", ele.getAttribute(L"image"));
+			//arg.AddArg(L"guid", ele.getAttribute(L"guid"));
+			arg.AddArg(L"folder", ele.tagName());
+			arg.AddArg(L"type", ele.getAttribute(L"type"));
+			arg.AddArg(L"desc", ele.getAttribute(L"desc"));
+			arg.AddArg(L"uri", ele.getAttribute(L"uri"));
+			arg.AddArg(L"src", ele.getAttribute(L"src"));
+			arg.AddArg(L"name", ele.getAttribute(L"caption"));
+
+			arg.AddArg(L"parent.guid", guid);
+			arg.AddArg(L"project.guid", prjguid);
+			arg.AddArg(L"domain.guid", domainguid);
+			arg.AddArg(L"root.guid", rootguid);
+
+			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();
+				HTREEITEM hNewItem = tv_folder.InsertChildItem(hItem, arg.GetArgString(L"name"), e1, himage);
+
+
+				int GENERIC_READ = 0x80000000;
+				int GENERIC_WRITE = 0x40000000;
+				int FILE_SHARE_READ = 0x00000001;
+				int FILE_SHARE_WRITE = 0x00000002;
+				int OPEN_EXISTING = 3;
+				int FILE_ATTRIBUTE_ARCHIVE = 0x00000020;
+				HANDLE hFile = xfile::CreateFile(L"D:\\jrjhome\\developer-yh\\projects\\mherp.com.cn\\前端策略\works\\供应链\\" + sTemplName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
+				if (hFile > 0)
+				{
+					//int GMEM_MOVEABLE=0x0002;
+					//int GMEM_ZEROINIT=0x0040;
+					//int MEMSIZE;
+					//int hMemory = GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT,MEMSIZE);
+					//int pMemory = GlobalLock(hMemory);
+					//int SizeReadWrite;
+					//xwin::ReadFile(hFile,pMemory,MEMSIZE - 1,SizeReadWrite,0);
+					DWORD FileSizeHigh = 0;
+					int filesize = xfile::GetFileSize(hFile,FileSizeHigh);
+					char * buffer = new char[filesize+2];
+					DWORD readsize;
+					xfile:ReadFile(hFile, buffer, filesize, &readsize, 0);
+					xfile::CloseHandle(hFile);
+				}
+
+
+				int lens;
+				KXMLDOMNodeList nodes = ele.selectNodes(L"node()");
+				lens = nodes.length();
+				for (int i = 0; i < lens; i++)
+				{
+					KXMLDOMElement child = nodes.item(i);
+					ImportItem(hNewItem, child, prjguid, domainguid, rootguid);
+				}
+			}
+			return 1;
+		}
+		return 1;
+	}
+
+	int ImportItems(xstring srcfile, xstring id)
+	{
+		xwin w = GetFrameWindow();
+		xtreeview tv_folder = w.GetControl(L"DevExplorer");
+		HTREEITEM hItem = tv_folder.GetSelectedItem();
+		if (!hItem) return 1;
+
+		xml src;
+		src.load(srcfile);
+		xstring path = L"//*[(name()='file' or name()='folder') and @src='" + id + L"']";
+		const wchar_t* str = src.xml();
+		KXMLDOMElement srcele = src.selectSingleNode(path);
+		if (!srcele) return 1;
+
+
+		//find project folder
+		xstring prjguid = L"";
+		xstring domainguid = L"";
+		xstring rootguid = L"";
+
+		HTREEITEM pitem = GetProjectItem(tv_folder,hItem);
+		if (pitem && pitem != hItem)
+			prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid");
+
+		HTREEITEM hP2Item = 0;
+		HTREEITEM hDomainItem = 0;
+		KXMLDOMElement e = tv_folder.GetItemData(hItem);
+		if (!tv_folder.GetParentItem(hItem))
+		{
+			hDomainItem = hItem;
+		}
+		else
+		{
+			hP2Item = GetP2Item(tv_folder,hItem);
+			hDomainItem = tv_folder.GetParentItem(hP2Item);
+		}
+
+		if (hP2Item)
+		{
+			KXMLDOMElement p = tv_folder.GetItemData(hP2Item);
+			rootguid = p.getAttribute(L"guid");
+		}
+		if (hDomainItem)
+		{
+			KXMLDOMElement d = tv_folder.GetItemData(hDomainItem);
+			domainguid = d.getAttribute(L"guid");
+		}
+		int lens;
+		KXMLDOMNodeList nodes = srcele.selectNodes(L"node()");
+		lens = nodes.length();
+		for (int i = 0; i < lens; i++)
+		{
+			KXMLDOMElement child = nodes.item(i);
+			ImportItem(hItem, child, prjguid, domainguid, rootguid);
+		}
+
+		return 1;
+	}
 };
\ No newline at end of file

--
Gitblit v1.9.3