From: Michael Dominic Kostrzewa Date: Fri, 9 Feb 2007 09:37:08 +0000 (+0000) Subject: Adding a toolbar example. Making the add/remove toolbar documentation in HildonWindow... X-Git-Tag: 2.1.66-1~952 X-Git-Url: http://git.maemo.org/git/?a=commitdiff_plain;h=4ead33776037e4e12d54cc279c6d851180d913b2;p=hildon Adding a toolbar example. Making the add/remove toolbar documentation in HildonWindow a bit more verbose about the visibility and memory management. --- diff --git a/ChangeLog.2 b/ChangeLog.2 index 24b3727..e347a19 100644 --- a/ChangeLog.2 +++ b/ChangeLog.2 @@ -1,3 +1,11 @@ +2007-02-09 Michael Dominic Kostrzewa + + * examples/Makefile.am: + * examples/hildon-toolbar-example.c: + * src/hildon-window.c: Adding a toolbar example. Making the add/remove + toolbar documentation in HildonWindow a bit more verbose about + visibility and memory management. + 2007-02-08 Michael Dominic Kostrzewa * examples/Makefile.am: diff --git a/examples/Makefile.am b/examples/Makefile.am index a9030cc..f0a072a 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -19,7 +19,8 @@ noinst_PROGRAMS = hildon-window-example \ hildon-set-password-dialog-example \ hildon-window-menu-example \ hildon-window-cmn-menu-example \ - hildon-vvolumebar-example + hildon-vvolumebar-example \ + hildon-toolbar-example # HIldon window hildon_window_example_LDADD = $(HILDON_OBJ_LIBS) @@ -116,4 +117,9 @@ hildon_vvolumebar_example_LDADD = $(HILDON_OBJ_LIBS) hildon_vvolumebar_example_CFLAGS = $(HILDON_OBJ_CFLAGS) hildon_vvolumebar_example_SOURCES = hildon-vvolumebar-example.c +# Hildon toolbar example +hildon_toolbar_example_LDADD = $(HILDON_OBJ_LIBS) +hildon_toolbar_example_CFLAGS = $(HILDON_OBJ_CFLAGS) +hildon_toolbar_example_SOURCES = hildon-toolbar-example.c + endif diff --git a/examples/hildon-toolbar-example.c b/examples/hildon-toolbar-example.c new file mode 100644 index 0000000..9afb35b --- /dev/null +++ b/examples/hildon-toolbar-example.c @@ -0,0 +1,128 @@ +/* + * This file is a part of hildon examples + * + * Copyright (C) 2005, 2006 Nokia Corporation, all rights reserved. + * + * Author: Michael Dominic Kostrzewa + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; version 2.1 of + * the License. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * 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., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA + * + */ + +#include +#include +#include +#include +#include "hildon.h" + +gboolean has_toolbar = FALSE; + +HildonWindow* window = NULL; + +GtkToolbar* toolbar = NULL; + +static gboolean +on_add_clicked (GtkWidget *widget) +{ + if (has_toolbar) + hildon_banner_show_information (widget, NULL, "Toolbar already added"); + else { + hildon_window_add_toolbar (window, toolbar); + has_toolbar = TRUE; + } + + return TRUE; +} + +static gboolean +on_remove_clicked (GtkWidget *widget) +{ + if (! has_toolbar) + hildon_banner_show_information (widget, NULL, "No toolbar added"); + else { + g_object_ref (toolbar); + hildon_window_remove_toolbar (window, toolbar); + has_toolbar = FALSE; + } + + return TRUE; +} + +static gboolean +on_show_clicked (GtkWidget *widget) +{ + if (! has_toolbar) + hildon_banner_show_information (widget, NULL, "No toolbar added"); + else + gtk_widget_show_all (GTK_WIDGET (toolbar)); + + return TRUE; +} + +static gboolean +on_hide_clicked (GtkWidget *widget) +{ + if (! has_toolbar) + hildon_banner_show_information (widget, NULL, "No toolbar added"); + else + gtk_widget_hide_all (GTK_WIDGET (toolbar)); + + return TRUE; +} + +int +main (int argc, + char **args) +{ + gtk_init (&argc, &args); + + HildonProgram *program = hildon_program_get_instance (); + + window = HILDON_WINDOW (hildon_window_new ()); + hildon_program_add_window (program, window); + toolbar = GTK_TOOLBAR (hildon_find_toolbar_new ("Find")); + + gtk_container_set_border_width (GTK_CONTAINER (window), 6); + + GtkVBox *vbox = GTK_VBOX (gtk_vbox_new (6, FALSE)); + + GtkButton *button1 = GTK_BUTTON (gtk_button_new_with_label ("Add toolbar")); + g_signal_connect (G_OBJECT (button1), "clicked", G_CALLBACK (on_add_clicked), NULL); + + GtkButton *button2 = GTK_BUTTON (gtk_button_new_with_label ("Remove toolbar")); + g_signal_connect (G_OBJECT (button2), "clicked", G_CALLBACK (on_remove_clicked), NULL); + + GtkButton *button3 = GTK_BUTTON (gtk_button_new_with_label ("Show toolbar")); + g_signal_connect (G_OBJECT (button3), "clicked", G_CALLBACK (on_show_clicked), NULL); + + GtkButton *button4 = GTK_BUTTON (gtk_button_new_with_label ("Hide toolbar")); + g_signal_connect (G_OBJECT (button4), "clicked", G_CALLBACK (on_hide_clicked), NULL); + + g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (gtk_main_quit), NULL); + + gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (button1), TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (button2), TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (button3), TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (button4), TRUE, TRUE, 0); + gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (vbox)); + + gtk_widget_show_all (GTK_WIDGET (window)); + + gtk_main (); + return 0; +} + + diff --git a/src/hildon-window.c b/src/hildon-window.c index bb63e57..e9970f4 100644 --- a/src/hildon-window.c +++ b/src/hildon-window.c @@ -1670,7 +1670,10 @@ hildon_window_add_with_scrollbar (HildonWindow *self, * @self: A @HildonWindow * @toolbar: A #GtkToolbar to add to the HildonWindow * - * Adds a toolbar to the window. + * Adds a toolbar to the window. Note that the toolbar is not automatically + * shown. You need to call #gtk_widget_show_all on it to make it visible. + * It's also possible to hide the toolbar (without removing it) by calling + * #gtk_widget_hide_all. **/ void hildon_window_add_toolbar (HildonWindow *self, @@ -1697,7 +1700,9 @@ hildon_window_add_toolbar (HildonWindow *self, * @self: A @HildonWindow * @toolbar: A #GtkToolbar to remove from the HildonWindow * - * Removes a toolbar from the window. + * Removes a toolbar from the window. Note that this decreases the refference + * count on the widget. If you want to keep the toolbar alive call #g_object_ref + * before calling this function. **/ void hildon_window_remove_toolbar (HildonWindow *self,