home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / x / volume16 / contol3a / part02 < prev    next >
Encoding:
Text File  |  1992-03-04  |  45.1 KB  |  1,765 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: v16i101: contool 3.2A (Final Release), Part02/07
  5. Message-ID: <1992Mar5.214735.9479@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:35 GMT
  11. Approved: dcmartin@msi.com
  12.  
  13. Submitted-by: Chuck Musciano <chuck@trantor.harris-atd.com>
  14. Posting-number: Volume 16, Issue 101
  15. Archive-name: contool-3.2a/part02
  16.  
  17. #!/bin/sh
  18. # this is Part.02 (part 2 of a multipart archive)
  19. # do not concatenate these parts, unpack them in order with /bin/sh
  20. # file contool.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" != 2; 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.c'
  36. else
  37. echo 'x - continuing file contool.c'
  38. sed 's/^X//' << 'SHAR_EOF' >> 'contool.c' &&
  39. X
  40. /************************************************************************/
  41. PRIVATE    do_insertion(buf, len)
  42. X
  43. char    *buf;
  44. int    len;
  45. X
  46. {    int    sw_len;
  47. X    Textsw_index    first, last;
  48. X    char    *temp;
  49. X
  50. X    while ((int) xv_get(contool_base->display, TEXTSW_LENGTH) + len > defaults.max_size) {
  51. X       sw_len = (int) xv_get(contool_base->display, TEXTSW_LENGTH);
  52. X       first = 1;
  53. X       last = TEXTSW_INFINITY;
  54. X       if (textsw_find_bytes(contool_base->display, &first, &last, "\n<<<", 4, 0) == -1 || first == 0)
  55. X          if (textsw_find_bytes(contool_base->display, &first, &last, "\n", 1, 0) == -1 || first == 0)
  56. X             first = (defaults.delete_amount < sw_len)? defaults.delete_amount : sw_len;
  57. X       temp = (char *) malloc((unsigned) sw_len);
  58. X       xv_get(contool_base->display, TEXTSW_CONTENTS, 0, temp, sw_len);
  59. X       textsw_reset(contool_base->display, 0, 0);
  60. X       textsw_insert(contool_base->display, temp + first, sw_len - first);
  61. X       free(temp);
  62. X       }
  63. X    xv_set(contool_base->display, TEXTSW_INSERTION_POINT, TEXTSW_INFINITY, 0);
  64. X    textsw_insert(contool_base->display, buf, len);
  65. }
  66. X
  67. /************************************************************************/
  68. PRIVATE    time_stamp()
  69. X
  70. {    int    t, pos;
  71. X    char    buf[5];
  72. X
  73. X       t = time(0);
  74. X       if (t - old_time >= defaults.stamp_resolution) {
  75. X          xv_set(contool_base->display, TEXTSW_INSERTION_POINT, TEXTSW_INFINITY, 0);
  76. X          pos = (int) xv_get(contool_base->display, TEXTSW_LENGTH);
  77. X          if (pos != 0) {
  78. X             xv_get(contool_base->display, TEXTSW_CONTENTS, pos - 1, buf, 1);
  79. X             if (buf[0] != '\n')
  80. X                do_insertion("\n", 1);
  81. X             }
  82. X          do_insertion("\n<<< ", 5);
  83. X          do_insertion(ctime(&t), 24);
  84. X          do_insertion(" >>>\n", 5);
  85. X          old_time = t;
  86. X          }
  87. }
  88. X
  89. /************************************************************************/
  90. PRIVATE    Notify_value    input_func(me, fd)
  91. X
  92. int    *me;
  93. int    fd;
  94. X
  95. {    char    old_c, *s, *t, buf[1024];
  96. X    Filter    *f;
  97. X    int    count, do_blink = FALSE, do_open = FALSE;
  98. X    static    char    in_buf[INPUT_BUFFER_SIZE + 2];
  99. X    static    int    leftover = 0;
  100. X
  101. X    while ((count = read(fileno(master), in_buf + leftover, INPUT_BUFFER_SIZE - leftover)) >= 0) {
  102. X       if (count == 0 && slave == NULL)
  103. X          abend("%s: input source has reached EOF, exiting", program);
  104. X       in_buf[count + leftover] = '\0';
  105. X       leftover = 0;
  106. X       while (s = index(in_buf, '\015'))
  107. X          strcpy(s, s + 1);
  108. X       for (t = in_buf; *t; *s = old_c, t = s) {
  109. X          if (s = index(t, '\n')) {
  110. X             old_c = *++s;
  111. X             *s = '\0';
  112. X             }
  113. X          else {
  114. X             leftover = strlen(t);
  115. X             strcpy(in_buf, t);
  116. X             break;
  117. X             }
  118. X          if (!defaults.log_after)
  119. X             write_log(t);
  120. X          if (curr_filter == NULL) {
  121. X             load_filters();
  122. X             for (f = filters; f; f = f->next)
  123. X                if (f->start_re && match_exp(f->start_re, f->start_circf, t)) {
  124. X                   if (f->save) {
  125. X                      update_value(do_blink, f->flash);
  126. X                      update_value(beep_count, f->beep);
  127. X                      update_value(do_open, f->open);
  128. X                      if (f->stamp)
  129. X                         time_stamp();
  130. X                      do_insertion(t, strlen(t));
  131. X                      if (f->command) {
  132. X                         start_command(f->command);
  133. X                         continue_command(t);
  134. X                         if (f->stop == NULL)
  135. X                            end_command();
  136. X                         }
  137. X                      if (defaults.log_after && f->log)
  138. X                 write_log(t);
  139. X                      }
  140. X                   if (f->stop) {
  141. X                      curr_filter = f;
  142. X                      filter_timeout = f->timeout * 2;
  143. X                      sprintf(buf, "Filtering \"%s\"...", f->start);
  144. X                      xv_set(contool_base->base, FRAME_LEFT_FOOTER, buf, NULL);
  145. X                      }
  146. X                   break;
  147. X                   }
  148. X             if (f == NULL) {
  149. X                if (defaults.stamp)
  150. X                   time_stamp();
  151. X                if (defaults.command) {
  152. X                   start_command(defaults.command);
  153. X                   continue_command(t);
  154. X                   end_command();
  155. X                   }
  156. X            if (defaults.log_after && defaults.log)
  157. X                   write_log(t);
  158. X                do_insertion(t, strlen(t));
  159. X                update_value(do_blink, defaults.flash);
  160. X                update_value(do_open, defaults.open);
  161. X                update_value(beep_count, defaults.beep);
  162. X                }
  163. X             }
  164. X          else {
  165. X             if (curr_filter->save) {
  166. X                if (curr_filter->stamp)
  167. X                   time_stamp();
  168. X            if (defaults.log_after && curr_filter->log)
  169. X                   write_log(t);
  170. X            do_insertion(t, strlen(t));
  171. X            if (curr_filter->command)
  172. X               continue_command(t);
  173. X                }
  174. X             if (match_exp(curr_filter->stop_re, curr_filter->stop_circf, t)) {
  175. X                xv_set(contool_base->base, FRAME_LEFT_FOOTER, "", NULL);
  176. X                if (curr_filter->command)
  177. X                   end_command();
  178. X                curr_filter = NULL;
  179. X                }
  180. X             }
  181. X          }
  182. X       }
  183. X    xv_set(contool_base->display, TEXTSW_UPDATE_SCROLLBAR, 0);
  184. X    if (do_open)
  185. X       xv_set(contool_base->base, FRAME_CLOSED, FALSE, 0);
  186. X    if (do_blink)
  187. X       if (xv_get(contool_base->base, FRAME_CLOSED) && !blinking) {
  188. X          change_icon(bad, bad == default_bad_icon);
  189. X          xv_set(contool_base->base, WIN_SHOW, TRUE, 0);
  190. X          blinking = TRUE;
  191. X          bad_is_up = TRUE;
  192. X          notify_set_itimer_func(contool_base->base, blink_proc, ITIMER_REAL, &timer, NULL);
  193. X          }
  194. X    if (beep_count > 0 || blinking || filter_timeout > 0)
  195. X       notify_set_itimer_func(contool_base->base, blink_proc, ITIMER_REAL, &timer, NULL);
  196. X    return(NOTIFY_DONE);
  197. }
  198. X
  199. /************************************************************************/
  200. /*    Routines which parse options, create windows, and main()    */
  201. /************************************************************************/
  202. X
  203. /************************************************************************/
  204. PRIVATE    parse_options(argc, argv)
  205. X
  206. int    *argc;
  207. char    **argv;
  208. X
  209. {    char    *s, c, path[1024], *log_file = NULL, *p;
  210. X    int    log = FALSE, fd;
  211. X    static    char    cmdline[MAXPATHLEN + 10];
  212. X    struct    stat    sb;
  213. X
  214. X    sprintf(path, "%s/.contool", getenv("HOME"));
  215. X    filter_file = strsave(path);
  216. X
  217. X    cmdline[0] = NULL;
  218. X
  219. X    while ((c = getopt(argc, argv, "c:fi:lL:n?", &s)) != EOF)
  220. X       switch (c) {
  221. X          case 'c' : filter_file = expand_tilde(s);
  222. X                   explicit_filters = TRUE;
  223. X                 strcat(cmdline, " -c ");
  224. X             strcat(cmdline, s);
  225. X                   break;
  226. X          case 'f' : fork_into_background = TRUE;
  227. X                   strcat(cmdline, " -f");
  228. X                   break;
  229. X          case 'i' : fclose(master);
  230. X                   fclose(slave);
  231. X                   slave = NULL;
  232. X                   if (strcmp(s, "-") == 0)
  233. X                      master = stdin;
  234. X                   else {
  235. X                      p = expand_tilde(s);
  236. X                      if (stat(p, &sb) != 0)
  237. X                         abend("%s: cannot stat %s: %s", program, s, sys_errlist[errno]);
  238. X                      else if ((sb.st_mode & S_IFMT) != S_IFCHR && (sb.st_mode & S_IFMT) != S_IFIFO)
  239. X                         abend("%s: %s is not a FIFO or character special device", program, s);
  240. X                      else if ((fd = open(p, O_RDONLY | O_NDELAY)) < 0)
  241. X                         abend("%s: cannot open %s for reading: %s", program, s, sys_errlist[errno]);
  242. X                      else if ((master = fdopen(fd, "r")) == NULL)
  243. X                         abend("%s: cannot convert descriptor for %s to stream: %s", program, s, sys_errlist[errno]);
  244. X                      }
  245. X                   strcat(cmdline, " -i ");
  246. X                   strcat(cmdline, s);
  247. X                   break;
  248. X          case 'l' : log = TRUE;
  249. X                 strcat(cmdline, " -l");
  250. X                   break;
  251. X          case 'L' : log_file = expand_tilde(s);
  252. X                 strcat(cmdline, " -L ");
  253. X             strcat(cmdline, s);
  254. X                   break;
  255. X          case 'n' : no_console = TRUE;
  256. X                 strcat(cmdline, " -n");
  257. X                   break;
  258. X          case '?' : fprintf(stderr, ct_usage);
  259. X                   exit(0);
  260. X                   break;
  261. X          default  : fprintf(stderr, ct_usage);
  262. X                     exit(1);
  263. X          }
  264. X
  265. X    if (strlen(cmdline) > 0)
  266. X        xv_set(contool_base->base, WIN_CMD_LINE, cmdline, NULL);
  267. X
  268. X    if (lex_init(filter_file)) {
  269. X       yyparse();
  270. X       if (parsed_defaults)
  271. X          defaults = *parsed_defaults;
  272. X       if (log_file)
  273. X          defaults.log_file = log_file;
  274. X       if (log)
  275. X          enable_logging();
  276. X       adjust_window_limit();
  277. X       }
  278. X    else if (explicit_filters)
  279. X       error("Could not read configuration file %s", filter_file);
  280. }
  281. X
  282. /************************************************************************/
  283. main(argc, argv)
  284. X
  285. int    argc;
  286. char    **argv;
  287. X
  288. {    char    buf[1024], *p, *path, *open_psuedo_tty();
  289. X    int    i;
  290. X    XWindowAttributes    attr;
  291. X    XClassHint    hints;
  292. X
  293. X    program = strsave(argv[0]);
  294. X
  295. X    path = open_psuedo_tty(&master, "r", &slave, "w");
  296. X    if (master == NULL)
  297. X       abend("%s: couldn't open any psuedo-tty", program);
  298. X    if (slave == NULL)
  299. X       abend("%s: couldn't open slave side of %s", program, path);
  300. X
  301. X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, 0);
  302. X    INSTANCE = xv_unique_key();
  303. X
  304. X    contool_base = contool_base_objects_initialize(NULL, NULL);
  305. X    default_good_icon  = (Server_image) xv_create(NULL, SERVER_IMAGE,
  306. X                             XV_WIDTH, 64,
  307. X                             XV_HEIGHT, 64,
  308. X                             SERVER_IMAGE_BITS, good_bits,
  309. X                              NULL);
  310. X    default_bad_icon   = (Server_image) xv_create(NULL, SERVER_IMAGE,
  311. X                             XV_WIDTH, 64,
  312. X                             XV_HEIGHT, 64,
  313. X                             SERVER_IMAGE_BITS, bad_bits,
  314. X                              NULL);
  315. X    default_flash_icon = (Server_image) xv_create(NULL, SERVER_IMAGE,
  316. X                             XV_WIDTH, 64,
  317. X                             XV_HEIGHT, 64,
  318. X                             SERVER_IMAGE_BITS, flash_bits,
  319. X                              NULL);
  320. X    icon_mask          = (Server_image) xv_create(NULL, SERVER_IMAGE,
  321. X                             XV_WIDTH, 64,
  322. X                             XV_HEIGHT, 64,
  323. X                             SERVER_IMAGE_BITS, mask_bits,
  324. X                              NULL);
  325. X    disable_logging(contool_base);
  326. X
  327. X    XGetWindowAttributes(xv_get(contool_base->base, XV_DISPLAY), xv_get(xv_get(contool_base->base, XV_ROOT), XV_XID), &attr);
  328. X    masking_works = (attr.depth > 1);
  329. X
  330. X    hints.res_class = "Contool";
  331. X    hints.res_name = (p = rindex(program, '/'))? p + 1 : program;
  332. X    XSetClassHint(xv_get(contool_base->base, XV_DISPLAY), xv_get(contool_base->base, XV_XID), &hints);
  333. X
  334. X    parse_options(&argc, argv);
  335. X
  336. X    i = fcntl(fileno(master), F_GETFL, 0);
  337. X    i |= FNDELAY;
  338. X    if (fcntl(fileno(master), F_SETFL, i) == -1)
  339. X       abend("%s: could not force %s to non-blocking i/o", program);
  340. X
  341. X    load_filters();
  342. X    update_icons();
  343. X    if (!no_console)
  344. X       acquire_console();
  345. X    if (fork_into_background)
  346. X       if (fork() != 0)
  347. X          exit(0);
  348. X
  349. X    notify_set_input_func(contool_base->base, input_func, fileno(master));
  350. X    notify_interpose_destroy_func(contool_base->base, destroy_proc);
  351. X    notify_interpose_event_func(contool_base->base, close_proc, NOTIFY_SAFE);
  352. X    notify_set_signal_func(contool_base->base, signal_proc, SIGUSR1, NOTIFY_SYNC);
  353. X    notify_set_signal_func(contool_base->base, signal_proc, SIGHUP, NOTIFY_SYNC);
  354. X
  355. X    xv_main_loop(contool_base->base);
  356. X    exit(0);
  357. }
  358. SHAR_EOF
  359. echo 'File contool.c is complete' &&
  360. chmod 0644 contool.c ||
  361. echo 'restore of contool.c failed'
  362. Wc_c="`wc -c < 'contool.c'`"
  363. test 23859 -eq "$Wc_c" ||
  364.     echo 'contool.c: original size 23859, current size' "$Wc_c"
  365. rm -f _shar_wnt_.tmp
  366. fi
  367. # ============= contool_ui.c ==============
  368. if test -f 'contool_ui.c' -a X"$1" != X"-c"; then
  369.     echo 'x - skipping contool_ui.c (File already exists)'
  370.     rm -f _shar_wnt_.tmp
  371. else
  372. > _shar_wnt_.tmp
  373. echo 'x - extracting contool_ui.c (Text)'
  374. sed 's/^X//' << 'SHAR_EOF' > 'contool_ui.c' &&
  375. /*
  376. X * contool_ui.c - User interface object initialization functions.
  377. X * This file was generated by `gxv' from `contool.G'.
  378. X * DO NOT EDIT BY HAND.
  379. X */
  380. X
  381. #include <stdio.h>
  382. #include <sys/param.h>
  383. #include <sys/types.h>
  384. #include <xview/xview.h>
  385. #include <xview/canvas.h>
  386. #include <xview/panel.h>
  387. #include <xview/scrollbar.h>
  388. #include <xview/svrimage.h>
  389. #include <xview/termsw.h>
  390. #include <xview/text.h>
  391. #include <xview/tty.h>
  392. #include <xview/xv_xrect.h>
  393. #include "contool_ui.h"
  394. X
  395. /*
  396. X * Create object `file_menu' in the specified instance.
  397. X */
  398. XXv_opaque
  399. contool_file_menu_create(ip, owner)
  400. X    caddr_t        *ip;
  401. X    Xv_opaque        owner;
  402. {
  403. X    extern Menu_item    popup_load_config();
  404. X    extern Menu_item    popup_save_config();
  405. X    extern Menu_item    start_logging();
  406. X    extern Menu_item    stop_logging();
  407. X    extern Menu_item    print_messages();
  408. X    extern Menu_item    popup_about_contool();
  409. X    Xv_opaque    obj;
  410. X    
  411. X    obj = xv_create(XV_NULL, MENU_COMMAND_MENU,
  412. X        XV_KEY_DATA, INSTANCE, ip,
  413. X        MENU_TITLE_ITEM, "File",
  414. X        MENU_ITEM,
  415. X            XV_KEY_DATA, INSTANCE, ip,
  416. X            MENU_STRING, "Load Configuration...",
  417. X            MENU_GEN_PROC, popup_load_config,
  418. X            NULL,
  419. X        MENU_ITEM,
  420. X            XV_KEY_DATA, INSTANCE, ip,
  421. X            MENU_STRING, "Save Configuration...",
  422. X            MENU_GEN_PROC, popup_save_config,
  423. X            NULL,
  424. X        MENU_ITEM,
  425. X            XV_KEY_DATA, INSTANCE, ip,
  426. X            MENU_STRING, "Start Logging",
  427. X            MENU_GEN_PROC, start_logging,
  428. X            NULL,
  429. X        MENU_ITEM,
  430. X            XV_KEY_DATA, INSTANCE, ip,
  431. X            MENU_STRING, "Stop Logging",
  432. X            MENU_GEN_PROC, stop_logging,
  433. X            NULL,
  434. X        MENU_ITEM,
  435. X            XV_KEY_DATA, INSTANCE, ip,
  436. X            MENU_STRING, "Print",
  437. X            MENU_GEN_PROC, print_messages,
  438. X            NULL,
  439. X        MENU_ITEM,
  440. X            XV_KEY_DATA, INSTANCE, ip,
  441. X            MENU_STRING, "About Contool...",
  442. X            MENU_GEN_PROC, popup_about_contool,
  443. X            NULL,
  444. X        MENU_DEFAULT, 2,
  445. X        MENU_GEN_PIN_WINDOW, (Xv_opaque) ip[0], "File",
  446. X        NULL);
  447. X    return obj;
  448. }
  449. X
  450. /*
  451. X * Create object `view_menu' in the specified instance.
  452. X */
  453. XXv_opaque
  454. contool_view_menu_create(ip, owner)
  455. X    caddr_t        *ip;
  456. X    Xv_opaque        owner;
  457. {
  458. X    extern Menu_item    popup_archive();
  459. X    extern Menu_item    save_to_archive();
  460. X    extern Menu_item    become_console();
  461. X    extern Menu_item    clear_messages();
  462. X    extern Menu_item    reset_filter();
  463. X    Xv_opaque    obj;
  464. X    
  465. X    obj = xv_create(XV_NULL, MENU_COMMAND_MENU,
  466. X        XV_KEY_DATA, INSTANCE, ip,
  467. X        MENU_TITLE_ITEM, "View",
  468. X        MENU_ITEM,
  469. X            XV_KEY_DATA, INSTANCE, ip,
  470. X            MENU_STRING, "Archive...",
  471. X            MENU_GEN_PROC, popup_archive,
  472. X            NULL,
  473. X        MENU_ITEM,
  474. X            XV_KEY_DATA, INSTANCE, ip,
  475. X            MENU_STRING, "Archive Messages",
  476. X            MENU_GEN_PROC, save_to_archive,
  477. X            NULL,
  478. X        MENU_ITEM,
  479. X            XV_KEY_DATA, INSTANCE, ip,
  480. X            MENU_STRING, "Become Console",
  481. X            MENU_GEN_PROC, become_console,
  482. X            NULL,
  483. X        MENU_ITEM,
  484. X            XV_KEY_DATA, INSTANCE, ip,
  485. X            MENU_STRING, "Clear Messages",
  486. X            MENU_GEN_PROC, clear_messages,
  487. X            NULL,
  488. X        MENU_ITEM,
  489. X            XV_KEY_DATA, INSTANCE, ip,
  490. X            MENU_STRING, "Reset Filter",
  491. X            MENU_GEN_PROC, reset_filter,
  492. X            NULL,
  493. X        MENU_DEFAULT, 4,
  494. X        MENU_GEN_PIN_WINDOW, (Xv_opaque) ip[0], "View",
  495. X        NULL);
  496. X    return obj;
  497. }
  498. X
  499. /*
  500. X * Create object `edit_menu' in the specified instance.
  501. X */
  502. XXv_opaque
  503. contool_edit_menu_create(ip, owner)
  504. X    caddr_t        *ip;
  505. X    Xv_opaque        owner;
  506. {
  507. X    extern Menu_item    edit_filters();
  508. X    extern Menu_item    edit_properties();
  509. X    Xv_opaque    obj;
  510. X    
  511. X    obj = xv_create(XV_NULL, MENU_COMMAND_MENU,
  512. X        XV_KEY_DATA, INSTANCE, ip,
  513. X        MENU_TITLE_ITEM, "Edit",
  514. X        MENU_ITEM,
  515. X            XV_KEY_DATA, INSTANCE, ip,
  516. X            MENU_STRING, "Filters...",
  517. X            MENU_GEN_PROC, edit_filters,
  518. X            NULL,
  519. X        MENU_ITEM,
  520. X            XV_KEY_DATA, INSTANCE, ip,
  521. X            MENU_STRING, "Properties...",
  522. X            MENU_GEN_PROC, edit_properties,
  523. X            NULL,
  524. X        MENU_DEFAULT, 2,
  525. X        MENU_GEN_PIN_WINDOW, (Xv_opaque) ip[0], "Edit",
  526. X        NULL);
  527. X    return obj;
  528. }
  529. X
  530. /*
  531. X * Create object `filter_insert_menu' in the specified instance.
  532. X */
  533. XXv_opaque
  534. contool_filter_insert_menu_create(ip, owner)
  535. X    caddr_t        *ip;
  536. X    Xv_opaque        owner;
  537. {
  538. X    extern Menu        filter_insert_handler();
  539. X    extern Menu_item    insert_at_top();
  540. X    extern Menu_item    insert_above();
  541. X    extern Menu_item    insert_below();
  542. X    extern Menu_item    insert_at_bottom();
  543. X    Xv_opaque    obj;
  544. X    
  545. X    obj = xv_create(XV_NULL, MENU_COMMAND_MENU,
  546. X        XV_KEY_DATA, INSTANCE, ip,
  547. X        MENU_GEN_PROC, filter_insert_handler,
  548. X        MENU_ITEM,
  549. X            XV_KEY_DATA, INSTANCE, ip,
  550. X            MENU_STRING, "At top",
  551. X            MENU_GEN_PROC, insert_at_top,
  552. X            NULL,
  553. X        MENU_ITEM,
  554. X            XV_KEY_DATA, INSTANCE, ip,
  555. X            MENU_STRING, "Above selection",
  556. X            MENU_GEN_PROC, insert_above,
  557. X            NULL,
  558. X        MENU_ITEM,
  559. X            XV_KEY_DATA, INSTANCE, ip,
  560. X            MENU_STRING, "Below selection",
  561. X            MENU_GEN_PROC, insert_below,
  562. X            NULL,
  563. X        MENU_ITEM,
  564. X            XV_KEY_DATA, INSTANCE, ip,
  565. X            MENU_STRING, "At bottom",
  566. X            MENU_GEN_PROC, insert_at_bottom,
  567. X            NULL,
  568. X        MENU_DEFAULT, 4,
  569. X        NULL);
  570. X    return obj;
  571. }
  572. X
  573. /*
  574. X * Create object `filter_paste_menu' in the specified instance.
  575. X */
  576. XXv_opaque
  577. contool_filter_paste_menu_create(ip, owner)
  578. X    caddr_t        *ip;
  579. X    Xv_opaque        owner;
  580. {
  581. X    extern Menu_item    paste_at_top();
  582. X    extern Menu_item    paste_above();
  583. X    extern Menu_item    paste_below();
  584. X    extern Menu_item    paste_at_bottom();
  585. X    Xv_opaque    obj;
  586. X    
  587. X    obj = xv_create(XV_NULL, MENU_COMMAND_MENU,
  588. X        XV_KEY_DATA, INSTANCE, ip,
  589. X        MENU_ITEM,
  590. X            XV_KEY_DATA, INSTANCE, ip,
  591. X            MENU_STRING, "At top",
  592. X            MENU_GEN_PROC, paste_at_top,
  593. X            NULL,
  594. X        MENU_ITEM,
  595. X            XV_KEY_DATA, INSTANCE, ip,
  596. X            MENU_STRING, "Above selection",
  597. X            MENU_GEN_PROC, paste_above,
  598. X            NULL,
  599. X        MENU_ITEM,
  600. X            XV_KEY_DATA, INSTANCE, ip,
  601. X            MENU_STRING, "Below selection",
  602. X            MENU_GEN_PROC, paste_below,
  603. X            NULL,
  604. X        MENU_ITEM,
  605. X            XV_KEY_DATA, INSTANCE, ip,
  606. X            MENU_STRING, "At bottom",
  607. X            MENU_GEN_PROC, paste_at_bottom,
  608. X            NULL,
  609. X        MENU_DEFAULT, 4,
  610. X        NULL);
  611. X    return obj;
  612. }
  613. X
  614. /*
  615. X * Create object `filter_edit_menu' in the specified instance.
  616. X */
  617. XXv_opaque
  618. contool_filter_edit_menu_create(ip, owner)
  619. X    caddr_t        *ip;
  620. X    Xv_opaque        owner;
  621. {
  622. X    extern Menu        filter_edit_handler();
  623. X    extern Menu_item    filter_cut();
  624. X    extern Menu_item    filter_copy();
  625. X    extern Menu_item    filter_paste();
  626. X    extern Menu_item    filter_delete();
  627. X    Xv_opaque    obj;
  628. X    
  629. X    obj = xv_create(XV_NULL, MENU_COMMAND_MENU,
  630. X        XV_KEY_DATA, INSTANCE, ip,
  631. X        MENU_GEN_PROC, filter_edit_handler,
  632. X        MENU_ITEM,
  633. X            XV_KEY_DATA, INSTANCE, ip,
  634. X            MENU_STRING, "Cut",
  635. X            MENU_GEN_PROC, filter_cut,
  636. X            NULL,
  637. X        MENU_ITEM,
  638. X            XV_KEY_DATA, INSTANCE, ip,
  639. X            MENU_STRING, "Copy",
  640. X            MENU_GEN_PROC, filter_copy,
  641. X            NULL,
  642. X        MENU_ITEM,
  643. X            XV_KEY_DATA, INSTANCE, ip,
  644. X            MENU_STRING, "Paste",
  645. X            MENU_GEN_PROC, filter_paste,
  646. X            MENU_PULLRIGHT, contool_filter_paste_menu_create(ip, NULL),
  647. X            NULL,
  648. X        MENU_ITEM,
  649. X            XV_KEY_DATA, INSTANCE, ip,
  650. X            MENU_STRING, "Delete",
  651. X            MENU_GEN_PROC, filter_delete,
  652. X            NULL,
  653. X        MENU_DEFAULT, 1,
  654. X        NULL);
  655. X    return obj;
  656. }
  657. X
  658. /*
  659. X * Create object `address_menu' in the specified instance.
  660. X */
  661. XXv_opaque
  662. contool_address_menu_create(ip, owner)
  663. X    caddr_t        *ip;
  664. X    Xv_opaque        owner;
  665. {
  666. X    extern Menu_item    handle_address();
  667. X    extern Menu_item    handle_address();
  668. X    extern Menu_item    handle_address();
  669. X    Xv_opaque    obj;
  670. X    
  671. X    obj = xv_create(XV_NULL, MENU_CHOICE_MENU,
  672. X        XV_KEY_DATA, INSTANCE, ip,
  673. X        MENU_ITEM,
  674. X            XV_KEY_DATA, INSTANCE, ip,
  675. X            MENU_STRING, "chuck@trantor.harris-atd.com",
  676. X            MENU_GEN_PROC, handle_address,
  677. X            NULL,
  678. X        MENU_ITEM,
  679. X            XV_KEY_DATA, INSTANCE, ip,
  680. X            MENU_STRING, "uunet!trantor.harris-atd.com!chuck",
  681. X            MENU_GEN_PROC, handle_address,
  682. X            NULL,
  683. X        MENU_ITEM,
  684. X            XV_KEY_DATA, INSTANCE, ip,
  685. X            MENU_STRING, "Other:",
  686. X            MENU_GEN_PROC, handle_address,
  687. X            NULL,
  688. X        MENU_DEFAULT, 1,
  689. X        NULL);
  690. X    return obj;
  691. }
  692. X
  693. /*
  694. X * Initialize an instance of object `base'.
  695. X */
  696. contool_base_objects *
  697. contool_base_objects_initialize(ip, owner)
  698. X    contool_base_objects    *ip;
  699. X    Xv_opaque    owner;
  700. {
  701. X    if (!ip && !(ip = (contool_base_objects *) calloc(1, sizeof (contool_base_objects))))
  702. X        return (contool_base_objects *) NULL;
  703. X    if (!ip->base)
  704. X        ip->base = contool_base_base_create(ip, owner);
  705. X    if (!ip->contool_controls)
  706. X        ip->contool_controls = contool_base_contool_controls_create(ip, ip->base);
  707. X    if (!ip->file)
  708. X        ip->file = contool_base_file_create(ip, ip->contool_controls);
  709. X    if (!ip->view)
  710. X        ip->view = contool_base_view_create(ip, ip->contool_controls);
  711. X    if (!ip->edit)
  712. X        ip->edit = contool_base_edit_create(ip, ip->contool_controls);
  713. X    if (!ip->display)
  714. X        ip->display = contool_base_display_create(ip, ip->base);
  715. X    return ip;
  716. }
  717. X
  718. /*
  719. X * Create object `base' in the specified instance.
  720. X */
  721. XXv_opaque
  722. contool_base_base_create(ip, owner)
  723. X    contool_base_objects    *ip;
  724. X    Xv_opaque        owner;
  725. {
  726. X    Xv_opaque    obj;
  727. X    
  728. X    obj = xv_create(owner, FRAME,
  729. X        XV_KEY_DATA, INSTANCE, ip,
  730. X        XV_WIDTH, 575,
  731. X        XV_HEIGHT, 246,
  732. X        XV_LABEL, "Contool 3.2a",
  733. X        FRAME_SHOW_FOOTER, TRUE,
  734. X        FRAME_SHOW_RESIZE_CORNER, TRUE,
  735. X        NULL);
  736. X    return obj;
  737. }
  738. X
  739. /*
  740. X * Create object `contool_controls' in the specified instance.
  741. X */
  742. XXv_opaque
  743. contool_base_contool_controls_create(ip, owner)
  744. X    contool_base_objects    *ip;
  745. X    Xv_opaque        owner;
  746. {
  747. X    Xv_opaque    obj;
  748. X    
  749. X    obj = xv_create(owner, PANEL,
  750. X        XV_KEY_DATA, INSTANCE, ip,
  751. X        XV_HELP_DATA, "contool:contool_controls",
  752. X        XV_X, 0,
  753. X        XV_Y, 0,
  754. X        XV_WIDTH, WIN_EXTEND_TO_EDGE,
  755. X        XV_HEIGHT, 32,
  756. X        WIN_BORDER, FALSE,
  757. X        NULL);
  758. X    return obj;
  759. }
  760. X
  761. /*
  762. X * Create object `file' in the specified instance.
  763. X */
  764. XXv_opaque
  765. contool_base_file_create(ip, owner)
  766. X    contool_base_objects    *ip;
  767. X    Xv_opaque        owner;
  768. {
  769. X    Xv_opaque    obj;
  770. X    
  771. X    obj = xv_create(owner, PANEL_BUTTON,
  772. X        XV_KEY_DATA, INSTANCE, ip,
  773. X        XV_HELP_DATA, "contool:file",
  774. X        XV_X, 4,
  775. X        XV_Y, 4,
  776. X        PANEL_LABEL_STRING, "File",
  777. X        PANEL_ITEM_MENU, contool_file_menu_create((caddr_t *) ip, NULL),
  778. X        NULL);
  779. X    return obj;
  780. }
  781. X
  782. /*
  783. X * Create object `view' in the specified instance.
  784. X */
  785. XXv_opaque
  786. contool_base_view_create(ip, owner)
  787. X    contool_base_objects    *ip;
  788. X    Xv_opaque        owner;
  789. {
  790. X    Xv_opaque    obj;
  791. X    
  792. X    obj = xv_create(owner, PANEL_BUTTON,
  793. X        XV_KEY_DATA, INSTANCE, ip,
  794. X        XV_HELP_DATA, "contool:view",
  795. X        XV_X, 67,
  796. X        XV_Y, 4,
  797. X        PANEL_LABEL_STRING, "View",
  798. X        PANEL_ITEM_MENU, contool_view_menu_create((caddr_t *) ip, NULL),
  799. X        NULL);
  800. X    return obj;
  801. }
  802. X
  803. /*
  804. X * Create object `edit' in the specified instance.
  805. X */
  806. XXv_opaque
  807. contool_base_edit_create(ip, owner)
  808. X    contool_base_objects    *ip;
  809. X    Xv_opaque        owner;
  810. {
  811. X    Xv_opaque    obj;
  812. X    
  813. X    obj = xv_create(owner, PANEL_BUTTON,
  814. X        XV_KEY_DATA, INSTANCE, ip,
  815. X        XV_HELP_DATA, "contool:edit",
  816. X        XV_X, 138,
  817. X        XV_Y, 4,
  818. X        PANEL_LABEL_STRING, "Edit",
  819. X        PANEL_ITEM_MENU, contool_edit_menu_create((caddr_t *) ip, NULL),
  820. X        NULL);
  821. X    return obj;
  822. }
  823. X
  824. /*
  825. X * Create object `display' in the specified instance.
  826. X */
  827. XXv_opaque
  828. contool_base_display_create(ip, owner)
  829. X    contool_base_objects    *ip;
  830. X    Xv_opaque        owner;
  831. {
  832. X    Xv_opaque    obj;
  833. X    
  834. X    obj = xv_create(owner, TEXTSW,
  835. X        XV_KEY_DATA, INSTANCE, ip,
  836. X        XV_HELP_DATA, "contool:display",
  837. X        XV_X, 0,
  838. X        XV_Y, 27,
  839. X        XV_WIDTH, WIN_EXTEND_TO_EDGE,
  840. X        XV_HEIGHT, WIN_EXTEND_TO_EDGE,
  841. X        OPENWIN_SHOW_BORDERS, TRUE,
  842. X        NULL);
  843. X    return obj;
  844. }
  845. X
  846. /*
  847. X * Initialize an instance of object `props'.
  848. X */
  849. contool_props_objects *
  850. contool_props_objects_initialize(ip, owner)
  851. X    contool_props_objects    *ip;
  852. X    Xv_opaque    owner;
  853. {
  854. X    if (!ip && !(ip = (contool_props_objects *) calloc(1, sizeof (contool_props_objects))))
  855. X        return (contool_props_objects *) NULL;
  856. X    if (!ip->props)
  857. X        ip->props = contool_props_props_create(ip, owner);
  858. X    if (!ip->prop_controls)
  859. X        ip->prop_controls = contool_props_prop_controls_create(ip, ip->props);
  860. X    if (!ip->default_action)
  861. X        ip->default_action = contool_props_default_action_create(ip, ip->prop_controls);
  862. X    if (!ip->default_beep_count)
  863. X        ip->default_beep_count = contool_props_default_beep_count_create(ip, ip->prop_controls);
  864. X    if (!ip->default_beep_times)
  865. X        ip->default_beep_times = contool_props_default_beep_times_create(ip, ip->prop_controls);
  866. X    if (!ip->default_command)
  867. X        ip->default_command = contool_props_default_command_create(ip, ip->prop_controls);
  868. X    if (!ip->log_file)
  869. X        ip->log_file = contool_props_log_file_create(ip, ip->prop_controls);
  870. X    if (!ip->log_style)
  871. X        ip->log_style = contool_props_log_style_create(ip, ip->prop_controls);
  872. X    if (!ip->archive_style)
  873. X        ip->archive_style = contool_props_archive_style_create(ip, ip->prop_controls);
  874. X    if (!ip->print_filter)
  875. X        ip->print_filter = contool_props_print_filter_create(ip, ip->prop_controls);
  876. X    if (!ip->good_icon)
  877. X        ip->good_icon = contool_props_good_icon_create(ip, ip->prop_controls);
  878. X    if (!ip->bad_icon)
  879. X        ip->bad_icon = contool_props_bad_icon_create(ip, ip->prop_controls);
  880. X    if (!ip->flash_icon)
  881. X        ip->flash_icon = contool_props_flash_icon_create(ip, ip->prop_controls);
  882. X    if (!ip->stamp_resolution)
  883. X        ip->stamp_resolution = contool_props_stamp_resolution_create(ip, ip->prop_controls);
  884. X    if (!ip->message2)
  885. X        ip->message2 = contool_props_message2_create(ip, ip->prop_controls);
  886. X    if (!ip->max_message)
  887. X        ip->max_message = contool_props_max_message_create(ip, ip->prop_controls);
  888. X    if (!ip->message3)
  889. X        ip->message3 = contool_props_message3_create(ip, ip->prop_controls);
  890. X    if (!ip->delete_amount)
  891. X        ip->delete_amount = contool_props_delete_amount_create(ip, ip->prop_controls);
  892. X    if (!ip->message4)
  893. X        ip->message4 = contool_props_message4_create(ip, ip->prop_controls);
  894. X    if (!ip->props_apply)
  895. X        ip->props_apply = contool_props_props_apply_create(ip, ip->prop_controls);
  896. X    if (!ip->props_reset)
  897. X        ip->props_reset = contool_props_props_reset_create(ip, ip->prop_controls);
  898. X    return ip;
  899. }
  900. X
  901. /*
  902. X * Create object `props' in the specified instance.
  903. X */
  904. XXv_opaque
  905. contool_props_props_create(ip, owner)
  906. X    contool_props_objects    *ip;
  907. X    Xv_opaque        owner;
  908. {
  909. X    Xv_opaque    obj;
  910. X    
  911. X    obj = xv_create(owner, FRAME_CMD,
  912. X        XV_KEY_DATA, INSTANCE, ip,
  913. X        XV_WIDTH, 500,
  914. X        XV_HEIGHT, 553,
  915. X        XV_LABEL, "Contool: Properties",
  916. X        XV_SHOW, FALSE,
  917. X        FRAME_SHOW_FOOTER, FALSE,
  918. X        FRAME_SHOW_RESIZE_CORNER, FALSE,
  919. X        FRAME_CMD_PUSHPIN_IN, FALSE,
  920. X        NULL);
  921. X    xv_set(xv_get(obj, FRAME_CMD_PANEL), WIN_SHOW, FALSE, NULL);
  922. X    return obj;
  923. }
  924. X
  925. /*
  926. X * Create object `prop_controls' in the specified instance.
  927. X */
  928. XXv_opaque
  929. contool_props_prop_controls_create(ip, owner)
  930. X    contool_props_objects    *ip;
  931. X    Xv_opaque        owner;
  932. {
  933. X    Xv_opaque    obj;
  934. X    
  935. X    obj = xv_create(owner, PANEL,
  936. X        XV_KEY_DATA, INSTANCE, ip,
  937. X        XV_HELP_DATA, "contool:prop_controls",
  938. X        XV_X, 0,
  939. X        XV_Y, 0,
  940. X        XV_WIDTH, WIN_EXTEND_TO_EDGE,
  941. X        XV_HEIGHT, WIN_EXTEND_TO_EDGE,
  942. X        WIN_BORDER, FALSE,
  943. X        NULL);
  944. X    return obj;
  945. }
  946. X
  947. /*
  948. X * Create object `default_action' in the specified instance.
  949. X */
  950. XXv_opaque
  951. contool_props_default_action_create(ip, owner)
  952. X    contool_props_objects    *ip;
  953. X    Xv_opaque        owner;
  954. {
  955. X    extern void        default_action();
  956. X    Xv_opaque    obj;
  957. X    
  958. X    obj = xv_create(owner, PANEL_TOGGLE,
  959. X        XV_KEY_DATA, INSTANCE, ip,
  960. X        XV_HELP_DATA, "contool:default_action",
  961. X        XV_X, 96,
  962. X        XV_Y, 14,
  963. X        PANEL_CHOICE_NCOLS, 1,
  964. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  965. X        PANEL_LABEL_STRING, "Default action:",
  966. X        PANEL_NOTIFY_PROC, default_action,
  967. X        PANEL_CHOICE_STRINGS,
  968. X            "Beep",
  969. X            "Command",
  970. X            "Flash icon",
  971. X            "Log message",
  972. X            "Open window",
  973. X            "Timestamp",
  974. X            NULL,
  975. X        PANEL_VALUE, 0,
  976. X        NULL);
  977. X    return obj;
  978. }
  979. X
  980. /*
  981. X * Create object `default_beep_count' in the specified instance.
  982. X */
  983. XXv_opaque
  984. contool_props_default_beep_count_create(ip, owner)
  985. X    contool_props_objects    *ip;
  986. X    Xv_opaque        owner;
  987. {
  988. X    Xv_opaque    obj;
  989. X    
  990. X    obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  991. X        XV_KEY_DATA, INSTANCE, ip,
  992. X        XV_HELP_DATA, "contool:default_beep_count",
  993. X        XV_X, 315,
  994. X        XV_Y, 19,
  995. X        PANEL_VALUE_DISPLAY_LENGTH, 2,
  996. X        PANEL_VALUE_STORED_LENGTH, 2,
  997. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  998. X        PANEL_MAX_VALUE, 99,
  999. X        PANEL_MIN_VALUE, 0,
  1000. X        PANEL_VALUE, 0,
  1001. X        PANEL_READ_ONLY, FALSE,
  1002. X        NULL);
  1003. X    return obj;
  1004. }
  1005. X
  1006. /*
  1007. X * Create object `default_beep_times' in the specified instance.
  1008. X */
  1009. XXv_opaque
  1010. contool_props_default_beep_times_create(ip, owner)
  1011. X    contool_props_objects    *ip;
  1012. X    Xv_opaque        owner;
  1013. {
  1014. X    Xv_opaque    obj;
  1015. X    
  1016. X    obj = xv_create(owner, PANEL_MESSAGE,
  1017. X        XV_KEY_DATA, INSTANCE, ip,
  1018. X        XV_HELP_DATA, "contool:default_beep_times",
  1019. X        XV_X, 403,
  1020. X        XV_Y, 19,
  1021. X        PANEL_LABEL_STRING, "times",
  1022. X        PANEL_LABEL_BOLD, FALSE,
  1023. X        NULL);
  1024. X    return obj;
  1025. }
  1026. X
  1027. /*
  1028. X * Create object `default_command' in the specified instance.
  1029. X */
  1030. XXv_opaque
  1031. contool_props_default_command_create(ip, owner)
  1032. X    contool_props_objects    *ip;
  1033. X    Xv_opaque        owner;
  1034. {
  1035. X    Xv_opaque    obj;
  1036. X    
  1037. X    obj = xv_create(owner, PANEL_TEXT,
  1038. X        XV_KEY_DATA, INSTANCE, ip,
  1039. X        XV_HELP_DATA, "contool:default_command",
  1040. X        XV_X, 315,
  1041. X        XV_Y, 48,
  1042. X        PANEL_VALUE_DISPLAY_LENGTH, 21,
  1043. X        PANEL_VALUE_STORED_LENGTH, 1024,
  1044. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  1045. X        PANEL_READ_ONLY, FALSE,
  1046. X        NULL);
  1047. X    return obj;
  1048. }
  1049. X
  1050. /*
  1051. X * Create object `log_file' in the specified instance.
  1052. X */
  1053. XXv_opaque
  1054. contool_props_log_file_create(ip, owner)
  1055. X    contool_props_objects    *ip;
  1056. X    Xv_opaque        owner;
  1057. {
  1058. X    extern Panel_setting    filename_completion();
  1059. X    Xv_opaque    obj;
  1060. X    
  1061. X    obj = xv_create(owner, PANEL_TEXT,
  1062. X        XV_KEY_DATA, INSTANCE, ip,
  1063. X        XV_HELP_DATA, "contool:log_file",
  1064. X        XV_X, 141,
  1065. X        XV_Y, 203,
  1066. X        PANEL_VALUE_DISPLAY_LENGTH, 35,
  1067. X        PANEL_VALUE_STORED_LENGTH, 256,
  1068. X        PANEL_LABEL_STRING, "Log file:",
  1069. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  1070. X        PANEL_READ_ONLY, FALSE,
  1071. X        PANEL_NOTIFY_PROC, filename_completion,
  1072. X        NULL);
  1073. X    return obj;
  1074. }
  1075. X
  1076. /*
  1077. X * Create object `log_style' in the specified instance.
  1078. X */
  1079. XXv_opaque
  1080. contool_props_log_style_create(ip, owner)
  1081. X    contool_props_objects    *ip;
  1082. X    Xv_opaque        owner;
  1083. {
  1084. X    Xv_opaque    obj;
  1085. X    
  1086. X    obj = xv_create(owner, PANEL_CHOICE,
  1087. X        XV_KEY_DATA, INSTANCE, ip,
  1088. X        XV_HELP_DATA, "contool:log_style",
  1089. X        XV_X, 96,
  1090. X        XV_Y, 223,
  1091. X        PANEL_CHOICE_NROWS, 1,
  1092. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  1093. X        PANEL_CHOOSE_NONE, FALSE,
  1094. X        PANEL_LABEL_STRING, "Log messages:",
  1095. X        PANEL_CHOICE_STRINGS,
  1096. X            "Before filtering",
  1097. X            "After filtering",
  1098. X            NULL,
  1099. X        PANEL_VALUE, 0,
  1100. X        NULL);
  1101. X    return obj;
  1102. }
  1103. X
  1104. /*
  1105. X * Create object `archive_style' in the specified instance.
  1106. X */
  1107. XXv_opaque
  1108. contool_props_archive_style_create(ip, owner)
  1109. X    contool_props_objects    *ip;
  1110. X    Xv_opaque        owner;
  1111. {
  1112. X    Xv_opaque    obj;
  1113. X    
  1114. X    obj = xv_create(owner, PANEL_CHOICE,
  1115. X        XV_KEY_DATA, INSTANCE, ip,
  1116. X        XV_HELP_DATA, "contool:archive_style",
  1117. X        XV_X, 68,
  1118. X        XV_Y, 267,
  1119. X        PANEL_CHOICE_NROWS, 1,
  1120. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  1121. X        PANEL_CHOOSE_NONE, FALSE,
  1122. X        PANEL_LABEL_STRING, "Archive messages:",
  1123. X        PANEL_CHOICE_STRINGS,
  1124. X            "Manually",
  1125. X            "When closing contool",
  1126. X            NULL,
  1127. X        PANEL_VALUE, 0,
  1128. X        NULL);
  1129. X    return obj;
  1130. }
  1131. X
  1132. /*
  1133. X * Create object `print_filter' in the specified instance.
  1134. X */
  1135. XXv_opaque
  1136. contool_props_print_filter_create(ip, owner)
  1137. X    contool_props_objects    *ip;
  1138. X    Xv_opaque        owner;
  1139. {
  1140. X    Xv_opaque    obj;
  1141. X    
  1142. X    obj = xv_create(owner, PANEL_TEXT,
  1143. X        XV_KEY_DATA, INSTANCE, ip,
  1144. X        XV_HELP_DATA, "contool:print_filter",
  1145. X        XV_X, 121,
  1146. X        XV_Y, 311,
  1147. X        PANEL_VALUE_DISPLAY_LENGTH, 35,
  1148. X        PANEL_VALUE_STORED_LENGTH, 256,
  1149. X        PANEL_LABEL_STRING, "Print filter:",
  1150. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  1151. X        PANEL_READ_ONLY, FALSE,
  1152. X        NULL);
  1153. X    return obj;
  1154. }
  1155. X
  1156. /*
  1157. X * Create object `good_icon' in the specified instance.
  1158. X */
  1159. XXv_opaque
  1160. contool_props_good_icon_create(ip, owner)
  1161. X    contool_props_objects    *ip;
  1162. X    Xv_opaque        owner;
  1163. {
  1164. X    extern Panel_setting    filename_completion();
  1165. X    Xv_opaque    obj;
  1166. X    
  1167. X    obj = xv_create(owner, PANEL_TEXT,
  1168. X        XV_KEY_DATA, INSTANCE, ip,
  1169. X        XV_HELP_DATA, "contool:good_icon",
  1170. X        XV_X, 79,
  1171. X        XV_Y, 348,
  1172. X        PANEL_VALUE_DISPLAY_LENGTH, 35,
  1173. X        PANEL_VALUE_STORED_LENGTH, 256,
  1174. X        PANEL_LABEL_STRING, "\"All is well\" icon:",
  1175. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  1176. X        PANEL_READ_ONLY, FALSE,
  1177. X        PANEL_NOTIFY_PROC, filename_completion,
  1178. X        NULL);
  1179. X    return obj;
  1180. }
  1181. X
  1182. /*
  1183. X * Create object `bad_icon' in the specified instance.
  1184. X */
  1185. XXv_opaque
  1186. contool_props_bad_icon_create(ip, owner)
  1187. X    contool_props_objects    *ip;
  1188. X    Xv_opaque        owner;
  1189. {
  1190. X    extern Panel_setting    filename_completion();
  1191. X    Xv_opaque    obj;
  1192. X    
  1193. X    obj = xv_create(owner, PANEL_TEXT,
  1194. X        XV_KEY_DATA, INSTANCE, ip,
  1195. X        XV_HELP_DATA, "contool:bad_icon",
  1196. X        XV_X, 50,
  1197. X        XV_Y, 368,
  1198. X        PANEL_VALUE_DISPLAY_LENGTH, 35,
  1199. X        PANEL_VALUE_STORED_LENGTH, 256,
  1200. X        PANEL_LABEL_STRING, "\"Check console\" icon:",
  1201. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  1202. X        PANEL_READ_ONLY, FALSE,
  1203. X        PANEL_NOTIFY_PROC, filename_completion,
  1204. X        NULL);
  1205. X    return obj;
  1206. }
  1207. X
  1208. /*
  1209. X * Create object `flash_icon' in the specified instance.
  1210. X */
  1211. XXv_opaque
  1212. contool_props_flash_icon_create(ip, owner)
  1213. X    contool_props_objects    *ip;
  1214. X    Xv_opaque        owner;
  1215. {
  1216. X    extern Panel_setting    filename_completion();
  1217. X    Xv_opaque    obj;
  1218. X    
  1219. X    obj = xv_create(owner, PANEL_TEXT,
  1220. X        XV_KEY_DATA, INSTANCE, ip,
  1221. X        XV_HELP_DATA, "contool:flash_icon",
  1222. X        XV_X, 111,
  1223. X        XV_Y, 388,
  1224. X        PANEL_VALUE_DISPLAY_LENGTH, 35,
  1225. X        PANEL_VALUE_STORED_LENGTH, 256,
  1226. X        PANEL_LABEL_STRING, "\"Flash\" icon:",
  1227. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  1228. X        PANEL_READ_ONLY, FALSE,
  1229. X        PANEL_NOTIFY_PROC, filename_completion,
  1230. X        NULL);
  1231. X    return obj;
  1232. }
  1233. X
  1234. /*
  1235. X * Create object `stamp_resolution' in the specified instance.
  1236. X */
  1237. XXv_opaque
  1238. contool_props_stamp_resolution_create(ip, owner)
  1239. X    contool_props_objects    *ip;
  1240. X    Xv_opaque        owner;
  1241. {
  1242. X    Xv_opaque    obj;
  1243. X    
  1244. X    obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  1245. X        XV_KEY_DATA, INSTANCE, ip,
  1246. X        XV_HELP_DATA, "contool:stamp_resolution",
  1247. X        XV_X, 40,
  1248. X        XV_Y, 424,
  1249. X        PANEL_VALUE_DISPLAY_LENGTH, 6,
  1250. X        PANEL_VALUE_STORED_LENGTH, 6,
  1251. X        PANEL_LABEL_STRING, "Timestamp resolution:",
  1252. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  1253. X        PANEL_MAX_VALUE, 999,
  1254. X        PANEL_MIN_VALUE, 0,
  1255. X        PANEL_VALUE, 0,
  1256. X        PANEL_READ_ONLY, FALSE,
  1257. X        NULL);
  1258. X    return obj;
  1259. }
  1260. X
  1261. /*
  1262. X * Create object `message2' in the specified instance.
  1263. X */
  1264. XXv_opaque
  1265. contool_props_message2_create(ip, owner)
  1266. X    contool_props_objects    *ip;
  1267. X    Xv_opaque        owner;
  1268. {
  1269. X    Xv_opaque    obj;
  1270. X    
  1271. X    obj = xv_create(owner, PANEL_MESSAGE,
  1272. X        XV_KEY_DATA, INSTANCE, ip,
  1273. X        XV_HELP_DATA, "contool:message2",
  1274. X        XV_X, 296,
  1275. X        XV_Y, 424,
  1276. X        PANEL_LABEL_STRING, "seconds",
  1277. X        PANEL_LABEL_BOLD, FALSE,
  1278. X        NULL);
  1279. X    return obj;
  1280. }
  1281. X
  1282. /*
  1283. X * Create object `max_message' in the specified instance.
  1284. X */
  1285. XXv_opaque
  1286. contool_props_max_message_create(ip, owner)
  1287. X    contool_props_objects    *ip;
  1288. X    Xv_opaque        owner;
  1289. {
  1290. X    Xv_opaque    obj;
  1291. X    
  1292. X    obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  1293. X        XV_KEY_DATA, INSTANCE, ip,
  1294. X        XV_HELP_DATA, "contool:max_message",
  1295. X        XV_X, 32,
  1296. X        XV_Y, 460,
  1297. X        PANEL_VALUE_DISPLAY_LENGTH, 6,
  1298. X        PANEL_VALUE_STORED_LENGTH, 6,
  1299. X        PANEL_LABEL_STRING, "Maximum message text:",
  1300. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  1301. X        PANEL_MAX_VALUE, 999999,
  1302. X        PANEL_MIN_VALUE, 0,
  1303. X        PANEL_VALUE, 0,
  1304. X        PANEL_READ_ONLY, FALSE,
  1305. X        NULL);
  1306. X    return obj;
  1307. }
  1308. X
  1309. /*
  1310. X * Create object `message3' in the specified instance.
  1311. X */
  1312. XXv_opaque
  1313. contool_props_message3_create(ip, owner)
  1314. X    contool_props_objects    *ip;
  1315. X    Xv_opaque        owner;
  1316. {
  1317. X    Xv_opaque    obj;
  1318. X    
  1319. X    obj = xv_create(owner, PANEL_MESSAGE,
  1320. X        XV_KEY_DATA, INSTANCE, ip,
  1321. X        XV_HELP_DATA, "contool:message3",
  1322. X        XV_X, 295,
  1323. X        XV_Y, 460,
  1324. X        PANEL_LABEL_STRING, "bytes",
  1325. X        PANEL_LABEL_BOLD, FALSE,
  1326. X        NULL);
  1327. X    return obj;
  1328. }
  1329. X
  1330. /*
  1331. X * Create object `delete_amount' in the specified instance.
  1332. X */
  1333. XXv_opaque
  1334. contool_props_delete_amount_create(ip, owner)
  1335. X    contool_props_objects    *ip;
  1336. X    Xv_opaque        owner;
  1337. {
  1338. X    Xv_opaque    obj;
  1339. X    
  1340. X    obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  1341. X        XV_KEY_DATA, INSTANCE, ip,
  1342. X        XV_HELP_DATA, "contool:delete_amount",
  1343. X        XV_X, 14,
  1344. X        XV_Y, 480,
  1345. X        PANEL_VALUE_DISPLAY_LENGTH, 6,
  1346. X        PANEL_VALUE_STORED_LENGTH, 6,
  1347. X        PANEL_LABEL_STRING, "Overflow deletion amount:",
  1348. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  1349. X        PANEL_MAX_VALUE, 999999,
  1350. X        PANEL_MIN_VALUE, 0,
  1351. X        PANEL_VALUE, 0,
  1352. X        PANEL_READ_ONLY, FALSE,
  1353. X        NULL);
  1354. X    return obj;
  1355. }
  1356. X
  1357. /*
  1358. X * Create object `message4' in the specified instance.
  1359. X */
  1360. XXv_opaque
  1361. contool_props_message4_create(ip, owner)
  1362. X    contool_props_objects    *ip;
  1363. X    Xv_opaque        owner;
  1364. {
  1365. X    Xv_opaque    obj;
  1366. X    
  1367. X    obj = xv_create(owner, PANEL_MESSAGE,
  1368. X        XV_KEY_DATA, INSTANCE, ip,
  1369. X        XV_HELP_DATA, "contool:message4",
  1370. X        XV_X, 295,
  1371. X        XV_Y, 480,
  1372. X        PANEL_LABEL_STRING, "bytes",
  1373. X        PANEL_LABEL_BOLD, FALSE,
  1374. X        NULL);
  1375. X    return obj;
  1376. }
  1377. X
  1378. /*
  1379. X * Create object `props_apply' in the specified instance.
  1380. X */
  1381. XXv_opaque
  1382. contool_props_props_apply_create(ip, owner)
  1383. X    contool_props_objects    *ip;
  1384. X    Xv_opaque        owner;
  1385. {
  1386. X    extern void        accept_properties();
  1387. X    Xv_opaque    obj;
  1388. X    
  1389. X    obj = xv_create(owner, PANEL_BUTTON,
  1390. X        XV_KEY_DATA, INSTANCE, ip,
  1391. X        XV_HELP_DATA, "contool:props_apply",
  1392. X        XV_X, 191,
  1393. X        XV_Y, 516,
  1394. X        PANEL_LABEL_STRING, "Apply",
  1395. X        PANEL_NOTIFY_PROC, accept_properties,
  1396. X        NULL);
  1397. X    return obj;
  1398. }
  1399. X
  1400. /*
  1401. X * Create object `props_reset' in the specified instance.
  1402. X */
  1403. XXv_opaque
  1404. contool_props_props_reset_create(ip, owner)
  1405. X    contool_props_objects    *ip;
  1406. X    Xv_opaque        owner;
  1407. {
  1408. X    extern void        reset_properties();
  1409. X    Xv_opaque    obj;
  1410. X    
  1411. X    obj = xv_create(owner, PANEL_BUTTON,
  1412. X        XV_KEY_DATA, INSTANCE, ip,
  1413. X        XV_HELP_DATA, "contool:props_reset",
  1414. X        XV_X, 256,
  1415. X        XV_Y, 516,
  1416. X        PANEL_LABEL_STRING, "Reset",
  1417. X        PANEL_NOTIFY_PROC, reset_properties,
  1418. X        NULL);
  1419. X    return obj;
  1420. }
  1421. X
  1422. /*
  1423. X * Initialize an instance of object `filters'.
  1424. X */
  1425. contool_filters_objects *
  1426. contool_filters_objects_initialize(ip, owner)
  1427. X    contool_filters_objects    *ip;
  1428. X    Xv_opaque    owner;
  1429. {
  1430. X    if (!ip && !(ip = (contool_filters_objects *) calloc(1, sizeof (contool_filters_objects))))
  1431. X        return (contool_filters_objects *) NULL;
  1432. X    if (!ip->filters)
  1433. X        ip->filters = contool_filters_filters_create(ip, owner);
  1434. X    if (!ip->filter_controls)
  1435. X        ip->filter_controls = contool_filters_filter_controls_create(ip, ip->filters);
  1436. X    if (!ip->filter_list)
  1437. X        ip->filter_list = contool_filters_filter_list_create(ip, ip->filter_controls);
  1438. X    if (!ip->filter_insert)
  1439. X        ip->filter_insert = contool_filters_filter_insert_create(ip, ip->filter_controls);
  1440. X    if (!ip->filter_edit)
  1441. X        ip->filter_edit = contool_filters_filter_edit_create(ip, ip->filter_controls);
  1442. X    if (!ip->filter_update)
  1443. X        ip->filter_update = contool_filters_filter_update_create(ip, ip->filter_controls);
  1444. X    if (!ip->filter_type)
  1445. X        ip->filter_type = contool_filters_filter_type_create(ip, ip->filter_controls);
  1446. X    if (!ip->start)
  1447. X        ip->start = contool_filters_start_create(ip, ip->filter_controls);
  1448. X    if (!ip->stop)
  1449. X        ip->stop = contool_filters_stop_create(ip, ip->filter_controls);
  1450. X    if (!ip->filter_timeout)
  1451. X        ip->filter_timeout = contool_filters_filter_timeout_create(ip, ip->filter_controls);
  1452. X    if (!ip->filter_timeout_units)
  1453. X        ip->filter_timeout_units = contool_filters_filter_timeout_units_create(ip, ip->filter_controls);
  1454. X    if (!ip->comment)
  1455. X        ip->comment = contool_filters_comment_create(ip, ip->filter_controls);
  1456. X    if (!ip->ignore)
  1457. X        ip->ignore = contool_filters_ignore_create(ip, ip->filter_controls);
  1458. X    if (!ip->action)
  1459. X        ip->action = contool_filters_action_create(ip, ip->filter_controls);
  1460. X    if (!ip->filter_beep_count)
  1461. X        ip->filter_beep_count = contool_filters_filter_beep_count_create(ip, ip->filter_controls);
  1462. X    if (!ip->filter_beep_times)
  1463. X        ip->filter_beep_times = contool_filters_filter_beep_times_create(ip, ip->filter_controls);
  1464. X    if (!ip->filter_command)
  1465. X        ip->filter_command = contool_filters_filter_command_create(ip, ip->filter_controls);
  1466. X    if (!ip->filters_apply)
  1467. X        ip->filters_apply = contool_filters_filters_apply_create(ip, ip->filter_controls);
  1468. X    if (!ip->filters_apply_and_save)
  1469. X        ip->filters_apply_and_save = contool_filters_filters_apply_and_save_create(ip, ip->filter_controls);
  1470. X    if (!ip->filters_reset)
  1471. X        ip->filters_reset = contool_filters_filters_reset_create(ip, ip->filter_controls);
  1472. X    return ip;
  1473. }
  1474. X
  1475. /*
  1476. X * Create object `filters' in the specified instance.
  1477. X */
  1478. XXv_opaque
  1479. contool_filters_filters_create(ip, owner)
  1480. X    contool_filters_objects    *ip;
  1481. X    Xv_opaque        owner;
  1482. {
  1483. X    extern void    filter_done();
  1484. X    Xv_opaque    obj;
  1485. X    
  1486. X    obj = xv_create(owner, FRAME_CMD,
  1487. X        XV_KEY_DATA, INSTANCE, ip,
  1488. X        XV_WIDTH, 510,
  1489. X        XV_HEIGHT, 685,
  1490. X        XV_LABEL, "Contool: Filters",
  1491. X        XV_SHOW, FALSE,
  1492. X        FRAME_SHOW_FOOTER, FALSE,
  1493. X        FRAME_SHOW_RESIZE_CORNER, FALSE,
  1494. X        FRAME_CMD_PUSHPIN_IN, FALSE,
  1495. X        FRAME_DONE_PROC, filter_done,
  1496. X        NULL);
  1497. X    xv_set(xv_get(obj, FRAME_CMD_PANEL), WIN_SHOW, FALSE, NULL);
  1498. X    return obj;
  1499. }
  1500. X
  1501. /*
  1502. X * Create object `filter_controls' in the specified instance.
  1503. X */
  1504. XXv_opaque
  1505. contool_filters_filter_controls_create(ip, owner)
  1506. X    contool_filters_objects    *ip;
  1507. X    Xv_opaque        owner;
  1508. {
  1509. X    Xv_opaque    obj;
  1510. X    
  1511. X    obj = xv_create(owner, PANEL,
  1512. X        XV_KEY_DATA, INSTANCE, ip,
  1513. X        XV_HELP_DATA, "contool:filter_controls",
  1514. X        XV_X, 0,
  1515. X        XV_Y, 0,
  1516. X        XV_WIDTH, WIN_EXTEND_TO_EDGE,
  1517. X        XV_HEIGHT, WIN_EXTEND_TO_EDGE,
  1518. X        WIN_BORDER, FALSE,
  1519. X        NULL);
  1520. X    return obj;
  1521. }
  1522. X
  1523. /*
  1524. X * Create object `filter_list' in the specified instance.
  1525. X */
  1526. XXv_opaque
  1527. contool_filters_filter_list_create(ip, owner)
  1528. X    contool_filters_objects    *ip;
  1529. X    Xv_opaque        owner;
  1530. {
  1531. X    extern int        filter_notify();
  1532. X    Xv_opaque    obj;
  1533. X    
  1534. X    obj = xv_create(owner, PANEL_LIST,
  1535. X        XV_KEY_DATA, INSTANCE, ip,
  1536. X        XV_HELP_DATA, "contool:filter_list",
  1537. X        XV_X, 70,
  1538. X        XV_Y, 14,
  1539. X        PANEL_LIST_WIDTH, 350,
  1540. X        PANEL_LIST_DISPLAY_ROWS, 10,
  1541. X        PANEL_LABEL_STRING, "Filters:",
  1542. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  1543. X        PANEL_READ_ONLY, TRUE,
  1544. X        PANEL_CHOOSE_ONE, FALSE,
  1545. X        PANEL_CHOOSE_NONE, TRUE,
  1546. X        PANEL_NOTIFY_PROC, filter_notify,
  1547. X        NULL);
  1548. X    return obj;
  1549. }
  1550. X
  1551. /*
  1552. X * Create object `filter_insert' in the specified instance.
  1553. X */
  1554. XXv_opaque
  1555. contool_filters_filter_insert_create(ip, owner)
  1556. X    contool_filters_objects    *ip;
  1557. X    Xv_opaque        owner;
  1558. {
  1559. X    Xv_opaque    obj;
  1560. X    
  1561. X    obj = xv_create(owner, PANEL_BUTTON,
  1562. X        XV_KEY_DATA, INSTANCE, ip,
  1563. X        XV_HELP_DATA, "contool:filter_insert",
  1564. X        XV_X, 126,
  1565. X        XV_Y, 218,
  1566. X        PANEL_LABEL_STRING, "Insert",
  1567. X        PANEL_ITEM_MENU, contool_filter_insert_menu_create((caddr_t *) ip, NULL),
  1568. X        NULL);
  1569. X    return obj;
  1570. }
  1571. X
  1572. /*
  1573. X * Create object `filter_edit' in the specified instance.
  1574. X */
  1575. XXv_opaque
  1576. contool_filters_filter_edit_create(ip, owner)
  1577. X    contool_filters_objects    *ip;
  1578. X    Xv_opaque        owner;
  1579. {
  1580. X    Xv_opaque    obj;
  1581. X    
  1582. X    obj = xv_create(owner, PANEL_BUTTON,
  1583. X        XV_KEY_DATA, INSTANCE, ip,
  1584. X        XV_HELP_DATA, "contool:filter_edit",
  1585. X        XV_X, 202,
  1586. X        XV_Y, 218,
  1587. X        PANEL_LABEL_STRING, "Edit",
  1588. X        PANEL_ITEM_MENU, contool_filter_edit_menu_create((caddr_t *) ip, NULL),
  1589. X        NULL);
  1590. X    return obj;
  1591. }
  1592. X
  1593. /*
  1594. X * Create object `filter_update' in the specified instance.
  1595. X */
  1596. XXv_opaque
  1597. contool_filters_filter_update_create(ip, owner)
  1598. X    contool_filters_objects    *ip;
  1599. X    Xv_opaque        owner;
  1600. {
  1601. X    extern void        filter_update();
  1602. X    Xv_opaque    obj;
  1603. X    
  1604. X    obj = xv_create(owner, PANEL_BUTTON,
  1605. X        XV_KEY_DATA, INSTANCE, ip,
  1606. X        XV_HELP_DATA, "contool:filter_update",
  1607. X        XV_X, 267,
  1608. X        XV_Y, 218,
  1609. X        PANEL_LABEL_STRING, "Update",
  1610. X        PANEL_NOTIFY_PROC, filter_update,
  1611. X        NULL);
  1612. X    return obj;
  1613. }
  1614. X
  1615. /*
  1616. X * Create object `filter_type' in the specified instance.
  1617. X */
  1618. XXv_opaque
  1619. contool_filters_filter_type_create(ip, owner)
  1620. X    contool_filters_objects    *ip;
  1621. X    Xv_opaque        owner;
  1622. {
  1623. X    extern void        set_filter_type();
  1624. X    Xv_opaque    obj;
  1625. X    
  1626. X    obj = xv_create(owner, PANEL_CHOICE,
  1627. X        XV_KEY_DATA, INSTANCE, ip,
  1628. X        XV_HELP_DATA, "contool:filter_type",
  1629. X        XV_X, 80,
  1630. X        XV_Y, 259,
  1631. X        PANEL_CHOICE_NROWS, 1,
  1632. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  1633. X        PANEL_CHOOSE_NONE, FALSE,
  1634. X        PANEL_LABEL_STRING, "Type:",
  1635. X        PANEL_NOTIFY_PROC, set_filter_type,
  1636. X        PANEL_CHOICE_STRINGS,
  1637. X            "Single line filter",
  1638. X            "Multi-line filter",
  1639. X            NULL,
  1640. X        PANEL_VALUE, 0,
  1641. X        NULL);
  1642. X    return obj;
  1643. }
  1644. X
  1645. /*
  1646. X * Create object `start' in the specified instance.
  1647. X */
  1648. XXv_opaque
  1649. contool_filters_start_create(ip, owner)
  1650. X    contool_filters_objects    *ip;
  1651. X    Xv_opaque        owner;
  1652. {
  1653. X    Xv_opaque    obj;
  1654. X    
  1655. X    obj = xv_create(owner, PANEL_TEXT,
  1656. X        XV_KEY_DATA, INSTANCE, ip,
  1657. X        XV_HELP_DATA, "contool:start",
  1658. X        XV_X, 65,
  1659. X        XV_Y, 303,
  1660. X        PANEL_VALUE_DISPLAY_LENGTH, 46,
  1661. X        PANEL_VALUE_STORED_LENGTH, 256,
  1662. X        PANEL_LABEL_STRING, "Pattern:",
  1663. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  1664. X        PANEL_READ_ONLY, FALSE,
  1665. X        NULL);
  1666. X    return obj;
  1667. }
  1668. X
  1669. /*
  1670. X * Create object `stop' in the specified instance.
  1671. X */
  1672. XXv_opaque
  1673. contool_filters_stop_create(ip, owner)
  1674. X    contool_filters_objects    *ip;
  1675. X    Xv_opaque        owner;
  1676. {
  1677. X    Xv_opaque    obj;
  1678. X    
  1679. X    obj = xv_create(owner, PANEL_TEXT,
  1680. X        XV_KEY_DATA, INSTANCE, ip,
  1681. X        XV_HELP_DATA, "contool:stop",
  1682. X        XV_X, 35,
  1683. X        XV_Y, 323,
  1684. X        PANEL_VALUE_DISPLAY_LENGTH, 46,
  1685. X        PANEL_VALUE_STORED_LENGTH, 256,
  1686. X        PANEL_LABEL_STRING, "End pattern:",
  1687. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  1688. X        PANEL_READ_ONLY, FALSE,
  1689. X        NULL);
  1690. X    return obj;
  1691. }
  1692. X
  1693. /*
  1694. X * Create object `filter_timeout' in the specified instance.
  1695. X */
  1696. XXv_opaque
  1697. contool_filters_filter_timeout_create(ip, owner)
  1698. X    contool_filters_objects    *ip;
  1699. X    Xv_opaque        owner;
  1700. {
  1701. X    Xv_opaque    obj;
  1702. X    
  1703. X    obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  1704. X        XV_KEY_DATA, INSTANCE, ip,
  1705. X        XV_HELP_DATA, "contool:filter_timeout",
  1706. X        XV_X, 57,
  1707. X        XV_Y, 359,
  1708. X        PANEL_VALUE_DISPLAY_LENGTH, 3,
  1709. X        PANEL_VALUE_STORED_LENGTH, 3,
  1710. X        PANEL_LABEL_STRING, "Timeout:",
  1711. X        PANEL_LAYOUT, PANEL_HORIZONTAL,
  1712. X        PANEL_MAX_VALUE, 999,
  1713. X        PANEL_MIN_VALUE, 0,
  1714. X        PANEL_VALUE, 0,
  1715. X        PANEL_READ_ONLY, FALSE,
  1716. X        NULL);
  1717. X    return obj;
  1718. }
  1719. X
  1720. /*
  1721. X * Create object `filter_timeout_units' in the specified instance.
  1722. X */
  1723. XXv_opaque
  1724. contool_filters_filter_timeout_units_create(ip, owner)
  1725. X    contool_filters_objects    *ip;
  1726. X    Xv_opaque        owner;
  1727. {
  1728. X    Xv_opaque    obj;
  1729. X    
  1730. X    obj = xv_create(owner, PANEL_MESSAGE,
  1731. X        XV_KEY_DATA, INSTANCE, ip,
  1732. X        XV_HELP_DATA, "contool:filter_timeout_units",
  1733. X        XV_X, 213,
  1734. X        XV_Y, 359,
  1735. X        PANEL_LABEL_STRING, "seconds",
  1736. X        PANEL_LABEL_BOLD, FALSE,
  1737. X        NULL);
  1738. X    return obj;
  1739. }
  1740. X
  1741. /*
  1742. X * Create object `comment' in the specified instance.
  1743. X */
  1744. XXv_opaque
  1745. contool_filters_comment_create(ip, owner)
  1746. X    contool_filters_objects    *ip;
  1747. X    Xv_opaque        owner;
  1748. {
  1749. X    Xv_opaque    obj;
  1750. X    
  1751. X    obj = xv_create(owner, PANEL_TEXT,
  1752. X        XV_KEY_DATA, INSTANCE, ip,
  1753. SHAR_EOF
  1754. true || echo 'restore of contool_ui.c failed'
  1755. fi
  1756. echo 'End of  part 2'
  1757. echo 'File contool_ui.c is continued in part 3'
  1758. echo 3 > _shar_seq_.tmp
  1759. exit 0
  1760. -- 
  1761. --
  1762. Molecular Simulations, Inc.            mail: dcmartin@msi.com
  1763. 796 N. Pastoria Avenue                uucp: uunet!dcmartin
  1764. Sunnyvale, California 94086            at&t: 408/522-9236
  1765.