diff --git a/andorApp/op/bob/autoconvert/Andor.bob b/andorApp/op/bob/autoconvert/Andor.bob
new file mode 100644
index 0000000..2bf75dc
--- /dev/null
+++ b/andorApp/op/bob/autoconvert/Andor.bob
@@ -0,0 +1,2607 @@
+
+
+ Andor
+ 443
+ 51
+ 1070
+ 850
+
+
+
+
+ false
+ 5
+
+ rectangle #6
+ 4
+ 1070
+ 25
+
+
+
+
+
+
+
+
+
+
+ text #9
+ Andor Detector Control - $(P)$(R)
+ 5
+ 1070
+ 25
+
+
+
+
+
+
+
+
+ 1
+
+
+ composite #12
+ ADSetup.bob
+ 5
+ 35
+ 350
+ 340
+
+
+ composite #14
+ ADPlugins.bob
+ 715
+ 35
+ 350
+ 80
+
+
+ rectangle #16
+ 473
+ 37
+ 107
+ 21
+
+
+
+
+
+
+
+
+
+
+ rectangle #19
+ 360
+ 35
+ 350
+ 215
+ 1
+
+
+
+
+
+
+
+
+ true
+
+
+ text #22
+ Shutter
+ 490
+ 38
+ 70
+
+
+
+
+
+
+
+
+ 1
+
+
+ text #25
+ Open/Close
+ 426
+ 170
+
+
+
+
+ 2
+
+
+ message button #28
+
+
+ $(P)$(R)ShutterControl
+ 1
+ Write
+
+
+ $(P)$(R)ShutterControl
+ Open
+ 533
+ 170
+ 60
+ 20
+
+
+
+
+
+
+ message button #31
+
+
+ $(P)$(R)ShutterControl
+ 0
+ Write
+
+
+ $(P)$(R)ShutterControl
+ Close
+ 600
+ 170
+ 60
+ 20
+
+
+
+
+
+
+ text #34
+ Status: Det.
+ 366
+ 145
+ 120
+
+
+
+
+ 2
+
+
+ text update #37
+ $(P)$(R)ShutterStatus_RBV
+ 492
+ 146
+ 60
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ 1
+
+
+ text entry #41
+ $(P)$(R)ShutterOpenDelay
+ 492
+ 195
+ 60
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text #45
+ Delay: Open
+ 375
+ 195
+ 110
+
+
+
+
+ 2
+
+
+ text #48
+ Close
+ 575
+ 195
+ 50
+
+
+
+
+ 2
+
+
+ text entry #51
+ $(P)$(R)ShutterCloseDelay
+ 632
+ 195
+ 60
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ related display #55
+
+
+ ADEpicsShutter.opi
+ tab
+
+
+
+ 565
+ 223
+ 70
+ 20
+
+
+
+
+
+
+ text #58
+ EPICS shutter setup
+ 366
+ 223
+ 190
+
+
+
+
+ 2
+
+
+ text #61
+ EPICS
+ 575
+ 145
+ 50
+
+
+
+
+ 2
+
+
+ text update #64
+ $(P)$(R)ShutterStatusEPICS_RBV
+ 632
+ 146
+ 60
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ 1
+
+
+ text #68
+ Andor Shutter Mode
+ 379
+ 95
+ 180
+
+
+
+
+ 2
+
+
+ menu #71
+ $(P)$(R)AndorShutterMode
+ 565
+ 95
+ 120
+ 20
+
+
+
+
+ false
+
+
+ text #74
+ External shutter
+ 399
+ 120
+ 160
+
+
+
+
+ 2
+
+
+ menu #77
+ $(P)$(R)AndorShutterExTTL
+ 565
+ 120
+ 120
+ 20
+
+
+
+
+ false
+
+
+ text #80
+ Shutter Type
+ 439
+ 70
+ 120
+
+
+
+
+ 2
+
+
+ menu #83
+ $(P)$(R)ShutterMode
+ 565
+ 70
+ 120
+ 20
+
+
+
+
+ false
+
+
+ rectangle #86
+ 360
+ 255
+ 350
+ 550
+ 1
+
+
+
+
+
+
+
+
+ true
+
+
+ rectangle #89
+ 487
+ 257
+ 105
+ 21
+
+
+
+
+
+
+
+
+
+
+ text #92
+ Collect
+ 510
+ 258
+ 70
+
+
+
+
+
+
+
+
+ 1
+
+
+ text #95
+ Exposure Time
+ 406
+ 279
+ 130
+
+
+
+
+ 2
+
+
+ text entry #98
+ $(P)$(R)AcquireTime
+ 545
+ 279
+ 59
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text update #102
+ $(P)$(R)AcquireTime_RBV
+ 611
+ 280
+ 79
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text #106
+ # Images/Acquis.
+ 376
+ 405
+ 160
+
+
+
+
+ 2
+
+
+ text entry #109
+ $(P)$(R)NumImages
+ 545
+ 405
+ 59
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text update #113
+ $(P)$(R)NumImages_RBV
+ 611
+ 406
+ 79
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text update #117
+ $(P)$(R)NumImagesCounter_RBV
+ 611
+ 431
+ 67
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text #121
+ # Images Complete
+ 434
+ 430
+ 170
+
+
+
+
+ 2
+
+
+ text #124
+ # Accums/Image
+ 396
+ 355
+ 140
+
+
+
+
+ 2
+
+
+ text entry #127
+ $(P)$(R)NumExposures
+ 545
+ 355
+ 59
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text update #131
+ $(P)$(R)NumExposures_RBV
+ 611
+ 356
+ 79
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text update #135
+ $(P)$(R)NumExposuresCounter_RBV
+ 611
+ 381
+ 67
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text #139
+ # Exposures Complete
+ 404
+ 380
+ 200
+
+
+
+
+ 2
+
+
+ text #142
+ Trigger Mode
+ 364
+ 480
+ 120
+
+
+
+
+ 2
+
+
+ menu #145
+ $(P)$(R)TriggerMode
+ 493
+ 480
+ 140
+ 20
+
+
+
+
+ false
+
+
+ text #148
+ Accumulate Period
+ 366
+ 304
+ 170
+
+
+
+
+ 2
+
+
+ text entry #151
+ $(P)$(R)AndorAccumulatePeriod
+ 545
+ 304
+ 59
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text update #155
+ $(P)$(R)AndorAccumulatePeriod_RBV
+ 611
+ 305
+ 79
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text #159
+ Acquire Period
+ 396
+ 329
+ 140
+
+
+
+
+ 2
+
+
+ text entry #162
+ $(P)$(R)AcquirePeriod
+ 545
+ 329
+ 59
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text update #166
+ $(P)$(R)AcquirePeriod_RBV
+ 611
+ 330
+ 79
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text #170
+ Acquire
+ 453
+ 551
+ 70
+
+
+
+
+ 2
+
+
+ text #173
+ Done
+ 573
+ 531
+ 40
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ false
+
+ $(P)$(R)Acquire
+
+
+
+
+ text #177
+ Collecting
+ 544
+ 531
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ false
+
+ $(P)$(R)Acquire
+
+
+
+
+ message button #181
+
+
+ $(P)$(R)Acquire
+ 1
+ Write
+
+
+ $(P)$(R)Acquire
+ Start
+ 530
+ 551
+ 59
+ 20
+
+
+
+
+
+
+ message button #184
+
+
+ $(P)$(R)Acquire
+ 0
+ Write
+
+
+ $(P)$(R)Acquire
+ Stop
+ 597
+ 551
+ 59
+ 20
+
+
+
+
+
+
+ text #187
+ Image Mode
+ 385
+ 455
+
+
+
+
+ 2
+
+
+ menu #190
+ $(P)$(R)ImageMode
+ 494
+ 455
+ 115
+ 20
+
+
+
+
+ false
+
+
+ text update #193
+ $(P)$(R)ImageMode_RBV
+ 615
+ 457
+ 90
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ false
+
+
+ text #197
+ Readout Mode
+ 365
+ 505
+ 120
+
+
+
+
+ 2
+
+
+ menu #200
+ $(P)$(R)AndorReadOutMode
+ 494
+ 505
+ 115
+ 20
+
+
+
+
+ false
+
+
+ text update #203
+ $(P)$(R)AndorReadOutMode_RBV
+ 615
+ 507
+ 90
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ false
+
+
+ text update #207
+ $(P)$(R)DetectorState_RBV
+ 530
+ 651
+ 158
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+
+
+ text #211
+ Detector State
+ 383
+ 651
+ 140
+
+
+
+
+ 2
+
+
+ text update #214
+ $(P)$(R)StatusMessage_RBV
+ 530
+ 679
+ 170
+ 12
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+
+
+ text #218
+ Detector Status
+ 373
+ 676
+ 150
+
+
+
+
+ 2
+
+
+ text update #221
+ $(P)$(R)AndorMessage_RBV
+ 530
+ 704
+ 170
+ 12
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+
+
+ text #225
+ Andor Message
+ 393
+ 701
+ 130
+
+
+
+
+ 2
+
+
+ text entry #228
+ $(P)$(R)ArrayCounter
+ 530
+ 726
+ 60
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text update #232
+ $(P)$(R)ArrayCounter_RBV
+ 596
+ 727
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text #236
+ Image Counter
+ 393
+ 726
+ 130
+
+
+
+
+ 2
+
+
+ text #239
+ Image Rate
+ 423
+ 751
+
+
+
+
+ 2
+
+
+ text update #242
+ $(P)$(R)ArrayRate_RBV
+ 530
+ 752
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text #246
+ Array Callbacks
+ 373
+ 776
+ 150
+
+
+
+
+ 2
+
+
+ menu #249
+ $(P)$(R)ArrayCallbacks
+ 530
+ 776
+ 90
+ 20
+
+
+
+
+ false
+
+
+ text update #252
+ $(P)$(R)ArrayCallbacks_RBV
+ 625
+ 778
+ 79
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ 1
+ false
+
+
+ text #256
+ # Queued arrays
+ 375
+ 575
+ 150
+
+
+
+
+ 2
+
+
+ text update #259
+ $(P)$(R)NumQueuedArrays
+ 530
+ 576
+ 60
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 2
+ false
+
+
+ text #263
+ Wait for plugins
+ 365
+ 600
+ 160
+
+
+
+
+ 2
+
+
+ menu #266
+ $(P)$(R)WaitForPlugins
+ 530
+ 600
+ 80
+ 20
+
+
+
+
+ false
+
+
+ text #269
+ Acquire busy
+ 405
+ 625
+ 120
+
+
+
+
+ 2
+
+
+ text update #272
+ $(P)$(R)AcquireBusy
+ 530
+ 626
+ 160
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+
+
+ composite #276
+ ADAttrFile.bob
+ 715
+ 355
+ 350
+ 110
+
+
+ composite #278
+ 715
+ 225
+ 350
+ 60
+
+ true
+
+ composite #281
+ 122
+ 2
+ 107
+ 21
+
+ true
+
+ rectangle #284
+ 107
+ 21
+
+
+
+
+
+
+
+
+
+
+
+ text #287
+ File
+ 155
+ 2
+ 40
+
+
+
+
+
+
+
+
+ 1
+
+
+ rectangle #290
+ 350
+ 60
+ 1
+
+
+
+
+
+
+
+
+ true
+
+
+ text #293
+ Driver File I/O
+ 13
+ 29
+ 150
+
+
+
+
+ 2
+
+
+ related display #296
+
+
+ NDFile.opi
+ tab
+
+
+
+ 170
+ 29
+ 70
+ 20
+
+
+
+
+
+
+
+ composite #299
+ 715
+ 120
+ 350
+ 100
+
+ true
+
+ rectangle #302
+ 122
+ 2
+ 107
+ 21
+
+
+
+
+
+
+
+
+
+
+ text #305
+ Cooler
+ 145
+ 3
+ 60
+
+
+
+
+
+
+
+
+ 1
+
+
+ rectangle #308
+ 350
+ 100
+ 1
+
+
+
+
+
+
+
+
+ true
+
+
+ text update #311
+ $(P)$(R)TemperatureActual
+ 236
+ 55
+ 61
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ text entry #315
+ $(P)$(R)Temperature
+ 143
+ 54
+ 60
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text #319
+ Temperature
+ 22
+ 54
+ 110
+
+
+
+
+ 2
+
+
+ menu #322
+ $(P)$(R)AndorCooler
+ 143
+ 29
+ 60
+ 20
+
+
+
+
+ false
+
+
+ text #325
+ Cooler
+ 72
+ 29
+ 60
+
+
+
+
+ 2
+
+
+ text update #328
+ $(P)$(R)AndorCooler_RBV
+ 236
+ 30
+ 61
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ 1
+ false
+
+
+ text #332
+ Status
+ 73
+ 79
+ 60
+
+
+
+
+ 2
+
+
+ text update #335
+ $(P)$(R)AndorTempStatus_RBV
+ 143
+ 83
+ 180
+ 12
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+
+
+
+ composite #339
+ 715
+ 290
+ 350
+ 60
+
+ true
+
+ rectangle #342
+ 130
+ 2
+ 90
+ 21
+
+
+
+
+
+
+
+
+
+
+ text #345
+ PAL File
+ 135
+ 2
+ 80
+
+
+
+
+
+
+
+
+ 1
+
+
+ rectangle #348
+ 350
+ 60
+ 1
+
+
+
+
+
+
+
+
+ true
+
+
+ text entry #351
+ $(P)$(R)PALFilePath
+ 60
+ 30
+ 280
+
+
+
+
+
+
+
+
+ 6
+ false
+ false
+
+
+ text #355
+ Path
+ 13
+ 29
+ 40
+
+
+
+
+ 2
+
+
+
+ composite #358
+ ADBuffers.bob
+ 715
+ 470
+ 350
+ 160
+
+
+ composite #360
+ 5
+ 380
+ 350
+ 465
+
+ true
+
+ rectangle #363
+ 122
+ 2
+ 107
+ 21
+
+
+
+
+
+
+
+
+
+
+ rectangle #366
+ 350
+ 465
+ 1
+
+
+
+
+
+
+
+
+ true
+
+
+ text #369
+ Readout
+ 140
+ 3
+ 70
+
+
+
+
+
+
+
+
+ 1
+
+
+ text #372
+ X
+ 168
+ 30
+ 10
+
+
+
+
+ 2
+
+
+ text #375
+ Y
+ 261
+ 30
+ 10
+
+
+
+
+ 2
+
+
+ text #378
+ Image Size (bytes)
+ 29
+ 285
+ 180
+
+
+
+
+ 2
+
+
+ text update #381
+ $(P)$(R)ArraySize_RBV
+ 236
+ 286
+ 61
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text #385
+ Image Size
+ 32
+ 260
+
+
+
+
+ 2
+
+
+ text update #388
+ $(P)$(R)ArraySizeX_RBV
+ 143
+ 261
+ 61
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ text update #392
+ $(P)$(R)ArraySizeY_RBV
+ 236
+ 261
+ 61
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text update #396
+ $(P)$(R)ReverseX_RBV
+ 143
+ 215
+ 61
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ 1
+ false
+
+
+ text update #400
+ $(P)$(R)ReverseY_RBV
+ 236
+ 215
+ 61
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ 1
+ false
+
+
+ text #404
+ Reverse
+ 62
+ 235
+ 70
+
+
+
+
+ 2
+
+
+ menu #407
+ $(P)$(R)ReverseX
+ 143
+ 235
+ 60
+ 20
+
+
+
+
+ false
+
+
+ menu #410
+ $(P)$(R)ReverseY
+ 236
+ 235
+ 60
+ 20
+
+
+
+
+ false
+
+
+ text #413
+ Region Size
+ 22
+ 190
+ 110
+
+
+
+
+ 2
+
+
+ text entry #416
+ $(P)$(R)SizeX
+ 143
+ 190
+ 60
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text entry #420
+ $(P)$(R)SizeY
+ 236
+ 190
+ 60
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text update #424
+ $(P)$(R)SizeX_RBV
+ 143
+ 170
+ 61
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ text update #428
+ $(P)$(R)SizeY_RBV
+ 236
+ 170
+ 61
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ text update #432
+ $(P)$(R)MinX_RBV
+ 143
+ 125
+ 61
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ text entry #436
+ $(P)$(R)MinX
+ 143
+ 145
+ 60
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text entry #440
+ $(P)$(R)MinY
+ 236
+ 145
+ 60
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text update #444
+ $(P)$(R)MinY_RBV
+ 236
+ 125
+ 61
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ text #448
+ Region Start
+ 12
+ 145
+ 120
+
+
+
+
+ 2
+
+
+ text entry #451
+ $(P)$(R)BinX
+ 143
+ 100
+ 60
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text entry #455
+ $(P)$(R)BinY
+ 236
+ 100
+ 60
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text update #459
+ $(P)$(R)BinX_RBV
+ 143
+ 80
+ 61
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ text update #463
+ $(P)$(R)BinY_RBV
+ 236
+ 80
+ 61
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ text #467
+ Binning
+ 62
+ 100
+ 70
+
+
+
+
+ 2
+
+
+ text #470
+ Sensor Size
+ 22
+ 55
+ 110
+
+
+
+
+ 2
+
+
+ text update #473
+ $(P)$(R)MaxSizeX_RBV
+ 143
+ 56
+ 61
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ text update #477
+ $(P)$(R)MaxSizeY_RBV
+ 236
+ 56
+ 61
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ text #481
+ Data Type
+ 42
+ 435
+ 90
+
+
+
+
+ 2
+
+
+ menu #484
+ $(P)$(R)DataType
+ 142
+ 435
+ 20
+
+
+
+
+ false
+
+
+ text update #487
+ $(P)$(R)DataType_RBV
+ 246
+ 436
+ 79
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ false
+
+
+ text update #491
+ $(P)$(R)AndorADCSpeed_RBV
+ 246
+ 411
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ false
+
+
+ menu #495
+ $(P)$(R)AndorADCSpeed
+ 143
+ 411
+ 20
+
+
+
+
+ false
+
+
+ text #498
+ ADC Speed
+ 42
+ 410
+ 90
+
+
+
+
+ 2
+
+
+ text update #501
+ $(P)$(R)AndorPreAmpGain_RBV
+ 236
+ 311
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ false
+
+
+ menu #505
+ $(P)$(R)AndorPreAmpGain
+ 143
+ 311
+ 80
+ 20
+
+
+
+
+ false
+
+
+ text #508
+ Pre-amp Gain
+ 12
+ 310
+ 120
+
+
+
+
+ 2
+
+
+ text update #511
+ $(P)$(R)AndorEMGain_RBV
+ 236
+ 336
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text #515
+ EM Gain
+ 62
+ 335
+ 70
+
+
+
+
+ 2
+
+
+ text update #518
+ $(P)$(R)AndorEMGainMode_RBV
+ 248
+ 361
+ 90
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ false
+
+
+ menu #522
+ $(P)$(R)AndorEMGainMode
+ 143
+ 361
+ 20
+
+
+
+
+ false
+
+
+ text #525
+ EM Gain Mode
+ 12
+ 360
+ 120
+
+
+
+
+ 2
+
+
+ text update #528
+ $(P)$(R)AndorEMGainAdvanced_RBV
+ 246
+ 386
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ false
+
+
+ menu #532
+ $(P)$(R)AndorEMGainAdvanced
+ 143
+ 386
+ 20
+
+
+
+
+ false
+
+
+ text #535
+ EM Gain Adv.
+ 12
+ 385
+ 120
+
+
+
+
+ 2
+
+
+ text entry #538
+ $(P)$(R)AndorEMGain
+ 143
+ 335
+ 80
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+
diff --git a/andorApp/op/bob/autoconvert/Shamrock.bob b/andorApp/op/bob/autoconvert/Shamrock.bob
new file mode 100644
index 0000000..1b0f11d
--- /dev/null
+++ b/andorApp/op/bob/autoconvert/Shamrock.bob
@@ -0,0 +1,1292 @@
+
+
+ Shamrock
+ 156
+ 62
+ 765
+ 400
+
+
+
+
+ false
+ 5
+
+ rectangle #6
+ 4
+ 765
+ 25
+
+
+
+
+
+
+
+
+
+
+ text #9
+ Andor Shamrock Spectrograph Control - $(P)$(R)
+ 5
+ 765
+ 25
+
+
+
+
+
+
+
+
+ 1
+
+
+ rectangle #12
+ 127
+ 37
+ 107
+ 21
+
+
+
+
+
+
+
+
+
+
+ rectangle #15
+ 5
+ 35
+ 350
+ 265
+ 1
+
+
+
+
+
+
+
+
+ true
+
+
+ text #18
+ Grating
+ 145
+ 38
+ 70
+
+
+
+
+
+
+
+
+ 1
+
+
+ text update #21
+ $(P)$(R)Grating_RBV
+ 245
+ 71
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ false
+
+
+ menu #25
+ $(P)$(R)Grating
+ 140
+ 71
+ 20
+
+
+
+
+ false
+
+
+ text #28
+ Grating
+ 65
+ 70
+ 70
+
+
+
+
+ 2
+
+
+ text entry #31
+ $(P)$(R)Wavelength
+ 140
+ 95
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text update #35
+ $(P)$(R)Wavelength_RBV
+ 150
+ 125
+ 79
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ text #39
+ Wavelength
+ 35
+ 95
+
+
+
+
+ 2
+
+
+ rectangle #42
+ 507
+ 37
+ 107
+ 21
+
+
+
+
+
+
+
+
+
+
+ rectangle #45
+ 360
+ 35
+ 400
+ 170
+ 1
+
+
+
+
+
+
+
+
+ true
+
+
+ text #48
+ Slits
+ 535
+ 38
+ 50
+
+
+
+
+
+
+
+
+ 1
+
+
+ text #51
+ Slit
+ 436
+ 70
+ 40
+
+
+
+
+ 2
+
+
+ text #54
+ Input side
+ 399
+ 95
+
+
+
+
+ 2
+
+
+ text #57
+ Input direct
+ 379
+ 120
+ 120
+
+
+
+
+ 2
+
+
+ text update #60
+ $(P)$(R)SlitExists1
+ 506
+ 95
+ 60
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ 1
+
+
+ text update #64
+ $(P)$(R)SlitExists2
+ 505
+ 120
+ 60
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ 1
+
+
+ text update #68
+ $(P)$(R)SlitSize1_RBV
+ 671
+ 95
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text update #72
+ $(P)$(R)SlitSize2_RBV
+ 671
+ 120
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text #76
+ Exists
+ 506
+ 70
+ 60
+
+
+
+
+ 2
+
+
+ text #79
+ Width (um)
+ 596
+ 70
+
+
+
+
+ 2
+
+
+ text entry #82
+ $(P)$(R)SlitSize1
+ 581
+ 95
+ 80
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text entry #86
+ $(P)$(R)SlitSize2
+ 581
+ 120
+ 80
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text #90
+ Output side
+ 389
+ 143
+ 110
+
+
+
+
+ 2
+
+
+ text update #93
+ $(P)$(R)SlitExists3
+ 506
+ 145
+ 60
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ 1
+
+
+ text update #97
+ $(P)$(R)SlitSize3_RBV
+ 671
+ 145
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text entry #101
+ $(P)$(R)SlitSize3
+ 581
+ 145
+ 80
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text #105
+ Output direct
+ 369
+ 170
+ 130
+
+
+
+
+ 2
+
+
+ text update #108
+ $(P)$(R)SlitExists4
+ 506
+ 172
+ 60
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ 1
+
+
+ text update #112
+ $(P)$(R)SlitSize4_RBV
+ 671
+ 172
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ text entry #116
+ $(P)$(R)SlitSize4
+ 581
+ 172
+ 80
+
+
+
+
+
+
+
+
+ 1
+ false
+ false
+
+
+ cartesian plot #120
+ 365
+ 235
+ 390
+ 150
+
+
+ true
+ false
+ 0.0
+ 100.0
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ true
+ false
+ 0.0
+ 100.0
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ $(traces[0].y_pv)
+
+ $(P)$(R)Calibration
+
+ 0
+ 1
+
+
+
+
+ 1
+ 0
+ 0
+ 10
+ true
+
+
+
+
+ rectangle #124
+ 495
+ 212
+ 130
+ 21
+
+
+
+
+
+
+
+
+
+
+ text #127
+ Calibration
+ 505
+ 213
+ 110
+
+
+
+
+
+
+
+
+ 1
+
+
+ rectangle #130
+ 360
+ 210
+ 400
+ 185
+ 1
+
+
+
+
+
+
+
+
+ true
+
+
+ text #133
+ Grating
+ 10
+ 205
+ 70
+
+
+
+
+ 2
+
+
+ text #136
+ 1
+ 40
+ 230
+ 10
+
+
+
+
+ 2
+
+
+ text #139
+ 2
+ 40
+ 255
+ 10
+
+
+
+
+ 2
+
+
+ text #142
+ 3
+ 40
+ 278
+ 10
+
+
+
+
+ 2
+
+
+ text update #145
+ $(P)$(R)GratingExists1
+ 95
+ 230
+ 60
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ 1
+
+
+ text update #149
+ $(P)$(R)GratingExists2
+ 94
+ 255
+ 60
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ 1
+
+
+ text update #153
+ $(P)$(R)GratingExists3
+ 95
+ 280
+ 60
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ 1
+
+
+ text update #157
+ $(P)$(R)MinWavelength1
+ 170
+ 230
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 2
+ false
+
+
+ text update #161
+ $(P)$(R)MaxWavelength1
+ 260
+ 230
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 2
+ false
+
+
+ text update #165
+ $(P)$(R)MinWavelength2
+ 170
+ 255
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 2
+ false
+
+
+ text update #169
+ $(P)$(R)MaxWavelength2
+ 260
+ 255
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 2
+ false
+
+
+ text update #173
+ $(P)$(R)MinWavelength3
+ 170
+ 280
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 2
+ false
+
+
+ text update #177
+ $(P)$(R)MaxWavelength3
+ 260
+ 280
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 2
+ false
+
+
+ text #181
+ Exists
+ 95
+ 205
+ 60
+
+
+
+
+ 2
+
+
+ text #184
+ Min.
+ 207
+ 205
+ 40
+
+
+
+
+ 2
+
+
+ text #187
+ Max.
+ 285
+ 205
+ 40
+
+
+
+
+ 2
+
+
+ text #190
+ Wavelength range
+ 180
+ 180
+ 160
+
+
+
+
+ 2
+
+
+ text #193
+ Center
+ 160
+ 145
+ 60
+
+
+
+
+ 2
+
+
+ text #196
+ Maximum
+ 245
+ 145
+ 70
+
+
+
+
+ 2
+
+
+ text #199
+ Minimum
+ 55
+ 145
+ 70
+
+
+
+
+ 2
+
+
+ text update #202
+ $(P)$(R)MinWavelength
+ 50
+ 125
+ 79
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ text update #206
+ $(P)$(R)MaxWavelength
+ 245
+ 125
+ 79
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ false
+ 1
+ false
+
+
+ rectangle #210
+ 5
+ 305
+ 350
+ 90
+ 1
+
+
+
+
+
+
+
+
+ true
+
+
+ text #213
+ Input
+ 33
+ 349
+ 50
+
+
+
+
+ 2
+
+
+ menu #216
+ $(P)$(R)FlipperMirror1
+ 151
+ 350
+ 20
+
+
+
+
+ false
+
+
+ text update #219
+ $(P)$(R)FlipperMirror1_RBV
+ 257
+ 350
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ false
+
+
+ rectangle #223
+ 91
+ 306
+ 170
+ 21
+
+
+
+
+
+
+
+
+
+
+ text #226
+ Flipper Mirrors
+ 101
+ 306
+ 150
+
+
+
+
+
+
+
+
+ 1
+
+
+ text update #229
+ $(P)$(R)FlipperMirror2_RBV
+ 257
+ 373
+ 80
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ false
+
+
+ menu #233
+ $(P)$(R)FlipperMirror2
+ 152
+ 373
+ 20
+
+
+
+
+ false
+
+
+ text #236
+ Output
+ 23
+ 372
+ 60
+
+
+
+
+ 2
+
+
+ text #239
+ Exists
+ 88
+ 329
+ 60
+
+
+
+
+ 2
+
+
+ text update #242
+ $(P)$(R)FlipperMirrorExists1
+ 88
+ 351
+ 60
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ 1
+
+
+ text update #246
+ $(P)$(R)FlipperMirrorExists2
+ 88
+ 374
+ 60
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+ false
+ 1
+
+
+ text #250
+ Port
+ 171
+ 329
+ 40
+
+
+
+
+ 2
+
+