GridCtrlTest
Application for testing GridCtrl control
Panel.h
#ifndef _GridTest_Panel_h_
#define _GridTest_Panel_h_
#include <CtrlLib/CtrlLib.h>
#include <GridCtrl/GridCtrl.h>
using namespace Upp;
#define LAYOUTFILE <GridCtrlTest/Panel.lay>
#include <CtrlCore/lay.h>
struct Panel : WithPanelLayout<ParentCtrl>
{
GridCtrl* grid;
WithEditOptionsLayout<ParentCtrl> editopt;
WithLookOptionsLayout<ParentCtrl> lookopt;
WithColorsOptionsLayout<ParentCtrl> colsopt;
WithNumberLayout<ParentCtrl> numsopt;
void LookOptions(int n);
void ColorsOptions(int n);
void EditOptions(int n);
void Actions(int n);
void Init(GridCtrl& g);
Panel();
typedef Panel CLASSNAME;
};
#endif
GridCtrlTest.h
#ifndef _GridTest_GridCtrlTest_h_
#define _GridTest_GridCtrlTest_h_
#include <CtrlLib/CtrlLib.h>
#include <GridCtrl/GridCtrl.h>
using namespace Upp;
#include "Panel.h"
#define LAYOUTFILE <GridCtrlTest/GridCtrlTest.lay>
#include <CtrlCore/lay.h>
struct Test : public Ctrl
{
virtual void Init() = 0;
};
struct BasicTest : Test
{
GridCtrl grid;
BasicTest()
{
Add(grid.SizePos());
}
};
struct TestMain : BasicTest
{
EditInt edit0;
EditInt edit1;
EditString edit2;
DropTime dt;
EditInt ei;
EditString ee0, ee1;
DropList list, colors, names, numbers;
void Init();
};
struct TestExcelGrid : BasicTest
{
void Init();
};
struct TestPropertyGrid : BasicTest
{
void Init();
};
struct TestFocusLost : Test
{
Splitter spl;
GridCtrl grid0;
GridCtrl grid1;
void Init();
};
struct TestArrayCtrl : Test
{
EditInt e0, e1;
ArrayCtrl arr;
void Init();
};
struct App : public WithGridPanel<TopWindow>
{
typedef App CLASSNAME;
Splitter spl;
TestMain testMain;
TestExcelGrid testExcelGrid;
TestPropertyGrid testPropertyGrid;
TestFocusLost testFocusLost;
TestArrayCtrl testArrayCtrl;
void TabChange();
void Init();
void Serialize(Stream &s);
void Resort();
void ToXml();
void FromXml();
App();
};
#endif
TestExcelGrid.cpp
#include "GridCtrlTest.h"
void TestExcelGrid::Init()
{
const int total_cols = 50;
for(int i = 0; i < total_cols; i++)
{
String name = Format("Column %d", i + 1);
grid.AddColumn((const char *)name).Width(80);
}
grid.SelectRow(false);
grid.SetRowCount(200);
grid.ResizePaintMode(1);
grid.Absolute();
grid.Clipboard();
}
TestMain.cpp
#include "GridCtrlTest.h"
void TestMain::Init()
{
const int names_cnt = 6;
const int colors_cnt = 4;
const int numbers_cnt = 10;
const char * s_names[] = { "Jack", "This is a very long multiline text\n\n\n1234\n5678\nThis text is absolutely about nothing interesting. This text is absolutely about nothing interesting. This text is absolutely about nothing interesting. This text is absolutely about nothing interesting. This text is absolutely about nothing interesting. This text is absolutely about nothing interesting. This text is absolutely about nothing interesting.", "Smith", "Billy", "Eve", "Pamela" };
const char * s_colors[] = { "Red", "Blue", "White", "Black" };
grid.Inserting(false);
grid.Appending(!false);
grid.Moving();
grid.Removing();
grid.Navigating();
grid.Searching();
grid.Editing();
grid.Hiding();
grid.Duplicating();
grid.AfterBeforeInserting();
grid.Accepting().Canceling();
grid.Clipboard();
grid.SummaryRow();
const int total_cols = 15;
const int total_rows = 10;
for(int i = 0; i < total_cols; i++)
{
String name = Format("Column %d", i + 1);
int size = rand() % 40 + 50;
grid.AddColumn((const char *)name).Width(size);
}
for(int i = 0; i < names_cnt; i++)
names.Add(i, s_names[i]);
for(int i = 0; i < colors_cnt; i++)
colors.Add(i, s_colors[i]);
for(int i = 0; i < numbers_cnt; i++)
numbers.Add(i, Format("Number %d", i));
grid.GetColumn(1).Edit(names).SetConvert(names).Default(0).SetImage(CtrlImg::go_forward());
grid.GetColumn(2).Edit(numbers).SetConvert(numbers).Default(1);
grid.GetColumn(3).Edit(colors).SetConvert(colors).Default(2);
grid.GetColumn(4).Edit(edit0).DoCount();
grid.GetColumn(5).Edit(edit1).DoSum("Sum: %` $");
grid.GetColumn(6).Edit(dt).DoMin();
grid.GetColumn(9).Option();
grid.GetColumn(10).Option();
grid.GetColumn(11).Option();
grid.GetColumn(total_cols - 1).Min(40).Max(40);
grid.GetColumn(total_cols - 2).Fixed(50);
grid.GetColumn(total_cols - 3).Fixed(40);
grid.SetDefaultRowHeight(DPI(26));
grid.AddRow(total_rows);
grid.FixedPaste();
Date curdate = GetSysDate();
for(int i = 0; i < total_rows; i++)
{
for(int j = 0; j < total_cols; j++)
{
switch(j)
{
case 0: grid.Set(i, j, Value(i + 1)); break;
case 1: grid.Set(i, j, rand() % (names_cnt - 1)); break;
case 2: grid.Set(i, j, rand() % (numbers_cnt - 1)); break;
case 3: grid.Set(i, j, rand() % (colors_cnt - 1)); break;
case 6: grid.Set(i, j, Date(curdate.year, curdate.month, rand() % 27 + 1)); break;
case 9:
case 10:
case 11:
case 7: grid.Set(i, j, rand() % 1); break;
default:
grid.Set(i, j, Value(rand() % 500));
}
}
}
grid.EvenColor();
grid.ColoringMode(2);
grid.Indicator();
grid.EditCell();
grid.MultiSelect();
grid.SelectRow();
grid.Sorting();
grid.MovingCols(1).MovingRows(1);
grid.SetToolBar();
grid.Dragging();
grid.SetCursor(0);
grid.DrawFocus();
grid.AddColumn().WrapText();
grid.SetCtrl(0, 0, ei);
}
TestFocusLost.cpp
#include "GridCtrlTest.h"
void TestFocusLost::Init()
{
Add(spl.SizePos());
spl.Horz(grid0, grid1);
grid0.AddColumn("Key");
grid0.AddColumn("Value");
grid1.AddColumn("Key");
grid1.AddColumn("Value");
}
TestPropertyGrid.cpp
#include "GridCtrlTest.h"
void TestPropertyGrid::Init()
{
grid.AddColumn("Property");
grid.AddColumn("Value");
grid.Add("Name", "Window");
grid.SetCtrl(1, new EditString());
grid.Add("Title", "User account");
grid.SetCtrl(1, new EditString());
grid.Add("Width", 500);
grid.SetCtrl(1, new EditInt());
grid.Add("Height", 600);
grid.SetCtrl(1, new EditInt());
grid.Add("Editable", "false");
grid.Add("Background", Red());
grid.SetCtrl(1, new ColorPusher());
grid.Add("Hint", "This window is big");
grid.SetCtrl(1, new EditString());
grid.DrawFocus();
}
GridCtrlTest.cpp
#include "GridCtrlTest.h"
void MakeGrid(One<Ctrl>& ctrl)
{
GridCtrl &c = ctrl.Create<GridCtrl>();
c.AddColumn("Column 1");
c.AddColumn("Column 2");
c.AddColumn("Column 3");
c.MovingCols();
c.MovingRows();
c.Add("Hello", 1, 2);
c.Add("Daniel", 12, 10);
c.Add("Ala", 17, 23);
c.Add("Baby", 22, 8);
}
App::App()
{
CtrlLayout(*this, "Grid Test Panel");
tab.Add(testMain.SizePos(), "Main");
tab.Add(testExcelGrid.SizePos(), "Excel grid");
tab.Add(testPropertyGrid.SizePos(), "Property grid");
tab.Add(testArrayCtrl.SizePos(), "ArrayCtrl");
tab.Add(testFocusLost.SizePos(), "Focus lost");
tab << [=] { TabChange(); };
resort << [=] { Resort(); };
toxml << [=] { ToXml(); };
fromxml << [=] { FromXml(); };
Sizeable().Zoomable();//.BackPaint(!false);
}
void App::Init()
{
testMain.Init();
testExcelGrid.Init();
testPropertyGrid.Init();
testFocusLost.Init();
testArrayCtrl.Init();
panel.Init(testMain.grid);
}
void App::TabChange()
{
int t = tab.Get();
if(t == 0)
panel.Init(testMain.grid);
else if(t == 1)
panel.Init(testExcelGrid.grid);
else if(t == 2)
panel.Init(testPropertyGrid.grid);
else if(t == 4)
panel.Init(testFocusLost.grid0);
dlog->Clear();
}
void App::Serialize(Stream &s)
{
SerializePlacement(s);
s % panel.level;
if(s.IsLoading())
dlev = ~panel.level;
}
void App::Resort()
{
panel.grid->ReSort();
}
void App::ToXml()
{
String s = StoreAsXML(*panel.grid, "grid-values");
FileOut f(ConfigFile("grid.xml"));
f << s;
f.Close();
}
void App::FromXml()
{
String s = LoadFile(ConfigFile("grid.xml"));
LoadFromXML(*panel.grid, s);
}
GUI_APP_MAIN
{
SetLanguage(LNGC_('E','N','E','N', CHARSET_UTF8));
App app;
LoadFromFile(app);
app.Init();
app.Run();
StoreToFile(app);
}
TestArrayCtrl.cpp
#include "GridCtrlTest.h"
void MakeDropList(One<Ctrl>& ctrl)
{
ctrl.Create<DropList>()
.Add(Null, "")
.Add(0, "None")
.Add(1, "Minimal")
.Add(2, "Full");
}
void MakeButton(One<Ctrl>& ctrl)
{
ctrl.Create<Button>();
ctrl->WantFocus();
}
void MakeCheck(One<Ctrl>& ctrl)
{
ctrl.Create<Option>();
ctrl->WantFocus();
}
void MakeEdit(One<Ctrl>& ctrl)
{
ctrl.Create<EditInt>();
ctrl->WantFocus();
}
void TestArrayCtrl::Init()
{
arr.HeaderTab(0).SetRatio(10);
arr.HeaderObject().Absolute();
arr.MultiSelect();
arr.Inserting();
arr.SetLineCy(DPI(20));
const int total_cols = 15;
const int total_rows = 10;
for(int i = 0; i < total_cols; i++)
{
String name = Format("Column %d", i + 1);
int size = rand() % 40 + 50;
arr.AddColumn((const char *)name, size);
}
arr.SetCount(50);
arr.ColumnAt(1).Ctrls(MakeDropList);
arr.ColumnAt(2).Ctrls(MakeButton);
arr.ColumnAt(3).Ctrls(MakeEdit);
arr.ColumnAt(1).Edit(e0);
arr.ColumnAt(2).Edit(e1);
Add(arr.SizePos());
}
Panel.cpp
#include "Panel.h"
Panel::Panel()
{
CtrlLayout(*this);
CtrlLayout(editopt);
CtrlLayout(lookopt);
CtrlLayout(colsopt);
CtrlLayout(numsopt);
opts.Add(lookopt, "Look");
opts.Add(editopt, "Edit");
opts.Add(colsopt, "Colors");
opts.Add(numsopt, "Numbers");
lookopt.indicator << [=] { LookOptions(0); };
lookopt.hgrid << [=] { LookOptions(1); };
lookopt.vgrid << [=] { LookOptions(2); };
lookopt.resizing_cols << [=] { LookOptions(3); };
lookopt.resizing_rows << [=] { LookOptions(4); };
lookopt.live_cursor << [=] { LookOptions(5); };
lookopt.resize_paint_mode << [=] { LookOptions(6); };
lookopt.resize_col_mode << [=] { LookOptions(7); };
lookopt.resize_row_mode << [=] { LookOptions(8); };
lookopt.moving_cols << [=] { LookOptions(9); };
lookopt.moving_rows << [=] { LookOptions(10); };
lookopt.full_col_resizing << [=] { LookOptions(11); };
lookopt.full_row_resizing << [=] { LookOptions(12); };
lookopt.repaint << [=] { LookOptions(13); };
lookopt.disable << [=] { LookOptions(14); };
lookopt.chameleon << [=] { LookOptions(15); };
lookopt.draw_focus << [=] { LookOptions(16); };
editopt.multiline << [=] { EditOptions(0); };
editopt.select_row << [=] { EditOptions(1); };
editopt.sorting << [=] { EditOptions(2); };
editopt.multisort << [=] { EditOptions(3); };
editopt.tab_changes_row << [=] { EditOptions(4); };
editopt.tab_adds_row << [=] { EditOptions(5); };
editopt.edit_mode << [=] { EditOptions(6); };
editopt.one_click_edit << [=] { EditOptions(7); };
editopt.enter_like_tab << [=] { EditOptions(8); };
colsopt.theme.Add(-1, "Flat");
colsopt.theme.Add(0, "Cairo");
colsopt.theme.Add(1, "Gray");
colsopt.theme.Add(2, "Plastik");
colsopt.theme.Add(3, "Lipstik");
colsopt.theme.Add(4, "Alloy");
colsopt.theme.Add(5, "Unknown 01");
colsopt.theme.Add(6, "Default");
lookopt.resize_paint_mode.Add(0, "Line");
lookopt.resize_paint_mode.Add(1, "Line + Fixed");
lookopt.resize_paint_mode.Add(2, "Fixed + NonFixed");
lookopt.resize_col_mode.Add(0, "Absolute");
lookopt.resize_col_mode.Add(1, "Proportional");
lookopt.resize_row_mode.Add(0, "Absolute");
lookopt.resize_row_mode.Add(1, "Proportional");
colsopt.theme << [=] { ColorsOptions(0); };
colsopt.odd_color << [=] { ColorsOptions(1); };
colsopt.even_color << [=] { ColorsOptions(2); };
colsopt.odd_even_mode << [=] { ColorsOptions(3); };
colsopt.grid_color << [=] { ColorsOptions(4); };
colsopt.focus_color << [=] { ColorsOptions(5); };
colsopt.live_color << [=] { ColorsOptions(6); };
colsopt.odd_color.NoRampWheel();
colsopt.even_color.NoRampWheel();
colsopt.grid_color.NoRampWheel().NotNull();
colsopt.focus_color.NoRampWheel();
colsopt.live_color.NoRampWheel();
numsopt.total_cols << [=] { Actions(0); };
numsopt.total_rows << [=] { Actions(1); };
numsopt.fixed_cols << [=] { Actions(2); };
numsopt.fixed_rows << [=] { Actions(3); };
numsopt.total_cols.Disable();
clear_grid << [=] { Actions(4); };
reset_grid << [=] { Actions(5); };
#ifndef flagDEBUG
debug.Hide();
level.Hide();
#else
clear << [=] { Actions(400); };
debug << [=] { Actions(401); };
level << [=] { Actions(402); };
#endif
level.Add(0, "All")
.Add(1, "1")
.Add(2, "2")
.Add(3, "3");
level <<= 0;
dlog = &log0;
}
void Panel::Init(GridCtrl& g)
{
grid = &g;
numsopt.total_cols <<= grid->total_cols;
numsopt.total_rows <<= grid->total_rows;
numsopt.fixed_cols <<= grid->fixed_cols;
numsopt.fixed_rows <<= grid->fixed_rows;
lookopt.indicator <<= grid->indicator;
lookopt.hgrid <<= grid->horz_grid;
lookopt.vgrid <<= grid->vert_grid;
lookopt.resizing_cols <<= grid->resizing_cols;
lookopt.resizing_rows <<= grid->resizing_rows;
lookopt.live_cursor <<= grid->live_cursor;
lookopt.moving_cols <<= grid->moving_cols;
lookopt.moving_rows <<= grid->moving_rows;
lookopt.full_col_resizing <<= grid->full_col_resizing;
lookopt.full_row_resizing <<= grid->full_row_resizing;
lookopt.disable <<= !grid->IsEnabled();
lookopt.chameleon <<= grid->chameleon;
lookopt.draw_focus <<= grid->draw_focus;
editopt.multiline <<= grid->multi_select;
editopt.select_row <<= grid->select_row;
editopt.sorting <<= grid->sorting;
editopt.multisort <<= grid->sorting_multicol;
editopt.tab_changes_row <<= grid->tab_changes_row;
editopt.tab_adds_row <<= grid->tab_adds_row;
editopt.edit_mode = grid->edit_mode;
editopt.one_click_edit <<= grid->one_click_edit;
lookopt.resize_paint_mode <<= grid->resize_paint_mode;
lookopt.resize_col_mode <<= grid->resize_col_mode;
lookopt.resize_row_mode <<= grid->resize_row_mode;
colsopt.theme <<= grid->display->theme;
colsopt.odd_even_mode <<= grid->coloring_mode;
colsopt.odd_color <<= grid->bg_odd;
colsopt.even_color <<= grid->bg_even;
colsopt.grid_color <<= grid->fg_grid;
colsopt.focus_color <<= grid->bg_focus;
colsopt.live_color <<= grid->bg_live;
}
void Panel::LookOptions(int n)
{
switch(n)
{
case 0: grid->Indicator(lookopt.indicator); break;
case 1: grid->HorzGrid(lookopt.hgrid); break;
case 2: grid->VertGrid(lookopt.vgrid); break;
case 3: grid->ResizingCols(lookopt.resizing_cols); break;
case 4: grid->ResizingRows(lookopt.resizing_rows); break;
case 5: grid->LiveCursor(lookopt.live_cursor); break;
case 6: grid->ResizePaintMode(lookopt.resize_paint_mode.GetIndex()); break;
case 7: grid->ResizeColMode(lookopt.resize_col_mode.GetIndex()); break;
case 8: grid->ResizeRowMode(lookopt.resize_row_mode.GetIndex()); break;
case 9: grid->MovingCols(lookopt.moving_cols); break;
case 10: grid->MovingRows(lookopt.moving_rows); break;
case 11: grid->FullColResizing(lookopt.full_col_resizing); break;
case 12: grid->FullRowResizing(lookopt.full_row_resizing); break;
case 13:
#ifdef flagDEBUG
Ctrl::ShowRepaint((int) lookopt.repaint ? 20 : 0);
#endif
break;
case 14: grid->Enable(!lookopt.disable); break;
case 15: grid->Chameleon(lookopt.chameleon); break;
case 16: grid->DrawFocus(lookopt.draw_focus); break;
}
grid->Repaint();
}
void Panel::ColorsOptions(int n)
{
switch(n)
{
case 0: grid->GetDisplay().SetTheme(~colsopt.theme); break;
case 1: grid->OddColor(SColorText, ~colsopt.odd_color); break;
case 2: grid->EvenColor(SColorText, ~colsopt.even_color); break;
case 3: grid->ColoringMode(colsopt.odd_even_mode); break;
case 4: grid->GridColor(~colsopt.grid_color); break;
case 5: grid->FocusColor(SColorText, ~colsopt.focus_color); break;
case 6: grid->LiveColor(SColorText, ~colsopt.live_color); break;
}
grid->Repaint();
}
void Panel::EditOptions(int n)
{
switch(n)
{
case 0: grid->MultiSelect(editopt.multiline); break;
case 1: grid->SelectRow(editopt.select_row); break;
case 2: grid->Sorting(editopt.sorting); break;
case 3: grid->MultiSorting(editopt.multisort); break;
case 4: grid->TabChangesRow(editopt.tab_changes_row); break;
case 5: grid->TabAddsRow(editopt.tab_adds_row); break;
case 6: grid->EditMode(editopt.edit_mode); break;
case 7: grid->OneClickEdit(editopt.one_click_edit); break;
case 8: grid->EnterLikeTab(editopt.enter_like_tab); break;
}
grid->Repaint();
}
void Panel::Actions(int n)
{
switch(n)
{
case 0:
{
/*
int cnt = grid->GetColumnCount();
if(cnt < numsopt.total_cols)
grid->AddColumn(numsopt.total_cols - cnt);
else
grid->RemoveColumn(cnt - numsopt.total_cols);
*/
break;
}
case 1:
{
int cnt = grid->total_rows;
if(cnt < numsopt.total_rows)
grid->Append(numsopt.total_rows - cnt);
else
grid->RemoveLast(cnt - numsopt.total_rows);
break;
}
case 2: grid->SetFixedCols(numsopt.fixed_cols); break;
case 3: grid->SetFixedRows(numsopt.fixed_rows); break;
case 4:
grid->Clear();
grid->RefreshTop();
break;
case 5:
grid->Reset();
break;
case 400:
log0.Clear();
break;
case 401:
grid->Debug(0);
break;
case 402:
dlev = ~level;
break;
case 403:
grid->ReSort();
break;
case 666:
Close();
}
grid->Repaint();
}
GridCtrlTest.lay
LAYOUT(GridPanel, 896, 540)
ITEM(Upp::TabCtrl, tab, HSizePosZ(4, 412).VSizePosZ(4, 28))
ITEM(Upp::Button, resort, SetLabel(t_("Resort")).LeftPosZ(4, 104).BottomPosZ(4, 20))
ITEM(Upp::Button, toxml, SetLabel(t_("To XML")).LeftPosZ(112, 56).BottomPosZ(4, 20))
ITEM(Upp::Button, fromxml, SetLabel(t_("From XML")).LeftPosZ(172, 56).BottomPosZ(4, 20))
ITEM(Panel, panel, RightPosZ(4, 404).VSizePosZ(4, 0))
END_LAYOUT
LAYOUT(Test, 564, 356)
ITEM(Upp::GridCtrl, dv___0, Indicator(true).MovingCols(true).MovingRows(true).LiveCursor(true).LeftPosZ(112, 312).TopPosZ(48, 202))
END_LAYOUT
LAYOUT(DynamicLayout, 380, 216)
ITEM(Upp::Button, create, SetLabel(t_("Create Grid")).LeftPosZ(4, 72).TopPosZ(4, 24))
ITEM(Upp::Button, remove, SetLabel(t_("Remove Grid")).LeftPosZ(80, 72).TopPosZ(4, 24))
ITEM(Splitter, spl, HSizePosZ(4, 4).VSizePosZ(32, 4))
END_LAYOUT
LAYOUT(DisplayLayout, 400, 200)
ITEM(Upp::LabelBox, dv___0, HSizePosZ(4, 8).VSizePosZ(12, 16))
ITEM(Upp::Button, dv___1, SetLabel(t_("Button")).RightPosZ(32, 76).TopPosZ(72, 32))
ITEM(Upp::DocEdit, dv___2, LeftPosZ(20, 168).TopPosZ(48, 104))
END_LAYOUT
LAYOUT(GridTestMain, 628, 520)
END_LAYOUT
Panel.lay
LAYOUT(EditOptionsLayout, 180, 264)
ITEM(Upp::Option, multiline, SetLabel(t_("Multiline select (MLB + CTRL)")).LeftPosZ(4, 160).TopPosZ(4, 15))
ITEM(Upp::Option, select_row, SetLabel(t_("Select row")).LeftPosZ(4, 160).TopPosZ(20, 15))
ITEM(Upp::Option, sorting, SetLabel(t_("Auto sort")).LeftPosZ(4, 160).VCenterPosZ(15, 32))
ITEM(Upp::Option, multisort, SetLabel(t_("Multicolumn sort")).LeftPosZ(4, 160).VCenterPosZ(15, 48))
ITEM(Upp::Option, tab_adds_row, SetLabel(t_("Tab adds row")).LeftPosZ(4, 160).TopPosZ(52, 15))
ITEM(Upp::Option, one_click_edit, SetLabel(t_("One click edit")).LeftPosZ(4, 160).TopPosZ(112, 15))
ITEM(Upp::Option, enter_like_tab, SetLabel(t_("Enter like tab")).LeftPosZ(4, 160).TopPosZ(128, 15))
ITEM(Upp::Option, tab_changes_row, SetLabel(t_("Tab changes row")).LeftPosZ(4, 160).TopPosZ(36, 15))
ITEM(Upp::Switch, edit_mode, SetLabel(t_("Edit row\nEdit cell")).LeftPosZ(4, 160).TopPosZ(72, 32))
END_LAYOUT
LAYOUT(LookOptionsLayout, 180, 468)
ITEM(Upp::Label, dv___0, SetLabel(t_("Resize paint mode")).LeftPosZ(4, 160).TopPosZ(252, 16))
ITEM(Upp::DropList, resize_paint_mode, LeftPosZ(4, 160).TopPosZ(268, 19))
ITEM(Upp::Label, dv___2, SetLabel(t_("Resize col mode")).LeftPosZ(4, 88).TopPosZ(292, 16))
ITEM(Upp::DropList, resize_col_mode, LeftPosZ(4, 88).TopPosZ(312, 19))
ITEM(Upp::Label, dv___4, SetLabel(t_("Resize row mode")).LeftPosZ(4, 88).TopPosZ(336, 16))
ITEM(Upp::DropList, resize_row_mode, LeftPosZ(4, 88).TopPosZ(352, 19))
ITEM(Upp::Option, indicator, SetLabel(t_("Indicator")).LeftPosZ(4, 160).TopPosZ(4, 15))
ITEM(Upp::Option, hgrid, SetLabel(t_("Horizontal grid")).LeftPosZ(4, 160).TopPosZ(20, 15))
ITEM(Upp::Option, vgrid, SetLabel(t_("Vertical grid")).LeftPosZ(4, 160).TopPosZ(36, 15))
ITEM(Upp::Option, live_cursor, SetLabel(t_("Live cursor")).LeftPosZ(4, 160).TopPosZ(52, 15))
ITEM(Upp::Option, repaint, SetLabel(t_("Show repaints")).LeftPosZ(4, 160).TopPosZ(68, 15))
ITEM(Upp::Option, disable, SetLabel(t_("Disable")).LeftPosZ(4, 160).TopPosZ(84, 15))
ITEM(Upp::Option, chameleon, SetLabel(t_("Chameleon")).LeftPosZ(4, 160).TopPosZ(100, 15))
ITEM(Upp::Option, draw_focus, SetLabel(t_("Draw focus")).LeftPosZ(4, 160).TopPosZ(116, 15))
ITEM(Upp::Option, resizing_cols, SetLabel(t_("Resizing columns")).LeftPosZ(4, 160).TopPosZ(140, 15))
ITEM(Upp::Option, resizing_rows, SetLabel(t_("Resizing rows")).LeftPosZ(4, 160).TopPosZ(156, 15))
ITEM(Upp::Option, moving_cols, SetLabel(t_("Moving columns")).LeftPosZ(4, 160).TopPosZ(172, 15))
ITEM(Upp::Option, moving_rows, SetLabel(t_("Moving rows")).LeftPosZ(4, 160).TopPosZ(188, 15))
ITEM(Upp::Option, full_col_resizing, SetLabel(t_("Full column resizing")).LeftPosZ(4, 160).TopPosZ(212, 15))
ITEM(Upp::Option, full_row_resizing, SetLabel(t_("Full row resizing")).LeftPosZ(4, 160).TopPosZ(228, 15))
END_LAYOUT
LAYOUT(NumberLayout, 180, 272)
ITEM(Upp::EditIntSpin, total_cols, Min(1).NotNull(true).LeftPosZ(4, 44).TopPosZ(4, 20))
ITEM(Upp::Label, dv___1, SetLabel(t_("Number of columns")).LeftPosZ(52, 124).TopPosZ(4, 19))
ITEM(Upp::EditIntSpin, total_rows, Min(1).NotNull(true).LeftPosZ(4, 44).TopPosZ(28, 20))
ITEM(Upp::Label, dv___3, SetLabel(t_("Number of rows")).LeftPosZ(52, 124).TopPosZ(28, 19))
ITEM(Upp::EditIntSpin, fixed_cols, Min(0).NotNull(true).LeftPosZ(4, 44).TopPosZ(52, 20))
ITEM(Upp::Label, dv___5, SetLabel(t_("Number of fixed columns")).LeftPosZ(52, 124).TopPosZ(52, 19))
ITEM(Upp::EditIntSpin, fixed_rows, Min(0).NotNull(true).LeftPosZ(4, 44).TopPosZ(76, 20))
ITEM(Upp::Label, dv___7, SetLabel(t_("Number of fixed rows")).LeftPosZ(52, 124).TopPosZ(76, 19))
END_LAYOUT
LAYOUT(ColorsOptionsLayout, 180, 200)
ITEM(Upp::Label, dv___0, SetLabel(t_("Fixed theme")).LeftPosZ(4, 80).TopPosZ(4, 16))
ITEM(Upp::Label, dv___1, SetLabel(t_("Odd color")).LeftPosZ(4, 80).TopPosZ(31, 20))
ITEM(Upp::DropList, theme, LeftPosZ(88, 88).TopPosZ(3, 19))
ITEM(Upp::ColorPusher, odd_color, LeftPosZ(88, 76).TopPosZ(31, 20))
ITEM(Upp::Label, dv___4, SetLabel(t_("Even color")).LeftPosZ(4, 80).TopPosZ(55, 20))
ITEM(Upp::ColorPusher, even_color, LeftPosZ(88, 76).TopPosZ(55, 20))
ITEM(Upp::Label, dv___6, SetLabel(t_("Grid color")).LeftPosZ(4, 80).TopPosZ(104, 20))
ITEM(Upp::ColorPusher, grid_color, LeftPosZ(88, 76).TopPosZ(104, 20))
ITEM(Upp::Label, dv___8, SetLabel(t_("Focus color")).LeftPosZ(4, 80).TopPosZ(128, 20))
ITEM(Upp::ColorPusher, focus_color, LeftPosZ(88, 76).TopPosZ(128, 20))
ITEM(Upp::Label, dv___10, SetLabel(t_("Live cursor color")).LeftPosZ(4, 80).TopPosZ(152, 20))
ITEM(Upp::ColorPusher, live_color, LeftPosZ(88, 76).TopPosZ(152, 20))
ITEM(Upp::Switch, odd_even_mode, SetLabel(t_("Off\nColumn\nRow")).LeftPosZ(4, 160).TopPosZ(80, 15))
END_LAYOUT
LAYOUT(PanelLayout, 408, 572)
ITEM(Upp::Button, clear_grid, SetLabel(t_("Clear grid")).RightPosZ(308, 96).BottomPosZ(4, 20))
ITEM(Upp::Button, reset_grid, SetLabel(t_("Reset grid")).RightPosZ(208, 92).BottomPosZ(4, 20))
ITEM(Upp::LineEdit, log0, SetFont(Upp::MonospaceZ(12)).RightPosZ(4, 200).VSizePosZ(4, 28))
ITEM(Upp::Button, clear, SetLabel(t_("Clear")).RightPosZ(4, 64).BottomPosZ(4, 20))
ITEM(Upp::Button, debug, SetLabel(t_("Debug")).RightPosZ(140, 64).BottomPosZ(4, 20))
ITEM(Upp::TabCtrl, opts, RightPosZ(208, 196).VSizePosZ(4, 28))
ITEM(Upp::DropList, level, RightPosZ(72, 64).BottomPosZ(5, 19))
END_LAYOUT
|