From 03ef0b51103c735077c784c7df81ae2bcc1599ab Mon Sep 17 00:00:00 2001
From: LiFan <2308045698@qq.com>
Date: 星期四, 13 二月 2025 18:33:56 +0800
Subject: [PATCH] update

---
 jrj/xframe/devloper/XDevEditXWKDlg.cpp |  539 ++++-------------------------------------------------------
 1 files changed, 37 insertions(+), 502 deletions(-)

diff --git a/jrj/xframe/devloper/XDevEditXWKDlg.cpp b/jrj/xframe/devloper/XDevEditXWKDlg.cpp
index f26ab17..695d497 100644
--- a/jrj/xframe/devloper/XDevEditXWKDlg.cpp
+++ b/jrj/xframe/devloper/XDevEditXWKDlg.cpp
@@ -4,539 +4,77 @@
 #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 dw_xwkdlg : public XDevEditPage
 {
 	public:
-	XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {}
+	dw_xwkdlg(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {}
 public:
-	static XDeveloper* CreateInstance(void* implPtr, void* hWnd)
+	static dw_xwkdlg* CreateInstance(void* implPtr, void* hWnd)
 	{
-		XDeveloper* pWin = new XDeveloper(implPtr, (HWND)hWnd);
+		dw_xwkdlg* pWin = new dw_xwkdlg(implPtr, (HWND)hWnd);
 		return pWin;
 	}
 private:	//
 	xtreeview tv_folder;
-	xcontrol mle_output;
-	int sheet_Count;
+
 public:
-	int trace(xstring msg)
-	{
-		xstring t = mle_output.GetText();
-		mle_output.SetText(t + msg);
-		return 1;
-	}
-
-	int OnProcessUrl(xstring kind, xstring url)
-	{
-		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;
-	}
-
-	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")
+		if (GetWinParam())
 		{
-			OpenWindow(L"dev:xpage[sqlWatch.vx]");
-			return 1;
-		}
-		if (comdid == L"xmCheckUrl")
-		{
-			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))
+			SetArg();
+			xaserverarg arg = GetArg();
+			if (comdid == L"xmDevOk")
 			{
-				hDomainItem = hItem;
-			}
-			else
-			{
-				hP2Item = GetP2Item(hItem);
-				hDomainItem = tv_folder.GetParentItem(hP2Item);
-			}
-
-			e = tv_folder.GetItemData(hItem);
-			if (hP2Item)
-			{
-				if (hP2Item != hItem)
+				HTREEITEM hItem = tv_folder.GetSelectedItem();
+				if (!hItem)
 				{
+					MessageBox(0,L"请选择功能模块!",L"",0);
+					return 1;
+				}
+				KXMLDOMElement e = tv_folder.GetItemData(hItem);
+				//xstring node = e.tagName();
+				xstring node = e.getAttribute(L"name");
+				if (node== L"file")
+				{
+					xstring caption = e.getAttribute(L"caption");
 					xstring guid = e.getAttribute(L"guid");
-					arg.AddArg(L"parent.guid", guid);
+					arg.AddArg(L"guid",L"" + guid);
+					arg.AddArg(L"caption",L"" + caption);
 				}
-				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");
+					MessageBox(0,L"请选择功能模块!",L"",0);
+					return 1;
 				}
 			}
 			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");
-				}
+				arg.AddArg(L"guid",L"");
+				arg.AddArg(L"caption",L"");
 			}
-
-			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;
 		}
-		else if (comdid == L"xmDeleteObject")
-		{
-			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;
-		}
-		else if (comdid == L"xmUpdateProject")
-		{
-			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;
-		}
-		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);
-				}
-
-			}
-
-		}
+		CloseWindow();
 		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 p)
 	{
 		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)&dw_xwkdlg::OnXCommand);
 		return 1;
 	}
 
@@ -549,13 +87,10 @@
 
 	int onload()
 	{
-		sheet_Count = -1;
-		OnInitial();
-
+		SetArg();
 		tv_folder = GetControl(L"DevExplorer");
-		mle_output = GetControl(L"output");
-		SetAgent(L"projects");
-
+		OnInitial();
+		if (GetWinParam()) alert(L"xxx");
 		return 1;
 	}
 };
\ No newline at end of file

--
Gitblit v1.9.3