mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
125 lines
No EOL
2.5 KiB
C++
125 lines
No EOL
2.5 KiB
C++
#include "TabBar.h"
|
|
|
|
namespace Upp {
|
|
|
|
TabBarCtrl& TabBarCtrl::AddCtrl(Ctrl &ctrl, Value key, Value value, Image icon, String group, bool make_active)
|
|
{
|
|
return InsertCtrl(GetCount(), ctrl, key, value, icon, group, make_active);
|
|
}
|
|
|
|
TabBarCtrl& TabBarCtrl::AddCtrl(Ctrl &ctrl, Value value, Image icon, String group, bool make_active)
|
|
{
|
|
return InsertCtrl(GetCount(), ctrl, value, value, icon, group, make_active);
|
|
}
|
|
|
|
TabBarCtrl& TabBarCtrl::InsertCtrl(int ix, Ctrl &ctrl, Value key, Value value, Image icon, String group, bool make_active)
|
|
{
|
|
ctrls.Add(key, &ctrl);
|
|
ctrl.Hide();
|
|
pane.Add(ctrl.SizePos());
|
|
TabBar::InsertKey(ix, key, value, icon, group, make_active);
|
|
return *this;
|
|
}
|
|
|
|
TabBarCtrl& TabBarCtrl::InsertCtrl(int ix, Ctrl &ctrl, Value value, Image icon, String group, bool make_active)
|
|
{
|
|
return InsertCtrl(ix, ctrl, value, value, icon, group, make_active);
|
|
}
|
|
|
|
void TabBarCtrl::RemoveCtrl(Value key)
|
|
{
|
|
int ix = ctrls.Find(key);
|
|
if (ix >= 0) {
|
|
ctrls[ix]->Remove();
|
|
ctrls.Remove(ix);
|
|
}
|
|
CloseKey(key);
|
|
}
|
|
|
|
void TabBarCtrl::RemoveCtrl(int ix)
|
|
{
|
|
RemoveCtrl(GetKey(ix));
|
|
}
|
|
|
|
void TabBarCtrl::RemoveCtrl(Ctrl &ctrl)
|
|
{
|
|
for (int i = 0; i < ctrls.GetCount(); ++i)
|
|
if (ctrls[i] == &ctrl)
|
|
return RemoveCtrl(i);
|
|
}
|
|
|
|
Ctrl * TabBarCtrl::GetCtrl(Value key)
|
|
{
|
|
int ix = ctrls.Find(key);
|
|
return (ix >= 0) ? ctrls[ix] : NULL;
|
|
}
|
|
|
|
Ctrl * TabBarCtrl::GetCtrl(int ix)
|
|
{
|
|
ASSERT(ix >= 0 && ix < ctrls.GetCount());
|
|
return GetCtrl(GetKey(ix));
|
|
}
|
|
|
|
Ctrl * TabBarCtrl::GetCurrentCtrl()
|
|
{
|
|
return GetCtrl(GetData());
|
|
}
|
|
|
|
int TabBarCtrl::GetCurrentIndex()
|
|
{
|
|
return FindKey(GetData());
|
|
}
|
|
|
|
void TabBarCtrl::SetCtrl(Value key)
|
|
{
|
|
int ix = ctrls.Find(key);
|
|
if (ix < 0)
|
|
return;
|
|
SetData(key);
|
|
}
|
|
|
|
void TabBarCtrl::SetCtrl(int ix)
|
|
{
|
|
ASSERT(ix < GetCount());
|
|
return SetCtrl(GetKey(ix));
|
|
}
|
|
|
|
void TabBarCtrl::SetCtrl(Ctrl &ctrl)
|
|
{
|
|
for(int i = 0; i < ctrls.GetCount(); i++)
|
|
if(ctrls[i] == &ctrl)
|
|
{
|
|
SetData(ctrls.GetKey(i));
|
|
return;
|
|
}
|
|
SetData(-1);
|
|
}
|
|
|
|
void TabBarCtrl::CursorChanged()
|
|
{
|
|
Value ix = GetData();
|
|
for (int i = 0; i < ctrls.GetCount(); i++)
|
|
ctrls[i]->Show(ctrls.GetKey(i) == ix);
|
|
}
|
|
|
|
void TabBarCtrl::TabClosed(Value key)
|
|
{
|
|
ctrls.RemoveKey(key);
|
|
}
|
|
|
|
|
|
Vector<Ctrl*> TabBarCtrl::GetCtrlGroup(const String& group)
|
|
{
|
|
Vector<Ctrl*> v;
|
|
|
|
for(const TabBar::Tab& t : tabs)
|
|
if(t.group == group) {
|
|
Ctrl *c = GetCtrl(t.key);
|
|
if(c) v.Add(c);
|
|
}
|
|
|
|
return pick(v);
|
|
}
|
|
|
|
|
|
} |