<?php
/*
+----------------------------------------------------------------------+
| Gauge box (progress bar) |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2005 Zend Technologies Ltd. |
+----------------------------------------------------------------------+
| The contents of this source file is the sole property of |
| Zend Technologies Ltd. Unauthorized duplication or access is |
| prohibited. |
+----------------------------------------------------------------------+
| Authors: Michael Spector <michael@zend.com> |
| Anya Tarnyavsky <anya@zend.com> |
+----------------------------------------------------------------------+
| Tips: |
| 1) If you want to find some function - search it with uppercase |
| |
+----------------------------------------------------------------------+
*/
class Gaugebox
{
var $fp; /* file descriptor to dialog */
var $shtu4ka = array(
0 => '\\ ',
1 => '| ',
2 => '/ ',
3 => '--'
);
var $percent;
function Gaugebox($dialog, $max_x, $max_y, $msg, $percent=0, $title="")
{
error_reporting(0);
$this->dialog = $dialog;
$max_y = empty($max_y)? 24 : $max_y;
$max_x = empty($max_x)? 78 : $max_x;
$msg = strlen($msg) ? $msg : " ";
if(!empty($this->dialog)){
$dialog_cmd = sprintf ("%s --gauge %s %s %s 0",
$this->dialog,
escapeshellarg ($msg),
escapeshellarg ($max_y),
escapeshellarg ($max_x)
);
$this->fp = popen($dialog_cmd, "w");
}
if(empty($this->dialog)){
print("{$msg}\n\n");
}
}
// UPDATE
function update($msg, $percent)
{
if(!empty($this->dialog)){ /* GUI */
fwrite($this->fp, "XXX\n"); fflush($this->fp);
fwrite($this->fp, "{$percent}\n"); fflush($this->fp); /* update percent */
fwrite($this->fp, "{$msg}\n"); fflush($this->fp); /* update message */
fwrite($this->fp, "XXX\n"); fflush($this->fp);
}
else{ /* TEXT */
printf("%-50s %2s [%d%%] \r", $msg, $this->shtu4ka[$percent % 4], $percent);
}
}
// CLOSE
function close()
{
if(!empty($this->dialog)){
pclose($this->fp);
}
else{
print("\n");
}
}
}
?>
syntax highlighted by Code2HTML, v. 0.9.1