コード例 #1
0
ファイル: YataPanels.cs プロジェクト: kevL/yata
        /// <summary>
        /// Overrides the <c>MouseUp</c> handler on this <c>YataPanelCols</c>.
        /// </summary>
        /// <param name="e"></param>
        protected override void OnMouseUp(MouseEventArgs e)
        {
#if Clicks
            logfile.Log("YataPanelCols.OnMouseUp() e.Button= " + e.Button);
#endif
            Cursor        = Cursors.Default;
            IsCursorSplit = false;

            if (IsGrab)
            {
#if Clicks
                logfile.Log(". clear IsGrab");
#endif
                IsGrab = false;
                if (ModifierKeys == Keys.None &&
                    e.Button == MouseButtons.Left &&
                    e.X != _grabPos)
                {
#if Clicks
                    logfile.Log(". . do col-width adjust");
#endif
                    Col col = _grid.Cols[_grabCol];
                    col.UserSized = true;

                    int w = col.width() + e.X - _grabPos;
                    if (w < YataGrid._wId)
                    {
                        w = YataGrid._wId;
                    }

                    col.width(w, true);
                    _grid.InitScroll();
                    _grid.Invalidator(YataGrid.INVALID_GRID | YataGrid.INVALID_COLS);
                }
            }
            _grid.Select();
        }
コード例 #2
0
        /// <summary>
        /// Resets the width of a specified col based on the cells in rows
        /// <paramref name="r"/> to <paramref name="r"/> +
        /// <paramref name="range"/>.
        /// </summary>
        /// <param name="c">col</param>
        /// <param name="r">first row to consider as changed (default -1 if
        /// deleting rows and/or no extant text-widths have changed; ie, no
        /// text-widths need to be re-measured)</param>
        /// <param name="range">range of rows to consider as changed (default 0
        /// for a single row)</param>
        internal void Colwidth(int c, int r = -1, int range = 0)
        {
            Col col = Cols[c];

            int colwidth = col._widthtext + _padHoriSort;
            int widthtext;

            if (r != -1)             // re-calc '_widthtext' regardless of what happens below ->
            {
                string text;

                int rend = r + range;
                for (; r <= rend; ++r)
                {
                    if ((text = this[r, c].text) == gs.Stars)                    // bingo.
                    {
                        widthtext = _wStars;
                    }
                    else
                    {
                        widthtext = YataGraphics.MeasureWidth(text, Font);
                    }

                    this[r, c]._widthtext = widthtext;

                    if (widthtext > colwidth)
                    {
                        colwidth = widthtext;
                    }
                }
            }

            if (!col.UserSized)                 // ie. don't resize a col that user has adjusted. If it needs to
            {                                   // be forced (eg. on reload) unflag UserSized on all cols first.
                int totalwidth = col.width();

                if ((colwidth += _padHori * 2) > totalwidth)
                {
                    col.width(colwidth);
                }
                else if (colwidth < totalwidth)                 // recalc width on the entire col
                {
                    if (c == 0 || _wId > colwidth)
                    {
                        colwidth = _wId;
                    }

                    for (r = 0; r != RowCount; ++r)
                    {
                        widthtext = this[r, c]._widthtext + _padHori * 2;

                        if (widthtext > colwidth)
                        {
                            colwidth = widthtext;
                        }
                    }
                    col.width(colwidth, true);
                }

                if (range == 0 && totalwidth != colwidth)                       // if range >0 let Calibrate() handle multiple
                {                                                               // cols or at least the scrollers and do the UI-update
                    InitScroll();
                    Invalidator(INVALID_GRID | INVALID_COLS);
                }
            }

            if (Propanel != null && Propanel.Visible)
            {
                Propanel.widthValcol();                 // TODO: Re-calc the 'c' col only.
            }
        }
コード例 #3
0
ファイル: YataGrid_editcol.cs プロジェクト: kevL/yata
        /// <summary>
        /// Creates a col.
        /// </summary>
        /// <param name="selc"></param>
        /// <seealso cref="CreateCols()"><c>CreateCols()</c></seealso>
        internal void CreateCol(int selc)
        {
            --selc;                               // the Field-count is 1 less than the col-count

            int fieldsLength = Fields.Length + 1; // create a new Fields array ->
            var fields       = new string[fieldsLength];

            for (int i = 0; i != fieldsLength; ++i)
            {
                if (i < selc)
                {
                    fields[i] = Fields[i];
                }
                else if (i == selc)
                {
                    fields[i] = InputDialog._colabel;

                    var col = new Col();
                    col.text       = InputDialog._colabel;
                    col._widthtext = YataGraphics.MeasureWidth(col.text, _f.FontAccent);
                    col.width(col._widthtext + _padHori * 2 + _padHoriSort);
                    col.selected = true;

                    Cols.Insert(i + 1, col);
                    ++ColCount;

                    for (int r = 0; r != RowCount; ++r)
                    {
                        var cells = new Cell[ColCount];                         // create a new Cells array in each row ->
                        for (int c = 0; c != ColCount; ++c)
                        {
                            if (c < selc + 1)
                            {
                                cells[c] = this[r, c];
                            }
                            else if (c == selc + 1)
                            {
                                cells[c]            = new Cell(r, c, gs.Stars);
                                cells[c].selected   = true;
                                cells[c]._widthtext = _wStars;
                            }
                            else                             // (c > selc + 1)
                            {
                                cells[c]    = this[r, c - 1];
                                cells[c].x += 1;
                            }
                        }
                        Rows[r]._cells  = cells;
                        Rows[r].Length += 1;
                    }
                }
                else                 // (i > selc)
                {
                    fields[i] = Fields[i - 1];
                }
            }
            Fields = fields;

            int w = _wStars + _padHori * 2;

            if (w > Cols[++selc].width())
            {
                Cols[selc].width(w);
            }

            InitScroll();
            EnsureDisplayedCol(selc);

            _f.EnableCelleditOperations();

            if (!Changed)
            {
                Changed = true;
            }
        }