[vtkusers] VTK + GTK
    Zampini Samuele 
    samuele.zampini at epfl.ch
       
    Tue Aug  4 10:08:59 EDT 2009
    
    
  
Hi all,
I am trying to create a button in glade in order to open a VTK window in my GUI.
Actually, I am finding it very difficult. The button seems to work but the window doesn't appear.
==========================================================================================
This is my function:
extern "C" void on_aprire_vmtk_clicked(GtkToggleButton *togglebutton,gpointer user_data)
{
printf("The button works\n");
//This is a sentence I write in my Terminal to check that my button works.
add_vtk_widget_to_container("vbox2",1,1,0);
}
==========================================================================================
==========================================================================================
Where add_vtk_widget_to_container("vbox2",1,1,0) is the following function:
void add_vtk_widget_to_container(const gchar *container_name,gboolean expand,gboolean fill,guint padding)
{
   //Create the gtk vtk interactor. This also creates the gtk widget.
   vtkGtkRenderWindowInteractor *iren = vtkGtkRenderWindowInteractor::New();
   // Connect the renderer to the gtk vtk rendering window
   vtkRenderer *scene = create_scene();
   iren->GetRenderWindow()->AddRenderer(scene);
   GtkWidget *vbox = lookup_widget (container_name);
   gtk_box_pack_start (GTK_BOX (vbox),iren->get_drawing_area(),expand,fill,padding);
}
==========================================================================================
==========================================================================================
On the contraty, if I call the function in the main script, the windows appear but, of course, it appears immediately and
not when I want it to appera (clicking the button).
I am posting the main too.
Now the line wth 
add_vtk_widget_to_container("vbox2",1,1,0);
is commented, since I want to open my  windows throught the button.
Any idea???
int GUI_N_OBJECTS=0;
typedef struct {char *name;GtkWidget *pointer;} gui_object;
gui_object *GUI_LOOKUP_TABLE;
int main (int argc, char *argv[])
{
   GtkBuilder *builder;
   GtkWidget *window;
   gtk_init (&argc, &argv);
   gtk_gl_init(&argc, &argv);
   builder = gtk_builder_new();
   gtk_builder_add_from_file (builder, argv[1], NULL);
   build_lookup_table(builder);
   window = GTK_WIDGET (gtk_builder_get_object (builder, "main_win"));
   gtk_builder_connect_signals (builder, NULL);
   gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, TRUE);
//   add_vtk_widget_to_container("vbox2",1,1,0);
//   g_object_unref (G_OBJECT (builder));
        
   gtk_widget_show_all (window);
   gtk_main ();
   return 0;
}
Thanks a lot for your great help,
Samuele
    
    
More information about the vtkusers
mailing list