| Revision 1 (by moose, 2006/03/06 10:35:57) |
Initial Import
|
#ifndef SciQWorkspaceItem_H_GUARD
#define SciQWorkspaceItem_H_GUARD
/*
*/
class SciQWorkspaceFile;
class SciQWorkspaceDir;
class SciQWorkspaceWs;
class SciQWorkspaceItem {
public:
SciQWorkspaceItem() : itemType(Unknown) { }
SciQWorkspaceItem(Type type) : itemType(type) { }
SciQWorkspaceDir *asRootItem() { return (SciQWorkspaceDir *) ((type == Root) ? this : 0); }
SciQWorkspaceFile *asFileItem() { return (SciQWorkspaceFile *) ((type == File) ? this : 0); }
SciQWorkspaceDir *asDirItem() { return (SciQWorkspaceDir *) ((type == Dir) ? this : 0); }
SciQWorkspaceWs *asWsItem() { return (SciQWorkspaceWs *) ((type == Ws) ? this : 0); }
void appendChild(SciQWorkspaceItem *child);
SciQWorkspaceItem *child(int row);
int childCount() const;
int columnCount() const;
QVariant data(int column) const;
int row() const;
SciQWorkspaceItem *parent() { return parentItem; }
private:
enum Type { File, Dir, Ws, Root, Unknown } itemType;
QList<SciQWorkspaceItem *> childItems;
QList<QVariant> itemData;
SciQWorkspaceItem *parentItem;
};
class SciQWorkspaceFile : public SciQWorkspaceItem {
public:
SciQWorkspaceFile(QFileInfo &fh) : SciQWorkspaceItem(File), unsaved(false), fileInfo(fh) { }
SciQWorkspaceFile(QString fn) : SciQWorkspaceItem(File), unsaved(false), fileInfo(fn) { }
private:
bool unsaved;
QextScintillaDocument sciDoc;
QFileInfo fileInfo;
SciQDocumentType *documentType;
};
class SciQWorkspaceDir : public SciQWorkspaceItem {
public:
SciQWorkspaceDir(QString dn) : SciQWorkspaceItem(Dir), populated(false), _recurse(true), dirInfo(dn) { }
bool recurse() { return _recurse; }
void recurse(bool r) { _recurse = r; }
void populate();
private:
bool populated;
bool _recurse;
QDir dirInfo;
QDict<SciQDocumentType> documentTypes;
};
class SciQWorkspaceWs : public SciQWorkspaceDir {
public:
SciQWorkspaceWs(QString wsp) : SciQWorkspaceDir(wsp) { recurse(false); }
private:
QString name;
};
class SciQWorkspaceType : public QObject {
Q_OBJECT
public:
private:
};
#include <QAbstractListModel>
class SciQWorkspaceListModel : public QAbstractListModel {
Q_OBJECT
public:
private:
SciQWorkspaceItem *rootItem; // can be a SciQWorkspaceWs or SciQWorkspaceRoot
};
/*
Main Window gets a Workspace docwindow
Workspace windows get file tree dock window
Workspaces can be undocked from the main window (get thier own)
Files can be undocked from thier current workspace main window (be it the app main window or not)
[types]
text = text/plain
text/plain = off:0 ext:.txt,.text pat:
text/x-c = lex:CPP ext:.c,.h
text/x-cpp = lex:CPP ext:cpp,cxx,cc,C,hxx,hpp
text/x-perl = lex:Perl ext:pl,pm patskipline:^#[^!].*$ patskipstart:=\w+ patskipend:=end pat:#!.*perl,package\s[\w:]+;
*/
#endif /* SciQWorkspaceItem_H_GUARD */