X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a4c605ce975f89d3cc390f58680c520e0748b821..f050bdbd5b69ed1a6752102f0c4c13bc7cb4ed3c:/src/propgrid/advprops.cpp diff --git a/src/propgrid/advprops.cpp b/src/propgrid/advprops.cpp index ed2944c9fc..22c5089f77 100644 --- a/src/propgrid/advprops.cpp +++ b/src/propgrid/advprops.cpp @@ -62,6 +62,8 @@ #include "wx/msw/dc.h" #endif +#include "wx/odcombo.h" + // ----------------------------------------------------------------------- #if defined(__WXMSW__) @@ -274,11 +276,12 @@ wxPGWindowList wxPGSpinCtrlEditor::CreateControls( wxPropertyGrid* propgrid, wxP wnd2->SetRange( INT_MIN, INT_MAX ); wnd2->SetValue( 0 ); + wxWindow* wnd1 = wxPGTextCtrlEditor::CreateControls(propgrid, property, pos, tcSz).m_primary; +#if wxUSE_VALIDATORS // Let's add validator to make sure only numbers can be entered wxTextValidator validator(wxFILTER_NUMERIC, &m_tempString); - - wxTextCtrl* wnd1 = (wxTextCtrl*) wxPGTextCtrlEditor::CreateControls( propgrid, property, pos, tcSz ).m_primary; wnd1->SetValidator(validator); +#endif return wxPGWindowList(wnd1, wnd2); } @@ -552,17 +555,23 @@ void wxPGDatePickerCtrlEditor::SetValueToUnspecified( wxPGProperty* property, #include "wx/fontdlg.h" #include "wx/fontenum.h" +// +// NB: Do not use wxS here since unlike wxT it doesn't translate to wxChar* +// + static const wxChar* gs_fp_es_family_labels[] = { wxT("Default"), wxT("Decorative"), wxT("Roman"), wxT("Script"), wxT("Swiss"), wxT("Modern"), + wxT("Teletype"), wxT("Unknown"), (const wxChar*) NULL }; static long gs_fp_es_family_values[] = { - wxDEFAULT, wxDECORATIVE, - wxROMAN, wxSCRIPT, - wxSWISS, wxMODERN + wxFONTFAMILY_DEFAULT, wxFONTFAMILY_DECORATIVE, + wxFONTFAMILY_ROMAN, wxFONTFAMILY_SCRIPT, + wxFONTFAMILY_SWISS, wxFONTFAMILY_MODERN, + wxFONTFAMILY_TELETYPE, wxFONTFAMILY_UNKNOWN }; static const wxChar* gs_fp_es_style_labels[] = { @@ -622,10 +631,6 @@ wxFontProperty::wxFontProperty( const wxString& label, const wxString& name, AddPrivateChild( new wxIntProperty( _("Point Size"), wxS("Point Size"),(long)font.GetPointSize() ) ); - AddPrivateChild( new wxEnumProperty(_("Family"), wxS("PointSize"), - gs_fp_es_family_labels,gs_fp_es_family_values, - font.GetFamily()) ); - wxString faceName = font.GetFaceName(); // If font was not in there, add it now if ( faceName.length() && @@ -649,6 +654,10 @@ wxFontProperty::wxFontProperty( const wxString& label, const wxString& name, AddPrivateChild( new wxBoolProperty(_("Underlined"), wxS("Underlined"), font.GetUnderlined()) ); + + AddPrivateChild( new wxEnumProperty(_("Family"), wxS("PointSize"), + gs_fp_es_family_labels,gs_fp_es_family_values, + font.GetFamily()) ); } wxFontProperty::~wxFontProperty() { } @@ -704,11 +713,11 @@ void wxFontProperty::RefreshChildren() wxFont font; font << m_value; Item(0)->SetValue( (long)font.GetPointSize() ); - Item(1)->SetValue( (long)font.GetFamily() ); - Item(2)->SetValueFromString( font.GetFaceName(), wxPG_FULL_VALUE ); - Item(3)->SetValue( (long)font.GetStyle() ); - Item(4)->SetValue( (long)font.GetWeight() ); - Item(5)->SetValue( font.GetUnderlined() ); + Item(1)->SetValueFromString( font.GetFaceName(), wxPG_FULL_VALUE ); + Item(2)->SetValue( (long)font.GetStyle() ); + Item(3)->SetValue( (long)font.GetWeight() ); + Item(4)->SetValue( font.GetUnderlined() ); + Item(5)->SetValue( (long)font.GetFamily() ); } wxVariant wxFontProperty::ChildChanged( wxVariant& thisValue, @@ -723,14 +732,6 @@ wxVariant wxFontProperty::ChildChanged( wxVariant& thisValue, font.SetPointSize( childValue.GetLong() ); } else if ( ind == 1 ) - { - int fam = childValue.GetLong(); - if ( fam < wxDEFAULT || - fam > wxTELETYPE ) - fam = wxDEFAULT; - font.SetFamily( fam ); - } - else if ( ind == 2 ) { wxString faceName; int faceIndex = childValue.GetLong(); @@ -740,7 +741,7 @@ wxVariant wxFontProperty::ChildChanged( wxVariant& thisValue, font.SetFaceName( faceName ); } - else if ( ind == 3 ) + else if ( ind == 2 ) { int st = childValue.GetLong(); if ( st != wxFONTSTYLE_NORMAL && @@ -749,7 +750,7 @@ wxVariant wxFontProperty::ChildChanged( wxVariant& thisValue, st = wxFONTWEIGHT_NORMAL; font.SetStyle( st ); } - else if ( ind == 4 ) + else if ( ind == 3 ) { int wt = childValue.GetLong(); if ( wt != wxFONTWEIGHT_NORMAL && @@ -758,10 +759,18 @@ wxVariant wxFontProperty::ChildChanged( wxVariant& thisValue, wt = wxFONTWEIGHT_NORMAL; font.SetWeight( wt ); } - else if ( ind == 5 ) + else if ( ind == 4 ) { font.SetUnderlined( childValue.GetBool() ); } + else if ( ind == 5 ) + { + int fam = childValue.GetLong(); + if ( fam < wxDEFAULT || + fam > wxTELETYPE ) + fam = wxDEFAULT; + font.SetFamily( fam ); + } wxVariant newVariant; newVariant << font; @@ -1030,7 +1039,10 @@ wxVariant wxSystemColourProperty::DoTranslateVal( wxColourPropertyValue& v ) con int wxSystemColourProperty::ColToInd( const wxColour& colour ) const { size_t i; - size_t i_max = m_choices.GetCount() - 1; + size_t i_max = m_choices.GetCount(); + + if ( !(m_flags & wxPG_PROP_HIDE_CUSTOM_COLOUR) ) + i_max -= 1; for ( i=0; iIsMainButtonEvent(event) ) { // We need to handle button click in case editor has been // switched to one that has wxButton as well. + askColour = true; + } + else if ( event.GetEventType() == wxEVT_COMMAND_COMBOBOX_SELECTED ) + { + // Must override index detection since at this point GetIndex() + // will return old value. + wxOwnerDrawnComboBox* cb = + static_cast(propgrid->GetEditorControl()); + + if ( cb ) + { + int index = cb->GetSelection(); + + if ( index == GetCustomColourIndex() && + !(m_flags & wxPG_PROP_HIDE_CUSTOM_COLOUR) ) + askColour = true; + } + } + + if ( askColour && !propgrid->WasValueChangedInEvent() ) + { wxVariant variant; if ( QueryColourFromUser(variant) ) return true; @@ -1358,6 +1398,7 @@ bool wxSystemColourProperty::StringToValue( wxVariant& value, const wxString& te colourRGB.clear(); if ( colourRGB.length() == 0 && m_choices.GetCount() && + !(m_flags & wxPG_PROP_HIDE_CUSTOM_COLOUR) && colourName == m_choices.GetLabel(GetCustomColourIndex()) ) { if ( !(argFlags & wxPG_EDITABLE_VALUE ))