Converter Dialog (TempLengthVolAreaWeight)

By vaseline28 on Jun 11, 2008

Image
This script does two things:
Displays the conversion rate
Image
Custom Convert (Convert from different types of Length/Temperature/Volume/Area/Weight) and a custom amount.
Image
Triggered with:
/convertdialog
Right click in a channel window or status window and select Converter

alias convertdialog $iif(!$dialog(Converter), dialog -mied Converter Converter, halt)
menu status,channel {
  [Converter]: $iif(!$dialog(Converter), dialog -mied Converter Converter, halt)
}

dialog converter {
  title "Converter"
  size -1 -1 300 100
  text "Converter ~Vaseline28", 1, 90 10 200 20
  text "", 2, 10 390 300 20
  tab "Options", 3, 10 30 282 60
  button "Length", 4, 15 58 50 20
  button "Weight", 5, 70 58 50 20
  button "Volume", 6, 125 58 50 20
  button "Area", 7, 180 58 50 20
  button "Temp", 8, 235 58 50 20
  box "From", 9, 110 100 80 100
  box "To", 10, 195 100 80 100
  combo 11, 120 115 58 80
  combo 12, 205 115 58 80
  edit "Amount", 13, 15 210 120 20, autohs, autovs
  button "Convert!", 14, 210 210 60 20
  button "", 17, 20 115 30 20
  button "", 18, 20 135 30 20
  button "", 19, 20 155 30 20
  button "", 20, 20 175 30 20
  button "", 21, 55 115 30 20
  button "", 22, 55 135 30 20
  button "", 23, 55 155 30 20
  button "", 24, 55 175 30 20
  box "Conversion Rates", 25, 110 100 160 100
  button "", 27, 125 115 30 20
  button "", 28, 155 115 30 20
  button "", 29, 185 115 30 20
  button "", 30, 215 115 30 20
  button "", 31, 140 135 30 20
  button "", 32, 170 135 30 20
  button "", 33, 200 135 30 20
  edit "", 34, 125 165 120 20, autohs, autovs
  box "Results", 35, 20 240 250 60
  text "From:", 36, 25 255 50 20
  text "To:", 37, 25 280 50 20
  box "Result:", 38, 130 255 100 35
  edit "**", 39, 135 270 80 15, autohs, autovs
  text "**", 40, 60 255 30 20
  text "**", 41, 60 280 30 20
}
on *:Dialog:Converter:sclick:14: {
  if (($did($dname,13).edited == $true) && ($did($dname,13).text isnum) && ($did($dname,12).seltext) && ($did($dname,11).seltext)) {
    dialog -s $dname -1 -1 300 315
    did -v $dname 35-41 | /did -o $dname 40 1 $did($dname,11).seltext | /did -o $dname 41 1 $did($dname,12).seltext
    $iif(%MeasureType == length, did -o $dname 39 1 $convert($did($dname,11).seltext,$did($dname,12).seltext,$did($dname,13).text).length ,)
    $iif(%MeasureType == temp, did -o $dname 39 1 $convert($did($dname,11).seltext,$did($dname,12).seltext,$did($dname,13).text).temp ,)
    $iif(%MeasureType == weight, did -o $dname 39 1 $convert($did($dname,11).seltext,$did($dname,12).seltext,$did($dname,13).text).weight ,)
    $iif(%MeasureType == volume, did -o $dname 39 1 $convert($did($dname,11).seltext,$did($dname,12).seltext,$did($dname,13).text).vol ,)
    $iif(%MeasureType == area, did -o $dname 39 1 $convert($did($dname,11).seltext,$did($dname,12).seltext,$did($dname,13).text).area ,)
  }
}
on *:Dialog:Converter:sclick:4-8: {
  if ($regex($did,/[4-8]/) == 1) {
    did -h $dname 25,27-41
    did -v $dname 9-14,17-24
    dialog -s $dname -1 -1 300 250
    did -e $dname 4-8,27-33
    did -b $dname $did
    set %MeasureType $did($dname,$did).text
    $iif($did == 4, set %Measures km m cm mile yard ft in,)
    $iif($did == 5, set %Measures ton kg g pnd oz,)
    $iif($did == 6, set %Measures L m3 cm3 gal yd3,)
    $iif($did == 7, set %Measures A m2 cm2 acre yd2 ft2,)
    $iif($did == 8, set %Measures C F Kel,)
    dialog -s $dname -1 -1 300 250
    var %x 0
    while (%x < $numtok(%Measures,32)) {
      inc %x
      did -o $dname 11,12 %x $gettok(%Measures,%x,32)
    }
    var %y 0
    did -ab $dname 17-24
    while (%y < %x) {
      inc %y
      var %p $calc(16 + %y)
      did -ae $dname %p $gettok(%Measures,%y,32)
    }
    unset %Measures %Convert
  }
  if ($did == 15) {
    dialog -s $dname -1 -1 300 100
  }
}
on *:dialog:Converter:sclick:17-24: {
  dialog -s $dname -1 -1 300 250
  did -b $dname 34 | did -v $dname 25,27-34 | did -h $dname 9-14,35-41 | did -a $dname 25 1 $did($dname,$did).text = | did -r $dname 34
  set %MeasureFrom $did($dname,$did).text
  $iif($did($dname,4).enabled == $false, set %Measures km m cm mile yard ft in,)
  $iif($did($dname,5).enabled == $false, set %Measures ton kg g pnd oz,)
  $iif($did($dname,6).enabled == $false, set %Measures L m3 cm3 gal yd3,)
  $iif($did($dname,7).enabled == $false, set %Measures A m2 cm2 acre yd2 ft2,)
  $iif($did($dname,8).enabled == $false, set %Measures C F Kel,)
  var %t $findtok(%Measures,$did($dname,$did).text,32)
  set %Measures $deltok(%Measures,%t,32)
  var %x 0
  while (%x < $numtok(%Measures,32)) {
    inc %x
    var %p $calc(%x + 26)
    did -av $dname %p $gettok(%Measures,%x,32)
  }
  if (%x < 7) {
    while (%x < 7) {
      inc %x
      var %t $calc(%x + 26)
      did -rb $dname %t
    }
  }
}
on *:dialog:Converter:sclick:27-33: {
  var %MeasureTo $did($dname,$did).text
  $iif(%MeasureType == length, did -oe $dname 34 1 $convert(%MeasureFrom,%MeasureTo,1).length ,)
  $iif(%MeasureType == temp, did -oe $dname 34 1 $convert(%MeasureFrom,%MeasureTo,1).temp ,)
  $iif(%MeasureType == weight, did -oe $dname 34 1 $convert(%MeasureFrom,%MeasureTo,1).weight ,)
  $iif(%MeasureType == volume, did -oe $dname 34 1 $convert(%MeasureFrom,%MeasureTo,1).vol ,)
  $iif(%MeasureType == area, did -oe $dname 34 1 $convert(%MeasureFrom,%MeasureTo,1).area ,)
}
alias convert {
  if ($isid) {
    if ((!$3) || ($3 !isnum)) { return ( Invalid Parameter $ $+ convert().temp/length ) | halt }
    if ($prop == Temp) {
      if ($1 == Kel) {
        $iif($2 == C,set %Conversions $calc(-273 + $3),)
        $iif($2 == F,set %Conversions $calc(-459.4 + $calc(3.6 * $3)),)
      }
      elseif ($1 == C) {
        $iif($2 == Kel,set %Conversions $calc(273  + $3),)
        $iif($2 == F,set %Conversions $calc(($3 * 9/5) + 32),)
      }
      elseif ($1 == F) {
        $iif($2 == C,set %Conversions $calc(($3 - 32) * 5/9),)
        $iif($2 == Kel,set %Conversions $calc(($3 - 32) * 5/9 + 273.15),)
      }
    }
    if ($prop == Length) {
      if ($1 == km) var %x $3
      if ($1 == m) var %x $calc($3 * 0.0001) 
      if ($1 == cm) var %x $calc($3 * 0.000001)
      if ($1 == yard) var %x $calc($3 * 0.0009144)
      if ($1 == ft) var %x $calc($3 * 0.0003048)
      if ($1 == in) var %x $calc(0.0000254 * $3)
      if ($1 == mile) var %x $calc($3 * 1.609344)
      if ($2 == yard) var %y 1093.6133
      if ($2 == ft) var %y 3280.8399
      if ($2 == in) var %y 39370.0787
      if ($2 == mile) var %y 0.621371192
      if ($2 == m) var %y 1000
      if ($2 == cm) var %y 100000
      if ($2 == km) set %Conversions %x
      else set %Conversions $calc(%x * %y)
    }
    if ($prop == Vol) {
      if ($1 == km) var %x $3
      if ($1 == m3) var %x $calc($3 * 1000)
      if ($1 == cm3) var %x $calc($3 * 0.001)
      if ($1 == gal) var %x $calc($3 * 3.785412)
      if ($1 == yd3) var %x $calc($3 * 764.5549)
      if ($2 == m3) var %y 0.001
      if ($2 == cm3) var %y 1000
      if ($2 == gal) var %y 0.2641721
      if ($2 == yd3) var %y 0.001307951
      if ($2 == l) set %Conversions %x
      else set %Conversions $calc(%x * %y)
    }
    if ($prop == Weight) {
      if ($1 == ton) var %x $calc($3 / 1000)
      if ($1 == kg) var %x $3
      if ($1 == g) var %x $calc($3 * 0.001)
      if ($1 == lb) var %x $calc($3 * 0.4536)
      if ($1 == oz) var %x $calc($3 * 0.02835)
      if ($2 == ton) var %y 0.001
      if ($2 == g) var %y 1000 
      if ($2 == lb) var %y 2.205
      if ($2 == oz) var %y 35.27
      if ($2 == kg) set %Conversions %x
      else set %Conversions $calc(%x * %y)
    }
    if ($prop == Area) {
      if ($1 == A) var %x $calc($3 * 100)
      if ($1 == m2) var %x $3
      if ($1 == cm2) var %x $calc($3 * 0.0001)
      if ($1 == acre) var %x $calc($3 * 4046.85642)
      if ($1 == yd2) var %x $calc($3 * 0.83612)
      if ($1 == ft2) var %c $calc($3 * 0.0929030)
      if ($2 == A) var %y 0.01
      if ($2 == cm2) var %y 10000
      if ($2 == acre) var %y 0.0002471
      if ($2 == yd2) var %y 1.1959900
      if ($2 == ft2) var %y 10.7639104
      if ($2 == m2) set %Conversions %x
      else set %Conversions $calc(%x * %y)
    }
    var %x %Conversions
    unset %Conversions
    return %x
  }
}

Comments

Sign in to comment.
RagBot   -  Jun 27, 2008

This dialog is great becuase i\'m the only Canadian on an IRC channel and the others use different measurements. This will help me alot with converting. 10/10

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.