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
|