X-Git-Url: http://git.scottworley.com/batteryviewer/blobdiff_plain/d2485ebc69f6ceef5148ec84731c6bcf4b5407e4..6f50819eef408d0d7bc691bc1a239e26aae01cf5:/batteryviewer.c?ds=sidebyside diff --git a/batteryviewer.c b/batteryviewer.c index 7be007c..65d7009 100644 --- a/batteryviewer.c +++ b/batteryviewer.c @@ -1,33 +1,53 @@ +#include "chart.h" #include -static void print_hello(GtkWidget *widget __attribute__((unused)), - gpointer data __attribute__((unused))) { - g_print("Hello World\n"); +struct State { + BVChart *voltage; + BVChart *current; +}; + +static gboolean collect_data(struct State *state __attribute__((unused))) { + return TRUE; } -static void activate(GtkApplication *app, - gpointer user_data __attribute__((unused))) { - GtkWidget *window; - GtkWidget *button; +static void activate(GtkApplication *app, gpointer user_data) { - window = gtk_application_window_new(app); - gtk_window_set_title(GTK_WINDOW(window), "Window"); + GtkWidget *window = gtk_application_window_new(app); + gtk_window_set_title(GTK_WINDOW(window), "BatteryViewer"); gtk_window_set_default_size(GTK_WINDOW(window), 200, 200); - button = gtk_button_new_with_label("Hello World"); - g_signal_connect(button, "clicked", G_CALLBACK(print_hello), NULL); - gtk_window_set_child(GTK_WINDOW(window), button); - - gtk_window_present(GTK_WINDOW(window)); + GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 1); + gtk_container_add(GTK_CONTAINER(window), box); + + struct State *state = (struct State *)user_data; + state->voltage = BV_CHART(bv_chart_new()); + bv_chart_add_point(state->voltage, 0.0, 0.0); + bv_chart_add_point(state->voltage, 1.0, 1.0); + bv_chart_add_point(state->voltage, 3.0, 2.0); + gboolean expand = TRUE; + gboolean fill = TRUE; + guint padding = 0; + gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(state->voltage), expand, fill, + padding); + + state->current = BV_CHART(bv_chart_new()); + bv_chart_add_point(state->current, 0.0, 1.0); + bv_chart_add_point(state->current, 1.0, 0.0); + gtk_box_pack_end(GTK_BOX(box), GTK_WIDGET(state->current), expand, fill, + padding); + + gtk_widget_show_all(window); + + g_timeout_add_seconds(1, (GSourceFunc)collect_data, user_data); } int main(int argc, char **argv) { - GtkApplication *app; - int status; + struct State state; - app = gtk_application_new("org.gtk.example", G_APPLICATION_DEFAULT_FLAGS); - g_signal_connect(app, "activate", G_CALLBACK(activate), NULL); - status = g_application_run(G_APPLICATION(app), argc, argv); + GtkApplication *app = gtk_application_new("com.scottworley.batteryviewer", + G_APPLICATION_DEFAULT_FLAGS); + g_signal_connect(app, "activate", G_CALLBACK(activate), &state); + int status = g_application_run(G_APPLICATION(app), argc, argv); g_object_unref(app); return status;