Source code for lib_openmolar.client.qt4.pt_diary_widget.appt_prefs_dialog

#!/usr/bin/env python
# -*- coding: utf-8 -*-

###############################################################################
##                                                                           ##
##  Copyright 2011-2012,  Neil Wallace <neil@openmolar.com>                  ##
##                                                                           ##
##  This program is free software: you can redistribute it and/or modify     ##
##  it under the terms of the GNU General Public License as published by     ##
##  the Free Software Foundation, either version 3 of the License, or        ##
##  (at your option) any later version.                                      ##
##                                                                           ##
##  This program is distributed in the hope that it will be useful,          ##
##  but WITHOUT ANY WARRANTY; without even the implied warranty of           ##
##  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            ##
##  GNU General Public License for more details.                             ##
##                                                                           ##
##  You should have received a copy of the GNU General Public License        ##
##  along with this program.  If not, see <http://www.gnu.org/licenses/>.    ##
##                                                                           ##
###############################################################################

from PyQt4 import QtGui, QtCore

from lib_openmolar.common.qt4.dialogs import BaseDialog

RECALL_METHODS = ["post","email","sms"]

[docs]class ApptPrefsDialog(BaseDialog):
[docs] def __init__(self, parent=None): BaseDialog.__init__(self, parent) patient = SETTINGS.current_patient try: name = patient.full_name except AttributeError: name = _("NO PATIENT LOADED") self.patient_label = QtGui.QLabel("%s<br /><b>%s</b>"% ( _("Appointment Preferences for Patient"), name)) self.patient_label.setAlignment(QtCore.Qt.AlignCenter) self.recall_groupbox = QtGui.QGroupBox( _("Recall Patient Periodically")) self.recall_groupbox.setCheckable(True) self.recdent_groupbox = QtGui.QGroupBox( _("Dentist Recall")) self.recdent_groupbox.setCheckable(True) self.recdent_groupbox.setChecked(False) self.recdent_period_spinbox = QtGui.QSpinBox() self.recdent_period_spinbox.setMinimum(1) self.recdent_period_spinbox.setMaximum(24) self.recdent_date_edit = QtGui.QDateEdit() self.recdent_date_edit.setCalendarPopup(True) self.recdent_date_edit.setDate(QtCore.QDate.currentDate()) layout = QtGui.QFormLayout(self.recdent_groupbox) layout.addRow(_("dentist recall period (months)"), self.recdent_period_spinbox) layout.addRow(_("Next Recall"), self.recdent_date_edit) self.rechyg_groupbox = QtGui.QGroupBox( _("Hygienist Recall")) self.rechyg_groupbox.setCheckable(True) self.rechyg_groupbox.setChecked(False) self.rechyg_period_spinbox = QtGui.QSpinBox() self.rechyg_period_spinbox.setMinimum(1) self.rechyg_period_spinbox.setMaximum(24) self.rechyg_date_edit = QtGui.QDateEdit() self.rechyg_date_edit.setCalendarPopup(True) self.rechyg_date_edit.setDate(QtCore.QDate.currentDate()) layout = QtGui.QFormLayout(self.rechyg_groupbox) layout.addRow(_("hygienist recall period (months)"), self.rechyg_period_spinbox) layout.addRow(_("Next Recall"), self.rechyg_date_edit) self.recall_method_combobox = QtGui.QComboBox() self.recall_method_combobox.addItems( [_("Post"), _("email"), _("sms")]) #self.sms_reminders_checkbox = QtGui.QCheckBox( # _("sms reminders for appointments?")) #self.combined_appointment_checkbox = QtGui.QCheckBox( # _("Don't offer joint appointments")) layout = QtGui.QGridLayout(self.recall_groupbox) layout.addWidget(self.recdent_groupbox,0,0,1,2) layout.addWidget(self.rechyg_groupbox,1,0,1,2) layout.addWidget(QtGui.QLabel(_("Recall method")), 2,0) layout.addWidget(self.recall_method_combobox, 2,1) self.insertWidget(self.patient_label) self.insertWidget(self.recall_groupbox) #self.insertWidget(self.sms_reminders_checkbox) #self.insertWidget(self.combined_appointment_checkbox) QtCore.QTimer.singleShot(0, self.get_appt_prefs)
[docs] def sizeHint(self): return QtCore.QSize(500, 400)
[docs] def get_appt_prefs(self): LOGGER.warning("TODO - ApptPrefsDialog.get_appt_prefs") return appt_prefs = self.pt.appt_prefs self.recall_groupbox.setChecked(appt_prefs.recall_active) if appt_prefs.recdent_period is not None: self.recdent_groupbox.setChecked(True) self.recdent_period_spinbox.setValue(appt_prefs.recdent_period) self.recdent_date_edit.setDate(appt_prefs.recdent) if appt_prefs.rechyg_period is not None: self.rechyg_groupbox.setChecked(True) self.rechyg_period_spinbox.setValue(appt_prefs.rechyg_period) self.rechyg_date_edit.setDate(appt_prefs.rechyg) try: method_index = RECALL_METHODS.index(appt_prefs.recall_method) except ValueError: method_index = -1 self.recall_method_combobox.setCurrentIndex(method_index) self.init_edited_signals()
[docs] def init_edited_signals(self): for widg in ( self.recall_groupbox, self.recdent_groupbox, self.rechyg_groupbox, #self.sms_reminders_checkbox, #self.combined_appointment_checkbox ): widg.toggled.connect(self._set_enabled) for widg in ( self.recdent_date_edit, self.rechyg_date_edit, ): widg.dateChanged.connect(self._set_enabled) self.recdent_period_spinbox.valueChanged.connect(self._set_enabled) self.rechyg_period_spinbox.valueChanged.connect(self._set_enabled) self.recall_method_combobox.currentIndexChanged.connect( self._set_enabled)
def _set_enabled(self, *args): self.enableApply()
[docs] def item_edited(self): self.enableApply()
[docs] def apply_changed(self): print "applying changes" self.pt.appt_prefs.recall_active = self.recall_groupbox.isChecked() if self.recdent_groupbox.isChecked(): self.pt.appt_prefs.recdent_period = self.recdent_period_spinbox.value() self.pt.appt_prefs.recdent = self.recdent_date_edit.date().toPyDate() if self.rechyg_groupbox.isChecked(): self.pt.appt_prefs.rechyg_period = self.rechyg_period_spinbox.value() self.pt.appt_prefs.rechyg = self.rechyg_date_edit.date().toPyDate() i = self.recall_method_combobox.currentIndex() if i == -1: self.pt.appt_prefs.recall_method = None else: self.pt.appt_prefs.recall_method = RECALL_METHODS[i]
[docs] def exec_(self): if BaseDialog.exec_(self): self.apply_changed() return True
if __name__ == "__main__": app = QtGui.QApplication([]) from lib_openmolar import client dl = ApptPrefsDialog() if dl.exec_(): dl.apply()