File: php_project_settings_data.h

package info (click to toggle)
codelite 14.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • 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 (125 lines) | stat: -rw-r--r-- 4,742 bytes parent folder | download | duplicates (4)
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//
// Copyright            : (C) 2015 Eran Ifrah
// File name            : php_project_settings_data.h
//
// -------------------------------------------------------------------------
// A
//              _____           _      _     _ _
//             /  __ \         | |    | |   (_) |
//             | /  \/ ___   __| | ___| |    _| |_ ___
//             | |    / _ \ / _  |/ _ \ |   | | __/ _ )
//             | \__/\ (_) | (_| |  __/ |___| | ||  __/
//              \____/\___/ \__,_|\___\_____/_|\__\___|
//
//                                                  F i l e
//
//    This program is free software; you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation; either version 2 of the License, or
//    (at your option) any later version.
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

#ifndef PHPPROJECTSETTINGSDATA_H
#define PHPPROJECTSETTINGSDATA_H

#include <wx/string.h>
#include <wx/arrstr.h>
#include "JSON.h"
#include <macros.h>
#include "XDebugBreakpoint.h"

class PHPProjectSettingsData
{
protected:
    int m_runAs;
    wxString m_phpExe;
    wxString m_indexFile;
    wxString m_args;
    wxString m_workingDirectory;
    wxString m_projectURL;
    wxString m_includePath;
    wxString m_ccIncludePath;
    wxString m_phpIniFile;
    size_t m_flags;
    wxStringMap_t m_fileMapping;

public:
    enum {
        kOpt_PauseWhenExeTermiantes = (1 << 0),
        kOpt_UseSystemDefaultBrowser = (1 << 1),
        kOpt_RunCurrentEditor = (1 << 2),
    };

    enum {
        kRunAsCLI = 0,
        kRunAsWebsite = 1,
    };

public:
    PHPProjectSettingsData();
    virtual ~PHPProjectSettingsData();

    void FromJSON(const JSONItem& ele);
    JSONItem ToJSON() const;

    void EnableFlag(int flag, bool b)
    {
        if(b) {
            m_flags |= flag;
        } else {
            m_flags &= ~flag;
        }
    }

    bool HasFlag(int flag) const { return m_flags & flag; }

    /**
     * @brief copy the global settings and append them to the project settings
     */
    void MergeWithGlobalSettings();

    /**
     * @brief convert path to its mapped path based on the
     * fileMapping of the project
     */
    wxString GetMappdPath(const wxString& sourcePath, bool useUrlScheme, const wxStringMap_t& additionalMapping) const;
    const wxStringMap_t& GetFileMapping() const { return m_fileMapping; }
    void SetFileMapping(const wxStringMap_t& fileMapping) { this->m_fileMapping = fileMapping; }
    void SetPhpIniFile(const wxString& phpIniFile) { this->m_phpIniFile = phpIniFile; }
    const wxString& GetPhpIniFile() const { return m_phpIniFile; }
    void SetPauseWhenExeTerminates(bool pauseWhenExeTerminates)
    {
        EnableFlag(kOpt_PauseWhenExeTermiantes, pauseWhenExeTerminates);
    }
    bool IsPauseWhenExeTerminates() const { return HasFlag(kOpt_PauseWhenExeTermiantes); }
    bool IsUseSystemBrowser() const { return HasFlag(kOpt_UseSystemDefaultBrowser); }

    void SetUseSystemBrowser(bool b) { return EnableFlag(kOpt_UseSystemDefaultBrowser, b); }

    void SetCcIncludePath(const wxString& ccIncludePath) { this->m_ccIncludePath = ccIncludePath; }
    const wxString& GetCcIncludePath() const { return m_ccIncludePath; }
    void SetArgs(const wxString& args) { this->m_args = args; }
    void SetIncludePath(const wxString& includePath) { this->m_includePath = includePath; }
    void SetIndexFile(const wxString& indexFile) { this->m_indexFile = indexFile; }
    void SetPhpExe(const wxString& phpExe) { this->m_phpExe = phpExe; }
    void SetProjectURL(const wxString& projectURL) { this->m_projectURL = projectURL; }
    void SetRunAs(int runAs) { this->m_runAs = runAs; }
    void SetWorkingDirectory(const wxString& workingDirectory) { this->m_workingDirectory = workingDirectory; }
    const wxString& GetArgs() const { return m_args; }
    const wxString& GetIncludePath() const { return m_includePath; }
    wxArrayString GetIncludePathAsArray() const;
    wxArrayString GetCCIncludePathAsArray() const;
    static wxArrayString GetAllIncludePaths();

    const wxString& GetIndexFile() const { return m_indexFile; }
    const wxString& GetPhpExe() const { return m_phpExe; }
    const wxString& GetProjectURL() const { return m_projectURL; }
    int GetRunAs() const { return m_runAs; }
    const wxString& GetWorkingDirectory() const { return m_workingDirectory; }
};

#endif // PHPPROJECTSETTINGSDATA_H