# [GTK] GtkTree - Wieder ein verständnisproblem.



## MC Breit (22. Juli 2004)

Hallo!

Meine dieswöchige aufgabe ist mit GTK unter PHP einen Tree zu erstellen, der so aussehen soll:


```
Main
|--Sub1
|   |--Subtree
|   |   \--Item
|   \--Item
|--Subtree2
|   \--Item
\--Item
```

Nunaja, ich habe mir daaraufhin das gtk 1.2 tutorial von gtk.org angeschaut, soweit das der GTK tree box erstellt wird, bekomme ich es noch hin, aber das mit den Items verstehe ich dann nicht, dort arbeiten sie dann mit GtkWidget *gtk_tree_item_new_with_label( gchar *label ); um ein Item zu erzeugen und das hinzuzufügen..

Jedoch gibt es keine Methode die da lautet GtkTreeItem->new_with_label(); :-(
Vielehrer sieht die klasse für TreeItems so aus: http://gtk.php.net/manual/de/gtk.gtktreeitem.php
Wofür das XXX stehen soll, weiß ich auch nciht, ich habe also mal dashier probiert:

```
<?php
$tree = &new->GtkTree();
$tree->set_usize(200, 330);
$label = &new GtkTreeItem('hallo');
$tree->append($label);
$mainwindo->show_all();
?>
```
jedoch bleibt das GtkTree leer, also weiß..

Könnte mir villeicht jemand erklähren, wie ich die Items richtig erstelle udn einfüge, so das diese auch einen titel ahben, anklickbar sind etc?
Bin mir sicher das einer von euch die antwort kennt, währe super ;-)


----------



## Dario Linsky (22. Juli 2004)

Ich kenn mich mit PHPGtk bzw. Gtk 1.2 zwar nicht aus und kann dir dafür auch leider keine Lösung bieten, aber möglicherweise hilft dir statt dem GtkTree ein GtkCTree-Widget weiter. 
Evtl. wäre es für dich auch zu überlegen, ob du nicht auf Gtk 2.x wechseln solltest.


----------



## MC Breit (22. Juli 2004)

Ich schau mir das GtkCTree Widget gleich mal an..
Und auf 2 kann cih leider nciht wechseln, da dies von der PHP runtime not supported wird, in nem halben jahr dann^^..

Danke erstmal, ich meld mich dann warscheinlich wieder ;-)


----------



## Dario Linsky (22. Juli 2004)

Muss es denn unbedingt PHP sein, oder tut's im Grunde auch eine andere Scriptsprache? PHP ist ja nun eigentlich nicht unbedingt für clientseitige GUI-Anwendungen gemacht.


----------



## MC Breit (23. Juli 2004)

Warum sollte PHP nicht  "dafür gemacht" (Du meinst eher geeignet, oder?) sein?
Und, jein..
Es währe natürlich auch möglich alles in C oder Python und co. zu machen, müsste ncihtmal eine Scriptsprache sein, aber es geht darum einersetis es zu lernen (Mit PHP und GTK Clientanwendungen zu schreiben), da die entwickler sich langsam vom reinen Serverside Image wegbewegen (wollen)..
Zum andren schreibe ich das alles ja für eine etwas größre Application, wo durch die verwendung von PHP Merhere vorteile bestehen, unter anderem dass dieses Tool für eine Schule ist, welche auch ITler hat, die meist zuerst PHP Lernen, so können diese das dann weiterentwickeln, ein anderer ist das PHP Platformunabhängig ist, ok währe Python oder Java auch ;-) Man braucht nur eine Sprach für den Serverseitigen sowie für den Clientseitigen Script teil, und die Meisten haben auf dem Server nunmal eher PHP als Python JSPR.
Ein weiterer vorteil der verwendung eine Interpretersprache wie PHP/Phyton besteht darin, dass man nicht extra eine andere Interpretersprache für Scripting Interfaces einauen muss..
Also, es wurde vorher schon abgewähgt welche sprach cih denn verwende, und da die App sowieso nciht besonderst rechenintensiv ist, abergesehen von der image Import funktion viel die wahl auf PHP ;-)

Achso, nochwas, also, du kannst es mir auch gerne in C, Cpp, Python oder Perl oder sonstwas erklären, das ist bei meinem Verständnis nciht das problem ;-)


----------



## Dario Linsky (23. Juli 2004)

> Warum sollte PHP nicht "dafür gemacht" (Du meinst eher geeignet, oder?) sein?


PHP war von Grund auf aber nunmal nicht für clientseitige GUI-Anwendungen gemacht, sondern primär für das Web angesetzt. Daran hat sich meiner Meinung nach auch in Version 5 nichts geändert.
Das ist mit der Hauptgrund dafür, dass die Implementierung der GTK-Bindings nur relativ halbherzig und sogar veraltet ist und die Dokumentation etliche Lücken aufweist.


> Man braucht nur eine Sprach für den Serverseitigen sowie für den Clientseitigen Script teil, und die Meisten haben auf dem Server nunmal eher PHP als Python JSPR.


Was bringt dir PHP auf einem Server, wenn es um GUI-Anwendungen geht? 
Abgesehen davon müssten auf solchen Rechnern ebenfalls noch die GTK-Bibliotheken als Erweiterungen zu PHP installiert werden, um die Scripte lauffähig zu bekommen und damit besteht so oder so ein gewisser Installationsaufwand, der bei einem anderen Binding weniger aufwändig oder problematisch sein würde. 



> Achso, nochwas, also, du kannst es mir auch gerne in C, Cpp, Python oder Perl oder sonstwas erklären, das ist bei meinem Verständnis nciht das problem


Anscheinend gibt es einige ziemlich gravierende Unterschiede zwischen dem "normalen" GTK und dessen Bindings und dem speziellen PHP-Binding. Möglicherweise liegt das auch an GTK 1.2 (mit dessen Altlasten sich PHP noch immer rumschlagen muss), da muss ich leider auch passen. Aber mit GTK 2.x scheint mir das Verhalten von TreeView-Widgets sehr viel logischer zu sein, da die Dateninhalte von den sichtbaren Komponenten nach einem MVC-Prinzip getrennt werden.


----------



## MC Breit (23. Juli 2004)

> PHP war von Grund auf aber nunmal nicht für clientseitige GUI-Anwendungen gemacht, sondern primär für das Web angesetzt. Daran hat sich meiner Meinung nach auch in Version 5 nichts geändert.
> Das ist mit der Hauptgrund dafür, dass die Implementierung der GTK-Bindings nur relativ halbherzig und sogar veraltet ist und die Dokumentation etliche Lücken aufweist.


Naja, also ich würd das Binding nciht als Halbherzig bzeichnen, es sind bislang noch keine Fehler (bis auf die normalen kleiner fehlerdamals bei den prev's) aufgetaucht, und andere PHP-GTK anwendungen zeigen ja auch, daseigendlcih alles geht, hab gestern eine gefunden die den CTree verwendet, werds mir da mal anschauen, und dass php5 ein stück weiter weg vom reinen "Hypertext PreProcessor bzw den PersonalHomepageTools" geht, erkennst du zb daran, 





> _Golem.de schrieb:_
> Zudem wird PHP 5 mit SQLite über eine eigene, kleine Datenbank verfügen, die vor allem für die Entwicklung von Kommandozeilen- und Desktop-Applikationen vorgesehen ist. Auch hat man die Behandlung von Streams deutlich verbessert und erlaubt neuerdings den Zugriff auf Socket Operations sowie auf untere Protokollschichten.
> [... ]
> In der Beta 2 hat man zudem den Speicher-Manager verbessert, eine neue COM-Erweiterung samt .Net-Unterstützung integriert und einige neue Funktionen hinzugefügt.





> Was bringt dir PHP auf einem Server, wenn es um GUI-Anwendungen geht?
> Abgesehen davon müssten auf solchen Rechnern ebenfalls noch die GTK-Bibliotheken als Erweiterungen zu PHP installiert werden, um die Scripte lauffähig zu bekommen und damit besteht so oder so ein gewisser Installationsaufwand, der bei einem anderen Binding weniger aufwändig oder problematisch sein würde.


Warum soll auf dem server die GTK Binding installiert sein?
Es handelt sich f.e. um eine Client<>Server app, dann brauch ich auf dem Server doch keine Fenster zu erstellen, sondern lediglich mit dem was mir der Client an daten sendet umzugehen!? Das verstehe ich nicht ganz, wozu du auf dem Server da GTK bräuchtest, da dieser, bzw das Script dort ja lediglich ein paar anfragen zu beantworten hat..


> Anscheinend gibt es einige ziemlich gravierende Unterschiede zwischen dem "normalen" GTK und dessen Bindings und dem speziellen PHP-Binding. Möglicherweise liegt das auch an GTK 1.2 (mit dessen Altlasten sich PHP noch immer rumschlagen muss), da muss ich leider auch passen. Aber mit GTK 2.x scheint mir das Verhalten von TreeView-Widgets sehr viel logischer zu sein, da die Dateninhalte von den sichtbaren Komponenten nach einem MVC-Prinzip getrennt werden.


Ja, cih denke auch das das hier die Typischen GTK 1.2 probs sind, in dem GTK 2 Tut ist es besser und einfach intuitiver, hast du recht, aber sobald die PHP 5 final ist wird es dann hoffentlich wie angekündigt das GTK 2 Binding geben.


----------



## Dario Linsky (27. Juli 2004)

> Naja, also ich würd das Binding nciht als Halbherzig bzeichnen, es sind bislang noch keine Fehler (bis auf die normalen kleiner fehlerdamals bei den prev's) aufgetaucht, und andere PHP-GTK anwendungen zeigen ja auch, daseigendlcih alles geht, hab gestern eine gefunden die den CTree verwendet, werds mir da mal anschauen, und dass php5 ein stück weiter weg vom reinen "Hypertext PreProcessor bzw den PersonalHomepageTools" geht, erkennst du zb daran,


Mag sein, dass es PHP-Anwendungen gibt, die mit Gtk+ auch für Desktops lauffähig sind, aber trotzdem ist PHP einfach nicht dafür gemacht. Ich meinte mit der halbherzigen Implementierung auch nicht, dass das Binding fehlerhaft ist, sondern nur, dass es einfach mal eben so implementiert wurde und halt irgendwie das macht, was es soll - aber mehr auch nicht. Und zudem ist es noch veraltet.



> Warum soll auf dem server die GTK Binding installiert sein?


Das wollte ich auch eigentlich wissen, du sagtest das ja schließlich:


> [...]die Meisten haben auf dem Server nunmal eher PHP als Python JSPR.


Evtl. versteh ich dich aber auch einfach nur falsch...



> Es handelt sich f.e. um eine Client<>Server app, dann brauch ich auf dem Server doch keine Fenster zu erstellen, sondern lediglich mit dem was mir der Client an daten sendet umzugehen!? Das verstehe ich nicht ganz, wozu du auf dem Server da GTK bräuchtest, da dieser, bzw das Script dort ja lediglich ein paar anfragen zu beantworten hat..


Richtig, also läuft die GUI-Anwendung auf einem Client, auf dem möglicherweise kein PHP installiert ist.
Nebenbei erwähnt: Wenn es darum geht, mit einer Anwendung auf dem Server Daten auszutauschen, könnten Webservices für dich noch ganz interessant sein. 



> Ja, cih denke auch das das hier die Typischen GTK 1.2 probs sind, in dem GTK 2 Tut ist es besser und einfach intuitiver, hast du recht, aber sobald die PHP 5 final ist wird es dann hoffentlich wie angekündigt das GTK 2 Binding geben.


Möglicherweise gibt es eine Gtk 2 Schnittstelle, auch wenn ich das für unwahrscheinlich halte. Dass PHP langsam von dem Image der serverseitigen Scriptsprache wegkommen will, kann ich verstehen, allerdings wird dieser Weg gerade für PHP noch ziemlich steinig werden.
PHP 5 ist übrigens schon als Final draußen.


----------



## MC Breit (28. Juli 2004)

> PHP 5 release sparks renewed interest in PHP-GTK
> [20-Jul-2004] Since the release of PHP 5.0.0 last week, the PHP-GTK mailing lists have seen a sharp spike in activity due mostly to interest in PHP-GTK 2.0, the release of which is still in the future. This activity has brought about a massive call for updates to the current PHP-GTK documentation and Web site, with the effort geared toward promoting the extension and making the site and documentation more thorough and user friendly.


Japs, also, weiß sogar nochmehr, sie arbeiten kräftig daran..
hoffe halt es dauert nichtmehr all zu lange, mal schauen..
Und das der weg steinig wird ist klar, aber ich werde eine von denen sein die ihn von anfang an gehen, ich finde es nämlich gut, und bin überzeugt das es sich lohnt..

Ich denke am ende ist das hier ansichtssache..
Und dass man GTK auch auf dem Server braucht kann ich in keinem meiner postings entdecken gesagt zu haben!? Naja..


----------

