- /* Set up OpenGL Stuff, glade doesn't like doing these */
- g_signal_connect(drawing, "map-event", G_CALLBACK(on_map), gui);
- g_signal_connect(drawing, "configure-event", G_CALLBACK(on_configure), gui);
- g_signal_connect(drawing, "expose-event", G_CALLBACK(on_expose), gui);
+static void time_setup(AWeatherGui *self)
+{
+ /* Add times */
+ GtkTreeStore *store = GTK_TREE_STORE(aweather_gui_get_object(self, "times"));
+ for (int hour = 0; hour < 24; hour++) {
+ GtkTreeIter hour_iter;
+ gchar *str = g_strdup_printf("%02d:00Z", hour);
+ gtk_tree_store_append(store, &hour_iter, NULL);
+ gtk_tree_store_set(store, &hour_iter, 0, str, 1, hour, 2, 0, -1);
+ g_free(str);
+ for (int min = 5; min < 60; min += 5) {
+ GtkTreeIter min_iter;
+ gchar *str = g_strdup_printf("%02d:%02dZ", hour, min);
+ gtk_tree_store_append(store, &min_iter, &hour_iter);
+ gtk_tree_store_set(store, &min_iter, 0, str, 1, hour, 2, min, -1);
+ g_free(str);
+ }
+ }
+
+ /* Connect signals */
+ GtkWidget *cal = aweather_gui_get_widget(self, "main_date_cal");
+ GtkWidget *view = aweather_gui_get_widget(self, "main_time");
+ g_signal_connect_swapped(cal, "day-selected-double-click",
+ G_CALLBACK(on_time_changed), self);
+ g_signal_connect_swapped(view, "row-activated",
+ G_CALLBACK(on_time_changed), self);
+ g_signal_connect(self->viewer, "time-changed",
+ G_CALLBACK(update_time_widget), self);