GridCtrl: Refactored (removed GridUtils, replaced LG with LLOG)

This commit is contained in:
Mirek Fidler 2026-01-22 10:02:18 +01:00
parent 20f5a89dc7
commit a91c093cb3
9 changed files with 98 additions and 197 deletions

View file

@ -2,6 +2,8 @@
#include <GridCtrl/GridCtrl.h>
namespace Upp {
#define LLOG(x) // DLOG(x)
#ifdef COMPILER_MSC
#pragma warning(disable: 4355)
@ -1534,7 +1536,7 @@ void GridCtrl::ChildAction(Ctrl *child, int event)
{
if(event == LEFTDOWN || event == RIGHTDOWN || event == MOUSEWHEEL)
{
//LG(2, "got event :%x child: %x", event, child);
//LLOG("got event :%x child: %x", event, child);
Point cp = GetCtrlPos(child);
if(cp.x < 0 || cp.y < 0)
return;
@ -1549,7 +1551,7 @@ void GridCtrl::ChildAction(Ctrl *child, int event)
{
if(live_cursor)
{
LG(2, "Child:LiveCursor");
LLOG("Child:LiveCursor");
Point p = GetMouseViewPos();
if(IsMouseBody(p))
SetCursor0(p, CU_MOUSE | CU_HIGHLIGHT);
@ -1713,7 +1715,7 @@ void GridCtrl::Scroll()
if(!doscroll)
return;
LG(0, "Scroll (%d, %d)", delta.cx, delta.cy);
LLOG("Scroll " << delta);
SyncCtrls();
UpdateCtrls(UC_CHECK_VIS | UC_SHOW | UC_SCROLL);
@ -1747,7 +1749,7 @@ void GridCtrl::SetFixedRows(int n)
{
if(n >= 0 && n <= total_rows)
{
LG(0, "SetFixedRows");
LLOG("SetFixedRows");
fixed_rows = n;
firstRow = -1;
UpdateSizes();
@ -1763,7 +1765,7 @@ void GridCtrl::SetFixedCols(int n)
{
if(n >= 0 && n < total_cols)
{
LG(0, "SetFixedCols");
LLOG("SetFixedCols");
fixed_cols = n + 1; /* +1 - indicator! */
firstCol = -1;
UpdateSizes();
@ -2320,7 +2322,7 @@ void GridCtrl::MouseAccel(const Point &p, bool horz, bool vert, dword keyflags)
if(speedx || speedy)
{
LG(0, "speedx %d, speedy %d", speedx, speedy);
LLOG("speedx " << Point(speedx, speedy));
MouseMove(p, keyflags);
}
@ -2719,7 +2721,7 @@ GridCtrl::CurState GridCtrl::SetCursor0(Point p, int opt, int dirx, int diry)
if(isnewrow)
SetCtrlsData();
LG(0, "cur(%d, %d)", curpos.x, curpos.y);
LLOG("cur " << curpos);
return cs;
}
@ -2810,7 +2812,7 @@ GridCtrl& GridCtrl::SetColWidth(int n, int width, bool recalc /* = true */)
GridCtrl& GridCtrl::SetRowHeight(int n, int height, bool recalc)
{
LG(0, "SetRowHeight %d %d", n, height);
LLOG("SetRowHeight " << n << height);
if(resize_row_mode > 0 && n >= fixed_rows)
return *this;
@ -2960,7 +2962,7 @@ void GridCtrl::CalcIntPos(RectItems &its, int n, int maxsize, int cnt, int resiz
for(int i = (renumber ? 1 : max(1, n)); i <= cnt ; i++)
{
its[i].npos = Round(its[i].Left());
its[i].npos = (int)(its[i].Left());
its[i - 1].nsize = its[i].npos - its[i - 1].npos;
if(renumber)
@ -2979,7 +2981,7 @@ void GridCtrl::CalcIntPos(RectItems &its, int n, int maxsize, int cnt, int resiz
its[last_vis].nsize = size ;//>= its[cnt].min && size <= its[cnt].max ? size : Round(its[cnt].size);
}
else
its[last_vis].nsize = Round(its[last_vis].size);
its[last_vis].nsize = (int)(its[last_vis].size);
}
bool GridCtrl::UpdateSizes()
@ -4310,7 +4312,7 @@ bool GridCtrl::CanMoveCol(int n, int m)
{
if(hitems[n].join > 0)
{
LG(2, "n=%d(%d) m=%d(%d)", n, hitems[n].join, m, hitems[m].join);
LLOG(Format("n=%d(%d) m=%d(%d)", n, hitems[n].join, m, hitems[m].join));
if(m == n - 2 && hitems[n].join == hitems[n - 1].join)
return true;
@ -4324,7 +4326,7 @@ bool GridCtrl::CanMoveCol(int n, int m)
void GridCtrl::MoveCol(int n, int m)
{
LG(0, "%d->%d", n, m);
LLOG(n << " -> " << m);
if(!CanMoveCol(n, m))
{
@ -4348,7 +4350,7 @@ void GridCtrl::MoveCol(int n, int m)
bool GridCtrl::MoveRow(int n, int m, bool repaint)
{
LG(0, "%d->%d", n, m);
LLOG(n << " -> " << m);
if(m == n || m == n - 1 ||
n < 0 || n > total_rows - 1 ||
@ -5263,7 +5265,7 @@ GridCtrl& GridCtrl::SetColsMax(int size)
void GridCtrl::GotFocus()
{
LG(3, "GotFocus");
LLOG("GotFocus");
RestoreFocus();
if(valid_cursor)
RefreshRow(curpos.y, 0, 0);
@ -5271,7 +5273,7 @@ void GridCtrl::GotFocus()
void GridCtrl::LostFocus()
{
LG(3, "LostFocus");
LLOG("LostFocus");
if(valid_cursor)
RefreshRow(curpos.y, 0, 0);
popup.Close();
@ -5279,7 +5281,7 @@ void GridCtrl::LostFocus()
void GridCtrl::ChildGotFocus()
{
LG(3, "ChildGotFocus");
LLOG("ChildGotFocus");
if(valid_cursor)
RefreshRow(curpos.y, 0, 0);
Ctrl::ChildGotFocus();
@ -5287,7 +5289,7 @@ void GridCtrl::ChildGotFocus()
void GridCtrl::ChildLostFocus()
{
LG(3, "ChildLostFocus");
LLOG("ChildLostFocus");
if(valid_cursor)
{
//if(focus_lost_accepting && !HasFocusDeep())
@ -5941,7 +5943,7 @@ void GridCtrl::DoRemove()
if(keep_last_row && (maxRowSelected - minRowSelected + 1) == GetCount())
maxRowSelected--;
LG(0, "Min:%d, Max:%d", minRowSelected, maxRowSelected);
LLOG(Format("Min:%d, Max:%d", minRowSelected, maxRowSelected));
for(int i = minRowSelected; i <= maxRowSelected; i++)
{
@ -6231,7 +6233,7 @@ int GridCtrl::ShowMatchedRows(const WString &f)
{
if(change || search_highlight)
{
LG(0, "Repaint %d", search_hide);
LLOG("Repaint " << search_hide);
Repaint(false, search_hide, 0);
}
}
@ -6251,7 +6253,7 @@ int GridCtrl::ShowMatchedRows(const WString &f)
WhenSearchCursor();
}
LG(0, "Matched rows %d", rows);
LLOG("Matched rows " << rows);
return rows;
}
@ -6406,54 +6408,54 @@ void GridCtrl::Debug(int n)
{
if(n == 0)
{
LG("---- DEBUG 0 ----------");
LG("firstVisCol %d", firstVisCol);
LG("lastVisCol %d", lastVisCol);
LG("firstVisRow %d", firstVisRow);
LG("lastVisRow %d", lastVisRow);
LG("firstCol %d", firstCol);
LG("firstRow %d", firstRow);
LG("lastCol %d", lastCol);
LG("lastRow %d", lastRow);
LG("total_cols %d", total_cols);
LG("total_rows %d", total_rows);
LG("curpos %d, %d", curpos.x, curpos.y);
LG("sbPos %d, %d", sbx.Get(), sby.Get());
LG("sbTotal %d, %d", sbx.GetTotal(), sby.GetTotal());
LG("sbPage %d, %d", sbx.GetPage(), sby.GetPage());
LG("Size %d, %d", GetSize().cx, GetSize().cy);
LG("fixed_width %d", fixed_width);
LG("fixed_height %d", fixed_height);
LG("total_width %d", total_width);
LG("total_height %d", total_height);
LG("row_modified %d", row_modified);
LG("selected_rows %d", selected_rows);
LG("selected_items %d", selected_items);
LG("---- END --------------");
LLOG("---- DEBUG 0 ----------");
LLOG("firstVisCol " << firstVisCol);
LLOG("lastVisCol " << lastVisCol);
LLOG("firstVisRow " << firstVisRow);
LLOG("lastVisRow " << lastVisRow);
LLOG("firstCol " << firstCol);
LLOG("firstRow " << firstRow);
LLOG("lastCol " << lastCol);
LLOG("lastRow " << lastRow);
LLOG("total_cols " << total_cols);
LLOG("total_rows " << total_rows);
LLOG("curpos " << curpos.x << curpos.y);
LLOG("sbPos " << sbx.Get() << sby.Get());
LLOG("sbTotal " << sbx.GetTotal() << sby.GetTotal());
LLOG("sbPage " << sbx.GetPage() << sby.GetPage());
LLOG("Size " << GetSize().cx << GetSize().cy);
LLOG("fixed_width " << fixed_width);
LLOG("fixed_height " << fixed_height);
LLOG("total_width " << total_width);
LLOG("total_height " << total_height);
LLOG("row_modified " << row_modified);
LLOG("selected_rows " << selected_rows);
LLOG("selected_items " << selected_items);
LLOG("---- END --------------");
}
if(n == 1)
{
LG("---- DEBUG 1 ----------");
LLOG("---- DEBUG 1 ----------");
for(int i = 0; i < total_cols; i++)
{
LG("Col %d h:%d p:%d s:%d", i, hitems[i].hidden, hitems[i].npos, hitems[i].nsize);
//LG("ismin %d ismax %d", hitems[i].ismin, hitems[i].ismax);
LLOG(Format("Col %d h:%d p:%d s:%d", i, hitems[i].hidden, hitems[i].npos, hitems[i].nsize));
//LLOG("ismin %d ismax %d", hitems[i].ismin, hitems[i].ismax);
}
LG("---- END --------------");
LLOG("---- END --------------");
}
if(n == 2)
{
LG("---- DEBUG 2 ----------");
LLOG("---- DEBUG 2 ----------");
for(int i = 0; i < total_rows; i++)
{
LG("Row %d p:%d s:%d", i, vitems[i].npos, vitems[i].nsize);
LLOG(Format("Row %d p:%d s:%d", i, vitems[i].npos, vitems[i].nsize));
}
LG("---- END --------------");
LLOG("---- END --------------");
}
if(n == 3)
{
Point p = GetCtrlPos(focused_ctrl);
LG(2, "Focused %x (%d, %d)", focused_ctrl, p.x, p.y);
LLOG(Format("Focused %x (%d, %d)", focused_ctrl, p.x, p.y));
}
}

View file

@ -7,7 +7,6 @@
namespace Upp {
#include "GridUtils.h"
#include "GridDisplay.h"
#define FOREACH_ROW(x) for(x.Begin(); x.IsEnd(); x.Next())
@ -15,6 +14,30 @@ namespace Upp {
#define FOREACH_MODIFIED_ROW(x) FOREACH_ROW(x) if(x.IsUpdatedRow())
#define FOREACH_ROW_NOT_CURRENT(x) FOREACH_ROW(x) if(!x.IsCurrentRow())
#define BIT(x) (1 << x)
inline bool IsSet(int s, int b)
{
return s & b;
}
inline void BitSet(dword &k, dword v, bool s)
{
if(s) k |= v; else k &= ~v;
}
inline bool BitInverse(dword &k, dword v)
{
bool s = k & v;
BitSet(k, v, !s);
return s;
}
inline int Distance(const Point &p0, const Point &p1)
{
return max(abs(p0.x - p1.x), abs(p0.y - p1.y));
}
namespace GF
{
enum {

View file

@ -18,8 +18,6 @@ file
GridBase.cpp,
GridSort.cpp,
GridCtrl.iml,
GridUtils.h,
GridUtils.cpp,
ToDo.txt,
changelog.txt,
GridCtrl.t charset "UTF-8",

View file

@ -6,7 +6,6 @@ namespace Upp {
#define IMAGECLASS GridImg
#define IMAGEFILE <GridCtrl/GridCtrl.iml>
#include <Draw/iml_source.h>
#include "GridUtils.h"
GridDisplay& StdGridDisplay()

View file

@ -1,6 +1,8 @@
#include "GridCtrl.h"
namespace Upp {
#define LLOG(x) // DLOG(x)
int GridCtrl::GetMouseCol(Point &p, bool relative, bool fixed, bool full)
{
@ -254,7 +256,7 @@ void GridCtrl::MouseMove(Point p, dword keyflags)
if(live_cursor && popup.IsOpen())
{
LG(2, "MouseMove:LiveCursor");
LLOG("MouseMove:LiveCursor");
if(IsMouseBody(p))
SetCursor0(p, CU_MOUSE | CU_HIGHLIGHT);
else
@ -364,7 +366,7 @@ void GridCtrl::MouseMove(Point p, dword keyflags)
void GridCtrl::LeftUp(Point p, dword keyflags)
{
LG(0, "LeftUp");
LLOG("LeftUp");
ReleaseCapture();
Refresh();
@ -375,7 +377,7 @@ void GridCtrl::LeftUp(Point p, dword keyflags)
if(moving_header)
{
LG(0, "moving_header");
LLOG("moving_header");
pophdr.Close();
moving_header = false;
@ -496,7 +498,7 @@ void GridCtrl::LeftUp(Point p, dword keyflags)
void GridCtrl::LeftDouble(Point p, dword keyflags)
{
LG(0, "LeftDouble");
LLOG("LeftDouble");
if(full_col_resizing && curSplitCol >= 0)
return;
@ -555,7 +557,7 @@ void GridCtrl::MouseLeave()
{
if(live_cursor)
{
LG(2, "MouseLeave:LiveCursor");
LLOG("MouseLeave:LiveCursor");
SetCursor0(-1, -1, CU_HIGHLIGHT);
}
UpdateHighlighting(GS_BORDER, Point(0, 0));

View file

@ -1,6 +1,8 @@
#include "GridCtrl.h"
namespace Upp {
#define LLOG(x) // DLOG(x)
void GridCtrl::Paint(Draw &w)
{
@ -21,11 +23,11 @@ void GridCtrl::Paint(Draw &w)
bool skip;
Rect r;
LG(0, "---- Paint(%d)", ++paintcnt);
LLOG("---- Paint " << ++paintcnt);
if(total_cols <= 1 || total_rows == 0)
{
LG(0, "---- Paint(%d) Empty.", paintcnt);
LLOG("---- Paint " << paintcnt << " Empty.");
w.DrawRect(sz, SColorPaper);
return;
}
@ -36,8 +38,8 @@ void GridCtrl::Paint(Draw &w)
if(firstCol < 0) firstCol = GetFirstVisCol(fixed_width);
if(firstRow < 0) firstRow = GetFirstVisRow(fixed_height);
LG(0, "firstCol %d", firstCol);
LG(0, "firstRow %d", firstRow);
LLOG("firstCol " << firstCol);
LLOG("firstRow " << firstRow);
int en = IsShowEnabled() ? 0 : GD::READONLY;
@ -60,7 +62,7 @@ void GridCtrl::Paint(Draw &w)
if(w.IsPainting(r) && total_cols > 1)
{
LG(0, "Top header");
LLOG("Top header");
w.Clip(r);
x = hitems[total_cols - 1].nRight(sbx);
@ -190,7 +192,7 @@ void GridCtrl::Paint(Draw &w)
if(can_paint && w.IsPainting(r))
{
LG(0, "Left header");
LLOG("Left header");
w.Clip(r);
y = vitems[total_rows - 1].nBottom(sby);
@ -277,7 +279,7 @@ void GridCtrl::Paint(Draw &w)
if(can_paint && w.IsPainting(r))
{
LG(0, "Body");
LLOG("Body");
w.Clip(r);
x = hitems[total_cols - 1].nRight(sbx);
@ -511,7 +513,7 @@ void GridCtrl::Paint(Draw &w)
if(++paint_flag > 100)
paint_flag = 0;
LG(0, "---- Paint(%d).", paintcnt);
LLOG("---- Paint " << paintcnt);
}
};

View file

@ -2,6 +2,8 @@
namespace Upp {
#define LLOG(x) // DLOG(x)
void GridCtrl::Select(int n, int cnt /* = 1*/)
{
SelectCount(n + fixed_rows, cnt, true);
@ -250,7 +252,7 @@ bool GridCtrl::IsSelected()
void GridCtrl::ClearSelection()
{
LG(0, "Cleared %d", selected_rows);
LLOG("Cleared " << selected_rows);
if(selected_rows > 0)
{
for(int i = fixed_rows; i < total_rows; i++)

View file

@ -1,69 +0,0 @@
#include <CtrlLib/CtrlLib.h>
namespace Upp {
LineEdit *dlog = NULL;
int dlev = 0;
static int pos = 0;
static constexpr int buff_size = 1024;
void LogCon(const char *fmt, ...)
{
char buffer[buff_size];
va_list argptr;
va_start(argptr, fmt);
vsnprintf(buffer, buff_size, fmt, argptr);
va_end(argptr);
LOG(buffer);
}
void LogCon(int level, const char *fmt, ...)
{
char buffer[buff_size];
va_list argptr;
va_start(argptr, fmt);
vsnprintf(buffer, buff_size, fmt, argptr);
va_end(argptr);
LOG(buffer);
}
void LogGui(const char *fmt, ...)
{
if(!dlog)
return;
pos = dlog->GetLength();
char buffer[buff_size];
va_list argptr;
va_start(argptr, fmt);
int l = vsnprintf(buffer, buff_size, fmt, argptr);
va_end(argptr);
dlog->Insert(pos, buffer);
pos += l;
dlog->Insert(pos, "\n");
pos++;
dlog->SetCursor(pos);
}
void LogGui(int level, const char *fmt, ...)
{
if(!dlog || level < dlev)
return;
pos = dlog->GetLength();
char buffer[buff_size];
va_list argptr;
va_start(argptr, fmt);
int l = vsnprintf(buffer, buff_size, fmt, argptr);
va_end(argptr);
dlog->Insert(pos, buffer);
pos += l;
dlog->Insert(pos, "\n");
pos++;
dlog->SetCursor(pos);
}
}

View file

@ -1,58 +0,0 @@
#ifndef _GridCtrl_GridUtils_h_
#define _GridCtrl_GridUtils_h_
#define BIT(x) (1 << x)
inline bool IsSet(int s, int b)
{
return s & b;
}
inline void BitSet(dword &k, dword v, bool s)
{
if(s) k |= v; else k &= ~v;
}
inline bool BitInverse(dword &k, dword v)
{
bool s = k & v;
BitSet(k, v, !s);
return s;
}
inline int Distance(const Point &p0, const Point &p1)
{
return max(abs(p0.x - p1.x), abs(p0.y - p1.y));
}
inline int32 Round(double a)
{
#if defined(COMPILER_MSC) && defined(CPU_32)
int32 retval;
__asm fld a
__asm fistp retval
return retval;
#else
return (int32) a;
#endif
}
#ifdef flagDEBUG
#define LG LogGui
#else
inline void LG_Dummy_Nop__(int level, const char *fmt, ...) {} // needed to silence CLANG warnings
inline void LG_Dummy_Nop__(const char *fmt, ...) {} // about unused value
#define LG LG_Dummy_Nop__
#endif
#define LGR LogGui
extern LineEdit *dlog;
extern int dlev;
void LogGui(const char *fmt, ...);
void LogGui(int level, const char *fmt, ...);
void LogCon(const char *fmt, ...);
void LogCon(int level, const char *fmt, ...);
#endif