From 79bbf19c446267b05e0f5bfdd9595ef07ff564d9 Mon Sep 17 00:00:00 2001 From: Zwarf Date: Wed, 19 Jul 2023 14:06:56 +0200 Subject: [PATCH] Add change stack signal --- src/window/overview-page/overview-view.c | 38 ++++++++++++++++++++++++ src/window/picplanner-window.c | 15 ++++++++++ 2 files changed, 53 insertions(+) diff --git a/src/window/overview-page/overview-view.c b/src/window/overview-page/overview-view.c index 30ca661..21995ca 100644 --- a/src/window/overview-page/overview-view.c +++ b/src/window/overview-page/overview-view.c @@ -91,12 +91,35 @@ G_DEFINE_TYPE (PicplannerOverview, picplanner_overview, GTK_TYPE_BOX) * Catch all signals from the buttons and emit a signal which can be used by * picplanner-window to change the stack page. */ +static guint signal_button_pressed; void change_stack_page (GtkButton *self, gpointer user_data) { + int stack_page = 0; + PicplannerOverview *overview = user_data; + + if (self == GTK_BUTTON(overview->switch_to_sun_stack)) + { + g_print("Button Sun\n"); + stack_page = 1; + } + else if (self == GTK_BUTTON(overview->switch_to_moon_stack)) + { + g_print("Button Moon\n"); + stack_page = 2; + } + else if (self == GTK_BUTTON(overview->switch_to_milky_way_stack)) + { + g_print("Button Milky Way\n"); + stack_page = 3; + } + g_signal_emit (overview, + signal_button_pressed, + 0, NULL, + stack_page); } @@ -771,6 +794,14 @@ picplanner_overview_init (PicplannerOverview *overview) "clicked", G_CALLBACK (change_stack_page), overview); + g_signal_connect (G_OBJECT (overview->switch_to_moon_stack), + "clicked", + G_CALLBACK (change_stack_page), + overview); + g_signal_connect (G_OBJECT (overview->switch_to_milky_way_stack), + "clicked", + G_CALLBACK (change_stack_page), + overview); /* @@ -812,6 +843,13 @@ picplanner_overview_class_init (PicplannerOverviewClass *class) gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), PicplannerOverview, label_azimuth_moon); gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), PicplannerOverview, label_azimuth_milky_way); gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), PicplannerOverview, basic_information); + + signal_button_pressed = g_signal_new ("change-stack", + G_OBJECT_CLASS_TYPE (class), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, + 1, G_TYPE_INT); } PicplannerOverview * diff --git a/src/window/picplanner-window.c b/src/window/picplanner-window.c index bd3d0cd..26d35de 100644 --- a/src/window/picplanner-window.c +++ b/src/window/picplanner-window.c @@ -76,6 +76,16 @@ struct _PicplannerWindow G_DEFINE_TYPE (PicplannerWindow, picplanner_window, ADW_TYPE_APPLICATION_WINDOW) +/* + * Change the stack page after a button is pressed in the overview dialog + */ +static void +change_stack_page (GtkWidget *self, + int stack_page, + gpointer user_data) +{ + g_print("Page: %d\n", stack_page); +} /* * Function used after the user selects a search result @@ -659,6 +669,11 @@ picplanner_window_init (PicplannerWindow *window) G_CALLBACK (input_changed), window); + g_signal_connect (G_OBJECT (window->overview_box), + "change-stack", + G_CALLBACK (change_stack_page), + window); + /* * Initialisation of values needed to detect when a user input ends */