PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP + GTK2 + Glade


The_Invisible
2006-04-30, 10:49:40
Hallo,

versuche mich gerade an PHP + GTK2 + Glade und es gefällt mir sehr gut, allerdings habe ich bis jetzt recht wenig mit "fenster"-programmierung gemacht und stehe vor einem Problem. Ich kann zwar ganz leicht ein neues Fenster aus dem .glade File laden, weiß aber nicht wie ich auf dessen Methoden bzw Eigenschaften zugreifen kann um zB das erschaffene Fenster zu schließen. Anhand ein kleines Beispiel von einem "GtkFileChooserDialog" Widget.

Ausschnitt vom .glade File was ich lade

...
<widget class="GtkFileChooserDialog" id="wndFileopen">
<property name="visible">True</property>
<property name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property>
<property name="local_only">True</property>
<property name="select_multiple">False</property>
<property name="show_hidden">False</property>
<property name="do_overwrite_confirmation">False</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">True</property>
<property name="decorated">True</property>
<property name="skip_taskbar_hint">False</property>
<property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<property name="focus_on_map">True</property>
<property name="urgency_hint">False</property>
<signal name="selection_changed" handler="on_wndFileopen_file_changed" last_modification_time="Sat, 29 Apr 2006 20:26:44 GMT"/>
<signal name="destroy" handler="on_wndFileopen_destroy" last_modification_time="Sat, 29 Apr 2006 21:01:03 GMT"/>

<child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox1">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">24</property>

<child internal-child="action_area">
<widget class="GtkHButtonBox" id="dialog-action_area1">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>

<child>
<widget class="GtkButton" id="btn_cancel">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">-6</property>
</widget>
</child>

<child>
<widget class="GtkButton" id="btn_open">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="has_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-open</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">-5</property>
<signal name="clicked" handler="on_btn_open_clicked" last_modification_time="Sat, 29 Apr 2006 18:57:03 GMT"/>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
</widget>
</child>
</widget>
...


Hier lade ich das Widget und weise den Handlern Methoden zu

class HANDLE_FILEOPEN extends Functions
{

var $currentFile;
var $obj_main;

function __construct($obj)
{
$this->obj_main = $obj;
}

function on_btn_open_clicked()
{
$textBuffer = new GtkTextBuffer();
$textBuffer->set_text(file_get_contents($this->currentFile));
$textview1 = $this->obj_main->get_widget('textview1');
$textview1->set_buffer($textBuffer);
}

function on_wndFileopen_file_changed($ojbFileDialogOpen)
{
$this->currentFile = $ojbFileDialogOpen->get_filename();
}

}

$glade_file_open = new GladeXML(PROGRAM_ROOT . '/glade/main.glade', 'wndFileopen');

$Handle_FileOpen = new HANDLE_FILEOPEN($this->obj_main);

$glade_file_open->signal_autoconnect_instance($Handle_FileOpen);


so, das ganze läuft auch recht gut, ich kann verschiedene Textfiles laden weiß aber nicht wie ich zB den "GtkFileChooserDialog" wieder schließen bzw beenden oder zumindest verstecken. Habe schon verschiedenes durchprobiert:


$glade_file_open->destroy();

Funzt net, es kommt ne Meldung das es die Methode nicht gibt


$test = $glade_file_open->get_widget('wndFileopen');
$test->destroy();

Funzt auch net, kommt zwar keine Meldung das es die Methode nicht gibt aber es passiert nix

leider gibt es dafür auch so gut wie keine Beispiele bzw Tutorials, wenn da wer was finden würde wäre ich sehr verbunden damit, ich bedanke mich schon mal.

mfg

MadMan2k
2006-04-30, 11:58:47
on_wndFileopen_destroy: visible => false