#include <gtk/gtk.h>
#include <stdio.h>

/*Programmende*/
void ende_cb(GtkObject *object)
{
 gtk_main_quit();
}

/*Gibt aktuelle Textlänge auf Konsole aus*/
void text_length_cb(GtkWidget* widget, gpointer data)
{
 guint length = gtk_text_get_length(GTK_TEXT(widget));
 g_print("Aktuelle Textlänge : %d\n",length);
}



int main(int argc, char **argv)
{
 GtkWidget *fenster;
 GtkWidget *box, *box2;
 GtkWidget *text;
 GtkWidget *button_quit, *button, *button2;
 FILE *f;
 char file[255];
 int is_file, nchar;

 if(argc == 2)
  {
   f = fopen(argv[1], "r");
   if(NULL == f)
    is_file = 0;
   else
    is_file = 1;
  }

 /*Gtk initialisieren*/
 gtk_init(&argc, &argv);
 /*Ein neues Fenster erstellen*/
 fenster = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 /*Buttons erstellen*/
 gtk_window_set_default_size(GTK_WINDOW(fenster), 320, 300);

 button_quit  = gtk_button_new_with_label("Ende");
 button = gtk_button_new_with_label("Textlänge");

 text = gtk_text_new(NULL, NULL);
 gtk_text_set_editable(GTK_TEXT(text),TRUE);
 gtk_text_set_word_wrap(GTK_TEXT(text), TRUE);

 /*Neue Box erstellen*/
 box = gtk_vbox_new(FALSE,0);
 box2= gtk_hbox_new(FALSE,0);


 /*Signale registrieren*/
 gtk_signal_connect_object(GTK_OBJECT(button_quit), "clicked",
                           GTK_SIGNAL_FUNC(ende_cb), GTK_OBJECT(fenster));
 gtk_signal_connect(GTK_OBJECT(fenster), "destroy",
                    GTK_SIGNAL_FUNC(ende_cb), NULL);
 gtk_signal_connect_object(GTK_OBJECT(button), "clicked",
                    GTK_SIGNAL_FUNC(text_length_cb), GTK_OBJECT(text));


 /*Fensterposition*/
 gtk_window_set_position(GTK_WINDOW(fenster),GTK_WIN_POS_CENTER);

 if(is_file)
   {
     while (1)
      {
        nchar = fread(file, 1, 255, f);
        gtk_text_insert (GTK_TEXT (text), NULL, NULL,
                         NULL, file, nchar);

        if (nchar < 255)
          break;
      }
   }

 gtk_container_set_border_width(GTK_CONTAINER(fenster),15);

 gtk_box_pack_start(GTK_BOX(box), text, TRUE, TRUE, 10);
 gtk_box_pack_start(GTK_BOX(box2), button_quit, TRUE, FALSE, 0);
 gtk_box_pack_start(GTK_BOX(box2), button, TRUE, FALSE, 0);
 gtk_box_pack_start(GTK_BOX(box), box2, FALSE, FALSE, 0);


 gtk_container_add(GTK_CONTAINER(fenster),box);

 /*Zeigs uns.....*/
 gtk_widget_show_all(fenster);

 gtk_main();

 return 0;
}