예제 #1
0
        /// <summary>
        /// Move selection to first cell of row or column which is specified by <code>rowOrColumn</code>
        /// </summary>
        /// <param name="rowOrColumn">specifies that move selection to first cell of row or column</param>
        /// <param name="appendSelect">Decide whether or not perform an appending select (same as Shift key press down)</param>
        public void MoveSelectionHome(RowOrColumn rowOrColumn, bool appendSelect = false)
        {
            if (this.selectionMode == WorksheetSelectionMode.None)
            {
                return;
            }

            //bool selectionChanged = false;
            CellPosition endpos = this.selEnd;

            if ((rowOrColumn & RowOrColumn.Row) == RowOrColumn.Row)
            {
                endpos.Row = 0;
            }

            if ((rowOrColumn & RowOrColumn.Column) == RowOrColumn.Column)
            {
                endpos.Col = 0;
            }

            if (endpos != this.selEnd)
            {
                ApplyRangeSelection(this.selStart, endpos, appendSelect);
            }
        }
예제 #2
0
        public ulong[,] ToArray64(RowOrColumn interpretBy, Endianness endianness)
        {
            // Calculate array dimensions
            var majorDimension = interpretBy == RowOrColumn.Row ? _height : _width;
            var minorDimension = ((interpretBy == RowOrColumn.Row ? _width : _height) - 1) / 64 + 1;
            var result         = new ulong[majorDimension, minorDimension];

            // Generate array
            for (var i = 0; i < majorDimension; i++)
            {
                var bytes = interpretBy == RowOrColumn.Row ? GetRow(i).ToByteArray() : GetColumn(i).ToByteArray();
                for (var j = 0; j < minorDimension; j++)
                {
                    if (bytes.Length < 8)
                    {
                        result[i, j] = endianness == Endianness.Little ? bytes[j] : bytes[minorDimension - 1 - j];
                    }
                    else
                    {
                        result[i, j] = endianness == Endianness.Little
                                                        ? BitConverter.ToUInt16(bytes, j * 8)
                                                        : BitConverter.ToUInt16(bytes, (minorDimension - 1) * 8 - j * 8);
                    }
                }
            }

            return(result);
        }
        public int ProcessUserInput(RowOrColumn rowOrColumn, string mock = null)
        {
            var rowNumber = -1;

            inputIsANumber = false;
            do
            {
                Console.WriteLine($"SELECT A {rowOrColumn.ToString().ToUpper()} NUMBER BETWEEN 1 AND 10\n");
                var input = mock ?? Console.ReadLine();
                inputIsANumber = int.TryParse(input, out rowNumber);
                if (input == "CHEATCODE")
                {
                    DisplayCheatCode();
                    continue;
                }
                else if (inputIsANumber && rowNumber > 1 && rowNumber <= 10)
                {
                    break;
                }
                else
                {
                    Console.WriteLine(input + " is not a valid number.");
                }
            } while (!inputIsANumber || rowNumber < 1 || rowNumber > 10);
            return(rowNumber);
        }
예제 #4
0
 private void AddSerialsFromRange(ReferenceRange serialNamesRange, ReferenceRange serialsRange,
                                  RowOrColumn serialPerRowOrColumn = RowOrColumn.Row)
 {
     if (serialPerRowOrColumn == RowOrColumn.Row)
     {
         for (int r = serialsRange.Row; r <= serialsRange.EndRow; r++)
         {
             var label = new RangePosition(r, serialNamesRange.Col, 1, serialNamesRange.Cols);
             var pos   = new RangePosition(r, serialsRange.Col, 1, serialsRange.Cols);
             this.AddSerial(worksheet,
                            new ReferenceRange(serialNamesRange.Worksheet, label),
                            new ReferenceRange(serialsRange.Worksheet, pos));
         }
     }
     else if (serialPerRowOrColumn == RowOrColumn.Column)
     {
         for (int c = serialsRange.Col; c <= serialsRange.EndCol; c++)
         {
             var label = new RangePosition(serialNamesRange.Row, c, serialNamesRange.Rows, 1);
             var pos   = new RangePosition(serialsRange.Row, c, serialsRange.Rows, 1);
             this.AddSerial(worksheet,
                            new ReferenceRange(serialNamesRange.Worksheet, label),
                            new ReferenceRange(serialsRange.Worksheet, pos));
         }
     }
     else
     {
         this.AddSerial(worksheet, serialNamesRange, serialsRange);
     }
 }
예제 #5
0
        /// <summary>
        /// Move selection to last cell of row or column which is specified by <code>rowOrColumn</code>
        /// </summary>
        /// <param name="rowOrColumn">specifies that move selection to the cell of row or column</param>
        /// <param name="appendSelect">Determines that whether or not to expand the current selection.</param>
        public void MoveSelectionEnd(RowOrColumn rowOrColumn, bool appendSelect = false)
        {
            if (this.selectionMode == WorksheetSelectionMode.None)
            {
                return;
            }

            //bool selectionChanged = false;
            var endpos = this.selEnd;

            if ((rowOrColumn & RowOrColumn.Row) == RowOrColumn.Row)
            {
                endpos.Row = this.rows.Count - 1;
            }

            if ((rowOrColumn & RowOrColumn.Column) == RowOrColumn.Column)
            {
                endpos.Col = this.cols.Count - 1;
            }

            if (endpos != this.selEnd)
            {
                ApplyRangeSelection(this.selStart, endpos, appendSelect);
            }
        }
        public void ProcessUserInput_ValidInputs_ReturnTrue(RowOrColumn rowOrColumn, string number)
        {
            random    = new Random();
            gameGrid  = new GameGrid(random);
            ControlF  = new ControlFlow(gameGrid);
            userInput = new UserInput(gameGrid);

            var validUserInput = userInput.ProcessUserInput(RowOrColumn.Row, number);

            Assert.True(validUserInput > 0 && validUserInput <= 10);
        }
예제 #7
0
        /// <summary>
        /// Create data source instance with specified worksheet instance and serial data range.
        /// </summary>
        /// <param name="worksheet">Instance of worksheet to read titles and data of plot serial.</param>
        /// <param name="serialNamesRange">Range to read labels of data serial.</param>
        /// <param name="serialsRange">Range to read serial data.</param>
        /// <param name="serialPerRowOrColumn">Add serials by this specified direction. Default is Row.</param>
        public WorksheetChartDataSource(Worksheet worksheet, RangePosition serialNamesRange, RangePosition serialsRange,
                                        RowOrColumn serialPerRowOrColumn = RowOrColumn.Row)
            : this(worksheet)
        {
            if (worksheet == null)
            {
                throw new ArgumentNullException("worksheet");
            }

            this.AddSerialsFromRange(serialNamesRange, serialsRange, serialPerRowOrColumn);
        }
예제 #8
0
        public HeaderPropertyDialog(RowOrColumn rowOrColumn)
        {
            this.RowOrColumn = rowOrColumn;

            InitializeComponent();

            SetupUILanguage();

            if (this.RowOrColumn == ReoGrid.RowOrColumn.Column)
            {
                this.cmbCellBody.Items.Add("(null)");

                foreach (var cellType in CellTypesManager.CellTypes)
                {
                    var name = cellType.Key;
                    if (name.EndsWith("Cell"))
                    {
                        name = name.Substring(0, name.Length - 4);
                    }

                    cmbCellBody.Items.Add(new CellBodyItem
                    {
                        Name = name,
                        Type = cellType.Value,
                    });
                }

                labCellBody.Visible       = cmbCellBody.Visible = cmbCellBody.Enabled = true;
                labRowHeaderWidth.Visible = numRowHeaderWidth.Visible = numRowHeaderWidth.Enabled = false;
            }
            else
            {
                labCellBody.Visible       = cmbCellBody.Visible = cmbCellBody.Enabled = false;
                labRowHeaderWidth.Visible = numRowHeaderWidth.Visible = numRowHeaderWidth.Enabled = true;
            }

            this.txtHeaderText.KeyDown += (s, e) =>
            {
                if (e.KeyCode == Keys.Enter)
                {
                    btnOK.PerformClick();
                }
            };
        }
예제 #9
0
        public byte[,] ToArray8(RowOrColumn interpretBy, Endianness endianness)
        {
            // Calculate array dimensions
            var majorDimension = interpretBy == RowOrColumn.Row ? _height : _width;
            var minorDimension = ((interpretBy == RowOrColumn.Row ? _width : _height) - 1) / 8 + 1;
            var result         = new byte[majorDimension, minorDimension];

            // Generate array
            for (var i = 0; i < majorDimension; i++)
            {
                var bytes = interpretBy == RowOrColumn.Row ? GetRow(i).ToByteArray() : GetColumn(i).ToByteArray();
                for (var j = 0; j < minorDimension; j++)
                {
                    result[i, j] = endianness == Endianness.Little ? bytes[j] : bytes[minorDimension - 1 - j];
                }
            }

            return(result);
        }
예제 #10
0
 private void AddSerialsFromRange(RangePosition serialNamesRange, RangePosition serialsRange,
                                  RowOrColumn serialPerRowOrColumn = RowOrColumn.Row)
 {
     if (serialPerRowOrColumn == RowOrColumn.Row)
     {
         for (int r = serialsRange.Row; r <= serialsRange.EndRow; r++)
         {
             var label = new CellPosition(r, serialNamesRange.Col);
             this.AddSerial(worksheet, label, new RangePosition(r, serialsRange.Col, 1, serialsRange.Cols));
         }
     }
     else
     {
         for (int c = serialsRange.Col; c <= serialsRange.EndCol; c++)
         {
             var label = new CellPosition(serialNamesRange.Row, c);
             this.AddSerial(worksheet, label, new RangePosition(serialsRange.Row, c, serialsRange.Rows, 1));
         }
     }
 }
예제 #11
0
        /// <summary>
        /// Create data source instance with specified worksheet instance
        /// </summary>
        /// <param name="worksheet">Instance of worksheet to read titles and data of plot serial.</param>
        /// <param name="serialNamesRange">Names for serial data from this range.</param>
        /// <param name="serialsRange">Serial data from this range.</param>
        /// <param name="serialPerRowOrColumn">Add serials by this specified direction. Default is Row.</param>
        public WorksheetChartDataSource(Worksheet worksheet, string serialNamesRange, string serialsRange,
                                        RowOrColumn serialPerRowOrColumn = RowOrColumn.Row)
            : this(worksheet)
        {
            if (worksheet == null)
            {
                throw new ArgumentNullException("worksheet");
            }

            if (!worksheet.TryGetRangeByAddressOrName(serialNamesRange, out var snRange))
            {
                throw new InvalidAddressException("cannot determine the serial names range by specified range address or name.");
            }

            if (!worksheet.TryGetRangeByAddressOrName(serialsRange, out var sRange))
            {
                throw new InvalidAddressException("cannot determine the serials range by specified range address or name.");
            }

            this.AddSerialsFromRange(snRange, sRange, serialPerRowOrColumn);
        }
예제 #12
0
        public SetWidthOrHeightDialog(RowOrColumn rowOrColumn)
        {
            InitializeComponent();

            StartPosition = FormStartPosition.Manual;

            if (rowOrColumn == RowOrColumn.Row)
            {
                Text        = LangRes.LangResource.SetHeaderSize_Caption_Row;
                label1.Text = LangRes.LangResource.SetHeaderSize_Caption_Row;
            }
            else
            {
                Text        = LangRes.LangResource.SetHeaderSize_Caption_Column;
                label1.Text = LangRes.LangResource.SetHeaderSize_Caption_Column;
            }

            btnOK.Text     = LangRes.LangResource.Btn_OK;
            btnCancel.Text = LangRes.LangResource.Btn_Cancel;

            numericUpDown1.KeyDown += new KeyEventHandler(numericUpDown1_KeyDown);
        }
예제 #13
0
 /// <summary>
 /// Create action to add outline
 /// </summary>
 /// <param name="rowOrColumn">Row or column to be added</param>
 /// <param name="start">Number of line to start add outline</param>
 /// <param name="count">Number of lines to be added into this outline</param>
 public AddOutlineAction(RowOrColumn rowOrColumn, int start, int count)
     : base(rowOrColumn, start, count)
 {
 }
예제 #14
0
 /// <summary>
 /// Create base outline action instance
 /// </summary>
 /// <param name="rowOrColumn">Flag to specify row or column</param>
 public BaseOutlineAction(RowOrColumn rowOrColumn)
 {
     this.rowOrColumn = rowOrColumn;
 }
예제 #15
0
 /// <summary>
 /// Create base outline action instance
 /// </summary>
 /// <param name="rowOrColumn">Flag to specify row or column</param>
 /// <param name="start">Number of line to start add outline</param>
 /// <param name="count">Number of lines to be added into this outline</param>
 public OutlineAction(RowOrColumn rowOrColumn, int start, int count)
     : base(rowOrColumn)
 {
     this.start = start;
     this.count = count;
 }
예제 #16
0
 public OutlineHeaderPart(IViewportController vc, RowOrColumn flag)
     : base(vc)
 {
     this.sheet = vc.Worksheet;
     this.Flag  = flag;
 }
예제 #17
0
 /// <summary>
 /// Create data source instance with specified worksheet instance and serial data range.
 /// </summary>
 /// <param name="worksheet">Instance of worksheet to read titles and data of plot serial.</param>
 /// <param name="serialNamesRange">Range to read labels of data serial.</param>
 /// <param name="serialsRange">Range to read serial data.</param>
 /// <param name="serialPerRowOrColumn">Add serials by this specified direction. Default is Row.</param>
 public WorksheetChartDataSource(Worksheet worksheet, ReferenceRange serialNamesRange, ReferenceRange serialsRange,
                                 RowOrColumn serialPerRowOrColumn = RowOrColumn.Row)
     : this(worksheet ?? throw new ArgumentNullException("worksheet"))
 {
     this.AddSerialsFromRange(serialNamesRange, serialsRange, serialPerRowOrColumn);
 }
예제 #18
0
 public OutlineView(IViewportController vc, RowOrColumn flag)
     : base(vc)
 {
     this.Flag = flag;
 }
예제 #19
0
 /// <summary>
 /// Create action to clear all outlines on specified range
 /// </summary>
 /// <param name="rowOrColumn">The range to clear outlines (row, column or both row and column)</param>
 public ClearOutlineAction(RowOrColumn rowOrColumn)
     : base(rowOrColumn)
 {
 }