-
Notifications
You must be signed in to change notification settings - Fork 5
/
wellform.pas
11711 lines (11171 loc) · 507 KB
/
wellform.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
unit WellForm; {© Theo van Soest Delphi: 01/08/2005-29/05/2024 | Lazarus 3.2.0/FPC 3.2.2: 02/10/2022}
{$mode objfpc}{$h+}
{$WARN 6058 off : Call to subroutine "$1" marked as inline is not inlined}
{$I BistroMath_opt.inc}
(*
===========================================================================================
This unit defines the user interface of BistroMath and is original work of Theo van Soest.
Changed versions of this unit are not allowed to be published as "BistroMath".
The new name should be significantly different.
It is published under the GNU Lesser General Public License v3 (LGPL-3.0).
https://tldrlegal.com/license/gnu-lesser-general-public-license-v3-%28lgpl-3%29
The printing fuctionality (form2pdf) is kindly provided by Alan Chamberlain.
https://github.com/alanphys/Form2PDF
===========================================================================================
*)
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, ComCtrls,
Menus, StdCtrls, ActnList, EditBtn, Spin,
{$IFDEF Windows}
htmlhelp,
{$ENDIF}
TAGraph, TASeries, TAFuncSeries, TATransformations, TAAxisSource, SpinEx,
RTTICtrls, LCLType, Grids, ValEdit, LMessages, Buttons, FileIter,
TOconfigStrings, TOnumparser, Wellhofer, PanelElements, TAChartAxisUtils,
TATools;
//Work-around for backward compatibility with for LCL v2.0.10 and below.
//In a testversion of LcL v2.0.12 OnMarkToText was set as deprecated.
//but the object inspector v2.0.10 offers only OnMarkToText and the pre-production version of v2.0.12 only OnGetMarkText.
//Therefore setting this at design time WAS become problematic. Instead this event now is set at runtime in FormCreate.
//The solution below works in Laz v2.0.12, therefore I leave it as is for now. It will change with LcL 2.2
//https://forum.lazarus.freepascal.org/index.php/topic,53455.msg396003.html#msg396003
{$if declared(TChartGetAxisMarkTextEvent)}
{$DEFINE LCL_2-3_Up}
{$endif}
const
NumSpecialModes = 3;
NumSpecialModePar= 6;
EvalDecimals = 3;
CxMaxCol = 1; {panelelements,starting from 0}
CxDefaultRowCnt = 9;
OD2doseTableMax = 13;
FPrectLeft = 20;
FPRectOffset = FPrectLeft+42;
FPrectWidth = 100;
FPrectHalf = FPrectWidth div 2;
FPrectSpacing = 185;
FPtextOffset = 2;
FPdotRadius = 2;
FPreadyColor = clLime;
type
ConvNameItems=(ConvListStart,ConvListXType,ConvListEType,ConvListEnd,
ConvScanType,ConvEMV,ConvEkV,ConvDcm,ConvDmm,
ConvModality,ConvLcm,ConvXcm,ConvYcm,ConvLmm,ConvXmm,ConvYmm,
ConvFtype,ConvDet,ConvSeparator);
ConvNameList = array[ConvNameItems] of String;
ConvItemList = array of ConvNameItems;
PlotItems = (pMeasured,pCalculated,pReference,pBuffer{,pCombined});
ExtSymType = (ExtSymLinacError,ExtSymAreaRatio,ExtSymElevation);
{$IFDEF THREADED}
//http://www.experts-exchange.com/articles/239/Displaying-progress-in-the-main-form-from-a-thread-in-Delphi.html
type
htObjectPlainProc = procedure of object;
{$IFDEF THREAD_PLOT}
htObjectFillProc = procedure(ASeries :PlotItems;
ASource :twcDataSource;
AScaling :twcFloatType;
AnalRange:Boolean=False) of object;
{$ENDIF THREAD_PLOT}
{$IFDEF THREAD_FILES}
htObjectEventProc = procedure(ASender:TObject) of object;
{$ENDIF THREAD_FILES}
THelpPlainThread=class(TThread)
protected
procedure Execute; override;
public
FPlainProc: htObjectPlainProc;
constructor Create(APlainProc :htObjectPlainProc;
FreeWhenDone:Boolean =True); reintroduce;
end;
{$IFDEF THREAD_PLOT}
{12/04/2022 FAnalyse}
THelpFillThread=class(TThread)
protected
procedure Execute; override;
public
FFillProc : htObjectFillProc;
FSeries : PlotItems;
FSource : twcDataSource;
FScaling : twcFloatType;
FAnalyse : Boolean;
constructor Create(AFillProc :htObjectFillProc;
ASeries :PlotItems;
ASource :twcDataSource;
AScaling :twcFloatType;
UseAnalysisRange:Boolean=False;
FreeWhenDone :Boolean=True); reintroduce;
end;
{$ENDIF THREAD_PLOT}
{$IFDEF THREAD_FILES}
THelpEventThread=class(TThread)
protected
procedure Execute; override;
public
FEventProc: htObjectEventProc;
FSender : TObject;
constructor Create(AEventProc :htObjectEventProc;
ASender :TObject;
FreeWhenDone:Boolean =True); reintroduce;
end;
{$ENDIF THREAD_FILES}
{$ENDIF THREADED}
type
AxisMapValue = array[snGT..snAB] of ShortInt; //see AxisRotationMapping, i:(GT,AB) for 0..270 ,c:(GT,AB) for 0..270
ModModeType = (ModMNorm,ModMFilm,ModMBeam);
CxComponents = (CxTitle,CxValue);
CxBlock = array[CxComponents] of TLabel;
CxLine = array[0..CxMaxCol ] of CxBlock;
OD2dose_Rec = record
DCDoseBox : TCheckBox;
DCModalityBox: TComboBox;
DCFilmTypeBox: TComboBox;
DCBgBox : TCheckBox;
DCEdit : TFloatSpinEdit;
end;
{09/06/2016 replaced boolean Active with tmenuitem MenuItem}
SpecModeRec = record
MenuItem: TMenuItem;
Fpar : array[1..NumSpecialModePar] of twcFloatType;
Spar : array[1..NumSpecialModePar] of String;
end;
{===================TAnalyseForm====================
The analyseform is the graphical user interface of BistroMath and handles all user's choices.
A series of instances of the TWellhoferData object ('engines') handle all data input, output and analysis.
22/07/2015
Mayneord-related items added.
FilterWidthItem and NormWidthItem removed form options menu.
01/08/2015
TemprefFile and temprefType removed because of in-memory implementation
04/08/2015
ViewLeftAxisLowZeroItem
05/08/2015
CxLabels CxValues combined in CxResults record
12/08/2015
MeasMaxAsCenterItem added
03/12/2015
Ft_EdgeDetectionGroupBox, EdgeSimoidRadius_mm added
11/12/2015
static LeffSeries and ReffSeries replaced with dynamic InFieldIndicators
added FFFSlopeLines
15/12/2015
added MeasDetectFFFItem
06/01/2016
added FitMubPowerNumEdit
08/01/2016
added FitMubPowerFixedCheckBox
02/02/2016
logics of set/unset temporary reference changed
12/02/2016
preloadstream, preloadtransfer
14/02/2016
replaced tmemorystream with tstringstream
18/03/2016
added ProcessIgnoreTUnameItem
12/05/2016
added MeasPreserveDataItem
15/06/2016
added badpenumbrawidthcm to advanced settings tab
28/06/2016
added SelectedFitCol
05/07/2016
added FFFcenter submenu and related strings
added overloaded versions of SyncSetNormalisation and SyncSetFFFcenter
07/07/2016
added FFFcenterRadius_cm,FFFInFieldOffset_cm
29/07/2016
added MeasFFFpeakIsCenterItem
04/11/2015
added UseDoseConvTab,UseDoseAddButtonClick
08/11/2016
added ReferenceGenericBeamItem
renamed DoseConv|Grid/AddButton/DelButton/EditButton to ModList|Grid/AddButton/DelButton/EditButton
added ModListNormRadioButton,ModListFilmRadioButton,ModListBeamRadioButton
added ReferenceGenericBeamClick,ModListRadioButtonClick,ModMode
05/12/2016
added ProcessSyntheticProfile
25/12/2016
InventoryReader
29/03/2017
SyncSetFFFcenter -> SyncSetFFFpeak
30/03/2017
MeasNormFFFSubMenu,MeasCenterFFFSubMenu
21/06/2017
RefAlignTopforFFF
11/07/2017
Mayneord transform changed from processing item to measurement item
15/12/2017
DefExtSymSubMenu
02/01/2018
PanelElements
18/01/2017
created MeasGenStrategySubMenu, MeasAxisSubMenu, MeasSignalSubMenu
22/01/2018
CxUsedRowMax
24/01/2018
ProcessClearMergeItem
CheckWellhoferReady
01/02/2018
ViewMillimetersItem
29/05/2018
GammaLimitFFF, GammaLimitConventional
31/05/2018
InsertOriginCheckBox
11/06/2018
MeasReNormaliseDataItem
12/10/2018
ViewMeasNormAdjustMode
MeasNormAdjustEdit
MeasNormAdjustFactor
25/10/2018
SpecialModeValues
06/11/2018
MeasGenericToElectronItem
23/11/2018
SmartScaleElectronPDD
25/11/2018
ProcessAutoscalingItem
10/12/2019
ProcessSigmoid2BufferItem
17/12/2019
SimpleModeItem
17/03/2020
RawDataEditor internal as replacement for external editor window
14/04/2020
===Lazarus implementation===
15/04/2020
PlotScanMin added
25/04/2020
ViewAutoUnzoomFFFitem added
08/05/2020
removed PreloadTransferThread
13/05/2020
added AxisAlignSource
30/05/2020
added InventoryPrepareCanvas, OnInventorySelect
31/05/2020
added AxisMarkToText
02/06/2020
added ConfigRepair, WriteMenuShortCuts
03/07/2020
removed SavedIgnoreState
05/07/2020
added FilePrintFormClick,FilePrintAllItem,FilePrintPageItem
12/07/2020
removed EdgeConvRadioInflection, EdgeConvRadioSigmoid50, EdgeSigmoidConvCheckBox, EdgeSigmoidFFFCheckBox
added array EdgeMethodCombo
15/07/2020
removed GammaLimitFFF, GammaLimitConventional
added array
added ViewNoDefaultAnnotationItem
added AppliedEdgeRefNorm
19/07/2020
added MeasDetectSmallFieldItem,MeasCenterSmallSubMenu,MeasNormSmallSubMenu
20/07/2020
added EdgeSmallFieldWidth_cm
21/07/2020
added AxisViewFieldTypeCheckBox
added fcWedge as field type
24/07/2020
added EdgeWedge90ShiftFactor
28/07/2020
added Ft_EdgeMethodCombo,Ft_CoFMethodCombo,Ft_NormMethodCombo,Ft_SymCorrCheckbox
18/08/2020
added EdgeMRlinacTUcsvList
25/08/2020
CxResults as dynamic array for rows
27/08/2020
added Ft_CenterRadiusEdit_cm, removed FFFcenterRadius_cm
29/08/2020
added LabelPlacingActive
01/09/2020
added AliasTabExit and AliasListDrawCell
03/09/2020
added Ft_DynPenumbraWidthLabel,Ft_DynPenumbraCheckbox
08/09/2020
added overloaded variant for Reload and ReadEditor with DoClearScreen option
14/09/2020
added Engines, AddEngine, HistoryListSize_num
16/09/2020
added FileHistoryItem
17/09/2020
added HistoryListFreezeCheckBox
26/09/2020
added PenumbraSigmoids,ViewPenumbraItem
29/09/2020
added TempRefEngine,function PassRefOrg
30/09/2020
Wellhofer2Editor renamed to Engine2Editor with extra options
13/10/2020
added fcElectron as field type
added AutoSetDecPointCheckBox, AutoDecPointList
17/11/2020
added FileMultipleInputItem,UsedDataTopLine
08/12/2020
added ShowLockItemCheckBox
30/01/2021
event DataPlotExtentChanged(Sender: TChart);
21/02/2021
replace AxisMarkToText for deprecated OnMarkToText event with
RightAxisGetMarkText on OnGetMarkText
02/03/2021
added FFFfeatures
03/03/2020
added Ft_DetDiagonalLabel,Ft_DetDiagonalCheckbox, removed MeasDetectDiagItem
07/03/2021
added Nominal_IFA_CheckBox, DefaultMRlinacSSD_cm
15/03/2021
added Ft_Default_SSD_Label, Ft_Default_SSD_cm
removed DefaultMRlinacSSD_cm
added MeasMenuClick(Sender: TObject);
14/05/2021
ViewSwapXXitem -> SwapXXchecbox
added ViewTopModelItem
01/06/2021
added FFFMinFieldSizeLabel,FFFMinFieldSize_cm,MeasGeneric_mm_Item
31/01/2022
Data type changed from Int64 to PtrInt
in function HelpHandler(Command:Word; Data:PtrInt; var CallHelp:Boolean): Boolean;
PtrInt is used in the THelpEvent (forms.pp) and avoids platform dependencies
28/03/2022
Introduced AppliedGammaScope
10/04/2022
added ProcessSetFFFItem, FFFinFileCheckBox
14/10/2022
added MeasCalcPDDfitItem as quick access to PDDfitCheckBox in Settings tab
added FocusPositionTab,FocusPositionPanel
added arrays FP_Center_button and FP_Center_mm
16/10/2022
added FocusPosition_IEC_Convention,FocusPositionDetectorRotates
18/10/2022
added FocusPosition_mapping_Box
24/10/2022
added FocusPositionUseClipBoard,FocusPositionSetupGroupBox,FocusPositionInputGroupBox
28/10/2022
added FP_Results_label,FP_Average_mm
29/10/2022
added FocusPosition_UpperBLD_ident
01/11/2022
added FocusPositionCollimFromName
02/11/2022
added FocusPositionResetButton,FocusPositionResetButtonClick
03/11/2022
added procedure FocusPositionProcessFile
04/11/2022
added FP_Results_Titles,FP_Calc_Dbfso_mm,FP_Calc_Drot_mm
08/11/2022
added FP_BankLevel_Label,FP_BankLevel_mm as array[twcBanks]
14/11/2022
added FocusPositionNamePatternEdit
15/11/2022
added FocusPositionDetSurfaceIsoc,FocusPositionDetectorInIsoc,FocusPositionDetectorOther: TRadioButton
17/11/2022
added ProcessSendToFPItem
18/11/2022
added OffAxisInclusionLabel,OffAxisInclusionRange_cm,FocusPositionDetAutoSet
26/11/2022
added FocusPositionFullScaleLabel,FocusPositionFullScale_mm
28/11/2022
added FocusPositionZeroRotButton,FocusPositionZeroFPButton,FocusPositionZeroClick
09/12/2022
added FP_BankFactor
21/01/2023
added StructuredDataSetsLabel,StructuredDataSetsList,FocusPositionStructuredData
20/02/2023
added GetCpuUsage for StatusBar.Panels[3] and FIdleTimer
}
{=========== TAnalyseForm =====================}
{ TAnalyseForm }
TAnalyseForm = class(TForm)
//menu
MainMenu : TMainMenu;
//-file menu
FileMenu : TMenuItem;
FileOpenItem : TMenuItem; {Ctrl+O} //OnClick = FileOpen
FileOpenTempRefItem : TMenuItem; {Ctrl+Alt+O} //OnClick = FileOpenTempRefClick
FileLoadDataItem : TMenuItem; {Ctrl+L} //OnClick = FileLoadData
FileSaveMeasurementItem : TMenuItem; {Ctrl+S} //OnClick = FileSaveMeasurementAction
FileSaveFilteredItem : TMenuItem; {Ctrl+Alt+S}
FileSaveItem : TMenuItem; {Ctrl+A}
FileIgnoreClipboardItem : TMenuItem; {Ctrl+I} //OnClick = FileIgnoreClipboardClick
FileSaveAsReferenceItem : TMenuItem; //OnClick = FileSaveAsReferenceAction; Tag=4
FileLockCriticalItems : TMenuItem; {Ctrl+Alt+R} //OnClick = OptionModeClick; Tag=4
FileHistoryItem : TMenuItem; {Ctrl+H} //OnClick = HistoryListSizeClick, linked to HistoryListCheckBox
FileExitItem : TMenuItem; {Alt+F4} //OnClick = FileExitAction
FileMultipleInputItem : TMenuItem;
//-processing menu
ProcessingMenu : TMenuItem;
ProcessingDivisor1 : TMenuItem;
ProcessingDivisor2 : TMenuItem;
ProcessingDivisor3 : TMenuItem;
ProcessSetFFFItem : TMenuItem; {Ctrl+F} //OnClick = OnDataRead
ProcessAutoscalingItem : TMenuItem; {none} //OnClick = Reload; Tag=4
ProcessSigmoid2BufferItem : TMenuItem; {Ctrl+B} //OnClick = Reload >wApplySigmoidToBuffer
ProcessReprocessItem : TMenuItem; {Ctrl+R} //OnClick = OnDataRead
ProcessSendToFPItem : TMenuItem; {Shift+Ctrl+R}
ProcessResetFitItem : TMenuItem; {Ctrl+Z} //OnClick = ProcessResetFitClick
ProcessMergeItem : TMenuItem; {Ctrl+Q} //OnClick = OnDataRead
ProcessSetMergeSourceItem : TMenuItem; {Ctrl+Alt+Q} //OnClick = ProcessMergeSourceClick
ProcessClearMergeItem : TMenuItem; {Shift+Ctrl+O} //OnClick = ProcessMergeSourceClick
ProcessMirrorMeasRefItem : TMenuItem; {Ctrl+X} //OnClick = ProcessMirrorMeasRefClick
ProcessSyntheticProfile : TMenuItem; {Shift+Ctrl+F} //OnClick = Reload >wDefaultIgnoreSet
ProcessSetTempRefItem : TMenuItem; {Ctrl+T} //Action = TempRefAction >wCheckRefCurveString
ProcessUnsetTempRefItem : TMenuItem; {Shift+Ctrl+T} //OnClick = ProcessUnsetTempRefClick
ProcessIgnoreTUnameItem : TMenuItem; {Ctrl+U} //OnClick = ProcessUpdateDataRead >wCheckRefCurveString,wCheckRefIgnoreLinac
ProcessCheckTempTypeItem : TMenuItem; {Ctrl+Y} //OnClick = ProcessUpdateDataRead >wCheckRefCurveString
//-view menu
ViewMenu : TMenuItem;
ViewDivisor1 : TMenuItem;
ViewDivisor2 : TMenuItem;
ViewDivisor4 : TMenuItem;
ViewMeasuredItem : TMenuItem; {M} //OnClick = ViewItems
ViewPointsItem : TMenuItem; {P} //OnClick = ViewItems
ViewCalculatedItem : TMenuItem; {C} //OnClick = OnDataRead
ViewReferenceItem : TMenuItem; {R} //OnClick = ViewItems
ViewBufferItem : TMenuItem; {B} //OnClick = ViewItems
ViewIndicatorsItem : TMenuItem; {I} //OnClick = ViewItems
ViewTopModelItem : TMenuItem; {T} //OnClick = ViewItems
ViewPenumbraItem : TMenuItem; {E}
ViewFFFIndicatorsItem : TMenuItem; {F} //OnClick = ViewItems
ViewValuesItem : TMenuItem; {V} //OnClick = ViewItems
ViewHighResValItem : TMenuItem; {H} //OnClick = OnDataRead
ViewMeasNormAdjustMode : TMenuItem; {N}
ViewStandardPanelsetup : TMenuItem; {Ins} //OnClick = SetDefaultPanel
ViewZoomItem : TMenuItem; {Z} //OnClick = ActivateZoom
ViewUnZoomItem : TMenuItem; {U} //OnClick = ActivateUnZoom
ViewAutoUnzoomFFFitem : TMenuItem; {W}
ViewAutoUnzoomPDDitem : TMenuItem; {Y}
ViewLeftAxisLowZeroItem : TMenuItem; {K} //OnClick = ViewItems
ViewRightAxisToGridItem : TMenuItem; {G} //OnClick = RightAxisToGridClick
ViewScaleElectronPDDrange : TMenuItem; {S} //OnClick = SmartScaleElectronPDD
ViewMillimetersItem : TMenuItem; {X} //OnClick = OnDataRead
ViewClearItem : TMenuItem; {End} //OnClick = ClearScreen
ViewBottomAxisAlwaysBlack : TMenuItem; {none} //OnClick = OnDataRead >wUserAxisSign
ViewNoDefaultAnnotationItem : TMenuItem; {O} //OnClick = UImodeChange
//-measurement menu
MeasMenu : TMenuItem; {Shift in use: ',','+','-','.',1,2,3,A,B,C,D,E,G,H,I,L,M,N,O,P,R,S,T,U,W,Y,Z}
MeasDivisor1 : TMenuItem;
MeasDivisor2 : TMenuItem;
MeasDivisor4 : TMenuItem;
MeasDivisor5 : TMenuItem;
MeasSymCorrectItem : TMenuItem; {Shift+S} //OnClick = Reload
MeasMove2OriginItem : TMenuItem; {Shift+O} //OnClick = Reload >wCenterProfiles
MeasMirrorItem : TMenuItem; {Shift+T} //OnClick = ReadEditor
MeasResampleItem : TMenuItem; {Shift+R} //OnClick = Reload
MeasMayneordItem : TMenuItem; {Shift+M} //OnClick = Reload
MeasUserDoseItem : TMenuItem; {Shift+U} //OnClick = OnDataRead >wApplyUserLevel
MeasCalcPDDfitItem : TMenuItem; // linked to PDDfitCheckBox
MeasUsePDDfitModelItem : TMenuItem; {Shift+P} //OnClick = OnDataRead
MeasMirrorToBufferItem : TMenuItem; {Shift+E} //OnClick = ViewItems
MeasLocalPeakItem : TMenuItem; {Shift+L} //OnClick = LocalPeakClick
MeasMoveLeftItem : TMenuItem; {Shift+,} //OnClick = MeasMoveClick
MeasMoveRightItem : TMenuItem; {Shift+.} //OnClick = MeasMoveClick
//--submenu
MeasGenStrategySubMenu : TMenuItem;
MeasBadPenumbraItem : TMenuItem; {Shift+A} //OnClick = Reload
MeasMissingPenumbraItem : TMenuItem; {Shift+I} //OnClick = OnDataRead
MeasZeroStepsItem : TMenuItem; {Shift+Z} //OnClick = OnMenu
MeasGenericToPDDItem : TMenuItem; {Shift+G} //OnClick = Reload >wGenericToPDD
MeasGenericToElectronItem : TMenuItem; {Shift++} //OnClick = Reload
MeasGeneric_mm_Item : TMenuItem; {Shift+-} //OnClick = Reload
MeasPeakFFFSubMenu : TMenuItem;
MeasExtSymSubMenu : TMenuItem;
//--submenu
MeasSSDsubmenu : TMenuItem;
MeasSDD2SSDItem : TMenuItem; {Shift+C} //OnClick = Reload >wScaleSDD2SSD
MeasScale2DefaultSSDitem : TMenuItem; {Shift+H} //OnClick = ReadEditor >wScale2DefaultSSD
//--submenu
MeasSignalSubMenu : TMenuItem;
MeasBackgroundCorrItem : TMenuItem; {Shift+B} //OnClick = Reload
MeasOD2DoseConvItem : TMenuItem; {Shift+N} //OnClick = ReadEditor
MeasIon2DoseItem : TMenuItem; {Shift+Y} //OnClick = Ionisation2DoseClick
MeasReNormaliseDataItem : TMenuItem; {Shift+W} //OnClick = ReadEditor >wRenormaliseData
//--submenu
MeasAxisSubMenu : TMenuItem;
MeasInvertGTitem : TMenuItem; {Shift+1} //OnClick = ReadEditor
MeasInvertABitem : TMenuItem; {Shift+2} //OnClick = ReadEditor
MeasInvertUDitem : TMenuItem; {Shift+3} //OnClick = ReadEditor
MeasRemapCoordinates : TMenuItem; //OnClick = ReadEditor
MeasPreserveDataItem : TMenuItem; //OnClick = SetWellhoferValues; Tag=4 >wAxisPreserveOnExport
//-reference menu
ReferenceMenu : TMenuItem;
RefAutoLoadItem : TMenuItem; {Alt+L} //OnClick = ViewItems
RefDeviceSpecificItem : TMenuItem; {Alt+I} //OnClick = ReferenceDevSpecClick >wMeas2TankMapping
RefGenericBeamItem : TMenuItem; {Alt+R} //OnClick = ReferenceGenericBeamClick >wReferenceFromGeneric
RefMakeIndexItem : TMenuItem; {Alt+X} //OnClick = Reload
RefAtDefaultSSDItem : TMenuItem; {Alt+H} //OnClick = ReadEditor >wRefAtDefaultSSD
RefBackgroundCorrItem : TMenuItem; {Alt+B} //OnClick = OnDataRead
RefSymCorrectItem : TMenuItem; {Alt+S} //OnClick = ReadEditor
RefAlignItem : TMenuItem; {Alt+M} //OnClick = Reload
RefAlignTopforFFF : TMenuItem; {Alt+F} //OnClick = Reload
RefNormaliseItem : TMenuItem; {Alt+N} //OnClick = OnDataRead
//--submenu
RefCalcSubMenu : TMenuItem;
RefUseDivideByItem : TMenuItem; {Alt+D} //OnClick = CalcSubMenuClick
RefUseGammaItem : TMenuItem; {Alt+G} //OnClick = CalcSubMenuClick
RefUseAddToItem : TMenuItem; {Alt+A} //OnClick = CalcSubMenuClick
RefUseUnrelatedToItem : TMenuItem; {Alt+U} //OnClick = CalcSubMenuClick
//-calculation menu
CalculationMenu : TMenuItem;
CalcPostFilterItem : TMenuItem;
//-options menu
OptionsMenu : TMenuItem;
AdvancedModeItem : TMenuItem; //OnClick = OptionModeClick
SimpleModeItem : TMenuItem; //OnClick = OptionModeClick
ConfigLoadItem : TMenuItem; //OnClick = SelectConfig
ConfigReadItem : TMenuItem; //OnClick = ConfigLoad
ConfigSaveItem : TMenuItem; //OnClick = ConfigSave
ConfigSaveAsItem : TMenuItem; //OnClick = ConfigSaveAsItemClick; Tag=4
ConfigAutoSaveItem : TMenuItem; //autocheck only
//-presets menu
PresetsMenu : TMenuItem;
ConfigSavePresetAs : TMenuItem; //OnClick = ConfigSaveAsItemClick
//-help menu
HelpMenu : TMenuItem;
AboutItem : TMenuItem; //OnClick = OnMenu
HelpItem : TMenuItem; //OnClick = OnMenu
//inventory popup menu
InventoryPopupMenu : TPopupMenu;
InventoryPopOpenItem : TMenuItem;
InventoryPopDelItem : TMenuItem;
InventoryPopExpandItem : TMenuItem;
InventoryPopReturnItem : TMenuItem;
//aliaslist popup menu
AliasPopupMenu : TPopupMenu;
AliasListInsert : TMenuItem;
AliasListDelete : TMenuItem;
//tabs
PageControl : TPageControl;
//-analysis tab
AnalysisTab : TTabSheet;
DataPlot : TChart; //set DataPlot.AutoFocus on to avoid trigger of PageControlRequestChange with VK_LEFT/RIGHT
L_AxisTransforms : TChartAxisTransformations; //needed to set the vertical axis otherwise than showing all data
L_AxisTransform_AutoScale : TAutoScaleAxisTransform; //see AutoZoom function
R_AxisTransforms : TChartAxisTransformations; //see C:\lazarus\components\tachart\demo\axistransf
R_AxisTransform_AutoScale : TAutoScaleAxisTransform; //see also AxisAlignSource object and AutoZoom function
TopModelSeries : TFuncSeries; //TopModelSeries plots a function; for development ease two series are added at design time, all others at runtime
ErrorSeries : TLineSeries; //ErrorSeries shows residual of pddfit
ResultsPanel : TPanel; //the placeholder for all analysis results
MeasNormAdjustEdit : TFloatSpinEditEx; //mostly hidden feature for changing normalisation level
PositionLabel : TLabel;
PositionValue : TLabel;
//-histogram tab
HistogramTab : TTabSheet;
HistogramPlot : TChart; //set HistoGramPlot.AutoFocus on to avoid trigger of PageControlRequestChange with VK_LEFT/RIGHT
Histogram : TBarSeries;
//-focus position tab
FocusPositionTab : TTabSheet;
FocusPositionPanel : TPanel;
FocusPositionSetupGroupBox : TGroupBox;
FocusPositionMappingLabel : TLabel;
FocusPosition_mapping_Box : TComboBox;
FocusPositionDetectorRotates: TCheckBox;
FocusPositionIECLabel : TLabel;
FocusPosition_IEC_Convention: TComboBox;
FocusPositionUpperLabel : TLabel;
FocusPosition_UpperBLD_ident: TComboBox;
FocusPositionFullScaleLabel : TLabel;
FocusPositionFullScale_mm : TFloatSpinEditEx;
FocusPositionDetectorOther : TRadioButton;
FocusPositionDetSurfaceIsoc : TRadioButton;
FocusPositionDetAutoSet : TRadioButton;
FocusPositionDetectorInIsoc : TRadioButton;
FocusPositionInputGroupBox : TGroupBox;
FocusPositionUseCollimInfo : TCheckBox;
FocusPositionStructuredData : TStaticText;
FocusPositionCollimFromName : TCheckBox;
FocusPositionNamePatternEdit: TLabeledEdit;
FocusPositionResetButton : TButton;
FocusPositionZeroRotButton : TButton;
FocusPositionZeroFPButton : TButton;
FocusPositionResultGroupBox : TGroupBox;
//-fit results tab
PDDFitResultsTab : TTabSheet; //here model parameter values can be observed and copied after a pdd fit
PDDFitResultsPanel : TPanel; //only used to set background color
PDDFitResultsAllCheckBox : TCheckBox;
PDDFitResultsGrid : TStringGrid;
PDDFitResultsHeaderCheckBox : TCheckBox;
PDDFitresultsLabel : TLabel;
PDDFitResultsLabelsCheckBox : TCheckBox;
//-alias tab
AliasTab : TTabSheet;
AliasListEditor : TValueListEditor;
//-Field Types tab
FieldTypesTab : TTabSheet; //a series of settings is highly dependendent on the actual data being processed: the Field Types
FieldTypesPanel : TPanel; //a place holder to ba able to set a background color
Ft_DetectLabel : TLabel; //twcFieldClass=(fcStandard,fcFFF,fcSmall,fcMRlinac,fcWedge,fcElectron);
Ft_DetDiagonalLabel : TLabel;
Ft_MeasSymCorrLabel : TLabel;
Ft_RefSymCorrLabel : TLabel;
Ft_DynPenumbraWidthLabel : TLabel;
Ft_EdgePrimaryLabel : TLabel;
Ft_EdgeFallBackLabel : TLabel;
Ft_CoFLabel : TLabel;
Ft_NormLabel : TLabel;
Ft_CenterModelRadiusLabel : TLabel;
Ft_Default_SSD_Label : TLabel;
Ft_FFFDetectionGroupBox : TGroupBox;
FFFMinFieldSizeLabel : TLabel;
FFFMinFieldSize_cm : TFloatSpinEditEx; //>wFFFMinFieldSizeCm
FFFMinDoseDifLabel : TLabel;
FFFMinDoseDif_perc : TFloatSpinEditEx; //>wFFFMinDoseDifPerc
FFFMinEdgeDifLabel : TLabel;
FFFMinEdgeDif_mm : TFloatSpinEditEx; //>wFFFMinEdgeDifCm
FFFInFieldExtLabel : TLabel;
FFFInFieldExt_cm : TFloatSpinEditEx; //>twcFFFInFieldExtCm
//--Edge groupbox
Ft_EdgeDetectionGroupBox : TGroupBox;
EdgeDetectionCheckBox : TCheckBox; //>wEdgeDetect
EdgeDetectionError_mm : TFloatSpinEditEx; //>wEdgeFallBackCm
EdgeSigmoidRadiusLabel : TLabel;
EdgeSigmoidRadius_cm : TFloatSpinEditEx; //>wInflectionSigmoidRadiusCm
EdgeSmallFieldWidthLabel : TLabel;
EdgeSmallFieldWidth_cm : TFloatSpinEditEx; //>wSmallFieldLimitCm
EdgeWedge90ShiftLabel : TLabel;
EdgeWedge90ShiftFactor : TFloatSpinEditEx; //>wWedge90ShiftFactor
EdgeMRlinacTUcsvList : TLabeledEdit;
//-settings tab
SettingsTab : TTabSheet;
SettingsPanel : TPanel; //placeholder to set background color
FilterWidthLabel : TLabel;
FilterWidth_mm : TFloatSpinEditEx;
CalcWidthLabel : TLabel;
CalcWidth_mm : TFloatSpinEditEx;
ResampleGridLabel : TLabel;
ResampleGrid_mm : TFloatSpinEditEx;
GlobalNormAdjustLabel : TLabel;
GlobalNormAdjust_perc : TFloatSpinEditEx;
UserBorderDoseLabel : TLabel;
UserBorderDose_perc : TFloatSpinEditEx;
XpenumbraLabel : TLabel;
XLpenumbra_perc : TFloatSpinEditEx; //>wXPenumbraL
XHpenumbra_perc : TFloatSpinEditEx; //>wXPenumbraH
EpenumbraLabel : TLabel;
ELpenumbra_perc : TFloatSpinEditEx; //>wEPenumbraL
EHpenumbra_perc : TFloatSpinEditEx; //>wEPenumbraH
DefaultEnergyLabel : TLabel;
DefaultEnergy_MeV : TFloatSpinEditEx;
OffAxisInclusionLabel : TLabel;
OffAxisInclusionRange_cm : TFloatSpinEditEx;
HistogramLimitLabel : TLabel;
HistogramLimit_num : TFloatSpinEditEx;
InsertOriginCheckBox : TCheckBox;
Nominal_IFA_CheckBox : TCheckBox; //>wNominalIFA
//--shift settings groupbox
ShiftGroupBox : TGroupBox;
ShiftStepLabel : TLabel;
ManualShiftStep_cm : TFloatSpinEditEx;
//--merge groupbox
MergeGroupBox : TGroupBox;
MergeProfShiftLabel : TLabel;
MergeProfShift_cm : TFloatSpinEditEx;
MergeScaleOverlapCheckBox : TCheckBox;
MergePDDShiftLabel : TLabel;
MergePDDShift_cm : TFloatSpinEditEx;
MergeMatchCheckBox : TCheckBox;
//--mayneord groupbox
MayneordGroupBox : TGroupBox;
MayneordDmaxLabel : TLabel;
MayneordDmax_cm : TFloatSpinEditEx;
MayneordSSD1Label : TLabel;
MayneordSSD1_cm : TFloatSpinEditEx;
MayneordSSD2Label : TLabel;
MayneordSSD2_cm : TFloatSpinEditEx;
//--gamma analysis groupbox
GammaDepthCutoffLabel : TLabel;
GammaDepthCutoff_mm : TFloatSpinEditEx; //>twcGammaCutoffDepthCm
GammaDistNormLabel : TLabel;
GammaDistNorm_mm : TFloatSpinEditEx; //>twcGammaDistCmBase
GammaDoseCutoffLabel : TLabel;
GammaDoseCutoff_perc : TFloatSpinEditEx; //twcGammaCutoffPercent
GammaDoseNormLabel : TLabel;
GammaDoseNorm_perc : TFloatSpinEditEx; //>twcGammaDosePercBase
GammaSearchFactorLabel : TLabel;
GammaSearchMultiplier_num : TFloatSpinEditEx; //>twcGammaSearchMaxFactor
GammaStepsLabel : TLabel;
GammaEdit_Steps_per_mm : TFloatSpinEditEx; //>twcGammaDistCmStep
GammaSettingsGroupBox : TGroupBox;
GammaLimitAreaLabel : TLabel;
GammaLocalDoseCheckBox : TCheckBox; //>twcGammaLocalDosePerc
//--pddfit groupbox
PDDfitGroupBox : TGroupBox;
PDDfitCheckBox : TCheckBox;
FitCyclesLabel : TLabel;
FitCycles_num : TSpinEditEx; //>twcNMcycles
FitENRLabel : TLabel;
FitENRlimit_ratio : TFloatSpinEditEx;
FitENRweigthedCheckBox : TCheckBox; //>twcPddFitCostENRWeighted
FitMaxTimeLabel : TLabel;
FitMaxTime_sec : TFloatSpinEditEx; //>twcNMseconds
FitMu3CheckBox : TCheckBox; //>pddfitEnames[pddfit_mu3]
FitMu4CheckBox : TCheckBox; //>pddfitEnames[pddfit_mu3]
FitMubPowerFixedCheckBox : TCheckBox;
FitMubPowerLabel : TLabel;
FitMubPower_exp : TFloatSpinEditEx; //>twcPddFitMubPower
FitMx2CheckBox : TCheckBox; //>pddfitEnames[pddfit_mx2]
FitRestartsLabel : TLabel;
FitRestarts_num : TSpinEditEx; //>twcNMrestarts
FitZWeightLabel : TLabel;
FitZWeight_val : TFloatSpinEditEx; //>twcPddFitZWeightPower
//-advanced settings tab
AdvancedSettingsTab : TTabSheet;
AdvancedSettingsPanel : TPanel; //placeholder to set background color
AdvancedModeStartCheckBox : TCheckBox;
FFFinFileCheckBox : TCheckBox;
ShowLockItemCheckBox : TCheckBox;
AddDateTimeCheckBox : TCheckBox;
ShowWarningCheckBox : TCheckBox;
LogLevelEdit : TSpinEditEx;
HistoryListCheckBox : TCheckBox; //onclick=HistoryListSizeClick; linked to FileHistoryItem
HistoryListSize_num : TSpinEditEx;
HistoryListFreezeCheckBox : TCheckBox; //when checked data will not be reprocessed, despite changed circumstances/reference data
ForceMatchingCheckBox : TCheckBox;
OutlierFilterStatsCheckBox : TCheckBox; //>wOutlierFilter
OutlierMaxPoints_num : TSpinEditEx;
AutoSetDecPointCheckBox : TCheckBox;
AutoDecPointList : TEdit;
BadPenumbraLabel : TLabel;
BadPenumbraWidth_cm : TFloatSpinEditEx;
OriginMinLevelLabel : TLabel;
OriginMinLevel_perc : TFloatSpinEditEx; //>twcOriginMinNormFraction
PipsPixelSizeLabel : TLabel;
PipsPixelSize_mm : TFloatSpinEditEx; //>wPipsPixelCm
StructuredDataSetsLabel : TLabel;
StructuredDataSetsList : TEdit; //>w2D_ArrayRefList
//--axis title groupbox
AxisViewGroupBox : TGroupBox;
AxisViewFileTypeCheckBox : TCheckBox;
AxisViewCollAngleCheckBox : TCheckBox;
AxisViewSSDCheckBox : TCheckBox;
AxisViewFieldTypeCheckBox : TCheckBox;
AxisViewDetNameCheckBox : TCheckBox;
AxisViewCommentsCheckBox : TCheckBox;
AxisViewDetLengthLabel : TLabel;
AxisViewDetLength_num : TSpinEditEx;
AxisViewComLengthLabel : TLabel;
AxisViewComLength_num : TSpinEditEx;
//--colors groupbox
ColorsBox : TGroupBox;
PlotColorPanel : TColorButton;
GridColorPanel : TColorButton;
UIColorPanel : TColorButton;
//--axis swapping and remapping groupbox
MeasRemappingBox : TGroupBox;
MeasReMappingString : TComboBox;
SwapGTcheckbox : TCheckBox; //OnClick = OnDataRead
SwapABcheckbox : TCheckBox; //OnClick = OnDataRead
SwapUDcheckbox : TCheckBox; //OnClick = OnDataRead
SwapLRcheckbox : TCheckBox; //OnClick = OnDataRead
//--match settings groupbox
MatchGroupBox : TGroupBox;
MatchRangeDividerLabel : TLabel;
MatchRangeDivider_num : TSpinEditEx;
MatchStepFactorLabel : TLabel;
MatchSteps_num : TSpinEditEx;
MatchNormPercLabel : TLabel;
MatchNormDelta_perc : TFloatSpinEditEx;
MatchInclusionLabel : TLabel;
MatchInclusionLimit_perc : TFloatSpinEditEx;
//--linac symmetry error groupbox
LinacErrorGroupBox : TGroupBox;
LinacErrInvertABCheckBox : TCheckBox;
LinacErrInvertGTCheckBox : TCheckBox;
LinacSymLabel : TLabel;
LinacSymInner_cm : TFloatSpinEditEx;
LinacSymOuter_cm : TFloatSpinEditEx;
//-configuration tab
ConfigurationTab : TTabSheet;
ConfigurationPanel : TPanel;
ModListAddButton : TButton;
ModListBeamRadioButton : TRadioButton;
ModListDelButton : TButton;
ModListEditButton : TButton;
ModListFilmRadioButton : TRadioButton;
ModListGrid : TStringGrid;
ModListNormRadioButton : TRadioButton;
//-logging tab
LogTab : TTabSheet;
LogTabMemo : TMemo; //LogTabMemo.Tag is used for maximum number of lines, initial value 500
//-raw data tab
RawDataTab : TTabSheet; //shows the data as received on the clipboard or from file. binary data are converted to text format
RawDataEditor : TMemo;
//-inventory tab
InventoryTab : TTabSheet;
InventoryAltAxisCheckBox : TCheckBox; //>wMeas2TankMapping
InventoryDirBox : TDirectoryEdit; //InventoryDirBoxAccept
InventoryGrid : TStringGrid;
InventoryRadioRef : TRadioButton; //InventoryDirBoxChange
InventoryRadioData : TRadioButton; //InventoryDirBoxChange
InventoryRadioSelf : TRadioButton; //InventoryDirBoxChange
InventorySetRefDirButton : TButton; //InventorySetRefDirClick
//-file conversion tab
FileConversionTab : TTabSheet;
FileConversionPanel : TPanel; //placeholder to set background color
FileConvDestinationLabel : TLabel;
FileConvDestinationTypeLabel: TLabel;
FileConvSourceLabel : TLabel;
FileConvSourceTypeLabel : TLabel;
FileConvSourcePath : TDirectoryEdit;
FileConvSourceListBox : TListBox;
FileConvSourceRecursive : TCheckBox;
FileConvIon2DoseCheckBox : TCheckBox;
FileConvDestinationPath : TDirectoryEdit;
FileConvDestinationListBox : TListBox;
FileConvSamePath : TCheckBox;
FileConvLowerCase : TCheckBox;
FileConvMakeFileName : TCheckBox;
FileConvOverWrite : TCheckBox;
FileConvNameMask : TEdit;
FileConvStartButton : TButton;
FileConvList : TMemo;
//-signal adapt tab
ODconvTab : TTabSheet;
ODConversionPanel : TPanel;
UseBackgroundValueLabel : TLabel;
UseDoseConvLabel : TLabel;
UseDoseFilmTypeLabel : TLabel;
UseDoseModalityLabel : TLabel;
UseSubtractLabel : TLabel;
UseBackGroundBox : TGroupBox;
UseDoseAddButton : TButton;
UseDoseDelButton : TButton;
//other elements
StatusBar : TStatusBar;
FileSaveDialog : TSaveDialog;
FileOpenDialog : TOpenDialog;
ColorDialog : TColorDialog;
ApplicationProperties : TApplicationProperties;
//procedures and functions linked to GUI
procedure FormCreate (Sender : TObject);
procedure OnDataRead (Sender : TObject); //BistroMath core function, call user dependent wellhofer function, fills graphics
procedure AdjustHelpContext (Sender : TObject); //linked to OnMouseEnter event for pages with different help contexts}
procedure MeasMenuClick (Sender : TObject);
procedure SetDefaultPanel (Sender : TObject); //insert default panel display rules in results panel
procedure SetCaption (Sender : TObject); overload;
procedure SelectConfig (Sender : TObject); //selection of config file, implemented as application of fileopendialog
procedure ConfigLoad (Sender : TObject); overload;
procedure ConfigSave (Sender : TObject); overload;
procedure SetWellhoferValues (Sender : TObject); //set both global and twellhoferdata related values in wellhofer.pas
procedure FormResize (Sender : TObject);
procedure SettingsTabExit (Sender : TObject);
procedure AdvancedSettingsTabExit (Sender : TObject);
procedure ShowMenuItemStatus (Sender : TObject);
procedure TopModelFunction (const AX : Double;
out AY : Double);
procedure ViewItems (Sender : TObject); //manage visibility of items on user input
procedure UpdateSettings (Sender : TObject); //passing user choices to various menu items
procedure ClearScreen (Sender : TObject); //clear graphics
procedure ReadDroppedFiles (Sender : TObject; //uses DataFileOpen
const FileNames: array of String);
procedure Reload (Sender : TObject); overload;
procedure ReadEditor (Sender : TObject); overload; //read data from raw data tab and call ondataread
procedure SyncSetExtSym (Sender : TObject); overload; //manages submenu
procedure SyncSetFFFpeak (Sender : TObject); overload; //manages submenu
procedure SyncSetNormalisation (Sender : TObject);
procedure SyncSetCenterOfField (Sender : TObject);
procedure SyncSetDetection (Sender : TObject);
procedure SmartScaleElectronPDD (Sender : TObject);
procedure FileOpenClick (Sender : TObject); //uses DataFileOpen
procedure FileOpenTempRefClick (Sender : TObject); //uses TWellhoferData to open
procedure FileSaveClick (Sender : TObject);
{$IFDEF JwaWinBase}
procedure OnIdleTimer (Sender : TObject);
{$ENDIF}
{$IFDEF form2pdf}
procedure FilePrintFormClick (Sender : TObject);
{$ENDIF}
procedure FocusPositionPanelPaint (Sender : TObject);
procedure FocusPositionProcessFile (Sender : TObject);
procedure FocusPositionRadioClick (Sender : TObject);
procedure FocusPositionResetClick (Sender : TObject);
procedure FocusPositionZeroClick (Sender : TObject);
procedure FocusPositionChange_mm (Sender : TObject);
procedure FocusPositionStateUpdate (Sender : TObject);
procedure MeasMoveClick (Sender : TObject);
procedure CalcSubMenuClick (Sender : TObject);
procedure SymCorrectClick (Sender : TObject);
procedure UImodeChange (Sender : TObject); //Enable parts of GUI on state and tab changes
procedure ReferenceDevSpecClick (Sender : TObject); //respond to RefDeviceSpecificItem
procedure ReferenceGenericBeamClick(Sender : TObject);
procedure LocalPeakClick (Sender : TObject); //limit twScanFirst/Last to area around peak
procedure RightAxisToGridClick (Sender : TObject); //align DataPlot right axis with grid set by left axis
procedure ActivateZoom (Sender : TObject);
procedure ActivateUnZoom (Sender : TObject);
procedure DataPlotExtentChanged (Sender : TChart); //respond to DataPlot mouse zoom
procedure MeasurementSaveClick (Sender : TObject);
procedure OnMenu (Sender : TObject);
procedure EditEnter (Sender : TObject); //AliasListEditor,EdgeMRlinacTUcsvList,ModListGrid,RawDataEditor,InventoryDirBox,FileConvSourcePath
procedure HistoryListSizeClick (Sender : TObject);
procedure ProcessSetTempRefClick (Sender : TObject);
procedure ProcessUnsetTempRefClick (Sender : TObject);
procedure ProcessUpdateDataRead (Sender : TObject);
procedure ProcessMergeSourceClick (Sender : TObject);
procedure ProcessResetFitClick (Sender : TObject);
procedure ProcessMirrorMeasRefClick(Sender : TObject);
procedure MeasCalcPDDfitClick (Sender : TObject);
procedure PresetsMenuEnter (Sender : TObject);
procedure PresetsItemClick (Sender : TObject);
procedure UseDoseAddButtonClick (Sender : TObject);
procedure UseDoseDelButtonClick (Sender : TObject);
procedure PlotLabelClick (Sender : TObject); //selects series
procedure LabelCopyClick (Sender : TObject);
procedure ConfigSaveAsItemClick (Sender : TObject);
procedure Ionisation2DoseClick (Sender : TObject);
procedure FitMubPowerFixedClick (Sender : TObject);
procedure MeasReMappingStringChange(Sender : TObject);
procedure PageControlRequestChange (Sender : TObject;
var AllowChange: Boolean);
procedure PageControlChange (Sender : TObject);
{$IFDEF LCL_2-3_Up}
procedure RightAxisGetMarkText (Sender : TObject;
var AText : String;
AMark : Double);
{$ELSE}
procedure AxisMarkToText (var AText : String; //introduce ability to change marks at will
AMark : Double );
{$ENDIF}
procedure FileConvPathBtnClick (Sender : TObject);
procedure FileConvStartCheck (Sender : TObject);
procedure FileConvStartClick (Sender : TObject);
procedure FileConvDoFile (Sender : TObject;
const AFileName: TFileName;
const AFileInfo: TFileInfo);
procedure FileConvNameMaskKeyPress (Sender : TObject;
var Key : Char);
procedure FileConvNameMaskEnter (Sender : TObject);
procedure FileConvIteratorTerminate(Sender : TObject);
procedure InventoryPrepareCanvas (Sender : TObject; //inventory is on files tab
aCol, aRow : Integer;
aState : TGridDrawState);
procedure InventoryDoFile (Sender : TObject;
const AFileName: TFileName;
const AFileInfo: TFileInfo);
procedure OnInventorySelect (Sender : TObject;
aCol, aRow : Integer);
procedure InventoryGridDblClick (Sender : TObject); //changed also at runtime
procedure InventorySetRefDirClick (Sender : TObject);
procedure InventoryDirBoxAccept (Sender : TObject;
var Value : String);
procedure InventoryDirBoxChange (Sender : TObject);
procedure AliasTabExit (Sender : TObject);
procedure AliasListPrepareCanvas (Sender : TObject;
aCol, aRow : Integer;
aState : TGridDrawState);
procedure AliasListDeleteClick (Sender : TObject);
procedure AliasListInsertClick (Sender : TObject);
procedure PDDFitResultsGridClick (Sender : TObject);
procedure ModListAddClick (Sender : TObject);
procedure ModListEditClick (Sender : TObject);
procedure ModListUpdate (Sender : TObject);
procedure ModListDelClick (Sender : TObject);
procedure ModListGridSelectCell (Sender : TObject;
ACol,ARow : Integer;
var CanSelect : Boolean);
procedure ModListRadioButtonClick (Sender : TObject);
procedure FormKeyDown (Sender : TObject; //user interface for keyboard (shortcuts)
var Key : Word;
AShift : TShiftState);
procedure FormKeyUp (Sender : TObject;
var Key : Word);
procedure FormKeyPress (Sender : TObject;
var Key : Char);
procedure RunAboutBox (Sender : TObject); //show about panel
{$IFDEF SelfTest}
procedure SelfTest (Sender : TObject);
procedure FormClose (Sender : TObject;
var CloseAction: TCloseAction);
{$ENDIF}
procedure FormDestroy (Sender : TObject);