auto-scripts/auto-gtk3
#!/bin/sh
AUTHOR="Fabio Di Matteo"
VERSION="0.1.0"
#Controllo se e' stato fornito il nome del progetto
if [ "$1" = "" ];then
echo "E' necessario fornire il nome del progetto come parametro."
exit 1 ;
fi
#Se la directory del progetto esiste gia' esco.
mkdir $1 2>/dev/null
if [ "$?" != 0 ];then
echo "Il progetto esiste."
exit 1 ;
fi
cd $1
echo "Genero il main.c ..."
echo "#include <gtk/gtk.h> //includo le librerie gtk e glade.
GtkBuilder *xml; //questo รจ il puntatore al file xml che contiene l'interfaccia
GtkWidget *widget; //questa variabile serve per recuperare di volta in volta il
// widget (ovvero l'oggetto ) che vogliamo usare
void on_MainWindow_delete_event(GtkWidget *widget, gpointer user_data) //altra callback associata alla chiusura della
{ // finestra
gtk_main_quit();
}
int
main (int argc, char *argv[])
{
gtk_init (&argc, &argv);
GError* error = NULL;
gchar* glade_file = g_build_filename(g_get_tmp_dir(),\"gui.ui\", NULL);;
/*Infine carica come disolito il file dell'interfaccia */
xml = gtk_builder_new ();
if (!gtk_builder_add_from_resource (xml, \"/org/myapp/res/gui.ui\", &error))
{
g_warning (\"Couldn\'t load builder file: %s\", error->message);
g_error_free (error);
}
/* connette tutti gli eventi dei widget alle rispettive funzioni */
gtk_builder_connect_signals (xml, NULL);
/* Avvia il ciclo principale delle gtAvvia il ciclo principale delle gtk*/
gtk_main ();
return 0;
}
" > main.c
echo "Genero il file delle risorse..."
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<gresources>
<gresource prefix=\"/org/myapp/res\">
<file>gui.ui</file>
</gresource>
</gresources>" >resource.xml
echo "Genero il file dell'interfaccia Glade..."
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<interface>
<requires lib=\"gtk+\" version=\"3.20\"/>
<!-- interface-naming-policy project-wide -->
<object class=\"GtkWindow\" id=\"window1\">
<property name=\"visible\">True</property>
<property name=\"can_focus\">False</property>
<property name=\"title\" translatable=\"yes\">Test</property>
<signal name=\"destroy\" handler=\"gtk_main_quit\" swapped=\"no\"/>
<signal name=\"delete-event\" handler=\"gtk_main_quit\" swapped=\"no\"/>
<child>
<placeholder/>
</child>
</object>
</interface>" >gui.ui
echo "Genero il makefile..."
echo "
CPP = gcc
OPTS = \`pkg-config --cflags --libs gio-2.0 gtk+-3.0\` -rdynamic
all:
glib-compile-resources --generate-source resource.xml
\$(CPP) resource.c main.c -o main \$(OPTS)
clean:
rm main" >makefile