| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: utils.h
- // Purpose: interface of various utility classes and functions
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- Signal constants used by wxProcess.
- */
- enum wxSignal
- {
- wxSIGNONE = 0, //!< verify if the process exists under Unix
- wxSIGHUP,
- wxSIGINT,
- wxSIGQUIT,
- wxSIGILL,
- wxSIGTRAP,
- wxSIGABRT,
- wxSIGEMT,
- wxSIGFPE,
- wxSIGKILL, //!< forcefully kill, dangerous!
- wxSIGBUS,
- wxSIGSEGV,
- wxSIGSYS,
- wxSIGPIPE,
- wxSIGALRM,
- wxSIGTERM //!< terminate the process gently
- };
- /**
- Return values for wxProcess::Kill.
- */
- enum wxKillError
- {
- wxKILL_OK, //!< no error
- wxKILL_BAD_SIGNAL, //!< no such signal
- wxKILL_ACCESS_DENIED, //!< permission denied
- wxKILL_NO_PROCESS, //!< no such process
- wxKILL_ERROR //!< another, unspecified error
- };
- enum wxKillFlags
- {
- wxKILL_NOCHILDREN = 0, //!< don't kill children
- wxKILL_CHILDREN = 1 //!< kill children
- };
- enum wxShutdownFlags
- {
- wxSHUTDOWN_FORCE = 1, //!< can be combined with other flags (MSW-only)
- wxSHUTDOWN_POWEROFF = 2, //!< power off the computer
- wxSHUTDOWN_REBOOT = 4, //!< shutdown and reboot
- wxSHUTDOWN_LOGOFF = 8 //!< close session (currently MSW-only)
- };
- /**
- @class wxWindowDisabler
- This class disables all windows of the application (may be with the
- exception of one of them) in its constructor and enables them back in its
- destructor.
- This is useful when you want to indicate to the user that the application
- is currently busy and cannot respond to user input.
- @library{wxcore}
- @category{misc}
- @see wxBusyCursor
- */
- class wxWindowDisabler
- {
- public:
- /**
- Disables all top level windows of the applications.
- If @a disable is @c false nothing is done. This can be convenient if
- the windows should be disabled depending on some condition.
- @since 2.9.0
- */
- wxWindowDisabler(bool disable = true);
- /**
- Disables all top level windows of the applications with the exception
- of @a winToSkip if it is not @NULL.
- Notice that under MSW if @a winToSkip appears in the taskbar, the user
- will be able to close the entire application (even though its main
- window is disabled) by right clicking on the taskbar icon and selecting
- the appropriate "Close" command from the context menu. To prevent this
- from happening you may want to use wxFRAME_TOOL_WINDOW, if applicable,
- or wxFRAME_NO_TASKBAR style when creating the window that will remain
- enabled.
- */
- wxWindowDisabler(wxWindow* winToSkip);
- /**
- Reenables the windows disabled by the constructor.
- */
- ~wxWindowDisabler();
- };
- /**
- @class wxBusyCursor
- This class makes it easy to tell your user that the program is temporarily
- busy. Just create a wxBusyCursor object on the stack, and within the
- current scope, the hourglass will be shown.
- For example:
- @code
- wxBusyCursor wait;
- for (int i = 0; i < 100000; i++)
- DoACalculation();
- @endcode
- It works by calling wxBeginBusyCursor() in the constructor, and
- wxEndBusyCursor() in the destructor.
- @library{wxcore}
- @category{misc}
- @see wxBeginBusyCursor(), wxEndBusyCursor(), wxWindowDisabler
- */
- class wxBusyCursor
- {
- public:
- /**
- Constructs a busy cursor object, calling wxBeginBusyCursor().
- */
- wxBusyCursor(const wxCursor* cursor = wxHOURGLASS_CURSOR);
- /**
- Destroys the busy cursor object, calling wxEndBusyCursor().
- */
- ~wxBusyCursor();
- };
- // ============================================================================
- // Global functions/macros
- // ============================================================================
- /** @addtogroup group_funcmacro_dialog */
- //@{
- /**
- Changes the cursor to the given cursor for all windows in the application.
- Use wxEndBusyCursor() to revert the cursor back to its previous state.
- These two calls can be nested, and a counter ensures that only the outer
- calls take effect.
- @see wxIsBusy(), wxBusyCursor
- @header{wx/utils.h}
- */
- void wxBeginBusyCursor(const wxCursor* cursor = wxHOURGLASS_CURSOR);
- /**
- Changes the cursor back to the original cursor, for all windows in the
- application. Use with wxBeginBusyCursor().
- @see wxIsBusy(), wxBusyCursor
- @header{wx/utils.h}
- */
- void wxEndBusyCursor();
- /**
- Returns @true if between two wxBeginBusyCursor() and wxEndBusyCursor()
- calls.
- @see wxBusyCursor.
- @header{wx/utils.h}
- */
- bool wxIsBusy();
- /**
- Ring the system bell.
- @note This function is categorized as a GUI one and so is not thread-safe.
- @header{wx/utils.h}
- @library{wxcore}
- */
- void wxBell();
- /**
- Shows a message box with the information about the wxWidgets build used,
- including its version, most important build parameters and the version of
- the underlying GUI toolkit. This is mainly used for diagnostic purposes
- and can be invoked by Ctrl-Alt-middle clicking on any wxWindow which
- doesn't otherwise handle this event.
- @since 2.9.0
- @see wxGetLibraryVersionInfo()
- @header{wx/utils.h}
- */
- void wxInfoMessageBox(wxWindow* parent);
- //@}
- /** @addtogroup group_funcmacro_version */
- //@{
- /**
- Get wxWidgets version information.
- @since 2.9.2
- @see wxVersionInfo
- @header{wx/utils.h}
- @library{wxcore}
- */
- wxVersionInfo wxGetLibraryVersionInfo();
- //@}
- /** @addtogroup group_funcmacro_env */
- //@{
- /**
- A map type containing environment variables names and values.
- This type is used with wxGetEnvMap() function and wxExecuteEnv structure
- optionally passed to wxExecute().
- @since 2.9.2
- @header{wx/utils.h}
- */
- typedef wxStringToStringHashMap wxEnvVariableHashMap;
- /**
- This is a macro defined as @c getenv() or its wide char version in Unicode
- mode.
- Note that under Win32 it may not return correct value for the variables set
- with wxSetEnv(), use wxGetEnv() function instead.
- @header{wx/utils.h}
- */
- wxChar* wxGetenv(const wxString& var);
- /**
- Returns the current value of the environment variable @a var in @a value.
- @a value may be @NULL if you just want to know if the variable exists and
- are not interested in its value.
- Returns @true if the variable exists, @false otherwise.
- @header{wx/utils.h}
- */
- bool wxGetEnv(const wxString& var, wxString* value);
- /**
- Sets the value of the environment variable @a var (adding it if necessary)
- to @a value.
- Notice that under Windows platforms the program may have two different
- environment blocks: the first one is that of a Windows process and is
- always present, but the CRT may maintain its own independent copy of the
- environment. wxSetEnv() will always update the first copy, which means that
- wxGetEnv(), which uses it directly, will always return the expected value
- after this call. But wxSetEnv() only updates the second copy for some
- compilers/CRT implementations (currently only MSVC and MinGW which uses the
- same MSVC CRT) and so using wxGetenv() (notice the difference in case) may
- not return the updated value.
- @param var
- The environment variable to be set, must not contain @c '=' character.
- @param value
- New value of the variable.
- @return
- @true on success or @false if changing the value failed.
- @see wxUnsetEnv()
- @header{wx/utils.h}
- */
- bool wxSetEnv(const wxString& var, const wxString& value);
- /**
- Removes the variable @a var from the environment.
- wxGetEnv() will return @NULL after the call to this function.
- Returns @true on success.
- @header{wx/utils.h}
- */
- bool wxUnsetEnv(const wxString& var);
- /**
- Fill a map with the complete content of current environment.
- The map will contain the environment variable names as keys and their
- values as values.
- @param map
- The environment map to fill, must be non-@NULL.
- @return
- @true if environment was successfully retrieved or @false otherwise.
- @header{wx/utils.h}
- @since 2.9.2
- */
- bool wxGetEnvMap(wxEnvVariableHashMap *map);
- //@}
- /** @addtogroup group_funcmacro_misc */
- //@{
- /**
- Returns battery state as one of @c wxBATTERY_NORMAL_STATE,
- @c wxBATTERY_LOW_STATE, @c wxBATTERY_CRITICAL_STATE,
- @c wxBATTERY_SHUTDOWN_STATE or @c wxBATTERY_UNKNOWN_STATE.
- @c wxBATTERY_UNKNOWN_STATE is also the default on platforms where this
- feature is not implemented (currently everywhere but MS Windows).
- @header{wx/utils.h}
- */
- wxBatteryState wxGetBatteryState();
- /**
- Returns the type of power source as one of @c wxPOWER_SOCKET,
- @c wxPOWER_BATTERY or @c wxPOWER_UNKNOWN. @c wxPOWER_UNKNOWN is also the
- default on platforms where this feature is not implemented (currently
- everywhere but MS Windows).
- @header{wx/utils.h}
- */
- wxPowerType wxGetPowerType();
- /**
- Under X only, returns the current display name.
- @see wxSetDisplayName()
- @header{wx/utils.h}
- */
- wxString wxGetDisplayName();
- /**
- For normal keys, returns @true if the specified key is currently down.
- For togglable keys (Caps Lock, Num Lock and Scroll Lock), returns @true if
- the key is toggled such that its LED indicator is lit. There is currently
- no way to test whether togglable keys are up or down.
- Even though there are virtual key codes defined for mouse buttons, they
- cannot be used with this function currently.
- @header{wx/utils.h}
- */
- bool wxGetKeyState(wxKeyCode key);
- /**
- Returns the mouse position in screen coordinates.
- @header{wx/utils.h}
- */
- wxPoint wxGetMousePosition();
- /**
- Returns the current state of the mouse. Returns a wxMouseState instance
- that contains the current position of the mouse pointer in screen
- coordinates, as well as boolean values indicating the up/down status of the
- mouse buttons and the modifier keys.
- @header{wx/utils.h}
- */
- wxMouseState wxGetMouseState();
- /**
- This function enables or disables all top level windows. It is used by
- wxSafeYield().
- @header{wx/utils.h}
- */
- void wxEnableTopLevelWindows(bool enable = true);
- /**
- Find the deepest window at the given mouse position in screen coordinates,
- returning the window if found, or @NULL if not.
- This function takes child windows at the given position into account even
- if they are disabled. The hidden children are however skipped by it.
- @header{wx/utils.h}
- */
- wxWindow* wxFindWindowAtPoint(const wxPoint& pt);
- /**
- @deprecated Replaced by wxWindow::FindWindowByLabel().
- Find a window by its label. Depending on the type of window, the label may
- be a window title or panel item label. If @a parent is @NULL, the search
- will start from all top-level frames and dialog boxes; if non-@NULL, the
- search will be limited to the given window hierarchy. The search is
- recursive in both cases.
- @header{wx/utils.h}
- */
- wxWindow* wxFindWindowByLabel(const wxString& label,
- wxWindow* parent = NULL);
- /**
- @deprecated Replaced by wxWindow::FindWindowByName().
- Find a window by its name (as given in a window constructor or @e Create
- function call). If @a parent is @NULL, the search will start from all
- top-level frames and dialog boxes; if non-@NULL, the search will be limited
- to the given window hierarchy. The search is recursive in both cases.
- If no such named window is found, wxFindWindowByLabel() is called.
- @header{wx/utils.h}
- */
- wxWindow* wxFindWindowByName(const wxString& name, wxWindow* parent = NULL);
- /**
- Find a menu item identifier associated with the given frame's menu bar.
- @header{wx/utils.h}
- */
- int wxFindMenuItemId(wxFrame* frame, const wxString& menuString,
- const wxString& itemString);
- /**
- @deprecated Ids generated by it can conflict with the Ids defined by the
- user code, use @c wxID_ANY to assign ids which are guaranteed
- to not conflict with the user-defined ids for the controls and
- menu items you create instead of using this function.
- Generates an integer identifier unique to this run of the program.
- @header{wx/utils.h}
- */
- int wxNewId();
- /**
- Ensures that Ids subsequently generated by wxNewId() do not clash with the
- given @a id.
- @header{wx/utils.h}
- */
- void wxRegisterId(int id);
- /**
- Opens the @a document in the application associated with the files of this
- type.
- The @a flags parameter is currently not used
- Returns @true if the application was successfully launched.
- @see wxLaunchDefaultBrowser(), wxExecute()
- @header{wx/utils.h}
- */
- bool wxLaunchDefaultApplication(const wxString& document, int flags = 0);
- /**
- Opens the @a url in user's default browser.
- If the @a flags parameter contains @c wxBROWSER_NEW_WINDOW flag, a new
- window is opened for the URL (currently this is only supported under
- Windows).
- And unless the @a flags parameter contains @c wxBROWSER_NOBUSYCURSOR flag,
- a busy cursor is shown while the browser is being launched (using
- wxBusyCursor).
- The parameter @a url is interpreted as follows:
- - if it has a valid scheme (e.g. @c "file:", @c "http:" or @c "mailto:")
- it is passed to the appropriate browser configured in the user system.
- - if it has no valid scheme (e.g. it's a local file path without the @c "file:"
- prefix), then ::wxFileExists and ::wxDirExists are used to test if it's a
- local file/directory; if it is, then the browser is called with the
- @a url parameter eventually prefixed by @c "file:".
- - if it has no valid scheme and it's not a local file/directory, then @c "http:"
- is prepended and the browser is called.
- Returns @true if the application was successfully launched.
- @note For some configurations of the running user, the application which is
- launched to open the given URL may be URL-dependent (e.g. a browser
- may be used for local URLs while another one may be used for remote
- URLs).
- @see wxLaunchDefaultApplication(), wxExecute()
- @header{wx/utils.h}
- */
- bool wxLaunchDefaultBrowser(const wxString& url, int flags = 0);
- /**
- Loads an object from Windows resource file.
- This function loads the resource with the given name and type from the
- resources embedded into a Windows application.
- The typical use for it is to load some data from the data files embedded
- into the program itself. For example, you could have the following fragment
- in your @c .rc file
- @code
- mydata MYDATA "myfile.dat"
- @endcode
- and then use it in the following way:
- @code
- const void* data = NULL;
- size_t size = 0;
- if ( !wxLoadUserResource(&data, &size, "mydata", "MYDATA") ) {
- ... handle error ...
- }
- else {
- // Use the data in any way, for example:
- wxMemoryInputStream is(data, size);
- ... read the data from stream ...
- }
- @endcode
- @param outData Filled with the pointer to the data on successful return.
- Notice that this pointer does @em not need to be freed by the caller.
- @param outLen Filled with the length of the data in bytes.
- @param resourceName The name of the resource to load.
- @param resourceType The type of the resource in usual Windows format, i.e.
- either a real string like "MYDATA" or an integer created by the
- standard Windows @c MAKEINTRESOURCE() macro, including any constants
- for the standard resources types like @c RT_RCDATA.
- @param module The @c HINSTANCE of the module to load the resources from.
- The current module is used by default.
- @return true if the data was loaded from resource or false if it couldn't
- be found (in which case no error is logged) or was found but couldn't
- be loaded (which is unexpected and does result in an error message).
- This function is available under Windows only.
- @library{wxbase}
- @header{wx/utils.h}
- @since 2.9.1
- */
- bool
- wxLoadUserResource(const void **outData,
- size_t *outLen,
- const wxString& resourceName,
- const wxChar* resourceType = "TEXT",
- WXHINSTANCE module = 0);
- /**
- Loads a user-defined Windows resource as a string.
- This is a wrapper for the general purpose overload wxLoadUserResource(const
- void**, size_t*, const wxString&, const wxChar*, WXHINSTANCE) and can be
- more convenient for the string data, but does an extra copy compared to the
- general version.
- @param resourceName The name of the resource to load.
- @param resourceType The type of the resource in usual Windows format, i.e.
- either a real string like "MYDATA" or an integer created by the
- standard Windows @c MAKEINTRESOURCE() macro, including any constants
- for the standard resources types like @c RT_RCDATA.
- @param pLen Filled with the length of the returned buffer if it is
- non-@NULL. This parameter should be used if NUL characters can occur in
- the resource data. It is new since wxWidgets 2.9.1
- @param module The @c HINSTANCE of the module to load the resources from.
- The current module is used by default. This parameter is new since
- wxWidgets 2.9.1.
- @return A pointer to the data to be <tt>delete[]</tt>d by caller on success
- or @NULL on error.
- This function is available under Windows only.
- @library{wxbase}
- @header{wx/utils.h}
- */
- char* wxLoadUserResource(const wxString& resourceName,
- const wxChar* resourceType = "TEXT",
- int* pLen = NULL,
- WXHINSTANCE module = 0);
- /**
- @deprecated Replaced by wxWindow::Close(). See the
- @ref overview_windowdeletion "window deletion overview".
- Tells the system to delete the specified object when all other events have
- been processed. In some environments, it is necessary to use this instead
- of deleting a frame directly with the delete operator, because some GUIs
- will still send events to a deleted window.
- @header{wx/utils.h}
- */
- void wxPostDelete(wxObject* object);
- /**
- Compare function type for use with wxQsort()
- @header{wx/utils.h}
- */
- typedef int (*wxSortCallback)(const void* pItem1, const void* pItem2, const void* user_data);
- /**
- Function implementing quick sort algorithm.
- This function sorts @a total_elems objects of size @a size located at @a
- pbase. It uses @a cmp function for comparing them and passes @a user_data
- pointer to the comparison function each time it's called.
- @header{wx/utils.h}
- */
- void wxQsort(void* pbase, size_t total_elems,
- size_t size, wxSortCallback cmp, const void* user_data);
- /**
- Under X only, sets the current display name. This is the X host and display
- name such as "colonsay:0.0", and the function indicates which display
- should be used for creating windows from this point on. Setting the display
- within an application allows multiple displays to be used.
- @see wxGetDisplayName()
- @header{wx/utils.h}
- */
- void wxSetDisplayName(const wxString& displayName);
- /**
- flags for wxStripMenuCodes
- */
- enum
- {
- // strip '&' characters
- wxStrip_Mnemonics = 1,
- // strip everything after '\t'
- wxStrip_Accel = 2,
- // strip everything (this is the default)
- wxStrip_All = wxStrip_Mnemonics | wxStrip_Accel
- };
- /**
- Strips any menu codes from @a str and returns the result.
- By default, the functions strips both the mnemonics character (@c '&')
- which is used to indicate a keyboard shortkey, and the accelerators, which
- are used only in the menu items and are separated from the main text by the
- @c \\t (TAB) character. By using @a flags of @c wxStrip_Mnemonics or
- @c wxStrip_Accel to strip only the former or the latter part, respectively.
- Notice that in most cases wxMenuItem::GetLabelFromText() or
- wxControl::GetLabelText() can be used instead.
- @header{wx/utils.h}
- */
- wxString wxStripMenuCodes(const wxString& str, int flags = wxStrip_All);
- //@}
- /** @addtogroup group_funcmacro_networkuseros */
- //@{
- /**
- Copies the user's email address into the supplied buffer, by concatenating
- the values returned by wxGetFullHostName() and wxGetUserId().
- @return @true if successful, @false otherwise.
- @header{wx/utils.h}
- */
- wxString wxGetEmailAddress();
- /**
- @deprecated Use wxGetEmailAddress() instead.
- @param buf Buffer to store the email address in.
- @param sz Size of the buffer.
- @return @true if successful, @false otherwise.
- @header{wx/utils.h}
- */
- bool wxGetEmailAddress(char* buf, int sz);
- /**
- Returns the amount of free memory in bytes under environments which support
- it, and -1 if not supported or failed to perform measurement.
- @header{wx/utils.h}
- */
- wxMemorySize wxGetFreeMemory();
- /**
- Return the (current) user's home directory.
- @see wxGetUserHome(), wxStandardPaths
- @header{wx/utils.h}
- */
- wxString wxGetHomeDir();
- /**
- Copies the current host machine's name into the supplied buffer. Please
- note that the returned name is @e not fully qualified, i.e. it does not
- include the domain name.
- Under Windows or NT, this function first looks in the environment variable
- SYSTEM_NAME; if this is not found, the entry @b HostName in the wxWidgets
- section of the WIN.INI file is tried.
- @return The hostname if successful or an empty string otherwise.
- @see wxGetFullHostName()
- @header{wx/utils.h}
- */
- wxString wxGetHostName();
- /**
- @deprecated Use wxGetHostName() instead.
- @param buf Buffer to store the host name in.
- @param sz Size of the buffer.
- @return @true if successful, @false otherwise.
- @header{wx/utils.h}
- */
- bool wxGetHostName(char* buf, int sz);
- /**
- Returns the FQDN (fully qualified domain host name) or an empty string on
- error.
- @see wxGetHostName()
- @header{wx/utils.h}
- */
- wxString wxGetFullHostName();
- /**
- Returns the home directory for the given user. If the @a user is empty
- (default value), this function behaves like wxGetHomeDir() (i.e. returns
- the current user home directory).
- If the home directory couldn't be determined, an empty string is returned.
- @header{wx/utils.h}
- */
- wxString wxGetUserHome(const wxString& user = wxEmptyString);
- /**
- This function returns the "user id" also known as "login name" under Unix
- (i.e. something like "jsmith"). It uniquely identifies the current user (on
- this system). Under Windows or NT, this function first looks in the
- environment variables USER and LOGNAME; if neither of these is found, the
- entry @b UserId in the @b wxWidgets section of the WIN.INI file is tried.
- @return The login name if successful or an empty string otherwise.
- @see wxGetUserName()
- @header{wx/utils.h}
- */
- wxString wxGetUserId();
- /**
- @deprecated Use wxGetUserId() instead.
- @param buf Buffer to store the login name in.
- @param sz Size of the buffer.
- @return @true if successful, @false otherwise.
- @header{wx/utils.h}
- */
- bool wxGetUserId(char* buf, int sz);
- /**
- This function returns the full user name (something like "Mr. John Smith").
- Under Windows or NT, this function looks for the entry UserName in the
- wxWidgets section of the WIN.INI file. If PenWindows is running, the entry
- Current in the section User of the PENWIN.INI file is used.
- @return The full user name if successful or an empty string otherwise.
- @see wxGetUserId()
- @header{wx/utils.h}
- */
- wxString wxGetUserName();
- /**
- @deprecated Use wxGetUserName() instead.
- @param buf Buffer to store the full user name in.
- @param sz Size of the buffer.
- @return @true if successful, @false otherwise.
- @header{wx/utils.h}
- */
- bool wxGetUserName(char* buf, int sz);
- /**
- Returns the string containing the description of the current platform in a
- user-readable form. For example, this function may return strings like
- "Windows NT Version 4.0" or "Linux 2.2.2 i386".
- @see wxGetOsVersion()
- @header{wx/utils.h}
- */
- wxString wxGetOsDescription();
- /**
- Gets the version and the operating system ID for currently running OS.
- The returned wxOperatingSystemId value can be used for a basic categorization
- of the OS family; the major and minor version numbers allows to detect a specific
- system.
-
- For Unix-like systems (@c wxOS_UNIX) the major and minor version integers will
- contain the kernel major and minor version numbers (as returned by the
- 'uname -r' command); e.g. "2" and "6" if the machine is using kernel 2.6.19.
- For Mac OS X systems (@c wxOS_MAC) the major and minor version integers are the
- natural version numbers associated with the OS; e.g. "10" and "6" if the machine
- is using Mac OS X Snow Leopard.
-
- For Windows-like systems (@c wxOS_WINDOWS) the major and minor version integers will
- contain the following values:
- @beginTable
- @row3col{<b>Windows OS name</b>, <b>Major version</b>, <b>Minor version</b>}
- @row3col{Windows 7, 6, 1}
- @row3col{Windows Server 2008 R2, 6, 1}
- @row3col{Windows Server 2008, 6, 0}
- @row3col{Windows Vista, 6, 0}
- @row3col{Windows Server 2003 R2, 5, 2}
- @row3col{Windows Server 2003, 5, 2}
- @row3col{Windows XP, 5, 1}
- @row3col{Windows 2000, 5, 0}
- @endDefList
- See the <a href="http://msdn.microsoft.com/en-us/library/ms724832(VS.85).aspx">MSDN</a>
- for more info about the values above.
- @see wxGetOsDescription(), wxPlatformInfo
- @header{wx/utils.h}
- */
- wxOperatingSystemId wxGetOsVersion(int* major = NULL, int* minor = NULL);
- /**
- Returns @true if the operating system the program is running under is 64
- bit. The check is performed at run-time and may differ from the value
- available at compile-time (at compile-time you can just check if
- <tt>sizeof(void*) == 8</tt>) since the program could be running in
- emulation mode or in a mixed 32/64 bit system (bi-architecture operating
- system).
- @note This function is not 100% reliable on some systems given the fact
- that there isn't always a standard way to do a reliable check on the
- OS architecture.
- @header{wx/utils.h}
- */
- bool wxIsPlatform64Bit();
- /**
- Returns @true if the current platform is little endian (instead of big
- endian). The check is performed at run-time.
- @see @ref group_funcmacro_byteorder "Byte Order Functions and Macros"
- @header{wx/utils.h}
- */
- bool wxIsPlatformLittleEndian();
- /**
- Returns a structure containing information about the currently running
- Linux distribution.
-
- This function uses the @c lsb_release utility which is part of the
- <tt>Linux Standard Base Core</tt> specification
- (see http://refspecs.linux-foundation.org/lsb.shtml) since the very first LSB
- release 1.0 (released in 2001).
- The @c lsb_release utility is very common on modern Linux distributions but in
- case it's not available, then this function will return a ::wxLinuxDistributionInfo
- structure containing empty strings.
-
- This function is Linux-specific and is only available when the @c __LINUX__
- symbol is defined.
- */
- wxLinuxDistributionInfo wxGetLinuxDistributionInfo();
- //@}
- /** @addtogroup group_funcmacro_procctrl */
- //@{
- /**
- @struct wxExecuteEnv
- This structure can optionally be passed to wxExecute() to specify
- additional options to use for the child process.
- @since 2.9.2
- @header{wx/utils.h}
- */
- struct wxExecuteEnv
- {
- /**
- The initial working directory for the new process.
- If this field is empty, the current working directory of this process
- is used.
- */
- wxString cwd;
- /**
- The environment variable map.
- If the map is empty, the environment variables of the current process
- are also used for the child one, otherwise only the variables defined
- in this map are used.
- */
- wxEnvVariableHashMap env;
- };
- /**
- Bit flags that can be used with wxExecute().
- */
- enum
- {
- /**
- Execute the process asynchronously.
- Notice that, due to its value, this is the default.
- */
- wxEXEC_ASYNC = 0,
- /**
- Execute the process synchronously.
- */
- wxEXEC_SYNC = 1,
- /**
- Always show the child process console under MSW.
- The child console is hidden by default if the child IO is redirected,
- this flag allows to change this and show it nevertheless.
- This flag is ignored under the other platforms.
- */
- wxEXEC_SHOW_CONSOLE = 2,
- /**
- Make the new process a group leader.
- Under Unix, if the process is the group leader then passing
- wxKILL_CHILDREN to wxKill() kills all children as well as pid.
- Under MSW, applies only to console applications and is only supported
- under NT family (i.e. not under Windows 9x). It corresponds to the
- native @c CREATE_NEW_PROCESS_GROUP and, in particular, ensures that
- Ctrl-Break signals will be sent to all children of this process as well
- to the process itself. Support for this flag under MSW was added in
- version 2.9.4 of wxWidgets.
- */
- wxEXEC_MAKE_GROUP_LEADER = 4,
- /**
- Don't disable the program UI while running the child synchronously.
- 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.
- This flag can only be used with ::wxEXEC_SYNC.
- */
- wxEXEC_NODISABLE = 8,
- /**
- Don't dispatch events while the child process is executed.
- 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
- This flag can only be used with ::wxEXEC_SYNC.
- */
- wxEXEC_NOEVENTS = 16,
- /**
- Hide child process console under MSW.
- Under MSW, hide the console of the child process if it has one,
- even if its IO is not redirected.
- This flag is ignored under the other platforms.
- */
- wxEXEC_HIDE_CONSOLE = 32,
- /**
- Convenient synonym for flags given system()-like behaviour.
- */
- wxEXEC_BLOCK = wxEXEC_SYNC | wxEXEC_NOEVENTS
- };
- /**
- Executes another program in Unix or Windows.
- In the overloaded versions of this function, if @a flags parameter contains
- @c wxEXEC_ASYNC flag (the default), flow of control immediately returns. If
- it contains @c wxEXEC_SYNC, the current application waits until the other
- program has terminated.
- In the case of synchronous execution, the return value is the exit code of
- the process (which terminates by the moment the function returns) and will
- be -1 if the process couldn't be started and typically 0 if the process
- terminated successfully. Also, while waiting for the process to terminate,
- wxExecute() will call wxYield(). Because of this, by default this function
- disables all application windows to avoid unexpected reentrancies which
- could result from the users interaction with the program while the child
- process is running. If you are sure that it is safe to not disable the
- program windows, you may pass @c wxEXEC_NODISABLE flag to prevent this
- automatic disabling from happening.
- For asynchronous execution, however, the return value is the process id and
- zero value indicates that the command could not be executed. As an added
- complication, the return value of -1 in this case indicates that we didn't
- launch a new process, but connected to the running one (this can only
- happen when using DDE under Windows for command execution). In particular,
- in this case only, the calling code will not get the notification about
- process termination.
- If @a callback isn't @NULL and if execution is asynchronous,
- wxProcess::OnTerminate() will be called when the process finishes.
- Specifying this parameter also allows you to redirect the standard input
- and/or output of the process being launched by calling
- wxProcess::Redirect().
- Under Windows, when launching a console process its console is shown by
- default but hidden if its IO is redirected. Both of these default
- behaviours may be overridden: if ::wxEXEC_HIDE_CONSOLE is specified, the
- console will never be shown. If ::wxEXEC_SHOW_CONSOLE is used, the console
- will be shown even if the child process IO is redirected. Neither of these
- flags affect non-console Windows applications or does anything under the
- other systems.
- Under Unix the flag @c wxEXEC_MAKE_GROUP_LEADER may be used to ensure that
- the new process is a group leader (this will create a new session if
- needed). Calling wxKill() passing wxKILL_CHILDREN will kill this process as
- well as all of its children (except those which have started their own
- session). Under MSW, this flag can be used with console processes only and
- corresponds to the native @c CREATE_NEW_PROCESS_GROUP flag.
- The @c wxEXEC_NOEVENTS flag prevents processing of any events from taking
- place while the child process is running. It should be only used for very
- short-lived processes as otherwise the application windows risk becoming
- unresponsive from the users point of view. As this flag only makes sense
- with @c wxEXEC_SYNC, @c wxEXEC_BLOCK equal to the sum of both of these
- flags is provided as a convenience.
- @note Currently wxExecute() can only be used from the main thread, calling
- this function from another thread will result in an assert failure in
- debug build and won't work.
- @param command
- The command to execute and any parameters to pass to it as a single
- string, i.e. "emacs file.txt".
- @param flags
- Must include either wxEXEC_ASYNC or wxEXEC_SYNC and can also include
- wxEXEC_SHOW_CONSOLE, wxEXEC_HIDE_CONSOLE, wxEXEC_MAKE_GROUP_LEADER (in
- either case) or wxEXEC_NODISABLE and wxEXEC_NOEVENTS or wxEXEC_BLOCK,
- which is equal to their combination, in wxEXEC_SYNC case.
- @param callback
- An optional pointer to wxProcess.
- @param env
- An optional pointer to additional parameters for the child process,
- such as its initial working directory and environment variables. This
- parameter is available in wxWidgets 2.9.2 and later only.
- @see wxShell(), wxProcess, @ref page_samples_exec,
- wxLaunchDefaultApplication(), wxLaunchDefaultBrowser()
- @header{wx/utils.h}
- @beginWxPerlOnly
- In wxPerl this function is called @c Wx::ExecuteCommand.
- @endWxPerlOnly
- */
- long wxExecute(const wxString& command, int flags = wxEXEC_ASYNC,
- wxProcess* callback = NULL,
- const wxExecuteEnv* env = NULL);
- //@}
- /** @addtogroup group_funcmacro_procctrl */
- //@{
- /**
- This is an overloaded version of wxExecute(const wxString&,int,wxProcess*),
- please see its documentation for general information.
- This version takes an array of values: a command, any number of arguments,
- terminated by @NULL.
- @param argv
- The command to execute should be the first element of this array, any
- additional ones are the command parameters and the array must be
- terminated with a @NULL pointer.
- @param flags
- Same as for wxExecute(const wxString&,int,wxProcess*) overload.
- @param callback
- An optional pointer to wxProcess.
- @param env
- An optional pointer to additional parameters for the child process,
- such as its initial working directory and environment variables. This
- parameter is available in wxWidgets 2.9.2 and later only.
- @see wxShell(), wxProcess, @ref page_samples_exec,
- wxLaunchDefaultApplication(), wxLaunchDefaultBrowser()
- @header{wx/utils.h}
- @beginWxPerlOnly
- In wxPerl this function is called @c Wx::ExecuteArgs.
- @endWxPerlOnly
- */
- long wxExecute(char** argv, int flags = wxEXEC_ASYNC,
- wxProcess* callback = NULL,
- const wxExecuteEnv *env = NULL);
- long wxExecute(wchar_t** argv, int flags = wxEXEC_ASYNC,
- wxProcess* callback = NULL,
- const wxExecuteEnv *env = NULL);
- //@}
- /** @addtogroup group_funcmacro_procctrl */
- //@{
- /**
- This is an overloaded version of wxExecute(const wxString&,int,wxProcess*),
- please see its documentation for general information.
- This version can be used to execute a process (always synchronously, the
- contents of @a flags is or'd with @c wxEXEC_SYNC) and capture its output in
- the array @e output.
- @param command
- The command to execute and any parameters to pass to it as a single
- string.
- @param output
- The string array where the stdout of the executed process is saved.
- @param flags
- Combination of flags to which ::wxEXEC_SYNC is always implicitly added.
- @param env
- An optional pointer to additional parameters for the child process,
- such as its initial working directory and environment variables. This
- parameter is available in wxWidgets 2.9.2 and later only.
- @see wxShell(), wxProcess, @ref page_samples_exec,
- wxLaunchDefaultApplication(), wxLaunchDefaultBrowser()
- @header{wx/utils.h}
- @beginWxPerlOnly
- This function is called @c Wx::ExecuteStdout: it only takes the
- @a command argument, and returns a 2-element list (@c status, @c output),
- where @c output in an array reference.
- @endWxPerlOnly
- */
- long wxExecute(const wxString& command, wxArrayString& output, int flags = 0,
- const wxExecuteEnv *env = NULL);
- /**
- This is an overloaded version of wxExecute(const wxString&,int,wxProcess*),
- please see its documentation for general information.
- This version adds the possibility to additionally capture the messages from
- standard error output in the @a errors array. As with the above overload
- capturing standard output only, execution is always synchronous.
- @param command
- The command to execute and any parameters to pass to it as a single
- string.
- @param output
- The string array where the stdout of the executed process is saved.
- @param errors
- The string array where the stderr of the executed process is saved.
- @param flags
- Combination of flags to which ::wxEXEC_SYNC is always implicitly added.
- @param env
- An optional pointer to additional parameters for the child process,
- such as its initial working directory and environment variables. This
- parameter is available in wxWidgets 2.9.2 and later only.
- @see wxShell(), wxProcess, @ref page_samples_exec,
- wxLaunchDefaultApplication(), wxLaunchDefaultBrowser()
- @header{wx/utils.h}
- @beginWxPerlOnly
- This function is called @c Wx::ExecuteStdoutStderr: it only takes the
- @a command argument, and returns a 3-element list (@c status, @c output,
- @c errors), where @c output and @c errors are array references.
- @endWxPerlOnly
- */
- long wxExecute(const wxString& command, wxArrayString& output,
- wxArrayString& errors, int flags = 0,
- const wxExecuteEnv *env = NULL);
- /**
- Returns the number uniquely identifying the current process in the system.
- If an error occurs, 0 is returned.
- @header{wx/utils.h}
- */
- unsigned long wxGetProcessId();
- /**
- Equivalent to the Unix kill function: send the given signal @a sig to the
- process with PID @a pid.
- The valid signal values are:
- @code
- enum wxSignal
- {
- wxSIGNONE = 0, // verify if the process exists under Unix
- wxSIGHUP,
- wxSIGINT,
- wxSIGQUIT,
- wxSIGILL,
- wxSIGTRAP,
- wxSIGABRT,
- wxSIGEMT,
- wxSIGFPE,
- wxSIGKILL, // forcefully kill, dangerous!
- wxSIGBUS,
- wxSIGSEGV,
- wxSIGSYS,
- wxSIGPIPE,
- wxSIGALRM,
- wxSIGTERM // terminate the process gently
- };
- @endcode
- @c wxSIGNONE, @c wxSIGKILL and @c wxSIGTERM have the same meaning under
- both Unix and Windows but all the other signals are equivalent to
- @c wxSIGTERM under Windows. Moreover, under Windows, @c wxSIGTERM is
- implemented by posting a message to the application window, so it only
- works if the application does have windows. If it doesn't, as is notably
- always the case for the console applications, you need to use @c wxSIGKILL
- to actually kill the process. Of course, this doesn't allow the process to
- shut down gracefully and so should be avoided if possible.
- Returns 0 on success, -1 on failure. If the @a rc parameter is not @NULL,
- it will be filled with a value from the @c wxKillError enum:
- @code
- enum wxKillError
- {
- wxKILL_OK, // no error
- wxKILL_BAD_SIGNAL, // no such signal
- wxKILL_ACCESS_DENIED, // permission denied
- wxKILL_NO_PROCESS, // no such process
- wxKILL_ERROR // another, unspecified error
- };
- @endcode
- The @a flags parameter can be wxKILL_NOCHILDREN (the default), or
- wxKILL_CHILDREN, in which case the child processes of this process will be
- killed too. Note that under Unix, for wxKILL_CHILDREN to work you should
- have created the process by passing wxEXEC_MAKE_GROUP_LEADER to
- wxExecute().
- @see wxProcess::Kill(), wxProcess::Exists(), @ref page_samples_exec
- @header{wx/utils.h}
- */
- int wxKill(long pid, wxSignal sig = wxSIGTERM,
- wxKillError* rc = NULL, int flags = wxKILL_NOCHILDREN);
- /**
- Executes a command in an interactive shell window. If no command is
- specified, then just the shell is spawned.
- @see wxExecute(), @ref page_samples_exec
- @header{wx/utils.h}
- */
- bool wxShell(const wxString& command = wxEmptyString);
- /**
- This function shuts down or reboots the computer depending on the value of
- the @a flags.
- @note Note that performing the shutdown requires the corresponding access
- rights (superuser under Unix, SE_SHUTDOWN privilege under Windows NT)
- and that this function is only implemented under Unix and MSW.
- @param flags
- One of @c wxSHUTDOWN_POWEROFF, @c wxSHUTDOWN_REBOOT or
- @c wxSHUTDOWN_LOGOFF (currently implemented only for MSW) possibly
- combined with @c wxSHUTDOWN_FORCE which forces shutdown under MSW by
- forcefully terminating all the applications. As doing this can result
- in a data loss, this flag shouldn't be used unless really necessary.
- @return @true on success, @false if an error occurred.
- @header{wx/utils.h}
- */
- bool wxShutdown(int flags = wxSHUTDOWN_POWEROFF);
- //@}
- /** @addtogroup group_funcmacro_time */
- //@{
- /**
- Sleeps for the specified number of microseconds. The microsecond resolution
- may not, in fact, be available on all platforms (currently only Unix
- platforms with nanosleep(2) may provide it) in which case this is the same
- as calling wxMilliSleep() with the argument of @e microseconds/1000.
- @header{wx/utils.h}
- */
- void wxMicroSleep(unsigned long microseconds);
- /**
- Sleeps for the specified number of milliseconds. Notice that usage of this
- function is encouraged instead of calling usleep(3) directly because the
- standard @e usleep() function is not MT safe.
- @header{wx/utils.h}
- */
- void wxMilliSleep(unsigned long milliseconds);
- /**
- Returns a string representing the current date and time.
- @header{wx/utils.h}
- */
- wxString wxNow();
- /**
- Sleeps for the specified number of seconds.
- @header{wx/utils.h}
- */
- void wxSleep(int secs);
- /**
- @deprecated This function is deprecated because its name is misleading:
- notice that the argument is in milliseconds, not microseconds.
- Please use either wxMilliSleep() or wxMicroSleep() depending on
- the resolution you need.
- Sleeps for the specified number of milliseconds.
- @header{wx/utils.h}
- */
- void wxUsleep(unsigned long milliseconds);
- //@}
|