Beispiel #1
0
        /// <summary>
        /// Setup the Grid settings.
        /// </summary>
        /// <param name="settings">The settings.</param>
        /// <param name="macroRows">The macro rows.</param>
        /// <param name="macroCols">The macro cols.</param>
        /// <param name="subRows">The sub rows.</param>
        /// <param name="subCols">The sub cols.</param>
        /// <param name="microRows">The micro rows.</param>
        /// <param name="microCols">The micro cols.</param>
        /// <param name="width">The width.</param>
        /// <param name="height">The height.</param>
        /// <returns></returns>
        public static GridControl_Settings Setup(GridControl_Settings settings, int macroRows, int macroCols,
                                                 int subRows, int subCols,
                                                 int microRows, int microCols,
                                                 int width = 0, int height = 0)
        {
            if (settings == null)
            {
                settings = Setup();
            }

            settings.Total_MacroRows = macroRows;
            settings.Total_MacroCols = macroCols;
            settings.Total_SubRows   = subRows;
            settings.Total_SubCols   = subCols;
            settings.Total_MicroRows = microRows;
            settings.Total_MicroCols = microCols;
            if (width != 0)
            {
                settings.Size_MicroWidth = width;
            }
            if (height != 0)
            {
                settings.Size_MicroHeight = height;
            }
            settings.Refresh_Calculations();
            return(settings);
        }
        /// <summary>Creates the micro grids.</summary>
        /// <param name="onGridCreate">The on grid create.</param>
        /// <param name="onGridRowCreate">The on grid row create.</param>
        /// <param name="settings">The settings.</param>
        /// <param name="microRows">The micro rows.</param>
        /// <param name="microCols">The micro cols.</param>
        public void CreateMicroGrids(onGrid_CreateItem onGridCreate, onGrid_CreateItem onGridRowCreate,
                                     GridControl_Settings settings, int microRows, int microCols)
        {
            // Create the child objects
            // This can be optimised by only creating a child the momemnt it is neaded in Child_GridBlockGet
            int ii = 0;

            for (int row1 = 1; row1 <= microRows; row1++)
            {
                Name_ChildRow = GridBlock_zMethods.Name_ChildRow(this, row1);
                onGridRowCreate?.Invoke(this, Child_BlockType);

                for (int col1 = 1; col1 <= microCols; col1++)
                {
                    if (GetChild_GridBlock($"{row1}_{col1}", enGrid_BlockDisplayType.Address, false) == null)
                    {
                        // The childblock does not exists
                        ii++;
                        var grid = new GridBlock_1Micro(this, onGridCreate, settings, ii, col1, row1);
                        _GridBlocksDictionary.Add(grid.Name_Address, grid);
                    }
                }
            }
            Child_Count = microRows * microCols;
        }
Beispiel #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GridControl_Settings"/> class.
        /// </summary>
        public static GridControl_Settings Setup()
        {
            var result = new GridControl_Settings();

            result.Refresh_Calculations();
            return(result);
        }
Beispiel #4
0
        /// <summary>Initializes a new instance of the <see cref="GridBlock_4Cuboid" /> class.</summary>
        /// <param name="parent">The parent.</param>
        /// <param name="onGridCreate">The on grid create.</param>
        /// <param name="onGridRowCreate">The on grid row create.</param>
        /// <param name="settings">The settings.</param>
        /// <param name="macroRows">The macro rows.</param>
        /// <param name="macroCols">The child rows.</param>
        /// <param name="subRows">The sub rows.</param>
        /// <param name="subCols">The sub cols.</param>
        /// <param name="microRows">The micro rows.</param>
        /// <param name="microCols">The micro cols.</param>
        public GridBlock_4Cuboid(IGridBlock_Base parent, onGrid_CreateItem onGridCreate, onGrid_CreateItem onGridRowCreate,
                                 GridControl_Settings settings, int macroRows = 1, int macroCols = 1, int subRows = 5, int subCols = 5,
                                 int microRows = 5, int microCols = 5) : base(parent, 1, 1, settings)
        {
            Child_BlockType   = enGrid_BlockType.MacroBlock;
            Child_DisplayType = enGrid_BlockDisplayType.Address;
            Child_Cols        = macroCols;
            Child_Rows        = macroRows;

            onGridCreate?.Invoke(this, enGrid_BlockType.CuboidGrid);

            // Create the child objects
            int ii = 0;

            for (int row1 = 1; row1 <= macroRows; row1++)
            {
                Name_ChildRow = GridBlock_zMethods.Name_ChildRow(this, row1);
                onGridRowCreate?.Invoke(this, Child_BlockType);

                for (int col = 1; col <= macroCols; col++)
                {
                    ii++;
                    var grid = new GridBlock_3Macro(this, onGridCreate, onGridRowCreate, settings,
                                                    ii, row1, col,
                                                    subRows, subCols,
                                                    microRows, microCols);
                    _GridBlocksDictionary.Add(grid.Name_Address, grid);
                }
            }
            Child_Count = macroRows * macroCols * subRows * subCols * microRows * microCols;
        }
Beispiel #5
0
        /// <summary>Creates the sub grids.</summary>
        /// <param name="onGridCreate">The on grid create.</param>
        /// <param name="onGridRowCreate">The on grid row create.</param>
        /// <param name="settings">The settings.</param>
        /// <param name="subRows">The sub rows.</param>
        /// <param name="subCols">The sub cols.</param>
        /// <param name="microRows">The micro rows.</param>
        /// <param name="microCols">The micro cols.</param>
        public void CreateSubGrids(onGrid_CreateItem onGridCreate, onGrid_CreateItem onGridRowCreate,
                                   GridControl_Settings settings, int subRows, int subCols,
                                   int microRows, int microCols)
        {
            GridBlock_2Sub gridSub = null;
            int            ii      = 0;

            for (int row1 = 1; row1 <= subRows; row1++)
            {
                Name_ChildRow = GridBlock_zMethods.Name_ChildRow(this, row1);
                onGridRowCreate?.Invoke(this, Child_BlockType);

                for (int col1 = 1; col1 <= subCols; col1++)
                {
                    if (GetChild_GridBlock($"{row1}_{col1}", enGrid_BlockDisplayType.Address, false) == null)
                    {
                        // The childblock does not exists
                        ii++;
                        gridSub = new GridBlock_2Sub(this, onGridCreate, onGridRowCreate, settings, ii, row1, col1, microRows, microCols);
                        _GridBlocksDictionary.Add(gridSub.Name_Address, gridSub);
                    }
                }
            }
            Child_Count = subRows * subCols * microCols * microRows;
        }
        /// <summary>Initializes a new instance of the <see cref="GridBlock_5Setup" /> class.</summary>
        /// <param name="onCreateGrid">The on create grid.</param>
        /// <param name="settings">The settings.</param>
        /// <param name="rowName">Name of the row.</param>
        public GridBlock_5Setup(onGrid_CreateControl onCreateGrid, GridControl_Settings settings, string rowName = "R1")
        {
            if (onCreateGrid != null)
            {
                _onCreateGridControl -= onCreateGrid;
                _onCreateGridControl += onCreateGrid;
            }

            _treeControls.Clear();
            var          root           = new object() as IGridBlock_Base;
            IGridControl gridRowControl = new object() as IGridControl; // Client need to create this

            if (_onCreateGridControl != null)
            {
                _onCreateGridControl(root, enGrid_ControlType.Row, "?", rowName, enGrid_BlockType.CuboidGrid, ref gridRowControl); // Ask frontend to create the control
                // Save testing information
                _treeDebugInfo.Add(GridControl_2Str(enGrid_ControlType.Row, "?", rowName, enGrid_BlockType.CuboidGrid), null);
            }

            _treeControls.Add(rowName, gridRowControl);
            GridCuboid = new GridBlock_4Cuboid(root, OnGridCreate, OnGridRowCreate, settings, settings.Total_MacroRows, settings.Total_MacroCols,
                                               settings.Total_SubRows, settings.Total_SubCols,
                                               settings.Total_MicroRows, settings.Total_MicroCols);

            //r1
            //r1/cub1_1
            //r1/cub1_1/r1
            //r1/cub1_1/r1/mac1_1
            //r1/cub1_1/r1/mac1_1/r1
            //r1/cub1_1/r1/mac1_1/r1/sub1_1
            //r1/cub1_1/r1/mac1_1/r1/sub1_1/r1
            //r1/cub1_1/r1/mac1_1/r1/sub1_1/r1/mic1_1
        }
        public static string GridPrefix(IGridBlock_Base grid, GridControl_Settings settings)
        {
            if (grid == null)
            {
                throw new ArgumentNullException(nameof(grid));
            }
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            string prefix = "";

            if (grid is GridBlock_1Micro)
            {
                prefix = settings.GridBlock_Name1Micro;
            }
            else if (grid is GridBlock_2Sub)
            {
                prefix = settings.GridBlock_Name2Sub;
            }
            else if (grid is GridBlock_3Macro)
            {
                prefix = settings.GridBlock_Name3Macro;
            }
            else if (grid is GridBlock_4Cuboid)
            {
                prefix = settings.GridBlock_Name4Cuboid;
            }
            else
            {
                throw new ArgumentException($"Error! '{nameof(grid)}' is not a defined type.");
            }
            return(prefix);
        }
        /// <summary>Calculates the grid frontend name.</summary>
        /// <param name="grid">The grid.</param>
        /// <param name="col">The col.</param>
        /// <param name="row">The row.</param>
        /// <param name="settings">The settings.</param>
        /// <returns></returns>
        public static string Name_Frontend(IGridBlock_Base grid, int col, int row, GridControl_Settings settings)
        {
            var    parentRow = grid.Name_ParentRow; // + "/";
            string prefix    = GridPrefix(grid, settings);

            return(parentRow + prefix + $"{row}_{col}");
        }
        /// <summary>Setups the sub grids.</summary>
        /// <param name="macroAddress">The macro address.</param>
        /// <param name="subAddress">The sub address.</param>
        /// <param name="settings">The settings.</param>
        /// <param name="microRows">The micro rows.</param>
        /// <param name="microCols">The micro cols.</param>
        /// <exception cref="System.InvalidOperationException">Error! Macro grid was not found.</exception>
        /// <exception cref="InvalidOperationException">Error! Macro grid was not found.</exception>
        public void Setup_MicroGrids(string macroAddress, string subAddress, GridControl_Settings settings, int microRows, int microCols)
        {
            IGridBlock_Base grid      = GetChild_SubGridBlock(macroAddress, subAddress);
            var             gridMicro = grid as GridBlock_2Sub;

            if (gridMicro == null)
            {
                throw new InvalidOperationException("Error! Macro grid was not found.");
            }
            gridMicro.CreateMicroGrids(OnGridCreate, OnGridRowCreate, settings, microRows, microCols);
        }
Beispiel #10
0
        /// <summary>Initializes a new instance of the <see cref="GridBlock_1Micro" /> class.</summary>
        /// <param name="parent">The parent.</param>
        /// <param name="onGridCreate">The on grid create.</param>
        /// <param name="onGridRowCreate">The on grid row create.</param>
        /// <param name="settings">The settings.</param>
        /// <param name="index">The index.</param>
        /// <param name="row">The row.</param>
        /// <param name="col">The col.</param>
        /// <param name="microRows">The micro rows.</param>
        /// <param name="microCols">The micro cols.</param>
        public GridBlock_2Sub(IGridBlock_Base parent, onGrid_CreateItem onGridCreate, onGrid_CreateItem onGridRowCreate,
                              GridControl_Settings settings, int index, int row, int col,
                              int microRows = 5, int microCols = 5) : base(parent, index, row, col, settings)
        {
            Child_BlockType   = enGrid_BlockType.MicroBlock;
            Child_DisplayType = enGrid_BlockDisplayType.Address;
            Child_Cols        = microCols;
            Child_Rows        = microRows;
            Child_Count       = 0;
            onGridCreate?.Invoke(this, enGrid_BlockType.SubBlock);

            CreateMicroGrids(onGridCreate, onGridRowCreate, settings, microRows, microCols);
        }
Beispiel #11
0
        /// <summary>Initializes a new instance of the <see cref="GridBlock_1Micro" /> class.</summary>
        /// <param name="parent">The parent.</param>
        /// <param name="onGridCreate">The on grid create.</param>
        /// <param name="onGridRowCreate">The on grid row create.</param>
        /// <param name="settings">The settings.</param>
        /// <param name="index">The index.</param>
        /// <param name="row">The row.</param>
        /// <param name="col">The col.</param>
        /// <param name="subRows">The sub rows.</param>
        /// <param name="subCols">The sub cols.</param>
        /// <param name="microRows">The micro rows.</param>
        /// <param name="microCols">The micro cols.</param>
        public GridBlock_3Macro(IGridBlock_Base parent, onGrid_CreateItem onGridCreate, onGrid_CreateItem onGridRowCreate,
                                GridControl_Settings settings, int index, int row, int col,
                                int subRows   = 5, int subCols   = 5,
                                int microRows = 5, int microCols = 5) : base(parent, index, row, col, settings)
        {
            Child_BlockType   = enGrid_BlockType.SubBlock;
            Child_DisplayType = enGrid_BlockDisplayType.Address;
            Child_Cols        = subCols;
            Child_Rows        = subRows;

            onGridCreate?.Invoke(this, enGrid_BlockType.MacroBlock);

            // Create the child objects
            CreateSubGrids(onGridCreate, onGridRowCreate, settings, subRows, subCols, microRows, microCols);
        }
        /// <summary>Creates the new child grids.</summary>
        /// <param name="grid">The grid.</param>
        /// <param name="settings">The settings.</param>
        /// <param name="rows">The rows.</param>
        /// <param name="cols">The cols.</param>
        public void CreateNewChildGrids(IGridControl grid, GridControl_Settings settings, int rows, int cols)
        {
            var gridState = grid.GridState;
            var gridMacro = gridState as GridBlock_3Macro;

            if (gridMacro != null)
            {
                gridMacro.CreateSubGrids(OnGridCreate, OnGridRowCreate, settings, rows, cols, 0, 0);
            }

            var gridsub = gridState as GridBlock_2Sub;

            if (gridsub != null)
            {
                gridsub.CreateMicroGrids(OnGridCreate, OnGridRowCreate, settings, rows, cols);
            }
        }
Beispiel #13
0
 /// <summary>Initializes a new instance of the <see cref="GridBlock_1Micro" /> class.</summary>
 /// <param name="parent">The parent.</param>
 /// <param name="onGridCreate">The on grid create.</param>
 /// <param name="settings">The settings.</param>
 /// <param name="index">The index.</param>
 /// <param name="col">The col.</param>
 /// <param name="row">The row.</param>
 public GridBlock_1Micro(IGridBlock_Base parent, onGrid_CreateItem onGridCreate, GridControl_Settings settings, int index, int col, int row) : base(parent, index, row, col, settings)
 {
     onGridCreate?.Invoke(this, enGrid_BlockType.MicroBlock);
 }
Beispiel #14
0
 /// <summary>Initializes a new instance of the <see cref="GridBlock_1Micro" /> class.</summary>
 /// <param name="parent">The parent.</param>
 /// <param name="index">The index.</param>
 /// <param name="row">The row.</param>
 /// <param name="col">The col.</param>
 /// <param name="settings">The settings.</param>
 public GridBlock_0BaseState(IGridBlock_Base parent, int index, int row, int col, GridControl_Settings settings) : base(parent, row, col, settings)
 {
     State_Index = index;
     State_Col   = col;
     State_Row   = row;
     State_Setup(Double.NaN, 0, Color.Black);
     State_EditState = enGrid_BlockEditState.Undefined;
 }