blizzard::gui — File Browser

blizzardguiv1.0 / blizzardguiv1.0 / blizzard_gui_manager.mrc

blizzard_gui_manager.mrc — 8.03 KB — Download this file

;===================================================================================================

;                       blizzard::gui - Skin manager
;                       ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
;

;     This file is not needed if you want the engine to work.
;    
;     Its purpose is to easilly load new skins, and to allow the user to download new skins directly from mIRC
;     (you can find skins for blizzard::gui on http://blizzard.mircscripts.org/skins/  )
; 
;
;     Made by Epsilon - July 2003

;     www.blizzard.be.tf
;     

;===================================================================================================

;===== use this alias to call the manager =========
alias skin-manager {
  gui skin-manager skin-manager
}
;==================================================
on *:LOAD:echo -a blizzard::gui skin manager loaded. /skin-manager to run it.


;======== not commented code :
alias tgui_skin-manager {
  gui_size skin-manager 200 150 230 250  
  gui -ly skin-manager
  gui_title skin-manager blizzard::gui - Skin manager
  gui_text skin-manager 1 5 5 120 16 > Choose a skin:
  gui_list skin-manager 2 5 22 130 184 size vsbar autovs 
  gui_button skin-manager 3 145 22 60 24 > Ok
  gui_button skin-manager 4 145 52 60 24 > Cancel
  gui_button skin-manager 5 145 82 60 24 > More ›››
  gui_text skin-manager 6 225 5 120 16 > Download new skins:
  gui_list skin-manager 7 225 22 130 154 size vsbar autovs
  gui_button skin-manager 8 365 22 60 24 > Get list
  gui_button skin-manager 9 365 52 60 24 > Download
  gid -b skin-manager 9
  gui_text skin-manager 10 225 182 200 28 > status: not connected - click on "Get List" to get the list of available skins.
  gui_button skin-manager 11 145 142 60 24 > Delete

  %blizzard_gui_tmp_skin = %blizzard_gui_skin  
  refresh_skin_list
}
on *:SIGNAL:GUI: {
  if ($1 == skin-manager) {
    if ($2 == closed) {
      if ($hget(tmp_gui_skins)) {
        .sockclose skins
        .sockclose dl-skins
        if ($isfile($hget(tmp_gui_skins,file))) .remove $hget(tmp_gui_skins,file)
        .hfree tmp_gui_skins        
      }
      unset %blizzard_gui_tmp_skin
    }
    if ($2 == close) {
      if (%blizzard_gui_skin != %blizzard_gui_tmp_skin) {
        %blizzard_gui_skin = %blizzard_gui_tmp_skin
        load_gui
      }
      unset %blizzard_gui_tmp_skin
      gui -c skin-manager     
    }
    if ($2 == sclick) {
      if ($3 == 3) {
        gui -c skin-manager
      }
      else if ($3 == 4) {
        if (%blizzard_gui_skin != %blizzard_gui_tmp_skin) {
          %blizzard_gui_skin = %blizzard_gui_tmp_skin
          load_gui
        }      
        gui -c skin-manager        
      }
      else if ($3 == 5) {
        if (more isin $gid(skin-manager,5)) {
          gui_size skin-manager -1 -1 454 250
          gid -a skin-manager 5 ‹‹‹ Hide
        }
        else {
          gui_size skin-manager -1 -1 230 250
          gid -a skin-manager 5 More ›››
        }
      }
      else if ($3 == 2) {
        if ($gid(skin-manager,2).sel == 1) gid -b skin-manager 11
        else gid -e skin-manager 11

        if (%blizzard_gui_skin != $gid(skin-manager,2).seltext) {
          %blizzard_gui_skin = $gid(skin-manager,2).seltext
          load_gui
        }
      }
      else if ($3 == 8) {
        get_list
      }
      else if ($3 == 7) {
        gid -e skin-manager 9
      }
      else if ($3 == 9) {
        download_skin $gid(skin-manager,7).seltext
        gid -d skin-manager 7 $gid(skin-manager,7).sel
      }
      else if ($3 == 11) {
        %blizzard_gui_skin = <default>
        %blizzard_gui_tmp_skin = <default>
        .remove $+(",%blizzard_gui_skin_dir $+ $gid(skin-manager,2).seltext $+ .png,")
        gid -d skin-manager 2 $gid(skin-manager,2).sel
        gid -b skin-manager 11
        gid -c skin-manager 2 1
        load_gui
      }

    }
  }
}

on *:sockopen:skins: {
  if ($sockerr) {
    gid -a skin-manager 10 status: connection error - could not connect to the website.
    return
  }
  else {
    gid -a skin-manager 10 status: connection established - downloading the list...
    gid -r skin-manager 7
    sockwrite -n skins GET /skins/list.txt HTTP/1.1
    sockwrite -n skins Host: blizzard.mircscripts.org $+ $str($crlf,2)   
  }
}
on *:sockread:skins:{
  var %text
  sockread %text
  if ($sockerr) {
    gid -a skin-manager 10 status: connection error - could not connect to the website.
    gid -r skin-manager 7
    return
  }
  if (%text == :end) { 
    hdel tmp_gui_skins display
    gid -a skin-manager 10 status: all skins available are listed. You can now download them.
    .sockclose skins
  }
  if ($hget(tmp_gui_skins,display)) && (!$isfile($+(",%blizzard_gui_skin_dir $+ %text $+ .png,"))) gid -a skin-manager 7 %text 
  else if (%text == :start) hadd tmp_gui_skins display 1
}

on *:sockopen:dl-skins: {
  if ($sockerr) {
    gid -a skin-manager 10 status: connection error - could not connect to the website.
    gid -e skin-manager 7
    gid -r skin-manager 7
    gid -e skin-manager 8
    .hfree tmp_gui_skins
    return
  }
  else {
    gid -a skin-manager 10 status: downloading $hget(tmp_gui_skins,dl) (0%)
    hadd tmp_gui_skins file $+(",%blizzard_gui_skin_dir $+ $hget(tmp_gui_skins,dl) $+ .png,")
    write -c $hget(tmp_gui_skins,file)
    sockwrite -n dl-skins GET /skins/ $+ $hget(tmp_gui_skins,dl) $+ .png HTTP/1.1
    sockwrite -n dl-skins Host: blizzard.mircscripts.org $+ $str($crlf,2)
  }
}
on *:sockread:dl-skins:{  
  if ($sockerr) {
    gid -a skin-manager 10 status: connection error - could not connect to the website.
    gid -e skin-manager 7
    gid -r skin-manager 7
    gid -e skin-manager 8
    .hfree tmp_gui_skins
    return
  }
  if (!$hget(tmp_gui_skins,ready)) {
    var %header
    sockread %header
    while ($sockbr) {
      if (Content-length: * iswm %header) {
        hadd tmp_gui_skins len $gettok(%header,2,32)      
      }
      elseif (* !iswm %header) {
        hadd tmp_gui_skins ready 1
        hadd tmp_gui_skins offset $sock($sockname).rcvd      
        break
      }
      sockread %header
    }
  }
  sockread 4096 &f
  while ($sockbr) {
    bwrite $hget(tmp_gui_skins,file) -1 -1 &f
    var %pc = $round($calc(100*($sock($sockname).rcvd - $hget(tmp_gui_skins,offset))/ $hget(tmp_gui_skins,len)),1)    
    gid -a skin-manager 10 status: downloading $hget(tmp_gui_skins,dl) ( $+ %pc $+ % $+ )
    if (%pc >= 100) {
      gid -a skin-manager 10 status: $hget(tmp_gui_skins,dl) successfully downloaded
      gid -e skin-manager 7
      gid -e skin-manager 8
      refresh_skin_list
      .hfree tmp_gui_skins
      .sockclose dl-skins
      return
    }
    else sockread 4096 &f
  }
}

on *:sockclose:dl-skins:{
  gid -a skin-manager 10 status: $hget(tmp_gui_skins,dl) successfully downloaded
  gid -e skin-manager 7
  gid -e skin-manager 8
  refresh_skin_list
  .hfree tmp_gui_skins
}
alias -l download_skin {
  if ($hget(tmp_gui_skins)) hfree tmp_gui_skins
  hmake tmp_gui_skins
  hadd tmp_gui_skins dl $1-
  gid -b skin-manager 7
  gid -b skin-manager 8
  gid -b skin-manager 9
  sockopen dl-skins blizzard.mircscripts.org 80
}
alias -l refresh_skin_list {
  gid -r skin-manager 2
  gid -a skin-manager 2 <default> 
  var %i = $findfile(%blizzard_gui_skin_dir,*.*,0,0,if ($right($1-,4) == .png) gid -a skin-manager 2 $remove($nopath($1-),.png))
  %i = 1
  while (%i <= $gid(skin-manager,2).lines) {
    if ($gid(skin-manager,2,%i) == %blizzard_gui_skin) { 
      gid -c skin-manager 2 %i
      if ($gid(skin-manager,2).sel == 1) gid -b skin-manager 11
      break
    }
    else if (%i == $gid(skin-manager,2).lines) {
      gid -c skin-manager 2 1    
      gid -b skin-manager 11
    }
    inc %i
  }
}
alias -l get_list {
  .sockclose skins
  gid -a skin-manager 10 status: connecting to blizzard.mircscripts.org...
  if ($hget(tmp_gui_skins)) hfree tmp_gui_skins
  hmake tmp_gui_skins
  hadd tmp_gui_skins display 0
  sockopen skins blizzard.mircscripts.org 80
}