// History // 20191207 v1.0.1 function OnInit(initData) { initData.name = "eventOnFolderChange"; initData.version = "1.0.1 (December 8th, 2019)"; initData.desc = "Execute user specified commands when a specific folder change occurs."; initData.copyright = "Wrapper for executing commands when a specific folder change occurs."; initData.default_enable = true; // Populate configurable defaults for a set of "special" folders // and a set of commands to execute after a change to a "special" folder var vFolders = DOpus.Create.Vector(); vFolders.push_back("/homeroot\\testfolder"); vFolders.push_back("/homeroot\\sd"); var vActions = DOpus.Create.Vector(); vActions.push_back("Set VIEW=thumbnails"); vActions.push_back("Show THUMBNAILSIZE source,384"); initData.config_desc = DOpus.create.map(); initData.config.dbg = false; initData.config_desc("dbg") = 'Write trace information to "Other" log.'; initData.config.specialFolders = vFolders; initData.config_desc("specialFolders") = "List of folders to be treated specially."; initData.config.specialFolderCommands = vActions; initData.config_desc("specialFolderCommands") = "Commands to execute after a change to a matching folder."; } function OnBeforeFolderChange(beforeFolderChangeData){ var dbg = Script.config.dbg; // If this is a new tab being opened there is no "before" path var beforePath = (beforeFolderChangeData.initial) ? "" : beforeFolderChangeData.Tab.Path; Script.vars.set("beforePath",beforePath); } function OnAfterFolderChange(afterFolderChangeData){ // Folder change may have failed if (!afterFolderChangeData.result) return; var dbg = Script.config.dbg; var fsu = DOpus.FSUtil; var cmd = DOpus.Create.Command; var beforePath = Script.vars.get("beforePath"); if (dbg) DOpus.output("beforePath = " + beforePath); var afterPath = afterFolderChangeData.Tab.Path; if (dbg) DOpus.output("afterPath = " + afterPath); // A command may have triggered re-entry to the same folder if (fsu.ComparePath(afterPath,beforePath)) return; var n = Script.config.specialFolders.count; var isSpecial = false; for (var i = 0; i < n; i++){ if (fsu.ComparePath(afterPath,fsu.resolve(Script.config.specialFolders(i)))){ isSpecial = true; break; } } if (isSpecial){ if (dbg) DOpus.output("Apply commands to " + afterPath); n = Script.config.specialFolderCommands.count; var cmds = Script.config.specialFolderCommands; for (var i = 0; i < n; i++) cmd.addline(cmds(i)); cmd.run; return; } var wasSpecial = false; for (var i = 0; i < n; i++){ if (fsu.ComparePath(beforePath,fsu.resolve(Script.config.specialFolders(i)))){ wasSpecial = true; break; } } if (wasSpecial){ if (dbg) DOpus.output("Restore default format to " + afterPath); cmd.runcommand("Set Format=!folder"); } }