#include <stdlib.h>
#include <stdio.h>
#include <math.h>
//#include "gtk_funcs.h"
#include <gtk/gtk.h>

struct GTK_Widgets{
    GtkWidget *main_win;
    GtkWidget *main_vbox;
    GtkWidget *main_menubar;
    GtkWidget *main_filemenu;
    GtkWidget *main_file;
    GtkWidget *main_results;
    GtkWidget *main_quit;
    GtkWidget *scrolled_win;
    GtkWidget *table;
    GtkWidget *fixed1;
    GtkWidget *table_labels[17];
    GtkWidget *load_b;
    GtkWidget *save_b;
    GtkWidget *ca_labels[17];
    GtkWidget *combo_box;
	GtkAdjustment *adjustments[17];
	GtkWidget *buttons[17];
	gdouble values[2];
} gtk;

int volume_option[7];
int v_lock = 0;
int s_lock = 0;
int t_lock = 0;
int w_lock = 0;
int speed_option[3];
int temp_option[3];
int weight_option[4];
void GTK_Func(void);

int main(int argc, char **argv){

	gtk_init(&argc, &argv);
	GTK_Func();
	return 0;
}

gboolean exit_cb(GtkWidget *widget, gpointer data){
    gtk_main_quit();
    //No_Exit = 0;
    return TRUE;
}



gboolean mm_to_in_cb(GtkWidget *widget, gpointer data){
	const gdouble inches_in_one_mm = 1/25.4;
    //gdouble gpu  = gtk_spin_button_get_value( (GtkSpinButton *)(((struct GTK_Widgets)data)->spinbutton[0]) );
    //gdouble mem  = gtk_spin_button_get_value( (GtkSpinButton *)(((struct PERF_Cur *)data)->spinbutton[1]) );
	gdouble mm = gtk_spin_button_get_value(GTK_SPIN_BUTTON(gtk.buttons[0]));
	gdouble in = gtk_spin_button_get_value(GTK_SPIN_BUTTON(gtk.buttons[1]));

	in = mm * inches_in_one_mm;
	//printf("mm: %lf in: %lf\n", mm, in);

    gtk_adjustment_set_value((gtk.adjustments[0]), mm);
	gtk_adjustment_set_value((gtk.adjustments[1]), in);
    gtk_spin_button_set_value(GTK_SPIN_BUTTON((GtkSpinButton *)(gtk.buttons[0])), mm);
	gtk_spin_button_set_value(GTK_SPIN_BUTTON((GtkSpinButton *)(gtk.buttons[1])), in);

	gtk_widget_show_all( ((struct GTK_Widgets)gtk).main_win );
    return TRUE;
}

gboolean in_to_mm_cb(GtkWidget *widget, gpointer data){
	const gdouble mm_in_one_inch = 25.4;
	gdouble mm = gtk_spin_button_get_value(GTK_SPIN_BUTTON(gtk.buttons[0]));
	gdouble in = gtk_spin_button_get_value(GTK_SPIN_BUTTON(gtk.buttons[1]));

	mm = in * mm_in_one_inch;

	//printf("mm: %lf in: %lf\n", mm, in);
	gtk_adjustment_set_value(gtk.adjustments[0], mm);
	gtk_adjustment_set_value(gtk.adjustments[1], in);
	gtk_spin_button_set_value(GTK_SPIN_BUTTON((GtkSpinButton *)(gtk.buttons[0])), mm);
	gtk_spin_button_set_value(GTK_SPIN_BUTTON((GtkSpinButton *)(gtk.buttons[1])), in);
	gtk_widget_show_all( ((struct GTK_Widgets)gtk).main_win );
	return TRUE;
}

gboolean volume_cb(GtkWidget *widget, gpointer data){
	int changed = *(int *)data;
	int num1 = 0;
	//int num2 = 0;
	//gdouble gallons   = gtk_spin_button_get_value(GTK_SPIN_BUTTON(gtk.buttons[2]));
	//gdouble litres    = gtk_spin_button_get_value(GTK_SPIN_BUTTON(gtk.buttons[3]));
	//gdouble pints     = gtk_spin_button_get_value(GTK_SPIN_BUTTON(gtk.buttons[4]));
	//gdouble quarts    = gtk_spin_button_get_value(GTK_SPIN_BUTTON(gtk.buttons[5]));
	//gdouble fl_ounces = gtk_spin_button_get_value(GTK_SPIN_BUTTON(gtk.buttons[6]));
	//printf("%d\n", changed);
	if(v_lock)
		return FALSE;
	v_lock = 1;
	const gdouble ratios[5][5] = {
		{1,         3.7854,       8,       4,       128},
		{0.26417,   1,            2.1134,  1.0567,  33.814},
		{0.125,     0.47318,      1,       0.5,     16},
		{0.25,      0.94635,      2,       1,       32},
		{0.0078125, 0.0295735494, 0.0625,  0.03125, 1}
	};

	gdouble tmp = gtk_spin_button_get_value(GTK_SPIN_BUTTON(gtk.buttons[changed+2]));
	for(num1=0; num1<5; num1++){
		//for(num2=0; num2<5; num2++){
		if(ratios[changed][num1] == 1)
			continue;
		gtk_adjustment_set_value(gtk.adjustments[num1+2], tmp*ratios[changed][num1]);
		gtk_spin_button_set_value(GTK_SPIN_BUTTON((GtkSpinButton *)(gtk.buttons[num1+2])), tmp*ratios[changed][num1]);
		//}
	}

	gtk_widget_show_all( ((struct GTK_Widgets)gtk).main_win );
	v_lock = 0;
	return TRUE;
}

gboolean speed_cb(GtkWidget *widget, gpointer data){
	int changed = *(int *)data;
	int num1 = 0;
	if(s_lock)
		return FALSE;
	s_lock = 1;
	//mph kph knots
	const gdouble ratios[3][3] = {
		{1, 1.609344, 0.868976},
		{0.621371, 1, 0.539957},
		{1.150779, 1.852, 1}
	};

	gdouble tmp = gtk_spin_button_get_value(GTK_SPIN_BUTTON(gtk.buttons[changed+7]));
	for(num1=0; num1<3; num1++){
		if(ratios[changed][num1] == 1)
			continue;
		gtk_adjustment_set_value(gtk.adjustments[num1+7], tmp*ratios[changed][num1]);
		gtk_spin_button_set_value(GTK_SPIN_BUTTON((GtkSpinButton *)(gtk.buttons[num1+7])), tmp*ratios[changed][num1]);
	}
	gtk_widget_show_all( ((struct GTK_Widgets)gtk).main_win );
	s_lock = 0;
	return TRUE;
}

gboolean temp_cb(GtkWidget *widget, gpointer data){
	int changed = *(int *)data;
	//int num1 = 0;
	if(t_lock)
		return FALSE;
	t_lock = 1;
	//gdouble ratios[3][3];

	// = {
	//	{1, (f-32)*(5/9), (f+459.67)*(5/9)},
	//	{ c*9/5+32, 1, (f+459.67)*5/9},
	//	{k*9/5-459.67, (f-32)*(5/9), 1}
	//};
	gdouble tmp = gtk_spin_button_get_value(GTK_SPIN_BUTTON(gtk.buttons[changed+10]));
	gdouble tmp2 = 0;
	gdouble tmp3 = 0;

	if(changed == 0){  //fahr
		tmp2 = tmp-32;
		tmp2 *= 5;
		tmp2 /= 9;
		gtk_adjustment_set_value(gtk.adjustments[11], tmp2);
		gtk_spin_button_set_value(GTK_SPIN_BUTTON((GtkSpinButton *)(gtk.buttons[11])), tmp2);
		tmp3 = (tmp+459.67);
		tmp3 *= 5;
		tmp3 /= 9;
		gtk_adjustment_set_value(gtk.adjustments[12], tmp3);
		gtk_spin_button_set_value(GTK_SPIN_BUTTON((GtkSpinButton *)(gtk.buttons[12])), tmp3);
		//printf("f: %lf c: %lf k: %lf\n", tmp, tmp2, tmp3);
	}
	if(changed == 1){ //cels
		tmp2 = tmp;
		tmp2 *= 9;
		tmp2 /= 5;
		tmp2 += 32;
		gtk_adjustment_set_value(gtk.adjustments[10], tmp2);
		gtk_spin_button_set_value(GTK_SPIN_BUTTON((GtkSpinButton *)(gtk.buttons[10])), tmp2);
		//tmp = gtk_spin_button_get_value(GTK_SPIN_BUTTON(gtk.buttons[10]));
		tmp3 = tmp2;
		tmp3 += 459.67;
		tmp3 *= 5;
		tmp3 /= 9;
		gtk_adjustment_set_value(gtk.adjustments[12], tmp3);
		gtk_spin_button_set_value(GTK_SPIN_BUTTON((GtkSpinButton *)(gtk.buttons[12])), tmp3);
		//printf("f: %lf c: %lf k: %lf\n", tmp2, tmp, tmp3);
	}
	if(changed == 2){ //kelv
		tmp2 = tmp;
		tmp2 *= 9;
		tmp2 /= 5;
		tmp2 -= 459.67;
		gtk_adjustment_set_value(gtk.adjustments[10], tmp2);
		gtk_spin_button_set_value(GTK_SPIN_BUTTON((GtkSpinButton *)(gtk.buttons[10])), tmp2);
		tmp3 = tmp2;
		tmp3 -= 32;
		tmp3 *= 5;
		tmp3 /= 9;
		gtk_adjustment_set_value(gtk.adjustments[11], tmp3);
		gtk_spin_button_set_value(GTK_SPIN_BUTTON((GtkSpinButton *)(gtk.buttons[11])), tmp3);
		//printf("f: %lf c: %lf k: %lf\n", tmp2, tmp3, tmp);
	}

	t_lock = 0;
	return TRUE;
}

gboolean weight_cb(GtkWidget *widget, gpointer data){
	int changed = *(int *)data;
	int num1 = 0;
	if(w_lock)
		return FALSE;
	w_lock = 1;

	//pounds, kilograms, stones, ounces
	const gdouble ratios[4][4] = {
		{ 1, 0.45359237, 0.07142857, 16},
		{ 2.20462262, 1, 0.15747304, 28.349523125},
		{ 14, 6.35029318, 1, 224},
		{ 0.0625, 0.028349523125, 0.0044642857, 1}
	};

	
	gdouble tmp = gtk_spin_button_get_value(GTK_SPIN_BUTTON(gtk.buttons[changed+13]));
	for(num1=0; num1<4; num1++){
	if(ratios[changed][num1] == 1)
		continue;
		gtk_adjustment_set_value(gtk.adjustments[num1+13], tmp*ratios[changed][num1]);
		gtk_spin_button_set_value(GTK_SPIN_BUTTON((GtkSpinButton *)(gtk.buttons[num1+13])), tmp*ratios[changed][num1]);
	}
	gtk_widget_show_all( ((struct GTK_Widgets)gtk).main_win );

	w_lock = 0;
	return TRUE;
}

void GTK_Func(void){
	const gchar *title = "conversions";
	int num1 = 0;
	gtk.main_win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_container_set_border_width(GTK_CONTAINER(gtk.main_win), 2);
	gtk_window_set_default_size(GTK_WINDOW(gtk.main_win), 680, 210);
	gtk_window_set_title(GTK_WINDOW(gtk.main_win), title);
	gtk.main_vbox = gtk_vbox_new(FALSE, 0);
	gtk_container_add(GTK_CONTAINER(gtk.main_win), gtk.main_vbox);
	gtk.main_menubar = gtk_menu_bar_new();
	gtk.main_filemenu = gtk_menu_new();
	gtk.main_file = gtk_menu_item_new_with_label("File");
	//gtk.main_results = gtk_menu_item_new_with_label("API Results");
	gtk.main_quit = gtk_menu_item_new_with_label("Quit");

	gtk_menu_item_set_submenu(GTK_MENU_ITEM(gtk.main_file), gtk.main_filemenu);
	//gtk_menu_shell_append(GTK_MENU_SHELL(gtk.main_filemenu), gtk.main_results);
	gtk_menu_shell_append(GTK_MENU_SHELL(gtk.main_filemenu), gtk.main_quit);
	gtk_menu_shell_append(GTK_MENU_SHELL(gtk.main_menubar), gtk.main_file);
	
	gtk.table = gtk_table_new(8, 8, TRUE); //h, w

	gtk.table_labels[0] = gtk_label_new("mm");
	gtk.table_labels[1] = gtk_label_new("inches");

	gtk.table_labels[2] = gtk_label_new("gallons");
	gtk.table_labels[3] = gtk_label_new("litres");
	gtk.table_labels[4] = gtk_label_new("pints");
	gtk.table_labels[5] = gtk_label_new("quarts");
	gtk.table_labels[6] = gtk_label_new("fl ounces");

	gtk.table_labels[7] = gtk_label_new("mph");
	gtk.table_labels[8] = gtk_label_new("kph");
	gtk.table_labels[9] = gtk_label_new("knots");

	gtk.table_labels[10] = gtk_label_new("fahrenheit");
	gtk.table_labels[11] = gtk_label_new("celsius");
	gtk.table_labels[12] = gtk_label_new("kelvin");

	gtk.table_labels[13] = gtk_label_new("pounds");
	gtk.table_labels[14] = gtk_label_new("kilograms");
	gtk.table_labels[15] = gtk_label_new("stones");
	gtk.table_labels[16] = gtk_label_new("ounces");
	

	gtk_table_attach(GTK_TABLE(gtk.table), gtk.table_labels[0],        0, 1, 0, 1, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), gtk.table_labels[1],        1, 2, 0, 1, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), gtk.table_labels[2],        0, 1, 2, 3, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), gtk.table_labels[3],        1, 2, 2, 3, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), gtk.table_labels[4],        2, 3, 2, 3, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), gtk.table_labels[5],        3, 4, 2, 3, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), gtk.table_labels[6],        4, 5, 2, 3, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), gtk.table_labels[7],        0, 1, 4, 5, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), gtk.table_labels[8],        1, 2, 4, 5, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), gtk.table_labels[9],        2, 3, 4, 5, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), gtk.table_labels[10],       0, 1, 6, 7, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), gtk.table_labels[11],       1, 2, 6, 7, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), gtk.table_labels[12],       2, 3, 6, 7, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), gtk.table_labels[13],       0, 1, 8, 9, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), gtk.table_labels[14],       1, 2, 8, 9, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), gtk.table_labels[15],       2, 3, 8, 9, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), gtk.table_labels[16],       3, 4, 8, 9, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);

	//gtk.ca_labels[0] = gtk_label_new("0");
	//gtk.ca_labels[1] = gtk_label_new("0");
	//gtk.ca_labels[2] = gtk_label_new("0");

	//gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(((struct GTK_Widgets) gtk).ca_labels[0]),  0, 1, 1+num1, 2+num1, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	//gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(((struct GTK_Widgets) gtk).ca_labels[1]),  1, 2, 1+num1, 2+num1, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	//gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(((struct GTK_Widgets) gtk).ca_labels[2]),  2, 3, 1+num1, 2+num1, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);

	//value? min max step page-step, start?
	gtk.adjustments[0] = (GtkAdjustment *)gtk_adjustment_new(0,   -1000000000,  1000000000,  .0001,  .05, 0.0);
	gtk.adjustments[1] = (GtkAdjustment *)gtk_adjustment_new(0,   -1000000000,  1000000000,  .0001,  .05, 0.0);
	gtk.adjustments[2] = (GtkAdjustment *)gtk_adjustment_new(0,   -1000000000,  1000000000,  .0001,  .05, 0.0);
	gtk.adjustments[3] = (GtkAdjustment *)gtk_adjustment_new(0,   -1000000000,  1000000000,  .0001,  .05, 0.0);
	gtk.adjustments[4] = (GtkAdjustment *)gtk_adjustment_new(0,   -1000000000,  1000000000,  .0001,  .05, 0.0);
	gtk.adjustments[5] = (GtkAdjustment *)gtk_adjustment_new(0,   -1000000000,  1000000000,  .0001,  .05, 0.0);
	gtk.adjustments[6] = (GtkAdjustment *)gtk_adjustment_new(0,   -1000000000,  1000000000,  .0001,  .05, 0.0);
	gtk.adjustments[7] = (GtkAdjustment *)gtk_adjustment_new(0,   -1000000000,  1000000000,  .0001,  .05, 0.0);
	gtk.adjustments[8] = (GtkAdjustment *)gtk_adjustment_new(0,   -1000000000,  1000000000,  .0001,  .05, 0.0);
	gtk.adjustments[9] = (GtkAdjustment *)gtk_adjustment_new(0,   -1000000000,  1000000000,  .0001,  .05, 0.0);
	gtk.adjustments[10] = (GtkAdjustment *)gtk_adjustment_new(0,   -1000000000,  1000000000,  .0001,  .05, 0.0);
	gtk.adjustments[11] = (GtkAdjustment *)gtk_adjustment_new(0,   -1000000000,  1000000000,  .0001,  .05, 0.0);
	gtk.adjustments[12] = (GtkAdjustment *)gtk_adjustment_new(0,   -1000000000,  1000000000,  .0001,  .05, 0.0);
	gtk.adjustments[13] = (GtkAdjustment *)gtk_adjustment_new(0,   -1000000000,  1000000000,  .0001,  .05, 0.0);
	gtk.adjustments[14] = (GtkAdjustment *)gtk_adjustment_new(0,   -1000000000,  1000000000,  .0001,  .05, 0.0);
	gtk.adjustments[15] = (GtkAdjustment *)gtk_adjustment_new(0,   -1000000000,  1000000000,  .0001,  .05, 0.0);
	gtk.adjustments[16] = (GtkAdjustment *)gtk_adjustment_new(0,   -1000000000,  1000000000,  .0001,  .05, 0.0);
	gtk.buttons[0] = (GtkWidget *)gtk_spin_button_new(gtk.adjustments[0],  .0001, 8);
	gtk.buttons[1] = (GtkWidget *)gtk_spin_button_new(gtk.adjustments[1],  .0001, 8);
	gtk.buttons[2] = (GtkWidget *)gtk_spin_button_new(gtk.adjustments[2],  .0001, 8);
	gtk.buttons[3] = (GtkWidget *)gtk_spin_button_new(gtk.adjustments[3],  .0001, 8);
	gtk.buttons[4] = (GtkWidget *)gtk_spin_button_new(gtk.adjustments[4],  .0001, 8);
	gtk.buttons[5] = (GtkWidget *)gtk_spin_button_new(gtk.adjustments[5],  .0001, 8);
	gtk.buttons[6] = (GtkWidget *)gtk_spin_button_new(gtk.adjustments[6],  .0001, 8);
	gtk.buttons[7] = (GtkWidget *)gtk_spin_button_new(gtk.adjustments[7],  .0001, 8);
	gtk.buttons[8] = (GtkWidget *)gtk_spin_button_new(gtk.adjustments[8],  .0001, 8);
	gtk.buttons[9] = (GtkWidget *)gtk_spin_button_new(gtk.adjustments[9],  .0001, 8);
	gtk.buttons[10] = (GtkWidget *)gtk_spin_button_new(gtk.adjustments[10],  .0001, 8);
	gtk.buttons[11] = (GtkWidget *)gtk_spin_button_new(gtk.adjustments[11],  .0001, 8);
	gtk.buttons[12] = (GtkWidget *)gtk_spin_button_new(gtk.adjustments[12],  .0001, 8);
	gtk.buttons[13] = (GtkWidget *)gtk_spin_button_new(gtk.adjustments[13],  .0001, 8);
	gtk.buttons[14] = (GtkWidget *)gtk_spin_button_new(gtk.adjustments[14],  .0001, 8);
	gtk.buttons[15] = (GtkWidget *)gtk_spin_button_new(gtk.adjustments[15],  .0001, 8);
	gtk.buttons[16] = (GtkWidget *)gtk_spin_button_new(gtk.adjustments[16],  .0001, 8);

	gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(gtk.buttons[0]),    0, 1, 1, 2, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(gtk.buttons[1]),    1, 2, 1, 2, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(gtk.buttons[2]),    0, 1, 3, 4, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(gtk.buttons[3]),    1, 2, 3, 4, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(gtk.buttons[4]),    2, 3, 3, 4, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(gtk.buttons[5]),    3, 4, 3, 4, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(gtk.buttons[6]),    4, 5, 3, 4, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(gtk.buttons[7]),    0, 1, 5, 6, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(gtk.buttons[8]),    1, 2, 5, 6, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(gtk.buttons[9]),    2, 3, 5, 6, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(gtk.buttons[10]),    0, 1, 7, 8, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(gtk.buttons[11]),    1, 2, 7, 8, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(gtk.buttons[12]),    2, 3, 7, 8, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(gtk.buttons[13]),    0, 1, 9, 10, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(gtk.buttons[14]),    1, 2, 9, 10, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(gtk.buttons[15]),    2, 3, 9, 10, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);
	gtk_table_attach(GTK_TABLE(gtk.table), GTK_WIDGET(gtk.buttons[16]),    3, 4, 9, 10, GTK_EXPAND|GTK_FILL, 0, GTK_EXPAND|GTK_FILL, 0);

	g_signal_connect(G_OBJECT(gtk.buttons[0]), "value_changed", G_CALLBACK(mm_to_in_cb), (gpointer)gtk.adjustments[0]);
	g_signal_connect(G_OBJECT(gtk.buttons[1]), "value_changed", G_CALLBACK(in_to_mm_cb), (gpointer)gtk.adjustments[1]);
	for(num1=2; num1<7; num1++){
		volume_option[num1] = num1-2;
		g_signal_connect(G_OBJECT(gtk.buttons[num1]), "value_changed", G_CALLBACK(volume_cb), (gpointer)&volume_option[num1]);
	}
	for(num1=7; num1<10; num1++){
		speed_option[num1-7] = num1-7;
		g_signal_connect(G_OBJECT(gtk.buttons[num1]), "value_changed", G_CALLBACK(speed_cb), (gpointer)&speed_option[num1-7]);
	}
	for(num1=10; num1<13; num1++){
		temp_option[num1-10] = num1-10;
		g_signal_connect(G_OBJECT(gtk.buttons[num1]), "value_changed", G_CALLBACK(temp_cb), (gpointer)&temp_option[num1-10]);
	}
	for(num1=13; num1<17; num1++){
		weight_option[num1-13] = num1-13;
		g_signal_connect(G_OBJECT(gtk.buttons[num1]), "value_changed", G_CALLBACK(weight_cb), (gpointer)&weight_option[num1-13]);
	}
	gtk.scrolled_win = gtk_scrolled_window_new(NULL, NULL);
	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtk.scrolled_win), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
	gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(gtk.scrolled_win), gtk.table);

	gtk_box_pack_start(GTK_BOX(gtk.main_vbox), gtk.main_menubar, FALSE, FALSE, 3);
	gtk_box_pack_end(GTK_BOX(gtk.main_vbox), gtk.scrolled_win, TRUE, TRUE, 3);

	g_signal_connect(gtk.main_win, "destroy", G_CALLBACK(exit_cb), NULL);
	g_signal_connect(G_OBJECT(gtk.main_quit), "activate", G_CALLBACK(exit_cb), NULL);

	gtk_widget_show_all(gtk.main_win);
	gtk_main();



}

