diff options
author | Xiao Pan <xyz@flylightning.xyz> | 2025-05-07 03:29:30 -0700 |
---|---|---|
committer | Xiao Pan <xyz@flylightning.xyz> | 2025-05-07 03:29:30 -0700 |
commit | 3941d395bd4d845f66d649be35954ed126f71b1e (patch) | |
tree | e16635e35976dabd354a2346532ca9b5b33807a6 /remote_plot.c | |
parent | fc34769490efd9e912e5c22c167304e613cc4c7e (diff) |
a little better logic
Diffstat (limited to 'remote_plot.c')
-rw-r--r-- | remote_plot.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/remote_plot.c b/remote_plot.c index 062e709..1d1cab7 100644 --- a/remote_plot.c +++ b/remote_plot.c @@ -685,6 +685,8 @@ static void set_from_time (GtkWidget *widget, gpointer user_data) DATA *data=user_data; if(!(data->from_time_entered)) data->from_time_entered=true; + // TODO: consider bad input + // assume good input, assume no empty input data->from_time=strtoul(gtk_editable_get_text(GTK_EDITABLE(data->from_entry)),NULL,10); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->last_seconds_toggle),FALSE); gtk_widget_queue_draw(data->area); @@ -695,8 +697,11 @@ static void set_to_time (GtkWidget *widget, gpointer user_data) DATA *data=user_data; //if(!(data->to_time_entered)) // data->to_time_entered=true; - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->live_toggle),FALSE); + // set last_seconds_toggle first, because live_toggle will check if last_seconds_toggle is true gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->last_seconds_toggle),FALSE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->live_toggle),FALSE); + // TODO: consider bad input + // assume good input, assume no empty input data->to_time=strtoul(gtk_editable_get_text(GTK_EDITABLE(data->to_entry)),NULL,10); gtk_widget_queue_draw(data->area); } @@ -707,6 +712,17 @@ static void update_drawing_area (GtkWidget *widget, gpointer user_data) gtk_widget_queue_draw(data->area); } +static void live_toggle_callback(GtkWidget *widget, gpointer user_data) +{ + DATA *data=user_data; + if(!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->live_toggle)) && gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->last_seconds_toggle))) + { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->live_toggle),TRUE); + return; + } + gtk_widget_queue_draw(data->area); +} + static void last_seconds_toggle_callback(GtkWidget *widget, gpointer user_data) { DATA *data=user_data; @@ -755,8 +771,8 @@ static void activate (GtkApplication *app, gpointer user_data) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->live_toggle),TRUE); // TODO: better live_toggle logic and state consider other states // live_toggle logic not perfect, if consider its states and other states will make logic very complex, so not using live_toggle_callback for now - //g_signal_connect (data->live_toggle, "toggled", G_CALLBACK (live_toggle_callback), user_data); - g_signal_connect (data->live_toggle, "toggled", G_CALLBACK (update_drawing_area), user_data); + g_signal_connect (data->live_toggle, "toggled", G_CALLBACK (live_toggle_callback), user_data); + //g_signal_connect (data->live_toggle, "toggled", G_CALLBACK (update_drawing_area), user_data); data->unix_time_toggle = gtk_toggle_button_new_with_label("Unix time"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->unix_time_toggle),FALSE); |