#include "wx/region.h"
#include "wx/utils.h"
-#if wxUSE_VALIDATORS
- #include "wx/validate.h" // defines wxDefaultValidator
-#endif // wxUSE_VALIDATORS
+#include "wx/validate.h" // for wxDefaultValidator (always include it)
#if wxUSE_ACCEL
#include "wx/accel.h"
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
-#if wxUSE_VALIDATORS
const wxValidator& validator = wxDefaultValidator,
-#endif // wxUSE_VALIDATORS
const wxString& name = wxPanelNameStr);
virtual ~wxWindowBase();
return wxSize(w, h);
}
+ // get the size best suited for the window (in fact, minimal
+ // acceptable size using which it will still look "nice")
+ wxSize GetBestSize() const { return DoGetBestSize(); }
+ void GetBestSize(int *w, int *h) const
+ {
+ wxSize s = DoGetBestSize();
+ if ( w )
+ *w = s.x;
+ if ( h )
+ *h = s.y;
+ }
+
// centre with respect to the the parent window
void Centre( int direction = wxBOTH );
void Center( int direction = wxBOTH ) { Centre(direction); }
int maxW = -1, int maxH = -1,
int incW = -1, int incH = -1 );
+ int GetMinWidth() const { return m_minWidth; }
+ int GetMinHeight() const { return m_minHeight; }
+ int GetMaxWidth() const { return m_maxWidth; }
+ int GetMaxHeight() const { return m_maxHeight; }
+
// window state
// ------------
long GetWindowStyle() const { return GetWindowStyleFlag(); }
bool HasFlag(int flag) const { return (m_windowStyle & flag) != 0; }
+ virtual bool IsRetained() const { return HasFlag(wxRETAINED); }
- virtual bool IsRetained() const
- { return (m_windowStyle & wxRETAINED) != 0; }
+ // extra style: the less often used style bits which can't be set with
+ // SetWindowStyleFlag()
+ void SetExtraStyle(long exStyle) { m_exStyle = exStyle; }
+ long GetExtraStyle() const { return m_exStyle; }
// make the window modal (all other windows unresponsive)
virtual void MakeModal(bool modal = TRUE);
inline wxWindow *GetGrandParent() const;
// is this window a top level one?
- bool IsTopLevel() const;
+ virtual bool IsTopLevel() const;
// it doesn't really change parent, use ReParent() instead
void SetParent( wxWindowBase *parent ) { m_parent = (wxWindow *)parent; }
virtual void SetConstraintSizes(bool recurse = TRUE);
virtual bool LayoutPhase1(int *noChanges);
virtual bool LayoutPhase2(int *noChanges);
- virtual bool DoPhase(int);
+ virtual bool DoPhase(int phase);
// these methods are virtual but normally won't be overridden
virtual void SetSizeConstraint(int x, int y, int w, int h);
// event handlers
void OnSysColourChanged( wxSysColourChangedEvent& event );
void OnInitDialog( wxInitDialogEvent &event );
+ void OnMiddleClick( wxMouseEvent& event );
// 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
bool m_isBeingDeleted:1;
// window attributes
- long m_windowStyle;
+ long m_windowStyle,
+ m_exStyle;
wxString m_windowName;
protected:
static int WidthDefault(int w) { return w == -1 ? 20 : w; }
static int HeightDefault(int h) { return h == -1 ? 20 : h; }
+ // sets the size to be size but take width and/or height from
+ // DoGetBestSize() if width/height of size is -1
+ //
+ // NB: when calling this function from the ctor, the DoGetBestSize() of
+ // the class with the same name as the ctor, not the real (most
+ // derived) one - but this is what we usually want
+ void SetSizeOrDefault(const wxSize& size = wxDefaultSize)
+ {
+ if ( size.x == -1 || size.y == -1 )
+ {
+ wxSize sizeDef = GetBestSize();
+ SetSize( size.x == -1 ? sizeDef.x : size.x,
+ size.y == -1 ? sizeDef.y : size.y);
+ }
+ else
+ {
+ SetSize(size);
+ }
+ }
+
// more pure virtual functions
// ---------------------------
virtual void DoGetSize( int *width, int *height ) const = 0;
virtual void DoGetClientSize( int *width, int *height ) const = 0;
+ // get the size which best suits the window: for a control, it would be
+ // the minimal size which doesn't truncate the control, for a panel - the
+ // same size as it would have after a call to Fit()
+ virtual wxSize DoGetBestSize() const;
+
// this is the virtual function to be overriden in any derived class which
// wants to change how SetSize() or Move() works - it is called by all
// versions of these functions in the base class
// same as DoSetSize() for the client size
virtual void DoSetClientSize(int width, int height) = 0;
+ // move the window to the specified location and resize it: this is called
+ // from both DoSetSize() and DoSetClientSize() and would usually just
+ // reposition this window except for composite controls which will want to
+ // arrange themselves inside the given rectangle
+ virtual void DoMoveWindow(int x, int y, int width, int height) = 0;
+
#if wxUSE_TOOLTIPS
virtual void DoSetToolTip( wxToolTip *tip );
#endif // wxUSE_TOOLTIPS
// ----------------------------------------------------------------------------
WXDLLEXPORT extern wxWindow* wxGetActiveWindow();
+
+// deprecated (doesn't start with 'wx' prefix), use wxWindow::NewControlId()
inline WXDLLEXPORT int NewControlId() { return wxWindowBase::NewControlId(); }
#endif