maintenance release: pshell import, elog, documentation

* bugfixes in pshell import
* updates to elog interface: templates, login, separate persistent and volatile data
* new header and revision information in documentation
This commit is contained in:
muntwiler_m 2016-06-03 12:06:04 +02:00
parent 724c73ef19
commit 02709fd4df
11 changed files with 740 additions and 233 deletions

20
.gitattributes vendored Normal file
View File

@ -0,0 +1,20 @@
.git* export-ignore
#*.ipf diff=igorpro
# git diff --check should output something useful
*.ipf whitespace=indent-with-non-tab,tabwidth=4
# mark files as binary
# you can also add -delta if you regularly
# commit large files of these types
*.ibw binary
*.xop binary
*.pxp binary
*.pxt binary
*.uxp binary
*.uxt binary
*.ihf binary
*.ifn binary
*.ift binary
# automatic end of line normalization
*.ipf eol=lf

1
.gitignore vendored
View File

@ -4,3 +4,4 @@
*.ipfT* *.ipfT*
doc/html/* doc/html/*
doc/latex/* doc/latex/*

View File

@ -38,7 +38,7 @@ PROJECT_NAME = "PEARL Procedures"
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version
# control system is used. # control system is used.
PROJECT_NUMBER = PROJECT_NUMBER = $(REVISION)
# Using the PROJECT_BRIEF tag one can provide an optional one line description # Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a # for a project that appears at the top of each page and should give viewer a
@ -1647,7 +1647,7 @@ EXTRA_PACKAGES =
# to HTML_HEADER. # to HTML_HEADER.
# This tag requires that the tag GENERATE_LATEX is set to YES. # This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_HEADER = LATEX_HEADER = src/header.tex
# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the # The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
# generated LaTeX document. The footer should contain everything after the last # generated LaTeX document. The footer should contain everything after the last

View File

@ -11,7 +11,7 @@ DOX=doxygen
DOXOPTS= DOXOPTS=
LATEX_DIR=latex LATEX_DIR=latex
REVISION=$(shell git describe --always --tags --dirty --long) REVISION=$(shell git describe --always --tags --dirty --long || echo "unknown, "`date +"%F %T %z"`)
export REVISION export REVISION
all: docs all: docs
@ -19,7 +19,7 @@ all: docs
docs: doxygen pdf docs: doxygen pdf
doxygen: doxygen:
$(DOX) $(DOXOPTS) Doxyfile $(DOX) $(DOXOPTS) config.dox
pdf: doxygen pdf: doxygen
-$(MAKE) -C $(LATEX_DIR) -$(MAKE) -C $(LATEX_DIR)
@ -27,3 +27,4 @@ pdf: doxygen
clean: clean:
-rm latex/* -rm latex/*
-rm html/* -rm html/*

149
doc/src/header.tex Normal file
View File

@ -0,0 +1,149 @@
% Latex header for doxygen 1.8.9.1
%
% To generate this file, call:
% doxygen -w latex header.tex footer.tex doxygen.sty
% and substitute the placeholders:
% $title, $datetime, $date, $doxygenversion, $projectname, $projectnumber, $projectbrief, $projectlogo
% (or diff and merge with previous version)
%
\documentclass[twoside]{book}
% Packages required by doxygen
\usepackage{fixltx2e}
\usepackage{calc}
\usepackage{doxygen}
\usepackage[export]{adjustbox} % also loads graphicx
\usepackage{graphicx}
\usepackage[utf8]{inputenc}
\usepackage{makeidx}
\usepackage{multicol}
\usepackage{multirow}
\PassOptionsToPackage{warn}{textcomp}
\usepackage{textcomp}
\usepackage[nointegrals]{wasysym}
\usepackage[table]{xcolor}
% Font selection
\usepackage[T1]{fontenc}
\usepackage[scaled=.90]{helvet}
\usepackage{courier}
\usepackage{amssymb}
\usepackage{sectsty}
\renewcommand{\familydefault}{\sfdefault}
\allsectionsfont{%
\fontseries{bc}\selectfont%
\color{darkgray}%
}
\renewcommand{\DoxyLabelFont}{%
\fontseries{bc}\selectfont%
\color{darkgray}%
}
\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
% Page & text layout
\usepackage{geometry}
\geometry{%
a4paper,%
top=2.5cm,%
bottom=2.5cm,%
left=2.5cm,%
right=2.5cm%
}
\tolerance=750
\hfuzz=15pt
\hbadness=750
\setlength{\emergencystretch}{15pt}
\setlength{\parindent}{0cm}
\setlength{\parskip}{0.2cm}
\makeatletter
\renewcommand{\paragraph}{%
\@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%
\normalfont\normalsize\bfseries\SS@parafont%
}%
}
\renewcommand{\subparagraph}{%
\@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%
\normalfont\normalsize\bfseries\SS@subparafont%
}%
}
\makeatother
% Headers & footers
\usepackage{fancyhdr}
\pagestyle{fancyplain}
\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}}
\fancyhead[CE]{\fancyplain{}{}}
\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}}
\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}}
\fancyhead[CO]{\fancyplain{}{}}
\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}}
\fancyfoot[LE]{\fancyplain{}{}}
\fancyfoot[CE]{\fancyplain{}{}}
\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize $projectnumber}}
\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize $projectnumber}}
\fancyfoot[CO]{\fancyplain{}{}}
\fancyfoot[RO]{\fancyplain{}{}}
\renewcommand{\footrulewidth}{0.4pt}
\renewcommand{\chaptermark}[1]{%
\markboth{#1}{}%
}
\renewcommand{\sectionmark}[1]{%
\markright{\thesection\ #1}%
}
% Indices & bibliography
\usepackage{natbib}
\usepackage[titles]{tocloft}
\setcounter{tocdepth}{3}
\setcounter{secnumdepth}{5}
\makeindex
% Hyperlinks (required, but should be loaded last)
\usepackage{ifpdf}
\ifpdf
\usepackage[pdftex,pagebackref=true]{hyperref}
\else
\usepackage[ps2pdf,pagebackref=true]{hyperref}
\fi
\hypersetup{%
colorlinks=true,%
linkcolor=blue,%
citecolor=blue,%
unicode%
}
% Custom commands
\newcommand{\clearemptydoublepage}{%
\newpage{\pagestyle{empty}\cleardoublepage}%
}
%===== C O N T E N T S =====
\begin{document}
% Titlepage & ToC
\hypersetup{pageanchor=false,
bookmarks=true,
bookmarksnumbered=true,
pdfencoding=unicode
}
\pagenumbering{roman}
\begin{titlepage}
\vspace*{7cm}
\begin{center}%
{\Large $projectname}\\
\vspace*{1cm}
{\large $projectbrief }\\
\vspace*{0.5cm}
{\small Version $projectnumber}\\
\vspace*{0.5cm}
{\small $datetime}\\
\end{center}
\end{titlepage}
\clearemptydoublepage
\tableofcontents
\clearemptydoublepage
\pagenumbering{arabic}
\hypersetup{pageanchor=true}
%--- Begin generated contents ---

View File

@ -21,7 +21,7 @@ Users of PEARL Procedures are requested to coordinate and share the development
Please read and respect the respective license agreements. Please read and respect the respective license agreements.
\author Matthias Muntwiler, <mailto:matthias.muntwiler@psi.ch> \author Matthias Muntwiler, <mailto:matthias.muntwiler@psi.ch>
\version This documentation is compiled from revision $(REVISION). \version This documentation is compiled from version $(REVISION).
\copyright 2009-2016 by [Paul Scherrer Institut](http://www.psi.ch) \copyright 2009-2016 by [Paul Scherrer Institut](http://www.psi.ch)
\copyright Licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) \copyright Licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0)
*/ */

View File

@ -1893,13 +1893,12 @@ end
/// ///
/// @param x, y projected Cartesian coordinate /// @param x, y projected Cartesian coordinate
/// ///
/// @param projection mapping function from polar to cartesian coordinates /// @param projection mapping function from polar to cartesian coordinates.
/// projections 0-2 have no effect on the azimuthal coordinate.
/// @arg 0 linear /// @arg 0 linear
/// @arg 1 stereographic (default) /// @arg 1 stereographic (default)
/// @arg 2 azimuthal /// @arg 2 azimuthal
/// ///
/// projections 0-2 have no effect on the azimuthal coordinate
///
/// @param zeroAngle zeroAngleWhere parameter of polar graphs /// @param zeroAngle zeroAngleWhere parameter of polar graphs
/// @arg 0 (default) zero is at the 3 o'clock position /// @arg 0 (default) zero is at the 3 o'clock position
/// @arg 180 zero is at the 9 o'clock position /// @arg 180 zero is at the 9 o'clock position

File diff suppressed because it is too large Load Diff

View File

@ -55,10 +55,8 @@ menu "PEARL"
end end
submenu "Services" submenu "Services"
PearlMenuEnableFunc("pearl_elog") + "ELOG Experiments", /Q, pearl_elog("Experiments") PearlMenuEnableFunc("pearl_elog") + "Open ELOG Panel", /Q, pearl_elog("")
help = {"Create entries in ELOG experiments logbook"} help = {"Open an ELOG panel to send entries to an ELOG logbook"}
PearlMenuEnableFunc("pearl_elog") + "ELOG Calculations", /Q, pearl_elog("Calculations")
help = {"Create entries in ELOG calculations logbook"}
end end
submenu "Sample Preparation" submenu "Sample Preparation"

View File

@ -637,6 +637,7 @@ function /s psh5_load_scan_preview(fileID, scanpath, [set_scale])
string datasets = psh5_list_scan_datasets(fileID, scanpath) string datasets = psh5_list_scan_datasets(fileID, scanpath)
string datasetname = "" string datasetname = ""
variable index
// todo: this should be generalized // todo: this should be generalized
if (strsearch(datasets, "ScientaImage", 0) >= 0) if (strsearch(datasets, "ScientaImage", 0) >= 0)
datasetname = "ScientaImage" datasetname = "ScientaImage"
@ -644,17 +645,24 @@ function /s psh5_load_scan_preview(fileID, scanpath, [set_scale])
datasetname = "ScientaSpectrum" datasetname = "ScientaSpectrum"
elseif (strsearch(datasets, "ScientaEnergyDistribution", 0) >= 0) elseif (strsearch(datasets, "ScientaEnergyDistribution", 0) >= 0)
datasetname = "ScientaEnergyDistribution" datasetname = "ScientaEnergyDistribution"
elseif (strsearch(datasets, "ImageEnergyDistribution", 0) >= 0)
datasetname = "ImageEnergyDistribution"
elseif (strsearch(datasets, "Counts", 0) >= 0) elseif (strsearch(datasets, "Counts", 0) >= 0)
datasetname = "Counts" datasetname = "Counts"
elseif (strsearch(datasets, "SampleCurrent", 0) >= 0) elseif (strsearch(datasets, "SampleCurrent", 0) >= 0)
datasetname = "SampleCurrent" datasetname = "SampleCurrent"
else else
datasetname = StringFromList(0, datasets) datasetname = StringFromList(0, datasets)
index = ItemsInList(datasetname, "/") - 1
datasetname = StringFromList(index, datasetname, "/")
endif endif
if (strlen(datasetname) == 0)
return ""
endif
string datasetpath string datasetpath
datasetpath = scanpath + "/" + datasetname datasetpath = scanpath + "/" + datasetname
datasetpath = ReplaceString("//", datasetpath, "/") datasetpath = ReplaceString("//", datasetpath, "/")
STRUCT HDF5DataInfo di // Defined in HDF5 Browser.ipf. STRUCT HDF5DataInfo di // Defined in HDF5 Browser.ipf.
InitHDF5DataInfo(di) InitHDF5DataInfo(di)
variable err = HDF5DatasetInfo(fileID, datasetpath, 0, di) variable err = HDF5DatasetInfo(fileID, datasetpath, 0, di)
@ -667,6 +675,10 @@ function /s psh5_load_scan_preview(fileID, scanpath, [set_scale])
if (di.ndims < 3) if (di.ndims < 3)
HDF5LoadData /O /Q /Z fileID, datasetpath HDF5LoadData /O /Q /Z fileID, datasetpath
dataname = StringFromList(0, S_waveNames) dataname = StringFromList(0, S_waveNames)
wave /z data = $dataname
if (waveexists(data))
ps_set_dimlabels(data)
endif
else else
variable dim2start = 0 variable dim2start = 0
variable dim2count = 1 variable dim2count = 1
@ -1000,10 +1012,12 @@ function ps_set_dimlabels(data)
setdimlabel 0, -1, $kEnergyDimLabel, data setdimlabel 0, -1, $kEnergyDimLabel, data
break break
case "ImageAngleDistribution": case "ImageAngleDistribution":
case "ScientaAngleDistribution":
setdimlabel 0, -1, $kScanDimLabel, data setdimlabel 0, -1, $kScanDimLabel, data
setdimlabel 1, -1, $kAngleDimLabel, data setdimlabel 1, -1, $kAngleDimLabel, data
break break
case "ImageEnergyDistribution": case "ImageEnergyDistribution":
case "ScientaEnergyDistribution":
setdimlabel 0, -1, $kScanDimLabel, data setdimlabel 0, -1, $kScanDimLabel, data
setdimlabel 1, -1, $kEnergyDimLabel, data setdimlabel 1, -1, $kEnergyDimLabel, data
break break