#if wxUSE_SPINBTN
-// This macro also defines global wxPGEditor_SpinCtrl for storing
-// the singleton class instance.
-WX_PG_IMPLEMENT_EDITOR_CLASS(SpinCtrl,wxPGSpinCtrlEditor,wxPGEditor)
+WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(SpinCtrl,
+ wxPGSpinCtrlEditor,
+ wxPGEditor)
// Trivial destructor.
class wxPGDatePickerCtrlEditor : public wxPGEditor
{
- WX_PG_DECLARE_EDITOR_CLASS(wxPGDatePickerCtrlEditor)
+ DECLARE_DYNAMIC_CLASS(wxPGDatePickerCtrlEditor)
public:
virtual ~wxPGDatePickerCtrlEditor();
- wxPG_DECLARE_CREATECONTROLS
-
+ wxString GetName() const;
+ virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
+ wxPGProperty* property,
+ const wxPoint& pos,
+ const wxSize& size) const;
virtual void UpdateControl( wxPGProperty* property, wxWindow* wnd ) const;
virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property,
wxWindow* wnd, wxEvent& event ) const;
};
-WX_PG_IMPLEMENT_EDITOR_CLASS(DatePickerCtrl,wxPGDatePickerCtrlEditor,wxPGEditor)
+WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(DatePickerCtrl,
+ wxPGDatePickerCtrlEditor,
+ wxPGEditor)
wxPGDatePickerCtrlEditor::~wxPGDatePickerCtrlEditor()
wxFont font;
font << m_value;
+ SetParentalType(wxPG_PROP_AGGREGATE);
+
AddChild( new wxIntProperty( _("Point Size"), wxS("Point Size"),(long)font.GetPointSize() ) );
AddChild( new wxEnumProperty(_("Family"), wxS("PointSize"),
}
}
-wxString wxFontProperty::GetValueAsString( int argFlags ) const
+wxString wxFontProperty::ValueToString( wxVariant& value,
+ int argFlags ) const
{
- return wxPGProperty::GetValueAsString(argFlags);
+ return wxPGProperty::ValueToString(value, argFlags);
}
bool wxFontProperty::OnEvent( wxPropertyGrid* propgrid, wxWindow* WXUNUSED(primary),
if ( propgrid->IsMainButtonEvent(event) )
{
// Update value from last minute changes
- PrepareValueForDialogEditing(propgrid);
+ wxVariant useValue = propgrid->GetUncommittedPropertyValue();
wxFontData data;
wxFont font;
- font << m_value;
+ font << useValue;
data.SetInitialFont( font );
data.SetColour(*wxBLACK);
return m_choices.GetLabel(index);
}
-wxString wxSystemColourProperty::GetValueAsString( int argFlags ) const
+wxString wxSystemColourProperty::ValueToString( wxVariant& value,
+ int WXUNUSED(argFlags) ) const
{
- wxColourPropertyValue val = GetVal();
+ wxColourPropertyValue val = GetVal(&value);
- int ind = GetIndex();
-
- // Always show custom colour for textctrl-editor
- if ( val.m_type == wxPG_COLOUR_CUSTOM ||
- ind == GetCustomColourIndex() ||
- (argFlags & wxPG_PROPERTY_SPECIFIC) )
- {
- return ColourToString(val.m_colour, wxNOT_FOUND);
- }
-
- if ( ind == -1 )
- return wxEmptyString;
-
- return ColourToString(val.m_colour, ind);
+ return ColourToString(val.m_colour, m_choices.Index(val.m_type));
}
wxPG_COLOUR(0,0,0)
};
-WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR2(wxColourProperty,
- gs_cp_es_normcolour_labels,
- (const long*)NULL,
- gs_cp_es_normcolour_colours,
- TextCtrlAndButton)
+WX_PG_IMPLEMENT_PROPERTY_CLASS(wxColourProperty, wxSystemColourProperty,
+ wxColour, const wxColour&, TextCtrlAndButton)
+
+static wxPGChoices gs_wxColourProperty_choicesCache;
+
+wxColourProperty::wxColourProperty( const wxString& label,
+ const wxString& name,
+ const wxColour& value )
+ : wxSystemColourProperty(label, name, gs_cp_es_normcolour_labels,
+ NULL,
+ &gs_wxColourProperty_choicesCache, value )
+{
+ Init( value );
+
+ m_flags |= wxPG_PROP_TRANSLATE_CUSTOM;
+}
+
+wxColourProperty::~wxColourProperty()
+{
+}
+
+void wxColourProperty::Init( wxColour colour )
+{
+ if ( !colour.Ok() )
+ colour = *wxWHITE;
+ wxVariant variant;
+ variant << colour;
+ m_value = variant;
+ int ind = ColToInd(colour);
+ if ( ind < 0 )
+ ind = m_choices.GetCount() - 1;
+ SetIndex( ind );
+}
+
+wxString wxColourProperty::ValueToString( wxVariant& value,
+ int argFlags ) const
+{
+ const wxPGEditor* editor = GetEditorClass();
+ if ( editor != wxPGEditor_Choice &&
+ editor != wxPGEditor_ChoiceAndButton &&
+ editor != wxPGEditor_ComboBox )
+ argFlags |= wxPG_PROPERTY_SPECIFIC;
+
+ return wxSystemColourProperty::ValueToString(value, argFlags);
+}
+
+wxColour wxColourProperty::GetColour( int index ) const
+{
+ if ( !m_choices.HasValue(index) )
+ {
+ wxASSERT( index < (int)GetItemCount() );
+ return gs_cp_es_normcolour_colours[index];
+ }
+ return gs_cp_es_normcolour_colours[m_choices.GetValue(index)];
+}
+
+wxVariant wxColourProperty::DoTranslateVal( wxColourPropertyValue& v ) const
+{
+ wxVariant variant;
+ variant << v.m_colour;
+ return variant;
+}
// -----------------------------------------------------------------------
// wxCursorProperty
m_pBitmap = NULL;
}
+ wxFileName filename = GetFileName();
+
// Create the image thumbnail
- if ( m_filename.FileExists() )
+ if ( filename.FileExists() )
{
- m_pImage = new wxImage( m_filename.GetFullPath() );
+ m_pImage = new wxImage( filename.GetFullPath() );
}
}
void wxMultiChoiceProperty::OnSetValue()
{
- GenerateValueAsString();
+ GenerateValueAsString(m_value, &m_display);
}
-wxString wxMultiChoiceProperty::GetValueAsString( int ) const
+wxString wxMultiChoiceProperty::ValueToString( wxVariant& value,
+ int argFlags ) const
{
- return m_display;
+ // If possible, use cached string
+ if ( argFlags & wxPG_VALUE_IS_CURRENT )
+ return m_display;
+
+ wxString s;
+ GenerateValueAsString(value, &s);
+ return s;
}
-void wxMultiChoiceProperty::GenerateValueAsString()
+void wxMultiChoiceProperty::GenerateValueAsString( wxVariant& value,
+ wxString* target ) const
{
wxArrayString strings;
- if ( m_value.GetType() == wxPG_VARIANT_TYPE_ARRSTRING )
- strings = m_value.GetArrayString();
+ if ( value.GetType() == wxPG_VARIANT_TYPE_ARRSTRING )
+ strings = value.GetArrayString();
- wxString& tempStr = m_display;
+ wxString& tempStr = *target;
unsigned int i;
unsigned int itemCount = strings.size();
if ( propgrid->IsMainButtonEvent(event) )
{
// Update the value
- PrepareValueForDialogEditing(propgrid);
+ wxVariant useValue = propgrid->GetUncommittedPropertyValue();
wxArrayString labels = m_choices.GetLabels();
unsigned int choiceCount;
dlg.Move( propgrid->GetGoodEditorDialogPosition(this,dlg.GetSize()) );
- wxArrayString strings = m_value.GetArrayString();
+ wxArrayString strings = useValue.GetArrayString();
wxArrayString extraStrings;
dlg.SetSelections(m_choices.GetIndicesForStrings(strings, &extraStrings));
return false;
}
-wxString wxDateProperty::GetValueAsString( int argFlags ) const
+wxString wxDateProperty::ValueToString( wxVariant& value,
+ int argFlags ) const
{
const wxChar* format = (const wxChar*) NULL;
- wxDateTime dateTime = m_value.GetDateTime();
+ wxDateTime dateTime = value.GetDateTime();
if ( !dateTime.IsValid() )
return wxT("Invalid");