File: clDockerWorkspace.h

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 (101 lines) | stat: -rw-r--r-- 3,071 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
97
98
99
100
101
#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:
    wxString GetActiveProjectName() const override;
    wxString GetFileName() const override;
    wxString GetDir() const override;
    wxString GetFilesMask() const override;
    wxFileName GetProjectFileName(const wxString& projectName) const override;
    void GetProjectFiles(const wxString& projectName, wxArrayString& files) const override;
    wxString GetProjectFromFile(const wxFileName& filename) const override;
    void GetWorkspaceFiles(wxArrayString& files) const override;
    wxArrayString GetWorkspaceProjects() const override;
    bool IsBuildSupported() const override;
    bool IsProjectSupported() const override;
    void SetProjectActive(const wxString& project) override;
    wxString GetDebuggerName() const override { return wxEmptyString; }

    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();

    wxString GetName() const override { return m_filename.GetName(); }

    /**
     * @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