src_ui_gui_psppire_LDFLAGS = \
+ $(PSPPIRE_LDFLAGS) \
$(PG_LDFLAGS)
src/libpspp-core.la \
$(GTK_LIBS) \
$(GLADE_LIBS) \
- @LIBINTL@
+ @LIBINTL@ \
+ $(LIB_CLOSE)
src_ui_gui_psppiredir = $(pkgdatadir)
- dist_src_ui_gui_psppire_DATA = \
- $(top_srcdir)/src/ui/gui/data-editor.glade \
- $(top_srcdir)/src/ui/gui/descriptives-dialog.glade \
- $(top_srcdir)/src/ui/gui/examine.glade \
+ nodist_src_ui_gui_psppire_DATA = \
+ $(top_builddir)/src/ui/gui/crosstabs.ui \
+ $(top_builddir)/src/ui/gui/examine.ui \
+ $(top_builddir)/src/ui/gui/frequencies.ui \
+ $(top_builddir)/src/ui/gui/message-dialog.ui \
+ $(top_builddir)/src/ui/gui/psppire.ui \
+ $(top_builddir)/src/ui/gui/oneway.ui \
+ $(top_builddir)/src/ui/gui/rank.ui \
+ $(top_builddir)/src/ui/gui/recode.ui \
+ $(top_builddir)/src/ui/gui/regression.ui \
+ $(top_builddir)/src/ui/gui/t-test.ui
+
+ EXTRA_DIST += \
$(top_srcdir)/src/ui/gui/crosstabs.glade \
+ $(top_srcdir)/src/ui/gui/examine.glade \
$(top_srcdir)/src/ui/gui/frequencies.glade \
$(top_srcdir)/src/ui/gui/message-dialog.glade \
- $(top_srcdir)/src/ui/gui/oneway.glade \
- $(top_srcdir)/src/ui/gui/output-viewer.glade \
$(top_srcdir)/src/ui/gui/psppire.glade \
+ $(top_srcdir)/src/ui/gui/oneway.glade \
$(top_srcdir)/src/ui/gui/rank.glade \
$(top_srcdir)/src/ui/gui/recode.glade \
$(top_srcdir)/src/ui/gui/regression.glade \
+ $(top_srcdir)/src/ui/gui/t-test.glade
+
+ dist_src_ui_gui_psppire_DATA = \
+ $(top_srcdir)/src/ui/gui/data-editor.glade \
+ $(top_srcdir)/src/ui/gui/descriptives-dialog.glade \
+ $(top_srcdir)/src/ui/gui/output-viewer.glade \
$(top_srcdir)/src/ui/gui/syntax-editor.glade \
$(top_srcdir)/src/ui/gui/text-data-import.glade \
- $(top_srcdir)/src/ui/gui/t-test.glade \
$(top_srcdir)/src/ui/gui/psppicon.png \
$(top_srcdir)/src/ui/gui/pspplogo.png \
$(top_srcdir)/src/ui/gui/icons/value-labels.png \
src/ui/gui/frequencies-dialog.h \
src/ui/gui/goto-case-dialog.c \
src/ui/gui/goto-case-dialog.h \
- src/ui/gui/data-editor.c \
- src/ui/gui/data-editor.h \
src/ui/gui/descriptives-dialog.c \
src/ui/gui/descriptives-dialog.h \
src/ui/gui/examine-dialog.c \
src/ui/gui/missing-val-dialog.h \
src/ui/gui/oneway-anova-dialog.c \
src/ui/gui/oneway-anova-dialog.h \
- src/ui/gui/output-viewer.c \
- src/ui/gui/output-viewer.h \
src/ui/gui/psppire-acr.h \
src/ui/gui/psppire-buttonbox.h \
src/ui/gui/psppire-hbuttonbox.h \
src/ui/gui/sort-cases-dialog.h \
src/ui/gui/split-file-dialog.c \
src/ui/gui/split-file-dialog.h \
- src/ui/gui/syntax-editor.c \
- src/ui/gui/syntax-editor.h \
src/ui/gui/syntax-editor-source.c \
src/ui/gui/syntax-editor-source.h \
src/ui/gui/text-data-import-dialog.c \
src/ui/gui/weight-cases-dialog.h \
src/ui/gui/widget-io.c \
src/ui/gui/widget-io.h \
- src/ui/gui/window-manager.c \
- src/ui/gui/window-manager.h
+ src/ui/gui/psppire-data-window.c \
+ src/ui/gui/psppire-data-window.h \
+ src/ui/gui/psppire-output-window.c \
+ src/ui/gui/psppire-output-window.h \
+ src/ui/gui/psppire-window.c \
+ src/ui/gui/psppire-window.h \
+ src/ui/gui/psppire-window-register.c \
+ src/ui/gui/psppire-window-register.h \
+ src/ui/gui/psppire-syntax-window.c \
+ src/ui/gui/psppire-syntax-window.h
nodist_src_ui_gui_psppire_SOURCES = \
src/ui/gui/psppire-marshal.c \
src/ui/gui/psppire-marshal.h
-
-
yelp-check:
@if ! yelp --version > /dev/null 2>&1 ; then \
echo ; \
src/ui/gui/psppire-marshal.h: src/ui/gui/marshaller-list
glib-genmarshal --header --prefix=psppire_marshal $< > $@
+ .glade.ui:
+ gtk-builder-convert $< $@
+
EXTRA_DIST += src/ui/gui/OChangeLog\
src/ui/gui/marshaller-list
BUILT_SOURCES += src/ui/gui/psppire-marshal.c src/ui/gui/psppire-marshal.h
- CLEANFILES += src/ui/gui/psppire-marshal.c src/ui/gui/psppire-marshal.h
+ CLEANFILES += src/ui/gui/psppire-marshal.c src/ui/gui/psppire-marshal.h \
+ $(nodist_src_ui_gui_psppire_DATA)
#include "psppire-dialog.h"
#include "helper.h"
-#include "data-editor.h"
+#include "psppire-data-window.h"
+#include "psppire-data-editor.h"
#include <language/syntax-string-source.h>
-#include "syntax-editor.h"
+#include "helper.h"
#include "psppire-var-store.h"
#include <ui/syntax-gen.h>
#include "dialog-common.h"
#include <gtk/gtk.h>
- #include <glade/glade.h>
#include <gettext.h>
struct comment_dialog
{
- GladeXML *xml;
+ GtkBuilder *xml;
PsppireDict *dict;
};
{
GtkTextIter iter;
gint response ;
- struct data_editor *de = data;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
struct comment_dialog cd;
- GladeXML *xml = XML_NEW ("psppire.glade");
+ GtkBuilder *xml = builder_new ("psppire.ui");
GtkWidget *dialog = get_widget_assert (xml, "comments-dialog");
GtkWidget *textview = get_widget_assert (xml, "comments-textview1");
g_object_get (de->data_editor, "var-store", &vs, NULL);
- gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
{
PangoContext * context ;
case GTK_RESPONSE_OK:
{
gchar *syntax = generate_syntax (&cd);
+
struct getl_interface *sss = create_syntax_string_source (syntax);
execute_syntax (sss);
{
gchar *syntax = generate_syntax (&cd);
- struct syntax_editor *se =
- (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
-
- gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
+ paste_syntax_in_new_window (syntax);
g_free (syntax);
}
#include "helper.h"
#include "psppire-dialog.h"
#include "psppire-keypad.h"
-#include "data-editor.h"
+#include "psppire-data-window.h"
#include "psppire-var-store.h"
#include "dialog-common.h"
#include "dict-display.h"
#include <language/expressions/public.h>
#include <language/syntax-string-source.h>
-#include "syntax-editor.h"
+#include "helper.h"
static void function_list_populate (GtkTreeView *tv);
struct compute_dialog
{
- GladeXML *xml; /* The xml that generated the widgets */
+ GtkBuilder *xml; /* The xml that generated the widgets */
PsppireDict *dict;
gboolean use_type;
};
static void
on_keypad_button (PsppireKeypad *kp, const gchar *syntax, gpointer data)
{
- GladeXML *xml = data;
+ GtkBuilder *xml = data;
GtkWidget *rhs = get_widget_assert (xml, "compute-textview1");
static void
erase (PsppireKeypad *kp, gpointer data)
{
- GladeXML *xml = data;
+ GtkBuilder *xml = data;
GtkWidget *rhs = get_widget_assert (xml, "compute-textview1");
compute_dialog (GObject *o, gpointer data)
{
gint response;
- struct data_editor *de = data;
+ PsppireDataWindow *de = data;
PsppireVarStore *vs = NULL;
struct compute_dialog scd;
- GladeXML *xml = XML_NEW ("psppire.glade");
+ GtkBuilder *xml = builder_new ("psppire.ui");
GtkWidget *dialog = get_widget_assert (xml, "compute-variable-dialog");
g_signal_connect (expression, "toggled",
G_CALLBACK(on_expression_toggle), &scd);
- gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
attach_dictionary_to_treeview (GTK_TREE_VIEW (dict_view),
case GTK_RESPONSE_OK:
{
gchar *syntax = generate_syntax (&scd);
+
struct getl_interface *sss = create_syntax_string_source (syntax);
execute_syntax (sss);
{
gchar *syntax = generate_syntax (&scd);
- struct syntax_editor *se =
- (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
-
- gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
+ paste_syntax_in_new_window (syntax);
g_free (syntax);
}
#include <stdlib.h>
#include <language/syntax-string-source.h>
-#include <ui/gui/data-editor.h>
+#include <ui/gui/psppire-data-window.h>
#include <ui/gui/dialog-common.h>
#include <ui/gui/dict-display.h>
- #include <ui/gui/helper.h>
+ #include "helper.h"
#include <ui/gui/psppire-dialog.h>
#include <ui/gui/psppire-var-store.h>
-#include <ui/gui/syntax-editor.h>
+#include <ui/gui/helper.h>
#include "gettext.h"
#define _(msgid) gettext (msgid)
crosstabs_dialog (GObject *o, gpointer data)
{
gint response;
- struct data_editor *de = data;
-
struct crosstabs_dialog cd;
- GladeXML *xml = XML_NEW ("crosstabs.glade");
+ GtkBuilder *xml = builder_new ("crosstabs.ui");
+
PsppireVarStore *vs = NULL;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
+
+
GtkWidget *dialog = get_widget_assert (xml, "crosstabs-dialog");
GtkWidget *source = get_widget_assert (xml, "dict-treeview");
GtkWidget *dest_rows = get_widget_assert (xml, "rows");
cells
);
- gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
vs->dict,
cd.current_opts.table = TRUE;
cd.current_opts.pivot = TRUE;
- gtk_window_set_transient_for (GTK_WINDOW (cd.format_dialog), de->parent.window);
- gtk_window_set_transient_for (GTK_WINDOW (cd.cell_dialog), de->parent.window);
- gtk_window_set_transient_for (GTK_WINDOW (cd.stat_dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (cd.format_dialog), GTK_WINDOW (de));
+ gtk_window_set_transient_for (GTK_WINDOW (cd.cell_dialog), GTK_WINDOW (de));
+ gtk_window_set_transient_for (GTK_WINDOW (cd.stat_dialog), GTK_WINDOW (de));
g_signal_connect (dialog, "refresh", G_CALLBACK (refresh), &cd);
case GTK_RESPONSE_OK:
{
gchar *syntax = generate_syntax (&cd);
+
struct getl_interface *sss = create_syntax_string_source (syntax);
execute_syntax (sss);
{
gchar *syntax = generate_syntax (&cd);
- struct syntax_editor *se =
- (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
-
- gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
+ paste_syntax_in_new_window (syntax);
g_free (syntax);
}
#include <stdlib.h>
#include <language/syntax-string-source.h>
-#include <ui/gui/data-editor.h>
+#include <ui/gui/psppire-data-window.h>
#include <ui/gui/dialog-common.h>
#include <ui/gui/dict-display.h>
#include <ui/gui/helper.h>
#include <ui/gui/psppire-dialog.h>
#include <ui/gui/psppire-var-store.h>
-#include <ui/gui/syntax-editor.h>
+#include <ui/gui/helper.h>
#include "gettext.h"
#define _(msgid) gettext (msgid)
examine_dialog (GObject *o, gpointer data)
{
gint response;
- struct data_editor *de = data;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
struct examine_dialog ex_d;
-
- GladeXML *xml = XML_NEW ("examine.glade");
-
+ GtkBuilder *xml = builder_new ("examine.ui");
GtkWidget *dialog = get_widget_assert (xml, "examine-dialog");
GtkWidget *source = get_widget_assert (xml, "treeview1");
ex_d.percentiles_button = GTK_TOGGLE_BUTTON
(get_widget_assert (xml, "percentiles-button"));
- gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
- gtk_window_set_transient_for (GTK_WINDOW (ex_d.stats_dialog), de->parent.window);
- gtk_window_set_transient_for (GTK_WINDOW (ex_d.opts_dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
+ gtk_window_set_transient_for (GTK_WINDOW (ex_d.stats_dialog), GTK_WINDOW (de));
+ gtk_window_set_transient_for (GTK_WINDOW (ex_d.opts_dialog), GTK_WINDOW (de));
attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
vs->dict,
case PSPPIRE_RESPONSE_PASTE:
{
gchar *syntax = generate_syntax (&ex_d);
-
- struct syntax_editor *se =
- (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
-
- gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
-
+ paste_syntax_in_new_window (syntax);
g_free (syntax);
}
break;
#include "psppire-selector.h"
#include "psppire-dialog.h"
#include "helper.h"
-#include "data-editor.h"
+#include "psppire-data-window.h"
#include "dict-display.h"
#include <data/value.h>
#include <data/format.h>
#include <libpspp/message.h>
#include <gtk/gtk.h>
- #include <glade/glade.h>
#include <stdlib.h>
#include "xalloc.h"
struct find_dialog
{
- GladeXML *xml;
+ GtkBuilder *xml;
PsppireDict *dict;
struct datasheet *data;
- struct data_editor *de;
+ PsppireDataWindow *de;
GtkWidget *variable_entry;
GtkWidget *value_entry;
GtkWidget *value_labels_checkbox;
void
find_dialog (GObject *o, gpointer data)
{
- struct data_editor *de = data;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
struct find_dialog fd;
PsppireVarStore *vs ;
PsppireDataStore *ds ;
- fd.xml = XML_NEW ("psppire.glade");
+ fd.xml = builder_new ("psppire.ui");
fd.de = de;
find_button = gtk_button_new_from_stock (GTK_STOCK_FIND);
- gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
#include <stdlib.h>
#include <language/syntax-string-source.h>
-#include <ui/gui/data-editor.h>
+#include <ui/gui/psppire-data-window.h>
#include <ui/gui/dialog-common.h>
#include <ui/gui/dict-display.h>
#include <ui/gui/helper.h>
#include <ui/gui/psppire-dialog.h>
#include <ui/gui/psppire-var-store.h>
-#include <ui/gui/syntax-editor.h>
+#include <ui/gui/helper.h>
#include "gettext.h"
#define _(msgid) gettext (msgid)
frequencies_dialog (GObject *o, gpointer data)
{
gint response;
- struct data_editor *de = data;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
struct frequencies_dialog fd;
- GladeXML *xml = XML_NEW ("frequencies.glade");
+ GtkBuilder *xml = builder_new ("frequencies.ui");
GtkWidget *dialog = get_widget_assert (xml, "frequencies-dialog");
GtkWidget *source = get_widget_assert (xml, "dict-treeview");
);
- gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
vs->dict,
fd.current_opts.limit = 50;
- gtk_window_set_transient_for (GTK_WINDOW (fd.format_dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (fd.format_dialog), GTK_WINDOW (de));
g_signal_connect (dialog, "refresh", G_CALLBACK (refresh), &fd);
case GTK_RESPONSE_OK:
{
gchar *syntax = generate_syntax (&fd);
+
struct getl_interface *sss = create_syntax_string_source (syntax);
execute_syntax (sss);
case PSPPIRE_RESPONSE_PASTE:
{
gchar *syntax = generate_syntax (&fd);
-
- struct syntax_editor *se =
- (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
-
- gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
-
+ paste_syntax_in_new_window (syntax);
g_free (syntax);
}
break;
#include "goto-case-dialog.h"
#include "helper.h"
#include "psppire-dialog.h"
-#include "data-editor.h"
+#include "psppire-data-window.h"
#include "psppire-data-store.h"
static void
- refresh (const PsppireDataWindow *de, GladeXML *xml)
-refresh (const struct data_editor *de, GtkBuilder *xml)
++refresh (const PsppireDataWindow *de, GtkBuilder *xml)
{
PsppireDataStore *ds = NULL;
casenumber case_count ;
goto_case_dialog (GObject *o, gpointer data)
{
gint response;
- GladeXML *xml = XML_NEW ("psppire.glade");
+ GtkBuilder *xml = builder_new ("psppire.ui");
- struct data_editor *de = data;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
GtkWidget *dialog = get_widget_assert (xml, "goto-case-dialog");
- gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
refresh (de, xml);
*/
#include <config.h>
+#include "psppire-syntax-window.h"
+
#include <glib-object.h>
#include <glib.h>
#include <data/casereader-provider.h>
#include <libpspp/message.h>
+ #include <gtk/gtkbuilder.h>
#include <libpspp/i18n.h>
#include <ctype.h>
#include <language/lexer/lexer.h>
#include "psppire-data-store.h"
#include <output/manager.h>
-#include "output-viewer.h"
+#include "psppire-output-window.h"
#include "xalloc.h"
}
+ GtkBuilder *
+ builder_new_real (const gchar *name)
+ {
+ GtkBuilder *builder = gtk_builder_new ();
+
+ GError *err = NULL;
+ if ( ! gtk_builder_add_from_file (builder, name, &err))
+ {
+ g_critical ("Couldnt open user interface file %s: %s", name, err->message);
+ g_clear_error (&err);
+ }
+
+ return builder;
+ }
+
+
+
GtkWidget *
- get_widget_assert (GladeXML *xml, const gchar *name)
+ get_widget_assert (gpointer x, const gchar *name)
{
- GtkWidget *w;
- g_assert (xml);
+ GObject *obj = G_OBJECT (x);
+ GtkWidget *w = NULL;
g_assert (name);
- w = glade_xml_get_widget (xml, name);
+ if (GTK_IS_BUILDER (obj))
+ w = GTK_WIDGET (gtk_builder_get_object (GTK_BUILDER (obj), name));
+
+ if (GLADE_IS_XML (obj))
+ w = glade_xml_get_widget (GLADE_XML (obj), name);
if ( !w )
g_critical ("Widget \"%s\" could not be found\n", name);
som_flush ();
- reload_the_viewer ();
+ psppire_output_window_reload ();
return retval;
}
-
+void
+paste_syntax_in_new_window (const gchar *syntax)
+{
+ GtkWidget *se = psppire_syntax_window_new ();
+
+ gtk_text_buffer_insert_at_cursor (PSPPIRE_SYNTAX_WINDOW (se)->buffer, syntax, -1);
+
+ gtk_widget_show (se);
+}
#include <gtk/gtk.h>
#include <glade/glade.h>
+
+
+void paste_syntax_in_new_window (const gchar *syntax);
+
/*
GtkRecentChooserMenu was added in 2.10.0
but it didn't support GtkRecentFilters until
gboolean text_to_value (const gchar *text, union value *v,
struct fmt_spec format);
- GtkWidget * get_widget_assert (GladeXML *xml, const gchar *name);
+ GtkWidget * get_widget_assert (gpointer x, const gchar *name);
/* Converts a string in the pspp locale to utf-8 */
char * pspp_locale_to_utf8 (const gchar *text, gssize len, GError **err);
glade_xml_new (relocate(PKGDATADIR "/" FILE), NULL, NULL)
- void marshaller_VOID__INT_INT_INT (GClosure *closure,
- GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data);
+ #define builder_new(NAME) builder_new_real (relocate (PKGDATADIR "/" NAME))
+
+ GtkBuilder *builder_new_real (const gchar *name);
/* Create a deep copy of SRC */
#include <config.h>
- #include <glade/glade.h>
#include <gtk/gtk.h>
#include "oneway-anova-dialog.h"
#include "psppire-dict.h"
#include "psppire-var-store.h"
#include "helper.h"
-#include "data-editor.h"
+#include "psppire-data-window.h"
#include "psppire-dialog.h"
#include "dialog-common.h"
#include "dict-display.h"
#include <language/syntax-string-source.h>
-#include "syntax-editor.h"
+#include "helper.h"
#include "gettext.h"
}
+
/* Pops up the dialog box */
void
oneway_anova_dialog (GObject *o, gpointer data)
{
gint response;
- struct data_editor *de = data;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
PsppireVarStore *vs = NULL;
- GladeXML *xml = XML_NEW ("oneway.glade");
-
struct oneway_anova_dialog ow;
+ GtkBuilder *builder = builder_new ("oneway.ui");
+
GtkWidget *dict_view =
- get_widget_assert (xml, "oneway-anova-treeview1");
+ get_widget_assert (builder, "oneway-anova-treeview1");
GtkWidget *selector2 =
- get_widget_assert (xml, "oneway-anova-selector2");
+ get_widget_assert (builder, "oneway-anova-selector2");
GtkWidget *selector1 =
- get_widget_assert (xml, "oneway-anova-selector1");
+ get_widget_assert (builder, "oneway-anova-selector1");
GtkWidget *contrasts_button =
- get_widget_assert (xml, "contrasts-button");
+ get_widget_assert (builder, "contrasts-button");
g_signal_connect_swapped (contrasts_button, "clicked",
G_CALLBACK (run_contrasts_dialog), &ow);
- ow.factor_entry = get_widget_assert (xml, "oneway-anova-entry");
+ ow.factor_entry = get_widget_assert (builder, "oneway-anova-entry");
ow.vars_treeview =
- get_widget_assert (xml, "oneway-anova-treeview2");
+ get_widget_assert (builder, "oneway-anova-treeview2");
ow.descriptives =
- GTK_TOGGLE_BUTTON (get_widget_assert (xml, "checkbutton1"));
+ GTK_TOGGLE_BUTTON (get_widget_assert (builder, "checkbutton1"));
ow.homogeneity =
- GTK_TOGGLE_BUTTON (get_widget_assert (xml, "checkbutton2"));
+ GTK_TOGGLE_BUTTON (get_widget_assert (builder, "checkbutton2"));
g_object_get (de->data_editor, "var-store", &vs, NULL);
ow.dict = vs->dict;
ow.dialog =
- GTK_WINDOW (get_widget_assert (xml, "oneway-anova-dialog"));
+ GTK_WINDOW (get_widget_assert (builder, "oneway-anova-dialog"));
- gtk_window_set_transient_for (ow.dialog, de->parent.window);
+ gtk_window_set_transient_for (ow.dialog, GTK_WINDOW (de));
attach_dictionary_to_treeview (GTK_TREE_VIEW (dict_view),
vs->dict,
{
struct contrasts_subdialog *cd = &ow.contrasts;
- GtkEntry *entry = GTK_ENTRY (get_widget_assert (xml, "entry1"));
+ GtkEntry *entry = GTK_ENTRY (get_widget_assert (builder, "entry1"));
- cd->acr = PSPPIRE_ACR (get_widget_assert (xml, "psppire-acr1"));
- cd->contrasts_dialog = get_widget_assert (xml, "contrasts-dialog");
+ cd->acr = PSPPIRE_ACR (get_widget_assert (builder, "psppire-acr1"));
+ cd->contrasts_dialog = get_widget_assert (builder, "contrasts-dialog");
- cd->next = get_widget_assert (xml, "next-button");
- cd->prev = get_widget_assert (xml, "prev-button");
- cd->ctotal = get_widget_assert (xml, "entry2");
+ cd->next = get_widget_assert (builder, "next-button");
+ cd->prev = get_widget_assert (builder, "prev-button");
+ cd->ctotal = get_widget_assert (builder, "entry2");
- cd->stack_label = get_widget_assert (xml, "contrast-stack-label");
+ cd->stack_label = get_widget_assert (builder, "contrast-stack-label");
/* Contrasts */
ow.contrasts_array = g_array_new (FALSE, FALSE, sizeof (GtkListStore *));
psppire_acr_set_entry (cd->acr, entry);
gtk_window_set_transient_for (GTK_WINDOW (cd->contrasts_dialog),
- de->parent.window);
+ GTK_WINDOW (de));
}
response = psppire_dialog_run (PSPPIRE_DIALOG (ow.dialog));
case GTK_RESPONSE_OK:
{
gchar *syntax = generate_syntax (&ow);
+
struct getl_interface *sss = create_syntax_string_source (syntax);
execute_syntax (sss);
case PSPPIRE_RESPONSE_PASTE:
{
gchar *syntax = generate_syntax (&ow);
-
- struct syntax_editor *se =
- (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
-
- gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
+ paste_syntax_in_new_window (syntax);
g_free (syntax);
}
g_array_free (ow.contrasts_array, FALSE);
- g_object_unref (xml);
+ g_object_unref (builder);
}
/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2006, 2008 Free Software Foundation
+ Copyright (C) 2006, 2008, 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
#endif
}
-
-
static void
variable_changed_callback (GObject *obj, gint var_num, gpointer data)
{
psppire_sheet_column_columns_changed (PSPPIRE_SHEET_COLUMN (store),
var_num, 1);
-
psppire_sheet_model_range_changed (PSPPIRE_SHEET_MODEL (store),
-1, var_num,
-1, var_num);
{
gboolean result;
gint val_cnt, v;
- struct ccase cc;
+ struct ccase *cc;
g_return_val_if_fail (ds, FALSE);
val_cnt = datasheet_get_column_cnt (ds->datasheet) ;
g_return_val_if_fail (posn <= psppire_data_store_get_case_count (ds), FALSE);
- case_create (&cc, val_cnt);
+ cc = case_create (val_cnt);
- memset ( case_data_rw_idx (&cc, 0), 0, val_cnt * MAX_SHORT_STRING);
+ memset ( case_data_rw_idx (cc, 0), 0, val_cnt * MAX_SHORT_STRING);
for (v = 0 ; v < psppire_dict_get_var_cnt (ds->dict) ; ++v)
{
if ( var_is_alpha (pv))
continue;
- case_data_rw (&cc, pv)->f = SYSMIS;
+ case_data_rw (cc, pv)->f = SYSMIS;
}
- result = psppire_data_store_insert_case (ds, &cc, posn);
+ result = psppire_data_store_insert_case (ds, cc, posn);
- case_destroy (&cc);
+ case_unref (cc);
return result;
}
\f
- /* Fills C with the CASENUMth case.
- Returns true on success, false otherwise.
+ /* Returns the CASENUMth case, or a null pointer on failure.
*/
- gboolean
+ struct ccase *
psppire_data_store_get_case (const PsppireDataStore *ds,
- casenumber casenum,
- struct ccase *c)
+ casenumber casenum)
{
g_return_val_if_fail (ds, FALSE);
g_return_val_if_fail (ds->datasheet, FALSE);
- return datasheet_get_row (ds->datasheet, casenum, c);
+ return datasheet_get_row (ds->datasheet, casenum);
}
struct ccase *cc,
casenumber posn)
{
- struct ccase tmp;
bool result ;
g_return_val_if_fail (ds, FALSE);
g_return_val_if_fail (ds->datasheet, FALSE);
- case_clone (&tmp, cc);
- result = datasheet_insert_rows (ds->datasheet, posn, &tmp, 1);
+ case_ref (cc);
+ result = datasheet_insert_rows (ds->datasheet, posn, &cc, 1);
if ( result )
{
/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2004, 2005, 2006 Free Software Foundation
+ Copyright (C) 2004, 2005, 2006, 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
#include <assert.h>
#include <libintl.h>
#include <gsl/gsl_errno.h>
- #include <signal.h>
#include <argp.h>
#include <ui/command-line.h>
#include "relocatable.h"
-#include "data-editor.h"
+#include "psppire-data-window.h"
#include "psppire.h"
#include <libpspp/getl.h>
#include "message-dialog.h"
#include <ui/syntax-gen.h>
-#include "output-viewer.h"
+
+#include "psppire-output-window.h"
#include <data/sys-file-reader.h>
#include <data/por-file-reader.h>
struct source_stream *the_source_stream ;
struct dataset * the_dataset = NULL;
+static GtkWidget *the_data_window;
static void
replace_casereader (struct casereader *s)
#define _(msgid) gettext (msgid)
#define N_(msgid) msgid
++
++const char * output_file_name (void);
++
++
void
initialize (struct command_line_processor *clp, int argc, char **argv)
{
the_data_store = psppire_data_store_new (dictionary);
replace_casereader (NULL);
-
-
create_icon_factory ();
- outp_configure_driver_line (
- ss_cstr ("gui:ascii:screen:squeeze=on headers=off top-margin=0 "
- "bottom-margin=0 paginate=off length=auto width=auto "
- "emphasis=none "
- "output-file=\"" OUTPUT_FILE_NAME "\" append=yes"));
+ {
+ const char *filename = output_file_name ();
+
+ struct string config_string;
+
+ ds_init_empty (&config_string);
+
+ ds_put_format (&config_string,
+ "gui:ascii:screen:squeeze=on headers=off top-margin=0 "
+ "bottom-margin=0 paginate=off length=auto width=auto "
+ "emphasis=none "
+ "output-file=\"%s\" append=yes", filename);
+
+ outp_configure_driver_line (ds_ss (&config_string));
+
+ unlink (filename);
- unlink (OUTPUT_FILE_NAME);
+ ds_destroy (&config_string);
+ }
journal_enable ();
textdomain (PACKAGE);
- /* Ignore alarm clock signals */
- signal (SIGALRM, SIG_IGN);
-
+ the_data_window = psppire_data_window_new ();
+
command_line_processor_replace_aux (clp, &post_init_argp, the_source_stream);
command_line_processor_replace_aux (clp, &non_option_argp, the_source_stream);
command_line_processor_parse (clp, argc, argv);
- new_data_window (NULL, NULL);
-
execute_syntax (create_syntax_string_source (""));
+
+ gtk_widget_show (the_data_window);
}
ERRMODE_CONTINUE);
ds_destroy (&syntax);
+
+ psppire_window_set_filename (the_data_window, arg);
+
break;
}
default:
const struct argp non_option_argp = {NULL, parse_non_options, 0, 0, 0, 0, 0};
++
++
++const char *
++output_file_name (void)
++{
++ const char *dir = default_output_path ();
++ static char *filename = NULL;
++
++ if ( NULL == filename )
++ filename = xasprintf ("%s%s", dir, OUTPUT_FILE_NAME);
++
++
++ return filename;
++}
#include <stdlib.h>
#include <language/syntax-string-source.h>
-#include <ui/gui/data-editor.h>
+#include <ui/gui/psppire-data-window.h>
#include <ui/gui/dialog-common.h>
#include <ui/gui/dict-display.h>
#include <ui/gui/helper.h>
#include <ui/gui/psppire-dialog.h>
#include <ui/gui/psppire-var-store.h>
-#include <ui/gui/syntax-editor.h>
+#include <ui/gui/helper.h>
#include "gettext.h"
#define _(msgid) gettext (msgid)
rank_dialog (GObject *o, gpointer data)
{
gint response;
- struct data_editor *de = data;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
struct rank_dialog rd;
- GladeXML *xml = XML_NEW ("rank.glade");
+ GtkBuilder * builder = builder_new ("rank.ui");
- GtkWidget *vars = get_widget_assert (xml, "dict-treeview");
- GtkWidget *selector1 = get_widget_assert (xml, "psppire-selector1");
- GtkWidget *selector2 = get_widget_assert (xml, "psppire-selector2");
+ GtkWidget *vars = get_widget_assert (builder, "dict-treeview");
+ GtkWidget *selector1 = get_widget_assert (builder, "psppire-selector1");
+ GtkWidget *selector2 = get_widget_assert (builder, "psppire-selector2");
- GtkWidget *types_button = get_widget_assert (xml, "button1");
- GtkWidget *ties_button = get_widget_assert (xml, "button2");
+ GtkWidget *types_button = get_widget_assert (builder, "button1");
+ GtkWidget *ties_button = get_widget_assert (builder, "button2");
PsppireVarStore *vs = NULL;
g_object_get (de->data_editor, "var-store", &vs, NULL);
rd.dict = vs->dict;
- rd.rank_vars = get_widget_assert (xml, "variables-treeview");
- rd.group_vars = get_widget_assert (xml, "group-vars-treeview");
- rd.dialog = get_widget_assert (xml, "rank-dialog");
+ rd.rank_vars = get_widget_assert (builder, "variables-treeview");
+ rd.group_vars = get_widget_assert (builder, "group-vars-treeview");
+ rd.dialog = get_widget_assert (builder, "rank-dialog");
rd.ascending_togglebutton =
- GTK_TOGGLE_BUTTON (get_widget_assert (xml, "radiobutton1"));
+ GTK_TOGGLE_BUTTON (get_widget_assert (builder, "radiobutton1"));
rd.summary_togglebutton =
- GTK_TOGGLE_BUTTON (get_widget_assert (xml, "summary-checkbutton"));
+ GTK_TOGGLE_BUTTON (get_widget_assert (builder, "summary-checkbutton"));
- rd.types_dialog = get_widget_assert (xml, "rank-types-dialog");
+ rd.types_dialog = get_widget_assert (builder, "rank-types-dialog");
- rd.ntiles_entry = get_widget_assert (xml, "ntiles-entry");
+ rd.ntiles_entry = get_widget_assert (builder, "ntiles-entry");
rd.func_button[RANK] =
- GTK_TOGGLE_BUTTON (get_widget_assert (xml, "rank-checkbutton"));
+ GTK_TOGGLE_BUTTON (get_widget_assert (builder, "rank-checkbutton"));
rd.func_button[SAVAGE] =
- GTK_TOGGLE_BUTTON (get_widget_assert (xml, "savage-checkbutton"));
+ GTK_TOGGLE_BUTTON (get_widget_assert (builder, "savage-checkbutton"));
rd.func_button[RFRACTION] =
- GTK_TOGGLE_BUTTON (get_widget_assert (xml, "rfrac-checkbutton"));
+ GTK_TOGGLE_BUTTON (get_widget_assert (builder, "rfrac-checkbutton"));
rd.func_button[PERCENT] =
- GTK_TOGGLE_BUTTON (get_widget_assert (xml, "percent-checkbutton"));
+ GTK_TOGGLE_BUTTON (get_widget_assert (builder, "percent-checkbutton"));
rd.func_button[N] =
- GTK_TOGGLE_BUTTON (get_widget_assert (xml, "sum-checkbutton"));
+ GTK_TOGGLE_BUTTON (get_widget_assert (builder, "sum-checkbutton"));
rd.func_button[NTILES] =
- GTK_TOGGLE_BUTTON (get_widget_assert (xml, "ntiles-checkbutton"));
+ GTK_TOGGLE_BUTTON (get_widget_assert (builder, "ntiles-checkbutton"));
rd.func_button[PROPORTION] =
- GTK_TOGGLE_BUTTON (get_widget_assert (xml, "prop-checkbutton"));
+ GTK_TOGGLE_BUTTON (get_widget_assert (builder, "prop-checkbutton"));
rd.func_button[NORMAL] =
- GTK_TOGGLE_BUTTON (get_widget_assert (xml, "normal-checkbutton"));
+ GTK_TOGGLE_BUTTON (get_widget_assert (builder, "normal-checkbutton"));
- rd.formula_box = get_widget_assert (xml, "formula-frame");
+ rd.formula_box = get_widget_assert (builder, "formula-frame");
- rd.blom = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "blom-button"));
- rd.tukey = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "tukey-button"));
- rd.rankit = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "rankit-button"));
- rd.vw = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "vw-button"));
+ rd.blom = GTK_TOGGLE_BUTTON (get_widget_assert (builder, "blom-button"));
+ rd.tukey = GTK_TOGGLE_BUTTON (get_widget_assert (builder, "tukey-button"));
+ rd.rankit = GTK_TOGGLE_BUTTON (get_widget_assert (builder, "rankit-button"));
+ rd.vw = GTK_TOGGLE_BUTTON (get_widget_assert (builder, "vw-button"));
/* Ties dialog */
- rd.ties_dialog = PSPPIRE_DIALOG (get_widget_assert (xml, "ties-dialog"));
+ rd.ties_dialog = PSPPIRE_DIALOG (get_widget_assert (builder, "ties-dialog"));
- rd.mean = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "mean-button"));
- rd.low = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "low-button"));
- rd.high = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "high-button"));
- rd.condense = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "condense-button"));
+ rd.mean = GTK_TOGGLE_BUTTON (get_widget_assert (builder, "mean-button"));
+ rd.low = GTK_TOGGLE_BUTTON (get_widget_assert (builder, "low-button"));
+ rd.high = GTK_TOGGLE_BUTTON (get_widget_assert (builder, "high-button"));
+ rd.condense = GTK_TOGGLE_BUTTON (get_widget_assert (builder, "condense-button"));
g_signal_connect_swapped (rd.func_button[PROPORTION], "toggled",
G_CALLBACK (set_sensitivity),
G_CALLBACK (on_ntiles_toggle),
rd.ntiles_entry);
- gtk_window_set_transient_for (GTK_WINDOW (rd.dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (rd.dialog), GTK_WINDOW (de));
attach_dictionary_to_treeview (GTK_TREE_VIEW (vars),
vs->dict,
case GTK_RESPONSE_OK:
{
gchar *syntax = generate_syntax (&rd);
+
struct getl_interface *sss = create_syntax_string_source (syntax);
execute_syntax (sss);
case PSPPIRE_RESPONSE_PASTE:
{
gchar *syntax = generate_syntax (&rd);
-
- struct syntax_editor *se =
- (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
-
- gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
-
+ paste_syntax_in_new_window (syntax);
g_free (syntax);
}
break;
break;
}
- g_object_unref (xml);
+ g_object_unref (builder);
}
#include <gtk/gtk.h>
#include <language/syntax-string-source.h>
-#include <ui/gui/data-editor.h>
+#include <ui/gui/psppire-data-window.h>
#include <ui/gui/dialog-common.h>
#include <ui/gui/dict-display.h>
#include <ui/gui/helper.h>
#include <ui/gui/psppire-dialog.h>
#include <ui/gui/psppire-var-store.h>
-#include <ui/gui/syntax-editor.h>
+#include <ui/gui/helper.h>
#include <ui/syntax-gen.h>
#include "psppire-acr.h"
gtk_widget_set_sensitive (target, state);
}
-static void recode_dialog (struct data_editor *de, gboolean diff);
+static void recode_dialog (PsppireDataWindow *de, gboolean diff);
/* Pops up the Recode Same version of the dialog box */
void
recode_same_dialog (GObject *o, gpointer data)
{
- struct data_editor *de = data;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
recode_dialog (de, FALSE);
}
void
recode_different_dialog (GObject *o, gpointer data)
{
- struct data_editor *de = data;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
recode_dialog (de, TRUE);
}
}
static void
-recode_dialog (struct data_editor *de, gboolean diff)
+recode_dialog (PsppireDataWindow *de, gboolean diff)
{
gint response;
struct recode_dialog rd;
- GladeXML *xml = XML_NEW ("recode.glade");
+ GtkBuilder *builder = builder_new ("recode.ui");
+ GtkWidget *selector = get_widget_assert (builder, "psppire-selector1");
- GtkWidget *selector = get_widget_assert (xml, "psppire-selector1");
+ GtkWidget *oldandnew = get_widget_assert (builder, "button1");
- GtkWidget *oldandnew = get_widget_assert (xml, "button1");
-
- GtkWidget *output_variable_box = get_widget_assert (xml,"frame4");
+ GtkWidget *output_variable_box = get_widget_assert (builder,"frame4");
PsppireVarStore *vs = NULL;
g_object_get (de->data_editor, "var-store", &vs, NULL);
- rd.change_button = get_widget_assert (xml, "change-button");
+ rd.change_button = get_widget_assert (builder, "change-button");
- rd.dialog = get_widget_assert (xml, "recode-dialog");
- rd.dict_treeview = get_widget_assert (xml, "treeview1");
- rd.variable_treeview = get_widget_assert (xml, "treeview2");
- rd.new_name_entry = get_widget_assert (xml, "dest-name-entry");
- rd.new_label_entry = get_widget_assert (xml, "dest-label-entry");
+ rd.dialog = get_widget_assert (builder, "recode-dialog");
+ rd.dict_treeview = get_widget_assert (builder, "treeview1");
+ rd.variable_treeview = get_widget_assert (builder, "treeview2");
+ rd.new_name_entry = get_widget_assert (builder, "dest-name-entry");
+ rd.new_label_entry = get_widget_assert (builder, "dest-label-entry");
rd.dict = vs->dict;
rd.different = diff;
- gtk_window_set_transient_for (GTK_WINDOW (rd.dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (rd.dialog), GTK_WINDOW (de));
attach_dictionary_to_treeview (GTK_TREE_VIEW (rd.dict_treeview),
/* Set up the Old & New Values subdialog */
{
- rd.string_button = get_widget_assert (xml, "checkbutton1");
- rd.width_entry = get_widget_assert (xml, "spinbutton1");
+ rd.string_button = get_widget_assert (builder, "checkbutton1");
+ rd.width_entry = get_widget_assert (builder, "spinbutton1");
- rd.convert_button = get_widget_assert (xml, "checkbutton2");
+ rd.convert_button = get_widget_assert (builder, "checkbutton2");
- rd.ov_range_lower_entry = get_widget_assert (xml, "entry5");
- rd.ov_range_upper_entry = get_widget_assert (xml, "entry3");
- rd.ov_low_up_entry = get_widget_assert (xml, "entry6");
- rd.ov_high_down_entry = get_widget_assert (xml, "entry7");
+ rd.ov_range_lower_entry = get_widget_assert (builder, "entry5");
+ rd.ov_range_upper_entry = get_widget_assert (builder, "entry3");
+ rd.ov_low_up_entry = get_widget_assert (builder, "entry6");
+ rd.ov_high_down_entry = get_widget_assert (builder, "entry7");
- rd.new_value_entry = get_widget_assert (xml, "entry1");
- rd.ov_value_entry = get_widget_assert (xml, "entry2");
+ rd.new_value_entry = get_widget_assert (builder, "entry1");
+ rd.ov_value_entry = get_widget_assert (builder, "entry2");
- rd.toggle[BUTTON_NEW_VALUE] = get_widget_assert (xml, "radiobutton1");
- rd.toggle[BUTTON_NEW_SYSMIS] = get_widget_assert (xml, "radiobutton2");
- rd.toggle[BUTTON_NEW_COPY] = get_widget_assert (xml, "radiobutton3");
- rd.toggle[BUTTON_OLD_VALUE] = get_widget_assert (xml, "radiobutton4");
- rd.toggle[BUTTON_OLD_SYSMIS] = get_widget_assert (xml, "radiobutton6");
- rd.toggle[BUTTON_OLD_MISSING]= get_widget_assert (xml, "radiobutton7");
- rd.toggle[BUTTON_OLD_RANGE] = get_widget_assert (xml, "radiobutton8");
- rd.toggle[BUTTON_OLD_LOW_UP] = get_widget_assert (xml, "radiobutton10");
- rd.toggle[BUTTON_OLD_HIGH_DOWN] = get_widget_assert (xml, "radiobutton5");
- rd.toggle[BUTTON_OLD_ELSE] = get_widget_assert (xml, "radiobutton11");
+ rd.toggle[BUTTON_NEW_VALUE] = get_widget_assert (builder, "radiobutton1");
+ rd.toggle[BUTTON_NEW_SYSMIS] = get_widget_assert (builder, "radiobutton2");
+ rd.toggle[BUTTON_NEW_COPY] = get_widget_assert (builder, "radiobutton3");
+ rd.toggle[BUTTON_OLD_VALUE] = get_widget_assert (builder, "radiobutton4");
+ rd.toggle[BUTTON_OLD_SYSMIS] = get_widget_assert (builder, "radiobutton6");
+ rd.toggle[BUTTON_OLD_MISSING]= get_widget_assert (builder, "radiobutton7");
+ rd.toggle[BUTTON_OLD_RANGE] = get_widget_assert (builder, "radiobutton8");
+ rd.toggle[BUTTON_OLD_LOW_UP] = get_widget_assert (builder, "radiobutton10");
+ rd.toggle[BUTTON_OLD_HIGH_DOWN] = get_widget_assert (builder, "radiobutton5");
+ rd.toggle[BUTTON_OLD_ELSE] = get_widget_assert (builder, "radiobutton11");
- rd.new_copy_label = get_widget_assert (xml, "label3");
- rd.strings_box = get_widget_assert (xml, "table3");
+ rd.new_copy_label = get_widget_assert (builder, "label3");
+ rd.strings_box = get_widget_assert (builder, "table3");
rd.old_and_new_dialog =
- PSPPIRE_DIALOG (get_widget_assert (xml, "old-new-values-dialog"));
+ PSPPIRE_DIALOG (get_widget_assert (builder, "old-new-values-dialog"));
gtk_window_set_transient_for (GTK_WINDOW (rd.old_and_new_dialog),
- de->parent.window);
+ GTK_WINDOW (de));
- rd.acr = PSPPIRE_ACR (get_widget_assert (xml, "psppire-acr1"));
+ rd.acr = PSPPIRE_ACR (get_widget_assert (builder, "psppire-acr1"));
g_signal_connect_swapped (rd.toggle[BUTTON_NEW_VALUE], "toggled",
G_CALLBACK (set_acr), &rd);
g_signal_connect (rd.toggle[BUTTON_OLD_RANGE], "toggled",
G_CALLBACK (toggle_sensitivity),
- get_widget_assert (xml, "entry3"));
+ get_widget_assert (builder, "entry3"));
g_signal_connect (rd.toggle[BUTTON_OLD_RANGE], "toggled",
G_CALLBACK (toggle_sensitivity),
- get_widget_assert (xml, "entry5"));
+ get_widget_assert (builder, "entry5"));
g_signal_connect (rd.toggle[BUTTON_OLD_LOW_UP], "toggled",
G_CALLBACK (toggle_sensitivity), rd.ov_low_up_entry);
case GTK_RESPONSE_OK:
{
gchar *syntax = generate_syntax (&rd);
+
struct getl_interface *sss = create_syntax_string_source (syntax);
execute_syntax (sss);
case PSPPIRE_RESPONSE_PASTE:
{
gchar *syntax = generate_syntax (&rd);
-
- struct syntax_editor *se =
- (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
-
- gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
+ paste_syntax_in_new_window (syntax);
g_free (syntax);
}
gtk_list_store_clear (GTK_LIST_STORE (rd.value_map));
g_object_unref (rd.value_map);
- g_object_unref (xml);
+ g_object_unref (builder);
}
/* Initialise VAL to reflect the current status of RD */
#include <stdlib.h>
#include <language/syntax-string-source.h>
-#include <ui/gui/data-editor.h>
+#include <ui/gui/psppire-data-window.h>
#include <ui/gui/dialog-common.h>
#include <ui/gui/dict-display.h>
#include <ui/gui/helper.h>
#include <ui/gui/psppire-dialog.h>
#include <ui/gui/psppire-var-store.h>
-#include <ui/gui/syntax-editor.h>
+#include <ui/gui/helper.h>
#include "gettext.h"
#define _(msgid) gettext (msgid)
regression_dialog (GObject *o, gpointer data)
{
gint response;
- struct data_editor *de = data;
-
struct regression_dialog rd;
- GladeXML *xml = XML_NEW ("regression.glade");
+ GtkBuilder *xml = builder_new ("regression.ui");
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
-
PsppireVarStore *vs;
GtkWidget *dialog = get_widget_assert (xml, "regression-dialog");
stats
);
- gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
vs->dict,
rd.current_opts.pred = FALSE;
rd.current_opts.resid = FALSE;
- gtk_window_set_transient_for (GTK_WINDOW (rd.save_dialog), de->parent.window);
- gtk_window_set_transient_for (GTK_WINDOW (rd.stat_dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (rd.save_dialog), GTK_WINDOW (de));
+ gtk_window_set_transient_for (GTK_WINDOW (rd.stat_dialog), GTK_WINDOW (de));
g_signal_connect (dialog, "refresh", G_CALLBACK (refresh), &rd);
case GTK_RESPONSE_OK:
{
gchar *syntax = generate_syntax (&rd);
+
struct getl_interface *sss = create_syntax_string_source (syntax);
execute_syntax (sss);
case PSPPIRE_RESPONSE_PASTE:
{
gchar *syntax = generate_syntax (&rd);
-
- struct syntax_editor *se =
- (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
-
- gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
+ paste_syntax_in_new_window (syntax);
g_free (syntax);
}
#include "select-cases-dialog.h"
#include <gtk/gtk.h>
- #include <glade/glade.h>
#include "helper.h"
#include "psppire-dialog.h"
-#include "data-editor.h"
+#include "psppire-data-window.h"
#include "dialog-common.h"
#include "dict-display.h"
#include "widget-io.h"
#include <language/syntax-string-source.h>
-#include "syntax-editor.h"
+#include "helper.h"
#include <gettext.h>
struct select_cases_dialog
{
/* The XML that created the dialog */
- GladeXML *xml;
+ GtkBuilder *xml;
GtkWidget *spinbutton ;
GtkWidget *spinbutton1 ;
gint response;
struct select_cases_dialog scd = {0,0,0,0,0,0};
GtkWidget *dialog ;
- struct data_editor *de = data;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
GtkWidget *entry = NULL;
GtkWidget *selector ;
GtkWidget *button_range;
GtkWidget *button_sample;
- scd.xml = XML_NEW ("psppire.glade");
+ scd.xml = builder_new ("psppire.ui");
g_object_get (de->data_editor, "data-store", &scd.data_store, NULL);
dialog = get_widget_assert (scd.xml, "select-cases-dialog");
- gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
{
GtkWidget *source = get_widget_assert (scd.xml, "select-cases-treeview");
case GTK_RESPONSE_OK:
{
gchar *syntax = generate_syntax (&scd);
+
struct getl_interface *sss = create_syntax_string_source (syntax);
execute_syntax (sss);
case PSPPIRE_RESPONSE_PASTE:
{
gchar *syntax = generate_syntax (&scd);
-
- struct syntax_editor *se =
- (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
-
- gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
+ paste_syntax_in_new_window (syntax);
g_free (syntax);
}
#include "sort-cases-dialog.h"
#include "helper.h"
#include "psppire-dialog.h"
-#include "data-editor.h"
+#include "psppire-data-window.h"
#include "psppire-var-store.h"
#include "dialog-common.h"
#include "dict-display.h"
#include <language/syntax-string-source.h>
-#include "syntax-editor.h"
+#include "helper.h"
static void
refresh (PsppireDialog *dialog, GtkTreeView *dest)
sort_cases_dialog (GObject *o, gpointer data)
{
gint response;
- struct data_editor *de = data;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
struct sort_cases_dialog scd;
- GladeXML *xml = XML_NEW ("psppire.glade");
+ GtkBuilder *xml = builder_new ("psppire.ui");
GtkWidget *dialog = get_widget_assert (xml, "sort-cases-dialog");
g_object_get (de->data_editor, "var-store", &vs, NULL);
- gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
vs->dict,
case GTK_RESPONSE_OK:
{
gchar *syntax = generate_syntax (&scd);
+
struct getl_interface *sss = create_syntax_string_source (syntax);
execute_syntax (sss);
case PSPPIRE_RESPONSE_PASTE:
{
gchar *syntax = generate_syntax (&scd);
-
- struct syntax_editor *se =
- (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
-
- gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
+ paste_syntax_in_new_window (syntax);
g_free (syntax);
}
#include "psppire-selector.h"
#include "psppire-dialog.h"
#include "helper.h"
-#include "data-editor.h"
+#include "psppire-data-window.h"
#include "dict-display.h"
#include <language/syntax-string-source.h>
-#include "syntax-editor.h"
+#include "helper.h"
#include <data/dictionary.h>
#include <gtk/gtk.h>
- #include <glade/glade.h>
#include "dialog-common.h"
struct split_file_dialog
{
/* The XML that created the dialog */
- GladeXML *xml;
+ GtkBuilder *xml;
/* The dictionary to which this dialog pertains */
PsppireDict *dict;
on_off_toggled (GtkToggleButton *togglebutton,
gpointer user_data)
{
- GladeXML *xml = user_data;
+ GtkBuilder *xml = user_data;
GtkWidget *dest = get_widget_assert (xml, "split-file-grouping-vars");
GtkWidget *selector = get_widget_assert (xml, "split-file-selector");
GtkWidget *source = get_widget_assert (xml, "split-file-dict-treeview");
split_file_dialog (GObject *o, gpointer data)
{
gint response;
- struct data_editor *de = data;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
struct split_file_dialog sfd;
PsppireVarStore *vs ;
GtkWidget *selector ;
GtkWidget *on_off ;
- sfd.xml = XML_NEW ("psppire.glade");
+ sfd.xml = builder_new ("psppire.ui");
dialog = get_widget_assert (sfd.xml, "split-file-dialog");
source = get_widget_assert (sfd.xml, "split-file-dict-treeview");
g_signal_connect (dialog, "refresh", G_CALLBACK (refresh), &sfd);
- gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
response = psppire_dialog_run (PSPPIRE_DIALOG (dialog));
case GTK_RESPONSE_OK:
{
gchar *syntax = generate_syntax (&sfd);
+
struct getl_interface *sss = create_syntax_string_source (syntax);
execute_syntax (sss);
case PSPPIRE_RESPONSE_PASTE:
{
gchar *syntax = generate_syntax (&sfd);
-
- struct syntax_editor *se =
- (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
-
- gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
+ paste_syntax_in_new_window (syntax);
g_free (syntax);
}
#include <config.h>
- #include <glade/glade.h>
#include <gtk/gtk.h>
#include "t-test-independent-samples-dialog.h"
#include "psppire-dict.h"
#include "psppire-var-store.h"
#include "helper.h"
-#include "data-editor.h"
+#include "psppire-data-window.h"
#include "psppire-dialog.h"
#include "dialog-common.h"
#include "dict-display.h"
#include <ui/syntax-gen.h>
#include <language/syntax-string-source.h>
-#include "syntax-editor.h"
+#include "helper.h"
#include <gl/xalloc.h>
}
static struct tt_groups_dialog *
- tt_groups_dialog_create (GladeXML *xml, GtkWindow *parent)
+ tt_groups_dialog_create (GtkBuilder *xml, GtkWindow *parent)
{
struct tt_groups_dialog *grps = xmalloc (sizeof (*grps));
struct tt_indep_samples_dialog
{
- GladeXML *xml; /* The xml that generated the widgets */
+ GtkBuilder *xml; /* The xml that generated the widgets */
GtkWidget *dialog;
PsppireDict *dict;
GtkWidget *define_groups_button;
{
struct tt_indep_samples_dialog tt_d;
gint response;
- struct data_editor *de = data;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
PsppireVarStore *vs = NULL;
- GladeXML *xml = XML_NEW ("t-test.glade");
+ GtkBuilder *xml = builder_new ("t-test.ui");
GtkWidget *dict_view =
get_widget_assert (xml, "indep-samples-t-test-treeview1");
tt_d.define_groups_button = get_widget_assert (xml, "define-groups-button");
tt_d.groups_entry = get_widget_assert (xml, "indep-samples-t-test-entry");
- tt_d.opts = tt_options_dialog_create (xml, de->parent.window);
- tt_d.grps = tt_groups_dialog_create (xml, de->parent.window);
+ tt_d.opts = tt_options_dialog_create (xml, GTK_WINDOW (de));
+ tt_d.grps = tt_groups_dialog_create (xml, GTK_WINDOW (de));
- gtk_window_set_transient_for (GTK_WINDOW (tt_d.dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (tt_d.dialog), GTK_WINDOW (de));
attach_dictionary_to_treeview (GTK_TREE_VIEW (dict_view),
vs->dict,
case GTK_RESPONSE_OK:
{
gchar *syntax = generate_syntax (&tt_d);
+
struct getl_interface *sss = create_syntax_string_source (syntax);
execute_syntax (sss);
case PSPPIRE_RESPONSE_PASTE:
{
gchar *syntax = generate_syntax (&tt_d);
-
- struct syntax_editor *se =
- (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
-
- gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
-
+ paste_syntax_in_new_window (syntax);
g_free (syntax);
}
break;
#include <config.h>
- #include <glade/glade.h>
#include <gtk/gtk.h>
#include "t-test-one-sample.h"
#include "psppire-dict.h"
#include "psppire-var-store.h"
#include "helper.h"
-#include "data-editor.h"
+#include "psppire-data-window.h"
#include "psppire-dialog.h"
#include "dialog-common.h"
#include "dict-display.h"
#include "t-test-options.h"
#include <language/syntax-string-source.h>
-#include "syntax-editor.h"
#include <gettext.h>
#define _(msgid) gettext (msgid)
{
struct tt_one_sample_dialog tt_d;
gint response;
- struct data_editor *de = data;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
PsppireVarStore *vs = NULL;
- GladeXML *xml = XML_NEW ("t-test.glade");
+ GtkBuilder *xml = builder_new ("t-test.ui");
GtkWidget *dict_view =
get_widget_assert (xml, "one-sample-t-test-treeview2");
tt_d.dict = vs->dict;
tt_d.vars_treeview = get_widget_assert (xml, "one-sample-t-test-treeview1");
tt_d.test_value_entry = get_widget_assert (xml, "test-value-entry");
- tt_d.opt = tt_options_dialog_create (xml, de->parent.window);
+ tt_d.opt = tt_options_dialog_create (xml, GTK_WINDOW (de));
- gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
attach_dictionary_to_treeview (GTK_TREE_VIEW (dict_view),
vs->dict,
case GTK_RESPONSE_OK:
{
gchar *syntax = generate_syntax (&tt_d);
+
struct getl_interface *sss = create_syntax_string_source (syntax);
execute_syntax (sss);
{
gchar *syntax = generate_syntax (&tt_d);
- struct syntax_editor *se =
- (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
-
- gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
+ paste_syntax_in_new_window (syntax);
g_free (syntax);
}
#include <config.h>
#include <gtk/gtk.h>
- #include <glade/glade.h>
#include <language/syntax-string-source.h>
-#include "data-editor.h"
+#include "psppire-data-window.h"
#include "psppire-dict.h"
#include "psppire-var-store.h"
#include "dialog-common.h"
#include "psppire-dialog.h"
-#include "syntax-editor.h"
-
#include "helper.h"
#include "psppire-var-ptr.h"
{
struct tt_paired_samples_dialog tt_d;
gint response;
- struct data_editor *de = data;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
PsppireVarStore *vs = NULL;
- GladeXML *xml = XML_NEW ("t-test.glade");
+ GtkBuilder *xml = builder_new ("t-test.ui");
GtkWidget *dict_view =
get_widget_assert (xml, "paired-samples-t-test-treeview1");
tt_d.dict = vs->dict;
tt_d.pairs_treeview =
get_widget_assert (xml, "paired-samples-t-test-treeview2");
- tt_d.opt = tt_options_dialog_create (xml, de->parent.window);
+ tt_d.opt = tt_options_dialog_create (xml, GTK_WINDOW (de));
- gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
attach_dictionary_to_treeview (GTK_TREE_VIEW (dict_view),
case GTK_RESPONSE_OK:
{
gchar *syntax = generate_syntax (&tt_d);
+
struct getl_interface *sss = create_syntax_string_source (syntax);
execute_syntax (sss);
case PSPPIRE_RESPONSE_PASTE:
{
gchar *syntax = generate_syntax (&tt_d);
-
- struct syntax_editor *se =
- (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
-
- gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
+ paste_syntax_in_new_window (syntax);
g_free (syntax);
}
#include "psppire-selector.h"
#include "psppire-dialog.h"
#include "helper.h"
-#include "data-editor.h"
+#include "psppire-data-window.h"
#include "dict-display.h"
#include <language/syntax-string-source.h>
-#include "syntax-editor.h"
+#include "helper.h"
#include "dialog-common.h"
#include <gtk/gtk.h>
- #include <glade/glade.h>
#include <gettext.h>
#include "psppire-var-store.h"
- static gchar * generate_syntax (PsppireDict *dict, GladeXML *xml);
+ static gchar * generate_syntax (PsppireDict *dict, GtkBuilder *xml);
static void
refresh (PsppireDialog *dialog, gpointer data)
{
- GladeXML *xml = data;
+ GtkBuilder *xml = data;
GtkWidget *dest = get_widget_assert (xml, "variables-treeview");
GtkWidget *entry = get_widget_assert (xml, "new-name-entry");
GtkTreeModel *dmodel = gtk_tree_view_get_model (GTK_TREE_VIEW (dest));
static gboolean
dialog_state_valid (gpointer data)
{
- GladeXML *xml = data;
+ GtkBuilder *xml = data;
GtkWidget *tv = get_widget_assert (xml, "variables-treeview");
GtkWidget *entry = get_widget_assert (xml, "new-name-entry");
transpose_dialog (GObject *o, gpointer data)
{
gint response ;
- struct data_editor *de = data;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
- GladeXML *xml = XML_NEW ("psppire.glade");
+ GtkBuilder *xml = builder_new ("psppire.ui");
PsppireVarStore *vs = NULL;
g_signal_connect (dialog, "refresh", G_CALLBACK (refresh), xml);
- gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
psppire_dialog_set_valid_predicate (PSPPIRE_DIALOG (dialog),
dialog_state_valid, xml);
case GTK_RESPONSE_OK:
{
gchar *syntax = generate_syntax (vs->dict, xml);
+
struct getl_interface *sss = create_syntax_string_source (syntax);
execute_syntax (sss);
case PSPPIRE_RESPONSE_PASTE:
{
gchar *syntax = generate_syntax (vs->dict, xml);
-
- struct syntax_editor *se =
- (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
-
- gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
+ paste_syntax_in_new_window (syntax);
g_free (syntax);
}
FLIP /VARIABLES=var_list /NEWNAMES=var_name.
*/
static gchar *
- generate_syntax (PsppireDict *dict, GladeXML *xml)
+ generate_syntax (PsppireDict *dict, GtkBuilder *xml)
{
const gchar *text;
GString *string = g_string_new ("FLIP");
#include <config.h>
#include <gtk/gtk.h>
- #include <glade/glade.h>
#include "dict-display.h"
#include "var-display.h"
#include <data/variable.h>
#include <data/format.h>
#include <data/value-labels.h>
-#include "data-editor.h"
+#include "psppire-data-window.h"
#include "psppire-dialog.h"
#include "psppire-var-store.h"
#include "helper.h"
#include <language/syntax-string-source.h>
-#include "syntax-editor.h"
+#include "helper.h"
#include <gettext.h>
void
variable_info_dialog (GObject *o, gpointer data)
{
- struct data_editor *de = data;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
gint response ;
- GladeXML *xml = XML_NEW ("psppire.glade");
+ GtkBuilder *xml = builder_new ("psppire.ui");
GtkWidget *dialog = get_widget_assert (xml, "variable-info-dialog");
GtkWidget *treeview = get_widget_assert (xml, "treeview2");
g_object_get (de->data_editor, "var-store", &vs, NULL);
- gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
attach_dictionary_to_treeview (GTK_TREE_VIEW (treeview),
vs->dict,
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);
+ paste_syntax_in_new_window (syntax);
g_free (syntax);
}
#include "psppire-selector.h"
#include "psppire-dialog.h"
#include "helper.h"
-#include "data-editor.h"
+#include "psppire-data-window.h"
#include "dict-display.h"
#include <language/syntax-string-source.h>
-#include "syntax-editor.h"
+#include "helper.h"
#include <gtk/gtk.h>
- #include <glade/glade.h>
#include <gettext.h>
#define _(msgid) gettext (msgid)
weight_cases_dialog (GObject *o, gpointer data)
{
gint response;
- struct data_editor *de = data;
+ PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
struct weight_cases_dialog wcd;
- GladeXML *xml = XML_NEW ("psppire.glade");
+ GtkBuilder *xml = builder_new ("psppire.ui");
GtkWidget *dialog = get_widget_assert (xml, "weight-cases-dialog");
GtkWidget *source = get_widget_assert (xml, "weight-cases-treeview");
g_object_get (de->data_editor, "var-store", &vs, NULL);
- gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
g_signal_connect (radiobutton1, "toggled", G_CALLBACK (on_toggle), entry);
g_signal_connect (selector, "selected", G_CALLBACK (on_select),
case PSPPIRE_RESPONSE_PASTE:
{
gchar *syntax = generate_syntax (&wcd);
-
- struct syntax_editor *se =
- (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
-
- gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
-
+ paste_syntax_in_new_window (syntax);
g_free (syntax);
}
break;