Exemplo n.º 1
0
        // 导出
        private void button_export_Click(object sender, System.EventArgs e)
        {
            // 未按下Control键, 一般导出功能
            if (!(Control.ModifierKeys == Keys.Control))
            {
                button_CopyToFile_Click(null, null);
                return;
            }

            // 特殊导出功能
            int nRet;
            string strError = "";

            TreeNode node = treeView1.SelectedNode;

            if (node == null)
            {
                MessageBox.Show(this, "请先选定要导出的方案...");
                return;
            }

            string strSourceProjectName = node.FullPath;

            string strSourceLocate = "";

            // 获得源方案参数
            // strProjectNamePath	方案名,或者路径
            // return:
            //		-1	error
            //		0	not found project
            //		1	found
            nRet = scriptManager.GetProjectData(
                strSourceProjectName,
                out strSourceLocate);
            if (nRet == -1)
            {
                MessageBox.Show(this, "source GetProjectData() " + strSourceProjectName + " error...");
                return;
            }
            if (nRet == 0)
            {
                MessageBox.Show(this, "source project " + strSourceProjectName + " not found error...");
                return;
            }

            // 询问project*.xml文件全路径
            SaveFileDialog projectDefFileDlg = new SaveFileDialog();

            projectDefFileDlg.CreatePrompt = false;
            projectDefFileDlg.FileName = "outer_projects.xml";
            projectDefFileDlg.InitialDirectory = Environment.CurrentDirectory;
            projectDefFileDlg.Filter = "projects files (outer*.xml)|outer*.xml|All files (*.*)|*.*";
            //dlg.FilterIndex = 2 ;
            projectDefFileDlg.RestoreDirectory = true;

            if (projectDefFileDlg.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            // 如果文件不存在,则创建之
            if (File.Exists(projectDefFileDlg.FileName) == false)
                ScriptManager.CreateDefaultProjectsXmlFile(projectDefFileDlg.FileName,
                    "outercfgs");

            // 创建ScriptManager对象
            ScriptManager newScriptManager = new ScriptManager();
            newScriptManager.applicationInfo = null;	//applicationInfo;
            newScriptManager.CfgFilePath = projectDefFileDlg.FileName;
            newScriptManager.Load();

            // 查询Project路径+名是否已经在输出的projects.xml已经存在

            REDOEXPORT:

            string strTargetLocate = "";
            // 获得方案参数
            // strProjectNamePath	方案名,或者路径
            // return:
            //		-1	error
            //		0	not found project
            //		1	found
            nRet = newScriptManager.GetProjectData(
                strSourceProjectName,
                out strTargetLocate);
            if (nRet == -1)
            {
                MessageBox.Show(this, "target GetProjectData() " + strSourceProjectName + " error...");
                return;
            }

            // 发现重名,询问是否覆盖
            if (nRet == 1)
            {
                string strText = "外部方案集\r\n  (由文件 '" + projectDefFileDlg.FileName + "' 管理)\r\n已经存在一个与源 \r\n'"
                    + strSourceProjectName + "'\r\n 同名的方案\r\n  (其磁盘目录位于 '"
                    + strTargetLocate + "')。\r\n\r\n"
                    + "请问是否覆盖此方案?\r\n(Yes=覆盖; No=改名后导出;Cancel=放弃操作)\r\n\r\n注意:覆盖后无法还原。";


                DialogResult msgResult = MessageBox.Show(this,
                    strText,
                    "script",
                    MessageBoxButtons.YesNoCancel,
                    MessageBoxIcon.Question,
                    MessageBoxDefaultButton.Button2);
                if (msgResult == DialogResult.Cancel)
                    return;

                if (msgResult == DialogResult.Yes)
                {	// 覆盖
                    // 拷贝目录
                    nRet = PathUtil.CopyDirectory(strSourceLocate,
                        strTargetLocate,
                        true,
                        out strError);
                    if (nRet == -1)
                        goto ERROR1;
                    goto END1;
                }
                else
                {	// 改名


                    // 询问新名字
                    GetProjectNameDlg nameDlg = new GetProjectNameDlg();
                    GuiUtil.AutoSetDefaultFont(nameDlg);

                    nameDlg.Text = "请选定目标(外部)新方案名";
                    nameDlg.scriptManager = newScriptManager;
                    nameDlg.ProjectName = strSourceProjectName;

                    nameDlg.StartPosition = FormStartPosition.CenterScreen;
                    nameDlg.ShowDialog(this);

                    if (nameDlg.DialogResult != DialogResult.OK)
                        goto END2;

                    strSourceProjectName = nameDlg.ProjectName;
                    goto REDOEXPORT;

                }



            }
            else // 不重名,直接复制
            {
                // 创建一个新的project,获得strTargetLocate
                int nPrefixNumber = -1;	// 0
                strTargetLocate = newScriptManager.NewProjectLocate(
                    PathUtil.PureName(strSourceLocate),	// 尽量取和源相同的末级目录名
                    ref nPrefixNumber);

                // 拷贝目录
                nRet = PathUtil.CopyDirectory(strSourceLocate,
                    strTargetLocate,
                    true,
                    out strError);
                if (nRet == -1)
                    goto ERROR1;

                // 实际插入project参数
                XmlNode projNode = newScriptManager.NewProjectNode(
                    strSourceProjectName,	// 沿用原来的名字
                    strTargetLocate,
                    false);	// false表示不需要创建目录和缺省文件

            }

        END1:

            newScriptManager.Save();
            MessageBox.Show(this, "方案 '" + strSourceProjectName
                + "' \r\n已经成功导出到文件 \r\n'"
                + newScriptManager.CfgFilePath + "' \r\n所管理的外部方案集内。");
            return;
        END2:
            return;
        ERROR1:
            MessageBox.Show(this, strError);
            return;
        }
Exemplo n.º 2
0
        // 导入
        private void button_import_Click(object sender, System.EventArgs e)
        {
            // 未按下Control键, 一般导入功能 -- 导入当前目录
            if (!(Control.ModifierKeys == Keys.Control))
            {
                button_PasteFromFile_Click(null, null);
                return;
            }

            int nRet;
            string strError = "";

            // 询问project*.xml文件全路径
            OpenFileDialog projectDefFileDlg = new OpenFileDialog();

            projectDefFileDlg.FileName = "outer_projects.xml";
            projectDefFileDlg.InitialDirectory = Environment.CurrentDirectory;
            projectDefFileDlg.Filter = "projects files (outer*.xml)|outer*.xml|All files (*.*)|*.*";
            //dlg.FilterIndex = 2 ;
            projectDefFileDlg.RestoreDirectory = true;

            if (projectDefFileDlg.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            ScriptManager newScriptManager = new ScriptManager();
            newScriptManager.applicationInfo = null;	//applicationInfo;
            newScriptManager.CfgFilePath = projectDefFileDlg.FileName;
            newScriptManager.Load();

            // 选取要Import的Project名

            GetProjectNameDlg nameDlg = new GetProjectNameDlg();
            GuiUtil.AutoSetDefaultFont(nameDlg);

            nameDlg.Text = "请选定要导入的外部方案名";
            nameDlg.scriptManager = newScriptManager;
            /*
            nameDlg.textBox_projectName.Text = applicationInfo.GetString(
                "projectmanagerdlg_import",
                "lastUsedProject",
                "");
            */

            nameDlg.StartPosition = FormStartPosition.CenterScreen;
            nameDlg.ShowDialog(this);

            if (nameDlg.DialogResult != DialogResult.OK)
                return;

            string strSourceProjectName = nameDlg.ProjectName;

            string strSourceLocate = "";

            // 获得源方案参数
            // strProjectNamePath	方案名,或者路径
            // return:
            //		-1	error
            //		0	not found project
            //		1	found
            nRet = newScriptManager.GetProjectData(
                strSourceProjectName,
                out strSourceLocate);
            if (nRet == -1)
            {
                MessageBox.Show(this, "source GetProjectData() " + strSourceProjectName + " error...");
                return;
            }
            if (nRet == 0)
            {
                MessageBox.Show(this, "source project " + strSourceProjectName + " not found error...");
                return;
            }


            /*
            applicationInfo.SetString(
                "projectmanagerdlg_import",
                "lastUsedProject",
                nameDlg.textBox_projectName.Text);
            */

            REDOEXPORT:

            string strTargetLocate = "";
            // 获得目标方案参数
            // strProjectNamePath	方案名,或者路径
            // return:
            //		-1	error
            //		0	not found project
            //		1	found
            nRet = this.scriptManager.GetProjectData(
                strSourceProjectName,
                out strTargetLocate);
            if (nRet == -1)
            {
                MessageBox.Show(this, "target GetProjectData() " + strSourceProjectName + " error...");
                return;
            }

            // 发现重名,询问是否覆盖
            if (nRet == 1)
            {
                string strText = "当前已经存在与源 '"
                    + strSourceProjectName + "' 同名的目标方案(磁盘目录位于'"
                    + strTargetLocate + "')。\r\n\r\n"
                    + "请问是否覆盖已有的目标方案?\r\n(Yes=覆盖; No=改名后导入;Cancel=放弃操作)";

                DialogResult msgResult = MessageBox.Show(this,
                    strText,
                    "script",
                    MessageBoxButtons.YesNoCancel,
                    MessageBoxIcon.Question,
                    MessageBoxDefaultButton.Button2);
                if (msgResult == DialogResult.Cancel)
                    return;
                if (msgResult == DialogResult.Yes)
                {	// 覆盖
                    // 拷贝目录
                    nRet = PathUtil.CopyDirectory(strSourceLocate,
                        strTargetLocate,
                        true,
                        out strError);
                    if (nRet == -1)
                        goto ERROR1;
                    goto END1;
                }
                else
                {	// 改名
                    // 询问新名字
                    nameDlg = new GetProjectNameDlg();
                    GuiUtil.AutoSetDefaultFont(nameDlg);

                    nameDlg.Text = "请制定目标(系统内)新方案名";
                    nameDlg.scriptManager = this.scriptManager;
                    nameDlg.ProjectName = strSourceProjectName;

                    nameDlg.StartPosition = FormStartPosition.CenterScreen;
                    nameDlg.ShowDialog(this);

                    if (nameDlg.DialogResult != DialogResult.OK)
                        goto END2;

                    strSourceProjectName = nameDlg.ProjectName;
                    goto REDOEXPORT;

                }



            }
            else // 不重名,直接复制
            {
                // 创建一个新的project,获得strTargetLocate
                int nPrefixNumber = -1;	// 0
                strTargetLocate = this.scriptManager.NewProjectLocate(
                    PathUtil.PureName(strSourceLocate),	// 尽量取和源相同的末级目录名
                    ref nPrefixNumber);

                // 拷贝目录
                nRet = PathUtil.CopyDirectory(strSourceLocate,
                    strTargetLocate,
                    true,
                    out strError);
                if (nRet == -1)
                    goto ERROR1;

                // 实际插入project参数
                XmlNode projNode = this.scriptManager.NewProjectNode(
                    strSourceProjectName,	// 沿用原来的名字
                    strTargetLocate,
                    false);	// false表示不需要创建目录和缺省文件

                // 兑现显示?
                scriptManager.RefreshTree(treeView1);
            }

        END1:

            this.scriptManager.Save();



            TreeViewUtil.SelectTreeNode(treeView1,
                strSourceProjectName,
                '/');

            MessageBox.Show(this, "外部方案 '" + strSourceProjectName + "' 已经成功导入本系统。");
            return;
        END2:
            return;
        ERROR1:
            MessageBox.Show(this, strError);
            return;
        }