2009-03-12 Alberto Garcia <agarcia@igalia.com>
[hildon] / src / hildon-edit-toolbar.c
index 9c970c9..ff11687 100644 (file)
  * actually peform actions the developer must provide callbacks for
  * them.
  *
+ * To add a #HildonEditToolbar to a window use
+ * hildon_window_set_edit_toolbar().
+ *
  * <example>
  * <title>HildonEditToolbar example</title>
  * <programlisting>
  * GtkWidget *window;
- * GtkWidget *vbox;
  * GtkWidget *toolbar;
  * // Declare more widgets here ...
  * <!-- -->
  * window = hildon_stackable_window_new ();
- * vbox = gtk_vbox_new (FALSE, 10);
  * toolbar = hildon_edit_toolbar_new_with_text ("Choose items to delete", "Delete");
  * // Create more widgets here ...
  * <!-- -->
- * gtk_container_add (GTK_CONTAINER (window), vbox);
- * gtk_box_pack_start (GTK_BOX (vbox), toolbar, FALSE, FALSE, 0);
- * // Pack more widgets here ...
+ * // Add toolbar to window
+ * hildon_window_set_edit_toolbar (HILDON_WINDOW (window), HILDON_EDIT_TOOLBAR (toolbar));
+ * <!-- -->
+ * // Add other widgets ...
  * <!-- -->
  * g_signal_connect (toolbar, "button-clicked", G_CALLBACK (delete_button_clicked), someparameter);
  * g_signal_connect_swapped (toolbar, "arrow-clicked", G_CALLBACK (gtk_widget_destroy), window);
@@ -61,6 +63,9 @@
 
 G_DEFINE_TYPE                                   (HildonEditToolbar, hildon_edit_toolbar, GTK_TYPE_HBOX);
 
+#define                                         TOOLBAR_LEFT_PADDING 8
+#define                                         TOOLBAR_RIGHT_PADDING 8
+
 #define                                         HILDON_EDIT_TOOLBAR_GET_PRIVATE(obj) \
                                                 (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
                                                 HILDON_TYPE_EDIT_TOOLBAR, HildonEditToolbarPrivate));
@@ -180,32 +185,42 @@ static void
 hildon_edit_toolbar_init                        (HildonEditToolbar *self)
 {
     HildonEditToolbarPrivate *priv = HILDON_EDIT_TOOLBAR_GET_PRIVATE (self);
+    GtkWidget *separator;
+    GtkAlignment *align;
     GtkBox *hbox = GTK_BOX (self);
+    GtkBox *hbox2;
 
+    hbox2 = GTK_BOX (gtk_hbox_new (FALSE, 0));
+    align = GTK_ALIGNMENT (gtk_alignment_new (0, 0.5, 1, 1));
     priv->label = GTK_LABEL (gtk_label_new (NULL));
-    priv->button = GTK_BUTTON (hildon_gtk_button_new (HILDON_SIZE_AUTO_WIDTH | HILDON_SIZE_FINGER_HEIGHT));
+    priv->button = GTK_BUTTON (hildon_gtk_button_new (HILDON_SIZE_AUTO));
+    separator = gtk_vseparator_new ();
     priv->arrow = GTK_BUTTON (gtk_button_new ());
 
-    gtk_button_set_image (priv->arrow, gtk_image_new_from_stock (GTK_STOCK_GO_BACK, GTK_ICON_SIZE_LARGE_TOOLBAR));
-    gtk_button_set_relief (priv->arrow, GTK_RELIEF_NONE);
     gtk_button_set_focus_on_click (priv->arrow, FALSE);
 
     g_signal_connect (priv->button, "clicked", G_CALLBACK (button_clicked_cb), self);
     g_signal_connect (priv->arrow, "clicked", G_CALLBACK (arrow_clicked_cb), self);
 
-    gtk_box_set_spacing (hbox, 10);
+    gtk_box_set_spacing (hbox, 0);
+    gtk_alignment_set_padding (align, 0, 0, TOOLBAR_LEFT_PADDING, TOOLBAR_RIGHT_PADDING);
 
+    gtk_widget_set_name (GTK_WIDGET (self), "toolbar-edit-mode");
     gtk_widget_set_name (GTK_WIDGET (priv->arrow), "hildon-edit-toolbar-arrow");
 
-    gtk_box_pack_start (hbox, GTK_WIDGET (priv->label), TRUE, TRUE, 0);
-    gtk_box_pack_start (hbox, GTK_WIDGET (priv->button), FALSE, FALSE, 0);
+    gtk_container_add (GTK_CONTAINER (align), GTK_WIDGET (hbox2));
+    gtk_box_pack_start (hbox2, GTK_WIDGET (priv->label), TRUE, TRUE, 0);
+    gtk_box_pack_start (hbox2, GTK_WIDGET (priv->button), FALSE, FALSE, 0);
+
+    gtk_box_pack_start (hbox, GTK_WIDGET (align), TRUE, TRUE, 0);
+    gtk_box_pack_start (hbox, separator, FALSE, FALSE, 0);
     gtk_box_pack_start (hbox, GTK_WIDGET (priv->arrow), FALSE, FALSE, 0);
 
     gtk_misc_set_alignment (GTK_MISC (priv->label), 0, 0.5);
 
-    gtk_widget_show (GTK_WIDGET (priv->label));
-    gtk_widget_show (GTK_WIDGET (priv->button));
-    gtk_widget_show (GTK_WIDGET (priv->arrow));
+    gtk_widget_show_all (GTK_WIDGET (align));
+    gtk_widget_show_all (separator);
+    gtk_widget_show_all (GTK_WIDGET (priv->arrow));
 }
 
 /**