Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php-gtk2]Problemy z zamykaniem okna
masel
post 3.10.2006, 07:29:27
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 24.05.2006

Ostrzeżenie: (0%)
-----


Mam taki drobny problem utworzyłem w glade-3 dwa pkna powiedzmy że mainwindow secondwindow pierwsze okno ma przycisk btnOpen po kliknięciu którego otwiera się drugie okno a drugie btnClose które powinno zamknąć drugie okno. Okna zdefiniowane są w dwóch plikach

mainwindow.glade
secondwindow.glade


napisałem dwie klasy

  1. <?php
  2. class mainwindow extends GladeXML{
  3.  
  4.  public function __construct($gladefile){
  5.  
  6. parent::__construct($gladefile);
  7. $this->btnOpen->connect_simple('clicked', array($this, 'onOpen'));
  8.  }
  9.  
  10.  public function __get($property){
  11.  
  12. parent::get_widget($property);
  13.  }
  14.  
  15.  public function onOpen(){
  16.  
  17. new secondwindow('secondwindow.glade');
  18.  }
  19.  
  20. }
  21. ?>


i druga klasa

  1. <?php
  2. class secondwindow extends GladeXML{
  3.  
  4.  public function __construct($gladefile){
  5.  
  6. parent::__construct($gladefile);
  7. $this->btnClose->connect_simple('clicked', array($this, 'onClose'));
  8.  }
  9.  
  10.  public function __get($property){
  11.  
  12. parent::get_widget($property);
  13.  }
  14.  
  15.  public function onClose(){
  16.  
  17. include_once('secondwindow.php');
  18. $this->window2->destroy();
  19.  }
  20.  
  21. }
  22. ?>


gdzie window2 to obiekt GtkWindow

wszystko startuje ze skruptu
  1. <?php
  2. $aplication = new mainwindow('mainwindow.glade');
  3. Gtk::Main();
  4. ?>


takie działanie powinno zamknąć drugie okno p kliknięciu na btnClose a zamyka oba i nie wiem w czym problem. Dodam że okna robiłem jako oddzielne projekty w glade


://////EDIT///////
Znalazłem rozwiązanie

w construktorze obu klas dodawałem polecenie:
  1. <?php
  2. $this-window1->connect_simple('destroy', array('Gtk', 'main_quit'));
  3. ?>

i druga klasa
  1. <?php
  2. $this->window2->connect_simple('destroy', array('Gtk', 'main_quit'));
  3. ?>


i to był błąd ponieważ polecenie to nie powinno znaleźć się w drugiej klasie ponieważ
gdy wywoływałem

  1. <?php
  2. $this->window2->destroy();
  3. ?>


reakcją na sygnał 'destroy' było zamknięcie wszystkich okien, takie działania powinno być możliwe tylko w przypadku pierwszego okna.

Ten post edytował masel 3.10.2006, 07:30:58
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.07.2025 - 12:54