def __init__(self, parent=None): super(FindAddressDialog, self).__init__(parent) self.setWindowTitle(_("Address Finder")) top_widg = QtGui.QWidget(self) form = QtGui.QFormLayout(top_widg) self.index_spin_box = QtGui.QSpinBox(top_widg) form.addRow(_("Address index"), self.index_spin_box) label = QtGui.QLabel(_('or search with the following values')) label.setWordWrap(True) label.setAlignment(QtCore.Qt.AlignCenter) self.set_accept_button_text(_("Search Now")) self.search_form = QtGui.QWidget() self.address_le = UpperCaseLineEdit() self.city_le = UpperCaseLineEdit() self.country_le = UpperCaseLineEdit() self.pcde_le = UpperCaseLineEdit() form = QtGui.QFormLayout(self.search_form) form.addRow(_("Address includes"), self.address_le) form.addRow(_("Town/City"), self.city_le) form.addRow(_("Country"), self.country_le) form.addRow(_("Post Code"), self.pcde_le) self.insertWidget(top_widg) self.insertWidget(label) self.insertWidget(self.search_form) self.result_record = None self.search_values = {} self._connect_signals()
class FindAddressDialog(BaseDialog): def __init__(self, parent=None): super(FindAddressDialog, self).__init__(parent) self.setWindowTitle(_("Address Finder")) top_widg = QtGui.QWidget(self) form = QtGui.QFormLayout(top_widg) self.index_spin_box = QtGui.QSpinBox(top_widg) form.addRow(_("Address index"), self.index_spin_box) label = QtGui.QLabel(_('or search with the following values')) label.setWordWrap(True) label.setAlignment(QtCore.Qt.AlignCenter) self.set_accept_button_text(_("Search Now")) self.search_form = QtGui.QWidget() self.address_le = UpperCaseLineEdit() self.city_le = UpperCaseLineEdit() self.country_le = UpperCaseLineEdit() self.pcde_le = UpperCaseLineEdit() form = QtGui.QFormLayout(self.search_form) form.addRow(_("Address includes"), self.address_le) form.addRow(_("Town/City"), self.city_le) form.addRow(_("Country"), self.country_le) form.addRow(_("Post Code"), self.pcde_le) self.insertWidget(top_widg) self.insertWidget(label) self.insertWidget(self.search_form) self.result_record = None self.search_values = {} self._connect_signals() def _connect_signals(self): self.index_spin_box.valueChanged.connect(self._check) self.address_le.cursorPositionChanged.connect(self._check) self.city_le.cursorPositionChanged.connect(self._check) self.country_le.cursorPositionChanged.connect(self._check) self.pcde_le.cursorPositionChanged.connect(self._check) def sizeHint(self): return QtCore.QSize(300, 300) @property def index_value(self): return self.index_spin_box.value() def Advise(self, *args): if __name__ == "__main__": print args self.emit(QtCore.SIGNAL("Advise"), *args) def _check(self, *args): enable = (self.index_spin_box.value() != 0 or self.address_le.text() != "" or self.city_le.text() != "" or self.country_le.text() != "" or self.pcde_le.text() != "") self.enableApply(enable) self.search_form.setEnabled(self.index_value == 0) def exec_(self): self.clear() if BaseDialog.exec_(self): self.apply() if self.result_record: return (self.result_record, True) else: return (None, False) def clear(self): for le in (self.address_le, self.pcde_le): le.setText("") self.result_record = None self.address_le.setFocus() self._check() def apply(self): if self.index_value != 0: self.search_values["address_id"] = self.index_value self.search_values["addr1"] = self.address_le.text() self.search_values["postal_cd"] = self.pcde_le.text() self.search_values["city"] = self.city_le.text() self.search_values["country"] = self.country_le.text() model = SETTINGS.psql_conn.get_address_matchmodel(self.search_values) match_no = model.rowCount() if not match_no: self.Advise(_("no match found"), 1) else: if match_no > 1: dl = AddressSelectionDialog(model, self.parent()) self.result_record = dl.chosen_record else: self.result_record = model.record(0)
class FindAddressDialog(BaseDialog): def __init__(self, parent=None): super(FindAddressDialog, self).__init__(parent) self.setWindowTitle(_("Address Finder")) top_widg = QtGui.QWidget(self) form = QtGui.QFormLayout(top_widg) self.index_spin_box = QtGui.QSpinBox(top_widg) form.addRow(_("Address index"), self.index_spin_box) label = QtGui.QLabel(_('or search with the following values')) label.setWordWrap(True) label.setAlignment(QtCore.Qt.AlignCenter) self.set_accept_button_text(_("Search Now")) self.search_form = QtGui.QWidget() self.address_le = UpperCaseLineEdit() self.city_le = UpperCaseLineEdit() self.country_le = UpperCaseLineEdit() self.pcde_le = UpperCaseLineEdit() form = QtGui.QFormLayout(self.search_form) form.addRow(_("Address includes"), self.address_le) form.addRow(_("Town/City"), self.city_le) form.addRow(_("Country"), self.country_le) form.addRow(_("Post Code"), self.pcde_le) self.insertWidget(top_widg) self.insertWidget(label) self.insertWidget(self.search_form) self.result_record = None self.search_values = {} self._connect_signals() def _connect_signals(self): self.index_spin_box.valueChanged.connect(self._check) self.address_le.cursorPositionChanged.connect(self._check) self.city_le.cursorPositionChanged.connect(self._check) self.country_le.cursorPositionChanged.connect(self._check) self.pcde_le.cursorPositionChanged.connect(self._check) def sizeHint(self): return QtCore.QSize(300, 300) @property def index_value(self): return self.index_spin_box.value() def Advise(self, *args): if __name__ == "__main__": print args self.emit(QtCore.SIGNAL("Advise"), *args) def _check(self, *args): enable = (self.index_spin_box.value() !=0 or self.address_le.text() != "" or self.city_le.text() != "" or self.country_le.text() != "" or self.pcde_le.text() != "") self.enableApply(enable) self.search_form.setEnabled(self.index_value == 0) def exec_(self): self.clear() if BaseDialog.exec_(self): self.apply() if self.result_record: return (self.result_record, True) else: return (None, False) def clear(self): for le in (self.address_le, self.pcde_le): le.setText("") self.result_record = None self.address_le.setFocus() self._check() def apply(self): if self.index_value != 0: self.search_values["address_id"] = self.index_value self.search_values["addr1"] = self.address_le.text() self.search_values["postal_cd"] = self.pcde_le.text() self.search_values["city"] = self.city_le.text() self.search_values["country"] = self.country_le.text() model = SETTINGS.psql_conn.get_address_matchmodel(self.search_values) match_no = model.rowCount() if not match_no: self.Advise(_("no match found"), 1) else: if match_no > 1: dl = AddressSelectionDialog(model, self.parent()) self.result_record = dl.chosen_record else: self.result_record = model.record(0)
def __init__(self, parent=None): ''' 2 arguments 1. the database into which the new address will go. 2. parent widget(optional) ''' BaseDialog.__init__(self, parent) self.setWindowTitle(_("New address")) label = QtGui.QLabel(_('Enter a New Address')) label.setWordWrap(True) label.setAlignment(QtCore.Qt.AlignCenter) widget = QtGui.QWidget() self.form = QtGui.QFormLayout(widget) self.insertWidget(label) self.insertWidget(widget) self.enableApply() self.set_accept_button_text(_("Create New Record")) self.address_record = AddressRecord() # A blank record ''' A pointer to the dialog's :doc:`AddressRecord` ''' self.address_record.setValue("modified_by", SETTINGS.user) self.address_record.setValue("status", "active") self.value_store = {} # keep a list of required values the user hasn't completed self.ommissions = [] palette = QtGui.QPalette(self.palette()) brush = QtGui.QBrush(SETTINGS.COLOURS.REQUIRED_FIELD) palette.setBrush(QtGui.QPalette.Base, brush) standard_fields, advanced_fields = self.address_record.editable_fields for editable_field in standard_fields: field_name = editable_field.fieldname display_text = editable_field.readable_fieldname field = self.address_record.field(field_name) if editable_field.type is None: field_type = field.type() else: field_type = editable_field.type if field_type == QtCore.QVariant.Date: widg = QtGui.QDateEdit(self) widg.setDate(field.value().toDate()) elif field_type == QtCore.QVariant.String: widg = UpperCaseLineEdit(self) widg.setText(field.value().toString()) elif type(field_type) == OMType: widg = QtGui.QComboBox(self) for val in field_type.allowed_values: widg.addItem(field_type.readable_dict[val], val) index = widg.findData(field.value()) widg.setCurrentIndex(index) else: widg = QtGui.QLabel("????") if editable_field.required: widg.setPalette(palette) self.form.addRow(display_text, widg) self.value_store[field_name] = (widg, field_type) self.form.itemAt(1).widget().setFocus() self.result = None
def setupUi(self): frame = QtGui.QFrame(self) self.adv_frame = QtGui.QFrame(self) self.adv_frame.setVisible(False) layout = QtGui.QHBoxLayout(self) layout.addWidget(frame) layout.addWidget(self.adv_frame) form = QtGui.QFormLayout(frame) form.setMargin(0) adv_form = QtGui.QFormLayout(self.adv_frame) for editable_field in self.address.editable_fields[0]: if editable_field == None: # None value means add a separator continue field_name = editable_field.fieldname display_text = editable_field.readable_fieldname field = self.address.field(field_name) if editable_field.type == None: field_type = field.type() else: field_type = editable_field.type if field_type == QtCore.QVariant.Date: if field.name() == 'to_date': widg = NullDateEdit(field.value(), self) else: widg = QtGui.QDateEdit() widg.setCalendarPopup(True) widg.setDate(field.value().toDate()) elif field_type == QtCore.QVariant.String: widg = UpperCaseLineEdit() widg.setText(field.value().toString()) elif type(field_type) == OMType: widg = QtGui.QComboBox() for val in field_type.allowed_values: widg.addItem(field_type.readable_dict[val], val) index = widg.findData(field.value()) widg.setCurrentIndex(index) else: print "unknown field type", field_name, field_type widg = QtGui.QLabel("????") if editable_field.advanced: label = form.labelForField(widg) adv_form.addRow(display_text, widg) else: form.addRow(display_text, widg) self.value_store[field_name] = (widg, field_type) shared_with = self.address.value("known_residents").toInt()[0] - 1 if shared_with > 0: if shared_with == 1: message = _("other person shares this address") else: message = _("other people share this address") label = QtGui.QLabel(u"<b>%s %s</b>" % (shared_with, message)) label.setAlignment(QtCore.Qt.AlignCenter) who_but = QtGui.QPushButton("?") who_but.setMaximumWidth(30) lay = QtGui.QHBoxLayout() lay.addWidget(label) lay.addWidget(who_but) form.addRow(lay) who_but.clicked.connect(self.who_but_clicked) icon = QtGui.QIcon(":icons/chain-broken.png") de_link_button = QtGui.QPushButton(icon, "unlink address/patient") de_link_button.setToolTip(_("unlink patient/address")) adv_form.addRow(de_link_button) de_link_button.clicked.connect(self.de_link)
def __init__(self, parent=None): ''' 2 arguments 1. the database into which the new patient will go. 2. parent widget(optional) ''' ExtendableDialog.__init__(self, parent) self.setWindowTitle(_("New Patient")) self.set_advanced_but_text(_("optional fields")) label = QtGui.QLabel( _('The Following Fields are required to create a New Record')) label.setWordWrap(True) label.setAlignment(QtCore.Qt.AlignCenter) widget = QtGui.QWidget() self.form = QtGui.QFormLayout(widget) advanced_widget = QtGui.QWidget() self.advanced_form = QtGui.QFormLayout(advanced_widget) self.insertWidget(label) self.insertWidget(widget) self.add_advanced_widget(advanced_widget) self.set_check_on_cancel(True) self.enableApply() self.set_accept_button_text(_("Create New Record")) self.patient = NewPatientDB() self.patient.setValue("modified_by", SETTINGS.user) self.patient.setValue("status", "active") self.patient.remove(self.patient.indexOf("time_stamp")) self.value_store = {} palette = QtGui.QPalette(self.palette()) brush = QtGui.QBrush(SETTINGS.COLOURS.REQUIRED_FIELD) palette.setBrush(QtGui.QPalette.Base, brush) for editable_field in self.patient.editable_fields: field_name = editable_field.fieldname display_text = editable_field.readable_fieldname field = self.patient.field(field_name) if editable_field.type == None: field_type = field.type() else: field_type = editable_field.type if field_type == QtCore.QVariant.Date: widg = QtGui.QDateEdit(self) widg.setDate(field.value().toDate()) elif field_type == QtCore.QVariant.String: widg = UpperCaseLineEdit(self) widg.setText(field.value().toString()) elif type(field_type) == OMType: widg = QtGui.QComboBox(self) for val in field_type.allowed_values: widg.addItem(field_type.readable_dict[val], val) index = widg.findData(field.value()) widg.setCurrentIndex(index) else: widg = QtGui.QLabel("????") if editable_field.required: widg.setPalette(palette) if editable_field.advanced: self.advanced_form.addRow(display_text, widg) else: self.form.addRow(display_text, widg) self.value_store[field_name] = (widg, field_type) self.form.itemAt(1).widget().setFocus()