X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/24f6c4e8658ae2884f136c15a0ae6ff72ede7e25..627ddac99ee82dcd930029815ad696c64375182d:/wxPython/src/gtk/_misc.py?ds=sidebyside diff --git a/wxPython/src/gtk/_misc.py b/wxPython/src/gtk/_misc.py index f930da8990..b723e4735d 100644 --- a/wxPython/src/gtk/_misc.py +++ b/wxPython/src/gtk/_misc.py @@ -273,9 +273,6 @@ def SystemOptions_IsFalse(*args, **kwargs): """SystemOptions_IsFalse(String name) -> bool""" return _misc_.SystemOptions_IsFalse(*args, **kwargs) -# Until the new native control for wxMac is up to par, still use the generic one. -SystemOptions.SetOptionInt("mac.listctrl.always_use_generic", 1) - #--------------------------------------------------------------------------- @@ -927,7 +924,7 @@ class BusyInfo(_core.Object): thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') __repr__ = _swig_repr def __init__(self, *args, **kwargs): - """__init__(self, String message) -> BusyInfo""" + """__init__(self, String message, Window parent=None) -> BusyInfo""" _misc_.BusyInfo_swiginit(self,_misc_.new_BusyInfo(*args, **kwargs)) __swig_destroy__ = _misc_.delete_BusyInfo __del__ = lambda self : None; @@ -941,6 +938,8 @@ class StopWatch(object): def __init__(self, *args, **kwargs): """__init__(self) -> StopWatch""" _misc_.StopWatch_swiginit(self,_misc_.new_StopWatch(*args, **kwargs)) + __swig_destroy__ = _misc_.delete_StopWatch + __del__ = lambda self : None; def Start(*args, **kwargs): """Start(self, long t0=0)""" return _misc_.StopWatch_Start(*args, **kwargs) @@ -1250,7 +1249,7 @@ class PyTipProvider(TipProvider): def __init__(self, *args, **kwargs): """__init__(self, size_t currentTip) -> PyTipProvider""" _misc_.PyTipProvider_swiginit(self,_misc_.new_PyTipProvider(*args, **kwargs)) - self._setCallbackInfo(self, PyTipProvider) + PyTipProvider._setCallbackInfo(self, self, PyTipProvider) def _setCallbackInfo(*args, **kwargs): """_setCallbackInfo(self, PyObject self, PyObject _class)""" @@ -1278,12 +1277,12 @@ class Timer(_core.EvtHandler): def __init__(self, *args, **kwargs): """__init__(self, EvtHandler owner=None, int id=ID_ANY) -> Timer""" _misc_.Timer_swiginit(self,_misc_.new_Timer(*args, **kwargs)) - self._setCallbackInfo(self, Timer, 0); self._setOORInfo(self, 0) + self._setOORInfo(self,0); self.this.own(True); Timer._setCallbackInfo(self, self, Timer) __swig_destroy__ = _misc_.delete_Timer __del__ = lambda self : None; def _setCallbackInfo(*args, **kwargs): - """_setCallbackInfo(self, PyObject self, PyObject _class, int incref=1)""" + """_setCallbackInfo(self, PyObject self, PyObject _class, int incref=0)""" return _misc_.Timer__setCallbackInfo(*args, **kwargs) def SetOwner(*args, **kwargs): @@ -1824,7 +1823,7 @@ class PyLog(Log): def __init__(self, *args, **kwargs): """__init__(self) -> PyLog""" _misc_.PyLog_swiginit(self,_misc_.new_PyLog(*args, **kwargs)) - self._setCallbackInfo(self, PyLog) + PyLog._setCallbackInfo(self, self, PyLog) def _setCallbackInfo(*args, **kwargs): """_setCallbackInfo(self, PyObject self, PyObject _class)""" @@ -1882,12 +1881,22 @@ class Process(_core.EvtHandler): def __init__(self, *args, **kwargs): """__init__(self, EvtHandler parent=None, int id=-1) -> Process""" _misc_.Process_swiginit(self,_misc_.new_Process(*args, **kwargs)) - self._setCallbackInfo(self, Process) + Process._setCallbackInfo(self, self, Process); self.this.own(False) + __swig_destroy__ = _misc_.delete_Process + __del__ = lambda self : None; def _setCallbackInfo(*args, **kwargs): """_setCallbackInfo(self, PyObject self, PyObject _class)""" return _misc_.Process__setCallbackInfo(*args, **kwargs) + def GetPid(*args, **kwargs): + """ + GetPid(self) -> long + + get the process ID of the process executed by Open() + """ + return _misc_.Process_GetPid(*args, **kwargs) + def OnTerminate(*args, **kwargs): """OnTerminate(self, int pid, int status)""" return _misc_.Process_OnTerminate(*args, **kwargs) @@ -2615,98 +2624,6 @@ class ArtProvider(object): ... return bmp - - Identifying art resources - ------------------------- - - Every bitmap is known to wx.ArtProvider under an unique ID that is - used when requesting a resource from it. The IDs can have one of the - following predefined values. Additionally, any string recognized by - custom art providers registered using `Push` may be used. - - GTK+ Note - --------- - - When running under GTK+ 2, GTK+ stock item IDs (e.g. 'gtk-cdrom') may be used - as well. Additionally, if wxGTK was compiled against GTK+ >= 2.4, then it is - also possible to load icons from current icon theme by specifying their name - without the extension and directory components. Icon themes recognized by GTK+ - follow the freedesktop.org Icon Themes specification. Note that themes are - not guaranteed to contain all icons, so wx.ArtProvider may return wx.NullBitmap - or wx.NullIcon. The default theme is typically installed in /usr/share/icons/hicolor. - - * wx.ART_ADD_BOOKMARK - * wx.ART_DEL_BOOKMARK - * wx.ART_HELP_SIDE_PANEL - * wx.ART_HELP_SETTINGS - * wx.ART_HELP_BOOK - * wx.ART_HELP_FOLDER - * wx.ART_HELP_PAGE - * wx.ART_GO_BACK - * wx.ART_GO_FORWARD - * wx.ART_GO_UP - * wx.ART_GO_DOWN - * wx.ART_GO_TO_PARENT - * wx.ART_GO_HOME - * wx.ART_FILE_OPEN - * wx.ART_FILE_SAVE - * wx.ART_FILE_SAVE_AS - * wx.ART_PRINT - * wx.ART_HELP - * wx.ART_TIP - * wx.ART_REPORT_VIEW - * wx.ART_LIST_VIEW - * wx.ART_NEW_DIR - * wx.ART_HARDDISK - * wx.ART_FLOPPY - * wx.ART_CDROM - * wx.ART_REMOVABLE - * wx.ART_FOLDER - * wx.ART_FOLDER_OPEN - * wx.ART_GO_DIR_UP - * wx.ART_EXECUTABLE_FILE - * wx.ART_NORMAL_FILE - * wx.ART_TICK_MARK - * wx.ART_CROSS_MARK - * wx.ART_ERROR - * wx.ART_QUESTION - * wx.ART_WARNING - * wx.ART_INFORMATION - * wx.ART_MISSING_IMAGE - * wx.ART_COPY - * wx.ART_CUT - * wx.ART_PASTE - * wx.ART_DELETE - * wx.ART_NEW - * wx.ART_UNDO - * wx.ART_REDO - * wx.ART_QUIT - * wx.ART_FIND - * wx.ART_FIND_AND_REPLACE - - - Clients - ------- - - The Client is the entity that calls wx.ArtProvider's `GetBitmap` or - `GetIcon` function. Client IDs serve as a hint to wx.ArtProvider - that is supposed to help it to choose the best looking bitmap. For - example it is often desirable to use slightly different icons in menus - and toolbars even though they represent the same action (e.g. - wx.ART_FILE_OPEN). Remember that this is really only a hint for - wx.ArtProvider -- it is common that `wx.ArtProvider.GetBitmap` returns - identical bitmap for different client values! - - * wx.ART_TOOLBAR - * wx.ART_MENU - * wx.ART_FRAME_ICON - * wx.ART_CMN_DIALOG - * wx.ART_HELP_BROWSER - * wx.ART_MESSAGE_BOX - * wx.ART_BUTTON - * wx.ART_OTHER (used for all requests that don't fit into any - of the categories above) - """ thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') __repr__ = _swig_repr @@ -2731,101 +2648,9 @@ class ArtProvider(object): ... return bmp - - Identifying art resources - ------------------------- - - Every bitmap is known to wx.ArtProvider under an unique ID that is - used when requesting a resource from it. The IDs can have one of the - following predefined values. Additionally, any string recognized by - custom art providers registered using `Push` may be used. - - GTK+ Note - --------- - - When running under GTK+ 2, GTK+ stock item IDs (e.g. 'gtk-cdrom') may be used - as well. Additionally, if wxGTK was compiled against GTK+ >= 2.4, then it is - also possible to load icons from current icon theme by specifying their name - without the extension and directory components. Icon themes recognized by GTK+ - follow the freedesktop.org Icon Themes specification. Note that themes are - not guaranteed to contain all icons, so wx.ArtProvider may return wx.NullBitmap - or wx.NullIcon. The default theme is typically installed in /usr/share/icons/hicolor. - - * wx.ART_ADD_BOOKMARK - * wx.ART_DEL_BOOKMARK - * wx.ART_HELP_SIDE_PANEL - * wx.ART_HELP_SETTINGS - * wx.ART_HELP_BOOK - * wx.ART_HELP_FOLDER - * wx.ART_HELP_PAGE - * wx.ART_GO_BACK - * wx.ART_GO_FORWARD - * wx.ART_GO_UP - * wx.ART_GO_DOWN - * wx.ART_GO_TO_PARENT - * wx.ART_GO_HOME - * wx.ART_FILE_OPEN - * wx.ART_FILE_SAVE - * wx.ART_FILE_SAVE_AS - * wx.ART_PRINT - * wx.ART_HELP - * wx.ART_TIP - * wx.ART_REPORT_VIEW - * wx.ART_LIST_VIEW - * wx.ART_NEW_DIR - * wx.ART_HARDDISK - * wx.ART_FLOPPY - * wx.ART_CDROM - * wx.ART_REMOVABLE - * wx.ART_FOLDER - * wx.ART_FOLDER_OPEN - * wx.ART_GO_DIR_UP - * wx.ART_EXECUTABLE_FILE - * wx.ART_NORMAL_FILE - * wx.ART_TICK_MARK - * wx.ART_CROSS_MARK - * wx.ART_ERROR - * wx.ART_QUESTION - * wx.ART_WARNING - * wx.ART_INFORMATION - * wx.ART_MISSING_IMAGE - * wx.ART_COPY - * wx.ART_CUT - * wx.ART_PASTE - * wx.ART_DELETE - * wx.ART_NEW - * wx.ART_UNDO - * wx.ART_REDO - * wx.ART_QUIT - * wx.ART_FIND - * wx.ART_FIND_AND_REPLACE - - - Clients - ------- - - The Client is the entity that calls wx.ArtProvider's `GetBitmap` or - `GetIcon` function. Client IDs serve as a hint to wx.ArtProvider - that is supposed to help it to choose the best looking bitmap. For - example it is often desirable to use slightly different icons in menus - and toolbars even though they represent the same action (e.g. - wx.ART_FILE_OPEN). Remember that this is really only a hint for - wx.ArtProvider -- it is common that `wx.ArtProvider.GetBitmap` returns - identical bitmap for different client values! - - * wx.ART_TOOLBAR - * wx.ART_MENU - * wx.ART_FRAME_ICON - * wx.ART_CMN_DIALOG - * wx.ART_HELP_BROWSER - * wx.ART_MESSAGE_BOX - * wx.ART_BUTTON - * wx.ART_OTHER (used for all requests that don't fit into any - of the categories above) - """ _misc_.ArtProvider_swiginit(self,_misc_.new_ArtProvider(*args, **kwargs)) - self._setCallbackInfo(self, ArtProvider) + ArtProvider._setCallbackInfo(self, self, ArtProvider) __swig_destroy__ = _misc_.delete_ArtProvider __del__ = lambda self : None; @@ -3551,6 +3376,7 @@ class DateTime(object): GMT10 = _misc_.DateTime_GMT10 GMT11 = _misc_.DateTime_GMT11 GMT12 = _misc_.DateTime_GMT12 + GMT13 = _misc_.DateTime_GMT13 WET = _misc_.DateTime_WET WEST = _misc_.DateTime_WEST CET = _misc_.DateTime_CET @@ -3576,6 +3402,8 @@ class DateTime(object): A_CST = _misc_.DateTime_A_CST A_EST = _misc_.DateTime_A_EST A_ESST = _misc_.DateTime_A_ESST + NZST = _misc_.DateTime_NZST + NZDT = _misc_.DateTime_NZDT UTC = _misc_.DateTime_UTC Gregorian = _misc_.DateTime_Gregorian Julian = _misc_.DateTime_Julian @@ -4812,29 +4640,6 @@ class DataFormat(object): example, pasting data from the clipboard only if the data is in a format the program understands. A data format is is used to uniquely identify this format. - On the system level, a data format is usually just a number, (which - may be the CLIPFORMAT under Windows or Atom under X11, for example.) - - The standard format IDs are: - - ================ ===================================== - wx.DF_INVALID An invalid format - wx.DF_TEXT Text format - wx.DF_BITMAP A bitmap (wx.Bitmap) - wx.DF_METAFILE A metafile (wx.Metafile, Windows only) - wx.DF_FILENAME A list of filenames - wx.DF_HTML An HTML string. This is only valid on - Windows and non-unicode builds - ================ ===================================== - - Besies the standard formats, the application may also use custom - formats which are identified by their names (strings) and not numeric - identifiers. Although internally custom format must be created (or - registered) first, you shouldn't care about it because it is done - automatically the first time the wxDataFormat object corresponding to - a given format name is created. - - """ thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') __repr__ = _swig_repr @@ -4925,39 +4730,6 @@ class DataObject(object): you should instead derive from `wx.PyDataObjectSimple` or use `wx.CustomDataObject`. - Not surprisingly, being 'smart' comes at a price of added - complexity. This is reasonable for the situations when you really need - to support multiple formats, but may be annoying if you only want to - do something simple like cut and paste text. - - To provide a solution for both cases, wxWidgets has two predefined - classes which derive from wx.DataObject: `wx.DataObjectSimple` and - `wx.DataObjectComposite`. `wx.DataObjectSimple` is the simplest - wx.DataObject possible and only holds data in a single format (such as - text or bitmap) and `wx.DataObjectComposite` is the simplest way to - implement a wx.DataObject which supports multiple simultaneous formats - because it achievs this by simply holding several - `wx.DataObjectSimple` objects. - - Please note that the easiest way to use drag and drop and the - clipboard with multiple formats is by using `wx.DataObjectComposite`, - but it is not the most efficient one as each `wx.DataObjectSimple` - would contain the whole data in its respective formats. Now imagine - that you want to paste 200 pages of text in your proprietary format, - as well as Word, RTF, HTML, Unicode and plain text to the clipboard - and even today's computers are in trouble. For this case, you will - have to derive from wx.DataObject directly and make it enumerate its - formats and provide the data in the requested format on - demand. (**TODO**: This is currently not possible from Python. Make - it so.) - - Note that the platform transfer mechanisms for the clipboard and drag - and drop, do not copy any data out of the source application until - another application actually requests the data. This is in contrast to - the 'feel' offered to the user of a program who would normally think - that the data resides in the clipboard after having pressed 'Copy' - - in reality it is only declared to be available. - """ thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') def __init__(self): raise AttributeError, "No constructor defined" @@ -5016,7 +4788,6 @@ class DataObject(object): GetDataHere(self, DataFormat format) -> String Get the data bytes in the specified format, returns None on failure. - :todo: This should use the python buffer interface isntead... """ return _misc_.DataObject_GetDataHere(*args, **kwargs) @@ -5026,7 +4797,6 @@ class DataObject(object): Set the data in the specified format from the bytes in the the data string. - :todo: This should use the python buffer interface isntead... """ return _misc_.DataObject_SetData(*args, **kwargs) @@ -5114,29 +4884,6 @@ class PyDataObjectSimple(DataObjectSimple): class and overload `GetDataSize`, `GetDataHere` and `SetData` when you need to create your own simple single-format type of `wx.DataObject`. - Here is a simple example:: - - class MyDataObject(wx.PyDataObjectSimple): - def __init__(self): - wx.PyDataObjectSimple.__init__( - self, wx.CustomDataFormat('MyDOFormat')) - self.data = '' - - def GetDataSize(self): - return len(self.data) - def GetDataHere(self): - return self.data # returns a string - def SetData(self, data): - self.data = data - return True - - Note that there is already a `wx.CustomDataObject` class that behaves - very similarly to this example. The value of creating your own - derived class like this is to be able to do additional things when the - data is requested or given via the clipboard or drag and drop - operation, such as generate the data value or decode it into needed - data structures. - """ thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') __repr__ = _swig_repr @@ -5150,32 +4897,9 @@ class PyDataObjectSimple(DataObjectSimple): class and overload `GetDataSize`, `GetDataHere` and `SetData` when you need to create your own simple single-format type of `wx.DataObject`. - Here is a simple example:: - - class MyDataObject(wx.PyDataObjectSimple): - def __init__(self): - wx.PyDataObjectSimple.__init__( - self, wx.CustomDataFormat('MyDOFormat')) - self.data = '' - - def GetDataSize(self): - return len(self.data) - def GetDataHere(self): - return self.data # returns a string - def SetData(self, data): - self.data = data - return True - - Note that there is already a `wx.CustomDataObject` class that behaves - very similarly to this example. The value of creating your own - derived class like this is to be able to do additional things when the - data is requested or given via the clipboard or drag and drop - operation, such as generate the data value or decode it into needed - data structures. - """ _misc_.PyDataObjectSimple_swiginit(self,_misc_.new_PyDataObjectSimple(*args, **kwargs)) - self._setCallbackInfo(self, PyDataObjectSimple) + PyDataObjectSimple._setCallbackInfo(self, self, PyDataObjectSimple) def _setCallbackInfo(*args, **kwargs): """_setCallbackInfo(self, PyObject self, PyObject _class)""" @@ -5324,7 +5048,7 @@ class PyTextDataObject(TextDataObject): into the data object. """ _misc_.PyTextDataObject_swiginit(self,_misc_.new_PyTextDataObject(*args, **kwargs)) - self._setCallbackInfo(self, PyTextDataObject) + PyTextDataObject._setCallbackInfo(self, self, PyTextDataObject) def _setCallbackInfo(*args, **kwargs): """_setCallbackInfo(self, PyObject self, PyObject _class)""" @@ -5338,7 +5062,6 @@ class BitmapDataObject(DataObjectSimple): data. It can be used without change to paste data into the `wx.Clipboard` or a `wx.DropSource`. - :see: `wx.PyBitmapDataObject` if you wish to override `GetBitmap` to increase efficiency. """ thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') __repr__ = _swig_repr @@ -5394,7 +5117,7 @@ class PyBitmapDataObject(BitmapDataObject): data on demand derive from this class and overload `GetBitmap`. """ _misc_.PyBitmapDataObject_swiginit(self,_misc_.new_PyBitmapDataObject(*args, **kwargs)) - self._setCallbackInfo(self, PyBitmapDataObject) + PyBitmapDataObject._setCallbackInfo(self, self, PyBitmapDataObject) def _setCallbackInfo(*args, **kwargs): """_setCallbackInfo(self, PyObject self, PyObject _class)""" @@ -5555,10 +5278,10 @@ class DropSource(object): Icon none=wxNullIcon) -> DropSource """ _misc_.DropSource_swiginit(self,_misc_.new_DropSource(*args, **kwargs)) - self._setCallbackInfo(self, DropSource, 0) + DropSource._setCallbackInfo(self, self, DropSource) def _setCallbackInfo(*args, **kwargs): - """_setCallbackInfo(self, PyObject self, PyObject _class, int incref)""" + """_setCallbackInfo(self, PyObject self, PyObject _class, int incref=0)""" return _misc_.DropSource__setCallbackInfo(*args, **kwargs) __swig_destroy__ = _misc_.delete_DropSource @@ -5610,7 +5333,7 @@ class DropTarget(object): def __init__(self, *args, **kwargs): """__init__(self, DataObject dataObject=None) -> DropTarget""" _misc_.DropTarget_swiginit(self,_misc_.new_DropTarget(*args, **kwargs)) - self._setCallbackInfo(self, DropTarget) + DropTarget._setCallbackInfo(self, self, DropTarget) def _setCallbackInfo(*args, **kwargs): """_setCallbackInfo(self, PyObject self, PyObject _class)""" @@ -5674,7 +5397,6 @@ class DropTarget(object): """GetDefaultAction(self) -> int""" return _misc_.DropTarget_GetDefaultAction(*args, **kwargs) - Data = property(GetData,doc="See `GetData`") DataObject = property(GetDataObject,SetDataObject,doc="See `GetDataObject` and `SetDataObject`") DefaultAction = property(GetDefaultAction,SetDefaultAction,doc="See `GetDefaultAction` and `SetDefaultAction`") _misc_.DropTarget_swigregister(DropTarget) @@ -5687,7 +5409,7 @@ class TextDropTarget(DropTarget): def __init__(self, *args, **kwargs): """__init__(self) -> TextDropTarget""" _misc_.TextDropTarget_swiginit(self,_misc_.new_TextDropTarget(*args, **kwargs)) - self._setCallbackInfo(self, TextDropTarget) + TextDropTarget._setCallbackInfo(self, self, TextDropTarget) def _setCallbackInfo(*args, **kwargs): """_setCallbackInfo(self, PyObject self, PyObject _class)""" @@ -5756,7 +5478,7 @@ class FileDropTarget(DropTarget): def __init__(self, *args, **kwargs): """__init__(self) -> FileDropTarget""" _misc_.FileDropTarget_swiginit(self,_misc_.new_FileDropTarget(*args, **kwargs)) - self._setCallbackInfo(self, FileDropTarget) + FileDropTarget._setCallbackInfo(self, self, FileDropTarget) def _setCallbackInfo(*args, **kwargs): """_setCallbackInfo(self, PyObject self, PyObject _class)""" @@ -6304,6 +6026,16 @@ class StandardPaths(object): return _misc_.StandardPaths_Get(*args, **kwargs) Get = staticmethod(Get) + def GetExecutablePath(*args, **kwargs): + """ + GetExecutablePath(self) -> String + + Return the path (directory+filename) of the running executable or an + empty string if it couldn't be determined. The path is returned as an + absolute path whenever possible. + """ + return _misc_.StandardPaths_GetExecutablePath(*args, **kwargs) + def GetConfigDir(*args, **kwargs): """ GetConfigDir(self) -> String @@ -6418,6 +6150,14 @@ class StandardPaths(object): """ return _misc_.StandardPaths_GetDocumentsDir(*args, **kwargs) + def GetTempDir(*args, **kwargs): + """ + GetTempDir(self) -> String + + Return the user's directory for temporary files. + """ + return _misc_.StandardPaths_GetTempDir(*args, **kwargs) + def SetInstallPrefix(*args, **kwargs): """ SetInstallPrefix(self, String prefix) @@ -6512,11 +6252,11 @@ def GetBatteryState(*args): class AboutDialogInfo(object): """ - `wx.AboutDialogInfo contains information shown in the standard About - dialog displayed by the `wx.AboutBox` function. This class contains - the general information about the program, such as its name, version, - copyright and so on, as well as lists of the program developers, - documentation writers, artists and translators. + `wx.AboutDialogInfo` contains information to be shown in the standard + About dialog displayed by the `wx.AboutBox` function. This class + contains the general information about the program, such as its name, + version, copyright and so on, as well as lists of the program + developers, documentation writers, artists and translators. While all the main platforms have a native implementation of the about dialog, they are often more limited than the generic version provided @@ -6535,11 +6275,11 @@ class AboutDialogInfo(object): """ __init__(self) -> AboutDialogInfo - `wx.AboutDialogInfo contains information shown in the standard About - dialog displayed by the `wx.AboutBox` function. This class contains - the general information about the program, such as its name, version, - copyright and so on, as well as lists of the program developers, - documentation writers, artists and translators. + `wx.AboutDialogInfo` contains information to be shown in the standard + About dialog displayed by the `wx.AboutBox` function. This class + contains the general information about the program, such as its name, + version, copyright and so on, as well as lists of the program + developers, documentation writers, artists and translators. While all the main platforms have a native implementation of the about dialog, they are often more limited than the generic version provided