📄 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 itselfbool 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 itselfbool 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 itselfbool 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 itselfbool 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 itselfbool 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 itselfbool 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 + -