Reimplemented CreateBitmapOptionChoice
[grace.git] / src / explorer.h
blobc15115a9d0d91b21e56d2d037885955be801f3d9
1 /*
2 * Grace - GRaphing, Advanced Computation and Exploration of data
3 *
4 * Home page: http://plasma-gate.weizmann.ac.il/Grace/
5 *
6 * Copyright (c) 2003-2005 Grace Development Team
7 *
8 * Maintained by Evgeny Stambulchik
9 *
11 * All Rights Reserved
13 * This program is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License as published by
15 * the Free Software Foundation; either version 2 of the License, or
16 * (at your option) any later version.
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
23 * You should have received a copy of the GNU General Public License
24 * along with this program; if not, write to the Free Software
25 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
28 #ifndef __EXPLORER_H_
29 #define __EXPLORER_H_
31 /* for MAX_TICKS */
32 #include "core_utils.h"
34 #include "motifinc.h"
36 typedef struct {
37 Widget top;
39 SpinStructure *prec;
40 TextStructure *description;
42 OptionStructure *page_orient;
43 OptionStructure *page_format;
44 OptionStructure *page_size_unit;
45 TextStructure *page_x;
46 TextStructure *page_y;
48 OptionStructure *bg_color;
49 Widget bg_fill;
51 SpinStructure *fsize_scale;
52 SpinStructure *lwidth_scale;
54 TextStructure *refdate;
55 TextStructure *wrap_year;
56 Widget two_digits_years;
58 int current_page_units;
59 } ProjectUI;
61 typedef struct {
62 Quark *q;
64 Widget top;
66 Widget main_tp;
67 Widget column_tp;
68 Widget hotlink_tp;
70 Widget mw;
72 ListStructure *col_sel;
73 TextStructure *col_label;
75 Widget hotlink;
76 OptionStructure *hotsrc;
77 TextStructure *hotfile;
79 Widget popup;
80 Widget index_btn;
81 Widget unindex_btn;
82 Widget delete_btn;
84 int cb_column;
85 } SSDataUI;
87 typedef struct {
88 Widget top;
90 Widget main_tp;
91 Widget legends_tp;
92 Widget legendbox_tp;
94 TextStructure *view_xv1;
95 TextStructure *view_xv2;
96 TextStructure *view_yv1;
97 TextStructure *view_yv2;
99 OptionStructure *frame_framestyle_choice;
100 Widget frame_pen;
101 OptionStructure *frame_lines_choice;
102 SpinStructure *frame_linew_choice;
103 Widget frame_fillpen;
105 SpinStructure *legend_anchor_x;
106 SpinStructure *legend_anchor_y;
107 OptionStructure *legend_just;
108 SpinStructure *legend_dx;
109 SpinStructure *legend_dy;
110 Widget toggle_legends;
111 SpinStructure *legends_vgap;
112 SpinStructure *legends_hgap;
113 SpinStructure *legends_len;
114 Widget legends_invert;
115 Widget legends_singlesym;
116 OptionStructure *legend_font;
117 SpinStructure *legend_charsize;
118 OptionStructure *legend_color;
119 SpinStructure *legend_boxlinew;
120 OptionStructure *legend_boxlines;
121 Widget legend_boxpen;
122 Widget legend_boxfillpen;
123 } FrameUI;
125 typedef struct {
126 Widget top;
128 Widget main_tp;
129 Widget locator_tp;
131 OptionStructure *graph_type;
132 Widget stacked;
134 TextStructure *start_x;
135 TextStructure *stop_x;
136 OptionStructure *scale_x;
137 Widget invert_x;
138 TextStructure *start_y;
139 TextStructure *stop_y;
140 OptionStructure *scale_y;
141 Widget invert_y;
143 Widget flip_xy;
144 SpinStructure *bargap;
145 TextStructure *znorm;
147 OptionStructure *loc_type;
148 FormatStructure *loc_fx;
149 FormatStructure *loc_fy;
150 TextStructure *locx;
151 TextStructure *locy;
152 Widget fixedp;
154 } GraphUI;
156 typedef struct {
157 Widget top;
159 Widget main_tp;
160 Widget symbol_tp;
161 Widget line_tp;
162 Widget errbar_tp;
163 Widget avalue_tp;
164 Widget frame_tp;
166 OptionStructure *type;
168 OptionStructure *cols[MAX_SET_COLS];
169 OptionStructure *acol;
171 OptionStructure *symbols;
172 SpinStructure *symsize;
173 SpinStructure *symskip;
174 SpinStructure *symskipmindist;
175 Widget sympen;
176 Widget symfillpen;
177 SpinStructure *symlinew;
178 OptionStructure *symlines;
179 OptionStructure *symchar;
180 OptionStructure *char_font;
182 Widget pen;
183 SpinStructure *width;
184 Widget dropline;
185 OptionStructure *lines;
186 OptionStructure *linet;
187 OptionStructure *filltype;
188 OptionStructure *fillrule;
189 Widget fillpen;
190 Widget baseline;
191 OptionStructure *baselinetype;
193 TextStructure *legend_str;
195 Widget errbar_active;
196 Widget errbar_pen;
197 SpinStructure *errbar_size;
198 SpinStructure *errbar_width;
199 OptionStructure *errbar_lines;
200 SpinStructure *errbar_riserlinew;
201 OptionStructure *errbar_riserlines;
202 Widget errbar_aclip;
203 SpinStructure *errbar_cliplen;
205 Widget avalue_active;
206 OptionStructure *avalue_font;
207 OptionStructure *avalue_color;
208 SpinStructure *avalue_charsize;
209 SpinStructure *avalue_angle;
210 FormatStructure *avalue_format;
211 TextStructure *avalue_offsetx;
212 TextStructure *avalue_offsety;
213 OptionStructure *avalue_just;
214 TextStructure *avalue_prestr;
215 TextStructure *avalue_appstr;
217 OptionStructure *frame_decor;
218 SpinStructure *frame_offset;
219 SpinStructure *frame_linew;
220 OptionStructure *frame_lines;
221 Widget frame_linepen;
222 Widget frame_fillpen;
223 } SetUI;
225 typedef struct {
226 Widget top;
228 OptionStructure *position;
229 SpinStructure *offset;
230 Widget draw_bar;
231 Widget draw_ticks;
232 Widget draw_labels;
233 } AxisUI;
235 typedef struct {
236 Widget top;
238 Widget main_tp;
239 Widget label_tp;
240 Widget ticklabel_tp;
241 Widget tickmark_tp;
242 Widget special_tp;
243 Widget sw;
245 OptionStructure *type;
247 TextStructure *tmajor;
248 SpinStructure *nminor;
250 Widget tgrid;
251 Widget tgridpen;
252 SpinStructure *tgridlinew;
253 OptionStructure *tgridlines;
254 Widget tmgrid;
255 Widget tmgridpen;
256 SpinStructure *tmgridlinew;
257 OptionStructure *tmgridlines;
259 FormatStructure *tlform;
260 OptionStructure *tlfont;
261 SpinStructure *tlcharsize;
262 OptionStructure *tlcolor;
263 TextStructure *tlappstr;
264 TextStructure *tlprestr;
265 OptionStructure *tlskip;
266 OptionStructure *tlstarttype;
267 TextStructure *tlstart;
268 OptionStructure *tlstoptype;
269 TextStructure *tlstop;
270 TextStructure *tlgap_para;
271 TextStructure *tlgap_perp;
272 SpinStructure *tlangle;
273 OptionStructure *tlstagger;
274 TextStructure *tlformula;
275 OptionStructure *autonum;
276 Widget tround;
277 OptionStructure *tinout;
278 Widget tpen;
279 SpinStructure *tlinew;
280 OptionStructure *tlines;
281 OptionStructure *tminout;
282 Widget tmpen;
283 SpinStructure *tmlinew;
284 OptionStructure *tmlines;
285 SpinStructure *tlen;
286 SpinStructure *tmlen;
287 Widget baronoff;
288 Widget barpen;
289 SpinStructure *barlinew;
290 OptionStructure *barlines;
292 OptionStructure *specticks;
293 SpinStructure *nspec;
294 TextStructure *specloc[MAX_TICKS];
295 TextStructure *speclabel[MAX_TICKS];
296 } AGridUI;
298 typedef struct {
299 Widget top;
301 SpinStructure *v_x;
302 SpinStructure *v_y;
303 OptionStructure *arrow_end;
305 OptionStructure *a_type;
306 SpinStructure *a_length;
307 SpinStructure *a_dL_ff;
308 SpinStructure *a_lL_ff;
309 } LineUI;
311 typedef struct {
312 Widget top;
314 SpinStructure *width;
315 SpinStructure *height;
316 } BoxUI;
318 typedef struct {
319 Widget top;
321 SpinStructure *width;
322 SpinStructure *height;
324 SpinStructure *angle1;
325 SpinStructure *angle2;
327 OptionStructure *closure_type;
328 Widget draw_closure;
329 } ArcUI;
331 typedef struct {
332 Widget top;
334 Widget main_tp;
335 Widget odata_tp;
337 TextStructure *x;
338 TextStructure *y;
340 SpinStructure *offsetx;
341 SpinStructure *offsety;
342 SpinStructure *angle;
344 SpinStructure *linew;
345 OptionStructure *lines;
346 Widget linepen;
347 Widget fillpen;
349 LineUI *line_ui;
350 BoxUI *box_ui;
351 ArcUI *arc_ui;
352 } ObjectUI;
354 typedef struct {
355 Widget top;
356 Widget main_tp;
357 Widget frame_tp;
359 TextStructure *x;
360 TextStructure *y;
362 SpinStructure *offsetx;
363 SpinStructure *offsety;
365 TextStructure *text;
367 OptionStructure *font;
368 SpinStructure *size;
369 OptionStructure *color;
370 OptionStructure *just;
371 SpinStructure *angle;
373 OptionStructure *frame_decor;
374 SpinStructure *frame_offset;
375 SpinStructure *linew;
376 OptionStructure *lines;
377 Widget linepen;
378 Widget fillpen;
380 Widget arrow_flag;
381 OptionStructure *a_type;
382 SpinStructure *a_length;
383 SpinStructure *a_dL_ff;
384 SpinStructure *a_lL_ff;
385 } ATextUI;
387 typedef struct {
388 Widget top;
390 OptionStructure *type;
391 OptionStructure *color;
392 } RegionUI;
394 struct _ExplorerUI {
395 Widget top;
396 Widget tree;
397 Widget instantupdate;
398 WidgetList aacbuts;
399 TextStructure *idstr;
400 Widget scrolled_window;
402 int homogeneous_parent;
404 ProjectUI *project_ui;
405 SSDataUI *ssd_ui;
406 FrameUI *frame_ui;
407 GraphUI *graph_ui;
408 SetUI *set_ui;
409 AGridUI *axisgrid_ui;
410 AxisUI *axis_ui;
411 ObjectUI *object_ui;
412 ATextUI *atext_ui;
413 RegionUI *region_ui;
415 Widget popup;
417 Widget popup_hide_bt;
418 Widget popup_show_bt;
420 Widget popup_delete_bt;
421 Widget popup_duplicate_bt;
423 Widget project_popup;
425 Widget project_popup_show_bt;
427 Widget project_popup_save_bt;
428 Widget project_popup_save_as_bt;
429 Widget project_popup_revert_to_saved_bt;
431 Widget project_popup_close_bt;
433 Widget edit_undo_bt;
434 Widget edit_redo_bt;
436 Widget insert_frame_bt;
437 Widget insert_graph_bt;
438 Widget insert_ssd_bt;
439 Widget insert_set_bt;
440 Widget insert_axisgrid_bt;
441 Widget insert_axis_bt;
442 Widget insert_object_pane;
443 Widget insert_line_bt;
444 Widget insert_box_bt;
445 Widget insert_arc_bt;
446 Widget insert_text_bt;
448 Pixmap a_icon;
449 Pixmap h_icon;
452 void oc_explorer_cb(OptionStructure *opt, int a, void *data);
453 void tb_explorer_cb(Widget but, int a, void *data);
454 void scale_explorer_cb(Widget scale, int a, void *data);
455 void sp_explorer_cb(SpinStructure *spinp, double a, void *data);
456 void text_explorer_cb(TextStructure *cst, char *s, void *data);
457 void pen_explorer_cb(Widget but, const Pen *pen, void *data);
458 void format_explorer_cb(FormatStructure *fstr, const Format *format, void *data);
460 ProjectUI *create_project_ui(ExplorerUI *eui);
461 void update_project_ui(ProjectUI *ui, Quark *q);
462 int set_project_data(ProjectUI *ui, Quark *q, void *caller);
464 SSDataUI *create_ssd_ui(ExplorerUI *eui);
465 void update_ssd_ui(SSDataUI *ui, Quark *q);
466 int set_ssd_data(SSDataUI *ui, Quark *q, void *caller);
468 FrameUI *create_frame_ui(ExplorerUI *eui);
469 void update_frame_ui(FrameUI *ui, Quark *q);
470 int set_frame_data(FrameUI *ui, Quark *q, void *caller);
472 GraphUI *create_graph_ui(ExplorerUI *eui);
473 void update_graph_ui(GraphUI *ui, Quark *q);
474 int graph_set_data(GraphUI *ui, Quark *q, void *caller);
476 SetUI *create_set_ui(ExplorerUI *eui);
477 void update_set_ui(SetUI *ui, Quark *q);
478 int set_set_data(SetUI *ui, Quark *q, void *caller);
480 AGridUI *create_axisgrid_ui(ExplorerUI *eui);
481 void update_axisgrid_ui(AGridUI *ui, Quark *q);
482 int set_axisgrid_data(AGridUI *ui, Quark *q, void *caller);
484 AxisUI *create_axis_ui(ExplorerUI *eui);
485 void update_axis_ui(AxisUI *ui, Quark *q);
486 int set_axis_data(AxisUI *ui, Quark *q, void *caller);
488 ObjectUI *create_object_ui(ExplorerUI *eui);
489 void update_object_ui(ObjectUI *ui, Quark *q);
490 int set_object_data(ObjectUI *ui, Quark *q, void *caller);
492 ATextUI *create_atext_ui(ExplorerUI *eui);
493 void update_atext_ui(ATextUI *ui, Quark *q);
494 int set_atext_data(ATextUI *ui, Quark *q, void *caller);
496 RegionUI *create_region_ui(ExplorerUI *eui);
497 void update_region_ui(RegionUI *ui, Quark *q);
498 int set_region_data(RegionUI *ui, Quark *q, void *caller);
500 #endif /* __EXPLORER_H_ */