static void atom_processor(int type, int count, int buf_last, unsigned char *working_buffer, int buf_idx) { int i; /*printf("atom_processor(%04x, %d, %d, %d)\n", type, count, buf_last, buf_idx); */ if (output_this_container == 0) return; switch (type) { case 0x0FA0: /* Text String in unicode */ /*printf("text string in unicode\n"); */ print_unicode(working_buffer, buf_idx); emitchar('\n'); break; case 0x0FA8: /* Text String in ASCII */ for (i=0;i<buf_idx; i++) { if (working_buffer[i] == 0x0D) { emitchar('\n'); } else { emitchar(working_buffer[i]); } } emitchar('\n'); break; case 0x0FBA: /* CString - unicode... */ /*printf("cstring - unicode\n"); */ print_unicode(working_buffer, buf_idx); emitchar('\n'); break; case 0x03F3: /* new sheet? */ emitchar('\f'); break; default: /*printf("none of the above\n"); */ break; } }
int main (int argc, char* argv[]) { GtkWidget *entry, *label, *button; GtkWidget *window, *hbox, *vbox, *grid, *top_vbox; gint index = 0; gchar *tmp; gtk_init (&argc, &argv); memset (entries, 0, sizeof (entries)); print_unicode ("0"); print_unicode ("9"); print_unicode ("@"); print_unicode ("^"); print_unicode ("#"); print_unicode ("€"); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); top_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_container_add(GTK_CONTAINER(window), top_vbox); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start (GTK_BOX (top_vbox), hbox, FALSE, FALSE, 0); /* * GdauiEntry widgets */ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0); label = gtk_label_new (""); gtk_label_set_markup (GTK_LABEL (label), "<b>GdauiEntry</b>"); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); #define HAVE_NORMAL #ifdef HAVE_NORMAL /* #0 */ #define L0 "NULL, NULL" label = make_label (0, L0); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); entry = gdaui_entry_new (NULL, NULL); entries[index] = entry; index++; gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); g_signal_connect (entry, "changed", G_CALLBACK (entry_changed_cb), L0); /* #1 */ #define L1 "\"€ \", NULL" label = make_label (1, L1); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); entry = gdaui_entry_new ("€ ", NULL); entries[index] = entry; index++; gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); g_signal_connect (entry, "changed", G_CALLBACK (entry_changed_cb), L1); /* #2 */ #define L2 "NULL, \" Ê\"" label = make_label (2, L2); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); entry = gdaui_entry_new (NULL, " Ê"); entries[index] = entry; index++; gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); g_signal_connect (entry, "changed", G_CALLBACK (entry_changed_cb), L2); /* #3 */ #define L3 "\"€€ \", \" êê\"" label = make_label (3, L3); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); entry = gdaui_entry_new ("€€ ", " êê"); entries[index] = entry; index++; gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); g_signal_connect (entry, "changed", G_CALLBACK (entry_changed_cb), L3); #endif #define HAVE_FORMATTED #ifdef HAVE_FORMATTED /* * GdauiFormattedEntry widgets */ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0); label = gtk_label_new (""); gtk_label_set_markup (GTK_LABEL (label), "<b>GdauiFormattedEntry</b>"); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); /* #4 */ #define L4 "\"TIME=00:00:00\", NULL" label = make_label (4, L4); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); entry = gdaui_formatted_entry_new ("TIME=00:00:00", NULL); entries[index] = entry; index++; gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); g_signal_connect (entry, "changed", G_CALLBACK (entry_changed_cb), L4); /* #5 */ #define L5 "\"TIME=00€00:00\", \"------- -- \"" label = make_label (5, L5); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); entry = gdaui_formatted_entry_new ("TIME=00€00:00", "------- -- "); entries[index] = entry; index++; gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); g_signal_connect (entry, "changed", G_CALLBACK (entry_changed_cb), L5); #endif #define HAVE_NUMERIC #ifdef HAVE_NUMERIC /* * GdauiNumericEntry widgets */ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0); label = gtk_label_new (""); gtk_label_set_markup (GTK_LABEL (label), "<b>GdauiNumericEntry</b>"); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); /* #6 */ tmp = g_strdup_printf ("#%d: %s", index, "G_TYPE_CHAR"); label = gtk_label_new (tmp); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); entry = gdaui_numeric_entry_new (G_TYPE_CHAR); entries[index] = entry; index++; gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); g_signal_connect (entry, "changed", G_CALLBACK (entry_changed_cb), tmp); /* #7 */ tmp = g_strdup_printf ("#%d: %s", index, "G_TYPE_UINT, thousand sep=','"); label = gtk_label_new (tmp); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); entry = gdaui_numeric_entry_new (G_TYPE_UINT); g_object_set (G_OBJECT (entry), "thousands-sep", ',', NULL); entries[index] = entry; index++; gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); g_signal_connect (entry, "changed", G_CALLBACK (entry_changed_cb), tmp); /* #8 */ tmp = g_strdup_printf ("#%d: %s", index, "G_TYPE_FLOAT, n_decimals=2"); label = gtk_label_new (tmp); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); entry = gdaui_numeric_entry_new (G_TYPE_FLOAT); g_object_set (G_OBJECT (entry), "n-decimals", 2, NULL); entries[index] = entry; index++; gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); g_signal_connect (entry, "changed", G_CALLBACK (entry_changed_cb), tmp); /* #9 */ tmp = g_strdup_printf ("#%d: %s", index, "G_TYPE_DOUBLE"); label = gtk_label_new (tmp); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); entry = gdaui_numeric_entry_new (G_TYPE_DOUBLE); entries[index] = entry; index++; gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); g_signal_connect (entry, "changed", G_CALLBACK (entry_changed_cb), tmp); /* #10 */ tmp = g_strdup_printf ("#%d: %s", index, "G_TYPE_FLOAT, thousand sep=' ', n_decimals=2"); label = gtk_label_new (tmp); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); entry = gdaui_numeric_entry_new (G_TYPE_FLOAT); g_object_set (G_OBJECT (entry), "n-decimals", 2, NULL); g_object_set (G_OBJECT (entry), "thousands-sep", ' ', NULL); entries[index] = entry; index++; gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); g_signal_connect (entry, "changed", G_CALLBACK (entry_changed_cb), tmp); #endif #define HAVE_COMPLETE #ifdef HAVE_COMPLETE /* * complete tests */ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0); label = gtk_label_new (""); gtk_label_set_markup (GTK_LABEL (label), "<b>Complete tests</b>"); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); /* #11 */ tmp = g_strdup_printf ("#%d: %s", index, "2 decimals with EURO"); label = gtk_label_new (tmp); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); entry = gdaui_numeric_entry_new (G_TYPE_FLOAT); g_object_set (G_OBJECT (entry), "suffix", "€", "n-decimals", 2, NULL); entries[index] = entry; index++; gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); g_signal_connect (entry, "changed", G_CALLBACK (entry_changed_cb), tmp); /* #12 */ tmp = g_strdup_printf ("#%d: %s", index, "3 decimals between markers"); label = gtk_label_new (tmp); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); entry = gdaui_numeric_entry_new (G_TYPE_FLOAT); g_object_set (G_OBJECT (entry), "prefix", "[", "suffix", "]", "n-decimals", 3, NULL); entries[index] = entry; index++; gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); g_signal_connect (entry, "changed", G_CALLBACK (entry_changed_cb), tmp); /* #13 */ tmp = g_strdup_printf ("#%d: %s", index, "**.* between markers"); label = gtk_label_new (tmp); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); entry = gdaui_formatted_entry_new ("**.*", NULL); g_object_set (G_OBJECT (entry), "suffix", "]", "prefix", "[", NULL); entries[index] = entry; index++; gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); g_signal_connect (entry, "changed", G_CALLBACK (entry_changed_cb), tmp); /* #14 */ tmp = g_strdup_printf ("#%d: %s", index, "900//@@@//^^^/##** between markers"); label = gtk_label_new (tmp); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); entry = gdaui_formatted_entry_new ("900//@@@//^^^/##**", NULL); g_object_set (G_OBJECT (entry), "suffix", "]", "prefix", "[", NULL); entries[index] = entry; index++; gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); g_signal_connect (entry, "changed", G_CALLBACK (entry_changed_cb), tmp); #endif /* properties */ label = gtk_label_new (""); gtk_label_set_markup (GTK_LABEL (label), "<b>Common properties:</b>"); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_box_pack_start (GTK_BOX (top_vbox), label, FALSE, FALSE, 10); grid = gtk_grid_new (); gtk_box_pack_start (GTK_BOX (top_vbox), grid, TRUE, TRUE, 0); label = gtk_label_new ("MaxLen:"); gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1); entry = gdaui_entry_new (NULL, NULL); /* FIXME: use a gint data entry */ gtk_grid_attach (GTK_GRID (grid), entry, 1, 0, 1, 1); button = gtk_button_new_with_label ("Set"); gtk_grid_attach (GTK_GRID (grid), button, 2, 0, 1, 1); g_signal_connect (button, "clicked", G_CALLBACK (prop_length_set_cb), entry); label = gtk_label_new ("Force text:"); gtk_grid_attach (GTK_GRID (grid), label, 0, 1, 1, 1); entry = gdaui_entry_new (NULL, NULL); gtk_grid_attach (GTK_GRID (grid), entry, 1, 1, 1, 1); button = gtk_button_new_with_label ("Set"); gtk_grid_attach (GTK_GRID (grid), button, 2, 1, 1, 1); g_signal_connect (button, "clicked", G_CALLBACK (prop_text_set_cb), entry); label = gtk_label_new ("Force text to NULL:"); gtk_grid_attach (GTK_GRID (grid), label, 0, 2, 2, 1); button = gtk_button_new_with_label ("Set"); gtk_grid_attach (GTK_GRID (grid), button, 2, 2, 1, 1); g_signal_connect (button, "clicked", G_CALLBACK (prop_text_null_cb), entry); gtk_widget_show_all(window); gtk_main(); return 0; }