{
DECLARE_DYNAMIC_CLASS(wxTextCtrl)
-
- protected:
- wxString fileName;
- public:
- wxTextCtrl(void);
+
+public:
+ // creation
+ // --------
+ wxTextCtrl();
inline wxTextCtrl(wxWindow *parent, wxWindowID id,
- const wxString& value = wxEmptyString,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = 0,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxTextCtrlNameStr)
+ const wxString& value = wxEmptyString,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize, long style = 0,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = wxTextCtrlNameStr)
#ifndef NO_TEXT_WINDOW_STREAM
- :streambuf()
+ :streambuf()
#endif
{
- Create(parent, id, value, pos, size, style, validator, name);
+ Create(parent, id, value, pos, size, style, validator, name);
}
-
+
bool Create(wxWindow *parent, wxWindowID id,
- const wxString& value = wxEmptyString,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = 0,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxTextCtrlNameStr);
-
- virtual wxString GetValue(void) const ;
+ const wxString& value = wxEmptyString,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize, long style = 0,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = wxTextCtrlNameStr);
+
+ // accessors
+ // ---------
+ virtual wxString GetValue() const ;
virtual void SetValue(const wxString& value);
- virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
- // Clipboard operations
- virtual void Copy(void);
- virtual void Cut(void);
- virtual void Paste(void);
+ virtual int GetLineLength(long lineNo) const;
+ virtual wxString GetLineText(long lineNo) const;
+ virtual int GetNumberOfLines() const;
+ // operations
+ // ----------
+ virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
+
+ // Clipboard operations
+ virtual void Copy();
+ virtual void Cut();
+ virtual void Paste();
+
virtual void SetInsertionPoint(long pos);
- virtual void SetInsertionPointEnd(void);
- virtual long GetInsertionPoint(void) const ;
- virtual long GetLastPosition(void) const ;
+ virtual void SetInsertionPointEnd();
+ virtual long GetInsertionPoint() const ;
+ virtual long GetLastPosition() const ;
virtual void Replace(long from, long to, const wxString& value);
virtual void Remove(long from, long to);
virtual void SetSelection(long from, long to);
-
- virtual void Command(wxCommandEvent& event);
-
virtual void SetEditable(bool editable);
-
+
+ // streambuf implementation
#ifndef NO_TEXT_WINDOW_STREAM
int overflow(int i);
- int sync(void);
- int underflow(void);
+ int sync();
+ int underflow();
#endif
-
- void OnDropFiles(wxDropFilesEvent& event);
-
+
wxTextCtrl& operator<<(const wxString& s);
wxTextCtrl& operator<<(int i);
wxTextCtrl& operator<<(long i);
wxTextCtrl& operator<<(float f);
wxTextCtrl& operator<<(double d);
wxTextCtrl& operator<<(const char c);
-
+
virtual bool LoadFile(const wxString& file);
virtual bool SaveFile(const wxString& file);
virtual void WriteText(const wxString& text);
- virtual void DiscardEdits(void);
- virtual bool IsModified(void) const;
-
+ virtual void DiscardEdits();
+ virtual bool IsModified() const;
+
#if WXWIN_COMPATIBILITY
- inline bool Modified(void) const { return IsModified(); }
+ inline bool Modified() const { return IsModified(); }
#endif
-
+
virtual long XYToPosition(long x, long y) const ;
virtual void PositionToXY(long pos, long *x, long *y) const ;
virtual void ShowPosition(long pos);
- virtual int GetLineLength(long lineNo) const ;
- virtual wxString GetLineText(long lineNo) const ;
- virtual int GetNumberOfLines(void) const ;
- virtual void Clear(void);
-
- // Process special keys e.g. 'enter' and process as if it were a command, if required
- void OnChar(wxKeyEvent& event);
-
+ virtual void Clear();
+
+ // callbacks
+ // ---------
+ void OnDropFiles(wxDropFilesEvent& event);
+ void OnChar(wxKeyEvent& event); // Process 'enter' if required
void OnEraseBackground(wxEraseEvent& event);
-
+
// Implementation
+ // --------------
+ virtual void Command(wxCommandEvent& event);
virtual bool MSWCommand(WXUINT param, WXWORD id);
- inline bool IsRich(void) { return m_isRich; }
+ inline bool IsRich() const { return m_isRich; }
inline void SetRichEdit(bool isRich) { m_isRich = isRich; }
virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
- WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
-
- virtual long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
- virtual void AdoptAttributesFromHWND(void);
- virtual void SetupColours(void);
-
+ WXUINT message, WXWPARAM wParam,
+ WXLPARAM lParam);
+
+ virtual void AdoptAttributesFromHWND();
+ virtual void SetupColours();
+ virtual long MSWGetDlgCode();
+
protected:
- bool m_isRich; // Are we using rich text edit to implement this?
-
-DECLARE_EVENT_TABLE()
+ bool m_isRich; // Are we using rich text edit to implement this?
+ wxString fileName;
+
+ DECLARE_EVENT_TABLE()
};
#endif
{
wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId);
event.SetEventObject( this );
- if ( !GetEventHandler()->ProcessEvent(event) )
- event.Skip();
+ if ( GetEventHandler()->ProcessEvent(event) )
+ return;
}
- else
- event.Skip();
+ else if ( event.KeyCode() == WXK_TAB ) {
+ wxNavigationKeyEvent event;
+ event.SetDirection(!(::GetKeyState(VK_SHIFT) & 0x100));
+ event.SetWindowChange(FALSE);
+ event.SetEventObject(this);
+
+ if ( GetEventHandler()->ProcessEvent(event) )
+ return;
+ }
+
+ event.Skip();
}
-long wxTextCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
+long wxTextCtrl::MSWGetDlgCode()
{
+ long lRc = DLGC_WANTCHARS | DLGC_WANTARROWS;
+ if ( m_windowStyle & wxPROCESS_ENTER ) {
+ lRc |= DLGC_WANTMESSAGE;
+ }
+
+ return lRc;
+}
+
/*
+long wxTextCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
+{
switch (nMsg)
{
case WM_GETDLGCODE:
default:
break;
}
-*/
return wxWindow::MSWWindowProc(nMsg, wParam, lParam);
}
+*/
void wxTextCtrl::OnEraseBackground(wxEraseEvent& event)
{
break;
}
*/
- wxEventType eventTyp = wxEVT_NULL;
switch (param)
{
case EN_SETFOCUS:
- eventTyp = wxEVENT_TYPE_SET_FOCUS;
- break;
case EN_KILLFOCUS:
- eventTyp = wxEVENT_TYPE_KILL_FOCUS;
+ {
+ wxFocusEvent event(param == EN_KILLFOCUS ? wxEVT_KILL_FOCUS
+ : wxEVT_SET_FOCUS,
+ m_windowId);
+ event.SetEventObject( this );
+ ProcessEvent(event);
+ }
break;
- case EN_UPDATE:
- break;
+
case EN_CHANGE:
- eventTyp = wxEVENT_TYPE_TEXT_COMMAND;
+ {
+ wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId);
+ wxString val(GetValue());
+ if ( !val.IsNull() )
+ event.m_commandString = WXSTRINGCAST val;
+ event.SetEventObject( this );
+ ProcessCommand(event);
+ }
break;
+
+ // the other notification messages are not processed
+ case EN_UPDATE:
case EN_ERRSPACE:
- break;
case EN_MAXTEXT:
- break;
case EN_HSCROLL:
- break;
case EN_VSCROLL:
- break;
default:
- break;
+ return FALSE;
}
- if (eventTyp != 0)
- {
- wxCommandEvent event(eventTyp, m_windowId);
- wxString val(GetValue());
- if ( !val.IsNull() )
- event.m_commandString = WXSTRINGCAST val;
- event.SetEventObject( this );
- ProcessCommand(event);
- return TRUE;
- }
- else
- return FALSE;
+ // processed
+ return TRUE;
}