X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c1dc9f8394c1488ad8e7d945e6f943f7b34554ce..f396e5a7ca14cd432fd7a7a60624bd9fe0ed7a83:/include/wx/utils.h diff --git a/include/wx/utils.h b/include/wx/utils.h index 443289203c..0baa6099d6 100644 --- a/include/wx/utils.h +++ b/include/wx/utils.h @@ -23,8 +23,8 @@ #include "wx/gdicmn.h" #endif -class WXDLLIMPEXP_BASE wxArrayString; -class WXDLLIMPEXP_BASE wxArrayInt; +class WXDLLIMPEXP_FWD_BASE wxArrayString; +class WXDLLIMPEXP_FWD_BASE wxArrayInt; // need this for wxGetDiskSpace() as we can't, unfortunately, forward declare // wxLongLong @@ -46,10 +46,10 @@ class WXDLLIMPEXP_BASE wxArrayInt; // Forward declaration // ---------------------------------------------------------------------------- -class WXDLLIMPEXP_CORE wxProcess; -class WXDLLIMPEXP_CORE wxFrame; -class WXDLLIMPEXP_CORE wxWindow; -class WXDLLIMPEXP_CORE wxWindowList; +class WXDLLIMPEXP_FWD_BASE wxProcess; +class WXDLLIMPEXP_FWD_CORE wxFrame; +class WXDLLIMPEXP_FWD_CORE wxWindow; +class WXDLLIMPEXP_FWD_CORE wxWindowList; // ---------------------------------------------------------------------------- // Macros @@ -87,6 +87,11 @@ WXDLLIMPEXP_CORE void wxBell(); WXDLLIMPEXP_BASE void wxBell(); #endif +#if wxUSE_MSGDLG +// Show wxWidgets information +WXDLLIMPEXP_CORE void wxInfoMessageBox(wxWindow* parent); +#endif // wxUSE_MSGDLG + // Get OS description as a user-readable string WXDLLIMPEXP_BASE wxString wxGetOsDescription(); @@ -171,8 +176,7 @@ public: operator int() const { return (int) GetInteger(); } operator long() const { return GetInteger(); } operator double() const { return GetDouble(); } - operator const wxString() const { return GetString(); } - operator const wxChar*() const { return (const wxChar*) GetString(); } + operator const wxString&() const { return GetString(); } static void AddPlatform(int platform); static bool Is(int platform); @@ -213,6 +217,7 @@ public: wxMouseState() : m_x(0), m_y(0), m_leftDown(false), m_middleDown(false), m_rightDown(false), + m_aux1Down(false), m_aux2Down(false), m_controlDown(false), m_shiftDown(false), m_altDown(false), m_metaDown(false) {} @@ -223,6 +228,8 @@ public: bool LeftDown() { return m_leftDown; } bool MiddleDown() { return m_middleDown; } bool RightDown() { return m_rightDown; } + bool Aux1Down() { return m_aux1Down; } + bool Aux2Down() { return m_aux2Down; } bool ControlDown() { return m_controlDown; } bool ShiftDown() { return m_shiftDown; } @@ -243,6 +250,8 @@ public: void SetLeftDown(bool down) { m_leftDown = down; } void SetMiddleDown(bool down) { m_middleDown = down; } void SetRightDown(bool down) { m_rightDown = down; } + void SetAux1Down(bool down) { m_aux1Down = down; } + void SetAux2Down(bool down) { m_aux2Down = down; } void SetControlDown(bool down) { m_controlDown = down; } void SetShiftDown(bool down) { m_shiftDown = down; } @@ -256,6 +265,8 @@ private: bool m_leftDown : 1; bool m_middleDown : 1; bool m_rightDown : 1; + bool m_aux1Down : 1; + bool m_aux2Down : 1; bool m_controlDown : 1; bool m_shiftDown : 1; @@ -267,21 +278,20 @@ private: // Returns the current state of the mouse position, buttons and modifers WXDLLEXPORT wxMouseState wxGetMouseState(); +#endif // wxUSE_GUI // ---------------------------------------------------------------------------- // Window ID management // ---------------------------------------------------------------------------- -// Generate a unique ID -WXDLLEXPORT long wxNewId(); - // Ensure subsequent IDs don't clash with this one -WXDLLEXPORT void wxRegisterId(long id); +WXDLLIMPEXP_BASE void wxRegisterId(long id); // Return the current ID -WXDLLEXPORT long wxGetCurrentId(); +WXDLLIMPEXP_BASE long wxGetCurrentId(); -#endif // wxUSE_GUI +// Generate a unique ID +WXDLLIMPEXP_BASE long wxNewId(); // ---------------------------------------------------------------------------- // Various conversions @@ -292,6 +302,7 @@ WXDLLIMPEXP_BASE int wxHexToDec(const wxString& buf); // Convert decimal integer to 2-character hex string WXDLLIMPEXP_BASE void wxDecToHex(int dec, wxChar *buf); +WXDLLIMPEXP_BASE void wxDecToHex(int dec, char* ch1, char* ch2); WXDLLIMPEXP_BASE wxString wxDecToHex(int dec); // ---------------------------------------------------------------------------- @@ -320,7 +331,15 @@ enum // by default synchronous execution disables all program windows to avoid // that the user interacts with the program while the child process is // running, you can use this flag to prevent this from happening - wxEXEC_NODISABLE = 8 + wxEXEC_NODISABLE = 8, + + // by default, the event loop is run while waiting for synchronous execution + // to complete and this flag can be used to simply block the main process + // until the child process finishes + wxEXEC_NOEVENTS = 16, + + // convenient synonym for flags given system()-like behaviour + wxEXEC_BLOCK = wxEXEC_SYNC | wxEXEC_NOEVENTS }; // Execute another program. @@ -441,15 +460,6 @@ WXDLLIMPEXP_BASE bool wxHandleFatalExceptions(bool doit = true); #endif // wxUSE_ON_FATAL_EXCEPTION -// flags for wxLaunchDefaultBrowser -enum -{ - wxBROWSER_NEW_WINDOW = 1 -}; - -// Launch url in the user's default internet browser -WXDLLIMPEXP_BASE bool wxLaunchDefaultBrowser(const wxString& url, int flags = 0); - // ---------------------------------------------------------------------------- // Environment variables // ---------------------------------------------------------------------------- @@ -459,10 +469,33 @@ WXDLLIMPEXP_BASE bool wxLaunchDefaultBrowser(const wxString& url, int flags = 0) WXDLLIMPEXP_BASE bool wxGetEnv(const wxString& var, wxString *value); // set the env var name to the given value, return true on success -WXDLLIMPEXP_BASE bool wxSetEnv(const wxString& var, const wxChar *value); +WXDLLIMPEXP_BASE bool wxSetEnv(const wxString& var, const wxString& value); // remove the env var from environment -inline bool wxUnsetEnv(const wxString& var) { return wxSetEnv(var, NULL); } +WXDLLIMPEXP_BASE bool wxUnsetEnv(const wxString& var); + +#if WXWIN_COMPATIBILITY_2_8 +inline bool wxSetEnv(const wxString& var, const char *value) + { return wxSetEnv(var, wxString(value)); } +inline bool wxSetEnv(const wxString& var, const wchar_t *value) + { return wxSetEnv(var, wxString(value)); } +template +inline bool wxSetEnv(const wxString& var, const wxCharTypeBuffer& value) + { return wxSetEnv(var, wxString(value)); } +inline bool wxSetEnv(const wxString& var, const wxCStrData& value) + { return wxSetEnv(var, wxString(value)); } + +// this one is for passing NULL directly - don't use it, use wxUnsetEnv instead +wxDEPRECATED( inline bool wxSetEnv(const wxString& var, int value) ); +inline bool wxSetEnv(const wxString& var, int value) +{ + wxASSERT_MSG( value == 0, "using non-NULL integer as string?" ); + + wxUnusedVar(value); // fix unused parameter warning in release build + + return wxUnsetEnv(var); +} +#endif // WXWIN_COMPATIBILITY_2_8 // ---------------------------------------------------------------------------- // Network and username functions. @@ -494,13 +527,10 @@ WXDLLIMPEXP_BASE wxString wxGetUserName(); WXDLLIMPEXP_BASE wxString wxGetHomeDir(); WXDLLIMPEXP_BASE const wxChar* wxGetHomeDir(wxString *pstr); -// Get the user's home dir (caller must copy --- volatile) -// returns NULL is no HOME dir is known -#if defined(__UNIX__) && wxUSE_UNICODE && !defined(__WINE__) -WXDLLIMPEXP_BASE const wxMB2WXbuf wxGetUserHome(const wxString& user = wxEmptyString); -#else -WXDLLIMPEXP_BASE wxChar* wxGetUserHome(const wxString& user = wxEmptyString); -#endif +// Get the user's (by default use the current user name) home dir, +// return empty string on error +WXDLLIMPEXP_BASE wxString wxGetUserHome(const wxString& user = wxEmptyString); + #if wxUSE_LONGLONG typedef wxLongLong wxDiskspaceSize_t; @@ -513,8 +543,33 @@ WXDLLIMPEXP_BASE bool wxGetDiskSpace(const wxString& path, wxDiskspaceSize_t *pTotal = NULL, wxDiskspaceSize_t *pFree = NULL); + + +extern "C" +{ +typedef int (wxCMPFUNC_CONV *CMPFUNCDATA)(const void* pItem1, const void* pItem2, const void* user_data); +} + + +WXDLLIMPEXP_BASE void wxQsort(void *const pbase, size_t total_elems, + size_t size, CMPFUNCDATA cmp, const void* user_data); + + #if wxUSE_GUI // GUI only things from now on +// ---------------------------------------------------------------------------- +// Launch default browser +// ---------------------------------------------------------------------------- + +// flags for wxLaunchDefaultBrowser +enum +{ + wxBROWSER_NEW_WINDOW = 1 +}; + +// Launch url in the user's default internet browser +WXDLLIMPEXP_CORE bool wxLaunchDefaultBrowser(const wxString& url, int flags = 0); + // ---------------------------------------------------------------------------- // Menu accelerators related things // ---------------------------------------------------------------------------- @@ -543,7 +598,7 @@ wxDEPRECATED( ); #if wxUSE_ACCEL -class WXDLLEXPORT wxAcceleratorEntry; +class WXDLLIMPEXP_FWD_CORE wxAcceleratorEntry; // use wxAcceleratorEntry::Create() or FromString() methods instead wxDEPRECATED( @@ -639,23 +694,6 @@ public: static const wxCursor GetBusyCursor(); }; - -// ---------------------------------------------------------------------------- -// Reading and writing resources (eg WIN.INI, .Xdefaults) -// ---------------------------------------------------------------------------- - -#if wxUSE_RESOURCES -WXDLLEXPORT bool wxWriteResource(const wxString& section, const wxString& entry, const wxString& value, const wxString& file = wxEmptyString); -WXDLLEXPORT bool wxWriteResource(const wxString& section, const wxString& entry, float value, const wxString& file = wxEmptyString); -WXDLLEXPORT bool wxWriteResource(const wxString& section, const wxString& entry, long value, const wxString& file = wxEmptyString); -WXDLLEXPORT bool wxWriteResource(const wxString& section, const wxString& entry, int value, const wxString& file = wxEmptyString); - -WXDLLEXPORT bool wxGetResource(const wxString& section, const wxString& entry, wxChar **value, const wxString& file = wxEmptyString); -WXDLLEXPORT bool wxGetResource(const wxString& section, const wxString& entry, float *value, const wxString& file = wxEmptyString); -WXDLLEXPORT bool wxGetResource(const wxString& section, const wxString& entry, long *value, const wxString& file = wxEmptyString); -WXDLLEXPORT bool wxGetResource(const wxString& section, const wxString& entry, int *value, const wxString& file = wxEmptyString); -#endif // wxUSE_RESOURCES - void WXDLLEXPORT wxGetMousePosition( int* x, int* y ); // MSW only: get user-defined resource from the .res file. @@ -666,11 +704,13 @@ void WXDLLEXPORT wxGetMousePosition( int* x, int* y ); #endif // MSW // ---------------------------------------------------------------------------- -// Display and colorss (X only) +// X11 Display access // ---------------------------------------------------------------------------- +#if defined(__X__) || defined(__WXGTK__) + #ifdef __WXGTK__ - void *wxGetDisplay(); + WXDLLIMPEXP_CORE void *wxGetDisplay(); #endif #ifdef __X__ @@ -679,18 +719,13 @@ void WXDLLEXPORT wxGetMousePosition( int* x, int* y ); WXDLLIMPEXP_CORE wxString wxGetDisplayName(); #endif // X or GTK+ -#ifdef __X__ - -#ifdef __VMS__ // Xlib.h for VMS is not (yet) compatible with C++ - // The resulting warnings are switched off here -#pragma message disable nosimpint -#endif -// #include -#ifdef __VMS__ -#pragma message enable nosimpint -#endif +// use this function instead of the functions above in implementation code +inline struct _XDisplay *wxGetX11Display() +{ + return (_XDisplay *)wxGetDisplay(); +} -#endif //__X__ +#endif // X11 || wxGTK #endif // wxUSE_GUI