📄 sendwinp.c
字号:
/* * $Id: SendWinP.C,v 1.9 2001/07/28 18:26:03 evgeny Exp $ * * Copyright (c) 1994 HAL Computer Systems International, Ltd. * * HAL COMPUTER SYSTEMS INTERNATIONAL, LTD. * 1315 Dell Avenue * Campbell, CA 95008 * * Author: Greg Hilton * Contributors: Tom Lang, Frank Bieser, and others * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * http://www.gnu.org/copyleft/gpl.html * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#include <config.h>#include "IshAppC.h"#include "SendWinP.h"#include "SendWinC.h"#include "CompPrefC.h"#include "MailPrefC.h"#include "SendButtPrefC.h"#include "ReplyPrefC.h"#include "ButtonMgrC.h"#include "AddressC.h"#include "AliasPrefC.h"#include "MsgItemC.h"#include "AddrMisc.h"#include "HeaderValC.h"#include "Misc.h"#include "HeaderC.h"#include "HeadPrefC.h"#include "Query.h"#include "ConfPrefC.h"#include "PickAliasWinC.h"#include "IncludeWinC.h"#include "MsgPartC.h"#include "ParamC.h"#include "SendIconC.h"#include "FileChooserWinC.h"#include "FileMisc.h"#include "composition.xpm"#include <hgl/WArgList.h>#include <hgl/WXmString.h>#include <hgl/RowColC.h>#include <hgl/rsrc.h>#include <hgl/MimeRichTextC.h>#include <hgl/TextMisc.h>#include <hgl/PixmapC.h>#include <hgl/VBoxC.h>#include <Xm/PushB.h>#include <Xm/CascadeB.h>#include <Xm/RowColumn.h>#include <Xm/Separator.h>#include <Xm/ToggleB.h>#include <Xm/PanedW.h>#include <Xm/Frame.h>#include <Xm/Label.h>#include <Xm/TextF.h>#include <Xm/Form.h>#include <Xm/AtomMgr.h>#include <Xm/MessageB.h>#include <Xm/Protocols.h>#ifndef HAVE_XMREMOVEFROMPOSTFROMLIST_DECLextern "C" void XmRemoveFromPostFromList(Widget menu, Widget post_from_menu);#endif#include <unistd.h>PtrListC *SendWinP::winList = NULL;PtrListC *SendWinP::editPixmaps = NULL;Atom SendWinP::graphicAtom = (Atom)NULL;XtActionsRec SendWinP::actions[2] = { "SendWinC-expand-aliases", (XtActionProc)HandleExpandAliases, "SendWinC-expand-selection", (XtActionProc)HandleExpandSelection,};/*--------------------------------------------------------------- * Composition window private constructor */SendWinP::SendWinP(SendWinC *sw){ pub = sw; if ( !editPixmaps ) editPixmaps = new PtrListC;//// Add this object to the list of all windows// if ( !winList ) winList = new PtrListC; void *tmp = (void*)this; winList->add(tmp); oldHeadPane = NULL; newHeadPane = NULL; curHeadPane = NULL; headText = NULL; bodyText = NULL; optCcTB = NULL; optBccTB = NULL; optFccTB = NULL; optOtherTB = NULL; optMimeTB = NULL; optAddSigTB = NULL; optDigSignTB = NULL; optEncryptTB = NULL; optCheckAddrTB = NULL; optMsgAltTB = NULL; optMsgMimeTB = NULL; optMsgPlainTB = NULL; optTextRichTB = NULL; optTextPlainTB = NULL; clearWin = NULL; deleteWin = NULL; incMsgWin = NULL; incTextWin = NULL; incFileWin = NULL; pickAliasWin = NULL; saveFileWin = NULL; loadFileWin = NULL; fileDataWin = NULL; compIcon = NULL; popupIcon = NULL; modIcon = NULL; editIcon = NULL; editMsg = NULL; containerType = CT_MIXED; edit_pid = 0; spell_pid = 0; modifying = False; keystrokeCount = 0; editMsgText = False; autoSaveTimer = (XtIntervalId)NULL;}/*--------------------------------------------------------------- * Composition window private destuctor */SendWinP::~SendWinP(){//// Remove any auto-save timer// if ( halApp->xRunning && autoSaveTimer ) XtRemoveTimeOut(autoSaveTimer); delete pickAliasWin; delete fileDataWin; delete incTextWin; delete incFileWin; delete saveFileWin; delete loadFileWin; delete headText; delete bodyText; delete compIcon; delete optRC; if ( oldHeadPane ) { HeaderPaneT *p = oldHeadPane; delete p->toText; delete p->ccText; delete p->bccText; delete p->fccText; delete p->subText; delete p->otherText; delete p; } if ( newHeadPane ) { HeaderPaneT *p = newHeadPane; delete p->toText; delete p->ccText; delete p->bccText; delete p->fccText; delete p->subText; delete p->otherText; delete p; } if ( ishApp->exiting ) { u_int count = editPixmaps->size(); for (int i=0; i<count; i++) { PixmapC *pm = (PixmapC*)*(*editPixmaps)[i]; delete pm; } }//// Remove this object from the list of all windows// void *tmp = (void*)this; winList->remove(tmp);} // End Destructor/*--------------------------------------------------------------- * Method to build menus */voidSendWinP::BuildMenus(){ pub->AddMenuBar(); BuildFileMenu(); BuildEditMenu(); BuildOptMenu(); if ( !pub->IsEditOnly() ) pub->AddHelpMenu();}/*--------------------------------------------------------------- * Method to build file menu hierarchy */voidSendWinP::BuildFileMenu(){ Cardinal wcount; Widget wlist[16]; WArgList args;//// Create filePD hierarchy//// filePD// PushButton fileEditPB// PushButton fileSpellPB// CascadeButton fileIncCB// CascadeButton fileAddCB// PushButton fileCheckPB// PushButton fileSavePB// PushButton fileLoadPB// Separator fileSep1// PushButton fileSendKeepPB// PushButton fileSendPB// PushButton fileSendClosePB// Separator fileSep2// PushButton fileClearPB// PushButton fileClosePB// PushButton fileCancelPB// fileEditPB = XmCreatePushButton (pub->filePD, "fileEditPB", 0,0); fileSpellPB = XmCreatePushButton (pub->filePD, "fileSpellPB", 0,0); fileIncCB = XmCreateCascadeButton(pub->filePD, "fileIncCB", 0,0); fileAddCB = XmCreateCascadeButton(pub->filePD, "fileAddCB", 0,0); Widget fileCheckPB; if ( !pub->IsEditOnly() ) fileCheckPB = XmCreatePushButton(pub->filePD, "fileCheckPB", 0,0); fileSavePB = XmCreatePushButton(pub->filePD, "fileSavePB", 0,0); fileLoadPB = XmCreatePushButton(pub->filePD, "fileLoadPB", 0,0); Widget fileSep1 = XmCreateSeparator (pub->filePD, "fileSep1", 0,0); Widget fileSendKeepPB; Widget fileSendPB; Widget fileSendClosePB; Widget fileSep2; if ( !pub->IsEditOnly() ) { fileSendKeepPB = XmCreatePushButton(pub->filePD, "fileSendKeepPB", 0,0); fileSendPB = XmCreatePushButton(pub->filePD, "fileSendPB", 0,0); fileSendClosePB= XmCreatePushButton(pub->filePD, "fileSendClosePB", 0,0); fileSep2 = XmCreateSeparator (pub->filePD, "fileSep2", 0,0); } fileClearPB = XmCreatePushButton(pub->filePD, "fileClearPB", 0,0); Widget fileClosePB = XmCreatePushButton(pub->filePD, "fileClosePB", 0,0); Widget fileCancelPB; if ( pub->IsEditOnly() ) fileCancelPB = XmCreatePushButton(pub->filePD, "fileCancelPB", 0,0); wcount = 0; wlist[wcount++] = fileEditPB; wlist[wcount++] = fileSpellPB; wlist[wcount++] = fileIncCB; wlist[wcount++] = fileAddCB; wlist[wcount++] = fileSavePB; wlist[wcount++] = fileLoadPB; wlist[wcount++] = fileSep1; wlist[wcount++] = fileClearPB; wlist[wcount++] = fileClosePB; if ( pub->IsEditOnly() ) wlist[wcount++] = fileCancelPB; else { wlist[wcount++] = fileCheckPB; wlist[wcount++] = fileSendKeepPB; wlist[wcount++] = fileSendPB; wlist[wcount++] = fileSendClosePB; wlist[wcount++] = fileSep2; } XtManageChildren(wlist, wcount); AddActivate(fileEditPB, DoEdit, this); AddActivate(fileSpellPB, DoSpell, this); AddActivate(fileSavePB, DoSaveFile, this); AddActivate(fileLoadPB, DoLoadFile, this); AddActivate(fileClearPB, DoClear, this); AddActivate(fileClosePB, DoClose, this); if ( !pub->IsEditOnly() ) { AddActivate(fileCheckPB, DoCheckNow, this); AddActivate(fileSendPB, DoSend, this); AddActivate(fileSendKeepPB, DoSendKeep, this); AddActivate(fileSendClosePB, DoSendClose, this); } else AddActivate(fileCancelPB, DoCancel, this);//// Create fileIncPD hierarchy//// fileIncPD// PushButton fileIncTextPB// PushButton fileIncFilePB// PushButton fileIncMsgPB// CascadeButton fileIncSigCB// PulldownMenu fileIncSigPD// PushButton fileIncExtPSigPB// PushButton fileIncExtESigPB// PushButton fileIncIntPSigPB// PushButton fileIncIntESigPB// Widget fileIncPD = XmCreatePulldownMenu(pub->filePD, "fileIncPD", 0,0); XtVaSetValues(fileIncCB, XmNsubMenuId, fileIncPD, NULL); Widget fileIncTextPB = XmCreatePushButton (fileIncPD, "fileIncTextPB",0,0); Widget fileIncFilePB = XmCreatePushButton (fileIncPD, "fileIncFilePB",0,0); Widget fileIncMsgPB = XmCreatePushButton (fileIncPD, "fileIncMsgPB", 0,0); Widget fileIncSigCB = XmCreateCascadeButton(fileIncPD, "fileIncSigCB", 0,0); wcount = 0; wlist[wcount++] = fileIncTextPB; wlist[wcount++] = fileIncFilePB; wlist[wcount++] = fileIncMsgPB; wlist[wcount++] = fileIncSigCB; XtManageChildren(wlist, wcount); AddActivate(fileIncTextPB, DoIncludeText, this); AddActivate(fileIncFilePB, DoIncludeFile, this); AddActivate(fileIncMsgPB, DoIncludeMsg, this); Widget fileIncSigPD = XmCreatePulldownMenu (fileIncPD, "fileIncSigPD", 0,0); XtVaSetValues(fileIncSigCB, XmNsubMenuId, fileIncSigPD, NULL); Widget fileIncExtPSigPB = XmCreatePushButton(fileIncSigPD, "fileIncExtPSigPB", 0,0); Widget fileIncExtESigPB = XmCreatePushButton(fileIncSigPD, "fileIncExtESigPB", 0,0); Widget fileIncIntPSigPB = XmCreatePushButton(fileIncSigPD, "fileIncIntPSigPB", 0,0); Widget fileIncIntESigPB = XmCreatePushButton(fileIncSigPD, "fileIncIntESigPB", 0,0); wcount = 0; wlist[wcount++] = fileIncExtPSigPB; wlist[wcount++] = fileIncExtESigPB; wlist[wcount++] = fileIncIntPSigPB; wlist[wcount++] = fileIncIntESigPB; XtManageChildren(wlist, wcount); AddActivate(fileIncExtPSigPB, DoIncludeExtPSig, this); AddActivate(fileIncExtESigPB, DoIncludeExtESig, this); AddActivate(fileIncIntPSigPB, DoIncludeIntPSig, this); AddActivate(fileIncIntESigPB, DoIncludeIntESig, this);//// Create fileAddPD hierarchy//// fileAddPD// PushButton fileAddMixPB// PushButton fileAddDigPB// PushButton fileAddAltPB// PushButton fileAddParPB// Widget fileAddPD = XmCreatePulldownMenu(pub->filePD, "fileAddPD", 0,0); XtVaSetValues(fileAddCB, XmNsubMenuId, fileAddPD, NULL); Widget fileAddMixPB = XmCreatePushButton(fileAddPD, "fileAddMixPB", 0,0); Widget fileAddDigPB = XmCreatePushButton(fileAddPD, "fileAddDigPB", 0,0); Widget fileAddAltPB = XmCreatePushButton(fileAddPD, "fileAddAltPB", 0,0); Widget fileAddParPB = XmCreatePushButton(fileAddPD, "fileAddParPB", 0,0); wlist[0] = fileAddMixPB; wlist[1] = fileAddDigPB; wlist[2] = fileAddAltPB; wlist[3] = fileAddParPB; XtManageChildren(wlist, 4); AddActivate(fileAddMixPB, DoAddMixed, this); AddActivate(fileAddDigPB, DoAddDigest, this); AddActivate(fileAddAltPB, DoAddAlt, this); AddActivate(fileAddParPB, DoAddParallel, this);} // End BuildFileMenu/*--------------------------------------------------------------- * Method to build edit menu hierarchy */void
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -