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