⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sendwinp.c

📁 linux下的E_MAIL客户端源码
💻 C
📖 第 1 页 / 共 5 页
字号:
/* *  $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 + -