#include <gtk/gtk.h>
#include <stdio.h>      /* standard I/O                */
#include <stdlib.h>     /* for exit   - 1 occurrence   */
#include <unistd.h>
#include <string.h>
#include <time.h>
//#include <date.h>

//int ge0,ge1,lsgfx,lsmem,lsalu,lsfpu,lscomp,lscompress,lsmedia;
//double x;
FILE *fp;
//gchar *str1, *str2;
//struct timeval starttime;


static gboolean delete_event( GtkWidget *widget,
                              GdkEvent  *event,
                              gpointer   data )
{
    gtk_main_quit ();
    return FALSE;
}

int main( int   argc,
          char *argv[] )
{
    GtkWidget *window;
    GtkWidget *button;
    GtkWidget *table;
    GtkWidget *view;
    GtkTextBuffer *buffer;	

	gtk_init (&argc, &argv);
	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title (GTK_WINDOW (window), "lsbench 0.3.0: benchmark results");

	g_signal_connect (G_OBJECT (window), "delete_event",
		      G_CALLBACK (delete_event), NULL);
	gtk_container_set_border_width (GTK_CONTAINER (window), 10);
	table = gtk_table_new (2, 13, FALSE);

	gtk_container_add (GTK_CONTAINER (window), table);

    gchar str0[25]="Results from last runs:";
    gchar str1[20];
    gchar str01[30]="Memory Index:             ";
    gchar str02[30]="ALU Index:                   ";
    gchar str03[30]="FPU Index:                   ";   
    gchar str04[30]="Compile Index:            ";
    gchar str05[30]="Compression Index:    ";
    gchar str06[30]="Media Index:                ";
    gchar str07[30]="Graphics Index:           ";
    gchar str08[4]="";
    gchar str09[25]="Reopen window to refresh!";

	view = gtk_text_view_new ();
	buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
	gtk_text_buffer_set_text (buffer,str0, -1);
	gtk_table_attach_defaults (GTK_TABLE (table), view, 0, 1, 0, 1);
	gtk_widget_show (view);

        view = gtk_text_view_new ();
        buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
        gtk_text_buffer_set_text (buffer,str1, -1);
        gtk_table_attach_defaults (GTK_TABLE (table), view, 0, 1, 1, 2);
        gtk_widget_show (view);


#define SIZE 256


       char buffer2[SIZE];
       time_t curtime;
       struct tm *loctime;
 
       /* Get the current time. */
       curtime = time(NULL);
 
       /* Convert it to local time representation. */
       loctime = localtime(&curtime);
 
       /* Convert it to a nice format. */
       strftime(buffer2, SIZE, "%A, %B %d %Y\n", loctime);
 
       /* Print it out */
//       fprintf(fp, "Time: %s", buffer);












//time_t curtime;
//struct tm *loctime;
//curtime = time (NULL);
//loctime = localtime (&curtime);


//	const time_t *clock;
        //char s[26]="";
//	char *s;
//	s = ctime(s);

 // char date [10];
  //strdate(date);
  //std::cout<<"Current Date:"<<date;
//	s = time(NULL);
	//gettimeofday(&starttime, NULL);
	fp=fopen("lsbench.log", "w");
	//fprintf(fp, "%s\n", str0);
	//fprintf(fp, "%s\n", str1);
        fprintf(fp, "\nDate:%s\n", buffer2);
	fprintf(fp, "%s\n", str0);
        fclose(fp);

	view = gtk_text_view_new ();
	buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
        fp=fopen("memdir/lsmem.log", "r");
        fscanf(fp, "%s", str1);
        fclose(fp);
	strcat(str01, str1);
        fp=fopen("lsbench.log", "a");
	fprintf(fp, "%s\n", str01);
        fclose(fp);   
	gtk_text_buffer_set_text (buffer,str01, -1);
	gtk_table_attach_defaults (GTK_TABLE (table), view, 0, 1, 2, 3);
 	gtk_widget_show (view);

        view = gtk_text_view_new ();
        buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
	fp=fopen("aludir/lsalu.log", "r");
        fscanf(fp, "%s", str1);
        fclose(fp);
	strcat(str02, str1);
        fp=fopen("lsbench.log", "a");
        fprintf(fp, "%s\n", str02);
        fclose(fp);
        gtk_text_buffer_set_text (buffer,str02, -2);
        gtk_table_attach_defaults (GTK_TABLE (table), view, 0, 1, 3, 4);
	gtk_widget_show (view);

        view = gtk_text_view_new ();
        buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
        fp=fopen("fpudir/lsfpu.log", "r");  
        fscanf(fp, "%s", str1);  
        fclose(fp);
	strcat(str03, str1);
        fp=fopen("lsbench.log", "a");
        fprintf(fp, "%s\n", str03);
        fclose(fp);
        gtk_text_buffer_set_text (buffer,str03, -1);
        gtk_table_attach_defaults (GTK_TABLE (table), view, 0, 1, 4, 5);
	gtk_widget_show (view);

        view = gtk_text_view_new ();
        buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
        fp=fopen("compiledir/lscompile.log", "r");
        fscanf(fp, "%s", str1);
        fclose(fp);
	strcat(str04, str1);
        fp=fopen("lsbench.log", "a");
        fprintf(fp, "%s\n", str04);
        fclose(fp);
        gtk_text_buffer_set_text (buffer,str04, -1);
        gtk_table_attach_defaults (GTK_TABLE (table), view, 0, 1, 5, 6);
	gtk_widget_show (view);
        
	view = gtk_text_view_new ();
        buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
        fp=fopen("compressiondir/lscompress.log", "r");
        fscanf(fp, "%s", str1);
        fclose(fp);
	strcat(str05, str1);
        fp=fopen("lsbench.log", "a");
        fprintf(fp, "%s\n", str05);
        fclose(fp);
        gtk_text_buffer_set_text (buffer,str05, -1);
        gtk_table_attach_defaults (GTK_TABLE (table), view, 0, 1, 6, 7);
	gtk_widget_show (view);
        
	view = gtk_text_view_new ();
        buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
        fp=fopen("mediadir/lsmedia.log", "r");
        fscanf(fp, "%s", str1);
        fclose(fp);
	strcat(str06, str1);
        fp=fopen("lsbench.log", "a");
        fprintf(fp, "%s\n", str06);
        fclose(fp);
        gtk_text_buffer_set_text (buffer,str06, -1);
        gtk_table_attach_defaults (GTK_TABLE (table), view, 0, 1, 7, 8);
	gtk_widget_show (view);


        view = gtk_text_view_new ();
        buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
        fp=fopen("gfxdir/lsgfx.log", "r");
        fscanf(fp, "%s", str1);
        fclose(fp);
        strcat(str07, str1);
        fp=fopen("lsbench.log", "a");
        fprintf(fp, "%s\n", str07);
        fclose(fp);
        gtk_text_buffer_set_text (buffer,str07, -1);
        gtk_table_attach_defaults (GTK_TABLE (table), view, 0, 1, 8, 9);
        gtk_widget_show (view);


        view = gtk_text_view_new ();
        buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
        gtk_text_buffer_set_text (buffer,str08, -1);
        gtk_table_attach_defaults (GTK_TABLE (table), view, 0, 1, 9, 10);
        gtk_widget_show (view);


        view = gtk_text_view_new ();
        buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
        gtk_text_buffer_set_text (buffer,str09, -1);
        gtk_table_attach_defaults (GTK_TABLE (table), view, 0, 1, 10, 11);
        gtk_widget_show (view);
        //fp=fopen("lsbench.log", "a");
        //fprintf(fp, "%s\n", str08);
        //fprintf(fp, "%s\n", str09);
        //fprintf(fp, "Time: %s", starttime);
        //fclose(fp); 



    button = gtk_button_new_with_label ("close");
    g_signal_connect_swapped (G_OBJECT (button), "clicked",
                              G_CALLBACK (delete_event),
                              G_OBJECT (window));
	gtk_table_attach_defaults (GTK_TABLE (table), button, 0, 1, 11, 12);
    gtk_widget_show (button);

    gtk_widget_show (table);

    gtk_widget_show (window);
    
    /* Rest in gtk_main and wait for the fun to begin! */
    gtk_main ();

    return 0;
}
