home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / x / volume20 / mrolo / part02 < prev    next >
Encoding:
Text File  |  1993-07-14  |  27.0 KB  |  938 lines

  1. Newsgroups: comp.sources.x
  2. From: gregor@asdi.saic.com (Gregg Hanna x6033)
  3. Subject: v20i097:  mrolo - Motif rolodex, Part02/02
  4. Message-ID: <1993Jul15.214544.13577@sparky.sterling.com>
  5. X-Md4-Signature: 8d378b4db2b4e1acf42b62161267ea81
  6. Sender: chris@sparky.sterling.com (Chris Olson)
  7. Organization: Sterling Software
  8. Date: Thu, 15 Jul 1993 21:45:44 GMT
  9. Approved: chris@sterling.com
  10.  
  11. Submitted-by: gregor@asdi.saic.com (Gregg Hanna x6033)
  12. Posting-number: Volume 20, Issue 97
  13. Archive-name: mrolo/part02
  14. Environment: X11, OSF/Motif
  15.  
  16. #! /bin/sh
  17. # This is a shell archive.  Remove anything before this line, then unpack
  18. # it by saving it into a file and typing "sh file".  To overwrite existing
  19. # files, type "sh file -c".  You can also feed this as standard input via
  20. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  21. # will see the following message at the end:
  22. #        "End of archive 2 (of 2)."
  23. # Contents:  mrolo/creation.c mrolo/rolo.c
  24. # Wrapped by gregor@asdi on Wed Jun 23 19:55:49 1993
  25. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  26. if test -f 'mrolo/creation.c' -a "${1}" != "-c" ; then 
  27.   echo shar: Will not clobber existing file \"'mrolo/creation.c'\"
  28. else
  29. echo shar: Extracting \"'mrolo/creation.c'\" \(17363 characters\)
  30. sed "s/^X//" >'mrolo/creation.c' <<'END_OF_FILE'
  31. X/* Copyright 1993 by gregg hanna */
  32. X/*
  33. X * Generated by the ICS builderXcessory (BX).
  34. X *
  35. X *
  36. X * Builder Xcessory 1.0.1.
  37. X *
  38. X */
  39. X
  40. X/*
  41. X * REQUIRED MOTIF INCLUDE FILES
  42. X */
  43. X#include <Xm/Xm.h>
  44. X#include <X11/Shell.h>
  45. X#include <Xm/ArrowB.h>
  46. X#include <Xm/ArrowBG.h>
  47. X#include <Xm/BulletinB.h>
  48. X#include <Xm/CascadeB.h>
  49. X#include <Xm/CascadeBG.h>
  50. X#include <Xm/Command.h>
  51. X#include <Xm/CutPaste.h>
  52. X#include <Xm/DialogS.h>
  53. X#include <Xm/DrawingA.h>
  54. X#include <Xm/DrawnB.h>
  55. X#include <Xm/FileSB.h>
  56. X#include <Xm/Form.h>
  57. X#include <Xm/Frame.h>
  58. X#include <Xm/Label.h>
  59. X#include <Xm/LabelG.h>
  60. X#include <Xm/List.h>
  61. X#include <Xm/MainW.h>
  62. X#include <Xm/MenuShell.h>
  63. X#include <Xm/MessageB.h>
  64. X#include <Xm/PanedW.h>
  65. X#include <Xm/PushB.h>
  66. X#include <Xm/PushBG.h>
  67. X#include <Xm/RowColumn.h>
  68. X#include <Xm/Scale.h>
  69. X#include <Xm/ScrollBar.h>
  70. X#include <Xm/ScrolledW.h>
  71. X#include <Xm/SelectioB.h>
  72. X#include <Xm/SeparatoG.h>
  73. X#include <Xm/Separator.h>
  74. X#include <Xm/Text.h>
  75. X#include <Xm/ToggleB.h>
  76. X#include <Xm/ToggleBG.h>
  77. X
  78. X/*
  79. X * USER SUPPLIED INCLUDE FILES
  80. X */
  81. X
  82. X
  83. X#ifndef IGNORE_STRING_TABLE
  84. X#include <varargs.h>
  85. X
  86. Xstatic XmString*
  87. XSTRING_TABLE(va_alist)
  88. Xva_dcl
  89. X{
  90. X    va_list    ap;
  91. X    int        count;
  92. X    XmString    *array;
  93. X    int        i;
  94. X
  95. X    va_start(ap);
  96. X    count = va_arg(ap, int);
  97. X    array = (XmString*)XtMalloc((count + 1) * sizeof(XmString*));
  98. X    for(i = 0;  i < count; i++ )
  99. X    {
  100. X    array[i] = XmStringCreateLtoR(va_arg(ap, char*),
  101. X        XmSTRING_DEFAULT_CHARSET);
  102. X    }
  103. X    array[count] = (XmString)0;
  104. X    va_end(ap);
  105. X    return(array);
  106. X}
  107. X
  108. Xstatic void
  109. XFREE_STRING_TABLE(table)
  110. XXmString    *table;
  111. X{
  112. X    int        i;
  113. X
  114. X    for( i = 0; table[i] != 0 ; i++)
  115. X    {
  116. X    XmStringFree(table[i]);
  117. X    }
  118. X    XtFree(table);
  119. X}
  120. X#endif
  121. X
  122. X/*
  123. X * CALLBACK PROCEDURE DECLARATIONS
  124. X */
  125. Xextern void ActuallyDeleteCard();
  126. Xextern void AddCard();
  127. Xextern void CancelCard();
  128. Xextern void DeleteCard();
  129. Xextern void DontDeleteCard();
  130. Xextern void OKCard();
  131. Xextern void QuitProg();
  132. Xextern void Selected();
  133. Xextern void SpinRolo();
  134. Xextern void ChangeFilter();
  135. Xextern void ClearFilter();
  136. Xextern void ReturnHit();
  137. X
  138. XWidget ListForRolo;
  139. XWidget filterText;
  140. X
  141. XWidget
  142. XCreateform(parent)
  143. XWidget parent;
  144. X{
  145. X    Arg        args[512];
  146. X    int        argcnt;
  147. X    Widget     retval;
  148. X    XmString    xmstr[32];
  149. X    XmString    *xmstrTable[8];
  150. X    Widget    form;
  151. X    Widget    indexList;
  152. X    Widget    addressList;
  153. X    Widget    rowColumn;
  154. X    Widget    addCardButton;
  155. X    Widget    quitButton;
  156. X    Widget    clearButton;
  157. X
  158. X    XmRegisterConverters();
  159. X    argcnt = 0;
  160. X    XtSetArg(args[argcnt], XmNx, 0); argcnt++;
  161. X    XtSetArg(args[argcnt], XmNy, 0); argcnt++;
  162. X    form = XtCreateWidget("form",
  163. X        xmFormWidgetClass,
  164. X        parent,
  165. X        args,
  166. X        argcnt);
  167. X
  168. X    retval = form;
  169. X    argcnt = 0;
  170. X    XtSetArg(args[argcnt], XmNorientation, XmHORIZONTAL); argcnt++;
  171. X    XtSetArg(args[argcnt], XmNentryAlignment, XmALIGNMENT_CENTER); argcnt++;
  172. X    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
  173. X    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;
  174. X    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
  175. X    XtSetArg(args[argcnt], XmNleftOffset, (int)2); argcnt++;
  176. X    XtSetArg(args[argcnt], XmNrightOffset, (int)2); argcnt++;
  177. X    XtSetArg(args[argcnt], XmNtopOffset, (int)2); argcnt++;
  178. X    XtSetArg(args[argcnt], XmNx, 0); argcnt++;
  179. X    XtSetArg(args[argcnt], XmNy, 0); argcnt++;
  180. X    rowColumn = XtCreateWidget("rowColumn",
  181. X        xmRowColumnWidgetClass,
  182. X        form,
  183. X        args,
  184. X        argcnt);
  185. X
  186. X    XtManageChild(rowColumn);
  187. X
  188. X    argcnt = 0;
  189. X    XtSetArg(args[argcnt], XmNshadowThickness, (short)0); argcnt++;
  190. X    XtSetArg(args[argcnt], XmNitems, (xmstrTable[0]=STRING_TABLE(26, "A",
  191. X        "B","C","D","E","F","G","H","I","J","K","L",
  192. X        "M","N","O","P","Q","R","S","T","U","V","W",
  193. X        "X","Y","Z"))); argcnt++;
  194. X    XtSetArg(args[argcnt], XmNitemCount, (int)26); argcnt++;
  195. X    XtSetArg(args[argcnt], XmNvisibleItemCount, (int)27); argcnt++;
  196. X    XtSetArg(args[argcnt], XmNselectionPolicy, XmSINGLE_SELECT); argcnt++;
  197. X    XtSetArg(args[argcnt], XmNlistSizePolicy, XmRESIZE_IF_POSSIBLE); argcnt++;
  198. X    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
  199. X    XtSetArg(args[argcnt], XmNtopOffset, (int)2); argcnt++;
  200. X    XtSetArg(args[argcnt], XmNleftOffset, (int)2); argcnt++;
  201. X    XtSetArg(args[argcnt], XmNx, 2); argcnt++;
  202. X    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;
  203. X    XtSetArg(args[argcnt], XmNtopWidget, rowColumn); argcnt++;
  204. X    indexList = XtCreateWidget("indexList",
  205. X        xmListWidgetClass,
  206. X        form,
  207. X        args,
  208. X        argcnt);
  209. X    FREE_STRING_TABLE( xmstrTable[0] );
  210. X
  211. X    XtAddCallback(indexList, XmNsingleSelectionCallback, SpinRolo, (caddr_t)0);
  212. X    XtManageChild(indexList);
  213. X    argcnt = 0;
  214. X    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;
  215. X    XtSetArg(args[argcnt], XmNtopWidget, rowColumn); argcnt++;
  216. X    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
  217. X    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_WIDGET); argcnt++;
  218. X    XtSetArg(args[argcnt], XmNleftWidget, indexList); argcnt++;
  219. X    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;
  220. X    XtSetArg(args[argcnt], XmNtopOffset, (int)2); argcnt++;
  221. X    XtSetArg(args[argcnt], XmNbottomOffset, (int)2); argcnt++;
  222. X    XtSetArg(args[argcnt], XmNleftOffset, (int)2); argcnt++;
  223. X    XtSetArg(args[argcnt], XmNrightOffset, (int)2); argcnt++;
  224. X    XtSetArg(args[argcnt], XmNscrollBarDisplayPolicy, XmSTATIC); argcnt++;
  225. X    XtSetArg(args[argcnt], XmNselectionPolicy, XmSINGLE_SELECT); argcnt++;
  226. X    addressList = XmCreateScrolledList(form,"addressList",
  227. X        args,
  228. X        argcnt);
  229. X    ListForRolo = addressList;
  230. X
  231. X    XtAddCallback(addressList, XmNsingleSelectionCallback, Selected, (caddr_t)0);
  232. X    XtManageChild(addressList);
  233. X
  234. X    argcnt = 0;
  235. X    XtSetArg(args[argcnt], XmNalignment, XmALIGNMENT_CENTER); argcnt++;
  236. X    addCardButton = XtCreateWidget("addCardButton",
  237. X        xmPushButtonWidgetClass,
  238. X        rowColumn,
  239. X        args,
  240. X        argcnt);
  241. X
  242. X    XtAddCallback(addCardButton, XmNactivateCallback, AddCard, (caddr_t)0);
  243. X    XtManageChild(addCardButton);
  244. X    argcnt = 0;
  245. X    XtSetArg(args[argcnt], XmNalignment, XmALIGNMENT_CENTER); argcnt++;
  246. X    quitButton = XtCreateWidget("quitButton",
  247. X        xmPushButtonWidgetClass,
  248. X        rowColumn,
  249. X        args,
  250. X        argcnt);
  251. X
  252. X    XtAddCallback(quitButton, XmNactivateCallback, QuitProg, (caddr_t)0);
  253. X    XtManageChild(quitButton);
  254. X
  255. X    argcnt = 0;
  256. X    /*XtSetArg(args[argcnt], XmNcolumns, (short)12); argcnt++;*/
  257. X    XtSetArg(args[argcnt], XmNrows, (short)1); argcnt++;
  258. X    filterText = XtCreateWidget("filterText",
  259. X        xmTextWidgetClass,
  260. X        rowColumn,
  261. X        args,
  262. X        argcnt);
  263. X
  264. X    XtAddCallback(filterText, XmNactivateCallback, ChangeFilter, (caddr_t)0);
  265. X    XtManageChild(filterText);
  266. X
  267. X    argcnt = 0;
  268. X    XtSetArg(args[argcnt], XmNalignment, XmALIGNMENT_CENTER); argcnt++;
  269. X    clearButton = XtCreateWidget("clearButton",
  270. X        xmPushButtonWidgetClass,
  271. X        rowColumn,
  272. X        args,
  273. X        argcnt);
  274. X
  275. X    XtAddCallback(clearButton, XmNactivateCallback, ClearFilter, (caddr_t)0);
  276. X    XtManageChild(clearButton);
  277. X
  278. X    return( retval );
  279. X}
  280. X
  281. XWidget nameText, numberText, numberText2, commentText, deleteCardButton;
  282. X
  283. XWidget
  284. XCreateform1(parent)
  285. XWidget parent;
  286. X{
  287. X    Arg        args[512];
  288. X    int        argcnt;
  289. X    Widget     retval;
  290. X    Widget    form1;
  291. X    Widget    nameLabel;
  292. X    Widget    primaryLabel;
  293. X    Widget    secondaryLabel;
  294. X    Widget    okButton;
  295. X    Widget    cancelButton;
  296. X    Widget    separator;
  297. X    Widget    rowColumn1;
  298. X    XmRegisterConverters();
  299. X    argcnt = 0;
  300. X    XtSetArg(args[argcnt], XmNx, 0); argcnt++;
  301. X    XtSetArg(args[argcnt], XmNy, 0); argcnt++;
  302. X    form1 = XtCreateWidget("form1",
  303. X        xmFormWidgetClass,
  304. X        parent,
  305. X        args,
  306. X        argcnt);
  307. X
  308. X    retval = form1;
  309. X    argcnt = 0;
  310. X    XtSetArg(args[argcnt], XmNseparatorType, 6); argcnt++;
  311. X    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_NONE); argcnt++;
  312. X    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
  313. X    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
  314. X    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;
  315. X    XtSetArg(args[argcnt], XmNtopOffset, (int)0); argcnt++;
  316. X    XtSetArg(args[argcnt], XmNbottomOffset, (int)0); argcnt++;
  317. X    XtSetArg(args[argcnt], XmNleftOffset, (int)0); argcnt++;
  318. X    XtSetArg(args[argcnt], XmNrightOffset, (int)0); argcnt++;
  319. X    XtSetArg(args[argcnt], XmNheight, 10); argcnt++;
  320. X    separator = XtCreateWidget("separator",
  321. X        xmSeparatorWidgetClass,
  322. X        form1,
  323. X        args,
  324. X        argcnt);
  325. X
  326. X    XtManageChild(separator);
  327. X    argcnt = 0;
  328. X    XtSetArg(args[argcnt], XmNorientation, XmHORIZONTAL); argcnt++;
  329. X    XtSetArg(args[argcnt], XmNentryAlignment, XmALIGNMENT_CENTER); argcnt++;
  330. X    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
  331. X    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;
  332. X    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
  333. X    XtSetArg(args[argcnt], XmNleftOffset, (int)2); argcnt++;
  334. X    XtSetArg(args[argcnt], XmNrightOffset, (int)2); argcnt++;
  335. X    XtSetArg(args[argcnt], XmNbottomOffset, (int)2); argcnt++;
  336. X    rowColumn1 = XtCreateWidget("rowColumn1",
  337. X        xmRowColumnWidgetClass,
  338. X        form1,
  339. X        args,
  340. X        argcnt);
  341. X
  342. X    XtManageChild(rowColumn1);
  343. X
  344. X    argcnt = 0;
  345. X    okButton = XtCreateWidget("okButton",
  346. X        xmPushButtonWidgetClass,
  347. X        rowColumn1,
  348. X        args,
  349. X        argcnt);
  350. X
  351. X    XtAddCallback(okButton, XmNactivateCallback, OKCard, (caddr_t)0);
  352. X    XtManageChild(okButton);
  353. X    argcnt = 0;
  354. X    deleteCardButton = XtCreateWidget("deleteCardButton",
  355. X        xmPushButtonWidgetClass,
  356. X        rowColumn1,
  357. X        args,
  358. X        argcnt);
  359. X
  360. X    XtAddCallback(deleteCardButton, XmNactivateCallback, DeleteCard, (caddr_t)0);
  361. X    XtManageChild(deleteCardButton);
  362. X    argcnt = 0;
  363. X    cancelButton = XtCreateWidget("cancelButton",
  364. X        xmPushButtonWidgetClass,
  365. X        rowColumn1,
  366. X        args,
  367. X        argcnt);
  368. X
  369. X    XtAddCallback(cancelButton, XmNactivateCallback, CancelCard, (caddr_t)0);
  370. X    XtManageChild(cancelButton);
  371. X    argcnt = 0;
  372. X    XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
  373. X    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
  374. X    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
  375. X    XtSetArg(args[argcnt], XmNtopOffset, (int)12); argcnt++;
  376. X    XtSetArg(args[argcnt], XmNleftOffset, (int)0); argcnt++;
  377. X    XtSetArg(args[argcnt], XmNwidth, 81); argcnt++;
  378. X    primaryLabel = XtCreateWidget("primaryLabel",
  379. X        xmLabelWidgetClass,
  380. X        form1,
  381. X        args,
  382. X        argcnt);
  383. X
  384. X    XtManageChild(primaryLabel);
  385. X    argcnt = 0;
  386. X    XtSetArg(args[argcnt], XmNmaxLength, (int)100); argcnt++;
  387. X    XtSetArg(args[argcnt], XmNeditMode, XmSINGLE_LINE_EDIT); argcnt++;
  388. X    XtSetArg(args[argcnt], XmNcolumns, (short)20); argcnt++;
  389. X    XtSetArg(args[argcnt], XmNrows, (short)1); argcnt++;
  390. X    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
  391. X    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
  392. X    XtSetArg(args[argcnt], XmNtopOffset, (int)-5); argcnt++;
  393. X    XtSetArg(args[argcnt], XmNleftOffset, (int)0); argcnt++;
  394. X    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); argcnt++;
  395. X    XtSetArg(args[argcnt], XmNtopWidget, primaryLabel); argcnt++;
  396. X    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_WIDGET); argcnt++;
  397. X    XtSetArg(args[argcnt], XmNleftWidget, primaryLabel); argcnt++;
  398. X    numberText = XtCreateWidget("numberText",
  399. X        xmTextWidgetClass,
  400. X        form1,
  401. X        args,
  402. X        argcnt);
  403. X
  404. X    XtManageChild(numberText);
  405. X    XtAddCallback(numberText, XmNactivateCallback, ReturnHit, (caddr_t)0);
  406. X    argcnt = 0;
  407. X    XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
  408. X    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;
  409. X    XtSetArg(args[argcnt], XmNtopWidget, primaryLabel); argcnt++;
  410. X    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
  411. X    XtSetArg(args[argcnt], XmNtopOffset, (int)12); argcnt++;
  412. X    XtSetArg(args[argcnt], XmNleftOffset, (int)0); argcnt++;
  413. X    XtSetArg(args[argcnt], XmNwidth, 81); argcnt++;
  414. X    secondaryLabel = XtCreateWidget("secondaryLabel",
  415. X        xmLabelWidgetClass,
  416. X        form1,
  417. X        args,
  418. X        argcnt);
  419. X
  420. X    XtManageChild(secondaryLabel);
  421. X    argcnt = 0;
  422. X    XtSetArg(args[argcnt], XmNmaxLength, (int)100); argcnt++;
  423. X    XtSetArg(args[argcnt], XmNeditMode, XmSINGLE_LINE_EDIT); argcnt++;
  424. X    XtSetArg(args[argcnt], XmNcolumns, (short)20); argcnt++;
  425. X    XtSetArg(args[argcnt], XmNrows, (short)1); argcnt++;
  426. X    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
  427. X    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
  428. X    XtSetArg(args[argcnt], XmNtopOffset, (int)-5); argcnt++;
  429. X    XtSetArg(args[argcnt], XmNleftOffset, (int)0); argcnt++;
  430. X    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); argcnt++;
  431. X    XtSetArg(args[argcnt], XmNtopWidget, secondaryLabel); argcnt++;
  432. X    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_WIDGET); argcnt++;
  433. X    XtSetArg(args[argcnt], XmNleftWidget, primaryLabel); argcnt++;
  434. X    numberText2 = XtCreateWidget("numberText",
  435. X        xmTextWidgetClass,
  436. X        form1,
  437. X        args,
  438. X        argcnt);
  439. X
  440. X    XtManageChild(numberText2);
  441. X    XtAddCallback(numberText2, XmNactivateCallback, ReturnHit, (caddr_t)0);
  442. X    argcnt = 0;
  443. X    XtSetArg(args[argcnt], XmNmaxLength, (int)100); argcnt++;
  444. X    XtSetArg(args[argcnt], XmNeditMode, XmSINGLE_LINE_EDIT); argcnt++;
  445. X    XtSetArg(args[argcnt], XmNcolumns, (short)35); argcnt++;
  446. X    XtSetArg(args[argcnt], XmNrows, (short)1); argcnt++;
  447. X    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
  448. X    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
  449. X    XtSetArg(args[argcnt], XmNtopOffset, (int)-5); argcnt++;
  450. X    XtSetArg(args[argcnt], XmNleftOffset, (int)0); argcnt++;
  451. X    nameText = XtCreateWidget("nameText",
  452. X        xmTextWidgetClass,
  453. X        form1,
  454. X        args,
  455. X        argcnt);
  456. X    XtManageChild(nameText);
  457. X    XtAddCallback(nameText, XmNactivateCallback, ReturnHit, (caddr_t)0);
  458. X    argcnt = 0;
  459. X    XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
  460. X    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
  461. X    XtSetArg(args[argcnt], XmNtopOffset, (int)12); argcnt++;
  462. X    XtSetArg(args[argcnt], XmNleftOffset, (int)2); argcnt++;
  463. X    XtSetArg(args[argcnt], XmNx, 2); argcnt++;
  464. X    XtSetArg(args[argcnt], XmNy, 2); argcnt++;
  465. X    XtSetArg(args[argcnt], XmNwidth, 81); argcnt++;
  466. X    nameLabel = XtCreateWidget("nameLabel",
  467. X        xmLabelWidgetClass,
  468. X        form1,
  469. X        args,
  470. X        argcnt);
  471. X    XtManageChild(nameLabel);
  472. X
  473. X    argcnt = 0;
  474. X    XtSetArg(args[argcnt], XmNscrollingPolicy, XmAUTOMATIC); argcnt++;
  475. X    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
  476. X    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;
  477. X    XtSetArg(args[argcnt], XmNbottomOffset, (int)2); argcnt++;
  478. X    XtSetArg(args[argcnt], XmNleftOffset, (int)2); argcnt++;
  479. X    XtSetArg(args[argcnt], XmNrightOffset, (int)2); argcnt++;
  480. X    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_WIDGET); argcnt++;
  481. X    XtSetArg(args[argcnt], XmNbottomWidget, separator); argcnt++;
  482. X    XtSetArg(args[argcnt], XmNeditMode, XmMULTI_LINE_EDIT); argcnt++;
  483. X    XtSetArg(args[argcnt], XmNtopOffset, (int)12); argcnt++;
  484. X    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;
  485. X    XtSetArg(args[argcnt], XmNtopWidget, secondaryLabel); argcnt++;
  486. X    commentText = XmCreateScrolledText(form1,"commentText",
  487. X        args,
  488. X        argcnt);
  489. X    XtManageChild(commentText);
  490. X
  491. X    argcnt = 0;
  492. X    XtSetArg(args[argcnt], XmNtopOffset, (int)-5); argcnt++;
  493. X    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); argcnt++;
  494. X    XtSetArg(args[argcnt], XmNtopWidget, nameLabel); argcnt++;
  495. X    XtSetArg(args[argcnt], XmNleftOffset, (int)0); argcnt++;
  496. X    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_WIDGET); argcnt++;
  497. X    XtSetArg(args[argcnt], XmNleftWidget, nameLabel); argcnt++;
  498. X    XtSetValues(nameText, args, argcnt);
  499. X
  500. X    argcnt = 0;
  501. X    XtSetArg(args[argcnt], XmNtopOffset, (int)12); argcnt++;
  502. X    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;
  503. X    XtSetArg(args[argcnt], XmNtopWidget, nameLabel); argcnt++;
  504. X    XtSetArg(args[argcnt], XmNleftOffset, (int)0); argcnt++;
  505. X    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); argcnt++;
  506. X    XtSetArg(args[argcnt], XmNleftWidget, nameLabel); argcnt++;
  507. X    XtSetValues(primaryLabel, args, argcnt);
  508. X    argcnt = 0;
  509. X    XtSetArg(args[argcnt], XmNbottomOffset, (int)0); argcnt++;
  510. X    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_WIDGET); argcnt++;
  511. X    XtSetArg(args[argcnt], XmNbottomWidget, rowColumn1); argcnt++;
  512. X    XtSetValues(separator, args, argcnt);
  513. X
  514. X    return( retval );
  515. X}
  516. X
  517. XWidget
  518. XCreatemessageBox(parent)
  519. XWidget parent;
  520. X{
  521. X    Arg        args[512];
  522. X    int        argcnt;
  523. X    Widget     retval;
  524. X    XmString    xmstr[32];
  525. X    XmString    *xmstrTable[8];
  526. X    Widget    messageBox;
  527. X    XmRegisterConverters();
  528. X    argcnt = 0;
  529. X    XtSetArg(args[argcnt], XmNdefaultButtonType, XmDIALOG_OK_BUTTON); argcnt++;
  530. X    XtSetArg(args[argcnt], XmNmessageString, (xmstr[0]=XmStringCreateLtoR(
  531. X        "Save changes to this card?",
  532. X        XmSTRING_DEFAULT_CHARSET))); argcnt++;
  533. X    XtSetArg(args[argcnt], XmNmessageAlignment, XmALIGNMENT_CENTER); argcnt++;
  534. X    XtSetArg(args[argcnt], XmNx, 0); argcnt++;
  535. X    XtSetArg(args[argcnt], XmNy, 0); argcnt++;
  536. X    messageBox = XtCreateWidget("messageBox",
  537. X        xmMessageBoxWidgetClass,
  538. X        parent,
  539. X        args,
  540. X        argcnt);
  541. X    XmStringFree( xmstr[0] );
  542. X
  543. X    XtAddCallback(messageBox, XmNcancelCallback, DontDeleteCard, (caddr_t)0);
  544. X    XtAddCallback(messageBox, XmNokCallback, ActuallyDeleteCard, (caddr_t)0);
  545. X    retval = messageBox;
  546. X
  547. X    return( retval );
  548. X}
  549. X
  550. END_OF_FILE
  551. if test 17363 -ne `wc -c <'mrolo/creation.c'`; then
  552.     echo shar: \"'mrolo/creation.c'\" unpacked with wrong size!
  553. fi
  554. # end of 'mrolo/creation.c'
  555. fi
  556. if test -f 'mrolo/rolo.c' -a "${1}" != "-c" ; then 
  557.   echo shar: Will not clobber existing file \"'mrolo/rolo.c'\"
  558. else
  559. echo shar: Extracting \"'mrolo/rolo.c'\" \(6899 characters\)
  560. sed "s/^X//" >'mrolo/rolo.c' <<'END_OF_FILE'
  561. X/* Copyright 1993 by gregg hanna */
  562. X#include <stdio.h>
  563. X#include <stdlib.h>
  564. X#include <ctype.h>
  565. X#include <X11/Xos.h>
  566. X#include <Xm/Xm.h>
  567. X#include <Xm/List.h>
  568. X
  569. X#include "patchlevel.h"
  570. X#include "rolo.h"
  571. X#include "roloP.h"
  572. X
  573. XRoloRec *RoloList = NULL;
  574. X
  575. Xstatic char *rolofile = NULL;
  576. X
  577. Xvoid MakeNewRolo(name,number,number2,text)
  578. X     char *name, *number, *number2, *text;
  579. X{
  580. X  RoloRec *rr, *pp;
  581. X  char *s;
  582. X
  583. X  rr = (RoloRec*)malloc(sizeof(RoloRec));
  584. X
  585. X  rr->next = NULL;
  586. X
  587. X  rr->name = strdup(name);
  588. X  s = index(rr->name,'\n');
  589. X  if ( s != NULL ) *s = '\0';
  590. X
  591. X  rr->number = strdup(number);
  592. X  s = index(rr->number,'\n');
  593. X  if ( s != NULL ) *s = '\0';
  594. X
  595. X  rr->number2 = strdup(number2);
  596. X  s = index(rr->number2,'\n');
  597. X  if ( s != NULL ) *s = '\0';
  598. X
  599. X  rr->text = strdup(text);
  600. X
  601. X  rr->on = 1;
  602. X
  603. X  if ( RoloList == NULL ) RoloList = rr;
  604. X  else if ( strcasecmp(RoloList->name,rr->name) > 0 ) {
  605. X    rr->next = RoloList;
  606. X    RoloList = rr;
  607. X  } else {
  608. X    for ( pp = RoloList; pp->next != NULL; pp = pp->next )
  609. X      if ( strcasecmp(pp->next->name,rr->name) > 0 ) break;
  610. X    rr->next = pp->next;
  611. X    pp->next = rr;
  612. X  }
  613. X}
  614. X
  615. X
  616. Xvoid InitRolo(argc,argv,stop)
  617. X     int argc;
  618. X     char *argv[];
  619. X     int stop;
  620. X{
  621. X  int c;
  622. X  extern char *optarg;
  623. X  FILE *f;
  624. X
  625. X  rolofile = getenv("ROLODEX");
  626. X  if ( rolofile == NULL ) {
  627. X    rolofile = getenv("HOME");
  628. X    if ( rolofile == NULL ) rolofile = ".rolo";
  629. X    else {
  630. X      rolofile = (char*)malloc(500);
  631. X      sprintf(rolofile,"%s/%s",getenv("HOME"),".rolo");
  632. X    }
  633. X  }
  634. X
  635. X  fprintf(stderr,"MRolo Version %d.%d Patch Level %d\n",VERSION_MAJOR,VERSION_MINOR,PATCHLEVEL);
  636. X  while ((c = getopt(argc, argv, "f:h")) != -1) {
  637. X    switch (c) {
  638. X    case 'f':
  639. X      rolofile = optarg;
  640. X      break;
  641. X    case 'h':
  642. X    case '?':
  643. X    default:
  644. X      if (!stop) break;
  645. X      fprintf(stderr,"usage:  %s [-f rolodexfile]\n",argv[0]);
  646. X      exit(1);
  647. X      break;
  648. X    }
  649. X  }
  650. X  f = fopen(rolofile,"r");
  651. X  if ( f == NULL ) {
  652. X    fprintf(stderr,"Creating new rolodex file %s\n",rolofile);
  653. X    f = fopen(rolofile,"w");
  654. X  }
  655. X  fclose(f);
  656. X}
  657. X
  658. Xvoid SetupRolo()
  659. X{
  660. X  FILE *f, *g;
  661. X  char name[BUFSIZE], number[BUFSIZE], number2[BUFSIZE], text[BUFSIZE], *s;
  662. X  int c;
  663. X
  664. X  sprintf(name,"%s-",rolofile);
  665. X  fprintf(stderr,"Backing up '%s' to '%s'.\n",rolofile,name);
  666. X  g = fopen(name,"w");
  667. X  f = fopen(rolofile,"r");
  668. X  if ( f == NULL || g == NULL ) {
  669. X    perror("SetupRolo");
  670. X    exit(1);
  671. X  }
  672. X
  673. X  while (1) {
  674. X    c = fgetc(f);
  675. X    if ( c == -1 ) break;
  676. X    fputc(c,g);
  677. X  }
  678. X
  679. X  fclose(g);
  680. X  rewind(f);
  681. X
  682. X  while (!feof(f)) {
  683. X
  684. X    name[0] = number[0] = number2[0] = '\0';
  685. X
  686. X    /* get three lines, if we hit a ^L, punt */
  687. X    fgets(name,BUFSIZE,f);
  688. X    if ( feof(f) ) /* yikes! eof in a record, or maybe empty file */
  689. X      break;
  690. X    s = strchr(number,(char)26);
  691. X    if ( s == NULL ) {
  692. X      fgets(number,BUFSIZE,f);
  693. X      s = strchr(number,(char)26);
  694. X      if ( s == NULL ) {
  695. X    fgets(number2,BUFSIZE,f);
  696. X    s = strchr(number2,(char)26);
  697. X      }
  698. X    }
  699. X    if ( s != NULL ) {
  700. X      ungetc(26,f);
  701. X      *s = '\0';
  702. X    }
  703. X
  704. X    s = text;
  705. X    while(1){
  706. X      c = fgetc(f);
  707. X      if ( c < 1 || c == 12 ) { *s = '\0'; break; }
  708. X      *s = (char)c;
  709. X      s++;
  710. X    }
  711. X    while ( c != 12 && !feof(f) ) c = fgetc(f);
  712. X
  713. X    MakeNewRolo(name,number,number2,text);
  714. X
  715. X    for ( c = fgetc(f); c == '\n'; c = fgetc(f) );
  716. X
  717. X    if ( c != -1 ) ungetc((char)c,f);
  718. X  }
  719. X
  720. X  fclose(f);
  721. X}
  722. X
  723. XRoloRec *GetN();
  724. X
  725. Xvoid DeleteRoloCard(n)
  726. X     int n;
  727. X{
  728. X  RoloRec *rr, *pp;
  729. X
  730. X  if ( n < 0 ) return;
  731. X
  732. X  rr = GetN(n);
  733. X  if ( rr == RoloList ) RoloList = RoloList->next;
  734. X  else {
  735. X    for ( pp = RoloList; pp->next != rr; pp = pp->next );
  736. X    pp->next = rr->next;
  737. X  }
  738. X  if (rr->name != NULL)   free(rr->name);
  739. X  if (rr->number != NULL) free(rr->number);
  740. X  if (rr->number2 != NULL) free(rr->number2);
  741. X  if (rr->text != NULL)   free(rr->text);
  742. X  free(rr);
  743. X}
  744. X
  745. Xvoid WriteRolo()
  746. X{
  747. X  FILE *f;
  748. X  char buf[500], *s;
  749. X  RoloRec *rr;
  750. X
  751. X#if 0
  752. X  sprintf(buf,"%s-",rolofile);
  753. X  if ( rename(rolofile,buf) ) {
  754. X    perror("WriteRolo");
  755. X    fprintf(stderr,"An error occured while trying to write your\n");
  756. X    fprintf(stderr,"rolodex file.  The attempt is being aborted\n");
  757. X    fprintf(stderr,"so your most recent changes might not be saved.\n");
  758. X    fprintf(stderr,"The error occurred while attempting to rename\n");
  759. X    fprintf(stderr,"%s to %s.\n",rolofile,buf);
  760. X    return;
  761. X  }
  762. X#endif
  763. X
  764. X  f = fopen(rolofile,"w");
  765. X  if ( f == NULL ) {
  766. X    perror("WriteRolo");
  767. X    fprintf(stderr,"An error occured while trying to write your\n");
  768. X    fprintf(stderr,"rolodex file.  The attempt is being aborted\n");
  769. X    fprintf(stderr,"so your most recent changes might not be saved.\n");
  770. X    fprintf(stderr,"The error occurred while attempting to open the\n");
  771. X    fprintf(stderr,"file %s for writing.\n",rolofile);
  772. X    return;
  773. X  }
  774. X
  775. X  for ( rr = RoloList; rr != NULL; rr = rr->next ) {
  776. X    /* write data */
  777. X    if ( rr->name ) fprintf(f,"%s\n",rr->name);
  778. X    else fputc('\n',f);
  779. X    if ( rr->number ) fprintf(f,"%s\n",rr->number);
  780. X    else fputc('\n',f);
  781. X    if ( rr->number2 ) fprintf(f,"%s\n",rr->number2);
  782. X    else fputc('\n',f);
  783. X    if ( rr->text ) fprintf(f,"%s",rr->text);
  784. X    /* do new-line check to make xrolo happy */
  785. X    for ( s = &rr->text[strlen(rr->text)-1]; *s == ' ' || *s == '\t'; s-- );
  786. X    if ( *s != '\n' ) fputc('\n',f);
  787. X    fputc((char)12,f);
  788. X    fputc('\n',f);
  789. X  }
  790. X  fclose(f);
  791. X}
  792. X
  793. Xint GetIndex(s)
  794. X     char *s;
  795. X{
  796. X  RoloRec *rr;
  797. X  int n;
  798. X
  799. X  for ( rr = RoloList, n = 0; rr != NULL; rr = rr->next, n++ )
  800. X    if ( rr->on && strcasecmp(rr->name,s) >= 0 ) break;
  801. X
  802. X  return n;
  803. X}
  804. X
  805. XRoloRec *GetN(n)
  806. X     int n;
  807. X{
  808. X  RoloRec *rr;
  809. X
  810. X  for ( rr = RoloList; rr != NULL && ! rr->on; rr = rr->next );
  811. X  for ( ; rr != NULL; rr = rr->next ) {
  812. X    if ( rr->on ) n--;
  813. X    if ( n < 0 ) break;
  814. X  }
  815. X  return rr;
  816. X}
  817. X
  818. Xchar *GetName(n)
  819. X     int n;
  820. X{
  821. X  RoloRec *rr;
  822. X  rr = GetN(n);
  823. X  return (rr?rr->name:"");
  824. X}
  825. X
  826. Xchar *GetNumber(n)
  827. X     int n;
  828. X{
  829. X  RoloRec *rr;
  830. X  rr = GetN(n);
  831. X  return (rr?rr->number:"");
  832. X}
  833. X
  834. Xchar *GetNumber2(n)
  835. X     int n;
  836. X{
  837. X  RoloRec *rr;
  838. X  rr = GetN(n);
  839. X  return (rr?rr->number2:"");
  840. X}
  841. X
  842. Xchar *GetText(n)
  843. X     int n;
  844. X{
  845. X  RoloRec *rr;
  846. X  rr = GetN(n);
  847. X  return (rr?rr->text:"");
  848. X}
  849. X
  850. Xstatic int AllSpace(s)
  851. X     char *s;
  852. X{
  853. X  for ( ; *s != '\0'; s++)
  854. X    if ( ! isspace(*s) ) return 0;
  855. X  return 1;
  856. X}
  857. X
  858. Xchar *strstrcase(t,s)
  859. X     char *t, *s;
  860. X{
  861. X  int n;
  862. X  char s1, s2;
  863. X
  864. X  n = strlen(s);
  865. X  s1 = s[0];
  866. X  if ( isupper(s1) ) s2 = tolower(s1);
  867. X  else if ( islower(s1) ) s2 = toupper(s1);
  868. X  else s2 = s1;
  869. X  for (; *t != '\0'; t++ ) {
  870. X    if ( *t == s1 || *t == s2 )
  871. X      if ( strncasecmp(t,s,n) == 0 ) return t;
  872. X  }
  873. X  return NULL;
  874. X}
  875. X
  876. Xvoid RoloFilter(s)
  877. X     char *s;
  878. X{
  879. X  RoloRec *rr;
  880. X
  881. X  if ( s == NULL || AllSpace(s) )
  882. X    for ( rr = RoloList; rr != NULL; rr = rr->next )
  883. X      rr->on = 1;
  884. X  else
  885. X    for ( rr = RoloList; rr != NULL; rr = rr->next )
  886. X      rr->on = ( strstrcase(rr->name,s) != NULL ||
  887. X         strstrcase(rr->number,s) != NULL ||
  888. X         strstrcase(rr->number2,s) != NULL ||
  889. X         strstrcase(rr->text,s) != NULL );
  890. X}
  891. END_OF_FILE
  892. if test 6899 -ne `wc -c <'mrolo/rolo.c'`; then
  893.     echo shar: \"'mrolo/rolo.c'\" unpacked with wrong size!
  894. fi
  895. # end of 'mrolo/rolo.c'
  896. fi
  897. echo shar: End of archive 2 \(of 2\).
  898. cp /dev/null ark2isdone
  899. MISSING=""
  900. for I in 1 2 ; do
  901.     if test ! -f ark${I}isdone ; then
  902.     MISSING="${MISSING} ${I}"
  903.     fi
  904. done
  905. if test "${MISSING}" = "" ; then
  906.     echo You have unpacked both archives.
  907.     rm -f ark[1-9]isdone
  908. else
  909.     echo You still need to unpack the following archives:
  910.     echo "        " ${MISSING}
  911. fi
  912. ##  End of shell archive.
  913. exit 0
  914.  
  915. exit 0 # Just in case...
  916. -- 
  917.   // chris@Sterling.COM           | Send comp.sources.x submissions to:
  918. \X/  Amiga - The only way to fly! |    sources-x@sterling.com
  919.  "It's intuitively obvious to the |
  920.   most casual observer..."        | GCS d+/-- p+ c++ l+ m+ s++/+ g+ w+ t+ r+ x+
  921.