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/XDevEditXPage.cpp | 6 ++
jrj/xframe/devloper/devloper.cpp | 2
jrj/xframe/devloper/XDevEditPage.hpp | 139 ++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 147 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
diff --git a/jrj/xframe/devloper/XDevEditXPage.cpp b/jrj/xframe/devloper/XDevEditXPage.cpp
index 7f860b7..8cd4e21 100644
--- a/jrj/xframe/devloper/XDevEditXPage.cpp
+++ b/jrj/xframe/devloper/XDevEditXPage.cpp
@@ -53,6 +53,12 @@
if (comdid == L"xmPreview")
{
}
+ else if (comdid == L"xmImport")
+ {
+ ImportItems(L"file://D:/jrjhome/developer-yh/projects/mherp.com.cn/前端策略/works/供应链.xml",
+ L"Profit3.vface");// L"{94124797-1F4A-4BAC-8839-B5A119895C92}");
+ return 1;
+ }
else if (comdid == L"xmFileSaveEx")
{
xsedit xs = GetControl(L"xpagecontent");
diff --git a/jrj/xframe/devloper/devloper.cpp b/jrj/xframe/devloper/devloper.cpp
index f26ab17..202860e 100644
--- a/jrj/xframe/devloper/devloper.cpp
+++ b/jrj/xframe/devloper/devloper.cpp
@@ -524,6 +524,8 @@
sheet_Count = s;
return 1;
}
+
+
int OnAttachEvent()
{
//绑定工具条点击事件
--
Gitblit v1.9.3