Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Instrument Control
NomadSpecialModules
Commits
d29c60f5
Commit
d29c60f5
authored
Apr 10, 2015
by
Cristina Cocho
Browse files
downgrade of special spectro module
parent
aac5f7b6
Changes
9
Hide whitespace changes
Inline
Side-by-side
src/controllers/lss/d22special/CountWithSpectro.cpp
View file @
d29c60f5
...
...
@@ -134,13 +134,15 @@ void CountWithSpectro::startCount() {
void
CountWithSpectro
::
startSpectro
()
{
for
(
int
i
=
0
;
i
<
numSpectroMeasures
();
i
++
)
{
if
(
commandStatus
.
isRunning
())
{
spectro
->
startCommand
();
spectro
->
startCommand
();
int32
ySize
=
spectro
->
yData
.
getSize
();
//be careful, maybe the driver gives us a different size
float64
*
tempYData
=
spectro
->
yData
();
for
(
int32
j
=
0
;
j
<
ySize
;
j
++
)
{
m_totalYData
[
ySize
*
i
+
j
]
=
tempYData
[
j
];
int32
ySize
=
spectro
->
yData
.
getSize
();
//be careful, maybe the driver gives us a different size
float64
*
tempYData
=
spectro
->
yData
();
for
(
int32
j
=
0
;
j
<
ySize
;
j
++
)
{
m_totalYData
[
ySize
*
i
+
j
]
=
tempYData
[
j
];
}
}
}
}
...
...
src/controllers/lss/d22special/D22SampleSequencer.cpp
View file @
d29c60f5
...
...
@@ -25,7 +25,7 @@ namespace d22special {
const
string
D22SampleSequencer
::
TYPE
=
"d22_sample_sequencer"
;
D22SampleSequencer
::
D22SampleSequencer
(
const
std
::
string
&
name
)
:
d22
::
SampleSequencer
(
name
)
{
::
SampleSequencer
(
name
,
""
)
{
registerFunction
(
TYPE
);
setFamily
(
family
::
SAMPLE_ENVIRONMENT
);
...
...
@@ -42,82 +42,173 @@ D22SampleSequencer::~D22SampleSequencer() {
void
D22SampleSequencer
::
postConfiguration
()
{
SampleSequencer
::
postConfiguration
();
//Set up measuring mode in spectro controller
// spectroController->mode = QE65000Controller::SEQUENCE;
registerUpdater
(
sampleChanger
->
slot
,
&
D22SampleSequencer
::
updateActualSlot
,
this
);
registerUpdater
(
count
->
statusMessage
,
&
D22SampleSequencer
::
updateStatusMessage
,
this
);
registerUpdater
(
count
->
numor
,
&
D22SampleSequencer
::
updateNumor
,
this
);
registerUpdater
(
spectroController
->
integrationTime
,
&
D22SampleSequencer
::
updateIntegrationTime
,
this
);
registerUpdater
(
spectroController
->
scansToAverage
,
&
D22SampleSequencer
::
updateScansToAverage
,
this
);
}
void
D22SampleSequencer
::
updateActualSlot
()
{
spectroController
->
setPlotName
(
sampleChanger
->
slot
());
actualSlotNumber
=
sampleChanger
->
slot
();
}
void
D22SampleSequencer
::
execute
(
const
string
&
command
,
bool
blocking
,
bool
logging
)
{
//necessary?
spectroController
->
mode
=
QE65000Controller
::
SEQUENCE
;
void
D22
SampleSequencer
::
updateStatusMessage
()
{
std
::
string
countStatus
=
count
->
statusMessage
();
if
(
co
untStatus
==
"Idle"
)
{
getSpectro
();
SampleSequencer
::
execute
(
command
,
blocking
,
logging
);
//Once the last count is done force to do another spectro measure
if
(
co
mmand
==
START_COMMAND
)
{
doLastMeasure
();
}
spectroController
->
mode
=
QE65000Controller
::
ALONE
;
}
void
D22SampleSequencer
::
updateNumor
()
{
lastNumor
=
count
->
numor
();
}
void
D22SampleSequencer
::
updateProperty
(
ChangeAspect
*
aChangeAspect
)
{
void
D22SampleSequencer
::
updateIntegrationTime
()
{
integrationTime
=
spectroController
->
integrationTime
();
}
SampleSequencer
::
updateProgress
(
aChangeAspect
);
void
D22SampleSequencer
::
updateScansToAverage
()
{
scansToAverage
=
spectroController
->
scansToAverage
();
}
string
propertyName
=
aChangeAspect
->
getStringParam
();
if
(
propertyName
==
"actual_cha"
)
{
int32
actualSlot
=
any_cast
<
int32
>
(
m_sampleChanger
->
getValue
(
propertyName
));
spectroController
->
setPlotName
(
actualSlot
);
actualSlotNumber
=
actualSlot
;
}
else
if
(
propertyName
==
"status_message"
)
{
std
::
string
countStatus
=
any_cast
<
std
::
string
>
(
m_Count
->
getValue
(
propertyName
));
if
(
countStatus
==
"Idle"
)
{
getSpectro
();
}
}
else
if
(
propertyName
==
"numor"
)
{
lastNumor
=
any_cast
<
int32
>
(
m_Count
->
getValue
(
propertyName
));
}
void
D22SampleSequencer
::
start
()
{
commandStatus
.
setRunning
();
spectroController
->
mode
=
QE65000Controller
::
SEQUENCE
;
d22
::
SampleSequencer
::
start
();
//Once the last count is done force to do another spectro measure
doLastMeasure
();
commandStatus
.
setIdle
();
spectroController
->
mode
=
QE65000Controller
::
ALONE
;
}
void
D22SampleSequencer
::
stop
()
{
commandStatus
.
setWarning
();
d22
::
SampleSequencer
::
stop
();
void
D22SampleSequencer
::
refreshSetValue
(
string
propertyName
,
const
boost
::
any
aValue
)
throw
(
CannotSetValue
)
{
SampleSequencer
::
refreshSetValue
(
propertyName
,
aValue
);
}
void
D22SampleSequencer
::
getSpectro
()
{
//Check the sampleSequencer is running
if
(
commandStatus
.
isRunning
())
{
spectroController
->
start
();
//Copy data in nexus file (remember it is delayed in one position)
if
(
actualSlotNumber
>
1
&&
commandStatus
.
isRunning
())
{
int32
numor
=
any_cast
<
int32
>
(
count
->
getValue
(
"numor"
));
cout
<<
"appending data to nexus file! (1)"
<<
numor
-
1
<<
endl
;
NexusDataFile
::
appendTo
(
numor
-
1
,
"NxD22SpecialServerFile.xml"
,
"NxD22SpecialClientFile.xml"
);
}
spectroController
->
start
();
//Copy data in nexus file (remember it is delayed in one position)
if
(
actualSlotNumber
>
1
)
{
int32
numor
=
any_cast
<
int32
>
(
m_Count
->
getValue
(
"numor"
));
NexusDataFile
::
appendTo
(
numor
-
1
,
"NxD22SpecialServerFile.xml"
,
"NxD22SpecialClientFile.xml"
);
}
}
void
D22SampleSequencer
::
doLastMeasure
()
{
if
(
commandStatus
.
isRunning
())
{
//Last measure = move sample (using sampleChanger) + get spectro + save data in nexus file
sampleChanger
->
start
();
spectroController
->
start
();
int32
numor
=
any_cast
<
int32
>
(
count
->
getValue
(
"numor"
));
cout
<<
"appending data to nexus file! (2) "
<<
numor
<<
endl
;
NexusDataFile
::
appendTo
(
numor
,
"NxD22SpecialServerFile.xml"
,
"NxD22SpecialClientFile.xml"
);
// cout << "adding new data (theoretically) in data file: " << numor << " value of last numor: " << lastNumor << endl;
}
//Last measure = move sample (using sampleChanger) + get spectro + save data in nexus file
Sender
<
ClientCommand
>::
begin
();
Sender
<
ClientCommand
>::
post
(
ClientCommand
(
m_sampleChanger
,
START_COMMAND
));
Sender
<
ClientCommand
>::
endIf
();
spectroController
->
start
();
int32
numor
=
any_cast
<
int32
>
(
m_Count
->
getValue
(
"numor"
));
NexusDataFile
::
appendTo
(
numor
,
"NxD22SpecialServerFile.xml"
,
"NxD22SpecialClientFile.xml"
);
// cout << "adding new data (theoretically) in data file: " << numor << " value of last numor: " << lastNumor << endl;
}
}
/*
void D22SampleSequencer::postConfiguration() {
SampleSequencer::postConfiguration();
//Set up measuring mode in spectro controller
// spectroController->mode = QE65000Controller::SEQUENCE;
registerUpdater(sampleChanger->slot, &D22SampleSequencer::updateActualSlot, this);
registerUpdater(count->statusMessage, &D22SampleSequencer::updateStatusMessage, this);
registerUpdater(count->numor, &D22SampleSequencer::updateNumor, this);
registerUpdater(spectroController->integrationTime, &D22SampleSequencer::updateIntegrationTime, this);
registerUpdater(spectroController->scansToAverage, &D22SampleSequencer::updateScansToAverage, this);
}
void D22SampleSequencer::updateActualSlot() {
spectroController->setPlotName(sampleChanger->slot());
actualSlotNumber = sampleChanger->slot();
}
void D22SampleSequencer::updateStatusMessage() {
std::string countStatus = count->statusMessage();
if (countStatus == "Idle") {
getSpectro();
}
}
void D22SampleSequencer::updateNumor() {
lastNumor = count->numor();
}
void D22SampleSequencer::updateIntegrationTime() {
integrationTime = spectroController->integrationTime();
}
void D22SampleSequencer::updateScansToAverage() {
scansToAverage = spectroController->scansToAverage();
}
void D22SampleSequencer::start() {
commandStatus.setRunning();
spectroController->mode = QE65000Controller::SEQUENCE;
d22::SampleSequencer::start();
//Once the last count is done force to do another spectro measure
doLastMeasure();
commandStatus.setIdle();
spectroController->mode = QE65000Controller::ALONE;
}
void D22SampleSequencer::stop() {
commandStatus.setWarning();
d22::SampleSequencer::stop();
}
void D22SampleSequencer::getSpectro() {
//Check the sampleSequencer is running
if (commandStatus.isRunning()) {
spectroController->start();
//Copy data in nexus file (remember it is delayed in one position)
if (actualSlotNumber > 1 && commandStatus.isRunning()) {
int32 numor = any_cast<int32>(count->getValue("numor"));
cout << "appending data to nexus file! (1)" << numor - 1 << endl;
NexusDataFile::appendTo(numor - 1, "NxD22SpecialServerFile.xml", "NxD22SpecialClientFile.xml");
}
}
}
void D22SampleSequencer::doLastMeasure() {
if (commandStatus.isRunning()) {
//Last measure = move sample (using sampleChanger) + get spectro + save data in nexus file
sampleChanger->start();
spectroController->start();
int32 numor = any_cast<int32>(count->getValue("numor"));
cout << "appending data to nexus file! (2) " << numor << endl;
NexusDataFile::appendTo(numor, "NxD22SpecialServerFile.xml", "NxD22SpecialClientFile.xml");
// cout << "adding new data (theoretically) in data file: " << numor << " value of last numor: " << lastNumor << endl;
}
}
}*/
src/controllers/lss/d22special/D22SampleSequencer.h
View file @
d29c60f5
...
...
@@ -19,15 +19,17 @@
#ifndef IN16BSAMPLESEQUENCER_H_
#define IN16BSAMPLESEQUENCER_H_
#include
"controllers/lss/d22/sampleControl/SampleSequencer.h"
#include
"InstrumentAbstraction/Lss/SampleSequencer.h"
#include
"controllers/spectrometer/QE65000Controller.h"
using
namespace
spectrometer
;
using
namespace
d22
;
//
using namespace d22;
namespace
d22special
{
class
D22SampleSequencer
:
public
d22
::
SampleSequencer
{
class
D22SampleSequencer
:
public
::
SampleSequencer
{
public:
...
...
@@ -45,14 +47,23 @@ public:
virtual
void
postConfiguration
();
virtual
void
start
();
virtual
void
stop
();
virtual
void
execute
(
const
string
&
command
,
bool
blocking
,
bool
logging
=
false
);
virtual
void
updateProperty
(
ChangeAspect
*
aChangeAspect
);
virtual
void
refreshSetValue
(
string
propertyName
,
const
boost
::
any
aValue
)
throw
(
CannotSetValue
);
//new things here!
// virtual void start();
// virtual void stop();
virtual
void
updateActualSlot
();
virtual
void
updateStatusMessage
();
virtual
void
updateNumor
();
virtual
void
updateIntegrationTime
();
virtual
void
updateScansToAverage
();
//
virtual void updateActualSlot();
//
virtual void updateStatusMessage();
//
virtual void updateNumor();
//
virtual void updateIntegrationTime();
//
virtual void updateScansToAverage();
private:
...
...
src/controllers/lss/d22special/Module.xml
View file @
d29c60f5
<module
name=
"d22special"
>
<include
path=
"$(NOMAD_HOME)/../NomadModules/src"
/>
<include
path=
"$(NOMAD_HOME)/../NomadModules/src"
/>
<controller
class=
"d22special::D22SampleSequencer"
/>
<controller
class=
"d22special::CountWithSpectro"
/>
</module>
\ No newline at end of file
src/controllers/lss/d22special/gui/count_with_spectro/count_with_spectroCommandView.xml
0 → 100644
View file @
d29c60f5
<plugin>
<controller
type=
"count_with_spectro"
role=
"count_with_spectro1"
/>
<text
role=
"count_with_spectro1"
property=
"count_time"
prefix=
"count_with_spectro.countTime"
/>
<radio
role=
"count_with_spectro1"
property=
"time_type"
valuesAndLabels=
"count_with_spectro.h,count_with_spectro.m,count_with_spectro.s"
spaceBefore=
"false"
/>
<text
role=
"count_with_spectro1"
property=
"integration_time"
prefix=
"count_with_spectro.integration_timePrefix"
suffix=
"count_with_spectro.integration_timeSuffix"
/>
<text
role=
"count_with_spectro1"
property=
"num_spectro"
prefix=
"count_with_spectro.numSpectro"
/>
</plugin>
\ No newline at end of file
src/controllers/lss/d22special/gui/count_with_spectro/count_with_spectroPlugin.xml
View file @
d29c60f5
...
...
@@ -2,5 +2,6 @@
<image
key=
"COUNT"
/>
<settings
view=
"count_with_spectroView.xml"
/>
<command
view=
"count_with_spectroCommandView.xml"
/>
</controller_plugin_config>
\ No newline at end of file
src/controllers/lss/d22special/gui/d22_sample_sequencer/d22_sample_sequencer.properties
View file @
d29c60f5
d22_sample_sequencer.changer_numberPrefix
=
Changer #
d22_sample_sequencer.wanted_slotLabel
=
Wanted number of positions
d22_sample_sequencer.maxSlotLabel
=
Max Slots
d22_sample_sequencer.totalTimeLabel
=
Total Time
d22_sample_sequencer.integration_time
=
Time
d22_sample_sequencer.integration_timeSuffix
=
~mus
d22_sample_sequencer.scan_average
=
Scans to average
# Groups
d22_sample_sequencer.acquisitionGroup
=
Acquisition
d22_sample_sequencer.changer_numberPrefix
=
Changer name
d22_sample_sequencer.slotPrefix
=
Slot
d22_sample_sequencer.acquisitionTimePrefix
=
Duration
d22_sample_sequencer.titlePrefix
=
Run Title
d22_sample_sequencer.transmissionPrefix
=
Transmission
d22_sample_sequencer.thicknessPrefix
=
Thickness
d22_sample_sequencer.shortSlotPrefix
=
Slot
d22_sample_sequencer.shortAcquisitionTimePrefix
=
Time
d22_sample_sequencer.shortTitlePrefix
=
Title
d22_sample_sequencer.shortTransmissionPrefix
=
Trans
d22_sample_sequencer.shortThicknessPrefix
=
Thick
d22_sample_sequencer.samplechangerGroup
=
Sample Changer
d22_sample_sequencer.spectroGroup
=
Spectro
d22_sample_sequencer.acquisitionGroup
=
Acquisition
d22_sample_sequencer.slotLabel
=
Used Slots
d22_sample_sequencer.maxSlotLabel
=
Max Slots
d22_sample_sequencer.totalTimeLabel
=
Total Time
d22_sample_sequencer.changer_numberPrefix
=
Changer #
d22_sample_sequencer.wanted_nbpositionLabel
=
Wanted number of positions
# Radio buttons h/m/s
d22_sample_sequencer.hValue
=
h
...
...
@@ -25,4 +31,30 @@ d22_sample_sequencer.timeLabel=Time
d22_sample_sequencer.timeImage
=
MODE_TIME
d22_sample_sequencer.countsImage
=
MODE_COUNTS
d22_sample_sequencer.countsValue
=
counts
d22_sample_sequencer.countsLabel
=
Monitor
\ No newline at end of file
d22_sample_sequencer.countsLabel
=
Monitor
#values and labels
d22_sample_sequencer.changer1Value
=
1
d22_sample_sequencer.changer1Label
=
Changer#1
d22_sample_sequencer.changer2Value
=
2
d22_sample_sequencer.changer2Label
=
Changer#2
d22_sample_sequencer.changer3Value
=
3
d22_sample_sequencer.changer3Label
=
Changer#3
d22_sample_sequencer.changer4Value
=
4
d22_sample_sequencer.changer4Label
=
Changer#4
d22_sample_sequencer.changer5Value
=
5
d22_sample_sequencer.changer5Label
=
Changer#5
d22_sample_sequencer.changer6Value
=
6
d22_sample_sequencer.changer6Label
=
Changer#6
d22_sample_sequencer.changer7Value
=
7
d22_sample_sequencer.changer7Label
=
Changer#7
d22_sample_sequencer.setFollowingValuesMessage
=
Set following values to current one
d22_sample_sequencer.incrementFollowingValuesMessage
=
Autofill following incrementally
d22_sample_sequencer.spectroGroup
=
Spectro
d22_sample_sequencer.integration_time
=
Time
d22_sample_sequencer.integration_timeSuffix
=
~mus
d22_sample_sequencer.scan_average
=
Scans to average
src/controllers/lss/d22special/gui/d22_sample_sequencer/d22_sample_sequencerProperties.xml
View file @
d29c60f5
...
...
@@ -2,58 +2,63 @@
<controller
type=
"d22_sample_sequencer"
>
<property
name=
"max_slot"
type=
"int32"
>
</property>
<property
name=
"mode"
type=
"string"
>
<property
name=
"integration_time"
type=
"int32"
max_length=
"10"
>
</property>
<property
name=
"time_type"
type=
"string"
>
<property
name=
"scan_average"
type=
"int32"
max_length=
"2"
>
<strictly_positive/>
</property>
<property
name=
"total_time"
type=
"float64"
>
<property
name=
"wanted_nbposition"
type=
"Long"
max_length=
"3"
>
<property_range
min_property=
"min_slot"
max_property=
"max_slot"
/>
</property>
<property
name=
"
actual_changer
"
type=
"
int32
"
>
<property
name=
"
n_property
"
type=
"
Long
"
>
</property>
<property
name=
"
wanted_changer
"
type=
"
int32
"
>
<property
name=
"
min_slot
"
type=
"
Long
"
>
</property>
<property
name=
"
changer_num
"
type=
"
int32
"
>
<property
name=
"
max_slot
"
type=
"
Long
"
>
</property>
<property
name=
"
actual_slot
"
type=
"
int32
"
>
<property
name=
"
mode
"
type=
"
String
"
>
</property>
<property
name=
"wanted_slot"
type=
"int32"
max_length=
"3"
>
<property
name=
"changer_number"
type=
"Long"
>
<strictly_positive/>
</property>
<property
name=
"
integration_time"
type=
"int32"
max_length=
"10
"
>
<property
name=
"
time_type"
type=
"String
"
>
</property>
<property
name=
"scan_average"
type=
"int32"
max_length=
"2"
>
<property
name=
"total_time"
type=
"Double"
max_length=
"8"
>
<decimal_format
nb_decimal_places=
"2"
/>
</property>
<dynamic_property
name=
"changer_values"
size_property=
"changer_num"
type=
"int32"
>
</dynamic_property>
<dynamic_property
name=
"changer_labels"
size_property=
"changer_num"
type=
"String"
>
<dynamic_property
name=
"wanted_sample_position"
size_property=
"n_property"
type=
"Long"
max_length=
"3"
>
<property_range
min_property=
"min_slot"
max_property=
"max_slot"
/>
<strictly_positive/>
</dynamic_property>
<dynamic_property
size_property=
"wanted_slot"
name=
"sample_position"
type=
"int32"
max_length=
"3"
>
<dynamic_property
name=
"wanted_acquisition_time"
size_property=
"n_property"
type=
"Double"
max_length=
"8"
>
<decimal_format
nb_decimal_places=
"2"
/>
<positive/>
<!-- Isabelle Grillo said that counting 0 second can be very useful... -->
</dynamic_property>
<dynamic_property
size_property=
"wanted_slot"
name=
"acquisition_time
"
type=
"
float64
"
max_length=
"
8
"
>
<dynamic_property
name=
"wanted_acquisition_title"
size_property=
"n_property
"
type=
"
String
"
max_length=
"
30
"
>
</dynamic_property>
<dynamic_property
size_property=
"wanted_slot"
name=
"transmission"
type=
"float64"
max_length=
"6"
>
<dynamic_property
name=
"thickness"
size_property=
"n_property"
type=
"Double"
max_length=
"6"
>
<decimal_format
nb_decimal_places=
"2"
/>
<strictly_positive/>
</dynamic_property>
<dynamic_property
size_property=
"wanted_slot"
name=
"thickness"
type=
"float64"
max_length=
"6"
>
<dynamic_property
name=
"transmission"
size_property=
"n_property"
type=
"Double"
max_length=
"6"
>
<decimal_format
nb_decimal_places=
"2"
/>
</dynamic_property>
<dynamic_property
size_property=
"wanted_slot"
name=
"acquisition_title"
type=
"string"
max_length=
"30
"
>
<dynamic_property
name=
"show"
type=
"Boolean
"
>
</dynamic_property>
</controller>
src/controllers/lss/d22special/gui/d22_sample_sequencer/d22_sample_sequencerView.xml
View file @
d29c60f5
<plugin>
<controller
type=
"d22_sample_sequencer"
role=
"d22_sample_sequencer1"
/>
<controller
type=
"d22_sample_sequencer"
role=
"d22_sample_sequencer1"
/>
<property
role=
"d22_sample_sequencer1"
property=
"min_slot"
save_value=
"true"
/>
<property
role=
"d22_sample_sequencer1"
property=
"max_slot"
save_value=
"true"
/>
<group
title=
"d22_sample_sequencer.acquisitionGroup"
>
<image_button
role=
"d22_sample_sequencer1"
property=
"mode"
valuesAndImages=
"d22_sample_sequencer.time,d22_sample_sequencer.counts"
/>
<property_switcher
role=
"d22_sample_sequencer1"
property=
"mode"
switcher_key=
"acquisitionModeSwitcher"
/>
<image_button
role=
"d22_sample_sequencer1"
property=
"mode"
valuesAndImages=
"d22_sample_sequencer.time,d22_sample_sequencer.counts"
/>
<property_switcher
role=
"d22_sample_sequencer1"
property=
"mode"
switcher_key=
"acquisitionModeSwitcher"
/>
<switchable_composite
switch_values=
"time"
switcher_key=
"acquisitionModeSwitcher"
>
<radio
role=
"d22_sample_sequencer1"
property=
"time_type"
valuesAndLabels=
"d22_sample_sequencer.h,d22_sample_sequencer.m,d22_sample_sequencer.s"
spaceBefore=
"false"
/>
<radio
role=
"d22_sample_sequencer1"
property=
"time_type"
valuesAndLabels=
"d22_sample_sequencer.h,d22_sample_sequencer.m,d22_sample_sequencer.s"
spaceBefore=
"false"
/>
</switchable_composite>
</group>
<newLine
/>
<newLine/>
<group
title=
"d22_sample_sequencer.samplechangerGroup"
>
<
property_
combo
role=
"d22_sample_sequencer1"
property=
"
wanted_
changer"
prefix=
"d22_sample_sequencer.changer_numberPrefix"
/>
<label
role=
"d22_sample_sequencer1"
prefix=
"d22_sample_sequencer.maxSlotLabel"
property=
"max_slot"
/>
<newLine
/>
<text
role=
"d22_sample_sequencer1"
prefix=
"d22_sample_sequencer.wanted_
slot
Label"
property=
"wanted_
slot"
/>
<combo
role=
"d22_sample_sequencer1"
property=
"changer
_number"
valuesAndLabels=
"d22_sample_sequencer.changer1,d22_sample_sequencer.changer2,d22_sample_sequencer.changer3,d22_sample_sequencer.changer4,d22_sample_sequencer.changer5,d22_sample_sequencer.changer6,d22_sample_sequencer.changer7
"
prefix=
"d22_sample_sequencer.changer_numberPrefix"
key=
"changerNumberCombo"
/>
<label
role=
"d22_sample_sequencer1"
prefix=
"d22_sample_sequencer.maxSlotLabel"
property=
"max_slot"
save_value=
"true"
/>
<newLine/>
<text
role=
"d22_sample_sequencer1"
prefix=
"d22_sample_sequencer.wanted_
nbposition
Label"
property=
"wanted_
nbposition"
/>
</group>
<group
title=
"d22_sample_sequencer.spectroGroup"
>
<text
role=
"d22_sample_sequencer1"
prefix=
"d22_sample_sequencer.integration_time"
property=
"integration_time"
suffix=
"d22_sample_sequencer.integration_timeSuffix"
/>
<text
role=
"d22_sample_sequencer1"
prefix=
"d22_sample_sequencer.scan_average"
property=
"scan_average"
/>
<text
role=
"d22_sample_sequencer1"
prefix=
"d22_sample_sequencer.integration_time"
property=
"integration_time"
suffix=
"d22_sample_sequencer.integration_timeSuffix"
/>
<text
role=
"d22_sample_sequencer1"
prefix=
"d22_sample_sequencer.scan_average"
property=
"scan_average"
/>
</group>
<newLine
/>
<newLine/>
<table_composite
nbColumns=
"10"
border=
"true"
>
<simple_label
prefix=
"Slot"
font_size=
"10"
font_style=
"BOLD"
horizontal_span=
"2"
hAlignment=
"center"
/>
<simple_label
prefix=
"Duration"
font_size=
"10"
font_style=
"BOLD"
horizontal_span=
"2"
hAlignment=
"center"
/>
<simple_label
prefix=
"Run Title"
font_size=
"10"
font_style=
"BOLD"
horizontal_span=
"2"
hAlignment=
"center"
/>
<simple_label
prefix=
"Transmission"
font_size=
"10"
font_style=
"BOLD"
horizontal_span=
"2"
hAlignment=
"center"
/>
<simple_label
prefix=
"thickness"
font_size=
"10"
font_style=
"BOLD"
horizontal_span=
"2"
hAlignment=
"center"
/>
<dynamic_composite
role=
"d22_sample_sequencer1"
properties=
"sample_position,acquisition_time,transmission,thickness,acquisition_title,copyPositionButton,copyTimeButton,copyTitleButton,copyTransmissionButton,copyThicknessButton"
>
<simple_image
key=
"copyPositionButton"
prefix=
"ARROW_DOWN"
height=
"20"
/>
<text
role=
"d22_sample_sequencer1"
property=
"sample_position"
font_size=
"10"
/>
<simple_image
key=
"copyTimeButton"
prefix=
"ARROW_DOWN"
height=
"20"
/>
<text
role=
"d22_sample_sequencer1"
property=
"acquisition_time"
font_size=
"10"
/>
<simple_image
key=
"copyTitleButton"
prefix=
"ARROW_DOWN"
height=
"20"
/>
<text
role=
"d22_sample_sequencer1"
property=
"acquisition_title"
font_size=
"10"
/>
<simple_image
key=
"copyTransmissionButton"
prefix=
"ARROW_DOWN"
height=
"20"
/>
<text
role=
"d22_sample_sequencer1"
property=
"transmission"
font_size=
"10"
/>
<simple_image
key=
"copyThicknessButton"
prefix=
"ARROW_DOWN"
height=
"20"
/>
<text
role=
"d22_sample_sequencer1"
property=
"thickness"
font_size=
"10"
/>
</dynamic_composite>
<simple_label
prefix=
"d22_sample_sequencer.slotPrefix"
font_size=
"10"
font_style=
"BOLD"
horizontal_span=
"2"
hAlignment=
"center"
/>
<simple_label
prefix=
"d22_sample_sequencer.acquisitionTimePrefix"
font_size=
"10"
font_style=
"BOLD"
horizontal_span=
"2"
hAlignment=
"center"
/>
<simple_label
prefix=
"d22_sample_sequencer.titlePrefix"
font_size=
"10"
font_style=
"BOLD"
horizontal_span=
"2"
hAlignment=
"center"
/>
<simple_label
prefix=
"d22_sample_sequencer.transmissionPrefix"
font_size=
"10"
font_style=
"BOLD"
horizontal_span=
"2"
hAlignment=
"center"
/>
<simple_label
prefix=
"d22_sample_sequencer.thicknessPrefix"
font_size=
"10"
font_style=
"BOLD"
horizontal_span=
"2"
hAlignment=
"center"
/>
<dynamic_composite
role=
"d22_sample_sequencer1"
properties=
"wanted_sample_position,wanted_acquisition_time,wanted_acquisition_title,transmission,thickness,show,copyPositionButton,copyTimeButton,copyTitleButton,copyTransmissionButton,copyThicknessButton,title"
>
<property_switcher
role=
"d22_sample_sequencer1"
property=
"show"
switcher_key=
"show"
/>
<switchable_composite
switcher_key=
"show"
switch_values=
"true"
>
<simple_image
key=
"copyPositionButton"
prefix=
"ARROW_DOWN"
height=
"10"
/>
</switchable_composite>
<switchable_composite
switcher_key=
"show"
switch_values=
"true"
>
<text
role=
"d22_sample_sequencer1"
property=
"wanted_sample_position"
font_size=
"10"
/>
</switchable_composite>
<switchable_composite
switcher_key=
"show"
switch_values=
"true"
>
<simple_image
key=
"copyTimeButton"
prefix=
"ARROW_DOWN"
height=
"10"
/>
</switchable_composite>
<switchable_composite
switcher_key=
"show"
switch_values=
"true"
>
<text
role=
"d22_sample_sequencer1"
property=
"wanted_acquisition_time"
font_size=
"10"
/>
</switchable_composite>
<switchable_composite
switcher_key=
"show"
switch_values=
"true"
>
<simple_image
key=
"copyTitleButton"
prefix=
"ARROW_DOWN"
height=
"10"
/>
</switchable_composite>
<switchable_composite
switcher_key=
"show"
switch_values=
"true"
>
<text
role=
"d22_sample_sequencer1"
property=
"wanted_acquisition_title"
font_size=
"10"
key=
"title"
/>
</switchable_composite>
<switchable_composite
switcher_key=
"show"
switch_values=
"true"
>
<simple_image
key=
"copyTransmissionButton"
prefix=
"ARROW_DOWN"
height=
"10"
/>
</switchable_composite>