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

📄 ishappp.c

📁 linux下的E_MAIL客户端源码
💻 C
📖 第 1 页 / 共 3 页
字号:
// Delete the dialog//      XtDestroyWidget(dialog);   } // End if using a pop server   else {	// Not using a POP server      pub->appPrefs->usingPop = False;   }   pub->appPrefs->WriteDatabase();   pub->appPrefs->WriteFile();} // End QueryPop/*--------------------------------------------------------------- *  Callback to auto-deselect a toggle button */static voidAutoDeselect(Widget, Widget dst, XmToggleButtonCallbackStruct *src){   if ( src->set )      XmToggleButtonSetState(dst, False, False);}/*--------------------------------------------------------------- *  Method to ask the user what folder type(s) they will be using */voidIshAppP::QueryFolderType(){   QueryAnswerT  answer;   WArgList	args;   args.DialogStyle(XmDIALOG_FULL_APPLICATION_MODAL);   args.AutoUnmanage(False);   if ( halApp->questionPM ) args.SymbolPixmap(halApp->questionPM);   Widget dialog = XmCreateQuestionDialog(*pub, "queryFolderTypeWin", ARGS);   XtAddCallback(dialog, XmNokCallback, (XtCallbackProc)AnswerQuery,			 (XtPointer)&answer);   XtUnmanageChild(XmMessageBoxGetChild(dialog, XmDIALOG_CANCEL_BUTTON));   XtAddCallback(dialog, XmNhelpCallback, (XtCallbackProc)HalAppC::DoHelp,			 (char *) "helpcard");//// Don't allow window manager close function//   XmAddWMProtocolCallback(XtParent(dialog), halApp->delWinAtom,			   (XtCallbackProc)PreventClose, dialog);//// Add toggle buttons for folder type choices//   Widget	typeFrame = XmCreateFrame(dialog, "typeFrame", 0,0);//// Set up typeRC for 1 row with equal sized columns//   RowColC	*typeRC = new RowColC(typeFrame, "typeRC", ARGS);   typeRC->Defer(True);   typeRC->SetOrientation(RcCOL_MAJOR);   typeRC->SetRowCount(1);   typeRC->SetColAlignment(XmALIGNMENT_CENTER);   typeRC->SetColWidthAdjust(RcADJUST_NONE);   typeRC->SetColResize(True);   typeRC->SetUniformCols(True);   Widget	unixTB = XmCreateToggleButton(*typeRC, "unixTB", 0,0);   Widget	mhTB   = XmCreateToggleButton(*typeRC, "mhTB",   0,0);   Widget	mmdfTB = XmCreateToggleButton(*typeRC, "mmdfTB", 0,0);   Widget	noneTB = XmCreateToggleButton(*typeRC, "noneTB", 0,0);   AddValueChanged(noneTB, AutoDeselect, unixTB);   AddValueChanged(noneTB, AutoDeselect, mhTB);   AddValueChanged(noneTB, AutoDeselect, mmdfTB);   AddValueChanged(unixTB, AutoDeselect, noneTB);   AddValueChanged(mmdfTB, AutoDeselect, noneTB);   AddValueChanged(mhTB,   AutoDeselect, noneTB);   typeRC->AddChild(unixTB);   typeRC->AddChild(mhTB);   typeRC->AddChild(mmdfTB);   if ( pub->appPrefs->usingImap ) typeRC->AddChild(noneTB);   typeRC->Defer(False);   XtManageChild(*typeRC);   XtManageChild(typeFrame);//// Display the appropriate message//   StringC	msgStr;   if ( pub->appPrefs->usingImap )      msgStr = get_string(dialog, "imapMessageString",	     "Which folder type(s) will you be using on your local machine?");   else      msgStr = get_string(dialog, "messageString",				  "Which folder type(s) will you be using?");   WXmString	wstr = (char*)msgStr;   XtVaSetValues(dialog, XmNmessageString, (XmString)wstr, NULL);   XtManageChild(dialog);   XMapRaised(halApp->display, XtWindow(XtParent(dialog)));//// Loop until at least one type is selected//   int		typeCount = 0;   while ( typeCount == 0 ) {//// Simulate the main event loop and wait for the answer//      answer = QUERY_NONE;      while ( answer == QUERY_NONE ) {	 XtAppProcessEvent(halApp->context, XtIMXEvent);	 XSync(halApp->display, False);      }      Boolean	usingUnix = XmToggleButtonGetState(unixTB);      Boolean	usingMh   = XmToggleButtonGetState(mhTB);      Boolean	usingMmdf = XmToggleButtonGetState(mmdfTB);      typeCount = (usingMh		    ? 1 : 0)		+ (usingUnix		    ? 1 : 0)		+ (usingMmdf		    ? 1 : 0)		+ (pub->appPrefs->usingImap ? 1 : 0);      if ( typeCount == 0 )	 pub->PopupMessage("Please select at least one folder type.");      else {	 pub->folderPrefs->usingUnix = usingUnix;	 pub->folderPrefs->usingMh   = usingMh;	 pub->folderPrefs->usingMmdf = usingMmdf;      }   } // End while not done   XtUnmanageChild(dialog);   XSync(halApp->display, False);   XmUpdateDisplay(dialog);//// Delete the dialog//   delete typeRC;   XtDestroyWidget(dialog);//// If there was more than one type selected, find out which one will be//    the default type//   if ( typeCount > 1 ) {      Widget	unixTB = NULL;      Widget	mhTB   = NULL;      Widget	mmdfTB = NULL;      Widget	imapTB = NULL;      args.Reset();      args.DialogStyle(XmDIALOG_FULL_APPLICATION_MODAL);      args.AutoUnmanage(False);      if ( halApp->questionPM ) args.SymbolPixmap(halApp->questionPM);      dialog = XmCreateQuestionDialog(*halApp, "defFolderTypeWin", ARGS);//// Add buttons for folder type//      Widget frame = XmCreateFrame   (dialog, "typeFrame", 0,0);      Widget radio = XmCreateRadioBox(frame,  "typeRadio", 0,0);      if ( pub->appPrefs->usingImap ) {	 imapTB = XmCreateToggleButton(radio, "imapTB", 0,0);	 XtManageChild(imapTB);      }      if ( pub->folderPrefs->usingUnix ) {	 unixTB = XmCreateToggleButton(radio, "unixTB", 0,0);	 XtManageChild(unixTB);	 if ( pub->appPrefs->usingImap )	    msgStr = get_string(unixTB, "imapLabelString",	    				"Unix on local machine");	 else	    msgStr = get_string(unixTB, "labelString", "Unix");	 wstr = (char*)msgStr;                      	 XtVaSetValues(unixTB, XmNlabelString, (XmString)wstr, NULL);      }      if ( pub->folderPrefs->usingMh ) {	 mhTB   = XmCreateToggleButton(radio, "mhTB",   0,0);	 XtManageChild(mhTB);	 if ( pub->appPrefs->usingImap )	    msgStr = get_string(mhTB, "imapLabelString",				      "MH on local machine");	 else	    msgStr = get_string(mhTB, "labelString", "MH");	 wstr = (char*)msgStr;                      	 XtVaSetValues(mhTB, XmNlabelString, (XmString)wstr, NULL);      }      if ( pub->folderPrefs->usingMmdf ) {	 mmdfTB = XmCreateToggleButton(radio, "mmdfTB", 0,0);	 XtManageChild(mmdfTB);	 if ( pub->appPrefs->usingImap )	    msgStr = get_string(mmdfTB, "imapLabelString",	    				"MMDF on local machine");	 else	    msgStr = get_string(mmdfTB, "labelString", "MMDF");	 wstr = (char*)msgStr;                      	 XtVaSetValues(mmdfTB, XmNlabelString, (XmString)wstr, NULL);      }      if ( pub->appPrefs->usingImap )	 XmToggleButtonSetState(imapTB, True, True);      else if ( pub->folderPrefs->usingUnix )	 XmToggleButtonSetState(unixTB, True, True);      else if ( pub->folderPrefs->usingMh )	 XmToggleButtonSetState(mhTB, True, True);      else	 XmToggleButtonSetState(mmdfTB, True, True);      XtManageChild(radio);      XtManageChild(frame);      XtAddCallback(dialog, XmNokCallback, (XtCallbackProc)AnswerQuery,		    (XtPointer)&answer);      XtUnmanageChild(XmMessageBoxGetChild(dialog, XmDIALOG_CANCEL_BUTTON));      XtAddCallback(dialog, XmNhelpCallback,		    (XtCallbackProc)HalAppC::DoHelp, (char *) "helpcard");//// Trap window manager close function//      XmAddWMProtocolCallback(XtParent(dialog), halApp->delWinAtom,			      (XtCallbackProc)WmClose,			      (caddr_t)&answer);//// Show the dialog//      XtManageChild(dialog);      XMapRaised(halApp->display, XtWindow(XtParent(dialog)));//// Loop until a type is selected//      Boolean	done = False;      while ( !done ) {//// Simulate the main event loop and wait for the answer//	 answer = QUERY_NONE;	 while ( answer == QUERY_NONE ) {	    XtAppProcessEvent(halApp->context, XtIMXEvent);	    XSync(halApp->display, False);	 }	 Boolean	useImap = imapTB && XmToggleButtonGetState(imapTB);	 Boolean	useUnix = unixTB && XmToggleButtonGetState(unixTB);	 Boolean	useMh   = mhTB   && XmToggleButtonGetState(mhTB);	 Boolean	useMmdf = mmdfTB && XmToggleButtonGetState(mmdfTB);	 done = True;	 if ( pub->folderPrefs->usingMh && useMh )	    pub->folderPrefs->defFolderType = MH_FOLDER;	 else if ( pub->folderPrefs->usingUnix && useUnix )	    pub->folderPrefs->defFolderType = UNIX_FOLDER;	 else if ( pub->folderPrefs->usingMmdf && useMmdf )	    pub->folderPrefs->defFolderType = MMDF_FOLDER;	 else if ( pub->appPrefs->usingImap && useImap )	    pub->folderPrefs->defFolderType = IMAP_FOLDER;	 else {	    pub->PopupMessage("Please select a folder type.");	    done = False;	 }      } // End while not done      XtUnmanageChild(dialog);      XSync(halApp->display, False);      XmUpdateDisplay(dialog);      XtDestroyWidget(dialog);   } // End if we need to ask for the default folder type   else {      if ( pub->appPrefs->usingImap )	 pub->folderPrefs->defFolderType = IMAP_FOLDER;      else if ( pub->folderPrefs->usingMh )	 pub->folderPrefs->defFolderType = MH_FOLDER;      else if ( pub->folderPrefs->usingMmdf )	 pub->folderPrefs->defFolderType = MMDF_FOLDER;      else	 pub->folderPrefs->defFolderType = UNIX_FOLDER;   }   pub->folderPrefs->WriteDatabase();   pub->folderPrefs->WriteFile();} // End QueryFolderType/*--------------------------------------------------------------- *  Method to return a usable reading window */ReadWinC*IshAppP::GetReadWin(){//// First look for a displayed, unpinned window//   ReadWinC	*readWin = NULL;   unsigned	count = pub->readWinList.size();   Boolean	found = False;   int i=0; for (i=0; !found && i<count; i++) {      readWin = (ReadWinC*)*pub->readWinList[i];      if ( readWin->IsShown() && !readWin->Pinned() ) {	 if ( !readWin->IsIconified() )	    readWin->HalTopLevelC::Show();	// Pop it to the top	 found = True;      }   } // End for each existing composition window//// Then look for an undisplayed window//   for (i=0; !found && i<count; i++) {      readWin = (ReadWinC*)*pub->readWinList[i];      found = !readWin->IsShown();   }//// If we didn't find a window, we need to create a new one//   if ( !found ) {      pub->BusyCursor(True);      if ( debuglev > 0 ) cout <<"Creating reading window" NL;      readWin = new ReadWinC("readWin", *halApp);      void	*tmp = (void*)readWin;      pub->readWinList.add(tmp);      pub->BusyCursor(False);   }   return readWin;} // End GetReadWin/*--------------------------------------------------------------- *  Method to see if the user want's to restart any crashed edits. */voidIshAppP::EditSavedCompositions(){   int		count = compFileList.size();   if ( count < 1 ) return;   WArgList	args;   args.DialogStyle(XmDIALOG_FULL_APPLICATION_MODAL);   args.AutoUnmanage(True);   if ( halApp->questionPM ) args.SymbolPixmap(halApp->questionPM);   Widget dialog = XmCreateQuestionDialog(*pub, "queryEditCompWin", ARGS);   XtAddCallback(dialog, XmNokCallback, (XtCallbackProc)FinishEditSavedComp,			 this);   XtAddCallback(dialog, XmNcancelCallback, (XtCallbackProc)DeleteSavedComp,			 this);   XtAddCallback(dialog, XmNhelpCallback, (XtCallbackProc)HalAppC::DoHelp,			 (char *) "helpcard");   Widget	noPB = XmCreatePushButton(dialog, "noPB", 0,0);   AddActivate(noPB, CancelEditSavedComp, this);   XtManageChild(noPB);   StringC	label = get_string(dialog, XmNmessageString,				  "Resume edit of composition(s) in progress?");   StringC	countStr;   countStr += (int)compFileList.size();   label.Replace("$COUNT", countStr);   WXmString	wstr = (char*)label;   XtVaSetValues(dialog, XmNmessageString, (XmString)wstr, NULL);   XtManageChild(dialog);} // End EditSavedCompositions/*--------------------------------------------------------------- *  Callback to reopen user's crashed edits. */voidIshAppP::FinishEditSavedComp(Widget dialog, IshAppP *This, XtPointer){   u_int	count = This->compFileList.size();   StringC	file;   int i=0; for (i=0; i<count; i++) {      file = ishApp->compPrefs->AutoSaveDir();      if ( !file.EndsWith('/') ) file += '/';      file += *This->compFileList[i];      SendWinC	*win  = This->pub->GetSendWin();      win->LoadFile(file);      win->SetAutoSaveFile(file);      win->Show();   }   This->compFileList.removeAll();   XtDestroyWidget(dialog);} // End FinishEditSavedComp/*--------------------------------------------------------------- *  Callback to deleted user's crashed edits. */voidIshAppP::DeleteSavedComp(Widget dialog, IshAppP *This, XtPointer){   u_int	count = This->compFileList.size();   StringC	file;   int i=0; for (i=0; i<count; i++) {      file = ishApp->compPrefs->AutoSaveDir();      if ( !file.EndsWith('/') ) file += '/';      file += *This->compFileList[i];      unlink(file);   }   This->compFileList.removeAll();   XtDestroyWidget(dialog);} // End DeleteSavedComp/*--------------------------------------------------------------- *  Callback to delay user's crashed edits. */voidIshAppP::CancelEditSavedComp(Widget dialog, IshAppP*, XtPointer){   XtDestroyWidget(dialog);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -