auto-scripts/auto-gtk2


Home Back

#!/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.xml\", NULL);;
    
    // Copio il file dalla gui dalle risorse a una cartella temporanea
    // (le gtk+2 non possono caricare direttamente il file).
    GFile*  mySRC =  g_file_new_for_uri(\"resource:///org/myapp/res/gui.xml\");
    GFile*  myDEST =  g_file_new_for_path(glade_file);
    g_file_copy (mySRC,  myDEST,  G_FILE_COPY_OVERWRITE, NULL, NULL,  NULL,    &error);
    
 
    /*Infine carica come disolito il file dell'interfaccia */
    xml = gtk_builder_new ();
    if (!gtk_builder_add_from_file (xml, glade_file, &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.xml</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=\"2.24\"/>
          <!-- 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.xml        

echo "Genero il makefile..."
echo "
CPP = gcc
OPTS = `pkg-config --cflags --libs gio-2.0 gtk+-2.0` 

all:
    glib-compile-resources --generate-source resource.xml
    \$(CPP)  resource.c main.c -o main \$(OPTS)

clean:
    rm main" >makefile 

Powered by Code, a simple repository browser by Fabio Di Matteo