# Path: pytripgui/app_logic/patient_tree.py
# class PatientTree:
#     def __init__(self, parent):
#         self.patient_tree_model = TreeModel(PatientList())
#         self.patient_tree_view = TreeView()
# 
#         self.patient_tree_view.setModel(self.patient_tree_model)
#         self.patient_tree_cont = TreeController(self.patient_tree_model, self.patient_tree_view)
# 
#         self._parent = parent
# 
#         self.widget = self._parent.patientTree_dockWidget
#         self.widget.setWidget(self.patient_tree_view)
# 
#     def set_visible(self, visible):
#         if visible:
#             self.widget.show()
#         else:
#             self.widget.hide()
# 
#     def app_callback(self, app_callback):
#         self.patient_tree_cont.new_item_callback = app_callback.new_item_callback
#         self.patient_tree_cont.edit_item_callback = app_callback.edit_item_callback
# 
#         self.patient_tree_cont.open_voxelplan_callback = app_callback.on_open_voxelplan
#         self.patient_tree_cont.open_dicom_callback = app_callback.on_open_dicom
# 
#         self.patient_tree_cont.export_patient_voxelplan_callback = app_callback.export_patient_voxelplan_callback
#         self.patient_tree_cont.export_patient_dicom_callback = app_callback.export_patient_dicom_callback
#         self.patient_tree_cont.export_dose_voxelplan_callback = app_callback.export_dose_voxelplan_callback
#         self.patient_tree_cont.export_dose_dicom_callback = app_callback.export_dose_dicom_callback
#         self.patient_tree_cont.export_plan_callback = app_callback.export_plan_exec_callback
# 
#         self.patient_tree_cont.import_dose_voxelplan_callback = app_callback.import_dose_voxelplan_callback
#         self.patient_tree_cont.import_dose_dicom_callback = app_callback.import_dose_dicom_callback
# 
#         self.patient_tree_cont.execute_plan_callback = app_callback.on_execute_selected_plan
#         self.patient_tree_cont.one_click_callback = app_callback.one_click_callback
# 
#     def add_new_item(self, parent_item, item):
#         self.patient_tree_cont.add_new_item(parent_item, item)
# 
#     def selected_item_patient(self):
#         return self.patient_tree_view.selected_item_patient
# 
#     def selected_item(self):
#         return self.patient_tree_view.selected_item
# 
# Path: pytripgui/app_logic/viewcanvas.py
# class ViewCanvases:
#     def __init__(self, parent):
#         self.viewcanvas_view = CanvasView(parent)
#         self.plot_cont = CanvasController(None, self.viewcanvas_view)
# 
#     def widget(self):
#         return self.viewcanvas_view.widget()
# 
#     def set_patient(self, patient, state=None):
#         self.plot_cont.set_model_data_and_update_view(patient, state)
# 
#     def set_simulation_results(self, simulation_results, simulation_item, state=None):
#         self.plot_cont.set_simulation_results(simulation_results, simulation_item, state)
# 
#     def update_voi_list(self, patient, state=None):
#         self.plot_cont.update_voi_list(patient, state)
# 
#     def get_gui_state(self):
#         return self.plot_cont.get_gui_state()


import logging
from pytripgui.app_logic.patient_tree import PatientTree
from pytripgui.app_logic.viewcanvas import ViewCanvases
        from pytrip import __version__ as _pytrip_version
        from pytripgui import __version__ as _pytripgui_version


logger = logging.getLogger(__name__)


class MainModel:
    def __init__(self):


        self._pytrip_version = _pytrip_version
        self._pytripgui_version = _pytripgui_version


# Path: pytripgui/app_logic/patient_tree.py
# class PatientTree:
#     def __init__(self, parent):
#         self.patient_tree_model = TreeModel(PatientList())
#         self.patient_tree_view = TreeView()
# 
#         self.patient_tree_view.setModel(self.patient_tree_model)
#         self.patient_tree_cont = TreeController(self.patient_tree_model, self.patient_tree_view)
# 
#         self._parent = parent
# 
#         self.widget = self._parent.patientTree_dockWidget
#         self.widget.setWidget(self.patient_tree_view)
# 
#     def set_visible(self, visible):
#         if visible:
#             self.widget.show()
#         else:
#             self.widget.hide()
# 
#     def app_callback(self, app_callback):
#         self.patient_tree_cont.new_item_callback = app_callback.new_item_callback
#         self.patient_tree_cont.edit_item_callback = app_callback.edit_item_callback
# 
#         self.patient_tree_cont.open_voxelplan_callback = app_callback.on_open_voxelplan
#         self.patient_tree_cont.open_dicom_callback = app_callback.on_open_dicom
# 
#         self.patient_tree_cont.export_patient_voxelplan_callback = app_callback.export_patient_voxelplan_callback
#         self.patient_tree_cont.export_patient_dicom_callback = app_callback.export_patient_dicom_callback
#         self.patient_tree_cont.export_dose_voxelplan_callback = app_callback.export_dose_voxelplan_callback
#         self.patient_tree_cont.export_dose_dicom_callback = app_callback.export_dose_dicom_callback
#         self.patient_tree_cont.export_plan_callback = app_callback.export_plan_exec_callback
# 
#         self.patient_tree_cont.import_dose_voxelplan_callback = app_callback.import_dose_voxelplan_callback
#         self.patient_tree_cont.import_dose_dicom_callback = app_callback.import_dose_dicom_callback
# 
#         self.patient_tree_cont.execute_plan_callback = app_callback.on_execute_selected_plan
#         self.patient_tree_cont.one_click_callback = app_callback.one_click_callback
# 
#     def add_new_item(self, parent_item, item):
#         self.patient_tree_cont.add_new_item(parent_item, item)
# 
#     def selected_item_patient(self):
#         return self.patient_tree_view.selected_item_patient
# 
#     def selected_item(self):
#         return self.patient_tree_view.selected_item
# 
# Path: pytripgui/app_logic/viewcanvas.py
# class ViewCanvases:
#     def __init__(self, parent):
#         self.viewcanvas_view = CanvasView(parent)
#         self.plot_cont = CanvasController(None, self.viewcanvas_view)
# 
#     def widget(self):
#         return self.viewcanvas_view.widget()
# 
#     def set_patient(self, patient, state=None):
#         self.plot_cont.set_model_data_and_update_view(patient, state)
# 
#     def set_simulation_results(self, simulation_results, simulation_item, state=None):
#         self.plot_cont.set_simulation_results(simulation_results, simulation_item, state)
# 
#     def update_voi_list(self, patient, state=None):
#         self.plot_cont.update_voi_list(patient, state)
# 
#     def get_gui_state(self):
#         return self.plot_cont.get_gui_state()


# Path: pytripgui/model/main_model.py
import logging
from pytripgui.app_logic.patient_tree import PatientTree
from pytripgui.app_logic.viewcanvas import ViewCanvases
        from pytrip import __version__ as _pytrip_version
        from pytripgui import __version__ as _pytripgui_version



logger = logging.getLogger(__name__)


class MainModel:
    def __init__(self):


        self._pytrip_version = _pytrip_version
        self._pytripgui_version = _pytripgui_version


        self.trip_configs = []