diff --git a/GUI/coregui/Models/ApplicationModels.cpp b/GUI/coregui/Models/ApplicationModels.cpp index 99b370a284695b861342ccaec10c1ee4392bd415..52479854788ae115e4c41c8e143483c3099c2e33 100644 --- a/GUI/coregui/Models/ApplicationModels.cpp +++ b/GUI/coregui/Models/ApplicationModels.cpp @@ -45,9 +45,24 @@ ApplicationModels::ApplicationModels(QObject* parent) , m_jobModel(nullptr) , m_materialPropertyController(new MaterialPropertyController(this)) { - createModels(); - // createTestSample(); - // createTestJob(); + //! creates and initializes models, order is important + m_documentModel = new DocumentModel(this); + m_materialModel = new MaterialModel(this); + m_sampleModel = new SampleModel(this); + m_instrumentModel = new InstrumentModel(this); + m_realDataModel = new RealDataModel(this); + m_jobModel = new JobModel(this); + + connectModel(m_documentModel); + connectModel(m_materialModel); + connectModel(m_sampleModel); + connectModel(m_instrumentModel); + connectModel(m_realDataModel); + connectModel(m_jobModel); + + resetModels(); + + m_materialPropertyController->setModels(materialModel(), sampleModel()); } ApplicationModels::~ApplicationModels() = default; @@ -105,96 +120,6 @@ void ApplicationModels::resetModels() instrument->setItemName("GISAS"); } -//! creates and initializes models, order is important -void ApplicationModels::createModels() -{ - createDocumentModel(); - createMaterialModel(); - createSampleModel(); - createInstrumentModel(); - createRealDataModel(); - createJobModel(); - resetModels(); - - m_materialPropertyController->setModels(materialModel(), sampleModel()); -} - -void ApplicationModels::createDocumentModel() -{ - delete m_documentModel; - m_documentModel = new DocumentModel(this); - connectModel(m_documentModel); -} - -void ApplicationModels::createMaterialModel() -{ - delete m_materialModel; - m_materialModel = new MaterialModel(this); - connectModel(m_materialModel); -} - -void ApplicationModels::createSampleModel() -{ - ASSERT(m_materialModel); - delete m_sampleModel; - m_sampleModel = new SampleModel(this); - connectModel(m_sampleModel); -} - -void ApplicationModels::createInstrumentModel() -{ - delete m_instrumentModel; - m_instrumentModel = new InstrumentModel(this); - connectModel(m_instrumentModel); -} - -void ApplicationModels::createRealDataModel() -{ - delete m_realDataModel; - m_realDataModel = new RealDataModel(this); - connectModel(m_realDataModel); -} - -void ApplicationModels::createJobModel() -{ - delete m_jobModel; - m_jobModel = new JobModel(this); - connectModel(m_jobModel); -} - -void ApplicationModels::createTestSample() -{ - SampleBuilderFactory factory; - const std::unique_ptr<MultiLayer> P_sample( - factory.createSampleByName("CylindersAndPrismsBuilder")); - - GUIObjectBuilder::populateSampleModel(m_sampleModel, m_materialModel, *P_sample); - - // to populate InstrumentView with predefined instrument - const std::unique_ptr<OffSpecularSimulation> simulation(StandardSimulations::MiniOffSpecular()); - GUIObjectBuilder::populateInstrumentModel(m_instrumentModel, *simulation); -} - -void ApplicationModels::createTestJob() -{ - SimulationOptionsItem* optionsItem = m_documentModel->simulationOptionsItem(); - - JobItem* jobItem = m_jobModel->addJob(m_sampleModel->multiLayerItem(), - m_instrumentModel->instrumentItem(), 0, optionsItem); - m_jobModel->runJob(jobItem->index()); -} - -void ApplicationModels::createTestRealData() -{ - auto realDataItem = m_realDataModel->insertItem<RealDataItem>(); - realDataItem->setItemName("realdata"); - - std::unique_ptr<OutputData<double>> data( - IntensityDataIOFactory::readOutputData("/home/pospelov/untitled2.int")); - - realDataItem->setOutputData(ImportDataUtils::CreateSimplifiedOutputData(*data.get()).release()); -} - //! Writes all model in file one by one void ApplicationModels::writeTo(QXmlStreamWriter* writer) @@ -236,15 +161,6 @@ QVector<SessionItem*> ApplicationModels::nonXMLData() const << m_instrumentModel->nonXMLData(); } -void ApplicationModels::disconnectModel(SessionModel* model) -{ - if (model) { - disconnect(model, &SessionModel::dataChanged, this, &ApplicationModels::modelChanged); - disconnect(model, &SessionModel::rowsRemoved, this, &ApplicationModels::modelChanged); - disconnect(model, &SessionModel::rowsInserted, this, &ApplicationModels::modelChanged); - } -} - void ApplicationModels::connectModel(SessionModel* model) { if (model) { diff --git a/GUI/coregui/Models/ApplicationModels.h b/GUI/coregui/Models/ApplicationModels.h index b8cd25eac63275787d104116065fe896e43e3baf..a2852e1cd28fdb74a62738a56300a5a2542e4863 100644 --- a/GUI/coregui/Models/ApplicationModels.h +++ b/GUI/coregui/Models/ApplicationModels.h @@ -43,10 +43,6 @@ public: void resetModels(); - void createTestSample(); - void createTestJob(); - void createTestRealData(); - void writeTo(class QXmlStreamWriter* writer); void readFrom(class QXmlStreamReader* reader, MessageService* messageService); @@ -58,15 +54,6 @@ signals: void modelChanged(); private: - void createModels(); - void createDocumentModel(); - void createMaterialModel(); - void createInstrumentModel(); - void createSampleModel(); - void createRealDataModel(); - void createJobModel(); - - void disconnectModel(SessionModel* model); void connectModel(SessionModel* model); DocumentModel* m_documentModel;