X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkassistant.c;h=3ba9f227be5abc7934d793a7877a92be13638a2d;hb=6f1476edd3fbe31259e59ca3f03a01bf0f8ff67b;hp=e95bf68503df89c56b2361db1126d7e542ae6164;hpb=c6aca6bb6014ae82910e7d1a7599de49107c4713;p=~andy%2Fgtk diff --git a/gtk/gtkassistant.c b/gtk/gtkassistant.c index e95bf6850..3ba9f227b 100644 --- a/gtk/gtkassistant.c +++ b/gtk/gtkassistant.c @@ -18,9 +18,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . */ /** @@ -68,6 +66,7 @@ #include "gtknotebook.h" #include "gtkimage.h" #include "gtklabel.h" +#include "gtksettings.h" #include "gtksizegroup.h" #include "gtksizerequest.h" #include "gtkstock.h" @@ -167,6 +166,12 @@ static void gtk_assistant_buildable_custom_finished (GtkBuildable *bui static GList* find_page (GtkAssistant *assistant, GtkWidget *page); +static void gtk_assistant_do_set_page_header_image (GtkAssistant *assistant, + GtkWidget *page, + GdkPixbuf *pixbuf); +static void gtk_assistant_do_set_page_side_image (GtkAssistant *assistant, + GtkWidget *page, + GdkPixbuf *pixbuf); GType _gtk_assistant_accessible_get_type (void); @@ -714,6 +719,10 @@ set_current_page (GtkAssistant *assistant, priv->current_page = (GtkAssistantPage *)g_list_nth_data (priv->pages, page_num); g_signal_emit (assistant, signals [PREPARE], 0, priv->current_page->page); + /* do not continue if the prepare signal handler has already changed the + * current page */ + if (priv->current_page != (GtkAssistantPage *)g_list_nth_data (priv->pages, page_num)) + return; update_title_state (assistant); @@ -1000,11 +1009,11 @@ gtk_assistant_init (GtkAssistant *assistant) gtk_button_set_image (GTK_BUTTON (priv->forward), gtk_image_new_from_stock (GTK_STOCK_GO_FORWARD, GTK_ICON_SIZE_BUTTON)); priv->back = gtk_button_new_with_mnemonic (_("Go _Back")); - gtk_button_set_image (GTK_BUTTON (priv->forward), + gtk_button_set_image (GTK_BUTTON (priv->back), gtk_image_new_from_stock (GTK_STOCK_GO_BACK, GTK_ICON_SIZE_BUTTON)); priv->cancel = gtk_button_new_from_stock (GTK_STOCK_CANCEL); priv->last = gtk_button_new_with_mnemonic (_("_Finish")); - gtk_button_set_image (GTK_BUTTON (priv->forward), + gtk_button_set_image (GTK_BUTTON (priv->last), gtk_image_new_from_stock (GTK_STOCK_GOTO_LAST, GTK_ICON_SIZE_BUTTON)); gtk_widget_set_can_default (priv->close, TRUE); gtk_widget_set_can_default (priv->apply, TRUE); @@ -1018,6 +1027,13 @@ gtk_assistant_init (GtkAssistant *assistant) gtk_size_group_add_widget (priv->button_size_group, priv->cancel); gtk_size_group_add_widget (priv->button_size_group, priv->last); + gtk_widget_set_no_show_all (priv->close, TRUE); + gtk_widget_set_no_show_all (priv->apply, TRUE); + gtk_widget_set_no_show_all (priv->forward, TRUE); + gtk_widget_set_no_show_all (priv->back, TRUE); + gtk_widget_set_no_show_all (priv->cancel, TRUE); + gtk_widget_set_no_show_all (priv->last, TRUE); + if (!alternative_button_order (assistant)) { gtk_box_pack_end (GTK_BOX (priv->action_area), priv->apply, FALSE, FALSE, 0); @@ -1086,12 +1102,12 @@ gtk_assistant_set_child_property (GtkContainer *container, g_value_get_string (value)); break; case CHILD_PROP_PAGE_HEADER_IMAGE: - gtk_assistant_set_page_header_image (GTK_ASSISTANT (container), child, - g_value_get_object (value)); + gtk_assistant_do_set_page_header_image (GTK_ASSISTANT (container), child, + g_value_get_object (value)); break; case CHILD_PROP_PAGE_SIDEBAR_IMAGE: - gtk_assistant_set_page_side_image (GTK_ASSISTANT (container), child, - g_value_get_object (value)); + gtk_assistant_do_set_page_side_image (GTK_ASSISTANT (container), child, + g_value_get_object (value)); break; case CHILD_PROP_PAGE_COMPLETE: gtk_assistant_set_page_complete (GTK_ASSISTANT (container), child, @@ -1110,27 +1126,29 @@ gtk_assistant_get_child_property (GtkContainer *container, GValue *value, GParamSpec *pspec) { + GtkAssistant *assistant = GTK_ASSISTANT (container); + switch (property_id) { case CHILD_PROP_PAGE_TYPE: g_value_set_enum (value, - gtk_assistant_get_page_type (GTK_ASSISTANT (container), child)); + gtk_assistant_get_page_type (assistant, child)); break; case CHILD_PROP_PAGE_TITLE: g_value_set_string (value, - gtk_assistant_get_page_title (GTK_ASSISTANT (container), child)); + gtk_assistant_get_page_title (assistant, child)); break; case CHILD_PROP_PAGE_HEADER_IMAGE: g_value_set_object (value, - gtk_assistant_get_page_header_image (GTK_ASSISTANT (container), child)); + ((GtkAssistantPage*) find_page (assistant, child))->header_image); break; case CHILD_PROP_PAGE_SIDEBAR_IMAGE: g_value_set_object (value, - gtk_assistant_get_page_side_image (GTK_ASSISTANT (container), child)); + ((GtkAssistantPage*) find_page (assistant, child))->sidebar_image); break; case CHILD_PROP_PAGE_COMPLETE: g_value_set_boolean (value, - gtk_assistant_get_page_complete (GTK_ASSISTANT (container), child)); + gtk_assistant_get_page_complete (assistant, child)); break; default: GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); @@ -1608,7 +1626,9 @@ gtk_assistant_insert_page (GtkAssistant *assistant, page_info = g_slice_new0 (GtkAssistantPage); page_info->page = page; page_info->regular_title = gtk_label_new (NULL); + gtk_widget_set_no_show_all (page_info->regular_title, TRUE); page_info->current_title = gtk_label_new (NULL); + gtk_widget_set_no_show_all (page_info->current_title, TRUE); /* Note: we need to use misc alignment here as long as GtkLabel * pays attention to it. GtkWiget::halign is ineffective, since @@ -1657,7 +1677,7 @@ gtk_assistant_insert_page (GtkAssistant *assistant, * gtk_assistant_remove_page: * @assistant: a #GtkAssistant * @page_num: the index of a page in the @assistant, - * or -1 to get the last page + * or -1 to remove the last page * * Removes the @page_num's page from @assistant. * @@ -1960,13 +1980,21 @@ gtk_assistant_set_page_header_image (GtkAssistant *assistant, GtkWidget *page, GdkPixbuf *pixbuf) { - GtkAssistantPage *page_info; - GList *child; - g_return_if_fail (GTK_IS_ASSISTANT (assistant)); g_return_if_fail (GTK_IS_WIDGET (page)); g_return_if_fail (pixbuf == NULL || GDK_IS_PIXBUF (pixbuf)); + gtk_assistant_do_set_page_header_image (assistant, page, pixbuf); +} + +static void +gtk_assistant_do_set_page_header_image (GtkAssistant *assistant, + GtkWidget *page, + GdkPixbuf *pixbuf) +{ + GtkAssistantPage *page_info; + GList *child; + child = find_page (assistant, page); g_return_if_fail (child != NULL); @@ -2043,13 +2071,21 @@ gtk_assistant_set_page_side_image (GtkAssistant *assistant, GtkWidget *page, GdkPixbuf *pixbuf) { - GtkAssistantPage *page_info; - GList *child; - g_return_if_fail (GTK_IS_ASSISTANT (assistant)); g_return_if_fail (GTK_IS_WIDGET (page)); g_return_if_fail (pixbuf == NULL || GDK_IS_PIXBUF (pixbuf)); + gtk_assistant_do_set_page_side_image (assistant, page, pixbuf); +} + +static void +gtk_assistant_do_set_page_side_image (GtkAssistant *assistant, + GtkWidget *page, + GdkPixbuf *pixbuf) +{ + GtkAssistantPage *page_info; + GList *child; + child = find_page (assistant, page); g_return_if_fail (child != NULL);