GtkNotebook
-
Hallo
ich habe ein GTKNOTEBOOK erstellt.
mit
if(i==0)
schreib ich in das erste tabmit if==1
ins 2teund mit if==2
ins letze....in diesem Notebook ändere ich den text mit dem befehl
g_snprintf(buf,BUF,"Seote 2");
wie kann ich widgets in das notebook bekommen?
mein code
for(i=0; i < NBOOK; i++) { if(i==0) { g_snprintf(buf,BUF,"Seote 2"); } else if(i==1) { g_snprintf(buf,BUF,"Seote 2",i+1); } else { g_snprintf(buf,BUF,"Seote 3",i+1); }
wäre nett mfg Dominik
-
zur besseren verständniss heir der ganze code
#include <gtk/gtk.h> #define NBOOK 3 #define BUF 35 #define IMG 9 #define TAB 3 static gint delete_Event(GtkWidget *widget, GdkEvent event, gpointer daten) { g_print("Das Fenster wird zerstoert!\n"); return FALSE; } static void end ( GtkWidget *widget, gpointer daten ) { g_print("Und tschuess!\n"); gtk_main_quit(); } int main(int argc, char **argv) { GtkWindow *win; GdkPixbuf *ico; GtkImage *image[IMG]; GtkTable *table[TAB]; GtkNotebook *nbook; GtkLabel *nbook_content[NBOOK],*nbook_titel[NBOOK]; GtkLabel *version; GtkDrawingArea * draw; guint i; gchar buf[BUF]; gtk_init( &argc, &argv ); ico = gdk_pixbuf_new_from_file ("images/lmlogo.ico", NULL); image[1] = GTK_IMAGE(g_object_new( GTK_TYPE_IMAGE, "file", "images/lmlogo.gif", NULL)); win = GTK_WINDOW(g_object_new( GTK_TYPE_WINDOW, "title", "Lynax Messenger", "default-width", 250, "default-height", 300, "resizable", TRUE, "window-position", GTK_WIN_POS_CENTER, "border-width", 5, "icon", ico, NULL )); GtkWidget* gtk_drawing_area_new (void); void gtk_drawing_area_size (GtkDrawingArea *darea, gint width, gint height); table[0] = GTK_TABLE(g_object_new( GTK_TYPE_TABLE, "n-columns", 2, "n-rows", 1, "column-spacing",0, "row-spacing",0, NULL)); table[1] = GTK_TABLE(g_object_new( GTK_TYPE_TABLE, "n-columns", 1, "n-rows", 1, "column-spacing",0, "row-spacing",0, NULL)); table[2] = GTK_TABLE(g_object_new( GTK_TYPE_TABLE, "n-columns", 1, "n-rows", 1, "column-spacing",0, "row-spacing",0, NULL)); nbook = GTK_NOTEBOOK(g_object_new( GTK_TYPE_NOTEBOOK, "enable-popup", TRUE, "show-border",TRUE, NULL )); for(i=0; i < NBOOK; i++) { if(i==0) { g_snprintf(buf,BUF,"Seote 2"); } else if(i==1) { g_snprintf(buf,BUF,"Seote 2"); } else if(i==2) { g_snprintf(buf,BUF,"Seote 3"); } nbook_content[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", buf, NULL)); if(i==0){ nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "ICQ/AIM/MSN SERVER", NULL )); } else if(i==1) { nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "LM SERVER", NULL )); } else{ nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "Hilfe", NULL )); } gtk_notebook_append_page_menu(nbook, GTK_WIDGET(nbook_content[i]), GTK_WIDGET(nbook_titel[i]), NULL); } g_signal_connect( win, "delete-event", G_CALLBACK(delete_Event), NULL ); g_signal_connect( win, "destroy", G_CALLBACK(end), NULL ); gtk_table_attach_defaults(GTK_TABLE(table[0]),GTK_WIDGET (table[1]), 0,1, 0,1); gtk_table_attach_defaults(GTK_TABLE(table[0]),GTK_WIDGET (table[2]), 1,2, 0,1); gtk_table_attach_defaults(GTK_TABLE(table[1]),GTK_WIDGET (image[1]), 0,1, 0,1); gtk_table_attach_defaults(GTK_TABLE(table[2]),GTK_WIDGET (nbook), 0,1, 0,1); gtk_container_add(GTK_CONTAINER(win), GTK_WIDGET(table[0])); gtk_widget_show_all( GTK_WIDGET(win) ); gtk_main(); g_print("Die GTK-Hauptschleife wurde beendet\n"); return 0; }
-
Hi,
mit gtk_notebook_append_page kannst du ja ein Child hinzufügen (==einen neuen Reiter). Füge als Child einen Container (HBox, VBox, Table) ein und da kannst du weitere "Children" reinhängen.
Siehe auch hier: http://www.gtk.org/tutorial/x1452.html
MfG
GPC
-
danke aber irgentwie stell ich mich gerade weng an:
meine for sieht nun so aus?;vbox = GTK_VBUTTON_BOX(g_object_new( GTK_TYPE_VBUTTON_BOX, NULL)); for(i=0; i < NBOOK; i++) { nbook_content[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", buf, NULL)); if(i==0){ nbook_content[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "d", NULL)); nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "ICQ/AIM/MSN SERVER", NULL )); } else if(i==1) { nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "LM SERVER", NULL )); } else{ nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "Hilfe", NULL )); } gtk_notebook_append_page_menu(nbook, GTK_WIDGET(nbook_content[i]), GTK_WIDGET(nbook_titel[i]), NULL); gtk_notebook_append_page(nbook, GTK_WIDGET(vbox), GTK_WIDGET(nbook_titel[i]), NULL); }
C:/gtk/libs/gtk/include/gtk-2.0/gtk/gtknotebook.h:123: error: too many arguments to function `gint gtk_notebook_append_page(GtkNotebook*, GtkWidget*, GtkWidget*)'
-
gtk_notebook_append_page(nbook, GTK_WIDGET(vbox), GTK_WIDGET(nbook_titel[i]), NULL);
Du übergibst vier Parameter.
C:/gtk/libs/gtk/include/gtk-2.0/gtk/gtknotebook.h:123: error: too many arguments to function `gint gtk_notebook_append_page(GtkNotebook*, GtkWidget*, GtkWidget*)'
Erwartet werden drei Parameter.
Im Übrigen würde ich dir empfehlen, den Code vernünftig einzurücken. Das kann so ja keiner lesen.
-
am achso also ist
gtk_notebook_append_page
dasselbe wie
gtk_notebook_append_page_menu
-
okay etz hab ich es fast so wie ich will:
vbox = GTK_VBUTTON_BOX(g_object_new( GTK_TYPE_VBUTTON_BOX, NULL)); for(i=0; i < NBOOK; i++) { nbook_content[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", buf, NULL)); if(i==0){ gtk_box_pack_start_defaults( GTK_BOX(vbox), GTK_WIDGET(image[2])); nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "ICQ/AIM/MSN SERVER", NULL )); } else if(i==1) { nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "LM SERVER", NULL )); gtk_box_pack_start_defaults( GTK_BOX(vbox), GTK_WIDGET(image[3])); } else{ nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "Hilfe", NULL )); } gtk_notebook_append_page_menu(nbook, GTK_WIDGET(vbox), GTK_WIDGET(nbook_titel[i]), NULL); }
nur zeigt er egal ob if oder nciht alle widgets in der box an obwohl ich das in die box packen in einer if gemacht habe
-
Nein, sonst gäbe es keine zwei Methoden.
Beide fügen einem GtkNotebook einen neuen Reiter ("Tab") hinzu, aber gtk_notebook_append_page_menu erwartet eben noch einen Parameter mehr, der ein Widget darstellt, welcher im Tab-Switch Menü (sofern das angestellt ist) erscheint.Besser ist es, du verwendest die normale gtk_notebook_append_page Funktion.
-
so gut etz muss ich nur noch das hinbekommen das er egal ob es nun eine box oder eine tabelle ist , das er unterschiedlich die pack
for(i=0; i < NBOOK; i++) { if(i==0){ gtk_table_attach_defaults(GTK_TABLE(table[3]),GTK_WIDGET (image[3]), 0,1, 0,1); nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "ICQ/AIM/MSN SERVER", NULL )); } else if(i==1) { nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "LM SERVER", NULL )); } else if(i==2) { nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "Hilfe", NULL )); } gtk_notebook_append_page_menu(nbook, GTK_WIDGET(table[3]), GTK_WIDGET(nbook_titel[i]), NULL); }
warum berücksichtigt er nicht die if weil ers soll hat je nach dem i also tab unterschiedliche widgets in die tabelle packen aber er berücksichtigt die ifs nicht
ich glaub die if ist falsch...
-
Ich verstehe dein Problem nicht ganz. Und das verstehe bezieht sich sowohl auf dein Versuch, es zu beschreiben als auch auf deine Frage... du erstellst in jedem if ein Label, welches du dann hinzufügen willst. Was bezweckst du denn?
-
also ich möchte es so:
wenn man auf den ersten tab drück möchte ich das die tabelle=inhalt des notbooks
das bekommt
gtk_table_attach_defaults(GTK_TABLE(table[3]),GTK_WIDGET (image[3]), 0,1, 0,1);
beim 2ten tab soll wieder eine andere inhalt in den table kommendie label sind ok die machen oben die namen von den tabs
nur der inhalt soll sich eben auch ändern, nur bleibt er bei allen 3 tabs gleich...also oegal ob ich tab 1 oder tab 3 auswähle es kommt immer der inhalt
gtk_table_attach_defaults(GTK_TABLE(table[3]),GTK_WIDGET (image[3]), 0,1, 0,1);
-
LM schrieb:
wenn man auf den ersten tab drück möchte ich das die tabelle=inhalt des notbooks
das bekommt
gtk_table_attach_defaults(GTK_TABLE(table[3]),GTK_WIDGET (image[3]), 0,1, 0,1);
beim 2ten tab soll wieder eine andere inhalt in den table kommenDas wird so nicht funktionieren. Du hast eine falsche Vorstellung von Tabs. Jedes Tab ist ein eigener Container (bzw. kann einer sein), das Notebook versteht sich als Container der Tabs... und NUR der Tabs.
Kurz: Dein Ansatz ist falsch.
die label sind ok die machen oben die namen von den tabs
nur der inhalt soll sich eben auch ändern, nur bleibt er bei allen 3 tabs gleich...Geh hin und füge jedem Tab seinen eigenen Table hinzu. So, dann kannst du auf jedem Table operieren.
also oegal ob ich tab 1 oder tab 3 auswähle es kommt immer der inhalt
Jo, logisch.
-
Geh hin und füge jedem Tab seinen eigenen Table hinzu. So, dann kannst du auf jedem Table operieren.
ja wie den;)
for(i=0; i < NBOOK; i++) { if(i==0) { nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "ICQ/AIM/MSN SERVER", NULL )); } else if(i==1) { nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "LM SERVER Einstellungen", NULL )); } else if(i==2) { nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "Hilfe", NULL )); } gtk_notebook_append_page_menu(nbook, GTK_WIDGET(table[3]), GTK_WIDGET(nbook_titel[i]), NULL); }
so ist der table atach aufgebaut
gtk_table_attach_defaults(GTK_TABLE(table[3]),GTK_WIDGET (image[2]), 0,1, 0,1);
so?
gtk_notebook_append_page_menu(nbook, GTK_WIDGET(table[0]), GTK_WIDGET(nbook_titel[0]), NULL); gtk_notebook_append_page_menu(nbook, GTK_WIDGET(table[1]), GTK_WIDGET(nbook_titel[1]), NULL); gtk_notebook_append_page_menu(nbook, GTK_WIDGET(table[2]), GTK_WIDGET(nbook_titel[2]), NULL);
GRU? DOminik
-
Geh hin und füge jedem Tab seinen eigenen Table hinzu. So, dann kannst du auf jedem Table operieren.
ja wie den;)
Okay: Folgendes Vorgehen:
1. Du erstellst ein Notebook.
2. Du erstellst n H oder VBoxes, je nach dem was du brauchst. n ist die Anzahl. Bisher waren's drei.
3. Du erstellst n Tables oder sonstige Container.
4. Du fügst die Tables in die HBoxes ein (add, pack_start, such dir was aus)
5. Du fügst mittels append_page die HBoxes zum Notebook hinzu. Glaub mir, das geht.Irgendwie werde ich das Gefühl nicht los, du solltest dich erst mit den Grundlagen von C bzw. C++ und OOP beschäftigen, bevor du dich in GTK+ stürzt. Oder zumindest das GTK+ Tutorial lesen. Das ist gut, wirklich.
-
hm das hab ich doch gemacht?
hbutbox[0] = GTK_HBUTTON_BOX(g_object_new( GTK_TYPE_HBUTTON_BOX, NULL)); hbutbox[1] = GTK_HBUTTON_BOX(g_object_new( GTK_TYPE_HBUTTON_BOX, NULL)); hbutbox[2] = GTK_HBUTTON_BOX(g_object_new( GTK_TYPE_HBUTTON_BOX, NULL)); gtk_box_pack_start_defaults( GTK_BOX(hbutbox), GTK_WIDGET(table[3])); gtk_box_pack_start_defaults( GTK_BOX(hbutbox), GTK_WIDGET(table[4])); gtk_box_pack_start_defaults( GTK_BOX(hbutbox), GTK_WIDGET(table[5])); gtk_table_attach_defaults(GTK_TABLE(table[3]),GTK_WIDGET (image[2]), 0,1, 0,1); gtk_table_attach_defaults(GTK_TABLE(table[4]),GTK_WIDGET (image[2]), 0,1, 0,1); gtk_table_attach_defaults(GTK_TABLE(table[5]),GTK_WIDGET (image[2]), 0,1, 0,1); nbook = GTK_NOTEBOOK(g_object_new( GTK_TYPE_NOTEBOOK, "enable-popup", TRUE, "show-border",TRUE, NULL )); for(i=0; i < NBOOK; i++) { if(i==0) { nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "ICQ/AIM/MSN SERVER", NULL )); } else if(i==1) { nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "LM SERVER Einstellungen", NULL )); } else if(i==2) { nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "Hilfe", NULL )); } gtk_notebook_append_page_menu(nbook, GTK_WIDGET( hbutbox[0]), GTK_WIDGET(nbook_titel[0]), NULL); gtk_notebook_append_page_menu(nbook, GTK_WIDGET (hbutbox[1]), GTK_WIDGET(nbook_titel[1]), NULL); gtk_notebook_append_page_menu(nbook, GTK_WIDGET( hbutbox[2]), GTK_WIDGET(nbook_titel[2]), NULL); }
-
Öhm. Nun, poste mal bitte eine aktuelle, lauffähige und vollständige Version des Codes.
-
:
#include <gtk/gtk.h> #include <Test-DLL.h> #define NBOOK 3 #define BUF 235 #define IMG 9 #define TAB 6 static gint delete_Event(GtkWidget *widget, GdkEvent event, gpointer daten) { g_print("Das Fenster wird zerstoert!\n"); return FALSE; } static void end ( GtkWidget *widget, gpointer daten ) { g_print("Und tschuess!\n"); gtk_main_quit(); } int main(int argc, char *argv[]) { SomeFunction("Das Programm ist in der Beta PHASE!"); GtkWindow *win; GdkPixbuf *ico; GtkImage *image[IMG]; GtkTable *table[TAB]; GtkHButtonBox *hbutbox[3]; GtkNotebook *nbook; GtkLabel *nbook_titel[NBOOK]; GtkLabel *version; GtkVButtonBox *vbox; guint i; gchar buf[BUF]; gtk_init( &argc, &argv ); ico = gdk_pixbuf_new_from_file ("images/lmlogo.ico", NULL); image[1] = GTK_IMAGE(g_object_new( GTK_TYPE_IMAGE, "file", "images/lmlogo.gif", NULL)); image[2] = GTK_IMAGE(g_object_new( GTK_TYPE_IMAGE, "file", "images/lmlogo.gif", NULL)); image[3] = GTK_IMAGE(g_object_new( GTK_TYPE_IMAGE, "file", "images/lmlogeo.gif", NULL)); win = GTK_WINDOW(g_object_new( GTK_TYPE_WINDOW, "title", "Lynax Messenger", "default-width", 250, "default-height", 300, "resizable", TRUE, "window-position", GTK_WIN_POS_CENTER, "border-width", 5, "icon", ico, NULL )); GtkWidget* gtk_drawing_area_new (void); void gtk_drawing_area_size (GtkDrawingArea *darea, gint width, gint height); table[0] = GTK_TABLE(g_object_new( GTK_TYPE_TABLE, "n-columns", 2, "n-rows", 1, "column-spacing",0, "row-spacing",0, NULL)); table[1] = GTK_TABLE(g_object_new( GTK_TYPE_TABLE, "n-columns", 1, "n-rows", 1, "column-spacing",0, "row-spacing",0, NULL)); table[2] = GTK_TABLE(g_object_new( GTK_TYPE_TABLE, "n-columns", 1, "n-rows", 1, "column-spacing",0, "row-spacing",0, NULL)); table[3] = GTK_TABLE(g_object_new( GTK_TYPE_TABLE, "n-columns", 1, "n-rows", 1, "column-spacing",0, "row-spacing",0, NULL)); table[4] = GTK_TABLE(g_object_new( GTK_TYPE_TABLE, "n-columns", 1, "n-rows", 1, "column-spacing",0, "row-spacing",0, NULL)); table[5] = GTK_TABLE(g_object_new( GTK_TYPE_TABLE, "n-columns", 1, "n-rows", 1, "column-spacing",0, "row-spacing",0, NULL)); hbutbox[0] = GTK_HBUTTON_BOX(g_object_new( GTK_TYPE_HBUTTON_BOX, NULL)); hbutbox[1] = GTK_HBUTTON_BOX(g_object_new( GTK_TYPE_HBUTTON_BOX, NULL)); hbutbox[2] = GTK_HBUTTON_BOX(g_object_new( GTK_TYPE_HBUTTON_BOX, NULL)); gtk_box_pack_start_defaults( GTK_BOX( hbutbox[0]), GTK_WIDGET(table[3])); gtk_box_pack_start_defaults( GTK_BOX( hbutbox[1]), GTK_WIDGET(table[4])); gtk_box_pack_start_defaults( GTK_BOX( hbutbox[2), GTK_WIDGET(table[5])); gtk_table_attach_defaults(GTK_TABLE(table[3]),GTK_WIDGET (image[2]), 0,1, 0,1); gtk_table_attach_defaults(GTK_TABLE(table[4]),GTK_WIDGET (image[2]), 0,1, 0,1); gtk_table_attach_defaults(GTK_TABLE(table[5]),GTK_WIDGET (image[2]), 0,1, 0,1); nbook = GTK_NOTEBOOK(g_object_new( GTK_TYPE_NOTEBOOK, "enable-popup", TRUE, "show-border",TRUE, NULL )); for(i=0; i < NBOOK; i++) { if(i==0) { nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "ICQ/AIM/MSN SERVER", NULL )); } else if(i==1) { nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "LM SERVER Einstellungen", NULL )); } else if(i==2) { nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "Hilfe", NULL )); } gtk_notebook_append_page_menu(nbook, GTK_WIDGET( hbutbox[0]), GTK_WIDGET(nbook_titel[0]), NULL); gtk_notebook_append_page_menu(nbook, GTK_WIDGET (hbutbox[1]), GTK_WIDGET(nbook_titel[1]), NULL); gtk_notebook_append_page_menu(nbook, GTK_WIDGET( hbutbox[2]), GTK_WIDGET(nbook_titel[2]), NULL); } g_signal_connect( win, "delete-event", G_CALLBACK(delete_Event), NULL ); g_signal_connect( win, "destroy", G_CALLBACK(end), NULL ); gtk_table_attach_defaults(GTK_TABLE(table[0]),GTK_WIDGET (table[1]), 0,1, 0,1); gtk_table_attach_defaults(GTK_TABLE(table[0]),GTK_WIDGET (table[2]), 1,2, 0,1); gtk_table_attach_defaults(GTK_TABLE(table[1]),GTK_WIDGET (image[1]), 0,1, 0,1); gtk_table_attach_defaults(GTK_TABLE(table[2]),GTK_WIDGET (nbook), 0,1, 0,1); gtk_container_add(GTK_CONTAINER(win), GTK_WIDGET(table[0])); gtk_widget_show_all( GTK_WIDGET(win) ); gtk_main(); g_print("Die GTK-Hauptschleife wurde beendet\n"); return 0; }
-
Der Code war nicht lauffähig!
Nach der Korrektur fielen mir folgende Ausgaben auf:
(GTK+_Template.exe:1044): Gtk-CRITICAL **: gtk_table_attach: assertion `child->parent == NULL' failed (GTK+_Template.exe:1044): Gtk-CRITICAL **: gtk_table_attach: assertion `child->parent == NULL' failed (GTK+_Template.exe:1044): Gtk-WARNING **: Can't set a parent on widget which has a parent (GTK+_Template.exe:1044): Gtk-WARNING **: Can't set a parent on widget which has a parent (GTK+_Template.exe:1044): Gtk-WARNING **: Can't set a parent on widget which has a parent (GTK+_Template.exe:1044): Gtk-WARNING **: Can't set a parent on widget which has a parent (GTK+_Template.exe:1044): Gtk-WARNING **: Can't set a parent on widget which has a parent (GTK+_Template.exe:1044): Gtk-WARNING **: Can't set a parent on widget which has a parent
Warum hast du die nicht erst beseitigt, bevor du den Code gepostet hast? Warnungen, besonders wenn sie auch noch kritisch sind, sollte man ernst nehmen. Wenn man's nicht tut, siehst du ja, was passiert.
Ich hab sie beseitigt:
#include <gtk/gtk.h> #include <Test-DLL.h> #define NBOOK 3 #define BUF 235 #define IMG 9 #define TAB 6 static gint delete_Event(GtkWidget *widget, GdkEvent event, gpointer daten) { g_print("Das Fenster wird zerstoert!\n"); return FALSE; } static void end ( GtkWidget *widget, gpointer daten ) { g_print("Und tschuess!\n"); gtk_main_quit(); } int main(int argc, char *argv[]) { SomeFunction("Das Programm ist noch nicht mal in der Alpha PHASE!"); GtkWindow *win; GdkPixbuf *ico; GtkImage *image[IMG]; GtkTable *table[TAB]; GtkHButtonBox *hbutbox[3]; GtkNotebook *nbook; GtkLabel *nbook_titel[NBOOK]; GtkLabel *version; GtkVButtonBox *vbox; guint i; gchar buf[BUF]; gtk_init( &argc, &argv ); ico = gdk_pixbuf_new_from_file ("images/lmlogo.gif", NULL); image[1] = GTK_IMAGE(g_object_new( GTK_TYPE_IMAGE, "file", "images/lmlogo.gif", NULL)); image[2] = GTK_IMAGE(g_object_new( GTK_TYPE_IMAGE, "file", "images/lmlogo.gif", NULL)); image[3] = GTK_IMAGE(g_object_new( GTK_TYPE_IMAGE, "file", "images/lmlogo.gif", NULL)); win = GTK_WINDOW(g_object_new( GTK_TYPE_WINDOW, "title", "Lynax Messenger", "default-width", 250, "default-height", 300, "resizable", TRUE, "window-position", GTK_WIN_POS_CENTER, "border-width", 5, "icon", ico, NULL )); table[0] = GTK_TABLE(g_object_new( GTK_TYPE_TABLE, "n-columns", 2, "n-rows", 1, "column-spacing",0, "row-spacing",0, NULL)); table[1] = GTK_TABLE(g_object_new( GTK_TYPE_TABLE, "n-columns", 1, "n-rows", 1, "column-spacing",0, "row-spacing",0, NULL)); table[2] = GTK_TABLE(g_object_new( GTK_TYPE_TABLE, "n-columns", 1, "n-rows", 1, "column-spacing",0, "row-spacing",0, NULL)); table[3] = GTK_TABLE(g_object_new( GTK_TYPE_TABLE, "n-columns", 1, "n-rows", 1, "column-spacing",0, "row-spacing",0, NULL)); table[4] = GTK_TABLE(g_object_new( GTK_TYPE_TABLE, "n-columns", 1, "n-rows", 1, "column-spacing",0, "row-spacing",0, NULL)); table[5] = GTK_TABLE(g_object_new( GTK_TYPE_TABLE, "n-columns", 1, "n-rows", 1, "column-spacing",0, "row-spacing",0, NULL)); hbutbox[0] = GTK_HBUTTON_BOX(g_object_new( GTK_TYPE_HBUTTON_BOX, NULL)); hbutbox[1] = GTK_HBUTTON_BOX(g_object_new( GTK_TYPE_HBUTTON_BOX, NULL)); hbutbox[2] = GTK_HBUTTON_BOX(g_object_new( GTK_TYPE_HBUTTON_BOX, NULL)); gtk_box_pack_start_defaults( GTK_BOX( hbutbox[0]), GTK_WIDGET(table[3])); gtk_box_pack_start_defaults( GTK_BOX( hbutbox[1]), GTK_WIDGET(table[4])); gtk_box_pack_start_defaults( GTK_BOX( hbutbox[2]), GTK_WIDGET(table[5])); gtk_table_attach_defaults(GTK_TABLE(table[3]),GTK_WIDGET (image[2]), 0,1, 0,1); //Sorgen für die Gtk-CRITICAL Meldungen //gtk_table_attach_defaults(GTK_TABLE(table[4]),GTK_WIDGET (image[2]), 0,1, 0,1); //gtk_table_attach_defaults(GTK_TABLE(table[5]),GTK_WIDGET (image[2]), 0,1, 0,1); nbook = GTK_NOTEBOOK(g_object_new( GTK_TYPE_NOTEBOOK, "enable-popup", TRUE, "show-border",TRUE, NULL )); for(i=0; i < NBOOK; i++) { if(i==0) { nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "ICQ/AIM/MSN SERVER", NULL )); } else if(i==1) { nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "LM SERVER Einstellungen", NULL )); } else if(i==2) { nbook_titel[i] = GTK_LABEL(g_object_new( GTK_TYPE_LABEL, "label", "Hilfe", NULL )); } } //Aus Schleife ausgelagert. gtk_notebook_append_page(nbook, GTK_WIDGET( hbutbox[0]), NULL); gtk_notebook_append_page(nbook, GTK_WIDGET (hbutbox[1]), NULL); gtk_notebook_append_page(nbook, GTK_WIDGET( hbutbox[2]), NULL); g_signal_connect( win, "delete-event", G_CALLBACK(delete_Event), NULL ); g_signal_connect( win, "destroy", G_CALLBACK(end), NULL ); gtk_table_attach_defaults(GTK_TABLE(table[0]),GTK_WIDGET (table[1]), 0,1, 0,1); gtk_table_attach_defaults(GTK_TABLE(table[0]),GTK_WIDGET (table[2]), 1,2, 0,1); gtk_table_attach_defaults(GTK_TABLE(table[1]),GTK_WIDGET (image[1]), 0,1, 0,1); gtk_table_attach_defaults(GTK_TABLE(table[2]),GTK_WIDGET (nbook), 0,1, 0,1); gtk_container_add(GTK_CONTAINER(win), GTK_WIDGET(table[0])); gtk_widget_show_all( GTK_WIDGET(win) ); gtk_main(); g_print("Die GTK-Hauptschleife wurde beendet\n"); return 0; }
Mehr werde ich aber nicht machen, wenn du nicht erst vernünftig programmieren lernst. Dein Code ist ziemlich übel. Nicht formatiert (hätte VS 05 nicht die Auto-Format Funktion, hätte ich noch früher aufgehört), total unstrukturiert, miese Variablennamen. So kann ich dir nicht helfen.
Sorry, aber für sowas habe ich keine Zeit. Außerdem denke ich, dass du in C bzw. C++ noch nicht so weit bist, um GTK+ zu programmieren. Dir fehlen Grundlegende Techniken im Umgang mit der Sprache. Und damit meine ich nicht nur, dass man keine Funktionen in main deklarieren soll, sondern dass man auch mal Code aus der main auslagern könnte.
Das wird so nix. Hör auf mit GTK+, lern vernünftig mit C und C++ umzugehen und geh's dann noch mal an. Du brauchst meinen Rat nicht zu beherzigen, kannst mich ruhig für ein Arschloch halten usw., aber wenn du den Rat nicht befolgst, wirst du ewig so weitermurksen. Dein Bier.Viel Glück
GPC
-
Kein Problem aber ich danke dir trotzdem ...
und du hast recht ich bin noch nciht so weit mit c also lerne es noch richtig gut, finde es aber trotzde, sinnvoll mit gtk anzufangen, da ich finde das es so einen besseren lerneffekt gibt, kapieren tu ich die tutorials in gtk auch, nur war das eben eine etwas andere un speziellere frage, die in einem tut nicht beantwortet werden kannund ja ich lern C;)
aber auch gtk^^
jeder hat seine eigene lernmethode, meine mag zwar nicht ganz richtig in deinen augen sein aber ich finde sie bringt mcih weiter
-
LM1 schrieb:
Kein Problem aber ich danke dir trotzdem ...
und du hast recht ich bin noch nciht so weit mit c also lerne es noch richtig gut, finde es aber trotzde, sinnvoll mit gtk anzufangen, da ich finde das es so einen besseren lerneffekt gibt,...<hüstl>
Ich weiß, dass GPC weiß, wie man sauber programmiert.
Wenn Du schon nicht auf mich hörst, vielleicht fällt dir auf, dass Du den Kram ("Lerne programmierern, dann GTK - es ist für Dich und für uns Zeitverschwendung sich damit ausführlich zu beschäftigen...") nicht zum ersten Mal hörst.LM1 schrieb:
jeder hat seine eigene lernmethode, meine mag zwar nicht ganz richtig in deinen augen sein aber ich finde sie bringt mcih weiter
Das bestreite ich nicht.
Aber es ist sehr wahrscheinlich, dass Du Dir damit Techniken aneignest, die sauberer Programmierung widersprechen. Möchtest Du dann sauber programmieren, musst Du Dir alles, was Du Dir jetzt aneignest wieder abgewöhnen.Ein Programmierer, der Dich zu guter und sauberer Programmierung führen möchte, wird sich also weigern, Dich bei Deinem Vorgehen zu unterstützen.