def doStartRecording(self, event):  # wxGlade: MainFrame.<event_handler>
     """
     Button handler for starting the recording of a patient
     TBD
     """
     # print "doStartRecording event handler"
     # self.depth_canvas.post_redraw_event()
     global recording
     self.SendSizeEvent()
     self.session = PreventionSession()
     self.session.patient_id = self.patient_id
     self.session.start_time = datetime.today()
     self.session.end_time = self.session.start_time
     self.session.depth_video_file_directory = ""
     (rc,msg) = self.sessionController.add(self.session)
     if rc != 0:
         self.SetStatusText(msg)
         return
     self.stop_button.Enable()
     self.start_button.Disable()
     self.director.SetSessionId(self.session.id)
     self.preventionDatabaseWriter.setSessionId(self.session.id)
     self.preventionDatabaseWriter.setExperimentId(self.experiment_id)
     self.session.depth_video_file_directory = self.director.GetDepthFileDirectory()
     try:
         os.makedirs(self.session.depth_video_file_directory)            
     except OSError as exc: # Python >2.5
         if exc.errno == errno.EEXIST and os.path.isdir(self.session.depth_video_file_directory):
             pass
         else: 
             # raise
             msg = "Unable to access directory: " + str(self.session.depth_video_file_directory) + ". Please insure that the drive is attached and unlocked."
             rc = util.showMessageDialog(msg, "Drive unavailable")
             self.start_button.Enable()
             self.stop_button.Disable()
             (rc,msg) = self.sessionController.deleteRecord(self.session.id)
             if rc != 0:
                 self.SetStatusText(msg)
             return
     freespace = util.GetFreeSpaceGB(self.director.GetDepthFileDirectory())
     if freespace < int(self.system_config['PREVENTION_FILE_SIZE_GB']):
         msg = "Not enough space to record patient. Need " + str(self.system_config['PREVENTION_FILE_SIZE_GB']) + " GB but found " + str(freespace) + " GB."
         rc = util.showMessageDialog(msg, "Out of space")
         (rc,msg) = self.sessionController.deleteRecord(self.session.id)
         if rc != 0:
             self.SetStatusText(msg)
         return
     self.depth_canvas.proc_.set_database_writer(self.preventionDatabaseWriter)
     self.depth_canvas.proc_.start_recording(str(self.session.depth_video_file_directory))
     recording = True
     # patientTurningController = PatientTurningController(db, PatientTurning, OlvPatientTurning, OlvPatientTurningCols)
     # self.results = patientTurningController.getByPatientBySessionByExperiment(patientId, sessionId, experimentId)
     # self.olv.SetObjects(self.results)
     self.CreateUpdatingList()
 def onSelectRecord(self, event):
     """
     Button handler to select a record
     """
     selectedRow = self.resultsOlv.GetSelectedObject()
     if selectedRow == None:
         util.showMessageDialog("No row selected!", "Error")
         return
     key = selectedRow.getKey()
     self.selectedObject = self.controller.getRecordByKey(key)
     self.EndModal(0)
 def onEdit(self):
     """
     Modifies the record and shows a confirmation message dialog.
     """
     data = self.getData()
     (rc, msg) = self.controller.editRecord(self.selectedRow.getKey(), data)
     # Check return code from above and put up appropriate message dialog
     if rc == 0:
         util.showMessageDialog("Record Edited Successfully!", "Success!", wx.ICON_INFORMATION)
     else:
         util.showMessageDialog(msg, "Failure!", wx.ICON_INFORMATION)
     return rc
 def onEditRecord(self, event):
     """
     Button handler to edit a record
     """
     selectedRow = self.resultsOlv.GetSelectedObject()
     if selectedRow == None:
         util.showMessageDialog("No row selected!", "Error")
         return
     dlg = AddModifyWoundDialog(self.controller, self.obj, self.db, row=selectedRow, title="Modify", addRecord=False)
     rc = dlg.ShowModal()
     if rc == 0:
         self.showAllRecords()
 def onAddRecord(self, event):
     """
     Button handler to add a record to the database
     """
     selectedRow = self.resultsOlv.GetSelectedObject()
     if selectedRow == None:
         util.showMessageDialog("Need to select a patient in order to add a wound!", "Error")
         return
     dlg = AddModifyWoundDialog(self.controller, self.obj, self.db, row=selectedRow, title="Add", addRecord=True)
     rc = dlg.ShowModal()
     if rc == 0:
         self.showAllRecords()
 def onAdd(self):
     """
     Adds the record to the database and shows a confirmation message dialog.
     """
     data = self.getData()
     (rc, msg) = self.controller.addRecord(data)
     
     # show dialog upon completion
     if rc == 0:
         util.showMessageDialog("Record Added", "Success!", wx.ICON_INFORMATION)
     else:
         util.showMessageDialog(msg, "Failure!", wx.ICON_INFORMATION)
     return rc
 def onExperiments(self, event):
     """
     Button handler to show experiments for an algorithm
     """
     selectedRow = self.resultsOlv.GetSelectedObject()
     if selectedRow == None:
         util.showMessageDialog("No row selected!", "Error")
         return
     algorithmId = selectedRow.getKey()
     olvDialog = ExperimentDialog(None, self.db, algorithmId=algorithmId)
     rc = olvDialog.ShowModal()
     olvDialog.Destroy()
     self.Enable()
     self.showAllRecords()
 def onConfiguration(self, event):
     """
     Button handler to show configuration parameters
     """
     selectedRow = self.resultsOlv.GetSelectedObject()
     if selectedRow == None:
         util.showMessageDialog("No row selected!", "Error")
         return
     algorithmId = selectedRow.getKey()
     olvDialog = AlgorithmDefaultsDialog(None, self.db, algorithmId)
     rc = olvDialog.ShowModal()
     olvDialog.Destroy()
     self.Enable()
     self.showAllRecords()
 def onRecord(self, event):
     """
     Handler for the OK button. It will either call onAdd or onEdit as required.
     """
     rc = 0
     # Perform validation checks
     if self.descTextCtrl.GetValue() == "":
         util.showMessageDialog("Wound description cannot be empty!", "Failure!", wx.ICON_ERROR)
         return
     if self.addRecord:
         rc = self.onAdd()
     else:
         rc = self.onEdit()
     self.SetReturnCode(rc)
     if rc == 0:
         self.Destroy()
 def onDelete(self, event):
     """
     Button handler to delete a record
     """
     selectedRow = self.resultsOlv.GetSelectedObject()
     if selectedRow == None:
         util.showMessageDialog("No row selected!", "Error")
         return
     (rc, msg) = self.controller.deleteRecord(selectedRow.getKey())
     # Check return code from above and put up appropriate message dialog
     if rc == 0:
         util.showMessageDialog("Record Deleted Successfully!", "Success!", wx.ICON_INFORMATION)
     else:
         util.showMessageDialog(msg, "Failure!", wx.ICON_INFORMATION)
     self.showAllRecords()
 def OnInit(self):
     """
     Initializes the GUI and displays a modal login panel.
     """
     global db
     self.Init(cmd=False)  # initialize the inspection tool
     self.ReadConfiguration()
     # wx.InitAllImageHandlers()
     self.mainframe = MainFrame(None, -1, "Prevention", (0,0))
     self.SetTopWindow(self.mainframe)
     self.mainframe.Show(True)
     self.mainframe.panel_1.Disable()
     # Check if system is not on battery power
     if not util.GetPowerOnline():
         rc = util.showMessageDialog("Computer is running on battery power and not AC power. Please insure unit is plugged into wall outlet and the power strip is turned on.", "Power not connected")
         return 1
     logon = LogonDialog(None)
     logon.SetDb(db)
     rc = logon.ShowModal()
     # print "rc=%d" % rc
     if rc == 1:
         # get system configuration
         systemConfigurationController = SystemConfigurationController(db, SystemConfiguration, None, None)
         self.mainframe.system_config = {}
         config = systemConfigurationController.getAll()
         for conf in config:
             self.mainframe.system_config[conf.parameter_name] = conf.parameter_value
         pprint(self.mainframe.system_config)
         self.mainframe.InitCanvas()
         self.mainframe.InitMisc()
         self.mainframe.InitClinicalPane()
         self.mainframe.panel_1.Enable()
         self.mainframe.Show()
         self.mainframe.SetStatusText("Logon successful")
         logon.Destroy()
         return 1
     logon.Destroy()
     self.mainframe.Destroy()
     wx.GetApp().ProcessIdle()
     return 0