2 using UnityEngine.Events;
4 using System.Collections;
5 using System.Collections.Generic;
9 public GameObject ListScreen;
10 public GameObject ImageScreen;
11 public GameObject ListEntry;
17 public Text StatusText;
26 StatusText.text =
"Searching for DICOMs ...";
28 DicomImage.widget = GetComponent<
UI.Widget> ();
34 PatientEventSystem.startListening( PatientEventSystem.Event.DICOM_NewList, eventNewDicomList );
35 PatientEventSystem.startListening( PatientEventSystem.Event.DICOM_NewLoadedSlice, eventDisplayCurrentDicom );
36 PatientEventSystem.startListening( PatientEventSystem.Event.DICOM_AllCleared, eventClear );
37 PatientEventSystem.startListening( PatientEventSystem.Event.PATIENT_Closed, eventClear );
47 PatientEventSystem.stopListening( PatientEventSystem.Event.DICOM_NewList, eventNewDicomList );
48 PatientEventSystem.stopListening( PatientEventSystem.Event.DICOM_NewLoadedSlice, eventDisplayCurrentDicom );
49 PatientEventSystem.stopListening( PatientEventSystem.Event.DICOM_AllCleared, eventClear );
50 PatientEventSystem.stopListening( PatientEventSystem.Event.PATIENT_Closed, eventClear );
55 void eventDisplayCurrentDicom(
object obj = null )
57 DICOM dicom = DICOMLoader.instance.currentDICOM;
58 if( dicom != null && dicom is
DICOM2D )
60 DicomImage.SetDicom (dicom as DICOM2D);
61 DicomImage.gameObject.SetActive (
true);
62 StatusText.gameObject.SetActive (
false);
63 ImageScreen.SetActive (
true);
64 ListScreen.SetActive (
false);
68 void eventNewDicomList(
object obj = null )
73 Patient p = Patient.getLoadedPatient ();
75 Text newEntryText = ListEntry.transform.GetComponentInChildren<Text> ();
76 newEntryText.text =
"No patient loaded.";
77 ListEntry.SetActive (
true);
81 List<DICOMSeries> series = DICOMLoader.instance.availableSeries;
82 if (series.Count <= 0) {
83 Text newEntryText = ListEntry.transform.GetComponentInChildren<Text> ();
84 newEntryText.text =
"No series found.";
85 ListEntry.SetActive (
true);
90 ListEntry.SetActive (
false);
94 GameObject newEntry = Instantiate (ListEntry) as GameObject;
95 newEntry.SetActive (
true);
97 Text newEntryText = newEntry.transform.GetComponentInChildren<Text> ();
98 newEntryText.text = s.getDescription ();
99 newEntry.transform.SetParent (ListEntry.transform.parent,
false);
105 GameObject newButton = newEntry.transform.Find(
"EntryButton").gameObject;
106 newButton.GetComponent<Button> ().onClick.AddListener(() => selectedNewDicom( captured ));
109 GameObject volumetricButton = newEntry.transform.Find (
"VolumetricButton").gameObject;
111 if (captured.sliceOrientation == SliceOrientation.Transverse && captured.isConsecutiveVolume) {
112 volumetricButton.GetComponent<Button> ().onClick.AddListener (() => selectedNewVolumetric (captured));
113 volumetricButton.SetActive (
true);
115 volumetricButton.SetActive (
false);
119 DicomImage.gameObject.SetActive (
false);
122 void eventClear(
object obj = null )
124 foreach (Transform tf
in ListEntry.transform.parent) {
125 if (tf != ListEntry.transform) {
126 Destroy (tf.gameObject);
129 Text newEntryText = ListEntry.transform.GetComponentInChildren<Text> ();
130 newEntryText.text =
"No series loaded.";
131 ListEntry.SetActive (
true);
140 DICOMLoader.instance.startLoading (series, previousLayer);
142 StatusText.gameObject.SetActive (
true);
143 StatusText.text =
"Loading DICOM ...";
144 ImageScreen.SetActive (
true);
145 ListScreen.SetActive (
false);
148 public void selectedNewVolumetric(
DICOMSeries series )
152 DICOMLoader.instance.unloadVolume ();
154 DICOMLoader.instance.startLoadingVolume (series);
158 public void backToList()
160 ImageScreen.SetActive (
false);
161 DicomImage.gameObject.SetActive (
false);
162 ListScreen.SetActive (
true);
static DICOMLoader instance
DICOM3D currentDICOMVolume