From 2a4f5bf78af0d985d68809b013b291fc9f1a2087 Mon Sep 17 00:00:00 2001 From: nemu Date: Fri, 15 Jul 2011 05:43:41 +0000 Subject: [PATCH] changed musredit/musrgui msr2data interface such that it is hopefully closer to the command line (MUSR-162, MUSR-173) --- ChangeLog | 1 + src/musredit/PAdmin.cpp | 20 ++++++-- src/musredit/PAdmin.h | 4 +- src/musredit/PHelp.h | 1 - src/musredit/PMsr2DataDialog.cpp | 38 ++++++++++++-- src/musredit/PMsr2DataDialog.h | 4 ++ src/musredit/PTextEdit.cpp | 30 ++++++----- src/musredit/forms/PMsr2DataDialog.ui | 54 +++++++++++++------- src/musredit/musredit.h | 3 +- src/musredit/musredit_startup.xml | 3 +- src/musrgui/PAdmin.cpp | 20 ++++++-- src/musrgui/PAdmin.h | 4 +- src/musrgui/PMsr2DataDialog.cpp | 37 ++++++++++++-- src/musrgui/PMsr2DataDialog.h | 4 ++ src/musrgui/PTextEdit.cpp | 26 +++++----- src/musrgui/forms/PMsr2DataDialogBase.ui | 64 ++++++++++++++++-------- src/musrgui/musrgui.h | 3 +- src/musrgui/musrgui_startup.xml | 3 +- 18 files changed, 228 insertions(+), 91 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9751af3c..b35eaeaa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -25,6 +25,7 @@ FIXED bug reported in MUSR-183: missing background for 2nd histo in asymmetry fi FIXED Makefiles so that the NeXus support will not be built if it has not been enabled during the configure stage FIXED ASCII export from musrview in case of a Fourier-Power- or Fourier-Phase-difference plot FIXED bug in asymmetry fit with fixed background +CHANGED musredit/musrgui msr2data interface such that it is hopefully closer to the command line (MUSR-162, MUSR-173) CHANGED the behavior of msr2data so that * it proceeds to the next run if a fit did not converge (and does not stop as before) * it always tries to read the data files if the nosummary option is not present diff --git a/src/musredit/PAdmin.cpp b/src/musredit/PAdmin.cpp index 865a9d1b..ec37482d 100644 --- a/src/musredit/PAdmin.cpp +++ b/src/musredit/PAdmin.cpp @@ -117,8 +117,8 @@ bool PAdminXMLParser::startElement( const QString&, const QString&, fKeyWord = eChainFit; } else if (qName == "write_data_header") { fKeyWord = eWriteDataHeader; - } else if (qName == "summary_files_present") { - fKeyWord = eSummaryFilesPresent; + } else if (qName == "ignore_data_header_info") { + fKeyWord = eIgnoreDataHeaderInfo; } else if (qName == "keep_minuit2_output") { fKeyWord = eKeepMinuit2Output; } else if (qName == "write_column_data") { @@ -133,6 +133,8 @@ bool PAdminXMLParser::startElement( const QString&, const QString&, fKeyWord = eFitOnly; } else if (qName == "global") { fKeyWord = eGlobal; + } else if (qName == "global_plus") { + fKeyWord = eGlobalPlus; } else if (qName == "func_pixmap_path") { fKeyWord = eTheoFuncPixmapPath; } else if (qName == "func") { @@ -288,12 +290,12 @@ bool PAdminXMLParser::characters(const QString& str) flag = false; fAdmin->fMsr2DataParam.writeDbHeader = flag; break; - case eSummaryFilesPresent: + case eIgnoreDataHeaderInfo: if (str == "y") flag = true; else flag = false; - fAdmin->fMsr2DataParam.summaryFilePresent = flag; + fAdmin->fMsr2DataParam.ignoreDataHeaderInfo = flag; break; case eKeepMinuit2Output: if (str == "y") @@ -344,6 +346,13 @@ bool PAdminXMLParser::characters(const QString& str) flag = false; fAdmin->fMsr2DataParam.global = flag; break; + case eGlobalPlus: + if (str == "y") + flag = true; + else + flag = false; + fAdmin->fMsr2DataParam.globalPlus = flag; + break; case eTheoFuncPixmapPath: fAdmin->setTheoFuncPixmapPath(QString(str.toLatin1()).trimmed()); break; @@ -544,7 +553,7 @@ PAdmin::PAdmin() fMsr2DataParam.templateRunNo = -1; fMsr2DataParam.dbOutputFileName = QString(""); fMsr2DataParam.writeDbHeader = true; - fMsr2DataParam.summaryFilePresent = true; + fMsr2DataParam.ignoreDataHeaderInfo = false; fMsr2DataParam.keepMinuit2Output = false; fMsr2DataParam.writeColumnData = false; fMsr2DataParam.recreateDbFile = false; @@ -554,6 +563,7 @@ PAdmin::PAdmin() fMsr2DataParam.createMsrFileOnly = false; fMsr2DataParam.fitOnly = false; fMsr2DataParam.global = false; + fMsr2DataParam.globalPlus = false; // XML Parser part QString fln = "musredit_startup.xml"; diff --git a/src/musredit/PAdmin.h b/src/musredit/PAdmin.h index 47c91626..80b87501 100644 --- a/src/musredit/PAdmin.h +++ b/src/musredit/PAdmin.h @@ -75,8 +75,8 @@ class PAdminXMLParser : public QXmlDefaultHandler eTheoFuncPixmapPath, eFunc, eFuncName, eFuncComment, eFuncLabel, eFuncPixmap, eFuncParams, eHelpMain, eHelpTitle, eHelpParameters, eHelpTheory, eHelpFunctions, eHelpRun, eHelpCommand, eHelpFourier, eHelpPlot, eHelpStatistic, eHelpMsr2Data, - eChainFit, eWriteDataHeader, eSummaryFilesPresent, eKeepMinuit2Output, eWriteColumnData, - eRecreateDataFile, eOpenFileAfterFitting, eCreateMsrFileOnly, eFitOnly, eGlobal}; + eChainFit, eWriteDataHeader, eIgnoreDataHeaderInfo, eKeepMinuit2Output, eWriteColumnData, + eRecreateDataFile, eOpenFileAfterFitting, eCreateMsrFileOnly, eFitOnly, eGlobal, eGlobalPlus}; bool startDocument(); bool startElement( const QString&, const QString&, const QString& , diff --git a/src/musredit/PHelp.h b/src/musredit/PHelp.h index 23bee3bd..fb2fbc8a 100644 --- a/src/musredit/PHelp.h +++ b/src/musredit/PHelp.h @@ -64,7 +64,6 @@ class PHelp : public QMainWindow QWebView *fView; ///< web viewer QLineEdit *fLocationEdit; ///< url address line edit int fProgress; ///< progress value (0-100) while loading an url - }; #endif // _PHELP_H_ diff --git a/src/musredit/PMsr2DataDialog.cpp b/src/musredit/PMsr2DataDialog.cpp index 7c890ca0..b3b7469f 100644 --- a/src/musredit/PMsr2DataDialog.cpp +++ b/src/musredit/PMsr2DataDialog.cpp @@ -91,7 +91,7 @@ PMsr2DataDialog::PMsr2DataDialog(PMsr2DataParam *msr2DataParam, const QString he } fWriteDataHeader_checkBox->setChecked(fMsr2DataParam->writeDbHeader); - fSummaryPresent_checkBox->setChecked(fMsr2DataParam->summaryFilePresent); + fIgnoreDataHeaderInfo_checkBox->setChecked(fMsr2DataParam->ignoreDataHeaderInfo); fKeepMinuit2Output_checkBox->setChecked(fMsr2DataParam->keepMinuit2Output); fWriteColumnData_checkBox->setChecked(fMsr2DataParam->writeColumnData); fRecreateDataFile_checkBox->setChecked(fMsr2DataParam->recreateDbFile); @@ -101,6 +101,10 @@ PMsr2DataDialog::PMsr2DataDialog(PMsr2DataParam *msr2DataParam, const QString he fCreateMsrFileOnly_checkBox->setChecked(fMsr2DataParam->createMsrFileOnly); fFitOnly_checkBox->setChecked(fMsr2DataParam->fitOnly); fGlobal_checkBox->setChecked(fMsr2DataParam->global); + fGlobalPlus_checkBox->setChecked(fMsr2DataParam->globalPlus); + + connect(fGlobal_checkBox, SIGNAL(clicked(bool)), this, SLOT(globalOptionSet(bool))); + connect(fGlobalPlus_checkBox, SIGNAL(clicked(bool)), this, SLOT(globalPlusOptionSet(bool))); } //---------------------------------------------------------------------------------------------------- @@ -129,7 +133,7 @@ PMsr2DataParam* PMsr2DataDialog::getMsr2DataParam() } fMsr2DataParam->dbOutputFileName = fDataOutputFileName_lineEdit->text(); fMsr2DataParam->writeDbHeader = fWriteDataHeader_checkBox->isChecked(); - fMsr2DataParam->summaryFilePresent = fSummaryPresent_checkBox->isChecked(); + fMsr2DataParam->ignoreDataHeaderInfo = fIgnoreDataHeaderInfo_checkBox->isChecked(); fMsr2DataParam->keepMinuit2Output = fKeepMinuit2Output_checkBox->isChecked(); fMsr2DataParam->writeColumnData = fWriteColumnData_checkBox->isChecked(); fMsr2DataParam->recreateDbFile = fRecreateDataFile_checkBox->isChecked(); @@ -139,6 +143,7 @@ PMsr2DataParam* PMsr2DataDialog::getMsr2DataParam() fMsr2DataParam->createMsrFileOnly = fCreateMsrFileOnly_checkBox->isChecked(); fMsr2DataParam->fitOnly = fFitOnly_checkBox->isChecked(); fMsr2DataParam->global = fGlobal_checkBox->isChecked(); + fMsr2DataParam->globalPlus = fGlobalPlus_checkBox->isChecked(); return fMsr2DataParam; } @@ -271,7 +276,6 @@ void PMsr2DataDialog::fitOnlyChanged(int buttonState) { if (buttonState == Qt::Checked) { fCreateMsrFileOnly_checkBox->setChecked(false); - fGlobal_checkBox->setChecked(false); fTemplateRunNumber_lineEdit->clear(); } } @@ -294,6 +298,34 @@ void PMsr2DataDialog::helpContent() } } +//---------------------------------------------------------------------------------------------------- +/** + *

Unchecks global+ if global is checked since global/global+ are excluding options + * + * \param checked true, if the check-box is checked + */ +void PMsr2DataDialog::globalOptionSet(bool checked) +{ + if (checked) { + if (fGlobalPlus_checkBox->isChecked()) + fGlobalPlus_checkBox->setChecked(false); + } +} + +//---------------------------------------------------------------------------------------------------- +/** + *

Unchecks global if global+ is checked since global/global+ are excluding options + * + * \param checked true, if the check-box is checked + */ +void PMsr2DataDialog::globalPlusOptionSet(bool checked) +{ + if (checked) { + if (fGlobal_checkBox->isChecked()) + fGlobal_checkBox->setChecked(false); + } +} + //---------------------------------------------------------------------------------------------------- // END //---------------------------------------------------------------------------------------------------- diff --git a/src/musredit/PMsr2DataDialog.h b/src/musredit/PMsr2DataDialog.h index 12fae817..59dacdc6 100644 --- a/src/musredit/PMsr2DataDialog.h +++ b/src/musredit/PMsr2DataDialog.h @@ -62,6 +62,10 @@ class PMsr2DataDialog : public QDialog, private Ui::PMsr2DataDialog void fitOnlyChanged(int); void helpContent(); + private slots: + void globalOptionSet(bool checked); + void globalPlusOptionSet(bool checked); + private: int fRunTag; ///< -1 = not valid, 0 = first last, 1 = run list, 2 = run list file name PMsr2DataParam *fMsr2DataParam; ///< data structure used to handle the necessary input for msr2data. diff --git a/src/musredit/PTextEdit.cpp b/src/musredit/PTextEdit.cpp index dda31c42..8d57576c 100644 --- a/src/musredit/PTextEdit.cpp +++ b/src/musredit/PTextEdit.cpp @@ -1837,8 +1837,8 @@ void PTextEdit::musrMsr2Data() if (!fMsr2DataParam->writeDbHeader) cmd.append("noheader"); - // no summary flag? - if (!fMsr2DataParam->summaryFilePresent) + // ignore data header info flag present? + if (fMsr2DataParam->ignoreDataHeaderInfo) cmd.append("nosummary"); // template run no fitting but: (i) no fit only flag, (ii) no create msr-file only flag @@ -1869,8 +1869,8 @@ void PTextEdit::musrMsr2Data() cmd.append("-k"); } - // replace msr-file title by data file title - if (fMsr2DataParam->titleFromDataFile) { + // replace msr-file title by data file title. Add flag only if a fit is done + if (fMsr2DataParam->titleFromDataFile && (fMsr2DataParam->fitOnly || fMsr2DataParam->templateRunNo != -1)) { cmd.append("-t"); } @@ -1890,18 +1890,22 @@ void PTextEdit::musrMsr2Data() cmd.append("global"); } - // recreate db file - if (fMsr2DataParam->recreateDbFile) { - if (QFile::exists(fMsr2DataParam->dbOutputFileName)) { - if (!QFile::remove(fMsr2DataParam->dbOutputFileName)) { - str = QString("Couldn't delete db-file '%1'. Will **NOT** proceed.").arg(fMsr2DataParam->dbOutputFileName); - QMessageBox::critical(this, "**ERROR**", str, - QMessageBox::Ok, QMessageBox::NoButton); - return; - } + // global+ flag check + if (fMsr2DataParam->globalPlus) { + if (fMsr2DataParam->chainFit) { + cmd.append("global+"); + } else { + cmd.append("global+!"); } } + // recreate db file + if (fMsr2DataParam->recreateDbFile) { + cmd.append("new"); + } + +// qDebug() << ">> " << cmd << endl; + PFitOutputHandler fitOutputHandler(QFileInfo(*fFilenames.find( currentEditor() )).absolutePath(), cmd); fitOutputHandler.setModal(true); fFileSystemWatcherActive = false; diff --git a/src/musredit/forms/PMsr2DataDialog.ui b/src/musredit/forms/PMsr2DataDialog.ui index 60dd0ae2..b1f7a5ab 100644 --- a/src/musredit/forms/PMsr2DataDialog.ui +++ b/src/musredit/forms/PMsr2DataDialog.ui @@ -2,6 +2,9 @@ PMsr2DataDialog + + Qt::WindowModal + 0 @@ -372,13 +375,13 @@ - 10 - 31 - 540 - 108 + 6 + 20 + 541 + 116 - + @@ -389,9 +392,9 @@ - + - Summary Files Present + Ignore Data Header Info @@ -453,11 +456,22 @@ - - - Global - - + + + + + Global + + + + + + + Global+ + + + + @@ -467,9 +481,9 @@ - 0 + 5 500 - 551 + 541 51 @@ -532,7 +546,7 @@ fChainFit_checkBox fDataOutputFileName_lineEdit fWriteDataHeader_checkBox - fSummaryPresent_checkBox + fIgnoreDataHeaderInfo_checkBox fKeepMinuit2Output_checkBox fWriteColumnData_checkBox fRecreateDataFile_checkBox @@ -540,6 +554,8 @@ fTitleFromData_checkBox fCreateMsrFileOnly_checkBox fFitOnly_checkBox + fGlobal_checkBox + fGlobalPlus_checkBox fOk_pushButton fCancel_pushButton fHelp_pushButton @@ -683,8 +699,8 @@ fitOnlyChanged(int) - 406 - 460 + 544 + 445 301 @@ -699,8 +715,8 @@ createMsrFileOnlyChanged(int) - 547 - 440 + 544 + 423 150 diff --git a/src/musredit/musredit.h b/src/musredit/musredit.h index b388e92d..528b8412 100644 --- a/src/musredit/musredit.h +++ b/src/musredit/musredit.h @@ -49,7 +49,7 @@ typedef struct { int templateRunNo; ///< fit template run number QString dbOutputFileName; ///< output file name for the generated (trumf-like) db-file. bool writeDbHeader; ///< flag indicating if a db header shall be generated (== !noheader in msr2data) - bool summaryFilePresent; ///< flag indicating if a LEM summary file is present (== !nosummary in msr2data) + bool ignoreDataHeaderInfo; ///< flag indicating if data header info (like temp.) shall be ignored (== nosummary in msr2data) bool keepMinuit2Output; ///< flag indicating if the minuit2 output shall be kept ('-k' in msr2data) bool writeColumnData; ///< flag indicating if instead of a db-file a column data ascii file shall be written ('data' in msr2data) bool recreateDbFile; ///< flag: true = recreate db-file, false = append to present db-file @@ -59,6 +59,7 @@ typedef struct { bool createMsrFileOnly; ///< flag: true = just create the msr-files without any fitting ('msr-