X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/668e4f17be1fdeab2d08fc6d472d585447894aa7..34bbbc276dc470014c8d200cfbbf7f588076aeaf:/samples/richedit/wxlwindow.h?ds=sidebyside diff --git a/samples/richedit/wxlwindow.h b/samples/richedit/wxlwindow.h index 7ed9994c80..8958e62fab 100644 --- a/samples/richedit/wxlwindow.h +++ b/samples/richedit/wxlwindow.h @@ -1,7 +1,7 @@ /*-*- c++ -*-******************************************************** * wxLwindow.h : a scrolled Window for displaying/entering rich text* * * - * (C) 1998,1999 by Karsten Ballüder (Ballueder@usa.net) * + * (C) 1998-2000 by Karsten Ballüder (ballueder@gmx.net) * * * * $Id$ *******************************************************************/ @@ -23,8 +23,6 @@ #endif -#define wxUSE_PRIVATE_CLIPBOARD_FORMAT 0 - enum { WXLOWIN_MENU_LARGER = WXLOWIN_MENU_FIRST, @@ -39,6 +37,7 @@ enum WXLOWIN_MENU_DBLCLICK, WXLOWIN_MENU_MDOWN, WXLOWIN_MENU_LDOWN, + WXLOWIN_MENU_LCLICK = WXLOWIN_MENU_LDOWN, WXLOWIN_MENU_LUP, WXLOWIN_MENU_MOUSEMOVE, WXLOWIN_MENU_LAST = WXLOWIN_MENU_MOUSEMOVE @@ -82,7 +81,8 @@ public: m_BGbitmap = bitmap; } /// Enable or disable editing, i.e. processing of keystrokes. - void SetEditable(bool toggle) { m_Editable = toggle; } + void SetEditable(bool toggle) + { m_Editable = toggle; SetCursorVisibility(toggle); } /// Query whether list can be edited by user. bool IsEditable(void) const { return m_Editable; } /** Sets cursor visibility, visible=1, invisible=0, @@ -95,17 +95,21 @@ public: m_CursorVisibility = visibility; return v;} /// Pastes text from clipboard. - void Paste(bool usePrimarySelection = FALSE); + void Paste(bool privateFormat = FALSE, bool usePrimarySelection = FALSE); /** Copies selection to clipboard. @param invalidate used internally, see wxllist.h for details */ - bool Copy(bool invalidate = true); + bool Copy(bool invalidate = true, bool privateFormat = FALSE, bool primary = FALSE); /// Copies selection to clipboard and deletes it. - bool Cut(void); + bool Cut(bool privateFormat = FALSE, bool usePrimary = FALSE); //@} + /// find string in buffer bool Find(const wxString &needle, - wxPoint * fromWhere = NULL); + wxPoint * fromWhere = NULL, + const wxString &configPath = "MsgViewFindString"); + /// find the same string again + bool FindAgain(void); void EnablePopup(bool enable = true) { m_DoPopupMenu = enable; } @@ -114,11 +118,16 @@ public: */ void SetWrapMargin(CoordType margin) { m_WrapMargin = margin; } + /** Toggle wordwrap as we type. + @param on true to activate word wrap + */ + void SetWordWrap(bool on = true) { m_DoWordWrap = on; } + /** Redraws the window. Internally, this stores the parameter and calls a refresh on wxMSW, draws directly on wxGTK. */ - void DoPaint(const wxRect *updateRect = NULL); + void RequestUpdate(const wxRect *updateRect = NULL); /// if exact == false, assume 50% extra size for the future void ResizeScrollbars(bool exact = false); // don't change this to true! @@ -153,22 +162,9 @@ public: /// Creates a wxMenu for use as a format popup. static wxMenu * MakeFormatMenu(void); - /**@name Dirty flag handling for optimisations. */ - //@{ - /// Set dirty flag. - void SetDirty(void) { m_Dirty = true; } - /// Query whether window needs redrawing. - bool IsDirty(void) const { return m_Dirty; } - /// Reset dirty flag. - void ResetDirty(void) { m_Dirty = false; } - //@} - /// Redraws the window, used by DoPaint() or OnPaint(). + /// Redraws the window, used by RequestUpdate() or OnPaint(). void InternalPaint(const wxRect *updateRect); - /// Has list been modified/edited? - bool IsModified(void) const { return m_Modified; } - /// Mark list as modified or unchanged. - void SetModified(bool modified = true) { m_Modified = modified; } /** Tell window to update a wxStatusBar with UserData labels and cursor positions. @param bar wxStatusBar pointer @@ -182,7 +178,36 @@ public: m_StatusBar = bar; m_StatusFieldLabel = labelfield; m_StatusFieldCursor = cursorfield; } +#ifndef __WXMSW__ + /// Enable or disable focus follow mode under non-MSW + void SetFocusFollowMode(bool enable = TRUE) + { m_FocusFollowMode = enable; } +#endif + + /**@name Modified flag handling, will not get reset by list unless + in Clear() */ + //@{ + /// Set dirty flag. + void SetModified(bool modified = TRUE) { m_Modified = modified; } + /// Query whether window needs redrawing. + bool IsModified(void) const { return m_Modified; } + //@} + + /**@name Dirty flag handling for optimisations. + Normally one should only need to call SetDirty(), e.g. when + manipulating the wxLayoutList directly, so the window will update + itself. ResetDirty() and IsDirty() should only be used + internally. */ + //@{ + /// Set dirty flag. + void SetDirty(void) { m_Dirty = true; m_Modified = true; } + /// Query whether window needs redrawing. + bool IsDirty(void) const { return m_Dirty; } + /// Reset dirty flag. + void ResetDirty(void) { m_Dirty = false; } + //@} + protected: /// generic function for mouse events processing void OnMouse(int eventId, wxMouseEvent& event); @@ -210,6 +235,10 @@ protected: int m_maxx; int m_maxy; int m_lineHeight; + /// do we want automatic word wrap? + bool m_DoWordWrap; + /// wrap margin + CoordType m_WrapMargin; /// do we have the corresponding scrollbar? bool m_hasHScrollbar, @@ -219,6 +248,13 @@ protected: on demand. */ int m_CursorVisibility; + + bool SetAutoDeleteSelection(bool enable = TRUE) + { + bool old = m_AutoDeleteSelection; + m_AutoDeleteSelection = enable; + return old; + } private: /// The layout list to be displayed. wxLayoutList *m_llist; @@ -226,12 +262,10 @@ private: bool m_Editable; /// Are we currently building a selection with the keyboard? bool m_Selecting; - /// wrap margin - CoordType m_WrapMargin; - /// Is list dirty (for redraws, internal use)? - bool m_Dirty; - /// Has list been edited? - bool m_Modified; + /// Has list changed since last redraw, e.g. in size? + bool m_Dirty; + /// Has the list ever been modified? + bool m_Modified; wxMemoryDC *m_memDC; wxBitmap *m_bitmap; wxPoint m_bitmapSize; @@ -243,6 +277,17 @@ private: int m_StatusFieldCursor; /// a pointer to a bitmap for the background wxBitmap *m_BGbitmap; + /**@name Some configuration options */ + //@{ + /// Do we want to auto-replace the selection with new text? + bool m_AutoDeleteSelection; +#ifndef __WXMSW__ + /// Do we want the focus to follow the mouse? + bool m_FocusFollowMode; +#endif + /// For finding text and finding it again: + wxString m_FindString; +//@} DECLARE_EVENT_TABLE() };