| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: wx/gtk/textctrl.h
- // Purpose:
- // Author: Robert Roebling
- // Created: 01/02/97
- // Copyright: (c) 1998 Robert Roebling
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- #ifndef _WX_GTK_TEXTCTRL_H_
- #define _WX_GTK_TEXTCTRL_H_
- typedef struct _GtkTextMark GtkTextMark;
- //-----------------------------------------------------------------------------
- // wxTextCtrl
- //-----------------------------------------------------------------------------
- class WXDLLIMPEXP_CORE wxTextCtrl: public wxTextCtrlBase
- {
- public:
- wxTextCtrl() { Init(); }
- 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);
- virtual ~wxTextCtrl();
- 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);
- // implement base class pure virtuals
- // ----------------------------------
- virtual void WriteText(const wxString& text);
- virtual wxString GetValue() const;
- virtual bool IsEmpty() const;
- virtual int GetLineLength(long lineNo) const;
- virtual wxString GetLineText(long lineNo) const;
- virtual int GetNumberOfLines() const;
- virtual bool IsModified() const;
- virtual bool IsEditable() const;
- virtual void GetSelection(long* from, long* to) const;
- virtual void Remove(long from, long to);
- virtual void MarkDirty();
- virtual void DiscardEdits();
- virtual bool SetStyle(long start, long end, const wxTextAttr& style);
- virtual bool GetStyle(long position, wxTextAttr& style);
- // translate between the position (which is just an index in the text ctrl
- // considering all its contents as a single strings) and (x, y) coordinates
- // which represent column and line.
- virtual long XYToPosition(long x, long y) const;
- virtual bool PositionToXY(long pos, long *x, long *y) const;
- virtual void ShowPosition(long pos);
- virtual wxTextCtrlHitTestResult HitTest(const wxPoint& pt, long *pos) const;
- virtual wxTextCtrlHitTestResult HitTest(const wxPoint& pt,
- wxTextCoord *col,
- wxTextCoord *row) const
- {
- return wxTextCtrlBase::HitTest(pt, col, row);
- }
- // Clipboard operations
- virtual void Copy();
- virtual void Cut();
- virtual void Paste();
- // Insertion point
- virtual void SetInsertionPoint(long pos);
- virtual long GetInsertionPoint() const;
- virtual wxTextPos GetLastPosition() const;
- virtual void SetSelection(long from, long to);
- virtual void SetEditable(bool editable);
- // Overridden wxWindow methods
- virtual void SetWindowStyleFlag( long style );
- virtual bool Enable( bool enable = true );
- // Implementation from now on
- void OnDropFiles( wxDropFilesEvent &event );
- void OnChar( wxKeyEvent &event );
- void OnCut(wxCommandEvent& event);
- void OnCopy(wxCommandEvent& event);
- void OnPaste(wxCommandEvent& event);
- void OnUndo(wxCommandEvent& event);
- void OnRedo(wxCommandEvent& event);
- void OnUpdateCut(wxUpdateUIEvent& event);
- void OnUpdateCopy(wxUpdateUIEvent& event);
- void OnUpdatePaste(wxUpdateUIEvent& event);
- void OnUpdateUndo(wxUpdateUIEvent& event);
- void OnUpdateRedo(wxUpdateUIEvent& event);
- bool SetFont(const wxFont& font);
- bool SetForegroundColour(const wxColour& colour);
- bool SetBackgroundColour(const wxColour& colour);
- GtkWidget* GetConnectWidget();
- void SetUpdateFont(bool WXUNUSED(update)) { }
- // implementation only from now on
- // tell the control to ignore next text changed signal
- void IgnoreNextTextUpdate(int n = 1) { m_countUpdatesToIgnore = n; }
- // should we ignore the changed signal? always resets the flag
- bool IgnoreTextUpdate();
- // call this to indicate that the control is about to be changed
- // programmatically and so m_modified flag shouldn't be set
- void DontMarkDirtyOnNextChange() { m_dontMarkDirty = true; }
- // should we mark the control as dirty? always resets the flag
- bool MarkDirtyOnChange();
- // always let GTK have mouse release events for multiline controls
- virtual bool GTKProcessEvent(wxEvent& event) const;
- static wxVisualAttributes
- GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
- protected:
- // overridden wxWindow virtual methods
- virtual wxSize DoGetBestSize() const;
- virtual void DoApplyWidgetStyle(GtkRcStyle *style);
- virtual GdkWindow *GTKGetWindow(wxArrayGdkWindows& windows) const;
- virtual wxSize DoGetSizeFromTextSize(int xlen, int ylen = -1) const;
- virtual void DoFreeze();
- virtual void DoThaw();
- // Widgets that use the style->base colour for the BG colour should
- // override this and return true.
- virtual bool UseGTKStyleBase() const { return true; }
- virtual void DoSetValue(const wxString &value, int flags = 0);
- // Override this to use either GtkEntry or GtkTextView IME depending on the
- // kind of control we are.
- virtual int GTKIMFilterKeypress(GdkEventKey* event) const;
- virtual wxPoint DoPositionToCoords(long pos) const;
- // wrappers hiding the differences between functions doing the same thing
- // for GtkTextView and GtkEntry (all of them use current window style to
- // set the given characteristic)
- void GTKSetEditable();
- void GTKSetVisibility();
- void GTKSetActivatesDefault();
- void GTKSetWrapMode();
- void GTKSetJustification();
- private:
- void Init();
- // overridden wxTextEntry virtual methods
- virtual GtkEditable *GetEditable() const;
- virtual GtkEntry *GetEntry() const;
- virtual void EnableTextChangedEvents(bool enable);
- // change the font for everything in this control
- void ChangeFontGlobally();
- // get the encoding which is used in this control: this looks at our font
- // and default style but not the current style (i.e. the style for the
- // current position); returns wxFONTENCODING_SYSTEM if we have no specific
- // encoding
- wxFontEncoding GetTextEncoding() const;
- // returns either m_text or m_buffer depending on whether the control is
- // single- or multi-line; convenient for the GTK+ functions which work with
- // both
- void *GetTextObject() const
- {
- return IsMultiLine() ? static_cast<void *>(m_buffer)
- : static_cast<void *>(m_text);
- }
- // the widget used for single line controls
- GtkWidget *m_text;
- bool m_modified:1;
- bool m_dontMarkDirty:1;
- int m_countUpdatesToIgnore;
- // Our text buffer. Convenient, and holds the buffer while using
- // a dummy one when frozen
- GtkTextBuffer *m_buffer;
- GtkTextMark* m_showPositionOnThaw;
- GSList* m_anonymousMarkList;
- // For wxTE_AUTO_URL
- void OnUrlMouseEvent(wxMouseEvent&);
- DECLARE_EVENT_TABLE()
- DECLARE_DYNAMIC_CLASS(wxTextCtrl)
- };
- #endif // _WX_GTK_TEXTCTRL_H_
|