Assignment operator for GtkWidgets? Is there such a thing, can we do things like MyGtkWidget = SomeGtkWidget? I get a segmentation fault when I try todo that! What am I doing wrong? class Data{ public: std::string str; GtkWidget* obj; public: Data(){str = "";} void setStr(std::string ps){ str = ps;} void setObj(GtkWidget* o){obj = o;} }; //Declare the objects GtkWidget* MainMenueWin; GtkWidget* VBx; GtkWidget* Label; GtkWidget* Separator; GtkWidget* btnExit; GtkWidget* btnCreateAccount; GtkWidget* btn2; GtkWidget* btn3; GtkWidget* btn4; GtkWidget* btn5; Data* data; std::string msg("Under Comstruction ... I am very sorry, but this \ feature has not been implemented yet. Please \ email me for any new updates on this program \ puchica@xxxxxxxxxxx"); //Callbacks void Quit(GtkButton* , gpointer); gboolean SystemQuit(GtkWidget*, GdkEvent*, gpointer); void Quit(GtkButton* was_clicked, gpointer user_data){ gtk_main_quit(); } gboolean SystemQuit(GtkWidget* widget, GdkEvent* event, gpointer user_data){ gtk_widget_destroy(widget); gtk_main_quit(); return(TRUE); //return(FALSE); } int main(int argc, char *argv[]){ // 1. Initialize the environment gtk_set_locale (); gtk_init(&argc, &argv); //-liconv -liconv // 2. Create Widgets MainMenueWin = gtk_window_new(GTK_WINDOW_TOPLEVEL); //gtk_window_new(GTK_WINDOW_TOPLEVEL); VBx = gtk_vbox_new(FALSE,10); Label = gtk_label_new("Jaime"); Separator = gtk_hseparator_new(); btnCreateAccount = gtk_button_new_with_label("Create"); btn2 = gtk_button_new_with_label("Unknown"); btn3 = gtk_button_new_with_label("Unknown"); btn4 = gtk_button_new_with_label("Unknown"); btn5 = gtk_button_new_with_label("Unknown"); btnExit = gtk_button_new_with_label("Exit"); // Information for GeneralMessage data->setObj(MainMenueWin); data->setStr(msg); // 3. Set attributs gtk_window_set_title(GTK_WINDOW(MainMenueWin), "Jaime"); gtk_window_set_policy(GTK_WINDOW(MainMenueWin), //which_window FALSE, // allow_shrink FALSE, // allow_grow FALSE); // auto_shrink gtk_container_set_border_width(GTK_CONTAINER(MainMenueWin),15); gtk_widget_set_name(MainMenueWin,"Gtk++ One, dos"); gtk_widget_set_name(VBx,"vertical box"); gtk_widget_set_name(Label,"Label"); gtk_widget_set_name(Separator, "Separator"); // 4. Register CallBacks // These three callback fun' are only to exit the application g_signal_connect( GTK_OBJECT(btnExit), "clicked", G_CALLBACK(Quit), NULL); g_signal_connect( GTK_OBJECT(MainMenueWin), "delete-event", GTK_SIGNAL_FUNC(SystemQuit), NULL); g_signal_connect(GTK_OBJECT(MainMenueWin), "destroy", G_CALLBACK(SystemQuit), NULL); g_signal_connect(GTK_OBJECT(btnCreateAccount), "clicked", G_CALLBACK(GeneralMsg), reinterpret_cast<gpointer>(&data)); g_signal_connect(GTK_OBJECT(btn2), "clicked", G_CALLBACK(GeneralMsg), reinterpret_cast<gpointer>(&data)); g_signal_connect(GTK_OBJECT(btn3), "clicked", G_CALLBACK(GeneralMsg), reinterpret_cast<gpointer>(&data)); g_signal_connect(GTK_OBJECT(btn4), "clicked", G_CALLBACK(GeneralMsg), reinterpret_cast<gpointer>(&data)); g_signal_connect(GTK_OBJECT(btn5), "clicked", G_CALLBACK(GeneralMsg), reinterpret_cast<gpointer>(&data)); // 5. Define instance hirarchy (pack the widgets) gtk_container_add(GTK_CONTAINER(MainMenueWin), VBx); gtk_box_pack_start_defaults(GTK_BOX(VBx), Label); gtk_box_pack_start(GTK_BOX(VBx), btnCreateAccount, FALSE, FALSE,1); gtk_box_pack_start(GTK_BOX(VBx), btn2, FALSE, FALSE,1); gtk_box_pack_start(GTK_BOX(VBx), btn3, FALSE, FALSE,1); gtk_box_pack_start(GTK_BOX(VBx), btn4, FALSE, FALSE,1); gtk_box_pack_start(GTK_BOX(VBx), btn5, FALSE, FALSE,1); gtk_box_pack_start(GTK_BOX(VBx), Separator, FALSE,FALSE, 1); gtk_box_pack_start_defaults(GTK_BOX(VBx), btnExit); // 6. Show the Widgets gtk_widget_show_all(MainMenueWin); // 7. Processing loop gtk_main(); //if (data) { delete data; } std::cerr << "Assalam Alaykum" << std::endl; return 0; } void GeneralMsg(GtkButton* button, gpointer p) { Data* d; GtkWidget* label; GtkWidget* dialog; try { dialog = new GtkWidget; label = new GtkWidget; d = new Data(); } catch(std::exception& e) { std::cout << e.what() << std::endl;} try{d = reinterpret_cast<Data*>(p);} catch(std::exception& e){std::cerr << e.what() << std::endl;} dialog = gtk_message_dialog_new( einterpret_cast<GtkWindow*>(d->obj), //Parent static_cast<GtkDialogFlags>(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), //Flags reinterpret_cast<GtkMessageType>(GTK_MESSAGE_WARNING), // Message type reinterpret_cast<GtkButtonsType>(GTK_BUTTONS_OK), //Button type d->str.c_str()); //Message format // Destroy the dialog when the user responds to it (e.g. clicks a button) gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); delete d; delete dialog; delete label; } -- * You cannot exercise your power to a point of humiliation. - Jean Chretien * It's amazing how the small seeds of distrust and misunderstanding can yield a crop of hate and death... * If that document has fine printing anywhere, just chuck it in the garbage - Jorge Escalante Ma'assalama! Adiós! bye! _______________________________________________ gtk-list@xxxxxxxxx http://mail.gnome.org/mailman/listinfo/gtk-list