1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/gtk/toplevel.h
3 // Purpose:
4 // Author:      Robert Roebling
5 // Id:          $Id: toplevel.h 43846 2006-12-07 05:50:54Z PC $
6 // Copyright:   (c) 1998 Robert Roebling, Julian Smart
7 // Licence:     wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
9 
10 #ifndef _WX_GTK_TOPLEVEL_H_
11 #define _WX_GTK_TOPLEVEL_H_
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 EnableCloseButton(bool enable = true);
55 
56     virtual bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL);
IsFullScreen()57     virtual bool IsFullScreen() const { return m_fsIsShowing; };
58 
59     virtual bool SetShape(const wxRegion& region);
60 
61     virtual void RequestUserAttention(int flags = wxUSER_ATTENTION_INFO);
62 
63     virtual void SetWindowStyleFlag( long style );
64 
65     virtual bool Show(bool show = true);
66 
67     virtual void Raise();
68 
69     virtual bool IsActive();
70 
71     virtual void SetTitle( const wxString &title );
GetTitle()72     virtual wxString GetTitle() const { return m_title; }
73 
74     virtual bool SetTransparent(wxByte alpha);
75     virtual bool CanSetTransparent();
76 
77     // Experimental, to allow help windows to be
78     // viewable from within modal dialogs
79     virtual void AddGrab();
80     virtual void RemoveGrab();
IsGrabbed()81     virtual bool IsGrabbed() const { return m_grabbed; }
82 
83     // implementation from now on
84     // --------------------------
85 
86     // GTK callbacks
87     virtual void GtkOnSize();
88     virtual void OnInternalIdle();
89 
90     // do *not* call this to iconize the frame, this is a private function!
91     void SetIconizeState(bool iconic);
92 
93     int           m_miniEdge,
94                   m_miniTitle;
95     GtkWidget    *m_mainWidget;
96     bool          m_insertInClientArea;  /* not from within OnCreateXXX */
97 
98     bool          m_fsIsShowing;         /* full screen */
99     long          m_fsSaveGdkFunc, m_fsSaveGdkDecor;
100     long          m_fsSaveFlag;
101     wxRect        m_fsSaveFrame;
102 
103     // m_windowStyle translated to GDK's terms
104     long          m_gdkFunc,
105                   m_gdkDecor;
106 
107     // private gtk_timeout_add result for mimicing wxUSER_ATTENTION_INFO and
108     // wxUSER_ATTENTION_ERROR difference, -2 for no hint, -1 for ERROR hint, rest for GtkTimeout handle.
109     int m_urgency_hint;
110 
111     // give hints to the Window Manager for how the size
112     // of the TLW can be changed by dragging
113     virtual void DoSetSizeHints( int minW, int minH,
114                                  int maxW = wxDefaultCoord, int maxH = wxDefaultCoord,
115                                  int incW = wxDefaultCoord, int incH = wxDefaultCoord );
116 
117 protected:
118     // common part of all ctors
119     void Init();
120 
121     // move the window to the specified location and resize it: this is called
122     // from both DoSetSize() and DoSetClientSize()
123     virtual void DoMoveWindow(int x, int y, int width, int height);
124 
125     // override wxWindow methods to take into account tool/menu/statusbars
126     virtual void DoSetSize(int x, int y,
127                            int width, int height,
128                            int sizeFlags = wxSIZE_AUTO);
129 
130     virtual void DoSetClientSize(int width, int height);
131     virtual void DoGetClientSize( int *width, int *height ) const;
132 
133     wxString      m_title;
134 
135     // is the frame currently iconized?
136     bool m_isIconized;
137     // is the frame currently grabbed explicitly
138     // by the application?
139     bool m_grabbed;
140 };
141 
142 #endif // _WX_GTK_TOPLEVEL_H_
143