]> git.saurik.com Git - wxWidgets.git/blobdiff - src/propgrid/editors.cpp
CanPaste() should be const too
[wxWidgets.git] / src / propgrid / editors.cpp
index a9ab7a67a22fe8e57b20001c66e07919b8bc62a0..fb60bdaa5f65c85cfc0feebf78f868ff346554dc 100644 (file)
@@ -68,7 +68,7 @@
 
 // How many pixels between textctrl and button
 #ifdef __WXMAC__
-    #define wxPG_TEXTCTRL_AND_BUTTON_SPACING        8
+    #define wxPG_TEXTCTRL_AND_BUTTON_SPACING        4
 #else
     #define wxPG_TEXTCTRL_AND_BUTTON_SPACING        2
 #endif 
     #define wxPG_NAT_BUTTON_BORDER_X        0
     #define wxPG_NAT_BUTTON_BORDER_Y        0
 
-    #define wxPG_TEXTCTRLYADJUST            3
+    #define wxPG_TEXTCTRLYADJUST            0
 
 #else
     // defaults
 #endif
 
 // for odcombo
+#ifdef __WXMAC__
+#define wxPG_CHOICEXADJUST           -3 // required because wxComboCtrl reserves 3pixels for wxTextCtrl's focus ring
+#define wxPG_CHOICEYADJUST           -3 
+#else
 #define wxPG_CHOICEXADJUST           0
 #define wxPG_CHOICEYADJUST           0
+#endif
 
 #define ODCB_CUST_PAINT_MARGIN               6  // Number added to image width for SetCustomPaintWidth
 
@@ -162,6 +167,11 @@ wxPGEditor::~wxPGEditor()
 {
 }
 
+wxString wxPGEditor::GetName() const
+{
+    return GetClassInfo()->GetClassName();
+}
+
 void wxPGEditor::DrawValue( wxDC& dc, const wxRect& rect, wxPGProperty* property, const wxString& text ) const
 {
     if ( !property->IsValueUnspecified() )
@@ -209,7 +219,7 @@ bool wxPGEditor::CanContainCustomImage() const
 // wxPGTextCtrlEditor
 // -----------------------------------------------------------------------
 
-WX_PG_IMPLEMENT_EDITOR_CLASS(TextCtrl,wxPGTextCtrlEditor,wxPGEditor)
+WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(TextCtrl,wxPGTextCtrlEditor,wxPGEditor)
 
 
 wxPGWindowList wxPGTextCtrlEditor::CreateControls( wxPropertyGrid* propGrid,
@@ -226,7 +236,8 @@ wxPGWindowList wxPGTextCtrlEditor::CreateControls( wxPropertyGrid* propGrid,
         return (wxWindow*) NULL;
 
     if ( !property->IsValueUnspecified() )
-        text = property->GetValueString(property->HasFlag(wxPG_PROP_READONLY)?0:wxPG_EDITABLE_VALUE);
+        text = property->GetValueAsString(property->HasFlag(wxPG_PROP_READONLY) ?
+                                            0 : wxPG_EDITABLE_VALUE);
 
     int flags = 0;
     if ( (property->GetFlags() & wxPG_PROP_PASSWORD) &&
@@ -386,7 +397,7 @@ wxPGTextCtrlEditor::~wxPGTextCtrlEditor() { }
 // -----------------------------------------------------------------------
 
 
-WX_PG_IMPLEMENT_EDITOR_CLASS(Choice,wxPGChoiceEditor,wxPGEditor)
+WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(Choice,wxPGChoiceEditor,wxPGEditor)
 
 
 // This is a special enhanced double-click processor class.
@@ -610,7 +621,7 @@ void wxPropertyGrid::OnComboItemPaint( wxPGCustomComboControl* pCc,
         else
         {
             if ( !p->IsValueUnspecified() )
-                text = p->GetValueString(0);
+                text = p->GetValueAsString(0);
         }
     }
 
@@ -669,7 +680,7 @@ void wxPropertyGrid::OnComboItemPaint( wxPGCustomComboControl* pCc,
         wxPoint pt(rect.x + wxPG_CONTROL_MARGIN - wxPG_CHOICEXADJUST - 1,
                    rect.y + 1);
 
-        int renderFlags = 0;
+        int renderFlags = wxPGCellRenderer::DontUseCellColours;
 
         if ( flags & wxODCB_PAINTING_CONTROL )
             renderFlags |= wxPGCellRenderer::Control;
@@ -861,11 +872,11 @@ wxWindow* wxPGChoiceEditor::CreateControlsBase( wxPropertyGrid* propGrid,
     // Connect event handling
     wxWindowID id = cb->GetId();
     propGrid->Connect(id, wxEVT_COMMAND_COMBOBOX_SELECTED,
-        wxCommandEventHandler(wxPropertyGrid::OnCustomEditorEvent));
+        wxEventHandler(wxPropertyGrid::OnCustomEditorEvent));
     propGrid->Connect(id, wxEVT_COMMAND_TEXT_UPDATED,
-        wxCommandEventHandler(wxPropertyGrid::OnCustomEditorEvent));
+        wxEventHandler(wxPropertyGrid::OnCustomEditorEvent));
     propGrid->Connect(id, wxEVT_COMMAND_TEXT_ENTER,
-        wxCommandEventHandler(wxPropertyGrid::OnCustomEditorEvent));
+        wxEventHandler(wxPropertyGrid::OnCustomEditorEvent));
 
 #ifdef __WXMSW__
     cb->Show();
@@ -1002,13 +1013,15 @@ wxPGChoiceEditor::~wxPGChoiceEditor() { }
 // -----------------------------------------------------------------------
 
 
-WX_PG_IMPLEMENT_EDITOR_CLASS(ComboBox,wxPGComboBoxEditor,wxPGChoiceEditor)
+WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(ComboBox,
+                                      wxPGComboBoxEditor,
+                                      wxPGChoiceEditor)
 
 
 void wxPGComboBoxEditor::UpdateControl( wxPGProperty* property, wxWindow* ctrl ) const
 {
     wxOwnerDrawnComboBox* cb = (wxOwnerDrawnComboBox*)ctrl;
-    cb->SetValue(property->GetValueString(wxPG_EDITABLE_VALUE));
+    cb->SetValue(property->GetValueAsString(wxPG_EDITABLE_VALUE));
 
     // TODO: If string matches any selection, then select that.
 }
@@ -1081,8 +1094,9 @@ wxPGComboBoxEditor::~wxPGComboBoxEditor() { }
 // -----------------------------------------------------------------------
 
 
-// This simpler implement_editor macro doesn't define class body.
-WX_PG_IMPLEMENT_EDITOR_CLASS(ChoiceAndButton,wxPGChoiceAndButtonEditor,wxPGChoiceEditor)
+WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(ChoiceAndButton,
+                                      wxPGChoiceAndButtonEditor,
+                                      wxPGChoiceEditor)
 
 
 wxPGWindowList wxPGChoiceAndButtonEditor::CreateControls( wxPropertyGrid* propGrid,
@@ -1113,7 +1127,7 @@ wxPGWindowList wxPGChoiceAndButtonEditor::CreateControls( wxPropertyGrid* propGr
     ch_sz.x -= wxPG_TEXTCTRL_AND_BUTTON_SPACING;
 #endif
 
-    wxWindow* ch = wxPG_EDITOR(Choice)->CreateControls(propGrid,property,
+    wxWindow* ch = wxPGEditor_Choice->CreateControls(propGrid,property,
         pos,ch_sz).m_primary;
 
 #ifdef __WXMSW__
@@ -1131,9 +1145,9 @@ wxPGChoiceAndButtonEditor::~wxPGChoiceAndButtonEditor() { }
 // wxPGTextCtrlAndButtonEditor
 // -----------------------------------------------------------------------
 
-
-// This simpler implement_editor macro doesn't define class body.
-WX_PG_IMPLEMENT_EDITOR_CLASS(TextCtrlAndButton,wxPGTextCtrlAndButtonEditor,wxPGTextCtrlEditor)
+WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(TextCtrlAndButton,
+                                      wxPGTextCtrlAndButtonEditor,
+                                      wxPGTextCtrlEditor)
 
 
 wxPGWindowList wxPGTextCtrlAndButtonEditor::CreateControls( wxPropertyGrid* propGrid,
@@ -1158,7 +1172,9 @@ wxPGTextCtrlAndButtonEditor::~wxPGTextCtrlAndButtonEditor() { }
 
 #if wxPG_INCLUDE_CHECKBOX
 
-WX_PG_IMPLEMENT_EDITOR_CLASS(CheckBox,wxPGCheckBoxEditor,wxPGEditor)
+WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(CheckBox,
+                                      wxPGCheckBoxEditor,
+                                      wxPGEditor)
 
 
 // state argument: 0x01 = set if checked
@@ -1642,7 +1658,7 @@ wxWindow* wxPropertyGrid::GenerateEditorTextCtrl( const wxPoint& pos,
 
    // Need to reduce width of text control on Mac
 #if defined(__WXMAC__)
-   s.x -= 8;
+    s.x -= 8;
 #endif
 
      // Take button into acccount
@@ -1670,7 +1686,7 @@ wxWindow* wxPropertyGrid::GenerateEditorTextCtrl( const wxPoint& pos,
 #endif
     SetupTextCtrlValue(value);
     tc->Create(ctrlParent,id,value, p, s,tcFlags);
-
+    
     wxWindow* ed = tc;
 
     // Center the control vertically
@@ -1690,9 +1706,9 @@ wxWindow* wxPropertyGrid::GenerateEditorTextCtrl( const wxPoint& pos,
     // Connect event handling
     id = ed->GetId();
     this->Connect(id, wxEVT_COMMAND_TEXT_UPDATED,
-        wxCommandEventHandler(wxPropertyGrid::OnCustomEditorEvent));
+        wxEventHandler(wxPropertyGrid::OnCustomEditorEvent));
     this->Connect(id, wxEVT_COMMAND_TEXT_ENTER,
-        wxCommandEventHandler(wxPropertyGrid::OnCustomEditorEvent));
+        wxEventHandler(wxPropertyGrid::OnCustomEditorEvent));
 
     return (wxWindow*) ed;
 }
@@ -1758,7 +1774,7 @@ wxWindow* wxPropertyGrid::GenerateEditorButton( const wxPoint& pos, const wxSize
     // Connect event handling
     id = but->GetId();
     this->Connect(id, wxEVT_COMMAND_BUTTON_CLICKED,
-        wxCommandEventHandler(wxPropertyGrid::OnCustomEditorEvent));
+        wxEventHandler(wxPropertyGrid::OnCustomEditorEvent));
 
     return but;
 }
@@ -1786,7 +1802,7 @@ wxWindow* wxPropertyGrid::GenerateEditorTextCtrlAndButton( const wxPoint& pos,
     wxString text;
 
     if ( !property->IsValueUnspecified() )
-        text = property->GetValueString(property->HasFlag(wxPG_PROP_READONLY)?0:wxPG_EDITABLE_VALUE);
+        text = property->GetValueAsString(property->HasFlag(wxPG_PROP_READONLY)?0:wxPG_EDITABLE_VALUE);
 
     return GenerateEditorTextCtrl(pos,sz,text,but,property->m_maxLen);
 }
@@ -1862,11 +1878,11 @@ void wxPGMultiButton::Finalize( wxPropertyGrid* propGrid, const wxPoint& pos )
     Move( pos.x + m_fullEditorSize.x - m_buttonsWidth, pos.y );
 
     // Connect event handling
-    for ( int i=0; i<GetCount(); i++ )
+    for ( unsigned int i=0; i<GetCount(); i++ )
     {
         wxWindowID id = GetButtonId(i);
         propGrid->Connect(id, wxEVT_COMMAND_BUTTON_CLICKED,
-            wxCommandEventHandler(wxPropertyGrid::OnCustomEditorEvent));
+            wxEventHandler(wxPropertyGrid::OnCustomEditorEvent));
     }
 }