// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifndef _WX_UTILSH__
-#define _WX_UTILSH__
+#ifndef _WX_UTILS_H_
+#define _WX_UTILS_H_
// ----------------------------------------------------------------------------
// headers
#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
// 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
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();
public:
wxPlatform() { Init(); }
wxPlatform(const wxPlatform& platform) { Copy(platform); }
- void operator = (const wxPlatform& platform) { Copy(platform); }
+ void operator = (const wxPlatform& platform) { if (&platform != this) Copy(platform); }
void Copy(const wxPlatform& platform);
// Specify an optional default value
operator long() const { return GetInteger(); }
operator double() const { return GetDouble(); }
operator const wxString&() const { return GetString(); }
- operator const wxChar*() const { return (const wxChar*) GetString(); }
static void AddPlatform(int platform);
static bool Is(int platform);
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)
{}
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; }
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; }
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;
// 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
// 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);
// ----------------------------------------------------------------------------
#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
// ----------------------------------------------------------------------------
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<typename T>
+inline bool wxSetEnv(const wxString& var, const wxCharTypeBuffer<T>& 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.
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;
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
// ----------------------------------------------------------------------------
);
#if wxUSE_ACCEL
-class WXDLLEXPORT wxAcceleratorEntry;
+class WXDLLIMPEXP_FWD_CORE wxAcceleratorEntry;
// use wxAcceleratorEntry::Create() or FromString() methods instead
wxDEPRECATED(
#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__
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 <X11/Xlib.h>
-#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
// wxYield(): these functions are obsolete, please use wxApp methods instead!
// ----------------------------------------------------------------------------
+// avoid redeclaring this function here if it had been already declated by
+// wx/app.h, this results in warnings from g++ with -Wredundant-decls
+#ifndef wx_YIELD_DECLARED
+#define wx_YIELD_DECLARED
+
// Yield to other apps/messages
WXDLLIMPEXP_BASE bool wxYield();
+#endif // wx_YIELD_DECLARED
+
// Like wxYield, but fails silently if the yield is recursive.
WXDLLIMPEXP_BASE bool wxYieldIfNeeded();