annotate widgets/LayerTreeDialog.cpp @ 1534:bfd8b22fd67c

Fix #1904 Scrolling colour 3d plot does not always work when in View normalisation mode. We shouldn't imagine we've just invalidated the cache if the truth is that we've only just created the renderer
author Chris Cannam
date Wed, 09 Oct 2019 13:45:17 +0100
parents d39db4673676
children
rev   line source
Chris@336 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@336 2
Chris@336 3 /*
Chris@336 4 Sonic Visualiser
Chris@336 5 An audio file viewer and annotation editor.
Chris@336 6 Centre for Digital Music, Queen Mary, University of London.
Chris@336 7 This file copyright 2007 QMUL.
Chris@336 8
Chris@336 9 This program is free software; you can redistribute it and/or
Chris@336 10 modify it under the terms of the GNU General Public License as
Chris@336 11 published by the Free Software Foundation; either version 2 of the
Chris@336 12 License, or (at your option) any later version. See the file
Chris@336 13 COPYING included with this distribution for more information.
Chris@336 14 */
Chris@336 15
Chris@336 16 #include "LayerTreeDialog.h"
Chris@336 17
Chris@336 18 #include "LayerTree.h"
Chris@336 19 #include "view/PaneStack.h"
Chris@336 20
Chris@336 21 #include <QTreeView>
Chris@336 22 #include <QTableView>
Chris@336 23 #include <QGridLayout>
Chris@336 24 #include <QGroupBox>
Chris@336 25 #include <QDialogButtonBox>
Chris@336 26 #include <QHeaderView>
Chris@336 27 #include <QApplication>
Chris@1478 28 #include <QScreen>
Chris@336 29
Chris@336 30 LayerTreeDialog::LayerTreeDialog(PaneStack *stack, QWidget *parent) :
Chris@336 31 QDialog(parent),
Chris@336 32 m_paneStack(stack)
Chris@336 33 {
Chris@336 34 setWindowTitle(tr("Layer Summary"));
Chris@336 35
Chris@336 36 QGridLayout *grid = new QGridLayout;
Chris@336 37 setLayout(grid);
Chris@336 38
Chris@336 39 QGroupBox *modelBox = new QGroupBox;
Chris@336 40 modelBox->setTitle(tr("Audio Data Sources"));
Chris@336 41 grid->addWidget(modelBox, 0, 0);
Chris@336 42 grid->setRowStretch(0, 15);
Chris@336 43
Chris@336 44 QGridLayout *subgrid = new QGridLayout;
Chris@336 45 modelBox->setLayout(subgrid);
Chris@336 46
Chris@336 47 subgrid->setSpacing(0);
Chris@336 48 subgrid->setMargin(5);
Chris@336 49
Chris@336 50 m_modelView = new QTableView;
Chris@336 51 subgrid->addWidget(m_modelView);
Chris@336 52
Chris@336 53 m_modelView->verticalHeader()->hide();
Chris@639 54 #if (QT_VERSION >= 0x050000)
Chris@616 55 m_modelView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
Chris@639 56 #else
Chris@639 57 m_modelView->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents);
Chris@639 58 #endif
Chris@336 59 m_modelView->setShowGrid(false);
Chris@336 60
Chris@392 61 m_modelModel = new ModelMetadataModel(m_paneStack, true);
Chris@336 62 m_modelView->setModel(m_modelModel);
Chris@336 63
Chris@336 64 QGroupBox *layerBox = new QGroupBox;
Chris@336 65 layerBox->setTitle(tr("Panes and Layers"));
Chris@336 66 grid->addWidget(layerBox, 1, 0);
Chris@336 67 grid->setRowStretch(1, 20);
Chris@336 68
Chris@336 69 subgrid = new QGridLayout;
Chris@336 70 layerBox->setLayout(subgrid);
Chris@336 71
Chris@336 72 subgrid->setSpacing(0);
Chris@336 73 subgrid->setMargin(5);
Chris@336 74
Chris@336 75 m_layerView = new QTreeView;
Chris@639 76 #if (QT_VERSION >= 0x050000)
Chris@616 77 m_layerView->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
Chris@639 78 #else
Chris@639 79 m_layerView->header()->setResizeMode(QHeaderView::ResizeToContents);
Chris@639 80 #endif
Chris@336 81 subgrid->addWidget(m_layerView);
Chris@336 82
Chris@336 83 m_layerModel = new LayerTreeModel(m_paneStack);
Chris@336 84 m_layerView->setModel(m_layerModel);
Chris@336 85 m_layerView->expandAll();
Chris@336 86
Chris@336 87 QDialogButtonBox *bb = new QDialogButtonBox(QDialogButtonBox::Close);
Chris@336 88 connect(bb, SIGNAL(rejected()), this, SLOT(reject()));
Chris@336 89 grid->addWidget(bb, 2, 0);
Chris@336 90 grid->setRowStretch(2, 0);
Chris@336 91
Chris@1478 92 QScreen *screen = QGuiApplication::primaryScreen();
Chris@1478 93 QRect available = screen->availableGeometry();
Chris@336 94
Chris@336 95 int width = available.width() / 2;
Chris@336 96 int height = available.height() / 3;
Chris@336 97 if (height < 370) {
Chris@336 98 if (available.height() > 500) height = 370;
Chris@336 99 }
Chris@336 100 if (width < 500) {
Chris@336 101 if (available.width() > 650) width = 500;
Chris@336 102 }
Chris@336 103
Chris@336 104 resize(width, height);
Chris@336 105 }
Chris@336 106
Chris@336 107 LayerTreeDialog::~LayerTreeDialog()
Chris@336 108 {
Chris@336 109 delete m_layerModel;
Chris@336 110 }
Chris@336 111