newly added musrgui. Still under heavy development.

This commit is contained in:
nemu 2009-02-26 12:49:36 +00:00
parent acb5eda314
commit bb68989a75
30 changed files with 2768 additions and 0 deletions

181
src/musrgui/PAdmin.cpp Normal file
View File

@ -0,0 +1,181 @@
/****************************************************************************
PAdmin.cpp
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
$Id$
*****************************************************************************/
/***************************************************************************
* Copyright (C) 2009 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include <qmessagebox.h>
#include "PAdmin.h"
//--------------------------------------------------------------------------
// implementation of PAdminXMLParser class
//--------------------------------------------------------------------------
/**
* <p>XML Parser class for the musrgui administration file.
*
* \param admin pointer to an admin class instance.
*/
PAdminXMLParser::PAdminXMLParser(PAdmin *admin) : fAdmin(admin)
{
fKeyWord = eEmpty;
}
//--------------------------------------------------------------------------
/**
* <p>Routine called at the beginning of the XML parsing process.
*/
bool PAdminXMLParser::startDocument()
{
return true;
}
//--------------------------------------------------------------------------
/**
* <p>Routine called when a new XML tag is found. Here it is used
* to set a tag for filtering afterwards the content.
*
* \param qName name of the XML tag.
*/
bool PAdminXMLParser::startElement( const QString&, const QString&,
const QString& qName,
const QXmlAttributes& )
{
if (qName == "exec_path") {
fKeyWord = eExecPath;
} else if (qName == "default_save_path") {
fKeyWord = eDefaultSavePath;
} else if (qName == "beamline") {
fKeyWord = eBeamline;
} else if (qName == "institute") {
fKeyWord = eInstitute;
} else if (qName == "file_format") {
fKeyWord = eFileFormat;
} else if (qName == "msr_default_file_path") {
fKeyWord = eMsrDefaultFilePath;
} else if (qName == "show_mlog") {
fKeyWord = eShowMlog;
}
return true;
}
//--------------------------------------------------------------------------
/**
* <p>Routine called when the end XML tag is found. It is used to
* put the filtering tag to 'empty'.
*/
bool PAdminXMLParser::endElement( const QString&, const QString&, const QString& )
{
fKeyWord = eEmpty;
return true;
}
//--------------------------------------------------------------------------
/**
* <p>This routine delivers the content of an XML tag. It fills the
* content into the load data structure.
*/
bool PAdminXMLParser::characters(const QString& str)
{
switch (fKeyWord) {
case eExecPath:
fAdmin->setExecPath(QString(str.ascii()).stripWhiteSpace());
break;
case eDefaultSavePath:
fAdmin->setDefaultSavePath(QString(str.ascii()).stripWhiteSpace());
break;
case eBeamline:
fAdmin->setBeamline(QString(str.ascii()).stripWhiteSpace());
break;
case eInstitute:
fAdmin->setInstitute(QString(str.ascii()).stripWhiteSpace());
break;
case eFileFormat:
fAdmin->setFileFormat(QString(str.ascii()).stripWhiteSpace());
break;
case eMsrDefaultFilePath:
fAdmin->setMsrDefaultFilePath(QString(str.ascii()).stripWhiteSpace());
break;
case eShowMlog:
if (str == "n")
fAdmin->setShowMlog(false);
else
fAdmin->setShowMlog(true);
break;
default:
break;
}
return true;
}
//--------------------------------------------------------------------------
/**
* <p>Called at the end of the XML parse process.
*/
bool PAdminXMLParser::endDocument()
{
// check if all necessary items are found
return true;
}
//--------------------------------------------------------------------------
// implementation of PAdmin class
//--------------------------------------------------------------------------
/**
* <p>
*/
PAdmin::PAdmin()
{
fExecPath = QString("");
fDefaultSavePath = QString("");
fBeamline = QString("");
fInstitute = QString("");
fFileFormat = QString("");
fShowMlog = true;
// XML Parser part
QString fln = "/home/nemu/analysis/bin/musrgui_startup.xml";
if (QFile::exists(fln)) { // administrations file present
PAdminXMLParser handler(this);
QFile xmlFile(fln);
QXmlInputSource source( &xmlFile );
QXmlSimpleReader reader;
reader.setContentHandler( &handler );
reader.parse( source );
}
}
//--------------------------------------------------------------------------
// END
//--------------------------------------------------------------------------

102
src/musrgui/PAdmin.h Normal file
View File

@ -0,0 +1,102 @@
/****************************************************************************
PAdmin.h
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
$Id$
*****************************************************************************/
/***************************************************************************
* Copyright (C) 2009 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef _PADMIN_H_
#define _PADMIN_H_
#include <qstring.h>
#include <qptrlist.h>
#include <qxml.h>
class PAdmin;
//---------------------------------------------------------------------------
class PAdminXMLParser : public QXmlDefaultHandler
{
public:
PAdminXMLParser(PAdmin*);
virtual ~PAdminXMLParser() {}
private:
enum EAdminKeyWords {eEmpty, eExecPath, eDefaultSavePath, eBeamline, eInstitute, eFileFormat,
eMsrDefaultFilePath, eShowMlog};
bool startDocument();
bool startElement( const QString&, const QString&, const QString& ,
const QXmlAttributes& );
bool endElement( const QString&, const QString&, const QString& );
bool characters(const QString&);
bool endDocument();
EAdminKeyWords fKeyWord;
PAdmin *fAdmin;
};
//---------------------------------------------------------------------------
class PAdmin
{
public:
PAdmin();
virtual ~PAdmin() {}
QString getExecPath() { return fExecPath; }
QString getDefaultSavePath() { return fDefaultSavePath; }
QString getBeamline() { return fBeamline; }
QString getInstitute() { return fInstitute; }
QString getFileFormat() { return fFileFormat; }
QString getMsrDefaultFilePath() { return fMsrDefaultFilePath; }
bool getShowMlog() { return fShowMlog; }
protected:
void setExecPath(const QString str) { fExecPath = str; }
void setDefaultSavePath(const QString str) { fDefaultSavePath = str; }
void setBeamline(const QString str) { fBeamline = str; }
void setInstitute(const QString str) { fInstitute = str; }
void setFileFormat(const QString str) { fFileFormat = str; }
void setMsrDefaultFilePath(const QString str) { fMsrDefaultFilePath = str; }
void setShowMlog(const bool flag) { fShowMlog = flag; }
private:
friend class PAdminXMLParser;
QString fExecPath;
QString fDefaultSavePath;
QString fBeamline;
QString fInstitute;
QString fFileFormat;
QString fMsrDefaultFilePath;
bool fShowMlog;
};
#endif // _PADMIN_H_

View File

@ -0,0 +1,110 @@
/****************************************************************************
PFitOutputHandler.cpp
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
$Id$
*****************************************************************************/
/***************************************************************************
* Copyright (C) 2009 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "PFitOutputHandler.h"
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
PFitOutputHandler::PFitOutputHandler(QValueVector<QString> &cmd)
{
if (cmd.empty())
return;
// Layout
vbox = new QVBox( this );
vbox->resize(800, 500);
output = new QTextEdit( vbox );
output->setMinimumSize(800, 455);
output->setReadOnly(true);
quitButton = new QPushButton( tr("Done"), vbox );
connect( quitButton, SIGNAL(clicked()),
this, SLOT(accept()) );
resize( 800, 500 );
// QProcess related code
proc = new QProcess( this );
// Set up the command and arguments.
for (unsigned int i=0; i<cmd.size(); i++)
proc->addArgument(cmd[i]);
connect( proc, SIGNAL(readyReadStdout()), this, SLOT(readFromStdOut()) );
connect( proc, SIGNAL(readyReadStderr()), this, SLOT(readFromStdErr()) );
// connect( proc, SIGNAL(processExited()), this, SLOT(scrollToTop()) );
if ( !proc->start() ) {
// error handling
QMessageBox::critical( 0,
tr("Fatal error"),
tr("Could not start the musrfit command: "+cmd[0]),
tr("Quit") );
done(0);
}
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PFitOutputHandler::readFromStdOut()
{
// Read and process the data.
// Bear in mind that the data might be output in chunks.
output->append( proc->readStdout() );
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PFitOutputHandler::readFromStdErr()
{
// Read and process the data.
// Bear in mind that the data might be output in chunks.
output->append( proc->readStderr() );
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
/*
void PFitOutputHandler::scrollToTop()
{
output->setContentsPos( 0, 0 );
}
*/
//----------------------------------------------------------------------------------------------------
// END
//----------------------------------------------------------------------------------------------------

View File

@ -0,0 +1,66 @@
/****************************************************************************
PFitOutputHandler.h
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
$Id$
*****************************************************************************/
/***************************************************************************
* Copyright (C) 2009 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef _PFITOUTPUTHANDLER_H_
#define _PFITOUTPUTHANDLER_H_
#include <qobject.h>
#include <qprocess.h>
#include <qdialog.h>
#include <qvbox.h>
#include <qtextedit.h>
#include <qpushbutton.h>
#include <qmessagebox.h>
#include <qvaluevector.h>
#include <stdlib.h>
class PFitOutputHandler : public QDialog
{
Q_OBJECT
public:
PFitOutputHandler(QValueVector<QString> &cmd);
~PFitOutputHandler() {}
public slots:
void readFromStdOut();
void readFromStdErr();
// void scrollToTop();
private:
QProcess *proc;
QVBox *vbox;
QTextEdit *output;
QPushButton *quitButton;
};
#endif // _PFITOUTPUTHANDLER_H_

View File

@ -0,0 +1,101 @@
/****************************************************************************
PGetDefaultDialog.cpp
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
$Id$
*****************************************************************************/
/***************************************************************************
* Copyright (C) 2009 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include <qobject.h>
#include <qcombobox.h>
#include "PGetDefaultDialog.h"
#define INSTITUTE_PSI 0
#define INSTITUTE_RAL 1
#define INSTITUTE_TRIUMF 2
#define INSTITUTE_JPARC 3
#define FILE_FORMAT_NEXUS 0
#define FILE_FORMAT_ROOT_NPP 1
#define FILE_FORMAT_ROOT_PPC 2
#define FILE_FORMAT_PSIBIN 3
#define FILE_FORMAT_MUD 4
#define FILE_FORMAT_WKM 5
#define FILE_FORMAT_ASCII 6
#define FILE_FORMAT_DB 7
//---------------------------------------------------------------------------
/**
* <p>
*/
PGetDefaultDialog::PGetDefaultDialog(QWidget *parent, const char *name,
bool modal, WFlags f) :
PGetDefaultDialogBase(parent, name, modal, f)
{
fInstitute = fInstitute_comboBox->currentText();
fFileFormat = fFileFormat_comboBox->currentText();
}
//---------------------------------------------------------------------------
/**
* <p>
*/
void PGetDefaultDialog::runFileNameChanged(const QString &text)
{
fRunFileName = text;
}
//---------------------------------------------------------------------------
/**
* <p>
*/
void PGetDefaultDialog::beamlineChanged(const QString &text)
{
fBeamline = text;
}
//---------------------------------------------------------------------------
/**
* <p>
*/
void PGetDefaultDialog::instituteChanged(const QString &text)
{
fInstitute = text;
}
//---------------------------------------------------------------------------
/**
* <p>
*/
void PGetDefaultDialog::fileFormatChanged(const QString &text)
{
fFileFormat = text;
}
//---------------------------------------------------------------------------
// END
//---------------------------------------------------------------------------

View File

@ -0,0 +1,67 @@
/****************************************************************************
PGetDefaultDialog.h
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
$Id$
*****************************************************************************/
/***************************************************************************
* Copyright (C) 2009 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef _PGETDEFAULTDIALOG_H_
#define _PGETDEFAULTDIALOG_H_
#include <qstring.h>
#include <qwidget.h>
#include "forms/PGetDefaultDialogBase.h"
class PGetDefaultDialog : public PGetDefaultDialogBase
{
Q_OBJECT
public:
PGetDefaultDialog(QWidget *parent = 0, const char *name = 0,
bool modal = TRUE, WFlags f = 0);
virtual ~PGetDefaultDialog() {}
virtual const QString getRunFileName() const { return fRunFileName; }
virtual const QString getBeamline() const { return fBeamline; }
virtual const QString getInstitute() const { return fInstitute; }
virtual const QString getFileFormat() const { return fFileFormat; }
private:
QString fRunFileName;
QString fBeamline;
QString fInstitute;
QString fFileFormat;
private slots:
void runFileNameChanged(const QString&);
void beamlineChanged(const QString&);
void instituteChanged(const QString&);
void fileFormatChanged(const QString&);
};
#endif // _PGETDEFAULTDIALOG_H_

844
src/musrgui/PTextEdit.cpp Normal file
View File

@ -0,0 +1,844 @@
/****************************************************************************
PTextEdit.cpp
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
$Id$
*****************************************************************************/
/***************************************************************************
* Copyright (C) 2009 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include <qtextedit.h>
#include <qaction.h>
#include <qmenubar.h>
#include <qpopupmenu.h>
#include <qtoolbar.h>
#include <qtabwidget.h>
#include <qapplication.h>
#include <qfontdatabase.h>
#include <qcombobox.h>
#include <qlineedit.h>
#include <qfileinfo.h>
#include <qfile.h>
#include <qfiledialog.h>
#include <qprinter.h>
#include <qpaintdevicemetrics.h>
#include <qsimplerichtext.h>
#include <qcolordialog.h>
#include <qpainter.h>
#include <qmessagebox.h>
#include <qdialog.h>
#include <qvaluevector.h>
#include "PTextEdit.h"
#include "PAdmin.h"
#include "PFitOutputHandler.h"
#include "PGetDefaultDialog.h"
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
PTextEdit::PTextEdit( QWidget *parent, const char *name )
: QMainWindow( parent, name )
{
fAdmin = new PAdmin();
fShowMlog = true;
setupFileActions();
setupEditActions();
setupTextActions();
setupMusrActions();
setupHelpActions();
fTabWidget = new QTabWidget( this );
setCentralWidget( fTabWidget );
textFamily("Courier");
textSize("11"); // 11pt
if ( qApp->argc() != 1 ) {
for ( int i = 1; i < qApp->argc(); ++i )
load( qApp->argv()[ i ] );
} else {
fileNew();
}
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::setupFileActions()
{
QToolBar *tb = new QToolBar( this );
tb->setLabel( "File Actions" );
QPopupMenu *menu = new QPopupMenu( this );
menuBar()->insertItem( tr( "&File" ), menu );
QAction *a;
a = new QAction( QPixmap::fromMimeSource( "filenew.xpm" ), tr( "&New..." ), CTRL + Key_N, this, "fileNew" );
connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) );
a->addTo( tb );
a->addTo( menu );
a = new QAction( QPixmap::fromMimeSource( "fileopen.xpm" ), tr( "&Open..." ), CTRL + Key_O, this, "fileOpen" );
connect( a, SIGNAL( activated() ), this, SLOT( fileOpen() ) );
a->addTo( tb );
a->addTo( menu );
menu->insertSeparator();
a = new QAction( QPixmap::fromMimeSource( "filesave.xpm" ), tr( "&Save..." ), CTRL + Key_S, this, "fileSave" );
connect( a, SIGNAL( activated() ), this, SLOT( fileSave() ) );
a->addTo( tb );
a->addTo( menu );
a = new QAction( tr( "Save &As..." ), 0, this, "fileSaveAs" );
connect( a, SIGNAL( activated() ), this, SLOT( fileSaveAs() ) );
a->addTo( menu );
menu->insertSeparator();
a = new QAction( QPixmap::fromMimeSource( "fileprint.xpm" ), tr( "&Print..." ), CTRL + Key_P, this, "filePrint" );
connect( a, SIGNAL( activated() ), this, SLOT( filePrint() ) );
a->addTo( tb );
a->addTo( menu );
a = new QAction( tr( "&Close" ), CTRL + Key_W, this, "fileClose" );
connect( a, SIGNAL( activated() ), this, SLOT( fileClose() ) );
a->addTo( menu );
a = new QAction( tr( "E&xit" ), CTRL + Key_Q, this, "fileExit" );
connect( a, SIGNAL( activated() ), this, SLOT( fileExit() ) );
a->addTo( menu );
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::setupEditActions()
{
QToolBar *tb = new QToolBar( this );
tb->setLabel( "Edit Actions" );
QPopupMenu *menu = new QPopupMenu( this );
menuBar()->insertItem( tr( "&Edit" ), menu );
QAction *a;
a = new QAction( QPixmap::fromMimeSource( "editundo.xpm" ), tr( "&Undo" ), CTRL + Key_Z, this, "editUndo" );
connect( a, SIGNAL( activated() ), this, SLOT( editUndo() ) );
a->addTo( tb );
a->addTo( menu );
a = new QAction( QPixmap::fromMimeSource( "editredo.xpm" ), tr( "&Redo" ), CTRL + Key_Y, this, "editRedo" );
connect( a, SIGNAL( activated() ), this, SLOT( editRedo() ) );
a->addTo( tb );
a->addTo( menu );
menu->insertSeparator();
a = new QAction( tr( "Select &All" ), CTRL + Key_A, this, "editSelectAll" );
connect( a, SIGNAL( activated() ), this, SLOT( editSelectAll() ) );
a->addTo( menu );
menu->insertSeparator();
a = new QAction( QPixmap::fromMimeSource( "editcopy.xpm" ), tr( "&Copy" ), CTRL + Key_C, this, "editCopy" );
connect( a, SIGNAL( activated() ), this, SLOT( editCopy() ) );
a->addTo( tb );
a->addTo( menu );
a = new QAction( QPixmap::fromMimeSource( "editcut.xpm" ), tr( "Cu&t" ), CTRL + Key_X, this, "editCut" );
connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) );
a->addTo( tb );
a->addTo( menu );
a = new QAction( QPixmap::fromMimeSource( "editpaste.xpm" ), tr( "&Paste" ), CTRL + Key_V, this, "editPaste" );
connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) );
a->addTo( tb );
a->addTo( menu );
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::setupTextActions()
{
QToolBar *tb = new QToolBar( this );
tb->setLabel( "Format Actions" );
fComboFont = new QComboBox( TRUE, tb );
QFontDatabase db;
fComboFont->insertStringList( db.families() );
connect( fComboFont, SIGNAL( activated( const QString & ) ),
this, SLOT( textFamily( const QString & ) ) );
fComboFont->lineEdit()->setText( "Courier" );
fComboSize = new QComboBox( TRUE, tb );
QValueList<int> sizes = db.standardSizes();
QValueList<int>::Iterator it = sizes.begin();
for ( ; it != sizes.end(); ++it )
fComboSize->insertItem( QString::number( *it ) );
connect( fComboSize, SIGNAL( activated( const QString & ) ),
this, SLOT( textSize( const QString & ) ) );
fComboSize->lineEdit()->setText( "11" ); // 11pt font size
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::setupMusrActions()
{
QToolBar *tb = new QToolBar( this );
tb->setLabel( "Musr Actions" );
QPopupMenu *menu = new QPopupMenu( this );
menuBar()->insertItem( tr( "&MusrFit" ), menu );
QAction *a;
a = new QAction( QPixmap::fromMimeSource( "musrasym.xpm" ), tr( "&Asymetry Default" ), CTRL + SHIFT + Key_A, this, "musrGetAsymetryDefault" );
connect( a, SIGNAL( activated() ), this, SLOT( musrGetAsymetryDefault() ) );
a->addTo( tb );
a->addTo( menu );
a = new QAction( QPixmap::fromMimeSource( "musrsinglehisto.xpm" ), tr( "Single &Histo Default" ), CTRL + SHIFT + Key_H, this, "musrGetSinglHistoDefault" );
connect( a, SIGNAL( activated() ), this, SLOT( musrGetSingleHistoDefault() ) );
a->addTo( tb );
a->addTo( menu );
a = new QAction( QPixmap::fromMimeSource( "musrcalcchisq.xpm" ), tr( "Calc Chisq" ), CTRL + SHIFT + Key_C, this, "cacluates for the given parameters chiSq/maxLH" );
connect( a, SIGNAL( activated() ), this, SLOT( musrCalcChisq() ) );
a->addTo( tb );
a->addTo( menu );
a = new QAction( QPixmap::fromMimeSource( "musrfit.xpm" ), tr( "&Fit" ), CTRL + SHIFT + Key_F, this, "musrFit" );
connect( a, SIGNAL( activated() ), this, SLOT( musrFit() ) );
a->addTo( tb );
a->addTo( menu );
a = new QAction( QPixmap::fromMimeSource( "musrview.xpm" ), tr( "&View" ), CTRL + SHIFT + Key_V, this, "musrView" );
connect( a, SIGNAL( activated() ), this, SLOT( musrView() ) );
a->addTo( tb );
a->addTo( menu );
a = new QAction( QPixmap::fromMimeSource( "musrt0.xpm" ), tr( "&T0" ), 0, this, "musrT0" );
connect( a, SIGNAL( activated() ), this, SLOT( musrT0() ) );
a->addTo( tb );
a->addTo( menu );
a = new QAction( QPixmap::fromMimeSource( "musrprefs.xpm" ), tr( "&Preferences" ), 0, this, "musrPrefs" );
connect( a, SIGNAL( activated() ), this, SLOT( musrPrefs() ) );
a->addTo( tb );
a->addTo( menu );
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::setupHelpActions()
{
QPopupMenu *menu = new QPopupMenu( this );
menuBar()->insertItem( tr( "&Help" ), menu);
QAction *a;
a = new QAction(tr( "Contents ..." ), 0, this, "help contents");
connect( a, SIGNAL( activated() ), this, SLOT( helpContents() ));
a->addTo( menu );
a = new QAction(tr( "About ..." ), 0, this, "about");
connect( a, SIGNAL( activated() ), this, SLOT( helpAbout() ));
a->addTo( menu );
a = new QAction(tr( "About Qt..." ), 0, this, "about Qt");
connect( a, SIGNAL( activated() ), this, SLOT( helpAboutQt() ));
a->addTo( menu );
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::load( const QString &f )
{
if ( !QFile::exists( f ) )
return;
QTextEdit *edit = new QTextEdit( fTabWidget );
edit->setTextFormat( PlainText );
edit->setFamily("Courier");
edit->setPointSize(11); // 11pt
edit->setFont(QFont("Courier", 11));
fTabWidget->addTab( edit, QFileInfo( f ).fileName() );
QFile file( f );
if ( !file.open( IO_ReadOnly ) )
return;
QTextStream ts( &file );
QString txt = ts.read();
edit->setText( txt );
doConnections( edit );
fTabWidget->showPage( edit );
edit->viewport()->setFocus();
fFilenames.replace( edit, f );
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
QTextEdit *PTextEdit::currentEditor() const
{
if ( fTabWidget->currentPage() && fTabWidget->currentPage()->inherits( "QTextEdit" ) )
return (QTextEdit*)fTabWidget->currentPage();
return 0;
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::doConnections( QTextEdit *e )
{
connect( e, SIGNAL( currentFontChanged( const QFont & ) ),
this, SLOT( fontChanged( const QFont & ) ) );
connect( e, SIGNAL( textChanged() ), this, SLOT( textChanged() ));
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::fileNew()
{
QTextEdit *edit = new QTextEdit( fTabWidget );
edit->setTextFormat( PlainText );
edit->setFamily("Courier");
edit->setPointSize(11); // 11pt
doConnections( edit );
fTabWidget->addTab( edit, tr( "noname" ) );
fTabWidget->showPage( edit );
edit->viewport()->setFocus();
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::fileOpen()
{
QStringList flns = QFileDialog::getOpenFileNames(
tr( "msr-Files (*.msr *.mlog);;All Files (*)" ),
tr( fAdmin->getDefaultSavePath() ), this);
QStringList::Iterator it = flns.begin();
while( it != flns.end() ) {
load(*it);
++it;
}
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::fileSave()
{
if ( !currentEditor() )
return;
if ( fFilenames.find( currentEditor() ) == fFilenames.end() ) {
fileSaveAs();
} else {
QFile file( *fFilenames.find( currentEditor() ) );
if ( !file.open( IO_WriteOnly ) )
return;
QTextStream ts( &file );
ts << currentEditor()->text();
// remove trailing '*' modification indicators
QString fln = *fFilenames.find( currentEditor() );
fTabWidget->setTabLabel(fTabWidget->currentPage(), QFileInfo(fln).fileName());
}
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::fileSaveAs()
{
if ( !currentEditor() )
return;
QString fn = QFileDialog::getSaveFileName( QString::null, tr( "msr-Files (*.msr *.mlog);;All Files (*)" ), this );
if ( !fn.isEmpty() ) {
fFilenames.replace( currentEditor(), fn );
fileSave();
fTabWidget->setTabLabel( currentEditor(), QFileInfo( fn ).fileName() );
}
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::filePrint()
{
if ( !currentEditor() )
return;
#ifndef QT_NO_PRINTER
QPrinter printer( QPrinter::HighResolution );
printer.setFullPage(TRUE);
if ( printer.setup( this ) ) {
QPainter p( &printer );
// Check that there is a valid device to print to.
if ( !p.device() ) return;
QPaintDeviceMetrics metrics( p.device() );
int dpiy = metrics.logicalDpiY();
int margin = (int) ( (2/2.54)*dpiy ); // 2 cm margins
QRect view( margin, margin, metrics.width() - 2*margin, metrics.height() - 2*margin );
QFont font( currentEditor()->QWidget::font() );
font.setPointSize( 10 ); // we define 10pt to be a nice base size for printing
QSimpleRichText richText( currentEditor()->text(), font,
currentEditor()->context(),
currentEditor()->styleSheet(),
currentEditor()->mimeSourceFactory(),
view.height() );
richText.setWidth( &p, view.width() );
int page = 1;
do {
richText.draw( &p, margin, margin, view, colorGroup() );
view.moveBy( 0, view.height() );
p.translate( 0 , -view.height() );
p.setFont( font );
p.drawText( view.right() - p.fontMetrics().width( QString::number( page ) ),
view.bottom() + p.fontMetrics().ascent() + 5, QString::number( page ) );
if ( view.top() - margin >= richText.height() )
break;
printer.newPage();
page++;
} while (TRUE);
}
#endif
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::fileClose()
{
// check if the has modification
int idx = fTabWidget->currentPageIndex();
if (fTabWidget->label(idx).find("*")>0) {
int result = QMessageBox::warning(this, "**WARNING**",
"Do you really want to close this file.\nChanges will be lost",
QMessageBox::Yes, QMessageBox::Cancel);
if (result == QMessageBox::Cancel)
return;
}
delete currentEditor();
if ( currentEditor() )
currentEditor()->viewport()->setFocus();
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::fileExit()
{
// check if there are still some modified files open
for (int i=0; i < fTabWidget->count(); i++) {
if (fTabWidget->label(i).find("*") > 0) {
int result = QMessageBox::warning(this, "**WARNING**",
"Do you really want to exit from the applcation.\nChanges will be lost",
QMessageBox::Yes, QMessageBox::Cancel);
if (result == QMessageBox::Cancel)
return;
break;
}
}
qApp->quit();
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::editUndo()
{
if ( !currentEditor() )
return;
currentEditor()->undo();
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::editRedo()
{
if ( !currentEditor() )
return;
currentEditor()->redo();
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::editSelectAll()
{
if ( !currentEditor() )
return;
currentEditor()->selectAll();
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::editCut()
{
if ( !currentEditor() )
return;
currentEditor()->cut();
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::editCopy()
{
if ( !currentEditor() )
return;
currentEditor()->copy();
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::editPaste()
{
if ( !currentEditor() )
return;
currentEditor()->paste();
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::textFamily( const QString &f )
{
if ( !currentEditor() )
return;
currentEditor()->setFamily( f );
currentEditor()->viewport()->setFocus();
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::textSize( const QString &p )
{
if ( !currentEditor() )
return;
currentEditor()->setPointSize( p.toInt() );
currentEditor()->viewport()->setFocus();
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::musrGetAsymetryDefault()
{
QString runFileName, beamline, institute, fileFormat;
PGetDefaultDialog *dlg = new PGetDefaultDialog();
// set defaults
dlg->fBeamline_lineEdit->setText(fAdmin->getBeamline());
for (int i=0; i<dlg->fInstitute_comboBox->count(); i++) {
if (dlg->fInstitute_comboBox->text(i).lower() == fAdmin->getInstitute().lower()) {
dlg->fInstitute_comboBox->setCurrentItem(i);
break;
}
}
for (int i=0; i<dlg->fFileFormat_comboBox->count(); i++) {
if (dlg->fFileFormat_comboBox->text(i).lower() == fAdmin->getFileFormat().lower()) {
dlg->fFileFormat_comboBox->setCurrentItem(i);
break;
}
}
dlg->exec();
if (dlg->result() != QDialog::Accepted) {
delete dlg;
return;
}
runFileName = dlg->getRunFileName();
beamline = dlg->getBeamline();
institute = dlg->getInstitute();
fileFormat = dlg->getFileFormat();
delete dlg;
QFile file(fAdmin->getMsrDefaultFilePath()+"/asymDefault.msr");
if (file.open(IO_ReadOnly)) {
// make a new file tab
fileNew();
QTextStream ts( &file );
QString line;
while ( !ts.atEnd() ) {
line = ts.readLine(); // line of text excluding '\n'
if (line.startsWith("RUN")) {
QString runHeader = "RUN " + runFileName + " " + beamline.upper() + " " + institute + " " + fileFormat.upper() + " (name beamline institute data-file-format)\n";
currentEditor()->insert(runHeader);
} else { // just copy the text
currentEditor()->insert(line+"\n");
}
}
currentEditor()->setContentsPos(0, 0);
file.close();
} else {
QMessageBox::critical(this, "**ERROR**",
"Couldn't find default asymmetry file template :-(",
QMessageBox::Ok, QMessageBox::NoButton);
}
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::musrGetSingleHistoDefault()
{
QString runFileName, beamline, institute, fileFormat;
PGetDefaultDialog *dlg = new PGetDefaultDialog();
// set defaults
dlg->fBeamline_lineEdit->setText(fAdmin->getBeamline());
for (int i=0; i<dlg->fInstitute_comboBox->count(); i++) {
if (dlg->fInstitute_comboBox->text(i).lower() == fAdmin->getInstitute().lower()) {
dlg->fInstitute_comboBox->setCurrentItem(i);
break;
}
}
for (int i=0; i<dlg->fFileFormat_comboBox->count(); i++) {
if (dlg->fFileFormat_comboBox->text(i).lower() == fAdmin->getFileFormat().lower()) {
dlg->fFileFormat_comboBox->setCurrentItem(i);
break;
}
}
dlg->exec();
if (dlg->result() != QDialog::Accepted) {
delete dlg;
return;
}
runFileName = dlg->getRunFileName();
beamline = dlg->getBeamline();
institute = dlg->getInstitute();
fileFormat = dlg->getFileFormat();
delete dlg;
QFile file(fAdmin->getMsrDefaultFilePath()+"/singleHistoDefault.msr");
if (file.open(IO_ReadOnly)) {
// make a new file tab
fileNew();
QTextStream ts( &file );
QString line;
while ( !ts.atEnd() ) {
line = ts.readLine(); // line of text excluding '\n'
if (line.startsWith("RUN")) {
QString runHeader = "RUN " + runFileName + " " + beamline.upper() + " " + institute + " " + fileFormat.upper() + " (name beamline institute data-file-format)\n";
currentEditor()->insert(runHeader);
} else { // just copy the text
currentEditor()->insert(line+"\n");
}
}
currentEditor()->setContentsPos(0, 0);
file.close();
} else {
QMessageBox::critical(this, "**ERROR**",
"Couldn't find default single histo file template :-(",
QMessageBox::Ok, QMessageBox::NoButton);
}
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::musrCalcChisq()
{
if ( !currentEditor() )
return;
QValueVector<QString> cmd;
QString str;
str = fAdmin->getExecPath() + "/musrfit";
cmd.append(str);
cmd.append(*fFilenames.find( currentEditor()));
cmd.append("--chisq-only");
PFitOutputHandler fitOutputHandler(cmd);
fitOutputHandler.setModal(true);
fitOutputHandler.exec();
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::musrFit()
{
if ( !currentEditor() )
return;
QValueVector<QString> cmd;
QString str;
str = fAdmin->getExecPath() + "/musrfit";
cmd.append(str);
cmd.append(*fFilenames.find( currentEditor()));
PFitOutputHandler fitOutputHandler(cmd);
fitOutputHandler.setModal(true);
fitOutputHandler.exec();
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::musrView()
{
if ( !currentEditor() )
return;
QMessageBox::information( this, "musrView",
"Will call musrview.\n"
"NOT IMPLEMENTED YET :-(" );
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::musrT0()
{
if ( !currentEditor() )
return;
QMessageBox::information( this, "musrT0",
"Will call musrt0.\n"
"NOT IMPLEMENTED YET :-(" );
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::musrPrefs()
{
QMessageBox::information( this, "musrPrefs",
"Will call musr related perferences dialog.\n"
"NOT IMPLEMENTED YET :-(" );
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::helpContents()
{
QMessageBox::information( this, "helpContents",
"Will deliver eventually a help content.\n"
"NOT IMPLEMENTED YET :-(" );
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::helpAbout()
{
QMessageBox::about(this, "MuSR-GUI",
"andreas.suter@psi.ch");
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::helpAboutQt()
{
QMessageBox::aboutQt(this);
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::fontChanged( const QFont &f )
{
currentEditor()->selectAll();
fComboFont->lineEdit()->setText( f.family() );
fComboSize->lineEdit()->setText( QString::number( f.pointSize() ) );
currentEditor()->setFamily( f.family() );
currentEditor()->setPointSize( f.pointSize() );
currentEditor()->viewport()->setFocus();
currentEditor()->selectAll(false);
}
//----------------------------------------------------------------------------------------------------
/**
* <p>
*/
void PTextEdit::textChanged()
{
if (!currentEditor())
return;
QString tabLabel = fTabWidget->label(fTabWidget->currentPageIndex());
if ((fTabWidget->label(fTabWidget->currentPageIndex()).find("*") > 0) &&
!currentEditor()->isModified()) {
tabLabel.truncate(tabLabel.length()-1);
fTabWidget->setTabLabel(fTabWidget->currentPage(), tabLabel);
}
if ((fTabWidget->label(fTabWidget->currentPageIndex()).find("*") < 0) &&
currentEditor()->isModified())
fTabWidget->setTabLabel(fTabWidget->currentPage(), tabLabel+"*");
}
//----------------------------------------------------------------------------------------------------
// END
//----------------------------------------------------------------------------------------------------

108
src/musrgui/PTextEdit.h Normal file
View File

@ -0,0 +1,108 @@
/****************************************************************************
PTextEdit.h
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
$Id$
*****************************************************************************/
/***************************************************************************
* Copyright (C) 2009 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef _PTEXTEDIT_H_
#define _PTEXTEDIT_H_
#include <qmainwindow.h>
#include <qmap.h>
class PAdmin;
class QAction;
class QComboBox;
class QTabWidget;
class QTextEdit;
class PTextEdit : public QMainWindow
{
Q_OBJECT
public:
PTextEdit( QWidget *parent = 0, const char *name = 0 );
private:
void setupFileActions();
void setupEditActions();
void setupTextActions();
void setupMusrActions();
void setupHelpActions();
void load( const QString &f );
QTextEdit *currentEditor() const;
void doConnections( QTextEdit *e );
private slots:
void fileNew();
void fileOpen();
void fileSave();
void fileSaveAs();
void filePrint();
void fileClose();
void fileExit();
void editUndo();
void editRedo();
void editSelectAll();
void editCut();
void editCopy();
void editPaste();
void textFamily( const QString &f );
void textSize( const QString &p );
void musrGetAsymetryDefault();
void musrGetSingleHistoDefault();
void musrCalcChisq();
void musrFit();
void musrView();
void musrT0();
void musrPrefs();
void helpContents();
void helpAboutQt();
void helpAbout();
void fontChanged( const QFont &f );
void textChanged();
private:
PAdmin *fAdmin;
bool fShowMlog;
QComboBox *fComboFont;
QComboBox *fComboSize;
QTabWidget *fTabWidget;
QMap<QTextEdit*, QString> fFilenames;
};
#endif // _PTEXTEDIT_H_

View File

@ -0,0 +1,59 @@
TITLE
###############################################################
FITPARAMETER
# Nr. Name Value Step Pos_Error Bounderies
1 alpha 0.989765 1.0 none 0 none
2 asy 0.26 0.1 none 0 0.33
3 phase 8.5 1.0 none
4 field 100.0 0.1 none 0 none
5 rate 0.36 0.02 none 0 100
###############################################################
THEORY
asymmetry 2
TFieldCos 3 fun1 (phase frequency)
simplExpo 5
###############################################################
FUNCTIONS
fun1 = par4 * gamma_mu
###############################################################
RUN lem07_his_0147 MUE4 PSI ROOT-NPP (name beamline institute data-file-format)
fittype 2 (asymmetry fit)
alpha 1
map 0 0 0 0 0 0 0 0 0 0
forward 1
backward 3
background 65000 66500 65000 66500
data 3413 63000 3413 63000
t0 3413 3413
fit 0.00 8.00 (fw bw)
packing 75
###############################################################
COMMANDS
SET BATCH
MINIMIZE
MINOS
SAVE
END RETURN
###############################################################
FOURIER
units Gauss # fourier in field units
fourier_power 12
apodization NONE # NONE, WEAK, MEDIUM, STRONG
plot power
phase 8.5
#range_for_phase_correction 50.0 70.0
range 0.0 200.0
###############################################################
PLOT 2 (asymmetry plot)
runs 1
range 0.00 8.00 -0.30 0.30
###############################################################
STATISTIC --- 2008-04-04 07:44:31
chisq = 569.50931, NDF = 542, chisq/NDF = 1.05075518

36
src/musrgui/editcopy.xpm Normal file
View File

@ -0,0 +1,36 @@
/* XPM */
static char *magick[] = {
/* columns rows colors chars-per-pixel */
"22 22 8 1",
" c Gray100",
". c #8b8bfd",
"X c #3c3cfd",
"o c #000082",
"O c Gray0",
"+ c None",
"@ c Gray0",
"# c Gray0",
/* pixels */
"++++++++++++++++++++++",
"++++++++++++++++++++++",
"OOOOOOOO++++++++++++++",
"O OO+++++++++++++",
"O OOOO O O++++++++++++",
"O O O+++++++++++",
"O OOOO Ooooooooo++++++",
"O Oo oo+++++",
"O OOOOO o OOOO oXo++++",
"O o o.Xo+++",
"O OOOOO o OOOO o .Xo++",
"O o oooooo+",
"O OOOOO o OOOO o+",
"O o o+",
"O OOOOO o OOOOOOOOO o+",
"O o o+",
"OOOOOOOOo OOOOOOOOO o+",
"++++++++o o+",
"++++++++o OOOOOOOOO o+",
"++++++++o o+",
"++++++++ooooooooooooo+",
"++++++++++++++++++++++"
};

32
src/musrgui/editcut.xpm Normal file
View File

@ -0,0 +1,32 @@
/* XPM */
static char *magick[] = {
/* columns rows colors chars-per-pixel */
"22 22 4 1",
" c Gray100",
". c #000082",
"X c Gray0",
"o c None",
/* pixels */
"oooooooooooooooooooooo",
"oooooooXoooooXoooooooo",
"oooooooXoooooXoooooooo",
"oooooooXoooooXoooooooo",
"oooooooXooooXXoooooooo",
"oooooooXXoooXooooooooo",
"ooooooooXoooXooooooooo",
"ooooooooXXoXXooooooooo",
"oooooooooXXXoooooooooo",
"oooooooooXXXoooooooooo",
"ooooooooooXooooooooooo",
"ooooooooo.X.oooooooooo",
"oooooooo..o...oooooooo",
"ooooooo.o.o.oo.ooooooo",
"oooooo.oo.o.ooo.oooooo",
"ooooo.ooo.o.oooo.ooooo",
"oooo.oooo.o.oooo.ooooo",
"oooo.oooo.oo.ooo.ooooo",
"oooo.oooo.oo.oo.oooooo",
"oooo.ooo.oooo..ooooooo",
"ooooo...oooooooooooooo",
"oooooooooooooooooooooo"
};

36
src/musrgui/editpaste.xpm Normal file
View File

@ -0,0 +1,36 @@
/* XPM */
static char *magick[] = {
/* columns rows colors chars-per-pixel */
"22 22 8 1",
" c Gray100",
". c Yellow",
"X c #c6c3c6",
"o c #848284",
"O c #848200",
"+ c #000084",
"@ c Gray0",
"# c None",
/* pixels */
"######################",
"#######@@@@@##########",
"##@@@@@@...@@@@@@#####",
"#@@@@@@.....@@@@@@####",
"@@oOo@@.@@@.@@oOo@@###",
"@oOo@XXXXXXXXX@oOo@###",
"@OoO@XXXXXXXXX@OoO@###",
"@oOo@@@@@@@@@@@oOo@###",
"@OoOoOoOoOoOoOoOoO@###",
"@oOoOoOoOoOoOoOoOo@###",
"@OoOoOoO++++++++++@###",
"@oOoOoOo+ + +###",
"@OoOoOoO+ +++++ + +##",
"@oOoOoOo+ + +#",
"@OoOoOoO+ +++++ + +",
"@oOoOoOo+ ++++++",
"@OoOoOoO+ +++++ +",
"@oOoOoOo+ +",
"@OoOoOoO+ ++++++++++ +",
"#@@@@@@@+ +",
"########++++++++++++++",
"######################"
};

36
src/musrgui/editredo.xpm Normal file
View File

@ -0,0 +1,36 @@
/* XPM */
static char *magick[] = {
/* columns rows colors chars-per-pixel */
"22 22 8 1",
" c Gray100",
". c #848284",
"X c #000084",
"o c Gray0",
"O c None",
"+ c Gray0",
"@ c Gray0",
"# c Gray0",
/* pixels */
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOO.XXXXXXOOOOOOOOOOO",
"OOOXXXXXXXXXXOOOOOOXOO",
"OO.XXOOOOOOXXXXOOOXXOO",
"OOXXOOOOOOOOOXXXOXXXOO",
"OOXXOOOOOOOOOOXXXXXXOO",
"OOXXOOOOOOOOOOOXXXXXOO",
"OOXXOOOOOOOOOOXXXXXXOO",
"OOXXOOOOOOOOOXXXXXXXOO",
"OO.XXOOOOOOOXXXXXXXXOO",
"OOOXXX.OOOOOOOOOOOOOOO",
"OOOOXXXOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO"
};

36
src/musrgui/editundo.xpm Normal file
View File

@ -0,0 +1,36 @@
/* XPM */
static char *magick[] = {
/* columns rows colors chars-per-pixel */
"22 22 8 1",
" c Gray100",
". c #848284",
"X c #000084",
"o c Gray0",
"O c None",
"+ c Gray0",
"@ c Gray0",
"# c Gray0",
/* pixels */
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOXXXXXX.OOOO",
"OOXOOOOOOXXXXXXXXXXOOO",
"OOXXOOOXXXXOOOOOOXX.OO",
"OOXXXOXXXOOOOOOOOOXXOO",
"OOXXXXXXOOOOOOOOOOXXOO",
"OOXXXXXOOOOOOOOOOOXXOO",
"OOXXXXXXOOOOOOOOOOXXOO",
"OOXXXXXXXOOOOOOOOOXXOO",
"OOXXXXXXXXOOOOOOOXX.OO",
"OOOOOOOOOOOOOOO.XXXOOO",
"OOOOOOOOOOOOOOOXXXOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO"
};

36
src/musrgui/filenew.xpm Normal file
View File

@ -0,0 +1,36 @@
/* XPM */
static char *magick[] = {
/* columns rows colors chars-per-pixel */
"22 22 8 1",
" c Gray100",
". c Gray76",
"X c Gray53",
"o c Gray36",
"O c Gray18",
"+ c Gray0",
"@ c None",
"# c Gray0",
/* pixels */
"@@@@@@@@@@@@@@@@@@@@@@",
"@@@@++++++++++@@@@@@@@",
"@@@@+ +O+@@@@@@@",
"@@@@+ +oO+@@@@@@",
"@@@@+ +XoO+@@@@@",
"@@@@+ +.XoO+@@@@",
"@@@@+ + .XoO+@@@",
"@@@@+ +++++++@@@",
"@@@@+ +@@@",
"@@@@+ +@@@",
"@@@@+ +@@@",
"@@@@+ +@@@",
"@@@@+ +@@@",
"@@@@+ +@@@",
"@@@@+ +@@@",
"@@@@+ +@@@",
"@@@@+ +@@@",
"@@@@+ +@@@",
"@@@@+ +@@@",
"@@@@+++++++++++++++@@@",
"@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@"
};

36
src/musrgui/fileopen.xpm Normal file
View File

@ -0,0 +1,36 @@
/* XPM */
static char *magick[] = {
/* columns rows colors chars-per-pixel */
"22 22 8 1",
" c Gray100",
". c Yellow",
"X c #848200",
"o c Gray0",
"O c None",
"+ c Gray0",
"@ c Gray0",
"# c Gray0",
/* pixels */
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOooooOOOOoO",
"OOOOOOOOOOOoOOOOooOooO",
"OOOOOOOOOOOOOOOOOOoooO",
"OOOOOOOOOOOOOOOOOooooO",
"OooooOOOOOOOOOOOoooooO",
"o. . ooooooooooOOOOOOO",
"o . . . . . . oOOOOOOO",
"o. . . . . . .oOOOOOOO",
"o . . . . . . oOOOOOOO",
"o. . . ooooooooooooooo",
"o . . ooXXXXXXXXXXXXoo",
"o. . ooXXXXXXXXXXXXooO",
"o . ooXXXXXXXXXXXXooOO",
"o. ooXXXXXXXXXXXXooOOO",
"o ooXXXXXXXXXXXXooOOOO",
"oooXXXXXXXXXXXXooOOOOO",
"ooXXXXXXXXXXXXooOOOOOO",
"oooooooooooooooOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOO"
};

117
src/musrgui/fileprint.xpm Normal file
View File

@ -0,0 +1,117 @@
/* XPM */
static char *magick[] = {
/* columns rows colors chars-per-pixel */
"22 22 89 1",
" c Gray0",
". c #101008081010",
"X c #101010101010",
"o c #101010101818",
"O c #181810101818",
"+ c #181818181818",
"@ c #181818182121",
"# c #212118182121",
"$ c Gray13",
"% c #212121212929",
"& c #292921212929",
"* c Gray16",
"= c #292929293131",
"- c #313129293131",
"; c #313131313131",
": c #313131313939",
"> c #393931313939",
", c #393939393939",
"< c #393939394242",
"1 c #424239394242",
"2 c Gray26",
"3 c #4a4a4a4a5252",
"4 c #5a5a52525a5a",
"5 c #5a5a5a5a6363",
"6 c #6b6b63636b6b",
"7 c Gray42",
"8 c #6b6b6b6b7373",
"9 c #73736b6b7373",
"0 c #7b7b73737b7b",
"q c #7b7b73738484",
"w c #0808ffff0808",
"e c #2929ffff2929",
"r c #3131ffff3131",
"t c #5a5acece5a5a",
"y c #6b6bffff6363",
"u c #7b7bffff7b7b",
"i c #84847b7b8484",
"p c #84847b7b8c8c",
"a c #8c8c7b7b9494",
"s c #848484848c8c",
"d c #8c8c84848c8c",
"f c Gray55",
"g c #8c8c84849494",
"h c #8c8c8c8c9494",
"j c #94948c8c9494",
"k c #94948c8c9c9c",
"l c Gray58",
"z c #949494949c9c",
"x c #9c9c94949c9c",
"c c Gray61",
"v c #9c9c9494a5a5",
"b c #9c9c9c9ca5a5",
"n c #a5a59c9ca5a5",
"m c #a5a59c9cadad",
"M c #adad9c9cadad",
"N c #a5a5a5a5a5a5",
"B c #a5a5a5a5adad",
"V c #adada5a5adad",
"C c Gray68",
"Z c #adadadadb5b5",
"A c #b5b5adadb5b5",
"S c Gray71",
"D c Gray74",
"F c #9494c6c69494",
"G c #9c9ccecea5a5",
"H c #bdbdd6d6bdbd",
"J c #c0c0c0c0c0c0",
"K c #c6c6c6c6c6c6",
"L c #cecec6c6cece",
"P c #cececececece",
"I c #cecececed6d6",
"U c #d6d6ceced6d6",
"Y c #d6d6cecedede",
"T c Gray84",
"R c #d6d6d6d6dede",
"E c #deded6d6dede",
"W c Gray87",
"Q c #deded6d6e7e7",
"! c #dedededee7e7",
"~ c #d6d6ffffd6d6",
"^ c #e7e7dedee7e7",
"/ c #e7e7e7e7e7e7",
"( c #e7e7e7e7efef",
") c #efefe7e7efef",
"_ c #efefefefefef",
"` c #e7e7ffffe7e7",
"' c Gray97",
"] c Gray100",
"[ c None",
/* pixels */
"[[[[[[SDPPPPKKDDCD[[[[",
"[[[[[[D_/////___WD[[[[",
"[[[[[[DKKKPPKKKKDK[[[[",
"[[[[[[SDDDDSDDSSCD[[[[",
"[[[[[KCKDKKKDDDKS[[[[[",
"[[[[[DDSDDDDDDKKS[[[[[",
"[[[[[DSKDDDDDKDKC[[[[[",
"[[[[[KDDDDDDDDDDS[[[[[",
"[[[[[CP/WWWWWWTWNNZ[[[",
"[[[Dc9STPTPTPTWWj427S[",
"[[Dziq0000000pag8<%@2N",
"[DcE(!ERRRRUYGtFn2##O<",
"Db)]]]]]]]]]~ewePa;@X#",
"V']]]]]]]]]]`yru]Q0@ #",
"BRILITRRW^!E!RHUILhO @",
"jAZVBmBnmmNmnmMvzh6o #",
"jZZmBnnnbnbbbbvxxg6o +",
"lmmnbnbbbvcvxxxvjs6O 3",
"jBnnvcvxvcvxvxzjhd8o+C",
"lsdgfgdhgdhhjhjkhg6+l[",
"S9%@$%&&&=--::>>:-:l[[",
"[[C511,:;;;**%++.2c[[["
};

36
src/musrgui/filesave.xpm Normal file
View File

@ -0,0 +1,36 @@
/* XPM */
static char *magick[] = {
/* columns rows colors chars-per-pixel */
"22 22 8 1",
" c Gray100",
". c #cab5d1",
"X c #c1c1c1",
"o c #848200",
"O c Gray0",
"+ c None",
"@ c Gray0",
"# c Gray0",
/* pixels */
"++++++++++++++++++++++",
"+OOOOOOOOOOOOOOOOOOOO+",
"+OooOXXXXXXXXXXXXOXXO+",
"+OooOXXXXXXXXXXXXOXXO+",
"+OooOXXXXXXXXX.XXOOOO+",
"+OooOXXX..XXXXXXXOooO+",
"+OooOXXX..XXXXXXXOooO+",
"+OooOXXXXXXXXXXXXOooO+",
"+OooOXXXXXXXXXXXXOooO+",
"+OooOXXXXXXXXXXXXOooO+",
"+OooOXXXXXXXXXXXXOooO+",
"+OoooOOOOOOOOOOOOoooO+",
"+OooooooooooooooooooO+",
"+OooooooooooooooooooO+",
"+OoooOOOOOOOOOOOOOooO+",
"+OoooOOOOOOOOOXXXOooO+",
"+OoooOOOOOOOOOXXXOooO+",
"+OoooOOOOOOOOOXXXOooO+",
"+OoooOOOOOOOOOXXXOooO+",
"+OoooOOOOOOOOOXXXOooO+",
"++OOOOOOOOOOOOOOOOOO++",
"++++++++++++++++++++++"
};

View File

@ -0,0 +1,338 @@
<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
<class>PGetDefaultDialogBase</class>
<widget class="QDialog">
<property name="name">
<cstring>PGetDefaultDialogBase</cstring>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>511</width>
<height>222</height>
</rect>
</property>
<property name="caption">
<string>RUN</string>
</property>
<property name="sizeGripEnabled">
<bool>true</bool>
</property>
<widget class="QLabel">
<property name="name">
<cstring>fRunFileName_textLabel</cstring>
</property>
<property name="geometry">
<rect>
<x>20</x>
<y>20</y>
<width>100</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Run File Name</string>
</property>
</widget>
<widget class="QLabel">
<property name="name">
<cstring>fBeamline_textLabel</cstring>
</property>
<property name="geometry">
<rect>
<x>20</x>
<y>60</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Beamline</string>
</property>
</widget>
<widget class="QLabel">
<property name="name">
<cstring>fInstitute_textLabel</cstring>
</property>
<property name="geometry">
<rect>
<x>20</x>
<y>100</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Institute</string>
</property>
</widget>
<widget class="QLabel">
<property name="name">
<cstring>textLabel4</cstring>
</property>
<property name="geometry">
<rect>
<x>20</x>
<y>140</y>
<width>80</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>File Format</string>
</property>
</widget>
<widget class="QLayoutWidget">
<property name="name">
<cstring>Layout1</cstring>
</property>
<property name="geometry">
<rect>
<x>20</x>
<y>180</y>
<width>476</width>
<height>33</height>
</rect>
</property>
<hbox>
<property name="name">
<cstring>unnamed</cstring>
</property>
<property name="margin">
<number>0</number>
</property>
<property name="spacing">
<number>6</number>
</property>
<widget class="QPushButton">
<property name="name">
<cstring>buttonHelp</cstring>
</property>
<property name="text">
<string>&amp;Help</string>
</property>
<property name="accel">
<string>F1</string>
</property>
<property name="autoDefault">
<bool>true</bool>
</property>
</widget>
<spacer>
<property name="name">
<cstring>Horizontal Spacing2</cstring>
</property>
<property name="orientation">
<enum>Horizontal</enum>
</property>
<property name="sizeType">
<enum>Expanding</enum>
</property>
<property name="sizeHint">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
<widget class="QPushButton">
<property name="name">
<cstring>buttonOk</cstring>
</property>
<property name="text">
<string>&amp;OK</string>
</property>
<property name="accel">
<string></string>
</property>
<property name="autoDefault">
<bool>true</bool>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget>
<widget class="QPushButton">
<property name="name">
<cstring>buttonCancel</cstring>
</property>
<property name="text">
<string>&amp;Cancel</string>
</property>
<property name="accel">
<string></string>
</property>
<property name="autoDefault">
<bool>true</bool>
</property>
</widget>
</hbox>
</widget>
<widget class="QLineEdit">
<property name="name">
<cstring>fBeamline_lineEdit</cstring>
</property>
<property name="geometry">
<rect>
<x>130</x>
<y>60</y>
<width>360</width>
<height>24</height>
</rect>
</property>
</widget>
<widget class="QComboBox">
<item>
<property name="text">
<string>NeXuS</string>
</property>
</item>
<item>
<property name="text">
<string>ROOT-NPP</string>
</property>
</item>
<item>
<property name="text">
<string>ROOT-PPC</string>
</property>
</item>
<item>
<property name="text">
<string>PSIBIN</string>
</property>
</item>
<item>
<property name="text">
<string>MUD</string>
</property>
</item>
<item>
<property name="text">
<string>WKM</string>
</property>
</item>
<item>
<property name="text">
<string>ASCII</string>
</property>
</item>
<item>
<property name="text">
<string>DB</string>
</property>
</item>
<property name="name">
<cstring>fFileFormat_comboBox</cstring>
</property>
<property name="geometry">
<rect>
<x>130</x>
<y>140</y>
<width>99</width>
<height>24</height>
</rect>
</property>
</widget>
<widget class="QComboBox">
<item>
<property name="text">
<string>PSI</string>
</property>
</item>
<item>
<property name="text">
<string>RAL</string>
</property>
</item>
<item>
<property name="text">
<string>TRIUMF</string>
</property>
</item>
<item>
<property name="text">
<string>JPARC</string>
</property>
</item>
<property name="name">
<cstring>fInstitute_comboBox</cstring>
</property>
<property name="geometry">
<rect>
<x>130</x>
<y>100</y>
<width>99</width>
<height>24</height>
</rect>
</property>
</widget>
<widget class="QLineEdit">
<property name="name">
<cstring>fRunFileName_lineEdit</cstring>
</property>
<property name="geometry">
<rect>
<x>130</x>
<y>20</y>
<width>360</width>
<height>24</height>
</rect>
</property>
</widget>
</widget>
<connections>
<connection>
<sender>buttonOk</sender>
<signal>clicked()</signal>
<receiver>PGetDefaultDialogBase</receiver>
<slot>accept()</slot>
</connection>
<connection>
<sender>buttonCancel</sender>
<signal>clicked()</signal>
<receiver>PGetDefaultDialogBase</receiver>
<slot>reject()</slot>
</connection>
<connection>
<sender>fRunFileName_lineEdit</sender>
<signal>textChanged(const QString&amp;)</signal>
<receiver>PGetDefaultDialogBase</receiver>
<slot>runFileNameChanged(const QString&amp;)</slot>
</connection>
<connection>
<sender>fBeamline_lineEdit</sender>
<signal>textChanged(const QString&amp;)</signal>
<receiver>PGetDefaultDialogBase</receiver>
<slot>beamlineChanged(const QString&amp;)</slot>
</connection>
<connection>
<sender>fInstitute_comboBox</sender>
<signal>activated(const QString&amp;)</signal>
<receiver>PGetDefaultDialogBase</receiver>
<slot>instituteChanged(const QString&amp;)</slot>
</connection>
<connection>
<sender>fFileFormat_comboBox</sender>
<signal>activated(const QString&amp;)</signal>
<receiver>PGetDefaultDialogBase</receiver>
<slot>fileFormatChanged(const QString&amp;)</slot>
</connection>
</connections>
<tabstops>
<tabstop>fRunFileName_lineEdit</tabstop>
<tabstop>fBeamline_lineEdit</tabstop>
<tabstop>fInstitute_comboBox</tabstop>
<tabstop>fFileFormat_comboBox</tabstop>
<tabstop>buttonOk</tabstop>
<tabstop>buttonCancel</tabstop>
<tabstop>buttonHelp</tabstop>
</tabstops>
<slots>
<slot>runFileNameChanged(const QString&amp;)</slot>
<slot>beamlineChanged(const QString&amp;)</slot>
<slot>instituteChanged(const QString&amp;)</slot>
<slot>fileFormatChanged(const QString&amp;)</slot>
</slots>
<layoutdefaults spacing="6" margin="11"/>
</UI>

49
src/musrgui/main.cpp Normal file
View File

@ -0,0 +1,49 @@
/****************************************************************************
main.cpp
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
$Id$
*****************************************************************************/
/***************************************************************************
* Copyright (C) 2009 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include <qapplication.h>
#include "PTextEdit.h"
#include "PFitOutputHandler.h"
int main( int argc, char ** argv )
{
QApplication a( argc, argv );
PTextEdit * mw = new PTextEdit();
mw->setCaption( "MusrFit Editor" );
mw->resize( 800, 800 );
mw->show();
a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
return a.exec();
}

29
src/musrgui/musrasym.xpm Normal file
View File

@ -0,0 +1,29 @@
/* XPM */
static char * musrasym_xpm[] = {
"22 22 4 1",
" c None",
". c #3D20CF",
"+ c #FF0000",
"@ c #000000",
" ",
" . .. . . . .",
" . . . . . . .. ..",
". . . . . . . .",
". . .. . . . .",
"..... . . . .",
". . . . . . .",
". . .. . . .",
" ",
" ++ ",
"+ + ",
" + ",
" + ",
" + ",
" + ++ ",
" + + + +",
"@@@@@@@+@@@@+@@@@+@@+ ",
" + + ++ ",
" ++ ",
" ",
" ",
" "};

View File

@ -0,0 +1,28 @@
/* XPM */
static char * musrcalcchisq_xpm[] = {
"22 22 3 1",
" c None",
". c #FF0000",
"+ c #000000",
" ... ",
" +... . ",
" .+ ...+. ",
" ... . ... ",
" ... ... ",
" ... ... ",
"+ . . ",
" . ",
" +++ ",
" ++..+ ",
" + ..+ . ",
" .+.+ . ",
"++ + +. + ... ",
"+++ ++ + ...++... ",
" ++ ++ +++++.. ... ",
" +++ ... .+ ",
" ++ . ",
" ++ ...",
" +++ ...",
" ++ + ...",
" ++ +++ . ",
"++ +++ "};

28
src/musrgui/musrfit.xpm Normal file
View File

@ -0,0 +1,28 @@
/* XPM */
static char * musrfit_xpm[] = {
"22 22 3 1",
" c None",
". c #FF0000",
"+ c #000000",
" ... ",
" +... . ",
" .+ ...+. ",
" ... . ... ",
" ... ... ",
" ... ... ",
"+ . .+ ",
" .+ ",
" . ",
" ... ",
" ... . ",
" ...+ . ",
" . + ... ",
" ...++... ",
"++++ + +++++... ... ",
"+ + + ... .+ ",
"+ + + . ",
"++++ + + ...",
"+ + + ...",
"+ + + ...",
"+ + + . ",
" "};

46
src/musrgui/musrgui.pro Normal file
View File

@ -0,0 +1,46 @@
TEMPLATE = app
TARGET = musrgui
target.path = $$(HOME)/analysis/bin
INSTALLS += target
# install path for the XML configuration file
unix: xml.path = $$(HOME)/analysis/bin/
win32: xml.path = $$(HOME)/analysis/bin/
xml.files = musrgui_startup.xml
INSTALLS += xml
CONFIG += qt warn_on debug
HEADERS = PTextEdit.h \
PAdmin.h \
PFitOutputHandler.h \
PGetDefaultDialog.h
SOURCES = PTextEdit.cpp \
PAdmin.cpp \
PFitOutputHandler.cpp \
PGetDefaultDialog.cpp \
main.cpp
FORMS = forms/PGetDefaultDialogBase.ui
IMAGES = editcopy.xpm \
editcut.xpm \
editpaste.xpm \
editredo.xpm \
editundo.xpm \
filenew.xpm \
fileopen.xpm \
fileprint.xpm \
filesave.xpm \
musrasym.xpm \
musrsinglehisto.xpm \
musrcalcchisq.xpm \
musrfit.xpm \
musrview.xpm \
musrt0.xpm \
musrprefs.xpm

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<musrgui_startup xmlns="http://nemu.web.psi.ch/musrgui">
<comment>
$Id$
This is handling default setting parameters for the musrgui.
</comment>
<general>
<exec_path>/home/nemu/analysis/bin</exec_path>
<default_save_path>/mnt/home/nemu/analysis</default_save_path>
<msr_default_file_path>/afs/psi.ch/user/s/suter_a/development/musrgui</msr_default_file_path>
<show_mlog>y</show_mlog>
</general>
<msr_file_defaults>
<beamline>mue4</beamline>
<institute>psi</institute>
<file_format>root-npp</file_format>
<msr_parameters>
<asymmetry>
<fittype>
<required>y</required>
</fittype>
<alpha>
<required>n</required>
</alpha>
<beta>
<required>n</required>
</beta>
</asymmetry>
<single_histo>
</single_histo>
<rrf>
</rrf>
<nonMusr>
</nonMusr>
</msr_parameters>
</msr_file_defaults>
</musrgui_startup>

28
src/musrgui/musrprefs.xpm Normal file
View File

@ -0,0 +1,28 @@
/* XPM */
static char * musrprefs_xpm[] = {
"22 22 3 1",
" c None",
". c #3D20CF",
"+ c #000000",
"... ... ... ... ... ",
". . . . . . . ",
"... ... ... ... ... ",
". . . . . . ",
". . . ... . ... ",
" ",
" + + ",
" + + + ",
"+ ++++ ++ + ",
" + + + + ",
" + + ",
" ",
" + + ",
" + + + ++ ++ + ",
"+ + +++ + + + + + ",
" + + + + ",
" + + ",
" ",
" + + + ",
" + + + + + ",
"+ + +++++++++ + ++ +",
" + ++ ++ + + "};

View File

@ -0,0 +1,29 @@
/* XPM */
static char * musrsinglehisto_xpm[] = {
"22 22 4 1",
" c None",
". c #3D20CF",
"+ c #FF0000",
"@ c #000000",
" ",
". . . .. ..... ... ",
".++ . . . . . . .",
". + . . . . . .",
"..... . .. . . .",
". +. . . . . .",
". . . . . . . .",
". .+. .. . ... ",
"@ + ",
"@ + ",
"@ + ",
"@ ++ ",
"@ + ",
"@ + ",
"@ + ",
"@ + ",
"@ ++ ",
"@ + ",
"@ ++ ",
"@ ++ ",
"@ ++ ",
"@@@@@@@@@@@@@@@@@@@+++"};

28
src/musrgui/musrt0.xpm Normal file
View File

@ -0,0 +1,28 @@
/* XPM */
static char * musrt0_xpm[] = {
"22 22 3 1",
" c None",
". c #3D20CF",
"+ c #000000",
"..... .. ",
" . . . ",
" . . . ",
" . . . ",
" . + . . ++ ",
" . + . .+ ++ ",
" . + .. + + ",
" + + +++ ",
" + + + ",
" + + ++ ",
" + + + ",
" + + + ",
" + + ++ ",
" + + ++++ ",
" + + + ",
" + + ++",
" + + ",
" + + ",
" + + ",
" + ++ + ",
"++ + + ",
" "};

28
src/musrgui/musrview.xpm Normal file
View File

@ -0,0 +1,28 @@
/* XPM */
static char * musrview_xpm[] = {
"22 22 3 1",
" c None",
". c #000000",
"+ c #FF0000",
" .. ... .. ",
" ",
"......................",
" . ",
" . . ... ",
" ++ . ",
" ++ . ..... ",
" + + . ",
" + ... . ..... ",
" + . + . . ",
" +. + . . . ....",
" +. + . . ",
" + . + . . ... . ",
" + . + . . ",
" +. + . . ",
" +. + ... ",
" ++ . ",
" . ",
"......................",
" ",
" ....... .... .... ",
" "};

View File

@ -0,0 +1,60 @@
TITLE
###############################################################
FITPARAMETER
# Nr. Name Value Step Pos_Error Bounderies
1 Asy 0.26 0.01 none 0 0.33
2 Rate 0.36 0.01 none
3 Field 100.0 1.0 none 0 200
4 N0_L 150.0 0.01 none
5 Bkg_L 4.9 0.01 none
6 Phase_L 7.0 1.5 none -50 50
###############################################################
THEORY
asymmetry 1
simplExpo 2 (rate)
TFieldCos map1 fun1 (phase frequency)
###############################################################
FUNCTIONS
fun1 = par3 * gamma_mu
###############################################################
RUN lem07_his_0111 MUE4 PSI ROOT-NPP (name beamline institute data-file-format)
fittype 0 (single histogram fit)
norm 4
backgr.fit 5
lifetimecorrection
map 6 0 0 0 0 0 0 0 0 0
forward 1
data 3413 65000
t0 3413
fit 0.20 8.2
packing 50
###############################################################
COMMANDS
SET BATCH
MINIMIZE
MINOS
SAVE
END RETURN
###############################################################
PLOT 0 (single histo plot)
runs 1
range 0.00 7.00 -0.30 0.30
###############################################################
FOURIER
units Gauss # fourier in field units
fourier_power 12
apodization NONE # NONE, WEAK, MEDIUM, STRONG
plot power
phase 8.5
#range_for_phase_correction 50.0 70.0
range 0.0 200.0
###############################################################
STATISTIC --- 2008-06-09 14:09:39
chisq = 1446.93547, NDF = 1377, chisq/NDF = 1.05078829