| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/generic/grideditors.h
 
- // Purpose:     wxGridCellEditorEvtHandler and wxGrid editors
 
- // Author:      Michael Bedward (based on code by Julian Smart, Robin Dunn)
 
- // Modified by: Santiago Palacios
 
- // Created:     1/08/1999
 
- // Copyright:   (c) Michael Bedward
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_GENERIC_GRID_EDITORS_H_
 
- #define _WX_GENERIC_GRID_EDITORS_H_
 
- #include "wx/defs.h"
 
- #if wxUSE_GRID
 
- #include "wx/scopedptr.h"
 
- class wxGridCellEditorEvtHandler : public wxEvtHandler
 
- {
 
- public:
 
-     wxGridCellEditorEvtHandler(wxGrid* grid, wxGridCellEditor* editor)
 
-         : m_grid(grid),
 
-           m_editor(editor),
 
-           m_inSetFocus(false)
 
-     {
 
-     }
 
-     void OnKillFocus(wxFocusEvent& event);
 
-     void OnKeyDown(wxKeyEvent& event);
 
-     void OnChar(wxKeyEvent& event);
 
-     void SetInSetFocus(bool inSetFocus) { m_inSetFocus = inSetFocus; }
 
- private:
 
-     wxGrid             *m_grid;
 
-     wxGridCellEditor   *m_editor;
 
-     // Work around the fact that a focus kill event can be sent to
 
-     // a combobox within a set focus event.
 
-     bool                m_inSetFocus;
 
-     DECLARE_EVENT_TABLE()
 
-     DECLARE_DYNAMIC_CLASS(wxGridCellEditorEvtHandler)
 
-     wxDECLARE_NO_COPY_CLASS(wxGridCellEditorEvtHandler);
 
- };
 
- #if wxUSE_TEXTCTRL
 
- // the editor for string/text data
 
- class WXDLLIMPEXP_ADV wxGridCellTextEditor : public wxGridCellEditor
 
- {
 
- public:
 
-     wxEXPLICIT wxGridCellTextEditor(size_t maxChars = 0);
 
-     virtual void Create(wxWindow* parent,
 
-                         wxWindowID id,
 
-                         wxEvtHandler* evtHandler);
 
-     virtual void SetSize(const wxRect& rect);
 
-     virtual void PaintBackground(wxDC& dc,
 
-                                  const wxRect& rectCell,
 
-                                  const wxGridCellAttr& attr);
 
-     virtual bool IsAcceptedKey(wxKeyEvent& event);
 
-     virtual void BeginEdit(int row, int col, wxGrid* grid);
 
-     virtual bool EndEdit(int row, int col, const wxGrid* grid,
 
-                          const wxString& oldval, wxString *newval);
 
-     virtual void ApplyEdit(int row, int col, wxGrid* grid);
 
-     virtual void Reset();
 
-     virtual void StartingKey(wxKeyEvent& event);
 
-     virtual void HandleReturn(wxKeyEvent& event);
 
-     // parameters string format is "max_width"
 
-     virtual void SetParameters(const wxString& params);
 
- #if wxUSE_VALIDATORS
 
-     virtual void SetValidator(const wxValidator& validator);
 
- #endif
 
-     virtual wxGridCellEditor *Clone() const;
 
-     // added GetValue so we can get the value which is in the control
 
-     virtual wxString GetValue() const;
 
- protected:
 
-     wxTextCtrl *Text() const { return (wxTextCtrl *)m_control; }
 
-     // parts of our virtual functions reused by the derived classes
 
-     void DoCreate(wxWindow* parent, wxWindowID id, wxEvtHandler* evtHandler,
 
-                   long style = 0);
 
-     void DoBeginEdit(const wxString& startValue);
 
-     void DoReset(const wxString& startValue);
 
- private:
 
-     size_t                   m_maxChars;        // max number of chars allowed
 
- #if wxUSE_VALIDATORS
 
-     wxScopedPtr<wxValidator> m_validator;
 
- #endif
 
-     wxString                 m_value;
 
-     wxDECLARE_NO_COPY_CLASS(wxGridCellTextEditor);
 
- };
 
- // the editor for numeric (long) data
 
- class WXDLLIMPEXP_ADV wxGridCellNumberEditor : public wxGridCellTextEditor
 
- {
 
- public:
 
-     // allows to specify the range - if min == max == -1, no range checking is
 
-     // done
 
-     wxGridCellNumberEditor(int min = -1, int max = -1);
 
-     virtual void Create(wxWindow* parent,
 
-                         wxWindowID id,
 
-                         wxEvtHandler* evtHandler);
 
-     virtual bool IsAcceptedKey(wxKeyEvent& event);
 
-     virtual void BeginEdit(int row, int col, wxGrid* grid);
 
-     virtual bool EndEdit(int row, int col, const wxGrid* grid,
 
-                          const wxString& oldval, wxString *newval);
 
-     virtual void ApplyEdit(int row, int col, wxGrid* grid);
 
-     virtual void Reset();
 
-     virtual void StartingKey(wxKeyEvent& event);
 
-     // parameters string format is "min,max"
 
-     virtual void SetParameters(const wxString& params);
 
-     virtual wxGridCellEditor *Clone() const
 
-         { return new wxGridCellNumberEditor(m_min, m_max); }
 
-     // added GetValue so we can get the value which is in the control
 
-     virtual wxString GetValue() const;
 
- protected:
 
- #if wxUSE_SPINCTRL
 
-     wxSpinCtrl *Spin() const { return (wxSpinCtrl *)m_control; }
 
- #endif
 
-     // if HasRange(), we use wxSpinCtrl - otherwise wxTextCtrl
 
-     bool HasRange() const
 
-     {
 
- #if wxUSE_SPINCTRL
 
-         return m_min != m_max;
 
- #else
 
-         return false;
 
- #endif
 
-     }
 
-     // string representation of our value
 
-     wxString GetString() const
 
-         { return wxString::Format(wxT("%ld"), m_value); }
 
- private:
 
-     int m_min,
 
-         m_max;
 
-     long m_value;
 
-     wxDECLARE_NO_COPY_CLASS(wxGridCellNumberEditor);
 
- };
 
- enum wxGridCellFloatFormat
 
- {
 
-     // Decimal floating point (%f)
 
-     wxGRID_FLOAT_FORMAT_FIXED      = 0x0010,
 
-     // Scientific notation (mantise/exponent) using e character (%e)
 
-     wxGRID_FLOAT_FORMAT_SCIENTIFIC = 0x0020,
 
-     // Use the shorter of %e or %f (%g)
 
-     wxGRID_FLOAT_FORMAT_COMPACT    = 0x0040,
 
-     // To use in combination with one of the above formats (%F/%E/%G)
 
-     wxGRID_FLOAT_FORMAT_UPPER      = 0x0080,
 
-     // Format used by default.
 
-     wxGRID_FLOAT_FORMAT_DEFAULT    = wxGRID_FLOAT_FORMAT_FIXED,
 
-     // A mask to extract format from the combination of flags.
 
-     wxGRID_FLOAT_FORMAT_MASK       = wxGRID_FLOAT_FORMAT_FIXED |
 
-                                      wxGRID_FLOAT_FORMAT_SCIENTIFIC |
 
-                                      wxGRID_FLOAT_FORMAT_COMPACT |
 
-                                      wxGRID_FLOAT_FORMAT_UPPER
 
- };
 
- // the editor for floating point numbers (double) data
 
- class WXDLLIMPEXP_ADV wxGridCellFloatEditor : public wxGridCellTextEditor
 
- {
 
- public:
 
-     wxGridCellFloatEditor(int width = -1,
 
-                           int precision = -1,
 
-                           int format = wxGRID_FLOAT_FORMAT_DEFAULT);
 
-     virtual void Create(wxWindow* parent,
 
-                         wxWindowID id,
 
-                         wxEvtHandler* evtHandler);
 
-     virtual bool IsAcceptedKey(wxKeyEvent& event);
 
-     virtual void BeginEdit(int row, int col, wxGrid* grid);
 
-     virtual bool EndEdit(int row, int col, const wxGrid* grid,
 
-                          const wxString& oldval, wxString *newval);
 
-     virtual void ApplyEdit(int row, int col, wxGrid* grid);
 
-     virtual void Reset();
 
-     virtual void StartingKey(wxKeyEvent& event);
 
-     virtual wxGridCellEditor *Clone() const
 
-         { return new wxGridCellFloatEditor(m_width, m_precision); }
 
-     // parameters string format is "width[,precision[,format]]"
 
-     // format to choose beween f|e|g|E|G (f is used by default)
 
-     virtual void SetParameters(const wxString& params);
 
- protected:
 
-     // string representation of our value
 
-     wxString GetString();
 
- private:
 
-     int m_width,
 
-         m_precision;
 
-     double m_value;
 
-     int m_style;
 
-     wxString m_format;
 
-     wxDECLARE_NO_COPY_CLASS(wxGridCellFloatEditor);
 
- };
 
- #endif // wxUSE_TEXTCTRL
 
- #if wxUSE_CHECKBOX
 
- // the editor for boolean data
 
- class WXDLLIMPEXP_ADV wxGridCellBoolEditor : public wxGridCellEditor
 
- {
 
- public:
 
-     wxGridCellBoolEditor() { }
 
-     virtual void Create(wxWindow* parent,
 
-                         wxWindowID id,
 
-                         wxEvtHandler* evtHandler);
 
-     virtual void SetSize(const wxRect& rect);
 
-     virtual void Show(bool show, wxGridCellAttr *attr = NULL);
 
-     virtual bool IsAcceptedKey(wxKeyEvent& event);
 
-     virtual void BeginEdit(int row, int col, wxGrid* grid);
 
-     virtual bool EndEdit(int row, int col, const wxGrid* grid,
 
-                          const wxString& oldval, wxString *newval);
 
-     virtual void ApplyEdit(int row, int col, wxGrid* grid);
 
-     virtual void Reset();
 
-     virtual void StartingClick();
 
-     virtual void StartingKey(wxKeyEvent& event);
 
-     virtual wxGridCellEditor *Clone() const
 
-         { return new wxGridCellBoolEditor; }
 
-     // added GetValue so we can get the value which is in the control, see
 
-     // also UseStringValues()
 
-     virtual wxString GetValue() const;
 
-     // set the string values returned by GetValue() for the true and false
 
-     // states, respectively
 
-     static void UseStringValues(const wxString& valueTrue = wxT("1"),
 
-                                 const wxString& valueFalse = wxEmptyString);
 
-     // return true if the given string is equal to the string representation of
 
-     // true value which we currently use
 
-     static bool IsTrueValue(const wxString& value);
 
- protected:
 
-     wxCheckBox *CBox() const { return (wxCheckBox *)m_control; }
 
- private:
 
-     bool m_value;
 
-     static wxString ms_stringValues[2];
 
-     wxDECLARE_NO_COPY_CLASS(wxGridCellBoolEditor);
 
- };
 
- #endif // wxUSE_CHECKBOX
 
- #if wxUSE_COMBOBOX
 
- // the editor for string data allowing to choose from the list of strings
 
- class WXDLLIMPEXP_ADV wxGridCellChoiceEditor : public wxGridCellEditor
 
- {
 
- public:
 
-     // if !allowOthers, user can't type a string not in choices array
 
-     wxGridCellChoiceEditor(size_t count = 0,
 
-                            const wxString choices[] = NULL,
 
-                            bool allowOthers = false);
 
-     wxGridCellChoiceEditor(const wxArrayString& choices,
 
-                            bool allowOthers = false);
 
-     virtual void Create(wxWindow* parent,
 
-                         wxWindowID id,
 
-                         wxEvtHandler* evtHandler);
 
-     virtual void SetSize(const wxRect& rect);
 
-     virtual void PaintBackground(wxDC& dc,
 
-                                  const wxRect& rectCell,
 
-                                  const wxGridCellAttr& attr);
 
-     virtual void BeginEdit(int row, int col, wxGrid* grid);
 
-     virtual bool EndEdit(int row, int col, const wxGrid* grid,
 
-                          const wxString& oldval, wxString *newval);
 
-     virtual void ApplyEdit(int row, int col, wxGrid* grid);
 
-     virtual void Reset();
 
-     // parameters string format is "item1[,item2[...,itemN]]"
 
-     virtual void SetParameters(const wxString& params);
 
-     virtual wxGridCellEditor *Clone() const;
 
-     // added GetValue so we can get the value which is in the control
 
-     virtual wxString GetValue() const;
 
- protected:
 
-     wxComboBox *Combo() const { return (wxComboBox *)m_control; }
 
-     wxString        m_value;
 
-     wxArrayString   m_choices;
 
-     bool            m_allowOthers;
 
-     wxDECLARE_NO_COPY_CLASS(wxGridCellChoiceEditor);
 
- };
 
- #endif // wxUSE_COMBOBOX
 
- #if wxUSE_COMBOBOX
 
- class WXDLLIMPEXP_ADV wxGridCellEnumEditor : public wxGridCellChoiceEditor
 
- {
 
- public:
 
-     wxGridCellEnumEditor( const wxString& choices = wxEmptyString );
 
-     virtual ~wxGridCellEnumEditor() {}
 
-     virtual wxGridCellEditor*  Clone() const;
 
-     virtual void BeginEdit(int row, int col, wxGrid* grid);
 
-     virtual bool EndEdit(int row, int col, const wxGrid* grid,
 
-                          const wxString& oldval, wxString *newval);
 
-     virtual void ApplyEdit(int row, int col, wxGrid* grid);
 
- private:
 
-     long m_index;
 
-     wxDECLARE_NO_COPY_CLASS(wxGridCellEnumEditor);
 
- };
 
- #endif // wxUSE_COMBOBOX
 
- class WXDLLIMPEXP_ADV wxGridCellAutoWrapStringEditor : public wxGridCellTextEditor
 
- {
 
- public:
 
-     wxGridCellAutoWrapStringEditor() : wxGridCellTextEditor() { }
 
-     virtual void Create(wxWindow* parent,
 
-                         wxWindowID id,
 
-                         wxEvtHandler* evtHandler);
 
-     virtual wxGridCellEditor *Clone() const
 
-         { return new wxGridCellAutoWrapStringEditor; }
 
-     wxDECLARE_NO_COPY_CLASS(wxGridCellAutoWrapStringEditor);
 
- };
 
- #endif // wxUSE_GRID
 
- #endif // _WX_GENERIC_GRID_EDITORS_H_
 
 
  |