1 <?php 2 class principal 3 { 4 //cria variáveis privadas 5 private $janela, $progresso, $valor, $maximo; 6 function __construct() 7 { 8 //cria o objeto janela 9 $this->janela = new GtkWindow; 10 //adiciona um título a janela 11 $this->janela->set_title('Exemplo'); 12 //redimensiona a janela 13 $this->janela->set_default_size(100,100); 14 $this->janela->set_border_width(20); 15 //centraliza a janela 16 $this->janela->set_position(Gtk::WIN_POS_CENTER); 17 //cria a barra de progresso 18 $this->progresso = new GtkProgressBar(); 19 $this->progresso->set_fraction(0); 20 //define o texto da barra 21 $this->progresso->set_text('Aguarde...'); 22 //ao fechar a janela chama a função fechar_janela 23 $this->janela->connect_simple('destroy',array($this,'fechar_janela')); 24 25 //adiciona a janela o widget GtkProgressBar 26 $this->janela->add($this->progresso); 27 //exibe os componetes existentes na janela 28 $this->janela->show_all(); 29 } 30 31 //método verificaOpcao 32 function processaAlgo() 33 { 34 //define o valor máximo para o laço for 35 $this->maximo = 800000; 36 37 //programa execução para daqui 1 décimo de segundo 38 Gtk::timeout_add(10, array($this, 'atualizaProgressBar')); 39 40 //percorre o laço 41 for($this->valor=0; $this->valor<=$this->maximo; $this->valor ++) 42 { 43 //enquando existem eventos pendentes 44 while(gtk::events_pending()) 45 //executa a interação principal 46 gtk::main_iteration(); 47 } 48 //cria a janela de diálogo 49 $dialog = new GtkMessageDialog(null, Gtk::DIALOG_MODAL, Gtk::MESSAGE_INFO, 50 Gtk::BUTTONS_OK, "Fim do processamento"); 51 //exibe diálogo 52 $dialog->run(); 53 $dialog->destroy(); 54 } 55 56 function atualizaProgressBar() 57 { 58 //obtém um índice variando de 0 a 1 apartir do for 59 $indice = round($this->valor/$this->maximo, 2); 60 61 //converte o índice para um percentual 62 $percentual = (int) ($indice * 100); 63 //valor de parada 64 if($percentual<=100) 65 { 66 //atribui indice e label à barra de progresso 67 $this->progresso->set_fraction($indice); 68 $this->progresso->set_text($percentual. '%'); 69 if($percentual !==100) 70 Gtk::timeout_add(100, array($this, 'atualizaProgressBar')); 71 } 72 } 73 74 //método responsável pela finalização do programa 75 function fechar_janela() 76 { 77 //finaliza o programa 78 Gtk::main_quit(); 79 } 80 } 81 //instancia o exemplo 82 $objeto = new principal; 83 $objeto->processaAlgo(); 84 Gtk::main(); 85 ?> |
|---|
|
|