| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: wx/motif/private.h
- // Purpose: Private declarations for wxMotif port
- // Author: Julian Smart
- // Modified by:
- // Created: 17/09/98
- // Copyright: (c) Julian Smart
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- #ifndef _WX_PRIVATE_H_
- #define _WX_PRIVATE_H_
- #include "wx/defs.h"
- #include <X11/Xlib.h>
- #include <Xm/Xm.h>
- #include "wx/evtloop.h"
- class WXDLLIMPEXP_FWD_CORE wxFont;
- class WXDLLIMPEXP_FWD_CORE wxWindow;
- class WXDLLIMPEXP_FWD_CORE wxSize;
- class WXDLLIMPEXP_FWD_CORE wxBitmap;
- class WXDLLIMPEXP_FWD_CORE wxColour;
- #include "wx/x11/privx.h"
- // Put any private declarations here: native Motif types may be used because
- // this header is included after Xm/Xm.h
- // ----------------------------------------------------------------------------
- // convenience macros
- // ----------------------------------------------------------------------------
- #define wxCHECK_MOTIF_VERSION( major, minor ) \
- ( XmVersion >= (major) * 1000 + (minor) )
- #define wxCHECK_LESSTIF_VERSION( major, minor ) \
- ( LesstifVersion >= (major) * 1000 + (minor) )
- #define wxCHECK_LESSTIF() ( __WXLESSTIF__ )
- // some compilers (e.g. Sun CC) give warnings when treating string literals as
- // (non const) "char *" but many Motif functions take "char *" parameters which
- // are really "const char *" so use this macro to suppress the warnings when we
- // know it's ok
- #define wxMOTIF_STR(x) const_cast<char *>(x)
- // ----------------------------------------------------------------------------
- // Miscellaneous functions
- // ----------------------------------------------------------------------------
- WXWidget wxCreateBorderWidget( WXWidget parent, long style );
- // ----------------------------------------------------------------------------
- // common callbacks
- // ----------------------------------------------------------------------------
- // All widgets should have this as their resize proc.
- extern void wxWidgetResizeProc(Widget w, XConfigureEvent *event,
- String args[], int *num_args);
- // For repainting arbitrary windows
- void wxUniversalRepaintProc(Widget w, XtPointer WXUNUSED(c_data),
- XEvent *event, char *);
- // ----------------------------------------------------------------------------
- // we maintain a hash table which contains the mapping from Widget to wxWindow
- // corresponding to the window for this widget
- // ----------------------------------------------------------------------------
- extern void wxDeleteWindowFromTable(Widget w);
- extern wxWindow *wxGetWindowFromTable(Widget w);
- extern bool wxAddWindowToTable(Widget w, wxWindow *win);
- // ----------------------------------------------------------------------------
- // wxBitmap related functions
- // ----------------------------------------------------------------------------
- // Creates a bitmap with transparent areas drawn in the given colour.
- wxBitmap wxCreateMaskedBitmap(const wxBitmap& bitmap, const wxColour& colour);
- // ----------------------------------------------------------------------------
- // key events related functions
- // ----------------------------------------------------------------------------
- extern char wxFindMnemonic(const char* s);
- extern char * wxFindAccelerator (const char *s);
- extern XmString wxFindAcceleratorText (const char *s);
- // ----------------------------------------------------------------------------
- // TranslateXXXEvent() functions - translate Motif event to wxWindow one
- // ----------------------------------------------------------------------------
- extern bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win,
- Widget widget, const XEvent *xevent);
- extern bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win,
- Widget widget, const XEvent *xevent);
- extern void wxDoChangeForegroundColour(WXWidget widget,
- wxColour& foregroundColour);
- extern void wxDoChangeBackgroundColour(WXWidget widget,
- const wxColour& backgroundColour,
- bool changeArmColour = false);
- extern void wxDoChangeFont(WXWidget widget, const wxFont& font);
- extern void wxGetTextExtent(WXDisplay* display, const wxFont& font,
- double scale,
- const wxString& string, int* width, int* height,
- int* ascent, int* descent);
- extern void wxGetTextExtent(const wxWindow* window, const wxString& str,
- int* width, int* height,
- int* ascent, int* descent);
- #define wxNO_COLORS 0x00
- #define wxBACK_COLORS 0x01
- #define wxFORE_COLORS 0x02
- extern XColor itemColors[5] ;
- #define wxBACK_INDEX 0
- #define wxFORE_INDEX 1
- #define wxSELE_INDEX 2
- #define wxTOPS_INDEX 3
- #define wxBOTS_INDEX 4
- // ----------------------------------------------------------------------------
- // XmString/wxString conversion utilities
- // ----------------------------------------------------------------------------
- wxString wxXmStringToString( const XmString& xmString );
- XmString wxStringToXmString( const char* string );
- inline XmString wxStringToXmString( const wxScopedCharBuffer& string )
- { return wxStringToXmString(string.data()); }
- inline XmString wxStringToXmString( const wxString& string )
- { return wxStringToXmString((const char*)string.mb_str()); }
- // XmString made easy to use in wxWidgets (and has an added benefit of
- // cleaning up automatically)
- class wxXmString
- {
- void Init(const char *str)
- {
- m_string = XmStringCreateLtoR
- (
- const_cast<char *>(str),
- const_cast<char *>(XmSTRING_DEFAULT_CHARSET)
- );
- }
- public:
- wxXmString(const char* str)
- {
- Init(str);
- }
- wxXmString(const wchar_t* str)
- {
- Init(wxConvLibc.cWC2MB(str));
- }
- wxXmString(const wxString& str)
- {
- Init(str.mb_str());
- }
- wxXmString(const wxCStrData& str)
- {
- Init(str);
- }
- // just to avoid calling XmStringFree()
- wxXmString(const XmString& string) { m_string = string; }
- ~wxXmString() { XmStringFree(m_string); }
- // semi-implicit conversion to XmString (shouldn't rely on implicit
- // conversion because many of Motif functions are macros)
- XmString operator()() const { return m_string; }
- private:
- XmString m_string;
- };
- // ----------------------------------------------------------------------------
- // Routines used in both wxTextCtrl/wxListBox and nativa wxComboBox
- // (defined in src/motif/listbox.cpp or src/motif/textctrl.cpp
- // ----------------------------------------------------------------------------
- int wxDoFindStringInList( Widget listWidget, const wxString& str );
- int wxDoGetSelectionInList( Widget listWidget );
- wxString wxDoGetStringInList( Widget listWidget, int n );
- wxSize wxDoGetListBoxBestSize( Widget listWidget, const wxWindow* window );
- wxSize wxDoGetSingleTextCtrlBestSize( Widget textWidget,
- const wxWindow* window );
- // ----------------------------------------------------------------------------
- // event-related functions
- // ----------------------------------------------------------------------------
- // executes one main loop iteration (implemented in src/motif/evtloop.cpp)
- // returns true if the loop should be exited
- bool wxDoEventLoopIteration( wxGUIEventLoop& evtLoop );
- // Consume all events until no more left
- void wxFlushEvents(WXDisplay* display);
- // ----------------------------------------------------------------------------
- // macros to avoid casting WXFOO to Foo all the time
- // ----------------------------------------------------------------------------
- // argument is of type "wxWindow *"
- #define GetWidget(w) ((Widget)(w)->GetHandle())
- // ----------------------------------------------------------------------------
- // accessors for C modules
- // ----------------------------------------------------------------------------
- extern "C" XtAppContext wxGetAppContext();
- #endif
- // _WX_PRIVATE_H_
|