📄 mimerichtextp.h
字号:
Boolean okToEndSelection; enum { SELECT_CHAR, SELECT_WORD, SELECT_LINE, SELECT_PAGE } selectType; TextPosC baseSelectBegPos; TextPosC baseSelectEndPos; Boolean sendExcerpt; StringC webCommand; // Run when URL clicked static Atom mimeRichAtom; static int charClasses[256];//// Font structures// StringC defCharset; StringC defPlainFontName; StringC defFixedFontName; int curCharset; PtrListC charsetList; FontDataC plainFont; FontDataC fixedFont;//// Used for auto scrolling// XMotionEvent scrollEvent; // Motion event that started scrolling XtIntervalId scrollTimer; char *vScrollAction; // Auto scroll action char *hScrollAction; // Auto scroll action int autoScrollInterval; TextPosC nextPartPos; // Used in GetNextPart Boolean moreParts; CallbackListC changeCalls; // When text is modified by user//// Translations// static XtActionsRec actions[MIME_ACTION_COUNT]; static XtTranslations defaultTrans1; static XtTranslations defaultTrans2; static XtTranslations delRightTrans; static XtTranslations delLeftTrans; static XtTranslations emacsTrans; StringC userTrans; Boolean emacsMode; // True if using emacsTrans Boolean delLikeBs; // True if delete goes left//// Used for when button clicked in link area// CallbackListC linkCalls; // When link area is clicked//// Static methods// static void HandleAutoScroll (MimeRichTextP*, XtIntervalId*); static void HandleExpose (Widget, MimeRichTextP*, XmDrawingAreaCallbackStruct*); static void HandleFormResize (Widget, MimeRichTextP*, XEvent*, Boolean*); static void HandleSWResize (Widget, MimeRichTextP*, XEvent*, Boolean*); static void HandleFocusChange(Widget, MimeRichTextP*, XEvent*, Boolean*); static void HandleHScroll (Widget, MimeRichTextP*, XmScrollBarCallbackStruct*); static void HandleVScroll (Widget, MimeRichTextP*, XmScrollBarCallbackStruct*); static void CursorBlink (MimeRichTextP*, XtIntervalId*); static void ClickReset (MimeRichTextP*, XtIntervalId*); static void LoseSelection (Widget, Atom*); static Boolean SendSelection (Widget, Atom*, Atom*, Atom*, XtPointer*, unsigned long*, int*); static void ReceiveSelection (Widget, XtPointer, Atom*, Atom*, XtPointer, unsigned long*, int*); static void ReceiveTargets (Widget, XtPointer, Atom*, Atom*, XtPointer, unsigned long*, int*);//// Action procs// static void ActMoveLeftChar (Widget, XKeyEvent*, String*, Cardinal*); static void ActMoveLeftWord (Widget, XKeyEvent*, String*, Cardinal*); static void ActMoveRightChar (Widget, XKeyEvent*, String*, Cardinal*); static void ActMoveRightWord (Widget, XKeyEvent*, String*, Cardinal*); static void ActMoveLineBeg (Widget, XKeyEvent*, String*, Cardinal*); static void ActMoveLineEnd (Widget, XKeyEvent*, String*, Cardinal*); static void ActMoveUpLine (Widget, XKeyEvent*, String*, Cardinal*); static void ActMoveUpPara (Widget, XKeyEvent*, String*, Cardinal*); static void ActMoveDownLine (Widget, XKeyEvent*, String*, Cardinal*); static void ActMoveDownPara (Widget, XKeyEvent*, String*, Cardinal*); static void ActMoveFileBeg (Widget, XKeyEvent*, String*, Cardinal*); static void ActMoveFileEnd (Widget, XKeyEvent*, String*, Cardinal*); static void ActDeleteLeftChar (Widget, XKeyEvent*, String*, Cardinal*); static void ActDeleteLeftWord (Widget, XKeyEvent*, String*, Cardinal*); static void ActDeleteRightChar(Widget, XKeyEvent*, String*, Cardinal*); static void ActDeleteRightWord(Widget, XKeyEvent*, String*, Cardinal*); static void ActDeleteLineBeg (Widget, XKeyEvent*, String*, Cardinal*); static void ActDeleteLineEnd (Widget, XKeyEvent*, String*, Cardinal*);#if 0 static void ActSingClick (Widget, XButtonEvent*, String*, Cardinal*); static void ActDoubClick (Widget, XButtonEvent*, String*, Cardinal*); static void ActTripClick (Widget, XButtonEvent*, String*, Cardinal*); static void ActQuadClick (Widget, XButtonEvent*, String*, Cardinal*);#endif static void ActSelectMotion (Widget, XMotionEvent*, String*, Cardinal*);// static void HandleButton1Motion(Widget, MimeRichTextP*, XMotionEvent*,// Boolean*); static void ActSelectBegin (Widget, XButtonEvent*, String*, Cardinal*); static void ActSelectEnd (Widget, XButtonEvent*, String*, Cardinal*); static void ActSelectExtend (Widget, XEvent*, String*, Cardinal*); static void ActSelectLeftChar (Widget, XKeyEvent*, String*, Cardinal*); static void ActSelectLeftWord (Widget, XKeyEvent*, String*, Cardinal*); static void ActSelectRightChar(Widget, XKeyEvent*, String*, Cardinal*); static void ActSelectRightWord(Widget, XKeyEvent*, String*, Cardinal*); static void ActSelectLineBeg (Widget, XKeyEvent*, String*, Cardinal*); static void ActSelectLineEnd (Widget, XKeyEvent*, String*, Cardinal*); static void ActSelectUpLine (Widget, XKeyEvent*, String*, Cardinal*); static void ActSelectUpPara (Widget, XKeyEvent*, String*, Cardinal*); static void ActSelectDownLine (Widget, XKeyEvent*, String*, Cardinal*); static void ActSelectDownPara (Widget, XKeyEvent*, String*, Cardinal*); static void ActSelectFileBeg (Widget, XKeyEvent*, String*, Cardinal*); static void ActSelectFileEnd (Widget, XKeyEvent*, String*, Cardinal*); static void ActDeleteSelection(Widget, XKeyEvent*, String*, Cardinal*); static void ActCutSelection (Widget, XKeyEvent*, String*, Cardinal*); static void ActCopySelection (Widget, XKeyEvent*, String*, Cardinal*); static void ActPaste (Widget, XEvent*, String*, Cardinal*); static void ActUndo (Widget, XKeyEvent*, String*, Cardinal*); static void ActInsertSelf (Widget, XKeyEvent*, String*, Cardinal*); static void ActRefresh (Widget, XKeyEvent*, String*, Cardinal*); static void ActIgnore (Widget, XKeyEvent*, String*, Cardinal*); static void ActPostMenu (Widget, XButtonEvent*, String*, Cardinal*); static void ActScrollUpLine (Widget, XKeyEvent*, String*, Cardinal*); static void ActScrollUpPage (Widget, XKeyEvent*, String*, Cardinal*); static void ActScrollDownLine (Widget, XKeyEvent*, String*, Cardinal*); static void ActScrollDownPage (Widget, XKeyEvent*, String*, Cardinal*); static void ActScrollTop (Widget, XKeyEvent*, String*, Cardinal*); static void ActScrollBottom (Widget, XKeyEvent*, String*, Cardinal*); static void ActLineToTop (Widget, XKeyEvent*, String*, Cardinal*); static void ActLineToCenter (Widget, XKeyEvent*, String*, Cardinal*); static void ActLineToBottom (Widget, XKeyEvent*, String*, Cardinal*); static void ActPlain (Widget, XKeyEvent*, String*, Cardinal*); static void ActBold (Widget, XKeyEvent*, String*, Cardinal*); static void ActItalic (Widget, XKeyEvent*, String*, Cardinal*); static void ActFixed (Widget, XKeyEvent*, String*, Cardinal*); static void ActSmaller (Widget, XKeyEvent*, String*, Cardinal*); static void ActBigger (Widget, XKeyEvent*, String*, Cardinal*); static void ActUnderline (Widget, XKeyEvent*, String*, Cardinal*); static void ActCenter (Widget, XKeyEvent*, String*, Cardinal*); static void ActFlushLeft (Widget, XKeyEvent*, String*, Cardinal*); static void ActFlushRight (Widget, XKeyEvent*, String*, Cardinal*); static void ActFlushBoth (Widget, XKeyEvent*, String*, Cardinal*); static void ActNoFill (Widget, XKeyEvent*, String*, Cardinal*); static void ActLeftMarginIn (Widget, XKeyEvent*, String*, Cardinal*); static void ActLeftMarginOut (Widget, XKeyEvent*, String*, Cardinal*); static void ActRightMarginIn (Widget, XKeyEvent*, String*, Cardinal*); static void ActRightMarginOut (Widget, XKeyEvent*, String*, Cardinal*); static void ActExcerptMore (Widget, XKeyEvent*, String*, Cardinal*); static void ActExcerptLess (Widget, XKeyEvent*, String*, Cardinal*); static void ActFollowURL (Widget, XButtonEvent*, String*, Cardinal*); static void ActSearch (Widget, XKeyEvent*, String*, Cardinal*);//// Private methods// Boolean BeginningOfInputLine(); Boolean AddCharsetCommand(CharC, Boolean negate=False); Boolean AddParamCommand(StringC&, StringC&); void AddLine(TextLineC*, TextLineC*); void ChangeFont(FontCmdT); void ChangeCharset(CharC); void ChangeColor(StringC); void ChangeJust(JustCmdT); void ChangeMargin(MarginCmdT); void CheckPixmapSize(); void CompactLine(TextLineC*); void CompactSelection(); void CopyText(StringC&, StringC&, TextTypeT, TextStateC*, int); FontDataC *CurFont(const TextStateC&); XPoint CursorLocation(); void DeleteCommand(const TextPosC&); void DeleteLine(TextLineC*); void DeleteText(const TextPosC&, int); void DeleteRange(TextPosC&, TextPosC&); void DeleteSelection(); void DrawCursor(); void DrawSelection(); void DrawSelectionRange(TextPosC*, TextPosC*); void DrawLine(SoftLineC*, long *lastFont, Pixel *lastColor, Boolean clear=False); void DrawLines(SoftLineC*, SoftLineC*); void DrawScreen(RectC&); int Distance(ScreenPosC&, ScreenPosC&); Boolean FindPosPrevChar(TextPosC&, TextPosC*); Boolean FindPosPrevWord(TextPosC&, TextPosC*); Boolean FindPosPrevCmd (TextPosC&, TextPosC*); Boolean FindPosNextChar(TextPosC&, TextPosC*); Boolean FindPosNextWord(TextPosC&, TextPosC*); Boolean FindPosNextCmd (TextPosC&, TextPosC*); Boolean FindPosBegWord (TextPosC&, TextPosC*); Boolean FindPosEndWord (TextPosC&, TextPosC*); Boolean FindPosBegClass(TextPosC&, TextPosC*); Boolean FindPosEndClass(TextPosC&, TextPosC*); int FitText(char*, XFontStruct*, int); void FlushTextBuf(); void FlushTextURL(CharC); void FixPosAfterBreak(TextPosC*, const TextPosC&, TextLineC*); void FixPosAfterDelCmd(TextPosC*, const TextPosC&); void FixPosAfterDelLine(TextPosC*, TextLineC*); void FixPosAfterDelText(TextPosC*, const TextPosC&, int); void FixPosAfterInsert(TextPosC*, const TextPosC&); void FixPosAfterMergeCmds(TextPosC*, const TextPosC&, const TextPosC&); void FixPosAfterMergeLines(TextPosC*, TextLineC*,TextLineC*); void FixPosAfterSplit(TextPosC*, const TextPosC&); void FormatScreen(); void FormatLine(TextLineC*); SoftLineC *FormatText(TextLineC*, SoftLineC*, int, TextStateC&, int*, int*, int*, int*); SoftLineC *FormatGraphic(TextLineC*, SoftLineC*, int, TextStateC&, int*, int*, int*, int*); void GetLineSize(SoftLineC*); void GetLineText(TextPosC*, TextPosC*, StringC&, TextTypeT, int); void GetLineText(TextLineC*, StringC&, TextTypeT, int); void GetRangeData(TextPosC*, TextPosC*, StringC&, TextTypeT, Boolean closeState=True, int lineSize=0); void GetSelectionData(StringC&, TextTypeT type=TT_PLAIN); void GetStateCommands(TextStateC&, TextStateC&, StringC&, TextTypeT); void GetStateCommands(TextPosC&, StringC&, TextTypeT); void HideCursor(); void HideLineGraphics(SoftLineC*); void InsertCommand(RichCmdTypeT, Boolean, const TextPosC&, TextPosC*); void InsertLineBreak(TextPosC, TextPosC*); void InsertSavedLines(TextPosC); void Justify(SoftLineC*); void JustifyLines(); void LineChanged(TextLineC*, Boolean forcePlace=False); void LinesChanged(TextLineC*, TextLineC*, Boolean forcePlace=False); Boolean LineFullyVisible(SoftLineC*); Boolean LineVisible(SoftLineC*); int MaxLineWidth(); void MergeCommands(TextPosC&, TextPosC&); void MergeLines(TextLineC*, TextLineC*); void MoveCommand(TextPosC&, TextLineC*, int dstPos=NULL_CMD_POS); void MoveLine(TextLineC*, TextLineC*); void MoveLines(int, int, int); void MoveText(const TextPosC&, int, TextLineC*, int dstPos=NULL_CMD_POS); void NewInputLine(); void PasteText(Widget, XButtonEvent*, TextTypeT, CharC); RichDrawDataC *PickData(SoftLineC*, int); RichGraphicC *PickGraphic(int, int); SoftLineC *PickLine(int); void PlaceLines(TextLineC *startLine=NULL); void RemoveLine(TextLineC*); void RemoveLines(TextLineC*, TextLineC*); void Reset(); void ResetLineList(); Boolean ScrollToCursor(); Boolean ScrollToPosition(ScreenPosC&); void Search(); void SelectionChanged(); Boolean SetCharClassRange(int, int, int); void SetLineIndex(TextLineC*, int); void SetLinePosition(TextLineC*, int); void SetNext(SoftLineC*, SoftLineC*); void SetVisibleSize(Dimension, Dimension, Widget ref=NULL); void ShowCursor(); void SplitCommand(const TextPosC&, TextPosC*); void UpdateMotionSelection(int, int, Boolean); void UpdateSelection(TextPosC&, TextPosC&); void UpdateTranslations();public: MimeRichTextP() {}};#endif // _MimeRichTextP_h_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -