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/XDevEditXRuler.cpp | 577 ++++++++------------------------------------------------ 1 files changed, 89 insertions(+), 488 deletions(-) diff --git a/jrj/xframe/devloper/XDevEditXRuler.cpp b/jrj/xframe/devloper/XDevEditXRuler.cpp index f26ab17..a62cce0 100644 --- a/jrj/xframe/devloper/XDevEditXRuler.cpp +++ b/jrj/xframe/devloper/XDevEditXRuler.cpp @@ -4,544 +4,149 @@ #include <wobject/xaserverarg.hpp> #include <xcontrol/xtreeview.hpp> #include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <xcontrol/xsedit.hpp> +#include <xcontrol/xcombobox.hpp> +#include "XDevEditPage.hpp" using xml = KXMLDOMDocument; -class export XDeveloper : public xwin +class export XDevEditXRuler : public XDevEditPage { public: - XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} + XDevEditXRuler(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {} public: - static XDeveloper* CreateInstance(void* implPtr, void* hWnd) + static XDevEditXRuler* CreateInstance(void* implPtr, void* hWnd) { - XDeveloper* pWin = new XDeveloper(implPtr, (HWND)hWnd); + XDevEditXRuler* pWin = new XDevEditXRuler(implPtr, (HWND)hWnd); return pWin; } private: // - xtreeview tv_folder; - xcontrol mle_output; - int sheet_Count; -public: - int trace(xstring msg) + //xdwgrid dw_list; + + 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); + var xframeElement = GetElement(); + var agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*"); + if(agent) + { + xstring s = agent.xml; + m_agentNode = SetAgentNodeContent (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()); + SetAgent(); + + //重置工具条 return 1; } - xstring ProcessDevCmd(xstring cmd, xstring ext) + int LoadData() { - int nlen = 0; - BYTE* pdata=nullptr; - xaserver::ProcessCmd(GetServerUrl(),( L"uri.hxsoft.com/xaserver/developer " + cmd).c_str(), ext.c_str(), pdata, nlen); + if (!GetWinParam()) return 1; + xstring content = GetData(); + if (content != L"") + { + xsedit xs = GetControl(L"xcontent"); + xs.LoadContent(content,L".xml"); + } + return 1; + } - xstring str = ((LPARAM)pdata) + L""; + xstring OnGetType() + { + xwin w = GetFrameWindow(); + xtreeview tv_folder = w.GetControl(L"DevExplorer"); + HTREEITEM hItem = (HTREEITEM)GetWinParam(); + KXMLDOMElement e = tv_folder.GetItemData(hItem); + xstring str = e.getAttribute(L"type"); 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") + xstring content; + xsedit xs = GetControl(L"xcontent"); + xs.GetContent(content); + + HCURSOR hCursor = xutil::SetCursorWait(); + if (comdid == L"xmFileSave") { - OpenWindow(L"dev:xpage[sqlWatch.vx]"); - return 1; + //save xml content + SaveContent(content); } - if (comdid == L"xmCheckUrl") + else if (comdid == L"xmValid") { - 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; - - 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)) + xml x ; + if (!x.loadXML(content)) { - hDomainItem = hItem; - } - else - { - hP2Item = GetP2Item(hItem); - hDomainItem = tv_folder.GetParentItem(hP2Item); - } - - e = tv_folder.GetItemData(hItem); - if (hP2Item) - { - if (hP2Item != hItem) + KXMLDOMParseError pError = x.parseError(); + if (pError) { - xstring guid = e.getAttribute(L"guid"); - arg.AddArg(L"parent.guid", guid); + xstring str = pError.srcText(); + xstring sError = L"\r\nXML错误: " + str.trim() + L"\r\n"; + int s = pError.errorCode(); + sError += L" 代码: " + xstring(s) + L"\r\n"; + s = pError.line(); + sError += L" 位置: 第" + xstring(s) + L"行,L"; + s = pError.linepos(); + sError += L"第" + xstring(s) + L"列" + L"\r\n"; + str = pError.reason(); + sError += L" 原因: " + str; + trace(sError); } - 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") + else { - if (arg.GetArgString(L"image") == L"") - arg.AddArg(L"image", L"15"); - arg.AddArg(L"folder", L"folder"); - arg.AddArg(L"type", L"folder"); + trace(L"XML 错误"); } + return -1; } - else + /*xstring sType = OnGetType(); + if (sType == L"xml.xsd") { - 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); - } - - return 1; + xstring sError; + x.ValidSchema(content, &sError); + trace(sError); + }*/ } - else if (comdid == L"xmDeleteObject") + else if (comdid == L"xmEditFind") { - 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; + OpenWindow(L"dev:xpage[xcode.finddlg]"); } - else if (comdid == L"xmUpdateProject") + else if (comdid == L"xmEditReplace") { - 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); - - 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")); - - return 1; + OpenWindow(L"dev:xpage[xcode.replacedlg]"); } - 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); - } - - } - - } + xutil::RestoreCursor(hCursor); 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); - - return 1; + AttachEvent(L"WM_XCOMMAND", (FEvent)&XDevEditXRuler::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXRuler::OnSetFocus); } int OnInitial() { + SetAgent(); + OnAttachEvent(); return 1; @@ -549,12 +154,8 @@ int onload() { - sheet_Count = -1; OnInitial(); - - tv_folder = GetControl(L"DevExplorer"); - mle_output = GetControl(L"output"); - SetAgent(L"projects"); + LoadData(); return 1; } -- Gitblit v1.9.3