home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / include / wx / popupwin.h < prev    next >
C/C++ Source or Header  |  2002-08-31  |  5KB  |  172 lines

  1. ///////////////////////////////////////////////////////////////////////////////
  2. // Name:        wx/popupwin.h
  3. // Purpose:     wxPopupWindow interface declaration
  4. // Author:      Vadim Zeitlin
  5. // Modified by:
  6. // Created:     06.01.01
  7. // RCS-ID:      $Id: popupwin.h,v 1.20 2002/08/31 11:29:11 GD Exp $
  8. // Copyright:   (c) 2001 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
  9. // License:     wxWindows license
  10. ///////////////////////////////////////////////////////////////////////////////
  11.  
  12. #ifndef _WX_POPUPWIN_H_BASE_
  13. #define _WX_POPUPWIN_H_BASE_
  14.  
  15. #if defined(__GNUG__) && !defined(__APPLE__)
  16.     #pragma interface "popupwinbase.h"
  17. #endif
  18.  
  19. #include "wx/window.h"
  20.  
  21. #if wxUSE_POPUPWIN
  22. // ----------------------------------------------------------------------------
  23. // wxPopupWindow: a special kind of top level window used for popup menus,
  24. // combobox popups and such.
  25. // ----------------------------------------------------------------------------
  26.  
  27. class WXDLLEXPORT wxPopupWindowBase : public wxWindow
  28. {
  29. public:
  30.     wxPopupWindowBase() { }
  31.     virtual ~wxPopupWindowBase();
  32.  
  33.     // create the popup window
  34.     //
  35.     // style may only contain border flags
  36.     bool Create(wxWindow *parent, int style = wxBORDER_NONE);
  37.  
  38.     // move the popup window to the right position, i.e. such that it is
  39.     // entirely visible
  40.     //
  41.     // the popup is positioned at ptOrigin + size if it opens below and to the
  42.     // right (default), at ptOrigin - sizePopup if it opens above and to the
  43.     // left &c
  44.     //
  45.     // the point must be given in screen coordinates!
  46.     virtual void Position(const wxPoint& ptOrigin,
  47.                           const wxSize& size);
  48. };
  49.  
  50.  
  51. // include the real class declaration
  52. #ifdef __WXMSW__
  53.     #include "wx/msw/popupwin.h"
  54. #elif __WXPM__
  55.     #include "wx/os2/popupwin.h"
  56. #elif __WXGTK__
  57.     #include "wx/gtk/popupwin.h"
  58. #elif __WXX11__
  59.     #include "wx/x11/popupwin.h"
  60. #elif __WXMGL__
  61.     #include "wx/mgl/popupwin.h"
  62. #else
  63.     #error "wxPopupWindow is not supported under this platform."
  64. #endif
  65.  
  66. // ----------------------------------------------------------------------------
  67. // wxPopupTransientWindow: a wxPopupWindow which disappears automatically
  68. // when the user clicks mouse outside it or if it loses focus in any other way
  69. // ----------------------------------------------------------------------------
  70.  
  71. class WXDLLEXPORT wxPopupWindowHandler;
  72. class WXDLLEXPORT wxPopupFocusHandler;
  73.  
  74. class WXDLLEXPORT wxPopupTransientWindow : public wxPopupWindow
  75. {
  76. public:
  77.     // ctors
  78.     wxPopupTransientWindow() { Init(); }
  79.     wxPopupTransientWindow(wxWindow *parent, int style = wxBORDER_NONE);
  80.  
  81.     virtual ~wxPopupTransientWindow();
  82.  
  83.     // popup the window (this will show it too) and keep focus at winFocus
  84.     // (or itself if it's NULL), dismiss the popup if we lose focus
  85.     virtual void Popup(wxWindow *focus = NULL);
  86.  
  87.     // hide the window
  88.     virtual void Dismiss();
  89.  
  90.     // can the window be dismissed now?
  91.     //
  92.     // VZ: where is this used??
  93.     virtual bool CanDismiss()
  94.         { return TRUE; }
  95.  
  96.     // called when a mouse is pressed while the popup is shown: return TRUE
  97.     // from here to prevent its normal processing by the popup (which consists
  98.     // in dismissing it if the mouse is cilcked outside it)
  99.     virtual bool ProcessLeftDown(wxMouseEvent& event);
  100.  
  101. protected:
  102.     // common part of all ctors
  103.     void Init();
  104.  
  105.     // this is called when the popup is disappeared because of anything
  106.     // else but direct call to Dismiss()
  107.     virtual void OnDismiss();
  108.  
  109.     // dismiss and notify the derived class
  110.     void DismissAndNotify();
  111.  
  112.     // remove our event handlers
  113.     void PopHandlers();
  114.  
  115.     // the child of this popup if any
  116.     wxWindow *m_child;
  117.  
  118.     // the window which has the focus while we're shown
  119.     wxWindow *m_focus;
  120.  
  121.     // these classes may call our DismissAndNotify()
  122.     friend class wxPopupWindowHandler;
  123.     friend class wxPopupFocusHandler;
  124.  
  125.     // the handlers we created, may be NULL (if not, must be deleted)
  126.     wxPopupWindowHandler *m_handlerPopup;
  127.     wxPopupFocusHandler  *m_handlerFocus;
  128.  
  129.     DECLARE_DYNAMIC_CLASS(wxPopupTransientWindow)
  130. };
  131.  
  132. #if wxUSE_COMBOBOX && defined(__WXUNIVERSAL__)
  133.  
  134. // ----------------------------------------------------------------------------
  135. // wxPopupComboWindow: wxPopupTransientWindow used by wxComboBox
  136. // ----------------------------------------------------------------------------
  137.  
  138. class WXDLLEXPORT wxComboBox;
  139. class WXDLLEXPORT wxComboControl;
  140.  
  141. class WXDLLEXPORT wxPopupComboWindow : public wxPopupTransientWindow
  142. {
  143. public:
  144.     wxPopupComboWindow() { m_combo = NULL; }
  145.     wxPopupComboWindow(wxComboControl *parent);
  146.  
  147.     bool Create(wxComboControl *parent);
  148.  
  149.     // position the window correctly relatively to the combo
  150.     void PositionNearCombo();
  151.  
  152. protected:
  153.     // notify the combo here
  154.     virtual void OnDismiss();
  155.  
  156.     // forward the key presses to the combobox
  157.     void OnKeyDown(wxKeyEvent& event);
  158.  
  159.     // the parent combobox
  160.     wxComboControl *m_combo;
  161.  
  162.     DECLARE_EVENT_TABLE()
  163.     DECLARE_DYNAMIC_CLASS(wxPopupComboWindow)
  164. };
  165.  
  166. #endif // wxUSE_COMBOBOX && defined(__WXUNIVERSAL__)
  167.  
  168. #endif // wxUSE_POPUPWIN
  169.  
  170. #endif // _WX_POPUPWIN_H_BASE_
  171.  
  172.