#define NGRAPHS 10 GtkWidget * gfixed[NGRAPHS]; GtkWidget * expand[NGRAPHS]; gchar * graph_img[NGRAPHS]; char * graph_name[NGRAPHS] = {"g(r)/G(r)", "S(q) from FFT[g(r)]", "S(q) from Debye equation", "g(r)/G(r) from FFT[S(q)]", "Bonds properties", "Angle distributions", "Ring statistics", "Chain statistics", "Spherical harmonics", "Mean Squared Displacement"}; GtkWidget * markup_label (gchar * text, int dimx, int dimy, float ax, float ay) { GtkWidget * lab = gtk_label_new (text); gtk_label_align (lab, ax, ay); gtk_widget_set_size_request (lab, dimx, dimy); gtk_label_set_use_markup (GTK_LABEL(lab), TRUE); return lab; } GtkWidget * create_scroll (GtkWidget * box, int dimx, int dimy, int shadow) { GtkWidget * scroll = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(scroll), shadow); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_widget_set_size_request (scroll, dimx, dimy); if (box != NULL) gtk_container_add (GTK_CONTAINER(box), scroll); return scroll; } GtkWidget * create_expander (gchar * name, gchar * img_file, int i, gboolean ctb) { GtkWidget * expand = gtk_expander_new (name); GtkWidget * hbox = create_hbox (0); if (img_file != NULL) { GtkWidget * img = gtk_image_new_from_file (img_file); gtk_widget_set_size_request (img, 20, 20); gtk_box_pack_start (GTK_BOX (hbox), img, TRUE, TRUE, 10); } gtk_box_pack_start (GTK_BOX (hbox), markup_label(name, 200, 20, 0.0, 0.5), FALSE, TRUE, 0); gtk_expander_set_label_widget (GTK_EXPANDER(expand), hbox); if (ctb) { GtkWidget * scrol = create_scroll (expand, -1, -1, GTK_SHADOW_NONE); gfixed[i] = gtk_fixed_new (); gtk_container_add (GTK_CONTAINER(scrol), gfixed[i]); gtk_widget_set_hexpand (gfixed[i], TRUE); gtk_widget_set_vexpand (gfixed[i], TRUE); } return expand; } GtkWidget * create_win (gchar * str) { GtkWidget * win; GtkAccelGroup * accel_group; accel_group = gtk_accel_group_new (); win = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW(win), str); gtk_window_add_accel_group (GTK_WINDOW (win), accel_group); return win; } GtkWidget * curvetbox (void) { int i; GtkWidget * ctbox; GtkWidget * vbox; ctbox = create_win("Tool boxes"); gtk_widget_set_size_request (ctbox, 300, 250); gtk_window_set_resizable (GTK_WINDOW (ctbox), FALSE); gtk_window_set_transient_for (GTK_WINDOW(ctbox), GTK_WINDOW(MainWindow)); graph_img[0] = g_strdup_printf ("%s", PACKAGE_GR); graph_img[1] = g_strdup_printf ("%s", PACKAGE_SQ); graph_img[2] = g_strdup_printf ("%s", PACKAGE_SQ); graph_img[3] = g_strdup_printf ("%s", PACKAGE_GR); graph_img[4] = g_strdup_printf ("%s", PACKAGE_BD); graph_img[5] = g_strdup_printf ("%s", PACKAGE_AN); graph_img[6] = g_strdup_printf ("%s", PACKAGE_RI); graph_img[7] = g_strdup_printf ("%s", PACKAGE_CH); graph_img[8] = g_strdup_printf ("%s", PACKAGE_SP); graph_img[9] = g_strdup_printf ("%s", PACKAGE_MS); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5); for (i=0; i< NGRAPHS; i++) { expand[i] = create_expander (graph_name[i], graph_img[i], i, TRUE); gtk_widget_set_size_request (expand[i], 300, 20); gtk_container_add (GTK_CONTAINER(vbox), expand[i]); } gtk_container_add (GTK_CONTAINER(ctbox), vbox); gtk_widget_show_all (vbox); g_signal_connect(G_OBJECT(ctbox), "delete-event", G_CALLBACK(gtk_widget_hide_on_delete), NULL); return (ctbox); }