Tema: Gtk3 En C++
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/09/2011, 09:51
Avatar de shaggyz
shaggyz
 
Fecha de Ingreso: mayo-2008
Mensajes: 43
Antigüedad: 16 años
Puntos: 3
Gtk3 En C++

Buenas a todos, me he adentrado en el desarrollo de Gtk y c++ y tengo un pequeño problema con el método g_signal_connect que no termino de comprender. Mi objetivo es pasar un string al callback que le he asignado a un botón, el fragmento del código que hace esto es:

Donde asigno el callback:

Código C++:
Ver original
  1. GtkWidget *botonAplicacion;
  2.     botonAplicacion = gtk_button_new_with_label("X-Term");
  3.     g_signal_connect (botonAplicacion, "clicked", G_CALLBACK(MiClase::AbrirAplicacion), "xterm");

Y el callback en cuestión:

Código C++:
Ver original
  1. void MiClase::AbrirAplicacion(char* app_command){
  2.  
  3.     system(app_command);
  4.  
  5. }

Básicamente quiero abrir un xterm al presionar el botón, por lo que el método AbrirAplicacion recibe como párametro un string con el nombre del programa a abrir. Alguno me puede echar un cable?, solo necesito pasar un string al callback. He probado castearlo a gpointer como pone la definición de g_signal_connect pero el compilador me da un error al convertirlo a char*.

Agradecería mucho una ayuda ya que he encontrado documentación pero no la logro comprender.

Ya lo he solucionado, para que funcione se debe castear a gpointer en el callback:

Código C++:
Ver original
  1. g_signal_connect_swapped (botonAplicacion, "clicked", G_CALLBACK(MiClase::AbrirAplicacion), (gpointer)"xterm");

Y la conversión se debe hacer de gpointer a gchar en la función:

Código C++:
Ver original
  1. void Miclase::AbrirAplicacion(gpointer* app_command){
  2.  
  3.     system((gchar *)app_command);
  4.  
  5. }

Última edición por shaggyz; 28/09/2011 a las 03:36 Razón: Solucionado