glade = $glade; } /* Calculer le résultat de l'opération */ protected function calculate($operation) { $secondParam = (float) $this->glade->get_widget('entry1')->get_text(); $firstParam = (float) $this->firstParam; $result = 0; switch($this->operation) { case '*': $result = $firstParam * $secondParam; break; case '/': $result = ($secondParam > 0 ? $firstParam / $secondParam : 0); break; case '+': $result = $firstParam + $secondParam; break; case '-': $result = $firstParam - $secondParam; break; } $this->glade->get_widget('entry1')->set_text($result); $this->firstParam = $result; $this->operation = null; } /* Effectuer une opération */ public function performAction($obj) { if ($this->firstParam == null) { $this->firstParam = $this->glade->get_widget('entry1')->get_text(); $this->glade->get_widget('entry1')->set_text(''); } if ($this->operation == null) { $this->operation = str_replace( array('action_mul', 'action_add', 'action_min', 'action_div'), array('*', '+', '-', '/'), $obj->name ); $this->glade->get_widget('entry1')->set_text(''); } else { $this->calculate($obj->name); } } /* Ajout du caractère à la valeur courante de la zone d'entrée */ public function enterValue($obj) { /* Puisque nous avons les noms des boutons Input0 .. input1, vous devez couper le "input" et obtenir la valeur */ /* Je sais que c'est stupide, mais la tâche n'est pas d'écrire des articles pour l'algorithme de calcul) */ $this->glade->get_widget('entry1')->set_text( $this->glade->get_widget('entry1')->get_text(). str_replace('input', '', $obj->name) ); } /* Effacer le champ d'entrée, et la valeur de la première variable, et l'opération étant exécutée */ public function clearCalc($obj) { $this->firstParam = null; $this->operation = null; $this->glade->get_widget('entry1')->set_text(''); } /* quitter */ public function quit() { exit; } } /* Загрузить файл интефейса */ $glade = new GladeXML('calc.glade'); /* Указать, что все обработчики событий в классе Calc */ $glade->signal_autoconnect_instance(new Calc($glade)); /* При закрытии окна закрывать приложение */ $glade->get_widget('window1')->connect_simple('destroy', array('Gtk', 'main_quit')); /* Инициализация GTK приложения */ Gtk::main();