xj qian
2024-12-26 9ec063cf34b6cd13f21c3438330992f03c8665ac
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;
   }
};