projects
/
pspp-builds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Adjusted packing properties as appropriatate
[pspp-builds.git]
/
src
/
ui
/
gui
/
psppire-dict.c
diff --git
a/src/ui/gui/psppire-dict.c
b/src/ui/gui/psppire-dict.c
index 8560c223f1236b0b7de9d4904b55c4e1b0358b3e..91293956b9e8e2ab613b83b719674c1b54e7bc97 100644
(file)
--- a/
src/ui/gui/psppire-dict.c
+++ b/
src/ui/gui/psppire-dict.c
@@
-19,10
+19,9
@@
#include <stdlib.h>
#include <gtk/gtk.h>
#include <stdlib.h>
#include <gtk/gtk.h>
-#include <
gtksheet/gtkextra
-marshal.h>
+#include <
ui/gui/psppire
-marshal.h>
#include "psppire-dict.h"
#include "psppire-dict.h"
-#include <data/format.h>
#include <data/dictionary.h>
#include <data/missing-values.h>
#include <data/value-labels.h>
#include <data/dictionary.h>
#include <data/missing-values.h>
#include <data/value-labels.h>
@@
-31,6
+30,23
@@
#include "helper.h"
#include "message-dialog.h"
#include "helper.h"
#include "message-dialog.h"
+
+enum {
+ BACKEND_CHANGED,
+
+ VARIABLE_CHANGED,
+ VARIABLE_RESIZED,
+ VARIABLE_INSERTED,
+ VARIABLE_DELETED,
+ VARIABLE_DISPLAY_WIDTH_CHANGED,
+
+ WEIGHT_CHANGED,
+ FILTER_CHANGED,
+ SPLIT_CHANGED,
+ n_SIGNALS
+};
+
+
/* --- prototypes --- */
static void psppire_dict_class_init (PsppireDictClass *class);
static void psppire_dict_init (PsppireDict *dict);
/* --- prototypes --- */
static void psppire_dict_class_init (PsppireDictClass *class);
static void psppire_dict_init (PsppireDict *dict);
@@
-42,15
+58,6
@@
static void dictionary_tree_model_init (GtkTreeModelIface *iface);
/* --- variables --- */
static GObjectClass *parent_class = NULL;
/* --- variables --- */
static GObjectClass *parent_class = NULL;
-enum {VARIABLE_CHANGED,
- VARIABLE_RESIZED,
- VARIABLE_INSERTED,
- VARIABLE_DELETED,
- WEIGHT_CHANGED,
- FILTER_CHANGED,
- SPLIT_CHANGED,
- n_SIGNALS};
-
static guint signals [n_SIGNALS];
/* --- functions --- */
static guint signals [n_SIGNALS];
/* --- functions --- */
@@
-89,8
+96,6
@@
psppire_dict_get_type (void)
g_type_add_interface_static (object_type, GTK_TYPE_TREE_MODEL,
&tree_model_info);
g_type_add_interface_static (object_type, GTK_TYPE_TREE_MODEL,
&tree_model_info);
-
-
}
return object_type;
}
return object_type;
@@
-106,6
+111,17
@@
psppire_dict_class_init (PsppireDictClass *class)
object_class->finalize = psppire_dict_finalize;
object_class->finalize = psppire_dict_finalize;
+ signals [BACKEND_CHANGED] =
+ g_signal_new ("backend-changed",
+ G_TYPE_FROM_CLASS (class),
+ G_SIGNAL_RUN_FIRST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+
+
signals [VARIABLE_CHANGED] =
g_signal_new ("variable_changed",
G_TYPE_FROM_CLASS (class),
signals [VARIABLE_CHANGED] =
g_signal_new ("variable_changed",
G_TYPE_FROM_CLASS (class),
@@
-137,7
+153,7
@@
psppire_dict_class_init (PsppireDictClass *class)
G_SIGNAL_RUN_FIRST,
0,
NULL, NULL,
G_SIGNAL_RUN_FIRST,
0,
NULL, NULL,
-
marshaller
_VOID__INT_INT_INT,
+
psppire_marshal
_VOID__INT_INT_INT,
G_TYPE_NONE,
3,
G_TYPE_INT,
G_TYPE_NONE,
3,
G_TYPE_INT,
@@
-151,12
+167,23
@@
psppire_dict_class_init (PsppireDictClass *class)
G_SIGNAL_RUN_FIRST,
0,
NULL, NULL,
G_SIGNAL_RUN_FIRST,
0,
NULL, NULL,
-
gtkextra
_VOID__INT_INT,
+
psppire_marshal
_VOID__INT_INT,
G_TYPE_NONE,
2,
G_TYPE_INT,
G_TYPE_INT);
G_TYPE_NONE,
2,
G_TYPE_INT,
G_TYPE_INT);
+ signals [VARIABLE_DISPLAY_WIDTH_CHANGED] =
+ g_signal_new ("variable-display-width-changed",
+ G_TYPE_FROM_CLASS (class),
+ G_SIGNAL_RUN_FIRST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__INT,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_INT);
+
signals [WEIGHT_CHANGED] =
g_signal_new ("weight-changed",
signals [WEIGHT_CHANGED] =
g_signal_new ("weight-changed",
@@
-208,7
+235,10
@@
psppire_dict_finalize (GObject *object)
static void
addcb (struct dictionary *d, int idx, void *pd)
{
static void
addcb (struct dictionary *d, int idx, void *pd)
{
- g_signal_emit (pd, signals [VARIABLE_INSERTED], 0, idx);
+ PsppireDict *dict = PSPPIRE_DICT (pd);
+
+ if ( ! dict->disable_insert_signal)
+ g_signal_emit (dict, signals [VARIABLE_INSERTED], 0, idx);
}
static void
}
static void
@@
-249,6
+279,13
@@
split_changed_callback (struct dictionary *d, void *pd)
g_signal_emit (pd, signals [SPLIT_CHANGED], 0);
}
g_signal_emit (pd, signals [SPLIT_CHANGED], 0);
}
+static void
+variable_display_width_callback (struct dictionary *d, int idx, void *pd)
+{
+ g_signal_emit (pd, signals [VARIABLE_DISPLAY_WIDTH_CHANGED], 0, idx);
+}
+
+
static const struct dict_callbacks gui_callbacks =
{
static const struct dict_callbacks gui_callbacks =
{
@@
-258,13
+295,15
@@
static const struct dict_callbacks gui_callbacks =
resize_cb,
weight_changed_callback,
filter_changed_callback,
resize_cb,
weight_changed_callback,
filter_changed_callback,
- split_changed_callback
+ split_changed_callback,
+ variable_display_width_callback
};
static void
psppire_dict_init (PsppireDict *psppire_dict)
{
psppire_dict->stamp = g_random_int ();
};
static void
psppire_dict_init (PsppireDict *psppire_dict)
{
psppire_dict->stamp = g_random_int ();
+ psppire_dict->disable_insert_signal = FALSE;
}
/**
}
/**
@@
-289,6
+328,7
@@
void
psppire_dict_replace_dictionary (PsppireDict *dict, struct dictionary *d)
{
struct variable *var = dict_get_weight (d);
psppire_dict_replace_dictionary (PsppireDict *dict, struct dictionary *d)
{
struct variable *var = dict_get_weight (d);
+
dict->dict = d;
weight_changed_callback (d, var ? var_get_dict_index (var) : -1, dict);
dict->dict = d;
weight_changed_callback (d, var ? var_get_dict_index (var) : -1, dict);
@@
-299,6
+339,8
@@
psppire_dict_replace_dictionary (PsppireDict *dict, struct dictionary *d)
split_changed_callback (d, dict);
dict_set_callbacks (dict->dict, &gui_callbacks, dict);
split_changed_callback (d, dict);
dict_set_callbacks (dict->dict, &gui_callbacks, dict);
+
+ g_signal_emit (dict, signals [BACKEND_CHANGED], 0);
}
}
@@
-331,9
+373,15
@@
psppire_dict_insert_variable (PsppireDict *d, gint idx, const gchar *name)
if ( ! name )
name = auto_generate_var_name (d);
if ( ! name )
name = auto_generate_var_name (d);
+ d->disable_insert_signal = TRUE;
+
var = dict_create_var (d->dict, name, 0);
dict_reorder_var (d->dict, var, idx);
var = dict_create_var (d->dict, name, 0);
dict_reorder_var (d->dict, var, idx);
+
+ d->disable_insert_signal = FALSE;
+
+ g_signal_emit (d, signals[VARIABLE_INSERTED], 0, idx);
}
/* Delete N variables beginning at FIRST */
}
/* Delete N variables beginning at FIRST */
@@
-386,7
+434,9
@@
psppire_dict_set_name (PsppireDict* d, gint idx, const gchar *name)
-/* Return the IDXth variable */
+/* Return the IDXth variable.
+ Will return NULL if IDX exceeds the number of variables in the dictionary.
+ */
struct variable *
psppire_dict_get_variable (const PsppireDict *d, gint idx)
{
struct variable *
psppire_dict_get_variable (const PsppireDict *d, gint idx)
{
@@
-469,7
+519,7
@@
psppire_dict_check_name (const PsppireDict *dict,
}
}
-
inline
gint
+gint
psppire_dict_get_next_value_idx (const PsppireDict *dict)
{
return dict_get_next_value_idx (dict->dict);
psppire_dict_get_next_value_idx (const PsppireDict *dict)
{
return dict_get_next_value_idx (dict->dict);
@@
-771,6
+821,10
@@
psppire_dict_rename_var (PsppireDict *dict, struct variable *v,
if ( ! var_is_valid_name (name, false))
return FALSE;
if ( ! var_is_valid_name (name, false))
return FALSE;
+ /* Make sure no other variable has this name */
+ if ( NULL != psppire_dict_lookup_var (dict, name))
+ return FALSE;
+
dict_rename_var (dict->dict, v, name);
return TRUE;
dict_rename_var (dict->dict, v, name);
return TRUE;