]> git.saurik.com Git - wxWidgets.git/blobdiff - user/wxLayout/wxlwindow.h
allow 8bit chars in the group names in wxFileConfig
[wxWidgets.git] / user / wxLayout / wxlwindow.h
index cf656ce45c3e5a983e27bfd2e589f71aeb6dc4cd..c1cd8aef6be70de4914cd0f7c9e4dacbdaeb849c 100644 (file)
 #   pragma interface "wxlwindow.h"
 #endif
 
-#include   <wx/wx.h>
+#ifndef USE_PCH
+#  include   <wx/wx.h>
+#endif
 
 #include   "wxllist.h"
 
-#ifdef   BROKEN_COMPILER
-#   define   virtual
-#endif
+enum
+{
+   WXLOWIN_MENU_LARGER = 12000,
+   WXLOWIN_MENU_SMALLER,
+   WXLOWIN_MENU_UNDERLINE,
+   WXLOWIN_MENU_BOLD,
+   WXLOWIN_MENU_ITALICS,
+   WXLOWIN_MENU_ROMAN,
+   WXLOWIN_MENU_TYPEWRITER,
+   WXLOWIN_MENU_SANSSERIF,
+   WXLOWIN_MENU_RCLICK,
+   WXLOWIN_MENU_LCLICK,
+   WXLOWIN_MENU_DBLCLICK
+   
+};
 
 class wxLayoutWindow : public wxScrolledWindow
 {
 public:
+   /** Constructor.
+       @param parent parent window to display this panel in
+   */
    wxLayoutWindow(wxWindow *parent);
 
+   /* Returns a reference to the wxLayoutList object.
+      @return the list
+   */
    wxLayoutList & GetLayoutList(void) { return m_llist; }
 
    // clears the window and sets default parameters:
@@ -34,37 +54,73 @@ public:
       {
          GetLayoutList().Clear(family,size,style,weight,underline,fg,bg);
          SetBackgroundColour( *GetLayoutList().GetDefaults()->GetBGColour());
+
+         m_bDirty = FALSE;
       }
 
-   //virtual void OnDraw(wxDC &dc);
-   void OnPaint(wxPaintEvent &WXUNUSED(event));
-   virtual void OnMouse(wxMouseEvent& event);
-   virtual void OnChar(wxKeyEvent& event);
+   // callbacks
+   // NB: these functions are used as event handlers and must not be virtual
+   void OnPaint(wxPaintEvent &event);
+   
+   void OnLeftMouseClick(wxMouseEvent& event)
+      { OnMouse(WXLOWIN_MENU_LCLICK, event); }
+   void OnRightMouseClick(wxMouseEvent& event)
+      { OnMouse(WXLOWIN_MENU_RCLICK, event); }
+   void OnMouseDblClick(wxMouseEvent& event)
+      { OnMouse(WXLOWIN_MENU_DBLCLICK, event); }
+
+   void OnChar(wxKeyEvent& event);
+   void OnMenu(wxCommandEvent& event);
+
+   void EnablePopup(bool enable = true) { m_DoPopupMenu = enable; }
+   /// gets called by either Update() or OnPaint()
+   void DoPaint(wxDC &dc);
+
+#ifdef __WXMSW__
+   virtual long MSWGetDlgCode();
+#endif //MSW
+
    void UpdateScrollbars(void);
    void Print(void);
-   void Erase(void)
-      { m_llist.Clear(); Clear(); }
-   void SetEventId(int id) { m_EventId = id; }
-   wxPoint const &GetClickPosition(void) const { return
-                                                    m_ClickPosition; }
-   virtual ~wxLayoutWindow() {} ;
-private:
+   wxMenu * wxLayoutWindow::MakeFormatMenu(void);
+
+   /// if the flag is true, we send events when user clicks on embedded objects
+   inline void SetMouseTracking(bool doIt = true) { m_doSendEvents = doIt; }
+
+   virtual ~wxLayoutWindow() { if(m_PopupMenu) delete m_PopupMenu; }
+
+   // dirty flag access
+   bool IsDirty() const { return m_llist.IsDirty(); }
+   void ResetDirty()    { m_llist.ResetDirty();     }
+
+protected:
+   /// generic function for mouse events processing
+   void OnMouse(int eventId, wxMouseEvent& event);
+
+   /// repaint if needed
+   void Update(void);
+
    /// for sending events
    wxWindow *m_Parent;
-   int m_EventId;
+   bool m_doSendEvents;
+
    /// the layout list to be displayed
    wxLayoutList m_llist;
+
    /// have we already set the scrollbars?
    bool m_ScrollbarsSet;
-   /// if we want to find an object:
-   wxPoint m_FindPos;
-   wxLayoutObjectBase *m_FoundObject;
-   wxPoint m_ClickPosition;
+   /// Where does the current view start?
+   int m_ViewStartX; int m_ViewStartY;
+   
+   /// do we have unsaved data?
+   bool m_bDirty;
+
+   /// do we handle clicks of the right mouse button?
+   bool m_DoPopupMenu;
+   /// the menu
+   wxMenu * m_PopupMenu;
+private:
    DECLARE_EVENT_TABLE()
 };
 
-#ifdef   BROKEN_COMPILER
-#undef   virtual
-#endif
-
 #endif