X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-dict.c;h=d19fc809edccf68c8cde11f01f0c6dc8172030b6;hb=d1d36e7a9553b6effe6e6839128a05ef82b59466;hp=564257f46c8cdb74c6adef8ce6d4547f0bd70764;hpb=85b74d9faae382bba86a4042d5119d41672bf3ff;p=pspp
diff --git a/src/ui/gui/psppire-dict.c b/src/ui/gui/psppire-dict.c
index 564257f46c..d19fc809ed 100644
--- a/src/ui/gui/psppire-dict.c
+++ b/src/ui/gui/psppire-dict.c
@@ -1,5 +1,5 @@
/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2004, 2006, 2007 Free Software Foundation
+ Copyright (C) 2004, 2006, 2007, 2009 Free Software Foundation
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -15,21 +15,26 @@
along with this program. If not, see . */
#include
+
+#include "ui/gui/psppire-dict.h"
+
#include
#include
-
#include
-#include
-#include "psppire-dict.h"
-#include
-#include
-#include
-#include
-
-#include "helper.h"
-#include "message-dialog.h"
+#include "data/dictionary.h"
+#include "data/missing-values.h"
+#include "data/value-labels.h"
+#include "data/variable.h"
+#include "libpspp/i18n.h"
+#include "libpspp/message.h"
+#include "ui/gui/helper.h"
+#include "ui/gui/psppire-marshal.h"
+#include "ui/gui/psppire-var-ptr.h"
+#include
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
enum {
BACKEND_CHANGED,
@@ -242,11 +247,10 @@ addcb (struct dictionary *d, int idx, void *pd)
}
static void
-delcb (struct dictionary *d, int dict_idx, int case_idx, int value_cnt,
- void *pd)
+delcb (struct dictionary *d, int dict_idx, int case_idx, int width, void *pd)
{
g_signal_emit (pd, signals [VARIABLE_DELETED], 0,
- dict_idx, case_idx, value_cnt );
+ dict_idx, case_idx, width );
}
static void
@@ -256,9 +260,9 @@ mutcb (struct dictionary *d, int idx, void *pd)
}
static void
-resize_cb (struct dictionary *d, int idx, int delta, void *pd)
+resize_cb (struct dictionary *d, int idx, int old_width, void *pd)
{
- g_signal_emit (pd, signals [VARIABLE_RESIZED], 0, idx, delta);
+ g_signal_emit (pd, signals [VARIABLE_RESIZED], 0, idx, old_width);
}
static void
@@ -352,7 +356,14 @@ auto_generate_var_name (PsppireDict *dict)
gint d = 0;
static gchar name[10];
- while (g_snprintf (name, 10, "VAR%05d",d++),
+ /* TRANSLATORS: This string must be a valid variable name. That means:
+ - The string must be at most 64 bytes (not characters) long.
+ - The string may not contain whitespace.
+ - The first character may not be '$'
+ - The first character may not be a digit
+ - The final charactor may not be '.' or '_'
+ */
+ while (g_snprintf (name, 10, _("VAR%05d"), d++),
psppire_dict_lookup_var (dict, name))
;
@@ -472,6 +483,17 @@ psppire_dict_get_value_cnt (const PsppireDict *d)
}
+/* Returns the prototype for the cases that match the dictionary */
+const struct caseproto *
+psppire_dict_get_proto (const PsppireDict *d)
+{
+ g_return_val_if_fail (d, NULL);
+ g_return_val_if_fail (d->dict, NULL);
+
+ return dict_get_proto (d->dict);
+}
+
+
/* Return a variable by name.
Return NULL if it doesn't exist
*/
@@ -530,17 +552,14 @@ void
psppire_dict_resize_variable (PsppireDict *d, const struct variable *pv,
gint old_size, gint new_size)
{
- gint fv;
g_return_if_fail (d);
g_return_if_fail (d->dict);
if ( old_size == new_size )
return ;
- fv = var_get_case_index (pv);
-
g_signal_emit (d, signals [VARIABLE_RESIZED], 0,
- fv + old_size,
+ var_get_dict_index (pv),
new_size - old_size );
}
@@ -640,7 +659,7 @@ tree_model_column_type (GtkTreeModel *model, gint index)
return G_TYPE_STRING;
break;
case DICT_TVM_COL_VAR:
- return G_TYPE_POINTER;
+ return PSPPIRE_VAR_PTR_TYPE;
break;
default:
g_return_val_if_reached ((GType)0);
@@ -752,15 +771,13 @@ tree_model_get_value (GtkTreeModel *model, GtkTreeIter *iter,
{
case DICT_TVM_COL_NAME:
{
- gchar *name = pspp_locale_to_utf8(var_get_name (var), -1, NULL);
- g_value_init (value, G_TYPE_STRING);
- g_value_set_string (value, name);
- g_free (name);
+ g_value_init (value, G_TYPE_STRING);
+ g_value_set_string (value, var_get_name (var));
}
break;
case DICT_TVM_COL_VAR:
- g_value_init (value, G_TYPE_POINTER);
- g_value_set_pointer (value, var);
+ g_value_init (value, PSPPIRE_VAR_PTR_TYPE);
+ g_value_set_boxed (value, var);
break;
default:
g_return_if_reached ();
@@ -850,12 +867,20 @@ psppire_dict_dump (const PsppireDict *dict)
{
const struct variable *v = psppire_dict_get_variable (dict, i);
int di = var_get_dict_index (v);
- g_print ("\"%s\" idx=%d, fv=%d, size=%d\n",
+ g_print ("`%s' idx=%d, fv=%d\n",
var_get_name(v),
di,
- var_get_case_index(v),
- value_cnt_from_width(var_get_width(v)));
+ var_get_case_index(v));
}
}
#endif
+
+
+
+
+const gchar *
+psppire_dict_encoding (const PsppireDict *dict)
+{
+ return dict_get_encoding (dict->dict);
+}