/// <summary>
        /// Initialize the table specifying the width of each column.
        /// </summary>
        /// <param name="leftMarginIndent">Left margin indentation</param>
        /// <param name="screenColumns">Number of character columns on the screen</param>
        /// <param name="columnWidths">Array of specified column widths</param>
        /// <param name="alignment">Array of alignment flags</param>
        /// <param name="suppressHeader">If true, suppress header printing</param>
        /// <param name="screenRows">Number of rows on the screen</param>
        internal void Initialize(int leftMarginIndent, int screenColumns, Span <int> columnWidths, ReadOnlySpan <int> alignment, bool suppressHeader, int screenRows = int.MaxValue)
        {
            if (leftMarginIndent < 0)
            {
                leftMarginIndent = 0;
            }

            if (screenColumns - leftMarginIndent < ScreenInfo.minimumScreenColumns)
            {
                _disabled = true;
                return;
            }

            _startColumn = leftMarginIndent;
            _hideHeader  = suppressHeader;

            // make sure the column widths are correct; if not, take appropriate action
            ColumnWidthManager manager = new ColumnWidthManager(
                screenColumns - leftMarginIndent,
                ScreenInfo.minimumColumnWidth,
                ScreenInfo.separatorCharacterCount);

            manager.CalculateColumnWidths(columnWidths);

            // if all the columns are hidden, just disable
            bool oneValid = false;

            for (int k = 0; k < columnWidths.Length; k++)
            {
                if (columnWidths[k] >= ScreenInfo.minimumColumnWidth)
                {
                    oneValid = true;
                    break;
                }
            }

            if (!oneValid)
            {
                _disabled = true;
                return;
            }

            // now set the run time data structures
            _si = new ScreenInfo();
            _si.screenColumns = screenColumns;
            _si.screenRows    = screenRows;
            _si.columnInfo    = new ColumnInfo[columnWidths.Length];

            int startCol = _startColumn;

            for (int k = 0; k < columnWidths.Length; k++)
            {
                _si.columnInfo[k]           = new ColumnInfo();
                _si.columnInfo[k].startCol  = startCol;
                _si.columnInfo[k].width     = columnWidths[k];
                _si.columnInfo[k].alignment = alignment[k];
                startCol += columnWidths[k] + ScreenInfo.separatorCharacterCount;
            }
        }
Beispiel #2
0
        /// <summary>
        /// Initialize the table specifying the width of each column
        /// </summary>
        /// <param name="leftMarginIndent">left margin indentation</param>
        /// <param name="screenColumns">number of character columns on the screen</param>
        /// <param name="columnWidths">array of specified column widths</param>
        /// <param name="alignment">array of alignment flags</param>
        /// <param name="suppressHeader">if true, suppress header printing</param>
        internal void Initialize(int leftMarginIndent, int screenColumns, int[] columnWidths, int[] alignment, bool suppressHeader)
        {
            //Console.WriteLine("         1         2         3         4         5         6         7");
            //Console.WriteLine("01234567890123456789012345678901234567890123456789012345678901234567890123456789");

            if (screenColumns == int.MaxValue)
            {
                try
                {
                    screenColumns = System.Console.WindowWidth;
                }
                catch
                {
                    screenColumns = 120;
                }
            }

            if (leftMarginIndent < 0)
            {
                leftMarginIndent = 0;
            }
            if (screenColumns - leftMarginIndent < ScreenInfo.minimumScreenColumns)
            {
                _disabled = true;
                return;
            }
            _startColumn = leftMarginIndent;

            _hideHeader = suppressHeader;

            // make sure the column widths are correct; if not, take appropriate action
            ColumnWidthManager manager = new ColumnWidthManager(screenColumns - leftMarginIndent,
                                                                ScreenInfo.minimumColumnWidth,
                                                                ScreenInfo.separatorCharacterCount);

            manager.CalculateColumnWidths(columnWidths);

            // if all the columns are hidden, just disable
            bool oneValid = false;

            for (int k = 0; k < columnWidths.Length; k++)
            {
                if (columnWidths[k] >= ScreenInfo.minimumColumnWidth)
                {
                    oneValid = true;
                    break;
                }
            }

            if (!oneValid)
            {
                _disabled = true;
                return;
            }

            // now set the run time data structures
            _si = new ScreenInfo();
            _si.screenColumns = screenColumns;
            _si.columnInfo    = new ColumnInfo[columnWidths.Length];

            int startCol = _startColumn;

            for (int k = 0; k < columnWidths.Length; k++)
            {
                _si.columnInfo[k]           = new ColumnInfo();
                _si.columnInfo[k].startCol  = startCol;
                _si.columnInfo[k].width     = columnWidths[k];
                _si.columnInfo[k].alignment = alignment[k];
                startCol += columnWidths[k] + ScreenInfo.separatorCharacterCount;
                //Console.WriteLine("start = {0} width = {1}", si.columnInfo[k].startCol, si.columnInfo[k].width);
            }
        }
Beispiel #3
0
        /// <summary>
        /// Initialize the table specifying the width of each column
        /// </summary>
        /// <param name="leftMarginIndent">left margin indentation</param>
        /// <param name="screenColumns">number of character columns on the screen</param>
        /// <param name="columnWidths">array of specified column widths</param>
        /// <param name="alignment">array of alignment flags</param>
        /// <param name="suppressHeader">if true, suppress header printing</param>
        internal void Initialize(int leftMarginIndent, int screenColumns, int[] columnWidths, int[] alignment, bool suppressHeader)
        {
            //Console.WriteLine("         1         2         3         4         5         6         7");
            //Console.WriteLine("01234567890123456789012345678901234567890123456789012345678901234567890123456789");

            if (leftMarginIndent < 0)
            {
                leftMarginIndent = 0;
            }
            if (screenColumns - leftMarginIndent < ScreenInfo.minimumScreenColumns)
            {
                _disabled = true;
                return;
            }
            _startColumn = leftMarginIndent;

            _hideHeader = suppressHeader;

            // make sure the column widths are correct; if not, take appropriate action
            ColumnWidthManager manager = new ColumnWidthManager(screenColumns - leftMarginIndent,
                                                        ScreenInfo.minimumColumnWidth,
                                                        ScreenInfo.separatorCharacterCount);

            manager.CalculateColumnWidths(columnWidths);

            // if all the columns are hidden, just disable
            bool oneValid = false;

            for (int k = 0; k < columnWidths.Length; k++)
            {
                if (columnWidths[k] >= ScreenInfo.minimumColumnWidth)
                {
                    oneValid = true;
                    break;
                }
            }

            if (!oneValid)
            {
                _disabled = true;
                return;
            }

            // now set the run time data structures
            _si = new ScreenInfo();
            _si.screenColumns = screenColumns;
            _si.columnInfo = new ColumnInfo[columnWidths.Length];

            int startCol = _startColumn;
            for (int k = 0; k < columnWidths.Length; k++)
            {
                _si.columnInfo[k] = new ColumnInfo();
                _si.columnInfo[k].startCol = startCol;
                _si.columnInfo[k].width = columnWidths[k];
                _si.columnInfo[k].alignment = alignment[k];
                startCol += columnWidths[k] + ScreenInfo.separatorCharacterCount;
                //Console.WriteLine("start = {0} width = {1}", si.columnInfo[k].startCol, si.columnInfo[k].width);
            }
        }