g_value_set_enum (value, PSPPIRE_VERTICAL);
else if ( GTK_IS_HBOX (dialog->box))
g_value_set_enum (value, PSPPIRE_HORIZONTAL);
+ else if ( GTK_IS_TABLE (dialog->box))
+ g_value_set_enum (value, PSPPIRE_TABULAR);
}
break;
default:
gtk_container_remove (GTK_CONTAINER (dialog), dialog->box);
}
- if ( orientation == PSPPIRE_HORIZONTAL)
+ switch ( orientation )
{
+ case PSPPIRE_HORIZONTAL:
dialog->box = gtk_hbox_new (FALSE, 5);
- }
- else
- {
+ break;
+ case PSPPIRE_VERTICAL:
dialog->box = gtk_vbox_new (FALSE, 5);
+ break;
+ case PSPPIRE_TABULAR:
+ dialog->box = gtk_table_new (2, 3, FALSE);
+ g_object_set (dialog->box,
+ "row-spacing", 5,
+ "column-spacing", 5,
+ NULL);
+ break;
}
gtk_container_add (GTK_CONTAINER (dialog), dialog->box);
}
-static void
-notify_change (PsppireDialog *dialog)
+void
+psppire_dialog_notify_change (PsppireDialog *dialog)
{
if ( dialog->contents_are_valid )
{
/* Descend the widget tree, connecting appropriate signals to the
- notify_change callback */
+ psppire_dialog_notify_change callback */
static void
connect_notify_signal (GtkWidget *w, gpointer data)
{
if ( GTK_IS_TOGGLE_BUTTON (w))
{
- g_signal_connect_swapped (w, "toggled", G_CALLBACK (notify_change),
+ g_signal_connect_swapped (w, "toggled",
+ G_CALLBACK (psppire_dialog_notify_change),
dialog);
}
if ( PSPPIRE_IS_SELECTOR (w))
{
- g_signal_connect_swapped (w, "selected", G_CALLBACK (notify_change),
+ g_signal_connect_swapped (w, "selected",
+ G_CALLBACK (psppire_dialog_notify_change),
dialog);
- g_signal_connect_swapped (w, "de-selected", G_CALLBACK (notify_change),
+ g_signal_connect_swapped (w, "de-selected",
+ G_CALLBACK (psppire_dialog_notify_change),
dialog);
}
if ( GTK_IS_EDITABLE (w))
{
- g_signal_connect_swapped (w, "changed", G_CALLBACK (notify_change),
+ g_signal_connect_swapped (w, "changed",
+ G_CALLBACK (psppire_dialog_notify_change),
dialog);
}
if ( GTK_IS_CELL_EDITABLE (w))
{
- g_signal_connect_swapped (w, "editing-done", G_CALLBACK (notify_change),
+ g_signal_connect_swapped (w, "editing-done",
+ G_CALLBACK (psppire_dialog_notify_change),
dialog);
}
{
GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (w));
- g_signal_connect_swapped (buffer, "changed", G_CALLBACK (notify_change),
+ g_signal_connect_swapped (buffer, "changed",
+ G_CALLBACK (psppire_dialog_notify_change),
dialog);
}
GtkTreeSelection *selection =
gtk_tree_view_get_selection (tv);
GtkTreeViewColumn *col;
+ GtkTreeModel *model = gtk_tree_view_get_model (tv);
+
+ if ( model)
+ {
+ g_signal_connect_swapped (model, "row-changed",
+ G_CALLBACK (psppire_dialog_notify_change),
+ dialog);
+
+ g_signal_connect_swapped (model, "row-deleted",
+ G_CALLBACK (psppire_dialog_notify_change),
+ dialog);
+
+ g_signal_connect_swapped (model, "row-inserted",
+ G_CALLBACK (psppire_dialog_notify_change),
+ dialog);
+ }
g_signal_connect_swapped (selection, "changed",
- G_CALLBACK (notify_change), dialog);
+ G_CALLBACK (psppire_dialog_notify_change),
+ dialog);
while ((col = gtk_tree_view_get_column (tv, i++)))
{
{
if ( GTK_IS_CELL_RENDERER_TOGGLE (renderers->data))
g_signal_connect_swapped (renderers->data, "toggled",
- G_CALLBACK (notify_change), dialog);
+ G_CALLBACK (psppire_dialog_notify_change), dialog);
renderers = renderers->next;
}
g_list_free (start);
g_main_loop_run (dialog->loop);
+ g_main_loop_unref (dialog->loop);
+
return dialog->response;
}
{
{ PSPPIRE_HORIZONTAL, "PSPPIRE_HORIZONTAL", "Horizontal" },
{ PSPPIRE_VERTICAL, "PSPPIRE_VERTICAL", "Vertical" },
+ { PSPPIRE_TABULAR, "PSPPIRE_TABULAR", "Tabular" },
{ 0, NULL, NULL }
};