|
menu channel,status {
|
|
Session Manager
|
|
.Save
|
|
..Save New:/sessMan.save
|
|
..-
|
|
..$submenu($sessMan.menu.save($1))
|
|
.Load
|
|
..$submenu($sessMan.menu.load($1))
|
|
.$iif($chan != $null,Add $chan To Existing,-)
|
|
..$submenu($sessMan.menu.append($1))
|
|
.$iif($chan != $null,Remove $chan From Existing,-)
|
|
..$submenu($sessMan.menu.detach($1))
|
|
.-
|
|
.Options
|
|
..Auto Part current channels on loading
|
|
...$iif($readini(sessMan-options.ini,config,autoPart) == true,$style(1),$null) $+ Enable:writeini sessMan-options.ini config autoPart true
|
|
...$iif($readini(sessMan-options.ini,config,autoPart) == $null,$style(1),$null) $+ Disable:remini sessMan-options.ini config autoPart
|
|
..Auto Join Session on Connect
|
|
...$iif($readini(sessMan-options.ini,config,autoJoin) == truedef,$style(1),$null) $+ Join Default:writeini sessMan-options.ini config autoJoin truedef
|
|
...$iif($readini(sessMan-options.ini,config,autoJoin) == trueprev,$style(1),$null) $+ Join Previous:writeini sessMan-options.ini config autoJoin trueprev
|
|
...$iif($readini(sessMan-options.ini,config,autoJoin) == $null,$style(1),$null) $+ Disable:remini sessMan-options.ini config autoJoin
|
|
..Auto Save 'previous' on Disconnect
|
|
...$iif($readini(sessMan-options.ini,config,autoSave) == true,$style(1),$null) $+ Enable:writeini sessMan-options.ini config autoSave true
|
|
...$iif($readini(sessMan-options.ini,config,autoSave) == $null,$style(1),$null) $+ Disable:remini sessMan-options.ini config autoSave
|
|
..-
|
|
..Delete Session
|
|
...$submenu($sessMan.menu.delete($1))
|
|
}
|
|
|
|
alias sessMan.save {
|
|
var %i = 1
|
|
var %chanlist = $null
|
|
|
|
if ($1 == $null) {
|
|
%sessionName = $?"Session Name. (If blank, will use 'default')"
|
|
}
|
|
else {
|
|
%sessionName = $1
|
|
}
|
|
|
|
if (%sessionName == $null) {
|
|
%sessionName = default
|
|
}
|
|
|
|
while (%i <= $chan(0)) {
|
|
;if (%chanlist == $null) {
|
|
; var %chanlist = $chan(%i)
|
|
;} else {
|
|
; var %chanlist = %chanlist $+ , $+ $chan(%i)
|
|
;}
|
|
|
|
;
|
|
; Turns out using tokens makes this a one liner without needing an if at all
|
|
; Who knew? (Apparently everyone who knows AdiIRC/mIRC scripting)
|
|
;
|
|
%chanlist = $addtok(%chanlist,$chan(%i),44)
|
|
inc %i
|
|
}
|
|
|
|
if ( %chanlist != $null ) {
|
|
writeini sessMan-sessions.ini $network %sessionName %chanlist
|
|
echo -sg Saved %chanlist
|
|
echo -sg $str($chr(160),2) to session: %sessionName
|
|
echo -sg $str($chr(160),2) for network: $network
|
|
}
|
|
}
|
|
|
|
alias sessMan.load {
|
|
if ($1 == $null) {
|
|
%sessionName = default
|
|
}
|
|
else {
|
|
%sessionName = $1
|
|
}
|
|
|
|
%chanlist = $readini(sessMan-sessions.ini,$network,%sessionName)
|
|
if (%chanlist == $null) {
|
|
if ( $2 != quiet ) {
|
|
echo -ag Session Does Not Exist
|
|
}
|
|
return
|
|
}
|
|
else {
|
|
if ( $readini(sessMan-options.ini,config,autoPart) == true ) {
|
|
sessman.partAll
|
|
}
|
|
join %chanlist
|
|
}
|
|
}
|
|
|
|
alias sessMan.append {
|
|
if ( $1 == $null ) return
|
|
|
|
var %session = $1
|
|
var %chanlist = $readini(sessMan-sessions.ini,$network,%session)
|
|
if ( %chanlist == $null ) {
|
|
return
|
|
}
|
|
var %chanlist = $addtok(%chanlist,$chan,44)
|
|
writeini sessMan-sessions.ini $network %session %chanlist
|
|
}
|
|
|
|
alias sessMan.detach {
|
|
if ( $1 == $null || $2 == $null ) return
|
|
var %sess = $1
|
|
var %chan = $2 $+ ,?
|
|
var %chanlist = $readini(sessMan-sessions.ini,$network,%sess)
|
|
noop $regsub(detach,%chanlist,/ $+ %chan $+ /g,,%newchanlist)
|
|
|
|
if (%newchanlist == $null) {
|
|
echo -ag That was the only channel in the session
|
|
echo -ag Deleting the session instead
|
|
remini sessMan-sessions.ini $network %sess
|
|
return
|
|
}
|
|
|
|
writeini sessMan-sessions.ini $network %sess %newchanlist
|
|
echo -ag Channel: $2 removed from Session: %sess
|
|
}
|
|
|
|
alias sessMan.menu.delete {
|
|
;This block deals with begin since the main bit returns on a null rather than doing nothing
|
|
if ( $1 == $null ) {
|
|
var %pos = 1
|
|
}
|
|
else {
|
|
var %pos = $1
|
|
}
|
|
|
|
var %sess = $ini(sessMan-sessions.ini,$network,%pos)
|
|
if ( %sess == $null ) {
|
|
return
|
|
}
|
|
else {
|
|
return Delete %sess $+ :remini sessMan-sessions.ini $network %sess
|
|
}
|
|
}
|
|
|
|
alias sessMan.partAll {
|
|
var %i = 1
|
|
while (%i <= $chan(0)) {
|
|
part $chan(%i)
|
|
inc %i
|
|
}
|
|
}
|
|
|
|
alias sessMan.menu.save {
|
|
if ( $1 == $null ) {
|
|
var %pos = 1
|
|
}
|
|
else {
|
|
var %pos = $1
|
|
}
|
|
var %sess = $ini(sessMan-sessions.ini,$network,%pos)
|
|
if ( %sess == $null ) return
|
|
return %sess $+ :sessMan.save %sess
|
|
}
|
|
|
|
alias sessMan.menu.load {
|
|
if ( $1 == $null ) {
|
|
var %pos = 1
|
|
}
|
|
else {
|
|
var %pos = $1
|
|
}
|
|
%sess = $ini(sessMan-sessions.ini,$network,%pos)
|
|
if ( %sess == $null ) return
|
|
return %sess $+ :sessMan.load %sess
|
|
}
|
|
|
|
alias sessMan.menu.append {
|
|
if ($chan == $null) return
|
|
if ( $1 == $null ) {
|
|
var %pos = 1
|
|
}
|
|
else {
|
|
var %pos = $1
|
|
}
|
|
|
|
var %sess = $ini(sessMan-sessions.ini,$network,%pos)
|
|
if ( %sess == $null ) return
|
|
return Add To %sess $+ :sessMan.append %sess
|
|
}
|
|
|
|
alias sessMan.menu.detach {
|
|
if ($chan == $null) return
|
|
if ( $1 == begin ) {
|
|
%i = 1
|
|
%count = $ini(sessMan-sessions.ini,$network,0)
|
|
while (%i <= %count) {
|
|
%position = $ini(sessMan-sessions.ini,$network,%i)
|
|
if ($pos($readini(sessMan-sessions.ini,$network,%position),$chan,0) == 1) {
|
|
writeini sessMan-temp.ini menuGen $ini(sessMan-sessions.ini,$network,%i) 1
|
|
}
|
|
inc %i
|
|
}
|
|
}
|
|
|
|
if ( $1 == end ) {
|
|
remini sessMan-temp.ini menuGen
|
|
}
|
|
|
|
if ( $1 == $null ) {
|
|
var %pos = 1
|
|
}
|
|
else {
|
|
var %pos = $1
|
|
}
|
|
|
|
var %sess = $ini(sessMan-temp.ini,menuGen,%pos)
|
|
if ( %sess == $null ) return
|
|
return Remove $chan from %sess :sessMan.detach %sess $chan
|
|
}
|
|
|
|
on *:DISCONNECT:{
|
|
if ( $readini(sessMan-options.ini,config,autoSave) == true ) {
|
|
echo -ag Saving currently connected channels to session 'previous'
|
|
sessMan.save previous
|
|
}
|
|
}
|
|
|
|
on *:CONNECT:{
|
|
if ( $readini(sessMan-options.ini,config,autoJoin) == truedef ) {
|
|
sessMan.load default quiet
|
|
}
|
|
elseif ( $readini(sessMan-options.ini,config,autoJoin) == trueprev ) {
|
|
sessMan.load previous quiet
|
|
}
|
|
}
|