PsppireImportAssistant: Clear the dictionary before re-adding the variables
[pspp] / src / ui / gui / psppire-data-window.h
1 /* PSPPIRE - a graphical user interface for PSPP.
2    Copyright (C) 2008, 2010, 2011, 2012, 2013, 2014, 2016  Free Software Foundation
3
4    This program is free software: you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation, either version 3 of the License, or
7    (at your option) any later version.
8
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12    GNU General Public License for more details.
13
14    You should have received a copy of the GNU General Public License
15    along with this program.  If not, see <http://www.gnu.org/licenses/>. */
16
17
18 #ifndef __PSPPIRE_DATA_WINDOW_H__
19 #define __PSPPIRE_DATA_WINDOW_H__
20
21 /* PsppireDataWindow is a top-level window for editing a PSPP dataset.
22
23    PsppireDataWindow contains a PsppireDataEditor.
24
25    PsppireDataWindow's own functionality basically amounts to managing menus
26    and toolbars.  In addition to maintaining some menu itema and toolbar items
27    of its own, it merges in menu and toolbar items provided by its child
28    PsppireDataEditor (based on the "ui-manager" property of PsppireDataEditor).
29  */
30
31 #include <glib.h>
32 #include <glib-object.h>
33 #include <gtk/gtk.h>
34
35 #include "libpspp/ll.h"
36 #include "ui/gui/psppire-window.h"
37 #include "ui/gui/psppire-data-editor.h"
38
39 G_BEGIN_DECLS
40
41 #define PSPPIRE_DATA_WINDOW_TYPE            (psppire_data_window_get_type ())
42 #define PSPPIRE_DATA_WINDOW(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), PSPPIRE_DATA_WINDOW_TYPE, PsppireDataWindow))
43 #define PSPPIRE_DATA_WINDOW_CLASS(class)    (G_TYPE_CHECK_CLASS_CAST ((class), \
44     PSPPIRE_DATA_WINDOW_TYPE, PsppireData_WindowClass))
45 #define PSPPIRE_IS_DATA_WINDOW(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
46     PSPPIRE_DATA_WINDOW_TYPE))
47 #define PSPPIRE_IS_DATA_WINDOW_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \
48     PSPPIRE_DATA_WINDOW_TYPE))
49
50
51 typedef struct _PsppireDataWindow       PsppireDataWindow;
52 typedef struct _PsppireDataWindowClass  PsppireDataWindowClass;
53
54
55 enum PsppireDataWindowFormat {
56   PSPPIRE_DATA_WINDOW_SAV,
57   PSPPIRE_DATA_WINDOW_ZSAV,
58   PSPPIRE_DATA_WINDOW_POR
59 };
60
61 struct _PsppireDataWindow
62 {
63   PsppireWindow parent;
64
65   /* <private> */
66   PsppireDataEditor *data_editor;
67   GtkBuilder *builder;
68
69   PsppireDict *dict;
70   struct dataset *dataset;
71   PsppireDataStore *data_store;
72
73   enum PsppireDataWindowFormat format;
74
75   struct ll ll;                 /* In global 'all_data_windows' list. */
76   unsigned long int lazy_serial;
77   unsigned int dataset_seqno;
78
79   GtkToolItem *ti_value_labels_button;
80
81   GtkToolItem *ti_jump_to_variable;
82   GtkToolItem *ti_insert_variable;
83   GtkToolItem *ti_jump_to_case;
84   GtkToolItem *ti_insert_case;
85   GtkToolItem *ti_find;
86
87   GtkWidget *mi_go_to_case;
88   GtkWidget *mi_insert_case;
89   GtkWidget *mi_find;
90   GtkWidget *mi_find_separator;
91   GtkWidget *mi_options;
92
93   GtkWidget *mi_edit_separator ;
94   GtkWidget *mi_cut;
95   GtkWidget *mi_copy;
96   GtkWidget *mi_paste;
97   GtkWidget *mi_clear_variables;
98   GtkWidget *mi_clear_cases;
99   GtkWidget *mi_insert_var;
100 };
101
102 struct _PsppireDataWindowClass
103 {
104   PsppireWindowClass parent_class;
105 };
106
107 extern struct session *the_session;
108 extern struct ll_list all_data_windows;
109
110 GType      psppire_data_window_get_type        (void);
111 GtkWidget* psppire_data_window_new             (struct dataset *);
112
113 PsppireDataWindow *psppire_default_data_window (void);
114 void psppire_data_window_set_default (PsppireDataWindow *);
115 void psppire_data_window_undefault (PsppireDataWindow *);
116
117 PsppireDataWindow *psppire_data_window_for_dataset (struct dataset *);
118 PsppireDataWindow *psppire_data_window_for_data_store (PsppireDataStore *);
119
120 bool psppire_data_window_is_empty (PsppireDataWindow *);
121 GtkWindow * create_data_window (void);
122 GtkWindow * open_data_window (PsppireWindow *victim, const char *file_name,
123                        const char *encoding, gpointer hint);
124
125 G_END_DECLS
126
127 #endif /* __PSPPIRE_DATA_WINDOW_H__ */