# HG changeset patch # User Chris Cannam # Date 1212765987 0 # Node ID 1d85aa5a49bea42669d4b63f70a902cb141cb1ee # Parent 4f0f273c8f82c8c69495694767f813ed85fa5607 * Start adding a spreadsheet-style editor window for model data diff -r 4f0f273c8f82 -r 1d85aa5a49be widgets/LayerTree.cpp --- a/widgets/LayerTree.cpp Wed May 21 11:09:15 2008 +0000 +++ b/widgets/LayerTree.cpp Fri Jun 06 15:26:27 2008 +0000 @@ -27,7 +27,7 @@ #include -ModelDataModel::ModelDataModel(PaneStack *stack, bool waveModelsOnly, +ModelMetadataModel::ModelMetadataModel(PaneStack *stack, bool waveModelsOnly, QObject *parent) : QAbstractItemModel(parent), m_stack(stack), @@ -70,12 +70,12 @@ rebuildModelSet(); } -ModelDataModel::~ModelDataModel() +ModelMetadataModel::~ModelMetadataModel() { } void -ModelDataModel::rebuildModelSet() +ModelMetadataModel::rebuildModelSet() { std::set unfound = m_models; @@ -111,61 +111,61 @@ m_models.erase(*i); } - std::cerr << "ModelDataModel::rebuildModelSet: " << m_models.size() << " models" << std::endl; + std::cerr << "ModelMetadataModel::rebuildModelSet: " << m_models.size() << " models" << std::endl; } void -ModelDataModel::paneAdded() +ModelMetadataModel::paneAdded() { rebuildModelSet(); emit layoutChanged(); } void -ModelDataModel::paneDeleted() +ModelMetadataModel::paneDeleted() { rebuildModelSet(); emit layoutChanged(); } void -ModelDataModel::paneLayerModelChanged() +ModelMetadataModel::paneLayerModelChanged() { rebuildModelSet(); emit layoutChanged(); } void -ModelDataModel::propertyContainerAdded(PropertyContainer *) +ModelMetadataModel::propertyContainerAdded(PropertyContainer *) { rebuildModelSet(); emit layoutChanged(); } void -ModelDataModel::propertyContainerRemoved(PropertyContainer *) +ModelMetadataModel::propertyContainerRemoved(PropertyContainer *) { rebuildModelSet(); emit layoutChanged(); } void -ModelDataModel::propertyContainerSelected(PropertyContainer *) +ModelMetadataModel::propertyContainerSelected(PropertyContainer *) { } void -ModelDataModel::propertyContainerPropertyChanged(PropertyContainer *pc) +ModelMetadataModel::propertyContainerPropertyChanged(PropertyContainer *pc) { } void -ModelDataModel::playParametersAudibilityChanged(bool a) +ModelMetadataModel::playParametersAudibilityChanged(bool a) { } QVariant -ModelDataModel::data(const QModelIndex &index, int role) const +ModelMetadataModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); @@ -206,20 +206,20 @@ } bool -ModelDataModel::setData(const QModelIndex &index, const QVariant &value, int role) +ModelMetadataModel::setData(const QModelIndex &index, const QVariant &value, int role) { return false; } Qt::ItemFlags -ModelDataModel::flags(const QModelIndex &index) const +ModelMetadataModel::flags(const QModelIndex &index) const { Qt::ItemFlags flags = Qt::ItemIsEnabled; return flags; } QVariant -ModelDataModel::headerData(int section, +ModelMetadataModel::headerData(int section, Qt::Orientation orientation, int role) const { @@ -234,7 +234,7 @@ } QModelIndex -ModelDataModel::index(int row, int column, const QModelIndex &parent) const +ModelMetadataModel::index(int row, int column, const QModelIndex &parent) const { if (!parent.isValid()) { if (row >= m_models.size()) return QModelIndex(); @@ -245,20 +245,20 @@ } QModelIndex -ModelDataModel::parent(const QModelIndex &index) const +ModelMetadataModel::parent(const QModelIndex &index) const { return QModelIndex(); } int -ModelDataModel::rowCount(const QModelIndex &parent) const +ModelMetadataModel::rowCount(const QModelIndex &parent) const { if (!parent.isValid()) return m_models.size(); return 0; } int -ModelDataModel::columnCount(const QModelIndex &parent) const +ModelMetadataModel::columnCount(const QModelIndex &parent) const { return m_columnCount; } diff -r 4f0f273c8f82 -r 1d85aa5a49be widgets/LayerTree.h --- a/widgets/LayerTree.h Wed May 21 11:09:15 2008 +0000 +++ b/widgets/LayerTree.h Fri Jun 06 15:26:27 2008 +0000 @@ -28,13 +28,13 @@ class PropertyContainer; class Model; -class ModelDataModel : public QAbstractItemModel +class ModelMetadataModel : public QAbstractItemModel { Q_OBJECT public: - ModelDataModel(PaneStack *stack, bool waveModelsOnly, QObject *parent = 0); - virtual ~ModelDataModel(); + ModelMetadataModel(PaneStack *stack, bool waveModelsOnly, QObject *parent = 0); + virtual ~ModelMetadataModel(); QVariant data(const QModelIndex &index, int role) const; diff -r 4f0f273c8f82 -r 1d85aa5a49be widgets/LayerTreeDialog.cpp --- a/widgets/LayerTreeDialog.cpp Wed May 21 11:09:15 2008 +0000 +++ b/widgets/LayerTreeDialog.cpp Fri Jun 06 15:26:27 2008 +0000 @@ -54,7 +54,7 @@ m_modelView->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents); m_modelView->setShowGrid(false); - m_modelModel = new ModelDataModel(m_paneStack, true); + m_modelModel = new ModelMetadataModel(m_paneStack, true); m_modelView->setModel(m_modelModel); QGroupBox *layerBox = new QGroupBox; diff -r 4f0f273c8f82 -r 1d85aa5a49be widgets/LayerTreeDialog.h --- a/widgets/LayerTreeDialog.h Wed May 21 11:09:15 2008 +0000 +++ b/widgets/LayerTreeDialog.h Fri Jun 06 15:26:27 2008 +0000 @@ -18,7 +18,7 @@ #include -class ModelDataModel; +class ModelMetadataModel; class LayerTreeModel; class PaneStack; class QTreeView; @@ -34,7 +34,7 @@ protected: PaneStack *m_paneStack; - ModelDataModel *m_modelModel; + ModelMetadataModel *m_modelModel; QTableView *m_modelView; LayerTreeModel *m_layerModel; QTreeView *m_layerView; diff -r 4f0f273c8f82 -r 1d85aa5a49be widgets/ModelDataTableDialog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/widgets/ModelDataTableDialog.cpp Fri Jun 06 15:26:27 2008 +0000 @@ -0,0 +1,81 @@ +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ + +/* + Sonic Visualiser + An audio file viewer and annotation editor. + Centre for Digital Music, Queen Mary, University of London. + This file copyright 2008 QMUL. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. See the file + COPYING included with this distribution for more information. +*/ + +#include "ModelDataTableDialog.h" + +#include "data/model/ModelDataTableModel.h" + +#include +#include +#include +#include +#include +#include +#include + +ModelDataTableDialog::ModelDataTableDialog(Model *model, QWidget *parent) : + QDialog(parent) +{ + setWindowTitle(tr("Data Editor")); + + QGridLayout *grid = new QGridLayout; + setLayout(grid); + + QGroupBox *box = new QGroupBox; + box->setTitle(tr("Layer Data")); + grid->addWidget(box, 0, 0); + grid->setRowStretch(0, 15); + + QGridLayout *subgrid = new QGridLayout; + box->setLayout(subgrid); + + subgrid->setSpacing(0); + subgrid->setMargin(5); + + m_tableView = new QTableView; + subgrid->addWidget(m_tableView); + + m_tableView->verticalHeader()->hide(); +// m_tableView->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents); + m_tableView->setShowGrid(false); + + m_table = new ModelDataTableModel(model); + m_tableView->setModel(m_table); + + QDialogButtonBox *bb = new QDialogButtonBox(QDialogButtonBox::Close); + connect(bb, SIGNAL(rejected()), this, SLOT(reject())); + grid->addWidget(bb, 2, 0); + grid->setRowStretch(2, 0); + + QDesktopWidget *desktop = QApplication::desktop(); + QRect available = desktop->availableGeometry(); + + int width = available.width() / 3; + int height = available.height() / 2; + if (height < 370) { + if (available.height() > 500) height = 370; + } + if (width < 500) { + if (available.width() > 650) width = 500; + } + + resize(width, height); +} + +ModelDataTableDialog::~ModelDataTableDialog() +{ + delete m_table; +} + diff -r 4f0f273c8f82 -r 1d85aa5a49be widgets/ModelDataTableDialog.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/widgets/ModelDataTableDialog.h Fri Jun 06 15:26:27 2008 +0000 @@ -0,0 +1,38 @@ +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ + +/* + Sonic Visualiser + An audio file viewer and annotation editor. + Centre for Digital Music, Queen Mary, University of London. + This file copyright 2008 QMUL. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. See the file + COPYING included with this distribution for more information. +*/ + +#ifndef _MODEL_DATA_TABLE_DIALOG_H_ +#define _MODEL_DATA_TABLE_DIALOG_H_ + +#include + +class Model; +class ModelDataTableModel; +class QTableView; + +class ModelDataTableDialog : public QDialog +{ + Q_OBJECT + +public: + ModelDataTableDialog(Model *model, QWidget *parent = 0); + ~ModelDataTableDialog(); + +protected: + ModelDataTableModel *m_table; + QTableView *m_tableView; +}; + +#endif diff -r 4f0f273c8f82 -r 1d85aa5a49be widgets/widgets.pro --- a/widgets/widgets.pro Wed May 21 11:09:15 2008 +0000 +++ b/widgets/widgets.pro Fri Jun 06 15:26:27 2008 +0000 @@ -30,6 +30,7 @@ LEDButton.h \ ListInputDialog.h \ MIDIFileImportDialog.h \ + ModelDataTableDialog.h \ NotifyingCheckBox.h \ NotifyingComboBox.h \ NotifyingPushButton.h \ @@ -63,6 +64,7 @@ LEDButton.cpp \ ListInputDialog.cpp \ MIDIFileImportDialog.cpp \ + ModelDataTableDialog.cpp \ NotifyingCheckBox.cpp \ NotifyingComboBox.cpp \ NotifyingPushButton.cpp \