Home | History | Annotate | Download | only in dist

Lines Matching refs:msg

2  * $XConsortium: msg.c /main/2 1996/01/14 16:51:45 kaleb $
27 /* $XFree86: xc/programs/xmh/msg.c,v 1.4 2002/04/05 21:06:28 dickey Exp $ */
37 static int SetScrn(Msg, Scrn, Boolean, XtCallbackList, XtCallbackList);
41 * Arguments: msg - the message.
47 SetEditable(Msg msg, Boolean edit)
56 XtSetValues(msg->source, args, ONE);
61 * Arguments: msg - the message to edit.
66 IsEditable(Msg msg)
72 XtGetValues(msg->source, args, ONE);
79 char *MsgName(Msg msg)
82 snprintf(result, sizeof(result), "%s:%d", msg->toc->foldername, msg->msgid);
91 Msg msg;
94 msg = scrn->msg;
95 if (msg == NULL) (void) strcpy(str, app_resources.banner);
97 (void) strcpy(str, MsgName(msg));
98 switch (msg->fate) {
105 (void) strcat(str, msg->desttoc->foldername);
106 if (msg->fate == Fcopy)
111 if (msg->temporary) (void)strcat(str, " [Temporary]");
118 /* A major msg change has occurred; redisplay it. (This also should
126 Msg msg;
131 msg = scrn->msg;
132 if (msg) {
135 lastPos = XawTextSourceScan(msg->source, (XawTextPosition) 0,
141 nextPos = XawTextSourceRead(msg->source, nextPos,
152 startPos = XawTextSourceScan(msg->source, startPos,
157 XawTextSetSource(scrn->viewwidget, msg->source, startPos);
158 if (msg->startPos > 0) {
159 XawTextSetInsertionPoint(scrn->viewwidget, msg->startPos);
160 msg->startPos = 0; /* Start in magic place only once. */
208 char *MsgFileName(Msg msg)
211 snprintf(result, sizeof(result), "%s/%d", msg->toc->path, msg->msgid);
218 scanline for this msg. Returns True if saved, false otherwise. */
220 int MsgSaveChanges(Msg msg)
224 if (msg->source) {
225 if (XawAsciiSave(msg->source)) {
226 for (i=0; i < (int) msg->num_scrns; i++)
227 EnableProperButtons(msg->scrn[i]);
228 if (!msg->temporary)
229 TocMsgChanged(msg->toc, msg);
235 msg->toc->foldername, msg->msgid);
240 w= (msg->source?XtWindow(msg->source):None);
249 * scrn was showing a temporary msg that is not being shown in any other scrn,
261 Msg msg = (Msg) client_data;
264 for (i=msg->num_scrns - 1 ; i >= 0 ; i--)
265 SetScrn((Msg)NULL, msg->scrn[i], TRUE, (XtCallbackList) NULL,
272 if (scrn->kind == STtocAndView && MsgChanged(scrn->msg)) {
277 scrn->msg->scrn[0] = NULL;
278 scrn->msg->num_scrns = 0;
280 XtDestroyWidget(scrn->msg->source);
281 scrn->msg->source = NULL;
282 if (scrn->msg->temporary) {
283 (void) unlink(MsgFileName(scrn->msg));
284 TocRemoveMsg(scrn->msg->toc, scrn->msg);
285 MsgFree(scrn->msg);
291 Msg msg,
294 scrn->msg = msg;
295 if (msg == NULL) {
304 msg->num_scrns++;
305 msg->scrn = XtReallocArray(msg->scrn, msg->num_scrns, sizeof(Scrn));
306 msg->scrn[msg->num_scrns - 1] = scrn;
307 if (msg->source == NULL)
308 msg->source = CreateFileSource(scrn->viewwidget, MsgFileName(msg),
314 StoreWindowName(scrn, MsgName(msg));
319 Msg msg;
331 SetScrnNewMsg(mas->msg, mas->scrn);
337 Msg msg,
339 Boolean force, /* if true, force msg set scrn */
351 if (msg == NULL || msg->num_scrns == 0) return 0;
352 if (!force && XawAsciiSourceChanged(msg->source)) {
356 MsgName(msg));
359 yes_callbacks[0].closure = (XtPointer) msg;
366 ConfirmedNoScrn((Widget)NULL, (XtPointer) msg, (XtPointer) NULL);
370 if (scrn->msg == msg) return 0;
372 if (scrn->msg) {
373 num_scrns = scrn->msg->num_scrns;
375 if (scrn->msg->scrn[i] == scrn) break;
378 scrn->msg->scrn[i] = scrn->msg->scrn[--(scrn->msg->num_scrns)];
380 if (!force && XawAsciiSourceChanged(scrn->msg->source)) {
385 cb_data->msg = msg;
389 MsgName(scrn->msg));
400 SetScrnNewMsg(msg, scrn);
406 /* Associate the given msg and scrn, asking for confirmation if necessary. */
409 Msg msg,
414 return SetScrn(msg, scrn, FALSE, confirms, cancels);
421 void MsgSetScrnForComp(Msg msg, Scrn scrn)
423 (void) SetScrn(msg, scrn, FALSE, (XtCallbackList) NULL,
428 /* Associate the given msg and scrn, even if it means losing some unsaved
431 void MsgSetScrnForce(Msg msg, Scrn scrn)
433 (void) SetScrn(msg, scrn, TRUE, (XtCallbackList) NULL,
441 void MsgSetFate(Msg msg, FateType fate, Toc desttoc)
443 Toc toc = msg->toc;
446 msg->fate = fate;
447 msg->desttoc = desttoc;
448 if (fate == Fignore && msg == msg->toc->curmsg)
463 if (toc->num_scrns && msg->visible && !toc->needsrepaint &&
464 *block.ptr != msg->buf[MARKPOS])
465 (void)XawTextReplace(msg->toc->scrn[0]->tocwidget, /*%%%SourceReplace*/
466 msg->position + MARKPOS,
467 msg->position + MARKPOS + 1, &block);
469 msg->buf[MARKPOS] = *block.ptr;
470 for (i=0; i < (int) msg->num_scrns; i++)
471 ResetMsgLabel(msg->scrn[i]);
478 FateType MsgGetFate(Msg msg, Toc *toc)
480 if (toc) *toc = msg->desttoc;
481 return msg->fate;
487 void MsgSetTemporary(Msg msg)
490 msg->temporary = TRUE;
491 for (i=0; i < (int) msg->num_scrns; i++)
492 ResetMsgLabel(msg->scrn[i]);
498 void MsgSetPermanent(Msg msg)
501 msg->temporary = FALSE;
502 for (i=0; i < (int) msg->num_scrns; i++)
503 ResetMsgLabel(msg->scrn[i]);
510 int MsgGetId(Msg msg)
512 return msg->msgid;
518 char *MsgGetScanLine(Msg msg)
520 return msg->buf;
527 Toc MsgGetToc(Msg msg)
529 return msg->toc;
533 /* Set the reapable flag for this msg. */
535 void MsgSetReapable(Msg msg)
538 msg->reapable = TRUE;
539 for (i=0; i < (int) msg->num_scrns; i++)
540 EnableProperButtons(msg->scrn[i]);
545 /* Clear the reapable flag for this msg. */
547 void MsgClearReapable(Msg msg)
550 msg->reapable = FALSE;
551 for (i=0; i < (int) msg->num_scrns; i++)
552 EnableProperButtons(msg->scrn[i]);
556 /* Get the reapable value for this msg. Returns TRUE iff the reapable flag
559 int MsgGetReapable(Msg msg)
561 return msg == NULL || (msg->reapable &&
562 (msg->source == NULL ||
563 !XawAsciiSourceChanged(msg->source)));
567 /* Make it possible to edit the given msg. */
568 void MsgSetEditable(Msg msg)
571 if (msg && msg->source) {
572 SetEditable(msg, TRUE);
573 for (i=0; i < (int) msg->num_scrns; i++)
574 EnableProperButtons(msg->scrn[i]);
580 /* Turn off editing for the given msg. */
582 void MsgClearEditable(Msg msg)
585 if (msg && msg->source) {
586 SetEditable(msg, FALSE);
587 for (i=0; i < (int) msg->num_scrns; i++)
588 EnableProperButtons(msg->scrn[i]);
594 /* Get whether the msg is editable. */
596 int MsgGetEditable(Msg msg)
598 return msg && msg->source && IsEditable(msg);
602 /* Get whether the msg has changed since last saved. */
604 int MsgChanged(Msg msg)
606 return msg && msg->source && XawAsciiSourceChanged(msg->source);
609 /* Call the given function when the msg changes. */
612 MsgSetCallOnChange(Msg msg, void (*func)(XMH_CB_ARGS), XtPointer param)
625 XtSetValues(msg->source, args, (Cardinal) 1);
637 void MsgSend(Msg msg)
644 (void) MsgSaveChanges(msg);
645 from = FOpenAndCheck(MsgFileName(msg), "r");
715 /* Make the msg into the form for a generic composition. Set msg->startPos
719 void MsgLoadComposition(Msg msg)
751 fid = myopen(MsgFileName(msg), O_WRONLY | O_TRUNC | O_CREAT, 0666);
755 TocSetCacheValid(msg->toc);
756 msg->startPos = startPos;
761 /* Load a msg with a template of a reply to frommsg. Set msg->startPos so
766 Msg msg,
767 Msg frommsg,
788 RenameAndCheck(draftFile, MsgFileName(msg));
792 TocSetCacheValid(msg->toc);
793 msg->startPos = GetFileLength(MsgFileName(msg));
799 /* Load a msg with a template of forwarding a list of messages. Set
800 msg->startPos so that the text insertion point will be placed at the end
805 Msg msg,
828 RenameAndCheck(draftFile, MsgFileName(msg));
830 TocSetCacheValid(msg->toc);
831 msg->source = CreateFileSource(scrn->viewlabel, MsgFileName(msg), True);
832 msg->startPos = XawTextSourceScan(msg->source, (XawTextPosition) 0,
837 /* Load msg with a copy of frommsg. */
839 void MsgLoadCopy(Msg msg, Msg frommsg)
842 (void)strcpy(str, MsgFileName(msg));
844 TocSetCacheValid(msg->toc);
849 void MsgCheckPoint(Msg msg)
854 if (!msg || !msg->source || !IsEditable(msg) ||
855 !XawAsciiSourceChanged(msg->source))
860 app_resources.checkpoint_name_format, msg->msgid);
862 snprintf(file, sizeof(file), "%s/", msg->toc->path);
865 app_resources.checkpoint_name_format, msg->msgid);
867 if (!XawAsciiSaveAsFile(msg->source, file)) {
873 TocSetCacheValid(msg->toc);
876 /* Free the storage being used by the given msg. */
878 void MsgFree(Msg msg)
880 XtFree(msg->buf);
881 XtFree((char *)msg);
894 Msg msg = scrn->msg;
898 if (msg == NULL || scrn->assocmsg == NULL) return;