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