From: Scott Worley Date: Thu, 23 Feb 2023 18:31:09 +0000 (-0800) Subject: Keep the charts in State X-Git-Url: http://git.scottworley.com/batteryviewer/commitdiff_plain/fc1a2773a0f61d12cd3ae3771c3afbfe7f255565?hp=a8d35c4c92d096c7383e482fd831277e87320079 Keep the charts in State --- diff --git a/batteryviewer.c b/batteryviewer.c index 535ef74..a525a72 100644 --- a/batteryviewer.c +++ b/batteryviewer.c @@ -1,8 +1,12 @@ #include "chart.h" #include -static void activate(GtkApplication *app, - gpointer user_data __attribute__((unused))) { +struct State { + BVChart *voltage; + BVChart *current; +}; + +static void activate(GtkApplication *app, gpointer user_data) { GtkWidget *window = gtk_application_window_new(app); gtk_window_set_title(GTK_WINDOW(window), "BatteryViewer"); @@ -11,28 +15,32 @@ static void activate(GtkApplication *app, GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 1); gtk_container_add(GTK_CONTAINER(window), box); - GtkWidget *chart = bv_chart_new(); - bv_chart_add_point(BV_CHART(chart), 0.0, 0.0); - bv_chart_add_point(BV_CHART(chart), 1.0, 1.0); - bv_chart_add_point(BV_CHART(chart), 3.0, 2.0); + 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), chart, expand, fill, padding); + gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(state->voltage), expand, fill, + padding); - GtkWidget *chart2 = bv_chart_new(); - bv_chart_add_point(BV_CHART(chart2), 0.0, 1.0); - bv_chart_add_point(BV_CHART(chart2), 1.0, 0.0); - gtk_box_pack_end(GTK_BOX(box), chart2, 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); } int main(int argc, char **argv) { + struct State state; GtkApplication *app = gtk_application_new("com.scottworley.batteryviewer", G_APPLICATION_DEFAULT_FLAGS); - g_signal_connect(app, "activate", G_CALLBACK(activate), NULL); + g_signal_connect(app, "activate", G_CALLBACK(activate), &state); int status = g_application_run(G_APPLICATION(app), argc, argv); g_object_unref(app);