~damien-moore/+junk/codeblocks

« back to all changes in this revision

Viewing changes to src/include/macrosmanager.h

  • Committer: Damien Moore
  • Date: 2013-10-11 14:25:27 UTC
  • Revision ID: damienlmoore@gmail.com-20131011142527-w13ki0x8yjd7973d
copy of Code::Blocks repo based on SVN rev 9395

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * This file is part of the Code::Blocks IDE and licensed under the GNU Lesser General Public License, version 3
 
3
 * http://www.gnu.org/licenses/lgpl-3.0.html
 
4
 */
 
5
 
 
6
#ifndef MACROSMANAGER_H
 
7
#define MACROSMANAGER_H
 
8
 
 
9
#include "settings.h"
 
10
#include "manager.h"
 
11
#include <wx/regex.h>
 
12
#include <wx/filename.h>
 
13
 
 
14
// forward decls;
 
15
class wxMenuBar;
 
16
class cbProject;
 
17
class ProjectBuildTarget;
 
18
class EditorBase;
 
19
class UserVariableManager;
 
20
 
 
21
WX_DECLARE_STRING_HASH_MAP( wxString, MacrosMap );
 
22
 
 
23
class DLLIMPORT MacrosManager : public Mgr<MacrosManager>
 
24
{
 
25
public:
 
26
    friend class Manager;
 
27
    friend class Mgr<MacrosManager>;
 
28
    void CreateMenu(wxMenuBar* menuBar);
 
29
    void ReleaseMenu(wxMenuBar* menuBar);
 
30
    void ReplaceMacros(wxString& buffer, ProjectBuildTarget* target = 0, bool subrequest = false);
 
31
    wxString ReplaceMacros(const wxString& buffer, ProjectBuildTarget* target = 0);
 
32
    void ReplaceEnvVars(wxString& buffer) { ReplaceMacros(buffer); }  /* misnomer, should be ReplaceVariables */;
 
33
    void RecalcVars(cbProject* project, EditorBase* editor, ProjectBuildTarget* target);
 
34
    void ClearProjectKeys();
 
35
    void Reset();
 
36
protected:
 
37
    ProjectBuildTarget* m_LastTarget;
 
38
    cbProject*          m_LastProject;
 
39
 
 
40
    wxFileName          m_ProjectWxFileName;
 
41
    wxFileName          m_WorkspaceWxFileName;
 
42
 
 
43
    wxString            m_AppPath;
 
44
    wxString            m_DataPath;
 
45
    wxString            m_Plugins;
 
46
    wxString            m_ActiveEditorFilename;
 
47
    int                 m_ActiveEditorLine;
 
48
    int                 m_ActiveEditorColumn;
 
49
    wxString            m_WorkspaceFilename;
 
50
    wxString            m_WorkspaceName;
 
51
    wxString            m_WorkspaceDir;
 
52
    wxString            m_ProjectFilename;
 
53
    wxString            m_ProjectName;
 
54
    wxString            m_ProjectDir;
 
55
    wxString            m_ProjectTopDir;
 
56
    wxString            m_ProjectFiles;
 
57
    wxString            m_Makefile;
 
58
    wxString            m_TargetOutputDir;
 
59
    wxString            m_TargetName;
 
60
    wxString            m_TargetOutputBaseName;
 
61
    wxString            m_TargetOutputFilename;
 
62
    wxString            m_TargetFilename;
 
63
 
 
64
    MacrosMap           m_Macros;
 
65
    wxRegEx             m_RE_Unix;
 
66
    wxRegEx             m_RE_DOS;
 
67
    wxRegEx             m_RE_If;
 
68
    wxRegEx             m_RE_IfSp;
 
69
    wxRegEx             m_RE_Script;
 
70
    wxRegEx             m_RE_ToAbsolutePath;
 
71
    wxRegEx             m_RE_To83Path;
 
72
    wxRegEx             m_RE_RemoveQuotes;
 
73
    UserVariableManager *m_UserVarMan;
 
74
 
 
75
private:
 
76
    MacrosManager();
 
77
    ~MacrosManager();
 
78
    wxString EvalCondition(const wxString& cond, const wxString& true_clause, const wxString& false_clause, ProjectBuildTarget* target);
 
79
    int MatchBrace(const wxString& buffer, int index);
 
80
};
 
81
 
 
82
#endif // MACROSMANAGER_H
 
83