LiFan
2024-12-06 82e654c6dd91f37dd3cd669a439df759e7e0e3a8
update
已修改2个文件
278 ■■■■■ 文件已修改
jrj/xframe/devloper/XDevEditXWKDlg.cpp 136 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/devloper/XDevEditXWorkNode.cpp 142 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/devloper/XDevEditXWKDlg.cpp
@@ -10,127 +10,62 @@
#include "XDevEditPage.hpp"
using xml = KXMLDOMDocument;
class export XDevEditXRuler : public XDevEditPage
class export dw_xwkdlg : public XDevEditPage
{
    public:
    XDevEditXRuler(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {}
    dw_xwkdlg(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {}
public:
    static XDevEditXRuler* CreateInstance(void* implPtr, void* hWnd)
    static dw_xwkdlg* CreateInstance(void* implPtr, void* hWnd)
    {
        XDevEditXRuler* pWin = new XDevEditXRuler(implPtr, (HWND)hWnd);
        dw_xwkdlg* pWin = new dw_xwkdlg(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);
        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();
        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;
    }
    xtreeview tv_folder;
    //命令发布函数
    int OnCmdDispatch(xstring comdid)
    {
        xstring content;
        xsedit xs = GetControl(L"xcontent");
        xs.GetContent(content);
        HCURSOR hCursor = xutil::SetCursorWait();
        if (comdid == L"xmFileSave")
        if (GetWinParam())
        {
            //save xml content
            SaveContent(content);
            SetArg();
            xaserverarg arg = GetArg();
            if (comdid == L"xmDevOk")
            {
                HTREEITEM hItem = tv_folder.GetSelectedItem();
                if (hItem <= 0)
                {
                    MessageBox(0,L"请选择功能模块!",L"",0);
                    return 1;
        }
        else if (comdid == L"xmValid")
                KXMLDOMElement e = tv_folder.GetItemData(hItem);
                //xstring node = e.tagName();
                xstring node = e.getAttribute(L"name");
                if (node== L"file")
        {
            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);
                    xstring caption = e.getAttribute(L"caption");
                    xstring guid = e.getAttribute(L"guid");
                    arg.AddArg(L"guid",L"" + guid);
                    arg.AddArg(L"caption",L"" + caption);
                }
                else
                {
                    trace(L"XML 错误");
                    MessageBox(0,L"请选择功能模块!",L"",0);
                    return 1;
                }
                return -1;
            }
            /*xstring sType = OnGetType();
            if (sType == L"xml.xsd")
            else
            {
                xstring sError;
                x.ValidSchema(content, &sError);
                trace(sError);
            }*/
                arg.AddArg(L"guid",L"");
                arg.AddArg(L"caption",L"");
        }
        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);
        CloseWindow();
        return 0;
    }
    //命令处理事件
    int OnXCommand(TEvent* evt,LPARAM param)
    int OnXCommand(TEvent* evt, LPARAM p)
    {
        return OnCmdDispatch(evt->xcommand.pStrID);
    }
@@ -138,15 +73,11 @@
    int OnAttachEvent()
    {
        //绑定工具条点击事件
        AttachEvent(L"WM_XCOMMAND", (FEvent)&XDevEditXRuler::OnXCommand);
        //获取焦点事件,用于重置工具条
        AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXRuler::OnSetFocus);
        AttachEvent(L"WM_XCOMMAND", (FEvent)&dw_xwkdlg::OnXCommand);
    }
    int OnInitial()
    {
        SetAgent();
        OnAttachEvent();
        return 1;
@@ -154,9 +85,10 @@
    int onload()
    {
        SetArg();
        tv_folder = GetControl(L"DevExplorer");
        OnInitial();
        LoadData();
        if (GetWinParam()) alert(L"xxx");
        return 1;
    }
};
jrj/xframe/devloper/XDevEditXWorkNode.cpp
@@ -10,24 +10,26 @@
#include "XDevEditPage.hpp"
using xml = KXMLDOMDocument;
class export XDevEditXRuler : public XDevEditPage
class export XDevEditWorkNode : public XDevEditPage
{
    public:
    XDevEditXRuler(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {}
    XDevEditWorkNode(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {}
public:
    static XDevEditXRuler* CreateInstance(void* implPtr, void* hWnd)
    static XDevEditWorkNode* CreateInstance(void* implPtr, void* hWnd)
    {
        XDevEditXRuler* pWin = new XDevEditXRuler(implPtr, (HWND)hWnd);
        XDevEditWorkNode* pWin = new XDevEditWorkNode(implPtr, (HWND)hWnd);
        return pWin;
    }
private:    //
    xaserverarg arg;
    //xdwgrid    dw_list;
    xnode    m_agentNode;    //Agent Condition
    xstring    m_agentCond;    //Agent Node
    int SetAgent()
    {
        /*xstring xfNodeAgentArea  = L"agentarea";
        /*
        xstring xfNodeAgentArea  = L"agentarea";
        xnode anode = GetAgentNode(xfNodeAgentArea);
        var xframeElement =  GetElement();
        var agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*");
@@ -35,112 +37,108 @@
        {
            xstring s = agent.xml;
            m_agentNode =  SetAgentNodeContent (anode,s);
        }*/
        }
        */
        return 1;
    }
    //焦点激活处理函数
    int OnSetFocus(TEvent* evt,LPARAM param)
    int OnSetFocus(TEvent* evt, LPARAM p)
    {
        SetAgent();
        //重置工具条
        SetAgent();
        return 1;
    }
    int LoadData()
    {
        SetArg();
        if (!GetWinParam()) return 1;
        xstring content = GetData();
        if (content != L"")
        {
            xsedit xs = GetControl(L"xcontent");
            xs.LoadContent(content,L".xml");
        }
        return 1;
    }
            xml x;
            var xdoc = x.GetXmlDoc();
            xdoc.load(content);
            xstring s = xdoc.xml;
            trace(s);
    xstring OnGetType()
            //IXMLDOMDocument xdoc = x.GetXmlDoc();
            //IXMLDOMElement e = x.GetXmlDoc().selectSingleNode(L"config/ruler");
        }
        /*arg = GetParam();
        if(arg)
    {
        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 val;
            xcontrol xc;
            val = arg.GetArgString(L"typename");
            xc = GetControl(L"xmDevType");
            if(val)xc.SetText(val);
            val = arg.GetArgString(L"name");
            xc = GetControl(L"xmDevName");
            if(val)xc.SetText(val);
            val = arg.GetArgString(L"desc");
            xc = GetControl(L"xmDevDesc");
            if(val)xc.SetText(val);
            val = arg.GetArgString(L"uri");
            xc = GetControl(L"xmDevUri");
            if(val)xc.SetText(val);
            val = arg.GetArgString(L"src");
            xc = GetControl(L"xmDevPath");
            if(val)xc.SetText(val);
            val = arg.GetArgString(L"guid");
            xc = GetControl(L"xmDevGuid");
            if(val)xc.SetText(val);
        }*/
        return 1;
    }
    //命令发布函数
    int OnCmdDispatch(xstring comdid)
    {
        xstring content;
        xsedit xs = GetControl(L"xcontent");
        xs.GetContent(content);
        if (comdid == L"xmWorkNodeSave")
        {
        HCURSOR hCursor = xutil::SetCursorWait();
        if (comdid == L"xmFileSave")
        {
            //save xml content
            xstring content;
            xsedit xs = GetControl(L"sqlcontent");
            xs.GetContent(content);
            SaveContent(content);
        }
        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 错误");
                }
                return -1;
            }
            /*xstring sType = OnGetType();
            if (sType == L"xml.xsd")
            {
                xstring sError;
                x.ValidSchema(content, &sError);
                trace(sError);
            }*/
        }
        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);
        }
        else if (comdid == L"xmPreview")
        {
        }
        else if (comdid == L"xmWorkNodeSelect")
        {
        }
        else if (comdid == L"xmWorkNodeSelectEx")
        {
        }
        else if (comdid == L"xmWorkNodeSelectEx1")
        {
        }
        return 0;
    }
    //命令处理事件
    int OnXCommand(TEvent* evt,LPARAM param)
    int OnXCommand(TEvent* evt, LPARAM p)
    {
        return OnCmdDispatch(evt->xcommand.pStrID);
    }
    int OnAttachEvent()
    {
        //绑定工具条点击事件
        AttachEvent(L"WM_XCOMMAND", (FEvent)&XDevEditXRuler::OnXCommand);
        AttachEvent(L"WM_XCOMMAND", (FEvent)&XDevEditWorkNode::OnXCommand);
        //获取焦点事件,用于重置工具条
        AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXRuler::OnSetFocus);
        AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditWorkNode::OnSetFocus);
    }
    int OnInitial()