| | |
| | | <ClInclude Include="..\project\viewobject\shoppingcart.view.hpp" /> |
| | | <ClInclude Include="..\project\viewobject\supplier.view.hpp" /> |
| | | <ClInclude Include="..\xframe\adt\xarray.hpp" /> |
| | | <ClInclude Include="..\xframe\devloper\XDevEditPage.cpp" /> |
| | | <ClInclude Include="..\xframe\devloper\XDevEditPage.cpp"> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild> |
| | | </ClInclude> |
| | | <ClInclude Include="..\xframe\kobject\kapp.hpp" /> |
| | | <ClInclude Include="..\xframe\kobject\kbase.hpp" /> |
| | | <ClInclude Include="..\xframe\kobject\kcachemgr.hpp" /> |
| | |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild> |
| | | </ClCompile> |
| | | <ClCompile Include="..\xframe\devloper\XDevEditDbmap.cpp"> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> |
| | | </ClCompile> |
| | | <ClCompile Include="..\xframe\devloper\XDevEditXAction.cpp"> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> |
| | | </ClCompile> |
| | | <ClCompile Include="..\xframe\devloper\XDevEditXCode.cpp"> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> |
| | | </ClCompile> |
| | | <ClCompile Include="..\xframe\devloper\XDevEditXDV.cpp"> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> |
| | | </ClCompile> |
| | | <ClCompile Include="..\xframe\devloper\XDevEditXFile.cpp"> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> |
| | | </ClCompile> |
| | | <ClCompile Include="..\xframe\devloper\XDevEditXFlow.cpp"> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> |
| | | </ClCompile> |
| | | <ClCompile Include="..\xframe\devloper\XDevEditXHtml.cpp"> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> |
| | | </ClCompile> |
| | | <ClCompile Include="..\xframe\devloper\XDevEditXLayer.cpp"> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> |
| | | </ClCompile> |
| | | <ClCompile Include="..\xframe\devloper\XDevEditXML.cpp"> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> |
| | | </ClCompile> |
| | | <ClCompile Include="..\xframe\devloper\XDevEditXMSSQL.cpp"> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> |
| | | </ClCompile> |
| | | <ClCompile Include="..\xframe\devloper\XDevEditXOffice.cpp"> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> |
| | | </ClCompile> |
| | | <ClCompile Include="..\xframe\devloper\XDevEditXPage.cpp"> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> |
| | | </ClCompile> |
| | | <ClCompile Include="..\xframe\devloper\XDevEditXQuery.cpp"> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> |
| | | </ClCompile> |
| | | <ClCompile Include="..\xframe\devloper\XDevEditXRuler.cpp"> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> |
| | | </ClCompile> |
| | | <ClCompile Include="..\xframe\devloper\XDevEditXWKDlg.cpp"> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> |
| | | </ClCompile> |
| | | <ClCompile Include="..\xframe\devloper\XDevEditXWorkNode.cpp"> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> |
| | | <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> |
| | | </ClCompile> |
| | | <ClCompile Include="..\xframe\devloper\XDevItemDlg.cpp" /> |
| | | <ClCompile Include="..\xframe\src\nmemory.cpp" /> |
| | | <ClCompile Include="..\xframe\src\nstring.cpp" /> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #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/xsedit.hpp> |
| | | |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDevEditDbmap : public xwin |
| | | { |
| | | public: |
| | | XDevEditDbmap(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} |
| | | public: |
| | | static XDevEditDbmap* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | return new XDevEditDbmap(implPtr, (HWND)hWnd); |
| | | } |
| | | private: // |
| | | xnode m_agentNode; //Agent Condition |
| | | xstring m_agentCond; //Agent Node |
| | | int SetAgent() |
| | | { |
| | | /*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 OnSetFocus(TEvent* evt,LPARAM param) |
| | | { |
| | | SetAgent(); |
| | | |
| | | //é置工å
·æ¡ |
| | | return 1; |
| | | } |
| | | |
| | | int LoadData() |
| | | { |
| | | if (!GetWinParam()) return 1; |
| | | xstring content = GetData(); |
| | | //trace(content); |
| | | xsedit xs = GetControl(L"content"); |
| | | if (content != L"") |
| | | { |
| | | xs.LoadContent(content,L".xml"); |
| | | } |
| | | else |
| | | xs.LoadContent(L"",L".xml"); |
| | | |
| | | xsedit xs1 = GetControl(L"xmlcontent"); |
| | | xs1.LoadContent(L"",L".xml"); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | |
| | | xstring OnGetUri() |
| | | { |
| | | 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"uri"); |
| | | return str; |
| | | } |
| | | |
| | | //å½ä»¤åå¸å½æ° |
| | | int OnCmdDispatch(xstring comdid) |
| | | { |
| | | xstring content; |
| | | xsedit xs = GetControl(L"content"); |
| | | xs.GetContent(content); |
| | | |
| | | HCURSOR hCursor = xutil::SetCursorWait(); |
| | | if (comdid == L"xmFileSave") |
| | | { |
| | | //save xml content |
| | | SaveContent(content); |
| | | } |
| | | else if (comdid == L"xmRunTest") |
| | | { |
| | | xstring xmlcontent; |
| | | xsedit xs1 = GetControl(L"xmlcontent"); |
| | | xs1.GetContent(xmlcontent); |
| | | xaserverarg arg; |
| | | |
| | | arg.AddArg(L"dbmap",OnGetUri()); |
| | | arg.AddArg(L"content",xmlcontent); |
| | | xml x ; |
| | | if (xaserver::ExecXQuery(GetServerUrl(),L"[ObjectSave.xq]",arg.GetString(),x) != 1) |
| | | { |
| | | trace(x.xml()); |
| | | return 1; |
| | | } |
| | | xsedit xs2 = GetControl(L"sqlcontent"); |
| | | xs2.LoadContent(x.xml(), L".xml"); |
| | | trace(x.xml()); |
| | | } |
| | | else if (comdid == L"xmTransGetSql") |
| | | { |
| | | xstring xmlcontent; |
| | | xsedit xs1 = GetControl(L"content"); |
| | | xs1.GetContent(xmlcontent); |
| | | xaserverarg arg ; |
| | | |
| | | arg.AddArg(L"content",xmlcontent); |
| | | xml x ; |
| | | if (xaserver::ExecXQuery(GetServerUrl(),L"[GenTransSql.xq]",arg.GetString(),x) != 1) |
| | | { |
| | | trace(x.xml()); |
| | | return 1; |
| | | } |
| | | xsedit xs2 = GetControl(L"xmlTransSql"); |
| | | xs2.LoadContent(x.text(), L".xml"); |
| | | //trace(x.xml()); |
| | | } |
| | | |
| | | else if (comdid == L"xmGetSql") |
| | | { |
| | | xstring xmlcontent; |
| | | xsedit xs1 = GetControl(L"xmlcontent"); |
| | | xs1.GetContent(xmlcontent); |
| | | xaserverarg arg ; |
| | | |
| | | arg.AddArg(L"dbmap",OnGetUri()); |
| | | arg.AddArg(L"content",xmlcontent); |
| | | xml x ; |
| | | if (xaserver::ExecXQuery(GetServerUrl(),L"[ObjectSaveSql.xq]",arg.GetString(),x) != 1) |
| | | { |
| | | trace(x.xml()); |
| | | return 1; |
| | | } |
| | | xsedit xs2 = GetControl(L"sqlcontent"); |
| | | xs2.LoadContent(x.text(), L".sql"); |
| | | } |
| | | else if (comdid == L"xmRun") |
| | | { |
| | | xml x ; |
| | | x.loadXML(content); |
| | | KXMLDOMElement e = x.documentElement(); |
| | | if (e.selectSingleNode(L"test[1]/@xpage")) |
| | | { |
| | | xstring xpage = e.selectSingleNode(L"test/@xpage").text(); |
| | | xaserverarg arg; |
| | | arg.AddArg(L"configxml", content); |
| | | //arg.AddArg(L"config",L""); |
| | | if (e.selectSingleNode(L"test/@EntityID")) |
| | | arg.AddArg(L"EntityID", e.selectSingleNode(L"test/@EntityID").text()); |
| | | OpenWindow(xpage +L"native=true", arg); |
| | | } |
| | | } |
| | | else if (comdid ==L"xmValid") |
| | | { |
| | | xml x; |
| | | if (!x.loadXML(content)) |
| | | { |
| | | KXMLDOMParseError pError = x.parseError; |
| | | if (pError) |
| | | { |
| | | 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); |
| | | } |
| | | else |
| | | { |
| | | trace(L"XML é误"); |
| | | } |
| | | xutil::RestoreCursor(hCursor); |
| | | return -1; |
| | | } |
| | | xstring sType = OnGetType(); |
| | | if (sType ==L"xml.xsd") |
| | | { |
| | | xstring sError; |
| | | x.ValidSchema(content, &sError); |
| | | trace(sError); |
| | | } |
| | | } |
| | | else if (comdid ==L"xmEditFind") |
| | | { |
| | | xutil::RestoreCursor(hCursor); |
| | | xsedit xs = GetControl(L"content"); |
| | | xs.OnFindDlg(); |
| | | return 1; |
| | | } |
| | | else if (comdid ==L"xmEditReplace") |
| | | { |
| | | xutil::RestoreCursor(hCursor); |
| | | xsedit xs = GetControl(L"content"); |
| | | xs.OnReplaceDlg(); |
| | | return 1; |
| | | } |
| | | xutil::RestoreCursor(hCursor); |
| | | return 0; |
| | | } |
| | | |
| | | //å½ä»¤å¤çäºä»¶ |
| | | int OnXCommand(TEvent* evt,LPARAM param) |
| | | { |
| | | return OnCmdDispatch(evt->xcommand.pStrID); |
| | | } |
| | | |
| | | int OnLButtonDown(TNotifyEvent* evt,LPARAM p) |
| | | { |
| | | xsedit edit_1 = GetControl(L"content"); |
| | | int sPos = edit_1.GetSelectionStart(); |
| | | int ePos = edit_1.GetSelectionEnd(); |
| | | xstring content = edit_1.GetText(); |
| | | content = content.mid(sPos, ePos - sPos); |
| | | //trace(content); |
| | | if (content ==L"") return -1; |
| | | xwin w = GetFrameWindow(); |
| | | xtreeview tv_folder = w.GetControl(L"DevExplorer"); |
| | | HTREEITEM hItem = GetWinParam(); |
| | | KXMLDOMElement e = tv_folder.GetItemData(hItem); |
| | | //trace(e.xml); |
| | | xstring str = e.getAttribute(L"type"); |
| | | xstring uri = e.getAttribute(L"uri"); |
| | | //trace(str); |
| | | xml xl ; |
| | | xstring xtype =L""; |
| | | if (str ==L"iface") |
| | | //xaserver::LoadUrl(GetServerUrl(),L"dev:xml[sale.data.url.xml]",L"",xl); |
| | | xtype =L"data"; |
| | | else if (str ==L"vface") |
| | | //xaserver::LoadUrl(GetServerUrl(),L"dev:xml[sale.view.url.xml]",L"",xl); |
| | | xtype =L"view"; |
| | | else |
| | | return 0; |
| | | xaserver::LoadUrl(GetServerUrl(),L"dev:xml[sale." + xtype +L".url.xml]",L"",xl); |
| | | //trace(xl.xml()); |
| | | auto doc = xl; |
| | | auto n = doc.selectSingleNode(L"//item[@src='dev:" + str +L"[" + uri +L"]']/@url"); |
| | | //trace(n.xml); |
| | | xstring aurl =L""; |
| | | if (n) |
| | | { |
| | | xstring tmp =L"" + n.text(); |
| | | aurl =L"/sale/" + xtype +L"/" + tmp +L"/" + content; |
| | | } |
| | | else |
| | | return -1; |
| | | trace(aurl); |
| | | xml x; |
| | | xaserverarg arg; |
| | | arg.AddArg(L"url",aurl +L"?node"); |
| | | if (xaserver::ExecXQuery(GetServerUrl(),L"[service.url.xq]",arg.GetString(),x) != 1) |
| | | { |
| | | trace((xstring)L"error:" + x.xml()); |
| | | return 0; |
| | | } |
| | | trace(x.xml()); |
| | | xaserver::FetchXml(GetServerUrl(),L"dev:xpage[XDevEdit.xml]",L"",xl); |
| | | //trace(xl.xml()); |
| | | auto n1 = xl.selectSingleNode(L"//editor[@filetype='" + str +L"']/@xpage"); |
| | | if (n1) |
| | | { |
| | | xstring xpage = n1.text(); |
| | | trace(xpage); |
| | | xstring pa =x.xml(); |
| | | OpenWindow(L"dev:xpage[" + xpage +L"]", 0); |
| | | } |
| | | |
| | | return 1; |
| | | } |
| | | int OnAttachEvent() |
| | | { |
| | | //ç»å®å·¥å
·æ¡ç¹å»äºä»¶ |
| | | AttachEvent(L"WM_XCOMMAND", (FEvent)&XDevEditDbmap::OnXCommand); |
| | | //è·åç¦ç¹äºä»¶ï¼ç¨äºé置工å
·æ¡ |
| | | AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditDbmap::OnSetFocus); |
| | | //AttachEvent(L"content",L"WM_LBUTTONDOWN", (FEvent)&XDeveloper::OnLButtonDown); |
| | | } |
| | | |
| | | int OnInitial() |
| | | { |
| | | SetAgent(); |
| | | |
| | | OnAttachEvent(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | OnInitial(); |
| | | LoadData(); |
| | | |
| | | return 1; |
| | | } |
| | | }; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #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/xdwgrid.hpp> |
| | | #include <xcontrol/xsedit.hpp> |
| | | #include <xcontrol/xcombobox.hpp> |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDevEditAction : public xwin |
| | | { |
| | | public: |
| | | XDevEditAction(void* implPtr, HWND hWnd) :xwin(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 |
| | | 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"); |
| | | xstring 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"<xquery/>"); |
| | | 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); |
| | | } |
| | | |
| | | int OnInitial() |
| | | { |
| | | SetAgent(); |
| | | |
| | | OnAttachEvent(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | dw_list = GetControl(L"parasgrid"); |
| | | |
| | | OnInitial(); |
| | | LoadData(); |
| | | |
| | | return 1; |
| | | } |
| | | }; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #include <wobject/xstring.hpp> |
| | | #include <wobject/xwin.hpp> |
| | | #include <wobject/xaserver.hpp> |
| | | #include <wobject/xaserverarg.hpp> |
| | | #include <xcontrol/xtreeview.hpp> |
| | | #include <xcontrol/xlayersheet.hpp> |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDeveloper : public xwin |
| | | { |
| | | public: |
| | | XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} |
| | | public: |
| | | static XDeveloper* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | XDeveloper* pWin = new XDeveloper(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") |
| | | { |
| | | 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)) |
| | | { |
| | | 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); |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | 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) |
| | | { |
| | | 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; |
| | | } |
| | | |
| | | int OnInitial() |
| | | { |
| | | OnAttachEvent(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | sheet_Count = -1; |
| | | OnInitial(); |
| | | |
| | | tv_folder = GetControl(L"DevExplorer"); |
| | | mle_output = GetControl(L"output"); |
| | | SetAgent(L"projects"); |
| | | |
| | | return 1; |
| | | } |
| | | }; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #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/xdwgrid.hpp> |
| | | #include <xcontrol/xsedit.hpp> |
| | | #include <xcontrol/xcombobox.hpp> |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDevEditXDV : public xwin |
| | | { |
| | | public: |
| | | XDevEditXDV(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} |
| | | public: |
| | | static XDevEditXDV* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | XDevEditXDV* pWin = new XDevEditXDV(implPtr, (HWND)hWnd); |
| | | return pWin; |
| | | } |
| | | private: // |
| | | xnode m_agentNode; //Agent Condition |
| | | xstring m_agentCond; //Agent Node |
| | | 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 = SetAgentNode(anode,s); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | //ç¦ç¹æ¿æ´»å¤ç彿° |
| | | int OnSetFocus(TEvent* evt,LPARAM param) |
| | | { |
| | | SetAgent(); |
| | | |
| | | //é置工å
·æ¡ |
| | | return 1; |
| | | } |
| | | |
| | | int LoadData() |
| | | { |
| | | if (!GetWinParam()) return 1; |
| | | xstring content = GetData(); |
| | | if (content != L"") |
| | | { |
| | | xsedit xs = GetControl(L"xcontent"); |
| | | xs.LoadContent(content,L".xml"); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | 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 OnCmdDispatch(xstring comdid) |
| | | { |
| | | xstring content; |
| | | xsedit xs = GetControl(L"xcontent"); |
| | | xs.GetContent(content); |
| | | HCURSOR hCursor = xutil::SetCursorWait(); |
| | | if (comdid == L"xmFileSaveEx") |
| | | { |
| | | //save xml content |
| | | SaveContent(content); |
| | | xutil::RestoreCursor(hCursor); |
| | | return 1; |
| | | } |
| | | else if (comdid == L"xmValidEx") |
| | | { |
| | | xml x; |
| | | if (!x.loadXML(content)) |
| | | { |
| | | KXMLDOMParseError pError = x.parseError; |
| | | if (pError) |
| | | { |
| | | 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); |
| | | } |
| | | else |
| | | { |
| | | trace(L"XML é误"); |
| | | } |
| | | xutil::RestoreCursor(hCursor); |
| | | return -1; |
| | | } |
| | | xstring sType = OnGetType(); |
| | | if (sType == L"xml.xsd") |
| | | { |
| | | xstring sError; |
| | | x.ValidSchema(content, &sError); |
| | | trace(sError); |
| | | } |
| | | xutil::RestoreCursor(hCursor); |
| | | return 1; |
| | | } |
| | | else if (comdid == L"xmEditFind") |
| | | { |
| | | OpenWindow(L"dev:xpage[xcode.finddlg]"); |
| | | } |
| | | else if (comdid == L"xmEditReplace") |
| | | { |
| | | OpenWindow(L"dev:xpage[xcode.replacedlg]"); |
| | | } |
| | | xutil::RestoreCursor(hCursor); |
| | | return 0; |
| | | } |
| | | |
| | | //å½ä»¤å¤çäºä»¶ |
| | | int OnXCommand(TEvent* evt,int param) |
| | | { |
| | | return OnCmdDispatch(evt->xcommand.pStrID); |
| | | } |
| | | |
| | | int OnAttachEvent() |
| | | { |
| | | //ç»å®å·¥å
·æ¡ç¹å»äºä»¶ |
| | | AttachEvent(L"WM_XCOMMAND",(FEvent)&XDevEditXDV::OnXCommand); |
| | | //è·åç¦ç¹äºä»¶ï¼ç¨äºé置工å
·æ¡ |
| | | AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXDV::OnSetFocus); |
| | | } |
| | | |
| | | /* |
| | | int OnRetrieve() |
| | | { |
| | | xstring query=L"[xxx]"; |
| | | xml x = new xml; |
| | | xaserverarg arg; |
| | | arg.AddArg(L"xxx",L"xxx"); |
| | | if (xaserver::ExecXQuery(GetServerUrl(),query,arg.Getxstring(),x)!=1) |
| | | { |
| | | trace(x.text); |
| | | return -1; |
| | | }else |
| | | { |
| | | dw_list.Retrieve(x); |
| | | dw_list.Redraw(); |
| | | } |
| | | return 1; |
| | | } |
| | | */ |
| | | |
| | | int OnInitial() |
| | | { |
| | | SetAgent(); |
| | | |
| | | OnAttachEvent(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | |
| | | OnInitial(); |
| | | LoadData(); |
| | | |
| | | return 1; |
| | | } |
| | | }; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #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/xdwgrid.hpp> |
| | | #include <xcontrol/xsedit.hpp> |
| | | #include <xcontrol/xcombobox.hpp> |
| | | #include <xcontrol/xreport.hpp> |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDevEditXFile : public xwin |
| | | { |
| | | public: |
| | | XDevEditXFile(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} |
| | | public: |
| | | static XDevEditXFile* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | XDevEditXFile* pWin = new XDevEditXFile(implPtr, (HWND)hWnd); |
| | | return pWin; |
| | | } |
| | | private: // |
| | | xreport xp; |
| | | |
| | | xnode m_agentNode; //Agent Condition |
| | | xstring m_agentCond; //Agent Node |
| | | 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,LPARAM param) |
| | | { |
| | | SetAgent(); |
| | | |
| | | //é置工å
·æ¡ |
| | | return 1; |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | |
| | | KXMLDOMElement OnRetrieve(KXMLDOMElement ele) |
| | | { |
| | | xml doc; |
| | | doc.loadXML(L"<schema/>"); |
| | | auto docroot = doc.documentElement(); |
| | | |
| | | auto list = ele.selectNodes(L"*"); |
| | | int i; |
| | | int s = list.length(); |
| | | for (i = 0; i < s; i++) |
| | | { |
| | | KXMLDOMElement e = list.item(i); |
| | | xstring name = e.getAttribute(L"name"); |
| | | xstring id = e.getAttribute(L"id"); |
| | | xstring sechma = e.getAttribute(L"sechma"); |
| | | xstring et = e.getAttribute(L"et"); |
| | | |
| | | xml x; |
| | | x.loadXML(L"<item/>"); |
| | | auto root = x.documentElement(); |
| | | root.setAttribute(L"colname",id); |
| | | root.setAttribute(L"name",name); |
| | | root.setAttribute(L"type",sechma); |
| | | root.setAttribute(L"note",et); |
| | | |
| | | if (e.hasChildNodes()) |
| | | { |
| | | KXMLDOMElement e1 = OnRetrieve(e); |
| | | KXMLDOMNodeList e2 = e1.selectNodes(L"item"); |
| | | int k; |
| | | int l = e2.length(); |
| | | for (k = 0; k < l; k++) |
| | | root.appendChild(e2.item(k)); |
| | | } |
| | | |
| | | docroot.appendChild(root); |
| | | } |
| | | return docroot; |
| | | } |
| | | |
| | | //å½ä»¤åå¸å½æ° |
| | | int OnCmdDispatch(xstring comdid) |
| | | { |
| | | xsedit xs = GetControl(L"xcontent"); |
| | | xstring content; |
| | | xs.GetContent(content); |
| | | |
| | | HCURSOR hCursor = xutil::SetCursorWait(); |
| | | if (comdid == L"xmFileSave") |
| | | { |
| | | //save xml content |
| | | SaveContent(content); |
| | | } |
| | | else if (comdid == L"xmTable") |
| | | { |
| | | xml x; |
| | | xaserverarg arg; |
| | | arg.AddArg(L"content",content); |
| | | if (xaserver::ExecXQuery(GetServerUrl(),L"[GenTableSchema.xq]",arg.GetString(),x) != 1) |
| | | { |
| | | return 1; |
| | | } |
| | | //trace(x.text); |
| | | xsedit xs1 = GetControl(L"gncontent"); |
| | | xs1.LoadContent(x.xml(),L".sql"); |
| | | } |
| | | else if (comdid == L"xmDDL") |
| | | { |
| | | xml x; |
| | | xaserverarg arg; |
| | | arg.AddArg(L"content",content); |
| | | if (xaserver::ExecXQuery(GetServerUrl(),L"[GenDLLBySchema.xq]",arg.GetString(),x) != 1) |
| | | { |
| | | return 1; |
| | | } |
| | | xsedit xs1 = GetControl(L"gncontent"); |
| | | xs1.LoadContent(x.xml(),L".sql"); |
| | | //trace(x.text); |
| | | } |
| | | else if (comdid == L"xmDbmap") |
| | | { |
| | | xml x; |
| | | xaserverarg arg; |
| | | arg.AddArg(L"content",content); |
| | | if (xaserver::ExecXQuery(GetServerUrl(),L"[GenDbmapBySchema.xq]",arg.GetString(),x) != 1) |
| | | { |
| | | return 1; |
| | | } |
| | | xsedit xs1 = GetControl(L"gncontent"); |
| | | xs1.LoadContent(x.xml(),L".xml"); |
| | | //trace(x.xml()); |
| | | } |
| | | else if (comdid == L"xmValid") |
| | | { |
| | | if (L"" + content == L"") return 0; |
| | | xml x; |
| | | if (!x.loadXML(content)) |
| | | { |
| | | KXMLDOMParseError pError = x.parseError; |
| | | if (pError) |
| | | { |
| | | xstring str = pError.srcText(); |
| | | xstring sError = L"\r\nXMLaaé误: " + 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); |
| | | } |
| | | else |
| | | { |
| | | trace(L"XML é误"); |
| | | } |
| | | return -1; |
| | | } |
| | | xstring sType = OnGetType(); |
| | | if (sType == L"xml.xsd") |
| | | { |
| | | xstring sError; |
| | | x.ValidSchema(content, &sError); |
| | | trace(sError); |
| | | } |
| | | } |
| | | else if (comdid == L"xview") |
| | | { |
| | | if (L"" + content == L"") return 0; |
| | | if (OnCmdDispatch(L"xmValid") != -1) |
| | | { |
| | | xml x; |
| | | if (x.loadXML(content)) |
| | | { |
| | | xp.Reset(); |
| | | /* xp.ResetEx(); |
| | | while(xp.GetRowCount() > 0) |
| | | xp.DeleteRow(1); |
| | | */ xp.Redraw(); |
| | | xstring sType = OnGetType(); |
| | | if (sType == L"iface") |
| | | { |
| | | auto e = x.selectSingleNode(L"interface"); |
| | | if (e) { |
| | | KXMLDOMElement ele = OnRetrieve(e); |
| | | xp.Retrieve(ele); |
| | | } |
| | | } |
| | | else if (sType == L"xml.xsd") |
| | | { |
| | | xml doc; |
| | | x.GetSchemaXml(content,doc); |
| | | //trace(doc.xml()); |
| | | auto e = doc.selectSingleNode(L"root/schema"); |
| | | if (e) { |
| | | xp.Retrieve(e); |
| | | } |
| | | } |
| | | xp.CreateTree(L"node()", 1, 15, 16); |
| | | xp.Redraw(); |
| | | } |
| | | } |
| | | } |
| | | xutil::RestoreCursor(hCursor); |
| | | return 0; |
| | | } |
| | | |
| | | //å½ä»¤å¤çäºä»¶ |
| | | int OnXCommand(TEvent* evt,int param) |
| | | { |
| | | return OnCmdDispatch(evt->xcommand.pStrID); |
| | | } |
| | | |
| | | xstring GetXSD(xstring name) |
| | | { |
| | | 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""; |
| | | int 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) |
| | | { |
| | | auto f = e.selectSingleNode(L"//*[@uri='" + name + L"']"); |
| | | if (f) { |
| | | xstring guid = KXMLDOMElement(f).selectSingleNode(L"@guid").text;//.getAttribute(L"guid"); |
| | | if (guid == L"") |
| | | return ""; |
| | | arg.AddArg(L"guid",guid); |
| | | } |
| | | else |
| | | return ""; |
| | | } |
| | | 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); |
| | | } |
| | | return ProcessDevCmd(L"getobject",arg.GetString()); |
| | | } |
| | | else |
| | | return L""; |
| | | } |
| | | |
| | | int OnDoubleClicked(ref TNotifyEvent evt,int param) |
| | | { |
| | | ref DWNMHDR hdr = evt.pnmh; |
| | | int row = hdr.row; |
| | | KXMLDOMElement e = xp.GetRowElement(row); |
| | | xstring filename = e.getAttribute(L"type"); |
| | | if (filename.right(4) == L".xsd") |
| | | { |
| | | xstring xsd = GetXSD(L"" + filename); |
| | | xml x; |
| | | x.GetSchemaXml(xsd,x); |
| | | trace(x.xml()); |
| | | |
| | | /* xml x = new xml; |
| | | xaserver::FetchXml(GetServerUrl(),L"dev:xpage[XDevEdit.xml]",L"",x); |
| | | auto n = x.selectSingleNode(L"//editor[@filetype='xml.xsd']/@xpage"); |
| | | if(n) |
| | | { |
| | | xstring xpage = n.text; |
| | | xwin w = GetFrameWindow(); |
| | | xlayersheet layer = w.GetControl(L"mdilayer"); |
| | | int i = 0; |
| | | int nIndex = layer.GetSheetCount(); |
| | | for(i=0;i<nIndex;i++) |
| | | { |
| | | if(hItem == layer.GetWinParam(i))break; |
| | | } |
| | | if(i<nIndex)return 1; |
| | | |
| | | OpenWindow(L"dev:xpage["+xpage+L"]",hItem); |
| | | if(nIndex < layer.GetSheetCount()) |
| | | layer.SetParam(nIndex,hItem); |
| | | } |
| | | */ |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | int OnAttachEvent() |
| | | { |
| | | //ç»å®å·¥å
·æ¡ç¹å»äºä»¶ |
| | | AttachEvent(L"WM_XCOMMAND",OnXCommand); |
| | | //è·åç¦ç¹äºä»¶ï¼ç¨äºé置工å
·æ¡ |
| | | AttachEvent(L"WM_SETFOCUS",OnSetFocus); |
| | | AttachEvent(L"xreport",L"DWV_DOUBLECLICKED",OnDoubleClicked); |
| | | } |
| | | |
| | | int LoadData() |
| | | { |
| | | if (!GetWinParam()) return 1; |
| | | xsedit xs = GetControl(L"xcontent"); |
| | | xstring content = GetData(); |
| | | if (content != L"") |
| | | { |
| | | xs.LoadContent(content,L".xml"); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | int OnInitial() |
| | | { |
| | | SetAgent(); |
| | | |
| | | OnAttachEvent(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | OnInitial(); |
| | | |
| | | xp = GetControl(L"xreport"); |
| | | |
| | | LoadData(); |
| | | return 1; |
| | | } |
| | | }; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #include <wobject/xstring.hpp> |
| | | #include <wobject/xwin.hpp> |
| | | #include <wobject/xaserver.hpp> |
| | | #include <wobject/xaserverarg.hpp> |
| | | #include <xcontrol/xtreeview.hpp> |
| | | #include <xcontrol/xlayersheet.hpp> |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDeveloper : public xwin |
| | | { |
| | | public: |
| | | XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} |
| | | public: |
| | | static XDeveloper* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | XDeveloper* pWin = new XDeveloper(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") |
| | | { |
| | | 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)) |
| | | { |
| | | 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); |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | 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) |
| | | { |
| | | 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; |
| | | } |
| | | |
| | | int OnInitial() |
| | | { |
| | | OnAttachEvent(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | sheet_Count = -1; |
| | | OnInitial(); |
| | | |
| | | tv_folder = GetControl(L"DevExplorer"); |
| | | mle_output = GetControl(L"output"); |
| | | SetAgent(L"projects"); |
| | | |
| | | return 1; |
| | | } |
| | | }; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #include <wobject/xstring.hpp> |
| | | #include <wobject/xwin.hpp> |
| | | #include <wobject/xaserver.hpp> |
| | | #include <wobject/xaserverarg.hpp> |
| | | #include <xcontrol/xtreeview.hpp> |
| | | #include <xcontrol/xlayersheet.hpp> |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDeveloper : public xwin |
| | | { |
| | | public: |
| | | XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} |
| | | public: |
| | | static XDeveloper* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | XDeveloper* pWin = new XDeveloper(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") |
| | | { |
| | | 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)) |
| | | { |
| | | 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); |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | 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) |
| | | { |
| | | 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; |
| | | } |
| | | |
| | | int OnInitial() |
| | | { |
| | | OnAttachEvent(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | sheet_Count = -1; |
| | | OnInitial(); |
| | | |
| | | tv_folder = GetControl(L"DevExplorer"); |
| | | mle_output = GetControl(L"output"); |
| | | SetAgent(L"projects"); |
| | | |
| | | return 1; |
| | | } |
| | | }; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #include <wobject/xstring.hpp> |
| | | #include <wobject/xwin.hpp> |
| | | #include <wobject/xaserver.hpp> |
| | | #include <wobject/xaserverarg.hpp> |
| | | #include <xcontrol/xtreeview.hpp> |
| | | #include <xcontrol/xlayersheet.hpp> |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDeveloper : public xwin |
| | | { |
| | | public: |
| | | XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} |
| | | public: |
| | | static XDeveloper* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | XDeveloper* pWin = new XDeveloper(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") |
| | | { |
| | | 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)) |
| | | { |
| | | 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); |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | 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) |
| | | { |
| | | 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; |
| | | } |
| | | |
| | | int OnInitial() |
| | | { |
| | | OnAttachEvent(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | sheet_Count = -1; |
| | | OnInitial(); |
| | | |
| | | tv_folder = GetControl(L"DevExplorer"); |
| | | mle_output = GetControl(L"output"); |
| | | SetAgent(L"projects"); |
| | | |
| | | return 1; |
| | | } |
| | | }; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #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/xdwgrid.hpp> |
| | | #include <xcontrol/xsedit.hpp> |
| | | #include <xcontrol/xcombobox.hpp> |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDevEditXML : public xwin |
| | | { |
| | | public: |
| | | XDevEditXML(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} |
| | | public: |
| | | static XDevEditXML* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | XDevEditXML* pWin = new XDevEditXML(implPtr, (HWND)hWnd); |
| | | return pWin; |
| | | } |
| | | private: |
| | | xnode m_agentNode; //Agent Condition |
| | | xstring m_agentCond; //Agent Node |
| | | 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,LPARAM param) |
| | | { |
| | | SetAgent(); |
| | | |
| | | //é置工å
·æ¡ |
| | | return 1; |
| | | } |
| | | |
| | | int LoadData() |
| | | { |
| | | if (!GetWinParam()) return 1; |
| | | xstring content = GetData(); |
| | | //trace(content); |
| | | xsedit xs = GetControl(L"content"); |
| | | if (content != L"") |
| | | { |
| | | xs.LoadContent(content,L".xml"); |
| | | } |
| | | else |
| | | xs.LoadContent(L"",L".xml"); |
| | | return 1; |
| | | } |
| | | |
| | | 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 OnCmdDispatch(xstring comdid) |
| | | { |
| | | xstring content; |
| | | xsedit xs = GetControl(L"content"); |
| | | xs.GetContent(content); |
| | | |
| | | HCURSOR hCursor = xutil::SetCursorWait(); |
| | | if (comdid == L"xmFileSave") |
| | | { |
| | | //save xml content |
| | | SaveContent(content); |
| | | } |
| | | else if (comdid == L"xmRun") |
| | | { |
| | | xml x = new xml; |
| | | x.loadXML(content); |
| | | KXMLDOMElement e = x.documentElement(); |
| | | if (e.selectSingleNode(L"test[1]/@xpage")) |
| | | { |
| | | xstring xpage = e.selectSingleNode(L"test/@xpage").text(); |
| | | xaserverarg arg; |
| | | arg.AddArg(L"configxml", content); |
| | | //arg.AddArg(L"config", L""); |
| | | if (e.selectSingleNode(L"test/@EntityID")) |
| | | arg.AddArg(L"EntityID", e.selectSingleNode(L"test/@EntityID").text()); |
| | | OpenWindow(xpage + L"native=true", arg); |
| | | } |
| | | } |
| | | else if (comdid == L"xmValid") |
| | | { |
| | | xml x; |
| | | if (!x.loadXML(content)) |
| | | { |
| | | KXMLDOMParseError pError = x.parseError(); |
| | | if (pError) |
| | | { |
| | | 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); |
| | | } |
| | | else |
| | | { |
| | | trace(L"XML é误"); |
| | | } |
| | | xutil::RestoreCursor(hCursor); |
| | | return -1; |
| | | } |
| | | xstring sType = OnGetType(); |
| | | if (sType == L"xml.xsd") |
| | | { |
| | | xstring sError; |
| | | x.ValidSchema(content, &sError); |
| | | trace(sError); |
| | | } |
| | | } |
| | | else if (comdid == L"xmEditFind") |
| | | { |
| | | xutil::RestoreCursor(hCursor); |
| | | xsedit xs = GetControl(L"content"); |
| | | xs.OnFindDlg(); |
| | | return 1; |
| | | } |
| | | else if (comdid == L"xmEditReplace") |
| | | { |
| | | xutil::RestoreCursor(hCursor); |
| | | xsedit xs = GetControl(L"content"); |
| | | xs.OnReplaceDlg(); |
| | | return 1; |
| | | } |
| | | xutil::RestoreCursor(hCursor); |
| | | return 0; |
| | | } |
| | | |
| | | //å½ä»¤å¤çäºä»¶ |
| | | int OnXCommand(TEvent* evt,LPARAM param) |
| | | { |
| | | return OnCmdDispatch(evt->xcommand.pStrID); |
| | | } |
| | | |
| | | int OnLButtonDown(TEvent* evt,LPARAM p) |
| | | { |
| | | xsedit edit_1 = GetControl(L"content"); |
| | | int sPos = edit_1.GetSelectionStart(); |
| | | int ePos = edit_1.GetSelectionEnd(); |
| | | xstring content = edit_1.GetText(); |
| | | content = content.mid(sPos, ePos - sPos); |
| | | //trace(content); |
| | | if (content == L"") return -1; |
| | | xwin w = GetFrameWindow(); |
| | | xtreeview tv_folder = w.GetControl(L"DevExplorer"); |
| | | HTREEITEM hItem = (HTREEITEM)GetWinParam(); |
| | | KXMLDOMElement e = tv_folder.GetItemData(hItem); |
| | | //trace(e.xml); |
| | | xstring str = e.getAttribute(L"type"); |
| | | xstring uri = e.getAttribute(L"uri"); |
| | | //trace(str); |
| | | xml xl = new xml; |
| | | xstring xtype = L""; |
| | | if (str == L"iface") |
| | | //xaserver::LoadUrl(GetServerUrl(),L"dev:xml[sale.data.url.xml]",L"",xl); |
| | | xtype = L"data"; |
| | | else if (str == L"vface") |
| | | //xaserver::LoadUrl(GetServerUrl(),L"dev:xml[sale.view.url.xml]",L"",xl); |
| | | xtype = L"view"; |
| | | else |
| | | return 0; |
| | | xaserver::LoadUrl(GetServerUrl(),L"dev:xml[sale." + xtype + L".url.xml]",L"",xl); |
| | | //trace(xl.xml()); |
| | | auto doc = xl; |
| | | auto n = doc.selectSingleNode(L"//item[@src='dev:" + str + L"[" + uri + L"]']/@url"); |
| | | //trace(n.xml); |
| | | xstring aurl = L""; |
| | | if (n) |
| | | { |
| | | xstring tmp = n.text(); |
| | | aurl = L"/sale/" + xtype + L"/" + tmp + L"/" + content; |
| | | } |
| | | else |
| | | return -1; |
| | | trace(aurl); |
| | | xml x = new xml; |
| | | xaserverarg arg; |
| | | arg.AddArg(L"url",aurl + L"?node"); |
| | | if (xaserver::ExecXQuery(GetServerUrl(),L"[service.url.xq]",arg.GetString(),x) != 1) |
| | | { |
| | | trace((xstring)L"error:" + x.xml()); |
| | | return 0; |
| | | } |
| | | trace(x.xml()); |
| | | xaserver::FetchXml(GetServerUrl(),L"dev:xpage[XDevEdit.xml]",L"",xl); |
| | | //trace(xl.xml()); |
| | | auto n1 = xl.selectSingleNode(L"//editor[@filetype='" + str + L"']/@xpage"); |
| | | if (n1) |
| | | { |
| | | xstring xpage = n1.text(); |
| | | trace(xpage); |
| | | OpenWindow(L"dev:xpage[" + xpage + L"]", 0); |
| | | } |
| | | |
| | | return 1; |
| | | } |
| | | int OnAttachEvent() |
| | | { |
| | | //ç»å®å·¥å
·æ¡ç¹å»äºä»¶ |
| | | AttachEvent(L"WM_XCOMMAND",(FEvent)&XDevEditXML::OnXCommand); |
| | | //è·åç¦ç¹äºä»¶ï¼ç¨äºé置工å
·æ¡ |
| | | AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXML::OnSetFocus); |
| | | //AttachEvent(L"content",L"WM_LBUTTONDOWN", ,(FEvent)&XDevEditXML::OnLButtonDown); |
| | | } |
| | | |
| | | int OnInitial() |
| | | { |
| | | SetAgent(); |
| | | |
| | | OnAttachEvent(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | OnInitial(); |
| | | LoadData(); |
| | | |
| | | return 1; |
| | | } |
| | | }; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #include <wobject/xstring.hpp> |
| | | #include <wobject/xwin.hpp> |
| | | #include <wobject/xaserver.hpp> |
| | | #include <wobject/xaserverarg.hpp> |
| | | #include <xcontrol/xtreeview.hpp> |
| | | #include <xcontrol/xlayersheet.hpp> |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDeveloper : public xwin |
| | | { |
| | | public: |
| | | XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} |
| | | public: |
| | | static XDeveloper* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | XDeveloper* pWin = new XDeveloper(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") |
| | | { |
| | | 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)) |
| | | { |
| | | 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); |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | 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) |
| | | { |
| | | 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; |
| | | } |
| | | |
| | | int OnInitial() |
| | | { |
| | | OnAttachEvent(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | sheet_Count = -1; |
| | | OnInitial(); |
| | | |
| | | tv_folder = GetControl(L"DevExplorer"); |
| | | mle_output = GetControl(L"output"); |
| | | SetAgent(L"projects"); |
| | | |
| | | return 1; |
| | | } |
| | | }; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #include <wobject/xstring.hpp> |
| | | #include <wobject/xwin.hpp> |
| | | #include <wobject/xaserver.hpp> |
| | | #include <wobject/xaserverarg.hpp> |
| | | #include <xcontrol/xtreeview.hpp> |
| | | #include <xcontrol/xlayersheet.hpp> |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDeveloper : public xwin |
| | | { |
| | | public: |
| | | XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} |
| | | public: |
| | | static XDeveloper* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | XDeveloper* pWin = new XDeveloper(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") |
| | | { |
| | | 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)) |
| | | { |
| | | 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); |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | 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) |
| | | { |
| | | 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; |
| | | } |
| | | |
| | | int OnInitial() |
| | | { |
| | | OnAttachEvent(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | sheet_Count = -1; |
| | | OnInitial(); |
| | | |
| | | tv_folder = GetControl(L"DevExplorer"); |
| | | mle_output = GetControl(L"output"); |
| | | SetAgent(L"projects"); |
| | | |
| | | return 1; |
| | | } |
| | | }; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #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/xsedit.hpp> |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDevEditXPage : public xwin |
| | | { |
| | | public: |
| | | XDevEditXPage(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd){} |
| | | public: |
| | | static XDevEditXPage* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | XDevEditXPage* pWin = new XDevEditXPage(implPtr, (HWND)hWnd); |
| | | return pWin; |
| | | } |
| | | private: // |
| | | xnode m_agentNode; //Agent Condition |
| | | xstring m_agentCond; //Agent Node |
| | | int SetAgent() |
| | | { |
| | | /* |
| | | 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 OnSetFocus(TEvent* evt,LPARAM param) |
| | | { |
| | | SetAgent(); |
| | | |
| | | //é置工å
·æ¡ |
| | | return 1; |
| | | } |
| | | |
| | | //å½ä»¤åå¸å½æ° |
| | | int OnCmdDispatch(xstring comdid) |
| | | { |
| | | if (comdid == L"xmPreview") |
| | | { |
| | | } |
| | | else if (comdid == L"xmFileSaveEx") |
| | | { |
| | | xsedit xs = GetControl(L"xpagecontent"); |
| | | xsedit xc = GetControl(L"xcodecontent"); |
| | | |
| | | HCURSOR hCursor = xutil::SetCursorWait(); |
| | | |
| | | xstring content; |
| | | //save xml content |
| | | xs.GetContent(content); |
| | | SaveContent(content); |
| | | |
| | | xstring code; |
| | | //save tpp content |
| | | xc.GetContent(code); |
| | | SaveContentEx(code,1); |
| | | // |
| | | xutil::RestoreCursor(hCursor); |
| | | |
| | | return 1; |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | //å½ä»¤å¤çäºä»¶ |
| | | int OnXCommand(TEvent* evt,LPARAM param) |
| | | { |
| | | return OnCmdDispatch(evt->xcommand.pStrID); |
| | | } |
| | | |
| | | int OnAttachEvent() |
| | | { |
| | | //ç»å®å·¥å
·æ¡ç¹å»äºä»¶ |
| | | AttachEvent(L"WM_XCOMMAND", (FEvent)&XDevEditXPage::OnXCommand); |
| | | //è·åç¦ç¹äºä»¶ï¼ç¨äºé置工å
·æ¡ |
| | | AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXPage::OnSetFocus); |
| | | } |
| | | |
| | | int LoadData() |
| | | { |
| | | if (!GetWinParam()) return 1; |
| | | |
| | | xsedit xs = GetControl(L"xpagecontent"); |
| | | xsedit xc = GetControl(L"xcodecontent"); |
| | | |
| | | xstring content = GetData(); |
| | | if (content != L"") |
| | | { |
| | | xs.LoadContent(content,L".xml"); |
| | | } |
| | | xstring code = GetData(1); |
| | | if (code != L"") |
| | | { |
| | | |
| | | xc.LoadContent(code,L".vl"); |
| | | //xc.LoadContent(code,L".cpp"); |
| | | } |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int OnInitial() |
| | | { |
| | | SetAgent(); |
| | | |
| | | OnAttachEvent(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | OnInitial(); |
| | | LoadData(); |
| | | return 1; |
| | | } |
| | | }; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #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/xdwgrid.hpp> |
| | | #include <xcontrol/xsedit.hpp> |
| | | #include <xcontrol/xcombobox.hpp> |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDevEditXQuery : public xwin |
| | | { |
| | | public: |
| | | XDevEditXQuery(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} |
| | | public: |
| | | static XDevEditXQuery* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | XDevEditXQuery* pWin = new XDevEditXQuery(implPtr, (HWND)hWnd); |
| | | return pWin; |
| | | } |
| | | private: // |
| | | xdwgrid dw_list; |
| | | |
| | | xnode m_agentNode; //Agent Condition |
| | | xstring m_agentCond; //Agent Node |
| | | 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,LPARAM param) |
| | | { |
| | | SetAgent(); |
| | | |
| | | //é置工å
·æ¡ |
| | | return 1; |
| | | } |
| | | |
| | | int LoadData() |
| | | { |
| | | if (!GetWinParam()) return 1; |
| | | xstring content = GetData(); |
| | | xsedit xs = GetControl(L"sqlcontent"); |
| | | if (content != L"") |
| | | { |
| | | 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"); |
| | | xstring 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); |
| | | } |
| | | else |
| | | { |
| | | xs.LoadContent(L"import 'qx.object.xq'",L".sql"); |
| | | } |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | xstring ProcessDevCmdEx(xstring cmd) |
| | | { |
| | | int nlen = 0; |
| | | BYTE* pdata; |
| | | xaserver::ProcessCmd(GetServerUrl(),L"uri.hxsoft.com/xaserver/xquery:" + cmd,0,pdata,nlen); |
| | | if (nlen > 0) |
| | | { |
| | | xstring str = ((WCHAR*)pdata);; |
| | | return str.mid(0,99999999); |
| | | } |
| | | else |
| | | return L""; |
| | | } |
| | | |
| | | //å½ä»¤åå¸å½æ° |
| | | int OnCmdDispatch(xstring comdid) |
| | | { |
| | | HCURSOR hCursor = xutil::SetCursorWait(); |
| | | if (comdid == L"xmFileSaveEx") |
| | | { |
| | | HCURSOR hCursor = xutil::SetCursorWait(); |
| | | |
| | | xstring content; |
| | | xsedit xs = GetControl(L"sqlcontent"); |
| | | xs.GetContent(content); |
| | | |
| | | xml x; |
| | | x.loadXML(L"<xquery/>"); |
| | | 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); |
| | | return 1; |
| | | } |
| | | else if (comdid == L"xmFilePreviewEx") |
| | | { |
| | | xstring content; |
| | | xsedit xs = GetControl(L"sqlcontent"); |
| | | xs.GetContent(content); |
| | | |
| | | xcombobox ddlb = GetControl(L"datasource"); |
| | | xstring ddlbStr = ddlb.GetText(); |
| | | if (ddlbStr == L"VSQLEx") |
| | | { |
| | | xml x ; |
| | | xaserverarg arg ; |
| | | arg.AddArg(L"sql", content); |
| | | xaserver::ExecXQuery(GetServerUrl(), L"[test1.xq]", arg.GetString(), x); |
| | | xstring data = x.xml(); |
| | | //xsedit xc = GetControl(L"resultcontent"); |
| | | //xc.LoadContent(L""+data,L".xml"); |
| | | xsedit xc1 = GetControl(L"frame:vdata"); |
| | | xc1.LoadContent(L"" + data,L".xml"); |
| | | } |
| | | else |
| | | { |
| | | |
| | | 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"); |
| | | |
| | | xstring data; |
| | | if (ddlbStr == L"XQUERY") |
| | | { |
| | | data = ProcessDevCmdEx(L"" + guid); |
| | | } |
| | | else |
| | | { |
| | | data = ProcessDevCmdEx(L"" + guid); |
| | | xml x ; |
| | | xaserver::ExecXQuery(GetServerUrl(),guid,L"",x); |
| | | data = x.xml(); |
| | | } |
| | | |
| | | //xsedit xc = GetControl(L"resultcontent"); |
| | | ///*if(data != L"")*/ xc.LoadContent(L""+data,L".xml"); |
| | | |
| | | //xwin xw = GetFrameWindow(); |
| | | xsedit xc1 = GetControl(L"frame:vdata"); |
| | | trace(data.left(16384)); |
| | | //if(data.length() > 16000) |
| | | /*if(data!=L"") |
| | | xc1.LoadContent(L""+data,L".xml"); |
| | | else |
| | | xc1.LoadContent(L" ",L".xml");*/ |
| | | xc1.SetText(data); |
| | | |
| | | } |
| | | xutil::RestoreCursor(hCursor); |
| | | return 1; |
| | | } |
| | | else if (comdid == L"argaddEx") |
| | | { |
| | | dw_list.InsertRow(0); |
| | | xutil::RestoreCursor(hCursor); |
| | | return 1; |
| | | } |
| | | else if (comdid == L"argdeleteEx") |
| | | { |
| | | int row = dw_list.GetRow(); |
| | | if (row < 1) return 0; |
| | | dw_list.DeleteRow(row); |
| | | xutil::RestoreCursor(hCursor); |
| | | return 1; |
| | | } |
| | | else if (comdid == L"xmEntitySel") |
| | | { |
| | | xaserverarg arg ; |
| | | OpenWindow(L"dev:xpage[XEntityColumnSelDlg.xpage]",arg); |
| | | xstring str = arg.GetArgString(L"select"); |
| | | if (str != L"") trace(L"\r\n---------------------\r\n" + str); |
| | | xutil::RestoreCursor(hCursor); |
| | | return 1; |
| | | } |
| | | else if (comdid == L"xmEditFind") |
| | | { |
| | | xutil::RestoreCursor(hCursor); |
| | | xsedit xs = GetControl(L"sqlcontent"); |
| | | xs.OnFindDlg(); |
| | | return 1; |
| | | } |
| | | else if (comdid == L"xmEditReplace") |
| | | { |
| | | xutil::RestoreCursor(hCursor); |
| | | xsedit xs = GetControl(L"sqlcontent"); |
| | | xs.OnReplaceDlg(); |
| | | return 1; |
| | | } |
| | | |
| | | xutil::RestoreCursor(hCursor); |
| | | return 0; |
| | | } |
| | | |
| | | //å½ä»¤å¤çäºä»¶ |
| | | int OnXCommand(TEvent* evt,LPARAM param) |
| | | { |
| | | return OnCmdDispatch(evt->xcommand.pStrID); |
| | | } |
| | | |
| | | int OnAttachEvent() |
| | | { |
| | | //ç»å®å·¥å
·æ¡ç¹å»äºä»¶ |
| | | AttachEvent(L"WM_XCOMMAND",(FEvent)&XDevEditXQuery::OnXCommand); |
| | | //è·åç¦ç¹äºä»¶ï¼ç¨äºé置工å
·æ¡ |
| | | AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXQuery::OnSetFocus); |
| | | } |
| | | |
| | | int OnInitial() |
| | | { |
| | | SetAgent(); |
| | | |
| | | OnAttachEvent(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | dw_list = GetControl(L"parasgrid"); |
| | | |
| | | OnInitial(); |
| | | LoadData(); |
| | | |
| | | return 1; |
| | | } |
| | | }; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #include <wobject/xstring.hpp> |
| | | #include <wobject/xwin.hpp> |
| | | #include <wobject/xaserver.hpp> |
| | | #include <wobject/xaserverarg.hpp> |
| | | #include <xcontrol/xtreeview.hpp> |
| | | #include <xcontrol/xlayersheet.hpp> |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDeveloper : public xwin |
| | | { |
| | | public: |
| | | XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} |
| | | public: |
| | | static XDeveloper* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | XDeveloper* pWin = new XDeveloper(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") |
| | | { |
| | | 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)) |
| | | { |
| | | 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); |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | 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) |
| | | { |
| | | 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; |
| | | } |
| | | |
| | | int OnInitial() |
| | | { |
| | | OnAttachEvent(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | sheet_Count = -1; |
| | | OnInitial(); |
| | | |
| | | tv_folder = GetControl(L"DevExplorer"); |
| | | mle_output = GetControl(L"output"); |
| | | SetAgent(L"projects"); |
| | | |
| | | return 1; |
| | | } |
| | | }; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #include <wobject/xstring.hpp> |
| | | #include <wobject/xwin.hpp> |
| | | #include <wobject/xaserver.hpp> |
| | | #include <wobject/xaserverarg.hpp> |
| | | #include <xcontrol/xtreeview.hpp> |
| | | #include <xcontrol/xlayersheet.hpp> |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDeveloper : public xwin |
| | | { |
| | | public: |
| | | XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} |
| | | public: |
| | | static XDeveloper* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | XDeveloper* pWin = new XDeveloper(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") |
| | | { |
| | | 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)) |
| | | { |
| | | 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); |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | 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) |
| | | { |
| | | 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; |
| | | } |
| | | |
| | | int OnInitial() |
| | | { |
| | | OnAttachEvent(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | sheet_Count = -1; |
| | | OnInitial(); |
| | | |
| | | tv_folder = GetControl(L"DevExplorer"); |
| | | mle_output = GetControl(L"output"); |
| | | SetAgent(L"projects"); |
| | | |
| | | return 1; |
| | | } |
| | | }; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #include <wobject/xstring.hpp> |
| | | #include <wobject/xwin.hpp> |
| | | #include <wobject/xaserver.hpp> |
| | | #include <wobject/xaserverarg.hpp> |
| | | #include <xcontrol/xtreeview.hpp> |
| | | #include <xcontrol/xlayersheet.hpp> |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDeveloper : public xwin |
| | | { |
| | | public: |
| | | XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} |
| | | public: |
| | | static XDeveloper* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | XDeveloper* pWin = new XDeveloper(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") |
| | | { |
| | | 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)) |
| | | { |
| | | 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); |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | 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) |
| | | { |
| | | 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; |
| | | } |
| | | |
| | | int OnInitial() |
| | | { |
| | | OnAttachEvent(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | sheet_Count = -1; |
| | | OnInitial(); |
| | | |
| | | tv_folder = GetControl(L"DevExplorer"); |
| | | mle_output = GetControl(L"output"); |
| | | SetAgent(L"projects"); |
| | | |
| | | return 1; |
| | | } |
| | | }; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #include <wobject/xstring.hpp> |
| | | #include <wobject/xwin.hpp> |
| | | #include <wobject/xaserver.hpp> |
| | | #include <wobject/xaserverarg.hpp> |
| | | #include <xcontrol/xtreeview.hpp> |
| | | #include <xcontrol/xlayersheet.hpp> |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDeveloper : public xwin |
| | | { |
| | | public: |
| | | XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} |
| | | public: |
| | | static XDeveloper* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | XDeveloper* pWin = new XDeveloper(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") |
| | | { |
| | | 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)) |
| | | { |
| | | 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); |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | 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) |
| | | { |
| | | 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; |
| | | } |
| | | |
| | | int OnInitial() |
| | | { |
| | | OnAttachEvent(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | sheet_Count = -1; |
| | | OnInitial(); |
| | | |
| | | tv_folder = GetControl(L"DevExplorer"); |
| | | mle_output = GetControl(L"output"); |
| | | SetAgent(L"projects"); |
| | | |
| | | return 1; |
| | | } |
| | | }; |
| | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDeveloper : public xwin |
| | | { |
| | | public: |
| | | XDeveloper(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd),mle_output(nullptr) {} |
| | | public: |
| | | static XDeveloper* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | XDeveloper* pWin = new XDeveloper(implPtr, (HWND)hWnd); |
| | | return pWin; |
| | | } |
| | | private: // |
| | | xtreeview tv_folder; |
| | | xcontrol mle_output; |
| | |
| | | class KXMLDOMTextNode; |
| | | class KXMLDOMProcessingInstruction; |
| | | class KXMLDOMNodeList; |
| | | class KXMLParseError; |
| | | class KXMLDOMParseError; |
| | | |
| | | enum KDOMNodeType |
| | | { |
| | |
| | | |
| | | wchar_t* transformNode(KXMLDOMNode); |
| | | KXMLDOMNode transformNodeToObject(KXMLDOMNode); |
| | | KXMLParseError validate(); |
| | | KXMLDOMParseError validate(); |
| | | //bool validateNode(); |
| | | public: |
| | | KXMLDOMDocument(void* impl); |
| | |
| | | using KXMLDOMElement=Hxsoft::XFrame::KXMLDOMElement; |
| | | using KXMLDOMNodeList = Hxsoft::XFrame::KXMLDOMNodeList; |
| | | |
| | | class KXMLParseError : public KXMLDOMNode |
| | | class KXMLDOMParseError : public KXMLDOMNode |
| | | { |
| | | public: |
| | | KXMLParseError(KXMLDOMNode& v); |
| | | KXMLParseError(void* impl) :KXMLDOMNode(impl) {} |
| | | KXMLDOMParseError(KXMLDOMNode& v); |
| | | KXMLDOMParseError(void* impl) :KXMLDOMNode(impl) {} |
| | | public: |
| | | int errorCode(); |
| | | int filepos(); |
| | | int line(); |
| | | int linepos(); |
| | | BSTR reason(); |
| | | BSTR srcText(); |
| | | BSTR url(); |
| | | }; |
| | | |
| | | class KXMLDOMElementPtr |