home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / x / volume16 / contol3a / part03 < prev    next >
Encoding:
Text File  |  1992-03-04  |  45.1 KB  |  1,808 lines

  1. Newsgroups: comp.sources.x
  2. Path: uunet!think.com!mips!msi!dcmartin
  3. From: Chuck Musciano <chuck@trantor.harris-atd.com>
  4. Subject: v16i102: contool 3.2A (Final Release), Part03/07
  5. Message-ID: <1992Mar5.214752.9538@msi.com>
  6. Originator: dcmartin@fascet
  7. Sender: dcmartin@msi.com (David C. Martin - Moderator)
  8. Organization: Molecular Simulations, Inc.
  9. References: <csx-16i100-contool-3.2a@uunet.UU.NET>
  10. Date: Thu, 5 Mar 1992 21:47:52 GMT
  11. Approved: dcmartin@msi.com
  12.  
  13. Submitted-by: Chuck Musciano <chuck@trantor.harris-atd.com>
  14. Posting-number: Volume 16, Issue 102
  15. Archive-name: contool-3.2a/part03
  16.  
  17. #!/bin/sh
  18. # this is Part.03 (part 3 of a multipart archive)
  19. # do not concatenate these parts, unpack them in order with /bin/sh
  20. # file contool_ui.c continued
  21. #
  22. if test ! -r _shar_seq_.tmp; then
  23.     echo 'Please unpack part 1 first!'
  24.     exit 1
  25. fi
  26. (read Scheck
  27.  if test "$Scheck" != 3; then
  28.     echo Please unpack part "$Scheck" next!
  29.     exit 1
  30.  else
  31.     exit 0
  32.  fi
  33. ) < _shar_seq_.tmp || exit 1
  34. if test ! -f _shar_wnt_.tmp; then
  35.     echo 'x - still skipping contool_ui.c'
  36. else
  37. echo 'x - continuing file contool_ui.c'
  38. sed 's/^X//' << 'SHAR_EOF' >> 'contool_ui.c' &&
  39. X        XV_HELP_DATA, "contool:comment",
  40. X        XV_X, 49,
  41. X        XV_Y, 395,
  42. X        PANEL_VALUE_DISPLAY_LENGTH, 46,
  43. X        PANEL_VALUE_STORED_LENGTH, 256,
  44. X        PANEL_LABEL_STRING, "Comment:",
  45. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  46. X        PANEL_READ_ONLY, FALSE,
  47. X        NULL);
  48. X    return obj;
  49. }
  50. X
  51. /*
  52. X * Create object `ignore' in the specified instance.
  53. X */
  54. XXv_opaque
  55. contool_filters_ignore_create(ip, owner)
  56. X    contool_filters_objects    *ip;
  57. X    Xv_opaque        owner;
  58. {
  59. X    extern void        set_filter_action();
  60. X    Xv_opaque    obj;
  61. X    
  62. X    obj = xv_create(owner, PANEL_CHOICE,
  63. X        XV_KEY_DATA, INSTANCE, ip,
  64. X        XV_HELP_DATA, "contool:ignore",
  65. X        XV_X, 14,
  66. X        XV_Y, 431,
  67. X        PANEL_CHOICE_NROWS, 1,
  68. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  69. X        PANEL_CHOOSE_NONE, FALSE,
  70. X        PANEL_LABEL_STRING, "When matched:",
  71. X        PANEL_NOTIFY_PROC, set_filter_action,
  72. X        PANEL_CHOICE_STRINGS,
  73. X            "Save message",
  74. X            "Ignore message",
  75. X            NULL,
  76. X        PANEL_VALUE, 0,
  77. X        NULL);
  78. X    return obj;
  79. }
  80. X
  81. /*
  82. X * Create object `action' in the specified instance.
  83. X */
  84. XXv_opaque
  85. contool_filters_action_create(ip, owner)
  86. X    contool_filters_objects    *ip;
  87. X    Xv_opaque        owner;
  88. {
  89. X    extern void        set_match_action();
  90. X    Xv_opaque    obj;
  91. X    
  92. X    obj = xv_create(owner, PANEL_TOGGLE,
  93. X        XV_KEY_DATA, INSTANCE, ip,
  94. X        XV_HELP_DATA, "contool:action",
  95. X        XV_X, 32,
  96. X        XV_Y, 459,
  97. X        PANEL_CHOICE_NCOLS, 1,
  98. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  99. X        PANEL_LABEL_STRING, "When saved:",
  100. X        PANEL_NOTIFY_PROC, set_match_action,
  101. X        PANEL_CHOICE_STRINGS,
  102. X            "Beep",
  103. X            "Command",
  104. X            "Flash icon",
  105. X            "Log message",
  106. X            "Open window",
  107. X            "Timestamp",
  108. X            NULL,
  109. X        PANEL_VALUE, 0,
  110. X        NULL);
  111. X    return obj;
  112. }
  113. X
  114. /*
  115. X * Create object `filter_beep_count' in the specified instance.
  116. X */
  117. XXv_opaque
  118. contool_filters_filter_beep_count_create(ip, owner)
  119. X    contool_filters_objects    *ip;
  120. X    Xv_opaque        owner;
  121. {
  122. X    Xv_opaque    obj;
  123. X    
  124. X    obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  125. X        XV_KEY_DATA, INSTANCE, ip,
  126. X        XV_HELP_DATA, "contool:filter_beep_count",
  127. X        XV_X, 236,
  128. X        XV_Y, 464,
  129. X        PANEL_VALUE_DISPLAY_LENGTH, 2,
  130. X        PANEL_VALUE_STORED_LENGTH, 2,
  131. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  132. X        PANEL_MAX_VALUE, 99,
  133. X        PANEL_MIN_VALUE, 0,
  134. X        PANEL_VALUE, 0,
  135. X        PANEL_READ_ONLY, FALSE,
  136. X        NULL);
  137. X    return obj;
  138. }
  139. X
  140. /*
  141. X * Create object `filter_beep_times' in the specified instance.
  142. X */
  143. XXv_opaque
  144. contool_filters_filter_beep_times_create(ip, owner)
  145. X    contool_filters_objects    *ip;
  146. X    Xv_opaque        owner;
  147. {
  148. X    Xv_opaque    obj;
  149. X    
  150. X    obj = xv_create(owner, PANEL_MESSAGE,
  151. X        XV_KEY_DATA, INSTANCE, ip,
  152. X        XV_HELP_DATA, "contool:filter_beep_times",
  153. X        XV_X, 324,
  154. X        XV_Y, 464,
  155. X        PANEL_LABEL_STRING, "times",
  156. X        PANEL_LABEL_BOLD, FALSE,
  157. X        NULL);
  158. X    return obj;
  159. }
  160. X
  161. /*
  162. X * Create object `filter_command' in the specified instance.
  163. X */
  164. XXv_opaque
  165. contool_filters_filter_command_create(ip, owner)
  166. X    contool_filters_objects    *ip;
  167. X    Xv_opaque        owner;
  168. {
  169. X    Xv_opaque    obj;
  170. X    
  171. X    obj = xv_create(owner, PANEL_TEXT,
  172. X        XV_KEY_DATA, INSTANCE, ip,
  173. X        XV_HELP_DATA, "contool:filter_command",
  174. X        XV_X, 236,
  175. X        XV_Y, 493,
  176. X        PANEL_VALUE_DISPLAY_LENGTH, 32,
  177. X        PANEL_VALUE_STORED_LENGTH, 1024,
  178. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  179. X        PANEL_READ_ONLY, FALSE,
  180. X        NULL);
  181. X    return obj;
  182. }
  183. X
  184. /*
  185. X * Create object `filters_apply' in the specified instance.
  186. X */
  187. XXv_opaque
  188. contool_filters_filters_apply_create(ip, owner)
  189. X    contool_filters_objects    *ip;
  190. X    Xv_opaque        owner;
  191. {
  192. X    extern void        accept_filters();
  193. X    Xv_opaque    obj;
  194. X    
  195. X    obj = xv_create(owner, PANEL_BUTTON,
  196. X        XV_KEY_DATA, INSTANCE, ip,
  197. X        XV_HELP_DATA, "contool:filters_apply",
  198. X        XV_X, 135,
  199. X        XV_Y, 648,
  200. X        PANEL_LABEL_STRING, "Apply",
  201. X        PANEL_NOTIFY_PROC, accept_filters,
  202. X        NULL);
  203. X    return obj;
  204. }
  205. X
  206. /*
  207. X * Create object `filters_apply_and_save' in the specified instance.
  208. X */
  209. XXv_opaque
  210. contool_filters_filters_apply_and_save_create(ip, owner)
  211. X    contool_filters_objects    *ip;
  212. X    Xv_opaque        owner;
  213. {
  214. X    extern void        accept_and_save_filters();
  215. X    Xv_opaque    obj;
  216. X    
  217. X    obj = xv_create(owner, PANEL_BUTTON,
  218. X        XV_KEY_DATA, INSTANCE, ip,
  219. X        XV_HELP_DATA, "contool:filters_apply_and_save",
  220. X        XV_X, 200,
  221. X        XV_Y, 648,
  222. X        PANEL_LABEL_STRING, "Apply and Save",
  223. X        PANEL_NOTIFY_PROC, accept_and_save_filters,
  224. X        NULL);
  225. X    return obj;
  226. }
  227. X
  228. /*
  229. X * Create object `filters_reset' in the specified instance.
  230. X */
  231. XXv_opaque
  232. contool_filters_filters_reset_create(ip, owner)
  233. X    contool_filters_objects    *ip;
  234. X    Xv_opaque        owner;
  235. {
  236. X    extern void        reset_filters();
  237. X    Xv_opaque    obj;
  238. X    
  239. X    obj = xv_create(owner, PANEL_BUTTON,
  240. X        XV_KEY_DATA, INSTANCE, ip,
  241. X        XV_HELP_DATA, "contool:filters_reset",
  242. X        XV_X, 324,
  243. X        XV_Y, 648,
  244. X        PANEL_LABEL_STRING, "Reset",
  245. X        PANEL_NOTIFY_PROC, reset_filters,
  246. X        NULL);
  247. X    return obj;
  248. }
  249. X
  250. /*
  251. X * Initialize an instance of object `load'.
  252. X */
  253. contool_load_objects *
  254. contool_load_objects_initialize(ip, owner)
  255. X    contool_load_objects    *ip;
  256. X    Xv_opaque    owner;
  257. {
  258. X    if (!ip && !(ip = (contool_load_objects *) calloc(1, sizeof (contool_load_objects))))
  259. X        return (contool_load_objects *) NULL;
  260. X    if (!ip->load)
  261. X        ip->load = contool_load_load_create(ip, owner);
  262. X    if (!ip->load_controls)
  263. X        ip->load_controls = contool_load_load_controls_create(ip, ip->load);
  264. X    if (!ip->load_type)
  265. X        ip->load_type = contool_load_load_type_create(ip, ip->load_controls);
  266. X    if (!ip->load_file)
  267. X        ip->load_file = contool_load_load_file_create(ip, ip->load_controls);
  268. X    if (!ip->accept_load)
  269. X        ip->accept_load = contool_load_accept_load_create(ip, ip->load_controls);
  270. X    return ip;
  271. }
  272. X
  273. /*
  274. X * Create object `load' in the specified instance.
  275. X */
  276. XXv_opaque
  277. contool_load_load_create(ip, owner)
  278. X    contool_load_objects    *ip;
  279. X    Xv_opaque        owner;
  280. {
  281. X    Xv_opaque    obj;
  282. X    
  283. X    obj = xv_create(owner, FRAME_CMD,
  284. X        XV_KEY_DATA, INSTANCE, ip,
  285. X        XV_WIDTH, 444,
  286. X        XV_HEIGHT, 146,
  287. X        XV_LABEL, "Contool: Load Configuration",
  288. X        XV_SHOW, FALSE,
  289. X        FRAME_SHOW_FOOTER, FALSE,
  290. X        FRAME_SHOW_RESIZE_CORNER, FALSE,
  291. X        FRAME_CMD_PUSHPIN_IN, FALSE,
  292. X        NULL);
  293. X    xv_set(xv_get(obj, FRAME_CMD_PANEL), WIN_SHOW, FALSE, NULL);
  294. X    return obj;
  295. }
  296. X
  297. /*
  298. X * Create object `load_controls' in the specified instance.
  299. X */
  300. XXv_opaque
  301. contool_load_load_controls_create(ip, owner)
  302. X    contool_load_objects    *ip;
  303. X    Xv_opaque        owner;
  304. {
  305. X    Xv_opaque    obj;
  306. X    
  307. X    obj = xv_create(owner, PANEL,
  308. X        XV_KEY_DATA, INSTANCE, ip,
  309. X        XV_HELP_DATA, "contool:load_controls",
  310. X        XV_X, 0,
  311. X        XV_Y, 0,
  312. X        XV_WIDTH, WIN_EXTEND_TO_EDGE,
  313. X        XV_HEIGHT, WIN_EXTEND_TO_EDGE,
  314. X        WIN_BORDER, FALSE,
  315. X        NULL);
  316. X    return obj;
  317. }
  318. X
  319. /*
  320. X * Create object `load_type' in the specified instance.
  321. X */
  322. XXv_opaque
  323. contool_load_load_type_create(ip, owner)
  324. X    contool_load_objects    *ip;
  325. X    Xv_opaque        owner;
  326. {
  327. X    Xv_opaque    obj;
  328. X    
  329. X    obj = xv_create(owner, PANEL_TOGGLE,
  330. X        XV_KEY_DATA, INSTANCE, ip,
  331. X        XV_HELP_DATA, "contool:load_type",
  332. X        XV_X, 105,
  333. X        XV_Y, 14,
  334. X        PANEL_CHOICE_NCOLS, 1,
  335. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  336. X        PANEL_LABEL_STRING, "Load:",
  337. X        PANEL_CHOICE_STRINGS,
  338. X            "Tool properties",
  339. X            "Filter definitions",
  340. X            NULL,
  341. X        PANEL_VALUE, 0,
  342. X        NULL);
  343. X    return obj;
  344. }
  345. X
  346. /*
  347. X * Create object `load_file' in the specified instance.
  348. X */
  349. XXv_opaque
  350. contool_load_load_file_create(ip, owner)
  351. X    contool_load_objects    *ip;
  352. X    Xv_opaque        owner;
  353. {
  354. X    extern Panel_setting    filename_completion();
  355. X    Xv_opaque    obj;
  356. X    
  357. X    obj = xv_create(owner, PANEL_TEXT,
  358. X        XV_KEY_DATA, INSTANCE, ip,
  359. X        XV_HELP_DATA, "contool:load_file",
  360. X        XV_X, 14,
  361. X        XV_Y, 72,
  362. X        PANEL_VALUE_DISPLAY_LENGTH, 35,
  363. X        PANEL_VALUE_STORED_LENGTH, 256,
  364. X        PANEL_LABEL_STRING, "Configuration file:",
  365. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  366. X        PANEL_READ_ONLY, FALSE,
  367. X        PANEL_NOTIFY_PROC, filename_completion,
  368. X        NULL);
  369. X    return obj;
  370. }
  371. X
  372. /*
  373. X * Create object `accept_load' in the specified instance.
  374. X */
  375. XXv_opaque
  376. contool_load_accept_load_create(ip, owner)
  377. X    contool_load_objects    *ip;
  378. X    Xv_opaque        owner;
  379. {
  380. X    extern void        load_filters();
  381. X    Xv_opaque    obj;
  382. X    
  383. X    obj = xv_create(owner, PANEL_BUTTON,
  384. X        XV_KEY_DATA, INSTANCE, ip,
  385. X        XV_HELP_DATA, "contool:accept_load",
  386. X        XV_X, 199,
  387. X        XV_Y, 107,
  388. X        PANEL_LABEL_STRING, "Load",
  389. X        PANEL_NOTIFY_PROC, load_filters,
  390. X        NULL);
  391. X    return obj;
  392. }
  393. X
  394. /*
  395. X * Initialize an instance of object `store'.
  396. X */
  397. contool_store_objects *
  398. contool_store_objects_initialize(ip, owner)
  399. X    contool_store_objects    *ip;
  400. X    Xv_opaque    owner;
  401. {
  402. X    if (!ip && !(ip = (contool_store_objects *) calloc(1, sizeof (contool_store_objects))))
  403. X        return (contool_store_objects *) NULL;
  404. X    if (!ip->store)
  405. X        ip->store = contool_store_store_create(ip, owner);
  406. X    if (!ip->store_controls)
  407. X        ip->store_controls = contool_store_store_controls_create(ip, ip->store);
  408. X    if (!ip->store_type)
  409. X        ip->store_type = contool_store_store_type_create(ip, ip->store_controls);
  410. X    if (!ip->store_file)
  411. X        ip->store_file = contool_store_store_file_create(ip, ip->store_controls);
  412. X    if (!ip->accept_store)
  413. X        ip->accept_store = contool_store_accept_store_create(ip, ip->store_controls);
  414. X    return ip;
  415. }
  416. X
  417. /*
  418. X * Create object `store' in the specified instance.
  419. X */
  420. XXv_opaque
  421. contool_store_store_create(ip, owner)
  422. X    contool_store_objects    *ip;
  423. X    Xv_opaque        owner;
  424. {
  425. X    Xv_opaque    obj;
  426. X    
  427. X    obj = xv_create(owner, FRAME_CMD,
  428. X        XV_KEY_DATA, INSTANCE, ip,
  429. X        XV_WIDTH, 444,
  430. X        XV_HEIGHT, 146,
  431. X        XV_LABEL, "Contool: Save Configuration",
  432. X        XV_SHOW, FALSE,
  433. X        FRAME_SHOW_FOOTER, FALSE,
  434. X        FRAME_SHOW_RESIZE_CORNER, FALSE,
  435. X        FRAME_CMD_PUSHPIN_IN, FALSE,
  436. X        NULL);
  437. X    xv_set(xv_get(obj, FRAME_CMD_PANEL), WIN_SHOW, FALSE, NULL);
  438. X    return obj;
  439. }
  440. X
  441. /*
  442. X * Create object `store_controls' in the specified instance.
  443. X */
  444. XXv_opaque
  445. contool_store_store_controls_create(ip, owner)
  446. X    contool_store_objects    *ip;
  447. X    Xv_opaque        owner;
  448. {
  449. X    Xv_opaque    obj;
  450. X    
  451. X    obj = xv_create(owner, PANEL,
  452. X        XV_KEY_DATA, INSTANCE, ip,
  453. X        XV_HELP_DATA, "contool:store_controls",
  454. X        XV_X, 0,
  455. X        XV_Y, 0,
  456. X        XV_WIDTH, WIN_EXTEND_TO_EDGE,
  457. X        XV_HEIGHT, WIN_EXTEND_TO_EDGE,
  458. X        WIN_BORDER, FALSE,
  459. X        NULL);
  460. X    return obj;
  461. }
  462. X
  463. /*
  464. X * Create object `store_type' in the specified instance.
  465. X */
  466. XXv_opaque
  467. contool_store_store_type_create(ip, owner)
  468. X    contool_store_objects    *ip;
  469. X    Xv_opaque        owner;
  470. {
  471. X    Xv_opaque    obj;
  472. X    
  473. X    obj = xv_create(owner, PANEL_TOGGLE,
  474. X        XV_KEY_DATA, INSTANCE, ip,
  475. X        XV_HELP_DATA, "contool:store_type",
  476. X        XV_X, 102,
  477. X        XV_Y, 14,
  478. X        PANEL_CHOICE_NCOLS, 1,
  479. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  480. X        PANEL_LABEL_STRING, "Store:",
  481. X        PANEL_CHOICE_STRINGS,
  482. X            "Tool properties",
  483. X            "Filter definitions",
  484. X            NULL,
  485. X        PANEL_VALUE, 0,
  486. X        NULL);
  487. X    return obj;
  488. }
  489. X
  490. /*
  491. X * Create object `store_file' in the specified instance.
  492. X */
  493. XXv_opaque
  494. contool_store_store_file_create(ip, owner)
  495. X    contool_store_objects    *ip;
  496. X    Xv_opaque        owner;
  497. {
  498. X    extern Panel_setting    filename_completion();
  499. X    Xv_opaque    obj;
  500. X    
  501. X    obj = xv_create(owner, PANEL_TEXT,
  502. X        XV_KEY_DATA, INSTANCE, ip,
  503. X        XV_HELP_DATA, "contool:store_file",
  504. X        XV_X, 14,
  505. X        XV_Y, 72,
  506. X        PANEL_VALUE_DISPLAY_LENGTH, 35,
  507. X        PANEL_VALUE_STORED_LENGTH, 256,
  508. X        PANEL_LABEL_STRING, "Configuration file:",
  509. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  510. X        PANEL_READ_ONLY, FALSE,
  511. X        PANEL_NOTIFY_PROC, filename_completion,
  512. X        NULL);
  513. X    return obj;
  514. }
  515. X
  516. /*
  517. X * Create object `accept_store' in the specified instance.
  518. X */
  519. XXv_opaque
  520. contool_store_accept_store_create(ip, owner)
  521. X    contool_store_objects    *ip;
  522. X    Xv_opaque        owner;
  523. {
  524. X    extern void        store_filters();
  525. X    Xv_opaque    obj;
  526. X    
  527. X    obj = xv_create(owner, PANEL_BUTTON,
  528. X        XV_KEY_DATA, INSTANCE, ip,
  529. X        XV_HELP_DATA, "contool:accept_store",
  530. X        XV_X, 197,
  531. X        XV_Y, 107,
  532. X        PANEL_LABEL_STRING, "Store",
  533. X        PANEL_NOTIFY_PROC, store_filters,
  534. X        NULL);
  535. X    return obj;
  536. }
  537. X
  538. /*
  539. X * Initialize an instance of object `about'.
  540. X */
  541. contool_about_objects *
  542. contool_about_objects_initialize(ip, owner)
  543. X    contool_about_objects    *ip;
  544. X    Xv_opaque    owner;
  545. {
  546. X    if (!ip && !(ip = (contool_about_objects *) calloc(1, sizeof (contool_about_objects))))
  547. X        return (contool_about_objects *) NULL;
  548. X    if (!ip->about)
  549. X        ip->about = contool_about_about_create(ip, owner);
  550. X    if (!ip->about_controls)
  551. X        ip->about_controls = contool_about_about_controls_create(ip, ip->about);
  552. X    if (!ip->message1)
  553. X        ip->message1 = contool_about_message1_create(ip, ip->about_controls);
  554. X    if (!ip->message5)
  555. X        ip->message5 = contool_about_message5_create(ip, ip->about_controls);
  556. X    if (!ip->message6)
  557. X        ip->message6 = contool_about_message6_create(ip, ip->about_controls);
  558. X    if (!ip->message7)
  559. X        ip->message7 = contool_about_message7_create(ip, ip->about_controls);
  560. X    if (!ip->message8)
  561. X        ip->message8 = contool_about_message8_create(ip, ip->about_controls);
  562. X    if (!ip->message9)
  563. X        ip->message9 = contool_about_message9_create(ip, ip->about_controls);
  564. X    if (!ip->message10)
  565. X        ip->message10 = contool_about_message10_create(ip, ip->about_controls);
  566. X    if (!ip->message11)
  567. X        ip->message11 = contool_about_message11_create(ip, ip->about_controls);
  568. X    if (!ip->message12)
  569. X        ip->message12 = contool_about_message12_create(ip, ip->about_controls);
  570. X    if (!ip->message13)
  571. X        ip->message13 = contool_about_message13_create(ip, ip->about_controls);
  572. X    if (!ip->message14)
  573. X        ip->message14 = contool_about_message14_create(ip, ip->about_controls);
  574. X    if (!ip->message16)
  575. X        ip->message16 = contool_about_message16_create(ip, ip->about_controls);
  576. X    if (!ip->message17)
  577. X        ip->message17 = contool_about_message17_create(ip, ip->about_controls);
  578. X    if (!ip->message18)
  579. X        ip->message18 = contool_about_message18_create(ip, ip->about_controls);
  580. X    if (!ip->message19)
  581. X        ip->message19 = contool_about_message19_create(ip, ip->about_controls);
  582. X    if (!ip->message20)
  583. X        ip->message20 = contool_about_message20_create(ip, ip->about_controls);
  584. X    if (!ip->send_mail)
  585. X        ip->send_mail = contool_about_send_mail_create(ip, ip->about_controls);
  586. X    return ip;
  587. }
  588. X
  589. /*
  590. X * Create object `about' in the specified instance.
  591. X */
  592. XXv_opaque
  593. contool_about_about_create(ip, owner)
  594. X    contool_about_objects    *ip;
  595. X    Xv_opaque        owner;
  596. {
  597. X    Xv_opaque    obj;
  598. X    
  599. X    obj = xv_create(owner, FRAME_CMD,
  600. X        XV_KEY_DATA, INSTANCE, ip,
  601. X        XV_WIDTH, 509,
  602. X        XV_HEIGHT, 376,
  603. X        XV_LABEL, "Contool: About contool",
  604. X        XV_SHOW, FALSE,
  605. X        FRAME_SHOW_FOOTER, FALSE,
  606. X        FRAME_SHOW_RESIZE_CORNER, FALSE,
  607. X        FRAME_CMD_PUSHPIN_IN, TRUE,
  608. X        NULL);
  609. X    xv_set(xv_get(obj, FRAME_CMD_PANEL), WIN_SHOW, FALSE, NULL);
  610. X    return obj;
  611. }
  612. X
  613. /*
  614. X * Create object `about_controls' in the specified instance.
  615. X */
  616. XXv_opaque
  617. contool_about_about_controls_create(ip, owner)
  618. X    contool_about_objects    *ip;
  619. X    Xv_opaque        owner;
  620. {
  621. X    Xv_opaque    obj;
  622. X    
  623. X    obj = xv_create(owner, PANEL,
  624. X        XV_KEY_DATA, INSTANCE, ip,
  625. X        XV_HELP_DATA, "contool:about_controls",
  626. X        XV_X, 0,
  627. X        XV_Y, 0,
  628. X        XV_WIDTH, WIN_EXTEND_TO_EDGE,
  629. X        XV_HEIGHT, WIN_EXTEND_TO_EDGE,
  630. X        WIN_BORDER, FALSE,
  631. X        NULL);
  632. X    return obj;
  633. }
  634. X
  635. /*
  636. X * Create object `message1' in the specified instance.
  637. X */
  638. XXv_opaque
  639. contool_about_message1_create(ip, owner)
  640. X    contool_about_objects    *ip;
  641. X    Xv_opaque        owner;
  642. {
  643. X    Xv_opaque    obj;
  644. X    
  645. X    obj = xv_create(owner, PANEL_MESSAGE,
  646. X        XV_KEY_DATA, INSTANCE, ip,
  647. X        XV_HELP_DATA, "contool:message1",
  648. X        XV_X, 217,
  649. X        XV_Y, 14,
  650. X        PANEL_LABEL_STRING, "Contool 3.2a",
  651. X        PANEL_LABEL_BOLD, TRUE,
  652. X        NULL);
  653. X    return obj;
  654. }
  655. X
  656. /*
  657. X * Create object `message5' in the specified instance.
  658. X */
  659. XXv_opaque
  660. contool_about_message5_create(ip, owner)
  661. X    contool_about_objects    *ip;
  662. X    Xv_opaque        owner;
  663. {
  664. X    Xv_opaque    obj;
  665. X    
  666. X    obj = xv_create(owner, PANEL_MESSAGE,
  667. X        XV_KEY_DATA, INSTANCE, ip,
  668. X        XV_HELP_DATA, "contool:message5",
  669. X        XV_X, 177,
  670. X        XV_Y, 30,
  671. X        PANEL_LABEL_STRING, "Copyright 1988 - 1992",
  672. X        PANEL_LABEL_BOLD, TRUE,
  673. X        NULL);
  674. X    return obj;
  675. }
  676. X
  677. /*
  678. X * Create object `message6' in the specified instance.
  679. X */
  680. XXv_opaque
  681. contool_about_message6_create(ip, owner)
  682. X    contool_about_objects    *ip;
  683. X    Xv_opaque        owner;
  684. {
  685. X    Xv_opaque    obj;
  686. X    
  687. X    obj = xv_create(owner, PANEL_MESSAGE,
  688. X        XV_KEY_DATA, INSTANCE, ip,
  689. X        XV_HELP_DATA, "contool:message6",
  690. X        XV_X, 117,
  691. X        XV_Y, 46,
  692. X        PANEL_LABEL_STRING, "Chuck Musciano and Harris Corporation",
  693. X        PANEL_LABEL_BOLD, TRUE,
  694. X        NULL);
  695. X    return obj;
  696. }
  697. X
  698. /*
  699. X * Create object `message7' in the specified instance.
  700. X */
  701. XXv_opaque
  702. contool_about_message7_create(ip, owner)
  703. X    contool_about_objects    *ip;
  704. X    Xv_opaque        owner;
  705. {
  706. X    Xv_opaque    obj;
  707. X    
  708. X    obj = xv_create(owner, PANEL_MESSAGE,
  709. X        XV_KEY_DATA, INSTANCE, ip,
  710. X        XV_HELP_DATA, "contool:message7",
  711. X        XV_X, 185,
  712. X        XV_Y, 62,
  713. X        PANEL_LABEL_STRING, "All Rights Reserved",
  714. X        PANEL_LABEL_BOLD, TRUE,
  715. X        NULL);
  716. X    return obj;
  717. }
  718. X
  719. /*
  720. X * Create object `message8' in the specified instance.
  721. X */
  722. XXv_opaque
  723. contool_about_message8_create(ip, owner)
  724. X    contool_about_objects    *ip;
  725. X    Xv_opaque        owner;
  726. {
  727. X    Xv_opaque    obj;
  728. X    
  729. X    obj = xv_create(owner, PANEL_MESSAGE,
  730. X        XV_KEY_DATA, INSTANCE, ip,
  731. X        XV_HELP_DATA, "contool:message8",
  732. X        XV_X, 14,
  733. X        XV_Y, 94,
  734. X        PANEL_LABEL_STRING, "Contool was written using Sun's Devguide interface builder and the XView",
  735. X        PANEL_LABEL_BOLD, FALSE,
  736. X        NULL);
  737. X    return obj;
  738. }
  739. X
  740. /*
  741. X * Create object `message9' in the specified instance.
  742. X */
  743. XXv_opaque
  744. contool_about_message9_create(ip, owner)
  745. X    contool_about_objects    *ip;
  746. X    Xv_opaque        owner;
  747. {
  748. X    Xv_opaque    obj;
  749. X    
  750. X    obj = xv_create(owner, PANEL_MESSAGE,
  751. X        XV_KEY_DATA, INSTANCE, ip,
  752. X        XV_HELP_DATA, "contool:message9",
  753. X        XV_X, 14,
  754. X        XV_Y, 110,
  755. X        PANEL_LABEL_STRING, "OPEN LOOK toolkit.  It originated as a SunView application in early 1987,",
  756. X        PANEL_LABEL_BOLD, FALSE,
  757. X        NULL);
  758. X    return obj;
  759. }
  760. X
  761. /*
  762. X * Create object `message10' in the specified instance.
  763. X */
  764. XXv_opaque
  765. contool_about_message10_create(ip, owner)
  766. X    contool_about_objects    *ip;
  767. X    Xv_opaque        owner;
  768. {
  769. X    Xv_opaque    obj;
  770. X    
  771. X    obj = xv_create(owner, PANEL_MESSAGE,
  772. X        XV_KEY_DATA, INSTANCE, ip,
  773. X        XV_HELP_DATA, "contool:message10",
  774. X        XV_X, 14,
  775. X        XV_Y, 126,
  776. X        PANEL_LABEL_STRING, "was made freely available in 1988, and was ported to X Windows in 1990.",
  777. X        PANEL_LABEL_BOLD, FALSE,
  778. X        NULL);
  779. X    return obj;
  780. }
  781. X
  782. /*
  783. X * Create object `message11' in the specified instance.
  784. X */
  785. XXv_opaque
  786. contool_about_message11_create(ip, owner)
  787. X    contool_about_objects    *ip;
  788. X    Xv_opaque        owner;
  789. {
  790. X    Xv_opaque    obj;
  791. X    
  792. X    obj = xv_create(owner, PANEL_MESSAGE,
  793. X        XV_KEY_DATA, INSTANCE, ip,
  794. X        XV_HELP_DATA, "contool:message11",
  795. X        XV_X, 14,
  796. X        XV_Y, 158,
  797. X        PANEL_LABEL_STRING, "I welcome comments, criticism, suggestions, and bug reports.  Almost every",
  798. X        PANEL_LABEL_BOLD, FALSE,
  799. X        NULL);
  800. X    return obj;
  801. }
  802. X
  803. /*
  804. X * Create object `message12' in the specified instance.
  805. X */
  806. XXv_opaque
  807. contool_about_message12_create(ip, owner)
  808. X    contool_about_objects    *ip;
  809. X    Xv_opaque        owner;
  810. {
  811. X    Xv_opaque    obj;
  812. X    
  813. X    obj = xv_create(owner, PANEL_MESSAGE,
  814. X        XV_KEY_DATA, INSTANCE, ip,
  815. X        XV_HELP_DATA, "contool:message12",
  816. X        XV_X, 14,
  817. X        XV_Y, 174,
  818. X        PANEL_LABEL_STRING, "feature in this version of contool was added as the result of a user request. ",
  819. X        PANEL_LABEL_BOLD, FALSE,
  820. X        NULL);
  821. X    return obj;
  822. }
  823. X
  824. /*
  825. X * Create object `message13' in the specified instance.
  826. X */
  827. XXv_opaque
  828. contool_about_message13_create(ip, owner)
  829. X    contool_about_objects    *ip;
  830. X    Xv_opaque        owner;
  831. {
  832. X    Xv_opaque    obj;
  833. X    
  834. X    obj = xv_create(owner, PANEL_MESSAGE,
  835. X        XV_KEY_DATA, INSTANCE, ip,
  836. X        XV_HELP_DATA, "contool:message13",
  837. X        XV_X, 14,
  838. X        XV_Y, 190,
  839. X        PANEL_LABEL_STRING, "User feedback is the single best driving force in the evolution of my tools.  I ",
  840. X        PANEL_LABEL_BOLD, FALSE,
  841. X        NULL);
  842. X    return obj;
  843. }
  844. X
  845. /*
  846. X * Create object `message14' in the specified instance.
  847. X */
  848. XXv_opaque
  849. contool_about_message14_create(ip, owner)
  850. X    contool_about_objects    *ip;
  851. X    Xv_opaque        owner;
  852. {
  853. X    Xv_opaque    obj;
  854. X    
  855. X    obj = xv_create(owner, PANEL_MESSAGE,
  856. X        XV_KEY_DATA, INSTANCE, ip,
  857. X        XV_HELP_DATA, "contool:message14",
  858. X        XV_X, 14,
  859. X        XV_Y, 206,
  860. X        PANEL_LABEL_STRING, "look forward to hearing from you!",
  861. X        PANEL_LABEL_BOLD, FALSE,
  862. X        NULL);
  863. X    return obj;
  864. }
  865. X
  866. /*
  867. X * Create object `message16' in the specified instance.
  868. X */
  869. XXv_opaque
  870. contool_about_message16_create(ip, owner)
  871. X    contool_about_objects    *ip;
  872. X    Xv_opaque        owner;
  873. {
  874. X    Xv_opaque    obj;
  875. X    
  876. X    obj = xv_create(owner, PANEL_MESSAGE,
  877. X        XV_KEY_DATA, INSTANCE, ip,
  878. X        XV_HELP_DATA, "contool:message16",
  879. X        XV_X, 14,
  880. X        XV_Y, 238,
  881. X        PANEL_LABEL_STRING, "Contool has been released for private, not-for-profit use, and the copyright",
  882. X        PANEL_LABEL_BOLD, FALSE,
  883. X        NULL);
  884. X    return obj;
  885. }
  886. X
  887. /*
  888. X * Create object `message17' in the specified instance.
  889. X */
  890. XXv_opaque
  891. contool_about_message17_create(ip, owner)
  892. X    contool_about_objects    *ip;
  893. X    Xv_opaque        owner;
  894. {
  895. X    Xv_opaque    obj;
  896. X    
  897. X    obj = xv_create(owner, PANEL_MESSAGE,
  898. X        XV_KEY_DATA, INSTANCE, ip,
  899. X        XV_HELP_DATA, "contool:message17",
  900. X        XV_X, 14,
  901. X        XV_Y, 254,
  902. X        PANEL_LABEL_STRING, "on the source code is retained by myself and Harris Corporation, my employer.",
  903. X        PANEL_LABEL_BOLD, FALSE,
  904. X        NULL);
  905. X    return obj;
  906. }
  907. X
  908. /*
  909. X * Create object `message18' in the specified instance.
  910. X */
  911. XXv_opaque
  912. contool_about_message18_create(ip, owner)
  913. X    contool_about_objects    *ip;
  914. X    Xv_opaque        owner;
  915. {
  916. X    Xv_opaque    obj;
  917. X    
  918. X    obj = xv_create(owner, PANEL_MESSAGE,
  919. X        XV_KEY_DATA, INSTANCE, ip,
  920. X        XV_HELP_DATA, "contool:message18",
  921. X        XV_X, 14,
  922. X        XV_Y, 270,
  923. X        PANEL_LABEL_STRING, "This means that you can give the source code to anyone but you cannot sell",
  924. X        PANEL_LABEL_BOLD, FALSE,
  925. X        NULL);
  926. X    return obj;
  927. }
  928. X
  929. /*
  930. X * Create object `message19' in the specified instance.
  931. X */
  932. XXv_opaque
  933. contool_about_message19_create(ip, owner)
  934. X    contool_about_objects    *ip;
  935. X    Xv_opaque        owner;
  936. {
  937. X    Xv_opaque    obj;
  938. X    
  939. X    obj = xv_create(owner, PANEL_MESSAGE,
  940. X        XV_KEY_DATA, INSTANCE, ip,
  941. X        XV_HELP_DATA, "contool:message19",
  942. X        XV_X, 14,
  943. X        XV_Y, 286,
  944. X        PANEL_LABEL_STRING, "any part of the source code, nor can you incorporate any part of the source",
  945. X        PANEL_LABEL_BOLD, FALSE,
  946. X        NULL);
  947. X    return obj;
  948. }
  949. X
  950. /*
  951. X * Create object `message20' in the specified instance.
  952. X */
  953. XXv_opaque
  954. contool_about_message20_create(ip, owner)
  955. X    contool_about_objects    *ip;
  956. X    Xv_opaque        owner;
  957. {
  958. X    Xv_opaque    obj;
  959. X    
  960. X    obj = xv_create(owner, PANEL_MESSAGE,
  961. X        XV_KEY_DATA, INSTANCE, ip,
  962. X        XV_HELP_DATA, "contool:message20",
  963. X        XV_X, 14,
  964. X        XV_Y, 302,
  965. X        PANEL_LABEL_STRING, "code into a product which is subsequently sold.",
  966. X        PANEL_LABEL_BOLD, FALSE,
  967. X        NULL);
  968. X    return obj;
  969. }
  970. X
  971. /*
  972. X * Create object `send_mail' in the specified instance.
  973. X */
  974. XXv_opaque
  975. contool_about_send_mail_create(ip, owner)
  976. X    contool_about_objects    *ip;
  977. X    Xv_opaque        owner;
  978. {
  979. X    extern void        popup_send_mail();
  980. X    Xv_opaque    obj;
  981. X    
  982. X    obj = xv_create(owner, PANEL_BUTTON,
  983. X        XV_KEY_DATA, INSTANCE, ip,
  984. X        XV_HELP_DATA, "contool:send_mail",
  985. X        XV_X, 210,
  986. X        XV_Y, 336,
  987. X        PANEL_LABEL_STRING, "Send Mail...",
  988. X        PANEL_NOTIFY_PROC, popup_send_mail,
  989. X        NULL);
  990. X    return obj;
  991. }
  992. X
  993. /*
  994. X * Initialize an instance of object `mail'.
  995. X */
  996. contool_mail_objects *
  997. contool_mail_objects_initialize(ip, owner)
  998. X    contool_mail_objects    *ip;
  999. X    Xv_opaque    owner;
  1000. {
  1001. X    if (!ip && !(ip = (contool_mail_objects *) calloc(1, sizeof (contool_mail_objects))))
  1002. X        return (contool_mail_objects *) NULL;
  1003. X    if (!ip->mail)
  1004. X        ip->mail = contool_mail_mail_create(ip, owner);
  1005. X    if (!ip->mail_controls)
  1006. X        ip->mail_controls = contool_mail_mail_controls_create(ip, ip->mail);
  1007. X    if (!ip->message21)
  1008. X        ip->message21 = contool_mail_message21_create(ip, ip->mail_controls);
  1009. X    if (!ip->message22)
  1010. X        ip->message22 = contool_mail_message22_create(ip, ip->mail_controls);
  1011. X    if (!ip->address)
  1012. X        ip->address = contool_mail_address_create(ip, ip->mail_controls);
  1013. X    if (!ip->fixed_address)
  1014. X        ip->fixed_address = contool_mail_fixed_address_create(ip, ip->mail_controls);
  1015. X    if (!ip->other_address)
  1016. X        ip->other_address = contool_mail_other_address_create(ip, ip->mail_controls);
  1017. X    if (!ip->message)
  1018. X        ip->message = contool_mail_message_create(ip, ip->mail);
  1019. X    if (!ip->mail_controls1)
  1020. X        ip->mail_controls1 = contool_mail_mail_controls1_create(ip, ip->mail);
  1021. X    if (!ip->accept_send)
  1022. X        ip->accept_send = contool_mail_accept_send_create(ip, ip->mail_controls1);
  1023. X    return ip;
  1024. }
  1025. X
  1026. /*
  1027. X * Create object `mail' in the specified instance.
  1028. X */
  1029. XXv_opaque
  1030. contool_mail_mail_create(ip, owner)
  1031. X    contool_mail_objects    *ip;
  1032. X    Xv_opaque        owner;
  1033. {
  1034. X    extern void    done_mail();
  1035. X    Xv_opaque    obj;
  1036. X    
  1037. X    obj = xv_create(owner, FRAME_CMD,
  1038. X        XV_KEY_DATA, INSTANCE, ip,
  1039. X        XV_WIDTH, 506,
  1040. X        XV_HEIGHT, 338,
  1041. X        XV_LABEL, "Contool: Send mail",
  1042. X        XV_SHOW, FALSE,
  1043. X        FRAME_SHOW_FOOTER, FALSE,
  1044. X        FRAME_SHOW_RESIZE_CORNER, FALSE,
  1045. X        FRAME_CMD_PUSHPIN_IN, FALSE,
  1046. X        FRAME_DONE_PROC, done_mail,
  1047. X        NULL);
  1048. X    xv_set(xv_get(obj, FRAME_CMD_PANEL), WIN_SHOW, FALSE, NULL);
  1049. X    return obj;
  1050. }
  1051. X
  1052. /*
  1053. X * Create object `mail_controls' in the specified instance.
  1054. X */
  1055. XXv_opaque
  1056. contool_mail_mail_controls_create(ip, owner)
  1057. X    contool_mail_objects    *ip;
  1058. X    Xv_opaque        owner;
  1059. {
  1060. X    Xv_opaque    obj;
  1061. X    
  1062. X    obj = xv_create(owner, PANEL,
  1063. X        XV_KEY_DATA, INSTANCE, ip,
  1064. X        XV_HELP_DATA, "contool:mail_controls",
  1065. X        XV_X, 0,
  1066. X        XV_Y, 0,
  1067. X        XV_WIDTH, WIN_EXTEND_TO_EDGE,
  1068. X        XV_HEIGHT, 92,
  1069. X        WIN_BORDER, FALSE,
  1070. X        NULL);
  1071. X    return obj;
  1072. }
  1073. X
  1074. /*
  1075. X * Create object `message21' in the specified instance.
  1076. X */
  1077. XXv_opaque
  1078. contool_mail_message21_create(ip, owner)
  1079. X    contool_mail_objects    *ip;
  1080. X    Xv_opaque        owner;
  1081. {
  1082. X    Xv_opaque    obj;
  1083. X    
  1084. X    obj = xv_create(owner, PANEL_MESSAGE,
  1085. X        XV_KEY_DATA, INSTANCE, ip,
  1086. X        XV_HELP_DATA, "contool:message21",
  1087. X        XV_X, 14,
  1088. X        XV_Y, 14,
  1089. X        PANEL_LABEL_STRING, "Your feedback is appreciated.  To ensure that your message reaches me, check",
  1090. X        PANEL_LABEL_BOLD, FALSE,
  1091. X        NULL);
  1092. X    return obj;
  1093. }
  1094. X
  1095. /*
  1096. X * Create object `message22' in the specified instance.
  1097. X */
  1098. XXv_opaque
  1099. contool_mail_message22_create(ip, owner)
  1100. X    contool_mail_objects    *ip;
  1101. X    Xv_opaque        owner;
  1102. {
  1103. X    Xv_opaque    obj;
  1104. X    
  1105. X    obj = xv_create(owner, PANEL_MESSAGE,
  1106. X        XV_KEY_DATA, INSTANCE, ip,
  1107. X        XV_HELP_DATA, "contool:message22",
  1108. X        XV_X, 14,
  1109. X        XV_Y, 30,
  1110. X        PANEL_LABEL_STRING, "that the \"To\" address is valid for your site before clicking \"Send\".",
  1111. X        PANEL_LABEL_BOLD, FALSE,
  1112. X        NULL);
  1113. X    return obj;
  1114. }
  1115. X
  1116. /*
  1117. X * Create object `address' in the specified instance.
  1118. X */
  1119. XXv_opaque
  1120. contool_mail_address_create(ip, owner)
  1121. X    contool_mail_objects    *ip;
  1122. X    Xv_opaque        owner;
  1123. {
  1124. X    Xv_opaque    obj;
  1125. X    
  1126. X    obj = xv_create(owner, PANEL_ABBREV_MENU_BUTTON,
  1127. X        XV_KEY_DATA, INSTANCE, ip,
  1128. X        XV_HELP_DATA, "contool:address",
  1129. X        XV_X, 14,
  1130. X        XV_Y, 69,
  1131. X        PANEL_LABEL_STRING, "To:",
  1132. X        PANEL_ITEM_MENU, contool_address_menu_create((caddr_t *) ip, NULL),
  1133. X        NULL);
  1134. X    return obj;
  1135. }
  1136. X
  1137. /*
  1138. X * Create object `fixed_address' in the specified instance.
  1139. X */
  1140. XXv_opaque
  1141. contool_mail_fixed_address_create(ip, owner)
  1142. X    contool_mail_objects    *ip;
  1143. X    Xv_opaque        owner;
  1144. {
  1145. X    Xv_opaque    obj;
  1146. X    
  1147. X    obj = xv_create(owner, PANEL_MESSAGE,
  1148. X        XV_KEY_DATA, INSTANCE, ip,
  1149. X        XV_HELP_DATA, "contool:fixed_address",
  1150. X        XV_X, 70,
  1151. X        XV_Y, 69,
  1152. X        PANEL_LABEL_STRING, "chuck@trantor.harris-atd.com",
  1153. X        PANEL_LABEL_BOLD, FALSE,
  1154. X        NULL);
  1155. X    return obj;
  1156. }
  1157. X
  1158. /*
  1159. X * Create object `other_address' in the specified instance.
  1160. X */
  1161. XXv_opaque
  1162. contool_mail_other_address_create(ip, owner)
  1163. X    contool_mail_objects    *ip;
  1164. X    Xv_opaque        owner;
  1165. {
  1166. X    Xv_opaque    obj;
  1167. X    
  1168. X    obj = xv_create(owner, PANEL_TEXT,
  1169. X        XV_KEY_DATA, INSTANCE, ip,
  1170. X        XV_HELP_DATA, "contool:other_address",
  1171. X        XV_X, 116,
  1172. X        XV_Y, 69,
  1173. X        PANEL_VALUE_DISPLAY_LENGTH, 46,
  1174. X        PANEL_VALUE_STORED_LENGTH, 256,
  1175. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  1176. X        PANEL_READ_ONLY, FALSE,
  1177. X        NULL);
  1178. X    return obj;
  1179. }
  1180. X
  1181. /*
  1182. X * Create object `message' in the specified instance.
  1183. X */
  1184. XXv_opaque
  1185. contool_mail_message_create(ip, owner)
  1186. X    contool_mail_objects    *ip;
  1187. X    Xv_opaque        owner;
  1188. {
  1189. X    Xv_opaque    obj;
  1190. X    
  1191. X    obj = xv_create(owner, TEXTSW,
  1192. X        XV_KEY_DATA, INSTANCE, ip,
  1193. X        XV_HELP_DATA, "contool:message",
  1194. X        XV_X, 0,
  1195. X        XV_Y, (int)xv_get(ip->mail_controls, XV_Y) +
  1196. X              (int)xv_get(ip->mail_controls, XV_HEIGHT),
  1197. X        XV_WIDTH, WIN_EXTEND_TO_EDGE,
  1198. X        XV_HEIGHT, 188,
  1199. X        OPENWIN_SHOW_BORDERS, TRUE,
  1200. X        NULL);
  1201. X    return obj;
  1202. }
  1203. X
  1204. /*
  1205. X * Create object `mail_controls1' in the specified instance.
  1206. X */
  1207. XXv_opaque
  1208. contool_mail_mail_controls1_create(ip, owner)
  1209. X    contool_mail_objects    *ip;
  1210. X    Xv_opaque        owner;
  1211. {
  1212. X    Xv_opaque    obj;
  1213. X    
  1214. X    obj = xv_create(owner, PANEL,
  1215. X        XV_KEY_DATA, INSTANCE, ip,
  1216. X        XV_HELP_DATA, "contool:mail_controls1",
  1217. X        XV_X, 0,
  1218. X        XV_Y, (int)xv_get(ip->message, XV_Y) +
  1219. X              (int)xv_get(ip->message, XV_HEIGHT),
  1220. X        XV_WIDTH, WIN_EXTEND_TO_EDGE,
  1221. X        XV_HEIGHT, WIN_EXTEND_TO_EDGE,
  1222. X        WIN_BORDER, FALSE,
  1223. X        NULL);
  1224. X    return obj;
  1225. }
  1226. X
  1227. /*
  1228. X * Create object `accept_send' in the specified instance.
  1229. X */
  1230. XXv_opaque
  1231. contool_mail_accept_send_create(ip, owner)
  1232. X    contool_mail_objects    *ip;
  1233. X    Xv_opaque        owner;
  1234. {
  1235. X    extern void        send_mail();
  1236. X    Xv_opaque    obj;
  1237. X    
  1238. X    obj = xv_create(owner, PANEL_BUTTON,
  1239. X        XV_KEY_DATA, INSTANCE, ip,
  1240. X        XV_HELP_DATA, "contool:accept_send",
  1241. X        XV_X, 229,
  1242. X        XV_Y, 18,
  1243. X        PANEL_LABEL_STRING, "Send",
  1244. X        PANEL_NOTIFY_PROC, send_mail,
  1245. X        NULL);
  1246. X    return obj;
  1247. }
  1248. X
  1249. /*
  1250. X * Initialize an instance of object `message_archive'.
  1251. X */
  1252. contool_message_archive_objects *
  1253. contool_message_archive_objects_initialize(ip, owner)
  1254. X    contool_message_archive_objects    *ip;
  1255. X    Xv_opaque    owner;
  1256. {
  1257. X    if (!ip && !(ip = (contool_message_archive_objects *) calloc(1, sizeof (contool_message_archive_objects))))
  1258. X        return (contool_message_archive_objects *) NULL;
  1259. X    if (!ip->message_archive)
  1260. X        ip->message_archive = contool_message_archive_message_archive_create(ip, owner);
  1261. X    if (!ip->archive_controls)
  1262. X        ip->archive_controls = contool_message_archive_archive_controls_create(ip, ip->message_archive);
  1263. X    if (!ip->clear)
  1264. X        ip->clear = contool_message_archive_clear_create(ip, ip->archive_controls);
  1265. X    if (!ip->print)
  1266. X        ip->print = contool_message_archive_print_create(ip, ip->archive_controls);
  1267. X    if (!ip->archive)
  1268. X        ip->archive = contool_message_archive_archive_create(ip, ip->message_archive);
  1269. X    return ip;
  1270. }
  1271. X
  1272. /*
  1273. X * Create object `message_archive' in the specified instance.
  1274. X */
  1275. XXv_opaque
  1276. contool_message_archive_message_archive_create(ip, owner)
  1277. X    contool_message_archive_objects    *ip;
  1278. X    Xv_opaque        owner;
  1279. {
  1280. X    Xv_opaque    obj;
  1281. X    
  1282. X    obj = xv_create(owner, FRAME_CMD,
  1283. X        XV_KEY_DATA, INSTANCE, ip,
  1284. X        XV_WIDTH, 575,
  1285. X        XV_HEIGHT, 246,
  1286. X        XV_LABEL, "Contool: Message Archive",
  1287. X        XV_SHOW, FALSE,
  1288. X        FRAME_SHOW_FOOTER, TRUE,
  1289. X        FRAME_SHOW_RESIZE_CORNER, TRUE,
  1290. X        FRAME_CMD_PUSHPIN_IN, TRUE,
  1291. X        NULL);
  1292. X    xv_set(xv_get(obj, FRAME_CMD_PANEL), WIN_SHOW, FALSE, NULL);
  1293. X    return obj;
  1294. }
  1295. X
  1296. /*
  1297. X * Create object `archive_controls' in the specified instance.
  1298. X */
  1299. XXv_opaque
  1300. contool_message_archive_archive_controls_create(ip, owner)
  1301. X    contool_message_archive_objects    *ip;
  1302. X    Xv_opaque        owner;
  1303. {
  1304. X    Xv_opaque    obj;
  1305. X    
  1306. X    obj = xv_create(owner, PANEL,
  1307. X        XV_KEY_DATA, INSTANCE, ip,
  1308. X        XV_HELP_DATA, "contool:archive_controls",
  1309. X        XV_X, 0,
  1310. X        XV_Y, 0,
  1311. X        XV_WIDTH, WIN_EXTEND_TO_EDGE,
  1312. X        XV_HEIGHT, 32,
  1313. X        WIN_BORDER, FALSE,
  1314. X        NULL);
  1315. X    return obj;
  1316. }
  1317. X
  1318. /*
  1319. X * Create object `clear' in the specified instance.
  1320. X */
  1321. XXv_opaque
  1322. contool_message_archive_clear_create(ip, owner)
  1323. X    contool_message_archive_objects    *ip;
  1324. X    Xv_opaque        owner;
  1325. {
  1326. X    extern void        clear_archive();
  1327. X    Xv_opaque    obj;
  1328. X    
  1329. X    obj = xv_create(owner, PANEL_BUTTON,
  1330. X        XV_KEY_DATA, INSTANCE, ip,
  1331. X        XV_HELP_DATA, "contool:clear",
  1332. X        XV_X, 4,
  1333. X        XV_Y, 4,
  1334. X        PANEL_LABEL_STRING, "Clear",
  1335. X        PANEL_NOTIFY_PROC, clear_archive,
  1336. X        NULL);
  1337. X    return obj;
  1338. }
  1339. X
  1340. /*
  1341. X * Create object `print' in the specified instance.
  1342. X */
  1343. XXv_opaque
  1344. contool_message_archive_print_create(ip, owner)
  1345. X    contool_message_archive_objects    *ip;
  1346. X    Xv_opaque        owner;
  1347. {
  1348. X    extern void        print_archive();
  1349. X    Xv_opaque    obj;
  1350. X    
  1351. X    obj = xv_create(owner, PANEL_BUTTON,
  1352. X        XV_KEY_DATA, INSTANCE, ip,
  1353. X        XV_HELP_DATA, "contool:print",
  1354. X        XV_X, 63,
  1355. X        XV_Y, 4,
  1356. X        PANEL_LABEL_STRING, "Print",
  1357. X        PANEL_NOTIFY_PROC, print_archive,
  1358. X        NULL);
  1359. X    return obj;
  1360. }
  1361. X
  1362. /*
  1363. X * Create object `archive' in the specified instance.
  1364. X */
  1365. XXv_opaque
  1366. contool_message_archive_archive_create(ip, owner)
  1367. X    contool_message_archive_objects    *ip;
  1368. X    Xv_opaque        owner;
  1369. {
  1370. X    Xv_opaque    obj;
  1371. X    
  1372. X    obj = xv_create(owner, TEXTSW,
  1373. X        XV_KEY_DATA, INSTANCE, ip,
  1374. X        XV_HELP_DATA, "contool:archive",
  1375. X        XV_X, 0,
  1376. X        XV_Y, 27,
  1377. X        XV_WIDTH, WIN_EXTEND_TO_EDGE,
  1378. X        XV_HEIGHT, WIN_EXTEND_TO_EDGE,
  1379. X        OPENWIN_SHOW_BORDERS, TRUE,
  1380. X        NULL);
  1381. X    return obj;
  1382. }
  1383. X
  1384. SHAR_EOF
  1385. echo 'File contool_ui.c is complete' &&
  1386. chmod 0664 contool_ui.c ||
  1387. echo 'restore of contool_ui.c failed'
  1388. Wc_c="`wc -c < 'contool_ui.c'`"
  1389. test 62728 -eq "$Wc_c" ||
  1390.     echo 'contool_ui.c: original size 62728, current size' "$Wc_c"
  1391. rm -f _shar_wnt_.tmp
  1392. fi
  1393. # ============= error.c ==============
  1394. if test -f 'error.c' -a X"$1" != X"-c"; then
  1395.     echo 'x - skipping error.c (File already exists)'
  1396.     rm -f _shar_wnt_.tmp
  1397. else
  1398. > _shar_wnt_.tmp
  1399. echo 'x - extracting error.c (Text)'
  1400. sed 's/^X//' << 'SHAR_EOF' > 'error.c' &&
  1401. /************************************************************************/
  1402. /*    Copyright 1987-1992 by Chuck Musciano and Harris Corporation     */
  1403. /*                                    */
  1404. /*    Full ownership of this software, and all rights pertaining to     */
  1405. /*    the for-profit distribution of this software, are retained by     */
  1406. /*    Chuck Musciano and Harris Corporation.  You are permitted to     */
  1407. /*    use this software without fee.  This software is provided "as     */
  1408. /*    is" without express or implied warranty.  You may redistribute     */
  1409. /*    this software, provided that this copyright notice is retained,    */
  1410. /*    and that the software is not distributed for profit.  If you     */
  1411. /*    wish to use this software in a profit-making venture, you must     */
  1412. /*    first license this code and its underlying technology from     */
  1413. /*    Harris Corporation.                         */
  1414. /*                                    */
  1415. /*    Bottom line: you can have this software, you can use it, you     */
  1416. /*    can give it away.  You just can't sell any or all parts of it     */
  1417. /*    without prior permission from Harris Corporation.         */
  1418. /************************************************************************/
  1419. X
  1420. /************************************************************************/
  1421. /*                                    */
  1422. /*    error.c        handle error messages                */
  1423. /*                                    */
  1424. /************************************************************************/
  1425. X
  1426. #include    <stdio.h>
  1427. #include    <xview/xview.h>
  1428. #include    <xview/notice.h>
  1429. X
  1430. #include    "manifest.h"
  1431. #include    "contool_ui.h"
  1432. X
  1433. PUBLIC    contool_base_objects    *contool_base;
  1434. X
  1435. /************************************************************************/
  1436. EXPORT    void    error(a, b, c, d, e, f)
  1437. X
  1438. char    *a, *b, *c, *d, *e, *f;
  1439. X
  1440. {    char    buf[1024];
  1441. X
  1442. X    sprintf(buf, a, b, c, d, e, f);
  1443. X    notice_prompt(contool_base->base, NULL,
  1444. X                 NOTICE_MESSAGE_STRINGS, buf, 0,
  1445. X                 NOTICE_BUTTON_YES, "OK",
  1446. X              0);
  1447. }
  1448. X
  1449. /************************************************************************/
  1450. EXPORT    void    abend(a, b, c, d, e, f)
  1451. X
  1452. char    *a, *b, *c, *d, *e, *f;
  1453. X
  1454. {    char    buf[1024];
  1455. X
  1456. X    fprintf(stderr, a, b, c, d, e, f);
  1457. X    fprintf(stderr, "\n");
  1458. X    exit(1);
  1459. }
  1460. SHAR_EOF
  1461. chmod 0644 error.c ||
  1462. echo 'restore of error.c failed'
  1463. Wc_c="`wc -c < 'error.c'`"
  1464. test 2036 -eq "$Wc_c" ||
  1465.     echo 'error.c: original size 2036, current size' "$Wc_c"
  1466. rm -f _shar_wnt_.tmp
  1467. fi
  1468. # ============= expand.c ==============
  1469. if test -f 'expand.c' -a X"$1" != X"-c"; then
  1470.     echo 'x - skipping expand.c (File already exists)'
  1471.     rm -f _shar_wnt_.tmp
  1472. else
  1473. > _shar_wnt_.tmp
  1474. echo 'x - extracting expand.c (Text)'
  1475. sed 's/^X//' << 'SHAR_EOF' > 'expand.c' &&
  1476. /************************************************************************/
  1477. /*    Copyright 1987-1992 by Chuck Musciano and Harris Corporation     */
  1478. /*                                    */
  1479. /*    Full ownership of this software, and all rights pertaining to     */
  1480. /*    the for-profit distribution of this software, are retained by     */
  1481. /*    Chuck Musciano and Harris Corporation.  You are permitted to     */
  1482. /*    use this software without fee.  This software is provided "as     */
  1483. /*    is" without express or implied warranty.  You may redistribute     */
  1484. /*    this software, provided that this copyright notice is retained,    */
  1485. /*    and that the software is not distributed for profit.  If you     */
  1486. /*    wish to use this software in a profit-making venture, you must     */
  1487. /*    first license this code and its underlying technology from     */
  1488. /*    Harris Corporation.                         */
  1489. /*                                    */
  1490. /*    Bottom line: you can have this software, you can use it, you     */
  1491. /*    can give it away.  You just can't sell any or all parts of it     */
  1492. /*    without prior permission from Harris Corporation.         */
  1493. /************************************************************************/
  1494. X
  1495. #include    <sys/types.h>
  1496. #include    <sys/dir.h>
  1497. #include    <pwd.h>
  1498. X
  1499. #include    "manifest.h"
  1500. X
  1501. PUBLIC    char    *rindex(), *index();
  1502. X
  1503. /************************************************************************/
  1504. PRIVATE    char    *root_path(path)
  1505. X
  1506. char    *path;
  1507. X
  1508. {    char    *p;
  1509. X
  1510. X    if (p = rindex(path, '/'))
  1511. X       if (p == path)
  1512. X          p[1] = '\0';
  1513. X       else
  1514. X          *p = '\0';
  1515. X    else
  1516. X       *path = '\0';
  1517. X    return(path);
  1518. }
  1519. X
  1520. /************************************************************************/
  1521. PRIVATE    char    *last_node(path)
  1522. X
  1523. char    *path;
  1524. X
  1525. {    char    *p;
  1526. X
  1527. X    return((p = rindex(path, '/'))? p + 1 : path);
  1528. }
  1529. X
  1530. /************************************************************************/
  1531. EXPORT    char    *expand_filename(path)
  1532. X
  1533. char    *path;
  1534. X
  1535. {    static    char    s[1024];
  1536. X    char    pattern[1024], candidate[1024], *p,*q;
  1537. X    DIR    *dir;
  1538. X    struct    direct *dp;
  1539. X    struct    passwd    *pw;
  1540. X
  1541. X    strcpy(s, path);
  1542. X    if (*path == '~')
  1543. X       if (path[1] == '/' || path[1] == '\0') {
  1544. X          strcpy(s, getenv("HOME"));
  1545. X          strcat(s, path + 1);
  1546. X          }
  1547. X       else {
  1548. X          if ((p = index(path, '/')) != NULL)
  1549. X             *p = '\0';
  1550. X          if ((pw = getpwnam(path + 1)) != NULL) {
  1551. X             strcpy(s, pw->pw_dir);
  1552. X             if (p != NULL) {
  1553. X                strcat(s, "/");
  1554. X                strcat(s, p + 1);
  1555. X                }
  1556. X             }
  1557. X          else
  1558. X             return(NULL);
  1559. X          }
  1560. X    strcpy(pattern, last_node(s));
  1561. X    if (*pattern == '\0')
  1562. X       return(s);
  1563. X    root_path(s);
  1564. X    candidate[0] = '\0';
  1565. X    if (*s == '\0')
  1566. X       strcpy(s, ".");
  1567. X    if ((dir = opendir(s)) == NULL) {
  1568. X       strcpy(s, path);
  1569. X       return(s);
  1570. X       }
  1571. X    while ((dp = readdir(dir)) != NULL)
  1572. X       if (strncmp(dp->d_name, pattern, strlen(pattern)) == 0)
  1573. X          if (*candidate == '\0')
  1574. X             strcpy(candidate, dp->d_name);
  1575. X          else {
  1576. X             for (p = candidate, q = dp->d_name; *p == *q; p++, q++)
  1577. X                ;
  1578. X             *p = '\0';
  1579. X             }
  1580. X    closedir(dir);
  1581. X    if (*candidate == '\0')
  1582. X       return(NULL);
  1583. X    else {
  1584. X       if (strcmp(s, ".") == 0)
  1585. X          *s = '\0';
  1586. X       else if (s[strlen(s) - 1] != '/')
  1587. X          strcat(s, "/");
  1588. X       strcat(s, candidate);
  1589. X       }
  1590. X    return(s);
  1591. }
  1592. SHAR_EOF
  1593. chmod 0644 expand.c ||
  1594. echo 'restore of expand.c failed'
  1595. Wc_c="`wc -c < 'expand.c'`"
  1596. test 3112 -eq "$Wc_c" ||
  1597.     echo 'expand.c: original size 3112, current size' "$Wc_c"
  1598. rm -f _shar_wnt_.tmp
  1599. fi
  1600. # ============= filename_completion.c ==============
  1601. if test -f 'filename_completion.c' -a X"$1" != X"-c"; then
  1602.     echo 'x - skipping filename_completion.c (File already exists)'
  1603.     rm -f _shar_wnt_.tmp
  1604. else
  1605. > _shar_wnt_.tmp
  1606. echo 'x - extracting filename_completion.c (Text)'
  1607. sed 's/^X//' << 'SHAR_EOF' > 'filename_completion.c' &&
  1608. /************************************************************************/
  1609. /*    Copyright 1987-1992 by Chuck Musciano and Harris Corporation     */
  1610. /*                                    */
  1611. /*    Full ownership of this software, and all rights pertaining to     */
  1612. /*    the for-profit distribution of this software, are retained by     */
  1613. /*    Chuck Musciano and Harris Corporation.  You are permitted to     */
  1614. /*    use this software without fee.  This software is provided "as     */
  1615. /*    is" without express or implied warranty.  You may redistribute     */
  1616. /*    this software, provided that this copyright notice is retained,    */
  1617. /*    and that the software is not distributed for profit.  If you     */
  1618. /*    wish to use this software in a profit-making venture, you must     */
  1619. /*    first license this code and its underlying technology from     */
  1620. /*    Harris Corporation.                         */
  1621. /*                                    */
  1622. /*    Bottom line: you can have this software, you can use it, you     */
  1623. /*    can give it away.  You just can't sell any or all parts of it     */
  1624. /*    without prior permission from Harris Corporation.         */
  1625. /************************************************************************/
  1626. X
  1627. /************************************************************************/
  1628. /*                                    */
  1629. /*    filename_completion.c    completion handler for text items    */
  1630. /*                                    */
  1631. /************************************************************************/
  1632. X
  1633. #include    <stdio.h>
  1634. #include    <sys/param.h>
  1635. #include    <sys/types.h>
  1636. #include    <xview/xview.h>
  1637. #include    <xview/panel.h>
  1638. X
  1639. #include    "manifest.h"
  1640. X
  1641. /************************************************************************/
  1642. EXPORT    Panel_setting    filename_completion(item, event)
  1643. X
  1644. Panel_item    item;
  1645. Event        *event;
  1646. X
  1647. {    char    *p, *expand_filename();
  1648. X
  1649. X    switch (event_action(event)) {
  1650. X       case '\n' :
  1651. X       case '\r' : 
  1652. X       case ' '  : if ((p = expand_filename((char *) xv_get(item, PANEL_VALUE))) == NULL)
  1653. X                 window_bell(xv_get(item, XV_OWNER));
  1654. X                  else
  1655. X                     xv_set(item, PANEL_VALUE, p, 0);
  1656. X                  event_set_id(event, '\n');
  1657. X                  return(PANEL_NONE);
  1658. X       case '\t' : return(event_shift_is_down(event)? PANEL_PREVIOUS : PANEL_NEXT);
  1659. X       default   : return(panel_text_notify(item, event));
  1660. X       }
  1661. }
  1662. SHAR_EOF
  1663. chmod 0644 filename_completion.c ||
  1664. echo 'restore of filename_completion.c failed'
  1665. Wc_c="`wc -c < 'filename_completion.c'`"
  1666. test 2146 -eq "$Wc_c" ||
  1667.     echo 'filename_completion.c: original size 2146, current size' "$Wc_c"
  1668. rm -f _shar_wnt_.tmp
  1669. fi
  1670. # ============= filters.c ==============
  1671. if test -f 'filters.c' -a X"$1" != X"-c"; then
  1672.     echo 'x - skipping filters.c (File already exists)'
  1673.     rm -f _shar_wnt_.tmp
  1674. else
  1675. > _shar_wnt_.tmp
  1676. echo 'x - extracting filters.c (Text)'
  1677. sed 's/^X//' << 'SHAR_EOF' > 'filters.c' &&
  1678. /************************************************************************/
  1679. /*    Copyright 1987-1992 by Chuck Musciano and Harris Corporation     */
  1680. /*                                    */
  1681. /*    Full ownership of this software, and all rights pertaining to     */
  1682. /*    the for-profit distribution of this software, are retained by     */
  1683. /*    Chuck Musciano and Harris Corporation.  You are permitted to     */
  1684. /*    use this software without fee.  This software is provided "as     */
  1685. /*    is" without express or implied warranty.  You may redistribute     */
  1686. /*    this software, provided that this copyright notice is retained,    */
  1687. /*    and that the software is not distributed for profit.  If you     */
  1688. /*    wish to use this software in a profit-making venture, you must     */
  1689. /*    first license this code and its underlying technology from     */
  1690. /*    Harris Corporation.                         */
  1691. /*                                    */
  1692. /*    Bottom line: you can have this software, you can use it, you     */
  1693. /*    can give it away.  You just can't sell any or all parts of it     */
  1694. /*    without prior permission from Harris Corporation.         */
  1695. /************************************************************************/
  1696. X
  1697. /************************************************************************/
  1698. /*                                    */
  1699. /*    filters.c    contool filters dialog manager            */
  1700. /*                                    */
  1701. /************************************************************************/
  1702. X
  1703. #include    <stdio.h>
  1704. #include    <sys/param.h>
  1705. #include    <sys/types.h>
  1706. #include    <xview/xview.h>
  1707. #include    <xview/panel.h>
  1708. #include    <xview/notice.h>
  1709. #include    <xview/xv_xrect.h>
  1710. X
  1711. #include    "manifest.h"
  1712. #include    "contool.h"
  1713. #include    "contool_ui.h"
  1714. X
  1715. EXPORT    Filter    *filters = NULL;
  1716. X
  1717. PUBLIC    contool_base_objects    *contool_base;
  1718. X
  1719. PRIVATE    short    single_bits[] = {
  1720. #include    "images/single.icon"
  1721. X              };
  1722. X
  1723. PRIVATE    short    range_bits[] = {
  1724. #include    "images/range.icon"
  1725. X              };
  1726. X
  1727. PRIVATE    short    empty_bits[] = {
  1728. #include    "images/empty.icon"
  1729. X              };
  1730. X
  1731. PRIVATE    Filter    *edit_set = NULL, *clipboard = NULL;
  1732. PRIVATE    contool_filters_objects    *contool_filters = NULL;
  1733. PRIVATE    Server_image    single, range, empty;
  1734. X
  1735. /************************************************************************/
  1736. PRIVATE    int    selection_count()
  1737. X
  1738. {    int    i, s, total;
  1739. X
  1740. X    total = (int) xv_get(contool_filters->filter_list, PANEL_LIST_NROWS);
  1741. X    for (i = s = 0; i < total; i++)
  1742. X       if (xv_get(contool_filters->filter_list, PANEL_LIST_SELECTED, i))
  1743. X          s++;
  1744. X    return(s);
  1745. }
  1746. X
  1747. /************************************************************************/
  1748. PRIVATE    int    curr_selection()
  1749. X
  1750. {    int    i, total;
  1751. X
  1752. X    for (i = 0, total = (int) xv_get(contool_filters->filter_list, PANEL_LIST_NROWS); i < total; i++)
  1753. X       if (xv_get(contool_filters->filter_list, PANEL_LIST_SELECTED, i))
  1754. X          break;
  1755. X    if (i >= total)
  1756. X       fprintf(stderr, "No item selected!\n");
  1757. X    return(i);
  1758. }
  1759. X
  1760. /************************************************************************/
  1761. PRIVATE    Filter    *duplicate_filter(f)
  1762. X
  1763. Filter    *f;
  1764. X
  1765. {    Filter    *new;
  1766. X
  1767. X    new = (Filter *) malloc(sizeof(Filter));
  1768. X    *new = *f;
  1769. X    new->start = strsave(f->start);
  1770. X    new->stop = strsave(f->stop);
  1771. X    compile_exp(new, new->start, new->stop);
  1772. X    new->command = strsave(f->command);
  1773. X    new->comment = strsave(f->comment);
  1774. X    new->next = NULL;
  1775. X    return(new);
  1776. }
  1777. X
  1778. /************************************************************************/
  1779. PRIVATE    Filter    *duplicate_list(list)
  1780. X
  1781. Filter    *list;
  1782. X
  1783. {    Filter    *f, *head = NULL, *curr;
  1784. X
  1785. X    for (f = list; f; f = f->next)
  1786. X       if (head == NULL)
  1787. X          head = curr = duplicate_filter(f);
  1788. X       else {
  1789. X          curr->next = duplicate_filter(f);
  1790. X          curr = curr->next;
  1791. X          }
  1792. X    return(head);
  1793. }
  1794. X
  1795. /************************************************************************/
  1796. SHAR_EOF
  1797. true || echo 'restore of filters.c failed'
  1798. fi
  1799. echo 'End of  part 3'
  1800. echo 'File filters.c is continued in part 4'
  1801. echo 4 > _shar_seq_.tmp
  1802. exit 0
  1803. -- 
  1804. --
  1805. Molecular Simulations, Inc.            mail: dcmartin@msi.com
  1806. 796 N. Pastoria Avenue                uucp: uunet!dcmartin
  1807. Sunnyvale, California 94086            at&t: 408/522-9236
  1808.