~~Title: Responding to Events ~~ [[..:script_add-ins|Script add-ins]] are invoked in response to one or more [[:reference:scripting_reference:scripting_events|events]]. This is an example of a script add-in that responds to two different events. You would use this by creating a new **.vbs** file in the //Script Addins// folder (type **/dopusdata/Script Addins** into the location field to find this). This example responds to both folder change (**[[:reference:scripting_reference:scripting_events:onafterfolderchange|OnAfterFolderChange]]**) and view mode change (**[[:reference:scripting_reference:scripting_events:ondisplaymodechange|OnDisplayModeChange]]**) events. In both cases, it checks if the current folder is the //Pictures// library (**lib:%%//%%Pictures** or a child folder). If so, it automatically changes the sort mode based on the current view mode: * If the display is set to //Thumbnails// mode, the list will be sorted by date * Otherwise, the list will be sorted by name ' Set the script type to VBScript to use this script. ' The OnInit event is called by Directory Opus to initialize the script. Function OnInit(ByRef initData) ' Provide basic information about the script. initData.name = "Example Event Script" initData.desc = "Script that shows an example of responding to events" initData.copyright = "(c) 2016 Jonathan Potter" initData.default_enable = True End Function ' The OnAfterFolderChange event is called after a folder has been read Function OnAfterFolderChange(ByRef afterFolderChangeData) ' The result property of the AfterFolderChangeData object tells us if the read was successful. If afterFolderChangeData.result Then ' Check if the path that was read begins with lib://Pictures If Left(afterFolderChangeData.tab.path, 14) = "lib://Pictures" Then ' The path matched, so call our CheckPictureSorting subroutine to update the sort mode if needed. ' We pass the Tab that the folder was read in as a parameter to the subroutine. Call CheckPictureSorting(afterFolderChangeData.tab) End If End If End Function ' The OnDisplayModeChange event is called whenever the view mode is changed. Function OnDisplayModeChange(ByRef displayModeChangeData) ' The DisplayModeChangeData object gives us the Tab that the mode was changed in. ' See if the folder currently displayed in the tab is lib://Pictures or a sub-folder. If Left(displayModeChangeData.tab.path, 14) = "lib://Pictures" Then Call CheckPictureSorting(displayModeChangeData.tab) End If End Function ' This is a subroutine called by both the above events, and is passed a Tab object as a parameter. ' It creates a Command object and uses the IsSet method to see if the current view mode in the tab is Thumbnails. ' - If so, it uses the RunCommand method to sets the sort order to "modified date". ' - If not, it sets the sort order to "name". Sub CheckPictureSorting(ByRef objTab) Set objCmd = DOpus.CreateCommand objCmd.SetSourceTab(objTab) If objCmd.IsSet("VIEW=Thumbnails") Then objCmd.RunCommand("Set SORTBY=modified") Else objCmd.RunCommand("Set SORTBY=name") End If Set objCmd = Nothing End Sub \\