1 /* 2 * FIG : Facility for Interactive Generation of figures 3 * Copyright (c) 1985-1988 by Supoj Sutanthavibul 4 * Parts Copyright (c) 1989-2007 by Brian V. Smith 5 * Parts Copyright (c) 1991 by Paul King 6 * 7 * Any party obtaining a copy of these files is granted, free of charge, a 8 * full and unrestricted irrevocable, world-wide, paid up, royalty-free, 9 * nonexclusive right and license to deal in this software and documentation 10 * files (the "Software"), including without limitation the rights to use, 11 * copy, modify, merge, publish, distribute, sublicense and/or sell copies of 12 * the Software, and to permit persons who receive copies from any such 13 * party to do so, with the only requirement being that the above copyright 14 * and this permission notice remain intact. 15 * 16 */ 17 18 #ifndef W_UTIL_H 19 #define W_UTIL_H 20 21 #include "w_indpanel.h" 22 23 /* constant values used for popup_query */ 24 25 #define QUERY_YESCAN 0 26 #define QUERY_YESNO 1 27 #define QUERY_YESNOCAN 2 28 #define QUERY_ALLPARTCAN 3 29 #define QUERY_OK 4 30 31 #define RESULT_CANCEL -1 32 #define RESULT_NO 0 33 #define RESULT_YES 1 34 #define RESULT_ALL 2 35 #define RESULT_PART 3 36 37 /* some consts used by both w_indpanel.c, w_export.c and w_print.c */ 38 39 #define I_CHOICE 0 40 #define I_IVAL 1 41 #define I_FVAL 2 42 43 /* width/height of the color buttons */ 44 45 #define COLOR_BUT_WID 82 46 #define COLOR_BUT_HT 18 47 #define COLOR_BUT_BD_WID 1 /* border width */ 48 49 /* true/false consts for make_color_popup_menu */ 50 51 #define INCL_TRANSP True /* include transparent color button */ 52 #define NO_TRANSP False /* don't ... */ 53 54 #define INCL_BACKG True /* include background color button */ 55 #define NO_BACKG False /* don't ... */ 56 57 #define MANAGE True /* manage checkbox after creating */ 58 #define DONT_MANAGE False /* don't ... */ 59 60 #define LARGE_CHK True /* use large checkmark */ 61 #define SMALL_CHK False /* use small checkmark (don't use large) */ 62 63 64 #define NUM_ARROW_TYPES 30 /* number of arrow types */ 65 66 #define MAX_GRID_STRLEN 8 /* max strlen in grid_xxx_choices[] */ 67 68 /* EXPORTS */ 69 70 extern char *grid_inch_choices[], *grid_tenth_inch_choices[]; 71 extern char *grid_cm_choices[]; 72 extern int num_grid_inch_choices, num_grid_tenth_inch_choices, num_grid_cm_choices; 73 extern char **grid_choices; 74 extern int n_grid_choices, grid_minor, grid_major; 75 extern Widget make_grid_options(Widget parent, Widget put_below, Widget put_beside, char *minor_grid_value, char *major_grid_value, Widget *grid_minor_menu_button, Widget *grid_major_menu_button, Widget *grid_minor_menu, Widget *grid_major_menu, Widget *print_grid_minor_text, Widget *print_grid_major_text, Widget *grid_unit_label, void (*grid_major_select) (/* ??? */), void (*grid_minor_select) (/* ??? */)); 76 extern void reset_grid_menus(Boolean inches); 77 78 extern Boolean check_action_on(void); 79 extern void check_for_resize(Widget tool, XButtonEvent *event, String *params, Cardinal *nparams); 80 extern void check_colors(void); 81 82 extern Widget make_pulldown_menu(char **entries, Cardinal nent, int divide_line, char *divide_message, Widget parent, XtCallbackProc callback); 83 extern Widget make_color_popup_menu(Widget parent, char *name, XtCallbackProc callback, Boolean include_transp, Boolean include_backg); 84 extern void set_color_name(int color, char *buf); 85 extern void set_but_col(Widget widget, Pixel color); 86 extern Widget MakeIntSpinnerEntry(Widget parent, Widget *text, char *name, Widget below, Widget beside, XtCallbackProc callback, char *string, int min, int max, int inc, int width); 87 extern Widget MakeFloatSpinnerEntry(Widget parent, Widget *text, char *name, Widget below, Widget beside, XtCallbackProc callback, char *string, float min, float max, float inc, int width); 88 extern Widget CreateCheckbutton(char *label, char *widget_name, Widget parent, Widget below, Widget beside, Boolean manage, Boolean large, Boolean *value, XtCallbackProc user_callback, Widget *togwidg); 89 extern void /* XtCallbackProc */ toggle_checkbutton(Widget w, XtPointer data, XtPointer garbage); 90 extern Pixmap mouse_l, mouse_r; 91 extern Pixmap check_pm, null_check_pm; 92 extern Pixmap sm_check_pm, sm_null_check_pm; 93 /* put these here so w_layers.c can get to them too */ 94 #define check_width 16 95 #define check_height 16 96 #define sm_check_width 10 97 #define sm_check_height 10 98 extern Pixmap balloons_on_bitmap; 99 extern Pixmap balloons_off_bitmap; 100 extern Pixmap menu_arrow, menu_cascade_arrow; 101 extern Pixmap arrow_pixmaps[NUM_ARROW_TYPES+1]; 102 extern Pixmap diamond_pixmap; 103 extern Pixmap linestyle_pixmaps[NUM_LINESTYLE_TYPES]; 104 extern char *panel_get_value(Widget widg); 105 extern void panel_set_value(Widget widg, char *val); 106 extern void panel_set_int(Widget widg, int intval), panel_set_float(Widget widg, float floatval, char *format); 107 extern void update_wm_title(char *name); 108 extern void get_pointer_win_xy(int *xposn, int *yposn); 109 extern void get_pointer_root_xy(int *xposn, int *yposn); 110 extern void spinner_up_down(Widget w, XButtonEvent *ev, String *params, Cardinal *num_params); 111 extern void clear_splash(void); 112 extern void InstallScroll(Widget widget); 113 extern void InstallScrollParent(Widget widget); 114 extern void fix_converters(void); 115 116 extern Boolean user_colors_saved; 117 extern Boolean nuser_colors_saved; 118 119 /* 120 * Author: Doyle C. Davidson 121 * Intergraph Corporation 122 * One Madison Industrial Park 123 * Huntsville, Al. 35894-0001 124 * 125 * Modification history: 126 * 11 May 91 - added SetValues and GetValues - Paul King 127 * 128 * My macros for using XtSetArg easily: 129 * Usage: 130 * 131 * blah() 132 * { 133 * DeclareArgs(2); 134 * ... 135 * FirstArg(XmNx, 100); 136 * NextArg(XmNy, 80); 137 * button = XmCreatePushButton(parent, name, Args, ArgCount); 138 * } 139 */ 140 141 #include <assert.h> 142 143 #define ArgCount _ArgCount 144 #define Args _ArgList 145 #define ArgCountMax _ArgCountMax 146 147 #define DeclareArgs(n) Arg Args[n]; int ArgCountMax = n; int ArgCount 148 149 #define DeclareStaticArgs(n) static Arg Args[n]; static int ArgCountMax = n; static int ArgCount 150 151 #define FirstArg(name, val) \ 152 do { XtSetArg(Args[0], (name), (val)); ArgCount=1;} while (0) 153 #define NextArg(name, val) \ 154 do { assert(ArgCount < ArgCountMax); \ 155 XtSetArg(Args[ArgCount], (name), (val)); ArgCount++;} while (0) 156 #define GetValues(n) XtGetValues(n, Args, ArgCount) 157 #define SetValues(n) XtSetValues(n, Args, ArgCount) 158 159 /* data structure passed to SpinnerEntry callback */ 160 161 typedef struct { 162 Widget widget; /* text widget inside spinner */ 163 float min, max; /* min, max values allowed */ 164 float inc; /* how much to inc/dec spinner with each click */ 165 } spin_struct; 166 167 /* A clumsy exercise to avoid -Wpointer-to-int-cast warnings. */ 168 typedef union { 169 XtPointer ptr; 170 int val; 171 } ptr_int; 172 173 extern void app_flush (void); 174 extern void file_msg_add_grab (void); 175 extern void process_pending (void); 176 extern void resize_all (int width, int height); 177 extern void restore_nuser_colors (void); 178 extern void restore_user_colors (void); 179 extern void save_nuser_colors (void); 180 extern void save_user_colors (void); 181 extern int popup_query(int query_type, char *message); 182 extern void create_bitmaps(void); 183 extern void splash_screen(void); 184 extern int xallncol(char *name, XColor *color, XColor *exact); 185 186 #endif /* W_UTIL_H */ 187