void FactoryPrivate::phononBackendChanged() { if (m_backendObject) { for (int i = 0; i < mediaNodePrivateList.count(); ++i) { mediaNodePrivateList.at(i)->deleteBackendObject(); } if (objects.size() > 0) { pDebug() << "WARNING: we were asked to change the backend but the application did\n" "not free all references to objects created by the factory. Therefore we can not\n" "change the backend without crashing. Now we have to wait for a restart to make\n" "backendswitching possible."; // in case there were objects deleted give 'em a chance to recreate // them now for (int i = 0; i < mediaNodePrivateList.count(); ++i) { mediaNodePrivateList.at(i)->createBackendObject(); } return; } delete m_backendObject; m_backendObject = 0; } createBackend(); for (int i = 0; i < mediaNodePrivateList.count(); ++i) { mediaNodePrivateList.at(i)->createBackendObject(); } emit backendChanged(); }
SamView::SamView(QWidget *parent, Qt::WFlags flags) : KXmlGuiWindow(parent, flags), m_startCompilationAfterAdaption(false), m_startTestAfterCompile(false), m_startTestAfterAdaption(false), m_exportAfterTest(false), m_dirty(false), m_creationCorpus(0), m_reportParameters(0), modelCompiler(0), modelCompilationAdapter(0), barGraph(0) { KGlobal::locale()->insertCatalog("simonlib"); ui.setupUi(this); ui.qpPlot->hide(); barGraphLegend = new QwtLegend(ui.qpPlot); ui.qpPlot->insertLegend(barGraphLegend); #if QWT_VERSION >= 0x060100 connect(ui.qpPlot, SIGNAL(legendDataChanged(const QVariant &, const QList<QwtLegendData>&)), barGraphLegend, SLOT(updateLegend(const QVariant&, const QList<QwtLegendData>&))); barGraphLegend->show(); ui.qpPlot->updateLegend(); #endif initGraph(); ui.saTestConfigurations->setWidget(ui.wgTestConfigurations); KAction* getPathsFromSimon = new KAction(this); getPathsFromSimon->setText(i18n("Modify Simon's model")); getPathsFromSimon->setStatusTip(i18n("Manage Simon's current model with SSC")); getPathsFromSimon->setIcon(KIcon("simon")); actionCollection()->addAction("getPathsFromSimon", getPathsFromSimon); connect(getPathsFromSimon, SIGNAL(triggered(bool)), this, SLOT(getBuildPathsFromSimon())); KAction* recompile = new KAction(this); recompile->setText(i18n("Build model")); recompile->setStatusTip(i18n("Build the currently open model.")); recompile->setIcon(KIcon("view-refresh")); recompile->setShortcut(Qt::CTRL + Qt::Key_F5); actionCollection()->addAction("compileModel", recompile); connect(recompile, SIGNAL(triggered(bool)), this, SLOT(compileModel())); KAction* test= new KAction(this); test->setText(i18n("Test model")); test->setStatusTip(i18n("Test the model.")); test->setIcon(KIcon("chronometer")); actionCollection()->addAction("testModel", test); connect(test, SIGNAL(triggered(bool)), this, SLOT(testModel())); KAction* testResults= new KAction(this); testResults->setText(i18n("Test results")); testResults->setStatusTip(i18n("Display the test results.")); testResults->setIcon(KIcon("view-pim-tasks")); actionCollection()->addAction("testResults", testResults); connect(testResults, SIGNAL(triggered(bool)), this, SLOT(switchToTestResults())); KAction* exportTestResults = new KAction(this); exportTestResults->setText(i18n("Export test result")); exportTestResults->setStatusTip(i18n("Export the test results to a file.")); exportTestResults->setIcon(KIcon("document-export")); actionCollection()->addAction("exportTestResults", exportTestResults); connect(exportTestResults, SIGNAL(triggered(bool)), this, SLOT(exportTestResults())); m_user = "******"; KStandardAction::openNew(this, SLOT(newProject()), actionCollection()); KStandardAction::save(this, SLOT(save()), actionCollection()); KStandardAction::saveAs(this, SLOT(saveAs()), actionCollection()); KStandardAction::open(this, SLOT(load()), actionCollection()); KStandardAction::preferences(this, SLOT(showConfig()), actionCollection()); KStandardAction::quit(this, SLOT(close()), actionCollection()); setupGUI(); connect(ui.cbType, SIGNAL(currentIndexChanged(int)), this, SLOT(backendChanged())); connect(ui.pbCompileModel, SIGNAL(clicked()), this, SLOT(compileModel())); connect(ui.pbTestModel, SIGNAL(clicked()), this, SLOT(testModel())); connect(ui.pbImportRecognitionSamples, SIGNAL(clicked()), this, SLOT(importRecognitionSamples())); connect(ui.rbDynamicModel, SIGNAL(toggled(bool)), this, SLOT(setDirty())); connect(ui.rbStaticModel, SIGNAL(toggled(bool)), this, SLOT(setDirty())); connect(ui.urOutputModel, SIGNAL(textChanged(QString)), this, SLOT(setDirty())); connect(ui.urPromptsBasePath, SIGNAL(textChanged(QString)), this, SLOT(setDirty())); connect(ui.urLexicon, SIGNAL(textChanged(QString)), this, SLOT(setDirty())); connect(ui.urGrammar, SIGNAL(textChanged(QString)), this, SLOT(setDirty())); connect(ui.urVocabulary, SIGNAL(textChanged(QString)), this, SLOT(setDirty())); connect(ui.urPrompts, SIGNAL(textChanged(QString)), this, SLOT(setDirty())); connect(ui.urBaseModel, SIGNAL(textChanged(QString)), this, SLOT(setDirty())); connect(ui.leScriptPrefix, SIGNAL(textChanged(QString)), this, SLOT(setDirty())); connect(ui.sbSampleRate, SIGNAL(valueChanged(int)), this, SLOT(setDirty())); connect(ui.pbExtractSimonModel, SIGNAL(clicked()), this, SLOT(extractSimonModel())); ui.urOutputModel->setMode(KFile::File|KFile::LocalOnly); ui.urPromptsBasePath->setMode(KFile::Directory|KFile::ExistingOnly|KFile::LocalOnly); ui.urLexicon->setMode(KFile::File|KFile::ExistingOnly|KFile::LocalOnly); ui.urGrammar->setMode(KFile::File|KFile::ExistingOnly|KFile::LocalOnly); ui.urVocabulary->setMode(KFile::File|KFile::ExistingOnly|KFile::LocalOnly); ui.urPrompts->setMode(KFile::File|KFile::ExistingOnly|KFile::LocalOnly); ui.urBaseModel->setMode(KFile::File|KFile::ExistingOnly|KFile::LocalOnly); #ifdef BACKEND_TYPE_JHTK ui.cbType->removeItem(0); ui.swModelInputFiles->removeWidget(ui.pgSphinxInputFiles); if ((KCmdLineArgs::parsedArgs()->isSet("m")) && (KCmdLineArgs::parsedArgs()->getOption("m") == "sphinx")) { KMessageBox::sorry(this, i18n("SAM was built without SPHINX support.")); exit(0); } #endif if (KCmdLineArgs::parsedArgs()->isSet("m")) ui.cbType->setCurrentIndex(KCmdLineArgs::parsedArgs()->getOption("m") == "htk" ? 1 : 0); backendChanged(); connect(ui.pbAddTestConfiguration, SIGNAL(clicked()), this, SLOT(addTestConfiguration())); connect(ui.pbSerializeScenarios, SIGNAL(clicked()), this, SLOT(serializeScenarios())); connect(ui.pbSerializePrompts, SIGNAL(clicked()), this, SLOT(serializePrompts())); connect(ui.pbCancelBuildModel, SIGNAL(clicked()), this, SLOT(abortModelCompilation())); connect(ui.pbCancelTestModel, SIGNAL(clicked()), this, SLOT(abortModelTest())); connect(ui.pbSaveCompleteBuildlog, SIGNAL(clicked()), this, SLOT(storeBuildLog())); if (KCmdLineArgs::parsedArgs()->count() > 0) { QString loadPath = KCmdLineArgs::parsedArgs()->url(0).toLocalFile(); kDebug() << "Load path: " << loadPath; if (!loadPath.isEmpty()) load(loadPath); } bool autoTestModel = KCmdLineArgs::parsedArgs()->isSet("t"); if (KCmdLineArgs::parsedArgs()->isSet("s")) { getBuildPathsFromSimon(); //async if (KCmdLineArgs::parsedArgs()->isSet("c")) { m_startCompilationAfterAdaption = true; if (autoTestModel) { m_startTestAfterCompile = true; } } else if (autoTestModel) { m_startTestAfterAdaption = true; } } else { if (KCmdLineArgs::parsedArgs()->isSet("c")) { compileModel(); if (autoTestModel) m_startTestAfterCompile = true; } else if (autoTestModel) testModel(); } if (KCmdLineArgs::parsedArgs()->isSet("e")) m_exportAfterTest = true; }