~~Title: Scripting Objects ~~ Scripts can interact with Opus using a number of different objects. For example, the **Lister** object represents a physical [[:basic_concepts:the_lister|Lister]] window, providing information about that Lister to the script and letting the script modify or control that Lister. An object has two main types of interface that you can call on: * //Properties// let the script query (and sometimes set) a simple value. For example, the **Lister** object has a **title** property that lets the script retrieve the Lister window's title string. * //Methods// are functions an object provides that the script can invoke to perform a task. For example, the **DOpus** object has an **Output** method that lets the script output a text string to the script log. The main distinction between properties and methods is that methods can (but don't always) accept arguments that modify their behavior, and don't have to (but often do) return a result. ===Variable types=== Properties and methods that return a result can return a number of different types of variables, and methods often take one or more parameters that can also be a number of types. ActiveX scripting languages are generally //typeless// - that is, a variable's type does not have to be defined in advance, and conversion from one type to another is often (but not always) automatic. Opus scripting mainly uses variables of the following types: * //Int// - a whole number (signed; valid range is -2147483648 to 2147483647). * //Currency// - this is a standard variant type, and is used by Opus in just a couple of cases that require numbers larger than an //Int// can hold (unfortunately ActiveX scripting does not always support a 64 bit integer type). * //Decimal// - an unsigned 64 bit value (maximum value 18,446,744,073,709,551,616). Not all languages support this - JScript does, but VBScript does not. * //String// - a text string * //Bool// - a Boolean (either **True** or **False**) * //Date// - a date/time value * //Collection// - a collection of multiple objects of (generally) the same type. Collections can be easy enumerated in some languages (e.g. in VBScript, using the //For Each// construct). Collections are only returned by Opus - unlike an array (or a Vector object), they are never created or modified directly (although some script methods can be used to modify them in certain cases). For example, the **Tab** object has a property called **selected** that represents all currently selected items in that tab - it is a //collection// of items. * //Object// - an Opus script object with defined methods and properties (one of the object types listed below). Some objects can be both an object and a collection - that is, they have methods and properties, but can also be enumerated like a collection. Some objects also have a //default value// - that is, simply using the object's name without any method or property will return a value of its own. For example, the **Metadata** object's default value is a string indicating the primary type of metadata available. You can also refer to an object's default value using the special **def_value** property name. * //Variant// - a variable of any type (this is used with a few objects - for example, a **Var** object can store a variant) ===Global objects=== There are two objects that are provided to scripts as global variables when they are invoked by Opus: * **[[~dopus|DOpus]]**: This** **object is available to //all// scripts. It provides various helper methods, and collections that let you access things like Listers and toolbars. * **[[~script|Script]]**: This** **object is provided to [[:scripting:script_add-ins|script add-ins]] when their various event handlers are invoked. It provides information relating to the script itself. ===Event objects=== There are a number of objects that Opus provides as parameters to methods within a script. For example, when a [[:scripting:script_functions|script function]] is invoked (e.g. when the button is clicked), Opus calls its **OnClick** method, passing it a **ClickData** object. * **[[~aboutdata|AboutData]]**: This object is provided to the **[[.scripting_events:onaboutscript|OnAboutScript]]** method, which is called when the user clicks the //About// button for a script in the **[[:scripting:script_management|Script Management]]** dialog. * **[[~activatelisterdata|ActivateListerData]]**: This object is provided to the **[[.scripting_events:onactivatelister|OnActivateLister]]** method, which is called whenever a Lister window is activated or deactivated. * **[[~activatetabdata|ActivateTabData]]**: This object is provided to the **[[.scripting_events:onactivatetab|OnActivateTab]]** method, which is called whenever a tab is activated. * **[[~addcmddata|AddCmdData]]**: This object is provided to the **[[.scripting_events:onaddcommands|OnAddCommands]]** method, which allows a script to [[:scripting:example_scripts:adding_a_new_internal_command|add new internal commands]]. * **[[~addcoldata|AddColData]]**: This object is provided to the **[[.scripting_events:onaddcolumns|OnAddColumns]]** method, which allows a script to [[:scripting:example_scripts:adding_a_new_column|add new information columns]]. * **[[~afterfolderchangedata|AfterFolderChangeData]]**: This object is provided to the **[[.scripting_events:onafterfolderchange|OnAfterFolderChange]]** method, which is called after a new folder has been read. * **[[~beforefolderchangedata|BeforeFolderChangeData]]**: This object is provided to the **[[.scripting_events:onbeforefolderchange|OnBeforeFolderChange]]** method, which is called before a new folder is read. * **[[~clickdata|ClickData]]**: This object is provided to the **[[.scripting_events:onclick|OnClick]]** method, which is called whenever a [[:scripting:script_functions|script function]] is invoked (e.g. when the button is clicked or hotkey pressed). * **[[~clipboardchangedata|ClipboardChangeData]]**: This object is provided to the **[[.scripting_events:onclipboardchange|OnClipboardChange]]** method, which is called whenever the system clipboard contents change. * **[[~closelisterdata|CloseListerData]]**: This object is provided to the **[[.scripting_events:oncloselister|OnCloseLister]]** method, which is called before a Lister closes. * **[[~closetabdata|CloseTabData]]**: This object is provided to the **[[.scripting_events:onclosetab|OnCloseTab]]** method, which is called before a tab closes. * **[[~configbackupdata|ConfigBackupData]]**: This object is provided to the **[[.scripting_events:onconfigbackup|OnConfigBackup]]** method, which notifies a script before the Opus configuration is backed up. * **[[~configrestoredata|ConfigRestoreData]]**: This object is provided to the **[[.scripting_events:onconfigrestore|OnConfigRestore]]** method, which notifies a script when the Opus configuration is restored from a backup. * **[[~displaymodechangedata|DisplayModeChangeData]]**: This object is provided to the **[[.scripting_events:ondisplaymodechange|OnDisplayModeChange]]** method, which is called when the display mode changes in a tab. * **[[~doubleclickdata|DoubleClickData]]**: This object is provided to the **[[.scripting_events:ondoubleclick|OnDoubleClick]]** method, which is called when a file or folder is double-clicked. * **[[~fileoperationcompletedata|FileOperationCompleteData]]**: This object is provided to the **[[.scripting_events:onfileoperationcomplete|OnFileOperationComplete]]** method, which lets you receive notification when certain file operations complete. * **[[~filesystemchangedata|FilesystemChangeData]]**: This object is provided to the **[[.scripting_events:onfilesystemchange|OnFilesystemChange]]** method, after you've established monitoring for file or folder changes via the **[[~fsutil|FSUtil]].WatchChanges** method. * **[[~flatviewchangedata|FlatViewChangeData]]**: This object is provided to the **[[.scripting_events:onflatviewchange|OnFlatViewChange]]** method, which is called when the Flat View mode changes in a tab. * **[[~getcopyqueuenamedata|GetCopyQueueNameData]]**: This object is provided to the **[[.scripting_events:ongetcopyqueuename|OnGetCopyQueueName]]** event, which is called whenever a copy operation begins that uses automatically-managed copy queues. * **[[~getcustomfielddata|GetCustomFieldData]]**: This object is provided to the **[[.scripting_events:ongetcustomfields|OnGetCustomFields ]]**event, which lets a [[:scripting:rename_scripts|rename script]] add its own fields to the //Rename// dialog. * **[[~getnewnamedata|GetNewNameData]]**: This object is provided to the **[[.scripting_events:ongetnewname|OnGetNewName]]** method, which is one of the supported methods a [[:scripting:rename_scripts|rename script]] can provide. * **[[~listerresizedata|ListerResizeData]]**: This object is provided to the **[[.scripting_events:onlisterresize|OnListerResize]]** event, which is called whenever a Lister window is resized. * **[[~listeruichangedata|ListerUIChangeData]]**: This object is provided to the **[[.scripting_events:onlisteruichange|OnListerUIChange]]** method, which is called when various user interface elements (tree, viewer, etc) are open or closed in a Lister. * **[[~openlisterdata|OpenListerData]]**: This object is provided to the **[[.scripting_events:onopenlister|OnOpenLister]]** method, which is called when a new Lister is opened. * **[[~opentabdata|OpenTabData]]**: This object is provided to the **[[.scripting_events:onopentab|OnOpenTab]]** method, which is called when a new tab is opened. * **[[~periodictimerdata|PeriodicTimerData]]**: This object is provided to the **[[.scripting_events:onperiodictimer|OnPeriodicTimer]]** method, which is called periodically for timers added via the **[[~dopus|DOpus]].SetTimer** method. * **[[~powereventdata|PowerEventData]]**: This object is provided to the **[[.scripting_events:onpowerevent|OnPowerEvent]]** method, which is called to notify your script of various system power events. * **[[~quickfilterchangedata|QuickFilterChangeData]]**: This object is provided to the **[[.scripting_events:onquickfilterchange|OnQuickFilterChange]]** method, which is called when the quick filter changes in a folder tab. * **[[~scheduledtimerdata|ScheduledTimerData]]**: This object is provided to the **[[.scripting_events:onscheduledtimer|OnScheduledTimer]]** method, which is called at most once for each scheduled timer added via the **[[~dopus|DOpus]].SetScheduledTimer** method. * **[[~scriptcolumndata|ScriptColumnData]]**: This object is provided to the [[:scripting:example_scripts:adding_a_new_column|script-specified method]] used to add new columns to Opus. * **[[~scriptcommanddata|ScriptCommandData]]**: This object is provided to the [[.scripting_events:onscriptcommand|script-specified method]] used to [[:scripting:example_scripts:adding_a_new_internal_command|add new internal commands]] to Opus. * **[[~scriptconfigchangedata|ScriptConfigChangeData]]**: This object is provided to the **[[.scripting_events:onscriptconfigchange|OnScriptConfigChange]]** method, which notifies a script when the user edits the script's configuration. * **[[~scriptfaytcommanddata|ScriptFAYTCommandData]]**: This object is provided to the [[.scripting_events:onscriptcommand|script-specified method]] used to [[:scripting:example_scripts:extending_the_fayt|extend the FAYT field]]. * **[[~scriptinitdata|ScriptInitData]]**: This object is provided to the **[[.scripting_events:oninit|OnInit]]** method, which is called once to initialize each script in the //Script Addins// folder. * **[[~shutdowndata|ShutdownData]]**: This object is provided to the **[[.scripting_events:onshutdown|OnShutdown]]** method, which is called before Opus shuts down. * **[[~sourcedestdata|SourceDestData]]**: This object is provided to the **[[.scripting_events:onsourcedestchange|OnSourceDestChange]]** method, which is called when the source or destination state of a tab changes. * **[[~startupdata|StartupData]]**: This object is provided to the **[[.scripting_events:onstartup|OnStartup]]** method, which is called when Opus starts up. * **[[~styleselecteddata|StyleSelectedData]]**: This object is provided to the **[[.scripting_events:onstyleselected|OnStyleSelected]]** method, which is called when a new [[:basic_concepts:the_lister:styles|style]] is chosen in a Lister. * **[[~systemsettingchangedata|SystemSettingChangeData]]**: This object is provided to the **[[.scripting_events:onsystemsettingchange|OnSystemSettingChange]]** method, which is called when various system settings change. * **[[~tabclickdata|TabClickData]]**: This object is provided to the **[[.scripting_events:ontabclick|OnTabClick]]** event, which is called whenever a tab is clicked with a qualifier key held down. * **[[~viewereventdata|ViewerEventData]]**: This object is provided to the **[[.scripting_events:onviewerevent|OnViewerEvent]]** event, which is called whenever certain events occur in a standalone [[:additional_functionality:viewing_images|image viewer]]. ===Other objects=== The remaining objects are all obtained using methods or properties provided by the objects listed above. For example, a **Lister** object is obtained using the **DOpus.listers** collection property, and a **Vector** object is obtained using the **DOpusFactory.Vector** method. * **[[~alias|Alias]]**: This object represents a [[:basic_concepts:the_lister:navigation:aliases|folder alias]], and is retrieved using the **Aliases** object. * **[[~aliases|Aliases]]**: This object is a collection of all defined folder aliases. It is retrieved using the **DOpus.aliases** collection property. * **[[~args|Args]]**: This object represents the arguments supplied on the command line for [[:scripting:example_scripts:adding_a_new_internal_command|script-defined internal commands]]. It is retrieved from the **ScriptCommandData.Func.args** property. * **[[~audiometa|AudioMeta]]**: This object provides metadata properties relating to audio files. It is obtained from the **Metadata** object. * **[[~audiocoverart|AudioCoverArt]]**: This object provides access to an audio file's embedded cover art. It is obtained from the **AudioMeta.coverart** property. * **[[~blob|Blob]]**: This object provides a simple interface for dealing with binary data. It is obtained from the **DOpusFactory.Blob** method and also returned by the **AudioCoverArt.data** property. * **[[~busyindicator|BusyIndicator]]**: A **BusyIndicator** object lets you control the breadcrumbs bar busy indicator from your script. * **[[~column|Column]]**: This object represents a column that has been added to the display in a tab. A collection of columns can be obtained from the **Format** object. * **[[~command|Command]]**: This object is used to run Opus commands. It is obtained from the **ScriptCommandData.func** or **ClickData.func** properties, and can also be created by the **DOpusFactory.Command** method. * **[[~control|Control]]**: The **Control** object represents a control on a [[:scripting:script_dialogs|script dialog]]; it lets you read and modify a control's value (and contents). * **[[~customfielddata|CustomFieldData]]**: The **CustomFieldData** object is provided to a [[:scripting:rename_scripts|rename script]] via the **[[~getnewnamedata|GetNewNameData]].custom** property. It provides access to the value of any [[:scripting:rename_scripts:custom_fields_in_the_rename_dialog|custom fields]] that your script added to the //Rename// dialog. * **[[~date|Date]]**: This object is provided to make it easier to deal with variables representing dates. It is obtained from the **DOpusFactory.Date** method as well as various properties in other objects. * **[[~dialog|Dialog]]**: This object is used to display dialogs or popup menus. It is obtained from the **Func.Dlg**, **Command.Dlg** or **DOpus.Dlg** methods. * **[[~dialoglistcolumn|DialogListColumn]]**: The **DialogListColumn** object represents a column in a //Details// mode //list view// control in a [[:scripting:script_dialogs|script dialog.]] It's obtained by enumerating the **[[~dialoglistcolumns|DialogListColumns]]** object.**~control** * **[[~dialoglistcolumns|DialogListColumns]]**: The **DialogListColumns** object lets you query or modify the columns in a //Details// mode //list view// control in a [[:scripting:script_dialogs|script dialog.]] Use the **[[~control|Control]].columns** property to obtain a **DialogListColumns** object. * **[[~dialoglistgroup|DialogListGroup]]**: The **DialogListGroup** object represents a group in a //list view// control in a [[:scripting:script_dialogs|script dialog]]. It's returned by the **[[~control|Control]].GetGroupById** method. * **[[~dialoglistitem|DialogListItem]]**: The **DialogListItem** object represents an item in a //combo box// or //list box// control in a [[:scripting:script_dialogs|script dialog]]. It's returned by the **[[~control|Control]].GetItemAt** and **[[~control|Control]].GetItemByName** methods. * **[[~dialogoption|DialogOption]]**: This object is used in conjunction with the **Dialog** object. It lets you specify a checkbox option that is added to the dialog. * **[[~dock|Dock]]**: This object represents a floating toolbar. The Toolbar object provides a collection that represents all instances of that toolbar that are currently floating. * **[[~docmeta|DocMeta]]**: This object provides metadata properties relating to document files. It is obtained from the **Metadata** object. * **[[~dopusfactory|DOpusFactory]]**: This object is a helper object that you can use to create various other objects like **Map** and **Vector**. It is obtained from the **DOpus.Create** method. * **[[~dpi|DPI]]**: The **DPI** object is a helper object that provides a number of methods and properties relating to the system DPI setting. It's returned via the **[[~dopus|DOpus]].DPI** property. * **[[~drive|Drive]]**: The **Drive** object provides information about a drive (hard drive, CD ROM, etc) on your system. A **Vector** of drives on your system can be obtained from the **[[~fsutil|FSUtil]].Drives** method. * **[[~everythinginterface|EverythingInterface]]**: Provides an interface between Opus and Everything (by voidtools). * **[[~everythingresult|EverythingResult]]**: Represents a search result returned from an Everything query. * **[[~exemeta|ExeMeta]]**: This object provides metadata properties relating to executable (program) files. It is obtained from the **Metadata** object. * **[[~favorite|Favorite]]**: The **Favorite** object represents a [[:basic_concepts:the_lister:navigation:favorites|favorite folder]]. It is retrieved by enumerating or indexing the [[~favorites|Favorites ]]object. * **[[~favorites|Favorites]]**: The **Favorites** object holds a collection of all the defined [[:basic_concepts:the_lister:navigation:favorites|favorite folders]]. It is retrieved from the **[[~dopus|DOpus]].favorites** method. * **[[~file|File]]**: This object lets you read or write binary data from or to a file. It is obtained from the **FSUtil.OpenFile** and **Item.Open** methods. * **[[~fileattr|FileAttr]]**: This object represents file attributes (like read only, archived, etc). It used by the **Item** and **Format** objects, and can be created by the **[[~fsutil|FSUtil]].NewFileAttr** method. * **[[~filechange|FileChange]]**: This object provides information about a file change that occurred during a command run from a script. It is obtained from the **[[~results|Results]]** object. * **[[~filegroup|FileGroup]]**: This object exposes information about a file group (when a **Tab** is set to group by a particular column). It is used by the **Item** and **Tab** objects. * **[[~filesize|FileSize]]**: This object is used to represent a size in bytes (mainly because ActiveX scripting doesn't have proper support for 64 bit integers). It is used by the **Item** and **TabStats** objects. * **[[~filetypegroup|FiletypeGroup]]**: This object represents a file type group (as configured in the [[:file_types:file_type_groups|File Type Groups]] section of the [[:file_types|file type editor]]). * **[[~filetypegroups|FiletypeGroups]]**: This object represents a collection of one or more file type groups. * **[[~filter|Filter]]**: Lets you create a complex filter that can be used with commands like **Copy** when run from a script. * **[[~filterparseerror|FilterParseError]]**: Used to access information about a parsing error when working with **Filter** objects. * **[[~folderenum|FolderEnum]]**: This object lets a script enumerate the contents of a folder. It is obtained using the **FSUtil.ReadDir** method. * **[[~fontmeta|FontMeta]]**: This object provides metadata properties relating to font files. It is obtained from the **Metadata** object. * **[[~format|Format]]**: This object provides information about the display format in a tab. It is obtained from the **Tab.format** property. * **[[~fsutil|FSUtil]]**: This object provides various utility methods relating to file system activity. It is obtained from the **DOpus.FSUtil** property. * **[[~func|Func]]**: This object is passed to a [[:scripting:script_functions|script function]] (via **ClickData.func**) or [[:scripting:example_scripts:adding_a_new_internal_command|script-defined internal command]] (via **ScriptCommandData.func**). It provides information relating to the function invocation (source and destination tabs, arguments, etc). * **[[~globalfilters|GlobalFilters]]**: This object lets you access information about the global filter settings (configured on the **[[:preferences:preferences_categories:filtering_and_sorting:filters|Filters]]** page in Preferences). * **[[~httprequest|HTTPRequest]]**: This object lets you easily send an asynchronous HTTP request and receive the results. You can create this object using the **[[~dialog|Dialog]].NewHTTPReq** method. * **[[~image|Image]]**: This object represents an image file or icon loaded from disk that can be displayed in a [[:scripting:script_dialogs|script dialog]]. * **[[~imagemeta|ImageMeta]]**: This object provides metadata properties relating to image files. It is obtained from the **Metadata** object. * **[[~includefileinitdata|IncludeFileInitData]]**: If an [[:scripting:script_add-ins:include_files|include file]] script implements the optional **[[.scripting_events:oninitincludefile]]** method, it receives this object to let it provide information about the include file. * **[[~item|Item]]**: This object represents a file or a folder. It can be returned from various methods of the **Tab** object, when enumerating a folder using the **FSUtil.ReadDir** method, and is used to provide files for a command to act on using the **Command** object. * **[[~items|Items]]**: The **Items** object lets you enumerate a list of one or more **Item** objects. * **[[~lister|Lister]]**: This object represents a [[:basic_concepts:the_lister|Lister]] window. * **[[~listers|Listers]]**: The **[[~listers|Listers ]]**object is a collection of all currently open Lister windows (each one represented by a **[[~lister|Lister]]**object). It can be obtained from the **DOpus.listers** property. * **[[~map|Map]]**: This object is similar to an array or vector (e.g. **[[~vector|Vector]]**) in that it can store one or more objects, but has the advantage of using a dictionary system to locate objects rather than numeric indexes. It is obtained from the **DOpusFactory.Map** method. * **[[~metadata|Metadata]]**: This object represents a file or folder's metadata. It can be obtained from the **Item.metadata** property, as well as the **FSUtil.GetMetadata** method. * **[[~msg|Msg]]**: The **Msg** object represents a [[:scripting:script_dialogs|script dialog]] input event message. It’s returned by the **[[~dialog|Dialog]].GetMsg** method which you call when running the message loop for a [[:scripting:script_dialogs:the_dialog_message_loop:detached_dialogs|detached dialog]]. * **[[~orderedmap|OrderedMap]]**: This is the same as a **[[~map|Map]]** except that the order of items added to the map is preserved rather than being sorted alphabetically. It is obtained from the **DOpusFactory.OrderedMap** method. * **[[~othermeta|OtherMeta]]**: This object provides general metadata properties relating to files and folders. It is obtained from the **Metadata** object. * **[[~pairedfolder|PairedFolder]]**: This object represents a [[:preferences:preferences_categories:frequently_used_paths:paired_folders|paired folder]] retrieved from the **FSUtil.GetFolderPair** method. * **[[~path|Path]]**: This object represents a file system path. It contains several methods to manipulate the path. Path objects are returned by several properties and can be created by the **FSUtil.NewPath** method. * **[[~progress|Progress]]**: This object represents a progress dialog, that lets you visually indicate to the user the progress of your script function. It is obtained from the **Command.progress** property. * **[[~quickfilter|QuickFilter]]**: This object provides information about the state of the quick filter in a tab. It's obtained from the **[[~tab|Tab]].quickfilter** property. * **[[~rect|Rect]]**: The **Rect** object represents a rectangle. * **[[~results|Results]]**: This object represents the results of a command (the error code in the case of failure, plus any new tabs or Listers created by the command). It is obtained from the **Command.results** property. * **[[~scriptcolorpair]]**: This object bundles a pair of colors (text / background) together. * **[[~scriptcolumn|ScriptColumn]]**: This object represents a [[:scripting:example_scripts:adding_a_new_column|script-defined column]]. It is obtained from the **ScriptInitData.AddColumn** method, while processing the **OnInit** event. * **[[~scriptcommand|ScriptCommand]]**: This object represents a [[:scripting:example_scripts:adding_a_new_internal_command|script-defined internal command]]. It is obtained from the **ScriptInitData.AddCommand** method, while processing the **OnInit** event. * **[[~scriptfaytcommand|ScriptFAYTCommand]]**: This object is provided as a property of the **ScriptCommand** object for script add-ins that [[:scripting:example_scripts:extending_the_fayt|extend the FAYT field]]. * **[[~scriptconfig|ScriptConfig]]**: This object represents script-defined configuration data that Opus stores for each script. The configuration items are initialised via the **ScriptInitData.config** property, and are then available to the script via the **Script.config** property. * **[[~scriptstrings|ScriptStrings]]**: The **ScriptStrings** object is returned by the **[[~dopus|DOpus]].strings** property. It lets you access any strings defined via [[:scripting:resources:string_resources|string resources]]. * **[[~shellproperty|ShellProperty]]**: The **ShellProperty** object represents a shell property - an item of metadata for a file or folder that comes from Windows or third-party extensions. The **[[~fsutil|FSUtil]].GetShellPropertyList** method lets you retrieve a list of available shell properties. * **[[~signature|Signature]]**: The **Signature** object is returned by the **[[~fsutil|FSUtil]].GetSignature** method to provide information about the signature used to digitally sign an executable file. * **[[~smartfavorite|SmartFavorite]]**: A **SmartFavorite** object represents an entry for a folder in the [[:basic_concepts:the_lister:navigation:smartfavorites|SmartFavorites]] table. It is retrieved by enumerating or indexing the **[[~smartfavorites|SmartFavorites]]** object. * **[[~smartfavorites|SmartFavorites]]**: The **SmartFavorites** object lets you query the contents of the [[:basic_concepts:the_lister:navigation:smartfavorites|SmartFavorites]] table. It is retrieved from the **[[~dopus|DOpus]].smartfavorites** property. * **[[~sortorder|SortOrder]]**: The **SortOrder** object is returned by the **[[~format|Format]].manual_sort_order** property if [[:basic_concepts:sorting_and_grouping:manual_sorting|manual sort mode]] is active. It lets you query and modify the sort order. * **[[~stringtools|StringTools]]**: This object provides utility functions for string encoding and decoding. It is obtained from the **DOpusFactory.StringTools** method. * **[[~stringset|StringSet]]**: This object is similar to an array or vector (e.g. **[[~vector|Vector]]**) of strings, but has the advantage of using a dictionary system to locate strings rather than numeric indexes. It is obtained from the **DOpusFactory.StringSet** and **StringSetI** methods. * **[[~sysinfo|SysInfo]]**: The **SysInfo** object is created by the **DOpusFactory.SysInfo** method. It lets scripts access miscellaneous system information that may not be otherwise easy to obtain from a script. * **[[~tab|Tab]]**: This object represents a folder tab in a Lister. A Lister's tabs are available via various Lister object properties (e.g. **Lister.activetab**) and also used to specify the source/destination of a command (e.g. **Command.sourcetab**). * **[[~tabgroup|TabGroup]]**: This object represents a [[:basic_concepts:the_lister:tabs:tab_groups|folder tab group]]. It's accessed by enumerating the **[[~tabgroups|TabGroups ]]**object. * **[[~tabgroups|TabGroups]]**: This object provides access to and lets you modify the configured list of [[:basic_concepts:the_lister:tabs:tab_groups|folder tab groups]]. It's obtained from the **[[~dopus|DOpus]].tabgroups** property. * **[[~tabgrouptabentry|TabGroupTabEntry]]**: This object represents a folder tab in a [[:basic_concepts:the_lister:tabs:tab_groups|tab group.]] * **[[~tabgrouptablist|TabGroupTabList]]**: This object represents a list of folder tabs in a [[:basic_concepts:the_lister:tabs:tab_groups|tab group]]. * **[[~tabstats|TabStats]]**: This object provides various statistics about a folder tab (the number of selected files, total number of items, etc). It is obtained from the **Tab.stats** and **Tab.selstats** properties. * **[[~toolbar|Toolbar]]**: This object represents a toolbar. It is obtained with the **DOpus.toolbars** and **Lister.toolbars** properties. * **[[~toolbars|Toolbars]]**: The **Toolbars** object lets you enumerate all the defined toolbars in your Directory Opus configuration (whether currently turned on or not). * **[[~unorderedset|UnorderedSet]]**: Similar to a **[[~stringset|StringSet ]]**but can store elements of any type rather than just strings. * **[[~var|Var]]**: This object represents a variable. Toolbar buttons, hotkeys and scripts can read and store variables, and variables can be saved from one session of Opus to another. The **Var** object is obtained from the **Vars** collection. * **[[~vars|Vars]]**: This object represents a collection of variables. Depending on the variables' scope it can be obtained from the **DOpus.vars**, **Lister.vars**, **Tab.vars**, **Command.vars** or **Script.vars** properties. * **[[~vector|Vector]]**: This object is similar to an array - it can store an unlimited number of elements of any type. Several properties and methods in the Opus scripting interface use Vectors, and you can use them interchangeably with arrays in most cases. The Vector is provided because some scripting languages only offer incomplete or incompatible arrays - using Vectors means the object can be used consistently across any ActiveX scripting language. A **Vector** is created by the **DOpusFactory.Vector** method. * **[[~version|Version]]**: This object represents information about the current Opus version. It is obtained from the **DOpus.Version** property. * **[[~videometa|VideoMeta]]**: This object provides metadata properties relating to movie files. It is obtained from the **Metadata** object. * **[[~viewer|Viewer]]**: The **Viewer** object represents a standalone [[:additional_functionality:viewing_images|image viewer]]. * **[[~viewers|Viewers]]**: The **Viewers** object is a collection of all currently open standalone [[:additional_functionality:viewing_images|image viewers]]. It can be obtained via the **[[~dopus|DOpus]].viewers** property * **[[~wild|Wild]]**: This object allows a script to access the in-built pattern matching functions in Opus. It is obtained from the **FSUtil.NewWild** method. * **[[~winver|WinVer]]**: This object represents information about the current Windows version. It is obtained from the **Version.winver** property.