Beispiel #1
0
        /// <summary>
        /// 初始化数据元
        /// </summary>
        /// <param name="graphElement">索引的图元</param>
        /// <returns>数据元</returns>
        public DataElement InitDataElement(GraphElement graphElement)
        {
            // 执行逻辑操作
            LogicBaseManager logicManager = Helper.GetHelper().GetLogicManager(flowChartManager.CurrentChartMode);

            logicManager.DoLogicOperation(flowChartManager, LogicType.InitializeDataElement, graphElement);

            return(initializedDataElement);
        }
Beispiel #2
0
        /// <summary>
        /// 编辑数据元
        /// </summary>
        /// <param name="graphElement">索引的图元</param>
        /// <returns>是否编辑成功</returns>
        public bool EditData(GraphElement graphElement)
        {
            bool success = false;

            DataElement dataElement = graphTable[graphElement] as DataElement;

            if (dataElement != null) // 找到该图元绑定的数据元
            {
                // 执行逻辑操作
                LogicBaseManager logicManager = Helper.GetHelper().GetLogicManager(flowChartManager.CurrentChartMode);
                success = logicManager.DoLogicOperation(flowChartManager, LogicType.Edit, graphElement);
            }
            else
            {
                MessageBox.Show("该图元没有绑定数据元!", "数据元编辑", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

            return(success);
        }
Beispiel #3
0
        /// <summary>
        /// 加载逻辑管理器
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <returns>逻辑管理器</returns>
        private LogicBaseManager LoadLogicManager(string filePath, string className)
        {
            LogicBaseManager logicBaseManager = null;

            try
            {
                string fullPath = Path.Combine(Application.StartupPath, @"Plugins\FlowChart");
                fullPath = Path.Combine(fullPath, filePath);
                Assembly assembly = Assembly.LoadFrom(fullPath);
                logicBaseManager = assembly.CreateInstance(className) as LogicBaseManager;
            }
            catch (Exception ex)
            {
                MessageBox.Show(string.Format("加载逻辑文件 {0} 时产生异常:\r\n{1}", filePath, ex.Message), "初始化逻辑",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            return(logicBaseManager);
        }
Beispiel #4
0
        /// <summary>
        /// 获取逻辑管理器实例
        /// </summary>
        /// <param name="chartMode">当前编辑模式</param>
        /// <returns>逻辑管理器实例</returns>
        public LogicBaseManager GetLogicManager(ChartMode chartMode)
        {
            LogicBaseManager logicManager = null;

            switch (chartMode)
            {
            case ChartMode.FlowChart:     // 编辑流程图模式
            {
                logicManager = FlowChartLogicManager;
                break;
            }

            case ChartMode.AIChart:     // 编辑AI图模式
            {
                logicManager = AIChartLogicManager;
                break;
            }
            }

            return(logicManager);
        }
Beispiel #5
0
        /// <summary>
        /// 初始化逻辑管理器
        /// </summary>
        public void InitLogicManager()
        {
            string filePath = Path.Combine(Application.StartupPath, configFileName);
            
            if (File.Exists(filePath))
            {
                Lua lua = new Lua();

                lua.DoFile(filePath);
                LuaTable configTable = lua.GetTable("Config") as LuaTable;

                string[] diagramNameArray = new string[maxDiagramCount];

                foreach (object key in configTable.Keys)
                {
                    LuaTable logicManagerTable = configTable[key] as LuaTable;

                    if (logicManagerTable != null)
                    {
                        // 读取逻辑管理器信息
                        string logicManagerFilePath = logicManagerTable["LogicManagerFilePath"] as string;
                        string logicManagerClassName = logicManagerTable["LogicManagerClassName"] as string;
                        LogicBaseManager logicManager = null;

                        if (!string.IsNullOrEmpty(logicManagerFilePath) && !string.IsNullOrEmpty(logicManagerClassName))
                        {
                            logicManager = LoadLogicManager(logicManagerFilePath, logicManagerClassName);
                        }
                        else
                        {
                            logicManager = new LogicBaseManager();
                        }

                        // 读取显示名称
                        string logicManagerDisplayName = logicManagerTable["DisplayName"] as string;

                        if (!string.IsNullOrEmpty(logicManagerDisplayName))
                        {
                            logicManager.DisplayName = logicManagerDisplayName;
                        }                        

                        // 读取脚本生成插件信息
                        string compilerFilePath = logicManagerTable["CompilerFilePath"] as string;
                        string compilerClassName = logicManagerTable["CompilerClassName"] as string;

                        if (!string.IsNullOrEmpty(compilerFilePath) && !string.IsNullOrEmpty(compilerClassName))
                        {
                            logicManager.InitCompiler(compilerFilePath, compilerClassName);
                        }

                        // 检查是否是默认分类
                        int index = (int)(double)logicManagerTable["Index"];
                        diagramNameArray[index - 1] = logicManagerDisplayName;                        

                        // 读取数据元信息
                        LuaTable dataElementGroupTable = logicManagerTable["DataElement"] as LuaTable;

                        if (dataElementGroupTable != null)
                        {
                            foreach (object graphType in dataElementGroupTable.Keys)
                            {
                                LuaTable dataElementConfigTable = dataElementGroupTable[graphType] as LuaTable;

                                if (dataElementConfigTable != null)
                                {
                                    string dataElementFilePath = dataElementConfigTable["FilePath"] as string;
                                    string dataElementClassName = dataElementConfigTable["ClassName"] as string;

                                    logicManager.RegistDataElementInfo(graphType as string, dataElementFilePath, dataElementClassName);
                                }                                
                            }
                        }

                        logicManagerDictionary[logicManager.DisplayName] = logicManager;
                    }                    
                }

                foreach (string displayName in diagramNameArray)
                {
                    if (displayName != null)
                    {
                        diagramNameList.Add(displayName);
                    }
                }                
            }            
        }
Beispiel #6
0
        /// <summary>
        /// 键盘按下事件响应
        /// </summary>
        /// <param name="sender">事件发送者</param>
        /// <param name="e">事件</param>
        private void canvas_KeyDown(object sender, KeyEventArgs e)
        {
            DocumentManager  documentManager  = DocumentManager.GetDocumentManager();
            FlowChartManager flowChartManager = documentManager.CurrentFlowChartManager;

            graphManager.ControlMode = e.Control;
            graphManager.ShiftMode   = e.Shift;
            graphManager.AltMode     = e.Alt;

            switch (e.KeyCode)
            {
            case Keys.Enter:     // 响应enter按键
            {
                graphManager.EditDataElement();

                break;
            }

            case Keys.Escape:     // 响应esc按键
            {
                graphManager.DeleteAbbreviateGraphElement();

                break;
            }

            case Keys.Space:     // 响应空格键
            {
                graphManager.CurrentBackground.DebugMode = !graphManager.CurrentBackground.DebugMode;

                break;
            }

            case Keys.Left:     // 响应左方向键
            {
                graphManager.MoveSelectedGraphElement(new Size(-1, 0));

                break;
            }

            case Keys.Up:     // 响应上方向键
            {
                graphManager.MoveSelectedGraphElement(new Size(0, -1));

                break;
            }

            case Keys.Right:     // 响应右方向键
            {
                graphManager.MoveSelectedGraphElement(new Size(1, 0));

                break;
            }

            case Keys.Down:     // 响应下方向键
            {
                graphManager.MoveSelectedGraphElement(new Size(0, 1));

                break;
            }

            case Keys.Delete:    // 响应delete按键
            {
                graphManager.DeleteSelectedGraphElement();

                break;
            }

            case Keys.D1:     // 响应1按键
            {
                // 执行逻辑操作
                LogicBaseManager logicManager = Helper.GetHelper().GetLogicManager(flowChartManager.CurrentChartMode);
                object[]         logicData    = new object[2];
                logicData[0] = 1;
                logicData[1] = (sender as Canvas).PointToClient(Cursor.Position);
                logicManager.DoLogicOperation(flowChartManager, LogicType.CreateAtPoint, logicData);

                break;
            }

            case Keys.NumPad1:     // 响应1按键
            {
                goto case Keys.D1;
            }

            case Keys.D2:     // 响应2按键
            {
                // 执行逻辑操作
                LogicBaseManager logicManager = Helper.GetHelper().GetLogicManager(flowChartManager.CurrentChartMode);
                object[]         logicData    = new object[2];
                logicData[0] = 2;
                logicData[1] = (sender as Canvas).PointToClient(Cursor.Position);
                logicManager.DoLogicOperation(flowChartManager, LogicType.CreateAtPoint, logicData);

                break;
            }

            case Keys.NumPad2:     // 响应2按键
            {
                goto case Keys.D2;
            }

            case Keys.D3:     // 响应3按键
            {
                // 执行逻辑操作
                LogicBaseManager logicManager = Helper.GetHelper().GetLogicManager(flowChartManager.CurrentChartMode);
                object[]         logicData    = new object[2];
                logicData[0] = 3;
                logicData[1] = (sender as Canvas).PointToClient(Cursor.Position);
                logicManager.DoLogicOperation(flowChartManager, LogicType.CreateAtPoint, logicData);

                break;
            }

            case Keys.NumPad3:     // 响应3按键
            {
                goto case Keys.D3;
            }

            case Keys.D4:     // 响应4按键
            {
                // 执行逻辑操作
                LogicBaseManager logicManager = Helper.GetHelper().GetLogicManager(flowChartManager.CurrentChartMode);
                object[]         logicData    = new object[2];
                logicData[0] = 4;
                logicData[1] = (sender as Canvas).PointToClient(Cursor.Position);
                logicManager.DoLogicOperation(flowChartManager, LogicType.CreateAtPoint, logicData);

                break;
            }

            case Keys.NumPad4:     // 响应4按键
            {
                goto case Keys.D4;
            }

            case Keys.D5:     // 响应5按键
            {
                // 执行逻辑操作
                LogicBaseManager logicManager = Helper.GetHelper().GetLogicManager(flowChartManager.CurrentChartMode);
                object[]         logicData    = new object[2];
                logicData[0] = 5;
                logicData[1] = (sender as Canvas).PointToClient(Cursor.Position);
                logicManager.DoLogicOperation(flowChartManager, LogicType.CreateAtPoint, logicData);

                break;
            }

            case Keys.NumPad5:     // 响应5按键
            {
                goto case Keys.D5;
            }

            case Keys.Oemplus:     // 响应+按键
            {
                graphManager.CurrentCanvas.AutoScroll = false;
                graphManager.AdjustCanvasScale(1.1f);
                documentManager.RefreshCanvasScaleDisplay();

                break;
            }

            case Keys.OemMinus:     // 响应-按键
            {
                graphManager.CurrentCanvas.AutoScroll = false;
                graphManager.AdjustCanvasScale(0.9f);
                documentManager.RefreshCanvasScaleDisplay();

                break;
            }

            case Keys.Oemcomma:     // 逗号
            {
                graphManager.SelectLineInSlotContainer();

                break;
            }

            case Keys.OemPeriod:     // 句号
            {
                graphManager.SelectLineOutSlotContainer();

                break;
            }

            case Keys.F5:     // 刷新绘图板
            {
                graphManager.RefreshRegion();

                break;
            }
            }
        }
Beispiel #7
0
        /// <summary>
        /// 获取逻辑管理器实例
        /// </summary>
        /// <param name="chartMode">当前编辑模式</param>
        /// <returns>逻辑管理器实例</returns>
        public LogicBaseManager GetLogicManager(string chartMode)
        {
            LogicBaseManager logicManager = logicManagerDictionary[chartMode];

            return(logicManager);
        }
Beispiel #8
0
        /// <summary>
        /// 初始化逻辑管理器
        /// </summary>
        public void InitLogicManager()
        {
            string filePath = Path.Combine(Application.StartupPath, configFileName);

            if (File.Exists(filePath))
            {
                Lua lua = new Lua();

                lua.DoFile(filePath);
                LuaTable configTable = lua.GetTable("Config") as LuaTable;

                string[] diagramNameArray = new string[maxDiagramCount];

                foreach (object key in configTable.Keys)
                {
                    LuaTable logicManagerTable = configTable[key] as LuaTable;

                    if (logicManagerTable != null)
                    {
                        // 读取逻辑管理器信息
                        string           logicManagerFilePath  = logicManagerTable["LogicManagerFilePath"] as string;
                        string           logicManagerClassName = logicManagerTable["LogicManagerClassName"] as string;
                        LogicBaseManager logicManager          = null;

                        if (!string.IsNullOrEmpty(logicManagerFilePath) && !string.IsNullOrEmpty(logicManagerClassName))
                        {
                            logicManager = LoadLogicManager(logicManagerFilePath, logicManagerClassName);
                        }
                        else
                        {
                            logicManager = new LogicBaseManager();
                        }

                        // 读取显示名称
                        string logicManagerDisplayName = logicManagerTable["DisplayName"] as string;

                        if (!string.IsNullOrEmpty(logicManagerDisplayName))
                        {
                            logicManager.DisplayName = logicManagerDisplayName;
                        }

                        // 读取脚本生成插件信息
                        string compilerFilePath  = logicManagerTable["CompilerFilePath"] as string;
                        string compilerClassName = logicManagerTable["CompilerClassName"] as string;

                        if (!string.IsNullOrEmpty(compilerFilePath) && !string.IsNullOrEmpty(compilerClassName))
                        {
                            logicManager.InitCompiler(compilerFilePath, compilerClassName);
                        }

                        // 检查是否是默认分类
                        int index = (int)(double)logicManagerTable["Index"];
                        diagramNameArray[index - 1] = logicManagerDisplayName;

                        // 读取数据元信息
                        LuaTable dataElementGroupTable = logicManagerTable["DataElement"] as LuaTable;

                        if (dataElementGroupTable != null)
                        {
                            foreach (object graphType in dataElementGroupTable.Keys)
                            {
                                LuaTable dataElementConfigTable = dataElementGroupTable[graphType] as LuaTable;

                                if (dataElementConfigTable != null)
                                {
                                    string dataElementFilePath  = dataElementConfigTable["FilePath"] as string;
                                    string dataElementClassName = dataElementConfigTable["ClassName"] as string;

                                    logicManager.RegistDataElementInfo(graphType as string, dataElementFilePath, dataElementClassName);
                                }
                            }
                        }

                        logicManagerDictionary[logicManager.DisplayName] = logicManager;
                    }
                }

                foreach (string displayName in diagramNameArray)
                {
                    if (displayName != null)
                    {
                        diagramNameList.Add(displayName);
                    }
                }
            }
        }