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