]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/window.h
fixed #if !NOPCH to be #if !defined(NOPCH)
[wxWidgets.git] / include / wx / window.h
index c6d4e51be546f5c50e4be16398081d03c6abd89a..94ea50624ae33e06054e508e25d443e74e32b6f8 100644 (file)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Name:        window.h
-// Purpose:     wxWindowBase class - the interface of wxWindowBase
+// Purpose:     wxWindowBase class - the interface of wxWindow
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     01/02/97
 #ifndef _WX_WINDOW_H_BASE_
 #define _WX_WINDOW_H_BASE_
 
+#ifdef __GNUG__
+    #pragma interface "windowbase.h"
+#endif
+
 // ----------------------------------------------------------------------------
 // headers which we must include here
 // ----------------------------------------------------------------------------
 // forward declarations
 // ----------------------------------------------------------------------------
 
+class WXDLLEXPORT wxCaret;
 class WXDLLEXPORT wxClientData;
 class WXDLLEXPORT wxControl;
 class WXDLLEXPORT wxCursor;
-class WXDLLEXPORT wxDc;
+class WXDLLEXPORT wxDC;
 class WXDLLEXPORT wxDropTarget;
 class WXDLLEXPORT wxItemResource;
 class WXDLLEXPORT wxLayoutConstraints;
@@ -152,7 +157,8 @@ public:
 
         // label is just the same as the title (but for, e.g., buttons it
         // makes more sense to speak about labels)
-    wxString GetLabel() const { return GetTitle(); }
+    virtual void SetLabel(const wxString& label) { SetTitle(label); }
+    virtual wxString GetLabel() const { return GetTitle(); }
 
         // the window name is used for ressource setting in X, it is not the
         // same as the window title/label
@@ -166,7 +172,13 @@ public:
 
         // generate a control id for the controls which were not given one by
         // user
-    static int NewControlId() { return ++ms_lastControlId; }
+    static int NewControlId() { return --ms_lastControlId; }
+        // get the id of the control following the one with the given
+        // (autogenerated) id
+    static int NextControlId(int id) { return id - 1; }
+        // get the id of the control preceding the one with the given
+        // (autogenerated) id
+    static int PrevControlId(int id) { return id + 1; }
 
     // moving/resizing
     // ---------------
@@ -424,7 +436,7 @@ public:
     virtual void Clear() = 0;
 
         // adjust DC for drawing on this window
-    virtual void PrepareDC( wxDC &dc ) { }
+    virtual void PrepareDC( wxDC & WXUNUSED(dc) ) { }
 
         // the update region of the window contains the areas which must be
         // repainted by the program
@@ -464,6 +476,13 @@ public:
     const wxFont& GetFont() const { return m_font; }
     wxFont& GetFont() { return m_font; }
 
+#if wxUSE_CARET
+        // associate a caret with the window
+    void SetCaret(wxCaret *caret);
+        // get the current caret (may be NULL)
+    wxCaret *GetCaret() const { return m_caret; }
+#endif // wxUSE_CARET
+
         // get the (average) character size for the current font
     virtual int GetCharHeight() const = 0;
     virtual int GetCharWidth() const = 0;
@@ -478,8 +497,25 @@ public:
                                const = 0;
 
         // translate to/from screen/client coordinates (pointers may be NULL)
-    virtual void ClientToScreen( int *x, int *y ) const = 0;
-    virtual void ScreenToClient( int *x, int *y ) const = 0;
+    void ClientToScreen( int *x, int *y ) const
+        { DoClientToScreen(x, y); }
+    void ScreenToClient( int *x, int *y ) const
+        { DoScreenToClient(x, y); }
+    wxPoint ClientToScreen(const wxPoint& pt) const
+    {
+        int x = pt.x, y = pt.y;
+        DoClientToScreen(&x, &y);
+
+        return wxPoint(x, y);
+    }
+
+    wxPoint ScreenToClient(const wxPoint& pt) const
+    {
+        int x = pt.x, y = pt.y;
+        DoScreenToClient(&x, &y);
+
+        return wxPoint(x, y);
+    }
 
     // misc
     // ----
@@ -595,24 +631,14 @@ public:
     void OnSysColourChanged( wxSysColourChangedEvent& event );
     void OnInitDialog( wxInitDialogEvent &event );
 
-/*
-   What is this doing in the platform independent part?
-
-        // accessors
-    WXWidget GetHandle() const { return m_widget; }
-
-    // the window handle (for the underlying windowing system) and the window
-    // id - a number which uniquely identifies a window among its siblings
-    // unless it is -1
-    union
-    {
-        // we have 2 common names for this member, one for MSW and the other
-        // for the rest of the world
-        WXWidget m_widget;
-        WXWidget m_hWnd;
-    };
-*/
+        // get the haqndle of the window for the underlying window system: this
+        // is only used for wxWin itself or for user code which wants to call
+        // platform-specific APIs
+    virtual WXWidget GetHandle() const = 0;
 
+protected:
+    // the window id - a number which uniquely identifies a window among
+    // its siblings unless it is -1
     wxWindowID           m_windowId;
 
     // the parent window of this window (or NULL) and the list of the children
@@ -640,6 +666,10 @@ public:
     wxFont               m_font;
     wxColour             m_backgroundColour, m_foregroundColour;
 
+#if wxUSE_CARET
+    wxCaret             *m_caret;
+#endif // wxUSE_CARET
+
     // the region which should be repainted in response to paint event
     wxRegion             m_updateRegion;
 
@@ -706,6 +736,10 @@ protected:
     //     overloaded Something()s in terms of DoSomething() which will be the
     //     only one to be virtual.
 
+    // coordinates translation
+    virtual void DoClientToScreen( int *x, int *y ) const = 0;
+    virtual void DoScreenToClient( int *x, int *y ) const = 0;
+
     // retrieve the position/size of the window
     virtual void DoGetPosition( int *x, int *y ) const = 0;
     virtual void DoGetSize( int *width, int *height ) const = 0;
@@ -729,6 +763,7 @@ private:
     // contains the last id generated by NewControlId
     static int ms_lastControlId;
 
+    DECLARE_NO_COPY_CLASS(wxWindowBase);
     DECLARE_EVENT_TABLE()
 };
 
@@ -753,7 +788,7 @@ private:
 // forward dependencies
 // ----------------------------------------------------------------------------
 
-wxWindow *wxWindowBase::GetGrandParent() const
+inline wxWindow *wxWindowBase::GetGrandParent() const
 {
     return m_parent ? m_parent->GetParent() : (wxWindow *)NULL;
 }
@@ -762,8 +797,8 @@ wxWindow *wxWindowBase::GetGrandParent() const
 // global function
 // ----------------------------------------------------------------------------
 
-extern wxWindow* WXDLLEXPORT wxGetActiveWindow();
-inline int WXDLLEXPORT NewControlId() { return wxWindowBase::NewControlId(); }
+WXDLLEXPORT extern wxWindow* wxGetActiveWindow();
+inline WXDLLEXPORT int NewControlId() { return wxWindowBase::NewControlId(); }
 
 #endif
     // _WX_WINDOW_H_BASE_