📄 control.cxx
字号:
PCheckBox::PCheckBox(PInteractor * parent, BOOL value)
: PCheck3WayBox(parent)
{
SetValue(value);
}
PCheckBox::PCheckBox(PInteractor * parent, const PString & name, BOOL value)
: PCheck3WayBox(parent)
{
SetName(name);
SetValue(value);
DefaultDimensions();
}
PCheckBox::PCheckBox(PInteractor * parent,
const PString & name, const PNotifier & notify)
: PCheck3WayBox(parent)
{
SetName(name);
SetNotifier(notify);
DefaultDimensions();
}
void PCheckBox::TransferValue(int option)
{
if (valuePointer != NULL)
if (option == NotifyUpdate)
SetValue(*(BOOL *)valuePointer);
else
*(BOOL *)valuePointer = GetValue();
}
#endif
//////////////////////////////////////////////////////////////////////////////
// PRadioButton
#if defined(_PRADIOBUTTON)
PRadioButton::PRadioButton(PInteractor * parent)
: PNamedControl(parent)
{
group.DisallowDeleteObjects();
group.Append(this);
Construct();
}
PRadioButton::PRadioButton(PInteractor * parent, const PString & name)
: PNamedControl(parent)
{
group.DisallowDeleteObjects();
group.Append(this);
Construct();
SetName(name);
DefaultDimensions();
}
PRadioButton::PRadioButton(PInteractor * parent,
const PString & name, const PNotifier & notify)
: PNamedControl(parent)
{
group.DisallowDeleteObjects();
group.Append(this);
Construct();
SetName(name);
SetNotifier(notify);
DefaultDimensions();
}
PRadioButton::PRadioButton(PInteractor * parent,
const PString & name, PRadioButton & groupButton)
: PNamedControl(parent)
{
Construct();
AddToGroup(groupButton);
SetName(name);
DefaultDimensions();
}
PRadioButton::PRadioButton(PInteractor * parent, const PString & name,
const PNotifier & notify, PRadioButton & groupButton)
: PNamedControl(parent)
{
Construct();
AddToGroup(groupButton);
SetName(name);
SetNotifier(notify);
DefaultDimensions();
}
void PRadioButton::AddToGroup(PRadioButton & groupButton)
{
group = groupButton.group;
group.Append(this);
}
void PRadioButton::DefaultDimensions()
{
PDrawCanvas canvas(this);
PDim dim = canvas.MeasureString(GetName());
dim.AddWidth(16); // Allow 4 font width left of text
dim.AddHeight(4); // Allow 1/4 font height above and below text
SetDimensions(dim, LocalCoords); // Allow 1/4 font height above and below text
}
void PRadioButton::TransferValue(int option)
{
if (option == NotifyUpdate) {
if (valuePointer != NULL)
SetValue(*(PINDEX *)valuePointer);
}
else {
for (PINDEX i = 0; i < group.GetSize(); i++)
if (group[i].valuePointer != NULL)
*(PINDEX *)group[i].valuePointer = GetValue();
}
}
#endif
//////////////////////////////////////////////////////////////////////////////
// PChoiceBox
#if defined(_PCHOICEBOX)
PChoiceBox::PChoiceBox(PInteractor * parent, StringSorting sorted)
: PControl(parent, PNotifier(), NULL)
{
sort = sorted == Sorted;
Construct();
}
PChoiceBox::PChoiceBox(PInteractor * parent,
const PNotifier & notify, StringSorting sorted)
: PControl(parent, notify, NULL)
{
sort = sorted == Sorted;
Construct();
}
void PChoiceBox::AddStrings(const PCollection & objects)
{
PINDEX last = objects.GetSize() - 1;
for (PINDEX i = 0; i <= last; i++) {
PObject & obj = *objects.GetAt(i);
if (obj.IsDescendant(PString::Class()))
AddString((PString &)obj);
else {
PStringStream str;
str << obj;
AddString(str);
}
}
}
void PChoiceBox::TransferValue(int option)
{
if (valuePointer != NULL)
if (option == NotifyUpdate)
SetSelection(*(PINDEX *)valuePointer);
else
*(PINDEX *)valuePointer = GetSelection();
}
#endif
//////////////////////////////////////////////////////////////////////////////
// PListBox
#if defined(_PLISTBOX)
PListBox::PListBox(PInteractor * parent,
StringSorting sorted,
SelectType select,
PDIMENSION columnWidth,
BOOL deleteObj)
: PControl(parent, PNotifier(), NULL)
{
sort = sorted == Sorted;
multi = select == MultiSelect;
width = columnWidth;
deleteObjects = deleteObj;
Construct();
}
PListBox::PListBox(PInteractor * parent,
const PNotifier & notify,
StringSorting sorted,
SelectType select,
PDIMENSION columnWidth,
BOOL deleteObj)
: PControl(parent, notify, NULL)
{
sort = sorted == Sorted;
multi = select == MultiSelect;
width = columnWidth;
deleteObjects = deleteObj;
Construct();
}
void PListBox::TransferValue(int option)
{
if (valuePointer != NULL)
if (option == NotifyUpdate)
SetSelection(*(PINDEX *)valuePointer);
else
*(PINDEX *)valuePointer = GetSelection();
}
#endif
//////////////////////////////////////////////////////////////////////////////
// PStringListBox
#if defined(_PSTRINGLISTBOX)
void PStringListBox::AddStrings(const PCollection & objects, BOOL update)
{
PINDEX last = objects.GetSize() - 1;
for (PINDEX i = 0; i <= last; i++) {
PObject & obj = *objects.GetAt(i);
if (obj.IsDescendant(PString::Class()))
AddString((PString &)obj, update && i < last);
else {
PStringStream str;
str << obj;
AddString(str, update && i < last);
}
}
}
void PStringListBox::SetString(const PString & str, PINDEX index, BOOL update)
{
DeleteString(index, FALSE);
InsertString(str, index, update);
}
#endif
//////////////////////////////////////////////////////////////////////////////
// PCustomListBox
#if defined(_PCUSTOMLISTBOX)
void PCustomListBox::AddEntries(const PCollection & objects, BOOL update)
{
PINDEX last = objects.GetSize() - 1;
for (PINDEX i = 0; i <= last; i++)
AddEntry(objects.GetAt(i), update && i < last);
}
PDim PCustomListBox::OnMeasureEntry(PINDEX, PObject &, PCanvas & canvas)
{
return PDim(GetDimensions(LocalCoords).Width(),
canvas.FromPointsY(canvas.GetFont().GetHeight())+1);
}
#endif
//////////////////////////////////////////////////////////////////////////////
// PComboBox
#if defined(_PCOMBOBOX)
PComboBox::PComboBox(PInteractor * parent, StringSorting sorted)
: PControl(parent, PNotifier(), NULL)
{
sort = sorted == Sorted;
Construct();
}
PComboBox::PComboBox(PInteractor * parent,
const PNotifier & notify, StringSorting sorted)
: PControl(parent, notify, NULL)
{
sort = sorted == Sorted;
Construct();
}
void PComboBox::AddStrings(const PCollection & objects)
{
PINDEX last = objects.GetSize() - 1;
for (PINDEX i = 0; i <= last; i++) {
PObject & obj = *objects.GetAt(i);
if (obj.IsDescendant(PString::Class()))
AddString((PString &)obj);
else {
PStringStream str;
str << obj;
AddString(str);
}
}
}
void PComboBox::TransferValue(int option)
{
if (valuePointer != NULL)
if (option == NotifyUpdate)
SetText(*(PString *)valuePointer);
else if (option == NewSelection)
*(PString *)valuePointer = GetString(GetCurrent());
else if (option == EditChange)
*(PString *)valuePointer = GetText();
}
#endif
//////////////////////////////////////////////////////////////////////////////
// PScrollBar
#if defined(_PSCROLLBAR)
PScrollBar::PScrollBar(PInteractor * parent,
PSCROLLBAR_VALUE max, PSCROLLBAR_VALUE min, PSCROLLBAR_VALUE val,
PSCROLLBAR_VALUE sml, PSCROLLBAR_VALUE lge)
: PControl(parent, PNotifier(), NULL)
{
maximum = max;
minimum = min;
value = val;
smallNudge = sml;
largeNudge = lge;
Construct();
}
PScrollBar::PScrollBar(PInteractor * parent, const PNotifier & notify,
PSCROLLBAR_VALUE max, PSCROLLBAR_VALUE min, PSCROLLBAR_VALUE val,
PSCROLLBAR_VALUE sml, PSCROLLBAR_VALUE lge)
: PControl(parent, notify, NULL)
{
maximum = max;
minimum = min;
value = val;
smallNudge = sml;
largeNudge = lge;
Construct();
}
void PScrollBar::TransferValue(int option)
{
if (valuePointer != NULL)
if (option == NotifyUpdate)
SetValue(*(PSCROLLBAR_VALUE *)valuePointer);
else
*(PSCROLLBAR_VALUE *)valuePointer = GetValue();
}
#endif
//////////////////////////////////////////////////////////////////////////////
// PHorizontalScrollBar
#if defined(_PHORIZONTALSCROLLBAR)
PHorizontalScrollBar::PHorizontalScrollBar(PInteractor * parent,
PSCROLLBAR_VALUE max, PSCROLLBAR_VALUE min, PSCROLLBAR_VALUE val,
PSCROLLBAR_VALUE sml, PSCROLLBAR_VALUE lge)
: PScrollBar(parent, max, min, val, sml, lge)
{
}
PHorizontalScrollBar::PHorizontalScrollBar(PInteractor * parent,
const PNotifier & notify,
PSCROLLBAR_VALUE max, PSCROLLBAR_VALUE min, PSCROLLBAR_VALUE val,
PSCROLLBAR_VALUE sml, PSCROLLBAR_VALUE lge)
: PScrollBar(parent, notify, max, min, val, sml, lge)
{
}
#endif
//////////////////////////////////////////////////////////////////////////////
// PVerticalScrollBar
#if defined(_PVERTICALSCROLLBAR)
PVerticalScrollBar::PVerticalScrollBar(PInteractor * parent,
PSCROLLBAR_VALUE max, PSCROLLBAR_VALUE min, PSCROLLBAR_VALUE val,
PSCROLLBAR_VALUE sml, PSCROLLBAR_VALUE lge)
: PScrollBar(parent, max, min, val, sml, lge)
{
}
PVerticalScrollBar::PVerticalScrollBar(PInteractor * parent,
const PNotifier & notify,
PSCROLLBAR_VALUE max, PSCROLLBAR_VALUE min, PSCROLLBAR_VALUE val,
PSCROLLBAR_VALUE sml, PSCROLLBAR_VALUE lge)
: PScrollBar(parent, notify, max, min, val, sml, lge)
{
}
#endif
#undef new
// End Of File ///////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -