' Tagger Option Explicit ' Called by Directory Opus to initialize the script Function OnInit(initData) Dim cmd Set cmd = initData cmd.name = "command.file: Tagger" cmd.desc = "Apply Tags and Ratings to files while viewing them in Fullscreen Standalone Viewer" cmd.copyright = "(c) 2014 Kundal" cmd.version = "1.0" cmd.default_enable = true cmd.config.FileType = ".jpg .png .bmp .psd" cmd.config.AHKexePath = "C:\Tools\AutoHotkey\AutoHotkey.exe" cmd.config.AHKScriptPath = "C:\Tools\AutoHotkey\AutoMoveTagger.ahk" Set cmd = initData.AddCommand() cmd.name = "Tagger" cmd.method = "OnTagger" cmd.desc = "Apply Tags and Ratings to files while viewing them in Fullscreen Standalone Viewer" End Function ' Implement the Tagger command Function OnTagger(ClickData) Dim item Dim cmd Set cmd = ClickData.Func.Command cmd.ClearFiles cmd.AddFile cmd.sourcetab.selected_files(0) Set item = cmd.sourcetab.selected_files(0) cmd.RunCommand("Show FULLSCREEN") DOpus.Delay 300 Call Edit(ClickData) End Function Sub Edit(ClickData) Dim cmd Set cmd = ClickData.Func.Command Dim i Dim item Dim tag Dim tagString Dim AHKexePath Dim AHKScriptPath AHKexePath = Script.config.AHKexePath AHKScriptPath = Script.config.AHKScriptPath cmd.RunCommand("Go Refresh") cmd.RunCommand("Select FROMSCRIPT DESELECTNOMATCH MAKEVISIBLE") Set item = cmd.sourcetab.selected(0) If (item.metadata = "none") Then tagString = "" Else tagString = "" End If For Each tag In item.metadata.tags If (tagString <> "") Then tagString = tagString & vbCrLf tagString = tagString & tag Else tagString = tag End If Next If (tagString = "") Then tagString = "" End If Dim rating rating = item.Metadata.other.rating cmd.RunCommand(AHKexePath & " " & AHKScriptPath) Dim dlg Set dlg = DOpus.Dlg dlg.message = "Name: " & item & vbCrLf & "Tags: " & vbCrLf & tagString dlg.title = "Tagger" dlg.max = 512 dlg.options(0).label = "*" dlg.options(1).label = "**" dlg.options(2).label = "***" dlg.options(3).label = "****" dlg.options(4).label = "*****" dlg.buttons = "OK|Go Back|Clear|Cancel" dlg.default = "+" dlg.icon = "info" If rating = 0 Then dlg.options(0,1,2,3,4).state = 0 Else dlg.options(rating -1).state = -1 End If i = dlg.show 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 If i = 1 Then If Not (dlg.input = "" Or dlg.input = "+") Then cmd.RunCommand("SetAttr META ""tags:" & dlg.Input & """") End If Call EditNext(ClickData) End If If i = 2 Then If Not (dlg.input = "" Or dlg.input = "+") Then cmd.RunCommand("SetAttr META ""tags:" & dlg.Input & """") End If Call EditPrev(ClickData) End If If i = 3 Then cmd.RunCommand("SetAttr META ""tags:") Call EditNext(ClickData) End If If i = 0 Then cmd.RunCommand("Close ALLVIEWERS") Exit Sub End If End Sub Sub EditNext(ClickData) Dim cmd Set cmd = ClickData.Func.Command cmd.ClearFiles cmd.RunCommand("Select NEXT") cmd.sourcetab.Update Call SelNext(ClickData) End Sub Sub SelNext(ClickData) Dim cmd Set cmd = ClickData.Func.Command Dim item Dim FileType FileType = Script.config.FileType For Each item In cmd.sourcetab.selected If item.selected = True Then If (item.is_Dir = False And InStr(FileType, item.ext) <> 0) Then cmd.Addfile item cmd.RunCommand("dopusrt /cmd Show USEEXISTING") Dopus.Delay 200 Call Edit(ClickData) Else Call EditNext(ClickData) End If End If Next End Sub Sub EditPrev(ClickData) Dim cmd Set cmd = ClickData.Func.Command cmd.ClearFiles cmd.RunCommand("Select Prev") cmd.sourcetab.Update Call SelPrev(ClickData) End Sub Sub SelPrev(ClickData) Dim cmd Set cmd = ClickData.Func.Command Dim item Dim FileType FileType = Script.config.FileType For Each item In cmd.sourcetab.selected If item.selected = True Then If (item.is_Dir = False And InStr(FileType, item.ext) <> 0) Then cmd.Addfile item cmd.RunCommand("dopusrt /cmd Show USEEXISTING") Dopus.Delay 300 Call Edit(ClickData) Else Call EditPrev(ClickData) End If End If Next End Sub