File: php_view_model.h

package info (click to toggle)
codelite 12.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 95,112 kB
  • sloc: cpp: 424,040; ansic: 18,284; php: 9,569; lex: 4,186; yacc: 2,820; python: 2,294; sh: 312; makefile: 51; xml: 13
file content (115 lines) | stat: -rw-r--r-- 3,174 bytes parent folder | download | duplicates (6)
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
#ifndef PHPVIEWMODEL_H
#define PHPVIEWMODEL_H

#include "phpworkspaceviewmodel.h" // Base class: PHPWorkspaceViewModel
#include <wx/clntdata.h>
#include <map>

class ItemData : public wxClientData
{
public:
    enum kKIND {
        Kind_Unknown = -1,
        Kind_Workspace,
        Kind_Project,
        Kind_Folder,
        Kind_File
    };

protected:
    kKIND        kind;
    bool         active;     // make sense only if kind == Kind_Project
    wxString     projectName;// make sense only if kind == Kind_Project
    wxString     file;       // make sense only if kind == Kind_File
    wxString     folderPath; // make sense only if kind == Kind_Folder
public:
    ItemData(kKIND k)
        : kind(k)
        , active(false)
    {}

    virtual ~ItemData() {}

    void SetProjectName(const wxString& projectName) {
        this->projectName = projectName;
    }
    const wxString& GetProjectName() const {
        return projectName;
    }
    void SetActive(bool active) {
        this->active = active;
    }
    void SetFile(const wxString& file) {
        this->file = file;
    }
    void SetFolderPath(const wxString& folderPath) {
        this->folderPath = folderPath;
        if ( this->folderPath.EndsWith("/") ) {
            this->folderPath.RemoveLast();
        }
    }

    void SetKind(kKIND kind) {
        this->kind = kind;
    }
    bool IsActive() const {
        return active;
    }
    const wxString& GetFile() const {
        return file;
    }
    const wxString& GetFolderPath() const {
        return folderPath;
    }

    wxString GetFolderName() const {
        return folderPath.AfterLast('/');
    }

    kKIND GetKind() const {
        return kind;
    }

    bool IsProject() const {
        return kind == Kind_Project;
    }

    bool IsFolder() const {
        return kind == Kind_Folder;
    }

    bool IsFile() const {
        return kind == Kind_File;
    }

    bool IsWorkspace() const {
        return kind == Kind_Workspace;
    }
};

// -----------------------------------------------------------------------
// -----------------------------------------------------------------------

/**
 * @class PHPViewModel 
 * @brief inherits from the model generated by wxCrafter for one purpose:
 * keeps a map between the filename and the wxDataViewItem
 */
class PHPViewModel : public PHPWorkspaceViewModel
{
    std::map<wxString, wxDataViewItem> m_all_items;  // Maps between the filename and the dataitemview
public:
    PHPViewModel();
    virtual ~PHPViewModel();
    virtual void DeleteItem(const wxDataViewItem& item);
    virtual void UpdateItem(const wxDataViewItem& item, const wxVector<wxVariant>& data, const wxString &old_filename, const wxString &new_filename);
    
    wxDataViewItem FindByFilename(const wxString& filename) const;
    void Clear();
    
protected:
    virtual wxDataViewItem DoAppendItem(const wxDataViewItem& parent, const wxVector<wxVariant>& data, bool isContainer, wxClientData *clientData = NULL);
    virtual wxDataViewItem DoInsertItem(const wxDataViewItem& insertBeforeMe, const wxVector<wxVariant>& data, bool isContainer, wxClientData *clientData);
};

#endif // PHPVIEWMODEL_H