File: DapSettingsPage.cpp

package info (click to toggle)
codelite 17.0.0%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 136,244 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 (96 lines) | stat: -rw-r--r-- 3,793 bytes parent folder | download | duplicates (3)
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include "DapSettingsPage.hpp"

#define UPDATE_TEXT_CB(SETTER_METHOD)                   \
    [this](const wxString& label, const wxAny& value) { \
        wxUnusedVar(label);                             \
        wxString str_value;                             \
        if(value.GetAs(&str_value)) {                   \
            DapEntry d;                                 \
            m_store.Get(m_entry.GetName(), &d);         \
            d.SETTER_METHOD(str_value);                 \
            m_store.Set(d);                             \
        }                                               \
    }

#define UPDATE_BOOL_CB(SETTER_METHOD)                   \
    [this](const wxString& label, const wxAny& value) { \
        wxUnusedVar(label);                             \
        bool bool_value;                                \
        if(value.GetAs(&bool_value)) {                  \
            DapEntry d;                                 \
            m_store.Get(m_entry.GetName(), &d);         \
            d.SETTER_METHOD(bool_value);                \
            m_store.Set(d);                             \
        }                                               \
    }

DapSettingsPage::DapSettingsPage(wxWindow* win, clDapSettingsStore& store, const DapEntry& entry)
    : clPropertiesPage(win)
    , m_store(store)
    , m_entry(entry)
{
    AddHeader(_("General"));
    AddProperty(_("Command"), m_entry.GetCommand(), UPDATE_TEXT_CB(SetCommand));
    AddProperty(_("Connection string"), m_entry.GetConnectionString(), UPDATE_TEXT_CB(SetConnectionString));

    const std::vector<wxString> launch_choices = { "Launch", "Attach" };
    wxString launch_type = entry.GetLaunchType() == DapLaunchType::LAUNCH ? "Launch" : "Attach";
    AddProperty(_("Launch type"), launch_choices, launch_type, [this](const wxString& label, const wxAny& value) {
        wxUnusedVar(label);
        wxString value_str;
        if(value.GetAs(&value_str)) {
            DapEntry d;
            m_store.Get(m_entry.GetName(), &d);
            if(value_str == "Launch") {
                d.SetLaunchType(DapLaunchType::LAUNCH);
            } else {
                d.SetLaunchType(DapLaunchType::ATTACH);
            }
            m_store.Set(d);
        }
    });

    AddHeader(_("File path options"));
    AddProperty(_("Use relative paths"), m_entry.UseRelativePath(), UPDATE_BOOL_CB(SetUseRelativePath));

#ifdef __WXMSW__
    AddProperty(_("Use forward slash"), m_entry.UseForwardSlash(), UPDATE_BOOL_CB(SetUseForwardSlash));
    AddProperty(_("Use volume"), m_entry.UseVolume(), UPDATE_BOOL_CB(SetUseVolume));
#endif

    AddHeader(_("Environment variables"));
    AddProperty(_("Server environment"), m_entry.GetEnvironment(), UPDATE_TEXT_CB(SetEnvironment));

    const std::vector<wxString> format_choices = { "List", "Dictionary", "None" };
    int sel = wxNOT_FOUND;
    switch(m_entry.GetEnvFormat()) {
    case dap::EnvFormat::LIST:
        sel = 0;
        break;
    case dap::EnvFormat::DICTIONARY:
        sel = 1;
        break;
    case dap::EnvFormat::NONE:
        sel = 2;
        break;
    }

    AddProperty(_("Environment format"), format_choices, sel, [this](const wxString& label, const wxAny& value) {
        wxUnusedVar(label);
        wxString value_str;
        if(value.GetAs(&value_str)) {
            DapEntry d;
            m_store.Get(m_entry.GetName(), &d);
            if(value_str == "List") {
                d.SetEnvFormat(dap::EnvFormat::LIST);
            } else if(value_str == "Dictionary") {
                d.SetEnvFormat(dap::EnvFormat::DICTIONARY);
            } else {
                d.SetEnvFormat(dap::EnvFormat::NONE);
            }
            m_store.Set(d);
        }
    });
}

DapSettingsPage::~DapSettingsPage() {}