X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/73deed44e63d9d8d21a2ef6182bc685edc2bb0f9..6dd16e4f26490f1f4f2be1204840cbf4ecf74a35:/include/wx/utils.h diff --git a/include/wx/utils.h b/include/wx/utils.h index 854711fa9a..ee0835608e 100644 --- a/include/wx/utils.h +++ b/include/wx/utils.h @@ -16,7 +16,7 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "utils.h" #endif @@ -65,8 +65,10 @@ WXDLLEXPORT_DATA(extern wxChar*) wxBuffer; // Make a copy of this string using 'new' WXDLLEXPORT wxChar* copystring(const wxChar *s); +#if WXWIN_COMPATIBILITY_2 // Matches string one within string two regardless of case WXDLLEXPORT bool StringMatch(const wxChar *one, const wxChar *two, bool subString = TRUE, bool exact = FALSE); +#endif // A shorter way of using strcmp #define wxStringEq(s1, s2) (s1 && s2 && (wxStrcmp(s1, s2) == 0)) @@ -148,17 +150,42 @@ WXDLLEXPORT wxString wxDecToHex(int dec); // Process management // ---------------------------------------------------------------------------- -// Execute another program. Returns 0 if there was an error, a PID otherwise. -WXDLLEXPORT long wxExecute(wxChar **argv, bool sync = FALSE, +// NB: for backwars compatibility reasons the values of wxEXEC_[A]SYNC *must* +// be 0 and 1, don't change! + +enum +{ + // execute the process asynchronously + wxEXEC_ASYNC = 0, + + // execute it synchronously, i.e. wait until it finishes + wxEXEC_SYNC = 1, + + // under Windows, don't hide the child even if it's IO is redirected (this + // is done by default) + wxEXEC_NOHIDE = 2, + + // under Unix, if the process is the group leader then killing -pid kills + // all children as well as pid + wxEXEC_MAKE_GROUP_LEADER = 4 +}; + +// Execute another program. +// +// If flags contain wxEXEC_SYNC, return -1 on failure and the exit code of the +// process if everything was ok. Otherwise (i.e. if wxEXEC_ASYNC), return 0 on +// failure and the PID of the launched process if ok. +WXDLLEXPORT long wxExecute(wxChar **argv, int flags = wxEXEC_ASYNC, wxProcess *process = (wxProcess *) NULL); -WXDLLEXPORT long wxExecute(const wxString& command, bool sync = FALSE, +WXDLLEXPORT long wxExecute(const wxString& command, int flags = wxEXEC_ASYNC, wxProcess *process = (wxProcess *) NULL); -// execute the command capturing its output into an array line by line +// execute the command capturing its output into an array line by line, this is +// always synchronous WXDLLEXPORT long wxExecute(const wxString& command, wxArrayString& output); -// also capture stderr +// also capture stderr (also synchronous) WXDLLEXPORT long wxExecute(const wxString& command, wxArrayString& output, wxArrayString& error); @@ -195,6 +222,15 @@ enum wxKillError wxKILL_ERROR // another, unspecified error }; +enum wxShutdownFlags +{ + wxSHUTDOWN_POWEROFF, // power off the computer + wxSHUTDOWN_REBOOT // shutdown and reboot +}; + +// Shutdown or reboot the PC +WXDLLEXPORT bool wxShutdown(wxShutdownFlags wFlags); + // send the given signal to the process (only NONE and KILL are supported under // Windows, all others mean TERM), return 0 if ok and -1 on error // @@ -217,6 +253,9 @@ WXDLLEXPORT void wxSleep(int nSecs); // Sleep for a given amount of milliseconds WXDLLEXPORT void wxUsleep(unsigned long milliseconds); +// Get the process id of the current process +WXDLLEXPORT unsigned long wxGetProcessId(); + // Get free memory in bytes, or -1 if cannot determine amount (e.g. on UNIX) WXDLLEXPORT long wxGetFreeMemory(); @@ -298,14 +337,6 @@ WXDLLEXPORT wxAcceleratorEntry *wxGetAccelFromString(const wxString& label); // Window search // ---------------------------------------------------------------------------- -// Find the window/widget with the given title or label. -// Pass a parent to begin the search from, or NULL to look through -// all windows. -WXDLLEXPORT wxWindow* wxFindWindowByLabel(const wxString& title, wxWindow *parent = (wxWindow *) NULL); - -// Find window by name, and if that fails, by label. -WXDLLEXPORT wxWindow* wxFindWindowByName(const wxString& name, wxWindow *parent = (wxWindow *) NULL); - // Returns menu item id or -1 if none. WXDLLEXPORT int wxFindMenuItemId(wxFrame *frame, const wxString& menuString, const wxString& itemString); @@ -314,10 +345,24 @@ WXDLLEXPORT int wxFindMenuItemId(wxFrame *frame, const wxString& menuString, con WXDLLEXPORT wxWindow* wxGenericFindWindowAtPoint(const wxPoint& pt); WXDLLEXPORT wxWindow* wxFindWindowAtPoint(const wxPoint& pt); +// NB: this function is obsolete, use wxWindow::FindWindowByLabel() instead +// +// Find the window/widget with the given title or label. +// Pass a parent to begin the search from, or NULL to look through +// all windows. +WXDLLEXPORT wxWindow* wxFindWindowByLabel(const wxString& title, wxWindow *parent = (wxWindow *) NULL); + +// NB: this function is obsolete, use wxWindow::FindWindowByName() instead +// +// Find window by name, and if that fails, by label. +WXDLLEXPORT wxWindow* wxFindWindowByName(const wxString& name, wxWindow *parent = (wxWindow *) NULL); + // ---------------------------------------------------------------------------- // Message/event queue helpers // ---------------------------------------------------------------------------- +// NB: these functions are obsolete, please use wxApp methods instead! + // Yield to other apps/messages WXDLLEXPORT bool wxYield(); @@ -325,7 +370,7 @@ WXDLLEXPORT bool wxYield(); WXDLLEXPORT bool wxYieldIfNeeded(); // Yield to other apps/messages and disable user input -WXDLLEXPORT bool wxSafeYield(wxWindow *win = NULL); +WXDLLEXPORT bool wxSafeYield(wxWindow *win = NULL, bool onlyIfNeeded = FALSE); // Enable or disable input to all top level windows WXDLLEXPORT void wxEnableTopLevelWindows(bool enable = TRUE); @@ -347,6 +392,8 @@ public: private: wxWindowList *m_winDisabled; + + DECLARE_NO_COPY_CLASS(wxWindowDisabler) }; // ---------------------------------------------------------------------------- @@ -445,7 +492,7 @@ void WXDLLEXPORT wxGetMousePosition( int* x, int* y ); // Format a message on the standard error (UNIX) or the debugging // stream (Windows) -WXDLLEXPORT void wxDebugMsg(const wxChar *fmt ...); +WXDLLEXPORT void wxDebugMsg(const wxChar *fmt ...) ATTRIBUTE_PRINTF_1; // Non-fatal error (continues) WXDLLEXPORT_DATA(extern const wxChar*) wxInternalErrorStr;