File: clTerminalHistory.cpp

package info (click to toggle)
codelite 17.0.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 136,204 kB
  • sloc: cpp: 491,547; ansic: 280,393; php: 10,259; sh: 8,930; lisp: 7,664; vhdl: 6,518; python: 6,020; lex: 4,920; yacc: 3,123; perl: 2,385; javascript: 1,715; cs: 1,193; xml: 1,110; makefile: 804; cobol: 741; sql: 709; ruby: 620; f90: 566; ada: 534; asm: 464; fortran: 350; objc: 289; tcl: 258; java: 157; erlang: 61; pascal: 51; ml: 49; awk: 44; haskell: 36
file content (58 lines) | stat: -rw-r--r-- 1,334 bytes parent folder | download | duplicates (2)
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
48
49
50
51
52
53
54
55
56
57
58
#include "clTerminalHistory.h"

#include <algorithm>

static wxString sEmptyStr;

clTerminalHistory::clTerminalHistory()
    : m_where(-1)
{
}

clTerminalHistory::~clTerminalHistory() {}

void clTerminalHistory::DoReset() { m_where = -1; }

void clTerminalHistory::Add(const wxString& command)
{
    std::vector<wxString>::iterator iter =
        std::find_if(m_history.begin(), m_history.end(), [&](const wxString& str) { return str == command; });
    if(iter != m_history.end()) {
        m_history.erase(iter);
    }
    m_history.insert(m_history.begin(), command);
    DoReset();
}

const wxString& clTerminalHistory::ArrowUp()
{
    if((m_where + 1) < (int)m_history.size()) {
        ++m_where;
        return m_history[m_where];
    }
    return sEmptyStr;
}

const wxString& clTerminalHistory::ArrowDown()
{
    if(m_where > 0 && m_where < (int)m_history.size()) {
        m_where--;
        return m_history[m_where];
    }
    return sEmptyStr;
}

wxArrayString clTerminalHistory::GetItems() const
{
    wxArrayString items;
    std::for_each(m_history.begin(), m_history.end(), [&](const wxString& item) { items.Add(item); });
    return items;
}

void clTerminalHistory::SetItems(const wxArrayString& items)
{
    m_history.clear();
    for(size_t i = 0; i < items.GetCount(); ++i) {
        Add(items.Item(i));
    }
}