]> git.saurik.com Git - wxWidgets.git/commitdiff
replaced by stubs files
authorKarsten Ballüder <ballueder@usa.net>
Wed, 12 Aug 1998 09:16:21 +0000 (09:16 +0000)
committerKarsten Ballüder <ballueder@usa.net>
Wed, 12 Aug 1998 09:16:21 +0000 (09:16 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@509 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

85 files changed:
include/wx/qt/app.h
include/wx/qt/bitmap.h
include/wx/qt/bmpbuttn.h
include/wx/qt/brush.h
include/wx/qt/button.h
include/wx/qt/checkbox.h
include/wx/qt/choice.h
include/wx/qt/colour.h
include/wx/qt/combobox.h
include/wx/qt/control.h
include/wx/qt/cursor.h
include/wx/qt/dc.h
include/wx/qt/dcclient.h
include/wx/qt/dcmemory.h
include/wx/qt/dcscreen.h
include/wx/qt/dialog.h
include/wx/qt/dirdlg.h
include/wx/qt/filedlg.h
include/wx/qt/font.h
include/wx/qt/frame.h
include/wx/qt/gauge.h
include/wx/qt/gdiobj.h
include/wx/qt/icon.h
include/wx/qt/joystick.h
include/wx/qt/listbox.h
include/wx/qt/mdi.h
include/wx/qt/menu.h
include/wx/qt/notebook.h
include/wx/qt/palette.h
include/wx/qt/pen.h
include/wx/qt/radiobox.h
include/wx/qt/radiobut.h
include/wx/qt/region.h
include/wx/qt/scrolbar.h
include/wx/qt/settings.h
include/wx/qt/slider.h
include/wx/qt/statbmp.h
include/wx/qt/statbox.h
include/wx/qt/stattext.h
include/wx/qt/textctrl.h
include/wx/qt/timer.h
include/wx/qt/window.h
src/qt/app.cpp
src/qt/bitmap.cpp
src/qt/bmpbuttn.cpp
src/qt/brush.cpp
src/qt/button.cpp
src/qt/checkbox.cpp
src/qt/choice.cpp
src/qt/colour.cpp
src/qt/combobox.cpp
src/qt/control.cpp
src/qt/cursor.cpp
src/qt/data.cpp
src/qt/dc.cpp
src/qt/dcclient.cpp
src/qt/dcmemory.cpp
src/qt/dcscreen.cpp
src/qt/dialog.cpp
src/qt/dnd.cpp
src/qt/filedlg.cpp
src/qt/font.cpp
src/qt/frame.cpp
src/qt/gauge.cpp
src/qt/gdiobj.cpp
src/qt/icon.cpp
src/qt/joystick.cpp
src/qt/listbox.cpp
src/qt/mdi.cpp
src/qt/menu.cpp
src/qt/notebook.cpp
src/qt/palette.cpp
src/qt/pen.cpp
src/qt/radiobox.cpp
src/qt/radiobut.cpp
src/qt/region.cpp
src/qt/scrolbar.cpp
src/qt/settings.cpp
src/qt/slider.cpp
src/qt/statbmp.cpp
src/qt/statbox.cpp
src/qt/stattext.cpp
src/qt/textctrl.cpp
src/qt/timer.cpp
src/qt/window.cpp

index e8a7b10a243a12605eccb9e0a6770e2158657403..cb50ba9c9e5318745cbcf0a72ff4df8bcf259ea4 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        app.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
-// Licence:    wxWindows licence
+// Purpose:     wxApp class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifndef __GTKAPPH__
-#define __GTKAPPH__
+#ifndef _WX_APP_H_
+#define _WX_APP_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "app.h"
 #endif
 
-#include "wx/window.h"
-#include "wx/frame.h"
+#include "wx/defs.h"
+#include "wx/object.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+class WXDLLEXPORT wxFrame;
+class WXDLLEXPORT wxWindow;
+class WXDLLEXPORT wxApp ;
+class WXDLLEXPORT wxKeyEvent;
+class WXDLLEXPORT wxLog;
 
-class wxApp;
-class wxLog;
-class wxConfig; // it's not used #if !USE_WXCONFIG, but fwd decl doesn't harm
+#define wxPRINT_WINDOWS         1
+#define wxPRINT_POSTSCRIPT      2
 
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
+WXDLLEXPORT_DATA(extern wxApp*) wxTheApp;
 
-extern wxApp *wxTheApp;
+void WXDLLEXPORT wxCleanUp();
+void WXDLLEXPORT wxCommonCleanUp(); // Call this from the platform's wxCleanUp()
+void WXDLLEXPORT wxCommonInit();    // Call this from the platform's initialization
 
-//-----------------------------------------------------------------------------
-// global functions
-//-----------------------------------------------------------------------------
+// Force an exit from main loop
+void WXDLLEXPORT wxExit();
 
-void wxExit(void);
-bool wxYield(void);
+// Yield to other apps/messages
+bool WXDLLEXPORT wxYield();
 
-//-----------------------------------------------------------------------------
-// constants
-//-----------------------------------------------------------------------------
+// Represents the application. Derive OnInit and declare
+// a new App object to start application
+class WXDLLEXPORT wxApp: public wxEvtHandler
+{
+  DECLARE_DYNAMIC_CLASS(wxApp)
+  wxApp();
+  inline ~wxApp() {}
 
-#define wxPRINT_WINDOWS         1
-#define wxPRINT_POSTSCRIPT      2
+  static void SetInitializerFunction(wxAppInitializerFunction fn) { m_appInitFn = fn; }
+  static wxAppInitializerFunction GetInitializerFunction() { return m_appInitFn; }
 
-//-----------------------------------------------------------------------------
-// wxApp
-//-----------------------------------------------------------------------------
+  virtual int MainLoop();
+  void ExitMainLoop();
+  bool Initialized();
+  virtual bool Pending() ;
+  virtual void Dispatch() ;
 
-class wxApp: public wxEvtHandler
-{
-  DECLARE_DYNAMIC_CLASS(wxApp)
+  virtual void OnIdle(wxIdleEvent& event);
 
-  public:
-  
-    wxApp(void);
-    ~wxApp(void);
-    
-    static void SetInitializerFunction(wxAppInitializerFunction fn) { m_appInitFn = fn; }
-    static wxAppInitializerFunction GetInitializerFunction(void) { return m_appInitFn; }
-    
-    virtual bool OnInit(void);
-    virtual bool OnInitGui(void);
-    virtual int OnRun(void);
-    virtual int OnExit(void);
-    
-    wxWindow *GetTopWindow(void);
-    void SetTopWindow( wxWindow *win );
-    virtual int MainLoop(void);
-    void ExitMainLoop(void);
-    bool Initialized(void);
-    virtual bool Pending(void);
-    virtual void Dispatch(void);
-
-    inline void SetWantDebugOutput(bool flag) { m_wantDebugOutput = flag; }
-    inline bool GetWantDebugOutput(void) { return m_wantDebugOutput; }
-
-    void OnIdle( wxIdleEvent &event );    
-    bool SendIdleEvents(void);
-    bool SendIdleEvents( wxWindow* win );
-        
-    inline wxString GetAppName(void) const {
+// Generic
+  virtual bool OnInit() { return FALSE; };
+
+  // No specific tasks to do here.
+  virtual bool OnInitGui() { return TRUE; }
+
+  // Called to set off the main loop
+  virtual int OnRun() { return MainLoop(); };
+  virtual int OnExit() { return 0; }
+
+  inline void SetPrintMode(int mode) { m_printMode = mode; }
+  inline int GetPrintMode() const { return m_printMode; }
+
+  inline void SetExitOnFrameDelete(bool flag) { m_exitOnFrameDelete = flag; }
+  inline bool GetExitOnFrameDelete() const { return m_exitOnFrameDelete; }
+
+  inline wxString GetAppName() const {
       if (m_appName != "")
         return m_appName;
       else return m_className;
     }
-    inline void SetAppName(const wxString& name) { m_appName = name; };
-    inline wxString GetClassName(void) const { return m_className; }
-    inline void SetClassName(const wxString& name) { m_className = name; }
-    const wxString& GetVendorName() const { return m_vendorName; }
-    void SetVendorName(const wxString& name) { m_vendorName = name; }
-
-    inline void SetExitOnFrameDelete(bool flag) { m_exitOnFrameDelete = flag; }
-    inline bool GetExitOnFrameDelete(void) const { return m_exitOnFrameDelete; }
-  
-    void SetPrintMode(int WXUNUSED(mode) ) {}; 
-    int GetPrintMode(void) const { return wxPRINT_POSTSCRIPT; };
-    
-    // override this function to create default log target of arbitrary
-    // user-defined classv (default implementation creates a wxLogGui object)
-    virtual wxLog *CreateLogTarget();
-    
-#if USE_WXCONFIG
-    // override this function to create a global wxConfig object of different
-    // than default type (right now the default implementation returns NULL)
-    virtual wxConfig *CreateConfig() { return NULL; }
-#endif
-    
-  // GTK implementation
-
-    static void CommonInit(void);
-    static void CommonCleanUp(void);    
-    
-    bool ProcessIdle(void);
-    void DeletePendingObjects(void);
-    
-    bool          m_initialized;
-    bool          m_exitOnFrameDelete;
-    bool          m_wantDebugOutput;
-    wxWindow     *m_topWindow;
-    
-    int         argc;
-    char      **argv;
-    
-    static wxAppInitializerFunction m_appInitFn;
-    
-private:
-  wxString m_vendorName,
-           m_appName,
-           m_className;
-
-  DECLARE_EVENT_TABLE()
+
+  inline void SetAppName(const wxString& name) { m_appName = name; };
+  inline wxString GetClassName() const { return m_className; }
+  inline void SetClassName(const wxString& name) { m_className = name; }
+
+  void SetVendorName(const wxString& vendorName) { m_vendorName = vendorName; }
+  const wxString& GetVendorName() const { return m_vendorName; }
+
+  wxWindow *GetTopWindow() const ;
+  inline void SetTopWindow(wxWindow *win) { m_topWindow = win; }
+
+  inline void SetWantDebugOutput(bool flag) { m_wantDebugOutput = flag; }
+  inline bool GetWantDebugOutput() { return m_wantDebugOutput; }
+
+  // Send idle event to all top-level windows.
+  // Returns TRUE if more idle time is requested.
+  bool SendIdleEvents();
+
+  // Send idle event to window and all subwindows
+  // Returns TRUE if more idle time is requested.
+  bool SendIdleEvents(wxWindow* win);
+
+  // Windows only, but for compatibility...
+  inline void SetAuto3D(bool flag) { m_auto3D = flag; }
+  inline bool GetAuto3D() const { return m_auto3D; }
+
+  // Creates a log object
+  virtual wxLog* CreateLogTarget();
+
+public:
+  // Will always be set to the appropriate, main-style values.
+  int                   argc;
+  char **               argv;
+
+protected:
+  bool                  m_wantDebugOutput ;
+  wxString              m_className;
+  wxString              m_appName,
+                        m_vendorName;
+  wxWindow *            m_topWindow;
+  bool                  m_exitOnFrameDelete;
+  bool                  m_showOnInit;
+  int                   m_printMode; // wxPRINT_WINDOWS, wxPRINT_POSTSCRIPT
+  bool                  m_auto3D ;   // Always use 3D controls, except
+                                 // where overriden
+  static wxAppInitializerFunction      m_appInitFn;
+
+public:
+
+  // Implementation
+  static void CommonInit();
+  static void CommonCleanUp();
+  void DeletePendingObjects();
+  bool ProcessIdle();
+
+public:
+  static long           sm_lastMessageTime;
+  int                   m_nCmdShow;
+
+protected:
+  bool                  m_keepGoing ;
+
+DECLARE_EVENT_TABLE()
 };
 
-#endif // __GTKAPPH__
+// TODO: add platform-specific arguments
+int WXDLLEXPORT wxEntry( int argc, char *argv[] );
+
+#endif
+    // _WX_APP_H_
+
index 63ea780ff5db9447fa80916b1921985a13d952ca..195944f835b4829a17176b61fd99d7b709803c3f 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        bitmap.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
+// Purpose:     wxBitmap class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
 // RCS-ID:      $Id$
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKBITMAPH__
-#define __GTKBITMAPH__
+#ifndef _WX_BITMAP_H_
+#define _WX_BITMAP_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "bitmap.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/string.h"
+#include "wx/gdiobj.h"
+#include "wx/gdicmn.h"
 #include "wx/palette.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+// Bitmap
+class WXDLLEXPORT wxDC;
+class WXDLLEXPORT wxControl;
+class WXDLLEXPORT wxBitmap;
+class WXDLLEXPORT wxBitmapHandler;
+class WXDLLEXPORT wxIcon;
+class WXDLLEXPORT wxCursor;
+
+// A mask is a mono bitmap used for drawing bitmaps
+// transparently.
+class WXDLLEXPORT wxMask: public wxObject
+{
+  DECLARE_DYNAMIC_CLASS(wxMask)
 
-class wxDC;
-class wxPaintDC;
-class wxMemoryDC;
-class wxToolBar;
-class wxBitmapButton;
-class wxStaticBitmap;
-class wxFrame;
+public:
+  wxMask();
 
-class wxMask;
-class wxBitmap;
+  // Construct a mask from a bitmap and a colour indicating
+  // the transparent area
+  wxMask(const wxBitmap& bitmap, const wxColour& colour);
 
-//-----------------------------------------------------------------------------
-// wxMask
-//-----------------------------------------------------------------------------
+  // Construct a mask from a bitmap and a palette index indicating
+  // the transparent area
+  wxMask(const wxBitmap& bitmap, int paletteIndex);
 
-class wxMask: public wxObject
-{
-  DECLARE_DYNAMIC_CLASS(wxMask)
+  // Construct a mask from a mono bitmap (copies the bitmap).
+  wxMask(const wxBitmap& bitmap);
 
-  public:
+  ~wxMask();
 
-    wxMask();
-    wxMask( const wxBitmap& bitmap, const wxColour& colour );
-    wxMask( const wxBitmap& bitmap, int paletteIndex );
-    wxMask( const wxBitmap& bitmap );
-    ~wxMask();
+  bool Create(const wxBitmap& bitmap, const wxColour& colour);
+  bool Create(const wxBitmap& bitmap, int paletteIndex);
+  bool Create(const wxBitmap& bitmap);
 
-  private:
+/* TODO: platform-specific data access
+  // Implementation
+  inline WXHBITMAP GetMaskBitmap() const { return m_maskBitmap; }
+  inline void SetMaskBitmap(WXHBITMAP bmp) { m_maskBitmap = bmp; }
+protected:
+  WXHBITMAP m_maskBitmap;
+*/
+};
 
-    friend wxBitmap;
-    friend wxDC;
-    friend wxPaintDC;
-    friend wxToolBar;
-    friend wxBitmapButton;
-    friend wxStaticBitmap;
-    friend wxFrame;
+class WXDLLEXPORT wxBitmapRefData: public wxGDIRefData
+{
+    friend class WXDLLEXPORT wxBitmap;
+    friend class WXDLLEXPORT wxIcon;
+    friend class WXDLLEXPORT wxCursor;
+public:
+    wxBitmapRefData();
+    ~wxBitmapRefData();
+
+public:
+  int           m_width;
+  int           m_height;
+  int           m_depth;
+  bool          m_ok;
+  int           m_numColors;
+  wxPalette     m_bitmapPalette;
+  int           m_quality;
+
+/*  WXHBITMAP     m_hBitmap; TODO: platform-specific handle */
+  wxMask *      m_bitmapMask; // Optional mask
+};
 
-  protected:
+#define M_BITMAPDATA ((wxBitmapRefData *)m_refData)
 
+class WXDLLEXPORT wxBitmapHandler: public wxObject
+{
+  DECLARE_DYNAMIC_CLASS(wxBitmapHandler)
+public:
+  wxBitmapHandler() { m_name = ""; m_extension = ""; m_type = 0; };
+
+  virtual bool Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth = 1);
+  virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
+      int desiredWidth, int desiredHeight);
+  virtual bool SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL);
+
+  inline void SetName(const wxString& name) { m_name = name; }
+  inline void SetExtension(const wxString& ext) { m_extension = ext; }
+  inline void SetType(long type) { m_type = type; }
+  inline wxString GetName() const { return m_name; }
+  inline wxString GetExtension() const { return m_extension; }
+  inline long GetType() const { return m_type; }
+protected:
+  wxString  m_name;
+  wxString  m_extension;
+  long      m_type;
 };
 
-//-----------------------------------------------------------------------------
-// wxBitmap
-//-----------------------------------------------------------------------------
+#define M_BITMAPHANDLERDATA ((wxBitmapRefData *)bitmap->GetRefData())
 
-// CMB 20/5/98: added xbm constructor and GetBitmap() method
-class wxBitmap: public wxObject
+class WXDLLEXPORT wxBitmap: public wxGDIObject
 {
   DECLARE_DYNAMIC_CLASS(wxBitmap)
 
-  public:
-
-    wxBitmap();
-    wxBitmap( int width, int height, int depth = -1 );
-    wxBitmap( const char bits[], int width, int height, int depth = 1 );
-    wxBitmap( char **bits );
-    wxBitmap( const wxBitmap& bmp );
-    wxBitmap( const wxBitmap* bmp );
-    wxBitmap( const wxString &filename, int type = wxBITMAP_TYPE_XPM);
-    ~wxBitmap();
-    wxBitmap& operator = ( const wxBitmap& bmp );
-    bool operator == ( const wxBitmap& bmp );
-    bool operator != ( const wxBitmap& bmp );
-    bool Ok() const;
-
-    int GetHeight() const;
-    int GetWidth() const;
-    int GetDepth() const;
-    void SetHeight( int height );
-    void SetWidth( int width );
-    void SetDepth( int depth );
-
-    wxMask *GetMask() const;
-    void SetMask( wxMask *mask );
-
-    void Resize( int height, int width );
-
-    bool SaveFile( const wxString &name, int type, wxPalette *palette = NULL );
-    bool LoadFile( const wxString &name, int type = wxBITMAP_TYPE_XPM);
-
-    wxPalette *GetPalette() const;
-    wxPalette *GetColourMap() const
-      { return GetPalette(); };
-
-  private:
-
-    friend wxDC;
-    friend wxPaintDC;
-    friend wxMemoryDC;
-    friend wxToolBar;
-    friend wxBitmapButton;
-    friend wxStaticBitmap;
-    friend wxFrame;
-
-    // no data :-)
-};
+  friend class WXDLLEXPORT wxBitmapHandler;
+
+public:
+  wxBitmap(); // Platform-specific
+
+  // Copy constructors
+  inline wxBitmap(const wxBitmap& bitmap)
+  { Ref(bitmap); if ( wxTheBitmapList ) wxTheBitmapList->AddBitmap(this); }
+  inline wxBitmap(const wxBitmap* bitmap) { if (bitmap) Ref(*bitmap); if ( wxTheBitmapList ) wxTheBitmapList->AddBitmap(this); }
+
+  // Initialize with raw data.
+  wxBitmap(const char bits[], int width, int height, int depth = 1);
+
+/* TODO: maybe implement XPM reading
+  // Initialize with XPM data
+  wxBitmap(const char **data);
+*/
+
+  // Load a file or resource
+  // TODO: make default type whatever's appropriate for the platform.
+  wxBitmap(const wxString& name, long type = wxBITMAP_TYPE_BMP_RESOURCE);
+
+  // Constructor for generalised creation from data
+  wxBitmap(void *data, long type, int width, int height, int depth = 1);
+
+  // If depth is omitted, will create a bitmap compatible with the display
+  wxBitmap(int width, int height, int depth = -1);
+  ~wxBitmap();
+
+  virtual bool Create(int width, int height, int depth = -1);
+  virtual bool Create(void *data, long type, int width, int height, int depth = 1);
+  virtual bool LoadFile(const wxString& name, long type = wxBITMAP_TYPE_BMP_RESOURCE);
+  virtual bool SaveFile(const wxString& name, int type, const wxPalette *cmap = NULL);
+
+  inline bool Ok() const { return (M_BITMAPDATA && M_BITMAPDATA->m_ok); }
+  inline int GetWidth() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_width : 0); }
+  inline int GetHeight() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_height : 0); }
+  inline int GetDepth() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_depth : 0); }
+  inline int GetQuality() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_quality : 0); }
+  void SetWidth(int w);
+  void SetHeight(int h);
+  void SetDepth(int d);
+  void SetQuality(int q);
+  void SetOk(bool isOk);
+
+  inline wxPalette* GetPalette() const { return (M_BITMAPDATA ? (& M_BITMAPDATA->m_bitmapPalette) : NULL); }
+  void SetPalette(const wxPalette& palette);
+
+  inline wxMask *GetMask() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_bitmapMask : NULL); }
+  void SetMask(wxMask *mask) ;
+
+  inline wxBitmap& operator = (const wxBitmap& bitmap) { if (*this == bitmap) return (*this); Ref(bitmap); return *this; }
+  inline bool operator == (const wxBitmap& bitmap) { return m_refData == bitmap.m_refData; }
+  inline bool operator != (const wxBitmap& bitmap) { return m_refData != bitmap.m_refData; }
+
+  // Format handling
+  static inline wxList& GetHandlers() { return sm_handlers; }
+  static void AddHandler(wxBitmapHandler *handler);
+  static void InsertHandler(wxBitmapHandler *handler);
+  static bool RemoveHandler(const wxString& name);
+  static wxBitmapHandler *FindHandler(const wxString& name);
+  static wxBitmapHandler *FindHandler(const wxString& extension, long bitmapType);
+  static wxBitmapHandler *FindHandler(long bitmapType);
+
+  static void InitStandardHandlers();
+  static void CleanUpHandlers();
+protected:
+  static wxList sm_handlers;
+
+/*
+  // TODO: Implementation
+public:
+  void SetHBITMAP(WXHBITMAP bmp);
+  inline WXHBITMAP GetHBITMAP() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_hBitmap : 0); }
+  bool FreeResource(bool force = FALSE);
+*/
 
-#endif // __GTKBITMAPH__
+};
+#endif
+  // _WX_BITMAP_H_
index 659e9443dc52220fb682bfcd313cd6c54ac6c721..defe39e438b272cef097aab9fe4a58271f6ad3d5 100644 (file)
@@ -1,62 +1,83 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        bmpbutton.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Name:        bmpbuttn.h
+// Purpose:     wxBitmapButton class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __BMPBUTTONH__
-#define __BMPBUTTONH__
+#ifndef _WX_BMPBUTTN_H_
+#define _WX_BMPBUTTN_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "bmpbuttn.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/list.h"
-#include "wx/control.h"
+#include "wx/button.h"
+
+WXDLLEXPORT_DATA(extern const char*) wxButtonNameStr;
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+#define wxDEFAULT_BUTTON_MARGIN 4
 
-class wxBitmapButton;
+class WXDLLEXPORT wxBitmapButton: public wxButton
+{
+  DECLARE_DYNAMIC_CLASS(wxBitmapButton)
+ public:
+  inline wxBitmapButton() { m_marginX = wxDEFAULT_BUTTON_MARGIN; m_marginY = wxDEFAULT_BUTTON_MARGIN; }
+  inline wxBitmapButton(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr)
+  {
+      Create(parent, id, bitmap, pos, size, style, validator, name);
+  }
 
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
+  bool Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr);
 
-extern const char *wxButtonNameStr;
+  virtual void SetLabel(const wxBitmap& bitmap)
+  {
+    SetBitmapLabel(bitmap);
+  }
 
-//-----------------------------------------------------------------------------
-// wxBitmapButton
-//-----------------------------------------------------------------------------
+  virtual void SetBitmapLabel(const wxBitmap& bitmap);
 
-class wxBitmapButton: public wxControl
-{
-  DECLARE_DYNAMIC_CLASS(wxBitmapButton)
+  inline wxBitmap& GetBitmapLabel() const { return (wxBitmap&) m_buttonBitmap; }
+  inline wxBitmap& GetBitmapSelected() const { return (wxBitmap&) m_buttonBitmapSelected; }
+  inline wxBitmap& GetBitmapFocus() const { return (wxBitmap&) m_buttonBitmapFocus; }
+  inline wxBitmap& GetBitmapDisabled() const { return (wxBitmap&) m_buttonBitmapDisabled; }
 
-  public:
-
-    wxBitmapButton(void);
-    wxBitmapButton( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap,
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, 
-      long style = 0, const wxString &name = wxButtonNameStr  );
-    bool Create(  wxWindow *parent, wxWindowID id, const wxBitmap &bitmap,
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, 
-      long style = 0, const wxString &name = wxButtonNameStr  );
-    void SetDefault(void);
-    void SetLabel( const wxString &label );
-    wxString GetLabel(void) const;
-    
-  public:
-  
-    wxBitmap   m_bitmap;    
-    
+  inline void SetBitmapSelected(const wxBitmap& sel) { m_buttonBitmapSelected = sel; };
+  inline void SetBitmapFocus(const wxBitmap& focus) { m_buttonBitmapFocus = focus; };
+  inline void SetBitmapDisabled(const wxBitmap& disabled) { m_buttonBitmapDisabled = disabled; };
+
+  inline void SetMargins(int x, int y) { m_marginX = x; m_marginY = y; }
+  inline int GetMarginX() { return m_marginX; }
+  inline int GetMarginY() { return m_marginY; }
+
+/*
+  // TODO: Implementation
+  virtual bool MSWOnDraw(WXDRAWITEMSTRUCT *item);
+  virtual void DrawFace( WXHDC dc, int left, int top, int right, int bottom, bool sel );
+  virtual void DrawButtonFocus( WXHDC dc, int left, int top, int right, int bottom, bool sel );
+  virtual void DrawButtonDisable( WXHDC dc, int left, int top, int right, int bottom, bool with_marg );
+*/
+
+ protected:
+  wxBitmap m_buttonBitmap;
+  wxBitmap m_buttonBitmapSelected;
+  wxBitmap m_buttonBitmapFocus;
+  wxBitmap m_buttonBitmapDisabled;
+  int      m_marginX;
+  int      m_marginY;
 };
-#endif // __BMPBUTTONH__
+
+#endif
+    // _WX_BMPBUTTN_H_
index 32048f67b74d50d67ec6b181f9fa74490c4ff6b6..2475bd0b24f61e0e32bc9b50c90f00222f5b246c 100644 (file)
@@ -1,60 +1,86 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        brush.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxBrush class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKBRUSHH__
-#define __GTKBRUSHH__
+#ifndef _WX_BRUSH_H_
+#define _WX_BRUSH_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "brush.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/string.h"
+#include "wx/gdicmn.h"
 #include "wx/gdiobj.h"
 #include "wx/bitmap.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+class WXDLLEXPORT wxBrush;
+
+class WXDLLEXPORT wxBrushRefData: public wxGDIRefData
+{
+    friend class WXDLLEXPORT wxBrush;
+public:
+    wxBrushRefData();
+    wxBrushRefData(const wxBrushRefData& data);
+    ~wxBrushRefData();
 
-class wxBrush;
+protected:
+    int           m_style;
+    wxBitmap      m_stipple ;
+    wxColour      m_colour;
 
-//-----------------------------------------------------------------------------
-// wxBrush
-//-----------------------------------------------------------------------------
+/* TODO: implementation
+    WXHBRUSH      m_hBrush;
+*/
+};
 
-class wxBrush: public wxGDIObject
+#define M_BRUSHDATA ((wxBrushRefData *)m_refData)
+
+// Brush
+class WXDLLEXPORT wxBrush: public wxGDIObject
 {
   DECLARE_DYNAMIC_CLASS(wxBrush)
 
-  public:
-
-    wxBrush(void);
-    wxBrush( const wxColour &colour, int style );
-    wxBrush( const wxString &colourName, int style );
-    wxBrush( const wxBitmap &stippleBitmap );
-    wxBrush( const wxBrush &brush );
-    wxBrush( const wxBrush *brush );
-    ~wxBrush(void);
-    wxBrush& operator = ( const wxBrush& brush );
-    bool operator == ( const wxBrush& brush );
-    bool operator != ( const wxBrush& brush );
-    bool Ok(void) const;
-
-    int GetStyle(void) const;
-    wxColour &GetColour(void) const;
-    wxBitmap *GetStipple(void) const;
-    
-    // no data :-)
+public:
+  wxBrush();
+  wxBrush(const wxColour& col, int style);
+  wxBrush(const wxString& col, int style);
+  wxBrush(const wxBitmap& stipple);
+  inline wxBrush(const wxBrush& brush) { Ref(brush); }
+  inline wxBrush(const wxBrush* brush) { if (brush) Ref(*brush); }
+  ~wxBrush();
+
+  virtual void SetColour(const wxColour& col)  ;
+  virtual void SetColour(const wxString& col)  ;
+  virtual void SetColour(unsigned char r, unsigned char g, unsigned char b)  ;
+  virtual void SetStyle(int style)  ;
+  virtual void SetStipple(const wxBitmap& stipple)  ;
+
+  inline wxBrush& operator = (const wxBrush& brush) { if (*this == brush) return (*this); Ref(brush); return *this; }
+  inline bool operator == (const wxBrush& brush) { return m_refData == brush.m_refData; }
+  inline bool operator != (const wxBrush& brush) { return m_refData != brush.m_refData; }
+
+  inline wxColour& GetColour() const { return (M_BRUSHDATA ? M_BRUSHDATA->m_colour : wxNullColour); };
+  inline int GetStyle() const { return (M_BRUSHDATA ? M_BRUSHDATA->m_style : 0); };
+  inline wxBitmap *GetStipple() const { return (M_BRUSHDATA ? & M_BRUSHDATA->m_stipple : 0); };
+
+  virtual bool Ok() const { return (m_refData != NULL) ; }
+
+// Implementation
+
+  // Useful helper: create the brush resource
+  void RealizeResource();
+
+  // When setting properties, we must make sure we're not changing
+  // another object
+  void Unshare();
 };
 
-#endif // __GTKBRUSHH__
+#endif
+    // _WX_BRUSH_H_
index 6932755578dde8e3e353b605081cb26f2594b661..68b67d8c96ff370f261b924f60bbf9041712a222 100644 (file)
@@ -1,58 +1,53 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        button.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxButton class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKBUTTONH__
-#define __GTKBUTTONH__
+#ifndef _WX_BUTTON_H_
+#define _WX_BUTTON_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "button.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/list.h"
 #include "wx/control.h"
+#include "wx/gdicmn.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class wxButton;
-
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
-
-extern const char *wxButtonNameStr;
+WXDLLEXPORT_DATA(extern const char*) wxButtonNameStr;
 
-//-----------------------------------------------------------------------------
-// wxButton
-//-----------------------------------------------------------------------------
-
-class wxButton: public wxControl
+// Pushbutton
+class WXDLLEXPORT wxButton: public wxControl
 {
   DECLARE_DYNAMIC_CLASS(wxButton)
-
-  public:
-
-    wxButton(void);
-    wxButton( wxWindow *parent, wxWindowID id, const wxString &label,
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, 
-      long style = 0, const wxString &name = wxButtonNameStr  );
-    bool Create(  wxWindow *parent, wxWindowID id, const wxString &label,
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, 
-      long style = 0, const wxString &name = wxButtonNameStr  );
-    void SetDefault(void);
-    void SetLabel( const wxString &label );
-    wxString GetLabel(void) const;
+ public:
+  inline wxButton() {}
+  inline wxButton(wxWindow *parent, wxWindowID id, const wxString& label,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize, long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr)
+  {
+      Create(parent, id, label, pos, size, style, validator, name);
+  }
+
+  bool Create(wxWindow *parent, wxWindowID id, const wxString& label,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize, long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr);
+
+  virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
+  virtual void SetDefault();
+  virtual void SetLabel(const wxString& label);
+  virtual wxString GetLabel() const ;
+  virtual void Command(wxCommandEvent& event);
 };
 
-#endif // __GTKBUTTONH__
+#endif
+    // _WX_BUTTON_H_
index 6ff10bcecc040c5e72c051c8f60bc26a5e0c791e..8bf41d99582c0e1d7827cddee1e5f54964050c10 100644 (file)
@@ -1,57 +1,81 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        checkbox.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxCheckBox class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKCHECKBOXH__
-#define __GTKCHECKBOXH__
+#ifndef _WX_CHECKBOX_H_
+#define _WX_CHECKBOX_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "checkbox.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/list.h"
 #include "wx/control.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class wxCheckBox;
+WXDLLEXPORT_DATA(extern const char*) wxCheckBoxNameStr;
 
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
+// Checkbox item (single checkbox)
+class WXDLLEXPORT wxBitmap;
+class WXDLLEXPORT wxCheckBox: public wxControl
+{
+  DECLARE_DYNAMIC_CLASS(wxCheckBox)
 
-extern const char *wxCheckBoxNameStr;
+ public:
+  inline wxCheckBox() { }
+  inline wxCheckBox(wxWindow *parent, wxWindowID id, const wxString& label,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize, long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxCheckBoxNameStr)
+  {
+      Create(parent, id, label, pos, size, style, validator, name);
+  }
 
-//-----------------------------------------------------------------------------
-// wxCheckBox
-//-----------------------------------------------------------------------------
+  bool Create(wxWindow *parent, wxWindowID id, const wxString& label,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize, long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxCheckBoxNameStr);
+  virtual void SetValue(bool);
+  virtual bool GetValue() const ;
+  virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
+  virtual void SetLabel(const wxString& label);
+  virtual void Command(wxCommandEvent& event);
+};
 
-class wxCheckBox: public wxControl
+class WXDLLEXPORT wxBitmapCheckBox: public wxCheckBox
 {
-  DECLARE_DYNAMIC_CLASS(wxCheckBox)
+  DECLARE_DYNAMIC_CLASS(wxBitmapCheckBox)
 
-  public:
-
-    wxCheckBox(void);
-    wxCheckBox( wxWindow *parent, wxWindowID id, const wxString &label,
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, 
-      long style = 0, const wxString &name = wxCheckBoxNameStr  );
-    bool Create(  wxWindow *parent, wxWindowID id, const wxString &label,
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, 
-      long style = 0, const wxString &name = wxCheckBoxNameStr  );
-    void SetValue( bool state );
-    bool GetValue(void) const;
-};
+ public:
+  int checkWidth ;
+  int checkHeight ;
+
+  inline wxBitmapCheckBox() { checkWidth = -1; checkHeight = -1; }
+  inline wxBitmapCheckBox(wxWindow *parent, wxWindowID id, const wxBitmap *label,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize, long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxCheckBoxNameStr)
+  {
+      Create(parent, id, label, pos, size, style, validator, name);
+  }
 
-#endif // __GTKCHECKBOXH__
+  bool Create(wxWindow *parent, wxWindowID id, const wxBitmap *bitmap,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize, long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxCheckBoxNameStr);
+  virtual void SetValue(bool);
+  virtual bool GetValue() const ;
+  virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
+  virtual void SetLabel(const wxBitmap *bitmap);
+};
+#endif
+    // _WX_CHECKBOX_H_
index 99e7ec087870126d3f351c19234a1ce6221a7980..7f360ed5cc379c5396b16c32362ebff0aa16dc98 100644 (file)
@@ -1,68 +1,72 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        choice.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxChoice class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKCHOICEH__
-#define __GTKCHOICEH__
+#ifndef _WX_CHOICE_H_
+#define _WX_CHOICE_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "choice.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/list.h"
 #include "wx/control.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+WXDLLEXPORT_DATA(extern const char*) wxChoiceNameStr;
 
-class wxChoice;
+// Choice item
+class WXDLLEXPORT wxChoice: public wxControl
+{
+  DECLARE_DYNAMIC_CLASS(wxChoice)
 
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
+ public:
+  inline wxChoice() { m_noStrings = 0; }
 
-extern const char *wxChoiceNameStr;
+  inline wxChoice(wxWindow *parent, wxWindowID id,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           int n = 0, const wxString choices[] = NULL,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxChoiceNameStr)
+  {
+    Create(parent, id, pos, size, n, choices, style, validator, name);
+  }
 
-//-----------------------------------------------------------------------------
-// wxChoice
-//-----------------------------------------------------------------------------
+  bool Create(wxWindow *parent, wxWindowID id,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           int n = 0, const wxString choices[] = NULL,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxChoiceNameStr);
 
-class wxChoice: public wxControl
-{
-  DECLARE_DYNAMIC_CLASS(wxChoice)
+  virtual void Append(const wxString& item);
+  virtual void Delete(int n);
+  virtual void Clear();
+  virtual int GetSelection() const ;
+  virtual void SetSelection(int n);
+  virtual int FindString(const wxString& s) const;
+  virtual wxString GetString(int n) const ;
+  virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
+  virtual wxString GetStringSelection() const ;
+  virtual bool SetStringSelection(const wxString& sel);
+
+  virtual inline int Number() const { return m_noStrings; }
+  virtual void Command(wxCommandEvent& event);
 
-  public:
+  virtual inline void SetColumns(int WXUNUSED(n) = 1 ) { /* No effect */ } ;
+  virtual inline int GetColumns() const { return 1 ; };
 
-    wxChoice(void);
-    wxChoice( wxWindow *parent, wxWindowID id,
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
-      int n = 0, const wxString choices[] = NULL,
-      long style = 0, const wxString &name = wxChoiceNameStr );
-    bool Create( wxWindow *parent, wxWindowID id,
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
-      int n = 0, const wxString choices[] = NULL,
-      long style = 0, const wxString &name = wxChoiceNameStr );
-    void Append( const wxString &item );
-    void Clear(void);
-    int FindString( const wxString &string ) const;
-    int GetColumns(void) const;
-    int GetSelection(void);
-    wxString GetString( int n ) const;
-    wxString GetStringSelection(void) const;
-    int Number(void) const;
-    void SetColumns( int n = 1 );
-    void SetSelection( int n );
-    void SetStringSelection( const wxString &string );
+protected:
+  int m_noStrings;
 };
 
-#endif // __GTKCHOICEH__
+#endif
+       // _WX_CHOICE_H_
index f37554e841a0093de2165568255d8ffc1bdb798a..e8fca8e3b413d11cf03faae06f87a69619641953 100644 (file)
@@ -1,75 +1,68 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        colour.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxColour class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKCOLOURH__
-#define __GTKCOLOURH__
+#ifndef _WX_COLOUR_H_
+#define _WX_COLOUR_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "colour.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/string.h"
-#include "wx/gdiobj.h"
-#include "wx/palette.h"
+// Colour
+class WXDLLEXPORT wxColour: public wxObject
+{
+  DECLARE_DYNAMIC_CLASS(wxColour)
+public:
+  wxColour();
+  wxColour(unsigned char r, unsigned char g, unsigned char b);
+  wxColour(unsigned long colRGB) { Set(colRGB); }
+  wxColour(const wxColour& col);
+  wxColour(const wxString& col);
+  ~wxColour() ;
+  wxColour& operator =(const wxColour& src) ;
+  wxColour& operator =(const wxString& src) ;
+  inline int Ok() const { return (m_isInit) ; }
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+  void Set(unsigned char r, unsigned char g, unsigned char b);
+  void Set(unsigned long colRGB) 
+  { 
+    // we don't need to know sizeof(long) here because we assume that the three
+    // least significant bytes contain the R, G and B values
+    Set((unsigned char)colRGB, 
+        (unsigned char)(colRGB >> 8),
+        (unsigned char)(colRGB >> 16)); 
+  }
 
-class wxDC;
-class wxPaintDC;
-class wxBitmap;
-class wxWindow;
+  inline unsigned char Red() const { return m_red; }
+  inline unsigned char Green() const { return m_green; }
+  inline unsigned char Blue() const { return m_blue; }
 
-class wxColour;
+  inline bool operator == (const wxColour& colour) { return (m_red == colour.m_red && m_green == colour.m_green && m_blue == colour.m_blue); }
 
-//-----------------------------------------------------------------------------
-// wxColour
-//-----------------------------------------------------------------------------
+  inline bool operator != (const wxColour& colour) { return (!(m_red == colour.m_red && m_green == colour.m_green && m_blue == colour.m_blue)); }
 
-class wxColour: public wxGDIObject
-{
-  DECLARE_DYNAMIC_CLASS(wxColour)
+  WXCOLORREF GetPixel() const { return m_pixel; };
 
-  public:
+ private:
+  bool                         m_isInit;
+  unsigned char m_red;
+  unsigned char m_blue;
+  unsigned char m_green;
+ public:
+/* TODO: implementation
+  WXCOLORREF m_pixel ;
+*/
+};
 
-    wxColour(void);
-    wxColour( char red, char green, char blue );
-    wxColour( const wxString &colourName );
-    wxColour( const wxColour& col );
-    wxColour( const wxColour* col );
-    ~wxColour(void);
-    wxColour& operator = ( const wxColour& col );
-    wxColour& operator = ( const wxString& colourName );
-    bool operator == ( const wxColour& col );
-    bool operator != ( const wxColour& col );
-    void Set( const unsigned char red, const unsigned char green, const unsigned char blue );
-    unsigned char Red(void) const;
-    unsigned char Green(void) const;
-    unsigned char Blue(void) const;
-    bool Ok(void) const;
+#define wxColor wxColour
 
-  private:
-  public:
-  
-    friend wxDC;
-    friend wxPaintDC;
-    friend wxBitmap;
-    friend wxWindow;
-        
-    int GetPixel(void);
-    
-    // no data :-)
-};
-  
-#endif // __GTKCOLOURH__
+#endif
+       // _WX_COLOUR_H_
index b8395f5d5572fadf31a2f50157ad39d65648a70c..86895e561c60f2890ebdd77ba9d1cd6e9f9f8ca5 100644 (file)
@@ -1,48 +1,33 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        combobox.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:          $Id$
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxComboBox class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKCOMBOBOXH__
-#define __GTKCOMBOBOXH__
+#ifndef _WX_COMBOBOX_H_
+#define _WX_COMBOBOX_H_
 
 #ifdef __GNUG__
 #pragma interface "combobox.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/control.h"
-
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class wxComboBox;
-
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
-
-extern const char* wxComboBoxNameStr;
-extern const char* wxEmptyString;
+#include "wx/choice.h"
 
-//-----------------------------------------------------------------------------
-// wxComboBox
-//-----------------------------------------------------------------------------
+WXDLLEXPORT_DATA(extern const char*) wxComboBoxNameStr;
+WXDLLEXPORT_DATA(extern const char*) wxEmptyString;
 
-class wxComboBox: public wxControl
+// Combobox item
+class WXDLLEXPORT wxComboBox: public wxChoice
 {
   DECLARE_DYNAMIC_CLASS(wxComboBox)
 
  public:
-  inline wxComboBox(void) {}
+  inline wxComboBox() {}
 
   inline wxComboBox(wxWindow *parent, wxWindowID id,
            const wxString& value = wxEmptyString,
@@ -50,9 +35,10 @@ class wxComboBox: public wxControl
            const wxSize& size = wxDefaultSize,
            int n = 0, const wxString choices[] = NULL,
            long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
            const wxString& name = wxComboBoxNameStr)
   {
-    Create(parent, id, value, pos, size, n, choices, style, name);
+    Create(parent, id, value, pos, size, n, choices, style, validator, name);
   }
 
   bool Create(wxWindow *parent, wxWindowID id,
@@ -61,40 +47,32 @@ class wxComboBox: public wxControl
            const wxSize& size = wxDefaultSize,
            int n = 0, const wxString choices[] = NULL,
            long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
            const wxString& name = wxComboBoxNameStr);
 
-  // List functions
-  void Clear(void);
-  void Append( const wxString &item );
-  void Append( const wxString &item, char* clientData );
-  void Delete( int n );
-  int FindString( const wxString &item );
-  char* GetClientData( int n );
-  void SetClientData( int n, char * clientData );
-  int GetSelection(void) const;
-  wxString GetString( int n ) const;
-  wxString GetStringSelection(void) const;
-  int Number(void) const;
-  void SetSelection( int n );
-  void SetStringSelection( const wxString &string );
-
+  // List functions: see wxChoice
+  
   // Text field functions
-  wxString GetValue(void) const ;
-  void SetValue(const wxString& value);
+  virtual wxString GetValue() const ;
+  virtual void SetValue(const wxString& value);
 
   // Clipboard operations
-  void Copy(void);
-  void Cut(void);
-  void Paste(void);
-  void SetInsertionPoint(long pos);
-  void SetInsertionPointEnd(void);
-  long GetInsertionPoint(void) const ;
-  long GetLastPosition(void) const ;
-  void Replace(long from, long to, const wxString& value);
-  void Remove(long from, long to);
-  void SetSelection(long from, long to);
-  void SetEditable(bool editable);
-
+  virtual void Copy();
+  virtual void Cut();
+  virtual void Paste();
+  virtual void SetInsertionPoint(long pos);
+  virtual void SetInsertionPointEnd();
+  virtual long GetInsertionPoint() const ;
+  virtual long GetLastPosition() const ;
+  virtual void Replace(long from, long to, const wxString& value);
+  virtual void Remove(long from, long to);
+  virtual void SetSelection(int n)
+  {
+    wxChoice::SetSelection(n);
+  }
+  virtual void SetSelection(long from, long to);
+  virtual void SetEditable(bool editable);
 };
 
-#endif // __GTKCOMBOBOXH__
+#endif
+    // _WX_COMBOBOX_H_
index 5aa8a1b39a41b2e06c728f6d14930904dc1221c6..5432b5c5e756e919830af86872aed69f18413bde 100644 (file)
@@ -1,60 +1,50 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        control.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxControl class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKCONTROLH__
-#define __GTKCONTROLH__
+#ifndef _WX_CONTROL_H_
+#define _WX_CONTROL_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "control.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/list.h"
 #include "wx/window.h"
+#include "wx/list.h"
+#include "wx/validate.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class wxControl;
+// General item class
+class WXDLLEXPORT wxControl: public wxWindow
+{
+  DECLARE_ABSTRACT_CLASS(wxControl)
+public:
+   wxControl();
+   ~wxControl();
 
-//-----------------------------------------------------------------------------
-// wxControl
-//-----------------------------------------------------------------------------
+   virtual void Command(wxCommandEvent& WXUNUSED(event)) = 0;        // Simulates an event
+   virtual void ProcessCommand(wxCommandEvent& event); // Calls the callback and
+                                                                 // appropriate event handlers
+   virtual void SetLabel(const wxString& label);
+   virtual wxString GetLabel() const ;
 
-class wxControl: public wxWindow
-{
-DECLARE_DYNAMIC_CLASS(wxControl)
+   // Places item in centre of panel - so can't be used BEFORE panel->Fit()
+   void Centre(int direction = wxHORIZONTAL);
+   inline void Callback(const wxFunction function) { m_callback = function; }; // Adds callback
 
-public:
-  // construction
-  wxControl();
-  wxControl( wxWindow *parent, wxWindowID id, 
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, 
-      long style = 0, const wxString &name = wxPanelNameStr  );
-  
-  // overridables
-  virtual void Command( wxCommandEvent &event );
-
-  // accessors
-    // this function will filter out '&' characters and will put the accelerator
-    // char (the one immediately after '&') into m_chAccel (@@ not yet)
-  virtual void SetLabel( const wxString &label );
-  virtual wxString GetLabel() const;
+   inline wxFunction GetCallback() { return m_callback; }
 
 protected:
-  wxString   m_label;
-  // when we implement keyboard interface we will make use of this, but not yet
-  //char       m_chAccel;
+   wxFunction       m_callback;     // Callback associated with the window
+
+DECLARE_EVENT_TABLE()
 };
 
-#endif // __GTKCONTROLH__
+#endif
+    // _WX_CONTROL_H_
index e6b3451b8a9029b802b98402af0c1ae99383f211..9cf490cdc6004b08880ba11c37990bcd98c8b6fa 100644 (file)
@@ -1,59 +1,75 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        cursor.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxCursor class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKCURSORH__
-#define __GTKCURSORH__
+#ifndef _WX_CURSOR_H_
+#define _WX_CURSOR_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "cursor.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/gdicmn.h"
-
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+#include "wx/bitmap.h"
 
-class wxWindow;
+class WXDLLEXPORT wxCursorRefData: public wxBitmapRefData
+{
+    friend class WXDLLEXPORT wxBitmap;
+    friend class WXDLLEXPORT wxCursor;
+public:
+    wxCursorRefData();
+    ~wxCursorRefData();
 
-class wxCursor;
+protected:
+/* TODO: implementation
+  WXHCURSOR m_hCursor;
+*/
+};
 
-//-----------------------------------------------------------------------------
-// wxCursor
-//-----------------------------------------------------------------------------
+#define M_CURSORDATA ((wxCursorRefData *)m_refData)
+#define M_CURSORHANDLERDATA ((wxCursorRefData *)bitmap->m_refData)
 
-class wxCursor: public wxObject
+// Cursor
+class WXDLLEXPORT wxCursor: public wxBitmap
 {
   DECLARE_DYNAMIC_CLASS(wxCursor)
 
-  public:
-
-    wxCursor(void);
-    wxCursor( int cursorId );
-    wxCursor( const wxCursor &cursor );
-    wxCursor( const wxCursor *cursor );
-    ~wxCursor(void);
-    wxCursor& operator = ( const wxCursor& cursor );
-    bool operator == ( const wxCursor& cursor );
-    bool operator != ( const wxCursor& cursor );
-    bool Ok(void) const;
-    
-  private:
-  public:
-  
-    friend wxWindow;
-
-    // no data :-)
+public:
+  wxCursor();
+
+  // Copy constructors
+  inline wxCursor(const wxCursor& cursor) { Ref(cursor); }
+  inline wxCursor(const wxCursor* cursor) { if (cursor) Ref(*cursor); }
+
+  wxCursor(const char bits[], int width, int height, int hotSpotX = -1, int hotSpotY = -1,
+    const char maskBits[] = NULL);
+
+  /* TODO: make default type suit platform */
+  wxCursor(const wxString& name, long flags = wxBITMAP_TYPE_CUR_RESOURCE,
+   int hotSpotX = 0, int hotSpotY = 0);
+
+  wxCursor(int cursor_type);
+  ~wxCursor();
+
+  virtual bool Ok() const { return (m_refData != NULL && M_CURSORDATA->m_hCursor) ; }
+
+  inline wxCursor& operator = (const wxCursor& cursor) { if (*this == cursor) return (*this); Ref(cursor); return *this; }
+  inline bool operator == (const wxCursor& cursor) { return m_refData == cursor.m_refData; }
+  inline bool operator != (const wxCursor& cursor) { return m_refData != cursor.m_refData; }
+
+/* TODO: implementation
+  void SetHCURSOR(WXHCURSOR cursor);
+  inline WXHCURSOR GetHCURSOR() const { return (M_CURSORDATA ? M_CURSORDATA->m_hCursor : 0); }
+*/
 };
 
-#endif // __GTKCURSORH__
+extern WXDLLEXPORT void wxSetCursor(const wxCursor& cursor);
+
+#endif
+    // _WX_CURSOR_H_
index 9678e6d693e73377a9f6a3950d772412f9d2f8db..eb10154ab9aae728161ac278a7bdeabffa75c8ed 100644 (file)
@@ -1,43 +1,34 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        dc.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxDC class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKDCH__
-#define __GTKDCH__
+#ifndef _WX_DC_H_
+#define _WX_DC_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "dc.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/gdicmn.h"
 #include "wx/pen.h"
 #include "wx/brush.h"
 #include "wx/icon.h"
 #include "wx/font.h"
 #include "wx/gdicmn.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class wxDC;
-
 //-----------------------------------------------------------------------------
 // constants
 //-----------------------------------------------------------------------------
 
 #define MM_TEXT                        0
-#define MM_ISOTROPIC           1
-#define MM_ANISOTROPIC         2
+#define MM_ISOTROPIC   1
+#define MM_ANISOTROPIC 2
 #define MM_LOMETRIC            3
 #define MM_HIMETRIC            4
 #define MM_TWIPS               5
@@ -54,7 +45,7 @@ extern int wxPageNumber;
 // wxDC
 //-----------------------------------------------------------------------------
 
-class wxDC: public wxObject
+class WXDLLEXPORT wxDC: public wxObject
 {
   DECLARE_ABSTRACT_CLASS(wxDC)
 
@@ -69,12 +60,40 @@ class wxDC: public wxObject
     virtual bool Ok(void) const { return m_ok; };
 
     virtual void FloodFill( long x1, long y1, wxColour *col, int style=wxFLOOD_SURFACE ) = 0;
+    inline void FloodFill(const wxPoint& pt, const wxColour& col, int style=wxFLOOD_SURFACE)
+    {
+        FloodFill(pt.x, pt.y, col, style);
+    }
     virtual bool GetPixel( long x1, long y1, wxColour *col ) const = 0;
+    inline bool GetPixel(const wxPoint& pt, wxColour *col) const
+    {
+        return GetPixel(pt.x, pt.y, col);
+    }
 
     virtual void DrawLine( long x1, long y1, long x2, long y2 ) = 0;
+    inline void DrawLine(const wxPoint& pt1, const wxPoint& pt2)
+    {
+        DrawLine(pt1.x, pt1.y, pt2.x, pt2.y);
+    }
+
     virtual void CrossHair( long x, long y ) = 0;
-    virtual void DrawArc( long x1, long y1, long x2, long y2, double xc, double yc );
+    inline void CrossHair(const wxPoint& pt)
+    {
+        CrossHair(pt.x, pt.y);
+    }
+
+    virtual void DrawArc( long x1, long y1, long x2, long y2, double xc, double yc ) = 0;
+    inline void DrawArc(const wxPoint& pt1, const wxPoint& pt2, double xc, double yc)
+    {
+        DrawArc(pt1.x, pt1.y, pt2.x, pt2.y, xc, yc);
+    }
+
     virtual void DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ) = 0;
+    virtual void DrawEllipticArc (const wxPoint& pt, const wxSize& sz, double sa, double ea)
+    {
+        DrawEllipticArc(pt.x, pt.y, sz.x, sz.y, sa, ea);
+    }
+
     virtual void DrawPoint( long x, long y ) = 0;
     virtual void DrawPoint( wxPoint& point );
     
@@ -86,21 +105,67 @@ class wxDC: public wxObject
                               int fillStyle=wxODDEVEN_RULE );
     
     virtual void DrawRectangle( long x, long y, long width, long height ) = 0;
+    inline void DrawRectangle(const wxPoint& pt, const wxSize& sz)
+    {
+        DrawRectangle(pt.x, pt.y, sz.x, sz.y);
+    }
+    inline void DrawRectangle(const wxRect& rect)
+    {
+        DrawRectangle(rect.x, rect.y, rect.width, rect.height);
+    }
     virtual void DrawRoundedRectangle( long x, long y, long width, long height, double radius = 20.0 ) = 0;
+    inline void DrawRoundedRectangle(const wxPoint& pt, const wxSize& sz, double radius = 20.0)
+    {
+        DrawRoundedRectangle(pt.x, pt.y, sz.x, sz.y, radius);
+    }
+    inline void DrawRoundedRectangle(const wxRect& rect, double radius = 20.0)
+    {
+        DrawRoundedRectangle(rect.x, rect.y, rect.width, rect.height, radius);
+    }
+
     virtual void DrawEllipse( long x, long y, long width, long height ) = 0;
-    
+    inline void DrawEllipse(const wxPoint& pt, const wxSize& sz)
+    {
+        DrawEllipse(pt.x, pt.y, sz.x, sz.y);
+    }
+    inline void DrawEllipse(const wxRect& rect)
+    {
+        DrawEllipse(rect.x, rect.y, rect.width, rect.height);
+    }
+
+    virtual void DrawIcon(const wxIcon& icon, long x, long y) = 0;
+
     virtual void DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 );
     virtual void DrawSpline( wxList *points );
     virtual void DrawSpline( int n, wxPoint points[] );
     
     virtual bool CanDrawBitmap(void) const = 0;
+
     virtual void DrawIcon( const wxIcon &icon, long x, long y, bool useMask=FALSE );
-            void DrawBitmap( const wxBitmap &bmp, long x, long y, bool useMask=FALSE )
-           { DrawIcon( *((wxIcon*)(&bmp)), x, y, useMask ); }
+    inline void DrawIcon(const wxIcon& icon, const wxPoint& pt)
+    {
+        DrawIcon(icon, pt.x, pt.y);
+    }
+
+    // TODO DrawBitmap is not always the same as DrawIcon, especially if bitmaps and
+    // icons are implemented differently.
+    void DrawBitmap( const wxBitmap &bmp, long x, long y, bool useMask=FALSE )
+             { DrawIcon( *((wxIcon*)(&bmp)), x, y, useMask ); }
+
     virtual bool Blit( long xdest, long ydest, long width, long height,
        wxDC *source, long xsrc, long ysrc, int logical_func = wxCOPY, bool useMask=FALSE ) = 0;
+    inline bool Blit(const wxPoint& destPt, const wxSize& sz,
+            wxDC *source, const wxPoint& srcPt, int rop = wxCOPY, bool useMask = FALSE)
+    {
+        return Blit(destPt.x, destPt.y, sz.x, sz.y, source, srcPt.x, srcPt.y, rop, useMask);
+    }
 
     virtual void DrawText( const wxString &text, long x, long y, bool use16 = FALSE ) = 0;
+    inline void DrawText(const wxString& text, const wxPoint& pt, bool use16bit = FALSE)
+    {
+        DrawText(text, pt.x, pt.y, use16bit);
+    }
+
     virtual bool CanGetTextExtent(void) const = 0;
     virtual void GetTextExtent( const wxString &string, long *width, long *height,
                      long *descent = NULL, long *externalLeading = NULL,
@@ -111,19 +176,19 @@ class wxDC: public wxObject
     virtual void Clear(void) = 0;
             
     virtual void SetFont( const wxFont &font ) = 0;
-    virtual wxFont *GetFont(void) { return &m_font; };
+    virtual wxFont *GetFont(void) const { return &m_font; };
     
     virtual void SetPen( const wxPen &pen ) = 0;
-    virtual wxPen *GetPen(void) { return &m_pen; };
+    virtual wxPen *GetPen(void) const { return &m_pen; };
     
     virtual void SetBrush( const wxBrush &brush ) = 0;
-    virtual wxBrush *GetBrush(void) { return &m_brush; };
+    virtual wxBrush *GetBrush(void) const { return &m_brush; };
 
     virtual void SetBackground( const wxBrush &brush ) = 0;
-    virtual wxBrush *GetBackground(void) { return &m_backgroundBrush; };
+    virtual wxBrush *GetBackground(void) const { return &m_backgroundBrush; };
 
     virtual void SetLogicalFunction( int function ) = 0;
-    virtual int GetLogicalFunction(void) { return m_logicalFunction; };
+    virtual int GetLogicalFunction(void) const { return m_logicalFunction; };
     
     virtual void SetTextForeground( const wxColour &col );
     virtual void SetTextBackground( const wxColour &col );
@@ -131,10 +196,10 @@ class wxDC: public wxObject
     virtual wxColour& GetTextForeground(void) const { return (wxColour&)m_textForegroundColour; };
     
     virtual void SetBackgroundMode( int mode ) = 0;
-    virtual int GetBackgroundMode(void) { return m_backgroundMode; };
+    virtual int GetBackgroundMode(void) const { return m_backgroundMode; };
     
     virtual void SetPalette( const wxPalette& palette ) = 0;
-      void SetColourMap( const wxPalette& palette ) { SetPalette(palette); };
+    void SetColourMap( const wxPalette& palette ) { SetPalette(palette); };
     
     // the first two must be overridden and called
     virtual void SetClippingRegion( long x, long y, long width, long height );
@@ -306,4 +371,5 @@ class wxDC: public wxObject
     long         m_minX,m_maxX,m_minY,m_maxY;
 };
 
-#endif // __GTKDCH__
+#endif
+    // _WX_DC_H_
index 8090743758c14d7912ecc5f7240a20a84c3070d3..828a507d75cf30b59ba7e3163d87924efbbfbaa0 100644 (file)
@@ -1,29 +1,32 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        dcclient.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxClientDC, wxPaintDC and wxWindowDC classes
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKDCCLIENTH__
-#define __GTKDCCLIENTH__
+#ifndef _WX_DCCLIENT_H_
+#define _WX_DCCLIENT_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "dcclient.h"
 #endif
 
 #include "wx/dc.h"
-#include "wx/window.h"
 
 //-----------------------------------------------------------------------------
 // classes
 //-----------------------------------------------------------------------------
 
-class wxPaintDC;
+class WXDLLEXPORT wxPaintDC;
+
+// Under Windows, wxClientDC, wxPaintDC and wxWindowDC are implemented differently.
+// On many platforms, however, they will be the same.
+
 typedef wxPaintDC wxClientDC;
 typedef wxPaintDC wxWindowDC;
 
@@ -31,7 +34,7 @@ typedef wxPaintDC wxWindowDC;
 // wxPaintDC
 //-----------------------------------------------------------------------------
 
-class wxPaintDC: public wxDC
+class WXDLLEXPORT wxPaintDC: public wxDC
 {
   DECLARE_DYNAMIC_CLASS(wxPaintDC)
 
@@ -91,7 +94,7 @@ class wxPaintDC: public wxDC
     virtual void DestroyClippingRegion(void);
     
     virtual void DrawOpenSpline( wxList *points );
-    
 };
 
-#endif // __GTKDCCLIENTH__
+#endif
+    // _WX_DCCLIENT_H_
index c5854c5110f9c8c3945f0576004d952c883c947e..c6c57376420c83bf866bdbd71898ab7f362a0421 100644 (file)
@@ -1,34 +1,23 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        dcmemory.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
+// Purpose:     wxMemoryDC class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
 // RCS-ID:      $Id$
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKDCMEMORYH__
-#define __GTKDCMEMORYH__
+#ifndef _WX_DCMEMORY_H_
+#define _WX_DCMEMORY_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "dcmemory.h"
 #endif
 
-#include "wx/defs.h"
 #include "wx/dcclient.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class wxMemoryDC;
-
-//-----------------------------------------------------------------------------
-// wxMemoryDC
-//-----------------------------------------------------------------------------
-
 class WXDLLEXPORT wxMemoryDC: public wxPaintDC
 {
   DECLARE_DYNAMIC_CLASS(wxMemoryDC)
@@ -46,5 +35,4 @@ class WXDLLEXPORT wxMemoryDC: public wxPaintDC
 };
 
 #endif
-    // __GTKDCMEMORYH__
-
+    // _WX_DCMEMORY_H_
index 5cb1991fe9e6ef0bbbd3f0b42cc438db70475d70..12d4996e706eb64e599fc519b860cdc79fd977ea 100644 (file)
@@ -1,16 +1,20 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        dcscreen.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxScreenDC class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+#ifndef _WX_DCSCREEN_H_
+#define _WX_DCSCREEN_H_
 
-#ifndef __GTKDCSCREENH__
-#define __GTKDCSCREENH__
+#ifdef __GNUG__
+#pragma interface "dcscreen.h"
+#endif
 
 #include "wx/dcclient.h"
 
@@ -19,14 +23,17 @@ class WXDLLEXPORT wxScreenDC: public wxPaintDC
   DECLARE_DYNAMIC_CLASS(wxScreenDC)
 
  public:
-  wxScreenDC(void);
-  ~wxScreenDC(void);
-
-  static bool StartDrawingOnTop( wxWindow *window );
-  static bool StartDrawingOnTop( wxRectangle *rect = NULL );
-  static bool EndDrawingOnTop(void);
+  // Create a DC representing the whole screen
+  wxScreenDC();
+  ~wxScreenDC();
+
+  // Compatibility with X's requirements for
+  // drawing on top of all windows
+  static bool StartDrawingOnTop(wxWindow* WXUNUSED(window)) { return TRUE; }
+  static bool StartDrawingOnTop(wxRectangle* WXUNUSED(rect) = NULL) { return TRUE; }
+  static bool EndDrawingOnTop() { return TRUE; }
 };
 
 #endif
-    // __GTKDCSCREENH__
+    // _WX_DCSCREEN_H_
 
index db28c7772b6b255fa3ac139d8406126091ce28fb..ebd7bff2a807f2dffa8b36b129d3e80bb37d6408 100644 (file)
@@ -1,91 +1,98 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        dialog.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxDialog class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKDIALOGH__
-#define __GTKDIALOGH__
+#ifndef _WX_DIALOG_H_
+#define _WX_DIALOG_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "dialog.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/string.h"
-#include "wx/event.h"
-#include "wx/window.h"
+#include "wx/panel.h"
 
-//-----------------------------------------------------------------------------
-// forward decls
-//-----------------------------------------------------------------------------
+WXDLLEXPORT_DATA(extern const char*) wxDialogNameStr;
 
-class wxRadioBox;
+// Dialog boxes
+class WXDLLEXPORT wxDialog: public wxPanel
+{
+  DECLARE_DYNAMIC_CLASS(wxDialog)
+public:
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+  wxDialog();
 
-class wxDialog;
+  // Constructor with a modal flag, but no window id - the old convention
+  inline wxDialog(wxWindow *parent,
+           const wxString& title, bool modal,
+           int x = -1, int y= -1, int width = 500, int height = 500,
+           long style = wxDEFAULT_DIALOG_STYLE,
+           const wxString& name = wxDialogNameStr)
+  {
+      long modalStyle = modal ? wxDIALOG_MODAL : wxDIALOG_MODELESS ;
+      Create(parent, -1, title, wxPoint(x, y), wxSize(width, height), style|modalStyle, name);
+  }
 
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
+  // Constructor with no modal flag - the new convention.
+  inline wxDialog(wxWindow *parent, wxWindowID id,
+           const wxString& title,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = wxDEFAULT_DIALOG_STYLE,
+           const wxString& name = wxDialogNameStr)
+  {
+      Create(parent, id, title, pos, size, style, name);
+  }
 
-extern const char *wxDialogNameStr;
+  bool Create(wxWindow *parent, wxWindowID id,
+           const wxString& title, // bool modal = FALSE, // TODO make this a window style?
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = wxDEFAULT_DIALOG_STYLE,
+           const wxString& name = wxDialogNameStr);
 
-//-----------------------------------------------------------------------------
-// wxDialog
-//-----------------------------------------------------------------------------
+  ~wxDialog();
 
-class wxDialog: public wxWindow
-{
-  DECLARE_DYNAMIC_CLASS(wxDialog)
+  virtual bool Destroy();
+  void SetClientSize(int width, int height);
+  void GetPosition(int *x, int *y) const;
+  bool Show(bool show);
+  void Iconize(bool iconize);
+
+  virtual bool IsIconized() const;
+  void Fit();
+
+  void SetTitle(const wxString& title);
+  wxString GetTitle() const ;
 
-  public:
-
-    wxDialog(void);
-    wxDialog( wxWindow *parent, wxWindowID id, const wxString &title,
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, 
-      long style = wxDEFAULT_DIALOG_STYLE, const wxString &name = wxDialogNameStr );
-    bool Create( wxWindow *parent, wxWindowID id, const wxString &title,
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, 
-      long style = wxDEFAULT_DIALOG_STYLE, const wxString &name = wxDialogNameStr );
-    ~wxDialog(void);
-    void SetTitle(const wxString& title);
-    wxString GetTitle(void) const;
-    bool OnClose(void);
-    void OnApply( wxCommandEvent &event );
-    void OnCancel( wxCommandEvent &event );
-    void OnOk( wxCommandEvent &event );
-    void OnPaint(wxPaintEvent& event);
-    bool Destroy(void);
-    void OnCloseWindow(wxCloseEvent& event);
-/*
-    void OnCharHook(wxKeyEvent& event);
-*/
-    virtual bool Show( bool show );
-    virtual int ShowModal(void);
-    virtual void EndModal(int retCode);
-    virtual bool IsModal(void) const { return ((GetWindowStyleFlag() & wxDIALOG_MODAL) == wxDIALOG_MODAL); }
-    virtual void InitDialog(void);
-    
-  private:
-  
-    friend    wxWindow;
-    friend    wxDC;
-    friend    wxRadioBox;
-    bool       m_modalShowing;
-    wxString   m_title;
-    
-  DECLARE_EVENT_TABLE()
-    
+  bool OnClose();
+  void OnCharHook(wxKeyEvent& event);
+  void OnCloseWindow(wxCloseEvent& event);
+
+  void SetModal(bool flag);
+
+  virtual void Centre(int direction = wxBOTH);
+  virtual bool IsModal() const { return ((GetWindowStyleFlag() & wxDIALOG_MODAL) == wxDIALOG_MODAL); }
+
+  virtual int ShowModal();
+  virtual void EndModal(int retCode);
+
+  // Standard buttons
+  void OnOK(wxCommandEvent& event);
+  void OnApply(wxCommandEvent& event);
+  void OnCancel(wxCommandEvent& event);
+
+  // Responds to colour changes
+  void OnSysColourChanged(wxSysColourChangedEvent& event);
+
+DECLARE_EVENT_TABLE()
 };
 
-#endif // __GTKDIALOGH__
+#endif
+    // _WX_DIALOG_H_
index 7d8829f55bd978f0c15a0487457b04e77b032a1a..fe36bb7fec90c094c5270bc272263dbb40651032 100644 (file)
@@ -1,35 +1,47 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        dirdlg.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxDirDialog class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __DIRDIALOGH__
-#define __DIRDIALOGH__
+#ifndef _WX_DIRDLG_H_
+#define _WX_DIRDLG_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "dirdlg.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/list.h"
-#include "wx/control.h"
 #include "wx/dialog.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+class WXDLLEXPORT wxDirDialog: public wxDialog
+{
+DECLARE_DYNAMIC_CLASS(wxDirDialog)
+public:
+    wxDirDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr,
+        const wxString& defaultPath = "",
+        long style = 0, const wxPoint& pos = wxDefaultPosition);
+
+    inline void SetMessage(const wxString& message) { m_message = message; }
+    inline void SetPath(const wxString& path) { m_path = path; }
+    inline void SetStyle(long style) { m_dialogStyle = style; }
 
-class wxDirDialog;
+    inline wxString GetMessage() const { return m_message; }
+    inline wxString GetPath() const { return m_path; }
+    inline long GetStyle() const { return m_dialogStyle; }
 
-//-----------------------------------------------------------------------------
-// wxDirDialog
-//-----------------------------------------------------------------------------
+    int ShowModal();
 
-#endif // __DIRDIALOGH__
+protected:
+    wxString    m_message;
+    long        m_dialogStyle;
+    wxWindow *  m_parent;
+    wxString    m_path;
+};
+
+#endif
+    // _WX_DIRDLG_H_
index cca27d47d8847b9f269a121ec809b3f1e5aac824..0259f2d9435524d0d84917ff347e79aad4336f34 100644 (file)
@@ -1,42 +1,45 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        filedlg.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
-// Licence:     wxWindows licence
+// Purpose:     wxFileDialog class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
+// Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKFILEDLGH__
-#define __GTKFILEDLGH__
+#ifndef _WX_FILEDLG_H_
+#define _WX_FILEDLG_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "filedlg.h"
 #endif
 
 #include "wx/dialog.h"
 
-//-------------------------------------------------------------------------
-// File selector
-//-------------------------------------------------------------------------
+/*
+ * File selector
+ */
 
-extern const char *wxFileSelectorPromptStr;
-extern const char *wxFileSelectorDefaultWildcardStr;
+WXDLLEXPORT_DATA(extern const char*) wxFileSelectorPromptStr;
+WXDLLEXPORT_DATA(extern const char*) wxFileSelectorDefaultWildcardStr;
 
-class wxFileDialog: public wxDialog
+class WXDLLEXPORT wxFileDialog: public wxDialog
 {
-
-  DECLARE_DYNAMIC_CLASS(wxFileDialog)
-
-  public:
-
-    wxFileDialog() {};
-
+DECLARE_DYNAMIC_CLASS(wxFileDialog)
+protected:
+    wxString    m_message;
+    long        m_dialogStyle;
+    wxWindow *  m_parent;
+    wxString    m_dir;
+    wxString    m_path; // Full path
+    wxString    m_fileName;
+    wxString    m_wildCard;
+    int         m_filterIndex;
+public:
     wxFileDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr,
-        const wxString& defaultDir = "", const wxString& defaultFile = "",
-  const wxString& wildCard = wxFileSelectorDefaultWildcardStr,
+        const wxString& defaultDir = "", const wxString& defaultFile = "", const wxString& wildCard = wxFileSelectorDefaultWildcardStr,
         long style = 0, const wxPoint& pos = wxDefaultPosition);
 
     inline void SetMessage(const wxString& message) { m_message = message; }
@@ -47,48 +50,40 @@ class wxFileDialog: public wxDialog
     inline void SetStyle(long style) { m_dialogStyle = style; }
     inline void SetFilterIndex(int filterIndex) { m_filterIndex = filterIndex; }
 
-    inline wxString GetMessage(void) const { return m_message; }
-    inline wxString GetPath(void) const { return m_path; }
-    inline wxString GetDirectory(void) const { return m_dir; }
-    inline wxString GetFilename(void) const { return m_fileName; }
-    inline wxString GetWildcard(void) const { return m_wildCard; }
-    inline long GetStyle(void) const { return m_dialogStyle; }
-    inline int GetFilterIndex(void) const { return m_filterIndex ; }
+    inline wxString GetMessage() const { return m_message; }
+    inline wxString GetPath() const { return m_path; }
+    inline wxString GetDirectory() const { return m_dir; }
+    inline wxString GetFilename() const { return m_fileName; }
+    inline wxString GetWildcard() const { return m_wildCard; }
+    inline long GetStyle() const { return m_dialogStyle; }
+    inline int GetFilterIndex() const { return m_filterIndex ; }
 
-    int ShowModal(void);
-
-  protected:
-
-    wxString    m_message;
-    long        m_dialogStyle;
-    wxWindow *  m_parent;
-    wxString    m_dir;
-    wxString    m_path; // Full path
-    wxString    m_fileName;
-    wxString    m_wildCard;
-    int         m_filterIndex;
+    int ShowModal();
 };
 
-#define wxOPEN 1
-#define wxSAVE 2
-#define wxOVERWRITE_PROMPT 4
-#define wxHIDE_READONLY 8
-#define wxFILE_MUST_EXIST 16
+#define wxOPEN              0x0001
+#define wxSAVE              0x0002
+#define wxOVERWRITE_PROMPT  0x0004
+#define wxHIDE_READONLY     0x0008
+#define wxFILE_MUST_EXIST   0x0010
 
 // File selector - backward compatibility
+char* WXDLLEXPORT wxFileSelector(const char *message = wxFileSelectorPromptStr, const char *default_path = NULL,
+                     const char *default_filename = NULL, const char *default_extension = NULL,
+                     const char *wildcard = wxFileSelectorDefaultWildcardStr, int flags = 0,
+                     wxWindow *parent = NULL, int x = -1, int y = -1);
 
-char* wxFileSelector(const char *message = wxFileSelectorPromptStr, const char *default_path = NULL,
-         const char *default_filename = NULL, const char *default_extension = NULL,
-         const char *wildcard = wxFileSelectorDefaultWildcardStr, int flags = 0,
-         wxWindow *parent = NULL, int x = -1, int y = -1);
-
-char* wxLoadFileSelector(const char *what, const char *extension, const char *default_name = NULL,
-         wxWindow *parent = NULL);
-
-char* wxSaveFileSelector(const char *what, const char *extension, const char *default_name = NULL,
-         wxWindow *parent = NULL);
+// An extended version of wxFileSelector
+char* WXDLLEXPORT wxFileSelectorEx(const char *message = wxFileSelectorPromptStr, const char *default_path = NULL,
+                     const char *default_filename = NULL, int *indexDefaultExtension = NULL,
+                     const char *wildcard = wxFileSelectorDefaultWildcardStr, int flags = 0,
+                     wxWindow *parent = NULL, int x = -1, int y = -1);
 
+// Generic file load dialog
+char* WXDLLEXPORT wxLoadFileSelector(const char *what, const char *extension, const char *default_name = NULL, wxWindow *parent = NULL);
 
+// Generic file save dialog
+char* WXDLLEXPORT wxSaveFileSelector(const char *what, const char *extension, const char *default_name = NULL, wxWindow *parent = NULL);
 
 #endif
-    // __GTKFILEDLGH__
+    // _WX_FILEDLG_H_
index f60894b75e7afbde37b946364dd814e1a036fc00..2079f2d0f0ef819972d80f87e40b4c8101d86a08 100644 (file)
@@ -1,87 +1,88 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        font.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxFont class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKFONTH__
-#define __GTKFONTH__
+#ifndef _WX_FONT_H_
+#define _WX_FONT_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "font.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/string.h"
-#include "wx/hash.h"
 #include "wx/gdiobj.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class wxDC;
-class wxPaintDC;
-class wxWindow;
+class WXDLLEXPORT wxFont;
 
-class wxFont;
-class wxFontNameDirectory;
-
-//-----------------------------------------------------------------------------
-// global variables
-//-----------------------------------------------------------------------------
+class WXDLLEXPORT wxFontRefData: public wxGDIRefData
+{
+    friend class WXDLLEXPORT wxFont;
+public:
+    wxFontRefData();
+    ~wxFontRefData();
+protected:
+  int           m_pointSize;
+  int           m_family;
+  int           m_style;
+  int           m_weight;
+  bool          m_underlined;
+  wxString      m_faceName;
+/* TODO: implementation
+  WXHFONT       m_hFont;
+*/
+};
 
-// extern wxFontNameDirectory wxTheFontNameDirectory;  // defined below
+#define M_FONTDATA ((wxFontRefData *)m_refData)
 
-//-----------------------------------------------------------------------------
-// wxFont
-//-----------------------------------------------------------------------------
+WXDLLEXPORT_DATA(extern const char*) wxEmptyString;
 
-class wxFont: public wxGDIObject 
+// Font
+class WXDLLEXPORT wxFont: public wxGDIObject
 {
   DECLARE_DYNAMIC_CLASS(wxFont)
-  
-  public:
-    wxFont(void);
-    wxFont( int PointSize, int FontIdOrFamily, int Style, int Weight,
-          bool underlined = FALSE, const char *Face=NULL );
-    wxFont( int PointSize, const char *Face, int Family, int Style, int Weight, 
-          bool underlined = FALSE );
-    wxFont( const wxFont& font );
-    wxFont( const wxFont* font );
-    ~wxFont(void);
-    wxFont& operator = ( const wxFont& font );
-    bool operator == ( const wxFont& font );
-    bool operator != ( const wxFont& font );
-    bool Ok();
-
-    int GetPointSize(void) const;
-    wxString GetFaceName(void) const;
-    int GetFamily(void) const;
-    wxString GetFamilyString(void) const;
-    int GetFontId(void) const;
-    wxString GetFaceString(void) const;
-    int GetStyle(void) const;
-    wxString GetStyleString(void) const;
-    int GetWeight(void) const;
-    wxString GetWeightString(void) const;
-    bool GetUnderlined(void) const;
-
-    wxFont( char *xFontName );
-    
-  private:
-  
-    friend wxDC;
-    friend wxPaintDC;
-    friend wxWindow;
-
-    // no data :-)
+public:
+  wxFont();
+  wxFont(int pointSize, int family, int style, int weight, bool underlined = FALSE, const wxString& faceName = wxEmptyString);
+  inline wxFont(const wxFont& font) { Ref(font); }
+  inline wxFont(const wxFont* font) { if (font) Ref(*font); }
+
+  ~wxFont();
+
+  bool Create(int pointSize, int family, int style, int weight, bool underlined = FALSE, const wxString& faceName = wxEmptyString);
+
+  virtual bool Ok() const { return (m_refData != NULL) ; }
+
+  inline int GetPointSize() const { return M_FONTDATA->m_pointSize; }
+  inline int GetFamily() const { return M_FONTDATA->m_family; }
+  inline int GetStyle() const { return M_FONTDATA->m_style; }
+  inline int GetWeight() const { return M_FONTDATA->m_weight; }
+  wxString GetFamilyString() const ;
+  wxString GetFaceName() const ;
+  wxString GetStyleString() const ;
+  wxString GetWeightString() const ;
+  inline bool GetUnderlined() const { return M_FONTDATA->m_underlined; }
+
+  void SetPointSize(int pointSize);
+  void SetFamily(int family);
+  void SetStyle(int style);
+  void SetWeight(int weight);
+  void SetFaceName(const wxString& faceName);
+  void SetUnderlined(bool underlined);
+
+  inline wxFont& operator = (const wxFont& font) { if (*this == font) return (*this); Ref(font); return *this; }
+  inline bool operator == (const wxFont& font) { return m_refData == font.m_refData; }
+  inline bool operator != (const wxFont& font) { return m_refData != font.m_refData; }
+
+  // Implementation
+protected:
+  void Unshare();
 };
 
-#endif // __GTKFONTH__
+#endif
+    // _WX_FONT_H_
index 03ca33c3864ed7436af319e01bfa38b37d4504b3..70247ae171f0b631d791644a3337d7264fa8e56c 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        frame.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
-// Licence:     wxWindows licence
+// Purpose:     wxFrame class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
+// Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKFRAMEH__
-#define __GTKFRAMEH__
+#ifndef _WX_FRAME_H_
+#define _WX_FRAME_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "frame.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
 #include "wx/window.h"
+#include "wx/toolbar.h"
+#include "wx/accel.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class wxMDIChildFrame;
-class wxMDIClientWindow;
-class wxMenu;
-class wxMenuBar;
-class wxToolBar;
-class wxStatusBar;
-
-class wxFrame;
-
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
+WXDLLEXPORT_DATA(extern const char*) wxFrameNameStr;
+WXDLLEXPORT_DATA(extern const char*) wxToolBarNameStr;
 
-extern const char *wxFrameNameStr;
-extern const char *wxToolBarNameStr;
+class WXDLLEXPORT wxMenuBar;
+class WXDLLEXPORT wxStatusBar;
 
-//-----------------------------------------------------------------------------
-// wxFrame
-//-----------------------------------------------------------------------------
+class WXDLLEXPORT wxFrame: public wxWindow {
 
-class wxFrame: public wxWindow
-{
   DECLARE_DYNAMIC_CLASS(wxFrame)
-public:
 
+public:
   wxFrame();
-  wxFrame( wxWindow *parent, wxWindowID id, const wxString &title,
-    const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
-    long style = wxDEFAULT_FRAME_STYLE, const wxString &name = wxFrameNameStr );
-  bool Create( wxWindow *parent, wxWindowID id, const wxString &title,
-    const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
-    long style = wxDEFAULT_FRAME_STYLE, const wxString &name = wxFrameNameStr );
+  inline wxFrame(wxWindow *parent,
+           wxWindowID id,
+           const wxString& title,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = wxDEFAULT_FRAME_STYLE,
+           const wxString& name = wxFrameNameStr)
+  {
+      Create(parent, id, title, pos, size, style, name);
+  }
+
   ~wxFrame();
-  bool Destroy();
 
-  virtual bool Show( bool show );
-  virtual void Enable( bool enable );
+  bool Create(wxWindow *parent,
+           wxWindowID id,
+           const wxString& title,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = wxDEFAULT_FRAME_STYLE,
+           const wxString& name = wxFrameNameStr);
+
+  virtual bool Destroy();
+  void SetClientSize(int width, int height);
+  void GetClientSize(int *width, int *height) const;
+
+  void GetSize(int *width, int *height) const ;
+  void GetPosition(int *x, int *y) const ;
+  void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
+
+  virtual bool OnClose();
+
+  void OnSize(wxSizeEvent& event);
+  void OnMenuHighlight(wxMenuEvent& event);
+  void OnActivate(wxActivateEvent& event);
+  void OnIdle(wxIdleEvent& event);
+  void OnCloseWindow(wxCloseEvent& event);
+
+  bool Show(bool show);
+
+  // Set menu bar
+  void SetMenuBar(wxMenuBar *menu_bar);
+  virtual wxMenuBar *GetMenuBar() const ;
+
+  // Set title
+  void SetTitle(const wxString& title);
+  wxString GetTitle() const ;
 
-  virtual void GetClientSize( int *width, int *height ) const;
-  
-    // set minimal/maxmimal size for the frame
-  virtual void SetSizeHints( int minW, int minH, int maxW, int maxH, int incW = -1 );
+  void Centre(int direction = wxBOTH);
 
+  // Call this to simulate a menu command
+  virtual void Command(int id);
+  virtual void ProcessCommand(int id);
+
+  // Set icon
+  virtual void SetIcon(const wxIcon& icon);
+
+  // Create status line
   virtual wxStatusBar* CreateStatusBar(int number=1, long style = wxST_SIZEGRIP, wxWindowID id = 0,
     const wxString& name = "statusBar");
-  virtual wxStatusBar *GetStatusBar();
-  virtual void SetStatusText( const wxString &text, int number = 0 );
-  virtual void SetStatusWidths( int n, int *width );
-
-  virtual wxToolBar* CreateToolBar( long style = wxNO_BORDER|wxTB_HORIZONTAL, wxWindowID id = -1, 
-                                    const wxString& name = wxToolBarNameStr);
-  virtual wxToolBar *GetToolBar();
-  
-  virtual void SetMenuBar( wxMenuBar *menuBar );
-  virtual wxMenuBar *GetMenuBar();
-
-  virtual void SetTitle( const wxString &title );
-  virtual wxString GetTitle() const { return m_title; }
-  
-  virtual void SetIcon( const wxIcon &icon );
-
-  void OnActivate( wxActivateEvent &WXUNUSED(event) ) { } // called from docview.cpp
-  void OnSize( wxSizeEvent &event );
-  void OnCloseWindow( wxCloseEvent& event );
-  void OnIdle(wxIdleEvent& event);
+  inline wxStatusBar *GetStatusBar() const { return m_frameStatusBar; }
+  virtual void PositionStatusBar();
+  virtual wxStatusBar *OnCreateStatusBar(int number, long style, wxWindowID id,
+    const wxString& name);
+
+  // Create toolbar
+  virtual wxToolBar* CreateToolBar(long style = wxNO_BORDER|wxTB_HORIZONTAL, wxWindowID id = -1, const wxString& name = wxToolBarNameStr);
+  virtual wxToolBar *OnCreateToolBar(long style, wxWindowID id, const wxString& name);
+  // If made known to the frame, the frame will manage it automatically.
+  virtual inline void SetToolBar(wxToolBar *toolbar) { m_frameToolBar = toolbar; }
+  virtual inline wxToolBar *GetToolBar() const { return m_frameToolBar; }
+  virtual void PositionToolBar();
+
+  // Set status line text
+  virtual void SetStatusText(const wxString& text, int number = 0);
+
+  // Set status line widths
+  virtual void SetStatusWidths(int n, const int widths_field[]);
+
+  // Hint to tell framework which status bar to use
+  // TODO: should this go into a wxFrameworkSettings class perhaps?
+  static void UseNativeStatusBar(bool useNative) { m_useNativeStatusBar = useNative; };
+  static bool UsesNativeStatusBar() { return m_useNativeStatusBar; };
+
+  // Fit frame around subwindows
+  virtual void Fit();
 
-private:
-  friend  wxWindow;
-  friend  wxMDIChildFrame;
-  friend  wxMDIClientWindow;
+  // Iconize
+  virtual void Iconize(bool iconize);
 
-  // update frame's menus (called from OnIdle)
+  virtual bool IsIconized() const ;
+
+  // Compatibility
+  inline bool Iconized() const { return IsIconized(); }
+
+  virtual void Maximize(bool maximize);
+
+  virtual void SetAcceleratorTable(const wxAcceleratorTable& accel);
+
+  // Responds to colour changes
+  void OnSysColourChanged(wxSysColourChangedEvent& event);
+
+  // Query app for menu item updates (called from OnIdle)
   void DoMenuUpdates();
   void DoMenuUpdates(wxMenu* menu);
 
-  wxMenuBar    *m_frameMenuBar;
-  wxStatusBar  *m_frameStatusBar;
-  wxToolBar    *m_frameToolBar;
-  int           m_toolBarHeight;
-  wxString      m_title;
-  wxIcon        m_icon;
+  // Checks if there is a toolbar, and returns the first free client position
+  virtual wxPoint GetClientAreaOrigin() const;
+
+protected:
+  wxMenuBar *           m_frameMenuBar;
+  wxStatusBar *         m_frameStatusBar;
+  wxIcon                m_icon;
+  bool                  m_iconized;
+  static bool           m_useNativeStatusBar;
+  wxToolBar *           m_frameToolBar ;
+  wxAcceleratorTable    m_acceleratorTable;
 
   DECLARE_EVENT_TABLE()
 };
 
-#endif // __GTKFRAMEH__
+#endif
+    // _WX_FRAME_H_
index 2aa81557e1bf8e35222707bea907297ffbd7c4ab..ce19d9ef1fb20d29e9fca2bd29477fc5985d642a 100644 (file)
@@ -1,83 +1,69 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        gauge.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxGauge class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKGAUGEH__
-#define __GTKGAUGEH__
+#ifndef _WX_GAUGE_H_
+#define _WX_GAUGE_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "gauge.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/list.h"
 #include "wx/control.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class wxGauge;
-
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
-
-extern const char* wxGaugeNameStr;
+WXDLLEXPORT_DATA(extern const char*) wxGaugeNameStr;
 
-//-----------------------------------------------------------------------------
-// wxGaugeBox
-//-----------------------------------------------------------------------------
-
-class wxGauge: public wxControl
+// Group box
+class WXDLLEXPORT wxGauge: public wxControl
 {
   DECLARE_DYNAMIC_CLASS(wxGauge)
-  
-  public:
-    inline wxGauge(void) { m_rangeMax = 0; m_gaugePos = 0; m_useProgressBar = TRUE; }
+ public:
+  inline wxGauge() { m_rangeMax = 0; m_gaugePos = 0; }
 
   inline wxGauge(wxWindow *parent, wxWindowID id,
            int range,
            const wxPoint& pos = wxDefaultPosition,
            const wxSize& size = wxDefaultSize,
            long style = wxGA_HORIZONTAL,
+           const wxValidator& validator = wxDefaultValidator,
            const wxString& name = wxGaugeNameStr)
   {
-    Create(parent, id, range, pos, size, style, name);
-  };
+    Create(parent, id, range, pos, size, style, validator, name);
+  }
 
   bool Create(wxWindow *parent, wxWindowID id,
            int range,
            const wxPoint& pos = wxDefaultPosition,
            const wxSize& size = wxDefaultSize,
            long style = wxGA_HORIZONTAL,
-           const wxString& name = wxGaugeNameStr );
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxGaugeNameStr);
+
+  void SetShadowWidth(int w);
+  void SetBezelFace(int w);
+  void SetRange(int r);
+  void SetValue(int pos);
 
-  void SetShadowWidth( int WXUNUSED(w) ) {};
-  void SetBezelFace( int WXUNUSED(w) ) {};
-  void SetRange( int r );
-  void SetValue( int pos );
-  int GetShadowWidth(void) const { return 0; };
-  int GetBezelFace(void) const { return 0; };
-  int GetRange(void) const;
-  int GetValue(void) const;
+  int GetShadowWidth() const ;
+  int GetBezelFace() const ;
+  int GetRange() const ;
+  int GetValue() const ;
 
-  // Are we a Win95/GTK progress bar, or a normal gauge?
-  inline bool GetProgressBar(void) const { return m_useProgressBar; }
+  void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
+
+  virtual void Command(wxCommandEvent& WXUNUSED(event)) {} ;
 
  protected:
    int      m_rangeMax;
    int      m_gaugePos;
-   bool     m_useProgressBar;
 };
 
-#endif // __GTKGAUGEH__
+#endif
+    // _WX_GAUGE_H_
index 2b6a5d1921378bd6550fd422decd02ca3a5e3fa8..9263d4d6adaae1348825f7b975f88e931a71eda1 100644 (file)
@@ -1,31 +1,42 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        gdiobj.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxGDIObject class: base class for other GDI classes
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GDIOBJH__
-#define __GDIOBJH__
+#ifndef _WX_GDIOBJ_H_
+#define _WX_GDIOBJ_H_
 
 #include "wx/object.h"
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "gdiobj.h"
 #endif
 
+class WXDLLEXPORT wxGDIRefData: public wxObjectRefData {
+public:
+    inline wxGDIRefData()
+       {
+       }
+};
+
+#define M_GDIDATA ((wxGDIRefData *)m_refData)
+
 class WXDLLEXPORT wxGDIObject: public wxObject
 {
 DECLARE_DYNAMIC_CLASS(wxGDIObject)
  public:
-  inline wxGDIObject(void) { m_visible = FALSE; };
-  inline ~wxGDIObject(void) {};
+  inline wxGDIObject() { m_visible = FALSE; };
+  inline ~wxGDIObject() {};
+
+  inline bool IsNull() const { return (m_refData == 0); }
 
-  virtual bool GetVisible(void) { return m_visible; }
+  virtual bool GetVisible() { return m_visible; }
   virtual void SetVisible(bool v) { m_visible = v; }
 
 protected:
@@ -34,4 +45,4 @@ protected:
 };
 
 #endif
-    // __GDIOBJH__
+    // _WX_GDIOBJ_H_
index a79e4906efbcd2ae00a4d9305feb91ac715e8cc7..f68c23154b755734659dd4de24320a078aa4cb98 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        icon.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxIcon class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKICONH__
-#define __GTKICONH__
+#ifndef _WX_ICON_H_
+#define _WX_ICON_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "icon.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
 #include "wx/bitmap.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+class WXDLLEXPORT wxIconRefData: public wxBitmapRefData
+{
+    friend class WXDLLEXPORT wxBitmap;
+    friend class WXDLLEXPORT wxIcon;
+public:
+    wxIconRefData();
+    ~wxIconRefData();
 
-class wxIcon;
+public:
+/* TODO: whatever your actual icon handle is
+  WXHICON m_hIcon;
+*/
+};
 
-//-----------------------------------------------------------------------------
-// wxIcon
-//-----------------------------------------------------------------------------
+#define M_ICONDATA ((wxIconRefData *)m_refData)
+#define M_ICONHANDLERDATA ((wxIconRefData *)bitmap->GetRefData())
 
-class wxIcon: public wxBitmap
+// Icon
+class WXDLLEXPORT wxIcon: public wxBitmap
 {
   DECLARE_DYNAMIC_CLASS(wxIcon)
 
 public:
+  wxIcon();
 
-  wxIcon(void) {};
-
+  // Copy constructors
   inline wxIcon(const wxIcon& icon) { Ref(icon); }
   inline wxIcon(const wxIcon* icon) { if (icon) Ref(*icon); }
-  wxIcon( char **bits, int width=-1, int height=-1 );
-  
+
+  wxIcon(const char bits[], int width, int height);
+  wxIcon(const wxString& name, long flags = wxBITMAP_TYPE_ICO_RESOURCE,
+    int desiredWidth = -1, int desiredHeight = -1);
+  ~wxIcon();
+
+  bool LoadFile(const wxString& name, long flags = wxBITMAP_TYPE_ICO_RESOURCE,
+      int desiredWidth = -1, int desiredHeight = -1);
+
   inline wxIcon& operator = (const wxIcon& icon) { if (*this == icon) return (*this); Ref(icon); return *this; }
   inline bool operator == (const wxIcon& icon) { return m_refData == icon.m_refData; }
   inline bool operator != (const wxIcon& icon) { return m_refData != icon.m_refData; }
+
+/* TODO: implementation
+  void SetHICON(WXHICON ico);
+  inline WXHICON GetHICON() const { return (M_ICONDATA ? M_ICONDATA->m_hIcon : 0); }
+*/
+
+/* TODO */
+  virtual bool Ok() const { return (m_refData != NULL) ; }
+};
+
+/* Example handlers. TODO: write your own handlers for relevant types.
+
+class WXDLLEXPORT wxICOFileHandler: public wxBitmapHandler
+{
+  DECLARE_DYNAMIC_CLASS(wxICOFileHandler)
+public:
+  inline wxICOFileHandler()
+  {
+       m_name = "ICO icon file";
+       m_extension = "ico";
+       m_type = wxBITMAP_TYPE_ICO;
+  };
+
+  virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
+      int desiredWidth = -1, int desiredHeight = -1);
+};
+
+class WXDLLEXPORT wxICOResourceHandler: public wxBitmapHandler
+{
+  DECLARE_DYNAMIC_CLASS(wxICOResourceHandler)
+public:
+  inline wxICOResourceHandler()
+  {
+       m_name = "ICO resource";
+       m_extension = "ico";
+       m_type = wxBITMAP_TYPE_ICO_RESOURCE;
+  };
+
+  virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
+      int desiredWidth = -1, int desiredHeight = -1);
+
 };
 
+*/
 
-#endif // __GTKICONH__
+#endif
+    // _WX_ICON_H_
index 957c16581adbdc734bdd31634b7dcba426592fdd..30324fc035da5e6d6e49504afff284bc508d31b9 100644 (file)
@@ -1,25 +1,24 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        joystick.h
 // Purpose:     wxJoystick class
-// Author:      Guilhem Lavaux
+// Author:      AUTHOR
 // Modified by:
-// Created:     01/02/97
+// Created:     ??/??/98
 // RCS-ID:      $Id$
-// Copyright:
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifndef __JOYSTICKH__
-#define __JOYSTICKH__
+#ifndef _WX_JOYSTICK_H_
+#define _WX_JOYSTICK_H_
 
 #ifdef __GNUG__
 #pragma interface "joystick.h"
 #endif
 
 #include "wx/event.h"
-#include "wx/thread.h"
 
-class WXDLLEXPORT wxJoystick: public wxObject, public wxThread
+class WXDLLEXPORT wxJoystick: public wxObject
 {
   DECLARE_DYNAMIC_CLASS(wxJoystick)
  public:
@@ -27,56 +26,56 @@ class WXDLLEXPORT wxJoystick: public wxObject, public wxThread
    * Public interface
    */
 
-  wxJoystick(int joystick = wxJOYSTICK1);
+  wxJoystick(int joystick = wxJOYSTICK1) { m_joystick = joystick; };
 
   // Attributes
   ////////////////////////////////////////////////////////////////////////////
 
-  wxPoint GetPosition(void) const;
-  int GetZPosition(void) const;
-  int GetButtonState(void) const;
-  int GetPOVPosition(void) const;
-  int GetPOVCTSPosition(void) const;
-  int GetRudderPosition(void) const;
-  int GetUPosition(void) const;
-  int GetVPosition(void) const;
-  int GetMovementThreshold(void) const;
+  wxPoint GetPosition() const;
+  int GetZPosition() const;
+  int GetButtonState() const;
+  int GetPOVPosition() const;
+  int GetPOVCTSPosition() const;
+  int GetRudderPosition() const;
+  int GetUPosition() const;
+  int GetVPosition() const;
+  int GetMovementThreshold() const;
   void SetMovementThreshold(int threshold) ;
 
   // Capabilities
   ////////////////////////////////////////////////////////////////////////////
 
-  bool IsOk(void) const; // Checks that the joystick is functioning
-  int GetNumberJoysticks(void) const ;
-  int GetManufacturerId(void) const ;
-  int GetProductId(void) const ;
-  wxString GetProductName(void) const ;
-  int GetXMin(void) const;
-  int GetYMin(void) const;
-  int GetZMin(void) const;
-  int GetXMax(void) const;
-  int GetYMax(void) const;
-  int GetZMax(void) const;
-  int GetNumberButtons(void) const;
-  int GetNumberAxes(void) const;
-  int GetMaxButtons(void) const;
-  int GetMaxAxes(void) const;
-  int GetPollingMin(void) const;
-  int GetPollingMax(void) const;
-  int GetRudderMin(void) const;
-  int GetRudderMax(void) const;
-  int GetUMin(void) const;
-  int GetUMax(void) const;
-  int GetVMin(void) const;
-  int GetVMax(void) const;
-
-  bool HasRudder(void) const;
-  bool HasZ(void) const;
-  bool HasU(void) const;
-  bool HasV(void) const;
-  bool HasPOV(void) const;
-  bool HasPOV4Dir(void) const;
-  bool HasPOVCTS(void) const;
+  bool IsOk() const; // Checks that the joystick is functioning
+  int GetNumberJoysticks() const ;
+  int GetManufacturerId() const ;
+  int GetProductId() const ;
+  wxString GetProductName() const ;
+  int GetXMin() const;
+  int GetYMin() const;
+  int GetZMin() const;
+  int GetXMax() const;
+  int GetYMax() const;
+  int GetZMax() const;
+  int GetNumberButtons() const;
+  int GetNumberAxes() const;
+  int GetMaxButtons() const;
+  int GetMaxAxes() const;
+  int GetPollingMin() const;
+  int GetPollingMax() const;
+  int GetRudderMin() const;
+  int GetRudderMax() const;
+  int GetUMin() const;
+  int GetUMax() const;
+  int GetVMin() const;
+  int GetVMax() const;
+
+  bool HasRudder() const;
+  bool HasZ() const;
+  bool HasU() const;
+  bool HasV() const;
+  bool HasPOV() const;
+  bool HasPOV4Dir() const;
+  bool HasPOVCTS() const;
 
   // Operations
   ////////////////////////////////////////////////////////////////////////////
@@ -84,19 +83,11 @@ class WXDLLEXPORT wxJoystick: public wxObject, public wxThread
   // pollingFreq = 0 means that movement events are sent when above the threshold.
   // If pollingFreq > 0, events are received every this many milliseconds.
   bool SetCapture(wxWindow* win, int pollingFreq = 0);
-  bool ReleaseCapture(void);
+  bool ReleaseCapture();
 
 protected:
   int       m_joystick;
-  wxPoint   m_lastposition;
-  int      m_axe[15];
-  int      m_buttons;
-  wxWindow *m_catchwin;
-  int      m_polling;
-
-  void    *Entry(void);
 };
 
 #endif
-    // __JOYSTICKH__
-
+    // _WX_JOYSTICK_H_
index 20518701e7774c32df18a3d74b7222d39ebb87d5..d95db4379b0a72abd9bacc25851f2b4d7d1657f3 100644 (file)
@@ -1,78 +1,97 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        listbox.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxListBox class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKLISTBOXH__
-#define __GTKLISTBOXH__
+#ifndef _WX_LISTBOX_H_
+#define _WX_LISTBOX_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "listbox.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/list.h"
 #include "wx/control.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class wxListBox;
+WXDLLEXPORT_DATA(extern const char*) wxListBoxNameStr;
 
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
+// forward decl for GetSelections()
+class WXDLLEXPORT wxArrayInt;
 
-extern const char *wxListBoxNameStr;
+WXDLLEXPORT_DATA(extern const char*) wxEmptyString;
 
-//-----------------------------------------------------------------------------
-// wxListBox
-//-----------------------------------------------------------------------------
-
-class wxListBox: public wxControl
+// List box item
+class WXDLLEXPORT wxListBox: public wxControl
 {
   DECLARE_DYNAMIC_CLASS(wxListBox)
+ public:
+
+  wxListBox();
+  inline wxListBox(wxWindow *parent, wxWindowID id,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           int n = 0, const wxString choices[] = NULL,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxListBoxNameStr)
+  {
+    Create(parent, id, pos, size, n, choices, style, validator, name);
+  }
+
+  bool Create(wxWindow *parent, wxWindowID id,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           int n = 0, const wxString choices[] = NULL,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxListBoxNameStr);
+
+  ~wxListBox();
+
+  virtual void Append(const wxString& item);
+  virtual void Append(const wxString& item, char *clientData);
+  virtual void Set(int n, const wxString* choices, char **clientData = NULL);
+  virtual int FindString(const wxString& s) const ;
+  virtual void Clear();
+  virtual void SetSelection(int n, bool select = TRUE);
 
-  public:
-
-    wxListBox(void);
-    wxListBox( wxWindow *parent, wxWindowID id, 
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, 
-      int n = 0, const wxString choices[] = NULL,
-      long style = 0, const wxString &name = wxListBoxNameStr );
-    bool Create( wxWindow *parent, wxWindowID id,
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, 
-      int n = 0, const wxString choices[] = NULL,
-      long style = 0, const wxString &name = wxListBoxNameStr );
-    void Append( const wxString &item );
-    void Append( const wxString &item, char *clientData );
-    void Clear(void);
-    void Delete( int n );
-    void Deselect( int n );
-    int FindString( const wxString &item ) const;
-    char *GetClientData( int n ) const;
-    int GetSelection(void) const;
-    int GetSelections( class wxArrayInt &) const;
-    wxString GetString( int n ) const;
-    wxString GetStringSelection(void) const;
-    int Number(void);
-    bool Selected( int n );
-    void Set( int n, const wxString *choices );
-    void SetClientData( int n, char *clientData );
-    void SetFirstItem( int n );
-    void SetFirstItem( const wxString &item );
-    void SetSelection( int n, bool select = TRUE );
-    void SetString( int n, const wxString &string );
-    void SetStringSelection( const wxString &string, bool select = TRUE );
+  virtual void Deselect(int n);
 
+  // For single choice list item only
+  virtual int GetSelection() const ;
+  virtual void Delete(int n);
+  virtual char *GetClientData(int n) const ;
+  virtual void SetClientData(int n, char *clientData);
+  virtual void SetString(int n, const wxString& s);
+
+  // For single or multiple choice list item
+  virtual int GetSelections(wxArrayInt& aSelections) const;
+  virtual bool Selected(int n) const ;
+  virtual wxString GetString(int n) const ;
+  virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
+
+  // Set the specified item at the first visible item
+  // or scroll to max range.
+  virtual void SetFirstItem(int n) ;
+  virtual void SetFirstItem(const wxString& s) ;
+
+  virtual void InsertItems(int nItems, const wxString items[], int pos);
+
+  virtual wxString GetStringSelection() const ;
+  virtual bool SetStringSelection(const wxString& s, bool flag = TRUE);
+  virtual int Number() const ;
+
+  void Command(wxCommandEvent& event);
+
+ protected:
+  int       m_noItems;
+  int       m_selected;
 };
 
-#endif // __GTKLISTBOXH__
+#endif
+    // _WX_LISTBOX_H_
index 31fde37aa4b1a64dc5da635d69fcfcda7dd5e424..1daec940083e68d3eff7c3e77af02cb293b14b84 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        mdi.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     MDI (Multiple Document Interface) classes.
+//              This doesn't have to be implemented just like Windows,
+//              it could be a tabbed design as in wxGTK.
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __MDIH__
-#define __MDIH__
+#ifndef _WX_MDI_H_
+#define _WX_MDI_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "mdi.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/list.h"
-#include "wx/control.h"
-#include "wx/panel.h"
 #include "wx/frame.h"
-#include "wx/toolbar.h"
-
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class wxMDIParentFrame;
-class wxMDIClientWindow;
-class wxMDIChildFrame;
-
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
 
-extern const char* wxFrameNameStr;
-extern const char* wxStatusLineNameStr;
+WXDLLEXPORT_DATA(extern const char*) wxFrameNameStr;
+WXDLLEXPORT_DATA(extern const char*) wxStatusLineNameStr;
 
-//-----------------------------------------------------------------------------
-// wxMDIParentFrame
-//-----------------------------------------------------------------------------
+class WXDLLEXPORT wxMDIClientWindow;
+class WXDLLEXPORT wxMDIChildFrame;
 
-class wxMDIParentFrame: public wxFrame
+class WXDLLEXPORT wxMDIParentFrame: public wxFrame
 {
-  DECLARE_DYNAMIC_CLASS(wxMDIParentFrame)
-
-  friend class wxMDIChildFrame;
-  
-  public:
-
-    wxMDIParentFrame(void);
-    wxMDIParentFrame( wxWindow *parent,
-      wxWindowID id, const wxString& title,
-      const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-      long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
-      const wxString& name = wxFrameNameStr );
-  ~wxMDIParentFrame(void);
-   bool Create( wxWindow *parent,
-      wxWindowID id, const wxString& title,
-      const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-      long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
-      const wxString& name = wxFrameNameStr );
-
-
-    void GetClientSize(int *width, int *height) const;
-    wxMDIChildFrame *GetActiveChild(void) const;
-    
-    wxMDIClientWindow *GetClientWindow(void) const; 
-    virtual wxMDIClientWindow *OnCreateClient(void);
-  
-    virtual void Cascade(void) {};
-    virtual void Tile(void) {};
-    virtual void ArrangeIcons(void) {};
-    virtual void ActivateNext(void);
-    virtual void ActivatePrevious(void);
-
-    void OnActivate( wxActivateEvent& event );
-    void OnSysColourChanged( wxSysColourChangedEvent& event );
-    
- //private: 
-    wxMDIChildFrame                *m_currentChild;
-    
-    void SetMDIMenuBar( wxMenuBar *menu_bar );
-    
- private:
-    wxMDIClientWindow              *m_clientWindow;
-    bool                            m_parentFrameActive;
-    wxMenuBar                      *m_mdiMenuBar;
-
-  DECLARE_EVENT_TABLE()    
+DECLARE_DYNAMIC_CLASS(wxMDIParentFrame)
+
+  friend class WXDLLEXPORT wxMDIChildFrame;
+public:
+
+  wxMDIParentFrame();
+  inline wxMDIParentFrame(wxWindow *parent,
+           wxWindowID id,
+           const wxString& title,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,  // Scrolling refers to client window
+           const wxString& name = wxFrameNameStr)
+  {
+      Create(parent, id, title, pos, size, style, name);
+  }
+
+  ~wxMDIParentFrame();
+
+  bool Create(wxWindow *parent,
+           wxWindowID id,
+           const wxString& title,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
+           const wxString& name = wxFrameNameStr);
+
+  void OnSize(wxSizeEvent& event);
+  void OnActivate(wxActivateEvent& event);
+
+  void SetMenuBar(wxMenuBar *menu_bar);
+
+  // Gets the size available for subwindows after menu size, toolbar size
+  // and status bar size have been subtracted. If you want to manage your own
+  // toolbar(s), don't call SetToolBar.
+  void GetClientSize(int *width, int *height) const;
+
+  // Get the active MDI child window (Windows only)
+  wxMDIChildFrame *GetActiveChild() const ;
+
+  // Get the client window
+  inline wxMDIClientWindow *GetClientWindow() const { return m_clientWindow; };
+
+  // Create the client window class (don't Create the window,
+  // just return a new class)
+  virtual wxMDIClientWindow *OnCreateClient() ;
+
+  // MDI operations
+  virtual void Cascade();
+  virtual void Tile();
+  virtual void ArrangeIcons();
+  virtual void ActivateNext();
+  virtual void ActivatePrevious();
+
+protected:
+
+DECLARE_EVENT_TABLE()
 };
 
-//-----------------------------------------------------------------------------
-// wxMDIChildFrame
-//-----------------------------------------------------------------------------
-
-class wxMDIChildFrame: public wxFrame
+class WXDLLEXPORT wxMDIChildFrame: public wxFrame
 {
-  DECLARE_DYNAMIC_CLASS(wxMDIChildFrame)
-  
-  public:
-
-    wxMDIChildFrame(void);
-    wxMDIChildFrame( wxMDIParentFrame *parent,
-      wxWindowID id, const wxString& title,
-      const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-      long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxFrameNameStr );
-    ~wxMDIChildFrame(void);
-    bool Create( wxMDIParentFrame *parent,
-      wxWindowID id, const wxString& title,
-      const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-      long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxFrameNameStr );
-      
-  virtual void SetMenuBar( wxMenuBar *menu_bar );
-  virtual wxMenuBar *GetMenuBar();
-
-  virtual void GetClientSize( int *width, int *height ) const;
-  virtual void AddChild( wxWindow *child );
-
-  virtual void Activate(void);
-    
-    // no status bars
-  virtual wxStatusBar* CreateStatusBar( int WXUNUSED(number), long WXUNUSED(style), 
-    wxWindowID WXUNUSED(id), const wxString& WXUNUSED(name) ) {return (wxStatusBar*)NULL; }
-  virtual wxStatusBar *GetStatusBar() { return (wxStatusBar*)NULL; }
-  virtual void SetStatusText( const wxString &WXUNUSED(text), int WXUNUSED(number) ) {}
-  virtual void SetStatusWidths( int WXUNUSED(n), int *WXUNUSED(width) ) {}
-
-    // no size hints
-  virtual void SetSizeHints( int WXUNUSED(minW), int WXUNUSED(minH), int WXUNUSED(maxW), 
-    int WXUNUSED(maxH), int WXUNUSED(incW) ) {}
-  
-    // no toolbar bars
-  virtual wxToolBar* CreateToolBar( long WXUNUSED(style), wxWindowID WXUNUSED(id), 
-    const wxString& WXUNUSED(name) ) { return (wxToolBar*)NULL; }
-  virtual wxToolBar *GetToolBar() { return (wxToolBar*)NULL; }
-  
-    // no icon
-  void SetIcon( const wxIcon &icon ) { m_icon = icon; }
-    
-    // no title 
-  void SetTitle( const wxString &title ) { m_title = title; }
-  wxString GetTitle() const { return m_title; }
-  
-    // no maximize etc
-  virtual void Maximize(void) {}
-  virtual void Restore(void) {}
-    
-    void OnActivate( wxActivateEvent &event );
-    
-  public:
-  
-    wxMenuBar         *m_menuBar;
-    
-  DECLARE_EVENT_TABLE()    
+DECLARE_DYNAMIC_CLASS(wxMDIChildFrame)
+public:
+
+  wxMDIChildFrame();
+  inline wxMDIChildFrame(wxMDIParentFrame *parent,
+           wxWindowID id,
+           const wxString& title,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = wxDEFAULT_FRAME_STYLE,
+           const wxString& name = wxFrameNameStr)
+  {
+      Create(parent, id, title, pos, size, style, name);
+  }
+
+  ~wxMDIChildFrame();
+
+  bool Create(wxMDIParentFrame *parent,
+           wxWindowID id,
+           const wxString& title,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = wxDEFAULT_FRAME_STYLE,
+           const wxString& name = wxFrameNameStr);
+
+  // Set menu bar
+  void SetMenuBar(wxMenuBar *menu_bar);
+  void SetClientSize(int width, int height);
+  void GetPosition(int *x, int *y) const ;
+
+  // MDI operations
+  virtual void Maximize();
+  virtual void Restore();
+  virtual void Activate();
 };
 
-//-----------------------------------------------------------------------------
-// wxMDIClientWindow
-//-----------------------------------------------------------------------------
+/* The client window is a child of the parent MDI frame, and itself
+ * contains the child MDI frames.
+ * However, you create the MDI children as children of the MDI parent:
+ * only in the implementation does the client window become the parent
+ * of the children. Phew! So the children are sort of 'adopted'...
+ */
 
-class wxMDIClientWindow: public wxWindow
+class WXDLLEXPORT wxMDIClientWindow: public wxWindow
 {
   DECLARE_DYNAMIC_CLASS(wxMDIClientWindow)
-  
-  public:
-  
-    wxMDIClientWindow(void);
-    wxMDIClientWindow( wxMDIParentFrame *parent, long style = 0 );
-    ~wxMDIClientWindow(void);
-    virtual bool CreateClient( wxMDIParentFrame *parent, long style = wxVSCROLL | wxHSCROLL );
-    void AddChild( wxWindow *child );
-};
+ public:
+
+  wxMDIClientWindow() ;
+  inline wxMDIClientWindow(wxMDIParentFrame *parent, long style = 0)
+  {
+      CreateClient(parent, style);
+  }
 
-#endif // __MDIH__
+  ~wxMDIClientWindow();
 
+  // Note: this is virtual, to allow overridden behaviour.
+  virtual bool CreateClient(wxMDIParentFrame *parent, long style = wxVSCROLL | wxHSCROLL);
+
+  // Explicitly call default scroll behaviour
+  void OnScroll(wxScrollEvent& event);
+
+protected:
+
+DECLARE_EVENT_TABLE()
+};
+
+#endif
+    // _WX_MDI_H_
index 98103fe21de574942fb3c015875756c3577e16b5..16546021418351d8402488467c716f4a9385c855 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        menu.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
-// Licence:     wxWindows licence
+// Purpose:     wxMenu, wxMenuBar classes
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
+// Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKMENUH__
-#define __GTKMENUH__
+#ifndef _WX_MENU_H_
+#define _WX_MENU_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "menu.h"
 #endif
 
 #include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/list.h"
-#include "wx/window.h"
-
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class wxMenuBar;
-class wxMenuItem;
-class wxMenu;
-
-//-----------------------------------------------------------------------------
-// const
-//-----------------------------------------------------------------------------
+#include "wx/event.h"
 
-#define   ID_SEPARATOR    (-1)
+class WXDLLEXPORT wxMenuItem;
+class WXDLLEXPORT wxMenuBar;
+class WXDLLEXPORT wxMenu;
 
-//-----------------------------------------------------------------------------
-// wxMenuBar
-//-----------------------------------------------------------------------------
+WXDLLEXPORT_DATA(extern const char*) wxEmptyString;
 
-class wxMenuBar: public wxWindow
+// ----------------------------------------------------------------------------
+// Menu
+// ----------------------------------------------------------------------------
+class WXDLLEXPORT wxMenu: public wxEvtHandler
 {
-DECLARE_DYNAMIC_CLASS(wxMenuBar)
+  DECLARE_DYNAMIC_CLASS(wxMenu)
 
 public:
-  wxMenuBar();
-  void Append( wxMenu *menu, const wxString &title );
-
-  int FindMenuItem( const wxString &menuString, const wxString &itemString ) const;
-  wxMenuItem* FindMenuItemById( int id ) const;
-  
-  void Check( int id, bool check );
-  bool Checked( int id ) const;
-  void Enable( int id, bool enable );
-  bool Enabled( int id ) const;
-  inline bool IsEnabled(int Id) const { return Enabled(Id); };
-  inline bool IsChecked(int Id) const { return Checked(Id); };
+  // ctor & dtor
+  wxMenu(const wxString& title = wxEmptyString, const wxFunction func = NULL);
+  ~wxMenu();
 
-  int     GetMenuCount() const { return m_menus.Number(); }
-  wxMenu *GetMenu(int n) const { return (wxMenu *)m_menus.Nth(n)->Data(); }
-
-  wxList       m_menus;
-};
-
-//-----------------------------------------------------------------------------
-// wxMenu
-//-----------------------------------------------------------------------------
-
-class wxMenuItem: public wxObject
-{
-DECLARE_DYNAMIC_CLASS(wxMenuItem)
+  // construct menu
+    // append items to the menu
+      // separator line
+  void AppendSeparator();
+      // normal item
+  void Append(int id, const wxString& Label, const wxString& helpString = wxEmptyString,
+              bool checkable = FALSE);
+      // a submenu
+  void Append(int id, const wxString& Label, wxMenu *SubMenu, 
+              const wxString& helpString = wxEmptyString);
+      // the most generic form (create wxMenuItem first and use it's functions)
+  void Append(wxMenuItem *pItem);
+    // insert a break in the menu
+  void Break();
+    // delete an item
+  void Delete(int id);
+
+  // menu item control
+  void Enable(int id, bool Flag);
+  bool Enabled(int id) const;
+  inline bool IsEnabled(int id) const { return Enabled(id); };
+  void Check(int id, bool Flag);
+  bool Checked(int id) const;
+  inline bool IsChecked(int id) const { return IsChecked(id); };
+
+  // item properties
+    // title
+  void SetTitle(const wxString& label);
+  const wxString& GetTitle() const;
+    // label
+  void SetLabel(int id, const wxString& label);
+  wxString GetLabel(int id) const;
+    // help string
+  virtual void SetHelpString(int id, const wxString& helpString);
+  virtual wxString GetHelpString(int id) const ;
+
+  // find item
+    // Finds the item id matching the given string, -1 if not found.
+  virtual int FindItem(const wxString& itemString) const ;
+    // Find wxMenuItem by ID, and item's menu too if itemMenu is !NULL.
+  wxMenuItem *FindItemForId(int itemId, wxMenu **itemMenu = NULL) const;
+
+  void ProcessCommand(wxCommandEvent& event);
+  inline void Callback(const wxFunction func) { m_callback = func; }
+
+  virtual void SetParent(wxEvtHandler *parent) { m_parent = parent; }
+  inline void SetEventHandler(wxEvtHandler *handler) { m_eventHandler = handler; }
+  inline wxEvtHandler *GetEventHandler() { return m_eventHandler; }
+
+  inline wxList& GetItems() const { return (wxList&) m_menuItems; }
 
 public:
-  wxMenuItem();
-
-  // accessors
-    // id
-  void SetId(int id) { m_id = id; }
-  int  GetId() const { return m_id; }
-  bool IsSeparator() const { return m_id == ID_SEPARATOR; }
-
-    // the item's text
-  void SetText(const wxString& str);
-  const wxString& GetText() const { return m_text; }
-
-    // what kind of menu item we are
-  void SetCheckable(bool checkable) { m_isCheckMenu = checkable; }
-  bool IsCheckable() const { return m_isCheckMenu; }
-  void SetSubMenu(wxMenu *menu) { m_subMenu = menu; }
-  wxMenu *GetSubMenu() const { return m_subMenu; }
-  bool IsSubMenu() const { return m_subMenu != NULL; }
-
-    // state
-  void Enable(bool enable = TRUE) { m_isEnabled = enable; }
-  bool IsEnabled() const { return m_isEnabled; }
-  void Check(bool check = TRUE);
-  bool IsChecked() const;
-
-    // help string (displayed in the status bar by default)
-  void SetHelpString(const wxString& str) { m_helpStr = str; }
-
-
-private:
-  int           m_id;
-  wxString      m_text;
-  bool          m_isCheckMenu;
-  bool          m_isChecked;
-  bool          m_isEnabled;
-  wxMenu       *m_subMenu;
-  wxString      m_helpStr;
+  wxFunction        m_callback;
+
+  int               m_noItems;
+  wxString          m_title;
+  wxMenuBar *       m_menuBar;
+  wxList            m_menuItems;
+  wxEvtHandler *    m_parent;
+  wxEvtHandler *    m_eventHandler;
 };
 
-class wxMenu: public wxEvtHandler
+// ----------------------------------------------------------------------------
+// Menu Bar (a la Windows)
+// ----------------------------------------------------------------------------
+class WXDLLEXPORT wxFrame;
+class WXDLLEXPORT wxMenuBar: public wxEvtHandler
 {
-DECLARE_DYNAMIC_CLASS(wxMenu)
+  DECLARE_DYNAMIC_CLASS(wxMenuBar)
 
-public:
-  // construction
-  wxMenu( const wxString &title = "" );
-
-  // operations
-    // menu creation
-  void AppendSeparator();
-  void Append(int id, const wxString &item,
-              const wxString &helpStr = "", bool checkable = FALSE);
-  void Append(int id, const wxString &item,
-              wxMenu *subMenu, const wxString &helpStr = "" );
-  void Break() {};
-
-    // find item by name/id
-  int FindItem( const wxString itemString ) const;
-  wxMenuItem *FindItem(int id) const;
-
-    // get/set item's state
-  void Enable( int id, bool enable );
-  bool IsEnabled( int id ) const;
-  void Check( int id, bool check );
-  bool IsChecked( int id ) const;
-
-  void SetLabel( int id, const wxString &label );
-
-  // accessors
-  wxList& GetItems() { return m_items; }
-
-public:
-  void SetInvokingWindow( wxWindow *win );
-  wxWindow *GetInvokingWindow();
-
-  wxString    m_title;
-  wxList      m_items;
-  wxWindow   *m_invokingWindow;
+  wxMenuBar();
+  wxMenuBar(int n, wxMenu *menus[], const wxString titles[]);
+  ~wxMenuBar();
+
+  void Append(wxMenu *menu, const wxString& title);
+  // Must only be used AFTER menu has been attached to frame,
+  // otherwise use individual menus to enable/disable items
+  void Enable(int Id, bool Flag);
+  bool Enabled(int Id) const ;
+  inline bool IsEnabled(int Id) const { return Enabled(Id); };
+  void EnableTop(int pos, bool Flag);
+  void Check(int id, bool Flag);
+  bool Checked(int id) const ;
+  inline bool IsChecked(int Id) const { return Checked(Id); };
+  void SetLabel(int id, const wxString& label) ;
+  wxString GetLabel(int id) const ;
+  void SetLabelTop(int pos, const wxString& label) ;
+  wxString GetLabelTop(int pos) const ;
+  virtual void Delete(wxMenu *menu, int index = 0); /* Menu not destroyed */
+  virtual bool OnAppend(wxMenu *menu, const char *title);
+  virtual bool OnDelete(wxMenu *menu, int index);
+
+  virtual void SetHelpString(int Id, const wxString& helpString);
+  virtual wxString GetHelpString(int Id) const ;
+
+  virtual int FindMenuItem(const wxString& menuString, const wxString& itemString) const ;
+
+  // Find wxMenuItem for item ID, and return item's
+  // menu too if itemMenu is non-NULL.
+  wxMenuItem *FindItemForId(int itemId, wxMenu **menuForItem = NULL) const ;
+
+  inline void SetEventHandler(wxEvtHandler *handler) { m_eventHandler = handler; }
+  inline wxEvtHandler *GetEventHandler() { return m_eventHandler; }
+
+  inline int GetMenuCount() const { return m_menuCount; }
+  inline wxMenu* GetMenu(int i) const { return m_menus[i]; }
+
+ public:
+  wxEvtHandler *            m_eventHandler;
+  int                       m_menuCount;
+  wxMenu **                 m_menus;
+  wxString *                m_titles;
+  wxFrame *                 m_menuBarFrame;
+/* TODO: data that represents the actual menubar when created.
+ */
 };
 
-#endif // __GTKMENUH__
+#endif // _WX_MENU_H_
index a3a2a9df045e28a79b147aca8292f7f564306b8a..b5834ec1816fedcf1db5cda6a9b4f209cd14b079 100644 (file)
@@ -1,41 +1,44 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        notebook.h
-// Purpose:     wxNotebook class
-// Author:      Robert Roebling
+// Purpose:     MSW/GTK compatible notebook (a.k.a. property sheet)
+// Author:      AUTHOR
 // Modified by:
 // RCS-ID:      $Id$
-// Copyright:   (c) Julian Smart and Markus Holzem
-// Licence:     wxWindows license
+// Copyright:   (c) AUTHOR
+// Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifndef __NOTEBOOKH__
-#define __NOTEBOOKH__
+#ifndef _WX_NOTEBOOK_H_
+#define _WX_NOTEBOOK_H_
 
 #ifdef __GNUG__
 #pragma interface "notebook.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/string.h"
-#include "wx/control.h"
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+#include <wx/dynarray.h>
+
+// ----------------------------------------------------------------------------
+// types
+// ----------------------------------------------------------------------------
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+// fwd declarations
+class WXDLLEXPORT wxImageList;
+class WXDLLEXPORT wxWindow;
 
-class wxImageList;
-class wxNotebook;
-class wxNotebookPage;
+// array of notebook pages
+typedef wxWindow wxNotebookPage;  // so far, any window can be a page
+WX_DEFINE_ARRAY(wxNotebookPage *, wxArrayPages);
 
 // ----------------------------------------------------------------------------
 // notebook events
 // ----------------------------------------------------------------------------
-
-class wxNotebookEvent : public wxCommandEvent
+class WXDLLEXPORT wxNotebookEvent : public wxCommandEvent
 {
 public:
-  wxNotebookEvent(wxEventType commandType = wxEVT_NULL, int id = 0,
+  wxNotebookEvent(wxEventType commandType = wxEVT_NULL, int id = 0, 
                   int nSel = -1, int nOldSel = -1)
     : wxCommandEvent(commandType, id) { m_nSel = nSel; m_nOldSel = nOldSel; }
 
@@ -50,10 +53,13 @@ private:
   DECLARE_DYNAMIC_CLASS(wxNotebookEvent)
 };
 
-//-----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
 // wxNotebook
-//-----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
 
+// @@@ this class should really derive from wxTabCtrl, but the interface is not
+//     exactly the same, so I can't do it right now and instead we reimplement
+//     part of wxTabCtrl here
 class wxNotebook : public wxControl
 {
 public:
@@ -63,14 +69,14 @@ public:
   wxNotebook();
     // the same arguments as for wxControl (@@@ any special styles?)
   wxNotebook(wxWindow *parent,
-             wxWindowID id,
+             wxWindowID id, 
              const wxPoint& pos = wxDefaultPosition,
              const wxSize& size = wxDefaultSize,
              long style = 0,
              const wxString& name = "notebook");
     // Create() function
   bool Create(wxWindow *parent,
-              wxWindowID id,
+              wxWindowID id, 
               const wxPoint& pos = wxDefaultPosition,
               const wxSize& size = wxDefaultSize,
               long style = 0,
@@ -90,7 +96,7 @@ public:
     // cycle thru the tabs
   void AdvanceSelection(bool bForward = TRUE);
     // get the currently selected page
-  int GetSelection() const;
+  int GetSelection() const { return m_nSelection; }
 
     // set/get the title of a page
   bool SetPageText(int nPage, const wxString& strText);
@@ -104,7 +110,7 @@ public:
     // associate image list with a control
   void SetImageList(wxImageList* imageList);
     // get pointer (may be NULL) to the associated image list
-  wxImageList* GetImageList() const { return m_imageList; }
+  wxImageList* GetImageList() const { return m_pImageList; }
 
     // sets/returns item's image index in the current image list
   int  GetPageImage(int nPage) const;
@@ -128,30 +134,46 @@ public:
   bool DeleteAllPages();
     // adds a new page to the notebook (it will be deleted ny the notebook,
     // don't delete it yourself). If bSelect, this page becomes active.
-  bool AddPage(wxWindow *pPage,
+  bool AddPage(wxNotebookPage *pPage,
                const wxString& strText,
                bool bSelect = FALSE,
                int imageId = -1);
-    // @@@@ VZ: I don't know how to implement InsertPage()
-
+    // the same as AddPage(), but adds it at the specified position
+  bool InsertPage(int nPage,
+                  wxNotebookPage *pPage,
+                  const wxString& strText,
+                  bool bSelect = FALSE,
+                  int imageId = -1);
     // get the panel which represents the given page
-  wxWindow *GetPage(int nPage) const;
-
-  // implementation
-  // --------------
-    // base class virtuals
-  virtual void AddChild(wxWindow *child);
-  virtual void SetConstraintSizes(bool recurse);
-  virtual bool DoPhase(int phase);
+  wxNotebookPage *GetPage(int nPage) { return m_aPages[nPage]; }
 
-private:
+  // callbacks
+  // ---------
+  void OnSize(wxSizeEvent& event);
+  void OnSelChange(wxNotebookEvent& event);
+  void OnSetFocus(wxFocusEvent& event);
+  void OnNavigationKey(wxNavigationKeyEvent& event);
+  
+  // base class virtuals
+  // -------------------
+  virtual void Command(wxCommandEvent& event);
+  virtual void SetConstraintSizes(bool recurse = TRUE);
+  virtual bool DoPhase(int nPhase);
+
+protected:
   // common part of all ctors
   void Init();
 
-  wxImageList*    m_imageList;
-  wxList          m_pages;
+  // helper functions
+  void ChangePage(int nOldSel, int nSel); // change pages
+
+  wxImageList  *m_pImageList; // we can have an associated image list
+  wxArrayPages  m_aPages;     // array of pages
+
+  int m_nSelection;           // the current selection (-1 if none)
 
   DECLARE_DYNAMIC_CLASS(wxNotebook)
+  DECLARE_EVENT_TABLE()
 };
 
 // ----------------------------------------------------------------------------
@@ -177,5 +199,4 @@ typedef void (wxEvtHandler::*wxNotebookEventFunction)(wxNotebookEvent&);
     NULL                                                                    \
   },
 
-#endif
-    // __NOTEBOOKH__
+#endif // _WX_NOTEBOOK_H_
index d6b7bbb64ba82b92996fab0ffb0737458fb4a75f..a5c85bb1d067413310ad776cc4757fafb297278a 100644 (file)
@@ -1,60 +1,66 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        palette.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxPalette class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKPALETTEH__
-#define __GTKPALETTEH__
+#ifndef _WX_PALETTE_H_
+#define _WX_PALETTE_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "palette.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
 #include "wx/gdiobj.h"
-#include "wx/gdicmn.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+class WXDLLEXPORT wxPalette;
 
-class wxPalette;
+class WXDLLEXPORT wxPaletteRefData: public wxGDIRefData
+{
+    friend class WXDLLEXPORT wxPalette;
+public:
+    wxPaletteRefData();
+    ~wxPaletteRefData();
+/* TODO: implementation
+protected:
+ WXHPALETTE m_hPalette;
+*/
+};
 
-//-----------------------------------------------------------------------------
-// wxPalette
-//-----------------------------------------------------------------------------
+#define M_PALETTEDATA ((wxPaletteRefData *)m_refData)
 
-class wxPalette: public wxGDIObject
+class WXDLLEXPORT wxPalette: public wxGDIObject
 {
   DECLARE_DYNAMIC_CLASS(wxPalette)
 
-  public:
-  
-    wxPalette(void);
-    wxPalette( int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue );
-    wxPalette( const wxPalette& palette );
-    wxPalette( const wxPalette* palette );
-    ~wxPalette(void);
-    wxPalette& operator = ( const wxPalette& palette );
-    bool operator == ( const wxPalette& palette );
-    bool operator != ( const wxPalette& palette );
-    bool Ok(void) const;
-    
-    bool Create( int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue);
-    int GetPixel( const unsigned char red, const unsigned char green, const unsigned char blue ) const;
-    bool GetRGB( int pixel, unsigned char *red, unsigned char *green, unsigned char *blue ) const;
-
-    // no data
-};
+public:
+  wxPalette();
+  inline wxPalette(const wxPalette& palette) { Ref(palette); }
+  inline wxPalette(const wxPalette* palette) { UnRef(); if (palette) Ref(*palette); }
+
+  wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue);
+  ~wxPalette();
+  bool Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue);
+  int GetPixel(const unsigned char red, const unsigned char green, const unsigned char blue) const;
+  bool GetRGB(int pixel, unsigned char *red, unsigned char *green, unsigned char *blue) const;
 
-#define wxColorMap wxPalette
-#define wxColourMap wxPalette
+  virtual bool Ok() const { return (m_refData != NULL) ; }
 
-#endif // __GTKPALETTEH__
+  inline wxPalette& operator = (const wxPalette& palette) { if (*this == palette) return (*this); Ref(palette); return *this; }
+  inline bool operator == (const wxPalette& palette) { return m_refData == palette.m_refData; }
+  inline bool operator != (const wxPalette& palette) { return m_refData != palette.m_refData; }
+
+  virtual bool FreeResource(bool force = FALSE);
+/* TODO: implementation
+  inline WXHPALETTE GetHPALETTE() const { return (M_PALETTEDATA ? M_PALETTEDATA->m_hPalette : 0); }
+  void SetHPALETTE(WXHPALETTE pal);
+*/
+};
+
+#endif
+    // _WX_PALETTE_H_
index a0eaa2a59b0f88ef1d9f85601fccc736e32803c1..0e23c99daf07dd043ad4f64d87787c48a0247e13 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        pen.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxPen class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKPENH__
-#define __GTKPENH__
+#ifndef _WX_PEN_H_
+#define _WX_PEN_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "pen.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/string.h"
 #include "wx/gdiobj.h"
-#include "wx/gdicmn.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+typedef    WXDWORD  wxDash ;
+
+class WXDLLEXPORT wxPen;
 
-class wxPen;
+class WXDLLEXPORT wxPenRefData: public wxGDIRefData
+{
+    friend class WXDLLEXPORT wxPen;
+public:
+    wxPenRefData();
+    wxPenRefData(const wxPenRefData& data);
+    ~wxPenRefData();
 
-//-----------------------------------------------------------------------------
-// wxPen
-//-----------------------------------------------------------------------------
+protected:
+  int           m_width;
+  int           m_style;
+  int           m_join ;
+  int           m_cap ;
+  wxBitmap      m_stipple ;
+  int           m_nbDash ;
+  wxDash *      m_dash ;
+  wxColour      m_colour;
+/* TODO: implementation
+  WXHPEN        m_hPen;
+*/
+};
 
-class wxPen: public wxGDIObject
+#define M_PENDATA ((wxPenRefData *)m_refData)
+
+// Pen
+class WXDLLEXPORT wxPen: public wxGDIObject
 {
   DECLARE_DYNAMIC_CLASS(wxPen)
+public:
+  wxPen();
+  wxPen(const wxColour& col, int width, int style);
+  wxPen(const wxString& col, int width, int style);
+  wxPen(const wxBitmap& stipple, int width);
+  inline wxPen(const wxPen& pen) { Ref(pen); }
+  inline wxPen(const wxPen* pen) { if (pen) Ref(*pen); }
+  ~wxPen();
+
+  inline wxPen& operator = (const wxPen& pen) { if (*this == pen) return (*this); Ref(pen); return *this; }
+  inline bool operator == (const wxPen& pen) { return m_refData == pen.m_refData; }
+  inline bool operator != (const wxPen& pen) { return m_refData != pen.m_refData; }
+
+  virtual bool Ok() const { return (m_refData != NULL) ; }
 
-  public:
-  
-    wxPen(void);
-    wxPen( const wxColour &colour, int width, int style );
-    wxPen( const wxString &colourName, int width, int style );
-    wxPen( const wxPen& pen );
-    wxPen( const wxPen* pen );
-    ~wxPen(void);
-    wxPen& operator = ( const wxPen& pen );
-    bool operator == ( const wxPen& pen );
-    bool operator != ( const wxPen& pen );
-    
-    void SetColour( const wxColour &colour );
-    void SetColour( const wxString &colourName );
-    void SetColour( int red, int green, int blue );
-    void SetCap( int capStyle );
-    void SetJoin( int joinStyle );
-    void SetStyle( int style );
-    void SetWidth( int width );
-    wxColour &GetColour(void) const;
-    int GetCap(void) const;
-    int GetJoin(void) const;
-    int GetStyle(void) const;
-    int GetWidth(void) const;
-    bool Ok(void) const;
-    
-    // no data :-)
+  // Override in order to recreate the pen
+  void SetColour(const wxColour& col) ;
+  void SetColour(const wxString& col)  ;
+  void SetColour(const unsigned char r, const unsigned char g, const unsigned char b)  ;
+
+  void SetWidth(int width)  ;
+  void SetStyle(int style)  ;
+  void SetStipple(const wxBitmap& stipple)  ;
+  void SetDashes(int nb_dashes, const wxDash *dash)  ;
+  void SetJoin(int join)  ;
+  void SetCap(int cap)  ;
+
+  inline wxColour& GetColour() const { return (M_PENDATA ? M_PENDATA->m_colour : wxNullColour); };
+  inline int GetWidth() const { return (M_PENDATA ? M_PENDATA->m_width : 0); };
+  inline int GetStyle() const { return (M_PENDATA ? M_PENDATA->m_style : 0); };
+  inline int GetJoin() const { return (M_PENDATA ? M_PENDATA->m_join : 0); };
+  inline int GetCap() const { return (M_PENDATA ? M_PENDATA->m_cap : 0); };
+  inline int GetDashes(wxDash **ptr) const {
+     *ptr = (M_PENDATA ? M_PENDATA->m_dash : NULL); return (M_PENDATA ? M_PENDATA->m_nbDash : 0);
+  }
+
+  inline wxBitmap *GetStipple() const { return (M_PENDATA ? (& M_PENDATA->m_stipple) : NULL); };
+
+// Implementation
+
+  // Useful helper: create the brush resource
+  void RealizeResource();
+
+  // When setting properties, we must make sure we're not changing
+  // another object
+  void Unshare();
 };
 
-#endif // __GTKPENH__
+#endif
+    // _WX_PEN_H_
index a8fdd1ebe34913d24aeed4d1542f4252c8341751..cb7c5ba405b0d9c353e39f5b08f51d58bbff5917 100644 (file)
@@ -1,80 +1,88 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        radiobox.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxRadioBox class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKRADIOBOXH__
-#define __GTKRADIOBOXH__
+#ifndef _WX_RADIOBOX_H_
+#define _WX_RADIOBOX_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "radiobox.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/list.h"
 #include "wx/control.h"
-#include "wx/bitmap.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+WXDLLEXPORT_DATA(extern const char*) wxRadioBoxNameStr;
 
-class wxRadioBox;
+// List box item
+class WXDLLEXPORT wxBitmap ;
 
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
+class WXDLLEXPORT wxRadioBox: public wxControl
+{
+  DECLARE_DYNAMIC_CLASS(wxRadioBox)
+public:
+  wxRadioBox();
 
-extern const char *wxRadioBoxNameStr;
+  inline wxRadioBox(wxWindow *parent, wxWindowID id, const wxString& title,
+             const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
+             int n = 0, const wxString choices[] = NULL,
+             int majorDim = 0, long style = wxRA_HORIZONTAL,
+             const wxValidator& val = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr)
+  {
+    Create(parent, id, title, pos, size, n, choices, majorDim, style, val, name);
+  }
 
-//-----------------------------------------------------------------------------
-// wxRadioBox
-//-----------------------------------------------------------------------------
+  ~wxRadioBox();
 
-class wxRadioBox: public wxControl
-{
+  bool Create(wxWindow *parent, wxWindowID id, const wxString& title,
+             const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
+             int n = 0, const wxString choices[] = NULL,
+             int majorDim = 0, long style = wxRA_HORIZONTAL,
+             const wxValidator& val = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr);
 
-  DECLARE_DYNAMIC_CLASS(wxRadioBox)
-  
-  public:
+  int FindString(const wxString& s) const;
+  void SetSelection(int N);
+  int GetSelection() const;
+  wxString GetString(int N) const;
+  void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
+  void GetSize(int *x, int *y) const;
+  void GetPosition(int *x, int *y) const;
+  wxString GetLabel() const;
+  void SetLabel(const wxString& label);
+  void SetLabel(int item, const wxString& label) ;
+  wxString GetLabel(int item) const;
+  bool Show(bool show);
+  void SetFocus();
+  void Enable(bool enable);
+  void Enable(int item, bool enable);
+  void Show(int item, bool show) ;
+  inline void SetLabelFont(const wxFont& WXUNUSED(font)) {};
+  inline void SetButtonFont(const wxFont& font) { SetFont(font); }
+
+  virtual wxString GetStringSelection() const;
+  virtual bool SetStringSelection(const wxString& s);
+  inline virtual int Number() const { return m_noItems; } ;
+  void Command(wxCommandEvent& event);
   
-    wxRadioBox(void);
-    wxRadioBox( wxWindow *parent, wxWindowID id, const wxString& title,
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
-      int n = 0, const wxString choices[] = NULL,
-      int majorDim = 0, long style = wxRA_HORIZONTAL,
-      const wxString &name = wxRadioBoxNameStr );
-    bool Create( wxWindow *parent, wxWindowID id, const wxString& title,
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
-      int n = 0, const wxString choices[] = NULL,
-      int majorDim = 0, long style = wxRA_HORIZONTAL,
-      const wxString &name = wxRadioBoxNameStr );
-    int FindString( const wxString& s) const;
-    void SetSelection( int n );
-    int GetSelection(void) const;
-    wxString GetString( int n ) const;
-    wxString GetLabel(void) const;
-    void SetLabel( const wxString& label );
-    void SetLabel( int item, const wxString& label );
-    void SetLabel( int item, wxBitmap *bitmap );
-    wxString GetLabel( int item ) const;
-    bool Show( bool show );
-    void Enable( bool enable );
-    void Enable( int item, bool enable );
-    void Show( int item, bool show );
-    virtual wxString GetStringSelection(void) const;
-    virtual bool SetStringSelection( const wxString& s );
-    virtual int Number(void) const;
-    int GetNumberOfRowsOrCols(void) const;
-    void SetNumberOfRowsOrCols( int n );
-    
+  inline int GetNumberOfRowsOrCols() const { return m_noRowsOrCols; }
+  inline void SetNumberOfRowsOrCols(int n) { m_noRowsOrCols = n; }
+
+protected:
+/* TODO: implementation
+  WXHWND *          m_radioButtons;
+*/
+  int               m_majorDim ;
+  int               m_noItems;
+  int               m_noRowsOrCols;
+  int               m_selectedButton;
+
 };
 
-#endif // __GTKRADIOBOXH__
+#endif
+    // _WX_RADIOBOX_H_
index 337264fe5afb07864a743be0040c162df875d9f7..7a4ce62d50fcb307469fd4ba890e7fdb095dd763 100644 (file)
@@ -1,31 +1,92 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        radiobut.h
-// Purpose:
-// Author:      Robert Roebling
+// Purpose:     wxRadioButton class
+// Author:      AUTHOR
+// Modified by:
 // Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKRADIOBUTTONH__
-#define __GTKRADIOBUTTONH__
+#ifndef _WX_RADIOBUT_H_
+#define _WX_RADIOBUT_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "radiobut.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/list.h"
 #include "wx/control.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+WXDLLEXPORT_DATA(extern const char*) wxRadioButtonNameStr;
+
+class WXDLLEXPORT wxRadioButton: public wxControl
+{
+  DECLARE_DYNAMIC_CLASS(wxRadioButton)
+ protected:
+ public:
+  inline wxRadioButton() {}
+  inline wxRadioButton(wxWindow *parent, wxWindowID id,
+           const wxString& label,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize, long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxRadioButtonNameStr)
+  {
+      Create(parent, id, label, pos, size, style, validator, name);
+  }
+
+  bool Create(wxWindow *parent, wxWindowID id,
+           const wxString& label,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize, long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxRadioButtonNameStr);
+
+  virtual void SetLabel(const wxString& label);
+  virtual void SetValue(bool val);
+  virtual bool GetValue() const ;
+
+  void Command(wxCommandEvent& event);
+  virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
+                       WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
+};
 
-class wxRadioButton;
+// Not implemented
+#if 0
+class WXDLLEXPORT wxBitmap ;
 
+WXDLLEXPORT_DATA(extern const char*) wxBitmapRadioButtonNameStr;
 
-#endif // __GTKRADIOBUTTONH__
+class WXDLLEXPORT wxBitmapRadioButton: public wxRadioButton
+{
+  DECLARE_DYNAMIC_CLASS(wxBitmapRadioButton)
+ protected:
+  wxBitmap *theButtonBitmap;
+ public:
+  inline wxBitmapRadioButton() { theButtonBitmap = NULL; }
+  inline wxBitmapRadioButton(wxWindow *parent, wxWindowID id,
+           const wxBitmap *label,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize, long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxBitmapRadioButtonNameStr)
+  {
+      Create(parent, id, label, pos, size, style, validator, name);
+  }
+
+  bool Create(wxWindow *parent, wxWindowID id,
+           const wxBitmap *label,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize, long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxBitmapRadioButtonNameStr);
+
+  virtual void SetLabel(const wxBitmap *label);
+  virtual void SetValue(bool val) ;
+  virtual bool GetValue() const ;
+};
+#endif
+
+#endif
+    // _WX_RADIOBUT_H_
index 8bcb8858c7f80562f90c84f48da3ba1850f57d20..02bf97845fecd20534ce1116e04fef5b43f3b6dc 100644 (file)
@@ -1,37 +1,29 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        region.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxRegion class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifndef __REGIONH__
-#define __REGIONH__
+#ifndef _WX_REGION_H_
+#define _WX_REGION_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "region.h"
 #endif
 
 #include "wx/list.h"
 #include "wx/gdiobj.h"
-#include "wx/gdicmn.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+class WXDLLEXPORT wxRect;
+class WXDLLEXPORT wxPoint;
 
-class wxRegion;
-
-//-----------------------------------------------------------------------------
-// constants
-//-----------------------------------------------------------------------------
-
-enum wxRegionContain 
-{
-  wxOutRegion = 0, wxPartRegion = 1, wxInRegion = 2
+enum wxRegionContain {
+       wxOutRegion = 0, wxPartRegion = 1, wxInRegion = 2
 };
 
 // So far, for internal use only
@@ -43,54 +35,106 @@ wxRGN_OR,           // Creates the union of two combined regions.
 wxRGN_XOR           // Creates the union of two combined regions except for any overlapping areas.
 };
 
-//-----------------------------------------------------------------------------
-// wxRegion
-//-----------------------------------------------------------------------------
-
-class wxRegion : public wxGDIObject 
-{
-  DECLARE_DYNAMIC_CLASS(wxRegion);
-  
-  public:
-  
-    wxRegion( long x, long y, long w, long h );
-    wxRegion( const wxPoint& topLeft, const wxPoint& bottomRight );
-    wxRegion( const wxRect& rect );
-    wxRegion(void);
-    ~wxRegion(void);
-
-    inline wxRegion( const wxRegion& r ) 
-      { Ref(r); }
-    inline wxRegion& operator = ( const wxRegion& r )
-      { Ref(r); return (*this); }
-
-    void Clear(void);
-
-    bool Union( long x, long y, long width, long height );
-    bool Union( const wxRect& rect );
-    bool Union( const wxRegion& region );
-
-    bool Intersect( long x, long y, long width, long height );
-    bool Intersect( const wxRect& rect );
-    bool Intersect( const wxRegion& region );
-
-    bool Subtract( long x, long y, long width, long height );
-    bool Subtract( const wxRect& rect );
-    bool Subtract( const wxRegion& region );
-
-    bool Xor( long x, long y, long width, long height );
-    bool Xor( const wxRect& rect );
-    bool Xor( const wxRegion& region );
-
-    void GetBox( long& x, long& y, long&w, long &h ) const;
-    wxRect GetBox(void) const ;
-
-    bool Empty(void) const;
-
-    wxRegionContain Contains( long x, long y ) const;
-    wxRegionContain Contains( long x, long y, long w, long h ) const;
-    
+class WXDLLEXPORT wxRegion : public wxGDIObject {
+DECLARE_DYNAMIC_CLASS(wxRegion);
+       friend class WXDLLEXPORT wxRegionIterator;
+public:
+    wxRegion(long x, long y, long w, long h);
+    wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight);
+    wxRegion(const wxRect& rect);
+
+/* TODO: implementation
+    wxRegion(WXHRGN hRegion); // Hangs on to this region
+*/
+
+       wxRegion();
+       ~wxRegion();
+
+       //# Copying
+       inline wxRegion(const wxRegion& r)
+               { Ref(r); }
+       inline wxRegion& operator = (const wxRegion& r)
+               { Ref(r); return (*this); }
+
+       //# Modify region
+       // Clear current region
+       void Clear();
+
+       // Union rectangle or region with this.
+       inline bool Union(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_OR); }
+       inline bool Union(const wxRect& rect) { return Combine(rect, wxRGN_OR); }
+       inline bool Union(const wxRegion& region) { return Combine(region, wxRGN_OR); }
+
+       // Intersect rectangle or region with this.
+       inline bool Intersect(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_AND); }
+       inline bool Intersect(const wxRect& rect)  { return Combine(rect, wxRGN_AND); }
+       inline bool Intersect(const wxRegion& region)  { return Combine(region, wxRGN_AND); }
+
+       // Subtract rectangle or region from this:
+    // Combines the parts of 'this' that are not part of the second region.
+       inline bool Subtract(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_DIFF); }
+       inline bool Subtract(const wxRect& rect)  { return Combine(rect, wxRGN_DIFF); }
+       inline bool Subtract(const wxRegion& region)  { return Combine(region, wxRGN_DIFF); }
+
+       // XOR: the union of two combined regions except for any overlapping areas.
+       inline bool Xor(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_XOR); }
+       inline bool Xor(const wxRect& rect)  { return Combine(rect, wxRGN_XOR); }
+       inline bool Xor(const wxRegion& region)  { return Combine(region, wxRGN_XOR); }
+
+       //# Information on region
+       // Outer bounds of region
+       void GetBox(long& x, long& y, long&w, long &h) const;
+       wxRect GetBox() const ;
+
+       // Is region empty?
+       bool Empty() const;
+    inline bool IsEmpty() const { return Empty(); }
+
+       //# Tests
+       // Does the region contain the point (x,y)?
+       wxRegionContain Contains(long x, long y) const;
+       // Does the region contain the point pt?
+       wxRegionContain Contains(const wxPoint& pt) const;
+       // Does the region contain the rectangle (x, y, w, h)?
+       wxRegionContain Contains(long x, long y, long w, long h) const;
+       // Does the region contain the rectangle rect?
+       wxRegionContain Contains(const wxRect& rect) const;
+
+// Internal
+       bool Combine(long x, long y, long width, long height, wxRegionOp op);
+       bool Combine(const wxRegion& region, wxRegionOp op);
+       bool Combine(const wxRect& rect, wxRegionOp op);
+};
+
+class WXDLLEXPORT wxRegionIterator : public wxObject {
+DECLARE_DYNAMIC_CLASS(wxRegionIterator);
+public:
+       wxRegionIterator();
+       wxRegionIterator(const wxRegion& region);
+       ~wxRegionIterator();
+
+       void Reset() { m_current = 0; }
+       void Reset(const wxRegion& region);
+
+       operator bool () const { return m_current < m_numRects; }
+       bool HaveRects() const { return m_current < m_numRects; }
+
+       void operator ++ ();
+       void operator ++ (int);
+
+       long GetX() const;
+       long GetY() const;
+       long GetW() const;
+       long GetWidth() const { return GetW(); }
+       long GetH() const;
+       long GetHeight() const { return GetH(); }
+
+private:
+       long     m_current;
+       long     m_numRects;
+       wxRegion m_region;
+    wxRect*  m_rects;
 };
 
 #endif
-       // __REGIONH__
+       // _WX_REGION_H_
index 34041abc0902fe315d3813427ca79b63508d6872..eeef6727c58be0b478ad068cae1d7a5cd5cf70de 100644 (file)
@@ -1,78 +1,68 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        scrolbar.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Name:        scrollbar.h
+// Purpose:     wxScrollBar class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKSCROLLBARH__
-#define __GTKSCROLLBARH__
+#ifndef _WX_SCROLBAR_H_
+#define _WX_SCROLBAR_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "scrolbar.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
 #include "wx/control.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class wxScrollBar;
-
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
-
-extern const char *wxScrollBarNameStr;
-
-//-----------------------------------------------------------------------------
-// wxScrollBar
-//-----------------------------------------------------------------------------
+WXDLLEXPORT_DATA(extern const char*) wxScrollBarNameStr;
 
-class wxScrollBar: public wxControl
+// Scrollbar item
+class WXDLLEXPORT wxScrollBar: public wxControl
 {
   DECLARE_DYNAMIC_CLASS(wxScrollBar)
 
-  public:
-  
-    wxScrollBar(void) { };
-    wxScrollBar(wxWindow *parent, wxWindowID id,
+public:
+  inline wxScrollBar() { m_pageSize = 0; m_viewSize = 0; m_objectSize = 0; }
+  ~wxScrollBar();
+
+  inline wxScrollBar(wxWindow *parent, wxWindowID id,
            const wxPoint& pos = wxDefaultPosition,
            const wxSize& size = wxDefaultSize,
            long style = wxSB_HORIZONTAL,
-           const wxString& name = wxScrollBarNameStr );
-    ~wxScrollBar(void);
-    bool Create(wxWindow *parent, wxWindowID id,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxScrollBarNameStr)
+  {
+      Create(parent, id, pos, size, style, validator, name);
+  }
+  bool Create(wxWindow *parent, wxWindowID id,
            const wxPoint& pos = wxDefaultPosition,
            const wxSize& size = wxDefaultSize,
            long style = wxSB_HORIZONTAL,
+           const wxValidator& validator = wxDefaultValidator,
            const wxString& name = wxScrollBarNameStr);
-    int GetPosition(void) const;
-    int GetThumbSize() const;
-    int GetPageSize() const;
-    int GetRange() const;
-    virtual void SetPosition( int viewStart );
-    virtual void SetScrollbar( int position, int thumbSize, int range, int pageSize,
-      bool refresh = TRUE );
 
-    // Backward compatibility
-    int GetValue(void) const;
-    void SetValue( int viewStart );
-    void GetValues( int *viewStart, int *viewLength, int *objectLength, int *pageLength) const;
-    int GetViewLength() const;
-    int GetObjectLength() const;
-    void SetPageSize( int pageLength );
-    void SetObjectLength( int objectLength );
-    void SetViewLength( int viewLength );
+  int GetPosition() const ;
+  inline int GetThumbSize() const { return m_pageSize; }
+  inline int GetPageSize() const { return m_viewSize; }
+  inline int GetRange() const { return m_objectSize; }
+
+  virtual void SetPosition(int viewStart);
+  virtual void SetScrollbar(int position, int thumbSize, int range, int pageSize,
+    bool refresh = TRUE);
+
+  void Command(wxCommandEvent& event);
+
+protected:
+    int m_pageSize;
+    int m_viewSize;
+    int m_objectSize;
 
+DECLARE_EVENT_TABLE()
 };
 
 #endif
-    // __GTKSCROLLBARH__
+    // _WX_SCROLBAR_H_
index 7b801bbb812bae73e01e99a0949a73ae62b548af..7cd3cbe19e834a16af4fbe64e275bb8127fd2d34 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        settings.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxSystemSettings class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKSETTINGSH__
-#define __GTKSETTINGSH__
+#ifndef _WX_SETTINGS_H_
+#define _WX_SETTINGS_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "settings.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/gdicmn.h"
-#include "wx/pen.h"
-#include "wx/font.h"
+#include "wx/setup.h"
+
+#define wxSYS_WHITE_BRUSH         0
+#define wxSYS_LTGRAY_BRUSH        1
+#define wxSYS_GRAY_BRUSH          2
+#define wxSYS_DKGRAY_BRUSH        3
+#define wxSYS_BLACK_BRUSH         4
+#define wxSYS_NULL_BRUSH          5
+#define wxSYS_HOLLOW_BRUSH        wxSYS_NULL_BRUSH
+#define wxSYS_WHITE_PEN           6
+#define wxSYS_BLACK_PEN           7
+#define wxSYS_NULL_PEN            8
+#define wxSYS_OEM_FIXED_FONT      10
+#define wxSYS_ANSI_FIXED_FONT     11
+#define wxSYS_ANSI_VAR_FONT       12
+#define wxSYS_SYSTEM_FONT         13
+#define wxSYS_DEVICE_DEFAULT_FONT 14
+#define wxSYS_DEFAULT_PALETTE     15
+#define wxSYS_SYSTEM_FIXED_FONT   16 // Obsolete
+#define wxSYS_DEFAULT_GUI_FONT    17
+
+#define wxSYS_COLOUR_SCROLLBAR         0
+#define wxSYS_COLOUR_BACKGROUND        1
+#define wxSYS_COLOUR_ACTIVECAPTION     2
+#define wxSYS_COLOUR_INACTIVECAPTION   3
+#define wxSYS_COLOUR_MENU              4
+#define wxSYS_COLOUR_WINDOW            5
+#define wxSYS_COLOUR_WINDOWFRAME       6
+#define wxSYS_COLOUR_MENUTEXT          7
+#define wxSYS_COLOUR_WINDOWTEXT        8
+#define wxSYS_COLOUR_CAPTIONTEXT       9
+#define wxSYS_COLOUR_ACTIVEBORDER      10
+#define wxSYS_COLOUR_INACTIVEBORDER    11
+#define wxSYS_COLOUR_APPWORKSPACE      12
+#define wxSYS_COLOUR_HIGHLIGHT         13
+#define wxSYS_COLOUR_HIGHLIGHTTEXT     14
+#define wxSYS_COLOUR_BTNFACE           15
+#define wxSYS_COLOUR_BTNSHADOW         16
+#define wxSYS_COLOUR_GRAYTEXT          17
+#define wxSYS_COLOUR_BTNTEXT           18
+#define wxSYS_COLOUR_INACTIVECAPTIONTEXT 19
+#define wxSYS_COLOUR_BTNHIGHLIGHT      20
+
+#define wxSYS_COLOUR_3DDKSHADOW        21
+#define wxSYS_COLOUR_3DLIGHT           22
+#define wxSYS_COLOUR_INFOTEXT          23
+#define wxSYS_COLOUR_INFOBK            24
+
+#define wxSYS_COLOUR_DESKTOP           wxSYS_COLOUR_BACKGROUND
+#define wxSYS_COLOUR_3DFACE            wxSYS_COLOUR_BTNFACE
+#define wxSYS_COLOUR_3DSHADOW          wxSYS_COLOUR_BTNSHADOW
+#define wxSYS_COLOUR_3DHIGHLIGHT       wxSYS_COLOUR_BTNHIGHLIGHT
+#define wxSYS_COLOUR_3DHILIGHT         wxSYS_COLOUR_BTNHIGHLIGHT
+#define wxSYS_COLOUR_BTNHILIGHT        wxSYS_COLOUR_BTNHIGHLIGHT
+
+// Metrics
+#define wxSYS_MOUSE_BUTTONS           1
+#define wxSYS_BORDER_X                2
+#define wxSYS_BORDER_Y                3
+#define wxSYS_CURSOR_X                4
+#define wxSYS_CURSOR_Y                5
+#define wxSYS_DCLICK_X                6
+#define wxSYS_DCLICK_Y                7
+#define wxSYS_DRAG_X                  8
+#define wxSYS_DRAG_Y                  9
+#define wxSYS_EDGE_X                  10
+#define wxSYS_EDGE_Y                  11
+#define wxSYS_HSCROLL_ARROW_X         12
+#define wxSYS_HSCROLL_ARROW_Y         13
+#define wxSYS_HTHUMB_X                14
+#define wxSYS_ICON_X                  15
+#define wxSYS_ICON_Y                  16
+#define wxSYS_ICONSPACING_X           17
+#define wxSYS_ICONSPACING_Y           18
+#define wxSYS_WINDOWMIN_X             19
+#define wxSYS_WINDOWMIN_Y             20
+#define wxSYS_SCREEN_X                21
+#define wxSYS_SCREEN_Y                22
+#define wxSYS_FRAMESIZE_X             23
+#define wxSYS_FRAMESIZE_Y             24
+#define wxSYS_SMALLICON_X             25
+#define wxSYS_SMALLICON_Y             26
+#define wxSYS_HSCROLL_Y               27
+#define wxSYS_VSCROLL_X               28
+#define wxSYS_VSCROLL_ARROW_X         29
+#define wxSYS_VSCROLL_ARROW_Y         30
+#define wxSYS_VTHUMB_Y                31
+#define wxSYS_CAPTION_Y               32
+#define wxSYS_MENU_Y                  33
+#define wxSYS_NETWORK_PRESENT         34
+#define wxSYS_PENWINDOWS_PRESENT      35
+#define wxSYS_SHOW_SOUNDS             36
+#define wxSYS_SWAP_BUTTONS            37
 
 class WXDLLEXPORT wxSystemSettings: public wxObject
 {
 public:
-    inline wxSystemSettings(void) {}
+    inline wxSystemSettings() {}
 
     // Get a system colour
     static wxColour    GetSystemColour(int index);
@@ -37,4 +126,4 @@ public:
 };
 
 #endif
-    // __GTKSETTINGSH__
+    // _WX_SETTINGS_H_
index 32b61d4f75d851473674ad3446a1a885f2f8476e..239e914e5cedb657ef56e3cfd4dbc19d035d2046 100644 (file)
@@ -1,86 +1,91 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        slider.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxSlider class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKSLIDERH__
-#define __GTKSLIDERH__
+#ifndef _WX_SLIDER_H_
+#define _WX_SLIDER_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "slider.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/list.h"
 #include "wx/control.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class wxSlider;
-
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
-
-extern const char *wxSliderNameStr;
+WXDLLEXPORT_DATA(extern const char*) wxSliderNameStr;
 
-//-----------------------------------------------------------------------------
-// wxSlider
-//-----------------------------------------------------------------------------
-
-class wxSlider: public wxControl
+// Slider
+class WXDLLEXPORT wxSlider: public wxControl
 {
   DECLARE_DYNAMIC_CLASS(wxSlider)
 
-  public:
-    wxSlider(void);
-    wxSlider( wxWindow *parent, wxWindowID id,
+public:
+  wxSlider();
+
+  inline wxSlider(wxWindow *parent, wxWindowID id,
            int value, int minValue, int maxValue,
            const wxPoint& pos = wxDefaultPosition,
            const wxSize& size = wxDefaultSize,
            long style = wxSL_HORIZONTAL,
-/*           const wxValidator& validator = wxDefaultValidator, */
-           const wxString& name = wxSliderNameStr);
-   ~wxSlider(void);
-   bool Create(wxWindow *parent, wxWindowID id,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxSliderNameStr)
+  {
+      Create(parent, id, value, minValue, maxValue, pos, size, style, validator, name);
+  }
+
+  ~wxSlider();
+
+  bool Create(wxWindow *parent, wxWindowID id,
            int value, int minValue, int maxValue,
            const wxPoint& pos = wxDefaultPosition,
            const wxSize& size = wxDefaultSize,
            long style = wxSL_HORIZONTAL,
-/*           const wxValidator& validator = wxDefaultValidator, */
+           const wxValidator& validator = wxDefaultValidator,
            const wxString& name = wxSliderNameStr);
-    virtual int GetValue(void) const;
-    virtual void SetValue( int );
-    void GetSize( int *x, int *y ) const;
-    void SetSize( int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO );
-    void GetPosition( int *x, int *y ) const;
-    void SetRange( int minValue, int maxValue );
-    int GetMin(void) const;
-    int GetMax(void) const;
-    void SetTickFreq( int n, int pos );
-    int GetTickFreq(void) const;
-    void SetPageSize( int pageSize );
-    int GetPageSize(void) const;
-    void ClearSel(void);
-    void ClearTicks(void);
-    void SetLineSize( int lineSize );
-    int GetLineSize(void) const;
-    int GetSelEnd(void) const;
-    int GetSelStart(void) const;
-    void SetSelection( int minPos, int maxPos );
-    void SetThumbLength( int len );
-    int GetThumbLength(void) const;
-    void SetTick( int tickPos );
-    
+
+  virtual int GetValue() const ;
+  virtual void SetValue(int);
+  void GetSize(int *x, int *y) const ;
+  void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
+  void GetPosition(int *x, int *y) const ;
+  bool Show(bool show);
+
+  void SetRange(int minValue, int maxValue);
+
+  inline int GetMin() const { return m_rangeMin; }
+  inline int GetMax() const { return m_rangeMax; }
+
+  // For trackbars only
+  void SetTickFreq(int n, int pos);
+  inline int GetTickFreq() const { return m_tickFreq; }
+  void SetPageSize(int pageSize);
+  int GetPageSize() const ;
+  void ClearSel() ;
+  void ClearTicks() ;
+  void SetLineSize(int lineSize);
+  int GetLineSize() const ;
+  int GetSelEnd() const ;
+  int GetSelStart() const ;
+  void SetSelection(int minPos, int maxPos);
+  void SetThumbLength(int len) ;
+  int GetThumbLength() const ;
+  void SetTick(int tickPos) ;
+
+  void Command(wxCommandEvent& event);
+ protected:
+  int           m_rangeMin;
+  int           m_rangeMax;
+  int           m_pageSize;
+  int           m_lineSize;
+  int           m_tickFreq;
+DECLARE_EVENT_TABLE()
 };
 
-#endif // __GTKSLIDERH__
+#endif
+    // _WX_SLIDER_H_
index b534110b1d0dd6e17f371d100053fc57aa089276..f371fddd2d00d35b417d065d1f039e02720ada39 100644 (file)
@@ -1,60 +1,64 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        statbmp.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxStaticBitmap class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKSTATICBITMAPH__
-#define __GTKSTATICBITMAPH__
+#ifndef _WX_STATBMP_H_
+#define _WX_STATBMP_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "statbmp.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
 #include "wx/control.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+WXDLLEXPORT_DATA(extern const char*) wxStaticBitmapNameStr;
+
+class WXDLLEXPORT wxStaticBitmap: public wxControl
+{
+  DECLARE_DYNAMIC_CLASS(wxStaticBitmap)
+ public:
+  inline wxStaticBitmap() { }
 
-class wxStaticBitmap;
+  inline wxStaticBitmap(wxWindow *parent, wxWindowID id,
+           const wxBitmap& label,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = 0,
+           const wxString& name = wxStaticBitmapNameStr)
+  {
+    Create(parent, id, label, pos, size, style, name);
+  }
 
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
+  bool Create(wxWindow *parent, wxWindowID id,
+           const wxBitmap& label,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = 0,
+           const wxString& name = wxStaticBitmapNameStr);
 
-extern const char* wxStaticBitmapNameStr;
+  virtual void SetBitmap(const wxBitmap& bitmap);
 
-//-----------------------------------------------------------------------------
-// wxStaticBitmap
-//-----------------------------------------------------------------------------
+  virtual void Command(wxCommandEvent& WXUNUSED(event)) {};
+  virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {};
+
+  void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
+
+  inline wxBitmap& GetBitmap() const { return (wxBitmap&) m_messageBitmap; }
+
+  // overriden base class virtuals
+  virtual bool AcceptsFocus() const { return FALSE; }
+
+ protected:
+  wxBitmap m_messageBitmap;
 
-class wxStaticBitmap: public wxControl
-{
-  DECLARE_DYNAMIC_CLASS(wxStaticBitmap)
-  
-  public:
-  
-    wxStaticBitmap(void);
-    wxStaticBitmap( wxWindow *parent, wxWindowID id, const wxBitmap& label,
-      const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-      long style = 0, const wxString& name = wxStaticBitmapNameStr );
-    bool Create( wxWindow *parent, wxWindowID id, const wxBitmap& label,
-      const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-      long style = 0, const wxString& name = wxStaticBitmapNameStr);
-    virtual void SetBitmap( const wxBitmap& bitmap );
-    wxBitmap& GetBitmap(void) const { return (wxBitmap&)m_bitmap; }
-
- private:
-   wxBitmap   m_bitmap;
 };
 
-#endif // __GTKSTATICBITMAPH__
+#endif
+    // _WX_STATBMP_H_
index a6248a6bc99b147b2dbcd32876a74eefe4e6d89e..1aa4a6f88a5e0268b9134639f15c83899c7a57a3 100644 (file)
@@ -1,55 +1,57 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        stabox.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Name:        statbox.h
+// Purpose:     wxStaticBox class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKSTATICBOXH__
-#define __GTKSTATICBOXH__
+#ifndef _WX_STATBOX_H_
+#define _WX_STATBOX_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "statbox.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/list.h"
 #include "wx/control.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class wxStaticBox;
-
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
-
-extern const char *wxStaticBoxNameStr;
+WXDLLEXPORT_DATA(extern const char*) wxStaticBoxNameStr;
 
-//-----------------------------------------------------------------------------
-// wxStaticBox
-//-----------------------------------------------------------------------------
-
-class wxStaticBox: public wxControl
+// Group box
+class WXDLLEXPORT wxStaticBox: public wxControl
 {
   DECLARE_DYNAMIC_CLASS(wxStaticBox)
 
-  public:
-
-    wxStaticBox(void);
-    wxStaticBox( wxWindow *parent, wxWindowID id, const wxString &label, 
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, 
-      long style = 0, const wxString &name = wxStaticBoxNameStr  );
-    bool Create( wxWindow *parent, wxWindowID id, const wxString &label,
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, 
-      long style = 0, const wxString &name = wxStaticBoxNameStr  );
+ public:
+  inline wxStaticBox() {}
+  inline wxStaticBox(wxWindow *parent, wxWindowID id,
+           const wxString& label,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = 0,
+           const wxString& name = wxStaticBoxNameStr)
+  {
+    Create(parent, id, label, pos, size, style, name);
+  }
+
+  bool Create(wxWindow *parent, wxWindowID id,
+           const wxString& label,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = 0,
+           const wxString& name = wxStaticBoxNameStr);
+
+  virtual void Command(wxCommandEvent& WXUNUSED(event)) {};
+  virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {};
+
+  void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
+  void SetLabel(const wxString& label);
+
+DECLARE_EVENT_TABLE()
 };
 
-#endif // __GTKSTATICBOXH__
+#endif
+    // _WX_STATBOX_H_
index e60303c890cd2df19c0a51b2cf5c37c0a742112f..aa8eaf229eb9731065a8474cffd145c543ad046e 100644 (file)
@@ -1,57 +1,56 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        stattext.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxStaticText class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKSTATICTEXTH__
-#define __GTKSTATICTEXTH__
+#ifndef _WX_STATTEXT_H_
+#define _WX_STATTEXT_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "stattext.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/list.h"
 #include "wx/control.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class wxStaticText;
-
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
-
-extern const char *wxStaticTextNameStr;
+WXDLLEXPORT_DATA(extern const char*) wxStaticTextNameStr;
 
-//-----------------------------------------------------------------------------
-// wxStaticText
-//-----------------------------------------------------------------------------
-
-class wxStaticText: public wxControl
+class WXDLLEXPORT wxStaticText: public wxControl
 {
   DECLARE_DYNAMIC_CLASS(wxStaticText)
-
-  public:
-
-    wxStaticText(void);
-    wxStaticText( wxWindow *parent, wxWindowID id, const wxString &label,
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, 
-      long style = 0, const wxString &name = wxStaticTextNameStr );
-    bool Create(  wxWindow *parent, wxWindowID id, const wxString &label,
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, 
-      long style = 0, const wxString &name = wxStaticTextNameStr );
-    wxString GetLabel(void) const;
-    void SetLabel( const wxString &label );
+ public:
+  inline wxStaticText() { }
+
+  inline wxStaticText(wxWindow *parent, wxWindowID id,
+           const wxString& label,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = 0,
+           const wxString& name = wxStaticTextNameStr)
+  {
+    Create(parent, id, label, pos, size, style, name);
+  }
+
+  bool Create(wxWindow *parent, wxWindowID id,
+           const wxString& label,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = 0,
+           const wxString& name = wxStaticTextNameStr);
+
+  // accessors
+  void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
+  void SetLabel(const wxString&);
+
+  // operations
+  virtual void Command(wxCommandEvent& WXUNUSED(event)) {};
+  virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {};
 };
 
-#endif // __GTKSTATICTEXTH__
+#endif
+    // _WX_STATTEXT_H_
index b1867509f3374253c186d88813068c0453f43db5..7c3d7b1ac25b482274609681b7e494a5ee0f28ba 100644 (file)
@@ -1,24 +1,21 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        textctrl.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:          $Id$
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
-// Licence:     wxWindows licence
+// Purpose:     wxTextCtrl class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
+// Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKTEXTCTRLH__
-#define __GTKTEXTCTRLH__
+#ifndef _WX_TEXTCTRL_H_
+#define _WX_TEXTCTRL_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "textctrl.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/string.h"
 #include "wx/control.h"
 
 #if USE_IOSTREAMH
 #include <iostream>
 #endif
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+WXDLLEXPORT_DATA(extern const char*) wxTextCtrlNameStr;
+WXDLLEXPORT_DATA(extern const char*) wxEmptyString;
 
-class wxTextCtrl;
+// Single-line text item
+class WXDLLEXPORT wxTextCtrl: public wxControl
 
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
+// TODO Some platforms/compilers don't like inheritance from streambuf.
 
-extern const char *wxTextCtrlNameStr;
+#if (defined(__BORLANDC__) && !defined(__WIN32__)) || defined(__MWERKS__)
+#define NO_TEXT_WINDOW_STREAM
+#endif
 
-//-----------------------------------------------------------------------------
-//  wxTextCtrl
-//-----------------------------------------------------------------------------
+#ifndef NO_TEXT_WINDOW_STREAM
+, public streambuf
+#endif
 
-class wxTextCtrl: public wxControl, public streambuf
 {
-  DECLARE_EVENT_TABLE()
-  DECLARE_DYNAMIC_CLASS(wxTextCtrl);
-
+  DECLARE_DYNAMIC_CLASS(wxTextCtrl)
+    
 public:
-    wxTextCtrl();
-    wxTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value = "",
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
-      int style = 0, const wxString &name = wxTextCtrlNameStr );
-    bool Create( wxWindow *parent, wxWindowID id, const wxString &value = "",
-      const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
-      int style = 0, const wxString &name = wxTextCtrlNameStr );
-    wxString GetValue() const;
-    void SetValue( const wxString &value );
-    void WriteText( const wxString &text );
-
-    bool LoadFile( const wxString &file );
-    bool SaveFile( const wxString &file );
-    bool IsModified() const { return m_modified; }
-    void SetModified() { m_modified = TRUE; }
-    void DiscardEdits() { m_modified = FALSE; }
-/*
-    wxString GetLineText( long lineNo ) const;
-    void OnDropFiles( wxDropFilesEvent &event );
-    long PositionToXY( long pos, long *x, long *y ) const;
-    long XYToPosition( long x, long y );
-    int GetNumberOfLines();
-*/
-    virtual void SetInsertionPoint( long pos );
-    virtual void SetInsertionPointEnd();
-    virtual void SetEditable( bool editable );
-    virtual void SetSelection( long from, long to );
-    void ShowPosition( long pos );
-    virtual long GetInsertionPoint() const;
-    virtual long GetLastPosition() const;
-    virtual void Remove( long from, long to );
-    virtual void Replace( long from, long to, const wxString &value );
-    void Cut();
-    void Copy();
-    void Paste();
-    void Delete();
-
-    void OnChar( wxKeyEvent &event );
-
-    int overflow(int i);
-    int sync();
-    int underflow();
-
-    wxTextCtrl& operator<<(const wxString& s);
-    wxTextCtrl& operator<<(int i);
-    wxTextCtrl& operator<<(long i);
-    wxTextCtrl& operator<<(float f);
-    wxTextCtrl& operator<<(double d);
-    wxTextCtrl& operator<<(const char c);
-
-private:
-  bool  m_modified;
+  // creation
+  // --------
+  wxTextCtrl();
+  inline wxTextCtrl(wxWindow *parent, wxWindowID id,
+                    const wxString& value = wxEmptyString,
+                    const wxPoint& pos = wxDefaultPosition,
+                    const wxSize& size = wxDefaultSize, long style = 0,
+                    const wxValidator& validator = wxDefaultValidator,
+                    const wxString& name = wxTextCtrlNameStr)
+#ifndef NO_TEXT_WINDOW_STREAM
+    :streambuf()
+#endif
+  {
+    Create(parent, id, value, pos, size, style, validator, name);
+  }
+  
+  bool Create(wxWindow *parent, wxWindowID id,
+              const wxString& value = wxEmptyString,
+              const wxPoint& pos = wxDefaultPosition,
+              const wxSize& size = wxDefaultSize, long style = 0,
+              const wxValidator& validator = wxDefaultValidator,
+              const wxString& name = wxTextCtrlNameStr);
+  
+  // accessors
+  // ---------
+  virtual wxString GetValue() const ;
+  virtual void SetValue(const wxString& value);
+
+  virtual int GetLineLength(long lineNo) const;
+  virtual wxString GetLineText(long lineNo) const;
+  virtual int GetNumberOfLines() const;
+
+  // operations
+  // ----------
+  virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
+  
+  // Clipboard operations
+  virtual void Copy();
+  virtual void Cut();
+  virtual void Paste();
+  
+  virtual void SetInsertionPoint(long pos);
+  virtual void SetInsertionPointEnd();
+  virtual long GetInsertionPoint() const ;
+  virtual long GetLastPosition() const ;
+  virtual void Replace(long from, long to, const wxString& value);
+  virtual void Remove(long from, long to);
+  virtual void SetSelection(long from, long to);
+  virtual void SetEditable(bool editable);
+  
+  // streambuf implementation
+#ifndef NO_TEXT_WINDOW_STREAM
+  int overflow(int i);
+  int sync();
+  int underflow();
+#endif
+  
+  wxTextCtrl& operator<<(const wxString& s);
+  wxTextCtrl& operator<<(int i);
+  wxTextCtrl& operator<<(long i);
+  wxTextCtrl& operator<<(float f);
+  wxTextCtrl& operator<<(double d);
+  wxTextCtrl& operator<<(const char c);
+  
+  virtual bool LoadFile(const wxString& file);
+  virtual bool SaveFile(const wxString& file);
+  virtual void WriteText(const wxString& text);
+  virtual void DiscardEdits();
+  virtual bool IsModified() const;
+  
+  virtual long XYToPosition(long x, long y) const ;
+  virtual void PositionToXY(long pos, long *x, long *y) const ;
+  virtual void ShowPosition(long pos);
+  virtual void Clear();
+  
+  // callbacks
+  // ---------
+  void OnDropFiles(wxDropFilesEvent& event);
+  void OnChar(wxKeyEvent& event); // Process 'enter' if required
+  void OnEraseBackground(wxEraseEvent& event);
+  
+  // Implementation
+  // --------------
+  virtual void Command(wxCommandEvent& event);
+
+protected:
+  wxString  m_fileName;
+  
+  DECLARE_EVENT_TABLE()
 };
 
-#endif // __GTKTEXTCTRLH__
-
-
+#endif
+    // _WX_TEXTCTRL_H_
index 3374012fe9b939b720075ff9fb249cfed2d07716..22fa2eed598f7370b359e73fc0728ae91fd79477 100644 (file)
@@ -1,52 +1,57 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        timer.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxTimer class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKTIMERH__
-#define __GTKTIMERH__
+#ifndef _WX_TIMER_H_
+#define _WX_TIMER_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "timer.h"
 #endif
 
-#include "wx/defs.h"
 #include "wx/object.h"
 
-//-----------------------------------------------------------------------------
-// derived classes
-//-----------------------------------------------------------------------------
-
-class wxTimer;
-
-//-----------------------------------------------------------------------------
-// wxTimer
-//-----------------------------------------------------------------------------
-
-class wxTimer: public wxObject
+class WXDLLEXPORT wxTimer: public wxObject
 {
   DECLARE_DYNAMIC_CLASS(wxTimer)
 
 public:
-
-    wxTimer(void);
-    ~wxTimer(void);
-    int Interval(void);
-    bool OneShot(void);
-    virtual void Notify(void);
-    void Start( int millisecs = -1, bool oneShot = FALSE );
-    void Stop(void);
-    
-  private:
-  
-    int  m_time;
-    bool m_oneShot;
+ public:
+  wxTimer();
+  ~wxTimer();
+  virtual bool Start(int milliseconds = -1,bool one_shot = FALSE); // Start timer
+  virtual void Stop();                   // Stop timer
+  virtual void Notify() = 0;             // Override this member
+  inline int Interval() { return m_milli ; }; // Returns the current interval time (0 if stop)
+
+protected:
+  bool      m_oneShot ;
+  int       m_milli ;
+  int       m_lastMilli ;
+  long      m_id;
+
 };
 
-#endif // __GTKTIMERH__
+/* Note: these are implemented in common/timercmn.cpp, so need to implement them separately.
+ * But you may need to modify timercmn.cpp.
+ */
+
+// Timer functions (milliseconds)
+void WXDLLEXPORT wxStartTimer();
+// Gets time since last wxStartTimer or wxGetElapsedTime
+long WXDLLEXPORT wxGetElapsedTime(bool resetTimer = TRUE);
+
+// EXPERIMENTAL: comment this out if it doesn't compile.
+bool WXDLLEXPORT wxGetLocalTime(long *timeZone, int *dstObserved);
+
+// Get number of seconds since 00:00:00 GMT, Jan 1st 1970.
+long WXDLLEXPORT wxGetCurrentTime();
+
+#endif
+    // _WX_TIMER_H_
index 3afeabd572505a0bb927a4d079188e30180c8f9d..c024635909b099649d59f93209b93d633f818cbf 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        window.h
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
-// Licence:     wxWindows licence
+// Purpose:     wxWindow class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
+// Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
-#ifndef __GTKWINDOWH__
-#define __GTKWINDOWH__
+#ifndef _WX_WINDOW_H_
+#define _WX_WINDOW_H_
 
 #ifdef __GNUG__
-#pragma interface
+#pragma interface "window.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/list.h"
-#include "wx/event.h"
-#include "wx/validate.h"
+#include "wx/gdicmn.h"
+#include "wx/icon.h"
 #include "wx/cursor.h"
+#include "wx/pen.h"
 #include "wx/font.h"
-#include "wx/dc.h"
+#include "wx/validate.h"
+#include "wx/event.h"
+#include "wx/string.h"
+#include "wx/list.h"
 #include "wx/region.h"
-#include "wx/dnd.h"
-
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
 
-extern const char *wxFrameNameStr;
-extern wxList wxTopLevelWindows;
-
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+#define wxKEY_SHIFT     1
+#define wxKEY_CTRL      2
+
+/*
+ * Base class for frame, panel, canvas, panel items, dialog box.
+ *
+ */
+
+/*
+ * Event handler: windows have themselves as their event handlers
+ * by default, but their event handlers could be set to another
+ * object entirely. This separation can reduce the amount of
+ * derivation required, and allow alteration of a window's functionality
+ * (e.g. by a resource editor that temporarily switches event handlers).
+ */
+
+class WXDLLEXPORT wxWindow;
+class WXDLLEXPORT wxEvent;
+class WXDLLEXPORT wxCommandEvent;
+class WXDLLEXPORT wxKeyEvent;
+class WXDLLEXPORT wxControl;
+class WXDLLEXPORT wxCursor;
+class WXDLLEXPORT wxColourMap;
+class WXDLLEXPORT wxFont;
+class WXDLLEXPORT wxMenu;
+class WXDLLEXPORT wxRectangle;
+class WXDLLEXPORT wxBitmap;
+class WXDLLEXPORT wxSizer;
+class WXDLLEXPORT wxList;
+class WXDLLEXPORT wxLayoutConstraints;
+class WXDLLEXPORT wxMouseEvent;
+class WXDLLEXPORT wxButton;
+class WXDLLEXPORT wxColour;
+class WXDLLEXPORT wxBrush;
+class WXDLLEXPORT wxPen;
+class WXDLLEXPORT wxIcon;
+class WXDLLEXPORT wxDC;
+class WXDLLEXPORT wxValidator;
+
+#if USE_DRAG_AND_DROP
+class WXDLLEXPORT wxDropTarget;
+#endif
 
-class wxLayoutConstraints;
-class wxSizer;
+#if USE_WX_RESOURCES
+class WXDLLEXPORT wxResourceTable;
+class WXDLLEXPORT wxItemResource;
+#endif
 
-class wxWindow;
-class wxCanvas;
+WXDLLEXPORT_DATA(extern const char*) wxPanelNameStr;
 
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
+WXDLLEXPORT_DATA(extern const wxSize) wxDefaultSize;
+WXDLLEXPORT_DATA(extern const wxPoint) wxDefaultPosition;
 
-extern const char *wxPanelNameStr;
-extern const wxSize wxDefaultSize;
-extern const wxPoint wxDefaultPosition;
+class WXDLLEXPORT wxWindow: public wxEvtHandler
+{
+  DECLARE_ABSTRACT_CLASS(wxWindow)
 
-//-----------------------------------------------------------------------------
-// wxWindow
-//-----------------------------------------------------------------------------
+  friend class wxDC;
+  friend class wxPaintDC;
 
-class wxWindow: public wxEvtHandler
-{
 public:
   wxWindow();
-  wxWindow( wxWindow *parent, wxWindowID id,
-    const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
-    long style = 0, const wxString &name = wxPanelNameStr );
-  bool Create( wxWindow *parent, wxWindowID id,
-    const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
-    long style = 0, const wxString &name = wxPanelNameStr );
+  inline wxWindow(wxWindow *parent, wxWindowID id,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = 0,
+           const wxString& name = wxPanelNameStr)
+  {
+         m_children = new wxList;
+      Create(parent, id, pos, size, style, name);
+  }
+
   virtual ~wxWindow();
-  bool Close( bool force = FALSE );
-  virtual bool Destroy();
-  virtual bool DestroyChildren();
-
-  virtual void PrepareDC( wxDC &dc );
-
-  virtual void SetSize( int x, int y, int width, int height,
-    int sizeFlags = wxSIZE_AUTO );
-  virtual void SetSize( int width, int height );
-  virtual void Move( int x, int y );
-  virtual void GetSize( int *width, int *height ) const;
-  virtual void SetClientSize( int const width, int const height );
-  virtual void GetClientSize( int *width, int *height ) const;
-  virtual void GetPosition( int *x, int *y ) const;
-  virtual void Centre( int direction = wxHORIZONTAL );
+
+  bool Create(wxWindow *parent, wxWindowID id,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = 0,
+           const wxString& name = wxPanelNameStr);
+
+  // Fit the window around the items
   virtual void Fit();
 
-  void OnSize( wxSizeEvent &event );
-  void OnIdle( wxIdleEvent& event );
+  // Show or hide the window
+  virtual bool Show(bool show);
 
-  virtual bool Show( bool show );
-  virtual void Enable( bool enable );
-  virtual void MakeModal( bool modal );
-  virtual bool IsEnabled() const { return m_isEnabled; };
-  virtual void SetFocus();
-  virtual bool OnClose();
+  // Is the window shown?
+  virtual bool IsShown() const;
 
-  virtual void AddChild( wxWindow *child );
-  wxList *GetChildren();
-  virtual void RemoveChild( wxWindow *child );
-  void SetReturnCode( int retCode );
-  int GetReturnCode();
-  wxWindow *GetParent();
+  // Raise the window to the top of the Z order
+  virtual void Raise();
 
-  wxEvtHandler *GetEventHandler();
-  void SetEventhandler( wxEvtHandler *handler );
+  // Lower the window to the bottom of the Z order
+  virtual void Lower();
 
-  virtual wxValidator *GetValidator();
-  virtual void SetValidator( wxValidator *validator );
+  // Is the window enabled?
+  virtual bool IsEnabled() const;
 
-  bool IsBeingDeleted();
+  // For compatibility
+  inline bool Enabled() const { return IsEnabled(); }
 
-  void SetId( wxWindowID id );
-  wxWindowID GetId();
+  // Dialog support: override these and call
+  // base class members to add functionality
+  // that can't be done using validators.
 
-  void SetCursor( const wxCursor &cursor );
+  // Transfer values to controls. If returns FALSE,
+  // it's an application error (pops up a dialog)
+  virtual bool TransferDataToWindow();
 
-  virtual void Refresh( bool eraseBackground = TRUE, const wxRect *rect = NULL );
-  virtual void Clear();
-  virtual bool IsExposed( long x, long y );
-  virtual bool IsExposed( long x, long y, long width, long height );
-
-  virtual wxColour GetBackgroundColour() const;
-  virtual void SetBackgroundColour( const wxColour &colour );
-
-  virtual void SetDefaultBackgroundColour( const wxColour& col )
-    { m_defaultBackgroundColour = col; };
-  virtual wxColour GetDefaultBackgroundColour() const
-    { return m_defaultBackgroundColour; };
-  virtual void SetDefaultForegroundColour( const wxColour& col )
-    { m_defaultForegroundColour = col; };
-  virtual wxColour GetDefaultForegroundColour() const
-    { return m_defaultForegroundColour; };
-
-  virtual void SetFont( const wxFont &font );
-  virtual wxFont *GetFont();
-  // For backward compatibility
-  inline virtual void SetButtonFont(const wxFont& font) { SetFont(font); }
-  inline virtual void SetLabelFont(const wxFont& font) { SetFont(font); }
-  inline virtual wxFont *GetLabelFont() { return GetFont(); };
-  inline virtual wxFont *GetButtonFont() { return GetFont(); };
-  virtual void SetWindowStyleFlag( long flag );
-  virtual long GetWindowStyleFlag() const;
+  // Transfer values from controls. If returns FALSE,
+  // transfer failed: don't quit
+  virtual bool TransferDataFromWindow();
+
+  // Validate controls. If returns FALSE,
+  // validation failed: don't quit
+  virtual bool Validate();
+
+  // Return code for dialogs
+  inline void SetReturnCode(int retCode);
+  inline int GetReturnCode();
+
+  // Set the cursor
+  virtual void SetCursor(const wxCursor& cursor);
+  inline virtual wxCursor *GetCursor() const { return (wxCursor *)& m_windowCursor; };
+
+  // Get the window with the focus
+  static wxWindow *FindFocus();
+
+  // Get character size
+  virtual int GetCharHeight() const;
+  virtual int GetCharWidth() const;
+
+  // Get overall window size
+  virtual void GetSize(int *width, int *height) const;
+
+  // Get window position, relative to parent (or screen if no parent)
+  virtual void GetPosition(int *x, int *y) const;
+
+  // Get client (application-useable) size
+  virtual void GetClientSize(int *width, int *height) const;
+
+  // Set overall size and position
+  virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
+  inline virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); }
+  inline virtual void Move(int x, int y) { SetSize(x, y, -1, -1, wxSIZE_USE_EXISTING); }
+
+  // Set client size
+  virtual void SetClientSize(int width, int size);
+
+  // Convert client to screen coordinates
+  virtual void ClientToScreen(int *x, int *y) const;
+
+  // Convert screen to client coordinates
+  virtual void ScreenToClient(int *x, int *y) const;
+
+  // Set the focus to this window
+  virtual void SetFocus();
+
+  // Capture/release mouse
   virtual void CaptureMouse();
   virtual void ReleaseMouse();
-  virtual void SetTitle( const wxString &title );
-  virtual wxString GetTitle() const;
-  virtual void SetName( const wxString &name );
-  virtual wxString GetName() const;
-  virtual wxString GetLabel() const;
 
-  void OnSysColourChanged( wxSysColourChangedEvent &WXUNUSED(event) ) {};
+  // Enable or disable the window
+  virtual void Enable(bool enable);
 
-  virtual bool IsShown() const;
-  virtual bool IsRetained();
-  virtual wxWindow *FindWindow( long id );
-  virtual wxWindow *FindWindow( const wxString& name );
-  void AllowDoubleClick( bool WXUNUSED(allow) ) {};
-  void SetDoubleClick( bool WXUNUSED(allow) ) {};
-  virtual void ClientToScreen( int *x, int *y );
-  virtual void ScreenToClient( int *x, int *y );
-
-  virtual bool Validate();
-  virtual bool TransferDataToWindow();
-  virtual bool TransferDataFromWindow();
-  void OnInitDialog( wxInitDialogEvent &event );
-  virtual void InitDialog();
+#if USE_DRAG_AND_DROP
+  // Associate a drop target with this window (if the window already had a drop
+  // target, it's deleted!) and return the current drop target (may be NULL).
+  void          SetDropTarget(wxDropTarget *pDropTarget);
+  wxDropTarget *GetDropTarget() const { return m_pDropTarget; }
+#endif
 
-  virtual void SetDropTarget( wxDropTarget *dropTarget );
-  virtual wxDropTarget *GetDropTarget() const;
+  // Accept files for dragging
+  virtual void DragAcceptFiles(bool accept);
+
+  // Update region access
+  virtual wxRegion GetUpdateRegion() const;
+  virtual bool IsExposed(int x, int y, int w, int h) const;
+  virtual bool IsExposed(const wxPoint& pt) const;
+  virtual bool IsExposed(const wxRect& rect) const;
+
+  // Set/get the window title
+  virtual inline void SetTitle(const wxString& WXUNUSED(title)) {};
+  inline virtual wxString GetTitle() const { return wxString(""); };
+  // Most windows have the concept of a label; for frames, this is the
+  // title; for items, this is the label or button text.
+  inline virtual wxString GetLabel() const { return GetTitle(); }
+
+  // Set/get the window name (used for resource setting in X)
+  inline virtual wxString GetName() const;
+  inline virtual void SetName(const wxString& name);
+
+  // Centre the window
+  virtual void Centre(int direction) ;
+  inline void Center(int direction = wxHORIZONTAL) { Centre(direction); }
+
+  // Popup a menu
+  virtual bool PopupMenu(wxMenu *menu, int x, int y);
+
+  // Send the window a refresh event
+  virtual void Refresh(bool eraseBack = TRUE, const wxRectangle *rect = NULL);
+
+  // New functions that will replace the above.
+  virtual void SetScrollbar(int orient, int pos, int thumbVisible,
+    int range, bool refresh = TRUE);
+
+  virtual void SetScrollPos(int orient, int pos, bool refresh = TRUE);
+  virtual int GetScrollPos(int orient) const;
+  virtual int GetScrollRange(int orient) const;
+  virtual int GetScrollThumb(int orient) const;
+
+  virtual void ScrollWindow(int dx, int dy, const wxRectangle *rect = NULL);
+
+  // Caret manipulation
+  virtual void CreateCaret(int w, int h);
+  virtual void CreateCaret(const wxBitmap *bitmap);
+  virtual void DestroyCaret();
+  virtual void ShowCaret(bool show);
+  virtual void SetCaretPos(int x, int y);
+  virtual void GetCaretPos(int *x, int *y) const;
+
+  // Tell window how much it can be sized
+  virtual void SetSizeHints(int minW = -1, int minH = -1, int maxW = -1, int maxH = -1, int incW = -1, int incH = -1);
+
+  // Set/get the window's identifier
+  inline int GetId() const;
+  inline void SetId(int id);
+
+  // Make the window modal (all other windows unresponsive)
+  virtual void MakeModal(bool modal);
+
+  // Get the private handle (platform-dependent)
+  inline void *GetHandle() const;
+
+  // Set/get the window's relatives
+  inline wxWindow *GetParent() const;
+  inline void SetParent(wxWindow *p) ;
+  inline wxWindow *GetGrandParent() const;
+  inline wxList *GetChildren() const;
+
+  // Set/get the window's font
+  virtual void SetFont(const wxFont& f);
+  inline virtual wxFont *GetFont() const;
+
+  // Set/get the window's validator
+  void SetValidator(const wxValidator& validator);
+  inline wxValidator *GetValidator() const;
+
+  // Set/get the window's style
+  inline void SetWindowStyleFlag(long flag);
+  inline long GetWindowStyleFlag() const;
+
+  // Set/get event handler
+  inline void SetEventHandler(wxEvtHandler *handler);
+  inline wxEvtHandler *GetEventHandler() const;
+
+  // Push/pop event handler (i.e. allow a chain of event handlers
+  // be searched)
+  void PushEventHandler(wxEvtHandler *handler) ;
+  wxEvtHandler *PopEventHandler(bool deleteHandler = FALSE) ;
   
-public:
-  virtual void SetScrollbar( int orient, int pos, int thumbVisible,
-    int range, bool refresh = TRUE );
-  virtual void SetScrollPos( int orient, int pos, bool refresh = TRUE );
-  virtual int GetScrollPos( int orient ) const;
-  virtual int GetScrollThumb( int orient ) const;
-  virtual int GetScrollRange( int orient ) const;
-  virtual void ScrollWindow( int dx, int dy, const wxRect* rect = NULL );
-
-  // return FALSE from here if the window doesn't want the focus
-  virtual bool AcceptsFocus() const;
+  // Close the window by calling OnClose, posting a deletion
+  virtual bool Close(bool force = FALSE);
+
+  // Destroy the window (delayed, if a managed window)
+  virtual bool Destroy() ;
+
+  // Mode for telling default OnSize members to
+  // call Layout(), if not using Sizers, just top-down constraints
+  inline void SetAutoLayout(bool a);
+  inline bool GetAutoLayout() const;
+
+  // Set/get constraints
+  inline wxLayoutConstraints *GetConstraints() const;
+  void SetConstraints(wxLayoutConstraints *c);
+
+  // Set/get window background colour
+  inline virtual void SetBackgroundColour(const wxColour& col);
+  inline virtual wxColour GetBackgroundColour() const;
+
+  // Set/get window foreground colour
+  inline virtual void SetForegroundColour(const wxColour& col);
+  inline virtual wxColour GetForegroundColour() const;
+
+  // Set/get window default background colour (for children to inherit).
+  // NOTE: these may be removed in later revisions.
+  inline virtual void SetDefaultBackgroundColour(const wxColour& col);
+  inline virtual wxColour GetDefaultBackgroundColour(void) const;
+
+  // Set/get window default foreground colour (for children to inherit)
+  inline virtual void SetDefaultForegroundColour(const wxColour& col);
+  inline virtual wxColour GetDefaultForegroundColour(void) const;
+
+  // Get the default button, if there is one
+  inline virtual wxButton *GetDefaultItem() const;
+  inline virtual void SetDefaultItem(wxButton *but);
+
+  // Override to define new behaviour for default action (e.g. double clicking
+  // on a listbox)
+  virtual void OnDefaultAction(wxControl *initiatingItem);
+
+  // Resource loading
+#if USE_WX_RESOURCES
+  virtual bool LoadFromResource(wxWindow *parent, const wxString& resourceName, const wxResourceTable *table = NULL);
+  virtual wxControl *CreateItem(const wxItemResource *childResource, const wxResourceTable *table = NULL);
+#endif
+
+  // Native resource loading
+  virtual bool LoadNativeDialog(wxWindow* parent, wxWindowID& id);
+  virtual bool LoadNativeDialog(wxWindow* parent, const wxString& name);
+  virtual wxWindow* GetWindowChild1(wxWindowID& id);
+  virtual wxWindow* GetWindowChild(wxWindowID& id);
+
+  virtual void GetTextExtent(const wxString& string, int *x, int *y,
+                             int *descent = NULL,
+                             int *externalLeading = NULL,
+                             const wxFont *theFont = NULL, bool use16 = FALSE) const;
+
+  // Is the window retained?
+  inline bool IsRetained() const;
 
-  // update the UI state (called from OnIdle)
+  // Warp the pointer the given position
+  virtual void WarpPointer(int x_pos, int y_pos) ;
+
+  // Clear the window
+  virtual void Clear();
+
+  // Find a window by id or name
+  virtual wxWindow *FindWindow(long id);
+  virtual wxWindow *FindWindow(const wxString& name);
+
+  // Constraint operations
+  bool Layout();
+  void SetSizer(wxSizer *sizer);    // Adds sizer child to this window
+  inline wxSizer *GetSizer() const ;
+  inline wxWindow *GetSizerParent() const ;
+  inline void SetSizerParent(wxWindow *win);
+
+  // Do Update UI processing for controls
   void UpdateWindowUI();
 
+  void OnEraseBackground(wxEraseEvent& event);
+  void OnChar(wxKeyEvent& event);
+  void OnPaint(wxPaintEvent& event);
+  void OnIdle(wxIdleEvent& event);
+
+  // Does this window want to accept keyboard focus?
+  virtual bool AcceptsFocus() const;
+
+public:
+  ////////////////////////////////////////////////////////////////////////
+  //// IMPLEMENTATION
   
-public:         // cannot get private going yet
-
-
-  wxWindow       *m_parent;
-  wxList          m_children;
-  int             m_x,m_y;
-  int             m_width,m_height;
-  int             m_retCode;
-  wxEvtHandler   *m_eventHandler;
-  wxValidator    *m_windowValidator;
-  wxDropTarget   *m_pDropTarget;
-  wxWindowID      m_windowId;
-  wxCursor       *m_cursor;
-  wxFont          m_font;
-  wxColour        m_backgroundColour;
-  wxColour        m_defaultBackgroundColour;
-  wxColour        m_foregroundColour ;
-  wxColour        m_defaultForegroundColour;
-  wxRegion        m_updateRegion;
-  long            m_windowStyle;
-  bool            m_isShown;
-  bool            m_isEnabled;
-  wxString        m_windowName;
-
-
-public:  // Layout section
-
-  wxLayoutConstraints * m_constraints;
-  wxList *              m_constraintsInvolvedIn;
-  wxSizer *             m_windowSizer;
-  wxWindow *            m_sizerParent;
-  bool                  m_autoLayout;
-
-  wxLayoutConstraints *GetConstraints() const;
-  void SetConstraints( wxLayoutConstraints *constraints );
-  void SetAutoLayout( bool autoLayout );
-  bool GetAutoLayout() const;
-  bool Layout();
-  void SetSizer( wxSizer *sizer );
-  wxSizer *GetSizer() const;
-  void SetSizerParent( wxWindow *win );
-  wxWindow *GetSizerParent() const;
+  // For implementation purposes - sometimes decorations make the client area
+  // smaller
+  virtual wxPoint GetClientAreaOrigin() const;
+
+  // Makes an adjustment to the window position (for example, a frame that has
+  // a toolbar that it manages itself).
+  virtual void AdjustForParentClientOrigin(int& x, int& y, int sizeFlags);
+
+  // Executes the default message
+  virtual long Default();
+
+/* TODO: you may need something like this
+  // Determine whether 3D effects are wanted
+  virtual WXDWORD Determine3DEffects(WXDWORD defaultBorderStyle, bool *want3D);
+*/
+
+  virtual void AddChild(wxWindow *child);         // Adds reference to the child object
+  virtual void RemoveChild(wxWindow *child);   // Removes reference to child
+                                       // (but doesn't delete the child object)
+  virtual void DestroyChildren();  // Removes and destroys all children
+
+  // Constraint implementation
   void UnsetConstraints(wxLayoutConstraints *c);
   inline wxList *GetConstraintsInvolvedIn() const ;
+  // Back-pointer to other windows we're involved with, so if we delete
+  // this window, we must delete any constraints we're involved with.
   void AddConstraintReference(wxWindow *otherWin);
   void RemoveConstraintReference(wxWindow *otherWin);
   void DeleteRelatedConstraints();
+
   virtual void ResetConstraints();
   virtual void SetConstraintSizes(bool recurse = TRUE);
   virtual bool LayoutPhase1(int *noChanges);
   virtual bool LayoutPhase2(int *noChanges);
   virtual bool DoPhase(int);
+  // Transforms from sizer coordinate space to actual
+  // parent coordinate space
   virtual void TransformSizerToActual(int *x, int *y) const ;
+
+  // Set size with transformation to actual coordinates if nec.
   virtual void SizerSetSize(int x, int y, int w, int h);
   virtual void SizerMove(int x, int y);
+
+  // Only set/get the size/position of the constraint (if any)
   virtual void SetSizeConstraint(int x, int y, int w, int h);
   virtual void MoveConstraint(int x, int y);
   virtual void GetSizeConstraint(int *w, int *h) const ;
   virtual void GetClientSizeConstraint(int *w, int *h) const ;
   virtual void GetPositionConstraint(int *x, int *y) const ;
 
-  DECLARE_DYNAMIC_CLASS(wxWindow)
-  DECLARE_EVENT_TABLE()
+  wxObject *GetChild(int number) const ;
+
+  inline void SetShowing(bool show);
+  inline bool IsUserEnabled() const;
+  inline bool GetTransparentBackground() const ;
+
+  // Responds to colour changes: passes event on to children.
+  void OnSysColourChanged(wxSysColourChangedEvent& event);
+
+  // Transfers data to any child controls
+  void OnInitDialog(wxInitDialogEvent& event);
+
+  // Sends an OnInitDialog event, which in turns transfers data to
+  // to the window via validators.
+  virtual void InitDialog();
+
+  ////////////////////////////////////////////////////////////////////////
+  //// PROTECTED DATA
+protected:
+  int                   m_windowId;
+  long                  m_windowStyle;                         // Store the window's style
+  wxEvtHandler *        m_windowEventHandler;  // Usually is 'this'
+  wxLayoutConstraints * m_constraints;           // Constraints for this window
+  wxList *              m_constraintsInvolvedIn; // List of constraints we're involved in
+  wxSizer *             m_windowSizer;                       // Window's top-level sizer (if any)
+  wxWindow *            m_sizerParent;                      // Window's parent sizer (if any)
+  bool                  m_autoLayout;                            // Whether to call Layout() in OnSize
+  wxWindow *            m_windowParent;                     // Each window always knows its parent
+  wxValidator *         m_windowValidator;
+  int                   m_minSizeX;
+  int                   m_minSizeY;
+  int                   m_maxSizeX;
+  int                   m_maxSizeY;
+
+  // Caret data
+  int                   m_caretWidth;
+  int                   m_caretHeight;
+  bool                  m_caretEnabled;
+  bool                  m_caretShown;
+  wxFont                m_windowFont;                               // Window's font
+  wxCursor              m_windowCursor;                        // Window's cursor
+  wxString              m_windowName;                            // Window name
+
+  wxButton *            m_defaultItem;
+
+  wxColour              m_backgroundColour ;
+  wxColour              m_foregroundColour ;
+  wxColour              m_defaultBackgroundColour;
+  wxColour              m_defaultForegroundColour;
+
+#if USE_DRAG_AND_DROP
+  wxDropTarget         *m_pDropTarget;    // the current drop target or NULL
+#endif  //USE_DRAG_AND_DROP
+
+public:
+  wxRegion              m_updateRegion;
+  wxList *              m_children;                           // Window's children
+  int                   m_returnCode;
+
+DECLARE_EVENT_TABLE()
 };
 
-#endif // __GTKWINDOWH__
+////////////////////////////////////////////////////////////////////////
+//// INLINES
+
+inline void *wxWindow::GetHandle() const { return (void *)NULL; }
+inline int wxWindow::GetId() const { return m_windowId; }
+inline void wxWindow::SetId(int id) { m_windowId = id; }
+inline wxWindow *wxWindow::GetParent() const { return m_windowParent; }
+inline void wxWindow::SetParent(wxWindow *p) { m_windowParent = p; }
+inline wxWindow *wxWindow::GetGrandParent() const { return (m_windowParent ? m_windowParent->m_windowParent : NULL); }
+inline wxList *wxWindow::GetChildren() const { return m_children; }
+inline wxFont *wxWindow::GetFont() const { return (wxFont *) & m_windowFont; }
+inline wxString wxWindow::GetName() const { return m_windowName; }
+inline void wxWindow::SetName(const wxString& name) { m_windowName = name; }
+inline long wxWindow::GetWindowStyleFlag() const { return m_windowStyle; }
+inline void wxWindow::SetWindowStyleFlag(long flag) { m_windowStyle = flag; }
+inline void wxWindow::SetDoubleClick(bool flag) { m_doubleClickAllowed = flag; }
+inline bool wxWindow::GetDoubleClick() const { return m_doubleClickAllowed; }
+inline void wxWindow::SetEventHandler(wxEvtHandler *handler) { m_windowEventHandler = handler; }
+inline wxEvtHandler *wxWindow::GetEventHandler() const { return m_windowEventHandler; }
+inline void wxWindow::SetAutoLayout(bool a) { m_autoLayout = a; }
+inline bool wxWindow::GetAutoLayout() const { return m_autoLayout; }
+inline wxLayoutConstraints *wxWindow::GetConstraints() const { return m_constraints; }
+inline void wxWindow::SetBackgroundColour(const wxColour& col) { m_backgroundColour = col; };
+inline wxColour wxWindow::GetBackgroundColour() const { return m_backgroundColour; };
+inline void wxWindow::SetForegroundColour(const wxColour& col) { m_foregroundColour = col; };
+inline wxColour wxWindow::GetForegroundColour() const { return m_foregroundColour; };
+inline void wxWindow::SetDefaultForegroundColour(const wxColour& col) { m_defaultForegroundColour = col; };
+inline wxColour wxWindow::GetDefaultForegroundColour(void) const { return m_defaultForegroundColour; };
+inline void wxWindow::SetDefaultBackgroundColour(const wxColour& col) { m_defaultBackgroundColour = col; };
+inline wxColour wxWindow::GetDefaultBackgroundColour(void) const { return m_defaultBackgroundColour; };
+
+inline wxButton *wxWindow::GetDefaultItem() const { return m_defaultItem; }
+inline void wxWindow::SetDefaultItem(wxButton *but) { m_defaultItem = but; }
+inline bool wxWindow::IsRetained() const { return ((m_windowStyle & wxRETAINED) == wxRETAINED); }
+
+inline void wxWindow::SetShowing(bool show) { m_isShown = show; }
+inline wxList *wxWindow::GetConstraintsInvolvedIn() const { return m_constraintsInvolvedIn; }
+inline wxSizer *wxWindow::GetSizer() const { return m_windowSizer; }
+inline wxWindow *wxWindow::GetSizerParent() const { return m_sizerParent; }
+inline void wxWindow::SetSizerParent(wxWindow *win) { m_sizerParent = win; }
+inline wxValidator *wxWindow::GetValidator() const { return m_windowValidator; }
+inline bool wxWindow::IsUserEnabled() const { return m_winEnabled; }
+inline bool wxWindow::GetTransparentBackground() const { return m_backgroundTransparent; }
+inline void wxWindow::SetReturnCode(int retCode) { m_returnCode = retCode; }
+inline int wxWindow::GetReturnCode() { return m_returnCode; }
+
+// Get the active window.
+wxWindow* WXDLLEXPORT wxGetActiveWindow();
+
+WXDLLEXPORT_DATA(extern wxList) wxTopLevelWindows;
+
+#endif
+    // _WX_WINDOW_H_
index 882f4b2b6a917b9ae3cae6a353a2c6cce2c04d5c..f54a6806e2e803415eefd05ee04a2e37b52a0f67 100644 (file)
@@ -1,10 +1,11 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        app.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxApp
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #pragma implementation "app.h"
 #endif
 
+#include "wx/frame.h"
 #include "wx/app.h"
-#include "wx/gdicmn.h"
 #include "wx/utils.h"
-#include "wx/postscrp.h"
-#include "wx/intl.h"
+#include "wx/gdicmn.h"
+#include "wx/pen.h"
+#include "wx/brush.h"
+#include "wx/cursor.h"
+#include "wx/icon.h"
+#include "wx/palette.h"
+#include "wx/dc.h"
+#include "wx/dialog.h"
+#include "wx/msgdlg.h"
 #include "wx/log.h"
-#include "wx/memory.h"
-
-#include "unistd.h"
+#include "wx/module.h"
 
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
+#if USE_WX_RESOURCES
+#include "wx/resource.h"
+#endif
 
-wxApp *wxTheApp = NULL;
-wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL;
+#include <string.h>
 
+#if defined(__WIN95__) && !defined(__GNUWIN32__)
+extern char *wxBuffer;
 extern wxList wxPendingDelete;
 
-//-----------------------------------------------------------------------------
-// local functions
-//-----------------------------------------------------------------------------
-
-extern void wxFlushResources(void);
-
-//-----------------------------------------------------------------------------
-// global functions
-//-----------------------------------------------------------------------------
-
-void wxExit(void)
-{
-};
-
-bool wxYield(void)
-{
-  return TRUE;
-};
-
-//-----------------------------------------------------------------------------
-// wxApp
-//-----------------------------------------------------------------------------
-
-IMPLEMENT_DYNAMIC_CLASS(wxApp,wxEvtHandler)
+wxApp *wxTheApp = NULL;
 
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxApp, wxEvtHandler)
 BEGIN_EVENT_TABLE(wxApp, wxEvtHandler)
     EVT_IDLE(wxApp::OnIdle)
 END_EVENT_TABLE()
+#endif
 
-wxApp::wxApp()
-{
-  m_topWindow = NULL;
-  m_exitOnFrameDelete = TRUE;
-};
-
-wxApp::~wxApp(void)
-{
-};
-
-bool wxApp::OnInit(void)
-{
-  return TRUE;
-};
-
-bool wxApp::OnInitGui(void)
-{ 
-  return TRUE; 
-};
-
-int wxApp::OnRun(void) 
-{ 
-  return MainLoop(); 
-};
-
-bool wxApp::ProcessIdle(void)
-{
-  wxIdleEvent event;
-  event.SetEventObject( this );
-  ProcessEvent( event );
-  
-  return event.MoreRequested();
-};
-
-void wxApp::OnIdle( wxIdleEvent &event )
-{
-  static bool inOnIdle = FALSE;
-
-  // Avoid recursion (via ProcessEvent default case)
-  if (inOnIdle)
-    return;
-
-  inOnIdle = TRUE;
-
-  // 'Garbage' collection of windows deleted with Close().
-  DeletePendingObjects();
-
-  // flush the logged messages if any
-  wxLog *pLog = wxLog::GetActiveTarget();
-  if ( pLog != NULL && pLog->HasPendingMessages() )
-    pLog->Flush();
-
-  // Send OnIdle events to all windows
-  bool needMore = SendIdleEvents();
-
-  if (needMore)
-    event.RequestMore(TRUE);
-
-  inOnIdle = FALSE;
-};
+long wxApp::sm_lastMessageTime = 0;
 
-bool wxApp::SendIdleEvents(void)
+void wxApp::CommonInit()
 {
-    bool needMore = FALSE;
-       wxNode* node = wxTopLevelWindows.First();
-       while (node)
-       {
-               wxWindow* win = (wxWindow*) node->Data();
-               if (SendIdleEvents(win))
-            needMore = TRUE;
-
-               node = node->Next();
-       }
-    return needMore;
-};
-
-bool wxApp::SendIdleEvents( wxWindow* win )
-{
-    bool needMore = FALSE;
-
-       wxIdleEvent event;
-       event.SetEventObject(win);
-       win->ProcessEvent(event);
-
-    if (event.MoreRequested())
-        needMore = TRUE;
-
-       wxNode* node = win->GetChildren()->First();
-       while (node)
-       {
-               wxWindow* win = (wxWindow*) node->Data();
-               if (SendIdleEvents(win))
-            needMore = TRUE;
+#ifdef __WXMSW__
+  wxBuffer = new char[1500];
+#else
+  wxBuffer = new char[BUFSIZ + 512];
+#endif
 
-               node = node->Next();
-       }
-    return needMore ;
-};
+  wxClassInfo::InitializeClasses();
 
-int wxApp::OnExit(void)
-{
-  return 0;
-};
+  wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING);
+  wxTheColourDatabase->Initialize();
+  wxInitializeStockObjects();
 
-int wxApp::MainLoop(void)
-{
-  return 0;
-};
+#if USE_WX_RESOURCES
+  wxInitializeResourceSystem();
+#endif
 
-void wxApp::ExitMainLoop(void)
-{
-};
+  // For PostScript printing
+#if USE_POSTSCRIPT
+  wxInitializePrintSetupData();
+  wxThePrintPaperDatabase = new wxPrintPaperDatabase;
+  wxThePrintPaperDatabase->CreateDatabase();
+#endif
 
-bool wxApp::Initialized(void)
-{
-  return m_initialized;
-};
+  wxBitmap::InitStandardHandlers();
 
-bool wxApp::Pending(void) 
-{
-  return FALSE;
-};
+  wxModule::RegisterModules();
+  wxASSERT( wxModule::InitializeModules() == TRUE );
+}
 
-void wxApp::Dispatch(void) 
+void wxApp::CommonCleanUp()
 {
-};
+  wxModule::CleanUpModules();
 
-void wxApp::DeletePendingObjects(void)
-{
-  wxNode *node = wxPendingDelete.First();
-  while (node)
-  {
-    wxObject *obj = (wxObject *)node->Data();
-    
-    delete obj;
+#if USE_WX_RESOURCES
+  wxCleanUpResourceSystem();
+#endif
 
-    if (wxPendingDelete.Member(obj))
-      delete node;
+  wxDeleteStockObjects() ;
 
-    node = wxPendingDelete.First();
-  };
-};
+  // Destroy all GDI lists, etc.
+  delete wxTheBrushList;
+  wxTheBrushList = NULL;
 
-wxWindow *wxApp::GetTopWindow(void)
-{
-  if (m_topWindow) return m_topWindow;
-  wxNode *node = wxTopLevelWindows.First();
-  if (!node) return NULL;
-  return (wxWindow*)node->Data();
-};
+  delete wxThePenList;
+  wxThePenList = NULL;
 
-void wxApp::SetTopWindow( wxWindow *win )
-{
-  m_topWindow = win;
-};
+  delete wxTheFontList;
+  wxTheFontList = NULL;
 
-void wxApp::CommonInit(void)
-{
+  delete wxTheBitmapList;
+  wxTheBitmapList = NULL;
 
-/*
-#if USE_RESOURCES
-  (void) wxGetResource("wxWindows", "OsVersion", &wxOsVersion);
-#endif
-*/
+  delete wxTheColourDatabase;
+  wxTheColourDatabase = NULL;
 
-  wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING);
-  wxTheColourDatabase->Initialize();
-  wxInitializeStockObjects();
-
-  // For PostScript printing
 #if USE_POSTSCRIPT
-  wxInitializePrintSetupData();
-  wxThePrintPaperDatabase = new wxPrintPaperDatabase;
-  wxThePrintPaperDatabase->CreateDatabase();
+  wxInitializePrintSetupData(FALSE);
+  delete wxThePrintPaperDatabase;
+  wxThePrintPaperDatabase = NULL;
 #endif
 
+  wxBitmap::CleanUpHandlers();
 
-/*
-  wxBitmap::InitStandardHandlers();
-
-  g_globalCursor = new wxCursor;
-*/
+  delete[] wxBuffer;
+  wxBuffer = NULL;
 
-  wxInitializeStockObjects();
-};
-
-void wxApp::CommonCleanUp(void)
-{
-  wxDeleteStockObjects();
-  
-  wxFlushResources();
-};
-    
-wxLog *wxApp::CreateLogTarget()
-{
-  return new wxLogGui;
+  // do it as the very last thing because everything else can log messages
+  delete wxLog::SetActiveTarget(NULL);
 }
 
-//-----------------------------------------------------------------------------
-// wxEntry
-//-----------------------------------------------------------------------------
-
 int wxEntry( int argc, char *argv[] )
 {
-  wxBuffer = new char[BUFSIZ + 512];
-
   wxClassInfo::InitializeClasses();
   
 #if (WXDEBUG && USE_MEMORY_TRACING) || USE_DEBUG_CONTEXT
@@ -288,13 +145,7 @@ int wxEntry( int argc, char *argv[] )
       return 0;
     };
     
-    wxAppInitializerFunction app_ini = wxApp::GetInitializerFunction();
-    
-    wxObject *test_app = app_ini();
-    
-    wxTheApp = (wxApp*) test_app;
-    
-//    wxTheApp = (wxApp*)( app_ini() );
+       wxTheApp = (* wxApp::GetInitializerFunction()) ();
   };
   
   if (!wxTheApp) 
@@ -303,15 +154,14 @@ int wxEntry( int argc, char *argv[] )
     return 0;
   };
 
-//  printf( "Programmstart.\n" );
-  
   wxTheApp->argc = argc;
   wxTheApp->argv = argv;
 
-// Your init here  !!!!
-    
+  // TODO: your platform-specific initialization.
+
   wxApp::CommonInit();
 
+  // GUI-specific initialization, such as creating an app context.
   wxTheApp->OnInitGui();
 
   // Here frames insert themselves automatically
@@ -349,18 +199,197 @@ int wxEntry( int argc, char *argv[] )
   return retValue;
 };
 
-//-----------------------------------------------------------------------------
-// main()
-//-----------------------------------------------------------------------------
+// Static member initialization
+wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL;
 
-#if defined(AIX) || defined(AIX4) || defined(____HPUX__)
+wxApp::wxApp()
+{
+  m_topWindow = NULL;
+  wxTheApp = this;
+  m_className = "";
+  m_wantDebugOutput = TRUE ;
+  m_appName = "";
+  argc = 0;
+  argv = NULL;
+#ifdef __WXMSW__
+  m_printMode = wxPRINT_WINDOWS;
+#else
+  m_printMode = wxPRINT_POSTSCRIPT;
+#endif
+  m_exitOnFrameDelete = TRUE;
+  m_auto3D = TRUE;
+}
 
- // main in IMPLEMENT_WX_MAIN in IMPLEMENT_APP in app.h
+bool wxApp::Initialized()
+{
+  if (GetTopWindow())
+    return TRUE;
+  else
+    return FALSE;
+}
 
-#else
+int wxApp::MainLoop()
+{
+  m_keepGoing = TRUE;
 
-  int main(int argc, char *argv[]) { return wxEntry(argc, argv); }
+/* TODO: implement your main loop here, calling ProcessIdle in idle time.
+  while (m_keepGoing)
+  {
+    while (!::PeekMessage(&s_currentMsg, 0, 0, 0, PM_NOREMOVE) &&
+           ProcessIdle()) {}
+    if (!DoMessage())
+      m_keepGoing = FALSE;
+  }
+*/
 
-#endif
+  return 0;
+}
+
+// Returns TRUE if more time is needed.
+bool wxApp::ProcessIdle()
+{
+    wxIdleEvent event;
+    event.SetEventObject(this);
+    ProcessEvent(event);
+
+    return event.MoreRequested();
+}
+
+void wxApp::ExitMainLoop()
+{
+  m_keepGoing = FALSE;
+}
+
+// Is a message/event pending?
+bool wxApp::Pending()
+{
+/* TODO.
+ */
+  return FALSE;
+}
+
+// Dispatch a message.
+void wxApp::Dispatch()
+{
+/* TODO.
+ */
+}
+
+void wxApp::OnIdle(wxIdleEvent& event)
+{
+  static bool inOnIdle = FALSE;
+
+  // Avoid recursion (via ProcessEvent default case)
+  if (inOnIdle)
+    return;
+
+  inOnIdle = TRUE;
+
+  // 'Garbage' collection of windows deleted with Close().
+  DeletePendingObjects();
+
+  // flush the logged messages if any
+  wxLog *pLog = wxLog::GetActiveTarget();
+  if ( pLog != NULL && pLog->HasPendingMessages() )
+    pLog->Flush();
+
+  // Send OnIdle events to all windows
+  bool needMore = SendIdleEvents();
+
+  if (needMore)
+    event.RequestMore(TRUE);
+
+  inOnIdle = FALSE;
+}
+
+// Send idle event to all top-level windows
+bool wxApp::SendIdleEvents()
+{
+    bool needMore = FALSE;
+       wxNode* node = wxTopLevelWindows.First();
+       while (node)
+       {
+               wxWindow* win = (wxWindow*) node->Data();
+               if (SendIdleEvents(win))
+            needMore = TRUE;
 
+               node = node->Next();
+       }
+    return needMore;
+}
+
+// Send idle event to window and all subwindows
+bool wxApp::SendIdleEvents(wxWindow* win)
+{
+    bool needMore = FALSE;
+
+       wxIdleEvent event;
+       event.SetEventObject(win);
+       win->ProcessEvent(event);
+
+    if (event.MoreRequested())
+        needMore = TRUE;
+
+       wxNode* node = win->GetChildren()->First();
+       while (node)
+       {
+               wxWindow* win = (wxWindow*) node->Data();
+               if (SendIdleEvents(win))
+            needMore = TRUE;
+
+               node = node->Next();
+       }
+    return needMore ;
+}
+
+void wxApp::DeletePendingObjects()
+{
+  wxNode *node = wxPendingDelete.First();
+  while (node)
+  {
+    wxObject *obj = (wxObject *)node->Data();
+    
+    delete obj;
+
+    if (wxPendingDelete.Member(obj))
+      delete node;
+
+    // Deleting one object may have deleted other pending
+    // objects, so start from beginning of list again.
+    node = wxPendingDelete.First();
+  }
+}
+
+wxLog* wxApp::CreateLogTarget()
+{
+    return new wxLogGui;
+}
+
+wxWindow* wxApp::GetTopWindow() const
+{
+    if (m_topWindow)
+        return m_topWindow;
+    else if (wxTopLevelWindows.Number() > 0)
+        return (wxWindow*) wxTopLevelWindows.First()->Data();
+    else
+        return NULL;
+}
+
+void wxExit()
+{
+  wxApp::CommonCleanUp();
+/*
+ * TODO: Exit in some platform-specific way. Not recommended that the app calls this:
+ * only for emergencies.
+ */
+}
+
+// Yield to other processes
+bool wxYield()
+{
+  /*
+   * TODO
+   */
+  return TRUE;
+}
 
index 4d1738355a450f7bc834fee214f061e37e4c9efe..1e6255f55162f1ea94dba34153f66508a6906847 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        bitmap.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
+// Purpose:     wxBitmap
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
 // RCS-ID:      $Id$
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
-// Licence:    wxWindows licence
+// Copyright:   (c) AUTHOR
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
 #pragma implementation "bitmap.h"
 #endif
 
+#include "wx/setup.h"
+#include "wx/utils.h"
+#include "wx/palette.h"
 #include "wx/bitmap.h"
+#include "wx/icon.h"
+#include "wx/log.h"
 
+#if !USE_SHARED_LIBRARIES
+IMPLEMENT_DYNAMIC_CLASS(wxBitmap, wxGDIObject)
+IMPLEMENT_DYNAMIC_CLASS(wxMask, wxObject)
+#endif
+
+wxBitmapRefData::wxBitmapRefData()
+{
+    m_ok = FALSE;
+    m_width = 0;
+    m_height = 0;
+    m_depth = 0;
+    m_quality = 0;
+    m_numColors = 0;
+    m_bitmapMask = NULL;
+}
 
-//-----------------------------------------------------------------------------
-// wxMask
-//-----------------------------------------------------------------------------
+wxBitmapRefData::~wxBitmapRefData()
+{
+    /*
+     * TODO: delete the bitmap data here.
+     */
+
+    if (m_bitmapMask)
+        delete m_bitmapMask;
+    m_bitmapMask = NULL;
+}
 
-IMPLEMENT_DYNAMIC_CLASS(wxMask,wxObject)
+wxList wxBitmap::sm_handlers;
 
-wxMask::wxMask(void)
+wxBitmap::wxBitmap()
 {
-};
+    m_refData = NULL;
 
-wxMask::wxMask( const wxBitmap& WXUNUSED(bitmap), const wxColour& WXUNUSED(colour) )
+    if ( wxTheBitmapList )
+        wxTheBitmapList->AddBitmap(this);
+}
+
+wxBitmap::~wxBitmap()
 {
-};
+    if (wxTheBitmapList)
+        wxTheBitmapList->DeleteObject(this);
+}
 
-wxMask::wxMask( const wxBitmap& WXUNUSED(bitmap), int WXUNUSED(paletteIndex) )
+wxBitmap::wxBitmap(const char bits[], int the_width, int the_height, int no_bits)
 {
-};
+    m_refData = new wxBitmapRefData;
+
+    M_BITMAPDATA->m_width = the_width ;
+    M_BITMAPDATA->m_height = the_height ;
+    M_BITMAPDATA->m_depth = no_bits ;
+    M_BITMAPDATA->m_numColors = 0;
 
-wxMask::wxMask( const wxBitmap& WXUNUSED(bitmap) )
+    /* TODO: create the bitmap from data */
+
+    if ( wxTheBitmapList )
+        wxTheBitmapList->AddBitmap(this);
+}
+
+wxBitmap::wxBitmap(int w, int h, int d)
 {
-};
+    (void)Create(w, h, d);
+
+    if ( wxTheBitmapList )
+        wxTheBitmapList->AddBitmap(this);
+}
 
-wxMask::~wxMask(void)
+wxBitmap::wxBitmap(void *data, long type, int width, int height, int depth)
 {
-};
+    (void) Create(data, type, width, height, depth);
 
-//-----------------------------------------------------------------------------
-// wxBitmap
-//-----------------------------------------------------------------------------
-
-class wxBitmapRefData: public wxObjectRefData
-{
-  public:
-  
-    wxBitmapRefData(void);
-    ~wxBitmapRefData(void);
-  
-    wxMask         *m_mask;
-    int             m_width;
-    int             m_height;
-    int             m_bpp;
-    wxPalette      *m_palette;
-};
+    if ( wxTheBitmapList )
+        wxTheBitmapList->AddBitmap(this);
+}
 
-wxBitmapRefData::wxBitmapRefData(void)
+wxBitmap::wxBitmap(const wxString& filename, long type)
 {
-  m_mask = NULL;
-  m_width = 0;
-  m_height = 0;
-  m_bpp = 0;
-  m_palette = NULL;
-};
+    LoadFile(filename, (int)type);
 
-wxBitmapRefData::~wxBitmapRefData(void)
+    if ( wxTheBitmapList )
+        wxTheBitmapList->AddBitmap(this);
+}
+
+/* TODO: maybe allow creation from XPM
+// Create from data
+wxBitmap::wxBitmap(const char **data)
 {
-  if (m_mask) delete m_mask;
-  if (m_palette) delete m_palette;
-};
+    (void) Create((void *)data, wxBITMAP_TYPE_XPM_DATA, 0, 0, 0);
+}
+*/
+
+bool wxBitmap::Create(int w, int h, int d)
+{
+    UnRef();
+
+    m_refData = new wxBitmapRefData;
 
-//-----------------------------------------------------------------------------
+    M_BITMAPDATA->m_width = w;
+    M_BITMAPDATA->m_height = h;
+    M_BITMAPDATA->m_depth = d;
 
-#define M_BMPDATA ((wxBitmapRefData *)m_refData)
+    /* TODO: create new bitmap */
 
-IMPLEMENT_DYNAMIC_CLASS(wxBitmap,wxGDIObject)
+    return M_BITMAPDATA->m_ok;
+}
 
-wxBitmap::wxBitmap(void)
+bool wxBitmap::LoadFile(const wxString& filename, long type)
 {
-  if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
-};
-  
-wxBitmap::wxBitmap( int width, int height, int depth )
-{
-  m_refData = new wxBitmapRefData();
-  M_BMPDATA->m_mask = NULL;
-  M_BMPDATA->m_width = width;
-  M_BMPDATA->m_height = height;
-  M_BMPDATA->m_bpp = depth;
-   
-  if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
-};
+    UnRef();
+
+    m_refData = new wxBitmapRefData;
+
+    wxBitmapHandler *handler = FindHandler(type);
+
+    if ( handler == NULL ) {
+        wxLogWarning("no bitmap handler for type %d defined.", type);
+
+        return FALSE;
+    }
+
+    return handler->LoadFile(this, filename, type, -1, -1);
+}
 
-wxBitmap::wxBitmap( char **WXUNUSED(bits) )
+bool wxBitmap::Create(void *data, long type, int width, int height, int depth)
 {
-  m_refData = new wxBitmapRefData();
+    UnRef();
 
-  if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
-};
-  
-wxBitmap::wxBitmap( const wxBitmap& bmp )
+    m_refData = new wxBitmapRefData;
+
+    wxBitmapHandler *handler = FindHandler(type);
+
+    if ( handler == NULL ) {
+        wxLogWarning("no bitmap handler for type %d defined.", type);
+
+        return FALSE;
+    }
+
+    return handler->Create(this, data, type, width, height, depth);
+}
+
+bool wxBitmap::SaveFile(const wxString& filename, int type, const wxPalette *palette)
 {
-  Ref( bmp );
-   
-  if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
-};
-  
-wxBitmap::wxBitmap( const wxBitmap* bmp )
+    wxBitmapHandler *handler = FindHandler(type);
+
+    if ( handler == NULL ) {
+        wxLogWarning("no bitmap handler for type %d defined.", type);
+
+        return FALSE;
+  }
+
+  return handler->SaveFile(this, filename, type, palette);
+}
+
+void wxBitmap::SetWidth(int w)
 {
-  if (bmp) Ref( *bmp );
-   
-  if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
-};
+    if (!M_BITMAPDATA)
+        m_refData = new wxBitmapRefData;
 
-wxBitmap::wxBitmap( const wxString &filename, int type )
+    M_BITMAPDATA->m_width = w;
+}
+
+void wxBitmap::SetHeight(int h)
 {
-  LoadFile( filename, type );
-};
+    if (!M_BITMAPDATA)
+        m_refData = new wxBitmapRefData;
+
+    M_BITMAPDATA->m_height = h;
+}
 
-wxBitmap::wxBitmap( const char WXUNUSED(bits)[], int width, int height, int WXUNUSED(depth))
+void wxBitmap::SetDepth(int d)
 {
-  m_refData = new wxBitmapRefData();
+    if (!M_BITMAPDATA)
+        m_refData = new wxBitmapRefData;
 
-  M_BMPDATA->m_mask = NULL;
-  M_BMPDATA->m_width = width;
-  M_BMPDATA->m_height = height;
-  M_BMPDATA->m_bpp = 1;
+    M_BITMAPDATA->m_depth = d;
+}
+
+void wxBitmap::SetQuality(int q)
+{
+    if (!M_BITMAPDATA)
+        m_refData = new wxBitmapRefData;
 
-  if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
+    M_BITMAPDATA->m_quality = q;
 }
-  
-wxBitmap::~wxBitmap(void)
+
+void wxBitmap::SetOk(bool isOk)
 {
-  if (wxTheBitmapList) wxTheBitmapList->DeleteObject(this);
-};
-  
-wxBitmap& wxBitmap::operator = ( const wxBitmap& bmp )
+    if (!M_BITMAPDATA)
+        m_refData = new wxBitmapRefData;
+
+    M_BITMAPDATA->m_ok = isOk;
+}
+
+void wxBitmap::SetPalette(const wxPalette& palette)
 {
-  if (*this == bmp) return (*this); 
-  Ref( bmp ); 
-  return *this; 
-};
-  
-bool wxBitmap::operator == ( const wxBitmap& bmp )
+    if (!M_BITMAPDATA)
+        m_refData = new wxBitmapRefData;
+
+    M_BITMAPDATA->m_bitmapPalette = palette ;
+}
+
+void wxBitmap::SetMask(wxMask *mask)
 {
-  return m_refData == bmp.m_refData; 
-};
-  
-bool wxBitmap::operator != ( const wxBitmap& bmp )
+    if (!M_BITMAPDATA)
+        m_refData = new wxBitmapRefData;
+
+    M_BITMAPDATA->m_bitmapMask = mask ;
+}
+
+void wxBitmap::AddHandler(wxBitmapHandler *handler)
 {
-  return m_refData != bmp.m_refData; 
-};
-  
-bool wxBitmap::Ok(void) const
+    sm_handlers.Append(handler);
+}
+
+void wxBitmap::InsertHandler(wxBitmapHandler *handler)
 {
-  return m_refData != NULL;
-};
-  
-int wxBitmap::GetHeight(void) const
+    sm_handlers.Insert(handler);
+}
+
+bool wxBitmap::RemoveHandler(const wxString& name)
 {
-  if (!Ok()) return 0;
-  return M_BMPDATA->m_height;
-};
+    wxBitmapHandler *handler = FindHandler(name);
+    if ( handler )
+    {
+        sm_handlers.DeleteObject(handler);
+        return TRUE;
+    }
+    else
+        return FALSE;
+}
+
+wxBitmapHandler *wxBitmap::FindHandler(const wxString& name)
+{
+    wxNode *node = sm_handlers.First();
+    while ( node )
+    {
+        wxBitmapHandler *handler = (wxBitmapHandler *)node->Data();
+        if ( handler->GetName() == name )
+            return handler;
+        node = node->Next();
+    }
+    return NULL;
+}
 
-int wxBitmap::GetWidth(void) const
+wxBitmapHandler *wxBitmap::FindHandler(const wxString& extension, long bitmapType)
+{
+    wxNode *node = sm_handlers.First();
+    while ( node )
+    {
+        wxBitmapHandler *handler = (wxBitmapHandler *)node->Data();
+        if ( handler->GetExtension() == extension &&
+                    (bitmapType == -1 || handler->GetType() == bitmapType) )
+            return handler;
+        node = node->Next();
+    }
+    return NULL;
+}
+
+wxBitmapHandler *wxBitmap::FindHandler(long bitmapType)
+{
+    wxNode *node = sm_handlers.First();
+    while ( node )
+    {
+        wxBitmapHandler *handler = (wxBitmapHandler *)node->Data();
+        if (handler->GetType() == bitmapType)
+            return handler;
+        node = node->Next();
+    }
+    return NULL;
+}
+
+/*
+ * wxMask
+ */
+
+wxMask::wxMask()
 {
-  if (!Ok()) return 0;
-  return M_BMPDATA->m_width;
-};
+/* TODO
+    m_maskBitmap = 0;
+*/
+}
 
-int wxBitmap::GetDepth(void) const
+// Construct a mask from a bitmap and a colour indicating
+// the transparent area
+wxMask::wxMask(const wxBitmap& bitmap, const wxColour& colour)
 {
-  if (!Ok()) return 0;
-  return M_BMPDATA->m_bpp;
-};
+/* TODO
+    m_maskBitmap = 0;
+*/
+    Create(bitmap, colour);
+}
 
-void wxBitmap::SetHeight( int height )
+// Construct a mask from a bitmap and a palette index indicating
+// the transparent area
+wxMask::wxMask(const wxBitmap& bitmap, int paletteIndex)
 {
-  if (!Ok()) return;
-  M_BMPDATA->m_height = height;
-};
+/* TODO
+    m_maskBitmap = 0;
+*/
+
+    Create(bitmap, paletteIndex);
+}
 
-void wxBitmap::SetWidth( int width )
+// Construct a mask from a mono bitmap (copies the bitmap).
+wxMask::wxMask(const wxBitmap& bitmap)
 {
-  if (!Ok()) return;
-  M_BMPDATA->m_width = width;
-};
+/* TODO
+    m_maskBitmap = 0;
+*/
+
+    Create(bitmap);
+}
 
-void wxBitmap::SetDepth( int depth )
+wxMask::~wxMask()
 {
-  if (!Ok()) return;
-  M_BMPDATA->m_bpp = depth;
-};
+// TODO: delete mask bitmap
+}
 
-wxMask *wxBitmap::GetMask(void) const
+// Create a mask from a mono bitmap (copies the bitmap).
+bool wxMask::Create(const wxBitmap& bitmap)
 {
-  if (!Ok()) return NULL;
-  
-  return M_BMPDATA->m_mask;
-};
+// TODO
+    return FALSE;
+}
 
-void wxBitmap::SetMask( wxMask *mask )
+// Create a mask from a bitmap and a palette index indicating
+// the transparent area
+bool wxMask::Create(const wxBitmap& bitmap, int paletteIndex)
 {
-  if (!Ok()) return;
-  
-  if (M_BMPDATA->m_mask) delete M_BMPDATA->m_mask;
-  M_BMPDATA->m_mask = mask;
-};
+// TODO
+    return FALSE;
+}
 
-void wxBitmap::Resize( int WXUNUSED(height), int WXUNUSED(width) )
+// Create a mask from a bitmap and a colour indicating
+// the transparent area
+bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
 {
-  if (!Ok()) return;
-  
-};
+// TODO
+    return FALSE;
+}
 
-bool wxBitmap::SaveFile( const wxString &WXUNUSED(name), int WXUNUSED(type), 
-  wxPalette *WXUNUSED(palette) )
+/*
+ * wxBitmapHandler
+ */
+
+IMPLEMENT_DYNAMIC_CLASS(wxBitmapHandler, wxObject)
+
+bool wxBitmapHandler::Create(wxBitmap *bitmap, void *data, long type, int width, int height, int depth)
 {
-  return FALSE;
-};
+    return FALSE;
+}
 
-bool wxBitmap::LoadFile( const wxString &WXUNUSED(name), int WXUNUSED(type) )
+bool wxBitmapHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long type,
+        int desiredWidth, int desiredHeight)
 {
-  return FALSE;
-};
-        
-wxPalette *wxBitmap::GetPalette(void) const
+    return FALSE;
+}
+
+bool wxBitmapHandler::SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette)
 {
-  if (!Ok()) return NULL;
-  return M_BMPDATA->m_palette;
+    return FALSE;
+}
+
+/*
+ * Standard handlers
+ */
+
+/* TODO: bitmap handlers, a bit like this:
+class WXDLLEXPORT wxBMPResourceHandler: public wxBitmapHandler
+{
+    DECLARE_DYNAMIC_CLASS(wxBMPResourceHandler)
+public:
+    inline wxBMPResourceHandler()
+    {
+        m_name = "Windows bitmap resource";
+        m_extension = "";
+        m_type = wxBITMAP_TYPE_BMP_RESOURCE;
+    };
+
+    virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
+          int desiredWidth, int desiredHeight);
 };
+IMPLEMENT_DYNAMIC_CLASS(wxBMPResourceHandler, wxBitmapHandler)
+*/
+
+void wxBitmap::CleanUpHandlers()
+{
+    wxNode *node = sm_handlers.First();
+    while ( node )
+    {
+        wxBitmapHandler *handler = (wxBitmapHandler *)node->Data();
+        wxNode *next = node->Next();
+        delete handler;
+        delete node;
+        node = next;
+    }
+}
 
+void wxBitmap::InitStandardHandlers()
+{
+/* TODO: initialize all standard bitmap or derive class handlers here.
+    AddHandler(new wxBMPResourceHandler);
+    AddHandler(new wxBMPFileHandler);
+    AddHandler(new wxXPMFileHandler);
+    AddHandler(new wxXPMDataHandler);
+    AddHandler(new wxICOResourceHandler);
+    AddHandler(new wxICOFileHandler);
+*/
+}
index b70436648066d99418be6160975608af438d3f8c..9e46c22b2b9ad6a0fd0479388fa380f968eb6501 100644 (file)
@@ -1,10 +1,11 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        bmpbuttn.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxBitmapButton
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 
 #include "wx/bmpbuttn.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton, wxButton)
+#endif
 
-class wxBitmapButton;
+bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap,
+           const wxPoint& pos,
+           const wxSize& size, long style,
+           const wxValidator& validator,
+           const wxString& name)
+{
+    m_buttonBitmap = bitmap;
+    SetName(name);
+    SetValidator(validator);
+    parent->AddChild(this);
 
-//-----------------------------------------------------------------------------
-// wxBitmapButton
-//-----------------------------------------------------------------------------
+    m_backgroundColour = parent->GetDefaultBackgroundColour() ;
+    m_foregroundColour = parent->GetDefaultForegroundColour() ;
+    m_windowStyle = style;
+    m_marginX = 0;
+    m_marginY = 0;
 
-IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton,wxControl)
+    int x = pos.x;
+    int y = pos.y;
+    int width = size.x;
+    int height = size.y;
 
-wxBitmapButton::wxBitmapButton(void)
-{
-};
+    if (id == -1)
+        m_windowId = NewControlId();
+    else
+        m_windowId = id;
 
-wxBitmapButton::wxBitmapButton( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap,
-      const wxPoint &pos, const wxSize &size, 
-      long style, const wxString &name )
-{
-  Create( parent, id, bitmap, pos, size, style, name );
-};
+    if ( width == -1 && bitmap.Ok())
+       width = bitmap.GetWidth() + 2*m_marginX;
 
-bool wxBitmapButton::Create(  wxWindow *parent, wxWindowID id, const wxBitmap &bitmap,
-      const wxPoint &pos, const wxSize &size, 
-      long style, const wxString &name )
-{
-  m_needParent = TRUE;
-  
-  wxSize newSize = size;
+    if ( height == -1 && bitmap.Ok())
+       height = bitmap.GetHeight() + 2*m_marginY;
 
-  PreCreation( parent, id, pos, newSize, style, name );
-  
-  m_bitmap = bitmap;
-  m_label = "";
-  
-  
-  if (newSize.x == -1) newSize.x = m_bitmap.GetHeight()+10;
-  if (newSize.y == -1) newSize.y = m_bitmap.GetWidth()+10;
-  SetSize( newSize.x, newSize.y );
-  
+    /* TODO: create bitmap button
+     */
 
-  PostCreation();
-  
-  Show( TRUE );
-    
-  return TRUE;
-};
-      
-void wxBitmapButton::SetDefault(void)
-{
-};
+    return FALSE;
+}
 
-void wxBitmapButton::SetLabel( const wxString &label )
+void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap)
 {
-  wxControl::SetLabel( label );
-};
+    m_buttonBitmap = bitmap;
+}
 
-wxString wxBitmapButton::GetLabel(void) const
-{
-  return wxControl::GetLabel();
-};
index 155b0c400bae3538bad7d77a8d452acffd0483f3..72c12935ff966ea0cd8eedf2cf288d7cfb609a51 100644 (file)
@@ -1,10 +1,11 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        brush.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxBrush
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #pragma implementation "brush.h"
 #endif
 
+#include "wx/setup.h"
+#include "wx/utils.h"
 #include "wx/brush.h"
 
-//-----------------------------------------------------------------------------
-// wxBrush
-//-----------------------------------------------------------------------------
+#if !USE_SHARED_LIBRARIES
+IMPLEMENT_DYNAMIC_CLASS(wxBrush, wxGDIObject)
+#endif
 
-class wxBrushRefData: public wxObjectRefData
-{
-  public:
-  
-    wxBrushRefData(void);
-  
-    int        m_style;
-    wxBitmap   m_stipple;
-    wxColour   m_colour;
-};
-
-wxBrushRefData::wxBrushRefData(void)
+wxBrushRefData::wxBrushRefData()
 {
-  m_style = 0;
-};
-
-//-----------------------------------------------------------------------------
-
-#define M_BRUSHDATA ((wxBrushRefData *)m_refData)
+    m_style = wxSOLID;
+// TODO: null data
+}
 
-IMPLEMENT_DYNAMIC_CLASS(wxBrush,wxGDIObject)
-
-wxBrush::wxBrush(void)
+wxBrushRefData::wxBrushRefData(const wxBrushRefData& data)
 {
-  if (wxTheBrushList) wxTheBrushList->AddBrush( this );
-};
+  m_style = data.m_style;
+  m_stipple = data.m_stipple;
+  m_colour = data.m_colour;
+/* TODO: null data
+  m_hBrush = 0;
+*/
+}
 
-wxBrush::wxBrush( const wxColour &colour, int style )
-{
-  m_refData = new wxBrushRefData();
-  M_BRUSHDATA->m_style = style;
-  M_BRUSHDATA->m_colour = colour;
-  
-  if (wxTheBrushList) wxTheBrushList->AddBrush( this );
-};
-
-wxBrush::wxBrush( const wxString &colourName, int style )
+wxBrushRefData::~wxBrushRefData()
 {
-  m_refData = new wxBrushRefData();
-  M_BRUSHDATA->m_style = style;
-  M_BRUSHDATA->m_colour = colourName;
-  
-  if (wxTheBrushList) wxTheBrushList->AddBrush( this );
-};
-
-wxBrush::wxBrush( const wxBitmap &stippleBitmap )
+// TODO: delete data
+}
+
+// Brushes
+wxBrush::wxBrush()
 {
-  m_refData = new wxBrushRefData();
-  M_BRUSHDATA->m_style = wxSTIPPLE;
-  M_BRUSHDATA->m_colour = *wxBLACK;
-  M_BRUSHDATA->m_stipple = stippleBitmap;
-  
-  if (wxTheBrushList) wxTheBrushList->AddBrush( this );
-};
-
-wxBrush::wxBrush( const wxBrush &brush )
+    if ( wxTheBrushList )
+        wxTheBrushList->AddBrush(this);
+}
+
+wxBrush::~wxBrush()
 {
-  Ref( brush );
-  
-  if (wxTheBrushList) wxTheBrushList->AddBrush( this );
-};
+    if ( wxTheBrushList )
+        wxTheBrushList->RemoveBrush(this);
+}
 
-wxBrush::wxBrush( const wxBrush *brush )
+wxBrush::wxBrush(const wxColour& col, int Style)
 {
-  if (brush) Ref( *brush );
-  
-  if (wxTheBrushList) wxTheBrushList->Append( this );
-};
+    m_refData = new wxBrushRefData;
 
-wxBrush::~wxBrush(void)
+    M_BRUSHDATA->m_colour = col;
+    M_BRUSHDATA->m_style = Style;
+
+    RealizeResource();
+
+    if ( wxTheBrushList )
+        wxTheBrushList->AddBrush(this);
+}
+
+wxBrush::wxBrush(const wxString& col, int Style)
 {
-  if (wxTheBrushList) wxTheBrushList->RemoveBrush( this );
-};
+    m_refData = new wxBrushRefData;
+
+    // Implicit conversion from string to wxColour via colour database
+    M_BRUSHDATA->m_colour = col;
+    M_BRUSHDATA->m_style = Style;
 
-wxBrush& wxBrush::operator = ( const wxBrush& brush )
+    RealizeResource();
+
+    if ( wxTheBrushList )
+        wxTheBrushList->AddBrush(this);
+}
+
+wxBrush::wxBrush(const wxBitmap& stipple)
 {
-  if (*this == brush) return (*this); 
-  Ref( brush ); 
-  return *this; 
-};
-  
-bool wxBrush::operator == ( const wxBrush& brush )
+    m_refData = new wxBrushRefData;
+
+    M_BRUSHDATA->m_style = wxSTIPPLE;
+    M_BRUSHDATA->m_stipple = stipple;
+
+    RealizeResource();
+
+    if ( wxTheBrushList )
+        wxTheBrushList->AddBrush(this);
+}
+
+void wxBrush::Unshare()
 {
-  return m_refData == brush.m_refData; 
-};
+       // Don't change shared data
+       if (!m_refData)
+    {
+               m_refData = new wxBrushRefData();
+       }
+    else
+    {
+               wxBrushRefData* ref = new wxBrushRefData(*(wxBrushRefData*)m_refData);
+               UnRef();
+               m_refData = ref;
+       }
+}
 
-bool wxBrush::operator != ( const wxBrush& brush )
+void wxBrush::SetColour(const wxColour& col)
 {
-  return m_refData != brush.m_refData; 
-};
+    Unshare();
+
+    M_BRUSHDATA->m_colour = col;
 
-bool wxBrush::Ok(void) const
+    RealizeResource();
+}
+
+void wxBrush::SetColour(const wxString& col)
 {
-  return ((m_refData) && M_BRUSHDATA->m_colour.Ok());
-};
+    Unshare();
+
+    M_BRUSHDATA->m_colour = col;
+
+    RealizeResource();
+}
 
-int wxBrush::GetStyle(void) const
+void wxBrush::SetColour(const unsigned char r, const unsigned char g, const unsigned char b)
 {
-  return M_BRUSHDATA->m_style;
-};
+    Unshare();
 
-wxColour &wxBrush::GetColour(void) const
+    M_BRUSHDATA->m_colour.Set(r, g, b);
+
+    RealizeResource();
+}
+
+void wxBrush::SetStyle(int Style)
 {
-  return M_BRUSHDATA->m_colour;
-};
+    Unshare();
+
+    M_BRUSHDATA->m_style = Style;
+
+    RealizeResource();
+}
 
-wxBitmap *wxBrush::GetStipple(void) const
+void wxBrush::SetStipple(const wxBitmap& Stipple)
 {
-  return &M_BRUSHDATA->m_stipple;
-};
+    Unshare();
 
+    M_BRUSHDATA->m_stipple = Stipple;
+
+    RealizeResource();
+}
+
+void wxBrush::RealizeResource()
+{
+// TODO: create the brush
+}
 
index 438a4cfea19531b45b7096dd7f6fa59d3036ed23..befd0d71564ad3486bddfb4281f03acd6fd16e9d 100644 (file)
@@ -1,10 +1,11 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        button.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxButton
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 
 #include "wx/button.h"
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl)
+#endif
 
-class wxButton;
+// Button
 
-//-----------------------------------------------------------------------------
-// wxButton
-//-----------------------------------------------------------------------------
+bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label,
+           const wxPoint& pos,
+           const wxSize& size, long style,
+           const wxValidator& validator,
+           const wxString& name)
+{
+    SetName(name);
+    SetValidator(validator);
+    m_windowStyle = style;
 
-IMPLEMENT_DYNAMIC_CLASS(wxButton,wxControl)
+    parent->AddChild((wxButton *)this);
 
-//-----------------------------------------------------------------------------
+    if (id == -1)
+        m_windowId = NewControlId();
+    else
+        m_windowId = id;
 
-wxButton::wxButton(void)
-{
-};
+    // TODO: create button
 
-wxButton::wxButton( wxWindow *parent, wxWindowID id, const wxString &label,
-      const wxPoint &pos, const wxSize &size,
-      long style, const wxString &name )
+    return FALSE;
+}
+
+void wxButton::SetSize(int x, int y, int width, int height, int sizeFlags)
 {
-  Create( parent, id, label, pos, size, style, name );
-};
+    // TODO
+}
 
-bool wxButton::Create(  wxWindow *parent, wxWindowID id, const wxString &label,
-      const wxPoint &pos, const wxSize &size,
-      long style, const wxString &name )
+void wxButton::SetDefault()
 {
-  return TRUE;
-};
+    wxWindow *parent = (wxWindow *)GetParent();
+    if (parent)
+        parent->SetDefaultItem(this);
+
+    // TODO: make button the default
+}
 
-void wxButton::SetDefault(void)
+wxString wxButton::GetLabel() const
 {
-};
+    // TODO
+    return wxString("");
+}
 
-void wxButton::SetLabel( const wxString &label )
+void wxButton::SetLabel(const wxString& label)
 {
-  wxControl::SetLabel( label );
-};
+    // TODO
+}
 
-wxString wxButton::GetLabel(void) const
+void wxButton::Command (wxCommandEvent & event)
 {
-  return wxControl::GetLabel();
-};
+    ProcessCommand (event);
+}
+
index 351a5338e3d83c4fa6cbe7bf26a31a2667bff6d8..dd2e2abe7ab8f644876b4e370b3ce0e77961ef75 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        checkbox.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxCheckBox
+// Author:      AUTHOR
+// Modified by:
+// Created:     04/01/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
 #ifdef __GNUG__
 #pragma implementation "checkbox.h"
 #endif
 
 #include "wx/checkbox.h"
 
-//-----------------------------------------------------------------------------
-// wxCheckBox
-//-----------------------------------------------------------------------------
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxCheckBox, wxControl)
+IMPLEMENT_DYNAMIC_CLASS(wxBitmapCheckBox, wxCheckBox)
+#endif
+
+// Single check box item
+bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
+           const wxPoint& pos,
+           const wxSize& size, long style,
+           const wxValidator& validator,
+           const wxString& name)
+{
+    SetName(name);
+    SetValidator(validator);
+    m_windowStyle = style;
+
+    if (parent) parent->AddChild(this);
+
+    if ( id == -1 )
+        m_windowId = NewControlId();
+    else
+        m_windowId = id;
+
+    // TODO: create checkbox
+
+    return FALSE;
+}
+
+void wxCheckBox::SetLabel(const wxString& label)
+{
+    // TODO
+}
+
+void wxCheckBox::SetSize(int x, int y, int width, int height, int sizeFlags)
+{
+    // TODO
+}
 
-IMPLEMENT_DYNAMIC_CLASS(wxCheckBox,wxControl)
+void wxCheckBox::SetValue(bool val)
+{
+    // TODO
+}
 
-wxCheckBox::wxCheckBox(void)
+bool wxCheckBox::GetValue() const
 {
-};
+    // TODO
+    return FALSE;
+}
 
-wxCheckBox::wxCheckBox( wxWindow *parent, wxWindowID id, const wxString &label,
-      const wxPoint &pos, const wxSize &size, 
-      long style, const wxString &name )
+void wxCheckBox::Command (wxCommandEvent & event)
 {
-  Create( parent, id, label, pos, size, style, name );
-};
+    SetValue ((event.GetInt() != 0));
+    ProcessCommand (event);
+}
 
-bool wxCheckBox::Create(  wxWindow *parent, wxWindowID id, const wxString &label,
-      const wxPoint &pos, const wxSize &size, 
-      long style, const wxString &name )
+// Bitmap checkbox
+bool wxBitmapCheckBox::Create(wxWindow *parent, wxWindowID id, const wxBitmap *label,
+           const wxPoint& pos,
+           const wxSize& size, long style,
+           const wxValidator& validator,
+           const wxString& name)
 {
-  return TRUE;
-};
+    SetName(name);
+    SetValidator(validator);
+    m_windowStyle = style;
+
+    if (parent) parent->AddChild(this);
+
+    if ( id == -1 )
+        m_windowId = NewControlId();
+    else
+        m_windowId = id;
+
+    // TODO: Create the bitmap checkbox
+
+    return FALSE;
+}
 
-void wxCheckBox::SetValue( bool WXUNUSED(state) )
+void wxBitmapCheckBox::SetLabel(const wxBitmap *bitmap)
 {
-};
+    // TODO
+}
 
-bool wxCheckBox::GetValue(void) const
+void wxBitmapCheckBox::SetSize(int x, int y, int width, int height, int sizeFlags)
 {
-  return FALSE;
-};
+    // TODO
+}
+
+void wxBitmapCheckBox::SetValue(bool val)
+{
+    // TODO
+}
+
+bool wxBitmapCheckBox::GetValue() const
+{
+    // TODOD
+    return FALSE;
+}
+
 
index 9b9118bf9c5d3cd31a448f966ba565593dcff299..a584d5303fb41c40ef4ba78fe4aa66f5e8b13818 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        choice.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxChoice
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
 #ifdef __GNUG__
 #pragma implementation "choice.h"
 #endif
 
+// For compilers that support precompilation, includes "wx.h".
 #include "wx/choice.h"
 
-//-----------------------------------------------------------------------------
-// wxChoice
-//-----------------------------------------------------------------------------
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControl)
+#endif
 
-//-----------------------------------------------------------------------------
+bool wxChoice::Create(wxWindow *parent, wxWindowID id,
+           const wxPoint& pos,
+           const wxSize& size,
+                  int n, const wxString choices[],
+                  long style,
+           const wxValidator& validator,
+           const wxString& name)
+{
+    SetName(name);
+    SetValidator(validator);
+    m_noStrings = n;
+    m_windowStyle = style;
 
-IMPLEMENT_DYNAMIC_CLASS(wxChoice,wxControl)
+    if (parent) parent->AddChild(this);
 
-wxChoice::wxChoice(void)
-{
-};
+    if ( id == -1 )
+       m_windowId = (int)NewControlId();
+    else
+       m_windowId = id;
 
-wxChoice::wxChoice( wxWindow *parent, wxWindowID id,
-      const wxPoint &pos, const wxSize &size,
-      int n, const wxString choices[],
-      long style, const wxString &name )
-{
-  Create( parent, id, pos, size, n, choices, style, name );
-};
+    // TODO: create choice control
+    return FALSE;
+}
 
-bool wxChoice::Create( wxWindow *parent, wxWindowID id,
-      const wxPoint &pos, const wxSize &size,
-      int n, const wxString choices[],
-      long style, const wxString &name )
+void wxChoice::Append(const wxString& item)
 {
-  return TRUE;
-};
-      
-void wxChoice::Append( const wxString &WXUNUSED(item) )
-{
-};
-void wxChoice::Clear(void)
-{
-};
+    // TODO
+    m_noStrings ++;
+}
 
-int wxChoice::FindString( const wxString &WXUNUSED(string) ) const
+void wxChoice::Delete(int n)
 {
-  return -1;
-};
+    // TODO
+    m_noStrings --;
+}
 
-int wxChoice::GetColumns(void) const
+void wxChoice::Clear()
 {
-  return 1;
-};
+    // TODO
+    m_noStrings = 0;
+}
 
-int wxChoice::GetSelection(void)
+int wxChoice::GetSelection() const
 {
-  return -1;
-};
+    // TODO
+    return 0;
+}
 
-wxString wxChoice::GetString( int WXUNUSED(n) ) const
+void wxChoice::SetSelection(int n)
 {
-  return "";
-};
+    // TODO
+}
 
-wxString wxChoice::GetStringSelection(void) const
+int wxChoice::FindString(const wxString& s) const
 {
-  return "";
-};
+    // TODO
+    return 0;
+}
 
-int wxChoice::Number(void) const
+wxString wxChoice::GetString(int n) const
 {
-  return 0;
-};
+    // TODO
+    return wxString("");
+}
 
-void wxChoice::SetColumns( int WXUNUSED(n) )
+void wxChoice::SetSize(int x, int y, int width, int height, int sizeFlags)
 {
-};
+    // TODO
+}
 
-void wxChoice::SetSelection( int WXUNUSED(n) )
+wxString wxChoice::GetStringSelection () const
 {
-};
-
-void wxChoice::SetStringSelection( const wxString &string )
+    int sel = GetSelection ();
+    if (sel > -1)
+        return wxString(this->GetString (sel));
+    else
+        return wxString("");
+}
+
+bool wxChoice::SetStringSelection (const wxString& s)
+{
+    int sel = FindString (s);
+    if (sel > -1)
+        {
+            SetSelection (sel);
+            return TRUE;
+        }
+    else
+        return FALSE;
+}
+
+void wxChoice::Command(wxCommandEvent & event)
 {
-  int n = FindString( string );
-  if (n != -1) SetSelection( n );
-};
+    SetSelection (event.GetInt());
+    ProcessCommand (event);
+}
 
index 404fcba3bb5c765f65d25b3d773e971284c86259..d342d516de631ee3b2844d89fadbfbfc1bae0b42 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        colour.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxColour class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
 #ifdef __GNUG__
 #pragma implementation "colour.h"
 #endif
 
 #include "wx/gdicmn.h"
+#include "wx/colour.h"
 
-//-----------------------------------------------------------------------------
-// wxColour
-//-----------------------------------------------------------------------------
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxColour, wxObject)
+#endif
 
-class wxColourRefData: public wxObjectRefData
-{
-  public:
-  
-    wxColourRefData(void);
-    ~wxColourRefData(void);
-    void FreeColour(void);
-  
-    bool         m_hasPixel;
-    
-    friend wxColour;
-};
+// Colour
 
-wxColourRefData::wxColourRefData(void)
+wxColour::wxColour ()
 {
-  m_hasPixel = FALSE;
-};
-
-wxColourRefData::~wxColourRefData(void)
+    m_isInit = FALSE;
+    m_red = m_blue = m_green = 0;
+/* TODO
+    m_pixel = 0;
+*/
+}
+
+wxColour::wxColour (unsigned char r, unsigned char g, unsigned char b)
 {
-  FreeColour();
-};
-
-void wxColourRefData::FreeColour(void)
+    m_red = r;
+    m_green = g;
+    m_blue = b;
+    m_isInit = TRUE;
+/* TODO
+    m_pixel = PALETTERGB (m_red, m_green, m_blue);
+*/
+}
+
+wxColour::wxColour (const wxColour& col)
 {
-};
-
-//-----------------------------------------------------------------------------
-
-#define M_COLDATA ((wxColourRefData *)m_refData)
-
-#define SHIFT (8*(sizeof(short int)-sizeof(char)))
-
-IMPLEMENT_DYNAMIC_CLASS(wxColour,wxGDIObject)
-
-wxColour::wxColour(void)
+    m_red = col.m_red;
+    m_green = col.m_green;
+    m_blue = col.m_blue;
+    m_isInit = col.m_isInit;
+/* TODO
+    m_pixel = col.m_pixel;
+*/
+}
+
+wxColour& wxColour::operator =(const wxColour& col)
 {
-};
-
-wxColour::wxColour( char WXUNUSED(red), char WXUNUSED(green), char WXUNUSED(blue) )
+  m_red = col.m_red;
+  m_green = col.m_green;
+  m_blue = col.m_blue;
+  m_isInit = col.m_isInit;
+/* TODO
+  m_pixel = col.m_pixel;
+*/
+  return *this;
+}
+
+wxColour::wxColour (const wxString& col)
 {
-  m_refData = new wxColourRefData();
-};
-  
-wxColour::wxColour( const wxString &colourName )
+    wxColour *the_colour = wxTheColourDatabase->FindColour (col);
+    if (the_colour)
+    {
+        m_red = the_colour->Red ();
+        m_green = the_colour->Green ();
+        m_blue = the_colour->Blue ();
+        m_isInit = TRUE;
+    }
+    else
+    {
+        m_red = 0;
+        m_green = 0;
+        m_blue = 0;
+        m_isInit = FALSE;
+    }
+/* TODO
+    m_pixel = PALETTERGB (m_red, m_green, m_blue);
+*/
+}
+
+wxColour::~wxColour ()
 {
-  wxNode *node = NULL;
-  if ( (wxTheColourDatabase) && (node = wxTheColourDatabase->Find(colourName)) ) 
-  {
-    wxColour *col = (wxColour*)node->Data();
-    UnRef();
-    if (col) Ref( *col );
-  } 
-  else 
-  {
-    m_refData = new wxColourRefData();
-  };
-};
-
-wxColour::wxColour( const wxColour& col )
-{ 
-  Ref( col ); 
-};
+}
 
-wxColour::wxColour( const wxColour* col ) 
-{ 
-  if (col) Ref( *col ); 
-};
-
-wxColour::~wxColour(void)
+wxColour& wxColour::operator = (const wxString& col)
 {
-};
-
-wxColour& wxColour::operator = ( const wxColour& col ) 
-{ 
-  if (*this == col) return (*this); 
-  Ref( col ); 
-  return *this; 
-};
-
-wxColour& wxColour::operator = ( const wxString& colourName ) 
-{ 
-  UnRef();
-  wxNode *node = NULL;
-  if ((wxTheColourDatabase) && (node = wxTheColourDatabase->Find(colourName)) ) 
-  {
-    wxColour *col = (wxColour*)node->Data();
-    if (col) Ref( *col );
-  } 
-  else 
-  {
-    m_refData = new wxColourRefData();
-  };
-  return *this; 
-};
-
-bool wxColour::operator == ( const wxColour& col ) 
-{ 
-  return m_refData == col.m_refData; 
-};
-
-bool wxColour::operator != ( const wxColour& col) 
-{ 
-  return m_refData != col.m_refData; 
-};
-
-void wxColour::Set( const unsigned char WXUNUSED(red), const unsigned char WXUNUSED(green), 
-                    const unsigned char WXUNUSED(blue) )
-{
-  UnRef();
-  m_refData = new wxColourRefData();
-};
-
-unsigned char wxColour::Red(void) const
-{
-  if (!Ok()) return 0;
-  return 0;
-};
-
-unsigned char wxColour::Green(void) const
+    wxColour *the_colour = wxTheColourDatabase->FindColour (col);
+    if (the_colour)
+    {
+        m_red = the_colour->Red ();
+        m_green = the_colour->Green ();
+        m_blue = the_colour->Blue ();
+        m_isInit = TRUE;
+    }
+    else
+    {
+        m_red = 0;
+        m_green = 0;
+        m_blue = 0;
+        m_isInit = FALSE;
+    }
+/* TODO
+    m_pixel = PALETTERGB (m_red, m_green, m_blue);
+*/
+    return (*this);
+}
+
+void wxColour::Set (unsigned char r, unsigned char g, unsigned char b)
 {
-  if (!Ok()) return 0;
-  return 0;
-};
-
-unsigned char wxColour::Blue(void) const
-{
-  if (!Ok()) return 0;
-  return 0;
-};
-
-bool wxColour::Ok(void) const
-{
-  return (m_refData);
-  return 0;
-};
-
-int wxColour::GetPixel(void)
-{
-  if (!Ok()) return 0;
-  return 0;
-};
-
+    m_red = r;
+    m_green = g;
+    m_blue = b;
+    m_isInit = TRUE;
+/* TODO
+    m_pixel = PALETTERGB (m_red, m_green, m_blue);
+*/
+}
index 7a2d9ef0635d771d0cd10a60d43cb9225c449bd8..f1bbccaeb0f0f3b0b0faec3b7ae8e815ba9f460d 100644 (file)
@@ -1,10 +1,11 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        combobox.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxComboBox class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 
 #include "wx/combobox.h"
 
-//-----------------------------------------------------------------------------
-// wxComboBox
-//-----------------------------------------------------------------------------
-
-//-----------------------------------------------------------------------------
-
-IMPLEMENT_DYNAMIC_CLASS(wxComboBox,wxControl)
-
-bool wxComboBox::Create(wxWindow *parent, wxWindowID id, const wxString& value,
-  const wxPoint& pos, const wxSize& size, int n, const wxString choices[],
-  long style, const wxString& name )
-{
-  return TRUE;
-};
-
-void wxComboBox::Clear(void)
-{
-};
-
-void wxComboBox::Append( const wxString &item )
-{
-  Append( item, (char*)NULL );
-};
-
-void wxComboBox::Append( const wxString &WXUNUSED(item), char *WXUNUSED(clientData) )
-{
-};
-
-void wxComboBox::Delete( int WXUNUSED(n) )
-{
-};
-
-int wxComboBox::FindString( const wxString &WXUNUSED(item) )
-{
-  return -1;
-};
-
-char* wxComboBox::GetClientData( int WXUNUSED(n) )
-{
-  return (char*)NULL;
-};
-
-void wxComboBox::SetClientData( int WXUNUSED(n), char *WXUNUSED(clientData) )
-{
-};
-
-int wxComboBox::GetSelection(void) const
-{
-  return -1;
-};
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl)
+#endif
 
-wxString wxComboBox::GetString( int WXUNUSED(n) ) const
+bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
+           const wxString& value,
+           const wxPoint& pos,
+           const wxSize& size,
+                  int n, const wxString choices[],
+                  long style,
+           const wxValidator& validator,
+           const wxString& name)
 {
-  return "";
-};
+    SetName(name);
+    SetValidator(validator);
+    m_noStrings = n;
+    m_windowStyle = style;
 
-wxString wxComboBox::GetStringSelection(void) const
-{
-  return "";
-};
+    if (parent) parent->AddChild(this);
 
-int wxComboBox::Number(void) const
-{
-  return 0;
-};
+    if ( id == -1 )
+       m_windowId = (int)NewControlId();
+    else
+       m_windowId = id;
 
-void wxComboBox::SetSelection( int WXUNUSED(n) )
-{
-};
+    // TODO: create combobox control
 
-void wxComboBox::SetStringSelection( const wxString &string )
-{
-  int res = FindString( string );
-  if (res == -1) return;
-  SetSelection( res );
-};
+    return TRUE;
+}
 
-wxString wxComboBox::GetValue(void) const
+wxString wxComboBox::GetValue() const
 {
-  return "";
-};
+    // TODO
+    return wxString("");
+}
 
-void wxComboBox::SetValue( const wxString& WXUNUSED(value) )
+void wxComboBox::SetValue(const wxString& value)
 {
-};
+    // TODO
+}
 
-void wxComboBox::Copy(void)
+// Clipboard operations
+void wxComboBox::Copy()
 {
-};
+    // TODO
+}
 
-void wxComboBox::Cut(void)
+void wxComboBox::Cut()
 {
-};
+    // TODO
+}
 
-void wxComboBox::Paste(void)
+void wxComboBox::Paste()
 {
-};
+    // TODO
+}
 
-void wxComboBox::SetInsertionPoint( long WXUNUSED(pos) )
+void wxComboBox::SetEditable(bool editable)
 {
-};
+    // TODO
+}
 
-void wxComboBox::SetInsertionPointEnd(void)
+void wxComboBox::SetInsertionPoint(long pos)
 {
-};
+    // TODO
+}
 
-long wxComboBox::GetInsertionPoint(void) const
+void wxComboBox::SetInsertionPointEnd()
 {
-  return 0;
-};
+    // TODO
+}
 
-long wxComboBox::GetLastPosition(void) const
+long wxComboBox::GetInsertionPoint() const
 {
-  return 0;
-};
+    // TODO
+    return 0;
+}
 
-void wxComboBox::Replace( long WXUNUSED(from), long WXUNUSED(to), const wxString& WXUNUSED(value) )
+long wxComboBox::GetLastPosition() const
 {
-};
+    // TODO
+    return 0;
+}
 
-void wxComboBox::Remove(long WXUNUSED(from), long WXUNUSED(to) )
+void wxComboBox::Replace(long from, long to, const wxString& value)
 {
-};
+    // TODO
+}
 
-void wxComboBox::SetSelection( long WXUNUSED(from), long WXUNUSED(to) )
+void wxComboBox::Remove(long from, long to)
 {
-};
+    // TODO
+}
 
-void wxComboBox::SetEditable( bool WXUNUSED(editable) )
+void wxComboBox::SetSelection(long from, long to)
 {
-};
+    // TODO
+}
 
-      
index 62a07ce01c094a9435b5957b9df487a13a170d52..651b272953bcb846674bff1b6d9e7d92edbdcff8 100644 (file)
@@ -1,11 +1,12 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        control.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
-// Licence:     wxWindows licence
+// Purpose:     wxControl class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
+// Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
 
 #include "wx/control.h"
 
-//-----------------------------------------------------------------------------
-// wxControl
-//-----------------------------------------------------------------------------
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_ABSTRACT_CLASS(wxControl, wxWindow)
 
-IMPLEMENT_DYNAMIC_CLASS(wxControl,wxWindow)
+BEGIN_EVENT_TABLE(wxControl, wxWindow)
+END_EVENT_TABLE()
+#endif
 
-wxControl::wxControl(void)
+// Item members
+wxControl::wxControl()
 {
-};
+    m_backgroundColour = *wxWHITE;
+    m_foregroundColour = *wxBLACK;
+    m_callback = 0;
+}
 
-wxControl::wxControl( wxWindow *parent, wxWindowID id,
-      const wxPoint &pos, const wxSize &size,
-      long style, const wxString &name ) :
-  wxWindow( parent, id, pos, size, style, name )
+wxControl::~wxControl()
 {
-};
+    // If we delete an item, we should initialize the parent panel,
+    // because it could now be invalid.
+    wxWindow *parent = (wxWindow *)GetParent();
+    if (parent)
+    {
+        if (parent->GetDefaultItem() == this)
+            parent->SetDefaultItem(NULL);
+    }
+}
 
-void wxControl::Command( wxCommandEvent &WXUNUSED(event) )
+void wxControl::SetLabel(const wxString& label)
 {
-};
+    // TODO
+}
 
-void wxControl::SetLabel( const wxString &label )
+wxString wxControl::GetLabel() const
 {
-  for ( const char *pc = label; *pc != '\0'; pc++ ) {
-    if ( *pc == '&' ) {
-      pc++; // skip it
-#if 0 // it would be unused anyhow for now - kbd interface not done yet
-      if ( *pc != '&' )
-        m_chAccel = *pc;
-#endif
+    // TODO
+    return wxString("");
+}
+
+/*
+ * Allocates control IDs within the appropriate range
+ */
+
+int NewControlId()
+{
+    static int s_controlId = 0;
+    s_controlId ++;
+    return s_controlId;
+}
+
+void wxControl::ProcessCommand (wxCommandEvent & event)
+{
+  // Tries:
+  // 1) A callback function (to become obsolete)
+  // 2) OnCommand, starting at this window and working up parent hierarchy
+  // 3) OnCommand then calls ProcessEvent to search the event tables.
+  if (m_callback)
+    {
+      (void) (*(m_callback)) (*this, event);
+    }
+    else
+    {
+      GetEventHandler()->OnCommand(*this, event);
     }
+}
 
-    m_label << *pc;
-  }
-};
+void wxControl::SetClientSize (int width, int height)
+{
+  SetSize (-1, -1, width, height);
+}
 
-wxString wxControl::GetLabel(void) const
+void wxControl::Centre (int direction)
 {
-  return m_label;
-};
+  int x, y, width, height, panel_width, panel_height, new_x, new_y;
+
+  wxWindow *parent = (wxWindow *) GetParent ();
+  if (!parent)
+    return;
+
+  parent->GetClientSize (&panel_width, &panel_height);
+  GetSize (&width, &height);
+  GetPosition (&x, &y);
+
+  new_x = x;
+  new_y = y;
+
+  if (direction & wxHORIZONTAL)
+    new_x = (int) ((panel_width - width) / 2);
 
+  if (direction & wxVERTICAL)
+    new_y = (int) ((panel_height - height) / 2);
 
+  SetSize (new_x, new_y, width, height);
+}
 
index 76f245408016ac7079591ddd0086b0b863cb8bee..c856f5e9e0caf1242ef0970a59ed10c6c3dac1dc 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        cursor.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxCursor class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
 #ifdef __GNUG__
 #pragma implementation "cursor.h"
 #endif
 
 #include "wx/cursor.h"
 
-//-----------------------------------------------------------------------------
-// wxCursor
-//-----------------------------------------------------------------------------
-
-class wxCursorRefData: public wxObjectRefData
-{
-  public:
-  
-    wxCursorRefData(void);
-    ~wxCursorRefData(void);
-  
-};
-
-wxCursorRefData::wxCursorRefData(void)
-{
-};
-
-wxCursorRefData::~wxCursorRefData(void)
-{
-};
-
-//-----------------------------------------------------------------------------
-
-#define M_CURSORDATA ((wxCursorRefData *)m_refData)
-
-IMPLEMENT_DYNAMIC_CLASS(wxCursor,wxObject)
-
-wxCursor::wxCursor(void)
-{
-};
-
-wxCursor::wxCursor( int WXUNUSED(cursorId) )
-{
-  m_refData = new wxCursorRefData();
-};
-
-wxCursor::wxCursor( const wxCursor &cursor )
-{
-  Ref( cursor );
-};
-
-wxCursor::wxCursor( const wxCursor *cursor )
-{
-  UnRef();
-  if (cursor) Ref( *cursor );
-};
-
-wxCursor::~wxCursor(void)
-{
-};
-
-wxCursor& wxCursor::operator = ( const wxCursor& cursor )
-{
-  if (*this == cursor) return (*this); 
-  Ref( cursor ); 
-  return *this; 
-};
-
-bool wxCursor::operator == ( const wxCursor& cursor )
-{
-  return m_refData == cursor.m_refData; 
-};
-
-bool wxCursor::operator != ( const wxCursor& cursor )
-{
-  return m_refData != cursor.m_refData; 
-};
-
-bool wxCursor::Ok(void) const
-{
-  return TRUE;
-};
-
-//-----------------------------------------------------------------------------
-// busy cursor routines
-//-----------------------------------------------------------------------------
-
-bool g_isBusy = FALSE;
-
-void wxEndBusyCursor(void)
-{
-  g_isBusy = FALSE;
-};
-
-void wxBeginBusyCursor( wxCursor *WXUNUSED(cursor) )
-{
-  g_isBusy = TRUE;
-};
-
-bool wxIsBusy(void)
-{
-  return g_isBusy;
-};
-
-void wxSetCursor( const wxCursor& cursor )
-{
-  extern wxCursor *g_globalCursor;
-  if (g_globalCursor) (*g_globalCursor) = cursor;
+#if !USE_SHARED_LIBRARIES
+IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap)
+#endif
 
-  if (cursor.Ok()) {};
-};
+wxCursorRefData::wxCursorRefData()
+{
+    m_width = 32; m_height = 32;
+
+/* TODO
+    m_hCursor = 0 ;
+*/
+}
+
+wxCursorRefData::~wxCursorRefData()
+{
+    // TODO: destroy cursor
+}
+
+// Cursors
+wxCursor::wxCursor()
+{
+}
+
+wxCursor::wxCursor(const char WXUNUSED(bits)[], int WXUNUSED(width), int WXUNUSED(height),
+    int WXUNUSED(hotSpotX), int WXUNUSED(hotSpotY), const char WXUNUSED(maskBits)[])
+{
+}
+
+wxCursor::wxCursor(const wxString& cursor_file, long flags, int hotSpotX, int hotSpotY)
+{
+    m_refData = new wxIconRefData;
+
+    // TODO: create cursor from a file
+}
+
+// Cursors by stock number
+wxCursor::wxCursor(int cursor_type)
+{
+  m_refData = new wxIconRefData;
+
+/* TODO
+  switch (cursor_type)
+  {
+    case wxCURSOR_WAIT:
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_WAIT);
+      break;
+    case wxCURSOR_IBEAM:
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_IBEAM);
+      break;
+    case wxCURSOR_CROSS:
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_CROSS);
+      break;
+    case wxCURSOR_SIZENWSE:
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENWSE);
+      break;
+    case wxCURSOR_SIZENESW:
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENESW);
+      break;
+    case wxCURSOR_SIZEWE:
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZEWE);
+      break;
+    case wxCURSOR_SIZENS:
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENS);
+      break;
+    case wxCURSOR_CHAR:
+    {
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW);
+      break;
+    }
+    case wxCURSOR_HAND:
+    {
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_HAND");
+      break;
+    }
+    case wxCURSOR_BULLSEYE:
+    {
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_BULLSEYE");
+      break;
+    }
+    case wxCURSOR_PENCIL:
+    {
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PENCIL");
+      break;
+    }
+    case wxCURSOR_MAGNIFIER:
+    {
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_MAGNIFIER");
+      break;
+    }
+    case wxCURSOR_NO_ENTRY:
+    {
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_NO_ENTRY");
+      break;
+    }
+    case wxCURSOR_LEFT_BUTTON:
+    {
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW);
+      break;
+    }
+    case wxCURSOR_RIGHT_BUTTON:
+    {
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW);
+      break;
+    }
+    case wxCURSOR_MIDDLE_BUTTON:
+    {
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW);
+      break;
+    }
+    case wxCURSOR_SIZING:
+    {
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_SIZING");
+      break;
+    }
+    case wxCURSOR_WATCH:
+    {
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_WATCH");
+      break;
+    }
+    case wxCURSOR_SPRAYCAN:
+    {
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_ROLLER");
+      break;
+    }
+    case wxCURSOR_PAINT_BRUSH:
+    {
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PBRUSH");
+      break;
+    }
+    case wxCURSOR_POINT_LEFT:
+    {
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PLEFT");
+      break;
+    }
+    case wxCURSOR_POINT_RIGHT:
+    {
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PRIGHT");
+      break;
+    }
+    case wxCURSOR_QUESTION_ARROW:
+    {
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_QARROW");
+      break;
+    }
+    case wxCURSOR_BLANK:
+    {
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_BLANK");
+      break;
+    }
+    default:
+    case wxCURSOR_ARROW:
+      M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW);
+      break;
+  }
+*/
+
+}
+
+wxCursor::~wxCursor()
+{
+}
+
+// Global cursor setting
+void wxSetCursor(const wxCursor& cursor)
+{
+  // TODO (optional on platforms with no global cursor)
+}
 
 
index 1afbd94253a5098dba56b836b281f84e149d7a15..d706f823348b7b4f124cd822f61921b378f963ff 100644 (file)
@@ -1,32 +1,23 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        data.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     Various data
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
 #ifdef __GNUG__
-// #pragma implementation
+#pragma implementation
 #endif
 
 #include "wx/wx.h"
 
 #define _MAXPATHLEN 500
 
-// Used for X resources
-
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <X11/Xresource.h>
-
-wxList wxResourceCache(wxKEY_STRING);
-XrmDatabase wxResourceDatabase;
-
-// Useful buffer, initialized in wxCommonInit
+// Useful buffer, initialized in CommonInit
 char *wxBuffer = NULL;
 
 // Windows List
@@ -35,44 +26,23 @@ wxList wxTopLevelWindows;
 // List of windows pending deletion
 wxList wxPendingDelete;
 
-// Current cursor, in order to hang on to
-// cursor handle when setting the cursor globally
-wxCursor *g_globalCursor = NULL;
-
-// Don't allow event propagation during drag
-bool g_blockEventsOnDrag = FALSE;
-
-// Message Strings for Internationalization
-char **wx_msg_str = (char**)NULL;
-
-// Custom OS version, as optionally placed in wx.ini/.wxrc
-// Currently this can be Win95, Windows, Win32s, WinNT.
-// For some systems, you can't tell until run-time what services you
-// have. See wxGetOsVersion, which uses this string if present.
-char *wxOsVersion = NULL;
-
-// For printing several pages
 int wxPageNumber;
-wxPrintPaperDatabase* wxThePrintPaperDatabase = NULL;
 
 // GDI Object Lists
-wxBrushList      *wxTheBrushList = NULL;
-wxPenList        *wxThePenList = NULL;
-wxFontList       *wxTheFontList = NULL;
-wxColourDatabase *wxTheColourDatabase = NULL;
+wxBrushList *wxTheBrushList = NULL;
+wxPenList   *wxThePenList = NULL;
+wxFontList   *wxTheFontList = NULL;
 wxBitmapList   *wxTheBitmapList = NULL;
-  
 
-// X only font names
-// wxFontNameDirectory wxTheFontNameDirectory;
+wxColourDatabase *wxTheColourDatabase = NULL;
 
 // Stock objects
 wxFont *wxNORMAL_FONT;
 wxFont *wxSMALL_FONT;
 wxFont *wxITALIC_FONT;
 wxFont *wxSWISS_FONT;
-
 wxPen *wxRED_PEN;
+
 wxPen *wxCYAN_PEN;
 wxPen *wxGREEN_PEN;
 wxPen *wxBLACK_PEN;
@@ -96,7 +66,6 @@ wxBrush *wxLIGHT_GREY_BRUSH;
 
 wxColour *wxBLACK;
 wxColour *wxWHITE;
-wxColour *wxGREY;            // Robert Roebling
 wxColour *wxRED;
 wxColour *wxBLUE;
 wxColour *wxGREEN;
@@ -108,14 +77,15 @@ wxCursor *wxHOURGLASS_CURSOR = NULL;
 wxCursor *wxCROSS_CURSOR = NULL;
 
 // 'Null' objects
+wxAcceleratorTable wxNullAcceleratorTable;
 wxBitmap wxNullBitmap;
-wxIcon   wxNullIcon;  
+wxIcon   wxNullIcon;
 wxCursor wxNullCursor;
 wxPen    wxNullPen;
 wxBrush  wxNullBrush;
+wxPalette wxNullPalette;
 wxFont   wxNullFont;
 wxColour wxNullColour;
-wxPalette wxNullPalette; 
 
 // Default window names
 const char *wxButtonNameStr = "button";
@@ -157,391 +127,10 @@ const char *wxFatalErrorStr = "wxWindows Fatal Error";
 const char *wxFloatToStringStr = "%.2f";
 const char *wxDoubleToStringStr = "%.2f";
 
-#ifdef wx_msw
-const char *wxUserResourceStr = "TEXT";
-#endif
-
-
-#if USE_SHARED_LIBRARY
-/*
- * For wxWindows to be made into a dynamic library (e.g. Sun),
- * all IMPLEMENT_... macros must be in one place.
- * But normally, the definitions are in the appropriate places.
- */
-
-// Hand-coded IMPLEMENT... macro for wxObject (define static data)
-wxClassInfo wxObject::classwxObject("wxObject", NULL, NULL, sizeof(wxObject), NULL);
-wxClassInfo *wxClassInfo::first = NULL;
-
-#include "wx/button.h"
-#include "wx/bmpbuttn.h"
-IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl)
-IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton, wxButton)
-
-#include "wx/checkbox.h"
-IMPLEMENT_DYNAMIC_CLASS(wxCheckBox, wxControl)
-IMPLEMENT_DYNAMIC_CLASS(wxBitmapCheckBox, wxCheckBox)
-
-#include "wx/choice.h"
-IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControl)
-
-#if USE_CLIPBOARD
-#include "wx/clipbrd.h"
-IMPLEMENT_DYNAMIC_CLASS(wxClipboard, wxObject)
-IMPLEMENT_ABSTRACT_CLASS(wxClipboardClient, wxObject)
-#endif
-
-#if USE_COMBOBOX
-#include "wx/combobox.h"
-IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl)
-#endif
-
-#include "wx/dc.h"
-#include "wx/dcmemory.h"
-#include "wx/dcclient.h"
-#include "wx/dcscreen.h"
-IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxClientDC, wxDC)
-IMPLEMENT_DYNAMIC_CLASS(wxWindowDC, wxDC)
-IMPLEMENT_DYNAMIC_CLASS(wxPaintDC, wxDC)
-IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC, wxDC)
-IMPLEMENT_DYNAMIC_CLASS(wxScreenDC, wxWindowDC)
-
-#if defined(wx_msw)
-#include "wx/dcprint.h"
-IMPLEMENT_CLASS(wxPrinterDC, wxDC)
-#endif
-
-#include "wx/dialog.h"
-IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxWindow)
-
-#include "wx/frame.h"
-IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow)
-
-#include "wx/mdi.h"
-IMPLEMENT_DYNAMIC_CLASS(wxMDIParentFrame, wxFrame)
-IMPLEMENT_DYNAMIC_CLASS(wxMDIChildFrame, wxFrame)
-IMPLEMENT_DYNAMIC_CLASS(wxMDIClientWindow, wxWindow)
-
-#include "wx/cmndata.h"
-IMPLEMENT_DYNAMIC_CLASS(wxColourData, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxFontData, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxPrintData, wxObject)
-
-#include "wx/colordlg.h"
-#include "wx/fontdlg.h"
-
-#if !defined(wx_msw) || USE_GENERIC_DIALOGS_IN_MSW
-#include "wx/generic/colordlg.h"
-#include "wx/generic/fontdlg.h"
-IMPLEMENT_DYNAMIC_CLASS(wxGenericColourDialog, wxDialog)
-IMPLEMENT_DYNAMIC_CLASS(wxGenericFontDialog, wxDialog)
-#endif
-
-// X defines wxColourDialog to be wxGenericColourDialog
-#ifndef wx_x
-IMPLEMENT_DYNAMIC_CLASS(wxColourDialog, wxDialog)
-IMPLEMENT_DYNAMIC_CLASS(wxFontDialog, wxDialog)
-#endif
-
-#include "wx/gdicmn.h"
-#include "wx/pen.h"
-#include "wx/brush.h"
-#include "wx/font.h"
-#include "wx/palette.h"
-#include "wx/icon.h"
-#include "wx/cursor.h"
-
-IMPLEMENT_DYNAMIC_CLASS(wxColour, wxObject)
-IMPLEMENT_CLASS(wxColourDatabase, wxList)
-IMPLEMENT_DYNAMIC_CLASS(wxFontList, wxList)
-IMPLEMENT_DYNAMIC_CLASS(wxPenList, wxList)
-IMPLEMENT_DYNAMIC_CLASS(wxBrushList, wxList)
-IMPLEMENT_DYNAMIC_CLASS(wxBitmapList, wxList)
-
-/*
-#if (!USE_TYPEDEFS)
-IMPLEMENT_DYNAMIC_CLASS(wxPoint, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxIntPoint, wxObject)
-#endif
-*/
-
-#if defined(wx_x) || (defined(wx_msw) && USE_PORTABLE_FONTS_IN_MSW)
-IMPLEMENT_DYNAMIC_CLASS(wxFontNameDirectory, wxObject)
-#endif
-
-#include "wx/hash.h"
-IMPLEMENT_DYNAMIC_CLASS(wxHashTable, wxObject)
-
-#include "wx/help.h"
-IMPLEMENT_DYNAMIC_CLASS(wxHelpInstance, wxClient)
-IMPLEMENT_CLASS(wxHelpConnection, wxConnection)
-
-#include "wx/list.h"
-IMPLEMENT_DYNAMIC_CLASS(wxNode, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxList, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxStringList, wxList)
-
-#if USE_PRINTING_ARCHITECTURE
-#include "wx/print.h"
-IMPLEMENT_DYNAMIC_CLASS(wxPrintDialog, wxDialog)
-IMPLEMENT_DYNAMIC_CLASS(wxPrinterBase, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxPostScriptPrinter, wxPrinterBase)
-IMPLEMENT_DYNAMIC_CLASS(wxWindowsPrinter, wxPrinterBase)
-IMPLEMENT_ABSTRACT_CLASS(wxPrintout, wxObject)
-IMPLEMENT_CLASS(wxPreviewCanvas, wxWindow)
-IMPLEMENT_CLASS(wxPreviewControlBar, wxWindow)
-IMPLEMENT_CLASS(wxPreviewFrame, wxFrame)
-IMPLEMENT_CLASS(wxPrintPreviewBase, wxObject)
-IMPLEMENT_CLASS(wxPostScriptPrintPreview, wxPrintPreviewBase)
-IMPLEMENT_CLASS(wxWindowsPrintPreview, wxPrintPreviewBase)
-IMPLEMENT_CLASS(wxGenericPrintDialog, wxDialog)
-IMPLEMENT_CLASS(wxGenericPrintSetupDialog, wxDialog)
-#endif
-
 #if USE_POSTSCRIPT
-#include "wx/postscrp.h"
-IMPLEMENT_DYNAMIC_CLASS(wxPostScriptDC, wxDC)
-IMPLEMENT_DYNAMIC_CLASS(wxPrintSetupData, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxPageSetupData, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxPrintPaperType, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxPrintPaperDatabase, wxList)
-#endif
-
-#if USE_WX_RESOURCES
-#include "wx/resource.h"
-IMPLEMENT_DYNAMIC_CLASS(wxItemResource, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxResourceTable, wxHashTable)
-#endif
-
-#include "wx/event.h"
-IMPLEMENT_DYNAMIC_CLASS(wxEvtHandler, wxObject)
-IMPLEMENT_ABSTRACT_CLASS(wxEvent, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxCommandEvent, wxEvent)
-IMPLEMENT_DYNAMIC_CLASS(wxScrollEvent, wxCommandEvent)
-IMPLEMENT_DYNAMIC_CLASS(wxMouseEvent, wxEvent)
-IMPLEMENT_DYNAMIC_CLASS(wxKeyEvent, wxEvent)
-IMPLEMENT_DYNAMIC_CLASS(wxSizeEvent, wxEvent)
-IMPLEMENT_DYNAMIC_CLASS(wxPaintEvent, wxEvent)
-IMPLEMENT_DYNAMIC_CLASS(wxEraseEvent, wxEvent)
-IMPLEMENT_DYNAMIC_CLASS(wxMoveEvent, wxEvent)
-IMPLEMENT_DYNAMIC_CLASS(wxFocusEvent, wxEvent)
-IMPLEMENT_DYNAMIC_CLASS(wxCloseEvent, wxEvent)
-IMPLEMENT_DYNAMIC_CLASS(wxMenuEvent, wxEvent)
-IMPLEMENT_DYNAMIC_CLASS(wxJoystickEvent, wxEvent)
-IMPLEMENT_DYNAMIC_CLASS(wxDropFilesEvent, wxEvent)
-IMPLEMENT_DYNAMIC_CLASS(wxActivateEvent, wxEvent)
-IMPLEMENT_DYNAMIC_CLASS(wxInitDialogEvent, wxEvent)
-IMPLEMENT_DYNAMIC_CLASS(wxSysColourChangedEvent, wxEvent)
-IMPLEMENT_DYNAMIC_CLASS(wxIdleEvent, wxEvent)
-IMPLEMENT_DYNAMIC_CLASS(wxUpdateUIEvent, wxEvent)
-IMPLEMENT_DYNAMIC_CLASS(wxProcessEvent, wxEvent)
-
-#include "wx/utils.h"
-IMPLEMENT_DYNAMIC_CLASS(wxPathList, wxList)
-
-// IMPLEMENT_DYNAMIC_CLASS(wxRect, wxObject)
-
-#include "wx/process.h"
-IMPLEMENT_DYNAMIC_CLASS(wxProcess, wxEvtHandler)
-
-#if USE_TIMEDATE
-#include "wx/date.h"
-IMPLEMENT_DYNAMIC_CLASS(wxDate, wxObject)
-#endif
-
-#if USE_DOC_VIEW_ARCHITECTURE
-#include "wx/docview.h"
-//IMPLEMENT_ABSTRACT_CLASS(wxDocItem, wxObject)
-IMPLEMENT_ABSTRACT_CLASS(wxDocument, wxEvtHandler)
-IMPLEMENT_ABSTRACT_CLASS(wxView, wxEvtHandler)
-IMPLEMENT_ABSTRACT_CLASS(wxDocTemplate, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxDocManager, wxEvtHandler)
-IMPLEMENT_CLASS(wxDocChildFrame, wxFrame)
-IMPLEMENT_CLASS(wxDocParentFrame, wxFrame)
-#if USE_PRINTING_ARCHITECTURE
-IMPLEMENT_DYNAMIC_CLASS(wxDocPrintout, wxPrintout)
-#endif
-IMPLEMENT_CLASS(wxCommand, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxCommandProcessor, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxFileHistory, wxObject)
-#endif
-
-#if USE_CONSTRAINTS
-#include "wx/layout.h"
-IMPLEMENT_DYNAMIC_CLASS(wxIndividualLayoutConstraint, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxLayoutConstraints, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxSizer, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxRowColSizer, wxSizer)
-#endif
-
-#if USE_TOOLBAR
-#include "wx/tbarbase.h"
-IMPLEMENT_DYNAMIC_CLASS(wxToolBarTool, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxToolBarBase, wxControl)
-
-#include "wx/tbarsmpl.h"
-IMPLEMENT_DYNAMIC_CLASS(wxToolBarSimple, wxToolBarBase)
-
-#ifdef wx_msw
-#include "wx/tbarmsw.h"
-IMPLEMENT_DYNAMIC_CLASS(wxToolBarMSW, wxToolBarBase)
-
-#include "wx/tbar95.h"
-IMPLEMENT_DYNAMIC_CLASS(wxToolBar95, wxToolBarBase)
-#endif
-
-#endif
-
-#include "wx/statusbr.h"
-
-IMPLEMENT_DYNAMIC_CLASS(wxStatusBar, wxWindow)
-
-BEGIN_EVENT_TABLE(wxStatusBar, wxWindow)
-       EVT_PAINT(wxStatusBar::OnPaint)
-    EVT_SYS_COLOUR_CHANGED(wxStatusBar::OnSysColourChanged)
-END_EVENT_TABLE()
-
-#if USE_TIMEDATE
-#include "wx/time.h"
-IMPLEMENT_DYNAMIC_CLASS(wxTime, wxObject)
-#endif
-
-#if !USE_GNU_WXSTRING
-#include "wx/string.h"
-IMPLEMENT_DYNAMIC_CLASS(wxString, wxObject)
-#endif
-
-#ifdef wx_motif
-IMPLEMENT_DYNAMIC_CLASS(wxXColormap, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxXFont, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxXCursor, wxObject)
-#endif
-IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject)
-IMPLEMENT_DYNAMIC_CLASS(wxPalette, wxGDIObject)
-IMPLEMENT_DYNAMIC_CLASS(wxPen, wxGDIObject)
-IMPLEMENT_DYNAMIC_CLASS(wxBrush, wxGDIObject)
-IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap)
-IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap)
-IMPLEMENT_DYNAMIC_CLASS(wxBitmap, wxGDIObject)
-IMPLEMENT_DYNAMIC_CLASS(wxMask, wxObject)
-
-// This will presumably be implemented on other platforms too
-#ifdef wx_msw
-IMPLEMENT_DYNAMIC_CLASS(wxBitmapHandler, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxBMPResourceHandler, wxBitmapHandler)
-IMPLEMENT_DYNAMIC_CLASS(wxBMPFileHandler, wxBitmapHandler)
-IMPLEMENT_DYNAMIC_CLASS(wxXPMFileHandler, wxBitmapHandler)
-IMPLEMENT_DYNAMIC_CLASS(wxXPMDataHandler, wxBitmapHandler)
-IMPLEMENT_DYNAMIC_CLASS(wxICOFileHandler, wxBitmapHandler)
-IMPLEMENT_DYNAMIC_CLASS(wxICOResourceHandler, wxBitmapHandler)
-#endif
-
-#include "wx/statbox.h"
-IMPLEMENT_DYNAMIC_CLASS(wxStaticBox, wxControl)
-
-#if USE_IPC
-#include "wx/dde.h"
-IMPLEMENT_ABSTRACT_CLASS(wxDDEObject, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxDDEServer, wxDDEObject)
-IMPLEMENT_DYNAMIC_CLASS(wxDDEClient, wxDDEObject)
-IMPLEMENT_CLASS(wxDDEConnection, wxObject)
-#endif
-
-IMPLEMENT_ABSTRACT_CLASS(wxControl, wxWindow)
-
-#include "wx/listbox.h"
-IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControl)
-
-IMPLEMENT_DYNAMIC_CLASS(wxApp, wxEvtHandler)
-
-#include "wx/menu.h"
-IMPLEMENT_DYNAMIC_CLASS(wxMenu, wxWindow)
-IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxObject)
-IMPLEMENT_DYNAMIC_CLASS(wxMenuBar, wxWindow)
-
-#include "wx/stattext.h"
-#include "wx/statbmp.h"
-IMPLEMENT_DYNAMIC_CLASS(wxStaticText, wxControl)
-IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxControl)
-
-#if USE_METAFILE
-#include "wx/metafile.h"
-IMPLEMENT_DYNAMIC_CLASS(wxMetaFile, wxObject)
-IMPLEMENT_ABSTRACT_CLASS(wxMetaFileDC, wxDC)
-#endif
-
-#include "wx/radiobox.h"
-#include "wx/radiobut.h"
-IMPLEMENT_DYNAMIC_CLASS(wxRadioBox, wxControl)
-
-IMPLEMENT_DYNAMIC_CLASS(wxRadioButton, wxControl)
-// IMPLEMENT_DYNAMIC_CLASS(wxBitmapRadioButton, wxRadioButton)
-
-#include "wx/scrolbar.h"
-IMPLEMENT_DYNAMIC_CLASS(wxScrollBar, wxControl)
-
-#if WXWIN_COMPATIBILITY
-BEGIN_EVENT_TABLE(wxScrollBar, wxControl)
-  EVT_SCROLL(wxScrollBar::OnScroll)
-END_EVENT_TABLE()
-#endif
-
-#include "wx/slider.h"
-IMPLEMENT_DYNAMIC_CLASS(wxSlider, wxControl)
-
-#if WXWIN_COMPATIBILITY
-BEGIN_EVENT_TABLE(wxSlider, wxControl)
-  EVT_SCROLL(wxSlider::OnScroll)
-END_EVENT_TABLE()
-#endif
-
-#include "wx/timer.h"
-IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject)
-
-#include "wx/textctrl.h"
-IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl)
-
-#include "wx/window.h"
-IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxEvtHandler)
-
-#include "wx/scrolwin.h"
-IMPLEMENT_DYNAMIC_CLASS(wxScrolledWindow, wxWindow)
-
-#include "wx/panel.h"
-IMPLEMENT_DYNAMIC_CLASS(wxPanel, wxWindow)
-
-#include "wx/msgbxdlg.h"
-#include "wx/textdlg.h"
-#include "wx/filedlg.h"
-#include "wx/dirdlg.h"
-#include "wx/choicdlg.h"
-
-#if !defined(wx_msw) || USE_GENERIC_DIALOGS_IN_MSW
-#include "wx/generic/msgdlgg.h"
-IMPLEMENT_CLASS(wxGenericMessageDialog, wxDialog)
-#endif
-
-IMPLEMENT_CLASS(wxTextEntryDialog, wxDialog)
-IMPLEMENT_CLASS(wxSingleChoiceDialog, wxDialog)
-IMPLEMENT_CLASS(wxFileDialog, wxDialog)
-IMPLEMENT_CLASS(wxDirDialog, wxDialog)
-
-#ifdef wx_msw
-IMPLEMENT_CLASS(wxMessageDialog)
-#endif
-
-#if USE_GAUGE
-#ifdef wx_motif
-#include "../../contrib/xmgauge/gauge.h"
-#endif
-#include "wx_gauge.h"
-IMPLEMENT_DYNAMIC_CLASS(wxGauge, wxControl)
+wxPrintPaperDatabase* wxThePrintPaperDatabase = NULL;
 #endif
 
-#include "wx/grid.h"
-IMPLEMENT_DYNAMIC_CLASS(wxGenericGrid, wxPanel)
-
 ///// Event tables (also must be in one, statically-linked file for shared libraries)
 
 // This is the base, wxEvtHandler 'bootstrap' code which is expanded manually here
@@ -552,160 +141,5 @@ const wxEventTable wxEvtHandler::sm_eventTable =
 
 const wxEventTableEntry wxEvtHandler::sm_eventTableEntries[] = { { 0, 0, 0, NULL } };
 
-BEGIN_EVENT_TABLE(wxFrame, wxWindow)
-       EVT_ACTIVATE(wxFrame::OnActivate)
-       EVT_SIZE(wxFrame::OnSize)
-       EVT_MENU_HIGHLIGHT_ALL(wxFrame::OnMenuHighlight)
-    EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged)
-    EVT_IDLE(wxFrame::OnIdle)
-    EVT_CLOSE(wxFrame::OnCloseWindow)
-END_EVENT_TABLE()
-
-BEGIN_EVENT_TABLE(wxDialog, wxPanel)
-  EVT_BUTTON(wxID_OK, wxDialog::OnOK)
-  EVT_BUTTON(wxID_APPLY, wxDialog::OnApply)
-  EVT_BUTTON(wxID_CANCEL, wxDialog::OnCancel)
-  EVT_CHAR_HOOK(wxDialog::OnCharHook)
-  EVT_SYS_COLOUR_CHANGED(wxDialog::OnSysColourChanged)
-  EVT_CLOSE(wxDialog::OnCloseWindow)
-END_EVENT_TABLE()
-
-BEGIN_EVENT_TABLE(wxWindow, wxEvtHandler)
-  EVT_CHAR(wxWindow::OnChar)
-  EVT_SIZE(wxWindow::Size)
-  EVT_ERASE_BACKGROUND(wxWindow::OnEraseBackground)
-  EVT_SYS_COLOUR_CHANGED(wxWindow::OnSysColourChanged)
-  EVT_INIT_DIALOG(wxWindow::OnInitDialog)
-  EVT_IDLE(wxWindow::OnIdle)
-END_EVENT_TABLE()
-
-BEGIN_EVENT_TABLE(wxScrolledWindow, wxWindow)
-  EVT_SCROLL(wxScrolledWindow::OnScroll)
-  EVT_SIZE(wxScrolledWindow::OnSize)
-END_EVENT_TABLE()
-
-BEGIN_EVENT_TABLE(wxPanel, wxWindow)
-  EVT_SYS_COLOUR_CHANGED(wxPanel::OnSysColourChanged)
-END_EVENT_TABLE()
-
-BEGIN_EVENT_TABLE(wxTextCtrl, wxControl)
-       EVT_CHAR(wxTextCtrl::OnChar)
-       EVT_DROP_FILES(wxTextCtrl::OnDropFiles)
-       EVT_ERASE_BACKGROUND(wxTextCtrl::OnEraseBackground)
-END_EVENT_TABLE()
-
-#ifdef wx_msw
-BEGIN_EVENT_TABLE(wxMDIParentWindow, wxFrame)
-  EVT_SIZE(wxMDIParentWindow::OnSize)
-  EVT_ACTIVATE(wxMDIParentWindow::OnActivate)
-  EVT_SYS_COLOUR_CHANGED(wxMDIParentWindow::OnSysColourChanged)
-END_EVENT_TABLE()
-
-BEGIN_EVENT_TABLE(wxMDIClientWindow, wxWindow)
-  EVT_SCROLL(wxMDIClientWindow::OnScroll)
-END_EVENT_TABLE()
-#endif
-
-BEGIN_EVENT_TABLE(wxToolBarBase, wxControl)
-  EVT_SCROLL(wxToolBarBase::OnScroll)
-  EVT_SIZE(wxToolBarBase::OnSize)
-  EVT_IDLE(wxToolBarBase::OnIdle)
-END_EVENT_TABLE()
-
-BEGIN_EVENT_TABLE(wxToolBarSimple, wxToolBarBase)
-       EVT_SIZE(wxToolBarSimple::OnSize)
-       EVT_PAINT(wxToolBarSimple::OnPaint)
-       EVT_KILL_FOCUS(wxToolBarSimple::OnKillFocus)
-       EVT_MOUSE_EVENTS(wxToolBarSimple::OnMouseEvent)
-END_EVENT_TABLE()
-
-#ifdef wx_msw
-BEGIN_EVENT_TABLE(wxToolBarMSW, wxToolBarBase)
-       EVT_SIZE(wxToolBarMSW::OnSize)
-       EVT_PAINT(wxToolBarMSW::OnPaint)
-       EVT_MOUSE_EVENTS(wxToolBarMSW::OnMouseEvent)
-END_EVENT_TABLE()
-
-BEGIN_EVENT_TABLE(wxToolBar95, wxToolBarBase)
-       EVT_SIZE(wxToolBar95::OnSize)
-       EVT_PAINT(wxToolBar95::OnPaint)
-       EVT_KILL_FOCUS(wxToolBar95::OnKillFocus)
-       EVT_MOUSE_EVENTS(wxToolBar95::OnMouseEvent)
-    EVT_SYS_COLOUR_CHANGED(wxToolBar95::OnSysColourChanged)
-END_EVENT_TABLE()
-#endif
-
-BEGIN_EVENT_TABLE(wxGenericGrid, wxPanel)
-       EVT_SIZE(wxGenericGrid::OnSize)
-       EVT_PAINT(wxGenericGrid::OnPaint)
-       EVT_MOUSE_EVENTS(wxGenericGrid::OnMouseEvent)
-    EVT_TEXT(wxGRID_TEXT_CTRL, wxGenericGrid::OnText)
-    EVT_COMMAND_SCROLL(wxGRID_HSCROLL, wxGenericGrid::OnGridScroll)
-    EVT_COMMAND_SCROLL(wxGRID_VSCROLL, wxGenericGrid::OnGridScroll)
-END_EVENT_TABLE()
-
-BEGIN_EVENT_TABLE(wxControl, wxWindow)
-  EVT_ERASE_BACKGROUND(wxControl::OnEraseBackground)
-END_EVENT_TABLE()
-
-#if !defined(wx_msw) || USE_GENERIC_DIALOGS_IN_MSW
-BEGIN_EVENT_TABLE(wxGenericMessageDialog, wxDialog)
-       EVT_BUTTON(wxID_YES, wxGenericMessageDialog::OnYes)
-       EVT_BUTTON(wxID_NO, wxGenericMessageDialog::OnNo)
-       EVT_BUTTON(wxID_CANCEL, wxGenericMessageDialog::OnCancel)
-END_EVENT_TABLE()
-
-BEGIN_EVENT_TABLE(wxGenericColourDialog, wxDialog)
-       EVT_BUTTON(wxID_ADD_CUSTOM, wxGenericColourDialog::OnAddCustom)
-       EVT_SLIDER(wxID_RED_SLIDER, wxGenericColourDialog::OnRedSlider)
-       EVT_SLIDER(wxID_GREEN_SLIDER, wxGenericColourDialog::OnGreenSlider)
-       EVT_SLIDER(wxID_BLUE_SLIDER, wxGenericColourDialog::OnBlueSlider)
-       EVT_PAINT(wxGenericColourDialog::OnPaint)
-       EVT_MOUSE_EVENTS(wxGenericColourDialog::OnMouseEvent)
-END_EVENT_TABLE()
-
-BEGIN_EVENT_TABLE(wxGenericFontDialog, wxDialog)
-       EVT_CHECKBOX(wxID_FONT_UNDERLINE, wxGenericFontDialog::OnChangeFont)
-       EVT_CHOICE(wxID_FONT_STYLE, wxGenericFontDialog::OnChangeFont)
-       EVT_CHOICE(wxID_FONT_WEIGHT, wxGenericFontDialog::OnChangeFont)
-       EVT_CHOICE(wxID_FONT_FAMILY, wxGenericFontDialog::OnChangeFont)
-       EVT_CHOICE(wxID_FONT_COLOUR, wxGenericFontDialog::OnChangeFont)
-       EVT_CHOICE(wxID_FONT_SIZE, wxGenericFontDialog::OnChangeFont)
-       EVT_PAINT(wxGenericFontDialog::OnPaint)
-END_EVENT_TABLE()
-
-BEGIN_EVENT_TABLE(wxGenericPrintDialog, wxDialog)
-    EVT_BUTTON(wxID_OK, wxGenericPrintDialog::OnOK)
-    EVT_BUTTON(wxPRINTID_SETUP, wxGenericPrintDialog::OnSetup)
-    EVT_RADIOBOX(wxPRINTID_RANGE, wxGenericPrintDialog::OnRange)
-END_EVENT_TABLE()
-
-#endif
-
-BEGIN_EVENT_TABLE(wxTextEntryDialog, wxDialog)
-       EVT_BUTTON(wxID_OK, wxTextEntryDialog::OnOK)
-END_EVENT_TABLE()
-
-BEGIN_EVENT_TABLE(wxSingleChoiceDialog, wxDialog)
-       EVT_BUTTON(wxID_OK, wxSingleChoiceDialog::OnOK)
-END_EVENT_TABLE()
-
-#include "wx/prntbase.h"
-
-BEGIN_EVENT_TABLE(wxPrintAbortDialog, wxDialog)
-       EVT_BUTTON(wxID_CANCEL, wxPrintAbortDialog::OnCancel)
-END_EVENT_TABLE()
-
-BEGIN_EVENT_TABLE(wxPreviewControlBar, wxWindow)
-       EVT_BUTTON(wxID_PREVIEW_CLOSE,          wxPreviewControlBar::OnClose)
-       EVT_BUTTON(wxID_PREVIEW_PRINT,          wxPreviewControlBar::OnPrint)
-       EVT_BUTTON(wxID_PREVIEW_PREVIOUS,       wxPreviewControlBar::OnPrevious)
-       EVT_BUTTON(wxID_PREVIEW_NEXT,           wxPreviewControlBar::OnNext)
-       EVT_CHOICE(wxID_PREVIEW_ZOOM,           wxPreviewControlBar::OnZoom)
-END_EVENT_TABLE()
-
-#endif
-
-
 const wxSize wxDefaultSize(-1, -1);
 const wxPoint wxDefaultPosition(-1, -1);
index 054ba0407c09049a2bd60f6edbad53c6cea06fdb..4cfe7305cc064d5075db6648e26af22e27b31ef3 100644 (file)
@@ -1,20 +1,24 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        dc.cpp
-// Purpose:
-// Author:      Robert Roebling
+// Purpose:     wxDC class
+// Author:      AUTHOR
+// Modified by:
 // Created:     01/02/97
 // RCS-ID:      $Id$
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
 #ifdef __GNUG__
 #pragma implementation "dc.h"
 #endif
 
 #include "wx/dc.h"
 
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject)
+#endif
+
 //-----------------------------------------------------------------------------
 // constants
 //-----------------------------------------------------------------------------
@@ -87,12 +91,7 @@ wxDC::~wxDC(void)
 {
 };
 
-void wxDC::DrawArc( long WXUNUSED(x1), long WXUNUSED(y1), long WXUNUSED(x2), long WXUNUSED(y2), 
-  double WXUNUSED(xc), double WXUNUSED(yc) )
-{
-};
-
-void wxDC::DrawIcon( const wxIcon &WXUNUSED(icon), long WXUNUSED(x), long WXUNUSED(y), bool WXUNUSED(useMask) ) 
+void wxDC::DrawIcon( const wxIcon &WXUNUSED(icon), long WXUNUSED(x), long WXUNUSED(y), bool WXUNUSED(useMask) )
 {
 };
 
index 3428a3e1f7ecda01c7b0da014937be323ce7e1e4..e25920d94fea3062557688b3f5dd911a6aa15854 100644 (file)
@@ -1,10 +1,11 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        dcclient.cpp
-// Purpose:
-// Author:      Robert Roebling
+// Purpose:     wxClientDC class
+// Author:      AUTHOR
+// Modified by:
 // Created:     01/02/97
 // RCS-ID:      $Id$
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #include "wx/dcmemory.h"
 #include <math.h>
 
-//-----------------------------------------------------------------------------
-// local data
-//-----------------------------------------------------------------------------
-
-#include "bdiag.xbm"
-#include "fdiag.xbm"
-#include "cdiag.xbm"
-#include "horiz.xbm"
-#include "verti.xbm"
-#include "cross.xbm"
-#define  num_hatches 6
-
-
 //-----------------------------------------------------------------------------
 // constants
 //-----------------------------------------------------------------------------
 // wxPaintDC
 //-----------------------------------------------------------------------------
 
-IMPLEMENT_DYNAMIC_CLASS(wxPaintDC,wxDC)
+#if !USE_SHARED_LIBRARY
+//IMPLEMENT_DYNAMIC_CLASS(wxClientDC, wxDC)
+//IMPLEMENT_DYNAMIC_CLASS(wxWindowDC, wxDC)
+IMPLEMENT_DYNAMIC_CLASS(wxPaintDC, wxDC)
+#endif
+
 
 wxPaintDC::wxPaintDC(void)
 {
index c08eb72476f09d6fe0027403c260ca007ffaa47f..c6066bb1abda33d50c34545a669ad9de5865c3c9 100644 (file)
@@ -1,10 +1,11 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        dcmemory.cpp
-// Purpose:
-// Author:      Robert Roebling
+// Purpose:     wxMemoryDC class
+// Author:      AUTHOR
+// Modified by:
 // Created:     01/02/97
 // RCS-ID:      $Id$
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 
 #include "wx/dcmemory.h"
 
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC, wxDC)
+#endif
+
 //-----------------------------------------------------------------------------
 // wxMemoryDC
 //-----------------------------------------------------------------------------
index cb263fc426cefdc2c7daf72a4bdf0a53efb1441f..04bbf4f35384486c68b8246c241ff6381d6c1b18 100644 (file)
@@ -1,10 +1,11 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        dcscreen.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxScreenDC class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #endif
 
 #include "wx/dcscreen.h"
-#include "wx/window.h"
 
-//-----------------------------------------------------------------------------
-// wxScreenDC
-//-----------------------------------------------------------------------------
-
-IMPLEMENT_DYNAMIC_CLASS(wxScreenDC,wxPaintDC)
-
-wxScreenDC::wxScreenDC(void)
-{
-  m_ok = FALSE;
-};
-
-wxScreenDC::~wxScreenDC(void)
-{
-  EndDrawingOnTop();
-};
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxScreenDC, wxPaintDC)
+#endif
 
-bool wxScreenDC::StartDrawingOnTop( wxWindow *WXUNUSED(window) )
+// Create a DC representing the whole screen
+wxScreenDC::wxScreenDC()
 {
-  return TRUE;
-};
+    // TODO
+}
 
-bool wxScreenDC::StartDrawingOnTop( wxRectangle *WXUNUSED(rect) )
+wxScreenDC::~wxScreenDC()
 {
-  return TRUE;
-};
+    // TODO
+}
 
-bool wxScreenDC::EndDrawingOnTop(void)
-{
-  return TRUE;
-};
index dffc5f64a91112bd3ea4f81c088f0f33c3975562..9b72fb0f6952560a2ac85697b6c37560d8025e99 100644 (file)
@@ -1,10 +1,11 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        dialog.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxDialog class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #endif
 
 #include "wx/dialog.h"
+#include "wx/utils.h"
 #include "wx/frame.h"
 #include "wx/app.h"
+#include "wx/settings.h"
 
-//-----------------------------------------------------------------------------
-
+// Lists to keep track of windows, so we can disable/enable them
+// for modal dialogs
+wxList wxModalDialogs;
+wxList wxModelessWindows;  // Frames and modeless dialogs
 extern wxList wxPendingDelete;
 
-//-----------------------------------------------------------------------------
-// wxDialog
-//-----------------------------------------------------------------------------
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxPanel)
 
-BEGIN_EVENT_TABLE(wxDialog,wxWindow)
-  EVT_BUTTON  (wxID_OK,       wxDialog::OnOk)
-  EVT_BUTTON  (wxID_CANCEL,   wxDialog::OnCancel)
-  EVT_BUTTON  (wxID_APPLY,    wxDialog::OnApply)
-  EVT_CLOSE   (wxDialog::OnCloseWindow)
+BEGIN_EVENT_TABLE(wxDialog, wxPanel)
+  EVT_BUTTON(wxID_OK, wxDialog::OnOK)
+  EVT_BUTTON(wxID_APPLY, wxDialog::OnApply)
+  EVT_BUTTON(wxID_CANCEL, wxDialog::OnCancel)
+  EVT_CHAR_HOOK(wxDialog::OnCharHook)
+  EVT_SYS_COLOUR_CHANGED(wxDialog::OnSysColourChanged)
+  EVT_CLOSE(wxDialog::OnCloseWindow)
 END_EVENT_TABLE()
 
-IMPLEMENT_DYNAMIC_CLASS(wxDialog,wxWindow)
+#endif
 
-wxDialog::wxDialog(void)
+wxDialog::wxDialog()
 {
-  m_title = "";
-  m_modalShowing = FALSE;
-  wxTopLevelWindows.Insert( this );
-};
+    SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE));
+}
 
-wxDialog::wxDialog( wxWindow *parent, 
-      wxWindowID id, const wxString &title,
-      const wxPoint &pos, const wxSize &size, 
-      long style, const wxString &name )
+bool wxDialog::Create(wxWindow *parent, wxWindowID id,
+           const wxString& title,
+           const wxPoint& pos,
+           const wxSize& size,
+           long style,
+           const wxString& name)
 {
-  m_modalShowing = FALSE;
-  wxTopLevelWindows.Insert( this );
-  Create( parent, id, title, pos, size, style, name );
-};
+  m_windowStyle = style;
 
-bool wxDialog::Create( wxWindow *parent,
-      wxWindowID id, const wxString &title,
-      const wxPoint &pos, const wxSize &size, 
-      long style, const wxString &name )
+  SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE));
+  SetName(name);
+  
+  if (!parent)
+    wxTopLevelWindows.Append(this);
+
+  if (parent) parent->AddChild(this);
+
+  if ( id == -1 )
+       m_windowId = (int)NewControlId();
+  else
+       m_windowId = id;
+
+  // TODO: create dialog
+
+  return FALSE;
+}
+
+void wxDialog::SetModal(bool flag)
 {
-  return TRUE;
-};
+       if ( flag )
+               m_windowStyle |= wxDIALOG_MODAL ;
+       else
+               if ( m_windowStyle & wxDIALOG_MODAL )
+                       m_windowStyle -= wxDIALOG_MODAL ;
+  
+  wxModelessWindows.DeleteObject(this);
+  if (!flag)
+    wxModelessWindows.Append(this);
+}
 
-wxDialog::~wxDialog(void)
+wxDialog::~wxDialog()
 {
-  wxTopLevelWindows.DeleteObject( this );
-  if (wxTopLevelWindows.Number() == 0) wxTheApp->ExitMainLoop();
-};
+    // TODO
+    wxTopLevelWindows.DeleteObject(this);
+
+    if ( (GetWindowStyleFlag() & wxDIALOG_MODAL) != wxDIALOG_MODAL )
+      wxModelessWindows.DeleteObject(this);
+
+    // If this is the last top-level window, exit.
+    if (wxTheApp && (wxTopLevelWindows.Number() == 0))
+    {
+      wxTheApp->SetTopWindow(NULL);
+
+      if (wxTheApp->GetExitOnFrameDelete())
+      {
+         // TODO: exit
+      }
+    }
+}
 
-void wxDialog::SetTitle(const wxString& title )
+// By default, pressing escape cancels the dialog
+void wxDialog::OnCharHook(wxKeyEvent& event)
 {
-  m_title = title;
-};
+  if (GetHWND())
+  {
+    if (event.m_keyCode == WXK_ESCAPE)
+    {
+               // Behaviour changed in 2.0: we'll send a Cancel message
+               // to the dialog instead of Close.
+               wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL);
+               cancelEvent.SetEventObject( this );
+               GetEventHandler()->ProcessEvent(cancelEvent);
 
-wxString wxDialog::GetTitle(void) const
+               return;
+    }
+  }
+  // We didn't process this event.
+  event.Skip();
+}
+
+void wxDialog::Iconize(bool WXUNUSED(iconize))
 {
-  return (wxString&)m_title;
-};
+    // TODO
+}
 
-void wxDialog::OnApply( wxCommandEvent &WXUNUSED(event) )
+bool wxDialog::IsIconized() const
 {
-  if (Validate()) TransferDataFromWindow();
-};
+    // TODO
+    return FALSE;
+}
 
-void wxDialog::OnCancel( wxCommandEvent &WXUNUSED(event) )
+void wxDialog::SetClientSize(int width, int height)
 {
-  if (IsModal())
-  {
-    EndModal(wxID_CANCEL);
-  }
-  else
-  {
-    SetReturnCode(wxID_CANCEL);
-    this->Show(FALSE);
-  };
-};
+    // TODO
+}
+
+void wxDialog::GetPosition(int *x, int *y) const
+{
+    // TODO
+}
 
-void wxDialog::OnOk( wxCommandEvent &WXUNUSED(event) )
+bool wxDialog::Show(bool show)
 {
-  if ( Validate() && TransferDataFromWindow())
+    // TODO
+    return FALSE;
+}
+
+void wxDialog::SetTitle(const wxString& title)
+{
+    // TODO
+}
+
+wxString wxDialog::GetTitle() const
+{
+    // TODO
+    return wxString("");
+}
+
+void wxDialog::Centre(int direction)
+{
+  int x_offset,y_offset ;
+  int display_width, display_height;
+  int  width, height, x, y;
+  wxFrame *frame ;
+  if (direction & wxCENTER_FRAME)
   {
-    if (IsModal()) 
+    frame = (wxFrame*)GetParent() ;
+    if (frame)
     {
-      EndModal(wxID_OK);
+      frame->GetPosition(&x_offset,&y_offset) ;
+      frame->GetSize(&display_width,&display_height) ;
     }
-    else
-    {
-      SetReturnCode(wxID_OK);
-      this->Show(FALSE);
-    };
-  };
-};
+  }
+  else
+    frame = NULL ;
 
-void wxDialog::OnPaint( wxPaintEvent& WXUNUSED(event) )
-{
-  // yes
-};
+  if (frame==NULL)
+  {
+    wxDisplaySize(&display_width, &display_height);
+    x_offset = 0 ;
+    y_offset = 0 ;
+  }
 
-bool wxDialog::OnClose(void)
-{
-  static wxList closing;
+  GetSize(&width, &height);
+  GetPosition(&x, &y);
 
-  if (closing.Member(this)) return FALSE;   // no loops
-  
-  closing.Append(this);
+  if (direction & wxHORIZONTAL)
+    x = (int)((display_width - width)/2);
+  if (direction & wxVERTICAL)
+    y = (int)((display_height - height)/2);
 
-  wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL);
-  cancelEvent.SetEventObject( this );
-  GetEventHandler()->ProcessEvent(cancelEvent);
-  closing.DeleteObject(this);
-  
-  return FALSE;
+  SetSize(x+x_offset, y+y_offset, width, height);
 }
 
-bool wxDialog::Destroy(void)
+// Replacement for Show(TRUE) for modal dialogs - returns return code
+int wxDialog::ShowModal()
 {
-  if (!wxPendingDelete.Member(this))
-    wxPendingDelete.Append(this);
+    m_windowStyle |= wxDIALOG_MODAL;
+    // TODO: modal showing
+       Show(TRUE);
+       return GetReturnCode();
+}
 
-  return TRUE;
+void wxDialog::EndModal(int retCode)
+{
+       SetReturnCode(retCode);
+    // TODO modal un-showing
+       Show(FALSE);
 }
 
-void wxDialog::OnCloseWindow(wxCloseEvent& event)
+// Standard buttons
+void wxDialog::OnOK(wxCommandEvent& event)
 {
-  if (GetEventHandler()->OnClose() || event.GetForce())
-  {
-    this->Destroy();
-  };
-};
+       if ( Validate() && TransferDataFromWindow() )
+       {
+        if ( IsModal() )
+            EndModal(wxID_OK);
+        else
+        {
+                   SetReturnCode(wxID_OK);
+                   this->Show(FALSE);
+        }
+       }
+}
 
-bool wxDialog::Show( bool show )
+void wxDialog::OnApply(wxCommandEvent& event)
 {
-  if (!show && IsModal() && m_modalShowing)
-  {
-    EndModal( wxID_CANCEL );
-  };
+       if (Validate())
+               TransferDataFromWindow();
+       // TODO probably need to disable the Apply button until things change again
+}
 
-  wxWindow::Show( show );
-  
-  if (show) InitDialog();
-  
-  return TRUE;
-};
+void wxDialog::OnCancel(wxCommandEvent& event)
+{
+    if ( IsModal() )
+        EndModal(wxID_CANCEL);
+    else
+    {
+        SetReturnCode(wxID_CANCEL);
+               this->Show(FALSE);
+    }
+}
 
-int wxDialog::ShowModal(void)
+bool wxDialog::OnClose()
 {
-  if (m_modalShowing) return GetReturnCode();
+       // Behaviour changed in 2.0: we'll send a Cancel message by default,
+    // which may close the dialog.
+    // Check for looping if the Cancel event handler calls Close()
 
-  Show( TRUE );
-  
-  m_modalShowing = TRUE;
-  
-  // grab here
-  // main here
-  // release here
-  
-  return GetReturnCode();
-};
+    static wxList closing;
+
+    if ( closing.Member(this) )
+        return FALSE;
+
+    closing.Append(this);
+
+       wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL);
+       cancelEvent.SetEventObject( this );
+       GetEventHandler()->ProcessEvent(cancelEvent);
+
+    closing.DeleteObject(this);
+
+       return FALSE;
+}
+
+void wxDialog::OnCloseWindow(wxCloseEvent& event)
+{
+    // Compatibility
+    if ( GetEventHandler()->OnClose() || event.GetForce())
+    {
+        this->Destroy();
+    }
+}
 
-void wxDialog::EndModal( int retCode )
+// Destroy the window (delayed, if a managed window)
+bool wxDialog::Destroy()
 {
-  SetReturnCode( retCode );
-  
-  if (!m_modalShowing) return;
-  m_modalShowing = FALSE;
-  
-  // quit main 
-};
+  if (!wxPendingDelete.Member(this))
+    wxPendingDelete.Append(this);
+  return TRUE;
+}
 
-void wxDialog::InitDialog(void)
+void wxDialog::OnSysColourChanged(wxSysColourChangedEvent& event)
 {
-  wxWindow::InitDialog();
-};
+  SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE));
+  Refresh();
+}
 
index dd7a2044234431cfb82f341b03d1fb7c1cf8a3d3..ec82cb6dc1cffad94a8d43acde4d694817bd1ea0 100644 (file)
@@ -1,9 +1,12 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Name:        dnd.cpp
-// Purpose:     wxDropTarget class
-// Author:      Robert Roebling
-// Copyright:   Robert Roebling
-// Licence:     wxWindows license
+// Purpose:     wxDropTarget, wxDropSource, wxDataObject implementation
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) 1998 AUTHOR
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
@@ -19,8 +22,6 @@
 // global
 // ----------------------------------------------------------------------------
 
-extern bool g_blockEventsOnDrag;
-
 // ----------------------------------------------------------------------------
 // wxDropTarget
 // ----------------------------------------------------------------------------
@@ -92,32 +93,41 @@ wxDataFormat wxFileDropTarget::GetFormat(size_t WXUNUSED(n)) const
 // wxDropSource
 //-------------------------------------------------------------------------
 
-wxDropSource::wxDropSource( wxWindow *WXUNUSED(win) )
+//-----------------------------------------------------------------------------
+// drag request
+
+wxDropSource::wxDropSource( wxWindow *win )
 {
-  g_blockEventsOnDrag = TRUE;
+    // TODO
+    m_window = win;
+    m_data = NULL;
+
+    m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY );
+    m_goaheadCursor = wxCursor( wxCURSOR_HAND );
 };
 
-wxDropSource::wxDropSource( wxDataObject &data, wxWindow *WXUNUSED(win) )
+wxDropSource::wxDropSource( wxDataObject &data, wxWindow *win )
 {
-  g_blockEventsOnDrag = TRUE;
-  
-  m_data = &data;  
+    // TODO
+    m_window = win;
+    m_data = &data;
+
+    m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY );
+    m_goaheadCursor = wxCursor( wxCURSOR_HAND );
 };
 
 void wxDropSource::SetData( wxDataObject &data )
 {
-  m_data = &data;  
+    m_data = &data;
 };
 
 wxDropSource::~wxDropSource(void)
 {
-//  if (m_data) delete m_data;
-
-  g_blockEventsOnDrag = FALSE;
 };
    
 wxDropSource::DragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) )
 {
-  return Copy;
+    // TODO
+    return Error;
 };
 
index c8b6e787209cd1876add129a540dc3e9c2140b99..cf096037d662701646471c6e179c33a7ea308009 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        filedlg.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
-// Licence:    wxWindows licence
+// Purpose:     wxFileDialog
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
 #pragma implementation "filedlg.h"
 #endif
 
-#include "wx/filedlg.h"
+#include "wx/defs.h"
 #include "wx/utils.h"
-#include "wx/intl.h"
-#include "wx/generic/msgdlgg.h"
-
-//-----------------------------------------------------------------------------
-// wxFileDialog
-//-----------------------------------------------------------------------------
-
-IMPLEMENT_DYNAMIC_CLASS(wxFileDialog,wxDialog)
-
-wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
-        const wxString& defaultDir, const wxString& defaultFileName, 
-       const wxString& wildCard,
-        long style, const wxPoint& pos )
-{
-  m_message = message;
-  m_path = "";
-  m_fileName = defaultFileName;
-  m_dir = defaultDir;
-  m_wildCard = wildCard;
-  m_dialogStyle = style;
-  m_filterIndex = 1;
-  
-  m_path.Append(m_dir);
-  if(! m_path.IsEmpty() && m_path.Last()!='/') m_path.Append('/');
-  m_path.Append(m_fileName);
-
-};
-
-int wxFileDialog::ShowModal(void)
-{
-  int ret = wxDialog::ShowModal();
+#include "wx/dialog.h"
+#include "wx/filedlg.h"
 
-  if (ret == wxID_OK)
-  {
-  };
-  return ret;
-};
-    
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_CLASS(wxFileDialog, wxDialog)
+#endif
 
 char *wxFileSelector(const char *title,
                      const char *defaultDir, const char *defaultFileName,
                      const char *defaultExtension, const char *filter, int flags,
                      wxWindow *parent, int x, int y)
 {
-       wxString filter2("");
-       if ( defaultExtension && !filter )
-               filter2 = wxString("*.") + wxString(defaultExtension) ;
-       else if ( filter )
-               filter2 = filter;
-
-       wxString defaultDirString;
-       if (defaultDir)
-               defaultDirString = defaultDir;
-       else
-               defaultDirString = "";
-
-       wxString defaultFilenameString;
-       if (defaultFileName)
-               defaultFilenameString = defaultFileName;
-       else
-               defaultFilenameString = "";
-
-       wxFileDialog fileDialog(parent, title, defaultDirString, defaultFilenameString, 
-         filter2, flags, wxPoint(x, y));
-
-       if ( fileDialog.ShowModal() == wxID_OK )
-       {
-               strcpy(wxBuffer, (const char *)fileDialog.GetPath());
-               return wxBuffer;
-       }
-       else
-               return NULL;
-};
-
-char* wxLoadFileSelector(const char *what, const char *extension, const char *default_name, 
-         wxWindow *parent )
-{
-  char *ext = (char *)extension;
-  
-  char prompt[50];
-  wxString str = _("Load %s file");
-  sprintf(prompt, str, what);
+    // If there's a default extension specified but no filter, we create a suitable
+    // filter.
+
+    wxString filter2("");
+    if ( defaultExtension && !filter )
+        filter2 = wxString("*.") + wxString(defaultExtension) ;
+    else if ( filter )
+        filter2 = filter;
+
+    wxString defaultDirString;
+    if (defaultDir)
+        defaultDirString = defaultDir;
+    else
+        defaultDirString = "";
+
+    wxString defaultFilenameString;
+    if (defaultFileName)
+        defaultFilenameString = defaultFileName;
+    else
+        defaultFilenameString = "";
+
+    wxFileDialog fileDialog(parent, title, defaultDirString, defaultFilenameString, filter2, flags, wxPoint(x, y));
+
+    if ( fileDialog.ShowModal() == wxID_OK )
+    {
+        strcpy(wxBuffer, (const char *)fileDialog.GetPath());
+        return wxBuffer;
+    }
+    else
+        return NULL;
+}
+
+char *wxFileSelectorEx(const char *title,
+                       const char *defaultDir,
+                       const char *defaultFileName,
+                       int* defaultFilterIndex,
+                       const char *filter,
+                       int       flags,
+                       wxWindow* parent,
+                       int       x,
+                       int       y)
 
-  if (*ext == '.') ext++;
-  char wild[60];
-  sprintf(wild, "*.%s", ext);
+{
+    wxFileDialog fileDialog(parent, title ? title : "", defaultDir ? defaultDir : "",
+        defaultFileName ? defaultFileName : "", filter ? filter : "", flags, wxPoint(x, y));
+
+    if ( fileDialog.ShowModal() == wxID_OK )
+    {
+        *defaultFilterIndex = fileDialog.GetFilterIndex();
+        strcpy(wxBuffer, (const char *)fileDialog.GetPath());
+        return wxBuffer;
+    }
+    else
+        return NULL;
+}
 
-  return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent);
-};
+wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
+        const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard,
+        long style, const wxPoint& pos)
+{
+    m_message = message;
+    m_dialogStyle = style;
+    m_parent = parent;
+    m_path = "";
+    m_fileName = defaultFileName;
+    m_dir = defaultDir;
+    m_wildCard = wildCard;
+    m_filterIndex = 1;
+}
+
+int wxFileDialog::ShowModal()
+{
+    // TODO
+    wxID_CANCEL;
+}
 
-char* wxSaveFileSelector(const char *what, const char *extension, const char *default_name, 
-         wxWindow *parent )
+// Generic file load/save dialog
+static char *
+wxDefaultFileSelector(bool load, const char *what, const char *extension, const char *default_name, wxWindow *parent)
 {
   char *ext = (char *)extension;
   
   char prompt[50];
-  wxString str = _("Save %s file");
-  sprintf(prompt, str, what);
+  wxString str;
+  if (load)
+    str = "Load %s file";
+  else
+    str = "Save %s file";
+  sprintf(prompt, wxGetTranslation(str), what);
 
   if (*ext == '.') ext++;
   char wild[60];
   sprintf(wild, "*.%s", ext);
 
   return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent);
-};
+}
+
+// Generic file load dialog
+char *
+wxLoadFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent)
+{
+  return wxDefaultFileSelector(TRUE, what, extension, default_name, parent);
+}
 
 
+// Generic file save dialog
+char *
+wxSaveFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent)
+{
+  return wxDefaultFileSelector(FALSE, what, extension, default_name, parent);
+}
 
 
index 87c13dac55f402022d5ab0d4c8e4f911ed58437c..5835259696b8a0e40d5d3b37d0b1fb2a2d1cb1f0 100644 (file)
@@ -1,10 +1,11 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        font.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxFont class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #endif
 
 #include "wx/font.h"
-#include "wx/utils.h"
-#include <strings.h>
-
-//-----------------------------------------------------------------------------
-// local data
-//-----------------------------------------------------------------------------
-
-static char *wx_font_family [] = {
-    "wxDEFAULT", "wxDECORATIVE", "wxMODERN", "wxROMAN", "wxSCRIPT",
-    "wxSWISS", "wxTELETYPE",
-};
-static char *wx_font_style [] = {
-    "wxDEFAULT", "wxNORMAL", "wxSLANT", "wxITALIC",
-};
-static char *wx_font_weight [] = {
-    "wxDEFAULT", "wxNORMAL", "wxBOLD", "wxLIGHT",
-};
-
-extern wxFontNameDirectory wxTheFontNameDirectory;
-
-//-----------------------------------------------------------------------------
-// wxFont
-//-----------------------------------------------------------------------------
-
-class wxFontRefData: public wxObjectRefData
-{
-  public:
-  
-    wxFontRefData(void);
-    ~wxFontRefData(void);
-    wxList   m_scaled_xfonts;
-    int      m_pointSize;
-    int      m_family, m_style, m_weight;
-    bool     m_underlined;
-    int      m_fontId;
-    char*    m_faceName;
-     
-};
-
-wxFontRefData::wxFontRefData(void) : m_scaled_xfonts(wxKEY_INTEGER)
-{
-  m_pointSize = -1;
-  m_family = -1;
-  m_style = -1;
-  m_weight = -1;
-  m_underlined = FALSE;
-  m_fontId = 0;
-  m_faceName = NULL;
-};
-
-wxFontRefData::~wxFontRefData(void)
-{
-  wxNode *node = m_scaled_xfonts.First();
-  while (node) 
-  {
-    wxNode *next = node->Next();
-    node = next;
-  };
-  if (m_faceName) 
-  {
-    delete m_faceName;
-    m_faceName = NULL;
-  };
-};
-
-//-----------------------------------------------------------------------------
-
-#define M_FONTDATA ((wxFontRefData *)m_refData)
 
+#if !USE_SHARED_LIBRARIES
 IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject)
+#endif
 
-wxFont::wxFont(void)
+wxFontRefData::wxFontRefData()
 {
-  if (wxTheFontList) wxTheFontList->Append( this );
-};
+       m_style = 0;
+       m_pointSize = 0;
+       m_family = 0;
+       m_style = 0;
+       m_weight = 0;
+       m_underlined = 0;
+       m_faceName = "";
+/* TODO
+       m_hFont = 0;
+*/
+}
 
-wxFont::wxFont( char *xFontName )
+wxFontRefData::wxFontRefData(const wxFontRefData& data)
 {
-  if (!xFontName) return;
-  
-  m_refData = new wxFontRefData();
-  
-};
+       m_style = data.m_style;
+       m_pointSize = data.m_pointSize;
+       m_family = data.m_family;
+       m_style = data.m_style;
+       m_weight = data.m_weight;
+       m_underlined = data.m_underlined;
+       m_faceName = data.m_faceName;
+/* TODO
+       m_hFont = 0;
+*/
+}
 
-wxFont::wxFont(int PointSize, int FontIdOrFamily, int Style, int Weight,
-              bool Underlined, const char* Face)
+wxFontRefData::~wxFontRefData()
 {
-  m_refData = new wxFontRefData();
-  
-
-  if (wxTheFontList) wxTheFontList->Append( this );
-};
+    // TODO: delete font data
+}
 
-wxFont::wxFont(int PointSize, const char *Face, int Family, int Style, 
-              int Weight, bool Underlined)
+wxFont::wxFont()
 {
-  m_refData = new wxFontRefData();
+    if ( wxTheFontList )
+        wxTheFontList->Append(this);
+}
 
+wxFont::wxFont(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName)
+{
+    Create(pointSize, family, style, weight, underlined, faceName);
 
-  if (wxTheFontList) wxTheFontList->Append( this );
-};
-
-wxFont::wxFont( const wxFont& font )
-{ 
-  Ref( font ); 
-};
-
-wxFont::wxFont( const wxFont* font ) 
-{ 
-  UnRef(); 
-  if (font) Ref( *font ); 
-};
+    if ( wxTheFontList )
+        wxTheFontList->Append(this);
+}
 
-wxFont::~wxFont(void)
+bool wxFont::Create(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName)
 {
-  if (wxTheFontList) wxTheFontList->DeleteObject( this );
-};
+    UnRef();
+    m_refData = new wxFontRefData;
 
-wxFont& wxFont::operator = ( const wxFont& font ) 
-{ 
-  if (*this == font) return (*this); 
-  Ref( font ); 
-  return *this; 
-};
+    M_FONTDATA->m_family = family;
+    M_FONTDATA->m_style = style;
+    M_FONTDATA->m_weight = weight;
+    M_FONTDATA->m_pointSize = pointSize;
+    M_FONTDATA->m_underlined = underlined;
+    M_FONTDATA->m_faceName = faceName;
 
-bool wxFont::operator == ( const wxFont& font ) 
-{ 
-  return m_refData == font.m_refData; 
-};
+    RealizeResource();
 
-bool wxFont::operator != ( const wxFont& font ) 
-{ 
-  return m_refData != font.m_refData; 
-};
+    return TRUE;
+}
 
-bool wxFont::Ok()
+wxFont::~wxFont()
 {
-  return (m_refData != NULL);
-};
+    if (wxTheFontList)
+        wxTheFontList->DeleteObject(this);
+}
 
-int wxFont::GetPointSize(void) const
+bool wxFont::RealizeResource()
 {
-  return M_FONTDATA->m_pointSize;
-};
+    // TODO: create the font (if there is a native font object)
+    return FALSE;
+}
 
-wxString wxFont::GetFaceString(void) const
+void wxFont::Unshare()
 {
-  return "";
-};
+       // Don't change shared data
+       if (!m_refData)
+    {
+               m_refData = new wxFontRefData();
+       }
+    else
+    {
+               wxFontRefData* ref = new wxFontRefData(*(wxFontRefData*)m_refData);
+               UnRef();
+               m_refData = ref;
+       }
+}
 
-wxString wxFont::GetFaceName(void) const
+void wxFont::SetPointSize(int pointSize)
 {
-  return ""; 
-};
+    Unshare();
 
-int wxFont::GetFamily(void) const
-{
-  return M_FONTDATA->m_family;
-};
+    M_FONTDATA->m_pointSize = pointSize;
 
-wxString wxFont::GetFamilyString(void) const
-{
-  wxString s = wx_font_family[M_FONTDATA->m_family];
-  return s;
-};
+    RealizeResource();
+}
 
-int wxFont::GetFontId(void) const
+void wxFont::SetFamily(int family)
 {
-  return M_FONTDATA->m_fontId; // stub
-};
+    Unshare();
+
+    M_FONTDATA->m_family = family;
 
-int wxFont::GetStyle(void) const
+    RealizeResource();
+}
+
+void wxFont::SetStyle(int style)
 {
-  return M_FONTDATA->m_style;
-};
+    Unshare();
+
+    M_FONTDATA->m_style = style;
+
+    RealizeResource();
+}
 
-wxString wxFont::GetStyleString(void) const
+void wxFont::SetWeight(int weight)
 {
-  wxString s =  wx_font_style[M_FONTDATA->m_style];
-  return s;
-};
+    Unshare();
 
-int wxFont::GetWeight(void) const
+    M_FONTDATA->m_weight = weight;
+
+    RealizeResource();
+}
+
+void wxFont::SetFaceName(const wxString& faceName)
 {
-  return M_FONTDATA->m_weight;
-};
+    Unshare();
+
+    M_FONTDATA->m_faceName = faceName;
 
-wxString wxFont::GetWeightString(void) const
+    RealizeResource();
+}
+
+void wxFont::SetUnderlined(bool underlined)
 {
-  wxString s = wx_font_weight[M_FONTDATA->m_weight];
-  return s;
-};
+    Unshare();
+
+    M_FONTDATA->m_underlined = underlined;
+
+    RealizeResource();
+}
 
-bool wxFont::GetUnderlined(void) const
+wxString wxFont::GetFamilyString() const
 {
-  return M_FONTDATA->m_underlined;
-};
+  wxString fam("");
+  switch (GetFamily())
+  {
+    case wxDECORATIVE:
+      fam = "wxDECORATIVE";
+      break;
+    case wxROMAN:
+      fam = "wxROMAN";
+      break;
+    case wxSCRIPT:
+      fam = "wxSCRIPT";
+      break;
+    case wxSWISS:
+      fam = "wxSWISS";
+      break;
+    case wxMODERN:
+      fam = "wxMODERN";
+      break;
+    case wxTELETYPE:
+      fam = "wxTELETYPE";
+      break;
+    default:
+      fam = "wxDEFAULT";
+      break;
+  }
+  return fam;
+}
+
+/* New font system */
+wxString wxFont::GetFaceName() const
+{
+    wxString str("");
+    if (M_FONTDATA)
+           str = M_FONTDATA->m_faceName ;
+    return str;
+}
+
+wxString wxFont::GetStyleString() const
+{
+    wxString styl("");
+    switch (GetStyle())
+    {
+        case wxITALIC:
+            styl = "wxITALIC";
+            break;
+        case wxSLANT:
+            styl = "wxSLANT";
+            break;
+        default:
+            styl = "wxNORMAL";
+            break;
+    }
+    return styl;
+}
+
+wxString wxFont::GetWeightString() const
+{
+    wxString w("");
+    switch (GetWeight())
+    {
+        case wxBOLD:
+            w = "wxBOLD";
+            break;
+        case wxLIGHT:
+            w = "wxLIGHT";
+            break;
+        default:
+            w = "wxNORMAL";
+            break;
+    }
+    return w;
+}
+
index 132a11bf5595c8039ea70e56a157097cfb2774d4..3d9b5b0004e91e379159f529fd7de353be1eb852 100644 (file)
@@ -1,10 +1,11 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        frame.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxFrame
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #endif
 
 #include "wx/frame.h"
-#include "wx/dialog.h"
-#include "wx/control.h"
-#include "wx/app.h"
-#include "wx/menu.h"
-#include "wx/toolbar.h"
 #include "wx/statusbr.h"
-#include "wx/mdi.h"
-
-const wxMENU_HEIGHT    = 28;
-const wxSTATUS_HEIGHT  = 25;
+#include "wx/toolbar.h"
+#include "wx/menuitem.h"
 
-extern wxList wxTopLevelWindows;
+extern wxList wxModelessWindows;
 extern wxList wxPendingDelete;
 
-//-----------------------------------------------------------------------------
-// wxFrame
-//-----------------------------------------------------------------------------
-
-//-----------------------------------------------------------------------------
-
+#if !USE_SHARED_LIBRARY
 BEGIN_EVENT_TABLE(wxFrame, wxWindow)
   EVT_SIZE(wxFrame::OnSize)
-  EVT_CLOSE(wxFrame::OnCloseWindow)
+  EVT_ACTIVATE(wxFrame::OnActivate)
+  EVT_MENU_HIGHLIGHT_ALL(wxFrame::OnMenuHighlight)
+  EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged)
   EVT_IDLE(wxFrame::OnIdle)
+  EVT_CLOSE(wxFrame::OnCloseWindow)
 END_EVENT_TABLE()
 
-IMPLEMENT_DYNAMIC_CLASS(wxFrame,wxWindow)
+IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow)
+#endif
+
+#if USE_NATIVE_STATUSBAR
+bool wxFrame::m_useNativeStatusBar = TRUE;
+#else
+bool wxFrame::m_useNativeStatusBar = FALSE;
+#endif
 
 wxFrame::wxFrame()
 {
-  wxTopLevelWindows.Insert( this );
-};
+  m_frameToolBar = NULL ;
+  m_frameMenuBar = NULL;
+  m_frameStatusBar = NULL;
 
-wxFrame::wxFrame( wxWindow *parent, wxWindowID id, const wxString &title,
-      const wxPoint &pos, const wxSize &size,
-      long style, const wxString &name )
-{
-  Create( parent, id, title, pos, size, style, name );
-  wxTopLevelWindows.Insert( this );
-};
+  m_windowParent = NULL;
+  m_iconized = FALSE;
+}
 
-bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
-      const wxPoint &pos, const wxSize &size,
-      long style, const wxString &name )
+bool wxFrame::Create(wxWindow *parent,
+           wxWindowID id,
+           const wxString& title,
+           const wxPoint& pos,
+           const wxSize& size,
+           long style,
+           const wxString& name)
 {
-  m_title = title;
+  if (!parent)
+    wxTopLevelWindows.Append(this);
 
-  return TRUE;
-};
+  SetName(name);
+  m_windowStyle = style;
+  m_frameMenuBar = NULL;
+  m_frameToolBar = NULL ;
+  m_frameStatusBar = NULL;
+
+  SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE));
+
+  if ( id > -1 )
+    m_windowId = id;
+  else
+    m_windowId = (int)NewControlId();
+
+  if (parent) parent->AddChild(this);
+
+  wxModelessWindows.Append(this);
+
+  // TODO: create frame.
+
+  return FALSE;
+}
 
 wxFrame::~wxFrame()
 {
-  if (m_frameMenuBar) delete m_frameMenuBar;
-  if (m_frameStatusBar) delete m_frameStatusBar;
+  wxTopLevelWindows.DeleteObject(this);
+
+  if (m_frameStatusBar)
+    delete m_frameStatusBar;
+  if (m_frameMenuBar)
+    delete m_frameMenuBar;
+
+/* Check if it's the last top-level window */
+
+  if (wxTheApp && (wxTopLevelWindows.Number() == 0))
+  {
+    wxTheApp->SetTopWindow(NULL);
+
+    if (wxTheApp->GetExitOnFrameDelete())
+    {
+       // TODO signal to the app that we're going to close
+    }
+  }
+
+  wxModelessWindows.DeleteObject(this);
+}
+
+// Get size *available for subwindows* i.e. excluding menu bar, toolbar etc.
+void wxFrame::GetClientSize(int *x, int *y) const
+{
+    // TODO
+}
 
-  wxTopLevelWindows.DeleteObject( this );
-  if (wxTopLevelWindows.Number() == 0) wxTheApp->ExitMainLoop();
-};
+// Set the client size (i.e. leave the calculation of borders etc.
+// to wxWindows)
+void wxFrame::SetClientSize(int width, int height)
+{
+    // TODO
+}
+
+void wxFrame::GetSize(int *width, int *height) const
+{
+    // TODO
+}
+
+void wxFrame::GetPosition(int *x, int *y) const
+{
+    // TODO
+}
+
+void wxFrame::SetSize(int x, int y, int width, int height, int sizeFlags)
+{
+    // TODO
+}
 
-bool wxFrame::Show( bool show )
+bool wxFrame::Show(bool show)
 {
-  if (show)
+    // TODO
+    return FALSE;
+}
+
+void wxFrame::Iconize(bool iconize)
+{
+    // TODO
+}
+
+// Equivalent to maximize/restore in Windows
+void wxFrame::Maximize(bool maximize)
+{
+    // TODO
+}
+
+bool wxFrame::IsIconized() const
+{
+    // TODO
+    return FALSE;
+}
+
+void wxFrame::SetTitle(const wxString& title)
+{
+    // TODO
+}
+
+wxString wxFrame::GetTitle() const
+{
+    // TODO
+    return wxString("");
+}
+
+void wxFrame::SetIcon(const wxIcon& icon)
+{
+  m_icon = icon;
+  // TODO
+}
+
+void wxFrame::SetAcceleratorTable(const wxAcceleratorTable& accel)
+{
+    m_acceleratorTable = accel;
+}
+
+wxStatusBar *wxFrame::OnCreateStatusBar(int number, long style, wxWindowID id,
+    const wxString& name)
+{
+    wxStatusBar *statusBar = NULL;
+
+    statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20),
+        style, name);
+
+    // Set the height according to the font and the border size
+    wxClientDC dc(statusBar);
+    dc.SetFont(* statusBar->GetFont());
+
+    long x, y;
+    dc.GetTextExtent("X", &x, &y);
+
+    int height = (int)( (y  * 1.1) + 2* statusBar->GetBorderY());
+
+    statusBar->SetSize(-1, -1, 100, height);
+
+    statusBar->SetFieldsCount(number);
+    return statusBar;
+}
+
+wxStatusBar* wxFrame::CreateStatusBar(int number, long style, wxWindowID id,
+    const wxString& name)
+{
+  // Calling CreateStatusBar twice is an error.
+  wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, 
+               "recreating status bar in wxFrame" );
+
+  m_frameStatusBar = OnCreateStatusBar(number, style, id,
+    name);
+  if ( m_frameStatusBar )
   {
-    wxSizeEvent event( wxSize(m_width,m_height), GetId() );
-    ProcessEvent( event );
-  };
-  return wxWindow::Show( show );
-};
+    PositionStatusBar();
+    return m_frameStatusBar;
+  }
+  else
+    return NULL;
+}
 
-void wxFrame::Enable( bool enable )
+void wxFrame::SetStatusText(const wxString& text, int number)
 {
-  wxWindow::Enable( enable );
-};
+  wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" );
 
-void wxFrame::OnCloseWindow( wxCloseEvent &event )
+  m_frameStatusBar->SetStatusText(text, number);
+}
+
+void wxFrame::SetStatusWidths(int n, const int widths_field[])
 {
-    if ( GetEventHandler()->OnClose() || event.GetForce())
+  wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" );
+
+  m_frameStatusBar->SetStatusWidths(n, widths_field);
+  PositionStatusBar();
+}
+
+void wxFrame::PositionStatusBar()
+{
+    int w, h;
+    GetClientSize(&w, &h);
+    int sw, sh;
+    m_frameStatusBar->GetSize(&sw, &sh);
+
+    // Since we wish the status bar to be directly under the client area,
+    // we use the adjusted sizes without using wxSIZE_NO_ADJUSTMENTS.
+    m_frameStatusBar->SetSize(0, h, w, sh);
+}
+
+void wxFrame::SetMenuBar(wxMenuBar *menuBar)
+{
+    if (!menuBar)
     {
-        this->Destroy();
+        m_frameMenuBar = NULL;
+        return;
     }
-};
+  
+    m_frameMenuBar = menuBar;
 
-bool wxFrame::Destroy()
+    // TODO
+}
+
+void wxFrame::Fit()
 {
-  if (!wxPendingDelete.Member(this))
-    wxPendingDelete.Append(this);
+  // Work out max. size
+  wxNode *node = GetChildren()->First();
+  int max_width = 0;
+  int max_height = 0;
+  while (node)
+  {
+    // Find a child that's a subwindow, but not a dialog box.
+    wxWindow *win = (wxWindow *)node->Data();
 
-  return TRUE;
+    if (!win->IsKindOf(CLASSINFO(wxFrame)) &&
+         !win->IsKindOf(CLASSINFO(wxDialog)))
+    {
+      int width, height;
+      int x, y;
+      win->GetSize(&width, &height);
+      win->GetPosition(&x, &y);
+
+      if ((x + width) > max_width)
+        max_width = x + width;
+      if ((y + height) > max_height)
+        max_height = y + height;
+    }
+    node = node->Next();
+  }
+  SetClientSize(max_width, max_height);
 }
 
-void wxFrame::GetClientSize( int *width, int *height ) const
+// Responds to colour changes, and passes event on to children.
+void wxFrame::OnSysColourChanged(wxSysColourChangedEvent& event)
 {
-  wxWindow::GetClientSize( width, height );
-  if (height)
-  {
-    if (m_frameMenuBar) (*height) -= wxMENU_HEIGHT;
-    if (m_frameStatusBar) (*height) -= wxSTATUS_HEIGHT;
-    if (m_frameToolBar)
+    SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE));
+    Refresh();
+
+    if ( m_frameStatusBar )
     {
-      int y = 0;
-      m_frameToolBar->GetSize( NULL, &y );
-      (*height) -= y;
+        wxSysColourChangedEvent event2;
+        event2.SetEventObject( m_frameStatusBar );
+        m_frameStatusBar->ProcessEvent(event2);
     }
-  };
-};
 
+    // Propagate the event to the non-top-level children
+    wxWindow::OnSysColourChanged(event);
+}
 
-void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
+// Default resizing behaviour - if only ONE subwindow,
+// resize to client rectangle size
+void wxFrame::OnSize(wxSizeEvent& event)
 {
-  if ( GetAutoLayout() )
-    Layout();
-  else {
-    // no child: go out !
-    if (!GetChildren()->First())
+  // if we're using constraints - do use them
+  #if USE_CONSTRAINTS
+    if ( GetAutoLayout() ) {
+      Layout();
       return;
-      
-    // do we have exactly one child?
-    wxWindow *child = NULL;
-    for(wxNode *node = GetChildren()->First(); node; node = node->Next())
+    }
+  #endif
+
+  // do we have _exactly_ one child?
+  wxWindow *child = NULL;
+  for ( wxNode *node = GetChildren()->First(); node; node = node->Next() )
+  {
+    wxWindow *win = (wxWindow *)node->Data();
+    if ( !win->IsKindOf(CLASSINFO(wxFrame))  &&
+         !win->IsKindOf(CLASSINFO(wxDialog)) && 
+         (win != GetStatusBar()) &&
+         (win != GetToolBar()) )
     {
-      wxWindow *win = (wxWindow *)node->Data();
-      if (!IS_KIND_OF(win,wxFrame) && !IS_KIND_OF(win,wxDialog)
-#if 0  // not in m_children anyway
-          && (win != m_frameMenuBar) &&
-             (win != m_frameToolBar) &&
-             (win != m_frameStatusBar)
-#endif
-         )
-      {
-        if ( child )  // it's the second one: do nothing
-          return;
+      if ( child )
+        return;     // it's our second subwindow - nothing to do
+      child = win;
+    }
+  }
 
-        child = win;
-      };
-    };
+  if ( child ) {
+    // we have exactly one child - set it's size to fill the whole frame
+    int clientW, clientH;
+    GetClientSize(&clientW, &clientH);
 
-    // yes: set it's size to fill all the frame
-    int client_x, client_y;
-    GetClientSize(&client_x, &client_y);
-    child->SetSize( 1, 1, client_x-2, client_y);
+    int x = 0;
+    int y = 0;
+
+    child->SetSize(x, y, clientW, clientH);
   }
-};
+}
 
-static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
+// Default activation behaviour - set the focus for the first child
+// subwindow found.
+void wxFrame::OnActivate(wxActivateEvent& event)
 {
-  menu->SetInvokingWindow( win );
-  wxNode *node = menu->m_items.First();
-  while (node)
+  for(wxNode *node = GetChildren()->First(); node; node = node->Next())
   {
-    wxMenuItem *menuitem = (wxMenuItem*)node->Data();
-    if (menuitem->IsSubMenu())
-      SetInvokingWindow( menuitem->GetSubMenu(), win );
-    node = node->Next();
-  };
-};
+    // Find a child that's a subwindow, but not a dialog box.
+    wxWindow *child = (wxWindow *)node->Data();
+    if (!child->IsKindOf(CLASSINFO(wxFrame)) &&
+         !child->IsKindOf(CLASSINFO(wxDialog)))
+    {
+#if WXDEBUG > 1
+      wxDebugMsg("wxFrame::OnActivate: about to set the child's focus.\n");
+#endif
+      child->SetFocus();
+      return;
+    }
+  }
+}
+
+// The default implementation for the close window event - calls
+// OnClose for backward compatibility.
 
-void wxFrame::SetMenuBar( wxMenuBar *menuBar )
+void wxFrame::OnCloseWindow(wxCloseEvent& event)
 {
-  m_frameMenuBar = menuBar;
-  
-  if (m_frameMenuBar)
+    // Compatibility
+    if ( GetEventHandler()->OnClose() || event.GetForce())
+    {
+        this->Destroy();
+    }
+}
+
+bool wxFrame::OnClose()
+{
+    return TRUE;
+}
+
+// Destroy the window (delayed, if a managed window)
+bool wxFrame::Destroy()
+{
+  if (!wxPendingDelete.Member(this))
+    wxPendingDelete.Append(this);
+  return TRUE;
+}
+
+// Default menu selection behaviour - display a help string
+void wxFrame::OnMenuHighlight(wxMenuEvent& event)
+{
+  if (GetStatusBar())
   {
-    if (m_frameMenuBar->m_parent != this)
+    if (event.GetMenuId() == -1)
+      SetStatusText("");
+    else
     {
-      wxNode *node = m_frameMenuBar->m_menus.First();
-      while (node)
+      wxMenuBar *menuBar = GetMenuBar();
+      if (menuBar)
       {
-        wxMenu *menu = (wxMenu*)node->Data();
-        SetInvokingWindow( menu, this );
-        node = node->Next();
-      };
-  
+        wxString helpString(menuBar->GetHelpString(event.GetMenuId()));
+        if (helpString != "")
+          SetStatusText(helpString);
+      }
     }
   }
-};
+}
 
-wxMenuBar *wxFrame::GetMenuBar(void)
+wxMenuBar *wxFrame::GetMenuBar() const
 {
   return m_frameMenuBar;
-};
+}
 
-wxToolBar *wxFrame::CreateToolBar( long style , wxWindowID id, const wxString& name )
+void wxFrame::Centre(int direction)
 {
-  m_frameToolBar = new wxToolBar( this, id, wxDefaultPosition, wxDefaultSize, style, name );
-  
-  return m_frameToolBar;
-};
+  int display_width, display_height, width, height, x, y;
+  wxDisplaySize(&display_width, &display_height);
+
+  GetSize(&width, &height);
+  GetPosition(&x, &y);
+
+  if (direction & wxHORIZONTAL)
+    x = (int)((display_width - width)/2);
+  if (direction & wxVERTICAL)
+    y = (int)((display_height - height)/2);
+
+  SetSize(x, y, width, height);
+}
 
-wxToolBar *wxFrame::GetToolBar(void)
+// Call this to simulate a menu command
+void wxFrame::Command(int id)
 {
-  return m_frameToolBar;
-};
+  ProcessCommand(id);
+}
 
-wxStatusBar* wxFrame::CreateStatusBar( int number, long style, wxWindowID id, const wxString& name )
+void wxFrame::ProcessCommand(int id)
 {
-  if (m_frameStatusBar)
-  delete m_frameStatusBar;
+  wxCommandEvent commandEvent(wxEVENT_TYPE_MENU_COMMAND, id);
+  commandEvent.SetInt( id );
+  commandEvent.SetEventObject( this );
 
-  m_frameStatusBar = new wxStatusBar( this, id, wxPoint(0,0), wxSize(100,20), style, name );
+  wxMenuBar *bar = GetMenuBar() ;
+  if (!bar)
+    return;
 
-  m_frameStatusBar->SetFieldsCount( number );
-  
-  return m_frameStatusBar;
-};
+/* TODO: check the menu item if required
+  wxMenuItem *item = bar->FindItemForId(id) ;
+  if (item && item->IsCheckable())
+  {
+    bar->Check(id,!bar->Checked(id)) ;
+  }
+*/
 
-void wxFrame::SetStatusText( const wxString &text, int number )
-{
-  if (m_frameStatusBar) m_frameStatusBar->SetStatusText( text, number );
-};
+  GetEventHandler()->ProcessEvent(commandEvent);
+}
 
-void wxFrame::SetStatusWidths( int n, int *width )
+// Checks if there is a toolbar, and returns the first free client position
+wxPoint wxFrame::GetClientAreaOrigin() const
 {
-  if (m_frameStatusBar) m_frameStatusBar->SetStatusWidths( n, width );
-};
+    wxPoint pt(0, 0);
+    if (GetToolBar())
+    {
+        int w, h;
+        GetToolBar()->GetSize(& w, & h);
+
+        if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL)
+        {
+            pt.x += w;
+        }
+        else
+        {
+            pt.y += h;
+        }
+    }
+    return pt;
+}
 
-wxStatusBar *wxFrame::GetStatusBar(void)
+wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name)
 {
-  return m_frameStatusBar;
-};
+    wxCHECK_MSG( m_frameToolBar == NULL, FALSE,
+               "recreating toolbar in wxFrame" );
 
-void wxFrame::SetTitle( const wxString &title )
-{
-  m_title = title;
-};
+    wxToolBar* toolBar = OnCreateToolBar(style, id, name);
+    if (toolBar)
+    {
+        SetToolBar(toolBar);
+        PositionToolBar();
+        return toolBar;
+    }
+    else
+    {
+        return NULL;
+    }
+}
 
-void wxFrame::SetSizeHints( int WXUNUSED(minW), int WXUNUSED(minH), 
-                            int WXUNUSED(maxW), int WXUNUSED(maxH), int WXUNUSED(incW) )
+wxToolBar* wxFrame::OnCreateToolBar(long style, wxWindowID id, const wxString& name)
 {
+    return new wxToolBar(this, id, wxDefaultPosition, wxDefaultSize, style, name);
 }
 
-void wxFrame::SetIcon( const wxIcon &icon )
+void wxFrame::PositionToolBar()
 {
-  m_icon = icon;
-  if (!icon.Ok()) return;
-  
+    int cw, ch;
+
+    // TODO: we actually need to use the low-level client size, before
+    // the toolbar/status bar were added.
+    // So DEFINITELY replace the line below with something appropriate.
+
+    wxCHECK_MSG( TRUE, FALSE,
+               "PositionToolBar not implemented properly, see frame.cpp" );
+
+    GetClientSize(& cw, &ch);
+
+    if ( GetStatusBar() )
+    {
+      int statusX, statusY;
+      GetStatusBar()->GetClientSize(&statusX, &statusY);
+      ch -= statusY;
+    }
+
+    if (GetToolBar())
+    {
+        int tw, th;
+        GetToolBar()->GetSize(& tw, & th);
+
+        if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL)
+        {
+            // Use the 'real' position. wxSIZE_NO_ADJUSTMENTS
+            // means, pretend we don't have toolbar/status bar, so we
+            // have the original client size.
+            GetToolBar()->SetSize(0, 0, tw, ch, wxSIZE_NO_ADJUSTMENTS);
+        }
+        else
+        {
+            // Use the 'real' position
+            GetToolBar()->SetSize(0, 0, cw, th, wxSIZE_NO_ADJUSTMENTS);
+        }
+    }
 }
 
index 274a64d982a1ea5ea2fcc58f865f83970dad445d..8e11c5001b1257ae253d8320a10eafc8613a5556 100644 (file)
@@ -1,10 +1,11 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        gauge.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxGauge class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 
 #include "wx/gauge.h"
 
-//-----------------------------------------------------------------------------
-// wxGauge
-//-----------------------------------------------------------------------------
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxGauge, wxControl)
+#endif
+
+bool wxGauge::Create(wxWindow *parent, wxWindowID id,
+           int range,
+           const wxPoint& pos,
+           const wxSize& size,
+           long style,
+           const wxValidator& validator,
+           const wxString& name)
+{
+    SetName(name);
+    SetValidator(validator);
+    m_rangeMax = range;
+    m_windowStyle = style;
+
+    if (parent) parent->AddChild(this);
+
+    if ( id == -1 )
+           m_windowId = (int)NewControlId();
+    else
+           m_windowId = id;
+
+
+    // TODO
+    return FALSE;
+}
+
+void wxGauge::SetSize(int x, int y, int width, int height, int sizeFlags)
+{
+    // TODO
+}
 
-IMPLEMENT_DYNAMIC_CLASS(wxGauge,wxControl)
+void wxGauge::SetShadowWidth(int w)
+{
+    // TODO optional
+}
+
+void wxGauge::SetBezelFace(int w)
+{
+    // TODO optional
+}
+
+void wxGauge::SetRange(int r)
+{
+    m_rangeMax = r;
+    // TODO
+}
+
+void wxGauge::SetValue(int pos)
+{
+    m_gaugePos = pos;
+    // TODO
+}
+
+int wxGauge::GetShadowWidth() const
+{
+    // TODO optional
+    return 0;
+}
 
-bool wxGauge::Create( wxWindow *parent, wxWindowID id,  int range,
-    const wxPoint& pos, const wxSize& size,
-    long style, const wxString& name )
+int wxGauge::GetBezelFace() const
 {
-  return TRUE;
-};
+    // TODO optional
+    return 0;
+}
 
-void wxGauge::SetRange( int r )
+int wxGauge::GetRange() const
 {
-  m_rangeMax = r;
-  if (m_gaugePos > m_rangeMax) m_gaugePos = m_rangeMax;
-};
+    return m_rangeMax;
+}
 
-void wxGauge::SetValue( int pos )
+int wxGauge::GetValue() const
 {
-  m_gaugePos = pos;
-  if (m_gaugePos > m_rangeMax) m_gaugePos = m_rangeMax;
-};
+    return m_gaugePos;
+}
 
-int wxGauge::GetRange(void) const
+void wxGauge::SetForegroundColour(const wxColour& col)
 {
-  return m_rangeMax;
-};
+    m_foregroundColour = col ;
+}
 
-int wxGauge::GetValue(void) const
+void wxGauge::SetBackgroundColour(const wxColour& col)
 {
-  return m_gaugePos;
-};
+    m_backgroundColour = col ;
+}
 
index 8df2e5ff09207957d0e29c37d6bf01e546d02b61..63697c835427fdea399f1bf61d3a3b046d4af9c9 100644 (file)
@@ -1,11 +1,11 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        gdiobj.cpp
 // Purpose:     wxGDIObject class
-// Author:      Julian Smart
+// Author:      AUTHOR
 // Modified by:
-// Created:     01/02/97
+// Created:     ??/??/98
 // RCS-ID:      $Id$
-// Copyright:   (c) Julian Smart and Markus Holzem
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -19,3 +19,4 @@
 IMPLEMENT_DYNAMIC_CLASS(wxGDIObject, wxObject)
 #endif
 
+// TODO: Nothing to do, unless you want to.
index 7ab44845375870a4f734f40d79b1ff40c85d8da0..6deee7dbdc2d7baea731c76061cf01cda56e13ed 100644 (file)
@@ -1,10 +1,11 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        icon.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxIcon class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 
 #include "wx/icon.h"
 
-//-----------------------------------------------------------------------------
-// wxIcon
-//-----------------------------------------------------------------------------
+#if !USE_SHARED_LIBRARIES
+IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap)
+#endif
+
+/*
+ * Icons
+ */
+
+
+wxIconRefData::wxIconRefData()
+{
+    // TODO: init icon handle
+}
 
-IMPLEMENT_DYNAMIC_CLASS(wxIcon,wxBitmap)
+wxIconRefData::~wxIconRefData()
+{
+    // TODO: destroy icon handle
+}
+
+wxIcon::wxIcon()
+{
+}
 
-wxIcon::wxIcon( char **bits, int WXUNUSED(width), int WXUNUSED(height) ) :
-    wxBitmap( bits ) 
+wxIcon::wxIcon(const char WXUNUSED(bits)[], int WXUNUSED(width), int WXUNUSED(height))
 {
-};
-    
+}
+
+wxIcon::wxIcon(const wxString& icon_file, long flags,
+    int desiredWidth, int desiredHeight)
+
+{
+    LoadFile(icon_file, flags, desiredWidth, desiredHeight);
+}
+
+wxIcon::~wxIcon()
+{
+}
+
+bool wxIcon::LoadFile(const wxString& filename, long type,
+    int desiredWidth, int desiredHeight)
+{
+  UnRef();
+
+  m_refData = new wxIconRefData;
+
+  wxBitmapHandler *handler = FindHandler(type);
+
+  if ( handler )
+       return handler->LoadFile(this, filename, type, desiredWidth, desiredHeight);
+  else
+       return FALSE;
+}
+
index e783f1276df15bfcca2abebad01f3ace5d523401..6677277f48be151868fcbe292166c92cb0914462 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        joystick.cpp
 // Purpose:     wxJoystick class
-// Author:      Ported to Linux by Guilhem Lavaux
+// Author:      AUTHOR
 // Modified by:
-// Created:     05/23/98
+// Created:     ??/??/98
 // RCS-ID:      $Id$
-// Copyright:   (c) Guilhem Lavaux
-// Licence:    wxWindows license
+// Copyright:   (c) AUTHOR
+// Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
 #pragma implementation "joystick.h"
 #endif
 
-#include <linux/joystick.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include "wx/event.h"
-#include "wx/window.h"
-#include "wx/gtk/joystick.h"
-
-#define JOYSTICK_AXE_MAX 32767
-#define JOYSTICK_AXE_MIN -32767
+#include <wx/joystick.h>
 
 IMPLEMENT_DYNAMIC_CLASS(wxJoystick, wxObject)
 
-wxJoystick::wxJoystick(int joystick)
-{
-  wxString dev_name;
-  // Assume it's the same device name on all Linux systems ...
-  dev_name.Printf("/dev/js%d", (joystick == wxJOYSTICK1) ? 0 : 1);
-
-  m_joystick = open(dev_name, O_RDWR);
-  m_lastposition = wxPoint(-1, -1);
-  for (int i=0;i<15;i++)
-    m_axe[i] = 0;
-  if (m_joystick != -1)
-    Create();
-}
-
+// Attributes
 ////////////////////////////////////////////////////////////////////////////
-// Background thread
-////////////////////////////////////////////////////////////////////////////
-void *wxJoystick::Entry(void)
-{
-  struct js_event j_evt;
-  wxJoystickEvent jwx_event;
-  fd_set read_fds;
-  struct timeval time_out = {0, 0};
-
-  FD_ZERO(&read_fds);
-  DeferDestroy(TRUE);
-  while (1) {
-    TestDestroy();
-
-    if (m_polling) {
-      FD_SET(m_joystick, &read_fds);
-      select(m_joystick+1, &read_fds, NULL, NULL, &time_out);
-      if (FD_ISSET(m_joystick, &read_fds))
-        read(m_joystick, &j_evt, sizeof(j_evt));
-      else
-        j_evt.type = 0;
-    } else {
-      read(m_joystick, &j_evt, sizeof(j_evt));
-    }
-
-    if ((j_evt.type & JS_EVENT_AXIS) == JS_EVENT_AXIS) {
-      switch (j_evt.number) {
-      case 1:
-        m_lastposition.x = j_evt.value;
-        jwx_event.SetEventType(wxEVT_JOY_MOVE);
-        break;
-      case 2:
-        m_lastposition.y = j_evt.value;
-        jwx_event.SetEventType(wxEVT_JOY_MOVE);
-        break;
-      case 3:
-        m_axe[3] = j_evt.value;
-        jwx_event.SetEventType(wxEVT_JOY_ZMOVE);
-        break;
-      default:
-        m_axe[j_evt.number] = j_evt.value;
-        jwx_event.SetEventType(wxEVT_JOY_MOVE);
-        break;
-      }
-      jwx_event.SetPosition(m_lastposition);
-      jwx_event.SetZPosition(m_axe[3]);
-    }
-    if ((j_evt.type & JS_EVENT_BUTTON) == JS_EVENT_BUTTON) {
-      register int mask = 1 << j_evt.number;
-      char button = m_buttons & mask;
-
-      m_buttons &= ~mask;
-      if (button) {
-        jwx_event.SetEventType(wxEVT_JOY_BUTTON_UP);
-      } else {
-        jwx_event.SetEventType(wxEVT_JOY_BUTTON_DOWN);
-        m_buttons |= mask;
-      }
-
-      jwx_event.SetButtonState(m_buttons);
-      jwx_event.SetButtonChange(j_evt.number);
-    }
-  }
-  if (m_catchwin)
-    m_catchwin->ProcessEvent(jwx_event);
-  if (m_polling)
-    usleep(m_polling*1000);
-}
 
-////////////////////////////////////////////////////////////////////////////
-// State
-////////////////////////////////////////////////////////////////////////////
-
-wxPoint wxJoystick::GetPosition(void) const
+wxPoint wxJoystick::GetPosition() const
 {
-  return m_lastposition;
+    // TODO
+    return wxPoint(0, 0);
 }
 
-int wxJoystick::GetZPosition(void) const
+int wxJoystick::GetZPosition() const
 {
-  return m_axe[3];
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetButtonState(void) const
+int wxJoystick::GetButtonState() const
 {
-  return m_buttons;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetPOVPosition(void) const
+int wxJoystick::GetPOVPosition() const
 {
-  return 0;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetPOVCTSPosition(void) const
+int wxJoystick::GetPOVCTSPosition() const
 {
-  return 0;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetRudderPosition(void) const
+int wxJoystick::GetRudderPosition() const
 {
-  return m_axe[4];
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetUPosition(void) const
+int wxJoystick::GetUPosition() const
 {
-  return m_axe[5];
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetVPosition(void) const
+int wxJoystick::GetVPosition() const
 {
-  return m_axe[6];
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetMovementThreshold(void) const
+int wxJoystick::GetMovementThreshold() const
 {
-  return 0;
+    // TODO
+    return 0;
 }
 
 void wxJoystick::SetMovementThreshold(int threshold)
 {
+    // TODO
 }
 
-////////////////////////////////////////////////////////////////////////////
 // Capabilities
 ////////////////////////////////////////////////////////////////////////////
 
-bool wxJoystick::IsOk(void) const
+bool wxJoystick::IsOk() const
 {
-  return (m_joystick != -1);
+    // TODO
+    return FALSE;
 }
 
-int wxJoystick::GetNumberJoysticks(void) const
+int wxJoystick::GetNumberJoysticks() const
 {
-  wxString dev_name;
-  int fd, j;
-
-  for (j=0;j<2;j++) {
-    dev_name.Printf("/dev/js%d", j);
-    fd = open(dev_name, O_RDONLY);
-    if (fd == -1)
-      return j;
-    close(fd);
-  }
-  return j;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetManufacturerId(void) const
+int wxJoystick::GetManufacturerId() const
 {
-  return 0;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetProductId(void) const
+int wxJoystick::GetProductId() const
 {
-  return 0;
+    // TODO
+    return 0;
 }
 
-wxString wxJoystick::GetProductName(void) const
+wxString wxJoystick::GetProductName() const
 {
-  return "";
+    // TODO
+    return wxString("");
 }
 
-int wxJoystick::GetXMin(void) const
+int wxJoystick::GetXMin() const
 {
-  return JOYSTICK_AXE_MAX;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetYMin(void) const
+int wxJoystick::GetYMin() const
 {
-  return JOYSTICK_AXE_MAX;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetZMin(void) const
+int wxJoystick::GetZMin() const
 {
-  return JOYSTICK_AXE_MAX;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetXMax(void) const
+int wxJoystick::GetXMax() const
 {
-  return JOYSTICK_AXE_MAX;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetYMax(void) const
+int wxJoystick::GetYMax() const
 {
-  return JOYSTICK_AXE_MAX;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetZMax(void) const
+int wxJoystick::GetZMax() const
 {
-  return JOYSTICK_AXE_MAX;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetNumberButtons(void) const
+int wxJoystick::GetNumberButtons() const
 {
-  int nb;
-
-  ioctl(m_joystick, JSIOCGBUTTONS, &nb);
-
-  return nb;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetNumberAxes(void) const
+int wxJoystick::GetNumberAxes() const
 {
-  int nb;
-
-  ioctl(m_joystick, JSIOCGAXES, &nb);
-
-  return nb;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetMaxButtons(void) const
+int wxJoystick::GetMaxButtons() const
 {
-  return 15; // internal
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetMaxAxes(void) const
+int wxJoystick::GetMaxAxes() const
 {
-  return 15; // internal
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetPollingMin(void) const
+int wxJoystick::GetPollingMin() const
 {
-  return -1;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetPollingMax(void) const
+int wxJoystick::GetPollingMax() const
 {
-  return -1;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetRudderMin(void) const
+int wxJoystick::GetRudderMin() const
 {
-  return JOYSTICK_AXE_MIN;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetRudderMax(void) const
+int wxJoystick::GetRudderMax() const
 {
-  return JOYSTICK_AXE_MAX;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetUMin(void) const
+int wxJoystick::GetUMin() const
 {
-  return JOYSTICK_AXE_MIN;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetUMax(void) const
+int wxJoystick::GetUMax() const
 {
-  return JOYSTICK_AXE_MAX;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetVMin(void) const
+int wxJoystick::GetVMin() const
 {
-  return JOYSTICK_AXE_MIN;
+    // TODO
+    return 0;
 }
 
-int wxJoystick::GetVMax(void) const
+int wxJoystick::GetVMax() const
 {
-  return JOYSTICK_AXE_MAX;
+    // TODO
+    return 0;
 }
 
-bool wxJoystick::HasRudder(void) const
+bool wxJoystick::HasRudder() const
 {
-  return GetNumberAxes() >= 4;
+    // TODO
+    return FALSE;
 }
 
-bool wxJoystick::HasZ(void) const
+bool wxJoystick::HasZ() const
 {
-  return GetNumberAxes() >= 3;
+    // TODO
+    return FALSE;
 }
 
-bool wxJoystick::HasU(void) const
+bool wxJoystick::HasU() const
 {
-  return GetNumberAxes() >= 5;
+    // TODO
+    return FALSE;
 }
 
-bool wxJoystick::HasV(void) const
+bool wxJoystick::HasV() const
 {
-  return GetNumberAxes() >= 6;
+    // TODO
+    return FALSE;
 }
 
-bool wxJoystick::HasPOV(void) const
+bool wxJoystick::HasPOV() const
 {
-  return FALSE;
+    // TODO
+    return FALSE;
 }
 
-bool wxJoystick::HasPOV4Dir(void) const
+bool wxJoystick::HasPOV4Dir() const
 {
-  return FALSE;
+    // TODO
+    return FALSE;
 }
 
-bool wxJoystick::HasPOVCTS(void) const
+bool wxJoystick::HasPOVCTS() const
 {
-  return FALSE;
+    // TODO
+    return FALSE;
 }
 
-////////////////////////////////////////////////////////////////////////////
 // Operations
 ////////////////////////////////////////////////////////////////////////////
 
-bool wxJoystick::SetCapture(wxWindow* win, int pollingFreq = 0)
+bool wxJoystick::SetCapture(wxWindow* win, int pollingFreq)
 {
-  m_catchwin = win;
-  m_polling = pollingFreq;
-  return TRUE;
+    // TODO
+    return FALSE;
 }
 
-bool wxJoystick::ReleaseCapture(void)
+bool wxJoystick::ReleaseCapture()
 {
-  m_catchwin = NULL;
-  m_polling = 0;
-  return TRUE;
+    // TODO
+    return FALSE;
 }
 
index c1893d546ffea1600f71cf056e422d3c552f4a22..a54523ab3d4f48ce33b4ad03b3ab2695f6ac9603 100644 (file)
-/////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
 // Name:        listbox.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
-// Licence:    wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
+// Purpose:     wxListBox
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
 #pragma implementation "listbox.h"
 #endif
 
-#include "wx/dynarray.h"
 #include "wx/listbox.h"
-#include "wx/utils.h"
 
-//-----------------------------------------------------------------------------
-// wxListBox
-//-----------------------------------------------------------------------------
+#include "wx/dynarray.h"
+#include "wx/log.h"
 
+#if !USE_SHARED_LIBRARY
+  IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControl)
+#endif
 
-IMPLEMENT_DYNAMIC_CLASS(wxListBox,wxControl)
+// ============================================================================
+// list box control implementation
+// ============================================================================
 
-wxListBox::wxListBox(void)
+// Listbox item
+wxListBox::wxListBox()
 {
-};
+  m_noItems = 0;
+  m_selected = 0;
+}
 
-wxListBox::wxListBox( wxWindow *parent, wxWindowID id, 
-      const wxPoint &pos, const wxSize &size, 
-      int n, const wxString choices[],
-      long style, const wxString &name )
+bool wxListBox::Create(wxWindow *parent, wxWindowID id,
+                       const wxPoint& pos,
+                       const wxSize& size,
+                       int n, const wxString choices[],
+                       long style,
+                       const wxValidator& validator,
+                       const wxString& name)
 {
-  Create( parent, id, pos, size, n, choices, style, name );
-};
+  m_noItems = n;
+  m_selected = 0;
+
+  SetName(name);
+  SetValidator(validator);
+
+  if (parent) parent->AddChild(this);
+
+  wxSystemSettings settings;
+  SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW));
 
-bool wxListBox::Create( wxWindow *parent, wxWindowID id, 
-      const wxPoint &pos, const wxSize &size, 
-      int n, const wxString choices[],
-      long style, const wxString &name )
+  m_windowId = ( id == -1 ) ? (int)NewControlId() : id;
+
+  // TODO create listbox
+
+  return FALSE;
+}
+
+wxListBox::~wxListBox()
 {
-  return TRUE;
-};
+}
 
-void wxListBox::Append( const wxString &item )
+void wxListBox::SetupColours()
 {
-  Append( item, (char*)NULL );
-};
+  SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW));
+}
 
-void wxListBox::Append( const wxString &WXUNUSED(item), char *WXUNUSED(clientData) )
+void wxListBox::SetFirstItem(int N)
 {
-};
+    // TODO
+}
 
-void wxListBox::Clear(void)
+void wxListBox::SetFirstItem(const wxString& s)
 {
-};
+    // TODO
+}
 
-void wxListBox::Delete( int WXUNUSED(n) )
+void wxListBox::Delete(int N)
 {
-};
+  m_noItems --;
+    // TODO
+}
 
-void wxListBox::Deselect( int WXUNUSED(n) )
+void wxListBox::Append(const wxString& item)
 {
-};
+  m_noItems ++;
+
+  // TODO
+}
 
-int wxListBox::FindString( const wxString &WXUNUSED(item) ) const
+void wxListBox::Append(const wxString& item, char *Client_data)
 {
-  return -1;
-};
+  m_noItems ++;
+
+  // TODO
+}
 
-char *wxListBox::GetClientData( int WXUNUSED(n) ) const
+void wxListBox::Set(int n, const wxString *choices, char** clientData)
 {
-  return (char*)NULL;
-};
+  m_noItems = n;
 
-int wxListBox::GetSelection(void) const
+  // TODO
+}
+
+int wxListBox::FindString(const wxString& s) const
 {
-  return -1;
-};
+    // TODO
+    return -1;
+}
 
-int wxListBox::GetSelections( wxArrayInt& WXUNUSED(aSelections) ) const
+void wxListBox::Clear()
 {
-  return 0;
-};
+  m_noItems = 0;
+  // TODO
+}
 
-wxString wxListBox::GetString( int WXUNUSED(n) ) const
+void wxListBox::SetSelection(int N, bool select)
 {
-  return "";
-};
+    // TODO
+}
 
-wxString wxListBox::GetStringSelection(void) const
+bool wxListBox::Selected(int N) const
 {
-  return "";
-};
+    // TODO
+    return FALSE;
+}
 
-int wxListBox::Number(void)
+void wxListBox::Deselect(int N)
 {
-  return 0;
-};
+    // TODO
+}
 
-bool wxListBox::Selected( int WXUNUSED(n) )
+char *wxListBox::GetClientData(int N) const
 {
-  return FALSE;
-};
+    // TODO
+    return (char *)NULL;
+}
+
+void wxListBox::SetClientData(int N, char *Client_data)
+{
+    // TODO
+}
+
+// Return number of selections and an array of selected integers
+int wxListBox::GetSelections(wxArrayInt& aSelections) const
+{
+    aSelections.Empty();
 
-void wxListBox::Set( int WXUNUSED(n), const wxString *WXUNUSED(choices) )
+/* TODO
+    if ((m_windowStyle & wxLB_MULTIPLE) || (m_windowStyle & wxLB_EXTENDED))
+    {
+        int no_sel = ??
+        for ( int n = 0; n < no_sel; n++ )
+            aSelections.Add(??);
+
+        return no_sel;
+    }
+    else  // single-selection listbox
+    {
+        aSelections.Add(??);
+
+        return 1;
+    }
+*/
+    return 0;
+}
+
+// Get single selection, for single choice list items
+int wxListBox::GetSelection() const
 {
-};
+    // TODO
+    return -1;
+}
 
-void wxListBox::SetClientData( int WXUNUSED(n), char *WXUNUSED(clientData) )
+// Find string for position
+wxString wxListBox::GetString(int N) const
 {
-};
+    // TODO
+    return wxString("");
+}
 
-void wxListBox::SetFirstItem( int WXUNUSED(n) )
+void wxListBox::SetSize(int x, int y, int width, int height, int sizeFlags)
 {
-};
+    // TODO
+}
 
-void wxListBox::SetFirstItem( const wxString &WXUNUSED(item) )
+void wxListBox::InsertItems(int nItems, const wxString items[], int pos)
 {
-};
+    m_noItems += nItems;
 
-void wxListBox::SetSelection( int WXUNUSED(n), bool WXUNUSED(select) )
+    // TODO
+}
+
+void wxListBox::SetString(int N, const wxString& s)
 {
-};
+    // TODO
+}
 
-void wxListBox::SetString( int WXUNUSED(n), const wxString &WXUNUSED(string) )
+int wxListBox::Number () const
 {
-};
+  return m_noItems;
+}
 
-void wxListBox::SetStringSelection( const wxString &WXUNUSED(string), bool WXUNUSED(select) )
+// For single selection items only
+wxString wxListBox::GetStringSelection () const
 {
-};
+  int sel = GetSelection ();
+  if (sel > -1)
+    return this->GetString (sel);
+  else
+    return wxString("");
+}
 
+bool wxListBox::SetStringSelection (const wxString& s, bool flag)
+{
+  int sel = FindString (s);
+  if (sel > -1)
+    {
+      SetSelection (sel, flag);
+      return TRUE;
+    }
+  else
+    return FALSE;
+}
 
+void wxListBox::Command (wxCommandEvent & event)
+{
+  if (event.m_extraLong)
+    SetSelection (event.m_commandInt);
+  else
+    {
+      Deselect (event.m_commandInt);
+      return;
+    }
+  ProcessCommand (event);
+}
 
index f5d5573bab7a03f9349298dd64ced1f514c0d8c7..bcd7785c0dbcdce0b0dbdcca2f8ec97e59d0b1aa 100644 (file)
@@ -1,10 +1,11 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        mdi.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     MDI classes
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #endif
 
 #include "wx/mdi.h"
-#include "wx/dialog.h"
-#include "wx/menu.h"
 
-//-----------------------------------------------------------------------------
+extern wxList wxModelessWindows;
 
-extern wxList wxPendingDelete;
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxMDIParentFrame, wxFrame)
+IMPLEMENT_DYNAMIC_CLASS(wxMDIChildFrame, wxFrame)
+IMPLEMENT_DYNAMIC_CLASS(wxMDIClientWindow, wxWindow)
 
-//-----------------------------------------------------------------------------
-// wxMDIParentFrame
-//-----------------------------------------------------------------------------
+BEGIN_EVENT_TABLE(wxMDIParentFrame, wxFrame)
+  EVT_SIZE(wxMDIParentFrame::OnSize)
+  EVT_ACTIVATE(wxMDIParentFrame::OnActivate)
+  EVT_SYS_COLOUR_CHANGED(wxMDIParentFrame::OnSysColourChanged)
+END_EVENT_TABLE()
 
-//-----------------------------------------------------------------------------
+BEGIN_EVENT_TABLE(wxMDIClientWindow, wxWindow)
+  EVT_SCROLL(wxMDIClientWindow::OnScroll)
+END_EVENT_TABLE()
 
-IMPLEMENT_DYNAMIC_CLASS(wxMDIParentFrame,wxFrame)
+#endif
 
-BEGIN_EVENT_TABLE(wxMDIParentFrame, wxFrame)
-END_EVENT_TABLE()
+// Parent frame
 
-wxMDIParentFrame::wxMDIParentFrame(void)
+wxMDIParentFrame::wxMDIParentFrame()
 {
-  m_clientWindow = NULL;
-  m_currentChild = NULL;
-  m_parentFrameActive = TRUE;
-};
+}
 
-wxMDIParentFrame::wxMDIParentFrame( wxWindow *parent,
-      wxWindowID id, const wxString& title,
-      const wxPoint& pos, const wxSize& size,
-      long style, const wxString& name )
+bool wxMDIParentFrame::Create(wxWindow *parent,
+           wxWindowID id,
+           const wxString& title,
+           const wxPoint& pos,
+           const wxSize& size,
+           long style,
+           const wxString& name)
 {
-  m_clientWindow = NULL;
-  m_currentChild = NULL;
-  m_parentFrameActive = TRUE;
-  Create( parent, id, title, pos, size, style, name );
-};
+    if (!parent)
+        wxTopLevelWindows.Append(this);
+
+    SetName(name);
+    m_windowStyle = style;
+
+    if (parent) parent->AddChild(this);
 
-wxMDIParentFrame::~wxMDIParentFrame(void)
+    if ( id > -1 )
+        m_windowId = id;
+    else
+        m_windowId = (int)NewControlId();
+
+    // TODO: create MDI parent frame
+
+    wxModelessWindows.Append(this);
+
+    return TRUE;
+}
+
+wxMDIParentFrame::~wxMDIParentFrame()
 {
-};
+}
 
-bool wxMDIParentFrame::Create( wxWindow *parent,
-      wxWindowID id, const wxString& title,
-      const wxPoint& pos, const wxSize& size,
-      long style, const wxString& name )
+// Get size *available for subwindows* i.e. excluding menu bar.
+void wxMDIParentFrame::GetClientSize(int *x, int *y) const
 {
-  wxFrame::Create( parent, id, title, pos, size, style, name );
-  
-  OnCreateClient();
-  
-  return TRUE;
-};
+    // TODO
+}
 
-void wxMDIParentFrame::GetClientSize(int *width, int *height ) const
+void wxMDIParentFrame::SetMenuBar(wxMenuBar *menu_bar)
 {
-  wxFrame::GetClientSize( width, height );
-};
+    // TODO
+    if (!menu_bar)
+    {
+        m_frameMenuBar = NULL;
+        return;
+    }
+  
+    if (menu_bar->m_menuBarFrame)
+           return;
 
-wxMDIChildFrame *wxMDIParentFrame::GetActiveChild(void) const
+    m_frameMenuBar = menu_bar;
+}
+
+void wxMDIParentFrame::OnSize(wxSizeEvent& event)
 {
-  return m_currentChild;
-};
+#if USE_CONSTRAINTS
+    if (GetAutoLayout())
+      Layout();
+#endif
+    int x = 0;
+    int y = 0;
+    int width, height;
+    GetClientSize(&width, &height);
+
+    if ( GetClientWindow() )
+        GetClientWindow()->SetSize(x, y, width, height);
+}
 
-wxMDIClientWindow *wxMDIParentFrame::GetClientWindow(void) const
+void wxMDIParentFrame::OnActivate(wxActivateEvent& event)
 {
-  return m_clientWindow;
-};
+       // Do nothing
+}
 
-wxMDIClientWindow *wxMDIParentFrame::OnCreateClient(void)
+// Returns the active MDI child window
+wxMDIChildFrame *wxMDIParentFrame::GetActiveChild() const
 {
-  m_clientWindow = new wxMDIClientWindow( this );
-  return m_clientWindow;
-};
+    // TODO
+    return NULL;
+}
 
-void wxMDIParentFrame::ActivateNext(void)
+// Create the client window class (don't Create the window,
+// just return a new class)
+wxMDIClientWindow *wxMDIParentFrame::OnCreateClient()
 {
-};
+       return new wxMDIClientWindow ;
+}
 
-void wxMDIParentFrame::ActivatePrevious(void)
+// Responds to colour changes, and passes event on to children.
+void wxMDIParentFrame::OnSysColourChanged(wxSysColourChangedEvent& event)
 {
-};
+    // TODO
 
-void wxMDIParentFrame::OnActivate( wxActivateEvent& WXUNUSED(event) )
+    // Propagate the event to the non-top-level children
+    wxFrame::OnSysColourChanged(event);
+}
+
+// MDI operations
+void wxMDIParentFrame::Cascade()
 {
-};
+    // TODO
+}
 
-void wxMDIParentFrame::OnSysColourChanged( wxSysColourChangedEvent& WXUNUSED(event) )
+void wxMDIParentFrame::Tile()
 {
-};
+    // TODO
+}
 
-//-----------------------------------------------------------------------------
-// wxMDIChildFrame
-//-----------------------------------------------------------------------------
+void wxMDIParentFrame::ArrangeIcons()
+{
+    // TODO
+}
 
-IMPLEMENT_DYNAMIC_CLASS(wxMDIChildFrame,wxFrame)
-  
-BEGIN_EVENT_TABLE(wxMDIChildFrame, wxFrame)
-  EVT_ACTIVATE(wxMDIChildFrame::OnActivate)
-END_EVENT_TABLE()
+void wxMDIParentFrame::ActivateNext()
+{
+    // TODO
+}
 
-wxMDIChildFrame::wxMDIChildFrame(void)
+void wxMDIParentFrame::ActivatePrevious()
 {
-};
+    // TODO
+}
+
+// Child frame
 
-wxMDIChildFrame::wxMDIChildFrame( wxMDIParentFrame *parent,
-      wxWindowID id, const wxString& title,
-      const wxPoint& WXUNUSED(pos), const wxSize& size,
-      long style, const wxString& name )
+wxMDIChildFrame::wxMDIChildFrame()
 {
-  Create( parent, id, title, wxDefaultPosition, size, style, name );
-};
+}
 
-wxMDIChildFrame::~wxMDIChildFrame(void)
+bool wxMDIChildFrame::Create(wxMDIParentFrame *parent,
+           wxWindowID id,
+           const wxString& title,
+           const wxPoint& pos,
+           const wxSize& size,
+           long style,
+           const wxString& name)
 {
-};
+    SetName(name);
+
+    if ( id > -1 )
+        m_windowId = id;
+    else
+        m_windowId = (int)NewControlId();
+
+    if (parent) parent->AddChild(this);
+
+    // TODO: create child frame
 
-bool wxMDIChildFrame::Create( wxMDIParentFrame *parent,
-      wxWindowID id, const wxString& title,
-      const wxPoint& WXUNUSED(pos), const wxSize& size,
-      long style, const wxString& name )
+    wxModelessWindows.Append(this);
+    return FALSE;
+}
+
+wxMDIChildFrame::~wxMDIChildFrame()
 {
-  m_title = title;
-  return wxWindow::Create( parent->GetClientWindow(), id, wxDefaultPosition, size, style, name );
-};
+}
 
-void wxMDIChildFrame::GetClientSize( int *width, int *height ) const
+// Set the client size (i.e. leave the calculation of borders etc.
+// to wxWindows)
+void wxMDIChildFrame::SetClientSize(int width, int height)
 {
-  wxWindow::GetClientSize( width, height );
+    // TODO
 }
 
-void wxMDIChildFrame::AddChild( wxWindow *child )
+void wxMDIChildFrame::GetPosition(int *x, int *y) const
 {
-  wxWindow::AddChild( child );
+    // TODO
 }
-  
-static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
-{
-  menu->SetInvokingWindow( win );
-  wxNode *node = menu->m_items.First();
-  while (node)
-  {
-    wxMenuItem *menuitem = (wxMenuItem*)node->Data();
-    if (menuitem->IsSubMenu())
-      SetInvokingWindow( menuitem->GetSubMenu(), win );
-    node = node->Next();
-  };
-};
-
-void wxMDIChildFrame::SetMenuBar( wxMenuBar *menu_bar )
-{
-  m_menuBar = menu_bar;
-  
-  if (m_menuBar)
-  {
-    wxMDIParentFrame *mdi_frame = (wxMDIParentFrame*)m_parent->m_parent;
-    
-    if (m_menuBar->m_parent != this)
+
+void wxMDIChildFrame::SetMenuBar(wxMenuBar *menu_bar)
+{
+    // TODO
+    if (!menu_bar)
     {
-      wxNode *node = m_menuBar->m_menus.First();
-      while (node)
-      {
-        wxMenu *menu = (wxMenu*)node->Data();
-        SetInvokingWindow( menu, this );
-        node = node->Next();
-      };
-      
-      m_menuBar->m_parent = mdi_frame;
+        m_frameMenuBar = NULL;
+        return;
     }
-    mdi_frame->SetMDIMenuBar( m_menuBar );
-
-  }
-};
+  
+    if (menu_bar->m_menuBarFrame)
+           return;
+    m_frameMenuBar = menu_bar;
+}
 
-wxMenuBar *wxMDIChildFrame::GetMenuBar()
+// MDI operations
+void wxMDIChildFrame::Maximize()
 {
-  return m_menuBar;
-};
+    // TODO
+}
 
-void wxMDIChildFrame::Activate(void)
+void wxMDIChildFrame::Restore()
 {
-};
+    // TODO
+}
 
-void wxMDIChildFrame::OnActivate( wxActivateEvent &WXUNUSED(event) )
+void wxMDIChildFrame::Activate()
 {
-};
-
-//-----------------------------------------------------------------------------
-// wxMDIClientWindow
-//-----------------------------------------------------------------------------
+    // TODO
+}
 
-IMPLEMENT_DYNAMIC_CLASS(wxMDIClientWindow,wxWindow)
+// Client window
 
-wxMDIClientWindow::wxMDIClientWindow(void)
+wxMDIClientWindow::wxMDIClientWindow()
 {
-};
+}
 
-wxMDIClientWindow::wxMDIClientWindow( wxMDIParentFrame *parent, long style )
+wxMDIClientWindow::~wxMDIClientWindow()
 {
-  CreateClient( parent, style );
-};
+}
 
-wxMDIClientWindow::~wxMDIClientWindow(void)
+bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style)
 {
-};
+    // TODO create client window
+    m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE);
 
-bool wxMDIClientWindow::CreateClient( wxMDIParentFrame *WXUNUSED(parent), long WXUNUSED(style) )
-{
-  return TRUE;
-};
+    return FALSE;
+}
 
-void wxMDIClientWindow::AddChild( wxWindow *WXUNUSED(child) )
+// Explicitly call default scroll behaviour
+void wxMDIClientWindow::OnScroll(wxScrollEvent& event)
 {
-};
-
+    Default(); // Default processing
+}
 
index 739e635d4765b2a13c7aab849983072cc08d07f6..217e6c8b888b75e3f6ba539032c76e2ff9deaebd 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        menu.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:          $Id$
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
-// Licence:     wxWindows licence
+// Purpose:     wxMenu, wxMenuBar, wxMenuItem
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
+// Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 
+// ============================================================================
+// headers & declarations
+// ============================================================================
+
+// wxWindows headers
+// -----------------
+
 #ifdef __GNUG__
 #pragma implementation "menu.h"
+#pragma implementation "menuitem.h"
 #endif
 
 #include "wx/menu.h"
+#include "wx/menuitem.h"
 #include "wx/log.h"
 
-//-----------------------------------------------------------------------------
-// wxMenuBar
-//-----------------------------------------------------------------------------
+// other standard headers
+// ----------------------
+#include <string.h>
+
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxMenu, wxEvtHandler)
+IMPLEMENT_DYNAMIC_CLASS(wxMenuBar, wxEvtHandler)
+#endif
 
-IMPLEMENT_DYNAMIC_CLASS(wxMenuBar,wxWindow)
+// ============================================================================
+// implementation
+// ============================================================================
 
-wxMenuBar::wxMenuBar()
+// Menus
+
+// Construct a menu with optional title (then use append)
+wxMenu::wxMenu(const wxString& title, const wxFunction func)
 {
-};
+    m_title = title;
+    m_parent = NULL;
+    m_eventHandler = this;
+    m_noItems = 0;
+    m_menuBar = NULL;
+    if (m_title != "")
+    {
+        Append(-2, m_title) ;
+        AppendSeparator() ;
+    }
+
+    Callback(func);
+
+    // TODO create menu
+}
 
-void wxMenuBar::Append( wxMenu *menu, const wxString &title )
-{
-  m_menus.Append( menu );
-  menu->m_title = title;    // ??????
+// The wxWindow destructor will take care of deleting the submenus.
+wxMenu::~wxMenu()
+{
+    // TODO destroy menu and children
+
+    wxNode *node = m_menuItems.First();
+    while (node)
+    {
+        wxMenuItem *item = (wxMenuItem *)node->Data();
+
+        // Delete child menus.
+        // Beware: they must not be appended to children list!!!
+        // (because order of delete is significant)
+        if (item->GetSubMenu())
+            item->DeleteSubMenu();
+
+        wxNode *next = node->Next();
+        delete item;
+        delete node;
+        node = next;
+    }
+}
 
-  int pos;
-  do {
-    pos = menu->m_title.First( '&' );
-    if (pos != -1) menu->m_title.Remove( pos, 1 );
-  } while (pos != -1);
+void wxMenu::Break()
+{
+    // TODO
+}
 
-};
+// function appends a new item or submenu to the menu
+void wxMenu::Append(wxMenuItem *pItem)
+{
+    // TODO
 
-static int FindMenuItemRecursive( const wxMenu *menu, const wxString &menuString, const wxString &itemString )
+    wxCHECK_RET( pItem != NULL, "can't append NULL item to the menu" );
+
+    m_menuItems.Append(pItem);
+
+    m_noItems++;
+}
+
+void wxMenu::AppendSeparator()
 {
-  if (menu->m_title == menuString)
-  {
-    int res = menu->FindItem( itemString );
-    if (res != -1) return res;
-  };
-  wxNode *node = menu->m_items.First();
-  while (node)
-  {
-    wxMenuItem *item = (wxMenuItem*)node->Data();
-    if (item->IsSubMenu())
-      return FindMenuItemRecursive(item->GetSubMenu(), menuString, itemString);
-    node = node->Next();
-  };
-  return -1;
-};
+    // TODO
+    Append(new wxMenuItem(this, ID_SEPARATOR));
+}
 
-int wxMenuBar::FindMenuItem( const wxString &menuString, const wxString &itemString ) const
+// Pullright item
+void wxMenu::Append(int Id, const wxString& label, wxMenu *SubMenu, 
+                    const wxString& helpString)
 {
-  wxNode *node = m_menus.First();
-  while (node)
-  {
-    wxMenu *menu = (wxMenu*)node->Data();
-    int res = FindMenuItemRecursive( menu, menuString, itemString);
-    if (res != -1) return res;
-    node = node->Next();
-  };
-  return -1;
-};
+    Append(new wxMenuItem(this, Id, label, helpString, FALSE, SubMenu));
+}
 
-// Find a wxMenuItem using its id. Recurses down into sub-menus
-static wxMenuItem* FindMenuItemByIdRecursive(const wxMenu* menu, int id)
+// Ordinary menu item
+void wxMenu::Append(int Id, const wxString& label, 
+                    const wxString& helpString, bool checkable)
 {
-  wxMenuItem* result = menu->FindItem(id);
+  // 'checkable' parameter is useless for Windows.
+    Append(new wxMenuItem(this, Id, label, helpString, checkable));
+}
+
+void wxMenu::Delete(int id)
+{
+    wxNode *node;
+    wxMenuItem *item;
+    int pos;
+
+    for (pos = 0, node = m_menuItems.First(); node; node = node->Next(), pos++) {
+        item = (wxMenuItem *)node->Data();
+        if (item->GetId() == id)
+               break;
+    }
 
-  wxNode *node = menu->m_items.First();
-  while ( node && result == NULL ) {
-    wxMenuItem *item = (wxMenuItem*)node->Data();
-    if ( item->IsSubMenu() )
-      result = FindMenuItemByIdRecursive( item->GetSubMenu(), id );
-    node = node->Next();
-  };
+    if (!node)
+       return;
 
-  return result;
-};
+    m_menuItems.DeleteNode(node);
+    delete item;
 
-wxMenuItem* wxMenuBar::FindMenuItemById( int id ) const
+    // TODO
+}
+
+void wxMenu::Enable(int Id, bool Flag)
 {
-  wxMenuItem* result = 0;
-  wxNode *node = m_menus.First();
-  while (node && result == 0)
-  {
-    wxMenu *menu = (wxMenu*)node->Data();
-    result = FindMenuItemByIdRecursive( menu, id );
-    node = node->Next();
-  }
-  return result;
+    wxMenuItem *item = FindItemForId(Id);
+    wxCHECK_RET( item != NULL, "can't enable non-existing menu item" );
+
+    item->Enable(Flag);
 }
 
-void wxMenuBar::Check( int id, bool check )
+bool wxMenu::Enabled(int Id) const
 {
-  wxMenuItem* item = FindMenuItemById( id );
-  if (item) item->Check(check);
-};
+    wxMenuItem *item = FindItemForId(Id);
+    wxCHECK( item != NULL, FALSE );
+
+    return item->IsEnabled();
+}
 
-bool wxMenuBar::Checked( int id ) const
+void wxMenu::Check(int Id, bool Flag)
 {
-  wxMenuItem* item = FindMenuItemById( id );
-  if (item) return item->IsChecked();
-  return FALSE;
-};
+    wxMenuItem *item = FindItemForId(Id);
+    wxCHECK_RET( item != NULL, "can't get status of non-existing menu item" );
 
-void wxMenuBar::Enable( int id, bool enable )
+    item->Check(Flag);
+}
+
+bool wxMenu::Checked(int Id) const
 {
-  wxMenuItem* item = FindMenuItemById( id );
-  if (item) item->Enable(enable);
-};
+    wxMenuItem *item = FindItemForId(Id);
+    wxCHECK( item != NULL, FALSE );
+
+    return item->IsChecked();
+}
 
-bool wxMenuBar::Enabled( int id ) const
+void wxMenu::SetTitle(const wxString& label)
 {
-  wxMenuItem* item = FindMenuItemById( id );
-  if (item) return item->IsEnabled();
-  return FALSE;
-};
+    m_title = label ;
+    // TODO
+}
 
-//-----------------------------------------------------------------------------
-// wxMenu
-//-----------------------------------------------------------------------------
+const wxString& wxMenu::GetTitle() const
+{
+    return m_title;
+}
 
+void wxMenu::SetLabel(int id, const wxString& label)
+{
+    wxMenuItem *item = FindItemForId(id) ;
+    if (item==NULL)
+        return;
+
+    if (item->GetSubMenu()==NULL)
+    {
+        // TODO
+    }
+    else
+    {
+        // TODO
+    }
+    item->SetName(label);
+}
 
-IMPLEMENT_DYNAMIC_CLASS(wxMenuItem,wxObject)
+wxString wxMenu::GetLabel(int Id) const
+{
+    // TODO
+    return wxString("") ;
+}
 
-wxMenuItem::wxMenuItem()
+// Finds the item id matching the given string, -1 if not found.
+int wxMenu::FindItem (const wxString& itemString) const
 {
-  m_id = ID_SEPARATOR;
-  m_isCheckMenu = FALSE;
-  m_isChecked = FALSE;
-  m_isEnabled = TRUE;
-  m_subMenu = NULL;
-};
+    char buf1[200];
+    char buf2[200];
+    wxStripMenuCodes ((char *)(const char *)itemString, buf1);
+
+    for (wxNode * node = m_menuItems.First (); node; node = node->Next ())
+    {
+      wxMenuItem *item = (wxMenuItem *) node->Data ();
+      if (item->GetSubMenu())
+      {
+        int ans = item->GetSubMenu()->FindItem(itemString);
+        if (ans > -1)
+          return ans;
+      }
+      if ( !item->IsSeparator() )
+      {
+        wxStripMenuCodes((char *)item->GetName().c_str(), buf2);
+        if (strcmp(buf1, buf2) == 0)
+          return item->GetId();
+      }
+    }
+
+    return -1;
+}
 
-void wxMenuItem::SetText(const wxString& str)
+wxMenuItem *wxMenu::FindItemForId(int itemId, wxMenu ** itemMenu) const
 {
-  for ( const char *pc = str; *pc != '\0'; pc++ ) {
-    if ( *pc == '&' )
-      pc++; // skip it
+    if (itemMenu)
+        *itemMenu = NULL;
+    for (wxNode * node = m_menuItems.First (); node; node = node->Next ())
+    {
+        wxMenuItem *item = (wxMenuItem *) node->Data ();
+
+        if (item->GetId() == itemId)
+        {
+            if (itemMenu)
+                *itemMenu = (wxMenu *) this;
+            return item;
+        }
+
+        if (item->GetSubMenu())
+        {
+            wxMenuItem *ans = item->GetSubMenu()->FindItemForId (itemId, itemMenu);
+            if (ans)
+                return ans;
+        }
+    }
+
+    if (itemMenu)
+        *itemMenu = NULL;
+    return NULL;
+}
 
-    m_text << *pc;
-  }
+void wxMenu::SetHelpString(int itemId, const wxString& helpString)
+{
+    wxMenuItem *item = FindItemForId (itemId);
+    if (item)
+        item->SetHelp(helpString);
 }
 
-void wxMenuItem::Check( bool check )
+wxString wxMenu::GetHelpString (int itemId) const
 {
-  wxCHECK_RET( IsCheckable(), "can't check uncheckable item!" )
+    wxMenuItem *item = FindItemForId (itemId);
+    wxString str("");
+    return (item == NULL) ? str : item->GetHelp();
+}
 
-  m_isChecked = check;
+void wxMenu::ProcessCommand(wxCommandEvent & event)
+{
+    bool processed = FALSE;
+
+    // Try a callback
+    if (m_callback)
+    {
+            (void) (*(m_callback)) (*this, event);
+            processed = TRUE;
+    }
+
+    // Try the menu's event handler
+    if ( !processed && GetEventHandler())
+    {
+            processed = GetEventHandler()->ProcessEvent(event);
+    }
+
+    // Try the window the menu was popped up from (and up
+    // through the hierarchy)
+    if ( !processed && GetInvokingWindow())
+        processed = GetInvokingWindow()->ProcessEvent(event);
+}
+
+bool wxWindow::PopupMenu(wxMenu *menu, int x, int y)
+{
+    // TODO
+    return FALSE;
 }
 
-bool wxMenuItem::IsChecked() const
+// Menu Bar
+wxMenuBar::wxMenuBar()
 {
-  wxCHECK( IsCheckable(), FALSE ); // can't get state of uncheckable item!
+    m_eventHandler = this;
+    m_menuCount = 0;
+    m_menus = NULL;
+    m_titles = NULL;
+    m_menuBarFrame = NULL;
 
-  return FALSE;
+    // TODO
 }
 
-IMPLEMENT_DYNAMIC_CLASS(wxMenu,wxEvtHandler)
+wxMenuBar::wxMenuBar(int n, wxMenu *Mmnus[], const wxString titles[])
+{
+    m_eventHandler = this;
+    m_menuCount = n;
+    m_menus = menus;
+    m_titles = new wxString[n];
+    int i;
+    for ( i = 0; i < n; i++ )
+       m_titles[i] = titles[i];
+    m_menuBarFrame = NULL;
+
+    // TODO
+}
 
-wxMenu::wxMenu( const wxString &title )
+wxMenuBar::~wxMenuBar()
 {
-  m_title = title;
-  m_items.DeleteContents( TRUE );
-  m_invokingWindow = NULL;
-};
+    int i;
+    for (i = 0; i < m_menuCount; i++)
+    {
+        delete m_menus[i];
+    }
+    delete[] m_menus;
+    delete[] m_titles;
+
+    // TODO
+}
 
-void wxMenu::AppendSeparator()
+// Must only be used AFTER menu has been attached to frame,
+// otherwise use individual menus to enable/disable items
+void wxMenuBar::Enable(int id, bool flag)
+{
+    wxMenu *itemMenu = NULL;
+    wxMenuItem *item = FindItemForId(id, &itemMenu) ;
+    if (!item)
+        return;
+
+    // TODO
+}
+
+void wxMenuBar::EnableTop(int pos, bool flag)
+{
+    // TODO
+}
+
+// Must only be used AFTER menu has been attached to frame,
+// otherwise use individual menus
+void wxMenuBar::Check(int id, bool flag)
 {
-  wxMenuItem *mitem = new wxMenuItem();
-  mitem->SetId(ID_SEPARATOR);
+    wxMenu *itemMenu = NULL;
+    wxMenuItem *item = FindItemForId(id, &itemMenu) ;
+    if (!item)
+        return;
 
-  m_items.Append( mitem );
-};
+    if (!item->IsCheckable())
+        return ;
 
-void wxMenu::Append( int id, const wxString &item, const wxString &helpStr, bool checkable )
+    // TODO
+}
+
+bool wxMenuBar::Checked(int id) const
 {
-  wxMenuItem *mitem = new wxMenuItem();
-  mitem->SetId(id);
-  mitem->SetText(item);
-  mitem->SetHelpString(helpStr);
-  mitem->SetCheckable(checkable);
-  
-  m_items.Append( mitem );
-};
+    wxMenu *itemMenu = NULL;
+    wxMenuItem *item = FindItemForId(id, &itemMenu) ;
+    if (!item)
+        return FALSE;
+
+    // TODO
+    return FALSE;
+}
 
-void wxMenu::Append( int id, const wxString &text, wxMenu *subMenu, const wxString &helpStr )
+bool wxMenuBar::Enabled(int id) const
 {
-  wxMenuItem *mitem = new wxMenuItem();
-  mitem->SetId(id);
-  mitem->SetText(text);
-  mitem->SetHelpString(helpStr);
-  mitem->SetSubMenu(subMenu);
+    wxMenu *itemMenu = NULL;
+    wxMenuItem *item = FindItemForId(id, &itemMenu) ;
+    if (!item)
+        return FALSE;
+
+    // TODO
+    return FALSE ;
+}
 
-  m_items.Append( mitem );
-};
 
-int wxMenu::FindItem( const wxString itemString ) const
+void wxMenuBar::SetLabel(int id, const wxString& label)
 {
-  wxString s( itemString );
+    wxMenu *itemMenu = NULL;
+    wxMenuItem *item = FindItemForId(id, &itemMenu) ;
+
+    if (!item)
+        return;
 
-  int pos;
-  do {
-    pos = s.First( '&' );
-    if (pos != -1) s.Remove( pos, 1 );
-  } while (pos != -1);
+    // TODO
+}
 
-  wxNode *node = m_items.First();
-  while (node)
-  {
-    wxMenuItem *item = (wxMenuItem*)node->Data();
-    if (item->GetText() == s)
-      return item->GetId();
-    node = node->Next();
-  };
+wxString wxMenuBar::GetLabel(int id) const
+{
+    wxMenu *itemMenu = NULL;
+    wxMenuItem *item = FindItemForId(id, &itemMenu) ;
 
-  return -1;
-};
+    if (!item)
+        return wxString("");
 
-void wxMenu::Enable( int id, bool enable )
+    // TODO
+    return wxString("") ;
+}
+
+void wxMenuBar::SetLabelTop(int pos, const wxString& label)
 {
-  wxMenuItem *item = FindItem(id);
-  if ( item )
-    item->Enable(enable);
-};
+    // TODO
+}
 
-bool wxMenu::IsEnabled( int id ) const
+wxString wxMenuBar::GetLabelTop(int pos) const
 {
-  wxMenuItem *item = FindItem(id);
-  if ( item )
-    return item->IsEnabled();
-  else
-    return FALSE;
-};
+    // TODO
+    return wxString("");
+}
 
-void wxMenu::Check( int id, bool enable )
+bool wxMenuBar::OnDelete(wxMenu *a_menu, int pos)
 {
-  wxMenuItem *item = FindItem(id);
-  if ( item )
-    item->Check(enable);
-};
+    // TODO
+    return FALSE;
+}
 
-bool wxMenu::IsChecked( int id ) const
+bool wxMenuBar::OnAppend(wxMenu *a_menu, const char *title)
 {
-  wxMenuItem *item = FindItem(id);
-  if ( item )
-    return item->IsChecked();
-  else
+    // TODO
     return FALSE;
-};
+}
 
-void wxMenu::SetLabel( int id, const wxString &label )
+void wxMenuBar::Append (wxMenu * menu, const wxString& title)
 {
-  wxMenuItem *item = FindItem(id);
-  if ( item )
-    item->SetText(label);
-};
+    if (!OnAppend(menu, title))
+        return;
+
+    m_menuCount ++;
+    wxMenu **new_menus = new wxMenu *[m_menuCount];
+    wxString *new_titles = new wxString[m_menuCount];
+    int i;
+
+    for (i = 0; i < m_menuCount - 1; i++)
+       {
+        new_menus[i] = m_menus[i];
+        m_menus[i] = NULL;
+        new_titles[i] = m_titles[i];
+        m_titles[i] = "";
+    }
+    if (m_menus)
+    {
+        delete[]m_menus;
+        delete[]m_titles;
+    }
+    m_menus = new_menus;
+    m_titles = new_titles;
+
+    m_menus[m_menuCount - 1] = (wxMenu *)menu;
+    m_titles[m_menuCount - 1] = title;
+
+    // TODO
+}
 
-wxMenuItem *wxMenu::FindItem(int id) const
+void wxMenuBar::Delete(wxMenu * menu, int i)
 {
-  wxNode *node = m_items.First();
-  while (node) {
-    wxMenuItem *item = (wxMenuItem*)node->Data();
-    if ( item->GetId() == id )
-      return item;
-    node = node->Next();
-  };
+    int j;
+    int ii = (int) i;
+
+    if (menu != 0)
+    {
+           for (ii = 0; ii < m_menuCount; ii++)
+        {
+            if (m_menus[ii] == menu)
+            break;
+           }
+        if (ii >= m_menuCount)
+            return;
+    } else
+    {
+        if (ii < 0 || ii >= m_menuCount)
+            return;
+        menu = m_menus[ii];
+    }
+
+    if (!OnDelete(menu, ii))
+        return;
+
+    menu->SetParent(NULL);
+
+    -- m_menuCount;
+    for (j = ii; j < m_menuCount; j++)
+    {
+        m_menus[j] = m_menus[j + 1];
+        m_titles[j] = m_titles[j + 1];
+    }
+}
 
-  wxLogDebug("wxMenu::FindItem: item %d not found.", id);
+// Find the menu menuString, item itemString, and return the item id.
+// Returns -1 if none found.
+int wxMenuBar::FindMenuItem (const wxString& menuString, const wxString& itemString) const
+{
+    char buf1[200];
+    char buf2[200];
+    wxStripMenuCodes ((char *)(const char *)menuString, buf1);
+    int i;
+    for (i = 0; i < m_menuCount; i++)
+    {
+        wxStripMenuCodes ((char *)(const char *)m_titles[i], buf2);
+        if (strcmp (buf1, buf2) == 0)
+            return m_menus[i]->FindItem (itemString);
+    }
+    return -1;
+}
 
-  return NULL;
+wxMenuItem *wxMenuBar::FindItemForId (int Id, wxMenu ** itemMenu) const
+{
+    if (itemMenu)
+        *itemMenu = NULL;
+
+    wxMenuItem *item = NULL;
+    int i;
+    for (i = 0; i < m_menuCount; i++)
+        if ((item = m_menus[i]->FindItemForId (Id, itemMenu)))
+            return item;
+    return NULL;
 }
 
-void wxMenu::SetInvokingWindow( wxWindow *win )
+void wxMenuBar::SetHelpString (int Id, const wxString& helpString)
 {
-  m_invokingWindow = win;
-};
+    int i;
+    for (i = 0; i < m_menuCount; i++)
+    {
+        if (m_menus[i]->FindItemForId (Id))
+        {
+            m_menus[i]->SetHelpString (Id, helpString);
+            return;
+        }
+    }
+}
 
-wxWindow *wxMenu::GetInvokingWindow()
+wxString wxMenuBar::GetHelpString (int Id) const
 {
-  return m_invokingWindow;
-};
+    int i;
+    for (i = 0; i < m_menuCount; i++)
+    {
+        if (m_menus[i]->FindItemForId (Id))
+            eturn wxString(m_menus[i]->GetHelpString (Id));
+    }
+    return wxString("");
+}
 
 
index bb8f9c4f3ccafcce14e10c94d00378c0996025f1..aecb879f4bf2a2c778d750c183db3d3ea9eaf2ad 100644 (file)
-/////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
 // Name:        notebook.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     implementation of wxNotebook
+// Author:      AUTHOR
+// Modified by: 
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:     wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
 
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
 #ifdef __GNUG__
 #pragma implementation "notebook.h"
 #endif
 
-#include "wx/notebook.h"
-#include "wx/panel.h"
-#include "wx/utils.h"
-#include "wx/imaglist.h"
-#include "wx/log.h"
-
-//-----------------------------------------------------------------------------
-// wxNotebookPage
-//-----------------------------------------------------------------------------
-
-class wxNotebookPage: public wxObject
-{
-public:
-  wxNotebookPage()
-  {
-    m_id = -1;
-    m_text = "";
-    m_image = -1;
-    m_page = NULL;
-    m_client = NULL;
-    m_parent = NULL;
-  };
-
-//private:
-  int                m_id;
-  wxString           m_text;
-  int                m_image;
-  wxWindow          *m_client;
-};
-
-//-----------------------------------------------------------------------------
-// wxNotebook
-//-----------------------------------------------------------------------------
-
-IMPLEMENT_DYNAMIC_CLASS(wxNotebook,wxControl)
+#include  <wx/string.h>
+#include  <wx/log.h>
+#include  <wx/imaglist.h>
+#include  <wx/notebook.h>
+
+// ----------------------------------------------------------------------------
+// macros
+// ----------------------------------------------------------------------------
+
+// check that the page index is valid
+#define IS_VALID_PAGE(nPage) (((nPage) >= 0) && ((nPage) < GetPageCount()))
+
+// ----------------------------------------------------------------------------
+// event table
+// ----------------------------------------------------------------------------
+
+#if !USE_SHARED_LIBRARIES
+BEGIN_EVENT_TABLE(wxNotebook, wxControl)
+    EVT_NOTEBOOK_PAGE_CHANGED(-1, wxNotebook::OnSelChange)
+
+    EVT_SIZE(wxNotebook::OnSize)
+    EVT_SET_FOCUS(wxNotebook::OnSetFocus)
+    EVT_NAVIGATION_KEY(wxNotebook::OnNavigationKey)
+END_EVENT_TABLE()
+
+IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxControl)
+IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxCommandEvent)
+#endif
+
+// ============================================================================
+// implementation
+// ============================================================================
 
+// ----------------------------------------------------------------------------
+// wxNotebook construction
+// ----------------------------------------------------------------------------
+
+// common part of all ctors
 void wxNotebook::Init()
 {
-  m_imageList = NULL;
-  m_pages.DeleteContents( TRUE );
+    m_pImageList = NULL;
+    m_nSelection = -1;
 }
 
+// default for dynamic class
 wxNotebook::wxNotebook()
 {
-  Init();
-};
+    Init();
+}
 
-wxNotebook::wxNotebook( wxWindow *parent, wxWindowID id,
-      const wxPoint& pos, const wxSize& size,
-      long style, const wxString& name )
+// the same arguments as for wxControl
+wxNotebook::wxNotebook(wxWindow *parent,
+                       wxWindowID id,
+                       const wxPoint& pos,
+                       const wxSize& size,
+                       long style,
+                       const wxString& name)
 {
-  Init();
-  Create( parent, id, pos, size, style, name );
-};
+    Init();
 
-wxNotebook::~wxNotebook()
-{
-  DeleteAllPages();
-};
+    Create(parent, id, pos, size, style, name);
+}
 
-bool wxNotebook::Create(wxWindow *parent, wxWindowID id,
-      const wxPoint& pos, const wxSize& size,
-      long style, const wxString& name )
+// Create() function
+bool wxNotebook::Create(wxWindow *parent,
+                        wxWindowID id,
+                        const wxPoint& pos,
+                        const wxSize& size,
+                        long style,
+                        const wxString& name)
 {
-  PreCreation( parent, id, pos, size, style, name );
+    // base init
+    SetName(name);
+    SetParent(parent);
 
-  PostCreation();
+    m_windowId = id == -1 ? NewControlId() : id;
 
-  Show( TRUE );
+    // colors and font
+    m_backgroundColour = wxColour(GetSysColor(COLOR_BTNFACE));
+    m_foregroundColour = *wxBLACK ;
 
-  return TRUE;
-};
+    // style
+    m_windowStyle = style;
+
+    if ( parent != NULL )
+        parent->AddChild(this);
+
+    // TODO
+
+    return FALSE;
+}
 
-int wxNotebook::GetSelection() const
+// dtor
+wxNotebook::~wxNotebook()
 {
-};
+}
 
+// ----------------------------------------------------------------------------
+// wxNotebook accessors
+// ----------------------------------------------------------------------------
 int wxNotebook::GetPageCount() const
 {
-};
+    return m_aPages.Count();
+}
 
 int wxNotebook::GetRowCount() const
 {
-};
+    // TODO
+    return 0;
+}
 
-wxString wxNotebook::GetPageText( int page ) const
+int wxNotebook::SetSelection(int nPage)
 {
-};
+    wxASSERT( IS_VALID_PAGE(nPage) );
 
-int wxNotebook::GetPageImage( int page ) const
-{
-};
+    ChangePage(m_nSelection, nPage);
 
-wxNotebookPage* wxNotebook::GetNotebookPage(int page) const
+    // TODO
+    return 0;
+}
+
+void wxNotebook::AdvanceSelection(bool bForward)
 {
-  return NULL;
-};
+    int nSel = GetSelection();
+    int nMax = GetPageCount() - 1;
+    if ( bForward )
+        SetSelection(nSel == nMax ? 0 : nSel + 1);
+    else
+        SetSelection(nSel == 0 ? nMax : nSel - 1);
+}
 
-int wxNotebook::SetSelection( int page )
+bool wxNotebook::SetPageText(int nPage, const wxString& strText)
 {
-};
+    wxASSERT( IS_VALID_PAGE(nPage) );
 
-void wxNotebook::AdvanceSelection(bool bForward)
+    // TODO
+    return FALSE;
+}
+
+wxString wxNotebook::GetPageText(int nPage) const
 {
+    wxASSERT( IS_VALID_PAGE(nPage) );
+
+    // TODO
+    return wxString("");
 }
 
-void wxNotebook::SetImageList( wxImageList* imageList )
+int wxNotebook::GetPageImage(int nPage) const
 {
-  m_imageList = imageList;
-};
+    wxASSERT( IS_VALID_PAGE(nPage) );
 
-bool wxNotebook::SetPageText( int page, const wxString &text )
+    // TODO
+    return 0;
+}
+
+bool wxNotebook::SetPageImage(int nPage, int nImage)
 {
-  return TRUE;
-};
+    wxASSERT( IS_VALID_PAGE(nPage) );
+
+    // TODO
+    return FALSE;
+}
+
+void wxNotebook::SetImageList(wxImageList* imageList)
+{ 
+    m_pImageList = imageList;
+    // TODO
+}
+
+// ----------------------------------------------------------------------------
+// wxNotebook operations
+// ----------------------------------------------------------------------------
 
-bool wxNotebook::SetPageImage( int page, int image )
+// remove one page from the notebook
+bool wxNotebook::DeletePage(int nPage)
 {
-  return TRUE;
-};
+    wxCHECK( IS_VALID_PAGE(nPage), FALSE );
+
+    // TODO: delete native widget page
+
+    delete m_aPages[nPage];
+    m_aPages.Remove(nPage);
+
+    return TRUE;
+}
 
-void wxNotebook::SetPageSize( const wxSize &WXUNUSED(size) )
+// remove all pages
+bool wxNotebook::DeleteAllPages()
 {
-};
+    // TODO: delete native widget pages
+
+    int nPageCount = GetPageCount();
+    int nPage;
+    for ( nPage = 0; nPage < nPageCount; nPage++ )
+        delete m_aPages[nPage];
 
-void wxNotebook::SetPadding( const wxSize &WXUNUSED(padding) )
+    m_aPages.Clear();
+
+    return TRUE;
+}
+
+// add a page to the notebook
+bool wxNotebook::AddPage(wxNotebookPage *pPage,
+                         const wxString& strText,
+                         bool bSelect,
+                         int imageId)
 {
-};
+    return InsertPage(GetPageCount(), pPage, strText, bSelect, imageId);
+}
 
-bool wxNotebook::DeleteAllPages()
+// same as AddPage() but does it at given position
+bool wxNotebook::InsertPage(int nPage,
+                            wxNotebookPage *pPage,
+                            const wxString& strText,
+                            bool bSelect,
+                            int imageId)
 {
-  return TRUE;
-};
+    wxASSERT( pPage != NULL );
+    wxCHECK( IS_VALID_PAGE(nPage) || nPage == GetPageCount(), FALSE );
+
+    // TODO: insert native widget page
+
+    // save the pointer to the page
+    m_aPages.Insert(pPage, nPage);
+
+    // some page must be selected: either this one or the first one if there is 
+    // still no selection
+    if ( bSelect )
+        m_nSelection = nPage;
+    else if ( m_nSelection == -1 )
+        m_nSelection = 0;
+
+    return TRUE;
+}
+
+// ----------------------------------------------------------------------------
+// wxNotebook callbacks
+// ----------------------------------------------------------------------------
 
-bool wxNotebook::DeletePage( int page )
+// @@@ OnSize() is used for setting the font when it's called for the first
+//     time because doing it in ::Create() doesn't work (for unknown reasons)
+void wxNotebook::OnSize(wxSizeEvent& event)
 {
-  return TRUE;
-};
+    static bool s_bFirstTime = TRUE;
+    if ( s_bFirstTime ) {
+        // TODO: any first-time-size processing.
+        s_bFirstTime = FALSE;
+    }
+
+    // TODO: all this may or may not be necessary for your platform
+
+    // emulate page change (it's esp. important to do it first time because
+    // otherwise our page would stay invisible)
+    int nSel = m_nSelection;
+    m_nSelection = -1;
+    SetSelection(nSel);
+
+    // fit the notebook page to the tab control's display area
+    int w, hl
+    GetSize(&w, &h);
+
+    uint nCount = m_aPages.Count();
+    for ( uint nPage = 0; nPage < nCount; nPage++ ) {
+        wxNotebookPage *pPage = m_aPages[nPage];
+        pPage->SetSize(0, 0, w, h);
+        if ( pPage->GetAutoLayout() )
+            pPage->Layout();
+    }
+
+    // Processing continues to next OnSize
+    event.Skip();
+}
 
-bool wxNotebook::AddPage(wxWindow* win, const wxString& text,
-                         bool bSelect, int imageId)
+void wxNotebook::OnSelChange(wxNotebookEvent& event)
 {
-  return TRUE;
-};
+    // is it our tab control?
+    if ( event.GetEventObject() == this )
+        ChangePage(event.GetOldSelection(), event.GetSelection());
+
+    // we want to give others a chance to process this message as well
+    event.Skip();
+}
 
-wxWindow *wxNotebook::GetPage( int page ) const
+void wxNotebook::OnSetFocus(wxFocusEvent& event)
 {
-    return NULL;
-};
+    // set focus to the currently selected page if any
+    if ( m_nSelection != -1 )
+        m_aPages[m_nSelection]->SetFocus();
+
+    event.Skip();
+}
 
-void wxNotebook::AddChild( wxWindow *win )
+void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event)
 {
-};
+    if ( event.IsWindowChange() ) {
+        // change pages
+        AdvanceSelection(event.GetDirection());
+    }
+    else {
+        // pass to the parent
+        if ( GetParent() ) {
+            event.SetCurrentFocus(this);
+            GetParent()->ProcessEvent(event);
+        }
+    }
+}
+
+// ----------------------------------------------------------------------------
+// wxNotebook base class virtuals
+// ----------------------------------------------------------------------------
 
 // override these 2 functions to do nothing: everything is done in OnSize
-void wxNotebook::SetConstraintSizes( bool WXUNUSED(recurse) )
+
+void wxNotebook::SetConstraintSizes(bool /* recurse */)
+{
+    // don't set the sizes of the pages - their correct size is not yet known
+    wxControl::SetConstraintSizes(FALSE);
+}
+
+bool wxNotebook::DoPhase(int /* nPhase */)
 {
-  // don't set the sizes of the pages - their correct size is not yet known
-  wxControl::SetConstraintSizes(FALSE);
+    return TRUE;
 }
 
-bool wxNotebook::DoPhase( int WXUNUSED(nPhase) )
+void wxNotebook::Command(wxCommandEvent& event)
 {
-  return TRUE;
+    wxFAIL_MSG("wxNotebook::Command not implemented");
 }
 
-//-----------------------------------------------------------------------------
-// wxNotebookEvent
-//-----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// wxNotebook helper functions
+// ----------------------------------------------------------------------------
+
+// hide the currently active panel and show the new one
+void wxNotebook::ChangePage(int nOldSel, int nSel)
+{
+    wxASSERT( nOldSel != nSel ); // impossible
+
+    if ( nOldSel != -1 ) {
+        m_aPages[nOldSel]->Show(FALSE);
+    }
+
+    wxNotebookPage *pPage = m_aPages[nSel];
+    pPage->Show(TRUE);
+    pPage->SetFocus();
+
+    m_nSelection = nSel;
+}
 
-IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxCommandEvent)
index 5256aa14ca2a96d324bfe9b64cafee57442ab1e6..445b545f0c09bc388a90f28c5b4a1968c22f81dc 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        palette.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxPalette
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
 #ifdef __GNUG__
 #pragma implementation "palette.h"
 #endif
 
 #include "wx/palette.h"
 
-//-----------------------------------------------------------------------------
-// wxPalette
-//-----------------------------------------------------------------------------
+#if !USE_SHARED_LIBRARIES
+IMPLEMENT_DYNAMIC_CLASS(wxPalette, wxGDIObject)
+#endif
 
-class wxPaletteRefData: public wxObjectRefData
-{
-  public:
-  
-    wxPaletteRefData(void);
-    ~wxPaletteRefData(void);
-  
-};
-
-wxPaletteRefData::wxPaletteRefData(void)
-{
-};
+/*
+ * Palette
+ *
+ */
 
-wxPaletteRefData::~wxPaletteRefData(void)
+wxPaletteRefData::wxPaletteRefData()
 {
-};
+    // TODO
+}
 
-//-----------------------------------------------------------------------------
-
-#define M_PALETTEDATA ((wxPaletteRefData *)m_refData)
-
-IMPLEMENT_DYNAMIC_CLASS(wxPalette,wxGDIObject)
+wxPaletteRefData::~wxPaletteRefData()
+{
+    // TODO
+}
 
-wxPalette::wxPalette(void)
+wxPalette::wxPalette()
 {
-};
+}
 
-wxPalette::wxPalette( int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue )
+wxPalette::wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue)
 {
-  m_refData = new wxPaletteRefData();
-  Create( n, red, green, blue );
-};
+    Create(n, red, green, blue);
+}
 
-wxPalette::wxPalette( const wxPalette& palette )
+wxPalette::~wxPalette()
 {
-  Ref( palette );
-};
+}
 
-wxPalette::wxPalette( const wxPalette* palette )
+bool wxPalette::FreeResource(bool force)
+{
+       if ( M_PALETTEDATA && M_PALETTEDATA->m_hPalette)
+       {
+      DeleteObject((HPALETTE)M_PALETTEDATA->m_hPalette);
+       }
+       return TRUE;
+}
+
+bool wxPalette::Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue)
 {
   UnRef();
-  if (palette) Ref( *palette ); 
-};
 
-wxPalette::~wxPalette(void)
-{
-};
+  m_refData = new wxPaletteRefData;
 
-wxPalette& wxPalette::operator = ( const wxPalette& palette )
-{
-  if (*this == palette) return (*this); 
-  Ref( palette ); 
-  return *this; 
-};
+  // TODO
 
-bool wxPalette::operator == ( const wxPalette& palette )
-{
-  return m_refData == palette.m_refData; 
-};
+  return FALSE;
+}
 
-bool wxPalette::operator != ( const wxPalette& palette )
+int wxPalette::GetPixel(const unsigned char red, const unsigned char green, const unsigned char blue) const
 {
-  return m_refData != palette.m_refData; 
-};
+    if ( !m_refData )
+       return FALSE;
 
-bool wxPalette::Ok(void) const
-{
-  return (m_refData);
-};
+    // TODO
+    return FALSE;
+}
 
-bool wxPalette::Create( int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue)
+bool wxPalette::GetRGB(int index, unsigned char *red, unsigned char *green, unsigned char *blue) const
 {
-};
+    if ( !m_refData )
+           return FALSE;
 
-int wxPalette::GetPixel( const unsigned char red, const unsigned char green, const unsigned char blue ) const
-{
-};
+    if (index < 0 || index > 255)
+        return FALSE;
+
+    // TODO
+    return FALSE;
+}
 
-bool wxPalette::GetRGB( int pixel, unsigned char *red, unsigned char *green, unsigned char *blue ) const
-{
-};
 
index 7ed7be02a79222aa1c31a183a55fcae44a877beb..d7b2ce264cb548485b611004010fb563ccf718c9 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        pen.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxPen
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
 #ifdef __GNUG__
 #pragma implementation "pen.h"
 #endif
 
+#include "wx/setup.h"
+#include "wx/utils.h"
 #include "wx/pen.h"
 
-//-----------------------------------------------------------------------------
-// wxPen
-//-----------------------------------------------------------------------------
-
-class wxPenRefData: public wxObjectRefData
-{
-  public:
-  
-    wxPenRefData(void);
-  
-    int        m_width;
-    int        m_style;
-    int        m_joinStyle;
-    int        m_capStyle;
-    wxColour   m_colour;
-};
+#if !USE_SHARED_LIBRARIES
+IMPLEMENT_DYNAMIC_CLASS(wxPen, wxGDIObject)
+#endif
 
-wxPenRefData::wxPenRefData(void)
+wxPenRefData::wxPenRefData()
 {
-  m_width = 1;
-  m_style = wxSOLID;
-  m_joinStyle = wxJOIN_ROUND;
-  m_capStyle = wxCAP_ROUND;
-};
+    m_style = wxSOLID;
+    m_width = 1;
+    m_join = wxJOIN_ROUND ;
+    m_cap = wxCAP_ROUND ;
+    m_nbDash = 0 ;
+    m_dash = 0 ;
+/* TODO: null data
+    m_hPen = 0;
+*/
+}
 
-//-----------------------------------------------------------------------------
+wxPenRefData::wxPenRefData(const wxPenRefData& data)
+{
+    m_style = data.m_style;
+    m_width = data.m_width;
+    m_join = data.m_join;
+    m_cap = data.m_cap;
+    m_nbDash = data.m_nbDash;
+    m_dash = data.m_dash;
+    m_colour = data.m_colour;
+/* TODO: null data
+    m_hPen = 0;
+*/
+}
 
-#define M_PENDATA ((wxPenRefData *)m_refData)
+wxPenRefData::~wxPenRefData()
+{
+    // TODO: delete data
+}
 
-IMPLEMENT_DYNAMIC_CLASS(wxPen,wxGDIObject)
+// Pens
 
-wxPen::wxPen(void)
+wxPen::wxPen()
 {
-  if (wxThePenList) wxThePenList->AddPen( this );
-};
+    if ( wxThePenList )
+        wxThePenList->AddPen(this);
+}
 
-wxPen::wxPen( const wxColour &colour, int width, int style )
+wxPen::~wxPen()
 {
-  m_refData = new wxPenRefData();
-  M_PENDATA->m_width = width;
-  M_PENDATA->m_style = style;
-  M_PENDATA->m_colour = colour;
-  if (wxThePenList) wxThePenList->AddPen( this );
-};
+    if (wxThePenList)
+        wxThePenList->RemovePen(this);
+}
 
-wxPen::wxPen( const wxString &colourName, int width, int style )
+// Should implement Create
+wxPen::wxPen(const wxColour& col, int Width, int Style)
 {
-  m_refData = new wxPenRefData();
-  M_PENDATA->m_width = width;
-  M_PENDATA->m_style = style;
-  M_PENDATA->m_colour = colourName;
-  if (wxThePenList) wxThePenList->AddPen( this );
-};
+    m_refData = new wxPenRefData;
 
-wxPen::wxPen( const wxPen& pen )
-{
-  Ref( pen );
-  if (wxThePenList) wxThePenList->AddPen( this );
-};
+    M_PENDATA->m_colour = col;
+    M_PENDATA->m_width = Width;
+    M_PENDATA->m_style = Style;
+    M_PENDATA->m_join = wxJOIN_ROUND ;
+    M_PENDATA->m_cap = wxCAP_ROUND ;
+    M_PENDATA->m_nbDash = 0 ;
+    M_PENDATA->m_dash = 0 ;
 
-wxPen::wxPen( const wxPen* pen )
-{
-  UnRef();
-  if (pen) Ref( *pen ); 
-  if (wxThePenList) wxThePenList->AddPen( this );
-};
+    RealizeResource();
 
-wxPen::~wxPen(void)
-{
-  if (wxThePenList) wxThePenList->RemovePen( this );
-};
+    if ( wxThePenList )
+        wxThePenList->AddPen(this);
+}
 
-wxPen& wxPen::operator = ( const wxPen& pen )
+wxPen::wxPen(const wxBitmap& stipple, int Width)
 {
-  if (*this == pen) return (*this); 
-  Ref( pen ); 
-  return *this; 
-};
+    m_refData = new wxPenRefData;
+
+    M_PENDATA->m_stipple = stipple;
+    M_PENDATA->m_width = Width;
+    M_PENDATA->m_style = wxSTIPPLE;
+    M_PENDATA->m_join = wxJOIN_ROUND ;
+    M_PENDATA->m_cap = wxCAP_ROUND ;
+    M_PENDATA->m_nbDash = 0 ;
+    M_PENDATA->m_dash = 0 ;
 
-bool wxPen::operator == ( const wxPen& pen )
+    RealizeResource();
+
+    if ( wxThePenList )
+        wxThePenList->AddPen(this);
+}
+
+wxPen::wxPen(const wxString& col, int Width, int Style)
 {
-  return m_refData == pen.m_refData; 
-};
+    m_refData = new wxPenRefData;
+
+    M_PENDATA->m_colour = col;
+    M_PENDATA->m_width = Width;
+    M_PENDATA->m_style = Style;
+    M_PENDATA->m_join = wxJOIN_ROUND ;
+    M_PENDATA->m_cap = wxCAP_ROUND ;
+    M_PENDATA->m_nbDash = 0 ;
+    M_PENDATA->m_dash = 0 ;
 
-bool wxPen::operator != ( const wxPen& pen )
+    RealizeResource();
+
+    if ( wxThePenList )
+        wxThePenList->AddPen(this);
+}
+
+void wxPen::Unshare()
 {
-  return m_refData != pen.m_refData; 
-};
+       // Don't change shared data
+       if (!m_refData)
+    {
+               m_refData = new wxPenRefData();
+       }
+    else
+    {
+               wxPenRefData* ref = new wxPenRefData(*(wxPenRefData*)m_refData);
+               UnRef();
+               m_refData = ref;
+       }
+}
 
-void wxPen::SetColour( const wxColour &colour )
+void wxPen::SetColour(const wxColour& col)
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
+    Unshare();
 
-  M_PENDATA->m_colour = colour;
-};
+    M_PENDATA->m_colour = col;
+  
+    RealizeResource();
+}
 
-void wxPen::SetColour( const wxString &colourName )
+void wxPen::SetColour(const wxString& col)
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
+    Unshare();
 
-  M_PENDATA->m_colour = colourName;
-};
+    M_PENDATA->m_colour = col;
+  
+    RealizeResource();
+}
 
-void wxPen::SetColour( int red, int green, int blue )
+void wxPen::SetColour(const unsigned char r, const unsigned char g, const unsigned char b)
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
+    Unshare();
 
-  M_PENDATA->m_colour.Set( red, green, blue );
-};
+    M_PENDATA->m_colour.Set(r, g, b);
+  
+    RealizeResource();
+}
 
-void wxPen::SetCap( int capStyle )
+void wxPen::SetWidth(int Width)
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
+    Unshare();
+
+    M_PENDATA->m_width = Width;
 
-  M_PENDATA->m_capStyle = capStyle;
-};
+    RealizeResource();
+}
 
-void wxPen::SetJoin( int joinStyle )
+void wxPen::SetStyle(int Style)
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
+    Unshare();
+
+    M_PENDATA->m_style = Style;
 
-  M_PENDATA->m_joinStyle = joinStyle;
-};
+    RealizeResource();
+}
 
-void wxPen::SetStyle( int style )
+void wxPen::SetStipple(const wxBitmap& Stipple)
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
+    Unshare();
 
-  M_PENDATA->m_style = style;
-};
+    M_PENDATA->m_stipple = Stipple;
+    M_PENDATA->m_style = wxSTIPPLE;
+  
+    RealizeResource();
+}
 
-void wxPen::SetWidth( int width )
+void wxPen::SetDashes(int nb_dashes, const wxDash *Dash)
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
+    Unshare();
 
-  M_PENDATA->m_width = width;
-};
+    M_PENDATA->m_nbDash = nb_dashes;
+    M_PENDATA->m_dash = (wxDash *)Dash;
+  
+    RealizeResource();
+}
 
-int wxPen::GetCap(void) const
+void wxPen::SetJoin(int Join)
 {
-  return M_PENDATA->m_capStyle;
-};
+    Unshare();
 
-int wxPen::GetJoin(void) const
-{
-  if (!m_refData)
-    return 0;
-  else
-    return M_PENDATA->m_joinStyle;
-};
+    M_PENDATA->m_join = Join;
 
-int wxPen::GetStyle(void) const
-{
-  if (!m_refData)
-    return 0;
-  else
-    return M_PENDATA->m_style;
-};
+    RealizeResource();
+}
 
-int wxPen::GetWidth(void) const
+void wxPen::SetCap(int Cap)
 {
-  if (!m_refData)
-    return 0;
-  else
-    return M_PENDATA->m_width;
-};
+    Unshare();
 
-wxColour &wxPen::GetColour(void) const
-{
-  if (!m_refData)
-    return wxNullColour;
-  else
-    return M_PENDATA->m_colour;
-};
+    M_PENDATA->m_cap = Cap;
+
+    RealizeResource();
+}
 
-bool wxPen::Ok(void) const
+bool wxPen::RealizeResource()
 {
-  return (m_refData);
-};
+    // TODO: create actual pen
+    return FALSE;
+}
+
 
index 758e70f76ea6db44f73e338183a753fa7ae4bb2d..da582d0e52ef7fcb9755e3b355a3df8dda5785be 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        radiobox.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxRadioBox
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
 #ifdef __GNUG__
 #pragma implementation "radiobox.h"
 #endif
 
 #include "wx/radiobox.h"
-#include "wx/dialog.h"
-#include "wx/frame.h"
 
-//-----------------------------------------------------------------------------
-// data
-//-----------------------------------------------------------------------------
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxRadioBox, wxControl)
+#endif
+
+// Radio box item
+wxRadioBox::wxRadioBox()
+{
+    m_selectedButton = -1;
+    m_noItems = 0;
+    m_noRowsOrCols = 0;
+    m_majorDim = 0 ;
+}
+
+bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title,
+             const wxPoint& pos, const wxSize& size,
+             int n, const wxString choices[],
+             int majorDim, long style,
+             const wxValidator& val, const wxString& name)
+{
+    m_selectedButton = -1;
+    m_noItems = n;
+
+    SetName(name);
+    SetValidator(val);
 
-extern bool   g_blockEventsOnDrag;
+    parent->AddChild(this);
 
-//-----------------------------------------------------------------------------
+    m_windowStyle = (long&)style;
 
-IMPLEMENT_DYNAMIC_CLASS(wxRadioBox,wxControl)
+    if (id == -1)
+        m_windowId = NewControlId();
+    else
+        m_windowId = id;
 
-wxRadioBox::wxRadioBox(void)
-{
-};
+    m_noRowsOrCols = majorDim;
 
-wxRadioBox::wxRadioBox( wxWindow *parent, wxWindowID id, const wxString& title,
-      const wxPoint &pos, const wxSize &size,
-      int n, const wxString choices[],
-      int majorDim, long style,
-      const wxString &name )
+    if (majorDim==0)
+        m_majorDim = n ;
+    else
+        m_majorDim = majorDim ;
+
+
+    // TODO create radiobox
+    return FALSE;
+}
+
+
+wxRadioBox::~wxRadioBox()
 {
-  Create( parent, id, title, pos, size, n, choices, majorDim, style, name );
-};
+    // TODO
+}
 
-bool wxRadioBox::Create( wxWindow *parent, wxWindowID id, const wxString& title,
-      const wxPoint &pos, const wxSize &size,
-      int n, const wxString choices[],
-      int WXUNUSED(majorDim), long style,
-      const wxString &name )
+wxString wxRadioBox::GetLabel(int item) const
 {
-  return TRUE;
-};
+    // TODO
+    return wxString("");
+}
 
-bool wxRadioBox::Show( bool show )
+void wxRadioBox::SetLabel(int item, const wxString& label)
 {
-  wxWindow::Show( show );
-  return TRUE;
-};
+    // TODO
+}
 
-int wxRadioBox::FindString( const wxString &s ) const
+int wxRadioBox::FindString(const wxString& s) const
 {
-  return -1;
-};
+    // TODO
+    return -1;
+}
 
-void wxRadioBox::SetSelection( int n )
+void wxRadioBox::SetSelection(int n)
 {
-};
+    if ((n < 0) || (n >= m_noItems))
+        return;
+    // TODO
 
-int wxRadioBox::GetSelection(void) const
+    m_selectedButton = n;
+}
+
+// Get single selection, for single choice list items
+int wxRadioBox::GetSelection() const
 {
-  return -1;
-};
+    return m_selectedButton;
+}
 
-wxString wxRadioBox::GetString( int n ) const
+// Find string for position
+wxString wxRadioBox::GetString(int n) const
 {
-};
+    // TODO
+    return wxString("");
+}
 
-wxString wxRadioBox::GetLabel(void) const
+void wxRadioBox::SetSize(int x, int y, int width, int height, int sizeFlags)
 {
-  return wxControl::GetLabel();
-};
+    // TODO
+}
 
-void wxRadioBox::SetLabel( const wxString& WXUNUSED(label) )
+void wxRadioBox::GetSize(int *width, int *height) const
 {
-};
+    // TODO
+}
 
-void wxRadioBox::SetLabel( int WXUNUSED(item), const wxString& WXUNUSED(label) )
+void wxRadioBox::GetPosition(int *x, int *y) const
 {
-};
+    // TODO
+}
 
-void wxRadioBox::SetLabel( int WXUNUSED(item), wxBitmap *WXUNUSED(bitmap) )
+wxString wxRadioBox::GetLabel() const
 {
-};
+    // TODO
+    return wxString("");
+}
 
-wxString wxRadioBox::GetLabel( int WXUNUSED(item) ) const
+void wxRadioBox::SetLabel(const wxString& label)
 {
-  return "";
-};
+    // TODO
+}
 
-void wxRadioBox::Enable( bool WXUNUSED(enable) )
+void wxRadioBox::SetFocus()
 {
-};
+    // TODO
+}
 
-void wxRadioBox::Enable( int WXUNUSED(item), bool WXUNUSED(enable) )
+bool wxRadioBox::Show(bool show)
 {
-};
+    // TODO
+    return FALSE;
+}
 
-void wxRadioBox::Show( int WXUNUSED(item), bool WXUNUSED(show) )
+// Enable a specific button
+void wxRadioBox::Enable(int item, bool enable)
 {
-};
+    // TODO
+}
 
-wxString wxRadioBox::GetStringSelection(void) const
+// Enable all controls
+void wxRadioBox::Enable(bool enable)
 {
-  return "";
-};
+    wxControl::Enable(enable);
+
+    // TODO
+}
 
-bool wxRadioBox::SetStringSelection( const wxString&s )
+// Show a specific button
+void wxRadioBox::Show(int item, bool show)
 {
-  return TRUE;
-};
+    // TODO
+}
 
-int wxRadioBox::Number(void) const
+// For single selection items only
+wxString wxRadioBox::GetStringSelection () const
 {
-  return 0;
-};
+    int sel = GetSelection ();
+    if (sel > -1)
+        return this->GetString (sel);
+    else
+        return wxString("");
+}
 
-int wxRadioBox::GetNumberOfRowsOrCols(void) const
+bool wxRadioBox::SetStringSelection (const wxString& s)
 {
-  return 1;
-};
+    int sel = FindString (s);
+    if (sel > -1)
+    {
+        SetSelection (sel);
+        return TRUE;
+    }
+    else
+        return FALSE;
+}
 
-void wxRadioBox::SetNumberOfRowsOrCols( int WXUNUSED(n) )
+void wxRadioBox::Command (wxCommandEvent & event)
 {
-};
+    SetSelection (event.m_commandInt);
+    ProcessCommand (event);
+}
+
 
index e4748739916231e8333e3fdcff91f6e507696c5c..65baab38b6731c39dd876d22546002a693ce1e41 100644 (file)
@@ -1,17 +1,68 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        radiobut.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxRadioButton
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
 #ifdef __GNUG__
 #pragma implementation "radiobut.h"
 #endif
 
 #include "wx/radiobut.h"
 
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxRadioButton, wxControl)
+#endif
+
+bool wxRadioButton::Create(wxWindow *parent, wxWindowID id,
+                  const wxString& label,
+           const wxPoint& pos,
+           const wxSize& size, long style,
+           const wxValidator& validator,
+           const wxString& name)
+{
+    SetName(name);
+    SetValidator(validator);
+
+    if (parent) parent->AddChild(this);
+
+    if ( id == -1 )
+           m_windowId = (int)NewControlId();
+    else
+           m_windowId = id;
+
+    m_windowStyle = style ;
+
+    // TODO create radiobutton
+    return FALSE;
+}
+
+void wxRadioButton::SetLabel(const wxString& label)
+{
+    // TODO
+}
+
+void wxRadioButton::SetValue(bool value)
+{
+    // TODO
+}
+
+// Get single selection, for single choice list items
+bool wxRadioButton::GetValue() const
+{
+    // TODO
+    return FALSE;
+}
+
+void wxRadioButton::Command (wxCommandEvent & event)
+{
+  SetValue ( (event.m_commandInt != 0) );
+  ProcessCommand (event);
+}
+
+
index 987ddeed60c04d8097ea952918868974afa555cf..d03d8e802027250b9d813305f4505227f36c2f39 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
-// Name:        region.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/98
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
-// Licence:    wxWindows licence
+// File:      region.cpp
+// Purpose:   Region class
+// Author:    Markus Holzem/Julian Smart/AUTHOR
+// Created:   Fri Oct 24 10:46:34 MET 1997
+// RCS-ID:       $Id$
+// Copyright: (c) 1997 Markus Holzem/Julian Smart/AUTHOR
+// Licence:   wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
 #ifdef __GNUG__
 #pragma implementation "region.h"
 #endif
 
-#include "wx/region.h"
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+#pragma hdrstop
+#endif
+
+#include "wx/msw/region.h"
+#include "wx/gdicmn.h"
+
+#include <windows.h>
+
+#if !USE_SHARED_LIBRARY
+       IMPLEMENT_DYNAMIC_CLASS(wxRegion, wxGDIObject)
+       IMPLEMENT_DYNAMIC_CLASS(wxRegionIterator, wxObject)
+#endif
 
 //-----------------------------------------------------------------------------
-// wxRegion
+// wxRegionRefData implementation
 //-----------------------------------------------------------------------------
 
-class wxRegionRefData: public wxObjectRefData
-{
-  public:
-  
-    wxRegionRefData(void);
-    ~wxRegionRefData(void);
-  
-  public:    
+class WXDLLEXPORT wxRegionRefData : public wxGDIRefData {
+public:
+       wxRegionRefData()
+       {
+       }
 
-};
+       wxRegionRefData(const wxRegionRefData& data)
+       {
+        // TODO
+       }
 
-wxRegionRefData::wxRegionRefData(void)
-{
-};
+       ~wxRegionRefData()
+       {
+        // TODO
+       }
 
-wxRegionRefData::~wxRegionRefData(void)
-{
+       HRGN m_region;
 };
 
-//-----------------------------------------------------------------------------
 
-#define M_REGIONDATA ((wxRegionRefData *)m_refData)
+//-----------------------------------------------------------------------------
+// wxRegion
+//-----------------------------------------------------------------------------
 
-IMPLEMENT_DYNAMIC_CLASS(wxRegion,wxGDIObject);
-  
-wxRegion::wxRegion( long x, long y, long w, long h )
+/*!
+ * Create an empty region.
+ */
+wxRegion::wxRegion()
 {
-  m_refData = new wxRegionRefData();
-};
+    m_refData = new wxRegionRefData;
+    // TODO create empty region
+}
 
-wxRegion::wxRegion( const wxPoint& topLeft, const wxPoint& bottomRight )
+wxRegion::wxRegion(long x, long y, long w, long h)
 {
-  m_refData = new wxRegionRefData();
-};
+    m_refData = new wxRegionRefData;
+    // TODO create rect region
+}
 
-wxRegion::wxRegion( const wxRect& rect )
+wxRegion::wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight)
 {
-  m_refData = new wxRegionRefData();
-};
+    m_refData = new wxRegionRefData;
+    // TODO create rect region
+}
 
-wxRegion::wxRegion(void)
+wxRegion::wxRegion(const wxRect& rect)
 {
-  m_refData = new wxRegionRefData();
-};
-
-wxRegion::~wxRegion(void)
+    m_refData = new wxRegionRefData;
+    // TODO create rect region
+}
+
+/*!
+ * Destroy the region.
+ */
+wxRegion::~wxRegion()
 {
-};
+    // m_refData unrefed in ~wxObject
+}
 
-void wxRegion::Clear(void)
-{
-  UnRef();
-  m_refData = new wxRegionRefData();
-};
+//-----------------------------------------------------------------------------
+//# Modify region
+//-----------------------------------------------------------------------------
 
-bool wxRegion::Union( long x, long y, long width, long height )
+//! Clear current region
+void wxRegion::Clear()
 {
-  return TRUE;
-};
+    UnRef();
+}
 
-bool wxRegion::Union( const wxRect& rect )
+//! Combine rectangle (x, y, w, h) with this.
+bool wxRegion::Combine(long x, long y, long width, long height, wxRegionOp op)
 {
-  return TRUE;
-};
-
-bool wxRegion::Union( const wxRegion& region )
+       // Don't change shared data
+       if (!m_refData) {
+               m_refData = new wxRegionRefData();
+       } else if (m_refData->GetRefCount() > 1) {
+               wxRegionRefData* ref = (wxRegionRefData*)m_refData;
+               UnRef();
+               m_refData = new wxRegionRefData(*ref);
+       }
+    // If ref count is 1, that means it's 'ours' anyway so no action.
+
+    // TODO create rect region
+
+    int mode = 0; // TODO platform-specific code
+    switch (op)
+    {
+        case wxRGN_AND:
+            // TODO
+            break ;
+        case wxRGN_OR:
+            // TODO
+            break ;
+        case wxRGN_XOR:
+            // TODO
+            break ;
+        case wxRGN_DIFF:
+            // TODO
+            break ;
+        case wxRGN_COPY:
+        default:
+            // TODO
+            break ;
+    }
+
+    // TODO do combine region
+
+    return FALSE;
+}
+
+//! Union /e region with this.
+bool wxRegion::Combine(const wxRegion& region, wxRegionOp op)
 {
-  return TRUE;
-};
-
-bool wxRegion::Intersect( long x, long y, long width, long height )
+       if (region.Empty())
+               return FALSE;
+
+       // Don't change shared data
+       if (!m_refData) {
+               m_refData = new wxRegionRefData();
+       } else  if (m_refData->GetRefCount() > 1) {
+               wxRegionRefData* ref = (wxRegionRefData*)m_refData;
+               UnRef();
+               m_refData = new wxRegionRefData(*ref);
+       }
+
+    int mode = 0; // TODO platform-specific code
+    switch (op)
+    {
+        case wxRGN_AND:
+            // TODO
+            break ;
+        case wxRGN_OR:
+            // TODO
+            break ;
+        case wxRGN_XOR:
+            // TODO
+            break ;
+        case wxRGN_DIFF:
+            // TODO
+            break ;
+        case wxRGN_COPY:
+        default:
+            // TODO
+            break ;
+    }
+
+    // TODO combine region
+
+       return FALSE;
+}
+
+bool wxRegion::Combine(const wxRect& rect, wxRegionOp op)
 {
-  return TRUE;
-};
+    return Combine(rect.GetLeft(), rect.GetTop(), rect.GetWidth(), rect.GetHeight(), op);
+}
 
-bool wxRegion::Intersect( const wxRect& rect )
-{
-  return TRUE;
-};
+//-----------------------------------------------------------------------------
+//# Information on region
+//-----------------------------------------------------------------------------
 
-bool wxRegion::Intersect( const wxRegion& region )
+// Outer bounds of region
+void wxRegion::GetBox(long& x, long& y, long&w, long &h) const
 {
-  return TRUE;
-};
-
-bool wxRegion::Subtract( long x, long y, long width, long height )
+       if (m_refData) {
+        // TODO get box
+       } else {
+               x = y = w = h = 0;
+       }
+}
+
+wxRect wxRegion::GetBox() const
 {
-  return TRUE;
-};
+    long x, y, w, h;
+    GetBox(x, y, w, h);
+    return wxRect(x, y, w, h);
+}
 
-bool wxRegion::Subtract( const wxRect& rect )
+// Is region empty?
+bool wxRegion::Empty() const
 {
-  return TRUE;
-};
+    // TODO
+    return FALSE;
+}
 
-bool wxRegion::Subtract( const wxRegion& region )
-{
-  return TRUE;
-};
+//-----------------------------------------------------------------------------
+//# Tests
+//-----------------------------------------------------------------------------
 
-bool wxRegion::Xor( long x, long y, long width, long height )
+// Does the region contain the point (x,y)?
+wxRegionContain wxRegion::Contains(long x, long y) const
 {
-  return TRUE;
-};
+       if (!m_refData)
+               return wxOutRegion;
 
-bool wxRegion::Xor( const wxRect& rect )
+    // TODO. Return wxInRegion if within region.
+    if (0)
+        return wxInRegion;
+    return wxOutRegion;
+}
+
+// Does the region contain the point pt?
+wxRegionContain wxRegion::Contains(const wxPoint& pt) const
 {
-  return TRUE;
-};
+       if (!m_refData)
+               return wxOutRegion;
+
+    // TODO. Return wxInRegion if within region.
+    if (0)
+        return wxInRegion;
+    else
+        return wxOutRegion;
+}
+
+// Does the region contain the rectangle (x, y, w, h)?
+wxRegionContain wxRegion::Contains(long x, long y, long w, long h) const
+{
+       if (!m_refData)
+               return wxOutRegion;
+
+    // TODO. Return wxInRegion if within region.
+    if (0)
+        return wxInRegion;
+    else
+        return wxOutRegion;
+}
+
+// Does the region contain the rectangle rect
+wxRegionContain wxRegion::Contains(const wxRect& rect) const
+{
+       if (!m_refData)
+               return wxOutRegion;
+
+    long x, y, w, h;
+    x = rect.x;
+    y = rect.y;
+    w = rect.GetWidth();
+    h = rect.GetHeight();
+    return Contains(x, y, w, h);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+//                                                                                                                                                      //
+//                                                        wxRegionIterator                                                              //
+//                                                                                                                                                      //
+///////////////////////////////////////////////////////////////////////////////
+
+/*!
+ * Initialize empty iterator
+ */
+wxRegionIterator::wxRegionIterator() : m_current(0), m_numRects(0), m_rects(NULL)
+{
+}
 
-bool wxRegion::Xor( const wxRegion& region )
+wxRegionIterator::~wxRegionIterator()
 {
-  return TRUE;
-};
+    if (m_rects)
+        delete[] m_rects;
+}
+
+/*!
+ * Initialize iterator for region
+ */
+wxRegionIterator::wxRegionIterator(const wxRegion& region)
+{
+    m_rects = NULL;
+
+       Reset(region);
+}
 
-void wxRegion::GetBox( long& x, long& y, long&w, long &h ) const
+/*!
+ * Reset iterator for a new /e region.
+ */
+void wxRegionIterator::Reset(const wxRegion& region)
 {
-  x = 0;
-  y = 0;
-  w = -1;
-  h = -1;
-};
+       m_current = 0;
+       m_region = region;
+
+    if (m_rects)
+        delete[] m_rects;
+
+    m_rects = NULL;
+
+       if (m_region.Empty())
+               m_numRects = 0;
+       else
+    {
+        // TODO create m_rects and fill with rectangles for this region
+        m_numRects = 0;
+    }
+}
+
+/*!
+ * Increment iterator. The rectangle returned is the one after the
+ * incrementation.
+ */
+void wxRegionIterator::operator ++ ()
+{
+       if (m_current < m_numRects)
+               ++m_current;
+}
+
+/*!
+ * Increment iterator. The rectangle returned is the one before the
+ * incrementation.
+ */
+void wxRegionIterator::operator ++ (int)
+{
+       if (m_current < m_numRects)
+               ++m_current;
+}
 
-wxRect wxRegion::GetBox(void) const
+long wxRegionIterator::GetX() const
 {
-  return wxRect( 0, 0, -1, -1 );
-};
+       if (m_current < m_numRects)
+               return m_rects[m_current].x;
+       return 0;
+}
 
-bool wxRegion::Empty(void) const
+long wxRegionIterator::GetY() const
 {
-};
+       if (m_current < m_numRects)
+               return m_rects[m_current].y;
+       return 0;
+}
 
-wxRegionContain wxRegion::Contains( long x, long y ) const
+long wxRegionIterator::GetW() const
 {
-  return wxOutRegion;
-};
+       if (m_current < m_numRects)
+               return m_rects[m_current].width ;
+       return 0;
+}
 
-wxRegionContain wxRegion::Contains( long x, long y, long w, long h ) const
+long wxRegionIterator::GetH() const
 {
-  return wxOutRegion;
-};
+       if (m_current < m_numRects)
+               return m_rects[m_current].height;
+       return 0;
+}
 
index 4b98a1d1b84d7602730d70bddafc01bce727e4f7..0058a14f53583ade1e186d2a0b3657bd787696bb 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        scrolbar.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxScrollBar
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
 #ifdef __GNUG__
 #pragma implementation "scrolbar.h"
 #endif
 
 #include "wx/scrolbar.h"
-#include "wx/utils.h"
-
-//-----------------------------------------------------------------------------
-// wxScrollBar
-//-----------------------------------------------------------------------------
 
-IMPLEMENT_DYNAMIC_CLASS(wxScrollBar,wxControl)
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxScrollBar, wxControl)
 
-wxScrollBar::wxScrollBar(wxWindow *parent, wxWindowID id,
-           const wxPoint& pos, const wxSize& size,
-           long style, const wxString& name )
-{
-  Create( parent, id, pos, size, style, name );
-};
-
-wxScrollBar::~wxScrollBar(void)
-{
-};
+#endif
 
+// Scrollbar
 bool wxScrollBar::Create(wxWindow *parent, wxWindowID id,
-           const wxPoint& pos, const wxSize& size,
-           long style, const wxString& name )
-{
-  return TRUE;
-};
-
-int wxScrollBar::GetPosition(void) const
-{
-};
-
-int wxScrollBar::GetThumbSize() const
+           const wxPoint& pos,
+           const wxSize& size, long style,
+           const wxValidator& validator,
+           const wxString& name)
 {
-};
+    if (!parent)
+        return FALSE;
+    parent->AddChild(this);
+    SetName(name);
+       SetValidator(validator);
+    
+    m_windowStyle = style;
 
-int wxScrollBar::GetPageSize() const
-{
-};
-
-int wxScrollBar::GetRange() const
-{
-};
-
-void wxScrollBar::SetPosition( int viewStart )
-{
-};
+    if ( id == -1 )
+           m_windowId = (int)NewControlId();
+    else
+           m_windowId = id;
 
-void wxScrollBar::SetScrollbar( int position, int thumbSize, int range, int pageSize,
-      bool WXUNUSED(refresh) )
-{
-};
+    // TODO create scrollbar
+    return TRUE;
+}
 
-// Backward compatibility
-int wxScrollBar::GetValue(void) const
+wxScrollBar::~wxScrollBar()
 {
-  return GetPosition();
-};
+}
 
-void wxScrollBar::SetValue( int viewStart )
+void wxScrollBar::SetPosition(int viewStart)
 {
-  SetPosition( viewStart );
-};
+    // TODO
+}
 
-void wxScrollBar::GetValues( int *viewStart, int *viewLength, int *objectLength, int *pageLength ) const
+int wxScrollBar::GetPosition() const
 {
-};
+    // TODO
+    return 0;
+}
 
-int wxScrollBar::GetViewLength() const
+void wxScrollBar::SetScrollbar(int position, int thumbSize, int range, int pageSize,
+    bool refresh)
 {
-};
+    m_viewSize = pageSize;
+    m_pageSize = thumbSize;
+    m_objectSize = range;
 
-int wxScrollBar::GetObjectLength() const
-{
-};
+    // TODO
+}
 
-void wxScrollBar::SetPageSize( int pageLength )
-{
-};
-
-void wxScrollBar::SetObjectLength( int objectLength )
-{
-};
 
-void wxScrollBar::SetViewLength( int viewLength )
+void wxScrollBar::Command(wxCommandEvent& event)
 {
-};
+    SetValue(event.m_commandInt);
+    ProcessCommand(event);
+}
 
index 69d24884a79ff1ca24fa86503e88c8d2062e860a..0450dbc8e48596be31469573796c18d99cadde2a 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        settings.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxSettings
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
 #ifdef __GNUG__
 #pragma implementation "settings.h"
 #endif
 
 #include "wx/settings.h"
 
-/*
-#define wxSYS_COLOUR_SCROLLBAR         0
-#define wxSYS_COLOUR_BACKGROUND        1
-#define wxSYS_COLOUR_ACTIVECAPTION     2
-#define wxSYS_COLOUR_INACTIVECAPTION   3
-#define wxSYS_COLOUR_MENU              4
-#define wxSYS_COLOUR_WINDOW            5
-#define wxSYS_COLOUR_WINDOWFRAME       6
-#define wxSYS_COLOUR_MENUTEXT          7
-#define wxSYS_COLOUR_WINDOWTEXT        8
-#define wxSYS_COLOUR_CAPTIONTEXT       9
-#define wxSYS_COLOUR_ACTIVEBORDER      10
-#define wxSYS_COLOUR_INACTIVEBORDER    11
-#define wxSYS_COLOUR_APPWORKSPACE      12
-#define wxSYS_COLOUR_HIGHLIGHT         13
-#define wxSYS_COLOUR_HIGHLIGHTTEXT     14
-#define wxSYS_COLOUR_BTNFACE           15
-#define wxSYS_COLOUR_BTNSHADOW         16
-#define wxSYS_COLOUR_GRAYTEXT          17
-#define wxSYS_COLOUR_BTNTEXT           18
-#define wxSYS_COLOUR_INACTIVECAPTIONTEXT 19
-#define wxSYS_COLOUR_BTNHIGHLIGHT      20
-
-#define wxSYS_COLOUR_3DDKSHADOW        21
-#define wxSYS_COLOUR_3DLIGHT           22
-#define wxSYS_COLOUR_INFOTEXT          23
-#define wxSYS_COLOUR_INFOBK            24
-
-#define wxSYS_COLOUR_DESKTOP           wxSYS_COLOUR_BACKGROUND
-#define wxSYS_COLOUR_3DFACE            wxSYS_COLOUR_BTNFACE
-#define wxSYS_COLOUR_3DSHADOW          wxSYS_COLOUR_BTNSHADOW
-#define wxSYS_COLOUR_3DHIGHLIGHT       wxSYS_COLOUR_BTNHIGHLIGHT
-#define wxSYS_COLOUR_3DHILIGHT         wxSYS_COLOUR_BTNHIGHLIGHT
-#define wxSYS_COLOUR_BTNHILIGHT        wxSYS_COLOUR_BTNHIGHLIGHT
-*/
-
-#define SHIFT (8*(sizeof(short int)-sizeof(char)))
-
-wxColour *g_systemBtnFaceColour      = NULL;
-wxColour *g_systemBtnShadowColour    = NULL;
-wxColour *g_systemBtnHighlightColour = NULL;
-wxColour *g_systemHighlightColour    = NULL;
-
-wxColour wxSystemSettings::GetSystemColour( int index )
+wxColour wxSystemSettings::GetSystemColour(int index)
 {
-  switch (index)
-  {
-    case wxSYS_COLOUR_SCROLLBAR:
-    case wxSYS_COLOUR_BACKGROUND:
-    case wxSYS_COLOUR_ACTIVECAPTION:
-    case wxSYS_COLOUR_INACTIVECAPTION:
-    case wxSYS_COLOUR_MENU:
-    case wxSYS_COLOUR_WINDOW:
-    case wxSYS_COLOUR_WINDOWFRAME:
-    case wxSYS_COLOUR_ACTIVEBORDER:
-    case wxSYS_COLOUR_INACTIVEBORDER:
-    case wxSYS_COLOUR_BTNFACE:
-    {
-      return *g_systemBtnFaceColour;
-    };
-    case wxSYS_COLOUR_BTNSHADOW:
-    {
-      return *g_systemBtnShadowColour;
-    };
-    case wxSYS_COLOUR_GRAYTEXT:
-    case wxSYS_COLOUR_BTNHIGHLIGHT:
-    {
-      return *g_systemBtnHighlightColour;
-    };
-    case wxSYS_COLOUR_HIGHLIGHT:
-    {
-      return *g_systemHighlightColour;
-    };
-    case wxSYS_COLOUR_MENUTEXT:
-    case wxSYS_COLOUR_WINDOWTEXT:
-    case wxSYS_COLOUR_CAPTIONTEXT:
-    case wxSYS_COLOUR_INACTIVECAPTIONTEXT:
-    case wxSYS_COLOUR_INFOTEXT:
-    {
-      return *wxBLACK;
-    };
-    case wxSYS_COLOUR_HIGHLIGHTTEXT:
-    {
-      return *wxWHITE;
-    };
-    case wxSYS_COLOUR_INFOBK:
-    case wxSYS_COLOUR_APPWORKSPACE:
-    {
-      return *wxWHITE;    // ?
-    };
-  };
-  return *wxWHITE;
-};
-
-wxFont *g_systemFont = NULL;
+    // TODO
+       return col;
+}
 
-wxFont wxSystemSettings::GetSystemFont( int index ) 
+wxFont wxSystemSettings::GetSystemFont(int index)
 {
-  switch (index)
-  {
-    case wxSYS_OEM_FIXED_FONT:
-    case wxSYS_ANSI_FIXED_FONT:
-    case wxSYS_SYSTEM_FIXED_FONT:
-    {
-      return *wxNORMAL_FONT;
-    };
-    case wxSYS_ANSI_VAR_FONT:
-    case wxSYS_SYSTEM_FONT:
-    case wxSYS_DEVICE_DEFAULT_FONT:
-    case wxSYS_DEFAULT_GUI_FONT:
-    {
-      return *g_systemFont;
-    };
-  };
-  return wxNullFont;
-};
+    // TODO
+    return wxFont;
+}
 
-int wxSystemSettings::GetSystemMetric( int index )
+// Get a system metric, e.g. scrollbar size
+int wxSystemSettings::GetSystemMetric(int index)
 {
-  switch (index)
-  {
-    case wxSYS_SCREEN_X: return 0;
-    case wxSYS_SCREEN_Y: return 0;
-  };
-  return 0;
-};
+       switch ( index)
+       {
+        case wxSYS_MOUSE_BUTTONS:
+            // TODO
+                       return 0;
+        case wxSYS_BORDER_X:
+            // TODO
+                       return 0;
+        case wxSYS_BORDER_Y:
+            // TODO
+                       return 0;
+        case wxSYS_CURSOR_X:
+            // TODO
+                       return 0;
+        case wxSYS_CURSOR_Y:
+            // TODO
+                       return 0;
+        case wxSYS_DCLICK_X:
+            // TODO
+                       return 0;
+        case wxSYS_DCLICK_Y:
+            // TODO
+                       return 0;
+        case wxSYS_DRAG_X:
+            // TODO
+                       return 0;
+        case wxSYS_DRAG_Y:
+            // TODO
+                       return 0;
+        case wxSYS_EDGE_X:
+            // TODO
+                       return 0;
+        case wxSYS_EDGE_Y:
+            // TODO
+                       return 0;
+        case wxSYS_HSCROLL_ARROW_X:
+            // TODO
+                       return 0;
+        case wxSYS_HSCROLL_ARROW_Y:
+            // TODO
+                       return 0;
+        case wxSYS_HTHUMB_X:
+            // TODO
+                       return 0;
+        case wxSYS_ICON_X:
+            // TODO
+                       return 0;
+        case wxSYS_ICON_Y:
+            // TODO
+                       return 0;
+        case wxSYS_ICONSPACING_X:
+            // TODO
+                       return 0;
+        case wxSYS_ICONSPACING_Y:
+            // TODO
+                       return 0;
+        case wxSYS_WINDOWMIN_X:
+            // TODO
+                       return 0;
+        case wxSYS_WINDOWMIN_Y:
+            // TODO
+                       return 0;
+        case wxSYS_SCREEN_X:
+            // TODO
+                       return 0;
+        case wxSYS_SCREEN_Y:
+            // TODO
+                       return 0;
+        case wxSYS_FRAMESIZE_X:
+            // TODO
+                       return 0;
+        case wxSYS_FRAMESIZE_Y:
+            // TODO
+                       return 0;
+        case wxSYS_SMALLICON_X:
+            // TODO
+                       return 0;
+        case wxSYS_SMALLICON_Y:
+            // TODO
+                       return 0;
+        case wxSYS_HSCROLL_Y:
+            // TODO
+                       return 0;
+        case wxSYS_VSCROLL_X:
+            // TODO
+                       return 0;
+        case wxSYS_VSCROLL_ARROW_X:
+            // TODO
+                       return 0;
+        case wxSYS_VSCROLL_ARROW_Y:
+            // TODO
+                       return 0;
+        case wxSYS_VTHUMB_Y:
+            // TODO
+                       return 0;
+        case wxSYS_CAPTION_Y:
+            // TODO
+                       return 0;
+        case wxSYS_MENU_Y:
+            // TODO
+                       return 0;
+        case wxSYS_NETWORK_PRESENT:
+            // TODO
+                       return 0;
+        case wxSYS_PENWINDOWS_PRESENT:
+            // TODO
+                       return 0;
+        case wxSYS_SHOW_SOUNDS:
+            // TODO
+                       return 0;
+        case wxSYS_SWAP_BUTTONS:
+            // TODO
+                       return 0;
+               default:
+                       return 0;
+       }
+       return 0;
+}
 
index 433179dd2b252f09da1fd680ee82b76f5ff6327b..97c453b9894fe62901459016f006ce4f68e2ed10 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        slider.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxSlider
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
 #ifdef __GNUG__
 #pragma implementation "slider.h"
 #endif
 
-#include "wx/slider.h"
-#include "wx/utils.h"
-
-//-----------------------------------------------------------------------------
-// wxSlider
-//-----------------------------------------------------------------------------
+#include "wx/msw/slider.h"
 
-IMPLEMENT_DYNAMIC_CLASS(wxSlider,wxControl)
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxSlider, wxControl)
+#endif
 
-wxSlider::wxSlider(void)
+// Slider
+wxSlider::wxSlider()
 {
-};
+  m_pageSize = 1;
+  m_lineSize = 1;
+  m_rangeMax = 0;
+  m_rangeMin = 0;
+  m_tickFreq = 0;
+}
 
-wxSlider::wxSlider( wxWindow *parent, wxWindowID id,
-        int value, int minValue, int maxValue,
-        const wxPoint& pos, const wxSize& size,
-        long style,
-/*      const wxValidator& validator = wxDefaultValidator, */
-        const wxString& name )
+bool wxSlider::Create(wxWindow *parent, wxWindowID id,
+           int value, int minValue, int maxValue,
+           const wxPoint& pos,
+           const wxSize& size, long style,
+           const wxValidator& validator,
+           const wxString& name)
 {
-  Create( parent, id, value, minValue, maxValue,
-          pos, size, style, name );
-};
+    SetName(name);
+    SetValidator(validator);
 
-wxSlider::~wxSlider(void)
-{
-};
+    if (parent) parent->AddChild(this);
 
-bool wxSlider::Create(wxWindow *parent, wxWindowID id,
-        int value, int minValue, int maxValue,
-        const wxPoint& pos, const wxSize& size,
-        long style,
-/*      const wxValidator& validator = wxDefaultValidator, */
-        const wxString& name )
-{
-  return TRUE;
-};
+    m_lineSize = 1;
+    m_windowStyle = style;
+    m_tickFreq = 0;
 
-int wxSlider::GetValue(void) const
+    if ( id == -1 )
+           m_windowId = (int)NewControlId();
+    else
+           m_windowId = id;
+
+    m_rangeMax = maxValue;
+    m_rangeMin = minValue;
+
+    m_pageSize = (int)((maxValue-minValue)/10);
+
+    // TODO create slider
+
+    return FALSE;
+}
+
+wxSlider::~wxSlider()
 {
-};
+}
 
-void wxSlider::SetValue( int value )
+int wxSlider::GetValue() const
 {
-};
+    // TODO
+    return 0;
+}
 
-void wxSlider::SetRange( int minValue, int maxValue )
+void wxSlider::SetValue(int value)
 {
-};
+    // TODO
+}
 
-int wxSlider::GetMin(void) const
+void wxSlider::GetSize(int *width, int *height) const
 {
-};
+    // TODO
+}
 
-int wxSlider::GetMax(void) const
+void wxSlider::GetPosition(int *x, int *y) const
 {
-};
+    // TODO
+}
 
-void wxSlider::SetPageSize( int pageSize )
+void wxSlider::SetSize(int x, int y, int width, int height, int sizeFlags)
 {
-};
+    // TODO
+}
 
-int wxSlider::GetPageSize(void) const
+void wxSlider::SetRange(int minValue, int maxValue)
 {
-};
+    m_rangeMin = minValue;
+    m_rangeMax = maxValue;
+
+    // TODO
+}
 
-void wxSlider::SetThumbLength( int len )
+// For trackbars only
+void wxSlider::SetTickFreq(int n, int pos)
 {
-};
+    // TODO
+    m_tickFreq = n;
+}
 
-int wxSlider::GetThumbLength(void) const
+void wxSlider::SetPageSize(int pageSize)
 {
-};
+    // TODO
+    m_pageSize = pageSize;
+}
 
-void wxSlider::SetLineSize( int WXUNUSED(lineSize) )
+int wxSlider::GetPageSize() const
 {
-};
+    return m_pageSize;
+}
 
-int wxSlider::GetLineSize(void) const
+void wxSlider::ClearSel()
 {
-};
+    // TODO
+}
 
-void wxSlider::GetSize( int *x, int *y ) const
+void wxSlider::ClearTicks()
 {
-  wxWindow::GetSize( x, y );
-};
+    // TODO
+}
 
-void wxSlider::SetSize( int x, int y, int width, int height, int sizeFlags )
+void wxSlider::SetLineSize(int lineSize)
 {
-  wxWindow::SetSize( x, y, width, height, sizeFlags );
-};
+    m_lineSize = lineSize;
+    // TODO
+}
 
-void wxSlider::GetPosition( int *x, int *y ) const
+int wxSlider::GetLineSize() const
 {
-  wxWindow::GetPosition( x, y );
-};
+    // TODO
+    return 0;
+}
 
-void wxSlider::SetTick( int WXUNUSED(tickPos) )
+int wxSlider::GetSelEnd() const
 {
-};
+    // TODO
+    return 0;
+}
 
-void wxSlider::SetTickFreq( int WXUNUSED(n), int WXUNUSED(pos) )
+int wxSlider::GetSelStart() const
 {
-};
+    // TODO
+    return 0;
+}
 
-int wxSlider::GetTickFreq(void) const
+void wxSlider::SetSelection(int minPos, int maxPos)
 {
-  return 0;
-};
+    // TODO
+}
 
-void wxSlider::ClearTicks(void)
+void wxSlider::SetThumbLength(int len)
 {
-};
+    // TODO
+}
 
-void wxSlider::SetSelection( int WXUNUSED(minPos), int WXUNUSED(maxPos) )
+int wxSlider::GetThumbLength() const
 {
-};
+    // TODO
+    return 0;
+}
 
-int wxSlider::GetSelEnd(void) const
+void wxSlider::SetTick(int tickPos)
 {
-  return 0;
-};
+    // TODO
+}
 
-int wxSlider::GetSelStart(void) const
+void wxSlider::Command (wxCommandEvent & event)
 {
-  return 0;
-};
+  SetValue (event.GetInt());
+  ProcessCommand (event);
+}
 
-void wxSlider::ClearSel(void)
+bool wxSlider::Show(bool show)
 {
-};
+    // TODO
+    return TRUE;
+}
 
index e4c3e6476b3f037a1cc6b8e9cb64791b1542062e..a67c55846579664d9442eb2c4d7d1d76207e5d56 100644 (file)
@@ -1,10 +1,11 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        statbmp.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxStaticBitmap
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 
 #include "wx/statbmp.h"
 
-//-----------------------------------------------------------------------------
-// wxStaticBitmap
-//-----------------------------------------------------------------------------
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxControl)
+#endif
 
-IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap,wxControl)
+/*
+ * wxStaticBitmap
+ */
 
-wxStaticBitmap::wxStaticBitmap(void)
+bool wxStaticBitmap::Create(wxWindow *parent, wxWindowID id,
+           const wxBitmap& bitmap,
+           const wxPoint& pos,
+           const wxSize& size,
+           long style,
+           const wxString& name)
 {
-};
+    m_messageBitmap = bitmap;
+    SetName(name);
+    if (parent) parent->AddChild(this);
 
-wxStaticBitmap::wxStaticBitmap( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap, 
-      const wxPoint &pos, const wxSize &size, 
-      long style, const wxString &name )
-{
-  Create( parent, id, bitmap, pos, size, style, name );
-};
+    if ( id == -1 )
+           m_windowId = (int)NewControlId();
+    else
+           m_windowId = id;
+
+    m_windowStyle = style;
 
-bool wxStaticBitmap::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap, 
-      const wxPoint &pos, const wxSize &size, 
-      long style, const wxString &name )
+    // TODO: create static bitmap control
+    return FALSE;
+}
+
+void wxStaticBitmap::SetSize(int x, int y, int width, int height, int sizeFlags)
 {
-  return TRUE;
-};
+    // TODO
+}
 
-void wxStaticBitmap::SetBitmap( const wxBitmap &bitmap ) 
+void wxStaticBitmap::SetBitmap(const wxBitmap& bitmap)
 {
-};
+    m_messageBitmap = bitmap;
+
+    // TODO: redraw bitmap
+}
 
index e45dc53560b51d4ebe101fcb1ce8a815f9b28cc5..b239dc738c830175d1f18afc795245ca00b4ecee 100644 (file)
@@ -1,11 +1,12 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        statbox.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
-// Licence:     wxWindows licence
+// Purpose:     wxStaticBox
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
+// Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
 
 #include "wx/statbox.h"
 
-//-----------------------------------------------------------------------------
-// wxStaticBox
-//-----------------------------------------------------------------------------
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxStaticBox, wxControl)
 
-IMPLEMENT_DYNAMIC_CLASS(wxStaticBox,wxControl)
+BEGIN_EVENT_TABLE(wxStaticBox, wxControl)
+       EVT_ERASE_BACKGROUND(wxStaticBox::OnEraseBackground)
+END_EVENT_TABLE()
 
-wxStaticBox::wxStaticBox(void)
+#endif
+
+/*
+ * Static box
+ */
+bool wxStaticBox::Create(wxWindow *parent, wxWindowID id,
+           const wxString& label,
+           const wxPoint& pos,
+           const wxSize& size,
+           long style,
+           const wxString& name)
 {
-};
+    SetName(name);
+
+    if (parent) parent->AddChild(this);
+
+    if ( id == -1 )
+           m_windowId = (int)NewControlId();
+    else
+           m_windowId = id;
 
-wxStaticBox::wxStaticBox( wxWindow *parent, wxWindowID id, const wxString &label,
-      const wxPoint &pos, const wxSize &size,
-      long style, const wxString &name )
+    m_windowStyle = style;
+
+    // TODO: create static box
+    return FALSE;
+}
+
+void wxStaticBox::SetLabel(const wxString& label)
 {
-  Create( parent, id, label, pos, size, style, name );
-};
+    // TODO
+}
 
-bool wxStaticBox::Create( wxWindow *parent, wxWindowID id, const wxString &label,
-      const wxPoint &pos, const wxSize &size,
-      long style, const wxString &name )
+void wxStaticBox::SetSize(int x, int y, int width, int height, int sizeFlags)
 {
-};
+    // TODO
+}
+
index e49ae65bc28771ff53c9010c0e1600f7a56706ef..195882691686319af3ac32ab41087327a479eb40 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        stattext.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxStaticText
+// Author:      AUTHOR
+// Modified by:
+// Created:     04/01/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
 #ifdef __GNUG__
 #pragma implementation "stattext.h"
 #endif
 
-#include "wx/stattext.h"
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+#pragma hdrstop
+#endif
 
-//-----------------------------------------------------------------------------
-// wxStaticText
-//-----------------------------------------------------------------------------
+#ifndef WX_PRECOMP
+#include "wx/app.h"
+#endif
 
-IMPLEMENT_DYNAMIC_CLASS(wxStaticText,wxControl)
+#include "wx/stattext.h"
+#include "wx/msw/private.h"
+#include <stdio.h>
 
-wxStaticText::wxStaticText(void)
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxStaticText, wxControl)
+#endif
+
+bool wxStaticText::Create(wxWindow *parent, wxWindowID id,
+           const wxString& label,
+           const wxPoint& pos,
+           const wxSize& size,
+           long style,
+           const wxString& name)
 {
-};
+  SetName(name);
+  if (parent) parent->AddChild(this);
+
+  SetBackgroundColour(parent->GetDefaultBackgroundColour()) ;
+  SetForegroundColour(parent->GetDefaultForegroundColour()) ;
+
+  if ( id == -1 )
+       m_windowId = (int)NewControlId();
+  else
+       m_windowId = id;
+
+  int x = pos.x;
+  int y = pos.y;
+  int width = size.x;
+  int height = size.y;
+
+  m_windowStyle = style;
+
+  long msStyle = WS_CHILD|WS_VISIBLE;
+  if (m_windowStyle & wxALIGN_CENTRE)
+    msStyle |= SS_CENTER;
+  else if (m_windowStyle & wxALIGN_RIGHT)
+    msStyle |= SS_RIGHT;
+  else
+    msStyle |= SS_LEFT;
+
+  // Even with extended styles, need to combine with WS_BORDER
+  // for them to look right.
+  if ((m_windowStyle & wxSIMPLE_BORDER) || (m_windowStyle & wxRAISED_BORDER) ||
+       (m_windowStyle & wxSUNKEN_BORDER) || (m_windowStyle & wxDOUBLE_BORDER))
+    msStyle |= WS_BORDER;
+
+  HWND static_item = CreateWindowEx(MakeExtendedStyle(m_windowStyle), "STATIC", (const char *)label,
+                         msStyle,
+                         0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId,
+                         wxGetInstance(), NULL);
+
+#if CTL3D
+/*
+  if (!(GetParent()->GetWindowStyleFlag() & wxUSER_COLOURS))
+    Ctl3dSubclassCtl(static_item);
+*/
+#endif
+
+  m_hWnd = (WXHWND)static_item;
+
+  SubclassWin((WXHWND)static_item);
+
+  SetFont(* parent->GetFont());
+  SetSize(x, y, width, height);
+  return TRUE;
+}
 
-wxStaticText::wxStaticText( wxWindow *parent, wxWindowID id, const wxString &label, 
-      const wxPoint &pos, const wxSize &size, 
-      long style, const wxString &name )
+void wxStaticText::SetSize(int x, int y, int width, int height, int sizeFlags)
 {
-  Create( parent, id, label, pos, size, style, name );
-};
+  int currentX, currentY;
+  GetPosition(&currentX, &currentY);
+  int x1 = x;
+  int y1 = y;
 
-bool wxStaticText::Create( wxWindow *parent, wxWindowID id, const wxString &label, 
-      const wxPoint &pos, const wxSize &size, 
-      long style, const wxString &name )
+  if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
+    x1 = currentX;
+  if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
+    y1 = currentY;
+
+  AdjustForParentClientOrigin(x1, y1, sizeFlags);
+
+  int actualWidth = width;
+  int actualHeight = height;
+
+  char buf[300];
+  int current_width;
+  int cyf;
+
+  ::GetWindowText((HWND) GetHWND(), buf, 300);
+  GetTextExtent(buf, &current_width, &cyf, NULL, NULL,GetFont());
+
+  int ww, hh;
+  GetSize(&ww, &hh);
+
+  // If we're prepared to use the existing width, then...
+  if (width == -1 && ((sizeFlags & wxSIZE_AUTO_WIDTH) != wxSIZE_AUTO_WIDTH))
+    actualWidth = ww;
+  else if (width == -1)
+  {
+    int cx;
+    int cy;
+    wxGetCharSize(GetHWND(), &cx, &cy,GetFont());
+    actualWidth = (int)(current_width + cx) ;
+  }
+
+  // If we're prepared to use the existing height, then...
+  if (height == -1 && ((sizeFlags & wxSIZE_AUTO_HEIGHT) != wxSIZE_AUTO_HEIGHT))
+    actualHeight = hh;
+  else if (height == -1)
+  {
+    actualHeight = (int)(cyf) ;
+  }
+
+  MoveWindow((HWND) GetHWND(), x1, y1, actualWidth, actualHeight, TRUE);
+}
+
+void wxStaticText::SetLabel(const wxString& label)
 {
-  return TRUE;
-};
+  int w, h;
+  RECT rect;
+
+  wxWindow *parent = GetParent();
+  GetWindowRect((HWND) GetHWND(), &rect);
 
-wxString wxStaticText::GetLabel(void) const
+  // Since we now have the absolute screen coords,
+  // if there's a parent we must subtract its top left corner
+  POINT point;
+  point.x = rect.left;
+  point.y = rect.top;
+  if (parent)
+  {
+    ::ScreenToClient((HWND) parent->GetHWND(), &point);
+  }
+
+  GetTextExtent(label, &w, &h, NULL, NULL, GetFont());
+  MoveWindow((HWND) GetHWND(), point.x, point.y, (int)(w + 10), (int)h,
+             TRUE);
+  SetWindowText((HWND) GetHWND(), (const char *)label);
+}
+
+WXHBRUSH wxStaticText::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
+                       WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
 {
-};
+/*
+#if CTL3D
+  if ( m_useCtl3D )
+  {
+    HBRUSH hbrush = Ctl3dCtlColorEx(message, wParam, lParam);
+      
+    if (hbrush != (HBRUSH) 0)
+      return hbrush;
+    else
+      return (HBRUSH)MSWDefWindowProc(message, wParam, lParam);
+  }
+#endif
+*/
+
+  if (GetParent()->GetTransparentBackground())
+    SetBkMode((HDC) pDC, TRANSPARENT);
+  else
+    SetBkMode((HDC) pDC, OPAQUE);
+
+  ::SetBkColor((HDC) pDC, RGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue()));
+  ::SetTextColor((HDC) pDC, RGB(GetForegroundColour().Red(), GetForegroundColour().Green(), GetForegroundColour().Blue()));
 
-void wxStaticText::SetLabel( const wxString &label )
+  wxBrush *backgroundBrush = wxTheBrushList->FindOrCreateBrush(GetBackgroundColour(), wxSOLID);
+
+  // Note that this will be cleaned up in wxApp::OnIdle, if backgroundBrush
+  // has a zero usage count.
+//  backgroundBrush->RealizeResource();
+  return (WXHBRUSH) backgroundBrush->GetResourceHandle();
+}
+
+long wxStaticText::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
 {
-  wxControl::SetLabel(label);
-};
+  // Ensure that static items get messages. Some controls don't like this
+  // message to be intercepted (e.g. RichEdit), hence the tests.
+  if (nMsg == WM_NCHITTEST)
+    return (long)HTCLIENT;
+
+  return wxWindow::MSWWindowProc(nMsg, wParam, lParam);
+}
+
+
index 7168de80cc497930a097d291ed6300852a8f6122..fb522df053e0a2194d09960b39f1ab56b0692330 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        textctrl.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
-// Licence:     wxWindows licence
+// Purpose:     wxTextCtrl
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
+// Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
 #pragma implementation "textctrl.h"
 #endif
 
-#include "wx/textctrl.h"
-#include "wx/utils.h"
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fstream.h>
 
-//-----------------------------------------------------------------------------
-//  wxTextCtrl
-//-----------------------------------------------------------------------------
+#include "wx/textctrl.h"
+#include "wx/settings.h"
 
-IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl,wxControl)
+#if defined(__BORLANDC__) && !defined(__WIN32__)
+#include <alloc.h>
+#else
+#ifndef __GNUWIN32__
+#include <malloc.h>
+#endif
+#endif
 
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl)
 
 BEGIN_EVENT_TABLE(wxTextCtrl, wxControl)
-//  EVT_CHAR(wxTextCtrl::OnChar)
+       EVT_CHAR(wxTextCtrl::OnChar)
+       EVT_DROP_FILES(wxTextCtrl::OnDropFiles)
+       EVT_ERASE_BACKGROUND(wxTextCtrl::OnEraseBackground)
 END_EVENT_TABLE()
+#endif
 
-wxTextCtrl::wxTextCtrl(void) : streambuf()
+// Text item
+wxTextCtrl::wxTextCtrl()
+#ifndef NO_TEXT_WINDOW_STREAM
+ :streambuf()
+#endif
 {
-    if( allocate() )
-  setp(base(),ebuf());
-
-  m_modified = FALSE;
-};
+    m_fileName = "";
+}
 
-wxTextCtrl::wxTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value,
-      const wxPoint &pos, const wxSize &size,
-      int style, const wxString &name ) : streambuf()
+bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
+                  const wxString& value,
+           const wxPoint& pos,
+           const wxSize& size, long style,
+           const wxValidator& validator,
+           const wxString& name)
 {
-  if( allocate() )
-    setp(base(),ebuf());
+    m_fileName = "";
+    SetName(name);
+    SetValidator(validator);
+    if (parent) parent->AddChild(this);
+
+    m_windowStyle = style;
 
-  m_modified = FALSE;
-  Create( parent, id, value, pos, size, style, name );
-};
+    if ( id == -1 )
+           m_windowId = (int)NewControlId();
+    else
+           m_windowId = id;
 
-bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
-      const wxPoint &pos, const wxSize &size,
-      int style, const wxString &name )
+    return TRUE;
+}
+
+wxString wxTextCtrl::GetValue() const
 {
-  return TRUE;
-};
+    // TODO
+    return wxString("");
+}
 
-wxString wxTextCtrl::GetValue(void) const
+void wxTextCtrl::SetValue(const wxString& value)
 {
-  return tmp;
-};
+    // TODO
+}
 
-void wxTextCtrl::SetValue( const wxString &value )
+void wxTextCtrl::SetSize(int x, int y, int width, int height, int sizeFlags)
 {
-};
+    // TODO
+}
 
-void wxTextCtrl::WriteText( const wxString &text )
+// Clipboard operations
+void wxTextCtrl::Copy()
 {
-};
+    // TODO
+}
 
-bool wxTextCtrl::LoadFile( const wxString &WXUNUSED(file) )
+void wxTextCtrl::Cut()
 {
-  return FALSE;
-};
+    // TODO
+}
 
-bool wxTextCtrl::SaveFile( const wxString &WXUNUSED(file) )
+void wxTextCtrl::Paste()
 {
-  return FALSE;
-};
+    // TODO
+}
 
-/*
-wxString wxTextCtrl::GetLineText( long lineNo ) const
+void wxTextCtrl::SetEditable(bool editable)
 {
-};
+    // TODO
+}
 
+void wxTextCtrl::SetInsertionPoint(long pos)
+{
+    // TODO
+}
 
-void wxTextCtrl::OnDropFiles( wxDropFilesEvent &event )
+void wxTextCtrl::SetInsertionPointEnd()
 {
-};
+    long pos = GetLastPosition();
+    SetInsertionPoint(pos);
+}
 
-long wxTextCtrl::PositionToXY( long pos, long *x, long *y ) const
+long wxTextCtrl::GetInsertionPoint() const
 {
-};
+    // TODO
+    return 0;
+}
 
-long wxTextCtrl::XYToPosition( long x, long y )
+long wxTextCtrl::GetLastPosition() const
 {
-};
+    // TODO
+    return 0;
+}
 
-int wxTextCtrl::GetNumberOfLines(void)
+void wxTextCtrl::Replace(long from, long to, const wxString& value)
 {
-};
+    // TODO
+    return 0;
+}
 
-*/
-void wxTextCtrl::SetInsertionPoint( long pos )
+void wxTextCtrl::Remove(long from, long to)
 {
-};
+    // TODO
+}
 
-void wxTextCtrl::SetInsertionPointEnd(void)
+void wxTextCtrl::SetSelection(long from, long to)
 {
-};
+    // TODO
+}
+
+bool wxTextCtrl::LoadFile(const wxString& file)
+{
+    if (!wxFileExists(file))
+        return FALSE;
+
+    m_fileName = file;
+
+    Clear();
+
+    ifstream input((char*) (const char*) file, ios::nocreate | ios::in);
+
+    if (!input.bad())
+    {
+        struct stat stat_buf;
+        if (stat(file, &stat_buf) < 0)
+            return FALSE;
+        // This may need to be a bigger buffer than the file size suggests,
+        // if it's a UNIX file. Give it an extra 1000 just in case.
+        char *tmp_buffer = (char*)malloc((size_t)(stat_buf.st_size+1+1000));
+        long no_lines = 0;
+        long pos = 0;
+        while (!input.eof() && input.peek() != EOF)
+        {
+            input.getline(wxBuffer, 500);
+               int len = strlen(wxBuffer);
+               wxBuffer[len] = 13;
+               wxBuffer[len+1] = 10;
+               wxBuffer[len+2] = 0;
+               strcpy(tmp_buffer+pos, wxBuffer);
+               pos += strlen(wxBuffer);
+               no_lines++;
+         }
+
+         // TODO add line
+
+         free(tmp_buffer);
+
+         return TRUE;
+    }
+    return FALSE;
+}
 
-void wxTextCtrl::SetEditable( bool editable )
+// If file is null, try saved file name first
+// Returns TRUE if succeeds.
+bool wxTextCtrl::SaveFile(const wxString& file)
 {
-};
+    wxString theFile(file);
+    if (theFile == "")
+        theFile = m_fileName;
+    if (theFile == "")
+        return FALSE;
+    m_fileName = theFile;
+
+    ofstream output((char*) (const char*) theFile);
+    if (output.bad())
+           return FALSE;
+
+    // TODO get and save text
+
+    return FALSE;
+}
 
-void wxTextCtrl::SetSelection( long from, long to )
+void wxTextCtrl::WriteText(const wxString& text)
 {
-};
+    // TODO write text to control
+}
 
-void wxTextCtrl::ShowPosition( long WXUNUSED(pos) )
+void wxTextCtrl::Clear()
 {
-};
+    // TODO
+}
 
-long wxTextCtrl::GetInsertionPoint(void) const
+bool wxTextCtrl::IsModified() const
 {
-};
+    // TODO
+    return FALSE;
+}
 
-long wxTextCtrl::GetLastPosition(void) const
+// Makes 'unmodified'
+void wxTextCtrl::DiscardEdits()
 {
-};
+    // TODO
+}
 
-void wxTextCtrl::Remove( long from, long to )
+int wxTextCtrl::GetNumberOfLines() const
 {
-};
+    // TODO
+    return 0;
+}
 
-void wxTextCtrl::Replace( long from, long to, const wxString &value )
+long wxTextCtrl::XYToPosition(long x, long y) const
 {
-};
+    // TODO
+    return 0;
+}
 
-void wxTextCtrl::Cut(void)
+void wxTextCtrl::PositionToXY(long pos, long *x, long *y) const
 {
-};
+    // TODO
+}
 
-void wxTextCtrl::Copy(void)
+void wxTextCtrl::ShowPosition(long pos)
 {
-};
+    // TODO
+}
 
-void wxTextCtrl::Paste(void)
+int wxTextCtrl::GetLineLength(long lineNo) const
 {
-};
+    // TODO
+    return 0;
+}
 
-void wxTextCtrl::Delete(void)
+wxString wxTextCtrl::GetLineText(long lineNo) const
 {
-};
+    // TODO
+    return wxString("");
+}
 
-void wxTextCtrl::OnChar( wxKeyEvent &WXUNUSED(event) )
+/*
+ * Text item
+ */
+void wxTextCtrl::Command(wxCommandEvent & event)
 {
-};
+    SetValue (event.GetString());
+    ProcessCommand (event);
+}
 
-int wxTextCtrl::overflow( int WXUNUSED(c) )
+void wxTextCtrl::OnDropFiles(wxDropFilesEvent& event)
 {
-  int len = pptr() - pbase();
-  char *txt = new char[len+1];
-  strncpy(txt, pbase(), len);
-  txt[len] = '\0';
-  (*this) << txt;
+    // By default, load the first file into the text window.
+    if (event.GetNumberOfFiles() > 0)
+    {
+        LoadFile(event.GetFiles()[0]);
+    }
+}
+
+// The streambuf code was partly taken from chapter 3 by Jerry Schwarz of
+// AT&T's "C++ Lanuage System Release 3.0 Library Manual" - Stein Somers
+
+//=========================================================================
+// Called then the buffer is full (gcc 2.6.3) 
+// or when "endl" is output (Borland 4.5)
+//=========================================================================
+// Class declaration using multiple inheritance doesn't work properly for
+// Borland. See note in wb_text.h.
+#ifndef NO_TEXT_WINDOW_STREAM
+int wxTextCtrl::overflow(int c)
+{
+  // Make sure there is a holding area
+  if ( allocate()==EOF )
+  {
+    wxError("Streambuf allocation failed","Internal error");
+    return EOF;
+  }
+  
+  // Verify that there are no characters in get area
+  if ( gptr() && gptr() < egptr() )
+  {
+     wxError("Who's trespassing my get area?","Internal error");
+     return EOF;
+  }
+
+  // Reset get area
+  setg(0,0,0);
+
+  // Make sure there is a put area
+  if ( ! pptr() )
+  {
+/* This doesn't seem to be fatal so comment out error message */
+//    wxError("Put area not opened","Internal error");
+    setp( base(), base() );
+  }
+
+  // Determine how many characters have been inserted but no consumed
+  int plen = pptr() - pbase();
+
+  // Now Jerry relies on the fact that the buffer is at least 2 chars
+  // long, but the holding area "may be as small as 1" ???
+  // And we need an additional \0, so let's keep this inefficient but
+  // safe copy.
+
+  // If c!=EOF, it is a character that must also be comsumed
+  int xtra = c==EOF? 0 : 1;
+
+  // Write temporary C-string to wxTextWindow
+  {
+  char *txt = new char[plen+xtra+1];
+  memcpy(txt, pbase(), plen);
+  txt[plen] = (char)c;     // append c
+  txt[plen+xtra] = '\0';   // append '\0' or overwrite c
+    // If the put area already contained \0, output will be truncated there
+  WriteText(txt);
+    delete[] txt;
+  }
+
+  // Reset put area
   setp(pbase(), epptr());
-  delete[] txt;
-  return EOF;
-};
 
-int wxTextCtrl::sync(void)
+#if defined(__WATCOMC__)
+  return __NOT_EOF;
+#elif defined(zapeof)     // HP-UX (all cfront based?)
+  return zapeof(c);
+#else
+  return c!=EOF ? c : 0;  // this should make everybody happy
+#endif
+}
+
+//=========================================================================
+// called then "endl" is output (gcc) or then explicit sync is done (Borland)
+//=========================================================================
+int wxTextCtrl::sync()
 {
+  // Verify that there are no characters in get area
+  if ( gptr() && gptr() < egptr() )
+  {
+     wxError("Who's trespassing my get area?","Internal error");
+     return EOF;
+  }
+
+  if ( pptr() && pptr() > pbase() ) return overflow(EOF);
+
+  return 0;
+/* OLD CODE
   int len = pptr() - pbase();
   char *txt = new char[len+1];
   strncpy(txt, pbase(), len);
@@ -176,60 +377,63 @@ int wxTextCtrl::sync(void)
   setp(pbase(), epptr());
   delete[] txt;
   return 0;
-};
+*/
+}
 
-int wxTextCtrl::underflow(void)
+//=========================================================================
+// Should not be called by a "ostream". Used by a "istream"
+//=========================================================================
+int wxTextCtrl::underflow()
 {
   return EOF;
-};
+}
+#endif
 
 wxTextCtrl& wxTextCtrl::operator<<(const wxString& s)
 {
-  WriteText(s);
-  return *this;
+    WriteText(s);
+    return *this;
 }
 
 wxTextCtrl& wxTextCtrl::operator<<(float f)
 {
-  static char buf[100];
-  sprintf(buf, "%.2f", f);
-  WriteText(buf);
-  return *this;
+    wxString str;
+    str.Printf("%.2f", f);
+    WriteText(str);
+    return *this;
 }
 
 wxTextCtrl& wxTextCtrl::operator<<(double d)
 {
-  static char buf[100];
-  sprintf(buf, "%.2f", d);
-  WriteText(buf);
-  return *this;
+    wxString str;
+    str.Printf("%.2f", d);
+    WriteText(str);
+    return *this;
 }
 
 wxTextCtrl& wxTextCtrl::operator<<(int i)
 {
-  static char buf[100];
-  sprintf(buf, "%i", i);
-  WriteText(buf);
-  return *this;
+    wxString str;
+    str.Printf("%d", i);
+    WriteText(str);
+    return *this;
 }
 
 wxTextCtrl& wxTextCtrl::operator<<(long i)
 {
-  static char buf[100];
-  sprintf(buf, "%ld", i);
-  WriteText(buf);
-  return *this;
+    wxString str;
+    str.Printf("%ld", i);
+    WriteText(str);
+    return *this;
 }
 
 wxTextCtrl& wxTextCtrl::operator<<(const char c)
 {
-  char buf[2];
+    char buf[2];
 
-  buf[0] = c;
-  buf[1] = 0;
-  WriteText(buf);
-  return *this;
+    buf[0] = c;
+    buf[1] = 0;
+    WriteText(buf);
+    return *this;
 }
 
-
-  
index e8b08d3ca478ab0e90c98d6a49d6e0d6f548a642..f976056c779c976d191a0fad3cea64781a921a8d 100644 (file)
@@ -1,66 +1,56 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        timer.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose:     wxTimer implementation
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
 #ifdef __GNUG__
 #pragma implementation "timer.h"
 #endif
 
 #include "wx/timer.h"
 
-//-----------------------------------------------------------------------------
-// wxTimer
-//-----------------------------------------------------------------------------
-
-IMPLEMENT_DYNAMIC_CLASS(wxTimer,wxObject)
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject)
+#endif
 
-gint timeout_callback( gpointer data )
+wxTimer::wxTimer()
 {
-  wxTimer *timer = (wxTimer*)data;
-  timer->Notify();
-  if (timer->OneShot()) timer->Stop();
-  return TRUE;
-};
+    m_milli = 0 ;
+    m_lastMilli = -1 ;
+    m_id = 0;
+    m_oneShot = FALSE;
+}
 
-wxTimer::wxTimer(void)
+wxTimer::~wxTimer()
 {
-  m_time = 1000;
-  m_oneShot = FALSE;
-};
+    Stop();
+}
 
-wxTimer::~wxTimer(void)
+bool wxTimer::Start(int milliseconds,bool mode)
 {
-  Stop();
-};
+    m_oneShot = mode ;
+    if (m_milliseconds < 0)
+        m_milliseconds = lastMilli;
 
-int wxTimer::Interval(void)
-{
-  return m_time;
-};
+    if (m_milliseconds <= 0)
+        return FALSE;
 
-bool wxTimer::OneShot(void)
-{
-  return m_oneShot;
-};
+    m_lastMilli = m_milli = m_milliseconds;
 
-void wxTimer::Notify(void)
-{
-};
+    // TODO: set the timer going.
+    return FALSE;
+}
 
-void wxTimer::Start( int millisecs, bool oneShot )
+void wxTimer::Stop()
 {
-  if (millisecs != -1) m_time = millisecs;
-  m_oneShot = oneShot;
-};
+    m_id = 0 ;
+    m_milli = 0 ;
+}
 
-void wxTimer::Stop(void)
-{
-};
 
index b2d90fbb126880249e35900acda4b93c68022dcf..341ad00e51f48f6cd54fe5a6360230f026a71e30 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
-// Name:        window.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
-// Licence:     wxWindows licence
+// Name:        windows.cpp
+// Purpose:     wxWindow
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
+// Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-
 #ifdef __GNUG__
 #pragma implementation "window.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/window.h"
+#include "wx/setup.h"
+#include "wx/menu.h"
 #include "wx/dc.h"
-#include "wx/frame.h"
+#include "wx/dcclient.h"
+#include "wx/utils.h"
 #include "wx/app.h"
+#include "wx/panel.h"
 #include "wx/layout.h"
-#include "wx/utils.h"
 #include "wx/dialog.h"
+#include "wx/listbox.h"
+#include "wx/button.h"
+#include "wx/settings.h"
 #include "wx/msgdlg.h"
-#include "wx/dcclient.h"
+
+#include "wx/menuitem.h"
+#include "wx/log.h"
+
+#if  USE_DRAG_AND_DROP
 #include "wx/dnd.h"
-#include "wx/mdi.h"
-#include "wx/notebook.h"
-#include "wx/statusbr.h"
-#include <math.h>
+#endif
 
-//-----------------------------------------------------------------------------
-// data
-//-----------------------------------------------------------------------------
+#include <string.h>
 
 extern wxList wxPendingDelete;
-extern wxList wxTopLevelWindows;
 
-//-----------------------------------------------------------------------------
-// wxWindow implementation
-//-----------------------------------------------------------------------------
-
-IMPLEMENT_DYNAMIC_CLASS(wxWindow,wxEvtHandler)
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxEvtHandler)
 
 BEGIN_EVENT_TABLE(wxWindow, wxEvtHandler)
-  EVT_SIZE(wxWindow::OnSize)
+  EVT_CHAR(wxWindow::OnChar)
+  EVT_ERASE_BACKGROUND(wxWindow::OnEraseBackground)
   EVT_SYS_COLOUR_CHANGED(wxWindow::OnSysColourChanged)
   EVT_INIT_DIALOG(wxWindow::OnInitDialog)
   EVT_IDLE(wxWindow::OnIdle)
 END_EVENT_TABLE()
 
+#endif
+
+
+// Constructor
 wxWindow::wxWindow()
 {
-  m_parent = NULL;
-  m_children.DeleteContents( FALSE );
-  m_x = 0;
-  m_y = 0;
-  m_width = 0;
-  m_height = 0;
-  m_retCode = 0;
-  m_eventHandler = this;
-  m_windowValidator = NULL;
-  m_windowId = -1;
-  m_cursor = new wxCursor( wxCURSOR_ARROW );
-  m_font = *wxSWISS_FONT;
-  m_windowStyle = 0;
-  m_windowName = "noname";
-  m_constraints = NULL;
-  m_constraintsInvolvedIn = NULL;
-  m_windowSizer = NULL;
-  m_sizerParent = NULL;
-  m_autoLayout = FALSE;
-  m_pDropTarget = NULL;
-};
-
-wxWindow::wxWindow( wxWindow *parent, wxWindowID id,
-      const wxPoint &pos, const wxSize &size,
-      long style, const wxString &name )
-{
-  Create( parent, id, pos, size, style, name );
-};
-
-bool wxWindow::Create( wxWindow *parent, wxWindowID id,
-      const wxPoint &pos, const wxSize &size,
-      long style, const wxString &name )
-{
-  return TRUE;  
-};
-
-wxWindow::~wxWindow(void)
-{
-  DestroyChildren();
-  
-//  delete m_cursor;
-
-  DeleteRelatedConstraints();
-  if (m_constraints)
-  {
-    // This removes any dangling pointers to this window
-    // in other windows' constraintsInvolvedIn lists.
-    UnsetConstraints(m_constraints);
-    delete m_constraints;
+    // Generic
+    m_windowId = 0;
+    m_windowStyle = 0;
+    m_windowParent = NULL;
+    m_windowEventHandler = this;
+    m_windowName = "";
+    m_windowCursor = *wxSTANDARD_CURSOR;
+    m_children = new wxList;
     m_constraints = NULL;
-  }
-  if (m_windowSizer)
-  {
-    delete m_windowSizer;
+    m_constraintsInvolvedIn = NULL;
     m_windowSizer = NULL;
-  }
-  // If this is a child of a sizer, remove self from parent
-  if (m_sizerParent)
-    m_sizerParent->RemoveChild((wxWindow *)this);
-
-  // Just in case the window has been Closed, but
-  // we're then deleting immediately: don't leave
-  // dangling pointers.
-  wxPendingDelete.DeleteObject(this);
-
-  // Just in case we've loaded a top-level window via
-  // wxWindow::LoadNativeDialog but we weren't a dialog
-  // class
-  wxTopLevelWindows.DeleteObject(this);
-    
-};
+    m_sizerParent = NULL;
+    m_autoLayout = FALSE;
+    m_windowValidator = NULL;
+    m_defaultItem = NULL;
+    m_returnCode = 0;
+    m_caretWidth = 0; m_caretHeight = 0;
+    m_caretEnabled = FALSE;
+    m_caretShown = FALSE;
+    m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) ; ;
+    m_foregroundColour = *wxBLACK;
+    m_defaultForegroundColour = *wxBLACK ;
+    m_defaultBackgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE) ;
+
+#if  USE_DRAG_AND_DROP
+    m_pDropTarget = NULL;
+#endif
+}
 
-bool wxWindow::Close( bool force )
+// Destructor
+wxWindow::~wxWindow()
 {
-  wxCloseEvent event(wxEVT_CLOSE_WINDOW, m_windowId);
-  event.SetEventObject(this);
-  event.SetForce(force);
+       // Have to delete constraints/sizer FIRST otherwise
+       // sizers may try to look at deleted windows as they
+       // delete themselves.
+#if USE_CONSTRAINTS
+    DeleteRelatedConstraints();
+    if (m_constraints)
+    {
+        // This removes any dangling pointers to this window
+        // in other windows' constraintsInvolvedIn lists.
+        UnsetConstraints(m_constraints);
+        delete m_constraints;
+        m_constraints = NULL;
+    }
+    if (m_windowSizer)
+    {
+        delete m_windowSizer;
+        m_windowSizer = NULL;
+    }
+    // If this is a child of a sizer, remove self from parent
+    if (m_sizerParent)
+        m_sizerParent->RemoveChild((wxWindow *)this);
+#endif
 
-  return GetEventHandler()->ProcessEvent(event);
-};
+    if (m_windowParent)
+        m_windowParent->RemoveChild(this);
 
-bool wxWindow::Destroy(void)
-{
-  m_hasVMT = FALSE;
-  delete this;
-  return TRUE;
-};
+    DestroyChildren();
+
+    // TODO: destroy the window
 
-bool wxWindow::DestroyChildren(void)
+    delete m_children;
+    m_children = NULL;
+
+    // Just in case the window has been Closed, but
+    // we're then deleting immediately: don't leave
+    // dangling pointers.
+    wxPendingDelete.DeleteObject(this);
+
+    if ( m_windowValidator )
+           delete m_windowValidator;
+}
+
+// Destroy the window (delayed, if a managed window)
+bool wxWindow::Destroy()
 {
-  if (GetChildren()) 
-  {
-    wxNode *node;
-    while ((node = GetChildren()->First()) != (wxNode *)NULL) 
-    {
-      wxWindow *child;
-      if ((child = (wxWindow *)node->Data()) != (wxWindow *)NULL) 
-      {
-        delete child;
-  if (GetChildren()->Member(child)) delete node;
-      };
-    };
-  };
-  return TRUE;
-};
+    delete this;
+    return TRUE;
+}
+
+// Constructor
+bool wxWindow::Create(wxWindow *parent, wxWindowID id,
+           const wxPoint& pos,
+           const wxSize& size,
+           long style,
+           const wxString& name)
+{
+    // Generic
+    m_windowId = 0;
+    m_windowStyle = 0;
+    m_windowParent = NULL;
+    m_windowEventHandler = this;
+    m_windowName = "";
+    m_windowCursor = *wxSTANDARD_CURSOR;
+    m_constraints = NULL;
+    m_constraintsInvolvedIn = NULL;
+    m_windowSizer = NULL;
+    m_sizerParent = NULL;
+    m_autoLayout = FALSE;
+    m_windowValidator = NULL;
+
+#if USE_DRAG_AND_DROP
+    m_pDropTarget = NULL;
+#endif
+
+    m_caretWidth = 0; m_caretHeight = 0;
+    m_caretEnabled = FALSE;
+    m_caretShown = FALSE;
+    m_minSizeX = -1;
+    m_minSizeY = -1;
+    m_maxSizeX = -1;
+    m_maxSizeY = -1;
+    m_defaultItem = NULL;
+    m_windowParent = NULL;
+    if (!parent)
+        return FALSE;
+
+    if (parent) parent->AddChild(this);
+
+    m_returnCode = 0;
+
+    SetName(name);
+
+    if ( id == -1 )
+       m_windowId = (int)NewControlId();
+    else
+       m_windowId = id;
+
+    m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) ; ;
+    m_foregroundColour = *wxBLACK;
+    m_defaultForegroundColour = *wxBLACK ;
+    m_defaultBackgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE) ;
+
+    m_windowStyle = style;
 
-void wxWindow::PrepareDC( wxDC &WXUNUSED(dc) )
+    if ( id == -1 )
+       m_windowId = (int)NewControlId();
+    else
+       m_windowId = id;
+
+    // TODO: create the window
+
+    return TRUE;
+}
+
+void wxWindow::SetFocus()
 {
-  // are we to set fonts here ?
-};
+    // TODO
+}
 
-void wxWindow::SetSize( int x, int y, int width, int height, int sizeFlags )
+void wxWindow::Enable(bool enable)
 {
-  
-  int newX = x;
-  int newY = y;
-  int newW = width;
-  int newH = height;
-  
-  if ((sizeFlags & wxSIZE_USE_EXISTING) == wxSIZE_USE_EXISTING)
-  {
-    if (newX == -1) newX = m_x;
-    if (newY == -1) newY = m_y;
-    if (newW == -1) newW = m_width;
-    if (newH == -1) newH = m_height;
-  };
-  
-  if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH)
-  {
-    if (newW == -1) newW = 80;
-  };
-  
-  if ((sizeFlags & wxSIZE_AUTO_HEIGHT) == wxSIZE_AUTO_HEIGHT)
-  {
-    if (newH == -1) newH = 26;
-  };
-  
-  if ((m_x != newX) || (m_y != newY) || (!m_sizeSet))
-  {
-    m_x = newX;
-    m_y = newY;
-    //
-  };
-  if ((m_width != newW) || (m_height != newH) || (!m_sizeSet))
-  {
-    m_width = newW;
-    m_height = newH;
-    //
-  };
-  
-  wxSizeEvent event( wxSize(m_width,m_height), GetId() );
-  event.SetEventObject( this );
-  ProcessEvent( event );
-};
+    // TODO
+}
 
-void wxWindow::SetSize( int width, int height )
+void wxWindow::CaptureMouse()
 {
-  SetSize( -1, -1, width, height, wxSIZE_USE_EXISTING );
-};
+    // TODO
+}
 
-void wxWindow::Move( int x, int y )
+void wxWindow::ReleaseMouse()
 {
-  SetSize( x, y, -1, -1, wxSIZE_USE_EXISTING );
-};
+    // TODO
+}
 
-void wxWindow::GetSize( int *width, int *height ) const
+// Push/pop event handler (i.e. allow a chain of event handlers
+// be searched)
+void wxWindow::PushEventHandler(wxEvtHandler *handler)
 {
-  if (width) (*width) = m_width;
-  if (height) (*height) = m_height;
-};
+       handler->SetNextHandler(GetEventHandler());
+       SetEventHandler(handler);
+}
 
-void wxWindow::SetClientSize( int width, int height )
+wxEvtHandler *wxWindow::PopEventHandler(bool deleteHandler)
+{
+       if ( GetEventHandler() )
+       {
+               wxEvtHandler *handlerA = GetEventHandler();
+               wxEvtHandler *handlerB = handlerA->GetNextHandler();
+               handlerA->SetNextHandler(NULL);
+               SetEventHandler(handlerB);
+               if ( deleteHandler )
+               {
+                       delete handlerA;
+                       return NULL;
+               }
+               else
+                       return handlerA;
+       }
+       else
+               return NULL;
+}
+
+#if    USE_DRAG_AND_DROP
+
+void wxWindow::SetDropTarget(wxDropTarget *pDropTarget)
 {
-};
+  if ( m_pDropTarget != 0 ) {
+    m_pDropTarget->Revoke(m_hWnd);
+    delete m_pDropTarget;
+  }
 
-void wxWindow::GetClientSize( int *width, int *height ) const
+  m_pDropTarget = pDropTarget;
+  if ( m_pDropTarget != 0 )
+    m_pDropTarget->Register(m_hWnd);
+}
+
+#endif
+
+// Old style file-manager drag&drop
+void wxWindow::DragAcceptFiles(bool accept)
 {
-};
+    // TODO
+}
 
-void wxWindow::GetPosition( int *x, int *y ) const
+// Get total size
+void wxWindow::GetSize(int *x, int *y) const
 {
-  if (x) (*x) = m_x;
-  if (y) (*y) = m_y;
-};
+    // TODO
+}
 
-void wxWindow::ClientToScreen( int *x, int *y )
+void wxWindow::GetPosition(int *x, int *y) const
 {
-};
+    // TODO
+}
 
-void wxWindow::ScreenToClient( int *x, int *y )
+void wxWindow::ScreenToClient(int *x, int *y) const
 {
-};
+    // TODO
+}
 
-void wxWindow::Centre( int direction )
+void wxWindow::ClientToScreen(int *x, int *y) const
 {
-};
+    // TODO
+}
 
-void wxWindow::Fit(void)
+void wxWindow::SetCursor(const wxCursor& cursor)
 {
-  int maxX = 0;
-  int maxY = 0;
-  wxNode *node = GetChildren()->First();
-  while ( node )
+  m_windowCursor = cursor;
+  if (m_windowCursor.Ok())
   {
-    wxWindow *win = (wxWindow *)node->Data();
-    int wx, wy, ww, wh;
-    win->GetPosition(&wx, &wy);
-    win->GetSize(&ww, &wh);
-    if ( wx + ww > maxX )
-      maxX = wx + ww;
-    if ( wy + wh > maxY )
-      maxY = wy + wh;
-
-    node = node->Next();
+    // TODO
   }
-  SetClientSize(maxX + 5, maxY + 10);
-};
+}
 
-void wxWindow::OnSize( wxSizeEvent &WXUNUSED(event) )
-{
-  //if (GetAutoLayout()) Layout();
-};
 
-bool wxWindow::Show( bool show )
+// Get size *available for subwindows* i.e. excluding menu bar etc.
+void wxWindow::GetClientSize(int *x, int *y) const
 {
-  return TRUE;
-};
+    // TODO
+}
 
-void wxWindow::Enable( bool enable )
+void wxWindow::SetSize(int x, int y, int width, int height, int sizeFlags)
 {
-  m_isEnabled = enable;
-};
+    // TODO
+}
 
-void wxWindow::MakeModal( bool modal )
+void wxWindow::SetClientSize(int width, int height)
 {
+    // TODO
 }
 
-void wxWindow::SetFocus(void)
+// For implementation purposes - sometimes decorations make the client area
+// smaller
+wxPoint wxWindow::GetClientAreaOrigin() const
 {
-};
+    return wxPoint(0, 0);
+}
 
-bool wxWindow::OnClose(void)
+// Makes an adjustment to the window position (for example, a frame that has
+// a toolbar that it manages itself).
+void wxWindow::AdjustForParentClientOrigin(int& x, int& y, int sizeFlags)
 {
-  return TRUE;
-};
+    if (((sizeFlags & wxSIZE_NO_ADJUSTMENTS) == 0) && GetParent())
+    {
+        wxPoint pt(GetParent()->GetClientAreaOrigin());
+        x += pt.x; y += pt.y;
+    }
+}
 
-void wxWindow::AddChild( wxWindow *child )
+bool wxWindow::Show(bool show)
 {
-};
+    // TODO
+    return FALSE;
+}
 
-wxList *wxWindow::GetChildren(void)
+bool wxWindow::IsShown() const
 {
-  return (&m_children);
-};
+    // TODO
+    return FALSE;
+}
 
-void wxWindow::RemoveChild( wxWindow *child )
+int wxWindow::GetCharHeight() const
 {
-  if (GetChildren())
- GetChildren()->DeleteObject( child );
-  child->m_parent = NULL;
-};
+    // TODO
+    return 0;
+}
 
-void wxWindow::SetReturnCode( int retCode )
+int wxWindow::GetCharWidth() const
 {
-  m_retCode = retCode;
-};
+    // TODO
+    return 0;
+}
 
-int wxWindow::GetReturnCode(void)
+void wxWindow::GetTextExtent(const wxString& string, int *x, int *y,
+                           int *descent, int *externalLeading, const wxFont *theFont, bool) const
 {
-  return m_retCode;
-};
+  wxFont *fontToUse = (wxFont *)theFont;
+  if (!fontToUse)
+    fontToUse = (wxFont *) & m_windowFont;
 
-wxWindow *wxWindow::GetParent(void)
-{
-  return m_parent;
-};
+    // TODO
+}
 
-wxEvtHandler *wxWindow::GetEventHandler(void)
+void wxWindow::Refresh(bool eraseBack, const wxRectangle *rect)
 {
-  return m_eventHandler;
-};
+    // TODO
+}
 
-void wxWindow::SetEventhandler( wxEvtHandler *handler )
+// Responds to colour changes: passes event on to children.
+void wxWindow::OnSysColourChanged(wxSysColourChangedEvent& event)
 {
-  m_eventHandler = handler;
-};
+    wxNode *node = GetChildren()->First();
+    while ( node )
+    {
+        // Only propagate to non-top-level windows
+        wxWindow *win = (wxWindow *)node->Data();
+        if ( win->GetParent() )
+        {
+            wxSysColourChangedEvent event2;
+            event.m_eventObject = win;
+            win->GetEventHandler()->ProcessEvent(event2);
+        }
 
-wxValidator *wxWindow::GetValidator(void)
-{
-  return m_windowValidator;
-};
+        node = node->Next();
+    }
+}
 
-void wxWindow::SetValidator( wxValidator *validator )
+// This can be called by the app (or wxWindows) to do default processing for the current
+// event. Save message/event info in wxWindow so they can be used in this function.
+long wxWindow::Default()
 {
-  m_windowValidator = validator;
-};
+    // TODO
+    return 0;
+}
 
-bool wxWindow::IsBeingDeleted(void)
+void wxWindow::InitDialog()
 {
-  return FALSE;
-};
+  wxInitDialogEvent event(GetId());
+  event.SetEventObject( this );
+  GetEventHandler()->ProcessEvent(event);
+}
 
-void wxWindow::SetId( wxWindowID id )
+// Default init dialog behaviour is to transfer data to window
+void wxWindow::OnInitDialog(wxInitDialogEvent& event)
 {
-  m_windowId = id;
-};
+  TransferDataToWindow();
+}
 
-wxWindowID wxWindow::GetId(void)
+// Caret manipulation
+void wxWindow::CreateCaret(int w, int h)
 {
-  return m_windowId;
-};
+  m_caretWidth = w;
+  m_caretHeight = h;
+  m_caretEnabled = TRUE;
+}
 
-void wxWindow::SetCursor( const wxCursor &cursor )
+void wxWindow::CreateCaret(const wxBitmap *WXUNUSED(bitmap))
 {
-  if (*m_cursor == cursor) return;
-  (*m_cursor) = cursor;
-};
+    // TODO
+}
 
-void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
+void wxWindow::ShowCaret(bool show)
 {
-};
+    // TODO
+}
 
-bool wxWindow::IsExposed( long x, long y )
+void wxWindow::DestroyCaret()
 {
-  return (m_updateRegion.Contains( x, y ) != wxOutRegion );
-};
+    // TODO
+    m_caretEnabled = FALSE;
+}
 
-bool wxWindow::IsExposed( long x, long y, long width, long height )
+void wxWindow::SetCaretPos(int x, int y)
 {
-  return (m_updateRegion.Contains( x, y, width, height ) != wxOutRegion );
-};
+    // TODO
+}
 
-void wxWindow::Clear(void)
+void wxWindow::GetCaretPos(int *x, int *y) const
 {
-};
+    // TODO
+}
 
-wxColour wxWindow::GetBackgroundColour(void) const
+wxWindow *wxGetActiveWindow()
 {
-  return m_backgroundColour;
-};
+    // TODO
+    return NULL;
+}
 
-void wxWindow::SetBackgroundColour( const wxColour &colour )
+void wxWindow::SetSizeHints(int minW, int minH, int maxW, int maxH, int WXUNUSED(incW), int WXUNUSED(incH))
 {
-  m_backgroundColour = colour;
-};
+  m_minSizeX = minW;
+  m_minSizeY = minH;
+  m_maxSizeX = maxW;
+  m_maxSizeY = maxH;
+}
 
-bool wxWindow::Validate(void)
+void wxWindow::Centre(int direction)
 {
-  wxNode *node = GetChildren()->First();
-  while (node)
-  {
-    wxWindow *child = (wxWindow *)node->Data();
-    if (child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->Validate(this)) 
-      { return FALSE; }
-    node = node->Next();
-  };
-  return TRUE;
-};
+  int x, y, width, height, panel_width, panel_height, new_x, new_y;
 
-bool wxWindow::TransferDataToWindow(void)
-{
-  wxNode *node = GetChildren()->First();
-  while (node)
-  {
-    wxWindow *child = (wxWindow *)node->Data();
-    if (child->GetValidator() && /* child->GetValidator()->Ok() && */
-  !child->GetValidator()->TransferToWindow() )
-    {
-      wxMessageBox( "Application Error", "Could not transfer data to window", wxOK|wxICON_EXCLAMATION );
-      return FALSE;
-    };
-    node = node->Next();
-  };
-  return TRUE;
-};
+  wxWindow *father = (wxWindow *)GetParent();
+  if (!father)
+    return;
 
-bool wxWindow::TransferDataFromWindow(void)
-{
-  wxNode *node = GetChildren()->First();
-  while (node)
-  {
-    wxWindow *child = (wxWindow *)node->Data();
-    if ( child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->TransferFromWindow() )
-      { return FALSE; }
-   node = node->Next();
-  }
-  return TRUE;
-};
+  father->GetClientSize(&panel_width, &panel_height);
+  GetSize(&width, &height);
+  GetPosition(&x, &y);
 
-void wxWindow::OnInitDialog( wxInitDialogEvent &WXUNUSED(event) )
-{
-  TransferDataToWindow();
-};
+  new_x = -1;
+  new_y = -1;
 
-void wxWindow::InitDialog(void)
-{
-  wxInitDialogEvent event(GetId());
-  event.SetEventObject( this );
-  GetEventHandler()->ProcessEvent(event);
-};
+  if (direction & wxHORIZONTAL)
+    new_x = (int)((panel_width - width)/2);
 
-void wxWindow::SetDropTarget( wxDropTarget *dropTarget )
-{
-  if (m_pDropTarget)
-  {
-    m_pDropTarget->UnregisterWidget( dnd_widget );
-    delete m_pDropTarget;
-  };
-  m_pDropTarget = dropTarget;
-  if (m_pDropTarget)
-  {
-  };
-};
+  if (direction & wxVERTICAL)
+    new_y = (int)((panel_height - height)/2);
 
-wxDropTarget *wxWindow::GetDropTarget() const
-{
-  return m_pDropTarget;
-};
+  SetSize(new_x, new_y, -1, -1);
 
-void wxWindow::SetFont( const wxFont &font )
-{
-  m_font = font;
-/*
-  ...
-*/
-};
+}
 
-wxFont *wxWindow::GetFont(void)
+// Coordinates relative to the window
+void wxWindow::WarpPointer (int x_pos, int y_pos)
 {
-  return &m_font;
-};
+    // TODO
+}
 
-void wxWindow::SetWindowStyleFlag( long flag )
+void wxWindow::OnEraseBackground(wxEraseEvent& event)
 {
-  m_windowStyle = flag;
-};
+    // TODO
+    Default();
+}
 
-long wxWindow::GetWindowStyleFlag(void) const
+int wxWindow::GetScrollPos(int orient) const
 {
-  return m_windowStyle;
-};
+    // TODO
+    return 0;
+}
 
-void wxWindow::CaptureMouse(void)
+// This now returns the whole range, not just the number
+// of positions that we can scroll.
+int wxWindow::GetScrollRange(int orient) const
 {
-};
+    // TODO
+    return 0;
+}
 
-void wxWindow::ReleaseMouse(void)
+int wxWindow::GetScrollThumb(int orient) const
 {
-};
+    // TODO
+    return 0;
+}
 
-void wxWindow::SetTitle( const wxString &WXUNUSED(title) )
+void wxWindow::SetScrollPos(int orient, int pos, bool refresh)
 {
-};
+    // TODO
+    return 0;
+}
 
-wxString wxWindow::GetTitle(void) const
+// New function that will replace some of the above.
+void wxWindow::SetScrollbar(int orient, int pos, int thumbVisible,
+    int range, bool refresh)
 {
-  return (wxString&)m_windowName;
-};
+    // TODO
+}
 
-wxString wxWindow::GetLabel(void) const
+// Does a physical scroll
+void wxWindow::ScrollWindow(int dx, int dy, const wxRectangle *rect)
 {
-  return GetTitle();
-};
+    // TODO
+    return 0;
+}
 
-void wxWindow::SetName( const wxString &name )
+void wxWindow::SetFont(const wxFont& font)
 {
-  m_windowName = name;
-};
+    m_windowFont = font;
 
-wxString wxWindow::GetName(void) const
-{
-  return (wxString&)m_windowName;
-};
+    if (!m_windowFont.Ok())
+           return;
+    // TODO
+}
 
-bool wxWindow::IsShown(void) const
+void wxWindow::OnChar(wxKeyEvent& event)
 {
-  return m_isShown;
-};
+    if ( event.KeyCode() == WXK_TAB ) {
+        // propagate the TABs to the parent - it's up to it to decide what
+        // to do with it
+        if ( GetParent() ) {
+            if ( GetParent()->ProcessEvent(event) )
+                return;
+        }
+    }
+}
 
-bool wxWindow::IsRetained(void)
+void wxWindow::OnPaint(wxPaintEvent& event)
 {
-  return FALSE;
-};
+       Default();
+}
 
-wxWindow *wxWindow::FindWindow( long id )
+bool wxWindow::IsEnabled() const
 {
-  if (id == m_windowId) return this;
-  wxNode *node = m_children.First();
-  while (node)
-  {
-    wxWindow *child = (wxWindow*)node->Data();
-    wxWindow *res = child->FindWindow( id );
-    if (res) return res;
-    node = node->Next();
-  };
-  return NULL;
-};
+    // TODO
+    return FALSE;
+}
 
-wxWindow *wxWindow::FindWindow( const wxString& name )
-{
-  if (name == m_windowName) return this;
-  wxNode *node = m_children.First();
-  while (node)
-  {
-    wxWindow *child = (wxWindow*)node->Data();
-    wxWindow *res = child->FindWindow( name );
-    if (res) return res;
-    node = node->Next();
-  };
-  return NULL;
-};
+// Dialog support: override these and call
+// base class members to add functionality
+// that can't be done using validators.
+// NOTE: these functions assume that controls
+// are direct children of this window, not grandchildren
+// or other levels of descendant.
+
+// Transfer values to controls. If returns FALSE,
+// it's an application error (pops up a dialog)
+bool wxWindow::TransferDataToWindow()
+{
+       wxNode *node = GetChildren()->First();
+       while ( node )
+       {
+               wxWindow *child = (wxWindow *)node->Data();
+               if ( child->GetValidator() &&
+                    !child->GetValidator()->TransferToWindow() )
+               {
+                       wxMessageBox("Application Error", "Could not transfer data to window", wxOK|wxICON_EXCLAMATION);
+                       return FALSE;
+               }
+
+               node = node->Next();
+       }
+       return TRUE;
+}
 
-void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
-      int range, bool WXUNUSED(refresh) )
+// Transfer values from controls. If returns FALSE,
+// validation failed: don't quit
+bool wxWindow::TransferDataFromWindow()
+{
+       wxNode *node = GetChildren()->First();
+       while ( node )
+       {
+               wxWindow *child = (wxWindow *)node->Data();
+               if ( child->GetValidator() && !child->GetValidator()->TransferFromWindow() )
+               {
+                       return FALSE;
+               }
+
+               node = node->Next();
+       }
+       return TRUE;
+}
+
+bool wxWindow::Validate()
 {
-};
+       wxNode *node = GetChildren()->First();
+       while ( node )
+       {
+               wxWindow *child = (wxWindow *)node->Data();
+               if ( child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->Validate(this) )
+               {
+                       return FALSE;
+               }
 
-void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
+               node = node->Next();
+       }
+       return TRUE;
+}
+
+// Get the window with the focus
+wxWindow *wxWindow::FindFocus()
 {
-};
+    // TODO
+    return NULL;
+}
 
-int wxWindow::GetScrollThumb( int orient ) const
+void wxWindow::AddChild(wxWindow *child)
 {
-};
+    GetChildren()->Append(child);
+    child->m_windowParent = this;
+}
 
-int wxWindow::GetScrollPos( int orient ) const
+void wxWindow::RemoveChild(wxWindow *child)
 {
-};
+    if (GetChildren())
+        GetChildren()->DeleteObject(child);
+    child->m_windowParent = NULL;
+}
 
-int wxWindow::GetScrollRange( int orient ) const
+void wxWindow::DestroyChildren()
 {
-};
+  if (GetChildren()) {
+    wxNode *node;
+    while ((node = GetChildren()->First()) != (wxNode *)NULL) {
+      wxWindow *child;
+      if ((child = (wxWindow *)node->Data()) != (wxWindow *)NULL) {
+        delete child;
+               if ( GetChildren()->Member(child) )
+                       delete node;
+      }
+    } /* while */
+  }
+}
 
-void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
+void wxWindow::MakeModal(bool modal)
 {
-};
+  // Disable all other windows
+  if (this->IsKindOf(CLASSINFO(wxDialog)) || this->IsKindOf(CLASSINFO(wxFrame)))
+  {
+    wxNode *node = wxTopLevelWindows.First();
+    while (node)
+    {
+      wxWindow *win = (wxWindow *)node->Data();
+      if (win != this)
+        win->Enable(!modal);
 
-//-------------------------------------------------------------------------------------
-//          Layout
-//-------------------------------------------------------------------------------------
+      node = node->Next();
+    }
+  }
+}
 
-wxLayoutConstraints *wxWindow::GetConstraints(void) const
+// If nothing defined for this, try the parent.
+// E.g. we may be a button loaded from a resource, with no callback function
+// defined.
+void wxWindow::OnCommand(wxWindow& win, wxCommandEvent& event)
 {
-  return m_constraints;
-};
+  if (GetEventHandler()->ProcessEvent(event) )
+       return;
+  if (m_windowParent)
+    m_windowParent->GetEventHandler()->OnCommand(win, event);
+}
 
-void wxWindow::SetConstraints( wxLayoutConstraints *constraints )
+void wxWindow::SetConstraints(wxLayoutConstraints *c)
 {
   if (m_constraints)
   {
     UnsetConstraints(m_constraints);
     delete m_constraints;
   }
-  m_constraints = constraints;
+  m_constraints = c;
   if (m_constraints)
   {
     // Make sure other windows know they're part of a 'meaningful relationship'
@@ -625,34 +724,7 @@ void wxWindow::SetConstraints( wxLayoutConstraints *constraints )
     if (m_constraints->centreY.GetOtherWindow() && (m_constraints->centreY.GetOtherWindow() != this))
       m_constraints->centreY.GetOtherWindow()->AddConstraintReference((wxWindow *)this);
   }
-;
 }
-;
-
-void wxWindow::SetAutoLayout( bool autoLayout )
-{
-  m_autoLayout = autoLayout;
-};
-
-bool wxWindow::GetAutoLayout(void) const
-{
-  return m_autoLayout;
-};
-
-wxSizer *wxWindow::GetSizer(void) const
-{
-  return m_windowSizer;
-};
-
-void wxWindow::SetSizerParent( wxWindow *win )
-{
-  m_sizerParent = win;
-};
-
-wxWindow *wxWindow::GetSizerParent(void) const
-{
-  return m_sizerParent;
-};
 
 // This removes any dangling pointers to this window
 // in other windows' constraintsInvolvedIn lists.
@@ -697,7 +769,7 @@ void wxWindow::RemoveConstraintReference(wxWindow *otherWin)
 }
 
 // Reset any constraints that mention this window
-void wxWindow::DeleteRelatedConstraints(void)
+void wxWindow::DeleteRelatedConstraints()
 {
   if (m_constraintsInvolvedIn)
   {
@@ -739,7 +811,7 @@ void wxWindow::SetSizer(wxSizer *sizer)
  * New version
  */
 
-bool wxWindow::Layout(void)
+bool wxWindow::Layout()
 {
   if (GetConstraints())
   {
@@ -839,7 +911,7 @@ bool wxWindow::DoPhase(int phase)
   return TRUE;
 }
 
-void wxWindow::ResetConstraints(void)
+void wxWindow::ResetConstraints()
 {
   wxLayoutConstraints *constr = GetConstraints();
   if (constr)
@@ -894,10 +966,10 @@ void wxWindow::SetConstraintSizes(bool recurse)
     char *windowClass = this->GetClassInfo()->GetClassName();
 
     wxString winName;
-  if (GetName() == "")
-    winName = "unnamed";
-  else
-    winName = GetName();
+       if (GetName() == "")
+               winName = "unnamed";
+       else
+               winName = GetName();
     wxDebugMsg("Constraint(s) not satisfied for window of type %s, name %s:\n", (const char *)windowClass, (const char *)winName);
     if (!constr->left.GetDone())
       wxDebugMsg("  unsatisfied 'left' constraint.\n");
@@ -928,7 +1000,7 @@ void wxWindow::SetConstraintSizes(bool recurse)
 void wxWindow::TransformSizerToActual(int *x, int *y) const
 {
   if (!m_sizerParent || m_sizerParent->IsKindOf(CLASSINFO(wxDialog)) ||
-         m_sizerParent->IsKindOf(CLASSINFO(wxFrame)) )
+                        m_sizerParent->IsKindOf(CLASSINFO(wxFrame)) )
     return;
     
   int xp, yp;
@@ -940,16 +1012,16 @@ void wxWindow::TransformSizerToActual(int *x, int *y) const
 
 void wxWindow::SizerSetSize(int x, int y, int w, int h)
 {
-  int xx = x;
-  int yy = y;
+       int xx = x;
+       int yy = y;
   TransformSizerToActual(&xx, &yy);
   SetSize(xx, yy, w, h);
 }
 
 void wxWindow::SizerMove(int x, int y)
 {
-  int xx = x;
-  int yy = y;
+       int xx = x;
+       int yy = y;
   TransformSizerToActual(&xx, &yy);
   Move(xx, yy);
 }
@@ -1037,12 +1109,173 @@ void wxWindow::GetPositionConstraint(int *x, int *y) const
     GetPosition(x, y);
 }
 
+bool wxWindow::Close(bool force)
+{
+  wxCloseEvent event(wxEVT_CLOSE_WINDOW, m_windowId);
+  event.SetEventObject(this);
+  event.SetForce(force);
+
+  return GetEventHandler()->ProcessEvent(event);
+}
+
+wxObject* wxWindow::GetChild(int number) const
+{
+  // Return a pointer to the Nth object in the window
+  if (!GetChildren())
+    return(NULL) ;
+  wxNode *node = GetChildren()->First();
+  int n = number;
+  while (node && n--)
+    node = node->Next() ;
+  if (node)
+  {
+    wxObject *obj = (wxObject *)node->Data();
+    return(obj) ;
+  }
+  else
+    return NULL ;
+}
+
+void wxWindow::OnDefaultAction(wxControl *initiatingItem)
+{
+    // Obsolete function
+}
+
+void wxWindow::Clear()
+{
+       wxClientDC dc(this);
+    wxBrush brush(GetBackgroundColour(), wxSOLID);
+    dc.SetBackground(brush);
+    dc.Clear();
+}
+
+// Fits the panel around the items
+void wxWindow::Fit()
+{
+       int maxX = 0;
+       int maxY = 0;
+       wxNode *node = GetChildren()->First();
+       while ( node )
+       {
+               wxWindow *win = (wxWindow *)node->Data();
+               int wx, wy, ww, wh;
+               win->GetPosition(&wx, &wy);
+               win->GetSize(&ww, &wh);
+               if ( wx + ww > maxX )
+                       maxX = wx + ww;
+               if ( wy + wh > maxY )
+                       maxY = wy + wh;
+
+               node = node->Next();
+       }
+       SetClientSize(maxX + 5, maxY + 5);
+}
+
+void wxWindow::SetValidator(const wxValidator& validator)
+{
+       if ( m_windowValidator )
+               delete m_windowValidator;
+       m_windowValidator = validator.Clone();
+
+       if ( m_windowValidator )
+               m_windowValidator->SetWindow(this) ;
+}
+
+// Find a window by id or name
+wxWindow *wxWindow::FindWindow(long id)
+{
+       if ( GetId() == id)
+               return this;
+
+       wxNode *node = GetChildren()->First();
+       while ( node )
+       {
+               wxWindow *child = (wxWindow *)node->Data();
+               wxWindow *found = child->FindWindow(id);
+               if ( found )
+                       return found;
+               node = node->Next();
+       }
+       return NULL;
+}
+
+wxWindow *wxWindow::FindWindow(const wxString& name)
+{
+       if ( GetName() == name)
+               return this;
+
+       wxNode *node = GetChildren()->First();
+       while ( node )
+       {
+               wxWindow *child = (wxWindow *)node->Data();
+               wxWindow *found = child->FindWindow(name);
+               if ( found )
+                       return found;
+               node = node->Next();
+       }
+       return NULL;
+}
+
+void wxWindow::OnIdle(wxIdleEvent& event)
+{
+/* TODO: you may need to do something like this
+ * if your GUI doesn't generate enter/leave events
+
+    // Check if we need to send a LEAVE event
+    if (m_mouseInWindow)
+    {
+        POINT pt;
+        ::GetCursorPos(&pt);
+        if (::WindowFromPoint(pt) != (HWND) GetHWND())
+        {
+            // Generate a LEAVE event
+            m_mouseInWindow = FALSE;
+            MSWOnMouseLeave(pt.x, pt.y, 0);
+        }
+    }
+*/
+
+    // This calls the UI-update mechanism (querying windows for
+    // menu/toolbar/control state information)
+       UpdateWindowUI();
+}
+
+// Raise the window to the top of the Z order
+void wxWindow::Raise()
+{
+    // TODO
+}
+
+// Lower the window to the bottom of the Z order
+void wxWindow::Lower()
+{
+    // TODO
+}
+
 bool wxWindow::AcceptsFocus() const
 {
-  return IsEnabled() && IsShown();
+  return IsShown() && IsEnabled();
+}
+
+// Update region access
+wxRegion wxWindow::GetUpdateRegion() const
+{
+    return m_updateRegion;
 }
 
-void wxWindow::OnIdle(wxIdleEvent& WXUNUSED(event) )
+bool wxWindow::IsExposed(int x, int y, int w, int h) const
 {
-  UpdateWindowUI();
+    return (m_updateRegion.Contains(x, y, w, h) != wxOutRegion);
 }
+
+bool wxWindow::IsExposed(const wxPoint& pt) const
+{
+    return (m_updateRegion.Contains(pt) != wxOutRegion);
+}
+
+bool wxWindow::IsExposed(const wxRect& rect) const
+{
+    return (m_updateRegion.Contains(rect) != wxOutRegion);
+}
+
+