title: call external functions in GTK+ gui
body: <p>Am having a main.c which is linked with some headers and other c files.After completing the program its a terminal based program which works with user input using switch.Its associated with a hardware board when i gives "o" it opens and "c" it closes.</p>
  
  <p>I got a sample GTK+ gui code written in c with open cloase and quit buttons.How would i link my open and close functions with the open and cloase buttons in gui.</p>
  
  <p>This is the GTK Code am Having</p>
  
  <pre><code>#include &lt;gtk/gtk.h&gt;
  
  static void
  print_hello (GtkWidget *widget,
               gpointer   data)
  {
      g_print ("Hello World\n");
  }
  
  int
  main (int   argc,
        char *argv[])
  {
      GtkWidget *window;
      GtkWidget *grid;
      GtkWidget *button;
  
      /* This is called in all GTK applications. Arguments are parsed
       * from the command line and are returned to the application.
       */
      gtk_init (&amp;argc, &amp;argv);
  
      /* create a new window, and set its title */
      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
      gtk_window_set_title (GTK_WINDOW (window), "CANMate");
      g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
      gtk_container_set_border_width (GTK_CONTAINER (window), 50);
  
      /* Here we construct the container that is going pack our buttons */
      grid = gtk_grid_new ();
  
      /* Pack the container in the window */
      gtk_container_add (GTK_CONTAINER (window), grid);
  
      button = gtk_button_new_with_label ("Open");
      g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
  
      /* Place the first button in the grid cell (0, 0), and make it fill
       * just 1 cell horizontally and vertically (ie no spanning)
       */
      gtk_grid_attach (GTK_GRID (grid), button, 0, 0, 1, 1);
  
      button = gtk_button_new_with_label ("Close");
      g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
  
      /* Place the second button in the grid cell (1, 0), and make it fill
       * just 1 cell horizontally and vertically (ie no spanning)
       */
      gtk_grid_attach (GTK_GRID (grid), button, 1, 0, 1, 1);
  
      button = gtk_button_new_with_label ("Quit");
      g_signal_connect (button, "clicked", G_CALLBACK (gtk_main_quit), NULL);
  
      /* Place the Quit button in the grid cell (0, 1), and make it
       * span 2 columns.
       */
      gtk_grid_attach (GTK_GRID (grid), button, 0, 1, 2, 1);
  
      /* Now that we are done packing our widgets, we show them all
       * in one go, by calling gtk_widget_show_all() on the window.
       * This call recursively calls gtk_widget_show() on all widgets
       * that are contained in the window, directly or indirectly.
       */
      gtk_widget_show_all (window);
  
      /* All GTK applications must have a gtk_main(). Control ends here
       * and waits for an event to occur (like a key press or a mouse event),
       * until gtk_main_quit() is called.
       */
      gtk_main ();
  
      return 0;
  }
  </code></pre>