예제 #1
0
    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()
예제 #2
0
    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()
예제 #3
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)
예제 #4
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)
예제 #5
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
예제 #6
0
    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)
예제 #7
0
    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()
예제 #8
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