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

📄 includewinc.c

📁 linux下的E_MAIL客户端源码
💻 C
📖 第 1 页 / 共 4 页
字号:
 */voidIncludeWinC::DoParamExpose(Widget, IncludeWinC *This, XtPointer){//// Remove this callback//   XtRemoveCallback(*This->paramRC, XmNexposeCallback,		    (XtCallbackProc)DoParamExpose, This);//// Fix sizes of pane//   Dimension	ht;   XtVaGetValues(*This->paramRC, XmNheight, &ht, NULL);   XtVaSetValues(*This->paramRC, XmNpaneMinimum, ht, XmNpaneMaximum, ht, NULL);} // End DoParamExpose/*--------------------------------------------------------------- *  IncludeWinC destructor */IncludeWinC::~IncludeWinC(){   delete fileRC;   delete paramRC;}/*--------------------------------------------------------------- *  Method to edit data for a single file */voidIncludeWinC::Show(SendIconC *file){   fileList.removeAll();   fileList.add(file->data->dataFile);   fileIndex = 0;   typeStr = file->data->conStr;   typeIndex = typeList.indexOf(typeStr);   XtUnmanageChild(skipPB);   HalDialogC::Show();//// Initialize fields//   StringC	tmpStr;   file->data->GetDescription(tmpStr);   XmTextFieldSetString(descTF, tmpStr);   XtVaSetValues(typeOM, XmNmenuHistory, *typePbList[typeIndex], NULL);   Widget	tb = NULL;   switch ( file->data->accType ) {      case (AT_INLINE):		tb = includeAsFileTB;	break;      case (AT_LOCAL_FILE):	tb = attachLocalTB;	break;      case (AT_ANON_FTP):	tb = attachAnonTB;	break;      case (AT_FTP):		tb = attachFtpTB;	break;      case (AT_TFTP):		tb = attachTftpTB;	break;      case (AT_MAIL_SERVER):	tb = attachMailTB;	break;   }   if ( tb ) XmToggleButtonSetState(tb, True, True);   tb = NULL;   switch ( file->data->encType ) {      case (ET_NONE):		tb = encodeNoneTB;	break;      case (ET_8BIT):		tb = encode8bitTB;	break;      case (ET_BASE_64):	tb = encode64TB;	break;      case (ET_BINHEX):		tb = encodeBinHexTB;	break;      case (ET_QP):		tb = encodeQpTB;	break;      case (ET_UUENCODE):	tb = encodeUuTB;	break;   }   if ( tb ) XmToggleButtonSetState(tb, True, True);   XmToggleButtonSetState(preEncodeTB, file->data->IsEncoded(), True);   CharC	val;   ParamC	*param = file->data->Param("charset");   if ( param ) val = param->val;   else		val = "";   TextFieldSetString(charTF, val);   param = file->data->Param("name");   if ( param ) val = param->val;   else		val = file->data->dataFile;   TextFieldSetString(nameTF, val);   param = file->data->Param("filename");   if ( param ) val = param->val;   else		val = "";   TextFieldSetString(outNameTF, val);   param = file->data->Param("type");   if ( param ) val = param->val;   else		val = "";   TextFieldSetString(octTypeTF, val);   param = file->data->Param("padding");   if ( param ) val = param->val;   else		val = "";   TextFieldSetString(octPadTF, val);//// Look for other content-type parameters//   tmpStr.Clear();   param = file->data->conParams;   while ( param ) {      if ( !param->val.Equals("charset",  IGNORE_CASE) &&	   !param->val.Equals("filename", IGNORE_CASE) &&	   !param->val.Equals("type",     IGNORE_CASE) &&	   !param->val.Equals("padding",  IGNORE_CASE) ) {	 if ( tmpStr.size() > 0 ) tmpStr += "; ";         tmpStr += param->full;      }      param = param->next;   }   TextSetString(otherText, tmpStr);   param = file->data->Param("site");   if ( param ) val = param->val;   else		val = "";   TextFieldSetString(hostTF, val);   param = file->data->Param("directory");   if ( param ) val = param->val;   else		val = "";   TextFieldSetString(dirTF, val);   param = file->data->Param("mode");   if ( param ) {      val = param->val;      tb = NULL;      if ( file->data->IsTFTP() ) {	 if      (val.Equals("netascii", IGNORE_CASE)) tb = tftpModeNetAsciiTB;	 else if (val.Equals("octet"   , IGNORE_CASE)) tb = tftpModeOctetTB;	 else if (val.Equals("mail"    , IGNORE_CASE)) tb = tftpModeMailTB;      }      else {	 if      ( val.Equals    ("ascii",  IGNORE_CASE) ) tb = ftpModeAsciiTB;	 else if ( val.Equals    ("ebcdic", IGNORE_CASE) ) tb = ftpModeEbcdicTB;	 else if ( val.Equals    ("image",  IGNORE_CASE) ) tb = ftpModeImageTB;//       else if ( val.StartsWith("local",  IGNORE_CASE) ) tb = ftpModeLocalTB;      }      if ( tb ) XmToggleButtonSetState(tb, True, True);   }   param = file->data->Param("server");   if ( param ) val = param->val;   else		val = "";   TextFieldSetString(serverTF, val);   param = file->data->Param("subject");   if ( param ) val = param->val;   else		val = "";   TextFieldSetString(subjectTF, val);   tmpStr.Clear();   if ( file->data->IsMail() ) file->data->GetText(tmpStr);   TextSetString(bodyText, tmpStr);   param = file->data->Param("expiration");   if ( param ) val = param->val;   else		val = "";   TextFieldSetString(expTF, val);   param = file->data->Param("size");   if ( param ) val = param->val;   else		val = "";   TextFieldSetString(sizeTF, val);   param = file->data->Param("permission");   Boolean readWrite = (param && param->val.Equals("read-write", IGNORE_CASE));   XmToggleButtonSetState(readWrite ? permRwTB : permRoTB, True, True);   UpdateVisibleFields();} // End Show/*--------------------------------------------------------------- *  Method to get data for a list of files */voidIncludeWinC::Show(StringListC *list){   fileList = *list;   typeStr.Clear();	// Force a type change   if ( list->size() > 1 ) XtManageChild(skipPB);   else			   XtUnmanageChild(skipPB);   HalDialogC::Show();   SetFile(0);} // End Show/*--------------------------------------------------------------- *  Method to get data for a specific file */voidIncludeWinC::SetFile(int fileNum){   fileIndex = fileNum;//// Display the file name//   StringC	*name = fileList[fileIndex];   while ( IsDir(*name) ) {      StringC	errMsg = *name;      errMsg += " is a directory";      PopupMessage(errMsg);      if ( fileIndex+1 < fileList.size() ) {	 fileIndex++;	 name = fileList[fileIndex];      }      else {	 Hide();	 return;      }   }   BusyCursor(True);   XmTextFieldSetString(nameTF, *name);   CharC	baseName = BaseName(*name);   TextSetString(outNameTF, baseName);   XmTextFieldSetString(descTF, "");//// Get the file type//   StringC	newTypeStr;   ::GetFileType(*name, newTypeStr);   Boolean	typeChange = (newTypeStr != typeStr);//// Initialize buttons if the type changed//   if ( typeChange ) {      typeStr = newTypeStr;      if ( !typeList.includes(typeStr) ) {	 typeList.add(typeStr);	 BuildTypeMenu();      }      typeIndex = typeList.indexOf(typeStr);//// Display "type" push button//      XtVaSetValues(typeOM, XmNmenuHistory, *typePbList[typeIndex], NULL);      if ( IsText() || ContentType() == CT_RFC822 ) {	 XmToggleButtonSetState(includeAsTextTB, True, True);	 XmToggleButtonSetState(encodeNoneTB,    True, True);      }      else {	 XmToggleButtonSetState(includeAsFileTB, True, True);	 XmToggleButtonSetState(encode64TB,      True, True);      }      UpdateVisibleFields();   } // End if file type changed//// Display size if available//   struct stat	stats;   if ( stat(*name, &stats) == 0 ) {      StringC	sizeStr;      sizeStr += (int)stats.st_size;      XmTextFieldSetString(sizeTF, sizeStr);   }   BusyCursor(False);} // End SetFile/*--------------------------------------------------------------- *  Method to display the fields appropriate to the current file type *     and include type */voidIncludeWinC::UpdateVisibleFields(){   if ( IncludeAsText() ) {      XtUnmanageChild(*paramRC);   }   else {//// Allow pane size to change//      XtVaSetValues(*paramRC, XmNpaneMinimum, (Dimension)1,			      XmNpaneMaximum, (Dimension)10000, NULL);//// Determine which parameters are visible//      paramRC->Defer(True);      paramRC->SetRowVisible(charsetRow, IsText() && IncludeAsFile());      paramRC->SetRowVisible(octTypeRow, IsAppOctet());      paramRC->SetRowVisible(octPadRow,  IsAppOctet());      paramRC->SetRowVisible(hostRow,      			     AttachFtp() || AttachAnon() || AttachTftp());      paramRC->SetRowVisible(dirRow,      			     AttachFtp() || AttachAnon() || AttachTftp());      paramRC->SetRowVisible(ftpModeRow,  AttachFtp() || AttachAnon());      paramRC->SetRowVisible(tftpModeRow, AttachTftp());      paramRC->SetRowVisible(serverRow,   AttachMail());      paramRC->SetRowVisible(subjectRow,  AttachMail());      paramRC->SetRowVisible(bodyRow,     AttachMail());      paramRC->Defer(False);      XtManageChild(*paramRC);   } // End if not including as text//// Encoding can only be pre-existing for attachments//   if ( !IncludeAsText() && !IncludeAsFile() ) {      XmToggleButtonSetState(preEncodeTB, True, False);      XmToggleButtonSetState(encodeNoneTB, True, True);   }   else      XmToggleButtonSetState(preEncodeTB, False, False);   if ( IsText() ) {      XmToggleButtonSetState(ftpModeAsciiTB, True, True);      XmToggleButtonSetState(tftpModeNetAsciiTB, True, True);   }   else {      XmToggleButtonSetState(ftpModeImageTB, True, True);      XmToggleButtonSetState(tftpModeOctetTB, True, True);   }} // End UpdateVisibleFields/*--------------------------------------------------------------- *  Callback to handle press of ok button */voidIncludeWinC::DoOk(Widget, IncludeWinC *This, XtPointer){//// Check the file name field//   char	*cs = XmTextFieldGetString(This->nameTF);   if ( strlen(cs) == 0 ) {      set_invalid(This->nameTF, True, True);      This->PopupMessage("Please enter a file name.");      XtFree(cs);      return;   }//// Check the file accessibility//   if ( This->IncludeAsText() || This->IncludeAsFile() ) {      if ( access(cs, F_OK) != 0 ) {	 set_invalid(This->nameTF, True, True);	 This->PopupMessage("The specified file does not exist.");	 XtFree(cs);	 return;      }      else if ( access(cs, R_OK) != 0 ) {	 set_invalid(This->nameTF, True, True);	 This->PopupMessage("The specified file is not readable.");	 XtFree(cs);	 return;      }//// Check the encoding fields.  Check for 8-bit data in the file if no//    encoding has been selected.//      if ( This->NoEncoding() ) {	 MappedFileC	*mf = MapFile(cs);	 if ( mf ) {	    Boolean	has8 = Contains8Bit(mf->data);	    UnmapFile(mf);	    if ( has8 ) {	       This->PopupMessage	         ("This file contains 8-bit data.\nPlease select an encoding.");	       XtFree(cs);	       return;	    }	 }      }   } // End if we need access to the file   XtFree(cs);//// Check the ftp host field//   if ( This->AttachFtp() || This->AttachAnon() || This->AttachTftp() ) {      cs = XmTextFieldGetString(This->hostTF);      if ( strlen(cs) == 0 ) {	 set_invalid(This->hostTF, True, True);	 This->PopupMessage("Please enter a host name or address.");	 XtFree(cs);	 return;      }      XtFree(cs);   }//// Check the mail fields//   if ( This->AttachMail() ) {      cs = XmTextFieldGetString(This->serverTF);      if ( strlen(cs) == 0 ) {	 set_invalid(This->serverTF, True, True);	 This->PopupMessage("Please enter an address for the mail server.");	 XtFree(cs);	 return;      }      XtFree(cs);   }

⌨️ 快捷键说明

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