diff --git a/.gitsubprojects b/.gitsubprojects index d15b9a383eb2ce8d04e7617b1054515f0e025af9..0c84b5dc91553384a6e2bb4a5aaee407251a95ba 100644 --- a/.gitsubprojects +++ b/.gitsubprojects @@ -5,6 +5,6 @@ #git_subproject( Brion https://github.com/BlueBrain/Brion.git 073f356 ) git_subproject( ReTo https://github.com/gmrvvis/ReTo.git 13f5747f ) git_subproject( prefr https://github.com/gmrvvis/prefr.git 5b4b874a ) -git_subproject( SimIL https://github.com/gmrvvis/SimIL.git e4edaa3c ) +git_subproject( SimIL https://github.com/gmrvvis/SimIL.git 8be4a847 ) git_subproject( scoop https://github.com/gmrvvis/scoop.git b3326cd ) git_subproject( acuterecorder https://github.com/vg-lab/AcuteRecorder.git 3ae70efa ) diff --git a/CMakeLists.txt b/CMakeLists.txt index 232bb5e7c045091c250db09d35ff9a50e60666c1..b8e8394bb10eaf9c2c5e996b50f60a9df95c570c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,7 @@ cmake_minimum_required( VERSION 3.1 FATAL_ERROR ) # visimpl project and version -project( visimpl VERSION 1.7.0 ) +project( visimpl VERSION 1.7.1 ) set( visimpl_VERSION_ABI 6 ) SET( VISIMPL_LICENSE "GPL") diff --git a/sumrice/DisplayManagerWidget.cpp b/sumrice/DisplayManagerWidget.cpp index a63d4e8cfe2b80c1d42fbe85749304b087a5714a..38547f651893378f31a2fa1753da8740a2b70ac6 100644 --- a/sumrice/DisplayManagerWidget.cpp +++ b/sumrice/DisplayManagerWidget.cpp @@ -267,8 +267,8 @@ void DisplayManagerWidget::refreshHistograms(void) container->setLayout(contLayout); QLabel *nameLabel = new QLabel(tr(hist->name().c_str()), container); - - QLabel *numberLabel = new QLabel(QString::number(hist->gidsSize()), container); + QString sizeText = row == 0 ? QString() : QString::number(hist->filteredGIDs().size()); + QLabel *numberLabel = new QLabel(sizeText, container); QPushButton *hideButton = new QPushButton(container); hideButton->setIcon(QIcon(QPixmap(":icons/show.svg"))); diff --git a/sumrice/Histogram.cpp b/sumrice/Histogram.cpp index a7d637d6bb2bce9a44a48b7355e65ee6c204c5a4..fd34552048a6b506d6cca3016dba52428bcb15e9 100644 --- a/sumrice/Histogram.cpp +++ b/sumrice/Histogram.cpp @@ -226,7 +226,7 @@ namespace visimpl omp_set_dynamic( 0 ); omp_set_num_threads( numThreads ); const auto& references = _spikes->refData( ); - for( int i = 0; i < ( int ) references.size( ); i++) + for( int i = 0; i < static_cast<int>(references.size( )); i++) { simil::TSpikes::const_iterator spikeIt = references[ i ]; diff --git a/sumrice/StackViz.cpp b/sumrice/StackViz.cpp index deb9d2d1b2103f0b5afb6bf8e90e209eeec6e0cf..22e4df0d2fb11271bd3876dccf2dabd1f6790616 100644 --- a/sumrice/StackViz.cpp +++ b/sumrice/StackViz.cpp @@ -50,7 +50,7 @@ StackViz::StackViz( QWidget *parent_ ) setLayout( new QGridLayout( )); } -void StackViz::init( simil::SimulationPlayer* player ) +void StackViz::init( simil::SimulationPlayer* player, simil::SubsetEventManager *manager ) { if ( !player ) return; @@ -58,7 +58,7 @@ void StackViz::init( simil::SimulationPlayer* player ) _player = player; _simulationType = _player->data( )->simulationType( ); - _subsetEventManager = _player->data( )->subsetsEvents( ); + _subsetEventManager = manager; // TODO: events file. initSummaryWidget( ); diff --git a/sumrice/StackViz.h b/sumrice/StackViz.h index b4da70661cbda4ad1495d3d1be79559c0f186c98..2b126281e3dd293c2fdbc6fcdf278b134f13adb8 100644 --- a/sumrice/StackViz.h +++ b/sumrice/StackViz.h @@ -51,7 +51,7 @@ namespace visimpl virtual ~StackViz() {}; - void init( simil::SimulationPlayer* p ); + void init( simil::SimulationPlayer* p, simil::SubsetEventManager *m ); /** \brief Adds an histogram for the given ids. * \param[in] selection Selected indexes. diff --git a/sumrice/Summary.cpp b/sumrice/Summary.cpp index 95daa57d3c8a8e8a62876fdf95f661cf38581454..75f57a45e5652a2f17a35e3f1d168d6b89fb2544 100644 --- a/sumrice/Summary.cpp +++ b/sumrice/Summary.cpp @@ -778,12 +778,6 @@ namespace visimpl histogram->init( _bins, _zoomFactor ); - if( histogram->empty()) - { - delete histogram; - return; - } - histogram->setMinimumHeight( _heightPerRow ); histogram->setMaximumHeight( _heightPerRow ); histogram->setMinimumWidth( _sizeChartHorizontal ); diff --git a/visimpl/MainWindow.cpp b/visimpl/MainWindow.cpp index 93b7b7c48a645eb9f3e5df24e82dabfccacae9e4..d8dd4ebc816b81eaf5e418b296f5b746af57171c 100644 --- a/visimpl/MainWindow.cpp +++ b/visimpl/MainWindow.cpp @@ -359,12 +359,14 @@ namespace visimpl _selectionManager->setGIDs( _domainManager->gids( ) ); - _subsetEvents = _openGLWidget->player( )->data( )->subsetsEvents( ); + _subsetEvents = _openGLWidget->subsetEventsManager(); _ui->actionToggleStackVizDock->setEnabled(true); _ui->actionOpenSubsetEventsFile->setEnabled(true); _ui->actionCloseData->setEnabled(true); + _buttonImportGroups->setEnabled( _subsetEvents->numSubsets() > 0 ); + if(_openGLWidget) { auto player = _openGLWidget->player(); @@ -787,7 +789,7 @@ namespace visimpl if ( _openGLWidget && _openGLWidget->player( )) { - _stackViz->init( _openGLWidget->player( )); + _stackViz->init( _openGLWidget->player( ), _openGLWidget->subsetEventsManager() ); } _stackVizDock->setWidget( _stackViz ); @@ -1961,6 +1963,11 @@ void MainWindow::clearGroups( void ) addGroupControls( group, _domainManager->groups( ).size( ) - 1, filteredGIDs.size( ) ); + + visimpl::Selection selection; + selection.name = groupName; + selection.gids = filteredGIDs; + _stackViz->addSelection( selection ); }; std::for_each(groups.cbegin(), groups.cend(), addGroup); @@ -2376,6 +2383,7 @@ void MainWindow::clearGroups( void ) player = new simil::SpikesPlayer( ); player->LoadData( netData , simData ); + _subsetEvents = netData->subsetsEvents(); // NOTE: loader doesn't get destroyed because has a loop for getting data. } @@ -2416,6 +2424,10 @@ void MainWindow::clearGroups( void ) _openGLWidget->setPlayer(player, dataType); + _openGLWidget->subsetEventsManager( _subsetEvents ); + _openGLWidget->showEventsActivityLabels( _ui->actionShowEventsActivity->isChecked( )); + _openGLWidget->idleUpdate( _ui->actionUpdateOnIdle->isChecked( ) ); + configureComponents( ); openSubsetEventFile( m_subsetEventFile, false ); @@ -2424,7 +2436,9 @@ void MainWindow::clearGroups( void ) _comboAttribSelection->clear(); - _stackViz->init( player ); + _stackViz->init( player, _subsetEvents ); + + _subsetImporter->reload(_subsetEvents); switch(dataType) { @@ -2827,7 +2841,6 @@ void MainWindow::clearGroups( void ) _groupsVisButtons.erase(_groupsVisButtons.begin() + idx); const bool enabled = !_groupsVisButtons.empty(); - _buttonImportGroups->setEnabled( enabled ); _buttonClearGroups->setEnabled( enabled ); _buttonSaveGroups->setEnabled( enabled); diff --git a/visimpl/SubsetImporter.cpp b/visimpl/SubsetImporter.cpp index 16f84425e94514c959fce1b37801a9dd4fc1ee64..1cc86a3379d34456a9c52b152473638ba55313a0 100644 --- a/visimpl/SubsetImporter.cpp +++ b/visimpl/SubsetImporter.cpp @@ -25,7 +25,7 @@ // Qt #include <QGroupBox> -#include <QScrollArea> +#include <QListWidget> #include <QCheckBox> #include <QLabel> @@ -36,12 +36,12 @@ namespace visimpl , _subsetEventManager( nullptr ) , _buttonAccept( nullptr ) , _buttonCancel( nullptr ) - , _layoutSubsets( nullptr ) { init( ); setWindowIcon(QIcon(tr(":/visimpl.png"))); setWindowTitle(tr("Import Subsets")); + setMinimumSize(400, 400); } void SubsetImporter::init( void ) @@ -62,13 +62,12 @@ namespace visimpl layoutHeader->addWidget( checkBoxHeader, 0, 0, 1, 2 ); layoutHeader->addWidget( labelHeader, 0, 2, 1, 1 ); - auto scrollSubsets = new QScrollArea( ); + _listSubsets = new QListWidget( ); layoutGroupBox->addWidget( header ); - layoutGroupBox->addWidget( scrollSubsets ); + layoutGroupBox->addWidget( _listSubsets ); - _layoutSubsets = new QVBoxLayout( ); - _layoutSubsets->setMargin( 0 ); - scrollSubsets->setLayout( _layoutSubsets ); + _listSubsets->setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOff); + _listSubsets->setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAsNeeded); auto foot = new QWidget( ); auto layoutBottom = new QGridLayout( ); @@ -118,25 +117,22 @@ namespace visimpl checkBox->setChecked( true ); container->setLayout( layout ); + container->setFixedHeight(30); layout->addWidget( checkBox, 0, 0, 1, 2 ); layout->addWidget( label, 0, 2, 1, 1 ); - _layoutSubsets->addWidget( container ); + auto item = new QListWidgetItem(_listSubsets, Qt::UserRole+1); + + _listSubsets->addItem(item); + item->setSizeHint(QSize(0, 35)); + _listSubsets->setItemWidget(item, container); }; std::for_each(names.cbegin(), names.cend(), createSubsetWidgets); } void SubsetImporter::clear( ) { - auto removeSubsetWidgets = [this](std::pair<const std::string, tSubsetLine> &row) - { - auto container = std::get< sl_container >( row.second ); - _layoutSubsets->removeWidget( container ); - - delete container; - }; - std::for_each(_subsets.begin(), _subsets.end(), removeSubsetWidgets); - + _listSubsets->clear(); _subsets.clear( ); } @@ -154,5 +150,3 @@ namespace visimpl return result; } } - - diff --git a/visimpl/SubsetImporter.h b/visimpl/SubsetImporter.h index f0481a4f891cc11558ab6aa6342296874bf41909..a1ee7fa94982b5c864f87e9326148b18589fc303 100644 --- a/visimpl/SubsetImporter.h +++ b/visimpl/SubsetImporter.h @@ -34,6 +34,8 @@ // SimIL #include <simil/simil.h> +class QListWidget; + namespace visimpl { class SubsetImporter : public QDialog @@ -60,7 +62,7 @@ namespace visimpl QPushButton* _buttonAccept; QPushButton* _buttonCancel; - QVBoxLayout* _layoutSubsets; + QListWidget* _listSubsets; std::map< std::string, tSubsetLine > _subsets; };