#include #include #include #include #include #include #include #include #include #include "XDevEditPage.hpp" using xml = KXMLDOMDocument; class export XDevEditAction : public XDevEditPage { public: XDevEditAction(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {} public: static XDevEditAction* CreateInstance(void* implPtr, void* hWnd) { XDevEditAction* pWin = new XDevEditAction(implPtr, (HWND)hWnd); return pWin; } private: // xdwgrid dw_list; xnode m_agentNode; //Agent Condition xstring m_agentCond; //Agent Node public: int SetAgent() { /* xstring xfNodeAgentArea = L"agentarea"; xnode anode = GetAgentNode(xfNodeAgentArea); auto xframeElement = GetElement(); auto agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*"); if(agent) { xstring s = agent.xml; m_agentNode = SetAgentNodeContent (anode,s); } */ return 1; } //½¹µã¼¤»î´¦Àíº¯Êý int OnSetFocus(TEvent* evt,int param) { SetAgent(); //ÖØÖù¤¾ßÌõ return 1; } int LoadData() { if (!GetWinParam()) return 1; xstring content = GetData(); if (content != L"") { xsedit xs = GetControl(L"sqlcontent"); xml x ; x.loadXML(content); KXMLDOMElement e = x.documentElement(); auto ele = e.selectSingleNode(L"datasource/sql"); if (ele) xs.LoadContent(ele.text(), L".sql"); KXMLDOMElement e1 = e.selectSingleNode(L"datasource"); xcontrol xc = GetControl(L"datasource"); xstring v = e1.getAttribute(L"source"); xc.SetText(L"" + v); xc = GetControl(L"linkname"); v = e1.getAttribute(L"link"); xc.SetText(L"" + v); KXMLDOMElement e2 = e.selectSingleNode(L"paras"); xml y ; y.loadXML(e2.xml()); dw_list.Retrieve(y); } return 1; } xstring ProcessDevCmdEx(xstring cmd) { int nlen = 0; BYTE* pdata; xaserver::ProcessCmd(GetServerUrl(),L"uri.hxsoft.com/xaserver/xaction:" + cmd,0,pdata,nlen); if (nlen > 0) { xstring str = ((WCHAR*)pdata); return str.mid(0,9999999); } else return L""; } //ÃüÁî·¢²¼º¯Êý int OnCmdDispatch(xstring comdid) { if (comdid == L"xmFileSave") { HCURSOR hCursor = xutil::SetCursorWait(); xstring content; xsedit xs = GetControl(L"sqlcontent"); xs.GetContent(content); xml x ; x.loadXML(L""); auto root = x; KXMLDOMElement e = root.createElement(L"datasource"); xcontrol xc = GetControl(L"datasource"); xstring v = xc.GetText(); e.setAttribute(L"source", L"" + v); xc = GetControl(L"linkname"); v = xc.GetText(); e.setAttribute(L"link", L"" + v); KXMLDOMElement e1 = root.createElement(L"sql"); e1.settext(content); e.appendChild(e1); root.documentElement().appendChild(e); xml y ; dw_list.DwUpdateTo(y); root.documentElement().appendChild(y.documentElement()); //trace(y.xml()); //trace(x.xml()); SaveContent(x.xml()); xutil::RestoreCursor(hCursor); } else if (comdid == L"xmFilePreview") { xstring content; xsedit xs = GetControl(L"sqlcontent"); xs.GetContent(content); xwin w = GetFrameWindow(); xtreeview tv_folder = w.GetControl(L"DevExplorer"); HTREEITEM hItem = (HTREEITEM)GetWinParam(); KXMLDOMElement e = tv_folder.GetItemData(hItem); xstring guid = e.getAttribute(L"guid"); //uri.hxsoft.com/xaserver/xquery:{70CFB15C-7722-4134-9842-0DE692F4B4FC} xstring data = ProcessDevCmdEx(guid); //trace(data); //xlayersheet tab = GetControl(L"detailArea"); //tab.SelectSheet(1); xsedit xc = GetControl(L"resultcontent"); xc.LoadContent(L"" + data,L".xml"); } else if (comdid == L"argadd") { dw_list.InsertRow(0); } else if (comdid == L"argdelete") { int row = dw_list.GetRow(); if (row < 1) return 0; dw_list.DeleteRow(row); } return 0; } //ÃüÁî´¦Àíʼþ int OnXCommand(TEvent* evt,LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } int OnAttachEvent() { //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent(L"WM_XCOMMAND", (FEvent) & XDevEditAction::OnXCommand); //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditAction::OnSetFocus); return 1; } int OnInitial() { SetAgent(); OnAttachEvent(); return 1; } int onload() { dw_list = GetControl(L"parasgrid"); OnInitial(); LoadData(); return 1; } };