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 originalGtkWidget *botonAplicacion;
botonAplicacion = gtk_button_new_with_label("X-Term");
g_signal_connect (botonAplicacion, "clicked", G_CALLBACK(MiClase::AbrirAplicacion), "xterm");
Y el callback en cuestión:
Código C++:
Ver originalvoid MiClase::AbrirAplicacion(char* app_command){
}
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 originalg_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 originalvoid Miclase::AbrirAplicacion(gpointer* app_command){
}