MADDE/GTK Example

(New page: <div style="border: 1px solid red; background-color: #faa; padding: 20px;"><div style="text-align:center;">'''TECHNOLOGY PREVIEW'''</div></div> === Introduction === This example require...)
m (Start the project: use <source>)
Line 42: Line 42:
Lets create a small GTK helloworld application hello.c in src directory:
Lets create a small GTK helloworld application hello.c in src directory:
-
#include <gtk/gtk.h>
+
<source lang="c">
-
static void destroy( GtkWidget *widget,
+
#include <gtk/gtk.h>
-
                    gpointer  data )
+
-
{
+
-
    gtk_main_quit ();
+
-
}
+
-
int main( int  argc,
+
-
          char *argv[] )
+
-
{
+
-
    GtkWidget *window;
+
-
    GtkWidget *label;
+
-
    gtk_init (&argc, &argv);
+
-
    label = gtk_label_new("Hello world");
+
-
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL); 
+
-
    g_signal_connect (G_OBJECT (window), "destroy",
+
-
G_CALLBACK (destroy), NULL);
+
-
    gtk_container_add (GTK_CONTAINER (window), label);
+
-
    gtk_widget_show (window);
+
-
    gtk_widget_show(label);
+
-
    gtk_main ();
+
-
    return 0;
+
-
}
+
 +
static void destroy( GtkWidget *widget,
 +
                    gpointer  data )
 +
{
 +
  gtk_main_quit ();
 +
}
 +
int main( int  argc,
 +
        char *argv[] )
 +
{
 +
  GtkWidget *window;
 +
  GtkWidget *label;
 +
  gtk_init (&argc, &argv);
 +
  label = gtk_label_new("Hello world");
 +
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL); 
 +
  g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy), NULL);
 +
  gtk_container_add (GTK_CONTAINER (window), label);
 +
  gtk_widget_show (window);
 +
  gtk_widget_show(label);
 +
  gtk_main ();
 +
  return 0;
 +
}
 +
</source>
=== Compile & build ===
=== Compile & build ===

Revision as of 08:43, 21 April 2010

TECHNOLOGY PREVIEW


Contents

Introduction

This example requires a working configuration of MADDE. At least one target has to be installed and set as 'default'. The basic steps to do this are described in this guide.

  • start a project in MADDE
  • use template-projects for developing
  • compile a project in MADDE
  • build a package

Templates

Templates are used in MADDE to simplify the set up of the basic skeleton for a project. The following command shows the list of available templates:

mad pscreate -l
The command gives following output:
TEMPLATE NAME    TYPE     DESCRIPTION
empty            prog     Empty project
lib_simple       lib      Simple example for C/C++ libraries
qt_lib_simple    qtlib    Simple example for Qt libraries
qt_simple        qtprog   Simple example for Qt programs
simple           prog     Simple example for C/C++ programs

Start the project

The goal of this example is to create a simple GTK helloworld application. Therefore we can use the "simple" template out of the list with small modifications. The following command creates a project using the "simple" template and named as "helloworld"

mad pscreate -t simple helloworld

Afterwards the skeleton is created with the following subdirectories:

  • src: place for sourcefiles
  • debian:configuration files, which are needed to create the package later on
  • uis:empty folder for ui files which would be needed with Qt applications

Further it contains a file named "prog.pro", which is a project file, needed to create the Makefile with qmake.

Lets create a small GTK helloworld application hello.c in src directory:

#include <gtk/gtk.h>
 
static void destroy( GtkWidget *widget,
                     gpointer   data )
{
   gtk_main_quit ();
}
 
int main( int   argc,
         char *argv[] )
{
   GtkWidget *window;
   GtkWidget *label;
   gtk_init (&argc, &argv);
   label = gtk_label_new("Hello world");
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);   
   g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy), NULL);
   gtk_container_add (GTK_CONTAINER (window), label);
   gtk_widget_show (window);
   gtk_widget_show(label);
   gtk_main ();
   return 0;
}

Compile & build

Before we can compile GTK application we have to modify prog.pro file. In prog.pro file edit SOURCES += and HEADERS += lines to contain source files in the project, in our case wee need only following line: SOURCES += hello.c

For GTK applications we want to use pkgconfig to help compiling and linking against correct libraries.

For our example we add following lines: CONFIG += link_pkgconfig and PKGCONFIG += gtk+-2.0

Now we are ready to build our application.

The following steps describe how to compile and build the project.

1. Create the Makefile:

cd helloworld
mad qmake

2. Compile the project.

mad make
Now the executable program helloworld is created in the helloworld/build directory.

3. Create a debian package:

mad dpkg-buildpackage
This command will build the project and make a debian package called helloworld_0.1_armel.deb. The debian package will be created in the projects' parent directory.