#include #include #include #include #include #include "misc.h" #define _(STRING) gettext(STRING) #define TAX 1.111111111 GtkLabel *calculated_value = NULL; void calculate_tax(GtkWidget *entry) { char *entry_text; float money; const gchar *label_text; entry_text = (char*) gtk_entry_get_text(GTK_ENTRY(entry)); money = atof(entry_text); if (is_float(entry_text, money)) { g_print("$%d * %f = ", (int) round(money), TAX); money = money * TAX; g_print("$%d\n", (int) round(money)); label_text = g_strconcat((const gchar *) "$", g_strdup_printf("%i", (int) round(money)), NULL); gtk_label_set_text(calculated_value, label_text); } } int main(int argc, char *argv[]) { int opt; float money; setlocale(LC_ALL, ""); bindtextdomain("addtax", "/usr/share/locale/"); textdomain("addtax"); if (argc > 1) { while ((opt = getopt(argc, argv, "")) != -1) { switch (opt) { default: fprintf(stderr, _("Usage: %s [prices...]\n"), argv[0]); return 1; } } for (opt = 1; opt < argc; opt++) { money = atof(argv[opt]); if (is_float(argv[opt], money)) { printf("$%d * %f = ", (int) round(money), TAX); money = money * TAX; printf("$%d\n", (int) round(money)); } else { fprintf(stderr, _("Usage: %s [prices...]\n"), argv[0]); return 1; } } return 0; } GtkBuilder *builder; GtkWidget *window; gtk_init(&argc, &argv); builder = gtk_builder_new(); gtk_builder_add_from_resource(builder, "/cl/cromer/addtax/window_main.glade", NULL); window = GTK_WIDGET(gtk_builder_get_object(builder, "window_main")); gtk_builder_connect_signals(builder, NULL); calculated_value = (GtkLabel*) gtk_builder_get_object (builder, "calculated_value"); g_object_unref(builder); gtk_widget_show(window); gtk_main(); return 0; } // Called when calculate is clicked void on_button_calculate_clicked(GtkWidget *button, GtkWidget *entry) { calculate_tax(entry); } // Called when the user presses enter on the entry void on_entry_price_activate(GtkWidget *entry) { calculate_tax(entry); } // Called when window is closed void on_window_main_destroy() { gtk_main_quit(); }