File: wxTerminalColourHandler.h

package info (click to toggle)
codelite 14.0+dfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, sid
  • size: 112,816 kB
  • sloc: cpp: 483,662; ansic: 150,144; php: 9,569; lex: 4,186; python: 3,417; yacc: 2,820; sh: 1,147; makefile: 52; xml: 13
file content (47 lines) | stat: -rw-r--r-- 1,184 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#ifndef WXTERMINALCOLOURHANDLER_H
#define WXTERMINALCOLOURHANDLER_H

#include <wx/textctrl.h>
#include <unordered_map>
#include <map>
#include <vector>

enum class eColourHandlerState {
    kNormal = 0,
    kInEscape, // found ESC char
    kInOsc,    // Operating System Command
    kInCsi,    // Control Sequence Introducer
    kFoundCR,  // Found CR
};

class TextView;
class wxTerminalCtrl;
class wxTerminalColourHandler : public wxEvtHandler
{
    TextView* m_ctrl = nullptr;
    wxString m_escapeSequence;
    std::unordered_map<int, wxColour> m_colours;
    wxTextAttr m_defaultAttr;
    wxString m_title;

protected:
    eColourHandlerState m_state = eColourHandlerState::kNormal;
    wxColour GetColour(long colour_number);
    void SetCaretEnd();
    
protected:
    void Append(const wxString& buffer);
    void SetStyleFromEscape(const wxString& escape);
    void Clear();
    void FlushBuffer(wxString& line);

public:
    wxTerminalColourHandler();
    ~wxTerminalColourHandler();

    wxTerminalColourHandler& operator<<(const wxString& buffer);
    void SetCtrl(TextView* ctrl);
    void SetDefaultStyle(const wxTextAttr& attr);
};

#endif // WXTERMINALCOLOURHANDLER_H