Probleme mit gtk
-
Hiho jungs und mädels.
Ich versuche nun schon seit einiger Zeit ein kleines Prog für Linux zu schreiben, ich möchte einfach automatisch eine digi-cam mounten die Daten auf die Platte kopieren und wieder unmounten. Damit ich etwas Übung bekomme hab ich versucht es mit gtk zu machen mit eher wenig erfolg.
Ich hatte vor erst ein Normales Fenster zu öffnen, dann auf knopfdruck soll eine dateiauswahl erscheinen. Dort möchte ich nun einen ordner angeben in den dann die Bilder der cam kopiert werden.
Das Design lasse ich mir von Glade erstellen und editiere mit Anjuta...Glade macht mir erstmal folgendes als main.c:
#ifdef HAVE_CONFIG_H # include <config.h> #endif #include <gtk/gtk.h> #include "interface.h" #include "support.h" int main (int argc, char *argv[]) { GtkWidget *window1; gtk_set_locale (); gtk_init (&argc, &argv); add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps"); window1 = create_window1 (); gtk_widget_show (window1); gtk_main (); return 0; }
in der datei Interface.c steht nun irgendwo unter ....
GtkWidget* create_window1(void){
dieser Ausdruck:
g_signal_connect ((gpointer) button1, "released", G_CALLBACK (on_button1_released), NULL);
Dann habe ich in der Datei callbacks.c jenes stehn:
void on_button1_released (GtkButton *button, gpointer user_data) { GtkWidget* file1; file1 = gtk_file_selection_new ("File selection"); gtk_widget_show(file1); }
...
das funktioniert soweit auch, er öffnet die Dateiauswahl. Jedoch wenn ich in der callbacks.c nun den Knöpfen der Dateiauswahl irgendetwas zuweise, tut sich garnichts. Ich bin mir relativ sicher das ich prinzipiell etwas falsch mache, ich hab aber kein plan wie ich es sonst machen soll.Ich hoffe nun ich habe mein Problem einigermaßen verständlich rübergebracht, seit bitte nachsichtig mit mir, ich lerns bestimmt auch noch :).
Wenn mit jemand helfen könnte wäre ich sehr dankbar
mfg
Sui_the_Doc
-
Also ich programmiere zwar kein GTK+, sondern GTKMM (GTK+ für C++). Da geht das so, dass du eine Methode run für den Dialog aufrufst und diese Methode liefert dann einen Integer Wert zurück, der angibt, welcher Button gedrückt wurde.
-
Hmm, könntest du evtl ein kleines Beispiel dazu geben? denn ich hab das jetzt net so ganz gerallt.
bisweilen schonmal danke.
mfg Sui_the_Doc
-
Du müsstest doch in der Dateiauswahl wiederrum einen Button mit ner CB-Funktion belegt haben. In dieser CB kannst du doch mal zum Test folgendes einbauen:
void on_ok_button_filesel_clicked( GtkWidget* widget, gpointer user_data ) { const gchar* auswahl = gtk_file_selection_get_filename( GTK_FILE_SELECTION( widget ) ); g_print( "Auswahl: %s\n", auswahl ); g_free( auswahl ); }
Damit solltest du dann deine Auswahl aus dem Dialog ausgeben lassen können.
-
bessten Dank, habs hinbekommen.