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

📄 mimerichtextinit.c

📁 linux下的E_MAIL客户端源码
💻 C
📖 第 1 页 / 共 5 页
字号:
} // End FlushTextURL/*---------------------------------------------------------------------- * Add a command to the command list of the current input line */BooleanMimeRichTextC::AddCommand(CharC cmd, Boolean negate){   if ( cmd.StartsWith("iso-", IGNORE_CASE) ) {      StringC	name(cmd);      name(3,1) = "";	// Remove '-'      return priv->AddCharsetCommand(name, negate);   }   else if ( cmd.StartsWith("iso", IGNORE_CASE) ) {      return priv->AddCharsetCommand(cmd, negate);   }   if ( debuglev > 1 ) {      cout <<"Found command: " <<cmd;      if ( negate ) cout <<" off";      else          cout <<" on";      cout <<endl;   }   Boolean	legal = True;   Boolean	stateChange = False;   Boolean	lineChange  = False;   int		level;   TextStateC	*inputState = &priv->inputCmd->state;   if      ( cmd.Equals("bold", IGNORE_CASE) ) {      if ( negate ) legal = (inputState->CurFontCmd() == FC_BOLD);      level = inputState->Bold();      stateChange = ((negate && level == 1) || (!negate && level == 0));   }   else if ( cmd.Equals("italic", IGNORE_CASE) ) {      if ( negate ) legal = (inputState->CurFontCmd() == FC_ITALIC);      level = inputState->Italic();      stateChange = ((negate && level == 1) || (!negate && level == 0));   }   else if ( cmd.Equals("fixed", IGNORE_CASE) ) {      if ( negate ) legal = (inputState->CurFontCmd() == FC_FIXED);      level = inputState->Fixed();      stateChange = ((negate && level == 1) || (!negate && level == 0));   }   else if ( cmd.Equals("smaller", IGNORE_CASE) ) {      if ( negate ) legal = (inputState->CurFontCmd() == FC_SMALLER);      level = inputState->Smaller();      stateChange = ((negate && level > 0) || !negate);   }   else if ( cmd.Equals("bigger", IGNORE_CASE) ) {      if ( negate ) legal = (inputState->CurFontCmd() == FC_BIGGER);      level = inputState->Bigger();      stateChange = ((negate && level > 0) || !negate);   }   else if ( cmd.Equals("center", IGNORE_CASE) ) {      if ( negate ) legal = (inputState->CurJustCmd() == JC_CENTER);      level = inputState->Center();      stateChange = ((negate && level == 1) || (!negate && level == 0));      lineChange = !priv->BeginningOfInputLine();   }   else if ( cmd.Equals("flushleft", IGNORE_CASE) ) {      if ( negate ) legal = (inputState->CurJustCmd() == JC_LEFT);      level = inputState->FlushLeft();      stateChange = ((negate && level == 1) || (!negate && level == 0));      lineChange = !priv->BeginningOfInputLine();   }   else if ( cmd.Equals("flushright", IGNORE_CASE) ) {      if ( negate ) legal = (inputState->CurJustCmd() == JC_RIGHT);      level = inputState->FlushRight();      stateChange = ((negate && level == 1) || (!negate && level == 0));      lineChange = !priv->BeginningOfInputLine();   }   else if ( cmd.Equals("flushboth", IGNORE_CASE) ) {      if ( negate ) legal = (inputState->CurJustCmd() == JC_BOTH);      level = inputState->FlushBoth();      stateChange = ((negate && level == 1) || (!negate && level == 0));      lineChange = !priv->BeginningOfInputLine();   }   else if ( cmd.Equals("nofill", IGNORE_CASE) ) {      if ( negate ) legal = (inputState->CurJustCmd() == JC_NOFILL);      level = inputState->NoFill();      stateChange = ((negate && level == 1) || (!negate && level == 0));      lineChange = !priv->BeginningOfInputLine();   }   else if ( cmd.Equals("underline", IGNORE_CASE) ) {      level = inputState->Underline();      if ( negate ) legal = (level > 0);      stateChange = True;   }   else if ( cmd.Equals("excerpt", IGNORE_CASE) ) {      level = inputState->Excerpt();      if ( negate ) legal = (level > 0);      stateChange = True;      lineChange = !priv->BeginningOfInputLine();   }   else if ( cmd.Equals("indent", IGNORE_CASE) ) {      level = inputState->LIndent();      if ( negate ) legal = (level > 0);      stateChange = True;   }   else if ( cmd.Equals("indentright", IGNORE_CASE) ) {      level = inputState->RIndent();      if ( negate ) legal = (level > 0);      stateChange = True;   }   else if ( cmd.Equals("x-color", IGNORE_CASE) ) {      level = inputState->ColorCmdCount();      // We only get negates here.  AddParamCommand gets the others      /*if ( negate )*/ legal = (level > 0);      stateChange = True;   }   else if ( cmd.Equals("x-link", IGNORE_CASE) ) {      level = inputState->PLinkCount();      // We only get negates here.  AddParamCommand gets the others      /*if ( negate )*/ legal = (level > 0);      stateChange = True;   }   else {      return False;   }   if ( !legal ) return True;//// Store any pending text//   priv->FlushTextBuf();//// Create a new line if necessary//   if ( lineChange ) {      priv->NewInputLine();   }//// If we didn't create a new line (which automatically creates a new command//    object) and the input state is changing and the text is not empty, we//    need a new command object.//   else if ( stateChange && priv->inputCmd->text->size() > 0 ) {      RichCmdC	*rcmd = new RichCmdC(RC_TEXT);      rcmd->state = priv->inputCmd->state;      priv->inputLine->AddCommand(rcmd, /*after*/priv->inputCmd);      priv->inputCmd = rcmd;   }   inputState = &priv->inputCmd->state;//// Process this command//   if ( cmd.Equals("bold", IGNORE_CASE) ) {      if ( negate ) inputState->PopFont();      else	    inputState->PushFont(FC_BOLD);   }   else if ( cmd.Equals("italic", IGNORE_CASE) ) {      if ( negate ) inputState->PopFont();      else	    inputState->PushFont(FC_ITALIC);   }   else if ( cmd.Equals("fixed", IGNORE_CASE) ) {      if ( negate ) inputState->PopFont();      else	    inputState->PushFont(FC_FIXED);   }   else if ( cmd.Equals("smaller", IGNORE_CASE) ) {      if ( negate ) inputState->PopFont();      else	    inputState->PushFont(FC_SMALLER);   }   else if ( cmd.Equals("bigger", IGNORE_CASE) ) {      if ( negate ) inputState->PopFont();      else	    inputState->PushFont(FC_BIGGER);   }   else if ( cmd.Equals("center", IGNORE_CASE) ) {      if ( negate ) inputState->PopJust();      else	    inputState->PushJust(JC_CENTER);   }   else if ( cmd.Equals("flushleft", IGNORE_CASE) ) {      if ( negate ) inputState->PopJust();      else	    inputState->PushJust(JC_LEFT);   }   else if ( cmd.Equals("flushright", IGNORE_CASE) ) {      if ( negate ) inputState->PopJust();      else	    inputState->PushJust(JC_RIGHT);   }   else if ( cmd.Equals("flushboth", IGNORE_CASE) ) {      if ( negate ) inputState->PopJust();      else	    inputState->PushJust(JC_BOTH);   }   else if ( cmd.Equals("nofill", IGNORE_CASE) ) {      if ( negate ) inputState->PopJust();      else	    inputState->PushJust(JC_NOFILL);   }   else if ( cmd.Equals("underline", IGNORE_CASE) ) {      if ( negate ) inputState->UnderlineLess();      else	    inputState->UnderlineMore();   }   else if ( cmd.Equals("excerpt", IGNORE_CASE) ) {      if ( negate ) inputState->ExcerptLess();      else	    inputState->ExcerptMore();   }   else if ( cmd.Equals("indent", IGNORE_CASE) ) {      if ( negate ) inputState->LIndentLess();      else	    inputState->LIndentMore();   }   else if ( cmd.Equals("indentright", IGNORE_CASE) ) {      if ( negate ) inputState->RIndentLess();      else	    inputState->RIndentMore();   }   else if ( cmd.Equals("x-color", IGNORE_CASE) ) {      // We only get negates here.  AddParamCommand gets the others      /*if ( negate )*/ inputState->PopColor();   }   else if ( cmd.Equals("x-link", IGNORE_CASE) ) {      // We only get negates here.  AddParamCommand gets the others      /*if ( negate )*/ inputState->PopLink();			inputState->PopColor();   }   return True;} // End AddCommand/*---------------------------------------------------------------------- * Add a command requiring a parameter to the command list of the *    current input line */BooleanMimeRichTextP::AddParamCommand(StringC& cmd, StringC& param){   if ( debuglev > 1 )      cout <<"Found command: " <<cmd <<" with param: " <<param <<endl;   TextStateC	*inputState = &inputCmd->state;//// We now acknowledge two commands, x-color and x-link//   Pixel	color;   Boolean	isColor = False;   if ( cmd.Equals("x-color", IGNORE_CASE) ) {      if ( !PixelValue(textDA, param, &color) ) return False;      isColor = True;   }   else if ( !cmd.Equals("x-link", IGNORE_CASE) ) {      return False;   }//// Store any pending text//   FlushTextBuf();//// If the input state is changing and the text is not empty, we//    need a new command object.//   if ( inputCmd->text->size() > 0 ) {      RichCmdC	*rcmd = new RichCmdC(RC_TEXT);      rcmd->state = inputCmd->state;      inputLine->AddCommand(rcmd, /*after*/inputCmd);      inputCmd = rcmd;   }   inputState = &inputCmd->state;//// Process this command//   if (isColor) {      inputState->PushColor(color);   }   else {      // inputState->PushColor(linkColor);      inputState->PushLink(param);   }   return True;} // End AddParamCommand/*---------------------------------------------------------------------- * Add a character set command to the command list of the current input line */BooleanMimeRichTextP::AddCharsetCommand(CharC cmd, Boolean negate){   if ( debuglev > 1 ) {      cout <<"Found command: " <<cmd;      if ( negate ) cout <<" off";      else          cout <<" on";      cout <<endl;   }//// Add this character set to the list//   int	charsetNum = pub->AddCharset(cmd);   Boolean	legal = True;   Boolean	stateChange = False;   int		level;   TextStateC	*inputState = &inputCmd->state;   switch (charsetNum) {      case 1:	 if ( negate ) legal = (inputState->CurFontCmd() == FC_CHARSET_1);	 level = inputState->Charset1();	 stateChange = ((negate && level == 1) || (!negate && level == 0));	 break;      case 2:	 if ( negate ) legal = (inputState->CurFontCmd() == FC_CHARSET_2);	 level = inputState->Charset2();	 stateChange = ((negate && level == 1) || (!negate && level == 0));	 break;      case 3:	 if ( negate ) legal = (inputState->CurFontCmd() == FC_CHARSET_3);	 level = inputState->Charset3();	 stateChange = ((negate && level == 1) || (!negate && level == 0));	 break;      case 4:	 if ( negate ) legal = (inputState->CurFontCmd() == FC_CHARSET_4);	 level = inputState->Charset4();	 stateChange = ((negate && level == 1) || (!negate && level == 0));	 break;      case 5:	 if ( negate ) legal = (inputState->CurFontCmd() == FC_CHARSET_5);	 level = inputState->Charset5();	 stateChange = ((negate && level == 1) || (!negate && level == 0));	 break;      case 6:	 if ( negate ) legal = (inputState->CurFontCmd() == FC_CHARSET_6);	 level = inputState->Charset6();	 stateChange = ((negate && level == 1) || (!negate && level == 0));	 break;      case 7:	 if ( negate ) legal = (inputState->CurFontCmd() == FC_CHARSET_7);	 level = inputState->Charset7();	 stateChange = ((negate && level == 1) || (!negate && level == 0));	 break;      case 8:	 if ( negate ) legal = (inputState->CurFontCmd() == FC_CHARSET_8);	 level = inputState->Charset8();	 stateChange = ((negate && level == 1) || (!negate && level == 0));	 break;      case 9:	 if ( negate ) legal = (inputState->CurFontCmd() == FC_CHARSET_9);	 level = inputState->Charset9();	 stateChange = ((negate && level == 1) || (!negate && level == 0));	 break;      default:         return False;   } // End switch character set number   if ( !legal ) return True;//// Store any pending text//   FlushTextBuf();//// If the input state is changing and the text is not empty, we need a new//    command object.//   if ( stateChange && inputCmd->text->size() > 0 ) {      RichCmdC	*rcmd = new RichCmdC(RC_TEXT);      rcmd->state = inputCmd->state;      inputLine->AddCommand(rcmd, /*after*/inputCmd);      inputCmd = rcmd;   }   inputState = &inputCmd->state;//// Process this command//   if ( negate ) inputState->PopFont();   else switch (charsetNum) {      case 1: inputState->PushFont(FC_CHARSET_1); break;      case 2: inputState->PushFont(FC_CHARSET_2); break;      case 3: inputState->PushFont(FC_CHARSET_3); break;      case 4: inputState->PushFont(FC_CHARSET_4); break;      case 5: inputState->PushFont(FC_CHARSET_5); break;      case 6: inputState->PushFont(FC_CHARSET_6); break;      case 7: inputState->PushFont(FC_CHARSET_7); break;      case 8: inputState->PushFont(FC_CHARSET_8); break;      case 9: inputState->PushFont(FC_CHARSET_9); break;   } // End switch character set number   return True;} // End AddCharsetCommand/*---------------------------------------------------------------------- * Method to add a new character set */intMimeRichTextC::AddCharset(CharC cs){   unsigned	count = priv->charsetList.size();   int i=0; for (i=0; i<count; i++) {      StringC	*name = (StringC*)*priv->charsetList[i];      if ( cs.Equals(*name, I

⌨️ 快捷键说明

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