' command.file_FullscreenMetaEdit Option Explicit Dim AHKScript, arg, cmd, i, ImageFiles, index, item ' Called by Directory Opus to initialize the script Function OnInit(data) data.name = "command.file: FullscreenMetaEdit" data.copyright = "(c) 2014 Kundal" data.version = "1.1" data.min_version = "11.8.2" data.log_prefix = "FullScreenMetaEdit" data.default_enable = True If DOpus.language = "Deutsch" Then data.desc = "Bearbeiten und Anzeigen von Metadaten von Bilddateien während diese im unabhängigen Anzeiger betrachtet werden." Else data.desc = "Edit/Show Metadata of files while viewing them in Fullscreen Standalone Viewer" End If Dim desc, url, uid data.config_desc = DOpus.Create.Map Set desc = data.config_desc url = "http://resource.dopus.com/viewtopic.php?f=35&t=23353" uid = "B5A74C1C-5C64-43AB-81E5-40443895798A" data.config.AddMetaKeyword = DOpus.Create.Vector("picsize", "datetaken") data.config.AHKexePath = "C:\Tools\AutoHotkey\AutoHotkey.exe" data.config.Delay = 0 data.config.FileType = ".jpg .png .bmp .psd" data.config.Position = "0,0" data.config.Transparency = "180" If DOpus.language = "Deutsch" Then desc("AddMetaKeyword") = "Hinzufügen von ""keywords for columns"" aus der ""pictures category""." desc("AHKexePath") = "Hier den Pfad zu AutoHotkey.exe eingeben." desc("Delay") = "Definiert die gewünschte Verzögerung, mit der der Dialog nach dem Anzeigen des Bildes erscheint in Millisekunden." desc("FileType") = "Dateiendungen von Bildformaten, die im unabhängigen Anzeiger angezeigt werden sollen." desc("Position") = "Definiert die Position des Dialogs auf dem Bildschirm in Pixel." & vbCrLf & "Breite, Höhe: ""0,0"" ist die linke obere Ecke." desc("Transparency") = "Definiert die Transparenz des Dialogfensters." & vbCrLf & "0-255, 0 is unsichtbar. Setze dies auf ""off"" für keine Transparenz" Else desc("AddMetaKeyword") = "Add ""keywords for columns"" of the ""pictures category""." & vbCrLf & ">> see ""ShowInfo""" desc("AHKexePath") = "Set the path to AutoHotkey.exe." desc("Delay") = "Adjust the delay after which the dialog box will appear in milliseconds." desc("FileType") = "Add file extensions that should be shown in the standalone viewer." desc("Position") = "Adjust the position of the dialog box on screen in pixel." & vbCrLf & "Width, Height: ""0,0"" is upper left corner." desc("Transparency") = "Adjust the transparency of the dialog box." & vbCrLf & "0-255, 0 is invisible. Set this to ""off"" for opaque" End If Set cmd = data.AddCommand() cmd.name = "FullscreenMetaEdit" cmd.method = "OnFullscreenMetaEdit" cmd.template = "DELAY/N,DUALMONITOR/S,POSITION/K,HIDEINFO/S,HIDERATING/S,HIDETAGS/S,HIDEDESC/S,SINGLEMODE/S,TRANSPARENCY/K" If DOpus.language = "Deutsch" Then cmd.desc = "Editiere Tags, Bewertungen und/oder Benutzerbeschreibungen von Bilddateien " &_ "während diese im unabhängigen Anzeiger betrachtet werden" Else cmd.desc = "Apply Tags, Ratings and/or User Description to image files " &_ "while viewing them in Fullscreen Standalone Viewer" End If End Function Function OnAboutScript(data) 'v0.1 Set cmd = DOpus.Create.Command() If DOpus.language = "Deutsch" Then Dim cmd : set cmd = DOpus.Create.Command() If (Not cmd.Commandlist("s").exists("ScriptAbout")) Then If (DOpus.Dlg.Request("Das Add-In 'ScriptWizard' wurde nicht gefunden."&vbCrLf&vbCrLf&_ "Installiere 'ScriptWizard' von [resource.dopus.com]."&vbCrLf&"Das Add-In aktiviert diesen Dialog und bietet ausserdem "&_ "einfaches updaten von Scripts und vieles mehr.","Ja, zum Download!|Abbrechen", "No About.. ", data.window) =1) Then _ cmd.RunCommand("http://resource.dopus.com/viewtopic.php?f=35&t=23179") Else cmd.SetModifier "runmode", "hide" cmd.RunCommand("ScriptAbout WIN="&data.window&" FILE="""&Script.File&"""") End If Else If (Not cmd.Commandlist("s").exists("ScriptAbout")) Then If (DOpus.Dlg.Request("The 'ScriptWizard' add-in has not been found."&vbCrLf&vbCrLf&_ "Install 'ScriptWizard' from [resource.dopus.com]."&vbCrLf&"The add-in enables this dialog and also offers "&_ "easy updating of scripts and many more.","Yes, take me there!|Cancel", "No About.. ", data.window)) Then _ cmd.RunCommand("http://resource.dopus.com/viewtopic.php?f=35&t=23179") Else cmd.RunCommand("ScriptAbout WIN="&data.window&" FILE="""&Script.File&"""") End If End If End Function ' Implement the FullscreenMetaEdit command Function OnFullscreenMetaEdit(ClickData) Dim AHKScript, arg, dopusrt, match, objFile, objFSO, objOutputFile, pos, Reg, sleep, strNewText, strText, text, trans Set cmd = ClickData.Func.Command Set arg = ClickData.func.args AHKScript = DOpus.FSUtil.Resolve("/temp\AutoMoveFSME.ahk") dopusrt = DOpus.FSUtil.Resolve("/home\dopusrt.exe") pos = Script.config.Position sleep = Script.config.Delay trans = Script.config.Transparency ' Create temporary AHK-Script Set objFSO = CreateObject("Scripting.FileSystemObject") Set Reg = New Regexp Set objOutputFile = objFSO.CreateTextFile(AHKScript) Reg.Global = False pos = Script.config.Position sleep = Script.config.Delay trans = Script.config.Transparency text = "#NoTrayIcon" & vbCrLf &_ "#SingleInstance force" & vbCrLf &_ "SendMode Input" & vbCrLf &_ "DetectHiddenWindows,On" & vbCrLf &_ "SetWinDelay,50" & vbCrLf &_ "WinWait,Fullscreen Metadata Editor" & vbCrLf &_ "WinHide,Fullscreen Metadata Editor" & vbCrLf &_ "WinSet,Transparent," & trans & vbCrLf &_ "WinMove," & pos & vbCrLf &_ "SetWinDelay,100" & vbCrLf &_ "WinWait,ahk_class dopus.viewpicframe" & vbCrLf &_ "WinHide,ahk_class Shell_TrayWnd" & vbCrLf &_ "Sleep," & sleep & vbCrLf &_ "WinShow,Fullscreen Metadata Editor" & vbCrLf &_ "WinSet,AlwaysOnTop,On,Fullscreen Metadata Editor" & vbCrLf &_ "WinActivate,Fullscreen Metadata Editor" & vbCrLf &_ "WinGetTitle,path,ahk_class dopus.viewpicframe" & vbCrLf &_ "Loop" & vbCrLf &_ "{" & vbCrLf &_ "IfWinNotActive,Fullscreen Metadata Editor" & vbCrLf &_ "WinSet,AlwaysOnTop,On" & vbCrLf &_ "IfWinNotExist,%path%" & vbCrLf &_ "ControlClick,OK,Fullscreen Metadata Editor" & vbCrLf &_ "IfWinNotExist,Fullscreen Metadata Editor" & vbCrLf &_ "Break" & vbCrLf &_ "}" & vbCrLf &_ "WinWaitClose,Fullscreen Metadata Editor" & vbCrLf &_ "WinWait,User Description,,0" & vbCrLf &_ "IfWinExist,User Description" & vbCrLf &_ "{" & vbCrLf &_ "WinHide,User Description" & vbCrLf &_ "WinSet,Transparent," & trans & vbCrLf &_ "WinMove," & pos & vbCrLf &_ "WinShow,User Description" & vbCrLf &_ "WinSet,AlwaysOnTop,On,User Description" & vbCrLf &_ "WinActivate,User Description" & vbCrLf &_ "GoSub StayOnTop" & vbCrLf &_ "StayOnTop:" & vbCrLf &_ "Loop" & vbCrLf &_ "{" & vbCrLf &_ "IfWinNotActive,User Description" & vbCrLf &_ "WinSet,AlwaysOnTop,On,User Description" & vbCrLf &_ "IfWinNotExist,User Description" & vbCrLf &_ "Return" & vbCrLf &_ "}" & vbCrLf &_ "WinWaitClose,User Description,,0" & vbCrLf &_ "}" & vbCrLf &_ "IfWinNotExist,ahk_class dopus.viewpicframe" & vbCrLf &_ "{" & vbCrLf &_ "WinShow,ahk_class Shell_TrayWnd" & vbCrLf &_ "ExitApp" & vbCrLf &_ "}" objOutputFile.WriteLine text objOutputFile.Close ' If the current language of DOpus is german detect the User Description window If DOpus.language = "Deutsch" Then Reg.Global = True Reg.Pattern = "User Description" strNewText = "Benutzerbeschreibung" Set objFile = objFSO.OpenTextFile(AHKScript, 1) text = objFile.ReadAll objFile.close Set strText = Reg.Execute(text) text = Replace(text, strText.Item(0), strNewText) objFSO.OpenTextFile(AHKScript, 2).Write text End If ' Write values provided by button arguments to the AHK script ' Delay If arg.got_arg.delay = True Then Reg.Pattern = "Sleep,.*" strNewText = "Sleep," & arg.delay Set objFile = objFSO.OpenTextFile(AHKScript, 1) text = objFile.ReadAll objFile.close Set strText = Reg.Execute(text) text = Replace(text, strText.Item(0), strNewText) objFSO.OpenTextFile(AHKScript, 2).Write text End If ' DualMonitor and SingleMode (don't hide the windows Taskbar) If (arg.got_arg.singlemode = True Or arg.got_arg.dualmonitor = True) Then Reg.Pattern = ";?WinHide ahk_class Shell_TrayWnd" strNewText = ";WinHide ahk_class Shell_TrayWnd" Set objFile = objFSO.OpenTextFile(AHKScript, 1) text = objFile.ReadAll objFile.close Set strText = Reg.Execute(text) text = Replace(text, strText.Item(0), strNewText) objFSO.OpenTextFile(AHKScript, 2).Write text End If ' Position If arg.got_arg.position = True Then Reg.Global = True Reg.Pattern = "WinMove,.*" strNewText = "WinMove," & arg.position Set objFile = objFSO.OpenTextFile(AHKScript, 1) text = objFile.ReadAll objFile.close Set strText = Reg.Execute(text) For Each match In strText text = Replace(text, match, strNewText) objFSO.OpenTextFile(AHKScript, 2).Write text Next End If ' Transparency If arg.got_arg.transparency = True Then Reg.Pattern = "WinSet,Transparent,.*" strNewText = "WinSet,Transparent," & arg.transparency Set objFile = objFSO.OpenTextFile(AHKScript, 1) text = objFile.ReadAll objFile.close Set strText = Reg.Execute(text) For Each match In strText text = Replace(text, match, strNewText) objFSO.OpenTextFile(AHKScript, 2).Write text Next End If ' SingleMode (force DOpus to follow the selection in the standalone viewer) If arg.got_arg.singlemode = True Then text = "WinWait, ahk_class dopus.viewpicframe" & vbCrLf &_ "Loop" & vbCrLf &_ "{" & vbCrLf &_ "WinGetTitle, path, ahk_class dopus.viewpicframe" & vbCrLf &_ "SplitPath, path,pathN" & vbCrLf &_ "Run, " & dopusrt & " /acmd Select EXACT PATTERN ""%pathN%"" DESELECTNOMATCH SETFOCUS" & vbCrLf &_ "WinWaitClose, %path%" & vbCrLf &_ "IfWinNotExist, ahk_class dopus.viewpicframe" & vbCrLf &_ "{" & vbCrLf &_ "Run, %comspec% /c del /Q ""%Temp%\AutoMoveFsME.ahk"",,Hide" & vbCrLf &_ "ExitApp" & vbCrLf &_ "}" & vbCrLf &_ "}" objFSO.OpenTextFile(AHKScript, 8).Write text End If ' Only select files matching the extensions configured in Script.config.FileType ' Exit if no matching files are found Dim file, FileType FileType = Script.config.FileType i = 0 Set ImageFiles = DOpus.Create.Vector For Each file In cmd.sourcetab.files If InStr(FileType, LCase(file.ext)) And Not file.ext = "" Then ImageFiles.push_back(file) End If Next If ImageFiles.count = 0 Then DOpus.Output "" cmd.AddLine("@runmode:hide") cmd.AddLine("cmd.exe /c del /Q " & """" & AHKScript & """") cmd.Run Exit Function End If ' Select first valid image file If Not cmd.sourcetab.selected_files.count = 0 Then Set file = cmd.sourcetab.selected(0) If InStr(FileType, LCase(file.ext)) = False Or file.ext = "" Then Do cmd.RunCommand("Select Next Type=files") cmd.sourcetab.Update Set file = cmd.sourcetab.selected(0) If InStr(FileType, LCase(file.ext)) And Not file.ext = "" Then Exit Do End If Loop End If For i = 0 To ImageFiles.Count -1 If ImageFiles(i) = file Then Set item = ImageFiles(i) index = i+1 End If Next Else Set item = ImageFiles(0) index = 1 End If cmd.ClearFiles cmd.AddFile item cmd.sourcetab.Update If arg.got_arg.dualmonitor = True Then cmd.RunCommand("Select FROMSCRIPT DESELECTNOMATCH SETFOCUS") End If If arg.got_arg.singlemode = False Then cmd.RunCommand("dopusrt /cmd Show FULLSCREEN USEEXISTING " & """" & item & """") Else cmd.RunCommand("dopusrt /show " & """" & item & """") End If Call Show(ClickData) End Function Sub Show(ClickData) ' Retrieve Metadata information from the currently shown file Dim AHKexePath, AHKScript, descdlg, dlg, n, rating, tag, tagString, userdesc, vecTags Dim itemData, keyname, keyword, meta, metaString Set cmd = ClickData.func.Command Set arg = ClickData.func.args Set itemData = DOpus.FSUtil.GetMetadata(item) Set meta = Script.config.AddMetaKeyword Set vecTags = DOpus.Create.Vector AHKScript = DOpus.FSUtil.Resolve("/temp\AutoMoveFsME.ahk") metaString = "" AHKexePath = Script.config.AHKexePath ' Tags If arg.got_arg.hidetags = False Then If (itemData = "none") Then tagString = "" Else tagString = "" End If For Each tag In itemData.tags vecTags.push_back(tag) Next vecTags.sort For i = 0 To vecTags.Count -1 If (tagString <> "") Then tagString = tagString & vbCrLf tagString = tagString & vecTags(i) Else tagString = vecTags(i) End If Next End If ' Additional Metadata (only keywords for columns of the pictures category) If arg.got_arg.hideinfo = False Then For Each keyword In meta keyname = keyword keyword = "itemData.image_text." & keyword If Not Eval(keyword) = "" Then keyword = Eval(keyword) metaString = metaString & vbCrLf metaString = metaString & keyname & ": " & keyword End If Next End If ' User Description and Rating userdesc = itemData.other.usercomment rating = itemData.other.rating ' Run the AHK script cmd.RunCommand(AHKexePath & " " & """" & AHKScript &"""") ' Create Dialog Boxes (Main dialog box appearance depending on selection in Script.config) ' Dialog Box "User Description" only needed if both "HideTags" and "HideDesc" are False Set dlg = DOpus.Dlg dlg.title = "Fullscreen Metadata Editor" If DOpus.language = "Deutsch" Then dlg.message = "Datei: " & "(" & index & "/" & ImageFiles.count & ") " & item & vbCrLF Else dlg.message = "File: " & "(" & index & "/" & ImageFiles.count & ") " & item & vbCrLF End If ' Show Rating If arg.got_arg.hiderating = False Then dlg.options(0).label = "*" dlg.options(1).label = "**" dlg.options(2).label = "***" dlg.options(3).label = "****" dlg.options(4).label = "*****" dlg.icon = "none" If rating = 0 Then dlg.options(0,1,2,3,4).state = 0 Else dlg.options(rating -1).state = -1 End If End If ' Show Info If arg.got_arg.hideinfo = False Then If Not metaString = "" Then dlg.message = dlg.message & metaString & vbCrLf End If End If ' Show User Description If arg.got_arg.hidedesc = False Then If userdesc = "" Then If DOpus.language = "Deutsch" Then dlg.message = dlg.message & vbCrLf & " @ Benutzerbeschreibung: @" & vbCrLf Else dlg.message = dlg.message & vbCrLf & " @ User Description: @" & vbCrLf End If Else If DOpus.language = "Deutsch" Then dlg.message = dlg.message & vbCrLf & " @ Benutzerbeschreibung @" & vbCrLf & userdesc & vbCrLf Else dlg.message = dlg.message & vbCrLf & " @ User Description @" & vbCrLf & userdesc & vbCrLf End If End If End If ' Show Tags If arg.got_arg.hidetags = False Then If tagString = "" Then If DOpus.language = "Deutsch" Then dlg.message = dlg.message & vbCrLf & " @ Tags: @" & vbCrLf Else dlg.message = dlg.message & vbCrLf & " @ Tags: @" & vbCrLf End If Else dlg.message = dlg.message & vbCrLf & " @ Tags (" & vecTags.count & ") @ " & vbCrLf & tagString End If End If ' Change appearance depending on the choosen combination of options If arg.got_arg.hidetags = False And arg.got_arg.hidedesc = True Then If arg.got_arg.singlemode = False Then If DOpus.language = "Deutsch" Then dlg.buttons = "OK|Zurück|Tags löschen|Abbrechen" Else dlg.buttons = "OK|Go Back|Clear Tags|Cancel" End If Else If DOpus.language = "Deutsch" Then dlg.buttons = "OK|Tags löschen|Abbrechen" Else dlg.buttons = "OK|Clear Tags|Cancel" End If End If dlg.default = "+" dlg.max = 512 End If If arg.got_arg.hidetags = False And arg.got_arg.hidedesc = False Then If arg.got_arg.singlemode = False Then If DOpus.language = "Deutsch" Then dlg.buttons = "OK|Zurück|Tags löschen+Benutzerbeschreibung löschen+Beides löschen|Beschreibung|Abbrechen" Else dlg.buttons = "OK|Go Back|Clear Tags+Clear User Description+Clear Both|Description|Cancel" End If Else If DOpus.language = "Deutsch" Then dlg.buttons = "OK|Tags löschen+Benutzerbeschreibung löschen+Beides löschen|Beschreibung|Abbrechen" Else dlg.buttons = "OK|Clear Tags+Clear User Description+Clear Both|Description|Cancel" End If End If dlg.default = "+" dlg.max = 512 End If If arg.got_arg.hidetags = True And arg.got_arg.hidedesc = False Then If arg.got_arg.singlemode = False Then If DOpus.language = "Deutsch" Then dlg.buttons = "OK|Zurück|Löschen|Abbrechen" Else dlg.buttons = "OK|Go Back|Clear|Cancel" End If Else If DOpus.language = "Deutsch" Then dlg.buttons = "OK|Löschen|Abbrechen" Else dlg.buttons = "OK|Clear|Cancel" End If End If dlg.default = userdesc dlg.max = 512 End If If arg.got_arg.hidetags = True And arg.got_arg.hidedesc = True Then If arg.got_arg.singlemode = False Then If DOpus.language = "Deutsch" Then dlg.buttons = "OK|Zurück|Abbrechen" Else dlg.buttons = "OK|Go Back|Cancel" End If Else If DOpus.language = "Deutsch" Then dlg.buttons = "OK|Abbrechen" Else dlg.buttons = "OK|Cancel" End If End If End If ' Show the Dialog Box i = dlg.show ' Commands to be executed if a button was clicked / a checkbox was activated ' Set Rating If arg.got_arg.hiderating = False Then If i = 1 Or (i = 2 And arg.got_arg.singlemode = False) Then If dlg.options(0,1,2,3,4).state = 0 Then cmd.RunCommand("SetAttr META rating:0") End If If dlg.options(0).state = -1 Then cmd.RunCommand("SetAttr META rating:1") End If If dlg.options(1).state = -1 Then cmd.RunCommand("SetAttr META rating:2") End If If dlg.options(2).state = -1 Then cmd.RunCommand("SetAttr META rating:3") End If If dlg.options(3).state = -1 Then cmd.RunCommand("SetAttr META rating:4") End If If dlg.options(4).state = -1 Then cmd.RunCommand("SetAttr META rating:5") End If End If End If ' Write/Clear Tags If arg.got_arg.hidetags = False Then If i = 1 Then If Not (dlg.input = "" Or dlg.input = "+") Then cmd.RunCommand("SetAttr META ""tags:" & dlg.Input & """") End If If arg.got_arg.singlemode = False Then Call ShowNext(ClickData) End If End If If i = 2 Then If arg.got_arg.singlemode = False Then If Not (dlg.input = "" Or dlg.input = "+") Then cmd.RunCommand("SetAttr META ""tags:" & dlg.Input & """") End If If arg.got_arg.singlemode = False Then Call ShowPrev(ClickData) End If Else cmd.RunCommand("SetAttr META ""tags:") End If End If If i = 3 Then If arg.got_arg.singlemode = False Then cmd.RunCommand("SetAttr META ""tags:") Call ShowNext(ClickData) Else If arg.got_arg.hidedesc = False Then If Not (dlg.input = "" Or dlg.input = "+") Then cmd.RunCommand("SetAttr META ""tags:" & dlg.Input & """") End If cmd.RunCommand("SetAttr SETDESCRIPTION") End If End If End If ' Write/Clear Tags and User Description If arg.got_arg.hidedesc = False Then If i = 4 Then If arg.got_arg.singlemode = False Then If Not (dlg.input = "" Or dlg.input = "+") Then cmd.RunCommand("SetAttr META ""tags:" & dlg.Input & """") End If cmd.RunCommand("SetAttr SETDESCRIPTION") If arg.got_arg.singlemode = False Then Call ShowNext(ClickData) End If Else cmd.RunCommand("SetAttr SETDESCRIPTION") cmd.RunCommand("SetAttr META ""tags:") End If End If If i = 5 Then If arg.got_arg.singlemode = False Then cmd.RunCommand("SetAttr SETDESCRIPTION") cmd.RunCommand("SetAttr META ""tags:") Call ShowNext(ClickData) Else i = i+1 End If End If ' Create and show the "User Description" dialog if the Button "Comment" was clicked If i = 6 Then Set descdlg = DOpus.Dlg descdlg.max = 512 descdlg.default = itemData.other.usercomment If DOpus.language = "Deutsch" Then descdlg.message = "File: " & item & vbCrLf & "Benutzerbeschreibung bearbeiten:" descdlg.title = "Benutzerbeschreibung" descdlg.buttons = "OK|Abbrechen" Else descdlg.message = "File: " & item & vbCrLf & "Edit User Description:" descdlg.title = "User Description" descdlg.buttons = "OK|Cancel" End If n = descdlg.show If n = 1 Then If descdlg.Input = "" Then cmd.RunCommand("SetAttr SETDESCRIPTION") Call Show(ClickData) Else cmd.RunCommand("SetAttr META DESCRIPTION " & """" & descdlg.Input & """") Call Show(ClickData) End If End If If n = 0 Then Call Show(ClickData) End If End If End If Else ' Change appearance of the main dialog if "HideTags" was set to True ' Write/Clear User Description If arg.got_arg.hidedesc = False Then If i = 1 Then If dlg.Input = "" Then cmd.RunCommand("SetAttr SETDESCRIPTION") If arg.got_arg.singlemode = False Then Call ShowNext(ClickData) End If Else cmd.RunCommand("SetAttr META DESCRIPTION " & """" & dlg.Input & """") If arg.got_arg.singlemode = False Then Call ShowNext(ClickData) End If End If End If If i = 2 Then If arg.got_arg.singlemode = True Then i = i+1 End If If dlg.Input = "" Then cmd.RunCommand("SetAttr SETDESCRIPTION") If arg.got_arg.singlemode = False Then Call ShowPrev(ClickData) End If Else cmd.RunCommand("SetAttr META DESCRIPTION " & """" & dlg.Input & """") If arg.got_arg.singlemode = False Then Call ShowPrev(ClickData) End If End If End If If i = 3 Then cmd.RunCommand("SetAttr SETDESCRIPTION") If arg.got_arg.singlemode = False Then If arg.got_arg.singlemode = False Then Call ShowNext(ClickData) End If End If End If Else ' Select the next/previous item if "HideTags" and "HideDesc" where set to True If i = 1 Then If arg.got_arg.singlemode = False Then Call ShowNext(ClickData) End If End If If i = 2 Then If arg.got_arg.singlemode = False Then Call ShowPrev(ClickData) End If End If End If End If ' Close Viewer and select last item if "Cancel" was clicked If i = 0 Then If arg.got_arg.singlemode = False Then cmd.RunCommand("Select FROMSCRIPT DESELECTNOMATCH SETFOCUS") cmd.RunCommand("Close ALLVIEWERS") cmd.AddLine("@runmode:hide") cmd.AddLine("cmd.exe /c del /Q " & """" & AHKScript & """") cmd.Run Exit Sub Else cmd.RunCommand("Select FROMSCRIPT DESELECTNOMATCH SETFOCUS") Exit Sub End If End If End Sub ' Select the next valid file, add it to the script and show it in fullscreen mode Sub ShowNext(ClickData) Set arg = ClickData.func.args Set cmd = ClickData.Func.Command For i = 0 To ImageFiles.Count -1 If item = ImageFiles(i) Then If i = ImageFiles.count -1 Then Set item = ImageFiles(0) index = 1 Else i = i+1 Set item = ImageFiles(i) index = i+1 End If End If Next cmd.ClearFiles cmd.Addfile item cmd.sourcetab.Update If arg.got_arg.dualmonitor = True Then cmd.RunCommand("Select FROMSCRIPT DESELECTNOMATCH SETFOCUS") End If cmd.RunCommand("dopusrt /cmd Show FULLSCREEN USEEXISTING " & """" & item & """") Call Show(ClickData) End Sub ' Select the previous valid file, add it to the script and show it in fullscreen mode Sub ShowPrev(ClickData) Set cmd = ClickData.func.Command Set arg = ClickData.func.args For i = 0 To ImageFiles.Count -1 If item = ImageFiles(i) Then If ImageFiles(i) = ImageFiles(0) Then i = ImageFiles.Count -1 Set item = ImageFiles(i) index = i+1 Else i = i-1 Set item = ImageFiles(i) index = i+1 End If End If Next cmd.ClearFiles cmd.Addfile item cmd.sourcetab.Update If arg.got_arg.dualmonitor = True Then cmd.RunCommand("Select FROMSCRIPT DESELECTNOMATCH SETFOCUS") End If cmd.RunCommand("dopusrt /cmd Show FULLSCREEN USEEXISTING " & """" & item & """") Call Show(ClickData) End Sub 'MD5 = "dcb651816f29a5f57cd465ca0eb980a8"; DATE = "2014.12.05 - 12:35:38"