home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / x / volume19 / jetedit / part04 < prev    next >
Encoding:
Text File  |  1993-04-27  |  33.4 KB  |  933 lines

  1. Newsgroups: comp.sources.x
  2. From: duane@blacks.jpl.nasa.gov (Duane Clark)
  3. Subject: v19i083:  Jetedit - A Motif text editor, Part04/04
  4. Message-ID: <1993Apr8.144511.20438@sparky.imd.sterling.com>
  5. X-Md4-Signature: 57661da3e1fa4ac8f08f553fe0fe6b46
  6. Date: Thu, 8 Apr 1993 14:45:11 GMT
  7. Approved: chris@sparky.imd.sterling.com
  8.  
  9. Submitted-by: duane@blacks.jpl.nasa.gov (Duane Clark)
  10. Posting-number: Volume 19, Issue 83
  11. Archive-name: Jetedit/part04
  12. Environment: X11, OSF/Motif
  13.  
  14. #! /bin/sh
  15. # This is a shell archive.  Remove anything before this line, then unpack
  16. # it by saving it into a file and typing "sh file".  To overwrite existing
  17. # files, type "sh file -c".  You can also feed this as standard input via
  18. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  19. # will see the following message at the end:
  20. #        "End of archive 4 (of 4)."
  21. # Contents:  xmepref.c
  22. # Wrapped by duane@blacks.jpl.nasa.gov on Sat Apr  3 20:04:06 1993
  23. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  24. if test -f 'xmepref.c' -a "${1}" != "-c" ; then 
  25.   echo shar: Will not clobber existing file \"'xmepref.c'\"
  26. else
  27. echo shar: Extracting \"'xmepref.c'\" \(31274 characters\)
  28. sed "s/^X//" >'xmepref.c' <<'END_OF_FILE'
  29. X/**---------------------------------------------------------------------
  30. X***     
  31. X***    file:        xmepref.c
  32. X***            Preferences dialog and supporting routines.
  33. X***
  34. X***    project:    jetedit - Motif Widgets text editor
  35. X***
  36. X***-------------------------------------------------------------------*/
  37. X
  38. X#include "xme.h"
  39. X
  40. X#define    PREF_OPEN1    0
  41. X#define PREF_OPEN2    1
  42. X#define    PREF_OPEN3    2
  43. X#define PREF_CLOSE1    3
  44. X#define PREF_CLOSE2    4
  45. X#define PREF_LEAD_T    10
  46. X#define PREF_LEAD_F    11
  47. X#define PREF_TRAIL_T    12
  48. X#define PREF_TRAIL_F    13
  49. X#define PREF_STYLE_N    20
  50. X#define PREF_STYLE_SM    21
  51. X#define PREF_STYLE_SY    22
  52. X#define PREF_CASE_T    30
  53. X#define PREF_CASE_F    31
  54. X#define PREF_WRAP    40
  55. X#define PREF_SPACES    41
  56. X#define PREF_MAP    100
  57. X#define PREF_OK        101
  58. X#define PREF_CANCEL    102
  59. X#define PREF_HELP       103
  60. X
  61. Xchar    pref_string[] = "\n\
  62. X********************************\n\
  63. XIndenting mode:\n\
  64. X    None   - No automatic indenting is done.\n\
  65. X    Smart  - New lines are indented to the level of the preceding line.\n\
  66. X    Syntax - jetedit will attempt to make intelligent decisions about where to indent and outdent determined by C syntax and the selected indenting preferences.\n\
  67. X\n\
  68. XBracketing Style:\n\
  69. X    Can only be changed when syntax sensitive indenting is selected. Click on the brackets at the locations corresponding to your desired bracketing style.\n\
  70. X\n\
  71. XIf desired, a variable number of spaces can be substituted for tabs when the tab key is hit. Already existing tabs are not affected. Leading tabs are tabs occurring before any non white space characters in a line. All others are trailing tabs.\n\
  72. X\n\
  73. XWhile the editor will work in wordwrap mode, note that the Motif text widget gets very slow as the number of characters gets above 1000 or so - they claim to be working on speeding this up for a future release.\n\
  74. X";
  75. X
  76. XWidget    open1_button;
  77. XWidget    open2_button;
  78. XWidget    open3_button;
  79. XWidget    close1_button;
  80. XWidget    close2_button;
  81. XWidget  lead_t_button;
  82. XWidget    lead_f_button;
  83. XWidget    trail_t_button;
  84. XWidget    trail_f_button;
  85. XWidget    style_n_button;
  86. XWidget    style_sm_button;
  87. XWidget    style_sy_button;
  88. XWidget    case_t_button;
  89. XWidget    case_f_button;
  90. XWidget    wrap_button;
  91. XWidget    spaces_text;
  92. X
  93. X/* Temporary storage for values in the preference dialog.
  94. X** These are copied into the permanent variables only when
  95. X** the OK button is clicked.
  96. X*/
  97. Xint    open_br, close_br, style,tab_sp;
  98. XBoolean    lead, trail, in_case;
  99. X
  100. X/*-------------------------------------------------------------
  101. X**    PreferencesCB
  102. X**        Process callback from the preferences dialog selections.
  103. X*/
  104. Xvoid PreferencesCB (w, client_data, call_data) 
  105. XWidget         w;        /*  widget id           */
  106. Xcaddr_t        client_data;    /*  data from application   */
  107. Xcaddr_t        call_data;    /*  data from widget class  */
  108. X{
  109. X    Arg        al[1],ag[1];
  110. X    Boolean    Wrap;
  111. X    char    help_str[4000];
  112. X    char    temp_str[120];
  113. X
  114. X    switch ((int)client_data)
  115. X    {
  116. X    case PREF_OPEN1:
  117. X        open_br = 0;
  118. X        XtSetArg (al[0], XmNforeground, fcol);
  119. X        XtSetValues(open1_button, al, 1);
  120. X        XtSetArg (al[0], XmNforeground, gcol);
  121. X        XtSetValues(open2_button, al, 1);
  122. X        XtSetValues(open3_button, al, 1);
  123. X        break;
  124. X    case PREF_OPEN2:
  125. X        open_br = 1;
  126. X        XtSetArg (al[0], XmNforeground, fcol);
  127. X        XtSetValues(open2_button, al, 1);
  128. X        XtSetArg (al[0], XmNforeground, gcol);
  129. X        XtSetValues(open1_button, al, 1);
  130. X        XtSetValues(open3_button, al, 1);
  131. X        break;
  132. X    case PREF_OPEN3:
  133. X        open_br = 2;
  134. X        XtSetArg (al[0], XmNforeground, fcol);
  135. X        XtSetValues(open3_button, al, 1);
  136. X        XtSetArg (al[0], XmNforeground, gcol);
  137. X        XtSetValues(open2_button, al, 1);
  138. X        XtSetValues(open1_button, al, 1);
  139. X        break;
  140. X    case PREF_CLOSE1:
  141. X        close_br = 0;
  142. X        XtSetArg (al[0], XmNforeground, fcol);
  143. X        XtSetValues(close1_button, al, 1);
  144. X        XtSetArg (al[0], XmNforeground, gcol);
  145. X        XtSetValues(close2_button, al, 1);
  146. X        break;
  147. X    case PREF_CLOSE2:
  148. X        close_br = 1;
  149. X        XtSetArg (al[0], XmNforeground, fcol);
  150. X        XtSetValues(close2_button, al, 1);
  151. X        XtSetArg (al[0], XmNforeground, gcol);
  152. X        XtSetValues(close1_button, al, 1);
  153. X        break;
  154. X    case PREF_LEAD_T:
  155. X        lead = True;
  156. X        if (trail) {
  157. X            XtSetSensitive(spaces_text, False);
  158. X            XtSetArg (al[0], XmNforeground, gcol);
  159. X            XtSetValues(spaces_text, al, 1);
  160. X        }
  161. X        break;
  162. X    case PREF_LEAD_F:
  163. X        lead = False;
  164. X        XtSetSensitive(spaces_text, True);
  165. X        XtSetArg (al[0], XmNforeground, fcol);
  166. X        XtSetValues(spaces_text, al, 1);
  167. X        break;
  168. X    case PREF_TRAIL_T:
  169. X        trail = True;
  170. X        if (lead) {
  171. X            XtSetSensitive(spaces_text, False);
  172. X            XtSetArg (al[0], XmNforeground, gcol);
  173. X            XtSetValues(spaces_text, al, 1);
  174. X        }
  175. X        break;
  176. X    case PREF_TRAIL_F:
  177. X        trail = False;
  178. X        XtSetSensitive(spaces_text, True);
  179. X        XtSetArg (al[0], XmNforeground, fcol);
  180. X        XtSetValues(spaces_text, al, 1);
  181. X        break;
  182. X    case PREF_STYLE_N:
  183. X        style = NONE;
  184. X        XtSetSensitive(open1_button, False);
  185. X        XtSetSensitive(open2_button, False);
  186. X        XtSetSensitive(open3_button, False);
  187. X        XtSetSensitive(close1_button, False);
  188. X        XtSetSensitive(close2_button, False);
  189. X        XtSetSensitive(case_t_button, False);
  190. X        XtSetSensitive(case_f_button, False);
  191. X        break;
  192. X    case PREF_STYLE_SM:
  193. X        style = SMART;
  194. X        XtSetSensitive(open1_button, False);
  195. X        XtSetSensitive(open2_button, False);
  196. X        XtSetSensitive(open3_button, False);
  197. X        XtSetSensitive(close1_button, False);
  198. X        XtSetSensitive(close2_button, False);
  199. X        XtSetSensitive(case_t_button, False);
  200. X        XtSetSensitive(case_f_button, False);
  201. X        break;
  202. X    case PREF_STYLE_SY:
  203. X        style = SYNTAX;
  204. X        XtSetSensitive(open1_button, True);
  205. X        XtSetSensitive(open2_button, True);
  206. X        XtSetSensitive(open3_button, True);
  207. X        XtSetSensitive(close1_button, True);
  208. X        XtSetSensitive(close2_button, True);
  209. X        XtSetSensitive(case_t_button, True);
  210. X        XtSetSensitive(case_f_button, True);
  211. X        break;
  212. X    case PREF_CASE_T:
  213. X        in_case = True;
  214. X        break;
  215. X    case PREF_CASE_F:
  216. X        in_case = False;
  217. X        break;
  218. X    case PREF_WRAP:
  219. X        XtSetArg (al[0], XmNset, &Wrap);
  220. X        XtGetValues (wrap_button, al, 1);
  221. X        WordWrap(!Wrap);
  222. X        break;
  223. X    case PREF_SPACES:
  224. X        {
  225. X        XmTextVerifyCallbackStruct *cb = (XmTextVerifyCallbackStruct *) call_data;
  226. X        temp_str[0] = (cb->text->ptr)[0];
  227. X        }
  228. X        temp_str[1] = '\0';
  229. X        sscanf(temp_str, "%d", &tab_sp);
  230. X        break;
  231. X    case PREF_MAP:
  232. X        open_br = open_brace;
  233. X        close_br = close_brace;
  234. X        lead = leading_tabs;
  235. X        trail = trailing_tabs;
  236. X        style = indent_style;
  237. X        in_case = indent_case;
  238. X        tab_sp = tab_spaces;
  239. X        break;
  240. X    case PREF_OK:
  241. X        open_brace = open_br;
  242. X        close_brace = close_br;
  243. X        leading_tabs = lead;
  244. X        trailing_tabs = trail;
  245. X        indent_style = style;
  246. X        indent_case = in_case;
  247. X        tab_spaces = tab_sp;
  248. X        break;
  249. X    case PREF_CANCEL:
  250. X        if (open_br != open_brace) {
  251. X            XtSetArg (al[0], XmNforeground, fcol);
  252. X            XtSetArg (ag[0], XmNforeground, gcol);
  253. X            if (open_brace == 0) {
  254. X                XtSetValues(open1_button, al, 1);
  255. X                XtSetValues(open2_button, ag, 1);
  256. X                XtSetValues(open3_button, ag, 1);
  257. X            }
  258. X            else if (open_brace == 1) {
  259. X                XtSetValues(open1_button, ag, 1);
  260. X                XtSetValues(open2_button, al, 1);
  261. X                XtSetValues(open3_button, ag, 1);
  262. X            }
  263. X            else {
  264. X                XtSetValues(open1_button, ag, 1);
  265. X                XtSetValues(open2_button, ag, 1);
  266. X                XtSetValues(open3_button, al, 1);
  267. X            }
  268. X        }
  269. X        if (close_br != close_brace) {
  270. X            XtSetArg (al[0], XmNforeground, fcol);
  271. X            XtSetArg (ag[0], XmNforeground, gcol);
  272. X            if (close_brace == 0) {
  273. X                XtSetValues(close1_button, al, 1);
  274. X                XtSetValues(close2_button, ag, 1);
  275. X            }
  276. X            else {
  277. X                XtSetValues(close1_button, ag, 1);
  278. X                XtSetValues(close2_button, al, 1);
  279. X            }
  280. X        }
  281. X        if (lead != leading_tabs) {
  282. X            XtSetArg (al[0], XmNset, True);
  283. X            XtSetArg (ag[0], XmNset, False);
  284. X            if (leading_tabs) {
  285. X                XtSetValues(lead_t_button, al, 1);
  286. X                XtSetValues(lead_f_button, ag, 1);
  287. X            }
  288. X            else {
  289. X                XtSetValues(lead_t_button, ag, 1);
  290. X                XtSetValues(lead_f_button, al, 1);
  291. X            }
  292. X        }
  293. X        if (style != indent_style) {
  294. X            XtSetArg (al[0], XmNset, True);
  295. X            XtSetArg (ag[0], XmNset, False);
  296. X            if (indent_style == NONE) {
  297. X                XtSetValues(style_n_button, al, 1);
  298. X                XtSetValues(style_sm_button, ag, 1);
  299. X                XtSetValues(style_sy_button, ag, 1);
  300. X            }
  301. X            else if (indent_style == SMART) {
  302. X                XtSetValues(style_n_button, ag, 1);
  303. X                XtSetValues(style_sm_button, al, 1);
  304. X                XtSetValues(style_sy_button, ag, 1);
  305. X            }
  306. X            else {
  307. X                XtSetValues(style_n_button, ag, 1);
  308. X                XtSetValues(style_sm_button, ag, 1);
  309. X                XtSetValues(style_sy_button, al, 1);
  310. X            }
  311. X        }
  312. X        if (in_case != indent_case) {
  313. X            XtSetArg (al[0], XmNset, True);
  314. X            XtSetArg (ag[0], XmNset, False);
  315. X            if (indent_case) {
  316. X                XtSetValues(case_t_button, al, 1);
  317. X                XtSetValues(case_f_button, ag, 1);
  318. X            }
  319. X            else {
  320. X                XtSetValues(case_t_button, ag, 1);
  321. X                XtSetValues(case_f_button, al, 1);
  322. X            }
  323. X        }
  324. X        if (tab_sp != tab_spaces) {
  325. X            sprintf(temp_str, "%d", tab_spaces);
  326. X            XtSetArg(al[0], XmNvalue, temp_str);
  327. X            XtSetValues(spaces_text, al, 1);
  328. X        }
  329. X        break;
  330. X    case PREF_HELP:
  331. X        strcpy(help_str,     "The following lines in your .Xdefaults file will\
  332. X set the selected preferences:\n\n");
  333. X        strcat(help_str,     "jetedit*indent:          ");
  334. X        switch (style) {
  335. X        case NONE:
  336. X            strcat(help_str, "regular\n");
  337. X            break;
  338. X        case SMART:
  339. X            strcat(help_str, "smart\n");
  340. X            break;
  341. X        case SYNTAX:
  342. X            strcat(help_str, "syntax\n");
  343. X            break;
  344. X        }
  345. X    
  346. X        if (lead)
  347. X            strcat(help_str, "jetedit*leadingTabs:     True\n");
  348. X        else
  349. X            strcat(help_str, "jetedit*leadingTabs:     False\n");
  350. X    
  351. X        if (trail)
  352. X            strcat(help_str, "jetedit*trailingTabs:    True\n");
  353. X        else
  354. X            strcat(help_str, "jetedit*trailingTabs:    False\n");
  355. X        
  356. X        if (!lead || !trail) {
  357. X            sprintf(temp_str,"jetedit*spaces:          %d\n", tab_sp);
  358. X            strcat(help_str, temp_str);
  359. X        }
  360. X        
  361. X        if (style == SYNTAX) {
  362. X            sprintf(temp_str,"jetedit*openBrace:       %d\n", open_br);
  363. X            strcat(help_str, temp_str);
  364. X            sprintf(temp_str,"jetedit*closeBrace:      %d\n", close_br);
  365. X            strcat(help_str, temp_str);
  366. X            if (in_case)
  367. X                strcat(help_str,"jetedit*indentCase:      True\n");
  368. X            else
  369. X                strcat(help_str,"jetedit*indentCase:      False\n");
  370. X        }
  371. X        
  372. X        strcat(help_str, pref_string);
  373. X        XmTextSetString(help_text, help_str);
  374. X        XtManageChild (help_dialog);
  375. X        break;
  376. X    }
  377. X}
  378. X
  379. X
  380. X/*-------------------------------------------------------------
  381. X**    CreatePreferencesDialog
  382. X**        Create the preferences dialog out of a selection box.
  383. X*/
  384. XWidget CreatePreferencesDialog (parent, name, arglist, argcount)
  385. XWidget    parent;
  386. XString    name;
  387. XArg    arglist[];
  388. Xint    argcount;
  389. X{
  390. X    XmFontList    font_list;
  391. X    Widget    pref_dialog;
  392. X    Widget    work_area, dialog_area;
  393. X    Widget    form;
  394. X    Widget    radio;
  395. X    Widget    separator;
  396. X    Widget    button;
  397. X    Widget    label,label2;
  398. X    Widget    kid[5];        /*  buttons        */
  399. X    register int i;        /*  kid index        */
  400. X    Arg        al[15];
  401. X    Cardinal    ac;
  402. X    XColor    *closeColor, *exactColor;
  403. X    char        spaces_string[3];
  404. X    
  405. X    /* Start with a prompt dialog */
  406. X    pref_dialog = XmCreatePromptDialog(parent, name, arglist, argcount);
  407. X
  408. X    /* Create dialog area. */
  409. X    ac = 0;
  410. X    XtSetArg (al[ac], XmNorientation, XmVERTICAL);  ac++;
  411. X    dialog_area = XmCreateRowColumn(pref_dialog, "dialog_area", al, ac);
  412. X    XtManageChild(dialog_area);
  413. X    
  414. X    /* Create work area. */
  415. X    ac = 0;
  416. X    XtSetArg (al[ac], XmNorientation, XmHORIZONTAL);  ac++;
  417. X    work_area = XmCreateRowColumn(dialog_area, "work_area", al, ac);
  418. X    XtManageChild(work_area);
  419. X    
  420. X    /*************************************************/
  421. X    /*** Create the indenting style selection area ***/
  422. X    ac = 0;
  423. X    form = XmCreateForm(work_area, "IndentArea", al, ac);
  424. X    XtManageChild(form);
  425. X    
  426. X    /*** Mode selection area ***/
  427. X    ac = 0;
  428. X    XtSetArg(al[ac], XmNlabelString,
  429. X        XmStringCreateLtoR("Indenting mode: ", charset)); ac++;
  430. X#ifdef HARDCODE
  431. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  432. X#endif
  433. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  434. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
  435. X    label = XmCreateLabelGadget (form, "Label", al, ac);
  436. X    XtManageChild (label);
  437. X    
  438. X    ac = 0;
  439. X    XtSetArg (al[ac], XmNleftWidget, label); ac++;
  440. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
  441. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
  442. X    radio = XmCreateRadioBox (form, "Radio", al, ac);
  443. X    
  444. X    ac=0;
  445. X    if (indent_style == NONE) {
  446. X        XtSetArg (al[ac], XmNset, True);  ac++;
  447. X    }
  448. X    XtSetArg (al[ac], XmNlabelString, 
  449. X        XmStringCreateLtoR("None", charset));  ac++;
  450. X#ifdef HARDCODE
  451. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  452. X#endif
  453. X    style_n_button = XmCreateToggleButtonGadget (radio, "Style_N", al, ac);
  454. X    XtManageChild (style_n_button);
  455. X    XtAddCallback (style_n_button, XmNarmCallback, PreferencesCB, PREF_STYLE_N);
  456. X    
  457. X    ac=0;
  458. X    if (indent_style == SMART) {
  459. X        XtSetArg (al[ac], XmNset, True);  ac++;
  460. X    }
  461. X    XtSetArg (al[ac], XmNlabelString, 
  462. X        XmStringCreateLtoR("Smart", charset));  ac++;
  463. X#ifdef HARDCODE
  464. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  465. X#endif
  466. X    style_sm_button = XmCreateToggleButtonGadget (radio, "Style_SM", al, ac);
  467. X    XtManageChild (style_sm_button);
  468. X    XtAddCallback (style_sm_button, XmNarmCallback, PreferencesCB, PREF_STYLE_SM);
  469. X    
  470. X    ac=0;
  471. X    if (indent_style == SYNTAX) {
  472. X        XtSetArg (al[ac], XmNset, True);  ac++;
  473. X    }
  474. X    XtSetArg (al[ac], XmNlabelString, 
  475. X        XmStringCreateLtoR("Syntax", charset));  ac++;
  476. X#ifdef HARDCODE
  477. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  478. X#endif
  479. X    style_sy_button = XmCreateToggleButtonGadget (radio, "Style_SY", al, ac);
  480. X    XtManageChild (style_sy_button);
  481. X    XtAddCallback (style_sy_button, XmNarmCallback, PreferencesCB, PREF_STYLE_SY);
  482. X    
  483. X    XtManageChild (radio);
  484. X    
  485. X    ac = 0;
  486. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  487. X    XtSetArg (al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
  488. X    XtSetArg (al[ac], XmNtopWidget, radio); ac++;
  489. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  490. X    separator = XmCreateSeparator(form, "separator", al, ac);
  491. X    XtManageChild(separator);
  492. X    
  493. X    /*** Bracketing selection area ***/
  494. X    ac = 0;
  495. X    XtSetArg(al[ac], XmNlabelString,
  496. X        XmStringCreateLtoR("Bracketing Style:\n", charset)); ac++;
  497. X#ifdef HARDCODE
  498. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  499. X#endif
  500. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  501. X    XtSetArg (al[ac], XmNtopWidget, separator); ac++;
  502. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  503. X    label = XmCreateLabelGadget (form, "Label", al, ac);
  504. X    XtManageChild (label);
  505. X    
  506. X    ac = 0;
  507. X    XtSetArg(al[ac], XmNlabelString,
  508. X        XmStringCreateLtoR("for (...) ", charset)); ac++;
  509. X#ifdef HARDCODE
  510. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  511. X#endif
  512. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  513. X    XtSetArg (al[ac], XmNtopWidget, label); ac++;
  514. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  515. X    XtSetArg (al[ac], XmNtopOffset, 4); ac++;
  516. X    label2 = XmCreateLabelGadget (form, "ForLabel", al, ac);
  517. X    XtManageChild (label2);
  518. X    
  519. X    ac = 0;
  520. X    if (open_brace != 2) {
  521. X        XtSetArg (al[ac], XmNforeground, gcol);  ac++;
  522. X    }
  523. X    if (indent_style != SYNTAX) {
  524. X        XtSetArg (al[ac], XmNsensitive, False);  ac++;
  525. X    }
  526. X    XtSetArg(al[ac], XmNlabelString,
  527. X        XmStringCreateLtoR("{", charset)); ac++;
  528. X#ifdef HARDCODE
  529. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  530. X#endif
  531. X    XtSetArg (al[ac], XmNleftWidget, label2); ac++;
  532. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
  533. X    XtSetArg (al[ac], XmNtopWidget, label); ac++;
  534. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  535. X    XtSetArg (al[ac], XmNshadowThickness, 1); ac++;
  536. X    open3_button = XmCreatePushButton (form, "Open3", al, ac);
  537. X    XtAddCallback (open3_button, XmNactivateCallback, PreferencesCB, PREF_OPEN3);
  538. X    XtManageChild (open3_button);
  539. X    
  540. X    ac = 0;
  541. X    if (open_brace != 0) {
  542. X        XtSetArg (al[ac], XmNforeground, gcol);  ac++;
  543. X    }
  544. X    if (indent_style != SYNTAX) {
  545. X        XtSetArg (al[ac], XmNsensitive, False);  ac++;
  546. X    }
  547. X    XtSetArg(al[ac], XmNlabelString,
  548. X        XmStringCreateLtoR("{", charset)); ac++;
  549. X#ifdef HARDCODE
  550. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  551. X#endif
  552. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  553. X    XtSetArg (al[ac], XmNtopWidget, open3_button); ac++;
  554. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  555. X    XtSetArg (al[ac], XmNshadowThickness, 1); ac++;
  556. X    open1_button = XmCreatePushButton (form, "Open1", al, ac);
  557. X    XtAddCallback (open1_button, XmNactivateCallback, PreferencesCB, PREF_OPEN1);
  558. X    XtManageChild (open1_button);
  559. X    
  560. X    ac = 0;
  561. X    if (open_brace != 1) {
  562. X        XtSetArg (al[ac], XmNforeground, gcol);  ac++;
  563. X    }
  564. X    if (indent_style != SYNTAX) {
  565. X        XtSetArg (al[ac], XmNsensitive, False);  ac++;
  566. X    }
  567. X    XtSetArg(al[ac], XmNlabelString,
  568. X        XmStringCreateLtoR("{", charset)); ac++;
  569. X#ifdef HARDCODE
  570. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  571. X#endif
  572. X    XtSetArg (al[ac], XmNleftWidget, open1_button); ac++;
  573. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
  574. X    XtSetArg (al[ac], XmNtopWidget, open3_button); ac++;
  575. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  576. X    XtSetArg (al[ac], XmNshadowThickness, 1); ac++;
  577. X    XtSetArg (al[ac], XmNleftOffset, 20); ac++;
  578. X    open2_button = XmCreatePushButton (form, "Open2", al, ac);
  579. X    XtAddCallback (open2_button, XmNactivateCallback, PreferencesCB, PREF_OPEN2);
  580. X    XtManageChild (open2_button);
  581. X    
  582. X    ac = 0;
  583. X    XtSetArg(al[ac], XmNlabelString,
  584. X        XmStringCreateLtoR(".\n.\n.", charset)); ac++;
  585. X#ifdef HARDCODE
  586. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  587. X#endif
  588. X    XtSetArg (al[ac], XmNleftWidget, open2_button); ac++;
  589. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
  590. X    XtSetArg (al[ac], XmNtopWidget, open2_button); ac++;
  591. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  592. X    label2 = XmCreateLabelGadget (form, "Label2", al, ac);
  593. X    XtManageChild (label2);
  594. X    
  595. X    ac = 0;
  596. X    if (close_brace != 0) {
  597. X        XtSetArg (al[ac], XmNforeground, gcol);  ac++;
  598. X    }
  599. X    if (indent_style != SYNTAX) {
  600. X        XtSetArg (al[ac], XmNsensitive, False);  ac++;
  601. X    }
  602. X    XtSetArg(al[ac], XmNlabelString,
  603. X        XmStringCreateLtoR("}", charset)); ac++;
  604. X#ifdef HARDCODE
  605. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  606. X#endif
  607. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  608. X    XtSetArg (al[ac], XmNtopWidget, label2); ac++;
  609. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  610. X    XtSetArg (al[ac], XmNshadowThickness, 1); ac++;
  611. X    close1_button = XmCreatePushButton (form, "Close1", al, ac);
  612. X    XtAddCallback (close1_button, XmNactivateCallback, PreferencesCB, PREF_CLOSE1);
  613. X    XtManageChild (close1_button);
  614. X    
  615. X    ac = 0;
  616. X    if (close_brace != 1) {
  617. X        XtSetArg (al[ac], XmNforeground, gcol);  ac++;
  618. X    }
  619. X    if (indent_style != SYNTAX) {
  620. X        XtSetArg (al[ac], XmNsensitive, False);  ac++;
  621. X    }
  622. X    XtSetArg(al[ac], XmNlabelString,
  623. X        XmStringCreateLtoR("}", charset)); ac++;
  624. X#ifdef HARDCODE
  625. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  626. X#endif
  627. X    XtSetArg (al[ac], XmNleftWidget, close1_button); ac++;
  628. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
  629. X    XtSetArg (al[ac], XmNtopWidget, label2); ac++;
  630. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  631. X    XtSetArg (al[ac], XmNshadowThickness, 1); ac++;
  632. X    XtSetArg (al[ac], XmNleftOffset, 20); ac++;
  633. X    close2_button = XmCreatePushButton (form, "Close2", al, ac);
  634. X    XtAddCallback (close2_button, XmNactivateCallback, PreferencesCB, PREF_CLOSE2);
  635. X    XtManageChild (close2_button);
  636. X    
  637. X    /*** Separator between indent and tabs areas ***/
  638. X    
  639. X    ac = 0;
  640. X    XtSetArg (al[ac], XmNorientation, XmVERTICAL); ac++;
  641. X    separator = XmCreateSeparator(work_area, "separator", al, ac);
  642. X    XtManageChild(separator);
  643. X    
  644. X    /*******************************************/
  645. X    /*** Create the tab style selection area ***/
  646. X    ac = 0;
  647. X    form = XmCreateForm(work_area, "Form", al, ac);
  648. X    XtManageChild(form);
  649. X    
  650. X    /*** Leading tabs ***/
  651. X    ac = 0;
  652. X    XtSetArg(al[ac], XmNlabelString,
  653. X        XmStringCreateLtoR("For leading tabs use:  ", charset)); ac++;
  654. X#ifdef HARDCODE
  655. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  656. X#endif
  657. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  658. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
  659. X    label = XmCreateLabelGadget (form, "Label", al, ac);
  660. X    XtManageChild (label);
  661. X    
  662. X    ac = 0;
  663. X    XtSetArg (al[ac], XmNleftWidget, label); ac++;
  664. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
  665. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
  666. X    radio = XmCreateRadioBox (form, "Radio", al, ac);
  667. X    
  668. X    ac=0;
  669. X    if (leading_tabs) {
  670. X        XtSetArg (al[ac], XmNset, True);  ac++;
  671. X    }
  672. X    XtSetArg (al[ac], XmNlabelString, 
  673. X        XmStringCreateLtoR("Tabs", charset));  ac++;
  674. X#ifdef HARDCODE
  675. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  676. X#endif
  677. X    lead_t_button = XmCreateToggleButtonGadget (radio, "Lead_T", al, ac);
  678. X    XtManageChild (lead_t_button);
  679. X    XtAddCallback (lead_t_button, XmNarmCallback, PreferencesCB, PREF_LEAD_T);
  680. X    
  681. X    ac=0;
  682. X    if (!leading_tabs) {
  683. X        XtSetArg (al[ac], XmNset, True);  ac++;
  684. X    }
  685. X    XtSetArg (al[ac], XmNlabelString, 
  686. X        XmStringCreateLtoR("Spaces", charset));  ac++;
  687. X#ifdef HARDCODE
  688. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  689. X#endif
  690. X    lead_f_button = XmCreateToggleButtonGadget (radio, "Lead_F", al, ac);
  691. X    XtManageChild (lead_f_button);
  692. X    XtAddCallback (lead_f_button, XmNarmCallback, PreferencesCB, PREF_LEAD_F);
  693. X    
  694. X    XtManageChild (radio);
  695. X    
  696. X    ac = 0;
  697. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  698. X    XtSetArg (al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
  699. X    XtSetArg (al[ac], XmNtopWidget, radio); ac++;
  700. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  701. X    separator = XmCreateSeparator(form, "separator", al, ac);
  702. X    XtManageChild(separator);
  703. X    
  704. X    /*** Trailing tabs ***/
  705. X    ac = 0;
  706. X    XtSetArg(al[ac], XmNlabelString,
  707. X        XmStringCreateLtoR("For trailing tabs use: ", charset)); ac++;
  708. X#ifdef HARDCODE
  709. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  710. X#endif
  711. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  712. X    XtSetArg (al[ac], XmNtopWidget, separator); ac++;
  713. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  714. X    label = XmCreateLabelGadget (form, "Label", al, ac);
  715. X    XtManageChild (label);
  716. X    
  717. X    ac = 0;
  718. X    XtSetArg (al[ac], XmNleftWidget, label); ac++;
  719. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
  720. X    XtSetArg (al[ac], XmNtopWidget, separator); ac++;
  721. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  722. X    radio = XmCreateRadioBox (form, "Radio", al, ac);
  723. X    
  724. X    ac=0;
  725. X    if (trailing_tabs) {
  726. X        XtSetArg (al[ac], XmNset, True);  ac++;
  727. X    }
  728. X    XtSetArg (al[ac], XmNlabelString, 
  729. X        XmStringCreateLtoR("Tabs", charset));  ac++;
  730. X#ifdef HARDCODE
  731. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  732. X#endif
  733. X    trail_t_button = XmCreateToggleButtonGadget (radio, "Trail_T", al, ac);
  734. X    XtManageChild (trail_t_button);
  735. X    XtAddCallback (trail_t_button, XmNarmCallback, PreferencesCB, PREF_TRAIL_T);
  736. X    
  737. X    ac=0;
  738. X    if (!trailing_tabs) {
  739. X        XtSetArg (al[ac], XmNset, True);  ac++;
  740. X    }
  741. X    XtSetArg (al[ac], XmNlabelString, 
  742. X        XmStringCreateLtoR("Spaces", charset));  ac++;
  743. X#ifdef HARDCODE
  744. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  745. X#endif
  746. X    trail_f_button = XmCreateToggleButtonGadget (radio, "Trail_F", al, ac);
  747. X    XtManageChild (trail_f_button);
  748. X    XtAddCallback (trail_f_button, XmNarmCallback, PreferencesCB, PREF_TRAIL_F);
  749. X    
  750. X    XtManageChild (radio);
  751. X    
  752. X    ac = 0;
  753. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  754. X    XtSetArg (al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
  755. X    XtSetArg (al[ac], XmNtopWidget, radio); ac++;
  756. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  757. X    separator = XmCreateSeparator(form, "separator", al, ac);
  758. X    XtManageChild(separator);
  759. X    
  760. X    /*** Spaces ***/
  761. X    ac = 0;
  762. X    XtSetArg(al[ac], XmNlabelString,
  763. X        XmStringCreateLtoR("Number of spaces to use for tabs: ", charset)); ac++;
  764. X#ifdef HARDCODE
  765. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  766. X#endif
  767. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  768. X    XtSetArg (al[ac], XmNtopWidget, separator); ac++;
  769. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  770. X    label = XmCreateLabelGadget (form, "Label", al, ac);
  771. X    XtManageChild (label);
  772. X    
  773. X    sprintf(spaces_string, "%d", tab_spaces);
  774. X    ac = 0;
  775. X    if (leading_tabs && trailing_tabs) {
  776. X        XtSetArg (al[ac], XmNsensitive, False);  ac++;
  777. X        XtSetArg (al[ac], XmNforeground, gcol);  ac++;
  778. X    }
  779. X    XtSetArg(al[ac], XmNvalue, spaces_string); ac++;
  780. X    XtSetArg (al[ac], XmNcolumns, 1); ac++;
  781. X    XtSetArg (al[ac], XmNleftWidget, label); ac++;
  782. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
  783. X    XtSetArg (al[ac], XmNtopWidget, separator); ac++;
  784. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  785. X    spaces_text = XmCreateText(form, "spaces",al,ac);
  786. X    XtManageChild (spaces_text);
  787. X    XtAddCallback (spaces_text, XmNmodifyVerifyCallback, PreferencesCB, PREF_SPACES);
  788. X    
  789. X    ac = 0;
  790. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  791. X    XtSetArg (al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
  792. X    XtSetArg (al[ac], XmNtopWidget, spaces_text); ac++;
  793. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  794. X    separator = XmCreateSeparator(form, "separator", al, ac);
  795. X    XtManageChild(separator);
  796. X    
  797. X    /*** Case style selection area ***/
  798. X    ac = 0;
  799. X    XtSetArg(al[ac], XmNlabelString,
  800. X        XmStringCreateLtoR("Indent case statements?:", charset)); ac++;
  801. X#ifdef HARDCODE
  802. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  803. X#endif
  804. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  805. X    XtSetArg (al[ac], XmNtopWidget, separator); ac++;
  806. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  807. X    label = XmCreateLabelGadget (form, "Label", al, ac);
  808. X    XtManageChild (label);
  809. X    
  810. X    ac = 0;
  811. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  812. X    XtSetArg (al[ac], XmNtopWidget, label); ac++;
  813. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  814. X    XtSetArg (al[ac], XmNorientation, XmHORIZONTAL); ac++;
  815. X    radio = XmCreateRadioBox (form, "Radio", al, ac);
  816. X    
  817. X    ac=0;
  818. X    if (!indent_case) {
  819. X        XtSetArg (al[ac], XmNset, True);  ac++;
  820. X    }
  821. X    if (indent_style != SYNTAX) {
  822. X        XtSetArg (al[ac], XmNsensitive, False);  ac++;
  823. X    }
  824. X    XtSetArg (al[ac], XmNlabelString, 
  825. X        XmStringCreateLtoR("switch ()\ncase 1:", charset));  ac++;
  826. X#ifdef HARDCODE
  827. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  828. X#endif
  829. X    case_f_button = XmCreateToggleButtonGadget (radio, "Case_F", al, ac);
  830. X    XtManageChild (case_f_button);
  831. X    XtAddCallback (case_f_button, XmNarmCallback, PreferencesCB, PREF_CASE_F);
  832. X    
  833. X    ac=0;
  834. X    if (indent_case) {
  835. X        XtSetArg (al[ac], XmNset, True);  ac++;
  836. X    }
  837. X    if (indent_style != SYNTAX) {
  838. X        XtSetArg (al[ac], XmNsensitive, False);  ac++;
  839. X    }
  840. X    XtSetArg (al[ac], XmNlabelString, 
  841. X        XmStringCreateLtoR("switch ()\n    case 1:", charset));  ac++;
  842. X#ifdef HARDCODE
  843. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  844. X#endif
  845. X    case_t_button = XmCreateToggleButtonGadget (radio, "Case_T", al, ac);
  846. X    XtManageChild (case_t_button);
  847. X    XtAddCallback (case_t_button, XmNarmCallback, PreferencesCB, PREF_CASE_T);
  848. X    
  849. X    XtManageChild (radio);
  850. X    
  851. X    ac = 0;
  852. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  853. X    XtSetArg (al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
  854. X    XtSetArg (al[ac], XmNtopWidget, radio); ac++;
  855. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  856. X    separator = XmCreateSeparator(form, "separator", al, ac);
  857. X    XtManageChild(separator);
  858. X    
  859. X    /*** Word wrap selector ***/
  860. X    XtSetArg (al[ac], XmNlabelString, 
  861. X        XmStringCreateLtoR("Use wordwrap", charset));  ac++;
  862. X#ifdef HARDCODE
  863. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  864. X#endif
  865. X    XtSetArg (al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  866. X    XtSetArg (al[ac], XmNtopWidget, separator); ac++;
  867. X    XtSetArg (al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  868. X    XtSetArg (al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
  869. X    wrap_button = XmCreateToggleButtonGadget (form, "Wrap", al, ac);
  870. X    XtManageChild (wrap_button);
  871. X    XtAddCallback (wrap_button, XmNarmCallback, PreferencesCB, PREF_WRAP);
  872. X    
  873. X    /*** Put a separator and help message below the work area ***/
  874. X    ac = 0;
  875. X    separator = XmCreateSeparator(dialog_area, "separator", al, ac);
  876. X    XtManageChild(separator);
  877. X    
  878. X    ac = 0;
  879. X#ifdef HARDCODE
  880. X    XtSetArg (al[ac], XmNfontList, fontlist);  ac++;
  881. X#endif
  882. X    XtSetArg (al[ac], XmNalignment, XmALIGNMENT_CENTER);  ac++;
  883. X    label = XmCreateLabelGadget (dialog_area, 
  884. X        "Press HELP for lines to put in a defaults file for these preferences.", al, ac);
  885. X    XtManageChild (label);
  886. X    
  887. X    XtAddCallback (pref_dialog, XmNmapCallback, PreferencesCB, PREF_MAP);
  888. X    XtAddCallback (pref_dialog, XmNokCallback, PreferencesCB, PREF_OK);
  889. X    XtAddCallback (pref_dialog, XmNcancelCallback, PreferencesCB, PREF_CANCEL);
  890. X    XtAddCallback (pref_dialog, XmNhelpCallback, PreferencesCB, PREF_HELP);
  891. X    
  892. X    
  893. X    /***  Unmanage unneeded children.  ***/
  894. X    i = 0;
  895. X    kid[i++] = XmSelectionBoxGetChild (pref_dialog, XmDIALOG_TEXT);
  896. X    kid[i++] = XmSelectionBoxGetChild (pref_dialog, XmDIALOG_SELECTION_LABEL);
  897. X    XtUnmanageChildren (kid, i);
  898. X
  899. X    return pref_dialog;
  900. X}
  901. X
  902. END_OF_FILE
  903. if test 31274 -ne `wc -c <'xmepref.c'`; then
  904.     echo shar: \"'xmepref.c'\" unpacked with wrong size!
  905. fi
  906. chmod +x 'xmepref.c'
  907. # end of 'xmepref.c'
  908. fi
  909. echo shar: End of archive 4 \(of 4\).
  910. cp /dev/null ark4isdone
  911. MISSING=""
  912. for I in 1 2 3 4 ; do
  913.     if test ! -f ark${I}isdone ; then
  914.     MISSING="${MISSING} ${I}"
  915.     fi
  916. done
  917. if test "${MISSING}" = "" ; then
  918.     echo You have unpacked all 4 archives.
  919.     rm -f ark[1-9]isdone
  920. else
  921.     echo You still need to unpack the following archives:
  922.     echo "        " ${MISSING}
  923. fi
  924. ##  End of shell archive.
  925. exit 0
  926.  
  927. exit 0 # Just in case...
  928. -- 
  929.   // chris@IMD.Sterling.COM            | Send comp.sources.x submissions to:
  930. \X/  Amiga - The only way to fly!      |
  931.  "It's intuitively obvious to the most |    sources-x@imd.sterling.com
  932.   casual observer..."                  |
  933.