Added done-edit signal to GcalToolbar.

Connected ::done-edit to GcalEventView widget.
Minor geometry fixes.
This commit is contained in:
Erick Pérez Castellanos
2012-07-03 15:20:01 -04:00
parent bb85e5756f
commit caf77599aa
5 changed files with 85 additions and 19 deletions
+26 -5
View File
@@ -49,6 +49,7 @@ enum
BACK,
EDIT_EVENT,
DONE_EDIT,
NUM_SIGNALS
};
@@ -139,6 +140,16 @@ gcal_toolbar_class_init (GcalToolbarClass *klass)
G_TYPE_NONE,
0);
signals[DONE_EDIT] = g_signal_new ("done-edit",
GCAL_TYPE_TOOLBAR,
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GcalToolbarClass,
done_edit),
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE,
0);
g_type_class_add_private ((gpointer) klass, sizeof(GcalToolbarPrivate));
}
@@ -430,19 +441,22 @@ gcal_toolbar_set_event_mode (GcalToolbar *toolbar)
/* edit */
if (priv->edit_button == NULL)
{
priv->edit_button = gtk_button_new_with_label (_("Edit"));
priv->edit_button = gtk_toggle_button_new_with_label (_("Edit"));
g_object_ref_sink (priv->edit_button);
context = gtk_widget_get_style_context (priv->edit_button);
gtk_style_context_add_class (context, "raised");
g_signal_connect (priv->edit_button,
"clicked",
"toggled",
G_CALLBACK (gcal_toolbar_event_edited),
toolbar);
}
/* reset morphing edit_button */
gtk_button_set_label (GTK_BUTTON (priv->edit_button), _("Edit"));
g_signal_handlers_block_by_func (priv->edit_button, gcal_toolbar_event_edited, toolbar);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->edit_button), FALSE);
g_signal_handlers_unblock_by_func (priv->edit_button, gcal_toolbar_event_edited, toolbar);
gtk_container_add (GTK_CONTAINER (priv->right_item), priv->edit_button);
gtk_widget_show_all (priv->edit_button);
@@ -506,9 +520,16 @@ gcal_toolbar_event_edited (GtkWidget *button,
priv = toolbar->priv;
/* morphing edit_button */
gtk_button_set_label (GTK_BUTTON (priv->edit_button), _("Done"));
g_signal_emit (toolbar, signals[EDIT_EVENT], 0);
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)))
{
g_signal_emit (toolbar, signals[EDIT_EVENT], 0);
gtk_button_set_label (GTK_BUTTON (priv->edit_button), _("Done"));
}
else
{
g_signal_emit (toolbar, signals[DONE_EDIT], 0);
gtk_button_set_label (GTK_BUTTON (priv->edit_button), _("Edit"));
}
}
/* Public API */