#include <wobject/xstring.hpp>
|
#include <wobject/xwin.hpp>
|
#include <wobject/xaserver.hpp>
|
#include <wobject/xaserverarg.hpp>
|
#include <xcontrol/xtreeview.hpp>
|
#include <xcontrol/xlayersheet.hpp>
|
#include <xcontrol/xcombobox.hpp>
|
|
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);
|
}
|
};
|