📄 proplist.cpp
字号:
bool wxRealListValidator::OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
{
if (!view->GetValueText())
return false;
if (wxStrlen(view->GetValueText()->GetValue()) == 0)
return false;
wxString value(view->GetValueText()->GetValue());
float f = (float)wxAtof(value.GetData());
property->GetValue() = f;
return true;
}
bool wxRealListValidator::OnPrepareControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
{
if (view->GetConfirmButton())
view->GetConfirmButton()->Enable();
if (view->GetCancelButton())
view->GetCancelButton()->Enable();
if (view->GetEditButton())
view->GetEditButton()->Disable();
if (view->GetValueText())
view->GetValueText()->Enable();
return true;
}
///
/// Integer validator
///
IMPLEMENT_DYNAMIC_CLASS(wxIntegerListValidator, wxPropertyListValidator)
bool wxIntegerListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *parentWindow)
{
if (m_integerMin == 0 && m_integerMax == 0)
return true;
if (!view->GetValueText())
return false;
wxString value(view->GetValueText()->GetValue());
long val = 0;
if (!StringToLong(WXSTRINGCAST value, &val))
{
wxChar buf[200];
wxSprintf(buf, wxT("Value %s is not a valid integer!"), value.GetData());
wxMessageBox(buf, wxT("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow);
return false;
}
if (val < m_integerMin || val > m_integerMax)
{
wxChar buf[200];
wxSprintf(buf, wxT("Value must be an integer between %ld and %ld!"), m_integerMin, m_integerMax);
wxMessageBox(buf, wxT("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow);
return false;
}
return true;
}
// Called when TICK is pressed or focus is lost or view wants to update
// the property list.
// Does the transferance from the property editing area to the property itself
bool wxIntegerListValidator::OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
{
if (!view->GetValueText())
return false;
if (wxStrlen(view->GetValueText()->GetValue()) == 0)
return false;
wxString value(view->GetValueText()->GetValue());
long val = (long)wxAtoi(value.GetData());
property->GetValue() = (long)val;
return true;
}
bool wxIntegerListValidator::OnPrepareControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
{
if (view->GetConfirmButton())
view->GetConfirmButton()->Enable();
if (view->GetCancelButton())
view->GetCancelButton()->Enable();
if (view->GetEditButton())
view->GetEditButton()->Disable();
if (view->GetValueText())
view->GetValueText()->Enable();
return true;
}
///
/// boolean validator
///
IMPLEMENT_DYNAMIC_CLASS(wxBoolListValidator, wxPropertyListValidator)
bool wxBoolListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *parentWindow)
{
if (!view->GetValueText())
return false;
wxString value(view->GetValueText()->GetValue());
if (value != wxT("True") && value != wxT("False"))
{
wxMessageBox(wxT("Value must be True or False!"), wxT("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow);
return false;
}
return true;
}
// Called when TICK is pressed or focus is lost or view wants to update
// the property list.
// Does the transferance from the property editing area to the property itself
bool wxBoolListValidator::OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
{
if (!view->GetValueText())
return false;
if (wxStrlen(view->GetValueText()->GetValue()) == 0)
return false;
wxString value(view->GetValueText()->GetValue());
bool boolValue = (value == wxT("True"));
property->GetValue() = boolValue;
return true;
}
bool wxBoolListValidator::OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
{
if (!view->GetValueText())
return false;
wxString str(property->GetValue().GetStringRepresentation());
view->GetValueText()->SetValue(str);
if (view->GetValueList()->IsShown())
{
view->GetValueList()->SetStringSelection(str);
}
return true;
}
bool wxBoolListValidator::OnPrepareControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
{
if (view->GetConfirmButton())
view->GetConfirmButton()->Disable();
if (view->GetCancelButton())
view->GetCancelButton()->Disable();
if (view->GetEditButton())
view->GetEditButton()->Enable();
if (view->GetValueText())
view->GetValueText()->Disable();
return true;
}
bool wxBoolListValidator::OnPrepareDetailControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
{
if (view->GetValueList())
{
view->ShowListBoxControl(true);
view->GetValueList()->Enable();
view->GetValueList()->Append(wxT("True"));
view->GetValueList()->Append(wxT("False"));
wxChar *currentString = copystring(view->GetValueText()->GetValue());
view->GetValueList()->SetStringSelection(currentString);
delete[] currentString;
}
return true;
}
bool wxBoolListValidator::OnClearDetailControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
{
if (view->GetValueList())
{
view->GetValueList()->Clear();
view->ShowListBoxControl(false);
view->GetValueList()->Disable();
}
return true;
}
// Called when the property is double clicked. Extra functionality can be provided,
// cycling through possible values.
bool wxBoolListValidator::OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
{
if (!view->GetValueText())
return false;
if (property->GetValue().BoolValue())
property->GetValue() = false;
else
property->GetValue() = true;
view->DisplayProperty(property);
view->UpdatePropertyDisplayInList(property);
view->OnPropertyChanged(property);
return true;
}
///
/// String validator
///
IMPLEMENT_DYNAMIC_CLASS(wxStringListValidator, wxPropertyListValidator)
wxStringListValidator::wxStringListValidator(wxStringList *list, long flags):
wxPropertyListValidator(flags)
{
m_strings = list;
// If no constraint, we just allow the string to be edited.
if (!m_strings && ((m_validatorFlags & wxPROP_ALLOW_TEXT_EDITING) == 0))
m_validatorFlags |= wxPROP_ALLOW_TEXT_EDITING;
}
bool wxStringListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *parentWindow)
{
if (!m_strings)
return true;
if (!view->GetValueText())
return false;
wxString value(view->GetValueText()->GetValue());
if (!m_strings->Member(value.GetData()))
{
wxString str( wxT("Value ") );
str += value.GetData();
str += wxT(" is not valid.");
wxMessageBox( str.GetData(), wxT("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow);
return false;
}
return true;
}
// Called when TICK is pressed or focus is lost or view wants to update
// the property list.
// Does the transferance from the property editing area to the property itself
bool wxStringListValidator::OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
{
if (!view->GetValueText())
return false;
wxString value(view->GetValueText()->GetValue());
property->GetValue() = value ;
return true;
}
// Called when TICK is pressed or focus is lost or view wants to update
// the property list.
// Does the transferance from the property editing area to the property itself
bool wxStringListValidator::OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
{
if (!view->GetValueText())
return false;
wxString str(property->GetValue().GetStringRepresentation());
view->GetValueText()->SetValue(str);
if (m_strings && view->GetValueList() && view->GetValueList()->IsShown() && view->GetValueList()->GetCount() > 0)
{
view->GetValueList()->SetStringSelection(str);
}
return true;
}
bool wxStringListValidator::OnPrepareControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
{
// Unconstrained
if (!m_strings)
{
if (view->GetEditButton())
view->GetEditButton()->Disable();
if (view->GetConfirmButton())
view->GetConfirmButton()->Enable();
if (view->GetCancelButton())
view->GetCancelButton()->Enable();
if (view->GetValueText())
view->GetValueText()->Enable();
return true;
}
// Constrained
if (view->GetValueText())
view->GetValueText()->Disable();
if (view->GetEditButton())
view->GetEditButton()->Enable();
if (view->GetConfirmButton())
view->GetConfirmButton()->Disable();
if (view->GetCancelButton())
view->GetCancelButton()->Disable();
return true;
}
bool wxStringListValidator::OnPrepareDetailControls( wxProperty *property,
wxPropertyListView *view,
wxWindow *WXUNUSED(parentWindow) )
{
if (view->GetValueList())
{
view->ShowListBoxControl(true);
view->GetValueList()->Enable();
wxStringList::Node *node = m_strings->GetFirst();
while (node)
{
wxChar *s = node->GetData();
view->GetValueList()->Append(s);
node = node->GetNext();
}
wxChar *currentString = property->GetValue().StringValue();
view->GetValueList()->SetStringSelection(currentString);
}
return true;
}
bool wxStringListValidator::OnClearDetailControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
{
if (!m_strings)
{
return true;
}
if (view->GetValueList())
{
view->GetValueList()->Clear();
view->ShowListBoxControl(false);
view->GetValueList()->Disable();
}
return true;
}
// Called when the property is double clicked. Extra functionality can be provided,
// cycling through possible values.
bool wxStringListValidator::OnDoubleClick( wxProperty *property,
wxPropertyListView *view,
wxWindow *WXUNUSED(parentWindow) )
{
if (!view->GetValueText())
return false;
if (!m_strings)
return false;
wxStringList::Node *node = m_strings->GetFirst();
wxChar *currentString = property->GetValue().StringValue();
while (node)
{
wxChar *s = node->GetData();
if (wxStrcmp(s, currentString) == 0)
{
wxChar *nextString;
if (node->GetNext())
nextString = node->GetNext()->GetData();
else
nextString = m_strings->GetFirst()->GetData();
property->GetValue() = wxString(nextString);
view->DisplayProperty(property);
view->UpdatePropertyDisplayInList(property);
view->OnPropertyChanged(property);
return true;
}
else node = node->GetNext();
}
return true;
}
///
/// Filename validator
///
IMPLEMENT_DYNAMIC_CLASS(wxFilenameListValidator, wxPropertyListValidator)
wxFilenameListValidator::wxFilenameListValidator(wxString message , wxString wildcard, long flags):
wxPropertyListValidator(flags), m_filenameWildCard(wildcard), m_filenameMessage(message)
{
}
wxFilenameListValidator::~wxFilenameListValidator()
{
}
bool wxFilenameListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropertyListView *WXUNUSED(view), wxWindow *WXUNUSED(parentWindow))
{
return true;
}
// Called when TICK is pressed or focus is lost or view wants to update
// the property list.
// Does the transferance from the property editing area to the property itself
bool wxFilenameListValidator::OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
{
if (!view->GetValueText())
return false;
wxString value(view->GetValueText()->GetValue());
property->GetValue() = value ;
return true;
}
// Called when TICK is pressed or focus is lost or view wants to update
// the property list.
// Does the transferance from the property editing area to the property itself
bool wxFilenameListValidator::OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
{
if (!view->GetValueText())
return false;
wxString str(property->GetValue().GetStringRepresentation());
view->GetValueText()->SetValue(str);
return true;
}
// Called when the property is double clicked. Extra functionality can be provided,
// cycling through possible values.
bool wxFilenameListValidator::OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow)
{
if (!view->GetValueText())
return false;
OnEdit(property, view, parentWindow);
return true;
}
bool wxFilenameListValidator::OnPrepareControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
{
if (view->GetConfirmButton())
view->GetConfirmButton()->Enable();
if (view->GetCancelButton())
view->GetCancelButton()->Enable();
if (view->GetEditButton())
view->GetEditButton()->Enable();
if (view->GetValueText())
view->GetValueText()->Enable((GetFlags() & wxPROP_ALLOW_TEXT_EDITING) == wxPROP_ALLOW_TEXT_EDITING);
return true;
}
void wxFilenameListValidator::OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow)
{
if (!view->GetValueText())
return;
#if wxUSE_FILEDLG
wxString s = wxFileSelector(
m_filenameMessage.GetData(),
wxPathOnly(property->GetValue().StringValue()),
wxFileNameFromPath(property->GetValue().StringValue()),
NULL,
m_filenameWildCard.GetData(),
0,
parentWindow);
if ( !s.empty() )
{
property->GetValue() = s;
view->DisplayProperty(property);
view->UpdatePropertyDisplayInList(property);
view->OnPropertyChanged(property);
}
#else
wxUnusedVar(property);
wxUnusedVar(view);
wxUnusedVar(parentWindow);
#endif
}
///
/// Colour validator
///
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -