PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [GTK C] Adressleiste????



nul
01-07-2003, 16:32
Ich versuche gerade eine Adressleiste in ein Fenster einzubauen und den inhalt des gewählten verzeichnises soll im Fenster dann angezeigt werden - also wie bei einem Filemanager. Ich hab bis noch nur das Fenster dazu und komm schon nicht weiter.



#include <gtk/gtk.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[])
{
GtkWidget *fenster;
GtkWidget *gewaehlt;




gtk_init(&argc, &argv);

/* Das Hauptfenster erzeugen. */
fenster = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_set_usize(GTK_WIDGET(fenster), 400, 100);
gtk_window_set_title(GTK_WINDOW(fenster), __FILE__);

/* Alles sichtbar machen. */
gtk_widget_show_all(fenster);

gtk_main();

return 0;
}


könnt ihr mir da helfen oder wisst ihr einen Link, wo ich so etwas nachschauen kann?

mfg nul

Trillian
01-07-2003, 17:29
GtkTreeView etc

In libegg, libgnomeui o.ä. gibts sicherlich was fertiges.

nul
01-07-2003, 18:29
Bei der Adressleiste mach ich ganz gute Fortschritte:



#include <gtk/gtk.h>

int main(int argc, char **argv)
{
GtkWidget *fenster;
GtkWidget *box;
GtkWidget *entry;

/*Gtk initialisieren*/
gtk_init(&argc, &argv);
/*Ein neues Fenster erstellen*/
fenster = gtk_window_new(GTK_WINDOW_TOPLEVEL);




/* Feld für die Texteingabe */
entry = gtk_entry_new_with_max_length(50);
gtk_entry_set_text(GTK_ENTRY(entry),"file:/");
/*Neue Box erstellen*/
box = gtk_vbox_new(FALSE,0);
/*Fensterposition*/
gtk_window_set_position(GTK_WINDOW(fenster),GTK_WI N_POS_CENTER);
gtk_container_set_border_width(GTK_CONTAINER(fenst er),0);
gtk_box_pack_start(GTK_BOX(box), entry, FALSE, FALSE, 0);


gtk_container_add(GTK_CONTAINER(fenster),box);

/*Zeigs uns.....*/
gtk_widget_show_all(fenster);

gtk_main();

return 0;
}


Aber beim Versuch das über eine Funktion einzufügen geht's nicht weiter.

In main steht:



/* Adressleite erzeugen */
adressleiste = adressleiste_erzeugen(fenster);
gtk_box_pack_start(GTK_BOX(box), entry, FALSE, FALSE, 0);
gtk_widget_show(adressleiste);

und die Funktion adressleits_erzeugen schaut so aus:



/* Die Adressleiste */
GtkWidget *adressleiste_erzeugen(GtkWidget *fenster)
{
GtkWidget *adressleiste;

/* Feld für die Texteingabe */
entry = gtk_entry_new_with_max_length(50);
gtk_entry_set_text(GTK_ENTRY(entry),"file:/home/chrgos/");
/*Neue Box erstellen*/
box = gtk_vbox_new(FALSE,0);
/*Fensterposition*/
gtk_window_set_position(GTK_WINDOW(fenster),GTK_WI N_POS_CENTER);
gtk_container_set_border_width(GTK_CONTAINER(fenst er),0);
gtk_container_add(GTK_CONTAINER(fenster),box);

adressleiste = ???;

return adressleiste;
}


Was muss ich aber zuletzt noch adressleiste zuweisen? Da komm ich nicht weiter. Wenn ich die Zeile weglasse kann ich es zwar kompilieren und starten, die Leiste wird aber nicht angezeigt und auf der Konsole erscheinen Fehlermeldungen.

Trillian
01-07-2003, 19:10
adressleiste = box;

nul
01-07-2003, 20:13
Wenn ich
= box; schreibe
ist es fast das selbe. Ich kann es kompilieren und ausführen,
aber
1. die Leiste wird nicht angezeigt und
2. es erscheint folgende Fehlermeldung:
Gtk-CRITICAL **: file gtkbin.c : line217 (gtk_bin_add): assertion `bin->child == NULL` failed.

Wenn ich
gtk_container_add(GTK_CONTAINER(fenster),box);
herausnehme ist der Fehler beim Starten verschwunden, aber die Eingabeleiste wird nicht angezeigt.

Coup
06-03-2005, 23:13
ich hatte eben den selben fehler

gtk_widget_show(fenster); gegen gtk_widget_show_all(fenster); getauscht und schon liefs

(bis auf die kleinigkeit dass ich mit gtk_container_add(GTK_CONTAINER(fenster),button_X) ;
3 buttons in das selbe fenster und an die selbe stelle kleben wollte ... 2 davon wieder auskommentiert und alles ist ok)

ich versuch mich grade an dem gtk+-tut von pronix.de und dem anderen aus der linkliste dort
was benutzt ihr den so fuer die ersten gtkschritte?
coup