/*-*- 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$
*******************************************************************/
#endif
-#define wxUSE_PRIVATE_CLIPBOARD_FORMAT 0
-
enum
{
WXLOWIN_MENU_LARGER = WXLOWIN_MENU_FIRST,
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; }
*/
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!
/// 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
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);
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,
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;
//@{
/// 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()
};