1 struct tag_list 2 { 3 GtkTextTag *command1; 4 GtkTextTag *command2; 5 GtkTextTag *command_error; 6 GtkTextTag *spelling_error; 7 GtkTextTag *text; 8 GtkTextTag *gear; 9 }; 10 11 struct krySSACommandHighlighterState 12 { 13 kryList<kryString *> m_unprocessed; 14 gboolean m_buffer_strings; 15 int m_parameter_count; 16 int m_last_parameter_index; 17 int m_str_pos; 18 }; 19 20 enum highlight_type 21 { 22 HIGHLIGHT_NONE, 23 HIGHLIGHT_TEXT, 24 HIGHLIGHT_COMMAND1, 25 HIGHLIGHT_COMMAND2, 26 HIGHLIGHT_ERROR, 27 HIGHLIGHT_GEAR 28 }; 29 30 class krySSACommandHighlighterHiddenPart 31 { 32 public: 33 krySSACommandHighlighterHiddenPart(); 34 ~krySSACommandHighlighterHiddenPart(); 35 36 void AddString(char *text); 37 38 GList *GetStringGList(); 39 private: 40 GList *m_strings; 41 }; 42 43 class krySSACommandHighlighterHiddenPartList 44 { 45 public: 46 krySSACommandHighlighterHiddenPartList(); 47 ~krySSACommandHighlighterHiddenPartList(); 48 49 void StartPart(); 50 void AddText(char *text); 51 void EndPart(); 52 53 GList *GetGList(); 54 private: 55 GList *m_parts; 56 krySSACommandHighlighterHiddenPart *m_part_cur; 57 }; 58 59 struct krySSACommandHighlighterPart 60 { 61 char *text; 62 enum highlight_type type; 63 }; 64 65 class krySSACommandHighlighter : public krySSACommandParser 66 { 67 public: 68 krySSACommandHighlighter(kryString str, gboolean icon_mode = FALSE, GList *cursors = NULL); 69 virtual ~krySSACommandHighlighter(); 70 71 GList *GetPartList(); 72 char *GetStringFromPartList(); 73 krySSACommandHighlighterHiddenPartList *GetHiddenPartList(); 74 75 void OnAnything(kryString &str, gboolean is_command = TRUE, enum highlight_type highlight_type = HIGHLIGHT_NONE); 76 77 void OnString(kryString &str, int offset); 78 void OnCommandGroupStart(kryString str, int offset); 79 void OnCommandGroupEnd(kryString str, int offset); 80 void OnCommandParameterStart(kryString str); 81 void OnCommandParameterEnd(kryString str); 82 void OnCommandParameter(kryString &str); 83 void OnCommandParameterSeparator(kryString str); 84 void OnCommandUnparsed(kryString &str); 85 void OnCommandText(kryString &str); 86 void OnCommandEnd(); 87 88 /*virtual void OnHighlightCodeBlock() {} ; 89 virtual void OnHighlightText(kryString &string, enum highlight_type type) {}; 90 virtual void OnHighlightUpdateCursors(kryString &string) {};*/ 91 92 private: 93 gboolean m_alternate_tag; 94 gboolean m_is_last_tag_command; 95 gboolean m_is_icon_mode; 96 97 gboolean m_free_hidden_parts; 98 99 krySSACommandHighlighterHiddenPartList *m_hidden_parts; 100 101 int m_length_parts; 102 GList *m_parts; 103 GList *m_cursors; 104 105 void AddPart(char *str, int len, enum highlight_type type); 106 protected: 107 krySSACommandHighlighterState *m_state; 108 }; 109 110 111