1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/gtk1/toplevel.h
3 // Purpose:
4 // Author:      Robert Roebling
5 // Id:          $Id: toplevel.h 37065 2006-01-23 02:28:01Z MR $
6 // Copyright:   (c) 1998 Robert Roebling, Julian Smart
7 // Licence:     wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
9 
10 #ifndef __GTKTOPLEVELH__
11 #define __GTKTOPLEVELH__
12 
13 //-----------------------------------------------------------------------------
14 // wxTopLevelWindowGTK
15 //-----------------------------------------------------------------------------
16 
17 class WXDLLIMPEXP_CORE wxTopLevelWindowGTK : public wxTopLevelWindowBase
18 {
19 public:
20     // construction
wxTopLevelWindowGTK()21     wxTopLevelWindowGTK() { Init(); }
22     wxTopLevelWindowGTK(wxWindow *parent,
23                         wxWindowID id,
24                         const wxString& title,
25                         const wxPoint& pos = wxDefaultPosition,
26                         const wxSize& size = wxDefaultSize,
27                         long style = wxDEFAULT_FRAME_STYLE,
28                         const wxString& name = wxFrameNameStr)
29     {
30         Init();
31 
32         Create(parent, id, title, pos, size, style, name);
33     }
34 
35     bool Create(wxWindow *parent,
36                 wxWindowID id,
37                 const wxString& title,
38                 const wxPoint& pos = wxDefaultPosition,
39                 const wxSize& size = wxDefaultSize,
40                 long style = wxDEFAULT_FRAME_STYLE,
41                 const wxString& name = wxFrameNameStr);
42 
43     virtual ~wxTopLevelWindowGTK();
44 
45     // implement base class pure virtuals
46     virtual void Maximize(bool maximize = true);
47     virtual bool IsMaximized() const;
48     virtual void Iconize(bool iconize = true);
49     virtual bool IsIconized() const;
50     virtual void SetIcon(const wxIcon& icon);
51     virtual void SetIcons(const wxIconBundle& icons);
52     virtual void Restore();
53 
54     virtual bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL);
IsFullScreen()55     virtual bool IsFullScreen() const { return m_fsIsShowing; };
56 
57     virtual bool SetShape(const wxRegion& region);
58 
59     virtual void RequestUserAttention(int flags = wxUSER_ATTENTION_INFO);
60 
61     virtual void SetWindowStyleFlag( long style );
62 
63     virtual bool Show(bool show = true);
64 
65     virtual void Raise();
66 
67     virtual bool IsActive();
68 
69     virtual void SetTitle( const wxString &title );
GetTitle()70     virtual wxString GetTitle() const { return m_title; }
71 
72     // Experimental, to allow help windows to be
73     // viewable from within modal dialogs
74     virtual void AddGrab();
75     virtual void RemoveGrab();
IsGrabbed()76     virtual bool IsGrabbed() const { return m_grabbed; }
77 
78     // implementation from now on
79     // --------------------------
80 
81     // move the window to the specified location and resize it: this is called
82     // from both DoSetSize() and DoSetClientSize()
83     virtual void DoMoveWindow(int x, int y, int width, int height);
84 
85     // GTK callbacks
86     virtual void GtkOnSize( int x, int y, int width, int height );
87     virtual void OnInternalIdle();
88 
89     // do *not* call this to iconize the frame, this is a private function!
90     void SetIconizeState(bool iconic);
91 
92     int           m_miniEdge,
93                   m_miniTitle;
94     GtkWidget    *m_mainWidget;
95     bool          m_insertInClientArea;  /* not from within OnCreateXXX */
96 
97     bool          m_fsIsShowing;         /* full screen */
98     long          m_fsSaveGdkFunc, m_fsSaveGdkDecor;
99     long          m_fsSaveFlag;
100     wxRect        m_fsSaveFrame;
101 
102     // m_windowStyle translated to GDK's terms
103     long          m_gdkFunc,
104                   m_gdkDecor;
105 
106     // private gtk_timeout_add result for mimicing wxUSER_ATTENTION_INFO and
107     // wxUSER_ATTENTION_ERROR difference, -2 for no hint, -1 for ERROR hint, rest for GtkTimeout handle.
108     int m_urgency_hint;
109 
110 protected:
111     // common part of all ctors
112     void Init();
113 
114     // override wxWindow methods to take into account tool/menu/statusbars
115     virtual void DoSetSize(int x, int y,
116                            int width, int height,
117                            int sizeFlags = wxSIZE_AUTO);
118 
119     virtual void DoSetClientSize(int width, int height);
120     virtual void DoGetClientSize( int *width, int *height ) const;
121 
122     wxString      m_title;
123 
124     // is the frame currently iconized?
125     bool m_isIconized;
126     // is the frame currently grabbed explicitly
127     // by the application?
128     bool m_grabbed;
129 };
130 
131 #endif // __GTKTOPLEVELH__
132