Project

General

Profile

Lagbar window

Added by C. Syem over 2 years ago

I have this script:

/* 
Lag meter by ambiguous 
ambiguous @ #mSL 
ambiguousdrum@gmail.com 
****** 
About 
****** 
Script uses /toolbar and a picwin to generate a lag meter right there in your toolbar; activated on connect. 

To disable the lag check: /lag.off 
To start a lag check: /lag.start 
To open the lagbar options: /lag.opt 

To say your lag: /lag 

* Fixed a /toolbar error when mIRC is initiated 
* Added an options dialog
* Now customizable colors!
* Choice between ms and s 
* Text alignment 
* Now opens the options dialog on click
* Menu popups 
*/ 

alias -l rlagb { 
  return $gettok($readini(lagbar.ini,Bardisplay,bardisp),$1,42)
}

alias -l rlagt { 
  return $readini(lagbar.ini,lagtextdisplay,lagtext) 
}
alias -l hl { 
  return $hget(lag,$1) 
}

alias lag.opt dialog $iif($dialog(lag^),-v,-m) lag^ lag^ 
alias lag.start { 
  if (!$istok(disconnected connecting,$status,32)) { 
    .timerlag.check. $+ $cid 0 10 /lagcheck 
    lagcheck 
  } 
} 
alias lag.off { 
  if (!$istok(connecting disconnected,$status,32)) && ($hl($+(lag.,$cid))) { 
    .timerlag.check. $+ $cid off 
    hdel lag $+(lag.,$cid)
    toolbar -d lag
  } 
} 
alias lag { 
  if ($hl($+(lag.,$cid))) say My lag on $network is currently $v1 $+ !
  else echo -atceg info * /lag: check is not currently in effect. Type /lag.start to begin 
} 
alias -l lagcheck { 
  if (!$isfile($qt(lagbar.ini))) || ($numtok($rlagb(1-),42) != 3) || ($rlagt !isnum 10-11) { 
    writeini lagbar.ini Bardisplay bardisp 65280*0*1
    writeini lagbar.ini lagtextdisplay lagtext 10
  }
  hadd -m lag $cid $+ ticks $ticks 
  .raw ping $ticks 
} 
alias -l upd.win.lag { 
  if ($window(@lag)) window -c @lag 
  window -fhip +d @lag -1 -1 100 20 
  drawfill -r @lag $rgb(face) $rgb(face) 0 0 
} 

on ^*:PONG:{ 
  haltdef 
  var %l $calc($ticks - $hl($+($cid,ticks))) 
  hdel lag $+($cid,ticks)
  if ($activecid == $cid) { 
    upd.win.lag 
    drawrect -fr @lag $rlagb(1) 1 0 0 $round($calc(%l /10),0) 20
    hadd -m lag $+(lag.,$cid) $iif($rlagt == 10,$calc(%l / 1000) s, %l ms)
    drawtext -or @lag $rlagb(2) Tahoma 10 $replace($rlagb(3),2,15) 1 Lag: $hl($+(lag.,$cid))
    if (!$toolbar(lag)) toolbar -a lag $qt(Lag) @lag 0 0 100 16  "/lag.opt" @lag
    else toolbar -p lag @lag 0 0 100 16 
  } 
} 

menu @lag { 
  Options:lag.opt
  Update lag:lagcheck
  -
  Stop:lag.off 
}

on *:active:*:{ 
  if ($hl(lastcid) != $cid) { 
    if (!$istok(connecting disconnected,$status,32)) && ($hl($+(lag.,$cid))) { lagcheck }
    else { 
      if ($istok(connecting disconnected,$status,32)) {
        upd.win.lag 
        if (!$toolbar(lag)) toolbar -a lag $qt(Lag) @lag 0 0 100 16 "/lag.opt" @lag
        drawtext -or @lag $rlagb(2) Tahoma 10 1$replace($rlagb(3),2,15) Lag: not connected 
        toolbar -p lag @lag 0 0 100 16 
      }
      else if ($toolbar(lag)) toolbar -d lag
    } 
  } 
  hadd -m lag lastcid $cid
} 

on *:connect:lag.start 
on *:disconnect:{ 
  lag.off 
  window -c @lag 
} 
on *:exit:{ 
  window -c @lag 
  .timerlag.check.* off 
} 
on *:unload:{ 
  window -c @lag 
  .timerlag.check.* off 
}

dialog lag^  {
  title "Lagbar options [/lag.opt]" 
  size -1 -1 113 60
  option dbu
  box "Colors", 1, 3 1 109 26
  text "Lag bar:", 2, 6 8 76 8
  text "Text:", 3, 6 16 76 8
  button "!", 4, 89 8 14 8
  button "!", 5, 89 17 14 8
  box "Text display", 6, 2 26 109 33
  text "Align:", 7, 7 35 25 8
  combo 8, 33 34 29 50, size drop
  text "Display as:", 9, 6 46 30 8
  check "Seconds", 10, 40 45 31 10
  check "Milliseconds", 11, 72 45 38 10
}

on *:dialog:lag^:init:0:{   
  didtok $dname 8 32 Left Center
  if ($isfile($qt(lagbar.ini))) { 
    did -a $dname 2 Lag bar: $rlagb(1) 
    did -a $dname 3 Text: $rlagb(2)
    did -c $dname 8 $rlagb(3)
    did -c $dname $rlagt 
  }
}

on *:dialog:lag^:sclick:*:{ 

  ;// Lagbar color & Text alignment 
  if ($did isin 238) writeini lagbar.ini Bardisplay bardisp $+($remove($did($dname,2).text,Lag bar:),*,$remove($did($dname,3).text,Text:),*,$did($dname,8).sel)

  ;// Time display
  if ($did isnum 10-11) { 
    did -c $dname $did
    did -u $dname $replacex($did,10,11,11,10) 
    writeini lagbar.ini lagtextdisplay lagtext $did
  }
  if ($did isnum 4-5) { 
    set %lagcoledit $calc($did -3) 
    if ($dialog(lag~)) dialog -x lagcol
    dialog -m lagcol lagcol
  }
} 

on *:dialog:lag^:close:0:lagcheck

alias -l updRGB { 
  window -ph @lag~col
  drawfill -r @lag~col $rgb($1,$2,$3) 1 1 1
  drawsave @lag~col lagcol.bmp
  window -c @lag~col
  did -g lagcol 7 lagcol.bmp
  .remove lagcol.bmp
}

dialog lagcol {
  title "Colors editor " 
  size -1 -1 105 52
  option dbu
  text "Red", 1, 4 7 25 8
  text "Green", 2, 4 15 25 8
  text "Blue", 3, 4 23 25 8
  scroll "", 4, 30 7 71 8, range 0 255 horizontal bottom
  scroll "", 5, 30 15 71 8, range 0 255 horizontal bottom
  scroll "", 6, 30 23 71 8, range 0 255 horizontal bottom
  icon 7, 2 32 24 13
  button "Set", 8, 64 34 37 12
}

on *:dialog:lagcol:init:0:{ 
  tokenize 44 $rgb($rlagb(%lagcoledit)) 
  did -c $dname 4 $1
  did -c $dname 5 $2
  did -c $dname 6 $3
  updRGB $1-3
}

on *:dialog:lagcol:scroll:*:updRGB $did($dname,4).sel $did($dname,5).sel $did($dname,6).sel 
on *:dialog:lagcol:sclick:8: { 
  writeini lagbar.ini Bardisplay bardisp $puttok($rlagb(1-),$rgb($did($dname,4).sel,$did($dname,5).sel,$did($dname,6).sel),%lagcoledit,42)
  if ($dialog(lag^)) { 
    did -ra lag^ 2 Lag bar: $rlagb(1) 
    did -ra lag^ 3 Text: $rlagb(2)
  }
  dialog -x $dname
}
on *:dialog:lagcol:close:0:unset %lagcoledit

The script is working without DLL and will show a lagbar in toolbar. The problem is will apear another window lagbar in the middle of screen and will Restore all other windows. If you look in the script the lagbar windows is suppose to pe invisible (-h):

alias -l upd.win.lag { 
  if ($window(@lag)) window -c @lag 
  window -fhip +d @lag -1 -1 100 20 
  drawfill -r @lag $rgb(face) $rgb(face) 0 0 
}

So why is show the window?


Replies (1)

RE: Lagbar window - Added by Per Amundsen over 2 years ago

The .NET mdi control does not like hidden windows, when drawfill is drawing to the window, the window handle is created and then window is forced visible, I don't have a workaround yet.

    (1-1/1)