Common Servers — File Browser

CommonServersv1.2 / CommonServersv1.2 / comserv / comserv.mrc

comserv.mrc — 6.73 KB — Download this file

;____________________________________________________________________________________________________________
;     comserv.mrc - Common servers control for mIRC v6.15+ by Andy
;     Contact: palmer.andy@gmail.com
:
;     See readme.txt for documentation and version history
;____________________________________________________________________________________________________________

on *:LOAD: {
  ;Version check
  if ($version < 6.15) { 
    echo -agc info * Common servers requires at least mIRC v6.15 to operate, the script will now be unloaded
  .timer 1 2 unload -rs comserv.mrc  }
  else { 
    echo -agc info2 * Welcome to common servers. You can begin adding servers to your list by typing /csm or accessing the dialog via the menubar 
    %cserv.startp = 1
  }
}

on *:UNLOAD: { unset %cserv.* }

on *:START: { 
  ;Prompt to connect to all servers in the list
  if (%cserv.startp) && ($isfile($ctxt)) && ($input(Connect to your common servers?,yq,Connect Prompt)) { comserv }
}

on *:CONNECT: {
  ;Auto-join channels if it is enabled for that server
  if ($getttok(4)) && ($getttok(3)) { join $getttok(3) }
}

;Shortcut aliases
alias -l cstab { return $eval($+ $chr(9) $+,1) }
alias -l cmdx { dll $+(",$scriptdir,\mdx.dll,") $1- }
alias -l cmdxv { return $scriptdir $+ \views.mdx }
alias -l ctxt { return $+(",$scriptdir,\servers.txt,") }
alias -l getttok { return $gettok($read($ctxt,w,$+(*,$server,*)),$1,9) }
alias -l getctok { 
  if ($1 == 0) { return $gettok($gettok($did(csmanage,1).seltext,1,9),-1,32) $cstab $gettok($gettok($did(csmanage,1).seltext,2,9),-1,32) $cstab $gettok($gettok($did(csmanage,1).seltext,3,9),-1,32) }
  else { return $gettok($gettok($did(csmanage,1).seltext,$1,9),-1,32) }
}
alias -l aj { return $gettok($read($ctxt,$calc($did(csmanage,1).sel - 1)),4,9) }

;Menubar items
menu menubar,status {
  Common Servers
  .Manage: csm
  .Connect: csc
}

;Connection aliases
alias comserv { filter -fk $ctxt comconnect * }
alias comconnect {
  tokenize 9 $1-
  if ($scon(0) == 1) && ($scon(1).status == disconnected) { server $2 }
  else { server -m $2 }
}

alias csc {
  if (%cserv.prompt) && ($input(Connect to your common servers?,yq,Connect Prompt)) { comserv }
  if (!%cserv.prompt) { comserv }
}

;context menu
alias cmenu {
  if ($window(@cs)) { window -c @cs }
  window -pBhdo +dL @cs $mouse.dx $mouse.dy 125 75
  fillcmenu x
  window -a @cs
}

alias -l fillcmenu {
  if (!$1) { clear @cs }
  drawfill -r @cs $rgb(212,208,200) $rgb(212,208,200) 0 0
  drawtext @cs 1 Tahoma 11 15 10 Edit Server
  drawtext @cs 1 Tahoma 11 15 30 Remove Server
  drawtext @cs 1 Tahoma 11 15 50 Help
}

on *:ACTIVE:*: {
  if ($lactive == @cs) { window -c @cs }
}

menu @cs {
  ; Highlighting
  mouse: {
    ; edit
    if ($mouse.y < 30) && ($getdot(@cs,1,1) != $rgb(10,36,106)) {
      fillcmenu
      drawrect -rf @cs $rgb(10,36,106) 1 1 1 125 23
      drawtext @cs 15 Tahoma 11 15 10 Edit Server
    }
    ; remove
    if ($mouse.y > 30) && ($mouse.y < 50) && ($getdot(@cs,1,28) != $rgb(10,36,106)) {
      fillcmenu
      drawrect -rf @cs $rgb(10,36,106) 1 1 28 125 23
      drawtext @cs 15 Tahoma 11 15 30 Remove Server
    }
    ; keys
    if ($mouse.y > 50) && ($getdot(@cs,1,51) != $rgb(10,36,106)) { 
      fillcmenu
      drawrect -rf @cs $rgb(10,36,106) 1 1 48 125 23
      drawtext @cs 15 Tahoma 11 15 50 Help
    }
  }
  ; Clicks
  sclick: {
    if ($mouse.y < 30) && ($did(csmanage,1).seltext) {
      write -l $+ $calc($did(csmanage,1).sel - 1) $ctxt $$input(New server description for $getctok(1),eq,Edit server / Description,$getctok(1)) $cstab $$input(New server address for $getctok(2),eq,Edit server / Address,$getctok(2)) $cstab $$input(Edit your auto join channels for $getctok(1) $crlf $+ Seperate with commas $+($chr(40),#chan1,$chr(44),#chan2,$chr(44),#chan3,$chr(41)),eq,Edit server / Channels,$getctok(3)) $cstab $iif($$input(AutoJoin Channels for this server?,y,Edit server / Auto Join),1,0)
      loadbuf -ro csmanage 1 $ctxt
      window -c @cs
    }
    if ($mouse.y > 30) && ($mouse.y < 50) && ($did(csmanage,1).seltext) { 
      if ($input(Remove $getctok(1) $+ ?,yq,Confirm Removal))  { 
        write -dl $+ $calc($did(csmanage,1).sel - 1) $ctxt
        echo -sgc info2 * Removed $+(',$getctok(2),') from Common Servers
        loadbuf -ro csmanage 1 $ctxt
      }
      window -c @cs
    }
    if ($mouse.y > 50) { 
      run $scriptdir $+ readme.txt
      window -c @cs
    }
  }
}
;Management dialog
alias csm dialog $iif($dialog(csmanage),-v,-m) csmanage csmanage
dialog csmanage {
  title "Common Servers"
  size -1 -1 195 90
  option dbu
  list 1, 0 1 195 68, size
  button "&Add", 2, 5 75 35 10
  button "&Done", 5, 45 75 35 10, ok cancel default
  check "Start Prompt", 6, 85 75 43 10
  check "AutoJoin", 7, 163 75 50 10
  check "Prompt?", 8, 128 75 35 10
}

;close popup on dialog exit
on *:DIALOG:csmanage:exit:*: { 
  if ($window(@cs)) { window -c @cs } 
}
;Add the final pieces to the dialog
on *:DIALOG:csmanage:init:*: {
  if (!$isfile($ctxt)) { write $ctxt }
  cmdx MarkDialog csmanage
  cmdx SetControlMDX csmanage 1 listview report rowselect labeltip > $cmdxv
  did -i csmanage 1 1 headerdims 100,1 150,2 190,3 
  did -i csmanage 1 1 headertext Description $chr(9) $+ Server $chr(9) $+ Auto Join
  loadbuf -o csmanage 1 $ctxt
  did -b csmanage 7
  if (%cserv.startp) { did -c csmanage 6 }
  if (%cserv.prompt) { did -c csmanage 8 }
}


on *:DIALOG:csmanage:sclick:*: {
  if ($did == 1) {
    if (*rclick* iswm $did($did,1)) { cmenu }
    if (!$did(1).seltext) { window -c @cs }
    did $iif($did(1).seltext,-e,-b) csmanage 7
    if ($aj) { did -c csmanage 7 }
    else { did -u csmanage 7 }
  }
  ;start prompt toggle
  if ($did == 6) { %cserv.startp = $iif(%cserv.startp,0,1) }
  ;auto join toggle
  if ($did == 7) && ($did(1).seltext) { 
    if (!$aj) { 
      echo -sgc info2 * Auto join on $+(',$getctok(2),') is now enabled
      write -l $+ $calc($did(1).sel - 1) $ctxt $getctok(0) $cstab 1
    }
    else { 
      echo -sgc info2 * Auto join on $+(',$getctok(2),') is now disabled
      write -l $+ $calc($did(1).sel - 1) $ctxt $getctok(0) $cstab 0
    }
  }
  ;prompt toggle
  if ($did == 8) { %cserv.prompt = $iif(%cserv.prompt,0,1) }
  ;adding
  if ($did == 2) {
    write $ctxt $$input(Server Description,eq,Add a server / Description) $cstab $$input(Server address (irc.server.com:port),eq,Add a server / Address) $cstab $input(Channels to auto-join $crlf $+ Seperate with commas $+($chr(40),#chan1,$chr(44),#chan2,,$chr(32),$chr(91),mychankey,$chr(93),$chr(41)),eq,Add a server / Channels) $cstab $iif($input(Enable auto join for this server?,y,Add a server / Auto join toggle),1,0)
    loadbuf -ro csmanage 1 $ctxt
  }
}