]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/richedit/wxlwindow.h
Fix for VA 4.0
[wxWidgets.git] / samples / richedit / wxlwindow.h
index c936477bfee8ca56f3a9e9139c514638fd0f8832..fa0ba4b2911404e63aabe7969503a9b327a9cbf0 100644 (file)
@@ -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-1999 by Karsten Ballüder (karsten@phy.hw.ac.uk)         *
  *                                                                  *
  * $Id$
  *******************************************************************/
@@ -23,8 +23,6 @@
 #endif
 
 
-#define wxUSE_PRIVATE_CLIPBOARD_FORMAT 1
-
 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; }
 
@@ -118,7 +122,7 @@ public:
        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 +157,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 +173,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);
@@ -219,6 +239,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;
@@ -228,10 +255,10 @@ private:
    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 +270,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()
 };