/*$i= Each session is composed of two tabsets. Each tabset has the name of its session, preceded by '§1§_' for pane 1 and '§2§_' for pane 2. (e.g. Session 'Work' uses tabsets '§1§_Work' and '§2§_Work') $sessions = List of all saved sessions. $session = Current/selected session. $oset1 = Original tabset of pane 1 (full stored name). $sset2 = Session tabset of pane 2 (stripped name without the '§#§_'). ; */ // List available and valid sessions $osessions = folderreport(dirsrel, r, ."\Panes", , , "|"); status , , stop; end ($osessions UnLike "*§1§_*"), "No session found to load."; status , , progress; set $sessions; foreach ($tsession, $osessions, "|") { if ($tsession Like "*§1§_*") { $tsession = replace($tsession, "§1§_", ""); if ($osessions Like "*§2§_$tsession*") { // If no session tabset is missing (i.e. has been manually deleted) $oset1 = gettoken(, -1, "\"); $oset2 = gettoken(, -1, "\"); $sset1 = replace($oset1, "§1§_", ""); $sset2 = replace($oset2, "§2§_", ""); $sset1 = ($sset1 != $oset1)? $sset1 : ""; $sset2 = ($sset2 != $oset2)? $sset2 : " "; $d = (($sset1 == $sset2) && ($tsession == $sset1))? "|%winsysdir%\shell32.dll /44" : ""; $sessions = $sessions."$tsession$d"." global $session; $session = ""$tsession"";"; } } } $SMMenu = "Session - Reset...|:tabsets"." load(""SessionManager.xys"", ""_Reset"");"; $SMMenu = $SMMenu."Session - Update...|:tabsets"." load(""SessionManager.xys"", ""_Update"");"; $SMMenu = $SMMenu."-"; $SMMenu = $SMMenu."- Save Session...|%winsysdir%\shell32.dll /195"." load(""SessionManager.xys"", ""_Save"");"; $SMMenu = $SMMenu."- Rename Session...|%winsysdir%\shell32.dll /25"." load(""SessionManager.xys"", ""_Rename"");"; $SMMenu = $SMMenu."- Delete Session >|%winsysdir%\shell32.dll /132"." load(""SessionManager.xys"", ""_Delete"");"; $SMMenu = $SMMenu."-"; $SMMenu = $SMMenu.$sessions; $SMMenu = $SMMenu."-"; $SMMenu = $SMMenu."About Current Session/Tabsets|%winsysdir%\shell32.dll /155"." load(""SessionManager"", ""_About"");"; load($SMMenu, , s); //"_Load" global $session; if ($session != "") { if (get("#800") == 0) { // Activates Dual Pane, necessary for a proper tabset loading $dualpane = 0; #800; } $x=1; $y=1; $actpane=0; $oset1 = gettoken(, -1, "\"); $sset1 = replace($oset1, "§2§_", ""); $oset2 = gettoken(, -1, "\"); $sset2 = replace($oset2, "§1§_", ""); if (get("pane") == 1) { // Current active pane will be loaded last to remain active // Debug if tabset to load is already loaded in the wrong pane (e.g. '§2§_MySession' loaded in Pane1) if (($session != $sset1) || ($oset1 == $sset1)) { $x=2; } elseif (($session != $sset2) || ($oset2 == $sset2)) { $y=2; $actpane=1; } else { end 1==1, "You're working with an inverted session. Please load another session before reloading session '$session' . "; } } else { if (($session != $sset2) || ($oset2 == $sset2)) { $y=2; } elseif (($session != $sset1) || ($oset1 == $sset1)) { $x=2; $actpane=1; } else { end 1==1, "You're working with an inverted session. Please load another session before reloading session '$session' . "; } } // Check if session tabset is already loaded, to revert instead of load $osetx = gettoken(eval(), -1, "\"); $ssetx = replace($osetx, "§".$x."§_", ""); $actionx = (($session != $ssetx) || ($osetx == $ssetx))? "load" : "revert"; tabset($actionx, "§$x§_$session", $x); wait 10; $osety = gettoken(eval(), -1, "\"); $ssety = replace($osety, "§".$y."§_", ""); $actiony = (($session != $ssety) || ($osety == $ssety))? "load" : "revert"; tabset($actiony, "§$y§_$session", $y); wait 10; if ($actpane) {#802;} #1040; #1010; if !$dualpane {#800;} if ($actionx == "revert") && ($actionx == $actiony) { status("Session '$session' reset successfully"); } else { status("Session '$session' loaded successfully"); } } "_Reset" $oset1 = gettoken(, -1, "\"); $oset2 = gettoken(, -1, "\"); $sset1 = replace($oset1, "§1§_", ""); $sset2 = replace($oset2, "§2§_", ""); $sset1 = ($sset1 != $oset1)? $sset1 : ""; $sset2 = ($sset2 != $oset2)? $sset2 : " "; if ($sset1 != $sset2) { // If the two current tabsets aren't from a single session $state = "Tabsets"; $d = (regexreplace($oset1.$oset2, "§(1|2)§_", "") != $oset1.$oset2)? " valid" : ""; status , , stop; end !confirm("You're not using a$d session. Do you still want to revert your tabsets to their original state? "); status , , progress; $conf = 0; } else { $state = "Session"; } if $conf {end !confirm("Are you sure you want to reset session '$sset1' ? ");} if (get("#800") == 0) { $dualpane = 0; #800; } tabset("revert", , i); wait 10; tabset("revert", , i); wait 10; #1040; #1010; if !$dualpane {#800;} status("$state reset successfully"); "_Update" // Careful, name referenced by sub in '_Save' $oset1 = gettoken(, -1, "\"); $oset2 = gettoken(, -1, "\"); $sset1 = replace($oset1, "§1§_", ""); $sset2 = replace($oset2, "§2§_", ""); $sset1 = ($sset1 != $oset1)? $sset1 : ""; $sset2 = ($sset2 != $oset2)? $sset2 : " "; if ($sset1 == $sset2) { // If the two current tabsets are from a single session, and in their appropriate pane (i.e. §1§ in Pane1) global $NOINPUT; if (!$NOINPUT) {end !confirm("Are you sure you want to update session '$sset1' ? ");} tabset("save", , 1); wait 10; tabset("save", , 2); wait 10; #1040; #1010; status("Session '$sset1' updated successfully"); } else { status("No session to update", "883333", stop); $d = (regexreplace($oset1.$oset2, "§(1|2)§_", "") != $oset1.$oset2)? " valid" : ""; // msg "You're not using a$d session. It wouldn't be wise to update the tabsets. "; msg "You're not using a$d session. It wouldn't be wise to update the tabsets. Another window will open with the information about your current tabsets. "; sub "_About"; } "_Delete" $osessions = folderreport(dirsrel, r, ."\Panes", , , "|"); status , , stop; end ($osessions UnLike "*§1§_*"), "No session found to delete."; status , , progress; set $sessions; foreach ($tsession, $osessions, "|") { // List available and valid sessions if ($tsession Like "*§1§_*") { $tsession = replace($tsession, "§1§_", ""); if ($osessions Like "*§2§_$tsession*") { // If no session tabset is missing (i.e. has been manually deleted) $sessions = $sessions.$tsession."...|"; } } } $sessions = $sessions."-|Cancel"; $session = popupmenu($sessions); if $session && ($session != "Cancel") { $session = regexreplace($session, "\.{3}$", ""); $oset1 = gettoken(, -1, "\"); $oset2 = gettoken(, -1, "\"); $sset1 = regexreplace($oset1, "§(1|2)§_", ""); $sset2 = regexreplace($oset2, "§(1|2)§_", ""); $sset1 = ($sset1 != $oset1)? $sset1 : ""; $sset2 = ($sset2 != $oset2)? $sset2 : " "; if ($session == $sset1) || ($session == $sset2) { // If at least one loaded tabset belongs to the session to delete status("No session deleted", "883333", stop); if ($sset1 != $sset2) {$d=" partly"} else {$d=" currently"} msg "Session '$session' is$d in use. It is not safe to delete it. Load another session/tabsets first. "; end 1==1; } if (confirm("Do you really want to delete session '$session' ? ")) { delete 1, 0, "\Panes\§1§_$session|\Panes\§2§_$session"; wait 100; status("Session '$session' deleted successfully"); } else { status("No session deleted", "883333", stop); } } else { wait 50; status("No session deleted", "883333", stop); } "_Save" $session = input("Save & Use session", "Enter the name of the tabsets session to save. This session will be in use after you press OK. The name has to be a valid filename. ", , , "§CANCEL§"); if ($session && ($session != "§CANCEL§")) { $oset1 = gettoken(, -1, "\"); $oset2 = gettoken(, -1, "\"); $sset1 = replace($oset1, "§1§_", ""); $sset2 = replace($oset2, "§2§_", ""); $sset1 = ($sset1 != $oset1)? $sset1 : ""; $sset2 = ($sset2 != $oset2)? $sset2 : " "; if ($session == $sset1) || ($session == $sset2) { // If at least one loaded tabset belongs to the session to save if ($sset1 == $sset2) { if (confirm("You're currently using session '$session' . Do you want to update it? ")) { global $NOINPUT; $NOINPUT = 1; sub "_Update"; } else { status("No session saved", "883333", stop); } } else { status( , , stop); msg "You're currently using one tabset of session '$session' . It wouldn't be safe to overwrite the whole session. Try saving under a different name. "; } } else { $sessions = folderreport(dirsrel, r, ."\Panes", , , "|"); if (($sessions UnLike "*§1§_$session*") && ($sessions UnLike "*§2§_$session*")) { // If session doesn't exist (i.e. no tabset exists with same name as sesion) tabset("saveas", "§1§_$session", 1); wait 10; tabset("saveas", "§2§_$session", 2); status("Session '$session' saved successfully"); } else { msg "Session '$session' already exists. Choose another name. "; status("No session saved", "883333", stop); } } } else { wait 50; status("No session saved", "883333", stop); } "_Rename" $oset1 = gettoken(, -1, "\"); $oset2 = gettoken(, -1, "\"); $sset1 = replace($oset1, "§1§_", ""); $sset2 = replace($oset2, "§2§_", ""); $sset1 = ($sset1 != $oset1)? $sset1 : ""; $sset2 = ($sset2 != $oset2)? $sset2 : " "; if ($sset1 == $sset2) { // If a valid session is active $session = input("Rename session: '$sset1'", "Enter a new session name. The name has to be a valid filename. ", $sset1, , "§CANCEL§"); if ($session && ($session != "§CANCEL§")) { if ($session != $sset1) { // If new session name is different than current session name $sessions = folderreport(dirsrel, r, ."\Panes", , , "|"); if (($sessions UnLike "*§1§_$session*") && ($sessions UnLike "*§2§_$session*")) { // If session doesn't exist (i.e. no tabset exists with same name as sesion) $x=1; $y=1; if (get("pane") == 1) {$x=2;} else {$y=2;} tabset("rename", "§$x§_$session", $x); wait 10; tabset("rename", "§$y§_$session", $y); wait 10; #1040; #1010; status("Session '$sset1' successfully renamed to '$session'"); } else { msg "Session '$session' already exists. Choose another name. "; status("No session renamed", "883333", stop); } } else { msg "The current session is already named '$session' . "; status("No session renamed", "883333", stop); } } else { wait 50; status("No session renamed", "883333", stop); } } else { $d = (regexreplace($oset1.$oset2, "§(1|2)§_", "") != $oset1.$oset2)? " valid" : ""; msg "You're not using a$d session. Reload a session before trying to rename. "; status("No session renamed", "883333", stop); } "_About" // Careful, name referenced by sub in '_Update' $fset1 = regexreplace(gettoken(, -1, "\"), "§(1|2)§_", "§#§_"); $fset2 = regexreplace(gettoken(, -1, "\"), "§(1|2)§_", "§#§_"); $stat1 = (strpos($fset1, "§#§_") == -1)? 0 : 1; $stat2 = (strpos($fset2, "§#§_") == -1)? 0 : 1; $sset1 = replace($fset1, "§#§_", ""); $sset2 = replace($fset2, "§#§_", ""); if ($stat1+$stat2 == 2) { if ($sset1 == $sset2) { if (gettoken(, -1, "\") Like "*§1§_*") { $sessionstatus = "You're currently using session: $sset1 "; } else { $sessionstatus = "You're currently using session: $sset1 but you've inverted the tabsets. It would be wise to save it to another name. "; } } else { $sessionstatus = "You've mixed your sessions. Your first tabset is from session: $sset1 Your second tabset is from session: $sset2 "; } } elseif ($stat1+$stat2 == 1) { if ($stat1 == 0) { $sessionstatus = "You're not using a full session. Your first tabset is a standard tabset: $sset1 Your second tabset is from session: $sset2 "; } else { $sessionstatus = "You're not using a full session. Your first tabset is from session: $sset1 Your second tabset is a standard tabset: $sset2 "; } } else { $sessionstatus = "You're not using a session but two different tabsets. Your first tabset is: $sset1 Your second tabset is: $sset2 "; } // Check orphan tabsets previously belonging to sessions (e.g. '§1§_MySession' present but not '§2§_MySession') $osessions = folderreport(dirsrel, r, ."\Panes", , , "|"); set $sessions; foreach ($tsession, $osessions, "|") { if ($tsession Like "*§1§_*") { $tsession = replace($tsession, "§1§_", ""); if ($osessions UnLike "*§2§_$tsession*") { $i++; $sessions = $sessions." §1§_".$tsession." "; } } if ($tsession Like "*§2§_*") { $tsession = replace($tsession, "§2§_", ""); if ($osessions UnLike "*§1§_$tsession*") { $i++; $sessions = $sessions." §2§_".$tsession." "; } } } if ($i > 0) { $i = ($i > 1)? "s are orphans" : " is an orphan"; if (confirm("$sessionstatus _________________________ The following tabset$i, and can no longer be used in a session. $sessionsDo you want to open the tabsets folder (in a new tab)? ")) { #340; #858; #523; #251; } } else { msg "$sessionstatus"; } status , , ready;