home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / x / volume16 / hman / part01 next >
Text File  |  1992-03-07  |  21KB  |  719 lines

  1. Newsgroups: comp.sources.x
  2. Path: uunet!munnari.oz.au!mips!mips!msi!dcmartin
  3. From: mab@ecmwf.co.uk (Baudouin Raoult)
  4. Subject: v16i143: hyperwidget & manual browser, Part01/06
  5. Message-ID: <csx-16i143-hman@uunet.UU.NET>
  6. Originator: dcmartin@fascet
  7. Sender: dcmartin@msi.com (David C. Martin - Moderator)
  8. Organization: Molecular Simulations, Inc.
  9. Date: Fri, 6 Mar 1992 20:47:57 GMT
  10. Approved: dcmartin@msi.com
  11.  
  12. Submitted-by: mab@ecmwf.co.uk (Baudouin Raoult)
  13. Posting-number: Volume 16, Issue 143
  14. Archive-name: hman/part01
  15.  
  16. This package contains two products:
  17.  
  18. - The HyperWidget, a hypertext-like widget that displays
  19. text with highlighted text. Clicking on highlighted text will
  20. call a callback function of the application using the widget.
  21.  
  22. - hman, a unix manual using the HyperWidget to browse through
  23. the manual pages.
  24.  
  25. Feel free to use the widget in any application. I use it
  26. for the on-line help of my applications.
  27.  
  28.  
  29. B.Raoult ( mab@ecmwf.co.uk )
  30.  
  31. #!/bin/sh
  32. # shar:    Shell Archiver  (v1.22)
  33. #    Packed Thu Feb 13 08:45:58 GMT 1992 by /tmp_mnt/home/rd/mab/src/hman
  34. #    from directory Thu Feb 13 08:45:58 GMT 1992#
  35. # This is part 1 of a multipart archive                                    
  36. # do not concatenate these parts, unpack them in order with /bin/sh        
  37. #
  38. #    Run the following text with /bin/sh to create:
  39. #      hman.lex
  40. #      hman.c
  41. #      cbacks.c
  42. #      Hyper.c
  43. #      Hyper.h
  44. #      HyperP.h
  45. #      hman.xbm
  46. #      Imakefile
  47. #      Makefile.noimake
  48. #      README
  49. #      HMan.ad
  50. #      hman.man
  51. #      hman.h
  52. #      HyperWidget.3x
  53. #      patchlevel.h
  54. #
  55. if test -r s2_seq_.tmp
  56. then echo "Must unpack archives in sequence!"
  57.      next=`cat s2_seq_.tmp`; echo "Please unpack part $next next"
  58.      exit 1; fi
  59. echo "x - extracting hman.lex (Text)"
  60. sed 's/^X//' << 'SHAR_EOF' > hman.lex &&
  61. X%{
  62. X#include "hman.h"
  63. X#undef output
  64. X
  65. Xstatic int new_line = 2;
  66. Xstatic int header = 1;
  67. X
  68. Xoutput(c)
  69. X{
  70. X    /* compress the multiple empty lines */
  71. X
  72. X    if(c=='\n')
  73. X    {
  74. X        if(new_line<2) putc(c,yyout);
  75. X        new_line++;
  76. X    }
  77. X    else
  78. X    {
  79. X        putc(c,yyout);
  80. X        new_line = 0;
  81. X    }    
  82. X}
  83. X%}
  84. X
  85. XBLANK    [ \t]*
  86. XWORD    [a-zA-Z]+[a-zA-Z0-9_\-\.]*
  87. XSECTION "("[0-9][A-Za-z0-9]*")"
  88. XREF    {WORD}{BLANK}{SECTION}
  89. X
  90. X%%
  91. X
  92. X
  93. X^{REF}.*$ { 
  94. X                /* header : CMD(SEC)    COMMAND TYPE    CMD(SEC) */
  95. X                /* display only one header */
  96. X
  97. X                if(header) 
  98. X                { 
  99. X                    ECHO; 
  100. X                    new_line = 0;
  101. X                    output('\n');
  102. X                    header=0;
  103. X                }
  104. X            }
  105. X
  106. X{REF}      { 
  107. X                /* ref : cmd(sec) */
  108. X                output(START_OF_HIGHLIGHT);
  109. X                ECHO;
  110. X                output(END_OF_HIGHLIGHT);
  111. X           }
  112. X
  113. X^Sun.*$             { /* remove Sun's footers */}
  114. X^Reformatting.*$ {/* remove Reformatting message */}
  115. X
  116. X%%
  117. X
  118. Xyywrap() 
  119. X{ 
  120. X    /* end of file, reset header and new_line flags */
  121. X    header = 1; 
  122. X    new_line = 2;
  123. X    return 1; 
  124. X}
  125. X
  126. X
  127. X
  128. SHAR_EOF
  129. chmod 0644 hman.lex || echo "restore of hman.lex fails"
  130. set `wc -c hman.lex`;Sum=$1
  131. if test "$Sum" != "899"
  132. then echo original size 899, current size $Sum;fi
  133. echo "x - extracting hman.c (Text)"
  134. sed 's/^X//' << 'SHAR_EOF' > hman.c &&
  135. X
  136. X/*
  137. X** Generated by X-Designer 
  138. X*/
  139. X/*
  140. X**LIBS: -lXm -lXt -lX11
  141. X*/
  142. X
  143. X#include <X11/Xatom.h>
  144. X#include <X11/Intrinsic.h>
  145. X#include <X11/Shell.h>
  146. X
  147. X#include <Xm/Xm.h>
  148. X#include <Xm/DialogS.h>
  149. X#include <Xm/FileSB.h>
  150. X#include <Xm/Form.h>
  151. X#include <Xm/Label.h>
  152. X#include <Xm/List.h>
  153. X#include <Xm/PushB.h>
  154. X#include <Xm/RowColumn.h>
  155. X#include <Xm/ScrollBar.h>
  156. X#include <Xm/ScrolledW.h>
  157. X#include <Xm/SelectioB.h>
  158. X#include <Xm/Separator.h>
  159. X#include <Xm/Text.h>
  160. X#include <Xm/TextF.h>
  161. X#include <Xm/ToggleB.h>
  162. X#include <Xm/LabelG.h>
  163. X#include <Xm/PushBG.h>
  164. X#include <Xm/SeparatoG.h>
  165. X
  166. Xvoid XDmanage_link (w, client_data, call_data)
  167. XWidget w;       /*  widget id           */
  168. XWidget *client_data;    /*  data from application   */
  169. Xcaddr_t call_data;      /*  data from widget class  */
  170. X{
  171. X    XtManageChild ( *client_data );
  172. X}
  173. X
  174. Xvoid XDunmanage_link (w, client_data, call_data)
  175. XWidget w;       /*  widget id           */
  176. XWidget *client_data;    /*  data from application   */
  177. Xcaddr_t call_data;      /*  data from widget class  */
  178. X{
  179. X    XtUnmanageChild ( *client_data );
  180. X}
  181. X
  182. Xvoid XDmap_link (w, client_data, call_data)
  183. XWidget w;       /*  widget id           */
  184. XWidget *client_data;    /*  data from application   */
  185. Xcaddr_t call_data;      /*  data from widget class  */
  186. X{
  187. X    XtMapWidget (*client_data);
  188. X}
  189. X
  190. Xvoid XDunmap_link (w, client_data, call_data)
  191. XWidget w;       /*  widget id           */
  192. XWidget *client_data;    /*  data from application   */
  193. Xcaddr_t call_data;      /*  data from widget class  */
  194. X{
  195. X    XtUnmapWidget (*client_data);
  196. X}
  197. Xvoid XDenable_link (w, client_data, call_data)
  198. XWidget w;       /*  widget id           */
  199. XWidget *client_data;    /*  data from application   */
  200. Xcaddr_t call_data;      /*  data from widget class  */
  201. X{
  202. X    XtSetSensitive (*client_data, TRUE);
  203. X}
  204. X
  205. Xvoid XDdisable_link (w, client_data, call_data)
  206. XWidget w;       /*  widget id           */
  207. XWidget *client_data;    /*  data from application   */
  208. Xcaddr_t call_data;      /*  data from widget class  */
  209. X{
  210. X    XtSetSensitive (*client_data, FALSE);
  211. X}
  212. X
  213. Xextern void find_callback ( );
  214. Xextern void clone_callback ( );
  215. Xextern void quit_callback ( );
  216. Xextern void next_callback ( );
  217. Xextern void previous_callback ( );
  218. Xextern void text_activate_callback ( );
  219. Xextern void fsb_callback ( );
  220. X
  221. XWidget find;
  222. XWidget find_form;
  223. XWidget find_text;
  224. XWidget find_next;
  225. X
  226. XWidget selection;
  227. XWidget fsb;
  228. X
  229. XWidget top;
  230. XWidget form;
  231. XWidget scrollw;
  232. XWidget keyword;
  233. XWidget keyword_text;
  234. XWidget section;
  235. XWidget section_text;
  236. XWidget in_index;
  237. XWidget previous;
  238. XWidget next;
  239. XWidget quit;
  240. XWidget clone;
  241. XWidget other;
  242. XWidget search;
  243. X
  244. X
  245. Xcreate_find( parent )
  246. XWidget parent;
  247. X{
  248. X    Display *display = XtDisplay ( parent );
  249. X    Widget children[3];      /* Children to manage */
  250. X    Arg al[64];           /* Arg List */
  251. X    register int ac = 0;      /* Arg Count */
  252. X    char from_s [256];    /* For font list conversion */
  253. X    XrmValue from_value, to_value; /* ditto */
  254. X    int fg, bg;           /* colour values for pixmaps */
  255. X
  256. X    XmString *list_items; /* For list items */
  257. X    int list_item;        /* Index for list_items */
  258. X    XmString xmstrings[15];    /* temporary storage for XmStrings */
  259. X    Widget widget47;
  260. X
  261. X    XtSetArg(al[ac], XmNallowShellResize, TRUE);
  262. X    ac++;
  263. X    find = XmCreateDialogShell ( parent, "find", al, ac );
  264. X    ac = 0;
  265. X    XtSetArg(al[ac], XmNautoUnmanage, FALSE);
  266. X    ac++;
  267. X    find_form = XmCreateForm ( find, "find_form", al, ac );
  268. X    ac = 0;
  269. X    find_text = XmCreateTextField ( find_form, "find_text", al, ac );
  270. X    widget47 = XmCreatePushButton ( find_form, "close", al, ac );
  271. X    find_next = XmCreatePushButton ( find_form, "find_next", al, ac );
  272. X    XtSetArg(al[ac], XmNcancelButton, widget47);
  273. X    ac++;
  274. X    XtSetArg(al[ac], XmNdefaultButton, find_next);
  275. X    ac++;
  276. X    XtSetValues ( find_form,al, ac );
  277. X    ac = 0;
  278. X
  279. X    XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM);
  280. X    ac++;
  281. X    XtSetArg(al[ac], XmNtopOffset, 5);
  282. X    ac++;
  283. X    XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET);
  284. X    ac++;
  285. X    XtSetArg(al[ac], XmNbottomOffset, 5);
  286. X    ac++;
  287. X    XtSetArg(al[ac], XmNbottomWidget, find_next);
  288. X    ac++;
  289. X    XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM);
  290. X    ac++;
  291. X    XtSetArg(al[ac], XmNleftOffset, 5);
  292. X    ac++;
  293. X    XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM);
  294. X    ac++;
  295. X    XtSetArg(al[ac], XmNrightOffset, 5);
  296. X    ac++;
  297. X    XtSetValues ( find_text,al, ac );
  298. X    ac = 0;
  299. X
  300. X    XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE);
  301. X    ac++;
  302. X    XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM);
  303. X    ac++;
  304. X    XtSetArg(al[ac], XmNbottomOffset, 5);
  305. X    ac++;
  306. X    XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM);
  307. X    ac++;
  308. X    XtSetArg(al[ac], XmNleftOffset, 5);
  309. X    ac++;
  310. X    XtSetValues ( widget47,al, ac );
  311. X    ac = 0;
  312. X
  313. X    XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE);
  314. X    ac++;
  315. X    XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM);
  316. X    ac++;
  317. X    XtSetArg(al[ac], XmNbottomOffset, 5);
  318. X    ac++;
  319. X    XtSetArg(al[ac], XmNleftAttachment, XmATTACH_NONE);
  320. X    ac++;
  321. X    XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM);
  322. X    ac++;
  323. X    XtSetArg(al[ac], XmNrightOffset, 5);
  324. X    ac++;
  325. X    XtSetValues ( find_next,al, ac );
  326. X    ac = 0;
  327. X    XtAddCallback (widget47,XmNactivateCallback, XDunmanage_link, &find_form );
  328. X    XtAddCallback (find_next, XmNactivateCallback, find_callback,NULL);
  329. X    children[ac++] = find_text;
  330. X    children[ac++] = widget47;
  331. X    children[ac++] = find_next;
  332. X    XtManageChildren(children, ac);
  333. X    ac = 0;
  334. X}
  335. X
  336. X
  337. X
  338. Xcreate_selection( parent )
  339. XWidget parent;
  340. X{
  341. X    Display *display = XtDisplay ( parent );
  342. X    Widget children[13];      /* Children to manage */
  343. X    Arg al[64];           /* Arg List */
  344. X    register int ac = 0;      /* Arg Count */
  345. X    char from_s [256];    /* For font list conversion */
  346. X    XrmValue from_value, to_value; /* ditto */
  347. X    int fg, bg;           /* colour values for pixmaps */
  348. X
  349. X    XmString *list_items; /* For list items */
  350. X    int list_item;        /* Index for list_items */
  351. X    XmString xmstrings[15];    /* temporary storage for XmStrings */
  352. X    Widget widget8;
  353. X    Widget widget15;
  354. X
  355. X    XtSetArg(al[ac], XmNallowShellResize, TRUE);
  356. X    ac++;
  357. X    selection = XmCreateDialogShell ( parent, "selection", al, ac );
  358. X    ac = 0;
  359. X    fsb = XmCreateFileSelectionBox ( selection, "fsb", al, ac );
  360. X    widget8 = XmSelectionBoxGetChild ( fsb, XmDIALOG_CANCEL_BUTTON );
  361. X    widget15 = XmSelectionBoxGetChild ( fsb, XmDIALOG_OK_BUTTON );
  362. X
  363. X
  364. X    XtAddCallback (fsb, XmNokCallback, fsb_callback,NULL);
  365. X    XtAddCallback (widget8,XmNactivateCallback, XDunmanage_link, &fsb );
  366. X    XtAddCallback (widget15,XmNactivateCallback, XDunmanage_link, &fsb );
  367. X}
  368. X
  369. X
  370. X
  371. Xcreate_top( display, app_name, app_argc, app_argv )
  372. XDisplay *display;
  373. Xchar *app_name;
  374. Xint app_argc;
  375. Xchar **app_argv;
  376. X{
  377. X    Widget children[9];      /* Children to manage */
  378. X    Arg al[64];           /* Arg List */
  379. X    register int ac = 0;      /* Arg Count */
  380. X    char from_s [256];    /* For font list conversion */
  381. X    XrmValue from_value, to_value; /* ditto */
  382. X    int fg, bg;           /* colour values for pixmaps */
  383. X
  384. X    XmString *list_items; /* For list items */
  385. X    int list_item;        /* Index for list_items */
  386. X    XmString xmstrings[15];    /* temporary storage for XmStrings */
  387. X    Widget widget29;
  388. X    Widget widget30;
  389. X    Widget widget31;
  390. X    Widget widget32;
  391. X
  392. X    XtSetArg(al[ac], XmNallowShellResize, TRUE);
  393. X    ac++;
  394. X    XtSetArg(al[ac], XmNargc, app_argc);
  395. X    ac++;
  396. X    XtSetArg(al[ac], XmNargv, app_argv);
  397. X    ac++;
  398. X    top = XtAppCreateShell ( app_name, "HMan", applicationShellWidgetClass, display, al, ac );
  399. X    ac = 0;
  400. X    XtSetArg(al[ac], XmNautoUnmanage, FALSE);
  401. X    ac++;
  402. X    form = XmCreateForm ( top, "form", al, ac );
  403. X    ac = 0;
  404. X    XtSetArg(al[ac], XmNwidth, 526);
  405. X    ac++;
  406. X    XtSetArg(al[ac], XmNheight, 582);
  407. X    ac++;
  408. X    XtSetArg(al[ac], XmNscrollingPolicy, XmAUTOMATIC);
  409. X    ac++;
  410. X    scrollw = XmCreateScrolledWindow ( form, "scrollw", al, ac );
  411. X    ac = 0;
  412. X
  413. X    XtSetArg(al[ac], XmNhorizontalScrollBar, &widget29 );
  414. X    ac++;
  415. X    XtSetArg(al[ac], XmNverticalScrollBar, &widget30 );
  416. X    ac++;
  417. X    XtGetValues(scrollw, al, ac );
  418. X    ac = 0;
  419. X    widget31 = XmCreateSeparator ( form, "widget31", al, ac );
  420. X    XtSetArg(al[ac], XmNorientation, XmHORIZONTAL);
  421. X    ac++;
  422. X    XtSetArg(al[ac], XmNadjustLast, FALSE);
  423. X    ac++;
  424. X    widget32 = XmCreateRowColumn ( form, "widget32", al, ac );
  425. X    ac = 0;
  426. X    keyword = XmCreateLabel ( widget32, "keyword", al, ac );
  427. X    keyword_text = XmCreateTextField ( widget32, "keyword_text", al, ac );
  428. X    section = XmCreateLabel ( widget32, "section", al, ac );
  429. X    XtSetArg(al[ac], XmNmaxLength, 3);
  430. X    ac++;
  431. X    section_text = XmCreateTextField ( widget32, "section_text", al, ac );
  432. X    ac = 0;
  433. X    in_index = XmCreateToggleButton ( widget32, "in_index", al, ac );
  434. X    XtSetArg(al[ac], XmNsensitive, FALSE);
  435. X    ac++;
  436. X    previous = XmCreatePushButton ( form, "previous", al, ac );
  437. X    ac = 0;
  438. X    XtSetArg(al[ac], XmNsensitive, FALSE);
  439. X    ac++;
  440. X    next = XmCreatePushButton ( form, "next", al, ac );
  441. X    ac = 0;
  442. X    quit = XmCreatePushButton ( form, "quit", al, ac );
  443. X    clone = XmCreatePushButton ( form, "clone", al, ac );
  444. X    other = XmCreatePushButton ( form, "other", al, ac );
  445. X    xmstrings[0] = XmStringCreateLtoR("Search...", (XmStringCharSet)XmSTRING_DEFAULT_CHARSET);
  446. X    XtSetArg(al[ac], XmNlabelString, xmstrings[0]);
  447. X    ac++;
  448. X    search = XmCreatePushButton ( form, "search", al, ac );
  449. X    ac = 0;
  450. X    XmStringFree ( xmstrings [ 0 ] );
  451. X
  452. X    XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM);
  453. X    ac++;
  454. X    XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET);
  455. X    ac++;
  456. X    XtSetArg(al[ac], XmNbottomOffset, 5);
  457. X    ac++;
  458. X    XtSetArg(al[ac], XmNbottomWidget, widget31);
  459. X    ac++;
  460. X    XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM);
  461. X    ac++;
  462. X    XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM);
  463. X    ac++;
  464. X    XtSetValues ( scrollw,al, ac );
  465. X    ac = 0;
  466. X
  467. X    XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE);
  468. X    ac++;
  469. X    XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET);
  470. X    ac++;
  471. X    XtSetArg(al[ac], XmNbottomOffset, 5);
  472. X    ac++;
  473. X    XtSetArg(al[ac], XmNbottomWidget, widget32);
  474. X    ac++;
  475. X    XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM);
  476. X    ac++;
  477. X    XtSetArg(al[ac], XmNleftOffset, 5);
  478. X    ac++;
  479. X    XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM);
  480. X    ac++;
  481. X    XtSetArg(al[ac], XmNrightOffset, 5);
  482. X    ac++;
  483. X    XtSetValues ( widget31,al, ac );
  484. X    ac = 0;
  485. X
  486. X    XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE);
  487. X    ac++;
  488. X    XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET);
  489. X    ac++;
  490. X    XtSetArg(al[ac], XmNbottomOffset, 5);
  491. X    ac++;
  492. X    XtSetArg(al[ac], XmNbottomWidget, quit);
  493. X    ac++;
  494. X    XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM);
  495. X    ac++;
  496. X    XtSetArg(al[ac], XmNleftOffset, 5);
  497. X    ac++;
  498. X    XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM);
  499. X    ac++;
  500. X    XtSetArg(al[ac], XmNrightOffset, 5);
  501. X    ac++;
  502. X    XtSetValues ( widget32,al, ac );
  503. X    ac = 0;
  504. X
  505. X    XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE);
  506. X    ac++;
  507. X    XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM);
  508. X    ac++;
  509. X    XtSetArg(al[ac], XmNbottomOffset, 5);
  510. X    ac++;
  511. X    XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM);
  512. X    ac++;
  513. X    XtSetArg(al[ac], XmNleftOffset, 5);
  514. X    ac++;
  515. X    XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE);
  516. X    ac++;
  517. X    XtSetValues ( previous,al, ac );
  518. X    ac = 0;
  519. X
  520. X    XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE);
  521. X    ac++;
  522. X    XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM);
  523. X    ac++;
  524. X    XtSetArg(al[ac], XmNbottomOffset, 5);
  525. X    ac++;
  526. X    XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET);
  527. X    ac++;
  528. X    XtSetArg(al[ac], XmNleftOffset, 5);
  529. X    ac++;
  530. X    XtSetArg(al[ac], XmNleftWidget, previous);
  531. X    ac++;
  532. X    XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE);
  533. X    ac++;
  534. X    XtSetValues ( next,al, ac );
  535. X    ac = 0;
  536. X
  537. X    XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE);
  538. X    ac++;
  539. X    XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM);
  540. X    ac++;
  541. X    XtSetArg(al[ac], XmNbottomOffset, 5);
  542. X    ac++;
  543. X    XtSetArg(al[ac], XmNleftAttachment, XmATTACH_NONE);
  544. X    ac++;
  545. X    XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM);
  546. X    ac++;
  547. X    XtSetArg(al[ac], XmNrightOffset, 5);
  548. X    ac++;
  549. X    XtSetValues ( quit,al, ac );
  550. X    ac = 0;
  551. X
  552. X    XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE);
  553. X    ac++;
  554. X    XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM);
  555. X    ac++;
  556. X    XtSetArg(al[ac], XmNbottomOffset, 5);
  557. X    ac++;
  558. X    XtSetArg(al[ac], XmNleftAttachment, XmATTACH_NONE);
  559. X    ac++;
  560. X    XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET);
  561. X    ac++;
  562. X    XtSetArg(al[ac], XmNrightOffset, 5);
  563. X    ac++;
  564. X    XtSetArg(al[ac], XmNrightWidget, quit);
  565. X    ac++;
  566. X    XtSetValues ( clone,al, ac );
  567. X    ac = 0;
  568. X
  569. X    XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE);
  570. X    ac++;
  571. X    XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM);
  572. X    ac++;
  573. X    XtSetArg(al[ac], XmNbottomOffset, 5);
  574. X    ac++;
  575. X    XtSetArg(al[ac], XmNleftAttachment, XmATTACH_NONE);
  576. X    ac++;
  577. X    XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET);
  578. X    ac++;
  579. X    XtSetArg(al[ac], XmNrightOffset, 5);
  580. X    ac++;
  581. X    XtSetArg(al[ac], XmNrightWidget, clone);
  582. X    ac++;
  583. X    XtSetValues ( other,al, ac );
  584. X    ac = 0;
  585. X
  586. X    XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE);
  587. X    ac++;
  588. X    XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM);
  589. X    ac++;
  590. X    XtSetArg(al[ac], XmNbottomOffset, 5);
  591. X    ac++;
  592. X    XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET);
  593. X    ac++;
  594. X    XtSetArg(al[ac], XmNleftOffset, 5);
  595. X    ac++;
  596. X    XtSetArg(al[ac], XmNleftWidget, next);
  597. X    ac++;
  598. X    XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE);
  599. X    ac++;
  600. X    XtSetValues ( search,al, ac );
  601. X    ac = 0;
  602. X    XmScrolledWindowSetAreas(scrollw, widget29, widget30, (Widget) NULL );
  603. X    XtAddCallback (keyword_text, XmNactivateCallback, text_activate_callback,NULL);
  604. X    XtAddCallback (section_text, XmNactivateCallback, text_activate_callback,NULL);
  605. X    children[ac++] = keyword;
  606. X    children[ac++] = keyword_text;
  607. X    children[ac++] = section;
  608. X    children[ac++] = section_text;
  609. X    children[ac++] = in_index;
  610. X    XtManageChildren(children, ac);
  611. X    ac = 0;
  612. X    XtAddCallback (previous, XmNactivateCallback, previous_callback,NULL);
  613. X    XtAddCallback (next, XmNactivateCallback, next_callback,NULL);
  614. X    XtAddCallback (quit, XmNactivateCallback, quit_callback,NULL);
  615. X    XtAddCallback (clone, XmNactivateCallback, clone_callback,NULL);
  616. X    XtAddCallback (other,XmNactivateCallback, XDmanage_link, &fsb );
  617. X    XtAddCallback (search,XmNactivateCallback, XDmanage_link, &find_form );
  618. X    children[ac++] = scrollw;
  619. X    children[ac++] = widget31;
  620. X    children[ac++] = widget32;
  621. X    children[ac++] = previous;
  622. X    children[ac++] = next;
  623. X    children[ac++] = quit;
  624. X    children[ac++] = clone;
  625. X    children[ac++] = other;
  626. X    children[ac++] = search;
  627. X    XtManageChildren(children, ac);
  628. X    ac = 0;
  629. X    XtManageChild ( form);
  630. X}
  631. X
  632. X
  633. X
  634. X
  635. XXtAppContext app_context;
  636. XDisplay *display;       /*  Display             */
  637. X
  638. Xvoid main (argc,argv)
  639. Xunsigned int    argc;
  640. Xchar            **argv;
  641. X{
  642. X    XtToolkitInitialize ();
  643. X    app_context = XtCreateApplicationContext ();
  644. X    display = XtOpenDisplay (app_context, NULL, argv[0], "HMan",
  645. X        NULL, 0, &argc, argv);
  646. X    if (!display)
  647. X    {
  648. X        printf("%s: can't open display, exiting...\n", argv[0]);
  649. X        exit (0);
  650. X    }
  651. X    /* Register converters, just in case you are really unlucky !! */
  652. X    XmRegisterConverters();
  653. X    /* String to unit type doesn't get added !! */
  654. X    XtAddConverter ( XmRString, XmRUnitType, XmCvtStringToUnitType, NULL, 0 );
  655. X    create_top ( display, argv[0], argc, argv );
  656. X    create_find ( top );
  657. X    create_selection ( top );
  658. X
  659. X    init_manual(argc,argv);
  660. X
  661. X    XtRealizeWidget (top);
  662. X    XtAppMainLoop (app_context);
  663. X}
  664. X
  665. SHAR_EOF
  666. chmod 0644 hman.c || echo "restore of hman.c fails"
  667. set `wc -c hman.c`;Sum=$1
  668. if test "$Sum" != "15700"
  669. then echo original size 15700, current size $Sum;fi
  670. echo "x - extracting cbacks.c (Text)"
  671. sed 's/^X//' << 'SHAR_EOF' > cbacks.c &&
  672. X/*-----------------------------------------------------------------------*/
  673. X/* This is a Quick and Dirty software to demonstrate a use of the        */
  674. X/* HyperWidget.                                                          */
  675. X/* B.Raoult Oct.91                                                       */
  676. X/*-----------------------------------------------------------------------*/
  677. X
  678. X
  679. X#define MAN    "man"
  680. X#define NROFF  "nroff -man"
  681. X#define FILTER "| col -b"       /* remove backspaces */
  682. X
  683. X#include <ctype.h>
  684. X#include <string.h>
  685. X#include <stdio.h>
  686. X#include <Xm/Xm.h>
  687. X#include <X11/cursorfont.h>
  688. X#include <Xm/TextF.h>
  689. X#include "Hyper.h"
  690. X#include "hman.h"
  691. X#include "patchlevel.h"
  692. X
  693. X#define MAX_HISTORY 100
  694. X
  695. Xextern Widget top;
  696. Xextern Widget scrollw;
  697. Xextern Widget keyword_text;
  698. Xextern Widget section_text;
  699. Xextern Widget in_index;
  700. Xextern Widget next;
  701. Xextern Widget previous;
  702. Xextern Widget find;
  703. Xextern Widget find_text;
  704. X
  705. Xstatic Widget hyper;
  706. Xstatic char cmd[1024];
  707. Xstatic char *progname;
  708. X
  709. SHAR_EOF
  710. echo "End of part 1"
  711. echo "File cbacks.c is continued in part 2"
  712. echo "2" > s2_seq_.tmp
  713. exit 0
  714. -- 
  715. --
  716. Molecular Simulations, Inc.            mail: dcmartin@msi.com
  717. 796 N. Pastoria Avenue                uucp: uunet!dcmartin
  718. Sunnyvale, California 94086            at&t: 408/522-9236
  719.