From bd09edf1b441dcc6ab098f277bea86a72c009879 Mon Sep 17 00:00:00 2001 From: xj qian <qianxj15@sina.com> Date: 星期四, 05 十二月 2024 17:30:21 +0800 Subject: [PATCH] update --- jrj/xframe/devloper/XDevEditXOffice.cpp | 613 +++++++++++-------------------------------------------- 1 files changed, 122 insertions(+), 491 deletions(-) diff --git a/jrj/xframe/devloper/XDevEditXOffice.cpp b/jrj/xframe/devloper/XDevEditXOffice.cpp index f26ab17..da7288b 100644 --- a/jrj/xframe/devloper/XDevEditXOffice.cpp +++ b/jrj/xframe/devloper/XDevEditXOffice.cpp @@ -4,544 +4,174 @@ #include <wobject/xaserverarg.hpp> #include <xcontrol/xtreeview.hpp> #include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xsedit.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <xcontrol/xoffice.hpp> +#include "XDevEditPage.hpp" using xml = KXMLDOMDocument; -class export XDeveloper : public xwin +class export XDevEditXOffice : public XDevEditPage { public: - XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} + XDevEditXOffice(void* implPtr, HWND hWnd) : XDevEditPage(implPtr, hWnd) {} public: - static XDeveloper* CreateInstance(void* implPtr, void* hWnd) + static XDevEditXOffice* CreateInstance(void* implPtr, void* hWnd) { - XDeveloper* pWin = new XDeveloper(implPtr, (HWND)hWnd); + XDevEditXOffice* pWin = new XDevEditXOffice(implPtr, (HWND)hWnd); return pWin; } private: // - xtreeview tv_folder; - xcontrol mle_output; - int sheet_Count; -public: - int trace(xstring msg) + //xdwgrid dw_list; + xoffice m_xdoc; + xnode m_agentNode; //Agent Condition + xstring m_agentCond; //Agent Node + int SetAgent() { - xstring t = mle_output.GetText(); - mle_output.SetText(t + msg); + 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 = SetAgentNode(anode,s); + } return 1; } - int OnProcessUrl(xstring kind, xstring url) + //焦点激活处理函数 + int OnSetFocus(TEvent* evt,LPARAM param) { - xml x ; - xaserverarg xarg; - xarg.AddArg(L"url", url); - xarg.AddArg(L"kind", kind); - xaserver::ExecXQuery(GetServerUrl(), L"[service.url.info.xq]", xarg.GetString(), x); - alert(x.xml()); - return 1; - } + SetAgent(); - xstring ProcessDevCmd(xstring cmd, xstring ext) - { - int nlen = 0; - BYTE* pdata=nullptr; - xaserver::ProcessCmd(GetServerUrl(),( L"uri.hxsoft.com/xaserver/developer " + cmd).c_str(), ext.c_str(), pdata, nlen); - - xstring str = ((LPARAM)pdata) + L""; - return str; - } - - int SetAgent(xstring node) - { - auto n = GetElement().selectSingleNode(L"agent/projects/node()[1]"); - if (n) - { - xstring agent = n.xml(); - xstring xfNodeAgentArea = L"agentarea"; - xnode anode = GetAgentNode(xfNodeAgentArea); - SetAgentNode(anode, agent); - } - - return 1; - } - - HTREEITEM GetProjectItem(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 )break; - } - return pitem; - } - - HTREEITEM GetP2Item(HTREEITEM hItem) - { - HTREEITEM hDomainItem; - HTREEITEM hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - return hP2Item; - } - - //树展开事件 - int OnTreeExpanding(TEvent* evt, HTREEITEM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - return 1; - } - - xstring GetData(HTREEITEM hItem) - { - 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)) - { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(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); - } - xstring str = ProcessDevCmd(L"getobject", arg.GetString()); - return str + L""; - } - else - return L""; - } - - int OnTreeDblClick(TEvent* evt, int param) - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 0; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode(L"//editor[@filetype='" + typ + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } + //重置工具条 return 1; } //命令发布函数 int OnCmdDispatch(xstring comdid) { - // - if (comdid == L"xmSqlWatch") + xml x ; + m_xdoc.GetData(x); + xstring content = x.xml(); + if (comdid == L"xmFileSave") { - OpenWindow(L"dev:xpage[sqlWatch.vx]"); + //save xml content + SaveContent(content); return 1; } - if (comdid == L"xmCheckUrl") + else if (comdid == L"xmDevPreview") { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"info", url); - } - else if (comdid == L"xmClearBuffer") - { - xcontrol xc = GetControl(L"url"); - xstring url = xc.GetText(); - return OnProcessUrl(L"clearbuffer", url); - } - if (comdid == L"xmNewFolder" || comdid == L"xmNewProject" || comdid == L"xmNewFile") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - if (comdid == L"xmNewProject" && prjguid != L"") return 1; - if (comdid == L"xmNewFile" && !tv_folder.GetParentItem(hItem)) return 1; - + xml x; + m_xdoc.GetData(x,m_xdoc.GetSelectedSheetIndex()); xaserverarg arg; - if (comdid == L"xmNewProject") - OpenWindow(L"dev:xpage[XDevProjectDlg.xpage]", arg); - else if (comdid == L"xmNewFolder") - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - else - OpenWindow(L"dev:xpage[XDevFileDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - arg.SetArg(L"project.guid", prjguid); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem)) - { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - e = tv_folder.GetItemData(hItem); - if (hP2Item) - { - if (hP2Item != hItem) - { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"parent.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 (hP2Item) - { - if (comdid == L"xmNewFolder") - { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"15"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); - } - } - else - { - if (comdid == L"xmNewFolder") - { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"17"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); - } - } - - 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(); - tv_folder.InsertChildItem(hItem, arg.GetArgString(L"name"), e1, himage); - } - + arg.AddArg(L"xml", x.xml()); + OpenWindow(L"dev:xpage[XDevOfficePreview.xpage]", arg); return 1; } - else if (comdid == L"xmDeleteObject") + else if (comdid == L"content") { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - - int MB_YESNO = 0x00000004; - int IDYES = 6; - - if (MessageBox(GetHWND(), L"确认删除指定的项", L"提示", MB_YESNO) != IDYES) return 1; - ProcessDevCmd(L"deletefolder", arg.GetString()); - tv_folder.DeleteItem(hItem); - + return 1; + xsedit xs = GetControl(L"rptcontent"); + xs.LoadContent(content,L".txt"); + //xs.SetText(content); return 1; } - else if (comdid == L"xmUpdateProject") + else if (comdid == L"content1") { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - //find project folder - xstring prjguid = L""; - HTREEITEM pitem = GetProjectItem(hItem); - if (pitem && pitem != hItem) - prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); - - HTREEITEM hP2Item = 0; - HTREEITEM hDomainItem = 0; - KXMLDOMElement e; - if (!tv_folder.GetParentItem(hItem) ) return 1; - - hP2Item = hItem; - while (true) - { - hDomainItem = tv_folder.GetParentItem(hP2Item); - if (!tv_folder.GetParentItem(hDomainItem))break; - hP2Item = hDomainItem; - } - - e = tv_folder.GetItemData(hItem); - xstring guid = e.getAttribute(L"guid"); - xaserverarg arg; - - arg.SetArg(L"project.guid", prjguid); - arg.AddArg(L"guid", guid); - - KXMLDOMElement p = tv_folder.GetItemData(hP2Item); - //trace(p.xml); - guid = p.getAttribute(L"guid"); - arg.AddArg(L"root.guid", guid); - + xcontrol xs = GetControl(L"rptcontent1"); + SendMessage(xs.GetHWND(), 0x400 + 53,0,4096 * 4096); + xs.SetText(content); + return 1; + } + else if (comdid == L"design") + { + xsedit xs = GetControl(L"rptcontent"); xstring str; - str = e.getAttribute(L"caption"); - arg.AddArg(L"name", str); - - str = e.getAttribute(L"desc"); - arg.AddArg(L"desc", str); - - str = e.getAttribute(L"uri"); - arg.AddArg(L"uri", str); - - str = e.getAttribute(L"guid"); - arg.AddArg(L"guid", str); - - str = e.getAttribute(L"src"); - arg.AddArg(L"src", str); - - str = e.getAttribute(L"type"); - arg.AddArg(L"type", str); - - OpenWindow(L"dev:xpage[XDevItemDlg.xpage]", arg); - if (arg.GetArgString(L"__process") != L"true") return 1; - - ProcessDevCmd(L"updatefolder", arg.GetString()); - str = arg.GetArgString(L"name"); - e.setAttribute(L"caption", str); - - str = arg.GetArgString(L"desc"); - e.setAttribute(L"desc", str); - - str = arg.GetArgString(L"uri"); - e.setAttribute(L"uri", str); - - tv_folder.SetItemLabel(hItem, arg.GetArgString(L"name")); - + xs.GetContent(str); + if (str != L"" && str != content) + { + m_xdoc.LoadTemplate(str,0); + xs.LoadContent(L"",L".txt"); + } + /* + xcontrol xs = GetControl(L"rptcontent1"); + xstring str ; + xstring str = xs.GetText(); + if(str !=L"" && str != content) + { + m_xdoc.LoadTemplate(str,0); + //xs.LoadContent(L"",L".txt"); + }*/ return 1; - } - else if (comdid == L"xmEditObject") - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - xlayersheet layer = GetControl(L"mdilayer"); - int i = 0; - int nIndex = layer.GetSheetCount(); - for (i = 0; i < nIndex; i++) - { - if (hItem == layer.GetParam(i))break; - } - if (i < nIndex) - { - layer.SelectSheet(i); - return 1; - } - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring node = e.tagName(); - if (node == L"File" || node == L"file") - { - //xstring str = ProcessDevCmd(L"getobject",arg.GetString()); - xstring typ = e.getAttribute(L"type"); - - xml x ; - xaserver::FetchXml(GetServerUrl(), L"dev:xpage[XDevEdit.xml]", L"", x); - auto n = x.selectSingleNode((xstring)L"//editor[@filetype='" + L"xml" + L"']/@xpage"); - if (n) - { - xstring xpage = n.text(); - OpenWindow(L"dev:xpage[" + xpage + L"]", (LPARAM)hItem); - //layer. - if (nIndex < layer.GetSheetCount()) - layer.SetParam(nIndex, hItem); - } - - } - } return 0; } - //树选择事件 - int OnTreeSelChanged(TEvent* evt, LPARAM param) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - - //root node - KXMLDOMElement e = tv_folder.GetItemData(hItem); - SetAgent(L"projects"); - - return 1; - } - //命令处理事件 - int OnXCommand(TEvent* evt, int param) + int OnXCommand(TEvent* evt,LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } - int OnSelChanged(TEvent* evt, int param) - { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - - //状态栏显示完成路径 - HTREEITEM hitem = tv_folder.GetSelectedItem(); - xstring path = L"" + tv_folder.GetItemLabel(hitem); - while (tv_folder.GetParentItem(hitem)) - { - hitem = tv_folder.GetParentItem(hitem); - xstring p = L"" + tv_folder.GetItemLabel(hitem); - path = p + L"\\" + path; - } - xcontrol xc = GetControl(L"statusbar"); - xc.SetText(L"" + path); - /* - if(sheet<s) - { - param p=layer.GetParam(sheet); - int hitem = p; - onPrintPath(hitem); - } - */ - - return 1; - } - int OnSelChangedEx(TEvent* evt, int param) - { - xlayersheet layer = GetControl(L"mdilayer"); - LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh; - int sheet = nmtv.nSheet; - int s = layer.GetSheetCount(); - int k = sheet_Count; - if (k < s) - { - void* p = nullptr; - layer.SetParam(s - 1, p); - } - sheet_Count = s; - return 1; - } int OnAttachEvent() { //绑定工具条点击事件 - AttachEvent(L"WM_XCOMMAND", (FEvent)&XDeveloper::OnXCommand); - AttachEvent(L"DevExplorer", L"NM_DBLCLK", (FEvent)&XDeveloper::OnTreeDblClick); - //获得树的展开事件 - //AttachEvent(L"DevExplorer", L"TVN_ITEMEXPANDING",(FEvent)&XDeveloper::OnTreeExpanding); - //获得树的选择事件 - AttachEvent(L"DevExplorer", L"TVN_SELCHANGED", (FEvent)&XDeveloper::OnTreeSelChanged); - //改变页签 - //AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET",(FEvent)&XDeveloper::OnSelChanged); - AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET", (FEvent)&XDeveloper::OnSelChangedEx); + AttachEvent(L"WM_XCOMMAND",(FEvent)&XDevEditXOffice::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXOffice::OnSetFocus); + + return 1; + } + + /* + int OnRetrieve() + { + xstring query=L"[xxx]"; + xml x = new xml; + xaserverarg arg = new xaserverarg; + arg.AddArg(L"xxx",L"xxx"); + if (xaserver::ExecXQuery(GetServerUrl(),query,arg.GetString(),x)!=1) + { + trace(x.GetXmlDoc().text); + return -1; + }else + { + dw_list.Retrieve(x); + dw_list.Redraw(); + } + return 1; + } + */ + + int LoadData() + { + if (!GetWinParam()) return 1; + + m_xdoc = GetControl(L"rpt"); + xstring content = GetData(); + if (content != L"") + { + m_xdoc.LoadTemplate(content,0); + } + else + { + KXMLDOMElement pElement; + xml x ; + auto xdoc = x; + xdoc.loadXML(L"<root/>"); + m_xdoc.LoadTemplate(x,0); + } return 1; } int OnInitial() { + SetAgent(); + OnAttachEvent(); return 1; @@ -549,12 +179,13 @@ int onload() { - sheet_Count = -1; - OnInitial(); + //dw_list = GetControl(L"dw_list"); + //dw_list.SetDataObject(GetServerUrl(),L"dev:sheet[xxx.tpl/List]"); - tv_folder = GetControl(L"DevExplorer"); - mle_output = GetControl(L"output"); - SetAgent(L"projects"); + OnInitial(); + LoadData(); + + //OnRetrieve(); return 1; } -- Gitblit v1.9.3