---- /Scratch/john/tmp.vKHTg31290/share/pspp/data-editor.glade 2007-03-31 12:55:02.000000000 +0800
-+++ src/ui/gui/data-editor.glade 2007-03-31 13:04:27.000000000 +0800
-@@ -494,7 +494,7 @@
+--- xxx 2007-04-29 11:57:19.000000000 +0800
++++ src/ui/gui/data-editor.glade 2007-04-29 11:57:37.000000000 +0800
+@@ -526,7 +526,7 @@
+ <property name="visible">True</property>
<property name="sensitive">False</property>
+ <property name="tooltip" translatable="yes">Recall</property>
+- <property name="stock_id">gtk-missing-image</property>
++ <property name="stock_id">pspp-recent-dialogs</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+@@ -588,7 +588,7 @@
+ <property name="visible">True</property>
<property name="tooltip" translatable="yes">Variables</property>
<property name="use_underline">True</property>
- <property name="stock_id">gtk-missing-image</property>
</widget>
<packing>
<property name="expand">False</property>
-@@ -535,7 +535,7 @@
+@@ -629,7 +629,7 @@
<property name="sensitive">False</property>
<property name="tooltip" translatable="yes">Insert Case</property>
<property name="use_underline">True</property>
</widget>
<packing>
<property name="expand">False</property>
-@@ -547,7 +547,7 @@
+@@ -641,7 +641,7 @@
<property name="sensitive">False</property>
<property name="tooltip" translatable="yes">Insert Variable</property>
<property name="use_underline">True</property>
</widget>
<packing>
<property name="expand">False</property>
-@@ -567,7 +567,7 @@
+@@ -661,7 +661,7 @@
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Split File</property>
<property name="use_underline">True</property>
</widget>
<packing>
<property name="expand">False</property>
-@@ -578,7 +578,7 @@
+@@ -672,7 +672,7 @@
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Weight Cases</property>
<property name="use_underline">True</property>
</widget>
<packing>
<property name="expand">False</property>
-@@ -590,7 +590,7 @@
+@@ -684,7 +684,7 @@
<property name="sensitive">False</property>
<property name="tooltip" translatable="yes">Select Cases</property>
<property name="use_underline">True</property>
</widget>
<packing>
<property name="expand">False</property>
-@@ -610,7 +610,7 @@
+@@ -704,7 +704,7 @@
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Value Labels</property>
<property name="use_underline">True</property>
g_print ("%s\n", __FUNCTION__);
#endif
- return bbox;
+ return GTK_WIDGET (bbox);
}
#include <gtk/gtk.h>
#include "psppire-dialog.h"
-
+#include <string.h>
#include <glade-gtk.h>
#include <assert.h>
<properties>
<property id="child" disabled="True" />
<property id="visible" ignore="True" default="True" />
+
+ <property id="buttons">
+ <displayable-values>
+ <value id="PSPPIRE_BUTTON_OK_MASK" name="OK"></value>
+ <value id="PSPPIRE_BUTTON_CANCEL_MASK" name="Cancel"></value>
+ <value id="PSPPIRE_BUTTON_HELP_MASK" name="Help"></value>
+ <value id="PSPPIRE_BUTTON_RESET_MASK" name="Reset"></value>
+ <value id="PSPPIRE_BUTTON_PASTE_MASK" name="Paste"></value>
+ </displayable-values>
+ </property>
+
</properties>
<packing-defaults>
msgstr ""
"Project-Id-Version: PSPP 0.4.2\n"
"Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2007-04-28 11:18+0800\n"
+"POT-Creation-Date: 2007-04-29 12:09+0800\n"
"PO-Revision-Date: 2006-05-26 17:49+0800\n"
"Last-Translator: John Darrington <john@darrington.wattle.id.au>\n"
"Language-Team: German <pspp-dev@gnu.org>\n"
msgstr ""
#: src/data/format.c:310 src/data/por-file-reader.c:489
-#: src/data/sys-file-reader.c:629 src/ui/gui/data-editor.glade:1127
-#: src/ui/gui/psppire-var-store.c:481
+#: src/data/sys-file-reader.c:629 src/ui/gui/data-editor.glade:1157
+#: src/ui/gui/psppire-var-store.c:486
msgid "String"
msgstr "Zeichenkette"
#: src/data/format.c:310 src/data/por-file-reader.c:489
-#: src/data/sys-file-reader.c:629 src/ui/gui/data-editor.glade:1023
-#: src/ui/gui/psppire-var-store.c:474
+#: src/data/sys-file-reader.c:629 src/ui/gui/data-editor.glade:1053
+#: src/ui/gui/psppire-var-store.c:479
msgid "Numeric"
msgstr "Nummer"
msgid "Closing `%s': %s."
msgstr ""
-#: src/language/tests/check-model.q:139
-msgid "PATH and SEARCH subcommands are mutually exclusive. Ignoring PATH."
-msgstr ""
-
-#: src/language/tests/check-model.q:157
-msgid "At least one value must be specified on PATH."
-msgstr ""
-
-#: src/language/tests/check-model.q:168
-#, c-format
-msgid "Hash bits adjusted to %d."
-msgstr ""
-
-#: src/language/tests/check-model.q:209
-#, c-format
-msgid "error opening \"%s\" for writing"
-msgstr ""
-
#: src/language/tests/float-format.c:126
#, c-format
msgid "%d-byte string needed but %d-byte string supplied."
msgid "Compute new values for a variable"
msgstr "Unpassend Wert für Variable"
-#: src/ui/gui/data-editor.c:636
+#: src/ui/gui/data-editor.c:265 src/ui/gui/data-editor.glade:259
+#: src/ui/gui/data-editor.glade:589
+msgid "Variables"
+msgstr "Variableansicht"
+
+#: src/ui/gui/data-editor.c:266
+#, fuzzy
+msgid "Jump to Variable"
+msgstr "Variableansicht"
+
+#: src/ui/gui/data-editor.c:655
msgid "Font Selection"
msgstr "Schriftwahlung"
-#: src/ui/gui/data-editor.c:814
+#: src/ui/gui/data-editor.c:833
msgid "No Split"
msgstr ""
-#: src/ui/gui/data-editor.c:822
+#: src/ui/gui/data-editor.c:841
#, fuzzy
msgid "Split by "
msgstr "Alle Datei"
-#: src/ui/gui/data-editor.c:847
+#: src/ui/gui/data-editor.c:866
msgid "Filter off"
msgstr ""
-#: src/ui/gui/data-editor.c:860
+#: src/ui/gui/data-editor.c:879
#, c-format
msgid "Filter by %s"
msgstr ""
-#: src/ui/gui/data-editor.c:878
+#: src/ui/gui/data-editor.c:897
msgid "Weights off"
msgstr ""
-#: src/ui/gui/data-editor.c:891
+#: src/ui/gui/data-editor.c:910
#, c-format
msgid "Weight by %s"
msgstr ""
-#: src/ui/gui/data-editor.c:914 src/ui/gui/data-editor.c:1145
-#: src/ui/gui/data-editor.glade:465
+#: src/ui/gui/data-editor.c:933 src/ui/gui/data-editor.c:1164
+#: src/ui/gui/data-editor.glade:496
msgid "Open"
msgstr "Öffen"
-#: src/ui/gui/data-editor.c:915
+#: src/ui/gui/data-editor.c:934
msgid "Open a data file"
msgstr ""
-#: src/ui/gui/data-editor.c:923 src/ui/gui/data-editor.c:1030
-#: src/ui/gui/data-editor.glade:475
+#: src/ui/gui/data-editor.c:942 src/ui/gui/data-editor.c:1049
+#: src/ui/gui/data-editor.glade:506
msgid "Save"
msgstr "Speichen"
-#: src/ui/gui/data-editor.c:924 src/ui/gui/data-editor.c:934
+#: src/ui/gui/data-editor.c:943 src/ui/gui/data-editor.c:953
#, fuzzy
msgid "Save data to file"
msgstr "Speichern unter"
-#: src/ui/gui/data-editor.c:933
+#: src/ui/gui/data-editor.c:952
#, fuzzy
msgid "Save As"
msgstr "Speichern unter"
-#: src/ui/gui/data-editor.c:942
+#: src/ui/gui/data-editor.c:961
msgid "New"
msgstr ""
-#: src/ui/gui/data-editor.c:943
+#: src/ui/gui/data-editor.c:962
msgid "New data file"
msgstr ""
-#: src/ui/gui/data-editor.c:1038 src/ui/gui/data-editor.c:1153
+#: src/ui/gui/data-editor.c:1057 src/ui/gui/data-editor.c:1172
msgid "System Files (*.sav)"
msgstr "Systemedatein (*.sav)"
-#: src/ui/gui/data-editor.c:1044 src/ui/gui/data-editor.c:1159
+#: src/ui/gui/data-editor.c:1063 src/ui/gui/data-editor.c:1178
msgid "Portable Files (*.por) "
msgstr "Tragbardatein (*.por)"
-#: src/ui/gui/data-editor.c:1050 src/ui/gui/data-editor.c:1165
+#: src/ui/gui/data-editor.c:1069 src/ui/gui/data-editor.c:1184
#: src/ui/gui/syntax-editor.c:141 src/ui/gui/syntax-editor.c:527
msgid "All Files"
msgstr "Alle Datei"
-#: src/ui/gui/data-editor.c:1058
+#: src/ui/gui/data-editor.c:1077
#, fuzzy
msgid "System File"
msgstr "Systemedatein (*.sav)"
-#: src/ui/gui/data-editor.c:1063
+#: src/ui/gui/data-editor.c:1082
#, fuzzy
msgid "Portable File"
msgstr "Tragbardatein (*.por)"
msgid "Grid Lines"
msgstr "Glitten"
-#: src/ui/gui/data-editor.glade:240 src/ui/gui/data-editor.glade:675
-#: src/ui/gui/data-editor.glade:1385 src/ui/gui/data-editor.glade:1563
+#: src/ui/gui/data-editor.glade:240 src/ui/gui/data-editor.glade:705
+#: src/ui/gui/data-editor.glade:1415 src/ui/gui/data-editor.glade:1593
msgid "Value Labels"
msgstr "Werten"
msgid "Data"
msgstr "Daten"
-#: src/ui/gui/data-editor.glade:259 src/ui/gui/data-editor.glade:559
-msgid "Variables"
-msgstr "Variableansicht"
-
-#: src/ui/gui/data-editor.glade:278 src/ui/gui/data-editor.glade:612
+#: src/ui/gui/data-editor.glade:278 src/ui/gui/data-editor.glade:642
#, fuzzy
msgid "Insert Variable"
msgstr "Variableansicht"
msgid "Insert Cases"
msgstr "_Stecken"
-#: src/ui/gui/data-editor.glade:294 src/ui/gui/data-editor.glade:548
-#: src/ui/gui/data-editor.glade:1929
+#: src/ui/gui/data-editor.glade:294 src/ui/gui/data-editor.glade:579
+#: src/ui/gui/data-editor.glade:1959
msgid "Go To Case"
msgstr ""
-#: src/ui/gui/data-editor.glade:307 src/ui/gui/data-editor.glade:1994
+#: src/ui/gui/data-editor.glade:307 src/ui/gui/data-editor.glade:2024
msgid "Sort Cases"
msgstr ""
msgid "Aggregate"
msgstr ""
-#: src/ui/gui/data-editor.glade:352 src/ui/gui/data-editor.glade:632
+#: src/ui/gui/data-editor.glade:352 src/ui/gui/data-editor.glade:662
#, fuzzy
msgid "Split File"
msgstr "Alle Datei"
-#: src/ui/gui/data-editor.glade:360 src/ui/gui/data-editor.glade:655
+#: src/ui/gui/data-editor.glade:360 src/ui/gui/data-editor.glade:685
msgid "Select Cases"
msgstr ""
-#: src/ui/gui/data-editor.glade:367 src/ui/gui/data-editor.glade:643
+#: src/ui/gui/data-editor.glade:367 src/ui/gui/data-editor.glade:673
msgid "Weight Cases"
msgstr ""
msgid "Ran_k Cases"
msgstr "_Stecken"
-#: src/ui/gui/data-editor.glade:409 src/ui/gui/syntax-editor.glade:233
+#: src/ui/gui/data-editor.glade:410
+msgid "_Utilities"
+msgstr ""
+
+#: src/ui/gui/data-editor.glade:420
+#, fuzzy
+msgid "_Variables"
+msgstr "Variableansicht"
+
+#: src/ui/gui/data-editor.glade:429
+#, fuzzy
+msgid "Data File _Comments"
+msgstr "Datei Fehler"
+
+#: src/ui/gui/data-editor.glade:440 src/ui/gui/syntax-editor.glade:233
#, fuzzy
msgid "_Windows"
msgstr "_Datei"
-#: src/ui/gui/data-editor.glade:416 src/ui/gui/syntax-editor.glade:242
+#: src/ui/gui/data-editor.glade:447 src/ui/gui/syntax-editor.glade:242
msgid "_Minimise All Windows"
msgstr ""
-#: src/ui/gui/data-editor.glade:427 src/ui/gui/syntax-editor.glade:254
+#: src/ui/gui/data-editor.glade:458 src/ui/gui/syntax-editor.glade:254
msgid "_Help"
msgstr "_Hilfe"
-#: src/ui/gui/data-editor.glade:434 src/ui/gui/syntax-editor.glade:263
+#: src/ui/gui/data-editor.glade:465 src/ui/gui/syntax-editor.glade:263
msgid "_Reference Manual"
msgstr ""
-#: src/ui/gui/data-editor.glade:441 src/ui/gui/syntax-editor.glade:271
+#: src/ui/gui/data-editor.glade:472 src/ui/gui/syntax-editor.glade:271
msgid "_About"
msgstr "_Info"
-#: src/ui/gui/data-editor.glade:486
+#: src/ui/gui/data-editor.glade:517
msgid "Print"
msgstr "Drucken"
-#: src/ui/gui/data-editor.glade:497
+#: src/ui/gui/data-editor.glade:528
msgid "Recall"
msgstr ""
-#: src/ui/gui/data-editor.glade:517
+#: src/ui/gui/data-editor.glade:548
msgid "Undo"
msgstr ""
-#: src/ui/gui/data-editor.glade:528
+#: src/ui/gui/data-editor.glade:559
msgid "Redo"
msgstr ""
-#: src/ui/gui/data-editor.glade:580
+#: src/ui/gui/data-editor.glade:610
msgid "Find"
msgstr ""
-#: src/ui/gui/data-editor.glade:600
+#: src/ui/gui/data-editor.glade:630
#, fuzzy
msgid "Insert Case"
msgstr "_Stecken"
-#: src/ui/gui/data-editor.glade:687
+#: src/ui/gui/data-editor.glade:717
msgid "Use Sets"
msgstr ""
-#: src/ui/gui/data-editor.glade:769
+#: src/ui/gui/data-editor.glade:799
msgid "Data View"
msgstr "Datenansicht"
-#: src/ui/gui/data-editor.glade:796
+#: src/ui/gui/data-editor.glade:826
msgid "Variable View"
msgstr "Variableansicht"
-#: src/ui/gui/data-editor.glade:826
+#: src/ui/gui/data-editor.glade:856
msgid "Information Area"
msgstr ""
-#: src/ui/gui/data-editor.glade:845
+#: src/ui/gui/data-editor.glade:875
msgid "Processor Area"
msgstr ""
-#: src/ui/gui/data-editor.glade:870
+#: src/ui/gui/data-editor.glade:900
msgid "OMS Area"
msgstr ""
-#: src/ui/gui/data-editor.glade:895
+#: src/ui/gui/data-editor.glade:925
msgid "Case Counter Area"
msgstr ""
-#: src/ui/gui/data-editor.glade:920
+#: src/ui/gui/data-editor.glade:950
msgid "Filter Use Status Area"
msgstr ""
-#: src/ui/gui/data-editor.glade:946
+#: src/ui/gui/data-editor.glade:976
msgid "Weight Status Area"
msgstr ""
-#: src/ui/gui/data-editor.glade:972
+#: src/ui/gui/data-editor.glade:1002
#, fuzzy
msgid "Split File Status Area"
msgstr "Alle Datei"
-#: src/ui/gui/data-editor.glade:1002
+#: src/ui/gui/data-editor.glade:1032
msgid "Variable Type"
msgstr "Variableansicht"
-#: src/ui/gui/data-editor.glade:1037 src/ui/gui/psppire-var-store.c:475
+#: src/ui/gui/data-editor.glade:1067 src/ui/gui/psppire-var-store.c:480
msgid "Comma"
msgstr "Komma"
-#: src/ui/gui/data-editor.glade:1052 src/ui/gui/psppire-var-store.c:476
+#: src/ui/gui/data-editor.glade:1082 src/ui/gui/psppire-var-store.c:481
msgid "Dot"
msgstr "Punkt"
-#: src/ui/gui/data-editor.glade:1067
+#: src/ui/gui/data-editor.glade:1097
msgid "Scientific notation"
msgstr "Wissenschaftlichnotation"
-#: src/ui/gui/data-editor.glade:1082 src/ui/gui/psppire-var-store.c:478
+#: src/ui/gui/data-editor.glade:1112 src/ui/gui/psppire-var-store.c:483
msgid "Date"
msgstr "Datum"
-#: src/ui/gui/data-editor.glade:1097 src/ui/gui/psppire-var-store.c:479
+#: src/ui/gui/data-editor.glade:1127 src/ui/gui/psppire-var-store.c:484
msgid "Dollar"
msgstr "Euro"
-#: src/ui/gui/data-editor.glade:1112
+#: src/ui/gui/data-editor.glade:1142
msgid "Custom currency"
msgstr "Spezialwährung"
-#: src/ui/gui/data-editor.glade:1204
+#: src/ui/gui/data-editor.glade:1234
msgid "positive"
msgstr "positiv"
-#: src/ui/gui/data-editor.glade:1210
+#: src/ui/gui/data-editor.glade:1240
msgid "negative"
msgstr "negativ"
-#: src/ui/gui/data-editor.glade:1223
+#: src/ui/gui/data-editor.glade:1253
msgid "Sample"
msgstr "Muster"
-#: src/ui/gui/data-editor.glade:1271
+#: src/ui/gui/data-editor.glade:1301
msgid "Decimal Places:"
msgstr "Dezimalstellen:"
-#: src/ui/gui/data-editor.glade:1312
+#: src/ui/gui/data-editor.glade:1342
msgid "Width:"
msgstr "Große:"
-#: src/ui/gui/data-editor.glade:1469
+#: src/ui/gui/data-editor.glade:1499
msgid "Value:"
msgstr "Werte:"
-#: src/ui/gui/data-editor.glade:1480
+#: src/ui/gui/data-editor.glade:1510
msgid "Value Label:"
msgstr "Kennsatz:"
-#: src/ui/gui/data-editor.glade:1627
+#: src/ui/gui/data-editor.glade:1657
msgid "Missing Values"
msgstr "Lösewerten"
-#: src/ui/gui/data-editor.glade:1691
+#: src/ui/gui/data-editor.glade:1721
msgid "_No missing values"
msgstr "_Kein Lösewerten"
-#: src/ui/gui/data-editor.glade:1708
+#: src/ui/gui/data-editor.glade:1738
msgid "_Discrete missing values"
msgstr "_Diskret Lösewerten"
-#: src/ui/gui/data-editor.glade:1792
+#: src/ui/gui/data-editor.glade:1822
msgid "_Range plus one optional discrete missing value"
msgstr "Wertebereich und ein optional Lösewert"
-#: src/ui/gui/data-editor.glade:1816
+#: src/ui/gui/data-editor.glade:1846
msgid "_Low:"
msgstr "_Tief:"
-#: src/ui/gui/data-editor.glade:1845
+#: src/ui/gui/data-editor.glade:1875
msgid "_High:"
msgstr "_Hoch:"
-#: src/ui/gui/data-editor.glade:1886
+#: src/ui/gui/data-editor.glade:1916
msgid "Di_screte value:"
msgstr "Di_skretwerte"
-#: src/ui/gui/data-editor.glade:1946
+#: src/ui/gui/data-editor.glade:1976
msgid "Case Number:"
msgstr ""
-#: src/ui/gui/data-editor.glade:2055 src/ui/gui/psppire.glade:1171
+#: src/ui/gui/data-editor.glade:2085 src/ui/gui/psppire.glade:1171
msgid "Sort by:"
msgstr ""
-#: src/ui/gui/data-editor.glade:2104 src/ui/gui/psppire.glade:1224
+#: src/ui/gui/data-editor.glade:2134 src/ui/gui/psppire.glade:1224
msgid "Ascending"
msgstr ""
-#: src/ui/gui/data-editor.glade:2117 src/ui/gui/psppire.glade:1234
+#: src/ui/gui/data-editor.glade:2147 src/ui/gui/psppire.glade:1234
msgid "Descending"
msgstr ""
-#: src/ui/gui/data-editor.glade:2133 src/ui/gui/psppire.glade:1250
+#: src/ui/gui/data-editor.glade:2163 src/ui/gui/psppire.glade:1250
msgid "Sort Order"
msgstr ""
msgid "Incorrect range specification"
msgstr "Falshe Spannweitebeschreibung"
-#: src/ui/gui/psppire-buttonbox.c:130
+#: src/ui/gui/psppire-buttonbox.c:146
+msgid "Buttons"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:147
+msgid "The mask that decides what buttons appear in the button box"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:245 src/ui/gui/psppire-buttonbox.c:397
+msgid "Continue"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:255
#, fuzzy
msgid "_Paste"
msgstr "Datum"
+#: src/ui/gui/psppire-buttonbox.c:395
+msgid "OK"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:396
+msgid "Go To"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:398
+msgid "Cancel"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:399
+#, fuzzy
+msgid "Help"
+msgstr "_Hilfe"
+
+#: src/ui/gui/psppire-buttonbox.c:400
+msgid "Reset"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:401
+#, fuzzy
+msgid "Paste"
+msgstr "Datum"
+
#: src/ui/gui/psppire-data-store.c:750
msgid "var"
msgstr ""
-#: src/ui/gui/psppire-data-store.c:831 src/ui/gui/psppire-var-store.c:551
-#: src/ui/gui/psppire-var-store.c:561 src/ui/gui/psppire-var-store.c:571
-#: src/ui/gui/psppire-var-store.c:769
+#: src/ui/gui/psppire-data-store.c:831 src/ui/gui/psppire-var-store.c:556
+#: src/ui/gui/psppire-var-store.c:566 src/ui/gui/psppire-var-store.c:576
+#: src/ui/gui/psppire-var-store.c:714
#, c-format
msgid "%d"
msgstr ""
msgid "Functions:"
msgstr ""
-#: src/ui/gui/psppire-var-store.c:470
+#: src/ui/gui/psppire.glade:1643
+msgid "Variable Information:"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:1669
+msgid ""
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+msgstr ""
+
+#: src/ui/gui/psppire-var-store.c:472
msgid "None"
msgstr "Keine"
-#: src/ui/gui/psppire-var-store.c:477
+#: src/ui/gui/psppire-var-store.c:482
msgid "Scientific"
msgstr "Wissenschäflich"
-#: src/ui/gui/psppire-var-store.c:480
+#: src/ui/gui/psppire-var-store.c:485
msgid "Custom"
msgstr "Spezial"
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2007-04-28 11:18+0800\n"
+"POT-Creation-Date: 2007-04-29 12:09+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
msgstr ""
#: src/data/format.c:310 src/data/por-file-reader.c:489
-#: src/data/sys-file-reader.c:629 src/ui/gui/data-editor.glade:1127
-#: src/ui/gui/psppire-var-store.c:481
+#: src/data/sys-file-reader.c:629 src/ui/gui/data-editor.glade:1157
+#: src/ui/gui/psppire-var-store.c:486
msgid "String"
msgstr ""
#: src/data/format.c:310 src/data/por-file-reader.c:489
-#: src/data/sys-file-reader.c:629 src/ui/gui/data-editor.glade:1023
-#: src/ui/gui/psppire-var-store.c:474
+#: src/data/sys-file-reader.c:629 src/ui/gui/data-editor.glade:1053
+#: src/ui/gui/psppire-var-store.c:479
msgid "Numeric"
msgstr ""
msgid "Closing `%s': %s."
msgstr ""
-#: src/language/tests/check-model.q:139
-msgid "PATH and SEARCH subcommands are mutually exclusive. Ignoring PATH."
-msgstr ""
-
-#: src/language/tests/check-model.q:157
-msgid "At least one value must be specified on PATH."
-msgstr ""
-
-#: src/language/tests/check-model.q:168
-#, c-format
-msgid "Hash bits adjusted to %d."
-msgstr ""
-
-#: src/language/tests/check-model.q:209
-#, c-format
-msgid "error opening \"%s\" for writing"
-msgstr ""
-
#: src/language/tests/float-format.c:126
#, c-format
msgid "%d-byte string needed but %d-byte string supplied."
msgid "Compute new values for a variable"
msgstr ""
-#: src/ui/gui/data-editor.c:636
+#: src/ui/gui/data-editor.c:265 src/ui/gui/data-editor.glade:259
+#: src/ui/gui/data-editor.glade:589
+msgid "Variables"
+msgstr ""
+
+#: src/ui/gui/data-editor.c:266
+msgid "Jump to Variable"
+msgstr ""
+
+#: src/ui/gui/data-editor.c:655
msgid "Font Selection"
msgstr ""
-#: src/ui/gui/data-editor.c:814
+#: src/ui/gui/data-editor.c:833
msgid "No Split"
msgstr ""
-#: src/ui/gui/data-editor.c:822
+#: src/ui/gui/data-editor.c:841
msgid "Split by "
msgstr ""
-#: src/ui/gui/data-editor.c:847
+#: src/ui/gui/data-editor.c:866
msgid "Filter off"
msgstr ""
-#: src/ui/gui/data-editor.c:860
+#: src/ui/gui/data-editor.c:879
#, c-format
msgid "Filter by %s"
msgstr ""
-#: src/ui/gui/data-editor.c:878
+#: src/ui/gui/data-editor.c:897
msgid "Weights off"
msgstr ""
-#: src/ui/gui/data-editor.c:891
+#: src/ui/gui/data-editor.c:910
#, c-format
msgid "Weight by %s"
msgstr ""
-#: src/ui/gui/data-editor.c:914 src/ui/gui/data-editor.c:1145
-#: src/ui/gui/data-editor.glade:465
+#: src/ui/gui/data-editor.c:933 src/ui/gui/data-editor.c:1164
+#: src/ui/gui/data-editor.glade:496
msgid "Open"
msgstr ""
-#: src/ui/gui/data-editor.c:915
+#: src/ui/gui/data-editor.c:934
msgid "Open a data file"
msgstr ""
-#: src/ui/gui/data-editor.c:923 src/ui/gui/data-editor.c:1030
-#: src/ui/gui/data-editor.glade:475
+#: src/ui/gui/data-editor.c:942 src/ui/gui/data-editor.c:1049
+#: src/ui/gui/data-editor.glade:506
msgid "Save"
msgstr ""
-#: src/ui/gui/data-editor.c:924 src/ui/gui/data-editor.c:934
+#: src/ui/gui/data-editor.c:943 src/ui/gui/data-editor.c:953
msgid "Save data to file"
msgstr ""
-#: src/ui/gui/data-editor.c:933
+#: src/ui/gui/data-editor.c:952
msgid "Save As"
msgstr ""
-#: src/ui/gui/data-editor.c:942
+#: src/ui/gui/data-editor.c:961
msgid "New"
msgstr ""
-#: src/ui/gui/data-editor.c:943
+#: src/ui/gui/data-editor.c:962
msgid "New data file"
msgstr ""
-#: src/ui/gui/data-editor.c:1038 src/ui/gui/data-editor.c:1153
+#: src/ui/gui/data-editor.c:1057 src/ui/gui/data-editor.c:1172
msgid "System Files (*.sav)"
msgstr ""
-#: src/ui/gui/data-editor.c:1044 src/ui/gui/data-editor.c:1159
+#: src/ui/gui/data-editor.c:1063 src/ui/gui/data-editor.c:1178
msgid "Portable Files (*.por) "
msgstr ""
-#: src/ui/gui/data-editor.c:1050 src/ui/gui/data-editor.c:1165
+#: src/ui/gui/data-editor.c:1069 src/ui/gui/data-editor.c:1184
#: src/ui/gui/syntax-editor.c:141 src/ui/gui/syntax-editor.c:527
msgid "All Files"
msgstr ""
-#: src/ui/gui/data-editor.c:1058
+#: src/ui/gui/data-editor.c:1077
msgid "System File"
msgstr ""
-#: src/ui/gui/data-editor.c:1063
+#: src/ui/gui/data-editor.c:1082
msgid "Portable File"
msgstr ""
msgid "Grid Lines"
msgstr ""
-#: src/ui/gui/data-editor.glade:240 src/ui/gui/data-editor.glade:675
-#: src/ui/gui/data-editor.glade:1385 src/ui/gui/data-editor.glade:1563
+#: src/ui/gui/data-editor.glade:240 src/ui/gui/data-editor.glade:705
+#: src/ui/gui/data-editor.glade:1415 src/ui/gui/data-editor.glade:1593
msgid "Value Labels"
msgstr ""
msgid "Data"
msgstr ""
-#: src/ui/gui/data-editor.glade:259 src/ui/gui/data-editor.glade:559
-msgid "Variables"
-msgstr ""
-
-#: src/ui/gui/data-editor.glade:278 src/ui/gui/data-editor.glade:612
+#: src/ui/gui/data-editor.glade:278 src/ui/gui/data-editor.glade:642
msgid "Insert Variable"
msgstr ""
msgid "Insert Cases"
msgstr ""
-#: src/ui/gui/data-editor.glade:294 src/ui/gui/data-editor.glade:548
-#: src/ui/gui/data-editor.glade:1929
+#: src/ui/gui/data-editor.glade:294 src/ui/gui/data-editor.glade:579
+#: src/ui/gui/data-editor.glade:1959
msgid "Go To Case"
msgstr ""
-#: src/ui/gui/data-editor.glade:307 src/ui/gui/data-editor.glade:1994
+#: src/ui/gui/data-editor.glade:307 src/ui/gui/data-editor.glade:2024
msgid "Sort Cases"
msgstr ""
msgid "Aggregate"
msgstr ""
-#: src/ui/gui/data-editor.glade:352 src/ui/gui/data-editor.glade:632
+#: src/ui/gui/data-editor.glade:352 src/ui/gui/data-editor.glade:662
msgid "Split File"
msgstr ""
-#: src/ui/gui/data-editor.glade:360 src/ui/gui/data-editor.glade:655
+#: src/ui/gui/data-editor.glade:360 src/ui/gui/data-editor.glade:685
msgid "Select Cases"
msgstr ""
-#: src/ui/gui/data-editor.glade:367 src/ui/gui/data-editor.glade:643
+#: src/ui/gui/data-editor.glade:367 src/ui/gui/data-editor.glade:673
msgid "Weight Cases"
msgstr ""
msgid "Ran_k Cases"
msgstr ""
-#: src/ui/gui/data-editor.glade:409 src/ui/gui/syntax-editor.glade:233
+#: src/ui/gui/data-editor.glade:410
+msgid "_Utilities"
+msgstr ""
+
+#: src/ui/gui/data-editor.glade:420
+msgid "_Variables"
+msgstr ""
+
+#: src/ui/gui/data-editor.glade:429
+msgid "Data File _Comments"
+msgstr ""
+
+#: src/ui/gui/data-editor.glade:440 src/ui/gui/syntax-editor.glade:233
msgid "_Windows"
msgstr ""
-#: src/ui/gui/data-editor.glade:416 src/ui/gui/syntax-editor.glade:242
+#: src/ui/gui/data-editor.glade:447 src/ui/gui/syntax-editor.glade:242
msgid "_Minimise All Windows"
msgstr ""
-#: src/ui/gui/data-editor.glade:427 src/ui/gui/syntax-editor.glade:254
+#: src/ui/gui/data-editor.glade:458 src/ui/gui/syntax-editor.glade:254
msgid "_Help"
msgstr ""
-#: src/ui/gui/data-editor.glade:434 src/ui/gui/syntax-editor.glade:263
+#: src/ui/gui/data-editor.glade:465 src/ui/gui/syntax-editor.glade:263
msgid "_Reference Manual"
msgstr ""
-#: src/ui/gui/data-editor.glade:441 src/ui/gui/syntax-editor.glade:271
+#: src/ui/gui/data-editor.glade:472 src/ui/gui/syntax-editor.glade:271
msgid "_About"
msgstr ""
-#: src/ui/gui/data-editor.glade:486
+#: src/ui/gui/data-editor.glade:517
msgid "Print"
msgstr ""
-#: src/ui/gui/data-editor.glade:497
+#: src/ui/gui/data-editor.glade:528
msgid "Recall"
msgstr ""
-#: src/ui/gui/data-editor.glade:517
+#: src/ui/gui/data-editor.glade:548
msgid "Undo"
msgstr ""
-#: src/ui/gui/data-editor.glade:528
+#: src/ui/gui/data-editor.glade:559
msgid "Redo"
msgstr ""
-#: src/ui/gui/data-editor.glade:580
+#: src/ui/gui/data-editor.glade:610
msgid "Find"
msgstr ""
-#: src/ui/gui/data-editor.glade:600
+#: src/ui/gui/data-editor.glade:630
msgid "Insert Case"
msgstr ""
-#: src/ui/gui/data-editor.glade:687
+#: src/ui/gui/data-editor.glade:717
msgid "Use Sets"
msgstr ""
-#: src/ui/gui/data-editor.glade:769
+#: src/ui/gui/data-editor.glade:799
msgid "Data View"
msgstr ""
-#: src/ui/gui/data-editor.glade:796
+#: src/ui/gui/data-editor.glade:826
msgid "Variable View"
msgstr ""
-#: src/ui/gui/data-editor.glade:826
+#: src/ui/gui/data-editor.glade:856
msgid "Information Area"
msgstr ""
-#: src/ui/gui/data-editor.glade:845
+#: src/ui/gui/data-editor.glade:875
msgid "Processor Area"
msgstr ""
-#: src/ui/gui/data-editor.glade:870
+#: src/ui/gui/data-editor.glade:900
msgid "OMS Area"
msgstr ""
-#: src/ui/gui/data-editor.glade:895
+#: src/ui/gui/data-editor.glade:925
msgid "Case Counter Area"
msgstr ""
-#: src/ui/gui/data-editor.glade:920
+#: src/ui/gui/data-editor.glade:950
msgid "Filter Use Status Area"
msgstr ""
-#: src/ui/gui/data-editor.glade:946
+#: src/ui/gui/data-editor.glade:976
msgid "Weight Status Area"
msgstr ""
-#: src/ui/gui/data-editor.glade:972
+#: src/ui/gui/data-editor.glade:1002
msgid "Split File Status Area"
msgstr ""
-#: src/ui/gui/data-editor.glade:1002
+#: src/ui/gui/data-editor.glade:1032
msgid "Variable Type"
msgstr ""
-#: src/ui/gui/data-editor.glade:1037 src/ui/gui/psppire-var-store.c:475
+#: src/ui/gui/data-editor.glade:1067 src/ui/gui/psppire-var-store.c:480
msgid "Comma"
msgstr ""
-#: src/ui/gui/data-editor.glade:1052 src/ui/gui/psppire-var-store.c:476
+#: src/ui/gui/data-editor.glade:1082 src/ui/gui/psppire-var-store.c:481
msgid "Dot"
msgstr ""
-#: src/ui/gui/data-editor.glade:1067
+#: src/ui/gui/data-editor.glade:1097
msgid "Scientific notation"
msgstr ""
-#: src/ui/gui/data-editor.glade:1082 src/ui/gui/psppire-var-store.c:478
+#: src/ui/gui/data-editor.glade:1112 src/ui/gui/psppire-var-store.c:483
msgid "Date"
msgstr ""
-#: src/ui/gui/data-editor.glade:1097 src/ui/gui/psppire-var-store.c:479
+#: src/ui/gui/data-editor.glade:1127 src/ui/gui/psppire-var-store.c:484
msgid "Dollar"
msgstr ""
-#: src/ui/gui/data-editor.glade:1112
+#: src/ui/gui/data-editor.glade:1142
msgid "Custom currency"
msgstr ""
-#: src/ui/gui/data-editor.glade:1204
+#: src/ui/gui/data-editor.glade:1234
msgid "positive"
msgstr ""
-#: src/ui/gui/data-editor.glade:1210
+#: src/ui/gui/data-editor.glade:1240
msgid "negative"
msgstr ""
-#: src/ui/gui/data-editor.glade:1223
+#: src/ui/gui/data-editor.glade:1253
msgid "Sample"
msgstr ""
-#: src/ui/gui/data-editor.glade:1271
+#: src/ui/gui/data-editor.glade:1301
msgid "Decimal Places:"
msgstr ""
-#: src/ui/gui/data-editor.glade:1312
+#: src/ui/gui/data-editor.glade:1342
msgid "Width:"
msgstr ""
-#: src/ui/gui/data-editor.glade:1469
+#: src/ui/gui/data-editor.glade:1499
msgid "Value:"
msgstr ""
-#: src/ui/gui/data-editor.glade:1480
+#: src/ui/gui/data-editor.glade:1510
msgid "Value Label:"
msgstr ""
-#: src/ui/gui/data-editor.glade:1627
+#: src/ui/gui/data-editor.glade:1657
msgid "Missing Values"
msgstr ""
-#: src/ui/gui/data-editor.glade:1691
+#: src/ui/gui/data-editor.glade:1721
msgid "_No missing values"
msgstr ""
-#: src/ui/gui/data-editor.glade:1708
+#: src/ui/gui/data-editor.glade:1738
msgid "_Discrete missing values"
msgstr ""
-#: src/ui/gui/data-editor.glade:1792
+#: src/ui/gui/data-editor.glade:1822
msgid "_Range plus one optional discrete missing value"
msgstr ""
-#: src/ui/gui/data-editor.glade:1816
+#: src/ui/gui/data-editor.glade:1846
msgid "_Low:"
msgstr ""
-#: src/ui/gui/data-editor.glade:1845
+#: src/ui/gui/data-editor.glade:1875
msgid "_High:"
msgstr ""
-#: src/ui/gui/data-editor.glade:1886
+#: src/ui/gui/data-editor.glade:1916
msgid "Di_screte value:"
msgstr ""
-#: src/ui/gui/data-editor.glade:1946
+#: src/ui/gui/data-editor.glade:1976
msgid "Case Number:"
msgstr ""
-#: src/ui/gui/data-editor.glade:2055 src/ui/gui/psppire.glade:1171
+#: src/ui/gui/data-editor.glade:2085 src/ui/gui/psppire.glade:1171
msgid "Sort by:"
msgstr ""
-#: src/ui/gui/data-editor.glade:2104 src/ui/gui/psppire.glade:1224
+#: src/ui/gui/data-editor.glade:2134 src/ui/gui/psppire.glade:1224
msgid "Ascending"
msgstr ""
-#: src/ui/gui/data-editor.glade:2117 src/ui/gui/psppire.glade:1234
+#: src/ui/gui/data-editor.glade:2147 src/ui/gui/psppire.glade:1234
msgid "Descending"
msgstr ""
-#: src/ui/gui/data-editor.glade:2133 src/ui/gui/psppire.glade:1250
+#: src/ui/gui/data-editor.glade:2163 src/ui/gui/psppire.glade:1250
msgid "Sort Order"
msgstr ""
msgid "Incorrect range specification"
msgstr ""
-#: src/ui/gui/psppire-buttonbox.c:130
+#: src/ui/gui/psppire-buttonbox.c:146
+msgid "Buttons"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:147
+msgid "The mask that decides what buttons appear in the button box"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:245 src/ui/gui/psppire-buttonbox.c:397
+msgid "Continue"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:255
msgid "_Paste"
msgstr ""
+#: src/ui/gui/psppire-buttonbox.c:395
+msgid "OK"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:396
+msgid "Go To"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:398
+msgid "Cancel"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:399
+msgid "Help"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:400
+msgid "Reset"
+msgstr ""
+
+#: src/ui/gui/psppire-buttonbox.c:401
+msgid "Paste"
+msgstr ""
+
#: src/ui/gui/psppire-data-store.c:750
msgid "var"
msgstr ""
-#: src/ui/gui/psppire-data-store.c:831 src/ui/gui/psppire-var-store.c:551
-#: src/ui/gui/psppire-var-store.c:561 src/ui/gui/psppire-var-store.c:571
-#: src/ui/gui/psppire-var-store.c:769
+#: src/ui/gui/psppire-data-store.c:831 src/ui/gui/psppire-var-store.c:556
+#: src/ui/gui/psppire-var-store.c:566 src/ui/gui/psppire-var-store.c:576
+#: src/ui/gui/psppire-var-store.c:714
#, c-format
msgid "%d"
msgstr ""
msgid "Functions:"
msgstr ""
-#: src/ui/gui/psppire-var-store.c:470
+#: src/ui/gui/psppire.glade:1643
+msgid "Variable Information:"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:1669
+msgid ""
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+msgstr ""
+
+#: src/ui/gui/psppire-var-store.c:472
msgid "None"
msgstr ""
-#: src/ui/gui/psppire-var-store.c:477
+#: src/ui/gui/psppire-var-store.c:482
msgid "Scientific"
msgstr ""
-#: src/ui/gui/psppire-var-store.c:480
+#: src/ui/gui/psppire-var-store.c:485
msgid "Custom"
msgstr ""
+2007-04-30 John Darrington <john@darrington.wattle.id.au>
+
+ * var-display.c var-display.h variable-info-dialog.c
+ variable-info-dialog.h : New files.
+
+ * data-editor.c :
+
+ * psppire-buttonbox.c psppire-buttonbox.h : Added the "buttons"
+ property, and optional GOTO and CONTINUE buttons.
+
+ * psppire-dialog.h: Added response codes for the new buttons.
+
+ * psppire-var-store.c : Moved some code to var-display.[ch]
+
2007-04-25 John Darrington <john@darrington.wattle.id.au>
* icons/scalable/splash.c icons/splash.png : More eye candy.
src/ui/gui/transpose-dialog.h \
src/ui/gui/val-labs-dialog.c \
src/ui/gui/val-labs-dialog.h \
+ src/ui/gui/var-display.c \
+ src/ui/gui/var-display.h \
src/ui/gui/var-sheet.c \
src/ui/gui/var-sheet.h \
src/ui/gui/var-type-dialog.c \
src/ui/gui/var-type-dialog.h \
+ src/ui/gui/variable-info-dialog.c \
+ src/ui/gui/variable-info-dialog.h \
src/ui/gui/weight-cases-dialog.c \
src/ui/gui/weight-cases-dialog.h \
src/ui/gui/window-manager.c \
#include "transpose-dialog.h"
#include "sort-cases-dialog.h"
#include "compute-dialog.h"
+#include "variable-info-dialog.h"
#include "dict-display.h"
#define _(msgid) gettext (msgid)
/* Switch between the VAR SHEET and the DATA SHEET */
-enum {PAGE_DATA_SHEET = 0, PAGE_VAR_SHEET};
static gboolean click2column (GtkWidget *w, gint col, gpointer data);
g_signal_connect (de->invoke_compute_dialog, "activate",
G_CALLBACK (compute_dialog), de);
+ de->invoke_variable_info_dialog =
+ gtk_action_new ("variable-info-dialog",
+ _("Variables"),
+ _("Jump to Variable"),
+ "pspp-goto-variable");
+
+ g_signal_connect (de->invoke_variable_info_dialog, "activate",
+ G_CALLBACK (variable_info_dialog), de);
e->window = GTK_WINDOW (get_widget_assert (de->xml, "data_editor"));
de->action_data_open);
+
+
+
#if RECENT_LISTS_AVAILABLE
{
GtkRecentManager *rm = gtk_recent_manager_get_default ();
get_widget_assert (de->xml, "transform_compute")
);
+ gtk_action_connect_proxy (de->invoke_variable_info_dialog,
+ get_widget_assert (de->xml, "utilities_variables")
+ );
+
g_signal_connect (get_widget_assert (de->xml,"help_about"),
"activate",
get_widget_assert (de->xml, "button-save")
);
+ gtk_action_connect_proxy (de->invoke_variable_info_dialog,
+ get_widget_assert (de->xml, "button-goto-variable")
+ );
+
gtk_action_connect_proxy (de->invoke_weight_cases_dialog,
get_widget_assert (de->xml, "button-weight-cases")
);
</child>
</widget>
</child>
+ <child>
+ <widget class="GtkMenuItem" id="utilities">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">_Utilities</property>
+ <property name="use_underline">True</property>
+ <child>
+ <widget class="GtkMenu" id="menu1">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <widget class="GtkMenuItem" id="utilities_variables">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">_Variables</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="utilities_comments">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">Data File _Comments</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
<child>
<widget class="GtkMenuItem" id="windows">
<property name="visible">True</property>
<child>
<widget class="GtkToolButton" id="button-goto-variable">
<property name="visible">True</property>
- <property name="sensitive">False</property>
<property name="tooltip" translatable="yes">Variables</property>
<property name="use_underline">True</property>
<property name="stock_id">pspp-goto-variable</property>
GtkAction *invoke_sort_cases_dialog;
GtkAction *invoke_compute_dialog;
+ GtkAction *invoke_variable_info_dialog;
+
GladeXML *xml;
gboolean save_as_portable;
void data_editor_select_sheet (struct data_editor *de, gint page);
+enum {PAGE_DATA_SHEET = 0, PAGE_VAR_SHEET};
+
#endif
}
-static void
+void
get_base_model (GtkTreeModel *top_model, GtkTreeIter *top_iter,
GtkTreeModel **model, GtkTreeIter *iter
)
/* A FilterItemsFunc function for GtkEntry widgets */
gboolean is_currently_in_entry (GtkTreeModel *model, GtkTreeIter *iter,
PsppireSelector *selector);
+
+
+void get_base_model (GtkTreeModel *top_model, GtkTreeIter *top_iter,
+ GtkTreeModel **model, GtkTreeIter *iter
+ );
#define _(msgid) gettext (msgid)
#define N_(msgid) msgid
+GType psppire_button_flags_get_type (void);
+
static void psppire_button_box_class_init (PsppireButtonBoxClass *);
static void psppire_button_box_init (PsppireButtonBox *);
return button_box_type;
}
+enum {
+ PROP_BUTTONS = 1
+};
+
static void
-psppire_button_box_class_init (PsppireButtonBoxClass *class)
+psppire_buttonbox_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
+ gint i;
+ guint flags;
+ PsppireButtonBox *bb = PSPPIRE_BUTTONBOX (object);
+ if ( prop_id != PROP_BUTTONS)
+ {
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ return ;
+ }
+
+ flags = g_value_get_flags (value);
+
+ for (i = 0 ; i < n_PsppireButtonBoxButtons ; ++i )
+ g_object_set (bb->button[i], "visible", 0x01 & (flags >> i) , NULL);
}
static void
-close_dialog (GtkWidget *w, gpointer data)
+psppire_buttonbox_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
{
- PsppireDialog *dialog;
+ guint flags = 0;
+ gint i;
- dialog = PSPPIRE_DIALOG (gtk_widget_get_toplevel (w));
+ PsppireButtonBox *bb = PSPPIRE_BUTTONBOX (object);
- dialog->response = GTK_RESPONSE_CANCEL;
+ if (PROP_BUTTONS != prop_id)
+ {
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ return;
+ }
+
+ for (i = 0 ; i < n_PsppireButtonBoxButtons ; ++i )
+ {
+ gboolean visibility;
+ g_object_get (bb->button[i], "visible", &visibility, NULL);
+
+ if ( visibility )
+ flags |= (0x01 << i);
+ }
+
+ g_value_set_flags (value, flags);
+}
+
+
+typedef enum
+ {
+ PSPPIRE_BUTTON_OK_MASK = (1 << PSPPIRE_BUTTON_OK),
+ PSPPIRE_BUTTON_GOTO_MASK = (1 << PSPPIRE_BUTTON_GOTO),
+ PSPPIRE_BUTTON_CONTINUE_MASK = (1 << PSPPIRE_BUTTON_CONTINUE),
+ PSPPIRE_BUTTON_CANCEL_MASK = (1 << PSPPIRE_BUTTON_CANCEL),
+ PSPPIRE_BUTTON_HELP_MASK = (1 << PSPPIRE_BUTTON_HELP),
+ PSPPIRE_BUTTON_RESET_MASK = (1 << PSPPIRE_BUTTON_RESET),
+ PSPPIRE_BUTTON_PASTE_MASK = (1 << PSPPIRE_BUTTON_PASTE)
+ } PsppireButtonMask;
+
+static GParamSpec *button_flags;
+
+static void
+psppire_button_box_class_init (PsppireButtonBoxClass *class)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (class);
+
+ object_class->set_property = psppire_buttonbox_set_property;
+ object_class->get_property = psppire_buttonbox_get_property;
+
+ button_flags =
+ g_param_spec_flags ("buttons",
+ _("Buttons"),
+ _("The mask that decides what buttons appear in the button box"),
+ G_TYPE_PSPPIRE_BUTTON_MASK,
+ PSPPIRE_BUTTON_OK_MASK |
+ PSPPIRE_BUTTON_CANCEL_MASK |
+ PSPPIRE_BUTTON_RESET_MASK |
+ PSPPIRE_BUTTON_HELP_MASK |
+ PSPPIRE_BUTTON_PASTE_MASK,
+ G_PARAM_READWRITE);
+
+
+ g_object_class_install_property (object_class,
+ PROP_BUTTONS,
+ button_flags);
- psppire_dialog_close (dialog);
}
static void
-ok_button_clicked (GtkWidget *w, gpointer data)
+close_and_respond (GtkWidget *w, gint response)
{
PsppireDialog *dialog;
- dialog = PSPPIRE_DIALOG (gtk_widget_get_toplevel (w));
+ GtkWidget *toplevel = gtk_widget_get_toplevel (w);
+
+ /* If we're not in a psppire dialog (for example when in glade)
+ then do nothing */
+ if ( ! PSPPIRE_IS_DIALOG (toplevel))
+ return;
+
+ dialog = PSPPIRE_DIALOG (toplevel);
- dialog->response = GTK_RESPONSE_OK;
+ dialog->response = response;
psppire_dialog_close (dialog);
}
static void
-paste_button_clicked (GtkWidget *w, gpointer data)
+close_dialog (GtkWidget *w, gpointer data)
{
- PsppireDialog *dialog;
+ close_and_respond (w, GTK_RESPONSE_CLOSE);
+}
+
+
+static void
+ok_button_clicked (GtkWidget *w, gpointer data)
+{
+ close_and_respond (w, GTK_RESPONSE_OK);
+}
- dialog = PSPPIRE_DIALOG (gtk_widget_get_toplevel (w));
- dialog->response = PSPPIRE_RESPONSE_PASTE;
+static void
+paste_button_clicked (GtkWidget *w, gpointer data)
+{
+ close_and_respond (w, PSPPIRE_RESPONSE_PASTE);
+}
- psppire_dialog_close (dialog);
+static void
+goto_button_clicked (GtkWidget *w, gpointer data)
+{
+ close_and_respond (w, PSPPIRE_RESPONSE_GOTO);
}
static void
refresh_clicked (GtkWidget *w, gpointer data)
{
+ GtkWidget *toplevel = gtk_widget_get_toplevel (w);
PsppireDialog *dialog;
- dialog = PSPPIRE_DIALOG (gtk_widget_get_toplevel (w));
+ if ( ! PSPPIRE_IS_DIALOG (toplevel))
+ return;
+
+ dialog = PSPPIRE_DIALOG (toplevel);
psppire_dialog_reload (dialog);
}
static void
-psppire_button_box_init (PsppireButtonBox *button_box)
+psppire_button_box_init (PsppireButtonBox *bb)
{
- GtkWidget *button ;
- button = gtk_button_new_from_stock (GTK_STOCK_OK);
- gtk_box_pack_start_defaults (GTK_BOX (button_box), button);
- g_signal_connect (button, "clicked", G_CALLBACK (ok_button_clicked), NULL);
- gtk_widget_show (button);
+ bb->button[PSPPIRE_BUTTON_OK] = gtk_button_new_from_stock (GTK_STOCK_OK);
+ gtk_box_pack_start_defaults (GTK_BOX (bb), bb->button[PSPPIRE_BUTTON_OK]);
+ g_signal_connect (bb->button[PSPPIRE_BUTTON_OK], "clicked",
+ G_CALLBACK (ok_button_clicked), NULL);
+ g_object_set (bb->button[PSPPIRE_BUTTON_OK], "no-show-all", TRUE, NULL);
+
+
+ bb->button[PSPPIRE_BUTTON_GOTO] =
+ gtk_button_new_from_stock (GTK_STOCK_JUMP_TO);
+ gtk_box_pack_start_defaults (GTK_BOX (bb), bb->button[PSPPIRE_BUTTON_GOTO]);
+ g_signal_connect (bb->button[PSPPIRE_BUTTON_GOTO], "clicked",
+ G_CALLBACK (goto_button_clicked), NULL);
+ g_object_set (bb->button[PSPPIRE_BUTTON_GOTO], "no-show-all", TRUE, NULL);
+
+
+ bb->button[PSPPIRE_BUTTON_CONTINUE] =
+ gtk_button_new_with_mnemonic (_("Continue"));
+
+ gtk_box_pack_start_defaults (GTK_BOX (bb),
+ bb->button[PSPPIRE_BUTTON_CONTINUE]);
+
+ g_object_set (bb->button[PSPPIRE_BUTTON_CONTINUE],
+ "no-show-all", TRUE, NULL);
+
- button = gtk_button_new_with_mnemonic (_("_Paste"));
- g_signal_connect (button, "clicked", G_CALLBACK (paste_button_clicked),
- NULL);
- gtk_box_pack_start_defaults (GTK_BOX (button_box), button);
- gtk_widget_show (button);
- button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
- g_signal_connect (button, "clicked", G_CALLBACK (close_dialog), NULL);
- gtk_box_pack_start_defaults (GTK_BOX (button_box), button);
- gtk_widget_show (button);
+ bb->button[PSPPIRE_BUTTON_PASTE] = gtk_button_new_with_mnemonic (_("_Paste"));
+ g_signal_connect (bb->button[PSPPIRE_BUTTON_PASTE], "clicked",
+ G_CALLBACK (paste_button_clicked), NULL);
+ gtk_box_pack_start_defaults (GTK_BOX (bb), bb->button[PSPPIRE_BUTTON_PASTE]);
+ g_object_set (bb->button[PSPPIRE_BUTTON_PASTE], "no-show-all", TRUE, NULL);
- button = gtk_button_new_from_stock (GTK_STOCK_REFRESH);
- g_signal_connect (button, "clicked", G_CALLBACK (refresh_clicked), NULL);
- gtk_box_pack_start_defaults (GTK_BOX (button_box), button);
- gtk_widget_show (button);
+ bb->button[PSPPIRE_BUTTON_CANCEL] = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
+ g_signal_connect (bb->button[PSPPIRE_BUTTON_CANCEL], "clicked",
+ G_CALLBACK (close_dialog), NULL);
+ gtk_box_pack_start_defaults (GTK_BOX (bb), bb->button[PSPPIRE_BUTTON_CANCEL]);
+ g_object_set (bb->button[PSPPIRE_BUTTON_CANCEL], "no-show-all", TRUE, NULL);
- button = gtk_button_new_from_stock (GTK_STOCK_HELP);
- gtk_box_pack_start_defaults (GTK_BOX (button_box), button);
- gtk_widget_show (button);
+
+ bb->button[PSPPIRE_BUTTON_RESET] = gtk_button_new_from_stock (GTK_STOCK_REFRESH);
+ g_signal_connect (bb->button[PSPPIRE_BUTTON_RESET], "clicked",
+ G_CALLBACK (refresh_clicked), NULL);
+ gtk_box_pack_start_defaults (GTK_BOX (bb), bb->button[PSPPIRE_BUTTON_RESET]);
+ g_object_set (bb->button[PSPPIRE_BUTTON_RESET], "no-show-all", TRUE, NULL);
+
+
+ bb->button[PSPPIRE_BUTTON_HELP] = gtk_button_new_from_stock (GTK_STOCK_HELP);
+ gtk_box_pack_start_defaults (GTK_BOX (bb), bb->button[PSPPIRE_BUTTON_HELP]);
+ g_object_set (bb->button[PSPPIRE_BUTTON_HELP], "no-show-all", TRUE, NULL);
+
+
+ /* Set the default visibilities */
+ {
+ GValue value = { 0 };
+ guint flags;
+ gint i;
+ g_value_init (&value, button_flags->value_type);
+ g_param_value_set_default(button_flags, &value);
+
+
+ flags = g_value_get_flags (&value);
+
+ for (i = 0 ; i < n_PsppireButtonBoxButtons ; ++i )
+ g_object_set (bb->button[i], "visible", 0x01 & (flags >> i) , NULL);
+
+ g_value_unset (&value);
+ }
}
if (height)
*height = needed_height;
}
+
+
+GType
+psppire_button_flags_get_type (void)
+{
+ static GType ftype = 0;
+ if (ftype == 0)
+ {
+ static const GFlagsValue values[] =
+ {
+ { PSPPIRE_BUTTON_OK_MASK, "PSPPIRE_BUTTON_OK_MASK", N_("OK") },
+ { PSPPIRE_BUTTON_GOTO_MASK, "PSPPIRE_BUTTON_GOTO_MASK", N_("Go To") },
+ { PSPPIRE_BUTTON_CONTINUE_MASK,"PSPPIRE_BUTTON_CONTINUE_MASK", N_("Continue") },
+ { PSPPIRE_BUTTON_CANCEL_MASK, "PSPPIRE_BUTTON_CANCEL_MASK", N_("Cancel") },
+ { PSPPIRE_BUTTON_HELP_MASK, "PSPPIRE_BUTTON_HELP_MASK", N_("Help") },
+ { PSPPIRE_BUTTON_RESET_MASK, "PSPPIRE_BUTTON_RESET_MASK", N_("Reset") },
+ { PSPPIRE_BUTTON_PASTE_MASK, "PSPPIRE_BUTTON_PASTE_MASK", N_("Paste") },
+ { 0, NULL, NULL }
+ };
+
+ ftype = g_flags_register_static
+ (g_intern_static_string ("PsppireButtonFlags"), values);
+
+ }
+ return ftype;
+}
+
typedef struct _PsppireButtonBox PsppireButtonBox;
typedef struct _PsppireButtonBoxClass PsppireButtonBoxClass;
+enum
+ {
+ PSPPIRE_BUTTON_OK = 0,
+ PSPPIRE_BUTTON_GOTO,
+ PSPPIRE_BUTTON_CONTINUE,
+ PSPPIRE_BUTTON_CANCEL,
+ PSPPIRE_BUTTON_HELP,
+ PSPPIRE_BUTTON_RESET,
+ PSPPIRE_BUTTON_PASTE,
+ n_PsppireButtonBoxButtons
+ };
+
struct _PsppireButtonBox
{
GtkButtonBox parent;
+
+ /* <private> */
+ GtkWidget *button[n_PsppireButtonBoxButtons];
};
struct _PsppireButtonBoxClass
int *nvis_children,
int *nvis_secondaries,
int *width,
+
+
+#define G_TYPE_PSPPIRE_BUTTON_MASK \
+ (psppire_button_flags_get_type())
int *height);
G_END_DECLS
#include <glib-object.h>
#include <gtk/gtkwindow.h>
-#define PSPPIRE_RESPONSE_PASTE 1
+#define PSPPIRE_RESPONSE_PASTE 1
+#define PSPPIRE_RESPONSE_GOTO 2
+#define PSPPIRE_RESPONSE_CONTINUE 3
G_BEGIN_DECLS
#include "missing-val-dialog.h"
#include <data/value-labels.h>
+#include "var-display.h"
#define TRAILING_ROWS 40
static void psppire_var_store_sheet_model_init (GSheetModelIface *iface);
static void psppire_var_store_finalize (GObject *object);
+
+gchar * missing_values_to_string (const struct variable *pv, GError **err);
+
+
static gchar *psppire_var_store_get_string (const GSheetModel *sheet_model, gint row, gint column);
static gboolean psppire_var_store_clear (GSheetModel *model, gint row, gint col);
if ( VAR_STRING == var_get_type (pv) && column == COL_DECIMALS )
return FALSE;
- write_spec =var_get_write_format (pv);
+ write_spec = var_get_print_format (pv);
switch ( write_spec->type )
{
}
+const static gchar none[] = N_("None");
+
static gchar *
text_for_column (const struct variable *pv, gint c, GError **err)
{
- static gchar none[] = N_("None");
-
static const gchar *const type_label[] =
{
N_("Numeric"),
case COL_MISSING:
{
- gchar *s;
- const struct missing_values *miss = var_get_missing_values (pv);
- if ( mv_is_empty (miss))
- return g_locale_to_utf8 (gettext (none), -1, 0, 0, err);
- else
- {
- if ( ! mv_has_range (miss))
- {
- GString *gstr = g_string_sized_new (10);
- const int n = mv_n_values (miss);
- gchar *mv[4] = {0,0,0,0};
- gint i;
- for (i = 0 ; i < n; ++i )
- {
- union value v;
- mv_peek_value (miss, &v, i);
- mv[i] = value_to_text (v, *write_spec);
- if ( i > 0 )
- g_string_append (gstr, ", ");
- g_string_append (gstr, mv[i]);
- g_free (mv[i]);
- }
- s = pspp_locale_to_utf8 (gstr->str, gstr->len, err);
- g_string_free (gstr, TRUE);
- }
- else
- {
- GString *gstr = g_string_sized_new (10);
- gchar *l, *h;
- union value low, high;
- mv_peek_range (miss, &low.f, &high.f);
-
- l = value_to_text (low, *write_spec);
- h = value_to_text (high, *write_spec);
-
- g_string_printf (gstr, "%s - %s", l, h);
- g_free (l);
- g_free (h);
-
- if ( mv_has_value (miss))
- {
- gchar *ss = 0;
- union value v;
- mv_peek_value (miss, &v, 0);
-
- ss = value_to_text (v, *write_spec);
-
- g_string_append (gstr, ", ");
- g_string_append (gstr, ss);
- free (ss);
- }
- s = pspp_locale_to_utf8 (gstr->str, gstr->len, err);
- g_string_free (gstr, TRUE);
- }
-
- return s;
- }
+ return missing_values_to_string (pv, err);
}
break;
case COL_VALUES:
break;
case COL_MEASURE:
{
- const gint measure = var_get_measure (pv);
-
- g_assert (measure < n_MEASURES);
- return g_locale_to_utf8 (gettext (measures[measure]),
- -1, 0, 0, err);
+ return measure_to_string (pv, err);
}
break;
}
iface->get_button_label = geometry_get_button_label;
}
+
+
+
</widget>
</child>
</widget>
+ <widget class="PsppireDialog" id="variable-info-dialog">
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="title">Variables</property>
+ <property name="modal">True</property>
+ <child internal-child="hbox">
+ <widget class="GtkHBox" id="dialog-hbox6">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="spacing">5</property>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow11">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <widget class="GtkTreeView" id="treeview2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="headers_visible">False</property>
+ <property name="reorderable">True</property>
+ <property name="fixed_height_mode">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox23">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="spacing">5</property>
+ <child>
+ <widget class="GtkLabel" id="label24">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Variable Information:</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow12">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <widget class="GtkTextView" id="textview1">
+ <property name="height_request">200</property>
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="editable">False</property>
+ <property name="wrap_mode">GTK_WRAP_WORD_CHAR</property>
+ <property name="left_margin">3</property>
+ <property name="cursor_visible">False</property>
+ <property name="accepts_tab">False</property>
+ <property name="text" translatable="yes">
+
+
+
+
+
+
+
+
+
+</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">5</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="PsppireHButtonBox" id="psppire-hbuttonbox3">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="border_width">5</property>
+ <property name="homogeneous">True</property>
+ <property name="buttons">PSPPIRE_BUTTON_GOTO_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK | PSPPIRE_BUTTON_PASTE_MASK</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
</glade-interface>
--- /dev/null
+#include "var-display.h"
+
+#include <data/variable.h>
+#include <stdlib.h>
+
+#include "var-sheet.h"
+#include <gettext.h>
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
+#include "helper.h"
+
+const static gchar none[] = N_("None");
+
+gchar *
+name_to_string (const struct variable *var, GError **err)
+{
+ const char *name = var_get_name (var);
+ g_assert (name);
+
+ return pspp_locale_to_utf8 (name, -1, err);
+}
+
+
+gchar *
+label_to_string (const struct variable *var, GError **err)
+{
+ const char *label = var_get_label (var);
+
+ if ( ! label ) return g_strdup (none);
+
+ return pspp_locale_to_utf8 (label, -1, err);
+}
+
+gchar *
+measure_to_string (const struct variable *var, GError **err)
+{
+ const gint measure = var_get_measure (var);
+
+ g_assert (measure < n_MEASURES);
+ return g_locale_to_utf8 (gettext (measures[measure]),
+ -1, 0, 0, err);
+}
+
+
+gchar *
+missing_values_to_string (const struct variable *pv, GError **err)
+{
+ const struct fmt_spec *fmt = var_get_print_format (pv);
+ gchar *s;
+ const struct missing_values *miss = var_get_missing_values (pv);
+ if ( mv_is_empty (miss))
+ return g_locale_to_utf8 (gettext (none), -1, 0, 0, err);
+ else
+ {
+ if ( ! mv_has_range (miss))
+ {
+ GString *gstr = g_string_sized_new (10);
+ const int n = mv_n_values (miss);
+ gchar *mv[4] = {0,0,0,0};
+ gint i;
+ for (i = 0 ; i < n; ++i )
+ {
+ union value v;
+ mv_peek_value (miss, &v, i);
+ mv[i] = value_to_text (v, *fmt);
+ if ( i > 0 )
+ g_string_append (gstr, ", ");
+ g_string_append (gstr, mv[i]);
+ g_free (mv[i]);
+ }
+ s = pspp_locale_to_utf8 (gstr->str, gstr->len, err);
+ g_string_free (gstr, TRUE);
+ }
+ else
+ {
+ GString *gstr = g_string_sized_new (10);
+ gchar *l, *h;
+ union value low, high;
+ mv_peek_range (miss, &low.f, &high.f);
+
+ l = value_to_text (low, *fmt);
+ h = value_to_text (high, *fmt);
+
+ g_string_printf (gstr, "%s - %s", l, h);
+ g_free (l);
+ g_free (h);
+
+ if ( mv_has_value (miss))
+ {
+ gchar *ss = 0;
+ union value v;
+ mv_peek_value (miss, &v, 0);
+
+ ss = value_to_text (v, *fmt);
+
+ g_string_append (gstr, ", ");
+ g_string_append (gstr, ss);
+ free (ss);
+ }
+ s = pspp_locale_to_utf8 (gstr->str, gstr->len, err);
+ g_string_free (gstr, TRUE);
+ }
+
+ return s;
+ }
+}
--- /dev/null
+/*
+ PSPPIRE --- A Graphical User Interface for PSPP
+ Copyright (C) 2007 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
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA. */
+
+
+#ifndef VAR_DISPLAY_H
+#define VAR_DISPLAY 1
+
+#include <glib.h>
+
+struct variable;
+
+
+gchar * name_to_string (const struct variable *var, GError **err);
+
+
+gchar * missing_values_to_string (const struct variable *pv, GError **err);
+
+gchar * measure_to_string (const struct variable *var, GError **err);
+
+gchar * label_to_string (const struct variable *var, GError **err);
+
+
+#endif
--- /dev/null
+/*
+ PSPPIRE --- A Graphical User Interface for PSPP
+ Copyright (C) 2007 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
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA. */
+
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <gtksheet/gtksheet.h>
+
+#include "dict-display.h"
+#include "var-display.h"
+#include <data/variable.h>
+#include <data/value-labels.h>
+#include "data-editor.h"
+#include "psppire-dialog.h"
+#include "psppire-var-store.h"
+#include "helper.h"
+#include <gtksheet/gtksheet.h>
+
+#include <language/syntax-string-source.h>
+#include "syntax-editor.h"
+
+
+#include <gettext.h>
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
+
+static struct variable *
+get_selected_variable (GtkTreeView *treeview)
+{
+ struct variable *var;
+ GtkTreeModel *top_model;
+ GtkTreeIter top_iter;
+
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview);
+
+ if (! gtk_tree_selection_get_selected (selection,
+ &top_model, &top_iter))
+ {
+ return NULL;
+ }
+
+ get_base_model (top_model, &top_iter, &model, &iter);
+
+ g_assert (PSPPIRE_IS_DICT (model));
+
+ gtk_tree_model_get (model,
+ &iter, DICT_TVM_COL_VAR, &var, -1);
+
+ return var;
+}
+
+
+
+static void
+populate_text (GtkTreeView *treeview, gpointer data)
+{
+ gchar *text = 0;
+ GString *gstring;
+
+ GtkTextBuffer *textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(data));
+ const struct variable *var = get_selected_variable (treeview);
+
+ gstring = g_string_sized_new (200);
+ text = name_to_string (var, NULL);
+ g_string_assign (gstring, text);
+ g_free (text);
+ g_string_append (gstring, "\n");
+
+
+ text = label_to_string (var, NULL);
+ g_string_append_printf (gstring, _("Label: %s\n"), text);
+ g_free (text);
+
+ {
+ const struct fmt_spec *fmt = var_get_print_format (var);
+ char buffer[FMT_STRING_LEN_MAX + 1];
+
+ fmt_to_string (fmt, buffer);
+ /* No conversion necessary. buffer will always be ascii */
+ g_string_append_printf (gstring, _("Type: %s\n"), buffer);
+ }
+
+ text = missing_values_to_string (var, NULL);
+ g_string_append_printf (gstring, _("Missing Values: %s\n"),
+ text);
+ g_free (text);
+
+ text = measure_to_string (var, NULL);
+ g_string_append_printf (gstring, _("Measurement Level: %s\n"),
+ text);
+ g_free (text);
+
+
+
+ /* Value Labels */
+ if ( var_has_value_labels (var))
+ {
+ struct val_labs_iterator *vli = 0;
+ struct val_lab *vl;
+ const struct val_labs *labs = var_get_value_labels (var);
+
+ g_string_append (gstring, "\n");
+ g_string_append (gstring, _("Value Labels:\n"));
+
+#if 1
+ for (vl = val_labs_first_sorted (labs, &vli);
+ vl;
+ vl = val_labs_next (labs, &vli))
+ {
+ gchar *const vstr =
+ value_to_text (vl->value, *var_get_print_format (var));
+
+ text = pspp_locale_to_utf8 (vl->label, -1, NULL);
+
+ g_string_append_printf (gstring, _("%s %s\n"), vstr, text);
+
+ g_free (text);
+ g_free (vstr);
+ }
+#endif
+ }
+
+ gtk_text_buffer_set_text (textbuffer, gstring->str, gstring->len);
+
+ g_string_free (gstring, TRUE);
+}
+
+static gchar * generate_syntax (GtkTreeView *treeview);
+
+
+void
+variable_info_dialog (GObject *o, gpointer data)
+{
+ struct data_editor *de = data;
+
+ gint response ;
+
+ GladeXML *xml = XML_NEW ("psppire.glade");
+
+ GtkWidget *dialog = get_widget_assert (xml, "variable-info-dialog");
+ GtkWidget *treeview = get_widget_assert (xml, "treeview2");
+ GtkWidget *textview = get_widget_assert (xml, "textview1");
+
+ GtkSheet *var_sheet =
+ GTK_SHEET (get_widget_assert (de->xml, "variable_sheet"));
+
+
+ PsppireVarStore *vs = PSPPIRE_VAR_STORE (gtk_sheet_get_model (var_sheet));
+
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
+
+ attach_dictionary_to_treeview (GTK_TREE_VIEW (treeview),
+ vs->dict,
+ GTK_SELECTION_SINGLE,
+ NULL );
+
+
+ g_signal_connect (treeview, "cursor-changed", G_CALLBACK (populate_text),
+ textview);
+
+
+ gtk_text_view_set_indent (GTK_TEXT_VIEW (textview), -5);
+
+ response = psppire_dialog_run (PSPPIRE_DIALOG (dialog));
+
+ switch (response)
+ {
+ case PSPPIRE_RESPONSE_GOTO:
+ {
+ gint row, col;
+ GtkNotebook *notebook = GTK_NOTEBOOK
+ (get_widget_assert (de->xml,"notebook"));
+
+ const struct variable *var =
+ get_selected_variable (GTK_TREE_VIEW (treeview));
+
+
+ if (PAGE_VAR_SHEET == gtk_notebook_get_current_page (notebook))
+ {
+ GtkSheet *var_sheet =
+ GTK_SHEET (get_widget_assert (de->xml, "variable_sheet"));
+
+ gtk_sheet_get_active_cell (var_sheet, &row, &col);
+ row = var_get_dict_index (var);
+ gtk_sheet_set_active_cell (var_sheet, row, col);
+ }
+ else
+ {
+ GtkSheet *data_sheet =
+ GTK_SHEET (get_widget_assert (de->xml, "data_sheet"));
+
+ gtk_sheet_get_active_cell (data_sheet, &row, &col);
+ col = var_get_dict_index (var);
+ gtk_sheet_set_active_cell (data_sheet, row, col);
+ }
+ }
+ break;
+ case PSPPIRE_RESPONSE_PASTE:
+ {
+ gchar *syntax = generate_syntax (GTK_TREE_VIEW (treeview));
+
+ struct syntax_editor *se =
+ (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
+
+ gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
+
+ g_free (syntax);
+ }
+ break;
+ default:
+ break;
+ }
+
+ g_object_unref (xml);
+
+}
+
+static gchar *
+generate_syntax (GtkTreeView *treeview)
+{
+ const struct variable *var = get_selected_variable (treeview);
+
+ if ( NULL == var)
+ return g_strdup ("");
+
+ return g_strdup (var_get_name (var));
+}
+
--- /dev/null
+/*
+ PSPPIRE --- A Graphical User Interface for PSPP
+ Copyright (C) 2007 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
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA. */
+
+#ifndef __VARIABLE_DIALOG_H
+#define __VARIABLE_DIALOG_H
+
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+
+void variable_info_dialog (GObject *o, gpointer data);
+
+#endif