1 ///////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/gtk/private.h
3 // Purpose:     wxGTK private macros, functions &c
4 // Author:      Vadim Zeitlin
5 // Modified by:
6 // Created:     12.03.02
7 // RCS-ID:      $Id: private.h 47188 2007-07-06 07:44:19Z MW $
8 // Copyright:   (c) 2002 Vadim Zeitlin <vadim@wxwidgets.org>
9 // Licence:     wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef _WX_GTK_PRIVATE_H_
13 #define _WX_GTK_PRIVATE_H_
14 
15 #include <gtk/gtk.h>
16 
17 #include "wx/event.h"
18 #include "wx/gtk/private/string.h"
19 
20 // fail all version tests if the GTK+ version is so ancient that it doesn't
21 // even have GTK_CHECK_VERSION
22 #ifndef GTK_CHECK_VERSION
23     #define GTK_CHECK_VERSION(a, b, c) 0
24 #endif
25 
26 #if wxUSE_UNICODE
27     #define wxGTK_CONV(s) wxConvUTF8.cWX2MB((s))
28     #define wxGTK_CONV_ENC(s, enc) wxGTK_CONV((s))
29     #define wxGTK_CONV_FONT(s, font) wxGTK_CONV((s))
30     #define wxGTK_CONV_SYS(s) wxGTK_CONV((s))
31     #define wxGTK_CONV_BACK(s) wxConvUTF8.cMB2WX((s))
32 #elif wxUSE_WCHAR_T
33     #include "wx/font.h"
34 
35     // convert the text in given encoding to UTF-8 used by wxGTK
36     WXDLLIMPEXP_CORE extern wxCharBuffer
37     wxConvertToGTK(const wxString& s,
38                    wxFontEncoding enc = wxFONTENCODING_SYSTEM);
39 
40     // helper: use the encoding of the given font if it's valid
wxConvertToGTK(const wxString & s,const wxFont & font)41     inline wxCharBuffer wxConvertToGTK(const wxString& s, const wxFont& font)
42     {
43         return wxConvertToGTK(s, font.Ok() ? font.GetEncoding()
44                                            : wxFONTENCODING_SYSTEM);
45     }
46 
47     #define wxGTK_CONV_ENC(s, enc) wxConvertToGTK((s), (enc))
48     #define wxGTK_CONV_FONT(s, font) wxConvertToGTK((s), (font))
49     #define wxGTK_CONV(s) wxGTK_CONV_FONT((s), m_font)
50     #define wxGTK_CONV_SYS(s) wxConvertToGTK((s))
51     #define wxGTK_CONV_BACK(s)  wxConvLocal.cWC2WX(wxConvUTF8.cMB2WC((s)))
52 #else // we're limited to ASCII
53     #define wxGTK_CONV_ENC(s, enc) (s)
54     #define wxGTK_CONV_FONT(s, font) (s)
55     #define wxGTK_CONV(s) (s)
56     #define wxGTK_CONV_SYS(s) (s)
57     #define wxGTK_CONV_BACK(s) (wxString(s))
58 #endif
59 
60 // Some deprecated GTK+ prototypes we still use often
61 // FIXME: Don't use them if possible.
62 G_BEGIN_DECLS
63 
64 // Should use gtk_image_new, but the mask seems to be handled different,
65 // and we need to migrate
66 GtkWidget* gtk_pixmap_new (GdkPixmap *pixmap,
67                            GdkBitmap *mask);
68 
69 // Deprecated since GTK+-1.3.7:
70 // Trivial wrapper around gtk_window_move, with some side effects we seem to rely on
71 void gtk_widget_set_uposition (GtkWidget *widget,
72                                gint      x,
73                                gint      y);
74 
75 // We rely on the allow_shrink parameter in one place
76 void gtk_window_set_policy (GtkWindow *window,
77                             gint       allow_shrink,
78                             gint       allow_grow,
79                             gint       auto_shrink);
80 
81 G_END_DECLS
82 
83 //-----------------------------------------------------------------------------
84 // idle system
85 //-----------------------------------------------------------------------------
86 
87 extern void wxapp_install_idle_handler();
88 extern bool g_isIdle;
89 
90 //-----------------------------------------------------------------------------
91 // Misc. functions
92 //-----------------------------------------------------------------------------
93 
94 // Needed for implementing e.g. combobox on wxGTK within a modal dialog.
95 void wxAddGrab(wxWindow* window);
96 void wxRemoveGrab(wxWindow* window);
97 
98 // Escapes string so that it is valid Pango markup XML string:
99 WXDLLIMPEXP_CORE wxString wxEscapeStringForPangoMarkup(const wxString& str);
100 
101 // The declaration for gtk_icon_size_lookup was accidentally ifdefed out in
102 // GTK+ 2.1.0 which Sun seem to have shipped with some versions of JDS
103 // for Solaris 9 x86.
104 #ifdef NEED_GTK_ICON_SIZE_LOOKUP
105 extern "C" gboolean gtk_icon_size_lookup  (GtkIconSize  size,
106                                            gint         *width,
107                                            gint         *height);
108 #endif
109 
110 #ifdef __WXGTK20__
111 #include <gdk/gdktypes.h>
112 
113 // Returns stock accelerator modifier and key code for the given ID
114 WXDLLEXPORT bool wxGetStockGtkAccelerator(const char *id, GdkModifierType *mod, guint *key);
115 #endif
116 
117 #endif // _WX_GTK_PRIVATE_H_
118 
119