REPOST: v08i099: xmail, Patch2, Part04/05

Michael Wagnitz michael at parns.nsc.com
Thu Aug 30 05:00:52 AEST 1990


Submitted-by: michael at parns.nsc.com (Michael Wagnitz)
Posting-number: Volume 8, Issue 99
Archive-name: xmail/patch2.04

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 4 (of 5)."
# Contents:  Patch.02d
# Wrapped by michael at harley on Mon Aug 27 12:47:27 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'Patch.02d' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Patch.02d'\"
else
echo shar: Extracting \"'Patch.02d'\" \(52848 characters\)
sed "s/^X//" >'Patch.02d' <<'END_OF_FILE'
X!                                             markIndex(" ");
X                                             }
X                                          }
X  		                      break;
X--- 246,252 ----
X                                              sprintf(tmp, "%d", msgnum);
X                                              XtFree(msg);
X                                              msg = QueryMail(tmp);
X!                                             markIndex("> ");
X                                             }
X                                          }
X  		                      break;
X***************
X*** 256,268 ****
X                            markIndex("D");
X  		          num = msgnum;
X  		          msgnum = index_handler(++msgnum, 0); /* next msg */
X!                           if (msgnum != num) markIndex(" ");
X                           }
X                         if (*Command == 'u') {
X  		          c = QueryMail("=");
X  		          sscanf(c, "%d", &msgnum);
X  		          XtFree(c);
X!                           iw = WidgetOf(WidgetOf(toplevel, "topBox"),"indexWindow");
X                            if (TextGetLastPos(iw) < (XtTextPosition) 4) {
X                               c = QueryMail("h");
X                               writeText(iw, c, FALSE);
X--- 269,282 ----
X                            markIndex("D");
X  		          num = msgnum;
X  		          msgnum = index_handler(++msgnum, 0); /* next msg */
X!                           if (msgnum != num)
X!                              markIndex("> ");
X                           }
X                         if (*Command == 'u') {
X  		          c = QueryMail("=");
X  		          sscanf(c, "%d", &msgnum);
X  		          XtFree(c);
X!                           iw = WidgetOf(WidgetOf(toplevel, "topBox"), "indexWindow");
X                            if (TextGetLastPos(iw) < (XtTextPosition) 4) {
X                               c = QueryMail("h");
X                               writeText(iw, c, FALSE);
X***************
X*** 269,275 ****
X  		             XtFree(c);
X                              }
X  		          msgnum = index_handler(msgnum, 1);
X!                           markIndex(" ");
X                           }
X                         c = QueryMail("file");	/* resets current msg to 1 */
X                         (void) UpdateTitleBar(c);
X--- 283,289 ----
X  		             XtFree(c);
X                              }
X  		          msgnum = index_handler(msgnum, 1);
X!                           markIndex("> ");
X                           }
X                         c = QueryMail("file");	/* resets current msg to 1 */
X                         (void) UpdateTitleBar(c);
X***************
X*** 281,295 ****
X  /*
X  ** In response to a request to view new mail, first reset the mailbox flag.
X  ** If mail came back with an error, complain to the user.  Otherwise, clear
X! ** the Newmail command button highlighting, and (if it exists) destroy the
X! ** current folder popup list.  Then display any new mail text.
X  */
X      case C_NEWMAIL:
X  		    button = WidgetOf(WidgetOf(WidgetOf(toplevel, "topBox"),
X                                                       "commandPanel"), "Folder");
X  		    UnsetNewmail(button, NULL, NULL);
X- 		    if (popup = WidgetOf(button, "popupList"))
X- 		       XtDestroyWidget(popup);
X                      if (O_BELL == match(output_pattern, msg)) {
X                         if (strncmp(msg, "No mail for ", 12) == 0) {
X                            Bell("No mail in system mailbox\n");
X--- 295,306 ----
X  /*
X  ** In response to a request to view new mail, first reset the mailbox flag.
X  ** If mail came back with an error, complain to the user.  Otherwise, clear
X! ** the Newmail command button highlighting. Then display any new mail text.
X  */
X      case C_NEWMAIL:
X  		    button = WidgetOf(WidgetOf(WidgetOf(toplevel, "topBox"),
X                                                       "commandPanel"), "Folder");
X  		    UnsetNewmail(button, NULL, NULL);
X                      if (O_BELL == match(output_pattern, msg)) {
X                         if (strncmp(msg, "No mail for ", 12) == 0) {
X                            Bell("No mail in system mailbox\n");
X***************
X*** 316,322 ****
X                               sprintf(tmp, "%d", msgnum);
X                               XtFree(msg);
X                               msg = QueryMail(tmp);
X!                              markIndex(" ");	/* 'cause we just read it */
X                              }
X                           }
X                        }
X--- 327,333 ----
X                               sprintf(tmp, "%d", msgnum);
X                               XtFree(msg);
X                               msg = QueryMail(tmp);
X!                              markIndex("> ");	/* 'cause we just read it */
X                              }
X                           }
X                        }
X***************
X*** 419,424 ****
X--- 430,446 ----
X          if (strcmp(&output[j], MailPrompt) == 0) {
X             output[j] = '\0';		/* Drop prompt from end of text */
X             break;			/* and return from read routine */
X+           }
X+ 
X+         if (!strcmp(Command,"Start")) {	/* see if somehow missed the prompt */
X+            j = strlen(output) - 3;	/* no accidents allowed here either */
X+            if (j < 0) j = 0;		/* no string references before zero */
X+            if (strcmp(&output[j], "\n& ") == 0) { /* if default mail prompt */
X+               output[++j] = '\0';	/* drop prompt from end of string */
X+               XtFree(MailPrompt);	/* intended prompt is now bogus */
X+               MailPrompt = XtNewString("& ");	/* reset the mail prompt */
X+               break;			/* and return from read routine */
X+              }
X            }
X  
X          if (O_BELL == match(output_pattern,output) && !strcmp(Command,"Start"))
X*** ../v1.1/utils.c	Mon Jun  4 09:48:42 1990
X--- utils.c	Mon Aug 27 11:09:22 1990
X***************
X*** 32,38 ****
X   * EVENT SHALL NATIONAL SEMICONDUCTOR CORPORATION BE LIABLE FOR ANY SPECIAL,
X   * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
X   * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
X!  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
X   * PERFORMANCE OF THIS SOFTWARE.
X   *
X   * The following software modules were created and are Copyrighted by National
X--- 32,38 ----
X   * EVENT SHALL NATIONAL SEMICONDUCTOR CORPORATION BE LIABLE FOR ANY SPECIAL,
X   * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
X   * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
X!  * OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
X   * PERFORMANCE OF THIS SOFTWARE.
X   *
X   * The following software modules were created and are Copyrighted by National
X***************
X*** 72,95 ****
X  char	*s;
X  {
X   XtTextBlock 	textblock;
X!  XtTextPosition	pos;
X   Widget		w = WidgetOf(WidgetOf(toplevel, "topBox"), "indexWindow");
X  
X  
X!  pos = XtTextGetInsertionPoint(w) + 1;
X  
X!  XtTextSetInsertionPoint(w, pos);
X  
X   textblock.firstPos = 0;
X!  textblock.length   = 1;
X   textblock.ptr      = s;
X   textblock.format   = FMT8BIT;
X  
X!  XtTextReplace(w, pos, pos + 1, &textblock);
X  
X   XtTextSetInsertionPoint(w, pos);
X- 
X-  SetSelect(w, NULL, NULL, NULL);
X  } /* markIndex */
X  
X  
X--- 72,110 ----
X  char	*s;
X  {
X   XtTextBlock 	textblock;
X!  XtTextPosition	pos, old;
X   Widget		w = WidgetOf(WidgetOf(toplevel, "topBox"), "indexWindow");
X+  char		*p;
X+  int		size = strlen(s);
X  
X  
X!  pos = XtTextGetInsertionPoint(w);
X  
X!  if (*s == '>')			/* first, remove any existing pointer */
X!     if (p = index(IndexBuf, '>')) {
X!        old = p - IndexBuf;
X!        XtTextSetInsertionPoint(w, old);
X!        textblock.firstPos = 0;
X!        textblock.length   = 1;
X!        textblock.ptr      = " ";
X!        textblock.format   = FMT8BIT;
X!        XtTextReplace(w, old, old + 1, &textblock);
X!       }
X  
X+  for (p = IndexBuf + pos; p > IndexBuf && *(p - 1) != '\n'; p--);
X+ 
X+  pos = (p - IndexBuf);
X+ 
X+  XtTextSetInsertionPoint(w, (*s == '>') ? pos : ++pos);
X+ 
X   textblock.firstPos = 0;
X!  textblock.length   = size;
X   textblock.ptr      = s;
X   textblock.format   = FMT8BIT;
X  
X!  XtTextReplace(w, pos, pos + size, &textblock);
X  
X   XtTextSetInsertionPoint(w, pos);
X  } /* markIndex */
X  
X  
X***************
X*** 186,192 ****
X  String	msg;
X  {
X   Arg	args[1];
X!  char	*p, *index();
X   char	buf[BUFSIZ];
X   int	worthy = 0;			/* only msgs with ending newline are */
X  
X--- 201,207 ----
X  String	msg;
X  {
X   Arg	args[1];
X!  char	*p;
X   char	buf[BUFSIZ];
X   int	worthy = 0;			/* only msgs with ending newline are */
X  
X*** ../v1.1/windows.c	Mon Jun  4 09:48:44 1990
X--- windows.c	Mon Aug 27 11:09:22 1990
X***************
X*** 32,38 ****
X   * EVENT SHALL NATIONAL SEMICONDUCTOR CORPORATION BE LIABLE FOR ANY SPECIAL,
X   * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
X   * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
X!  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
X   * PERFORMANCE OF THIS SOFTWARE.
X   *
X   * The following software modules were created and are Copyrighted by National
X--- 32,38 ----
X   * EVENT SHALL NATIONAL SEMICONDUCTOR CORPORATION BE LIABLE FOR ANY SPECIAL,
X   * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
X   * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
X!  * OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
X   * PERFORMANCE OF THIS SOFTWARE.
X   *
X   * The following software modules were created and are Copyrighted by National
X***************
X*** 50,56 ****
X  
X  
X  #include "global.h"
X! #include "Mailwatch.h"
X  #include "patchlevel.h"
X  #include "icon.mail"
X  #include "national.bm"
X--- 50,56 ----
X  
X  
X  #include "global.h"
X! #include "MailwatchP.h"
X  #include "patchlevel.h"
X  #include "icon.mail"
X  #include "national.bm"
X***************
X*** 164,170 ****
X      XtSetArg(args[3], XtNtranslations, XtParseTranslationTable(b_Trans));
X      for (indx = 0; list[indx] != NULL; indx++) {
X          strcpy(tag, list[indx]->label);		/* set window name by label */
X!         if ((c = (char *)index(tag, ' '))) *c = '\0';	/* first word only */
X          sprintf(trans, "%-*.*s", j, j, list[indx]->label);
X          if (Labels[indx])			/* add accel. note if needed */
X             strcat(trans, Labels[indx]);
X--- 164,170 ----
X      XtSetArg(args[3], XtNtranslations, XtParseTranslationTable(b_Trans));
X      for (indx = 0; list[indx] != NULL; indx++) {
X          strcpy(tag, list[indx]->label);		/* set window name by label */
X!         if ((c = index(tag, ' '))) *c = '\0';	/* first word only */
X          sprintf(trans, "%-*.*s", j, j, list[indx]->label);
X          if (Labels[indx])			/* add accel. note if needed */
X             strcat(trans, Labels[indx]);
X***************
X*** 284,292 ****
X   b1.label = "Newmail"; b1.func = (XtCallbackProc) DoIt; b1.data = "file %";
X  #ifdef SUNOS_4
X   b2.label = "inc (no commit)"; b2.func = (XtCallbackProc) DoIt; b2.data = "inc";
X!  list[0] = &b1; list[1] = &b2; list[2] = NULL;
X  #else
X!  list[0] = &b1; list[1] = NULL;
X  #endif
X   AddButton(parent, "Newmail", "DoCmd", "file %", list, NewMail_Help_Text);
X  
X--- 284,294 ----
X   b1.label = "Newmail"; b1.func = (XtCallbackProc) DoIt; b1.data = "file %";
X  #ifdef SUNOS_4
X   b2.label = "inc (no commit)"; b2.func = (XtCallbackProc) DoIt; b2.data = "inc";
X!  b3.label = "Drop Folders"; b3.func = (XtCallbackProc) DropIt; b3.data = "drop";
X!  list[0] = &b1; list[1] = &b2; list[2] = &b3; list[3] = NULL;
X  #else
X!  b2.label = "Drop Folders"; b2.func = (XtCallbackProc) DropIt; b2.data = "drop";
X!  list[0] = &b1; list[1] = &b2; list[2] = NULL;
X  #endif
X   AddButton(parent, "Newmail", "DoCmd", "file %", list, NewMail_Help_Text);
X  
X***************
X*** 388,395 ****
X    <Key>BackSpace:	DeleteChar()\n\
X    <Key>Linefeed:	DoNothing()\n\
X    <Key>Return:		DoNothing()\n\
X!   <Key>:		CheckInsert() insert-char()";
X  
X   XtSetArg(args[0], XtNwidth, XMail.fileBoxWidth);
X   XtSetArg(args[1], XtNfont, TextFontStr);
X   XtSetArg(args[2], XtNborderWidth, 0);
X--- 390,400 ----
X    <Key>BackSpace:	DeleteChar()\n\
X    <Key>Linefeed:	DoNothing()\n\
X    <Key>Return:		DoNothing()\n\
X!   <Key>:		CheckInsert() insert-char()\n\
X!   <Btn1Down>:           select-start()\n\
X!   <Btn2Down>:           CheckInsert() insert-selection(PRIMARY, CUT_BUFFER0)";
X  
X+ 
X   XtSetArg(args[0], XtNwidth, XMail.fileBoxWidth);
X   XtSetArg(args[1], XtNfont, TextFontStr);
X   XtSetArg(args[2], XtNborderWidth, 0);
X***************
X*** 449,454 ****
X--- 454,461 ----
X   Arg	args[6];
X   Widget	w;
X  
X+  static String Trans = "#override\n\
X+ 			:<Key>Linefeed:	MenuPopdown(help)";
X  
X   XtSetArg(args[0], XtNborderWidth, 3);
X   w = XtCreatePopupShell("help", overrideShellWidgetClass, parent, args, 1);
X***************
X*** 458,464 ****
X   XtSetArg(args[2], XtNfont, HelpFontStr);
X   XtSetArg(args[3], XtNeditType, (XtArgVal) XttextRead);
X   XtSetArg(args[4], XtNtextOptions, wordBreak);
X!  XtCreateManagedWidget("helpWindow", asciiStringWidgetClass, w, args, 5);
X  } /* CreateHelpWindow */
X  
X  
X--- 465,472 ----
X   XtSetArg(args[2], XtNfont, HelpFontStr);
X   XtSetArg(args[3], XtNeditType, (XtArgVal) XttextRead);
X   XtSetArg(args[4], XtNtextOptions, wordBreak);
X!  XtSetArg(args[5], XtNtranslations, XtParseTranslationTable(Trans));
X!  XtCreateManagedWidget("helpWindow", asciiStringWidgetClass, w, args, 6);
X  } /* CreateHelpWindow */
X  
X  
X***************
X*** 470,482 ****
X  Widget parent;
X  {
X   Arg	args[8];
X   Widget	w;
X  
X!  static String translations =
X! 	"<Key>:		DoNothing() \n\
X! 	<Btn1Down>:	select-start() SetSelect() \n\
X! 	<Btn3Down>:	select-start() SetSelect() \n\
X! 	<Btn3Up>:	DoSelected(p)";
X  
X   XtSetArg(args[0], XtNheight, XMail.indexHeight);
X   XtSetArg(args[1], XtNfont, TextFontStr);
X--- 478,508 ----
X  Widget parent;
X  {
X   Arg	args[8];
X+  int	n;
X   Widget	w;
X  
X!  static String translations = "\
X! 	Ctrl<Key>L:		redraw-display() \n\
X! 	Ctrl<Key>V:		next-page() \n\
X! 	Ctrl<Key>Z:		scroll-one-line-up() \n\
X! 	Meta<Key>V:		previous-page() \n\
X! 	Meta<Key>Z:		scroll-one-line-down() \n\
X! 	Meta<Key>\<:		beginning-of-file() \n\
X! 	Meta<Key>\>:		end-of-file() \n\
X! 	None <Key>Return:	scroll-one-line-up() \n\
X! 	None <Key>space:	next-page() \n\
X! 	None <Key>G:		end-of-file() \n\
X! 	None <Key>b:		previous-page() \n\
X! 	None <Key>j:		scroll-one-line-up() \n\
X! 	None <Key>k:		scroll-one-line-down() \n\
X! 	None <Key>-:		scroll-one-line-down() \n\
X! 	None <Key>p:		beginning-of-file() \n\
X! 	None <Key>\':		beginning-of-file() \n\
X! 	<Btn1Down>:		select-start() SetSelect() \n\
X! 	<Btn1Motion>:		extend-adjust() \n\
X! 	<Btn1Up>:		extend-end(PRIMARY, CUT_BUFFER0) \n\
X! 	<Btn3Down>:		select-start() SetSelect() \n\
X! 	<Btn3Up>:		DoSelected(p)";
X  
X   XtSetArg(args[0], XtNheight, XMail.indexHeight);
X   XtSetArg(args[1], XtNfont, TextFontStr);
X***************
X*** 485,492 ****
X   XtSetArg(args[4], XtNeditType, (XtArgVal) XttextEdit);
X   XtSetArg(args[5], XtNtextOptions, scrollVertical | wordBreak);
X   XtSetArg(args[6], XtNtranslations, XtParseTranslationTable(translations));
X  
X!  w = XtCreateManagedWidget("indexWindow",asciiStringWidgetClass,parent,args,7);
X  
X   AddHelpText(w, "index", Index_Help_Text);
X  } /* CreateIndexWindow */
X--- 511,522 ----
X   XtSetArg(args[4], XtNeditType, (XtArgVal) XttextEdit);
X   XtSetArg(args[5], XtNtextOptions, scrollVertical | wordBreak);
X   XtSetArg(args[6], XtNtranslations, XtParseTranslationTable(translations));
X+  n = 7;
X+ #if XtSpecificationRelease >= 4
X+  XtSetArg(args[n], XtNdisplayCaret, (XtArgVal) False);		n++;
X+ #endif
X  
X!  w = XtCreateManagedWidget("indexWindow",asciiStringWidgetClass,parent,args,n);
X  
X   AddHelpText(w, "index", Index_Help_Text);
X  } /* CreateIndexWindow */
X***************
X*** 537,543 ****
X  {
X   Arg		args[4];
X   Widget		icon, mb, topbox;
X!  int		x, y, width, height;
X  /*
X  ** Special added actions
X  */
X--- 567,573 ----
X  {
X   Arg		args[4];
X   Widget		icon, mb, topbox;
X!  int		n, x, y;
X  /*
X  ** Special added actions
X  */
X***************
X*** 554,559 ****
X--- 584,590 ----
X  	{"SetMenu",		(XtActionProc) SetMenu},
X  	{"DoNothing",		(XtActionProc) DoNothing},
X  	{"DoSelected",		(XtActionProc) DoSelected},
X+ 	{"SavePos",		(XtActionProc) SavePos},
X  	{"SetAliases",		(XtActionProc) SetAliases},
X  	{"SetCursor",		(XtActionProc) SetCursor},
X  	{"SetDirectory",	(XtActionProc) SetDirectory},
X***************
X*** 566,571 ****
X--- 597,603 ----
X  	{"MyNotify",		(XtActionProc) MyNotify},
X  	{"NextField",		(XtActionProc) NextField},
X  	{"PrintMsg",		(XtActionProc) PrintMsg},
X+ 	{"SetPos",		(XtActionProc) SetPos},
X  	{"Quit",		(XtActionProc) Quit},
X          {NULL, NULL}
X        };
X***************
X*** 588,602 ****
X  /*
X  ** Create an icon window for the mailwatchWidget
X  */
X-  x = y = 0;
X-  if (XMail.iconGeometry)
X-     XParseGeometry(XMail.iconGeometry, &x, &y, &width, &height);
X- 
X   XtSetArg(args[0], XtNwidth, (XtArgVal) mail_width);
X   XtSetArg(args[1], XtNheight, (XtArgVal) mail_height);
X!  XtSetArg(args[2], XtNx, (XtArgVal) x);
X!  XtSetArg(args[3], XtNy, (XtArgVal) y);
X!  icon = XtCreateWidget("icon", applicationShellWidgetClass, toplevel, args, 4);
X   mb = XtCreateManagedWidget("mailbox", mailwatchWidgetClass, icon, NULL, 0);
X   XtAddCallback(mb, XtNcallback, SetNewmail, NULL);
X  } /* CreateSubWindows */ 
X--- 620,634 ----
X  /*
X  ** Create an icon window for the mailwatchWidget
X  */
X   XtSetArg(args[0], XtNwidth, (XtArgVal) mail_width);
X   XtSetArg(args[1], XtNheight, (XtArgVal) mail_height);
X!  n = 2;
X!  if (XMail.iconGeometry) {
X!     ParseIconGeometry(XMail.iconGeometry, &x, &y);
X!     XtSetArg(args[n], XtNx, (XtArgVal) x);		n++;
X!     XtSetArg(args[n], XtNy, (XtArgVal) y);		n++;
X!    }
X!  icon = XtCreateWidget("icon", applicationShellWidgetClass, toplevel, args, n);
X   mb = XtCreateManagedWidget("mailbox", mailwatchWidgetClass, icon, NULL, 0);
X   XtAddCallback(mb, XtNcallback, SetNewmail, NULL);
X  } /* CreateSubWindows */ 
X***************
X*** 609,625 ****
X  CreateTextWindow(parent)
X  Widget parent;
X  {
X!  Arg 	args[4];
X   Widget	tw;
X  
X  
X   XtSetArg(args[0], XtNmin, XMail.textMinHeight);
X   XtSetArg(args[1], XtNheight, XMail.textHeight);
X   XtSetArg(args[2], XtNfont, TextFontStr);
X   XtSetArg(args[3], XtNtextOptions, scrollVertical | wordBreak);
X!  tw = XtCreateManagedWidget("textWindow",asciiStringWidgetClass,parent,args,4);
X  
X   AddHelpText(tw, "text", Text_Help_Text);
X  } /* CreateTextWindow */
X  
X  
X--- 641,779 ----
X  CreateTextWindow(parent)
X  Widget parent;
X  {
X!  Arg 	args[5];
X!  int	indx;
X   Widget	tw;
X+ #ifndef SUNOS_4
X+  static String Trans = "\
X+ 	Ctrl <Key>L:		redraw-display() \n\
X+ 	Ctrl <Key>V:		next-page() \n\
X+ 	Ctrl <Key>Z:		scroll-one-line-up() \n\
X+ 	Meta <Key>V:		previous-page() \n\
X+ 	Meta <Key>Z:		scroll-one-line-down() \n\
X+ 	Meta <Key>\<:		beginning-of-file() \n\
X+ 	Meta <Key>\>:		end-of-file() \n\
X+         None <Key>Linefeed:	MenuPopdown(help) \n\
X+ 	None <Key>Return:	scroll-one-line-up() \n\
X+ 	None <Key>-:		scroll-one-line-down() \n\
X+ 	None <Key>\':		beginning-of-file() \n\
X+ 	None <Key>space:	next-page() \n\
X+ 	None <Key>a:		DoReply(a) \n\
X+ 	None <Key>b:		previous-page() \n\
X+  	None <Key>c:		DoSave(c) \n\
X+  	None <Key>d:		DoSelected(d) \n\
X+  	None <Key>f:		DoSelected(P) \n\
X+ 	None <Key>j:		scroll-one-line-up() \n\
X+ 	None <Key>k:		scroll-one-line-down() \n\
X+  	None <Key>m:		DoReply(s) \n\
X+  	None <Key>n:		DoSelected(n) \n\
X+  	None <Key>p:		DoSelected(-) \n\
X+  	None <Key>q:		Quit(q) \n\
X+  	None <Key>r:		DoSelected(p) \n\
X+  	None <Key>s:		DoSave(s) \n\
X+ 	None <Key>u:		DoSelected(u) \n\
X+  	None <Key>w:		DoSave(w) \n\
X+  	None <Key>x:		Quit(x) \n\
X+ 	     <Key>A:		DoReply(A) \n\
X+  	     <Key>C:		DoSave(C) \n\
X+ 	     <Key>F:		DoReply(S) \n\
X+ 	     <Key>G:		end-of-file() \n\
X+  	     <Key>M:		DoReply(r) \n\
X+  	     <Key>N:		DoCmd(file %) \n\
X+  	     <Key>P:		PrintMsg() \n\
X+ 	     <Key>R:		DoReply(R) \n\
X+  	     <Key>S:		DoSave(S) \n\
X+ 	<Key>?:			SetHelp(text2) \n\
X+ 	<Btn1Down>:		select-start() \n\
X+ 	<Btn1Motion>:		extend-adjust() \n\
X+ 	<Btn1Up>:		extend-end(PRIMARY, CUT_BUFFER0) \n\
X+ 	<Btn2Down>:		insert-selection(PRIMARY, CUT_BUFFER0) \n\
X+ 	<Btn3Down>:		extend-start() \n\
X+ 	<Btn3Motion>:		extend-adjust() \n\
X+ 	<Btn3Up>:		extend-end(PRIMARY, CUT_BUFFER0)";
X+ #else
X+  static String Trans = "\
X+ 	Ctrl <Key>L:		redraw-display() \n\
X+ 	Ctrl <Key>V:		next-page() \n\
X+ 	Ctrl <Key>Z:		scroll-one-line-up() \n\
X+ 	Meta <Key>V:		previous-page() \n\
X+ 	Meta <Key>Z:		scroll-one-line-down() \n\
X+ 	Meta <Key>\<:		beginning-of-file() \n\
X+ 	Meta <Key>\>:		end-of-file() \n\
X+ 	Shift <Key>A:		DoReply(A) \n\
X+  	Shift <Key>C:		DoSave(C) \n\
X+ 	Shift <Key>F:		DoReply(S) \n\
X+ 	Shift <Key>G:		end-of-file() \n\
X+  	Shift <Key>M:		DoReply(r) \n\
X+  	Shift <Key>N:		DoCmd(file %) \n\
X+  	Shift <Key>P:		PrintMsg() \n\
X+ 	Shift <Key>R:		DoReply(R) \n\
X+  	Shift <Key>S:		DoSave(S) \n\
X+         None <Key>Linefeed:	MenuPopdown(help) \n\
X+ 	None <Key>Return:	scroll-one-line-up() \n\
X+ 	None <Key>-:		scroll-one-line-down() \n\
X+ 	None <Key>\':		beginning-of-file() \n\
X+ 	None <Key>space:	next-page() \n\
X+ 	None <Key>a:		DoReply(a) \n\
X+ 	None <Key>b:		previous-page() \n\
X+  	None <Key>c:		DoSave(c) \n\
X+  	None <Key>d:		DoSelected(d) \n\
X+  	None <Key>f:		DoSelected(P) \n\
X+ 	None <Key>j:		scroll-one-line-up() \n\
X+ 	None <Key>k:		scroll-one-line-down() \n\
X+  	None <Key>m:		DoReply(s) \n\
X+  	None <Key>n:		DoSelected(n) \n\
X+  	None <Key>p:		DoSelected(-) \n\
X+  	None <Key>q:		Quit(q) \n\
X+  	None <Key>r:		DoSelected(p) \n\
X+  	None <Key>s:		DoSave(s) \n\
X+ 	None <Key>u:		DoSelected(u) \n\
X+  	None <Key>w:		DoSave(w) \n\
X+  	None <Key>x:		Quit(x) \n\
X+ 	<Key>?:			SetHelp(text2) \n\
X+ 	<Btn1Down>:		select-start() \n\
X+ 	<Btn1Motion>:		extend-adjust() \n\
X+ 	<Btn1Up>:		extend-end(PRIMARY, CUT_BUFFER0) \n\
X+ 	<Btn2Down>:		insert-selection(PRIMARY, CUT_BUFFER0) \n\
X+ 	<Btn3Down>:		extend-start() \n\
X+ 	<Btn3Motion>:		extend-adjust() \n\
X+ 	<Btn3Up>:		extend-end(PRIMARY, CUT_BUFFER0)";
X+ #endif
X  
X+ #if XtSpecificationRelease >= 4
X+  static String trans_2 = "#override \
X+ 	Ctrl <Key>R:		search(backward) \n\
X+ 	Ctrl <Key>S:		search(forward)";
X+ #endif
X  
X   XtSetArg(args[0], XtNmin, XMail.textMinHeight);
X   XtSetArg(args[1], XtNheight, XMail.textHeight);
X   XtSetArg(args[2], XtNfont, TextFontStr);
X   XtSetArg(args[3], XtNtextOptions, scrollVertical | wordBreak);
X!  XtSetArg(args[4], XtNtranslations, XtParseTranslationTable(Trans));
X!  tw = XtCreateManagedWidget("textWindow",asciiStringWidgetClass,parent,args,5);
X  
X+ #if XtSpecificationRelease >= 4
X+  XtOverrideTranslations(tw, XtParseTranslationTable(trans_2));
X+ #endif
X+ 
X+ #ifdef SUNOS_4
X+  XtOverrideTranslations(tw,
X+  XtParseTranslationTable("#override None<Key>i: DoCmd(inc)"));
X+ #endif
X+ 
X   AddHelpText(tw, "text", Text_Help_Text);
X+ 
X+  for (indx = 0; HelpNames[indx]; indx++)
X+      if (strcmp(HelpNames[indx], "text2") == 0) break;
X+ 
X+  if (HelpNames[indx]) {
X+     XtSetArg(args[0], XtNstring, (XtArgVal) Text2_Help_Text);
X+     XtSetArg(args[1], XtNlength, (XtArgVal) strlen(Text2_Help_Text));
X+     XtSetArg(args[2], XtNeditType, (XtArgVal) XttextRead);
X+ 
X+     HelpStrings[indx] = XtStringSourceCreate(WidgetOf(WidgetOf(WidgetOf(toplevel,"topBox"),"help"),"helpWindow"),args,3);
X+    }
X  } /* CreateTextWindow */
X  
X  
X***************
X*** 699,728 ****
X  {
X   Arg		args[12];
X   Cardinal 	n;
X  
X   static String trans = "#override \
X!   <Key>Delete: delete-previous-character() beginning-of-line() end-of-line()\n\
X!   <Key>BackSpace: delete-previous-character() beginning-of-line() end-of-line()\n\
X!   Ctrl<Key>H:  delete-previous-character() beginning-of-line() end-of-line()\n\
X!   Ctrl<Key>U:  beginning-of-line() kill-to-end-of-line() \n\
X!   Ctrl<Key>W:  delete-previous-word() beginning-of-line() end-of-line()\n\
X!   <Key>Return: NextField()";
X  
X   static String b_trans = "#override \
X!   <Btn3Down>:  SetAliases() MenuPopup(aliasList)\n\
X!   <Btn3Motion>: DoNothing()\n\
X!   <Btn3Up>:    DoNothing()\n\
X!   <Key>Delete: delete-previous-character() beginning-of-line() end-of-line()\n\
X!   <Key>BackSpace: delete-previous-character() beginning-of-line() end-of-line()\n\
X!   Ctrl<Key>H:  delete-previous-character() beginning-of-line() end-of-line()\n\
X!   Ctrl<Key>U:  beginning-of-line() kill-to-end-of-line() \n\
X!   Ctrl<Key>W:  delete-previous-word() beginning-of-line() end-of-line()\n\
X!   <Key>Return: NextField()";
X  
X   n  = XMail.shellWidth - 106;	/* - (scn + 2*(internal width + def.dist.)) */
X   n -= TEXTWIDTH * 9 - 6;	/* minus label text width less fudge factor */
X   XtSetArg(args[0], XtNwidth, n);
X- 
X   XtSetArg(args[1], XtNinput, True);
X   XtSetArg(args[2], XtNheight, XMail.buttonHeight);
X   XtSetArg(args[3], XtNfont, TextFontStr);
X--- 853,876 ----
X  {
X   Arg		args[12];
X   Cardinal 	n;
X+  Widget		w;
X  
X   static String trans = "#override \
X!   <Key>Delete:    delete-previous-character() SavePos() beginning-of-file() SetPos()\n\
X!   <Key>BackSpace: delete-previous-character() SavePos() beginning-of-file() SetPos()\n\
X!   Ctrl<Key>H:     delete-previous-character() SavePos() beginning-of-file() SetPos()\n\
X!   Ctrl<Key>U:     beginning-of-line() kill-to-end-of-line() \n\
X!   Ctrl<Key>W:     delete-previous-word() SavePos() beginning-of-file() SetPos()\n\
X!   <Key>Return:    NextField()";
X  
X   static String b_trans = "#override \
X!   <Btn3Down>:     SetAliases() MenuPopup(aliasList)\n\
X!   <Btn3Motion>:   DoNothing()\n\
X!   <Btn3Up>:       DoNothing()";
X  
X   n  = XMail.shellWidth - 106;	/* - (scn + 2*(internal width + def.dist.)) */
X   n -= TEXTWIDTH * 9 - 6;	/* minus label text width less fudge factor */
X   XtSetArg(args[0], XtNwidth, n);
X   XtSetArg(args[1], XtNinput, True);
X   XtSetArg(args[2], XtNheight, XMail.buttonHeight);
X   XtSetArg(args[3], XtNfont, TextFontStr);
X***************
X*** 731,742 ****
X   XtSetArg(args[6], XtNlength, len);
X   XtSetArg(args[7], XtNeditType, (XtArgVal) XttextEdit);
X   XtSetArg(args[8], XtNtextOptions, wordBreak);
X! 
X!  if (strcmp(name, "Subject") == 0) {
X!     XtSetArg(args[9], XtNtranslations, XtParseTranslationTable(trans));
X!    } else {
X!     XtSetArg(args[9], XtNtranslations, XtParseTranslationTable(b_trans));
X!    }
X   n = 10;
X  
X  #if XtSpecificationRelease >= 4
X--- 879,885 ----
X   XtSetArg(args[6], XtNlength, len);
X   XtSetArg(args[7], XtNeditType, (XtArgVal) XttextEdit);
X   XtSetArg(args[8], XtNtextOptions, wordBreak);
X!  XtSetArg(args[9], XtNtranslations, XtParseTranslationTable(trans));
X   n = 10;
X  
X  #if XtSpecificationRelease >= 4
X***************
X*** 743,747 ****
X   XtSetArg(args[n], XtNautoFill, True);					n++;
X  #endif
X  
X!  return( XtCreateManagedWidget(name,asciiStringWidgetClass,parent,args,n) );
X  } /* CreateInputWindow */
X--- 886,915 ----
X   XtSetArg(args[n], XtNautoFill, True);					n++;
X  #endif
X  
X!  w = XtCreateManagedWidget(name, asciiStringWidgetClass, parent, args, n);
X! 
X!  if (strcmp(name, "Subject") != 0)
X!     XtOverrideTranslations(w, XtParseTranslationTable(b_trans));
X! 
X!  return( w );
X  } /* CreateInputWindow */
X+ 
X+ /* 
X+ ** @(#)ParseIconGeometry() - Parse the icon geometry
X+ */
X+ void
X+ ParseIconGeometry(str, x, y)
X+ char	*str;
X+ int	*x, *y;
X+ {
X+  int		res;
X+  unsigned int	w, h;
X+ 
X+  *x = 0;
X+  *y = 0;
X+  res = XParseGeometry(str, x, y, &w, &h);
X+  if ((res & (XNegative|XValue)) == (XNegative|XValue))
X+     *x = RootWidth + *x - mail_width;
X+  if ((res & (YNegative|YValue)) == (YNegative|YValue))
X+     *y = RootHeight + *y - mail_height;
X+ } /* ParseIconGeometry */
X*** ../v1.1/xmail.c	Mon Jun  4 09:48:45 1990
X--- xmail.c	Mon Aug 27 11:09:22 1990
X***************
X*** 32,38 ****
X   * EVENT SHALL NATIONAL SEMICONDUCTOR CORPORATION BE LIABLE FOR ANY SPECIAL,
X   * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
X   * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
X!  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
X   * PERFORMANCE OF THIS SOFTWARE.
X   *
X   * The following software modules were created and are Copyrighted by National
X--- 32,38 ----
X   * EVENT SHALL NATIONAL SEMICONDUCTOR CORPORATION BE LIABLE FOR ANY SPECIAL,
X   * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
X   * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
X!  * OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
X   * PERFORMANCE OF THIS SOFTWARE.
X   *
X   * The following software modules were created and are Copyrighted by National
X***************
X*** 48,57 ****
X  #include "global.h"
X  #include "Mailwatch.h"			/* use as icon and watch for newmail */
X  
X! #if XtSpecificationRelease >= 4
X! #include <X11/Xaw/CommandP.h>
X  #else
X! #include <X11/CommandP.h>
X  #endif
X  
X  #include "icon.nomail"			/* default icon pixmap source */
X--- 48,57 ----
X  #include "global.h"
X  #include "Mailwatch.h"			/* use as icon and watch for newmail */
X  
X! #if XtSpecificationRelease < 4
X! #include <X11/CommandP.h>		/* R3 */
X  #else
X! #include <X11/Xaw/CommandP.h>		/* R4 */
X  #endif
X  
X  #include "icon.nomail"			/* default icon pixmap source */
X***************
X*** 61,67 ****
X  #define Offset(field) (XtOffset(XmailResources *, field))
X  
X  static char what[] =
X!  "@(#)xmail.c 1.1 90/05/29 Copyright 1989 National Semiconductor Corp.";
X  
X  static XtResource resrcs[] = {
X      {XtNfont, XtCFont, XtRString, sizeof(char *),
X--- 61,67 ----
X  #define Offset(field) (XtOffset(XmailResources *, field))
X  
X  static char what[] =
X!  "@(#)xmail.c 1.2 90/08/14 Copyright 1989, 1990 National Semiconductor Corp.";
X  
X  static XtResource resrcs[] = {
X      {XtNfont, XtCFont, XtRString, sizeof(char *),
X***************
X*** 72,81 ****
X          Offset(iconGeometry), XtRString, (caddr_t) NULL},
X      {"MFileName", "MFileName", XtRString, sizeof(char *), 
X  	Offset(MFileName), XtRString, (caddr_t) NULL},
X-     {"iconic", "Iconic", XtRBoolean, sizeof(Boolean), 
X- 	Offset(iconic), XtRImmediate, (caddr_t) False},
X      {"bellRing", "BellRing", XtRBoolean, sizeof(Boolean), 
X  	Offset(bellRing), XtRImmediate, (caddr_t) True},
X      {"mailopt_n", "Mailopt_n", XtRBoolean, sizeof(Boolean), 
X  	Offset(mailopt_n), XtRImmediate, (caddr_t) False},
X      {"mailopt_U", "Mailopt_U", XtRBoolean, sizeof(Boolean), 
X--- 72,83 ----
X          Offset(iconGeometry), XtRString, (caddr_t) NULL},
X      {"MFileName", "MFileName", XtRString, sizeof(char *), 
X  	Offset(MFileName), XtRString, (caddr_t) NULL},
X      {"bellRing", "BellRing", XtRBoolean, sizeof(Boolean), 
X  	Offset(bellRing), XtRImmediate, (caddr_t) True},
X+     {"expert", "Expert", XtRBoolean, sizeof(Boolean), 
X+ 	Offset(expert), XtRImmediate, (caddr_t) False},
X+     {"iconic", "Iconic", XtRBoolean, sizeof(Boolean), 
X+ 	Offset(iconic), XtRImmediate, (caddr_t) False},
X      {"mailopt_n", "Mailopt_n", XtRBoolean, sizeof(Boolean), 
X  	Offset(mailopt_n), XtRImmediate, (caddr_t) False},
X      {"mailopt_U", "Mailopt_U", XtRBoolean, sizeof(Boolean), 
X***************
X*** 84,98 ****
X  	Offset(Show_Last), XtRImmediate, (caddr_t) True},
X  };
X  
X  static XrmOptionDescRec Opts[] = {
X!     {"-helpfont",	"*helpFont",	XrmoptionSepArg, (caddr_t) NULL},
X!     {"-iconGeometry",	"*iconGeometry", XrmoptionSepArg, (caddr_t) NULL},
X!     {"-iconic",		"*iconic",	XrmoptionNoArg, (caddr_t) "True"},
X!     {"-f",		"*MFileName",	XrmoptionSepArg, (caddr_t) NULL},
X!     {"-nb",		"*bellRing",	XrmoptionNoArg, (caddr_t) "False"},
X!     {"-n",		"*mailopt_n",	XrmoptionNoArg, (caddr_t) "True"},
X!     {"-U",		"*mailopt_U",	XrmoptionNoArg, (caddr_t) "True"},
X!     {"-ls",		"*Show_Last",	XrmoptionNoArg, (caddr_t) "False"},
X  };
X  
X  char	*IndexBuf;		/* buffer for index widget	*/
X--- 86,105 ----
X  	Offset(Show_Last), XtRImmediate, (caddr_t) True},
X  };
X  
X+ #undef Offset
X+ 
X  static XrmOptionDescRec Opts[] = {
X!     {"-e",		"expert",	XrmoptionNoArg, (caddr_t) "True"},
X!     {"-f",		"MFileName",	XrmoptionSepArg, (caddr_t) NULL},
X!     {"-helpfont",	"helpFont",	XrmoptionSepArg, (caddr_t) NULL},
X!     {"-iconGeometry",	"iconGeometry", XrmoptionSepArg, (caddr_t) NULL},
X!     {"-iconic",		"iconic",	XrmoptionNoArg, (caddr_t) "True"},
X!     {"-ls",		"Show_Last",	XrmoptionNoArg, (caddr_t) "False"},
X!     {"-nb",		"bellRing",	XrmoptionNoArg, (caddr_t) "False"},
X!     {"-n",		"mailopt_n",	XrmoptionNoArg, (caddr_t) "True"},
X!     {"-U",		"mailopt_U",	XrmoptionNoArg, (caddr_t) "True"},
X!     {"-u",		"icon*useName",	XrmoptionNoArg, (caddr_t) "True"},
X!     {"-rv",	"icon*reverseVideo",	XrmoptionNoArg, (caddr_t) "True"},
X  };
X  
X  char	*IndexBuf;		/* buffer for index widget	*/
X***************
X*** 105,111 ****
X  char 	BccBuf[BUFSIZ];		/* message Bcc list		*/
X  char 	tmpName[BUFSIZ];	/* message temporary filename	*/
X  char 	*MailPrompt;		/* mail program prompt string	*/
X! char	*HelpNames[24];		/* array of help window names	*/
X  char	**mailargv;		/* array passed to mail child	*/
X  
X  int	mailargc;		/* counter passed to mail child	*/
X--- 112,118 ----
X  char 	BccBuf[BUFSIZ];		/* message Bcc list		*/
X  char 	tmpName[BUFSIZ];	/* message temporary filename	*/
X  char 	*MailPrompt;		/* mail program prompt string	*/
X! char	*HelpNames[25];		/* array of help window names	*/
X  char	**mailargv;		/* array passed to mail child	*/
X  
X  int	mailargc;		/* counter passed to mail child	*/
X***************
X*** 119,125 ****
X  Widget  toplevel; 		/* top level shell widget */
X  
X  XmailResources 	XMail;		/* application resources of xmail */
X! XtTextSource	HelpStrings[23];
X  XFontStruct	*TextFontStr, *HelpFontStr;
X  
X  
X--- 126,132 ----
X  Widget  toplevel; 		/* top level shell widget */
X  
X  XmailResources 	XMail;		/* application resources of xmail */
X! XtTextSource	HelpStrings[24];
X  XFontStruct	*TextFontStr, *HelpFontStr;
X  
X  
X***************
X*** 173,181 ****
X   HelpNames[i++] = "read";	HelpNames[i++] = "reply";
X   HelpNames[i++] = "save";	HelpNames[i++] = "Send";
X   HelpNames[i++] = "status";	HelpNames[i++] = "Subject";
X!  HelpNames[i++] = "text";	HelpNames[i++] = "title";
X!  HelpNames[i++] = "To";		HelpNames[i++] = "Autograph";
X!  HelpNames[i]   = NULL;
X  
X   strcpy(Command, "Start");		/* let parser know we've started */
X   Recipient[0] = SubjBuf[0] = CcBuf[0] = BccBuf[0] = '\0';
X--- 180,188 ----
X   HelpNames[i++] = "read";	HelpNames[i++] = "reply";
X   HelpNames[i++] = "save";	HelpNames[i++] = "Send";
X   HelpNames[i++] = "status";	HelpNames[i++] = "Subject";
X!  HelpNames[i++] = "text";	HelpNames[i++] = "text2";
X!  HelpNames[i++] = "title";	HelpNames[i++] = "To";
X!  HelpNames[i++] = "Autograph";	HelpNames[i]   = NULL;
X  
X   strcpy(Command, "Start");		/* let parser know we've started */
X   Recipient[0] = SubjBuf[0] = CcBuf[0] = BccBuf[0] = '\0';
X***************
X*** 232,238 ****
X   XMail.buttonHeight	= TEXTHEIGHT + (TextFontStr->ascent / 2);
X   XMail.buttonWidth	= XTextWidth(TextFontStr, " Newmail ", 9);
X         buttonSpace      = XMail.buttonWidth + XMail.commandHSpace + 2;
X!  XMail.shellWidth       = (8 * buttonSpace) + 24;    /*  8 buttons per row */
X   XMail.fileBoxWidth     = (4 * buttonSpace) + XMail.buttonWidth + 2;
X   XMail.helpHeight       = HELPHEIGHT * 14;           /* 14 lines by 60 chars */
X   XMail.helpWidth        = XTextWidth(HelpFontStr, "X11Windows", 10) * 6;
X--- 239,245 ----
X   XMail.buttonHeight	= TEXTHEIGHT + (TextFontStr->ascent / 2);
X   XMail.buttonWidth	= XTextWidth(TextFontStr, " Newmail ", 9);
X         buttonSpace      = XMail.buttonWidth + XMail.commandHSpace + 2;
X!  XMail.shellWidth       = (8 * buttonSpace) + 26;    /*  8 buttons per row */
X   XMail.fileBoxWidth     = (4 * buttonSpace) + XMail.buttonWidth + 2;
X   XMail.helpHeight       = HELPHEIGHT * 14;           /* 14 lines by 60 chars */
X   XMail.helpWidth        = XTextWidth(HelpFontStr, "X11Windows", 10) * 6;
X***************
X*** 258,264 ****
X   Display	*dpy;
X   XSizeHints	size_hints;
X   XWMHints	wm_hints;
X!  int		scn, depth, x, y, width, height;
X   CommandWidget  nm = (CommandWidget)WidgetOf(WidgetOf(WidgetOf(toplevel, "topBox"), "commandPanel"), "Newmail");
X  
X  
X--- 265,271 ----
X   Display	*dpy;
X   XSizeHints	size_hints;
X   XWMHints	wm_hints;
X!  int		scn, depth, x, y;
X   CommandWidget  nm = (CommandWidget)WidgetOf(WidgetOf(WidgetOf(toplevel, "topBox"), "commandPanel"), "Newmail");
X  
X  
X***************
X*** 276,301 ****
X  /*
X  ** Notify the window manager about our icon window
X  */
X!  wm_hints.input = True;
X  
X!  wm_hints.initial_state = (XMail.iconic) ? IconicState : NormalState;
X  
X-  x = RootWidth - 58;			/* provide some reasonable defaults */
X-  y = 83;				/* slightly down the right side top */
X-  if (XMail.iconGeometry)
X-     XParseGeometry(XMail.iconGeometry, &x, &y, &width, &height);
X- 
X-  wm_hints.icon_x = x;
X-  wm_hints.icon_y = y;
X- 
X-  wm_hints.flags  = InputHint | StateHint | IconPositionHint;
X- 
X  #ifndef PIXMAP_ICON
X!  wm_hints.flags |= IconWindowHint;
X!  wm_hints.icon_window = XtWindow(XtNameToWidget(toplevel, "icon"));
X  #else
X!  wm_hints.flags |= IconPixmapHint;
X!  wm_hints.icon_pixmap = XCreateBitmapFromData(dpy, XtScreen(toplevel)->root,
X                                   no_mail_bits, no_mail_width, no_mail_height);
X  #endif
X  
X--- 283,305 ----
X  /*
X  ** Notify the window manager about our icon window
X  */
X!  wm_hints.input		= True;
X!  wm_hints.initial_state	= (XMail.iconic) ? IconicState : NormalState;
X!  wm_hints.flags		= InputHint | StateHint;
X  
X!  if (XMail.iconGeometry) {
X!     ParseIconGeometry(XMail.iconGeometry, &x, &y);
X!     wm_hints.icon_x	= x;
X!     wm_hints.icon_y	= y;
X!     wm_hints.flags	|= IconPositionHint;
X!    }
X  
X  #ifndef PIXMAP_ICON
X!  wm_hints.flags		|= IconWindowHint;
X!  wm_hints.icon_window	= XtWindow(XtNameToWidget(toplevel, "icon"));
X  #else
X!  wm_hints.flags		|= IconPixmapHint;
X!  wm_hints.icon_pixmap	= XCreateBitmapFromData(dpy, XtScreen(toplevel)->root,
X                                   no_mail_bits, no_mail_width, no_mail_height);
X  #endif
X  
X***************
X*** 350,355 ****
X--- 354,361 ----
X   SetHints();
X  
X   callMail(mailargc, mailargv);
X+ 
X+  XSync(XtDisplay(toplevel), False);
X  
X   XtMainLoop();
X  } /* main */
X*** ../v1.1/xmail.man	Mon Jun  4 09:48:46 1990
X--- xmail.man	Mon Aug 27 11:09:22 1990
X***************
X*** 1,5 ****
X  .\"
X! .\" @(#)xmail.l 1.1 90/05/29 NSC;
X  .\"
X  .\" Copyright 1990 by National Semiconductor Corporation.
X  .\"
X--- 1,5 ----
X  .\"
X! .\" @(#)xmail.l 1.2 90/09/14 NSC;
X  .\"
X  .\" Copyright 1990 by National Semiconductor Corporation.
X  .\"
X***************
X*** 30,36 ****
X  .if t .ds Q ``
X  .if t .ds U ''
X  .\"
X! .TH XMAIL 1 "May 29, 1990" "NSC"
X  .SH NAME
X  xmail \- X11 visual interface to the mail program
X  .SH SYNOPSIS
X--- 30,36 ----
X  .if t .ds Q ``
X  .if t .ds U ''
X  .\"
X! .TH XMAIL 1 "August 14, 19
X***************
X*** 345,350 ****
X--- 369,384 ----
X  and send/reply) to orient to that same starting location, rather than be
X  anchored to the intended window.
X  .TP 3
X+ \fB*expert: \fI<boolean>\fR
X+ This boolean defines whether the \*(xM user requires confirmation of
X+ folder commits or composed message deletions.  Whenever an action
X+ would make a permanent un-recoverable change to the \*(xM environment, a
X+ popup confirmation window will be presented for the user, to assure that
X+ the action should take place.  These confirmations include changing a
X+ folder when deletions have occurred, or deleting the text of a newly
X+ composed message instead of sending it.  Setting this resource to True
X+ eliminates those confirmation popups.
X+ .TP 3
X  \fB*iconic: \fI<boolean>\fR
X  This boolean defines whether the \*(xM application should be started in
X  iconic state or not.  It is highly recommended that only the application
X***************
X*** 353,359 ****
X  message entry windows to be started iconic, which could prove confusing
X  to the unaware user.
X  .TP 3
X! \fB*iconGeometry: \fI+XOff+YOff\fR
X  This resource defines an initial location for the icon, whenever the
X  \*(xM application is iconified.
X  .TP 3
X--- 387,393 ----
X  message entry windows to be started iconic, which could prove confusing
X  to the unaware user.
X  .TP 3
X! \fB*iconGeometry: \fI[+-]XOff[+-]YOff\fR
X  This resource defines an initial location for the icon, whenever the
X  \*(xM application is iconified.
X  .TP 3
X***************
X*** 383,392 ****
X  .TP 3
X  \fB*icon\fR
X  controls resources for the \fIicon\fR window.  In addition to 
X! specifications of foreground and background colors, it is possible
X! to also specify mailWatch widget resources, such as the following:
X  .RS
X  .TP 3
X  \fB*icon*reverseVideo: \fI<boolean>\fR
X  If set to true, reverses the foreground and background colors for the icon.
X  .TP 3
X--- 417,430 ----
X  .TP 3
X  \fB*icon\fR
X  controls resources for the \fIicon\fR window.  In addition to 
X! specifications of foreground and background colors, it is also possible
X! to specify the following mailWatch widget resources :
X  .RS
X  .TP 3
X+ \fB*icon*useName: \fI<Boolean>\fR
X+ If set to true, tells \*(xM to include the user login name in the icon window
X+ when displaying the icon.
X+ .TP 3
X  \fB*icon*reverseVideo: \fI<boolean>\fR
X  If set to true, reverses the foreground and background colors for the icon.
X  .TP 3
X***************
X*** 442,447 ****
X--- 480,556 ----
X  file \fB/usr/lib/X11/app-defaults/XMail\fR.  User's may wish to include
X  appropriate alternate definitions in their ~/.Xdefaults file, to tailor
X  preferences for colors and/or fonts.
X+ .SH "KEYBOARD ACCELERATORS"
X+ The index and text windows support two methods of scrolling displayable
X+ text.  The use of the mouse buttons in the scrollbar region is standard.
X+ In addition, keyboard keys have been defined in keeping with conventions
X+ used in text display programs such as \*Qmore\*U and \*Qless\*U.
X+ 
X+ The following table lists the key definitions and their respective actions.
X+ The abbreviation \*QCtrl\*U means to press down and hold the \fBControl\fR
X+ key while pressing the specified letter key.  \*QMeta\*U likewise refers
X+ to the \fBmeta\fR keys (\fIlabeled \*QLeft\*U and \*QRight\*U on some
X+ Sun keyboards\fR).
X+ .sp
X+ .RS
X+ .nf
X+ Key Name 		Action Taken
X+ --------		-----------------------------
X+  Ctrl V 		move to the next page
X+  space  		move to the next page
X+  Meta V 		move to the previous page
X+    b    		move to the previous page
X+  Ctrl Z 		scroll one line up
X+  Return 		scroll one line up
X+    j    		scroll one line up
X+  Meta Z 		scroll one line down
X+    k    		scroll one line down
X+    -    		scroll one line down
X+    \'    		move to the beginning of file
X+  Meta < 		move to the beginning of file
X+  Meta > 		move to the end of file
X+ Shift G 		move to the end of file
X+ .fi
X+ .RE
X+ .sp
X+ .LP
X+ In addition to the scroll key definitions, the \fItext\fR window also supports
X+ keyboard accelerators for most of the command buttons.  Where possible,
X+ these keyboard keys replicate the actual commands that would be typed
X+ if the user were running the native mail program.  Thus, to begin
X+ sending a mail message to some recipient, the user could press the \*Qm\*U key,
X+ and to delete a current message, the user could press the \*Qd\*U key.
X+ .sp
X+ .RS
X+ .nf
X+ Key Name 		Command Action Taken
X+ --------		-----------------------------
X+ Shift A 		reply to all, include the current message
X+ Shift C 		copy the message to the author's name
X+ Shift F 		forward the current mail message
X+ Shift M 		reply to a mail message
X+ Shift N 		bring new mail into your system folder
X+ Shift P 		send the current message to the printer
X+ Shift R 		include the current message in a reply
X+ Shift S 		save the message to the author's name
X+    a    		reply to all recipients of a message
X+    c    		copy the message to the indicated folder
X+    d    		delete the current message
X+    f    		read the full header of the message
X+    i    		incorporate new mail without commit
X+    m    		mail (compose) a new mail message
X+    n    		read the next mail message
X+    p    		read the previous mail message
X+    q    		quit xmail, committing any changes
X+    r    		read the current mail message
X+    s    		save current message in specified folder
X+    u    		undelete the most recently deleted message
X+    w    		writes the message to the indicated file
X+    x    		exit xmail, without committing changes
X+    ?    		displays help for these key definitions
X+  <LF>   		removes help for these key definitions
X+ .fi
X+ .RE
X  .SH "ENVIRONMENT"
X  Several process environment variables are of potential interest to \*(xM.
X  .sp
X***************
X*** 482,488 ****
X  path of the process (assumed to be at least \*Q/bin /usr/bin /usr/ucb\*U).
X  If need be, the XMAILER
X  environment variable can be used to provide a specific path to the Mail
X! program.  Note: \*(xM will not work correctly with any mail program
END_OF_FILE
if test 52848 -ne `wc -c <'Patch.02d'`; then
    echo shar: \"'Patch.02d'\" unpacked with wrong size!
fi
# end of 'Patch.02d'
fi
echo shar: End of archive 4 \(of 5\).
cp /dev/null ark4isdone
MISSING=""
for I in 1 2 3 4 5 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 5 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0


dan
----------------------------------------------------
O'Reilly && Associates   argv at sun.com / argv at ora.com
Opinions expressed reflect those of the author only.



More information about the Comp.sources.x mailing list