/////////////////////////////////////////////////////////////////////////////// function OnInit(data){ data.name = "Event.Folder: CloseTabSiblings"; data.desc = "Close tab siblings (tabs with same location)."; data.copyright = "tbone in o9/2o14"; data.version = "0.1"; data.default_enable = true; data.min_version = "11"; var cmd = data.AddCommand(); cmd.name = "CloseTabSiblings" cmd.method = "Command_CloseTabSiblings"; cmd.desc = "Close equal tab siblings."; cmd.label = "CloseTabSiblings"; cmd.icon = "closetab"; /////////////////////////////////////////////////////////////////////////// function ConfigHelper(data){ this.data=data; this.descriptions=null; this.last=null; this.add = function(name, val, description){ this.data.config[name]=val; this.last=[this.data.config[name],name]; if (description!=undefined) this.des(description); return this;} this.des = function(description){ if (!(description && DOpus.version.AtLeast("11.6.1"))) return this; if (!this.descriptions){ this.descriptions=DOpus.NewMap(); data.config._descriptions=this.descriptions; } this.descriptions(this.last[1])=description; return this;} this.val = function(val){ if (typeof this.last[0]=="object") this.last[0].push_back(val); else this.last[0]=val; return this;} } /////////////////////////////////////////////////////////////////////////// var cfg = new ConfigHelper(data); cfg.add("DebugOutput", false). des("Enable debug output in the script console."); cfg.add("OnAfterFolderChange", true). des("Enable automatic closing of tab siblings by monitoring tab and folder changes."); } /////////////////////////////////////////////////////////////////////////////// var COMMAND_ABORTED = true; //==0 var COMMAND_SUCCEEDED = false; //!=0 var g=this; /////////////////////////////////////////////////////////////////////////////// try{ if (DOpus.vars.Exists("Script.CloseTabSiblings.OnAfterFolderChange") && DOpus.vars("Script.CloseTabSiblings.OnAfterFolderChange") == true ){ //Debug(" VAR Script.CloseTabSiblings.OnAfterFolderChange = true / notexists"); //Debug(" Binding OnBeforeFolderChange():"); this.OnAfterFolderChange = OnAfterFolderChange_Callback; } else { //Debug(" VAR Script.CloseTabSiblings.OnAfterFolderChange = false"); //Debug(" NOT Binding OnAfterFolderChange():"); } //Debug(" Config.OnAfterFolderChange = " + Script.config.OnAfterFolderChange); } catch(e){ //Debug(" Config.OnAfterFolderChange = ?"); } /////////////////////////////////////////////////////////////////////////////// function OnScriptConfigChange(){ if (Script.config.OnAfterFolderChange == true){ Debug(" Setting Script.CloseTabSiblings.OnAfterFolderChange = 1 "); DOpus.vars.Set("Script.CloseTabSiblings.OnAfterFolderChange", 1); DOpus.vars("Script.CloseTabSiblings.OnAfterFolderChange").persist = true; } else { DOpus.vars.Set("Script.CloseTabSiblings.OnAfterFolderChange", 0); DOpus.vars("Script.CloseTabSiblings.OnAfterFolderChange").persist = true; Debug(" Setting Script.CloseTabSiblings.OnAfterFolderChange = 0 "); } //Debug(" GETTING Script.CloseTabSiblings.OnAfterFolderChange = " + // DOpus.vars.Get("Script.CloseTabSiblings.OnAfterFolderChange")); delete g.OnAfterFolderChange; DOpus.ReloadScript(Script.file); } /////////////////////////////////////////////////////////////////////////////// function Command_CloseTabSiblings(data){ Debug("CloseTabSiblings():"); data.func.command.ClearFiles(); CloseTabSiblings( data.func.sourcetab ); } /////////////////////////////////////////////////////////////////////////////// function OnAfterFolderChange_Callback(data){ Debug("CloseTabSiblings.OnAfterFolderChange():"); Debug(" TabPath : " + data.tab.path); Debug(" TabRight: " + data.tab.right); CloseTabSiblings( data.tab ); } /////////////////////////////////////////////////////////////////////////////// function CloseTabSiblings(tab){ var tabs = GetTabsFromTabRowOfTab(tab); var cmd = null; Debug(" TabCount: " + tabs.count); Debug(" TabPath : " + tab.path); Debug(" TabID : " + tab); for(var t=0;t