rendered paste body
alias HDDspace {
; Returns diskspacing information on all or specific disks
; Syntax: /HDDspace %disk
; where %disk is optional (default = all)
; Errorchecking:
if ($numtok(%HDDspaceColors,32) != 5) return $dialog(HDDspaceSettings,HDDspaceSettings)
if ($numtok(%HDDspaceColors,44) != 6) return $dialog(HDDspaceSettings,HDDspaceSettings)
if ($numtok(%HDDspaceDiskInterval,32) != 2) return $dialog(HDDspaceSettings,HDDspaceSettings)
; Change Settings?
if (($1 == settings) || ($1 == setup)) return $dialog(HDDspaceSettings,HDDspaceSettings)
; Settings
var %i = $asc($gettok(%HDDspaceDiskInterval,1,32))
var %j = $asc($gettok(%HDDspaceDiskInterval,2,32))
var %c1 = $+ $gettok(%HDDspaceColors,1,32)
var %c2 = $+ $gettok(%HDDspaceColors,2,32)
var %c3 = $+ $gettok(%HDDspaceColors,3,32)
var %cp1 = $gettok(%HDDspaceColors,4,32)
var %cp2 = $gettok(%HDDspaceColors,5,32)
; Messagemode
if (($active ischan) || ($query($active))) {
var %msgmode = msg $active
}
else {
var %msgmode = echo -s
}
; Variables
var %d
var %free
var %total
var %percent
; Disktype
if ($1 != $null) {
if (($asc($upper($1)) < $asc(A)) || ($asc($upper($1)) > $asc(Z))) {
echo * ERROR - HDDspace : % $+ disk needs to be drive letter (A-Z)
halt
}
elseif ($disk($1).type != fixed) {
echo * ERROR - HDDspace : $1 is not a fixed disk or does not exist
halt
}
else {
%i = $asc($1)
%j = $asc($1)
}
}
[ %msgmode ] %c1 HDD's $spacing(8) Free $spacing(6) Total $spacing(1) Usage $spacing(1) 1 $+ $chr(169) cP $+ $chr(124) $+ Leif
while (%i <= %j) {
%d = $upper($chr(%i))
if $disk(%d).type == fixed {
[ %msgmode ] %c2 %d $+ : $spacing(3) $pad($suffix($disk(%d).free),12) $pad($suffix($disk(%d).size),12) $spacing(1) $progressbar($calc(1 - ($disk(%d).free / $disk(%d).size)), [ %cp1 ] ) $+ %c2 $pad($roundfix($calc(100 - ($disk(%d).free / $disk(%d).size * 100)),2) $+ %,6)
%free = $calc(%free + $disk(%d).free)
%total = $calc(%total + $disk(%d).size)
}
inc %i
}
if ($1 == $null) {
%percent = $calc(1 - (%free / %total))
[ %msgmode ] %c3 Total: $pad($suffix(%free),12) $pad($suffix(%total),12) $spacing(1) $progressbar(%percent, [ %cp2 ] ) $+ %c3 $pad($roundfix($calc(%percent * 100),2) $+ %,6)
}
}
alias spacing {
; Returns a string of white spaces (ASCII char 160)
; Syntax: $spacing(%n)
;
return $str($chr(160),$$1)
}
alias progressbar {
; Returns a graphical progresbar with optional colors as a string
; Syntax : $progressbar(%value, %bgcolor, %color, %length)
; where %length is optional (default = 10)
;
var %length = $4
if (%length == $null) %length = 10
var %percent = $round($calc($$1 * %length),0)
var %partOne = $str($chr(4),%percent)
if (%percent < %length) var %partTwo = $+ $$3 $+ $str($chr(4),$calc(%length - %percent))
return $+ $$2 $+ %partOne $+ %partTwo
}
alias suffix {
; Formats bytes with apropriate suffix
; Syntax: $suffix(%bytes)
;
var %value
var %type
if ($1 >= $calc(2^40)) {
%value = $calc($1 / 2^40)
%type = TB
}
elseif ($1 >= $calc(2^30)) {
%value = $calc($1 / 2^30)
%type = GB
}
elseif ($1 >= $calc(2^20)) {
%value = $calc($1 / 2^20)
%type = MB
}
elseif ($1 >= $calc(2^10)) {
%value = $calc($1 / 2^10)
%type = kB
}
else {
%value = $1
%type = byte(s)
}
return $roundfix(%value,2) %type
}
alias roundfix {
; Returns number with fixed number deciamals
; Syntax: $roundfix(%number, %decimals)
; where %decimals > 0
;
var %value = $round($$1,$$2)
if ($pos(%value,.,0) == 0) {
%value = %value $+ . $+ $str(0,$$2)
}
else {
%value = $left(%value $+ $str(0,$$2),$calc($pos(%value,.,1) + $$2))
if (. isin $right(%value,2)) {
%value = %value $+ 0
}
}
return %value
}
alias pad {
; Pads the string with white spaces (see $spacing function) on optional sides
; Syntax: $pad(%string, %mode)
; where %mode is optional (default = left)
;
var %len = $len($strip($1))
if (($3 == left) || ($3 == $null)) return $spacing($calc($$2 - %len)) $+ $1
if ($3 == right) return $1 $+ $spacing($calc($$2 - %len))
if ($3 == both) return $spacing($int($calc($$2 / 2 - %len / 2))) $+ $1 $+ $spacing($calc($2 - $int($calc($2 / 2 + %len / 2))))
}
menu status,channel,query {
-
HDD's
.All:/HDDspace
.-
.DiskC:/HDDspace C
.DiskE:/HDDspace E
.DiskF:/HDDspace F
.DiskG:/HDDspace G
.DiskH:/HDDspace H
.-
.other...:/HDDspace $$?=disk? (A-Z)
-
}
menu menubar {
-
HDDspace Settings...:/dialog -m HDDspaceSettings HDDspaceSettings
-
}
dialog HDDspaceSettings {
title "HDDspace Settings"
icon $mircexe, 18
size -1 -1 150 150
option dbu
box "Colors", 101, 5 3 140 73
text "Foreground", 11, 46 10 45 10
text "Background", 12, 96 10 45 10
text "Header", 13, 10 22 45 10
combo 1, 45 20 45 10, drop
combo 2, 95 20 45 10, drop
text "Body", 14, 10 32 45 10
combo 3, 45 30 45 10, drop
combo 4, 95 30 45 10, drop
text "Totals", 15, 10 42 45 10
combo 5, 45 40 45 10, drop
combo 6, 95 40 45 10, drop
text "Progressbars", 16, 10 52 45 10
combo 7, 45 50 45 10, drop
combo 8, 95 50 45 10, drop
text "Tot.Progress", 17, 10 62 45 10
combo 9, 45 60 45 10, drop
combo 10, 95 60 45 10, drop
box "Advanced", 123, 5 80 140 43
text "Diskinterval (default = C-Z):", 31, 10 90 150 10
text "The script searches for fixed disks", 32, 15 100 150 10
text "from", 33, 15 110 20 10
edit "C", 21, 30 108 10 10, center, limit 1
text "to", 34, 45 110 20 10
edit "Z", 22, 55 108 10 10, center, limit 1
button "OK", 41, 35 130 36 12, default, ok
button "Cancel", 42, 80 130 36 12, cancel
}
on 1:dialog:HDDspaceSettings:init:*: {
var %colors = 0 White 1 Black 2 DarkBlue 3 Green 4 Red 5 Brown
%colors = %colors 6 Purple 7 Orange 8 Yellow 9 LightGreen 10 DarkCyan 11 Cyan
%colors = %colors 12 Blue 13 Pink 14 DarkGrey 15 Grey
didtok $dname 1,2,3,4,5,6,7,8,9,10 32 %colors
var %i = 1
var %ii = 1
while (%ii < 11) {
did -c $dname %ii $calc($gettok($gettok(%HDDspaceColors,%i,32),1,44) + 1)
did -c $dname $calc(%ii + 1) $calc($gettok($gettok(%HDDspaceColors,%i,32),2,44) + 1)
inc %i
inc %ii 2
}
did -o $dname 21 1 $gettok(%HDDspaceDiskInterval,1,32)
did -o $dname 22 1 $gettok(%HDDspaceDiskInterval,2,32)
if (($did($dname,21) < A) || ($did($dname,21) > Z)) did -o $dname 21 1 C
if (($did($dname,22) < A) || ($did($dname,22) > Z)) did -o $dname 22 1 Z
}
on 1:dialog:HDDspaceSettings:edit:21,22: {
; Validate editboxes
if ($len($did($dname,$did)) > 0) {
did -o $dname $did 1 $upper($did($dname,$did))
if (($did($dname,$did) < A) || ($did($dname,$did) > Z)) did -r $dname $did
}
}
on 1:dialog:HDDspaceSettings:sclick:41: {
; on Dialog OK
set %HDDspaceColors
set %HDDspaceDiskInterval
var %i = 1
while (%i < 11) {
%HDDspaceColors = %HDDspaceColors $round($did($dname,%i,0)) $+ ,
%HDDspaceColors = %HDDspaceColors $+ $round($did($dname,$calc(%i + 1),0))
inc %i 2
}
%HDDspaceDiskInterval = $did($dname,21) $did($dname,22)
}
on 1:load: {
set %HDDspaceColors 0,15 0,14 0,10 9,15 9,15
set %HDDspaceDiskInterval C Z
echo 4 -a HDDspace addon loaded!
echo 4 -a Entering setup...
return $dialog(HDDspaceSettings,HDDspaceSettings)
}
on 1:unload: {
unset %HDDspaceColors
unset %HDDspaceDiskInterval
echo 4 -a HDDspace addon unloaded!
}