mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-11 22:03:01 -06:00
.CtrlLib: Various improvements (spin edits, ProgressInfo) - thanks kohait00
git-svn-id: svn://ultimatepp.org/upp/trunk@3343 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
186b91efaa
commit
59e50cbce3
3 changed files with 120 additions and 15 deletions
|
|
@ -325,6 +325,8 @@ protected:
|
|||
void Inc();
|
||||
void Dec();
|
||||
void Init();
|
||||
|
||||
typedef EditIntSpin CLASSNAME;
|
||||
|
||||
public:
|
||||
EditIntSpin& SetInc(int _inc) { inc = _inc; return *this; }
|
||||
|
|
@ -333,15 +335,23 @@ public:
|
|||
bool IsOnSides() const { return sb.IsOnSides(); }
|
||||
|
||||
EditIntSpin& ShowSpin(bool s = true) { sb.Show(s); return *this; }
|
||||
bool IsSpinVisible() const { return sb.IsVisible(); }
|
||||
|
||||
SpinButtons& SpinButtonsObject() { return sb; }
|
||||
const SpinButtons& SpinButtonsObject() const { return sb; }
|
||||
|
||||
EditIntSpin();
|
||||
EditIntSpin(int min, int max);
|
||||
EditIntSpin(int inc = 1);
|
||||
EditIntSpin(int min, int max, int inc = 1);
|
||||
virtual ~EditIntSpin();
|
||||
};
|
||||
|
||||
class EditIntNotNullSpin : public EditIntSpin
|
||||
{
|
||||
public:
|
||||
EditIntNotNullSpin(int inc = 1) : EditIntSpin(inc) { NotNull(); }
|
||||
EditIntNotNullSpin(int min, int max, int inc = 1) : EditIntSpin(min, max, inc) { NotNull(); }
|
||||
};
|
||||
|
||||
class EditDoubleSpin : public EditDouble
|
||||
{
|
||||
public:
|
||||
|
|
@ -367,6 +377,7 @@ public:
|
|||
bool IsOnSides() const { return sb.IsOnSides(); }
|
||||
|
||||
EditDoubleSpin& ShowSpin(bool s = true) { sb.Show(s); return *this; }
|
||||
bool IsSpinVisible() const { return sb.IsVisible(); }
|
||||
|
||||
SpinButtons& SpinButtonsObject() { return sb; }
|
||||
const SpinButtons& SpinButtonsObject() const { return sb; }
|
||||
|
|
@ -382,3 +393,42 @@ public:
|
|||
EditDoubleNotNullSpin(double inc = 0.1) : EditDoubleSpin(inc) { NotNull(); }
|
||||
EditDoubleNotNullSpin(double min, double max, double inc = 0.1) : EditDoubleSpin(min, max, inc) { NotNull(); }
|
||||
};
|
||||
|
||||
class EditInt64Spin : public EditInt64 {
|
||||
public:
|
||||
virtual void MouseWheel(Point p, int zdelta, dword keyflags);
|
||||
virtual bool Key(dword key, int repcnt);
|
||||
|
||||
protected:
|
||||
SpinButtons sb;
|
||||
int64 inc;
|
||||
|
||||
void Inc();
|
||||
void Dec();
|
||||
void Init();
|
||||
|
||||
typedef EditInt64Spin CLASSNAME;
|
||||
|
||||
public:
|
||||
EditInt64Spin& SetInc(int64 _inc) { inc = _inc; return *this; }
|
||||
int64 GetInc() const { return inc; }
|
||||
EditInt64Spin& OnSides(bool b = true) { sb.OnSides(b); return *this; }
|
||||
bool IsOnSides() const { return sb.IsOnSides(); }
|
||||
|
||||
EditInt64Spin& ShowSpin(bool s = true) { sb.Show(s); return *this; }
|
||||
bool IsSpinVisible() const { return sb.IsVisible(); }
|
||||
|
||||
SpinButtons& SpinButtonsObject() { return sb; }
|
||||
const SpinButtons& SpinButtonsObject() const { return sb; }
|
||||
|
||||
EditInt64Spin(int64 inc = 1);
|
||||
EditInt64Spin(int64 min, int64 max, int64 inc = 1);
|
||||
virtual ~EditInt64Spin();
|
||||
};
|
||||
|
||||
class EditInt64NotNullSpin : public EditInt64Spin
|
||||
{
|
||||
public:
|
||||
EditInt64NotNullSpin(int inc = 1) : EditInt64Spin(inc) { NotNull(); }
|
||||
EditInt64NotNullSpin(int min, int max, int inc = 1) : EditInt64Spin(min, max, inc) { NotNull(); }
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1062,22 +1062,13 @@ void EditIntSpin::Dec()
|
|||
|
||||
void EditIntSpin::Init()
|
||||
{
|
||||
sb.inc.WhenAction = sb.inc.WhenRepeat = callback(this, &EditIntSpin::Inc);
|
||||
sb.dec.WhenAction = sb.dec.WhenRepeat = callback(this, &EditIntSpin::Dec);
|
||||
sb.inc.WhenAction = sb.inc.WhenRepeat = THISBACK(Inc);
|
||||
sb.dec.WhenAction = sb.dec.WhenRepeat = THISBACK(Dec);
|
||||
AddFrame(sb);
|
||||
inc = 1;
|
||||
}
|
||||
|
||||
EditIntSpin::EditIntSpin()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
EditIntSpin::EditIntSpin(int min, int max)
|
||||
{
|
||||
MinMax(min, max);
|
||||
Init();
|
||||
}
|
||||
EditIntSpin::EditIntSpin(int inc) : inc(inc) { Init(); }
|
||||
EditIntSpin::EditIntSpin(int min, int max, int inc) : EditInt(min, max), inc(inc) { Init(); }
|
||||
|
||||
EditIntSpin::~EditIntSpin() {}
|
||||
|
||||
|
|
@ -1096,6 +1087,69 @@ void EditIntSpin::MouseWheel(Point, int zdelta, dword)
|
|||
Inc();
|
||||
}
|
||||
|
||||
void EditInt64Spin::Inc()
|
||||
{
|
||||
if(IsReadOnly()) return;
|
||||
int i = GetData();
|
||||
if(IsNull(i)) {
|
||||
if(IsNull(GetMin()) || GetMin() == INT64_MIN) return;
|
||||
SetData(GetMin());
|
||||
}
|
||||
else
|
||||
if(!IsNull(GetMax()) && i < GetMax())
|
||||
SetData(min(i + inc, GetMax()));
|
||||
else
|
||||
return;
|
||||
SetFocus();
|
||||
SetSelection();
|
||||
UpdateAction();
|
||||
}
|
||||
|
||||
void EditInt64Spin::Dec()
|
||||
{
|
||||
if(IsReadOnly()) return;
|
||||
int i = GetData();
|
||||
if(IsNull(i)) {
|
||||
if(IsNull(GetMax()) || GetMax() == INT_MAX) return;
|
||||
SetData(GetMax());
|
||||
}
|
||||
else
|
||||
if(!IsNull(GetMin()) && i > GetMin())
|
||||
SetData(max(i - inc, GetMin()));
|
||||
else
|
||||
return;
|
||||
SetFocus();
|
||||
SetSelection();
|
||||
UpdateAction();
|
||||
}
|
||||
|
||||
void EditInt64Spin::Init()
|
||||
{
|
||||
sb.inc.WhenAction = sb.inc.WhenRepeat = THISBACK(Inc);
|
||||
sb.dec.WhenAction = sb.dec.WhenRepeat = THISBACK(Dec);
|
||||
AddFrame(sb);
|
||||
}
|
||||
|
||||
EditInt64Spin::EditInt64Spin(int64 inc) : inc(inc) { Init(); }
|
||||
EditInt64Spin::EditInt64Spin(int64 min, int64 max, int64 inc) : EditInt64(min, max), inc(inc) { Init(); }
|
||||
|
||||
EditInt64Spin::~EditInt64Spin() {}
|
||||
|
||||
bool EditInt64Spin::Key(dword key, int repcnt)
|
||||
{
|
||||
if(key == K_UP) { Inc(); return true; }
|
||||
if(key == K_DOWN) { Dec(); return true; }
|
||||
return EditInt64::Key(key, repcnt);
|
||||
}
|
||||
|
||||
void EditInt64Spin::MouseWheel(Point, int zdelta, dword)
|
||||
{
|
||||
if(zdelta < 0)
|
||||
Dec();
|
||||
else
|
||||
Inc();
|
||||
}
|
||||
|
||||
EditDoubleSpin::EditDoubleSpin(double inc) : inc(inc) { Init(); }
|
||||
EditDoubleSpin::EditDoubleSpin(double min, double max, double inc) : EditDouble(min, max), inc(inc) { Init(); }
|
||||
|
||||
|
|
|
|||
|
|
@ -112,6 +112,7 @@ public:
|
|||
|
||||
void Set(int _pos) { Set(_pos, total); }
|
||||
int Get() const { return pos; }
|
||||
int GetTotal() const { return total; }
|
||||
|
||||
void operator=(int p) { Set(p); }
|
||||
void operator++() { pos++; Refresh(); }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue