¶Ô±ÈÐÂÎļþ |
| | |
| | | #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> |
| | | #include <xcontrol/xdwgrid.hpp> |
| | | using xml = KXMLDOMDocument; |
| | | class __declspec(dllexport) SqlWatchWin : public xwin |
| | | { |
| | | public: //xdwgrid dw_list; |
| | | |
| | | xnode m_agentNode; //Agent Condition |
| | | xtreeview m_exploer; |
| | | KXMLDOMElement toEle; |
| | | xml toXml; |
| | | |
| | | public: |
| | | SqlWatchWin(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} |
| | | public: |
| | | static SqlWatchWin* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | SqlWatchWin* pWin = new SqlWatchWin(implPtr, (HWND)hWnd); |
| | | return pWin; |
| | | } |
| | | |
| | | int trace(xstring info) |
| | | { |
| | | #define EM_SETSEL 0x00B1 |
| | | #define EM_REPLACESEL 0x00C2 |
| | | #define EM_SCROLL 0x00B5 |
| | | #define SB_LINEDOWN 1 |
| | | xcontrol xc = GetControl(L"output"); |
| | | SendMessage(xc.GetHWND(), EM_SETSEL, -1, 0); |
| | | SendMessage(xc.GetHWND(), EM_REPLACESEL, false, (LPARAM)info.c_str()); |
| | | SendMessage(xc.GetHWND(), EM_SCROLL, SB_LINEDOWN, 0); |
| | | return 1; |
| | | } |
| | | |
| | | int SetAgent() |
| | | { |
| | | xstring xfNodeAgentArea = L"agentarea"; |
| | | xnode anode = GetAgentNode(xfNodeAgentArea); |
| | | if (m_agentNode) |
| | | { |
| | | SetAgentNode(anode, m_agentNode); |
| | | } |
| | | else |
| | | { |
| | | KXMLDOMElement xframeElement = GetElement(); |
| | | KXMLDOMElement 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; |
| | | } |
| | | |
| | | xstring getLink(HTREEITEM hItem) |
| | | { |
| | | return L"hxerp"; |
| | | } |
| | | |
| | | xstring makeSheet(xstring labels, xstring datas) |
| | | { |
| | | xstring ls_sheet = L"<sheet ver='10315' editer='xcell' version='3.0' report='true'>"; |
| | | |
| | | //style |
| | | ls_sheet += L"\r\n<stylesheet>"; |
| | | ls_sheet += L"\r\n\t<item name='f0'>font-facename:å®ä½;font-style:normal;font-weight:400;font-size:-21.000000px</item>"; |
| | | ls_sheet += L"\r\n\t<item name='f1'>font-facename:å®ä½;font-style:normal;font-weight:bold;font-size:-21.000000px</item>"; |
| | | ls_sheet += L"\r\n</stylesheet>"; |
| | | |
| | | //axis |
| | | ls_sheet += L"\r\n<axis>"; |
| | | ls_sheet += L"\r\n\t<col>"; |
| | | ls_sheet += L"\r\n\t\t<item width='28' colend='0'/>"; |
| | | ls_sheet += L"\r\n\t\t<item width='90' colend='64'/>"; |
| | | ls_sheet += L"\r\n\t</col>"; |
| | | ls_sheet += L"\r\n\t<row>"; |
| | | ls_sheet += L"\r\n\t\t<item height='1' rowend='0'/>"; |
| | | ls_sheet += L"\r\n\t\t<item height='24' rowend='64'/>"; |
| | | ls_sheet += L"\r\n\t</row>"; |
| | | ls_sheet += L"\r\n</axis>"; |
| | | |
| | | //cell |
| | | ls_sheet += L"\r\n<cells>"; |
| | | ls_sheet += L"\r\n\t<row><cell colindex='0'><prestr>data/Item</prestr></cell></row>"; |
| | | ls_sheet += L"\r\n\t<row rowindex='3'>" + labels + L"\r\n\t</row>"; |
| | | ls_sheet += L"\r\n\t<row rowindex='5'>" + datas + L"\r\n\t</row>"; |
| | | ls_sheet += L"\r\n</cells>"; |
| | | |
| | | //report |
| | | ls_sheet += L"\r\n<report right='0' left='0'>"; |
| | | ls_sheet += L"\r\n\t<PageHeader endRow='1' startRow='1'/>"; |
| | | ls_sheet += L"\r\n\t<Header endRow='2' startRow='2'/>"; |
| | | ls_sheet += L"\r\n\t<Title endRow='4' startRow='3'/>"; |
| | | ls_sheet += L"\r\n\t<Detail endRow='6' startRow='5'/>"; |
| | | ls_sheet += L"\r\n\t<Summury endRow='7' startRow='7'/>"; |
| | | ls_sheet += L"\r\n\t<Footer endRow='8' startRow='8'/>"; |
| | | ls_sheet += L"\r\n\t<PageFooter endRow='9' startRow='9'/>"; |
| | | ls_sheet += L"\r\n</report>"; |
| | | |
| | | ls_sheet += L"\r\n</sheet>"; |
| | | |
| | | return ls_sheet; |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | |
| | | int FetchVSql() |
| | | { |
| | | xsedit xs; |
| | | xstring content = L""; |
| | | xs = GetControl(L"sqlcontent"); |
| | | int start = xs.GetSelectionStart(); |
| | | int end = xs.GetSelectionEnd(); |
| | | xs.GetContent(content); |
| | | if (start != end) |
| | | { |
| | | content = content.mid(start, end - start); |
| | | } |
| | | |
| | | xml x; |
| | | xaserverarg xarg ; |
| | | xarg.AddArg(L"func", L"fetch-vsql"); |
| | | xarg.AddArg(L"sql", content.c_str()); |
| | | xarg.AddArg(L"xquery", L""); |
| | | xaserver::ExecXQuery(GetServerUrl(), L"[sqlExec.xq]", xarg.GetString(), x); |
| | | if (x) |
| | | { |
| | | trace(x.text()); |
| | | } |
| | | else |
| | | trace(L"have a error"); |
| | | return 1; |
| | | } |
| | | |
| | | int FetchSql() |
| | | { |
| | | xsedit xs; |
| | | xstring content = L""; |
| | | xs = GetControl(L"sqlcontent"); |
| | | int start = xs.GetSelectionStart(); |
| | | int end = xs.GetSelectionEnd(); |
| | | xs.GetContent(content); |
| | | if (start != end) |
| | | { |
| | | content = content.mid(start, end - start); |
| | | } |
| | | |
| | | xml x ; |
| | | xaserverarg xarg; |
| | | xarg.AddArg(L"func", L"fetch-sql"); |
| | | xarg.AddArg(L"sql", content); |
| | | xarg.AddArg(L"xquery", L""); |
| | | xaserver::ExecXQuery(GetServerUrl(), L"[sqlExec.xq]", xarg.GetString(), x); |
| | | if (x) |
| | | { |
| | | trace(x.text()); |
| | | } |
| | | else |
| | | trace(L"have a error"); |
| | | return 1; |
| | | } |
| | | |
| | | xstring GetFolder(xstring file) |
| | | { |
| | | int pos = 0; |
| | | int pos1 = 0; |
| | | pos = file.find(L"/", pos); |
| | | while (pos) |
| | | { |
| | | pos1 = file.find(L"/", pos + 1); |
| | | if (pos1 < 0) break; |
| | | pos = pos1; |
| | | } |
| | | if (pos > 0) |
| | | return file.left(pos); |
| | | else |
| | | return L""; |
| | | } |
| | | |
| | | int surePath(xstring base, xstring file) |
| | | { |
| | | CreateDirectory(base, nullptr); |
| | | if (file == L"") return 1; |
| | | |
| | | xstring src = file; |
| | | int pos = src.find(L"/"); |
| | | while (pos >= 0) |
| | | { |
| | | xstring folder = src.left(pos); |
| | | pos = src.find(L"/", pos + 1); |
| | | if(src.left(1)==L"/") |
| | | CreateDirectory(base + folder, __nullptr); |
| | | else |
| | | CreateDirectory(base + L"/" + folder, nullptr); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | int processhxw(xstring base, xstring sfile) |
| | | { |
| | | surePath(base, sfile); |
| | | int ret = DownLoadFile2(sfile, base + sfile); |
| | | if (ret < 0) |
| | | { |
| | | trace(L"\r\n error load:" + sfile + L" " + base + L"/" + sfile); |
| | | return -1; |
| | | } |
| | | |
| | | xml x ; |
| | | x.load(base + L"/" + sfile); |
| | | KXMLDOMNodeList items = x.selectNodes(L"/category/domain/folder[count(@deleted)=0]"); |
| | | int len = items.length(); |
| | | for (int i = 0; i < len; i++) |
| | | { |
| | | KXMLDOMNode node = items.item(i); |
| | | xstring src = node.selectSingleNode(L"@src").text(); |
| | | if (src.find(L"mh.com") < 0) |
| | | { |
| | | src = src.replace(L"\\", L"/"); |
| | | processhxd(base + L"/developer", src); |
| | | } |
| | | } |
| | | } |
| | | |
| | | int reconnect() |
| | | { |
| | | SendMessage(GetFrameWindow().GetHWND(), 0x401, (LPARAM)L"xmAuth", 0); |
| | | return 1; |
| | | } |
| | | |
| | | int DownLoadFile2(xstring src, xstring dest) |
| | | { |
| | | int ret = xaserver::DownLoadFile(GetServerUrl(), src, L"", dest); |
| | | if (ret < 0) |
| | | { |
| | | reconnect(); |
| | | ret = xaserver::DownLoadFile(GetServerUrl(), src, L"", dest); |
| | | } |
| | | if (ret < 0)reconnect(); |
| | | return ret; |
| | | } |
| | | |
| | | int processprj1(xstring base, xstring path, xstring src, bool processItem) |
| | | { |
| | | //xcontrol xc = GetControl(L"frame:output"); |
| | | //xc.SetText(L"\r\n process: "+path+L"/"+src); |
| | | |
| | | trace(L"\r\n base:" + base); |
| | | surePath(base + L"/" + path, src); |
| | | int ret = DownLoadFile2(L"/developer/" + path + L"/" + src, base + L"/" + path + L"/" + src); |
| | | if (ret < 0) |
| | | { |
| | | trace(L"\r\nerror load /developer/" + path + L"/" + src + L" " + base + L"/" + path + L"/" + src); |
| | | reconnect(); |
| | | return 1; |
| | | } |
| | | trace(L"\r\n prj /developer/" + path + L"/" + src + L" " + base + L"/" + path + L"/" + src); |
| | | |
| | | xml x; |
| | | if (!x.load(base + L"/" + path + L"/" + src)) |
| | | { |
| | | trace(L"\r\nerror load:" + base + L"/" + path + L"/" + src); |
| | | return 1; |
| | | } |
| | | |
| | | KXMLDOMNodeList items = x.selectNodes(L"//file[count(@deleted)=0]"); |
| | | xstring caption = x.documentElement().getAttribute(L"caption");; |
| | | xstring srcpath = GetFolder(src); |
| | | if (caption == L"") |
| | | { |
| | | trace(L"\r\nerror caption:" + base + L"/" + path + L"/" + src); |
| | | return 1; |
| | | } |
| | | |
| | | xstring spath = L"/developer/" + path + L"/" + srcpath + L"/" + caption; |
| | | xstring dpath = base + L"/" + path + L"/" + srcpath + L"/" + caption; |
| | | |
| | | surePath(dpath, L""); |
| | | int len = items.length(); |
| | | for (int i = 0; i < len; i++) |
| | | { |
| | | KXMLDOMNode node = items.item(i); |
| | | |
| | | xstring srcItem = L""; |
| | | xstring id = L""; |
| | | if (node.selectSingleNode(L"@guid")) id = node.selectSingleNode(L"@guid").text(); |
| | | if (node.selectSingleNode(L"@src")) srcItem = node.selectSingleNode(L"@src").text(); |
| | | xstring typ = L""; |
| | | if (node.selectSingleNode(L"@type")) typ = node.selectSingleNode(L"@type").text(); |
| | | xstring values = L""; |
| | | if (srcItem != L"" && typ != L"") |
| | | { |
| | | ret = DownLoadFile2(L"dev:" + typ + L"[" + srcItem + L"]", dpath + L"/" + srcItem); |
| | | if (ret < 0) |
| | | { |
| | | trace(L"\r\nerror load dev:" + typ + L"[" + srcItem + L"]" + L" " + dpath + L"/" + srcItem); |
| | | continue; |
| | | //return 1; |
| | | } |
| | | CreateDirectory(base + L"/working", nullptr); |
| | | CreateDirectory(base + L"/working/code", nullptr); |
| | | CreateDirectory(base + L"/working/sheets", nullptr); |
| | | if (id != L"") |
| | | { |
| | | if (typ == L"xruler") |
| | | { |
| | | CreateDirectory(base + L"/working/" + typ + L"s", nullptr); |
| | | DownLoadFile2(L"dev:" + typ + L"[" + srcItem + L"]", base + L"/working" + L"/" + typ + L"s/" + id + L".xrl"); |
| | | } |
| | | else if (typ == L"serialize") |
| | | { |
| | | CreateDirectory(base + L"/working/" + typ, nullptr); |
| | | DownLoadFile2(L"dev:" + typ + L"[" + srcItem + L"]", base + L"/working" + L"/" + typ + L"/" + id + L".xml"); |
| | | } |
| | | else if (typ == L"workflow" || typ == L"worknode" || typ == L"xaction" || typ == L"template" || typ == L"xfile" |
| | | || typ == L"xquery" || typ == L"entity" || typ == L"xpage") |
| | | { |
| | | CreateDirectory(base + L"/working/" + typ + L"s", nullptr); |
| | | DownLoadFile2(L"dev:" + typ + L"[" + srcItem + L"]", base + L"/working" + L"/" + typ + L"s/" + id + L".xml"); |
| | | } |
| | | else |
| | | { |
| | | CreateDirectory(base + L"/working/" + typ, nullptr); |
| | | DownLoadFile2(L"dev:" + typ + L"[" + srcItem + L"]", base + L"/working" + L"/" + typ + L"/" + id); |
| | | } |
| | | |
| | | values = L""; |
| | | if (xutil::HasCacheData(L"object-types"))values = xutil::GetUrlData(L"object-types"); |
| | | if (values.find(L",L" + typ + L",L") < 0) values += L",L" + typ + L",L"; |
| | | xutil::CacheUrlData(L"object-types", values); |
| | | |
| | | values = L""; |
| | | if (xutil::HasCacheData(typ))values = xutil::GetUrlData(typ); |
| | | if (values != L"") values += L"\r\n"; |
| | | values += L"T(\"" + srcItem + L"\",\"" + id + L"\",\"" + spath + L"/" + srcItem + L"\")"; |
| | | xutil::CacheUrlData(typ, values); |
| | | } |
| | | if (typ == L"template") |
| | | { |
| | | xml xtempl; |
| | | if (xtempl.load(base + L"/working" + L"/" + typ + L"s/" + id + L".xml")) |
| | | { |
| | | KXMLDOMNodeList nodes = xtempl.selectNodes(L"/xdoc/sheet"); |
| | | int count = nodes.length(); |
| | | for (int k = 0; k < count; k++) |
| | | { |
| | | KXMLDOMNode tnode = nodes.item(k); |
| | | xstring content = tnode.xml(); |
| | | xstring sheetid = L""; |
| | | xstring sheetcaption = L""; |
| | | if (node.selectSingleNode(L"@guid")) sheetid = tnode.selectSingleNode(L"@guid").text(); |
| | | if (node.selectSingleNode(L"@caption")) sheetcaption = tnode.selectSingleNode(L"@caption").text(); |
| | | xutil::SaveToFile(base + L"/working/sheets/" + sheetid + L".xml", content, L"", L"", (LPTSTR)L""); |
| | | tnode.Release(); |
| | | |
| | | values = L""; |
| | | if (xutil::HasCacheData(L"object-types"))values = xutil::GetUrlData(L"object-types"); |
| | | if (values.find(L",sheet,L") < 0) values += L",sheet,L"; |
| | | xutil::CacheUrlData(L"object-types", values); |
| | | |
| | | values = L""; |
| | | xstring str = L""; |
| | | if (xutil::HasCacheData(L"sheet"))values = xutil::GetUrlData(L"sheet"); |
| | | str = L"\r\n"; |
| | | if (id != L"")str += L"T(\"" + srcItem + L"/" + id + L"\",\"" + id + L"\")"; |
| | | str += L"\r\n"; |
| | | if (sheetcaption != L"")str += L"T(\"" + srcItem + L"/" + sheetcaption + L"\",\"" + id + L"\")"; |
| | | values += str; |
| | | xutil::CacheUrlData(L"sheet", values); |
| | | } |
| | | } |
| | | } |
| | | if (typ == L"xpage") |
| | | { |
| | | xstring srccode = srcItem.replace(L".xpage", L".xss"); |
| | | srccode = srccode.replace(L".vx", L".xss"); |
| | | ret = DownLoadFile2(L"dev:code[" + srcItem + L"]", dpath + L"/" + srccode); |
| | | if (ret < 0) |
| | | { |
| | | trace(L"\r\nerror load dev:code[" + srcItem + L"]" + L" " + dpath + L"/" + srccode); |
| | | continue; |
| | | //return 1; |
| | | } |
| | | if (id != L"") DownLoadFile2(L"dev:code[" + srcItem + L"]", base + L"/working" + L"/code/" + id + L".xss"); |
| | | |
| | | values = L""; |
| | | if (xutil::HasCacheData(L"object-types"))values = xutil::GetUrlData(L"object-types"); |
| | | if (values.find(L",code,L") < 0) values += L",code,L"; |
| | | xutil::CacheUrlData(L"object-types", values); |
| | | |
| | | values = L""; |
| | | if (xutil::HasCacheData(typ))values = xutil::GetUrlData(typ); |
| | | if (values != L"") values += L"\r\n"; |
| | | values += L"T(\"" + srcItem + L"\",\"" + id + L"\",\"" + spath + L"\"" + srcItem + L"\")"; |
| | | xutil::CacheUrlData(L"code", values); |
| | | } |
| | | } |
| | | } |
| | | trace(L" -- finished"); |
| | | return 1; |
| | | } |
| | | |
| | | int processprj_xml(xstring base, xstring path, xstring src, bool processItem) |
| | | { |
| | | //xcontrol xc = GetControl(L"frame:output"); |
| | | //xc.SetText(L"\r\n process: "+path+L"/"+src); |
| | | |
| | | trace(L"\r\n base:" + base); |
| | | surePath(base + L"/" + path, src); |
| | | int ret = DownLoadFile2(L"/developer/" + path + L"/" + src, base + L"/" + path + L"/" + src); |
| | | if (ret < 0) |
| | | { |
| | | trace(L"\r\nerror load /developer/" + path + L"/" + src + L" " + base + L"/" + path + L"/" + src); |
| | | return 1; |
| | | } |
| | | trace(L"\r\n prj /developer/" + path + L"/" + src + L" " + base + L"/" + path + L"/" + src); |
| | | |
| | | xml x; |
| | | |
| | | if (!x.load(base + L"/" + path + L"/" + src)) |
| | | { |
| | | trace(L"\r\nerror load:" + base + L"/" + path + L"/" + src); |
| | | return 1; |
| | | } |
| | | |
| | | KXMLDOMNodeList items = x.selectNodes(L"//file[count(@deleted)=0]"); |
| | | xstring caption = x.documentElement().getAttribute(L"caption");; |
| | | xstring srcpath = GetFolder(src); |
| | | if (caption == L"") |
| | | { |
| | | trace(L"\r\nerror caption:" + base + L"/" + path + L"/" + src); |
| | | return 1; |
| | | } |
| | | |
| | | xstring spath = L"/developer/" + path + L"/" + srcpath + L"/" + caption; |
| | | xstring dpath = base + L"/" + path + L"/" + srcpath + L"/" + caption; |
| | | |
| | | surePath(dpath, L""); |
| | | int len = items.length(); |
| | | for (int i = 0; i < len; i++) |
| | | { |
| | | KXMLDOMNode node = items.item(i); |
| | | trace(L"."); |
| | | |
| | | xstring srcItem = L""; |
| | | xstring id = L""; |
| | | if (node.selectSingleNode(L"@guid")) id = node.selectSingleNode(L"@guid").text(); |
| | | if (node.selectSingleNode(L"@src")) srcItem = node.selectSingleNode(L"@src").text(); |
| | | xstring typ = L""; |
| | | if (node.selectSingleNode(L"@type")) typ = node.selectSingleNode(L"@type").text(); |
| | | xstring values = L""; |
| | | if (srcItem != L"" && typ != L"") |
| | | { |
| | | ret = DownLoadFile2(L"dev:" + typ + L"[" + srcItem + L"]", dpath + L"/" + srcItem); |
| | | if (ret < 0) |
| | | { |
| | | trace(L"\r\nerror load dev:" + typ + L"[" + srcItem + L"]" + L" " + dpath + L"/" + srcItem); |
| | | continue; |
| | | //return 1; |
| | | } |
| | | CreateDirectory(base + L"/working", nullptr); |
| | | CreateDirectory(base + L"/working/code", nullptr); |
| | | CreateDirectory(base + L"/working/sheets", nullptr); |
| | | if (id != L"") |
| | | { |
| | | if (typ == L"xruler") |
| | | { |
| | | CreateDirectory(base + L"/working/" + typ + L"s", nullptr); |
| | | //DownLoadFile2(L"dev:"+typ+L"["+srcItem+L"]",base+L"/working"+L"/"+typ+L"s/"+id+L".xrl"); |
| | | DownLoadFile2(L"dev:" + typ + id, base + L"/working" + L"/" + typ + L"s/" + id + L".xrl"); |
| | | } |
| | | else if (typ == L"serialize") |
| | | { |
| | | CreateDirectory(base + L"/working/" + typ, nullptr); |
| | | //DownLoadFile2(L"dev:"+typ+L"["+srcItem+L"]",base+L"/working"+L"/"+typ+L"/"+id+L".xml"); |
| | | DownLoadFile2(L"dev:" + typ + id, base + L"/working" + L"/" + typ + L"/" + id + L".xml"); |
| | | } |
| | | else if (typ == L"workflow" || typ == L"worknode" || typ == L"xaction" || typ == L"template" || typ == L"xfile" |
| | | || typ == L"xquery" || typ == L"entity" || typ == L"xpage") |
| | | { |
| | | CreateDirectory(base + L"/working/" + typ + L"s", nullptr); |
| | | //DownLoadFile2(L"dev:"+typ+L"["+srcItem+L"]",base+L"/working"+L"/"+typ+L"s/"+id+L".xml"); |
| | | DownLoadFile2(L"dev:" + typ + id, base + L"/working" + L"/" + typ + L"s/" + id + L".xml"); |
| | | } |
| | | else |
| | | { |
| | | CreateDirectory(base + L"/working/" + typ, nullptr); |
| | | //DownLoadFile2(L"dev:"+typ+L"["+srcItem+L"]",base+L"/working"+L"/"+typ+L"/"+id); |
| | | DownLoadFile2(L"dev:" + typ + id, base + L"/working" + L"/" + typ + L"/" + id); |
| | | } |
| | | appendto(typ, L"T(\"" + srcItem + L"\",\"" + id + L"\",\"" + spath + L"/" + srcItem + L"\")[ln]"); |
| | | } |
| | | |
| | | if (typ == L"template") |
| | | { |
| | | xml xtempl; |
| | | if (xtempl.load(base + L"/working" + L"/" + typ + L"s/" + id + L".xml")) |
| | | { |
| | | KXMLDOMNodeList nodes = xtempl.selectNodes(L"/xdoc/sheet"); |
| | | int count = nodes.length(); |
| | | for (int k = 0; k < count; k++) |
| | | { |
| | | KXMLDOMNode tnode = nodes.item(k); |
| | | xstring content = tnode.xml(); |
| | | xstring sheetid = L""; |
| | | xstring sheetcaption = L""; |
| | | if (node.selectSingleNode(L"@guid")) sheetid = tnode.selectSingleNode(L"@guid").text(); |
| | | if (node.selectSingleNode(L"@caption")) sheetcaption = tnode.selectSingleNode(L"@caption").text(); |
| | | xutil::SaveToFile(base + L"/working/sheets/" + sheetid + L".xml", content, L"", L"", (LPTSTR)L""); |
| | | |
| | | appendto(L"sheet", L"T(\"" + srcItem + L"/" + sheetid + L"\",\"" + sheetid + L"\")[ln]"); |
| | | appendto(L"sheet", L"T(\"" + srcItem + L"/" + sheetcaption + L"\",\"" + sheetid + L"\")[ln]"); |
| | | } |
| | | } |
| | | } |
| | | if (typ == L"xpage") |
| | | { |
| | | xstring srccode = srcItem.replace(L".xpage", L".xss"); |
| | | srccode = srccode.replace(L".vx", L".xss"); |
| | | ret = DownLoadFile2(L"dev:code[" + srcItem + L"]", dpath + L"/" + srccode); |
| | | if (ret < 0) |
| | | { |
| | | trace(L"\r\nerror load dev:code[" + srcItem + L"]" + L" " + dpath + L"/" + srccode); |
| | | continue; |
| | | //return 1; |
| | | } |
| | | if (id != L"") |
| | | { |
| | | DownLoadFile2(L"dev:code[" + srcItem + L"]", base + L"/working" + L"/code/" + id + L".xss"); |
| | | //DownLoadFile2(L"dev:code"+id,base+L"/working"+L"/code/"+id+L".xss"); |
| | | appendto(L"code", L"T(\"" + srcItem + L"\",\"" + id + L"\",\"" + spath + L"\"" + srcItem + L"\")[ln]"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | trace(L" -- finished"); |
| | | return 1; |
| | | } |
| | | |
| | | int processhxd(xstring base, xstring sfile) |
| | | { |
| | | surePath(base, sfile); |
| | | trace(L"\r\n" + base + L"/" + sfile); |
| | | int ret = DownLoadFile2(L"/developer/" + sfile, base + L"/" + sfile); |
| | | if (ret < 0) |
| | | { |
| | | trace((xstring)L"\r\n error load:" + L"/developer/" + sfile + L" " + base + L"/" + sfile); |
| | | return -1; |
| | | } |
| | | |
| | | xml xhd ; |
| | | xhd.load(base + L"/" + sfile); |
| | | |
| | | KXMLDOMNodeList items = xhd.selectNodes(L"//project[count(@deleted)=0]"); |
| | | int len = items.length(); |
| | | for (int i = 0; i < len; i++) |
| | | { |
| | | KXMLDOMNode node = items.item(i); |
| | | xstring src = L""; |
| | | if (node.selectSingleNode(L"@src")) src = node.selectSingleNode(L"@src").text(); |
| | | if (src != L"") |
| | | { |
| | | xstring path = GetFolder(sfile); |
| | | src = src.replace(L"\\", L"/"); |
| | | processprj_xml(base, path, src, true); |
| | | } |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | int Initenv() |
| | | { |
| | | xstring values = L""; |
| | | if (xutil::HasCacheData(L"object-types"))values = xutil::GetUrlData(L"object-types"); |
| | | values = values.replace(L",,L", L",L"); |
| | | if (values != L"") |
| | | { |
| | | int pos = values.find(L",L", 0); |
| | | xstring typ = L""; |
| | | while (pos >= 0) |
| | | { |
| | | int pos1 = values.find(L",L", pos + 1); |
| | | if (pos1 < 0) break; |
| | | typ = values.mid(pos + 1, pos1 - pos - 1); |
| | | xutil::CacheUrlData(typ, L""); |
| | | if (pos1 == values.length())break; |
| | | pos = pos1; |
| | | } |
| | | } |
| | | return 1; |
| | | } |
| | | int Initenv_xml() |
| | | { |
| | | if (!toXml) |
| | | { |
| | | toXml = xml(); |
| | | } |
| | | else |
| | | { |
| | | if (toEle)toEle.Release(); |
| | | } |
| | | toXml.loadXML(L"<root/>"); |
| | | toEle = toXml.documentElement(); |
| | | return 1; |
| | | } |
| | | |
| | | int appendto(xstring typ, xstring val) |
| | | { |
| | | KXMLDOMElement ele; |
| | | KXMLDOMDocument doc = toEle.ownerDocument(); |
| | | KXMLDOMNode node = toEle.selectSingleNode(L"to[@name='" + typ + L"']"); |
| | | if (!node) |
| | | { |
| | | ele = doc.createElement(L"to"); |
| | | ele.setAttribute(L"name", typ); |
| | | toEle.appendChild(ele); |
| | | } |
| | | else |
| | | { |
| | | ele = node; |
| | | //node.Release(); |
| | | } |
| | | KXMLDOMElement t = doc.createElement(L"item"); |
| | | t.settext(val); |
| | | ele.appendChild(t); |
| | | return 1; |
| | | } |
| | | |
| | | int maketo_xml(xstring base) |
| | | { |
| | | toXml.save(base + L"/developer/working/index.xml"); |
| | | //return 1; |
| | | KXMLDOMNodeList items = toEle.selectNodes(L"to"); |
| | | int lens = items.length(); |
| | | xstring typ; |
| | | xstring val; |
| | | KXMLDOMNode node; |
| | | for (int i = 0; i < lens; i++) |
| | | { |
| | | node = items.item(i).selectSingleNode(L"@name"); |
| | | if (node) |
| | | { |
| | | typ = node.text(); |
| | | } |
| | | val = items.item(i).text(); |
| | | val = val.replace(L"[ln]", L"\r\n"); |
| | | xutil::SaveToFile(base + L"/developer/working/" + typ + L".tu", val, L"", L"", (LPTSTR)L""); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | int maketo(xstring base) |
| | | { |
| | | xstring values = L""; |
| | | xstring tvalue = L""; |
| | | if (xutil::HasCacheData(L"object-types"))values = xutil::GetUrlData(L"object-types"); |
| | | values = values.replace(L",,L", L",L"); |
| | | trace(values); |
| | | if (values != L"") |
| | | { |
| | | int len = values.length(); |
| | | int pos = values.find(L",L", 0); |
| | | xstring typ = L""; |
| | | while (pos >= 0) |
| | | { |
| | | int pos1 = values.find(L",L", pos + 1); |
| | | if (pos1 < 0) break; |
| | | typ = values.mid(pos + 1, pos1 - pos - 1); |
| | | tvalue = L""; |
| | | if (xutil::HasCacheData(typ))tvalue = xutil::GetUrlData(typ); |
| | | xutil::SaveToFile(base + L"/developer/working/" + typ + L".tu", xutil::GetUrlData(typ), L"", L"", (LPTSTR)L""); |
| | | if (pos1 == len)break; |
| | | pos = pos1; |
| | | } |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | int OnExport() |
| | | { |
| | | Initenv_xml(); |
| | | |
| | | int EM_EXLIMITTEXT = 0x400 + 53; |
| | | xcontrol xc = GetControl(L"output"); |
| | | //xcontrol xc = GetControl(L"frame:output"); |
| | | trace(L"\r\nstart export:"); |
| | | SendMessage(xc.GetHWND(), EM_EXLIMITTEXT, 0x00100000, 0); |
| | | int ret = processhxw(L"D:/jrjhome", L"/developer/projects/Projects.xhw"); |
| | | |
| | | trace(L"\r\nstart make to"); |
| | | maketo_xml(L"D:/jrjhome"); |
| | | trace(L"\r\nfinish export"); |
| | | return ret; |
| | | } |
| | | |
| | | //å½ä»¤åå¸å½æ° |
| | | int OnCmdDispatch(xstring comdid) |
| | | { |
| | | xsedit xs; |
| | | HCURSOR hCursor = xutil::SetCursorWait(); |
| | | xstring content = L""; |
| | | int result = 1; |
| | | if (comdid == L"xmCheckUrl") |
| | | { |
| | | xstring url1 = xcontrol(GetControl(L"frame:url")).GetText(); |
| | | return OnProcessUrl(L"info", url1); |
| | | } |
| | | else if (comdid == L"xmExport") |
| | | { |
| | | return OnExport(); |
| | | } |
| | | else if (comdid == L"xmClearBuffer") |
| | | { |
| | | xstring url2 = xcontrol(GetControl(L"frame:url")).GetText(); |
| | | return OnProcessUrl(L"clearbuffer", url2); |
| | | } |
| | | else if (comdid == L"xmFetchSql") |
| | | { |
| | | return FetchSql(); |
| | | } |
| | | else if (comdid == L"xmFetchVSql") |
| | | { |
| | | return FetchVSql(); |
| | | } |
| | | else if (comdid == L"xmSqlExec" || comdid == L"xmXQueryExec") |
| | | { |
| | | xs = GetControl(L"sqlcontent"); |
| | | int start = xs.GetSelectionStart(); |
| | | int end = xs.GetSelectionEnd(); |
| | | xs.GetContent(content); |
| | | if (start != end) |
| | | { |
| | | content = content.mid(start, end - start); |
| | | } |
| | | //alert(content); |
| | | |
| | | xml x; |
| | | xaserverarg xarg ; |
| | | xarg.AddArg(L"func", L"exec"); |
| | | if (comdid == L"xmXQueryExec") |
| | | { |
| | | xarg.AddArg(L"sql", L""); |
| | | xarg.AddArg(L"xquery", content); |
| | | } |
| | | else |
| | | { |
| | | xarg.AddArg(L"sql", content); |
| | | xarg.AddArg(L"xquery", L""); |
| | | } |
| | | |
| | | xaserver::ExecXQuery(GetServerUrl(), L"[sqlExec.xq]", xarg.GetString(), x); |
| | | |
| | | trace(x.xml()); |
| | | |
| | | KXMLDOMNodeList n = x.selectNodes(L"data/Item[1]/*"); |
| | | int len = n.length(); |
| | | xstring ls_labels = L""; |
| | | xstring ls_datas = L""; |
| | | for (int i = 0; i < len; i++) |
| | | { |
| | | KXMLDOMElement t = n.item(i); |
| | | xstring name = t.tagName(); |
| | | ls_labels += L"\r\n<cell><text>" + name + L"</text></cell>"; |
| | | ls_datas += L"\r\n<cell group='.' column='" + name + L"'></cell>"; |
| | | } |
| | | xstring ls_sheet = makeSheet(ls_labels, ls_datas); |
| | | xml x1; |
| | | x1.loadXML(ls_sheet); |
| | | //trace(ls_sheet); |
| | | |
| | | xdwgrid dw_list = GetControl(L"dw_list"); |
| | | dw_list.SetDataObject(x1); |
| | | dw_list.Retrieve(x); |
| | | dw_list.Redraw(); |
| | | } |
| | | else if (comdid == L"xmSaveAs") |
| | | { |
| | | xdwgrid dw_list1 = GetControl(L"dw_list"); |
| | | |
| | | |
| | | dw_list1.SaveAs(L""); |
| | | |
| | | return 1; |
| | | } |
| | | else if (comdid == L"xmEntitySel") |
| | | { |
| | | xaserverarg arg; |
| | | OpenWindow(L"dev:xpage[sqlSelect.vx]", arg); |
| | | xstring str = arg.GetArgString(L"select"); |
| | | { |
| | | xs = GetControl(L"sqlcontent"); |
| | | xs.GetContent(content); |
| | | int pos = xs.GetSelectionStart(); |
| | | |
| | | xstring txt = content.left(pos); |
| | | txt += str + L"\r\n"; |
| | | txt += content.right(content.length() - pos + 1); |
| | | xs.SetContent(txt, L".sql"); |
| | | } |
| | | } |
| | | else if (comdid == L"xmEditFind") |
| | | { |
| | | xutil::RestoreCursor(hCursor); |
| | | xs = GetControl(L"sqlcontent"); |
| | | xs.OnFindDlg(); |
| | | } |
| | | else if (comdid == L"xmEditReplace") |
| | | { |
| | | xutil::RestoreCursor(hCursor); |
| | | xs = GetControl(L"sqlcontent"); |
| | | xs.OnReplaceDlg(); |
| | | } |
| | | else |
| | | result = 0; |
| | | |
| | | xutil::RestoreCursor(hCursor); |
| | | return result; |
| | | } |
| | | |
| | | int CreateSubTree(HTREEITEM hitem, KXMLDOMNode e) |
| | | { |
| | | KXMLDOMNodeList listn = e.selectNodes(L"entity"); |
| | | int nlen = listn.length(); |
| | | int i = 0; |
| | | for (i = 0; i < nlen; i++) |
| | | { |
| | | KXMLDOMElement n = listn.item(i); |
| | | xstring cp = n.getAttribute(L"name"); |
| | | if (cp) |
| | | { |
| | | HTREEITEM pitem = m_exploer.InsertChildItem(hitem, cp, (LPARAM)n, 16); |
| | | } |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | int setGrid(KXMLDOMElement e, xstring caption) |
| | | { |
| | | xml x; |
| | | |
| | | xdwgrid grid = GetControl(caption); |
| | | if (!e.selectSingleNode(L"grid/sheet")) return 0; |
| | | x.loadXML(e.selectSingleNode(L"grid/sheet").xml()); |
| | | grid.SetDataObject(x); |
| | | if (!e.selectSingleNode(L"datas")) |
| | | { |
| | | grid.Redraw(); |
| | | return 0; |
| | | } |
| | | x.loadXML(e.selectSingleNode(L"datas").xml()); |
| | | grid.Retrieve(x); |
| | | grid.Redraw(); |
| | | return 1; |
| | | } |
| | | |
| | | xstring getCaption(xstring str) |
| | | { |
| | | while (str.find(L"@", 0) > 0) |
| | | { |
| | | xstring tmp = str.mid(str.find(L"@", 0) + 1, str.length()); |
| | | str = tmp; |
| | | } |
| | | return str; |
| | | } |
| | | |
| | | int OnDel(HTREEITEM item) |
| | | { |
| | | return 1; |
| | | } |
| | | |
| | | int OnRefresh(HTREEITEM item) |
| | | { |
| | | while (m_exploer.GetChildItem(item)) |
| | | m_exploer.DeleteItem(m_exploer.GetChildItem(item)); |
| | | OnTreeExpand(item); |
| | | return 1; |
| | | } |
| | | |
| | | KXMLDOMElement OnXQuery(xstring data) |
| | | { |
| | | HTREEITEM hItem = m_exploer.GetSelectedItem(); |
| | | xstring link = getLink(hItem); |
| | | xml x; |
| | | |
| | | xaserverarg arg ; |
| | | arg.AddArg(L"type", data); |
| | | arg.AddArg(L"link", link); |
| | | |
| | | if (xaserver::ExecXQuery(GetServerUrl(), L"[sqlWatch.xq]", arg.GetString(), x) != 1) { |
| | | trace(x.xml()); |
| | | return KXMLDOMElement(); |
| | | } |
| | | return x.documentElement(); |
| | | } |
| | | |
| | | int OnOpen(xstring caption, xstring kind) |
| | | { |
| | | return 1; |
| | | } |
| | | |
| | | int OnQuery(xstring caption) |
| | | { |
| | | if (OnOpen(caption, L"query") == 0) return 0; |
| | | //KXMLDOMElement e = OnXQuery(L"column@"+caption); |
| | | KXMLDOMElement e = OnXQuery(L"Entity/Table/Query@" + caption); |
| | | if (!e) return 0; |
| | | KXMLDOMNodeList nodes = e.selectNodes(L"columns/column"); |
| | | int i; |
| | | int s = nodes.length(); |
| | | xstring str; |
| | | str = L"SELECT TOP 500 \r\n"; |
| | | for (i = 0; i < s; i++) |
| | | { |
| | | KXMLDOMElement ele = nodes.item(i); |
| | | xstring tmp = ele.getAttribute(L"name"); |
| | | if (i < s - 1) tmp = tmp + L",L"; |
| | | str += L"\t" + tmp + L"\r\n"; |
| | | } |
| | | //str += L"FROM " + caption; |
| | | str += L"FROM {qt:Entity('" + caption + L"')} "; |
| | | |
| | | xstring content; |
| | | xsedit xs = GetControl(L"sqlcontent"); |
| | | xs.GetContent(content); |
| | | content += L"\r\n" + str; |
| | | xs.SetContent(content, L".sql"); |
| | | |
| | | /*xsedit xs = GetControl(L"sql_"+caption); |
| | | xs.LoadContent(str,L".sql"); |
| | | |
| | | setGrid(e,L"grid_"+caption); |
| | | */ |
| | | |
| | | //trace(e.xml); |
| | | setGrid(e, L"dw_list"); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int OnEdit(xstring caption) |
| | | { |
| | | /* |
| | | if(OnOpen(caption,L"edit")==0) return 0; |
| | | KXMLDOMElement e = OnXQuery(L"edit@"+caption); |
| | | if(!e) return 0; |
| | | setGrid(e,L"editgrid_"+caption); |
| | | */ |
| | | return 1; |
| | | } |
| | | |
| | | int OnDesign(xstring caption) |
| | | { |
| | | if (OnOpen(caption, L"design") == 0) return 0; |
| | | OpenWindow(L"dev:xpage[SqlTypeFieldMaint.vx]", caption); |
| | | /* |
| | | if(OnOpen(caption,L"design")==0) return 0; |
| | | KXMLDOMElement e = OnXQuery(L"design@"+caption); |
| | | if(!e) return 0; |
| | | setGrid(e,L"designgrid_"+caption);*/ |
| | | return 1; |
| | | } |
| | | |
| | | int OnTreeRClick(TEvent* evt,LPARAM param) |
| | | { |
| | | TVNNMHDR& nmtv = *(TVNNMHDR*)evt->notify.pnmh; |
| | | HTREEITEM item = nmtv.FromItem; |
| | | xstring data = m_exploer.GetItemData(item); |
| | | xstring popup; |
| | | xstring menu = L"<root>"; |
| | | xstring str = L""; |
| | | if (data == L"table") |
| | | { |
| | | menu += L"<Item>æ°å»ºè¡¨</Item>"; |
| | | menu += L"<Item>æ°å»ºåç»</Item>"; |
| | | menu += L"<Item>-</Item>"; |
| | | menu += L"<Item>å·æ°</Item>"; |
| | | menu += L"</root>"; |
| | | str = m_exploer.PopupMenu(menu); |
| | | popup = str; |
| | | } |
| | | else if (data.left(13) == L"Entity/Table@" && data.find(L"@", 14) < 0) |
| | | { |
| | | menu += L"<Item>æ°å»ºå®ä½</Item>"; |
| | | menu += L"<Item>设计</Item>"; |
| | | menu += L"<Item>-</Item>"; |
| | | menu += L"<Item>æå¼å500è¡</Item>"; |
| | | menu += L"<Item>ç¼è¾å200è¡</Item>"; |
| | | menu += L"<Item>-</Item>"; |
| | | menu += L"<Item>éå½å</Item>"; |
| | | menu += L"<Item>å·æ°</Item>"; |
| | | menu += L"<Item>å é¤</Item>"; |
| | | menu += L"</root>"; |
| | | |
| | | str = m_exploer.PopupMenu(menu); |
| | | popup = str; |
| | | } |
| | | else if (data.left(6) == L"table@" && data.find(L"@", 7) < 0) |
| | | { |
| | | menu += L"<Item>æ°å»ºè¡¨</Item>"; |
| | | menu += L"<Item>设计</Item>"; |
| | | menu += L"<Item>-</Item>"; |
| | | menu += L"<Item>æå¼å500è¡</Item>"; |
| | | menu += L"<Item>ç¼è¾å200è¡</Item>"; |
| | | menu += L"<Item>-</Item>"; |
| | | menu += L"<Item>éå½å</Item>"; |
| | | menu += L"<Item>å·æ°</Item>"; |
| | | menu += L"<Item>å é¤</Item>"; |
| | | menu += L"</root>"; |
| | | str = m_exploer.PopupMenu(menu); |
| | | popup = str; |
| | | } |
| | | else if (data.left(6) == L"group@") |
| | | { |
| | | menu += L"<Item>éå½å</Item>"; |
| | | menu += L"<Item>å·æ°</Item>"; |
| | | menu += L"<Item>å é¤</Item>"; |
| | | menu += L"</root>"; |
| | | str = m_exploer.PopupMenu(menu); |
| | | popup = str; |
| | | } |
| | | else if (data.left(5) == L"view@" || data.left(10) == L"procedure@" || data.left(9) == L"function@") |
| | | { |
| | | menu += L"<Item>éå½å</Item>"; |
| | | menu += L"<Item>ä¿®æ¹</Item>"; |
| | | menu += L"<Item>å é¤</Item>"; |
| | | menu += L"</root>"; |
| | | str = m_exploer.PopupMenu(menu); |
| | | popup = str; |
| | | } |
| | | |
| | | xstring caption = getCaption(data); |
| | | /*if(popup == L"æ°å»ºåç»") |
| | | OnNewGroup(item); |
| | | else*/ if (popup == L"å é¤") |
| | | OnDel(item); |
| | | else if (popup == L"å·æ°") |
| | | OnRefresh(item); |
| | | else if (popup == L"æå¼å500è¡") |
| | | OnQuery(caption); |
| | | else if (popup == L"ç¼è¾å200è¡") |
| | | OnEdit(caption); |
| | | else if (popup == L"设计") |
| | | OnDesign(caption); |
| | | /*else if(popup == L"æ°å»ºè¡¨") |
| | | { |
| | | xstring guid = GetGuid(); |
| | | xstring text = L"Table_" + guid.mid(1,8); |
| | | OnDesign(text); |
| | | } |
| | | else if(popup == L"ä¿®æ¹") |
| | | OnOpen(caption,L"query");*/ |
| | | return 1; |
| | | } |
| | | |
| | | int OnTreeAdd(HTREEITEM hItem, xstring typ, KXMLDOMElement e) |
| | | { |
| | | KXMLDOMNodeList nodes = e.selectNodes(L"*"); |
| | | int i; |
| | | int s = nodes.length(); |
| | | for (i = 0; i < s; i++) |
| | | { |
| | | KXMLDOMElement ele = nodes.item(i); |
| | | xstring name = ele.getAttribute(L"name"); |
| | | xstring image = ele.getAttribute(L"image"); |
| | | xstring d = ele.getAttribute(L"data"); |
| | | xstring c = ele.getAttribute(L"child"); |
| | | image = L"" + image; |
| | | if (d == L"") |
| | | d = typ + L"@" + name; |
| | | HTREEITEM j = m_exploer.InsertChildItem(hItem, L"" + name, (LPARAM)d.c_str(true), image.toInt()); |
| | | if (c != L"") |
| | | { |
| | | if (c.toInt() > 0)m_exploer.SetItemChild1(j, 1); |
| | | } |
| | | else |
| | | { |
| | | if (image.toInt() > 9)m_exploer.SetItemChild1(j, 1); |
| | | } |
| | | OnTreeAdd(j, d, ele); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | int OnTreeExpand(HTREEITEM hItem) |
| | | { |
| | | xstring typ = m_exploer.GetItemData(hItem); |
| | | xstring link = getLink(hItem); |
| | | xml x; |
| | | |
| | | xaserverarg arg; |
| | | arg.AddArg(L"type", typ); |
| | | arg.AddArg(L"link", link); |
| | | |
| | | if (xaserver::ExecXQuery(GetServerUrl(), L"[sqlWatch.xq]", arg.GetString(), x) != 1) |
| | | { |
| | | trace(x.xml()); |
| | | return 0; |
| | | } |
| | | KXMLDOMElement e = x.documentElement(); |
| | | OnTreeAdd(hItem, typ, e); |
| | | return 1; |
| | | } |
| | | |
| | | int OnTreeExpanding(TEvent* evt, int p) |
| | | { |
| | | NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; |
| | | HTREEITEM hItem = nmtv.itemNew.hItem; |
| | | if (m_exploer.GetChildItem(hItem)) return 0; |
| | | OnTreeExpand(hItem); |
| | | return 1; |
| | | } |
| | | |
| | | int CreateRootTree(xml x) |
| | | { |
| | | KXMLDOMNodeList listx = x.selectNodes(L"//group"); |
| | | int nlen = listx.length(); |
| | | int i = 0; |
| | | for (i = 0; i < nlen; i++) |
| | | { |
| | | KXMLDOMElement n = listx.item(i); |
| | | xstring cp = n.getAttribute(L"caption"); |
| | | if (cp) |
| | | { |
| | | HTREEITEM hitem = m_exploer.InsertChildItem( 0, cp, n, 15); |
| | | trace(xstring((_int64)hitem).c_str()); |
| | | CreateSubTree(hitem, n); |
| | | m_exploer.ExpandItemAll(hitem); |
| | | } |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | int ExpandChildFolder(HTREEITEM hItem, KXMLDOMElement pElement) |
| | | { |
| | | KXMLDOMNodeList nlist = pElement.selectNodes(L"Item"); |
| | | int len = nlist.length(); |
| | | for (int i = 0; i < len; i++) |
| | | { |
| | | KXMLDOMElement e = nlist.item(i); |
| | | xstring name = e.getAttribute(L"name"); |
| | | xstring sImage = e.getAttribute(L"image"); |
| | | xstring data = e.getAttribute(L"data"); |
| | | int image = 15; |
| | | if (sImage) image = sImage.toInt(); |
| | | HTREEITEM h = m_exploer.InsertChildItem(hItem, name, (LPARAM)data.c_str(true), image); |
| | | m_exploer.SetItemChild(h, 1); |
| | | ExpandChildFolder(h, e); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | int InitialFolder() |
| | | { |
| | | KXMLDOMElement xframeElement = GetElement(); |
| | | KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_exploer']/initial"); |
| | | ExpandChildFolder(0, e); |
| | | return 1; |
| | | } |
| | | |
| | | //å½ä»¤å¤çäºä»¶ |
| | | int OnXCommand(TEvent* evt, LPARAM param) |
| | | { |
| | | return OnCmdDispatch(evt->xcommand.pStrID); |
| | | } |
| | | |
| | | int OnAttachEvent() |
| | | { |
| | | //ç»å®å·¥å
·æ¡ç¹å»äºä»¶ |
| | | AttachEvent(L"WM_XCOMMAND", (FEvent) & SqlWatchWin::OnXCommand); |
| | | //è·åç¦ç¹äºä»¶ï¼ç¨äºé置工å
·æ¡ |
| | | AttachEvent(L"WM_SETFOCUS", (FEvent)&SqlWatchWin::OnSetFocus); |
| | | AttachEvent(L"tv_exploer", L"TVN_ITEMEXPANDING", (FEvent)&SqlWatchWin::OnTreeExpanding); |
| | | AttachEvent(L"tv_exploer", L"TVN_RCLICK", (FEvent)&SqlWatchWin::OnTreeRClick); |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | OnAttachEvent(); |
| | | m_exploer = GetControl(L"tv_exploer"); |
| | | |
| | | xml x; |
| | | |
| | | |
| | | InitialFolder(); |
| | | //if(xaserver::FetchXml(L"",L"dev:xml[sale.entity.xml]",L"",x)==1)CreateRootTree(x); |
| | | |
| | | xsedit xs = GetControl(L"sqlcontent"); |
| | | xs.SetContent(L"--import 'qx.object.xq'", L".sql"); |
| | | |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int onloaded() |
| | | { |
| | | SetAgent(); |
| | | |
| | | |
| | | return 1; |
| | | } |
| | | }; |