fixes
[speedometer] / ui.c
diff --git a/ui.c b/ui.c
index ea70e28..aec5446 100644 (file)
--- a/ui.c
+++ b/ui.c
  ****/
 
 #include <gtk/gtk.h>
+#include <glib/gprintf.h>
 
 #include "ui.h"
 #include "callbacks.h"
 
+static GtkWidget* graphix[10];         // contains all the graphics
+static GtkWidget* big_digits[3];       // big digits that are shown as speed
+static GtkWidget* small_digits[2];     // small digits that are shown on the screen
+
 #define IMAGE_PATH "/usr/share/speedometer/%d.png"
 
 static void set_widget_bg_black(GtkWidget* widget) {
+       g_assert(widget);
        GdkColor black;
        black.red = 0x0000;
        black.blue = 0x0000;
@@ -31,46 +37,52 @@ static void set_widget_bg_black(GtkWidget* widget) {
        gtk_widget_modify_bg(GTK_WIDGET(widget), GTK_STATE_NORMAL, &black);
 }
 
-void load_images(AppData *appdata) {
+void load_graphix(AppData *appdata) {
+       g_assert(appdata);
        g_print("Loading images\n");
-       int i = 0;
+       guint i = 0;
        while(i < 10) {
-               char* path = malloc(30);
+               char* path = g_malloc(30);
                g_sprintf(path, IMAGE_PATH, i);
-               appdata->image_array[i] = (GtkImage*) gtk_image_new_from_file(path);
+               graphix[i] = gtk_image_new_from_file(path);
                g_print(path);
                g_print("\n");
-               free(path);
+               g_free(path);
                i++;
        }
 }
 
-void reset_speed(AppData* appdata) {
+void set_digits_to_zero(AppData* appdata) {
+       g_assert(appdata);
 
-       GdkPixbuf* zero = gtk_image_get_pixbuf(appdata->image_array[0]);
+       GdkPixbuf* zero = gtk_image_get_pixbuf(GTK_IMAGE(graphix[0]));
 
-       appdata->speed_array[0] = (GtkImage*) gtk_image_new_from_pixbuf(zero);
-       appdata->speed_array[1] = (GtkImage*) gtk_image_new_from_pixbuf(zero);
-       appdata->speed_array[2] = (GtkImage*) gtk_image_new_from_pixbuf(zero);
+       big_digits[0] = GTK_WIDGET(gtk_image_new_from_pixbuf(zero));
+       big_digits[1] = GTK_WIDGET(gtk_image_new_from_pixbuf(zero));
+       big_digits[2] = GTK_WIDGET(gtk_image_new_from_pixbuf(zero));
 }
 
-guint randomize(AppData* appdata) {
-
-       gint32 n = g_random_int_range(0, 3);
-       GtkImage* image = appdata->speed_array[n];
+void set_nth_digit(AppData* appdata, guint n, guint value) {
 
-       gint32 m = g_random_int_range(0, 10);
-       GdkPixbuf* buf = gtk_image_get_pixbuf(appdata->image_array[m]);
+       g_assert(value < 10);
+       g_assert(n < 3);
 
-       g_print("Setting number %d to %d.. ", n+1, m);
+       GtkWidget* image = big_digits[n];
+       GdkPixbuf* buf = gtk_image_get_pixbuf(GTK_IMAGE(graphix[value]));
+       gtk_image_set_from_pixbuf(GTK_IMAGE(image), buf);
+}
 
-       gtk_image_set_from_pixbuf(image, buf);
-       gtk_widget_queue_draw(GTK_WIDGET(appdata->speed_array[n]));
+void repaint_all_digits(AppData* appdata) {
 
-       return TRUE;
+       gtk_widget_queue_draw(GTK_WIDGET(big_digits[0]));
+       gtk_widget_queue_draw(GTK_WIDGET(big_digits[1]));
+       gtk_widget_queue_draw(GTK_WIDGET(big_digits[2]));
 }
 
 void create_ui(AppData* appdata) {
+       g_assert(appdata);
+
+       appdata->unit = 1; // by default use km/h display
 
        GtkWidget *hbox;
        GtkWidget *vbox;
@@ -102,9 +114,9 @@ void create_ui(AppData* appdata) {
                appdata->window);
 
        // add three digits to the hbox
-       gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(appdata->speed_array[0]), FALSE, FALSE, 0);
-       gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(appdata->speed_array[1]), FALSE, FALSE, 0);
-       gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(appdata->speed_array[2]), FALSE, FALSE, 0);
+       gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(big_digits[0]), FALSE, FALSE, 0);
+       gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(big_digits[1]), FALSE, FALSE, 0);
+       gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(big_digits[2]), FALSE, FALSE, 0);
 
        gtk_box_pack_start_defaults(GTK_BOX(vbox), top_e); // add event box on top
        gtk_box_pack_start_defaults(GTK_BOX(vbox), hbox); // numbers to the middle
@@ -112,11 +124,12 @@ void create_ui(AppData* appdata) {
 
        gtk_container_add(GTK_CONTAINER(appdata->window), GTK_WIDGET(vbox));
 
-
        // set backgrounds black
        set_widget_bg_black(GTK_WIDGET(appdata->window));
        set_widget_bg_black(bottom_e);
        set_widget_bg_black(top_e);
 
+       gtk_window_fullscreen(GTK_WINDOW(appdata->window));
+       gtk_widget_show_all(GTK_WIDGET(appdata->window));
 }