#include #include #include #include #include #include #include using xml = KXMLDOMDocument; class export XDevEditPage : public xwin { xstring ProcessDevCmd(xstring cmd, xstring ext) { //trace(ext); int nlen = 0; BYTE* pdata; xaserver::ProcessCmd(GetServerUrl(), (L"uri.hxsoft.com/xaserver/developer " + cmd).c_str(), ext, pdata, nlen); if (nlen > 0) { xstring str = ((LPARAM)pdata); return str.mid(1, 9999999); } else return L""; } HTREEITEM GetProjectItem(xtreeview tv_folder, 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 <= 0)break; } return pitem; } HTREEITEM GetP2Item(xtreeview tv_folder, HTREEITEM hItem ) { HTREEITEM hDomainItem; HTREEITEM hP2Item = hItem; while (true) { hDomainItem = tv_folder.GetParentItem(hP2Item); if (tv_folder.GetParentItem(hDomainItem) <= 0)break; hP2Item = hDomainItem; } return hP2Item; } xstring GetData(int bcode) { xwin w = GetFrameWindow(); xtreeview tv_folder = w.GetControl(L"DevExplorer"); HTREEITEM hItem = (HTREEITEM)GetWinParam(); KXMLDOMElement e = tv_folder.GetItemData(hItem); xstring node = e.tagName(); if (node == L"File" || node == L"file") { xstring caption = e.getAttribute(L"caption"); SetWindowText(GetHWND(), caption); HTREEITEM hP2Item = 0; HTREEITEM hDomainItem = 0; if (tv_folder.GetParentItem(hItem) <= 0) { hDomainItem = hItem; } else { hP2Item = GetP2Item(tv_folder, hItem); hDomainItem = tv_folder.GetParentItem(hP2Item); } //find project folder xstring prjguid = L""; HTREEITEM pitem = GetProjectItem(tv_folder, 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); } if (bcode)arg.AddArg(L"iscode", L"yes"); return ProcessDevCmd(L"getobject", arg.GetString()); } else return L""; } xstring GetData() { return GetData(0); } int SaveContentEx(xstring content, int bcode) { xwin w = GetFrameWindow(); xtreeview tv_folder = w.GetControl(L"DevExplorer"); HTREEITEM hItem = (HTREEITEM)GetWinParam(); 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) <= 0) { hDomainItem = hItem; } else { hP2Item = GetP2Item(tv_folder, hItem); hDomainItem = tv_folder.GetParentItem(hP2Item); } //find project folder xstring prjguid = L""; HTREEITEM pitem = GetProjectItem(tv_folder, 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); } arg.AddArg(L"content", content); if (bcode)arg.AddArg(L"iscode", L"yes"); ProcessDevCmd(L"saveobject", arg.GetString()); } return 1; } int SaveContent(xstring content) { return SaveContentEx(content, 0); } };