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

📄 mimerichtextinit.c

📁 linux下的E_MAIL客户端源码
💻 C
📖 第 1 页 / 共 5 页
字号:
/* *  $Id: MimeRichTextInit.C,v 1.3 2000/05/31 13:05:30 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 "MimeRichTextC.h"#include "MimeRichTextP.h"#include "rsrc.h"#include "HalAppC.h"#include "StrCase.h"#include "CharC.h"#include "WArgList.h"#include "RegexC.h"#include <Xm/Form.h>#include <Xm/Frame.h>#include <Xm/DrawingA.h>#include <Xm/ScrolledW.h>#include <Xm/ScrollBar.h>#include <Xm/AtomMgr.h>#include <X11/Xatom.h>#include <X11/Xmu/Atoms.h>extern int	debuglev;Atom		MimeRichTextP::mimeRichAtom = (Atom)NULL;//// Translations are shared by all//XtTranslations  MimeRichTextP::defaultTrans1;XtTranslations  MimeRichTextP::defaultTrans2;XtTranslations  MimeRichTextP::delLeftTrans;XtTranslations  MimeRichTextP::delRightTrans;XtTranslations  MimeRichTextP::emacsTrans;XtActionsRec	MimeRichTextP::actions[MIME_ACTION_COUNT] = {   "MimeRichTextC-move-left-char",	(XtActionProc)ActMoveLeftChar,   "MimeRichTextC-move-left-word",	(XtActionProc)ActMoveLeftWord,   "MimeRichTextC-move-right-char",	(XtActionProc)ActMoveRightChar,   "MimeRichTextC-move-right-word",	(XtActionProc)ActMoveRightWord,   "MimeRichTextC-move-line-beg",	(XtActionProc)ActMoveLineBeg,   "MimeRichTextC-move-line-end",	(XtActionProc)ActMoveLineEnd,   "MimeRichTextC-move-up-line",	(XtActionProc)ActMoveUpLine,   "MimeRichTextC-move-up-para",	(XtActionProc)ActMoveUpPara,   "MimeRichTextC-move-down-line",	(XtActionProc)ActMoveDownLine,   "MimeRichTextC-move-down-para",	(XtActionProc)ActMoveDownPara,   "MimeRichTextC-move-file-beg",	(XtActionProc)ActMoveFileBeg,   "MimeRichTextC-move-file-end",	(XtActionProc)ActMoveFileEnd,   "MimeRichTextC-delete-left-char",	(XtActionProc)ActDeleteLeftChar,   "MimeRichTextC-delete-left-word",	(XtActionProc)ActDeleteLeftWord,   "MimeRichTextC-delete-right-char",	(XtActionProc)ActDeleteRightChar,   "MimeRichTextC-delete-right-word",	(XtActionProc)ActDeleteRightWord,   "MimeRichTextC-delete-line-beg",	(XtActionProc)ActDeleteLineBeg,   "MimeRichTextC-delete-line-end",	(XtActionProc)ActDeleteLineEnd,   "MimeRichTextC-select-begin",	(XtActionProc)ActSelectBegin,   "MimeRichTextC-select-motion",	(XtActionProc)ActSelectMotion,   "MimeRichTextC-select-extend",	(XtActionProc)ActSelectExtend,   "MimeRichTextC-select-end",		(XtActionProc)ActSelectEnd,   "MimeRichTextC-select-left-char",	(XtActionProc)ActSelectLeftChar,   "MimeRichTextC-select-left-word",	(XtActionProc)ActSelectLeftWord,   "MimeRichTextC-select-right-char",	(XtActionProc)ActSelectRightChar,   "MimeRichTextC-select-right-word",	(XtActionProc)ActSelectRightWord,   "MimeRichTextC-select-line-beg",	(XtActionProc)ActSelectLineBeg,   "MimeRichTextC-select-line-end",	(XtActionProc)ActSelectLineEnd,   "MimeRichTextC-select-up-line",	(XtActionProc)ActSelectUpLine,   "MimeRichTextC-select-up-para",	(XtActionProc)ActSelectUpPara,   "MimeRichTextC-select-down-line",	(XtActionProc)ActSelectDownLine,   "MimeRichTextC-select-down-para",	(XtActionProc)ActSelectDownPara,   "MimeRichTextC-select-file-beg",	(XtActionProc)ActSelectFileBeg,   "MimeRichTextC-select-file-end",	(XtActionProc)ActSelectFileEnd,   "MimeRichTextC-delete-selection",	(XtActionProc)ActDeleteSelection,   "MimeRichTextC-cut-selection",	(XtActionProc)ActCutSelection,   "MimeRichTextC-copy-selection",	(XtActionProc)ActCopySelection,   "MimeRichTextC-paste",		(XtActionProc)ActPaste,   "MimeRichTextC-undo",		(XtActionProc)ActUndo,   "MimeRichTextC-insert-self",		(XtActionProc)ActInsertSelf,   "MimeRichTextC-refresh",		(XtActionProc)ActRefresh,   "MimeRichTextC-plain",		(XtActionProc)ActPlain,   "MimeRichTextC-bold",		(XtActionProc)ActBold,   "MimeRichTextC-italic",		(XtActionProc)ActItalic,   "MimeRichTextC-fixed",		(XtActionProc)ActFixed,   "MimeRichTextC-smaller",		(XtActionProc)ActSmaller,   "MimeRichTextC-bigger",		(XtActionProc)ActBigger,   "MimeRichTextC-underline",		(XtActionProc)ActUnderline,   "MimeRichTextC-center",		(XtActionProc)ActCenter,   "MimeRichTextC-flush-left",		(XtActionProc)ActFlushLeft,   "MimeRichTextC-flush-right",		(XtActionProc)ActFlushRight,   "MimeRichTextC-flush-both",		(XtActionProc)ActFlushBoth,   "MimeRichTextC-no-fill",		(XtActionProc)ActNoFill,   "MimeRichTextC-left-margin-in",	(XtActionProc)ActLeftMarginIn,   "MimeRichTextC-left-margin-out",	(XtActionProc)ActLeftMarginOut,   "MimeRichTextC-right-margin-in",	(XtActionProc)ActRightMarginIn,   "MimeRichTextC-right-margin-out",	(XtActionProc)ActRightMarginOut,   "MimeRichTextC-excerpt-more",	(XtActionProc)ActExcerptMore,   "MimeRichTextC-excerpt-less",	(XtActionProc)ActExcerptLess,   "MimeRichTextC-scroll-up-line",	(XtActionProc)ActScrollUpLine,   "MimeRichTextC-scroll-up-page",	(XtActionProc)ActScrollUpPage,   "MimeRichTextC-scroll-down-line",	(XtActionProc)ActScrollDownLine,   "MimeRichTextC-scroll-down-page",	(XtActionProc)ActScrollDownPage,   "MimeRichTextC-scroll-top",		(XtActionProc)ActScrollTop,   "MimeRichTextC-scroll-bottom",	(XtActionProc)ActScrollBottom,   "MimeRichTextC-line-to-top",		(XtActionProc)ActLineToTop,   "MimeRichTextC-line-to-center",	(XtActionProc)ActLineToCenter,   "MimeRichTextC-line-to-bottom",	(XtActionProc)ActLineToBottom,   "MimeRichTextC-follow-url",		(XtActionProc)ActFollowURL,   "MimeRichTextC-search",		(XtActionProc)ActSearch,   "MimeRichTextC-ignore",		(XtActionProc)ActIgnore,   "MimeRichTextC-post-menu",		(XtActionProc)ActPostMenu};#if 0#endif/*---------------------------------------------------------------------- * double click table for cut and paste in 8 bits * * This table is divided in four parts : * *	- control characters	[0,0x1f] U [0x80,0x9f] *	- separators		[0x20,0x3f] U [0xa0,0xb9] *	- binding characters	[0x40,0x7f] U [0xc0,0xff] *  	- execeptions */int MimeRichTextP::charClasses[256] = {/* NUL  SOH  STX  ETX  EOT  ENQ  ACK  BEL */    32,   1,   1,   1,   1,   1,   1,   1,/*  BS   HT   NL   VT   NP   CR   SO   SI */     1,  32,   1,   1,   1,   1,   1,   1,/* DLE  DC1  DC2  DC3  DC4  NAK  SYN  ETB */     1,   1,   1,   1,   1,   1,   1,   1,/* CAN   EM  SUB  ESC   FS   GS   RS   US */     1,   1,   1,   1,   1,   1,   1,   1,/*  SP    !    "    #    $    %    &    ' */    32,  33,  34,  35,  36,  37,  38,  39,/*   (    )    *    +    ,    -    .    / */    40,  41,  42,  43,  44,  45,  46,  47,/*   0    1    2    3    4    5    6    7 */    48,  48,  48,  48,  48,  48,  48,  48,/*   8    9    :    ;    <    =    >    ? */    48,  48,  58,  59,  60,  61,  62,  63,/*   @    A    B    C    D    E    F    G */    64,  48,  48,  48,  48,  48,  48,  48,/*   H    I    J    K    L    M    N    O */    48,  48,  48,  48,  48,  48,  48,  48,/*   P    Q    R    S    T    U    V    W */     48,  48,  48,  48,  48,  48,  48,  48,/*   X    Y    Z    [    \    ]    ^    _ */    48,  48,  48,  91,  92,  93,  94,  48,/*   `    a    b    c    d    e    f    g */    96,  48,  48,  48,  48,  48,  48,  48,/*   h    i    j    k    l    m    n    o */    48,  48,  48,  48,  48,  48,  48,  48,/*   p    q    r    s    t    u    v    w */    48,  48,  48,  48,  48,  48,  48,  48,/*   x    y    z    {    |    }    ~  DEL */    48,  48,  48, 123, 124, 125, 126,   1,/* x80  x81  x82  x83  IND  NEL  SSA  ESA */     1,   1,   1,   1,   1,   1,   1,   1,/* HTS  HTJ  VTS  PLD  PLU   RI  SS2  SS3 */     1,   1,   1,   1,   1,   1,   1,   1,/* DCS  PU1  PU2  STS  CCH   MW  SPA  EPA */     1,   1,   1,   1,   1,   1,   1,   1,/* x98  x99  x9A  CSI   ST  OSC   PM  APC */     1,   1,   1,   1,   1,   1,   1,   1,/*   -    i   c/    L   ox   Y-    |   So */   160, 161, 162, 163, 164, 165, 166, 167,/*  ..   c0   ip   <<    _        R0    - */   168, 169, 170, 171, 172, 173, 174, 175,/*   o   +-    2    3    '    u   q|    . */   176, 177, 178, 179, 180, 181, 182, 183,/*   ,    1    2   >>  1/4  1/2  3/4    ? */   184, 185, 186, 187, 188, 189, 190, 191,/*  A`   A'   A^   A~   A:   Ao   AE   C, */    48,  48,  48,  48,  48,  48,  48,  48,/*  E`   E'   E^   E:   I`   I'   I^   I: */    48,  48,  48,  48,  48,  48,  48,  48,/*  D-   N~   O`   O'   O^   O~   O:    X */     48,  48,  48,  48,  48,  48,  48, 216,/*  O/   U`   U'   U^   U:   Y'    P    B */    48,  48,  48,  48,  48,  48,  48,  48,/*  a`   a'   a^   a~   a:   ao   ae   c, */    48,  48,  48,  48,  48,  48,  48,  48,/*  e`   e'   e^   e:    i`  i'   i^   i: */    48,  48,  48,  48,  48,  48,  48,  48,/*   d   n~   o`   o'   o^   o~   o:   -: */    48,  48,  48,  48,  48,  48,  48,  248,/*  o/   u`   u'   u^   u:   y'    P   y: */    48,  48,  48,  48,  48,  48,  48,  48};/*---------------------------------------------------------------------- * Constructor */MimeRichTextC::MimeRichTextC(Widget parent, const char *name, ArgList argv,			     Cardinal argc){   priv = new MimeRichTextP;   priv->pub = this;   priv->realized        = False;   priv->defer           = 0;   priv->changed         = False;   priv->textGC          = NULL;   priv->cursorHideCount = 0;   priv->hasFocus        = False;   priv->clickCount      = 0;   priv->cursorTimer     = (XtIntervalId)NULL;   priv->clickTimer      = (XtIntervalId)NULL;   priv->scrollTimer     = (XtIntervalId)NULL;   priv->selectOn	 = False;   priv->okToEndSelection= False;   priv->selectTime	 = 0;   priv->mousePaste	 = False;   priv->sendExcerpt	 = True;   priv->topTextLine     = NULL;   priv->botTextLine     = NULL;   priv->topSaveLine     = NULL;   priv->botSaveLine     = NULL;   priv->topSoftLine     = NULL;   priv->botSoftLine     = NULL;   priv->inputLine	 = NULL;   priv->inputCmd	 = NULL;   priv->checkFroms      = False;   priv->inputTextBuf.AutoShrink(False);   priv->textPm          = (Pixmap)NULL;   priv->stipplePm       = (Pixmap)NULL;   priv->hsbAlwaysOn     = False;   priv->vsbAlwaysOn     = False;//// Save args passed in//   WArgList	args;   int i=0; for (i=0; i<argc; i++) {      Arg	*arg = &argv[i];      args.Add(arg->name, arg->value);   }   char		*cl = "MimeRichTextC";//// If we're in a scrolled window, this is the widget hierarchy://// ScrolledWindow		textSW//    Form			nameForm//       MimeRichTextC		name//   if ( XmIsScrolledWindow(parent) ) {      priv->textSW     = parent;      priv->hlForm     = NULL;      priv->scrollForm = NULL;      priv->textFrame  = NULL;      priv->textVSB    = NULL;      priv->textHSB    = NULL;      priv->hlThick    = 0;   }//// If we're not in a scrolled window, this is the widget hierarchy://// ???				parent//    Form			name//       Form			highlightForm//          Frame		textFrame//             MimeRichTextC	textArea//       ScrollBar		textVSB//       ScrollBar		textHSB//   else {      priv->textSW   = NULL;      priv->textClip = NULL;      args.ResizePolicy(XmRESIZE_NONE);      priv->scrollForm = XmCreateForm(parent, (char*)name, ARGS);      args.Reset();      args.LeftAttachment(XmATTACH_FORM);      args.RightAttachment(XmATTACH_FORM);      args.TopAttachment(XmATTACH_FORM);      args.BottomAttachment(XmATTACH_FORM);      args.MarginWidth(0);      args.MarginHeight(0);      args.ShadowThickness(0);      args.BorderWidth(0);      priv->hlForm = XmCreateForm(priv->scrollForm, "richHighlightForm", ARGS);      priv->hlThick = get_int(cl, MainWidget(), "highlightThickness", 1);      args.Reset();      args.MarginWidth(0);      args.MarginHeight(0);      args.BorderWidth(0);      args.LeftAttachment(XmATTACH_FORM, priv->hlThick);      args.RightAttachment(XmATTACH_FORM, priv->hlThick);      args.TopAttachment(XmATTACH_FORM, priv->hlThick);      args.BottomAttachment(XmATTACH_FORM, priv->hlThick);      priv->textFrame = XmCreateFrame(priv->hlForm, "richTextFrame", ARGS);      args.Reset();      args.LeftAttachment(XmATTACH_OPPOSITE_WIDGET, priv->hlForm);      args.RightAttachment(XmATTACH_OPPOSITE_WIDGET, priv->hlForm);      args.TopAttachment(XmATTACH_NONE);      args.BottomAttachment(XmATTACH_FORM);      args.Orientation(XmHORIZONTAL);      args.ProcessingDirection(XmMAX_ON_RIGHT);      args.ShowArrows(True);      args.MappedWhenManaged(False);      priv->textHSB = XmCreateScrollBar(priv->scrollForm, "richTextHSB", ARGS);      priv->hsbAlwaysOn = get_boolean(priv->textHSB, "alwaysOn", False);      args.Reset();      args.LeftAttachment(XmATTACH_NONE);      args.RightAttachment(XmATTACH_FORM);      args.TopAttachment(XmATTACH_OPPOSITE_WIDGET, priv->hlForm);      args.BottomAttachment(XmATTACH_OPPOSITE_WIDGET, priv->hlForm);      args.Orientation(XmVERTICAL);      args.ProcessingDirection(XmMAX_ON_BOTTOM);      args.ShowArrows(True);      args.MappedWhenManaged(False);      priv->textVSB = XmCreateScrollBar(priv->scrollForm, "richTextVSB", ARGS);      priv->vsbAlwaysOn = get_boolean(priv->textVSB, "alwaysOn", False);      XtAddCallback(priv->textHSB, XmNdecrementCallback,		    (XtCallbackProc)MimeRichTextP::HandleHScroll, priv);      XtAddCallback(priv->textHSB, XmNdragCallback,		    (XtCallbackProc)MimeRichTextP::HandleHScroll, priv);      XtAddCallback(priv->textHSB, XmNincrementCallback,		    (XtCallbackProc)MimeRichTextP::HandleHScroll, priv);      XtAddCallback(priv->textHSB, XmNpageDecrementCallback,		    (XtCallbackProc)MimeRichTextP::HandleHScroll, priv);      XtAddCallback(priv->textHSB, XmNpageIncrementCallback,		    (XtCallbackProc)MimeRichTextP::HandleHScroll, priv);      XtAddCallback(priv->textHSB, XmNtoBottomCallback,		    (XtCallbackProc)MimeRichTextP::HandleHScroll, priv);      XtAddCallback(priv->textHSB, XmNtoTopCallback,		    (XtCallbackProc)MimeRichTextP::HandleHScroll, priv);      XtAddCallback(priv->textHSB, XmNvalueChangedCallback,		    (XtCallbackProc)MimeRichTextP::HandleHScroll, priv);      XtAddCallback(priv->textVSB, XmNdecrementCallback,		    (XtCallbackProc)MimeRichTextP::HandleVScroll, priv);      XtAddCallback(priv->textVSB, XmNdragCallback,		    (XtCallbackProc)MimeRichTextP::HandleVScroll, priv);      XtAddCallback(priv->textVSB, XmNincrementCallback,		    (XtCallbackProc)MimeRichTextP::HandleVScroll, priv);      XtAddCallback(priv->textVSB, XmNpageDecrementCallback,		    (XtCallbackProc)MimeRichTextP::HandleVScroll, priv);      XtAddCallback(priv->textVSB, XmNpageIncrementCallback,		    (XtCallbackProc)MimeRichTextP::HandleVScroll, priv);      XtAddCallback(priv->textVSB, XmNtoBottomCallback,		    (XtCallbackProc)MimeRichTextP::HandleVScroll, priv);      XtAddCallback(priv->textVSB, XmNtoTopCallback,		    (XtCallbackProc)MimeRichTextP::HandleVScroll, priv);      XtAddCallback(priv->textVSB, XmNvalueChangedCallback,		    (XtCallbackProc)MimeRichTextP::HandleVScroll, priv);      parent = priv->textFrame;//// Get offsets to use if scrollbars are not displayed//      XtVaGetValues(priv->hlForm,		    XmNrightOffset,  &priv->noScrollRoff,		    XmNbottomOffset, &priv->noScrollBoff, NULL);//// Get size and offset for scrollbars//      int	roff, boff;      Dimension	sbwd, sbht;      XtVaGetValues(priv->textVSB,		    XmNrightOffset,  &roff, XmNwidth,  &sbwd, NULL);      XtVaGetValues(priv->textHSB,		    XmNbottomOffset, &boff, XmNheight, &sbht, NULL);//// Get offsets to use if scrollbars are displayed//      priv->scrollRoff = priv->noScrollRoff + sbwd + roff;      priv->scrollBoff = priv->noScrollBoff + sbht + boff;//// Place scroll bars if they're always on//      if ( priv->vsbAlwaysOn ) {	 XtVaSetValues(priv->hlForm,  XmNrightOffset, priv->scrollRoff, NULL);	 XtVaSetValues(priv->textVSB, XmNmappedWhenManaged, True, NULL);      }      else {	 XtVaSetValues(priv->hlForm,  XmNrightOffset, priv->noScrollRoff, NULL);      }      if ( priv->hsbAlwaysOn ) {	 XtVaSetValues(priv->hlForm,  XmNbottomOffset, priv->scrollBoff, NULL);	 XtVaSetValues(priv->textHSB, XmNmappedWhenManaged, True, NULL);      }      else {	 XtVaSetValues(priv->hlForm,  XmNbottomOffset, priv->noScrollBoff,NULL);      }   } // End if we're creating our own scroll bars   priv->hsbOn  = priv->hsbAlwaysOn;   priv->vsbOn  = priv->vsbAlwaysOn;

⌨️ 快捷键说明

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