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