72
74
static Pixmap spinup_bm=0; /* pixmaps for spinners */
73
75
static Pixmap spindown_bm=0;
74
static void validate_int(); /* validation for spinners */
76
static void validate_int(Widget w, XtPointer info, XtPointer dum); /* validation for spinners */
75
77
static void convert_gridstr(Widget widget, float mult);
77
79
/* for internal consumption only (use MakeIntSpinnerEntry or MakeFloatSpinnerEntry) */
78
static Widget MakeSpinnerEntry();
80
static Widget MakeSpinnerEntry(Widget parent, Widget *text, char *name, Widget below, Widget beside, XtCallbackProc callback, char *string, int type, float min, float max, float inc, int width);
80
82
/* bitmap for checkmark */
81
83
static unsigned char check_bits[] = {
165
167
/* popup a confirmation window */
167
static query_result, query_done;
169
static int query_result, query_done;
168
170
static String query_translations =
169
171
"<Message>WM_PROTOCOLS: DismissQuery()\n";
170
static void accept_cancel();
172
static void accept_cancel(Widget widget, XtPointer closure, XtPointer call_data);
171
173
static XtActionsRec query_actions[] =
173
175
{"DismissQuery", (XtActionProc) accept_cancel},
186
accept_yes(widget, closure, call_data)
190
accept_yes(Widget widget, XtPointer closure, XtPointer call_data)
192
193
query_result = RESULT_YES;
196
accept_no(widget, closure, call_data)
197
accept_no(Widget widget, XtPointer closure, XtPointer call_data)
202
200
query_result = RESULT_NO;
206
accept_cancel(widget, closure, call_data)
204
accept_cancel(Widget widget, XtPointer closure, XtPointer call_data)
212
207
query_result = RESULT_CANCEL;
216
accept_part(widget, closure, call_data)
211
accept_part(Widget widget, XtPointer closure, XtPointer call_data)
222
214
query_result = RESULT_PART;
226
accept_all(widget, closure, call_data)
218
accept_all(Widget widget, XtPointer closure, XtPointer call_data)
232
221
query_result = RESULT_ALL;
236
popup_query(query_type, message)
225
popup_query(int query_type, char *message)
240
227
Widget query_popup, query_form, query_message;
241
228
Widget query_yes, query_no, query_cancel;
367
354
#include "SmeCascade.h"
357
#include "e_placelib.h"
358
#include "w_rulers.h"
370
make_pulldown_menu(entries, nent, divide_line, divide_message, parent, callback)
374
char *divide_message;
376
XtCallbackProc callback;
361
make_pulldown_menu(char **entries, Cardinal nent, int divide_line, char *divide_message, Widget parent, XtCallbackProc callback)
379
363
Widget pulldown_menu, entry;
403
CvtStringToFloat(args, num_args, fromVal, toVal)
387
CvtStringToFloat(XrmValuePtr args, Cardinal *num_args, XrmValuePtr fromVal, XrmValuePtr toVal)
421
CvtIntToFloat(args, num_args, fromVal, toVal)
401
CvtIntToFloat(XrmValuePtr args, Cardinal *num_args, XrmValuePtr fromVal, XrmValuePtr toVal)
433
409
(*toVal).addr = (caddr_t) & f;
412
void fix_converters(void)
438
414
XtAppAddConverter(tool_app, "String", "Float", CvtStringToFloat, NULL, 0);
439
415
XtAppAddConverter(tool_app, "Int", "Float", CvtIntToFloat, NULL, 0);
444
cancel_color(w, widget, dum1)
446
XtPointer widget, dum1;
420
cancel_color(Widget w, XtPointer widget, XtPointer dum1)
448
422
XtPopdown((Widget)widget);
452
make_color_popup_menu(parent, name, callback, include_transp, include_backg)
455
XtCallbackProc callback;
456
Boolean include_transp, include_backg;
426
make_color_popup_menu(Widget parent, char *name, XtCallbackProc callback, Boolean include_transp, Boolean include_backg)
459
428
Widget pop_menu, pop_form, color_box;
460
429
Widget viewp, entry, label;
737
694
/* Code to handle automatic spinning when user holds down mouse button */
738
695
/***********************************************************************/
740
static XtTimerCallbackProc auto_spin();
697
static XtTimerCallbackProc auto_spin(XtPointer client_data, XtIntervalId *id);
741
698
static XtIntervalId auto_spinid;
742
static XtEventHandler stop_spin_timer();
699
static XtEventHandler stop_spin_timer(int widget, int data, int event);
743
700
static Widget cur_spin = (Widget) 0;
746
start_spin_timer(widget, data, event)
703
start_spin_timer(Widget widget, XtPointer data, XEvent event)
751
705
auto_spinid = XtAppAddTimeOut(tool_app, appres.spinner_delay,
752
706
(XtTimerCallbackProc) auto_spin, (XtPointer) NULL);
755
709
(XtEventHandler) stop_spin_timer, (XtPointer) NULL);
756
710
/* keep track of which one the user is pressing */
757
711
cur_spin = widget;
760
716
static XtEventHandler
761
stop_spin_timer(widget, data, event)
717
stop_spin_timer(int widget, int data, int event)
763
719
XtRemoveTimeOut(auto_spinid);
766
724
static XtTimerCallbackProc
767
auto_spin(client_data, id)
768
XtPointer client_data;
725
auto_spin(XtPointer client_data, XtIntervalId *id)
771
727
auto_spinid = XtAppAddTimeOut(tool_app, appres.spinner_rate,
772
728
(XtTimerCallbackProc) auto_spin, (XtPointer) NULL);
773
729
/* call the proper spinup/down routine */
774
730
XtCallCallbacks(cur_spin, XtNcallback, 0);
777
735
/***************************/
779
737
/***************************/
782
MakeIntSpinnerEntry(parent, text, name, below, beside, callback,
783
string, min, max, inc, width)
784
Widget parent, *text;
786
Widget below, beside;
787
XtCallbackProc callback;
740
MakeIntSpinnerEntry(Widget parent, Widget *text, char *name, Widget below, Widget beside, XtCallbackProc callback, char *string, int min, int max, int inc, int width)
792
742
return MakeSpinnerEntry(parent, text, name, below, beside, callback,
793
743
string, I_IVAL, (float) min, (float) max, (float) inc, width);
798
748
/*********************************/
801
MakeFloatSpinnerEntry(parent, text, name, below, beside, callback,
802
string, min, max, inc, width)
803
Widget parent, *text;
805
Widget below, beside;
806
XtCallbackProc callback;
751
MakeFloatSpinnerEntry(Widget parent, Widget *text, char *name, Widget below, Widget beside, XtCallbackProc callback, char *string, float min, float max, float inc, int width)
811
753
return MakeSpinnerEntry(parent, text, name, below, beside, callback,
812
754
string, I_FVAL, min, max, inc, width);
835
777
*****************************************************************************************/
838
MakeSpinnerEntry(parent, text, name, below, beside, callback,
839
string, type, min, max, inc, width)
840
Widget parent, *text;
842
Widget below, beside;
843
XtCallbackProc callback;
780
MakeSpinnerEntry(Widget parent, Widget *text, char *name, Widget below, Widget beside, XtCallbackProc callback, char *string, int type, float min, float max, float inc, int width)
849
782
Widget inform, outform, spinup, spindown, source;
850
783
spin_struct *spinstruct;
994
927
/* validate the integer spinner as user types */
997
validate_int(w, info, dum)
930
validate_int(Widget w, XtPointer info, XtPointer dum)
1002
933
spin_struct *spins = (spin_struct*) info;
1006
937
/* save cursor position */
1007
938
FirstArg(XtNinsertPosition, &pos);
1038
969
/* handle the wheelmouse wheel */
1041
spinner_up_down(w, ev, params, num_params)
1045
Cardinal *num_params;
972
spinner_up_down(Widget w, XButtonEvent *ev, String *params, Cardinal *num_params)
1047
974
w = XtParent(w);
1048
975
if (params[0][0] == '+') w = XtNameToWidget(w, "*spinup");
1059
986
/* if the file message window is up add it to the grab */
1060
987
/* in this way a user may dismiss the file_msg panel if another panel is up */
989
void file_msg_add_grab(void)
1064
991
if (file_msg_popup)
1065
992
XtAddGrab(file_msg_popup, False, False);
1119
1044
/* process any (single) outstanding Xt event to allow things like button pushes */
1046
void process_pending(void)
1123
1048
while (XtAppPending(tool_app))
1124
1049
XtAppProcessEvent(tool_app, XtIMAll);
1320
1245
/* put a string into an ASCII text widget */
1323
panel_set_value(widg, val)
1248
panel_set_value(Widget widg, char *val)
1327
1250
FirstArg(XtNstring, val);
1328
1251
SetValues(widg);
1347
1269
/* put an int into an ASCII text widget */
1350
panel_set_int(widg, intval)
1272
panel_set_int(Widget widg, int intval)
1355
1275
sprintf(buf, "%d", intval);
1359
1279
/* put a float into an ASCII text widget */
1362
panel_set_float(widg, floatval, format)
1282
panel_set_float(Widget widg, float floatval, char *format)
1368
1285
sprintf(buf, format, floatval);
1372
1289
/* create a checkbutton with a labelled area to the right */
1375
CreateCheckbutton(label, widget_name, parent, below, beside, manage, large,
1376
value, user_callback, togwidg)
1379
Widget parent, below, beside;
1383
XtCallbackProc user_callback;
1292
CreateCheckbutton(char *label, char *widget_name, Widget parent, Widget below, Widget beside, Boolean manage, Boolean large, Boolean *value, XtCallbackProc user_callback, Widget *togwidg)
1386
1294
DeclareArgs(20);
1387
1295
Widget form, toggle, labelw;
1519
check_for_resize(tool, event, params, nparams)
1521
XButtonEvent *event;
1425
check_for_resize(Widget tool, XButtonEvent *event, String *params, Cardinal *nparams)
1526
1428
XConfigureEvent *xc = (XConfigureEvent *) event;
1541
1443
/* resize whole shebang given new canvas size (width,height) */
1543
resize_all(width, height)
1445
void resize_all(int width, int height)
1546
1447
Dimension b, b2, b3, w, h, h2;
1547
1448
int min_sw_per_row;
1803
make_grid_options(parent, put_below, put_beside, minor_grid_value, major_grid_value,
1804
grid_minor_menu_button, grid_major_menu_button,
1805
grid_minor_menu, grid_major_menu,
1806
print_grid_minor_text, print_grid_major_text,
1807
grid_unit_label, grid_major_select, grid_minor_select)
1808
Widget parent, put_below, put_beside;
1809
char *minor_grid_value, *major_grid_value;
1810
Widget *grid_minor_menu_button, *grid_major_menu_button;
1811
Widget *grid_minor_menu, *grid_major_menu;
1812
Widget *print_grid_minor_text, *print_grid_major_text;
1813
Widget *grid_unit_label;
1814
void (*grid_major_select)(), (*grid_minor_select)();
1702
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) (/* ??? */))
1816
1704
Widget below, beside;
2004
1892
char *sval, fraction[20];
2005
1893
double fracts[] = { 2, 4, 8, 16, 32 };
2006
1894
double tol[] = { 0.05, 0.1, 0.2, 0.3, 0.6};
2007
#define NUM_FRACTS sizeof(fracts)/sizeof(int)
1895
#define NUM_FRACTS sizeof(fracts)/sizeof(double)
2010
1898
FirstArg(XtNstring, &sval);