File: clDockerWorkspace.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 (96 lines) | stat: -rw-r--r-- 2,820 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
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
#ifndef CLDOCKERWORKSPACE_H
#define CLDOCKERWORKSPACE_H

#include "IWorkspace.h"
#include "clDockerDriver.h"
#include "clDockerWorkspaceSettings.h"
#include "cl_command_event.h"

class clDockerWorkspaceView;
class clDockerWorkspace : public IWorkspace
{
    bool m_bindEvents = false;
    wxFileName m_filename;
    clDockerWorkspaceSettings m_settings;
    bool m_isOpen = false;
    bool m_clangOldFlag = false;
    clDockerWorkspaceView* m_view = nullptr;
    clDockerDriver::Ptr_t m_driver;
    Docker* m_plugin = nullptr;

public:
    virtual wxString GetActiveProjectName() const;
    virtual wxFileName GetFileName() const;
    virtual wxString GetFilesMask() const;
    virtual wxFileName GetProjectFileName(const wxString& projectName) const;
    virtual void GetProjectFiles(const wxString& projectName, wxArrayString& files) const;
    virtual wxString GetProjectFromFile(const wxFileName& filename) const;
    virtual void GetWorkspaceFiles(wxArrayString& files) const;
    virtual wxArrayString GetWorkspaceProjects() const;
    virtual bool IsBuildSupported() const;
    virtual bool IsProjectSupported() const;

    const clDockerWorkspaceSettings& GetSettings() const { return m_settings; }
    clDockerWorkspaceSettings& GetSettings() { return m_settings; }

protected:
    // Event handlers
    void OnOpenWorkspace(clCommandEvent& event);
    void OnCloseWorkspace(clCommandEvent& event);
    void OnNewWorkspace(clCommandEvent& event);

    // Session management
    void OnSaveSession(clCommandEvent& event);

    // Build events
    void OnIsBuildInProgress(clBuildEvent& event);
    void OnBuildStarting(clBuildEvent& event);
    void OnStopBuild(clBuildEvent& event);

    // Run events
    void OnRun(clExecuteEvent& event);
    void OnStop(clExecuteEvent& event);

    //===-----
    //===-----
    void RestoreSession();

public:
    clDockerWorkspace(bool bindEvents, Docker* plugin, clDockerDriver::Ptr_t driver);
    virtual ~clDockerWorkspace();

    clDockerWorkspaceView* GetView() { return m_view; }

    /**
     * @brief return a pointer to the actual docker workspace
     */
    static clDockerWorkspace* Get();
    static void Initialise(Docker* plugin);
    static void Shutdown();

    /**
     * @brief open the workspace
     */
    void Open(const wxFileName& path);
    /**
     * @brief Close the workspace
     */
    void Close();

    /**
     * @brief do we have worksapce opened?
     */
    bool IsOpen() const;

    /**
     * @brief create a workspace
     */
    bool Create(const wxFileName& filename);

    void BuildDockerfile(const wxFileName& dockerfile);
    void BuildDockerCompose(const wxFileName& dockerfile);
    void RunDockerfile(const wxFileName& dockerfile);
    void RunDockerCompose(const wxFileName& dockerfile);
};

#endif // CLDOCKERWORKSPACE_H