| Revision 1 (by moose, 2006/03/06 10:35:57) |
Initial Import
|
#include <qdebug.h>
#include <QTreeWidget>
#include <QFileInfo>
#include <QFile>
#include <QMessageBox>
#include <QHeaderView>
#include <qextscintilla.h>
#include "SciQMWBase.h"
#include "SciQWorkspace.h"
#include "SciQWorkspaceDock.h"
#include "SciQWorkspaceModel.h"
#include "SciQLvPItem.h"
#include "SciQLvCItem.h"
SciQWorkspaceDock::SciQWorkspaceDock(SciQMWBase *parent) : SciQDockWindow("Workspaces", parent, 0)
{
lv = new QTreeView(this);
// lv->setIndentation(16);
lv->setRootIsDecorated(true);
model = new SciQWorkspaceModel(new SciQWorkspace("/home/moose/projects/sciq4"));
lv->setModel(model);
lv->setAlternatingRowColors ( true );
lv->header()->hide();
// lv->header()->setStretchEnabled(TRUE);
lv->setFrameShape(QFrame::NoFrame);
// lv->setPaletteBackgroundColor(palette().background());
setWidget(lv);
// QTreeWidgetItem *pi = new SciQLvPItem(lv, "Foo");
// SciQLvCItem *pi1 = new SciQLvCItem(pi, QFileInfo("src"));
// SciQLvCItem *pi2 = new SciQLvCItem(pi1, QFileInfo("src/SciQ.cpp"));
// SciQLvCItem *pi4 = new SciQLvCItem(pi1, QFileInfo("src/SciQApp.cpp"));
// QTreeWidgetItem *pi3 = new SciQLvPItem(lv, "baz");
connect(
lv->selectionModel(), SIGNAL(currentChanged(const QModelIndex&, const QModelIndex&)),
this, SLOT(itemChanged(const QModelIndex&, const QModelIndex&)));
// setResizeEnabled(TRUE);
}
SciQWorkspaceDock::~SciQWorkspaceDock()
{
}
void SciQWorkspaceDock::itemChanged (const QModelIndex &cur, const QModelIndex& prev)
{
SciQWorkspaceItem *item = (SciQWorkspaceItem *)cur.internalPointer();
SciQWorkspaceFileItem *fi = item ? item->asFileItem() : 0;
if(fi) {
SciQWorkspaceItem *pitem = (SciQWorkspaceItem *)prev.internalPointer();
SciQWorkspaceFileItem *pfi = pitem ? pitem->asFileItem() : 0;
if(pfi) {
pfi->setDoc(mw->sci->document());
}
mw->sci->setDocument(fi->sciDoc());
QString fp = fi->getPath();
QFileInfo fi(fp);
QFile fh(fp);
// FIXME: mark file as unopenable (stop 'X' icon?)
if(!fi.isReadable()) {
QMessageBox::warning(mw, "Warning", QString("Failed to read file\n%1").arg(fp), QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton);
return;
}
// FIXME: mark file as un saveable...
if(!fi.isWritable()) {
QMessageBox::warning(mw, "Warning", QString("Failed to open file\n%1").arg(fp), QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton);
// ...
}
// FIXME: mark file as unopenable (stop 'X' icon?)
// This "should" have been caught by the ReadUser check above...
if(!fh.open(QIODevice::ReadOnly)) {
QMessageBox::warning(mw, "Warning", QString("Failed to open file\n%1").arg(fp), QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton);
return;
}
mw->sci->setText(QString(fh.readAll()));
}
qDebug() << "Selected: " << model->data(cur, Qt::DisplayRole).asString();
}