📄 mainwinp.c
字号:
/* * $Id: MainWinP.C,v 1.14 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 "MainWinP.h"#include "MainWinC.h"#include "IshAppC.h"#include "QuickMenu.h"#include "AppPrefC.h"#include "AliasPrefC.h"#include "SumPrefC.h"#include "FolderPrefC.h"#include "MsgItemC.h"#include "MsgC.h"#include "IconPrefC.h"#include "FolderC.h"#include "Fork.h"#include "AlertPrefC.h"#include "SaveMgrC.h"#include "ConfPrefC.h"#include "AutoFilePrefC.h"#include "FileChooserWinC.h"#include "MsgFindWinC.h"#include "ReadWinC.h"#include "PrintWinC.h"#include "PipeWinC.h"#include "MsgListC.h"#include "ReadPrefC.h"#include <hgl/WArgList.h>#include <hgl/TBoxC.h>#include <hgl/VBoxC.h>#include <hgl/FieldViewC.h>#include <hgl/PixmapC.h>#include <hgl/rsrc.h>#include <hgl/WXmString.h>#include <hgl/RegexC.h>#include <hgl/RangeC.h>#include <hgl/SysErr.h>#include <hgl/VItemC.h>#include <hgl/System.h>#include <hgl/WidgetListC.h>#include <Xm/PushB.h>#include <Xm/Separator.h>#include <Xm/CascadeB.h>#include <Xm/RowColumn.h>#include <Xm/PanedW.h>#include <Xm/Form.h>#include <Xm/Label.h>#include <Xm/MessageB.h>#include <Xm/Protocols.h>#include <Xm/AtomMgr.h>#include <unistd.h>#include <sys/wait.h>/*--------------------------------------------------------------- * Constructor */MainWinP::MainWinP(MainWinC *mw){ pub = mw; iconDict = new PixmapNameDictC; iconDict->AllowDuplicates(FALSE); delFolderList = new FolderListC; lastDelList = new VItemListC; recentMenuTime = 0; deferRecentMenu = False; saveQueryWin = NULL; newFolderWin = NULL; openSelectWin = NULL; folderVBox = NULL; msgTBox = NULL; fieldView = NULL; msgFindWin = NULL; printWin = NULL; pipeWin = NULL;} // End constructor/*--------------------------------------------------------------- * Destructor */MainWinP::~MainWinP(){ //delete commentWin; Don't do this since it is part of ishApp->sendWinList delete printWin; delete pipeWin; delete newFolderWin; delete openSelectWin; delete msgFindWin; delete folderVBox; delete fieldView; delete msgTBox;//// Delete pixmaps// u_int count = iconDict->size(); int i=0; for (i=0; i<count; i++) { PixmapC *pm = (*iconDict)[i]->val; delete pm; } delete iconDict; delete noMailPM; delete newMailPM; delete readMailPM; delete unreadMailPM; delete delFolderList; delete lastDelList;} // End destructor/*--------------------------------------------------------------- * Method to build menu hierarchy */voidMainWinP::BuildMenus(){ BuildFileMenu(); BuildFolderMenu(); BuildMsgMenu(); BuildOptMenu(); BuildHelpMenu();//// Set the font on the fileCB since it is created before the user's font// resources are set.// XmFontList fontList; XtVaGetValues(pub->helpCB, XmNfontList, &fontList, NULL); XtVaSetValues(pub->fileCB, XmNfontList, fontList, NULL);} // End BuildMenus/*--------------------------------------------------------------- * Method to build file menu hierarchy */voidMainWinP::BuildFileMenu(){ Widget wlist[5];//// filePD// PushButton filePrintPB// Separator fileSep1// PushButton fileSleepPB// PushButton fileQuitPB// PushButton fileExitPB// filePrintPB = XmCreatePushButton(pub->filePD, "filePrintPB", 0,0); Widget fileSep1 = XmCreateSeparator (pub->filePD, "fileSep1", 0,0); Widget fileSleepPB = XmCreatePushButton(pub->filePD, "fileSleepPB", 0,0); Widget fileQuitPB = XmCreatePushButton(pub->filePD, "fileQuitPB", 0,0); Widget fileExitPB = XmCreatePushButton(pub->filePD, "fileExitPB", 0,0); wlist[0] = filePrintPB; wlist[1] = fileSep1; wlist[2] = fileSleepPB; wlist[3] = fileQuitPB; wlist[4] = fileExitPB; XtManageChildren(wlist, 5); AddActivate(filePrintPB, DoMsgPrint, this); AddActivate(fileSleepPB, DoFileSleep, this); AddActivate(fileQuitPB, DoFileQuit, this); AddActivate(fileExitPB, DoFileExit, this); halApp->AddExitCallback((CallbackFn *)Exit, (void *)this);} // End BuildFileMenu/*--------------------------------------------------------------- * Method to build folder menu hierarchy */voidMainWinP::BuildFolderMenu(){ WArgList args; Cardinal wcount; Widget wlist[16];//// Create cascade button and pulldown menu// Widget folderCB = XmCreateCascadeButton(pub->menuBar, "folderCB", 0,0); Widget folderPD = XmCreatePulldownMenu (pub->menuBar, "folderPD", 0,0); XtVaSetValues(folderCB, XmNsubMenuId, folderPD, NULL); XtManageChild(folderCB);//// Create folderPD hierarchy//// folderPD// PushButton folderNewPB// PushButton folderOpenPB// CascadeButton folderOpenRecentCB// PulldownMenu folderOpenRecentPD// CascadeButton folderOpenQuickCB// PulldownMenu folderOpenQuickPD// CascadeButton folderActCB// PulldownMenu folderActPD// PushButton folderActSysPB// PushButton folderActSelPB// Separator folderSep1// CascadeButton folderSaveCB// PulldownMenu folderSavePD// PushButton folderSaveCurPB// PushButton folderSaveSelPB// PushButton folderSaveAllPB// CascadeButton folderReadCB// PulldownMenu folderReadPD// PushButton folderReadCurPB// PushButton folderReadSelPB// PushButton folderReadAllPB// CascadeButton folderCloseCB// PulldownMenu folderClosePD// PushButton folderCloseCurPB// PushButton folderCloseSelPB// PushButton folderCloseAllPB// CascadeButton folderDelCB// PulldownMenu folderDelPD// PushButton folderDelCurPB// PushButton folderDelSelPB// PushButton folderDelAllPB// Separator folderSep2// PushButton folderSelPB// PushButton folderDeselPB// Widget folderNewPB = XmCreatePushButton(folderPD, "folderNewPB", 0,0); Widget folderOpenPB = XmCreatePushButton(folderPD, "folderOpenPB", 0,0); folderOpenRecentCB = XmCreateCascadeButton(folderPD, "folderOpenRecentCB", 0,0); folderOpenRecentPD = XmCreatePulldownMenu (folderPD, "folderOpenRecentPD", 0,0); XtVaSetValues(folderOpenRecentCB, XmNsubMenuId, folderOpenRecentPD, NULL);//// Add a data structure and a pulldown menu for the quick function// QuickInfoT *cbData = new QuickInfoT; if ( (!ishApp->appPrefs->usingImap) || (!ishApp->folderPrefs->UsingLocal()) ) cbData->dir = ishApp->appPrefs->FolderDir(); else cbData->dir = ""; cbData->menu = XmCreatePulldownMenu(folderPD, "quickPD", 0,0); cbData->menuTime = 0; args.Reset(); args.UserData(cbData); args.SubMenuId(cbData->menu); folderOpenQuickCB = XmCreateCascadeButton(folderPD,"folderOpenQuickCB",ARGS); Widget folderActCB = XmCreateCascadeButton(folderPD, "folderActCB", 0,0); Widget folderSep1 = XmCreateSeparator (folderPD, "folderSep1", 0,0); Widget folderSaveCB = XmCreateCascadeButton(folderPD, "folderSaveCB", 0,0); Widget folderReadCB = XmCreateCascadeButton(folderPD, "folderReadCB", 0,0); Widget folderCloseCB = XmCreateCascadeButton(folderPD, "folderCloseCB", 0,0); Widget folderDelCB = XmCreateCascadeButton(folderPD, "folderDelCB", 0,0); Widget folderSep2 = XmCreateSeparator (folderPD, "folderSep2", 0,0); folderSelPB = XmCreatePushButton (folderPD, "folderSelPB", 0,0); folderDeselPB = XmCreatePushButton (folderPD, "folderDeselPB", 0,0); Widget folderActPD = XmCreatePulldownMenu(folderPD, "folderActPD", 0,0); Widget folderSavePD = XmCreatePulldownMenu(folderPD, "folderSavePD", 0,0); Widget folderReadPD = XmCreatePulldownMenu(folderPD, "folderReadPD", 0,0); Widget folderClosePD = XmCreatePulldownMenu(folderPD, "folderClosePD", 0,0); Widget folderDelPD = XmCreatePulldownMenu(folderPD, "folderDelPD", 0,0); XtVaSetValues(folderActCB, XmNsubMenuId, folderActPD, NULL); XtVaSetValues(folderSaveCB, XmNsubMenuId, folderSavePD, NULL); XtVaSetValues(folderReadCB, XmNsubMenuId, folderReadPD, NULL); XtVaSetValues(folderCloseCB, XmNsubMenuId, folderClosePD, NULL); XtVaSetValues(folderDelCB, XmNsubMenuId, folderDelPD, NULL); wcount = 0; wlist[wcount++] = folderNewPB; wlist[wcount++] = folderOpenPB; wlist[wcount++] = folderOpenRecentCB; wlist[wcount++] = folderOpenQuickCB; wlist[wcount++] = folderActCB; wlist[wcount++] = folderSep1; wlist[wcount++] = folderSaveCB; wlist[wcount++] = folderReadCB; wlist[wcount++] = folderCloseCB; wlist[wcount++] = folderDelCB; wlist[wcount++] = folderSep2; wlist[wcount++] = folderSelPB; wlist[wcount++] = folderDeselPB; XtManageChildren(wlist, wcount); // folderPD children//// Build folderActPD//// PushButton folderActSysPB// PushButton folderActSelPB// folderActSysPB = XmCreatePushButton(folderActPD, "folderActSysPB", 0,0); folderActSelPB = XmCreatePushButton(folderActPD, "folderActSelPB", 0,0); wlist[0] = folderActSysPB; wlist[1] = folderActSelPB; XtManageChildren(wlist, 2); // folderActPD children//// Build folderSavePD//// PushButton folderSaveCurPB// PushButton folderSaveSelPB// PushButton folderSaveAllPB// folderSaveCurPB = XmCreatePushButton(folderSavePD, "folderSavePB", 0,0); folderSaveSelPB = XmCreatePushButton(folderSavePD, "folderSaveSelPB", 0,0); folderSaveAllPB = XmCreatePushButton(folderSavePD, "folderSaveAllPB", 0,0); wlist[0] = folderSaveCurPB; wlist[1] = folderSaveSelPB; wlist[2] = folderSaveAllPB; XtManageChildren(wlist, 3); // folderSavePD children//// Build folderReadPD//// PushButton folderReadCurPB// PushButton folderReadSelPB// PushButton folderReadAllPB// folderReadCurPB = XmCreatePushButton(folderReadPD, "folderReadCurPB", 0,0); folderReadSelPB = XmCreatePushButton(folderReadPD, "folderReadSelPB", 0,0); folderReadAllPB = XmCreatePushButton(folderReadPD, "folderReadAllPB", 0,0); wlist[0] = folderReadCurPB; wlist[1] = folderReadSelPB; wlist[2] = folderReadAllPB; XtManageChildren(wlist, 3); // folderReadPD children//// Build folderClosePD//// PushButton folderCloseCurPB// PushButton folderCloseSelPB// PushButton folderCloseAllPB// folderCloseCurPB= XmCreatePushButton(folderClosePD, "folderCloseCurPB", 0,0); folderCloseSelPB= XmCreatePushButton(folderClosePD, "folderCloseSelPB", 0,0); folderCloseAllPB= XmCreatePushButton(folderClosePD, "folderCloseAllPB", 0,0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -