From d59556194a48900b4e276438fc51113f4c6f310f Mon Sep 17 00:00:00 2001 From: unodgs Date: Fri, 9 Jan 2009 19:55:41 +0000 Subject: [PATCH] GridCtrl and DropGrid fixes.. git-svn-id: svn://ultimatepp.org/upp/trunk@740 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/DropGrid/DropGrid.cpp | 21 ++- uppsrc/DropGrid/DropGrid.h | 10 +- uppsrc/GridCtrl/GridBase.cpp | 20 ++- uppsrc/GridCtrl/GridCtrl.cpp | 299 ++++++++++++++++++++------------ uppsrc/GridCtrl/GridCtrl.h | 56 +++--- uppsrc/GridCtrl/GridCtrl.iml | 137 ++++++++------- uppsrc/GridCtrl/GridDisplay.cpp | 10 +- uppsrc/GridCtrl/GridUtils.cpp | 8 +- uppsrc/GridCtrl/GridUtils.h | 2 +- uppsrc/GridCtrl/changelog.txt | 3 + 10 files changed, 336 insertions(+), 230 deletions(-) diff --git a/uppsrc/DropGrid/DropGrid.cpp b/uppsrc/DropGrid/DropGrid.cpp index 4d163222b..ccdc2ee7d 100644 --- a/uppsrc/DropGrid/DropGrid.cpp +++ b/uppsrc/DropGrid/DropGrid.cpp @@ -129,9 +129,9 @@ void DropGrid::Drop() Rect rs = GetScreenRect(); int width = rs.Width(); int resize_height = list.GetResizePanelHeight(); - int list_height = max(list.GetHeight(), GridCtrl::GD_ROW_HEIGHT + GridCtrl::GD_HDR_HEIGHT * header); + int list_height = max(list.GetHeight(), list.GD_ROW_HEIGHT + list.GD_HDR_HEIGHT * header); int height = list_height + 4 + resize_height; - int drop_height = drop_lines * GridCtrl::GD_ROW_HEIGHT + header * GridCtrl::GD_HDR_HEIGHT + 4 + resize_height; + int drop_height = drop_lines * list.GD_ROW_HEIGHT + header * list.GD_HDR_HEIGHT + 4 + resize_height; if(!display_all && height > drop_height) height = drop_height; @@ -192,26 +192,27 @@ void DropGrid::Paint(Draw& w) else clear.Hide(); - w.DrawRect(sz, SColorPaper()); + //w.DrawRect(sz, SColorPaper()); GridDisplay &disp = display ? *display : list.GetDisplay(); bool hf = HasFocus(); bool isnull = rowid < 0; Color fg = hf ? SColorHighlightText() : IsEnabled() ? SColorText() : SColorDisabled(); - Color bg = !IsEnabled() ? SColorFace + Color bg = !IsEnabled() ? EditField::StyleDefault().disabled //SColorFace : notnull && isnull ? Blend(SColorPaper, Color(255, 0, 0), /*hf ? 55 :*/ 32) : hf ? SColorHighlight() : SColorPaper(); - const int d = 1; + const int d = 0; + if(isnull) w.DrawRect(d, d, sz.cx - d * 2, sz.cy - d * 2, bg); else { Font fnt(StdFont()); - Paint0(w, 1, 1, d, d, sz.cx - d * 2, sz.cy - d * 2, Format0(Null, rowid), 0, fg, bg/*SColorPaper()*/, fnt); + Paint0(w, 1, 1, d, d, sz.cx - d * 2, sz.cy - d * 2, Format0(Null, rowid), 0, fg, bg, fnt); } if(hf) - DrawFocus(w, d - 1, d - 1, sz.cx - (d - 1) * 2, sz.cy - (d - 1) * 2); + DrawFocus(w, d - 0, d - 0, sz.cx - (d - 0) * 2, sz.cy - (d - 0) * 2); } @@ -542,6 +543,12 @@ void DropGrid::SetData(const Value& v) ClearValue(); } +DropGrid& DropGrid::SearchHideRows(bool b) +{ + list.SearchHideRows(b); + return *this; +} + void DropGrid::DoAction(int row, bool action, bool chg) { int rid = list.GetRowId(row); diff --git a/uppsrc/DropGrid/DropGrid.h b/uppsrc/DropGrid/DropGrid.h index 66132b151..556e81a21 100644 --- a/uppsrc/DropGrid/DropGrid.h +++ b/uppsrc/DropGrid/DropGrid.h @@ -19,7 +19,7 @@ class DropGrid : public Convert, public GridDisplay, public Ctrl BTN_PLUS, BTN_CLEAN }; - private: + class PopUpGrid : public GridCtrl { private: @@ -121,9 +121,11 @@ class DropGrid : public Convert, public GridDisplay, public Ctrl DropGrid& NullAction(bool b = true); DropGrid& ClearButton(bool b = true); DropGrid& NoDrop(bool b = true); + DropGrid& SetData(); + DropGrid& SearchHideRows(bool b = true); - GridCtrl::ItemRect& AddColumn(const char *name, int width = GridCtrl::GD_COL_WIDTH, bool idx = false); - GridCtrl::ItemRect& AddColumn(Id id, const char *name, int width = GridCtrl::GD_COL_WIDTH, bool idx = false); + GridCtrl::ItemRect& AddColumn(const char *name, int width = -1, bool idx = false); + GridCtrl::ItemRect& AddColumn(Id id, const char *name, int width = -1, bool idx = false); GridCtrl::ItemRect& AddIndex(const char *name = NULL); GridCtrl::ItemRect& AddIndex(Id id); @@ -211,7 +213,7 @@ class DropGrid : public Convert, public GridDisplay, public Ctrl Callback WhenLeftDown; - GridCtrl::ItemRect& AddRow(int n = 1, int size = GridCtrl::GD_ROW_HEIGHT); + GridCtrl::ItemRect& AddRow(int n = 1, int size = -1); DropGrid& Add() { AddRow(); return *this; } //$-DropCtrl& Add(const Value& [, const Value& ]...); diff --git a/uppsrc/GridCtrl/GridBase.cpp b/uppsrc/GridCtrl/GridBase.cpp index 20577c61d..c1611ff3c 100644 --- a/uppsrc/GridCtrl/GridBase.cpp +++ b/uppsrc/GridCtrl/GridBase.cpp @@ -116,13 +116,16 @@ GridCtrl::ItemRect& GridCtrl::ItemRect::FixedAuto() return Min(n).Max(n); } -GridCtrl::ItemRect& GridCtrl::ItemRect::Edit(Ctrl &ctrl) +GridCtrl::ItemRect& GridCtrl::ItemRect::Edit(Ctrl &ctrl, bool b) { - ctrl.Hide(); - ctrl.SetFrame(BlackFrame()); - //ctrl.SetFrame(NullFrame()); - (*edits)[id].ctrl = &ctrl; - parent->holder.AddChild(&ctrl); + if(b) + { + ctrl.Hide(); + ctrl.SetFrame(BlackFrame()); + //ctrl.SetFrame(NullFrame()); + (*edits)[id].ctrl = &ctrl; + parent->holder.AddChild(&ctrl); + } return *this; } @@ -223,14 +226,15 @@ void GridCtrl::ItemRect::Serialize(Stream &s) static void MakeOption(One& ctrl) { - ctrl.Create