def __init__(self, mobjIdList: List[str] = None, x: XGeschaeftsreise = None, parent=None): QWidget.__init__(self, parent) self._xgeschaeftsreise = x self._layout = QFormLayout() self.setLayout(self._layout) self._cboMobjId = QComboBox() self._sdVon = SmartDateEdit() self._sdBis = SmartDateEdit() self._beZiel = BaseEdit() self._meZweck = MultiLineEdit() self._ieKm = IntEdit() self._iePersonen = IntEdit() self._beUebernachtung = BaseEdit() self._feUebernachtKosten = FloatEdit() # self._btnSave = QPushButton( "Speichern" ) # self._btnSaveClose = QPushButton( "Speichern und Schließen" ) # self._btnCancel = QPushButton( "Abbrechen" ) self._createGui() if mobjIdList: self.setMietobjekte(mobjIdList) if x: self.setData(x)
def __init__(self): QWidget.__init__( self ) self._edName = BaseEdit() self._edBranche = BaseEdit() self._edAdresse = BaseEdit() self._layout = BaseGridLayout() self.setLayout( self._layout ) self._createGui()
def __init__( self, notiz:XNotiz=None, parent=None ): QWidget.__init__( self, parent ) self.setWindowTitle( "Bearbeiten einer Notiz" ) self._layout = QGridLayout( self ) self._bezug = BaseEdit() self._btnAuswahlBezug_Firma = QPushButton( text="F" ) self._btnAuswahlBezug_Firma.clicked.connect( self.bezugAuswahlFirmaPressed.emit ) self._btnAuswahlBezug_Vw = QPushButton( text="V" ) self._btnAuswahlBezug_Vw.clicked.connect( self.bezugAuswahlVwPressed.emit ) self._btnAuswahlBezug_Mieter = QPushButton( text="M" ) self._btnAuswahlBezug_Mieter.clicked.connect( self.bezugAuswahlMieterPressed.emit ) self._caption = BaseEdit() self._edi = MultiLineEdit() self._erledigt = CheckBox( "erledigt" ) self._notiz:XNotiz = None self._createGui() if notiz: self.setNotiz( notiz )
def __init__(self): QWidget.__init__(self) ModifyInfo.__init__(self) self._layout = QGridLayout() self._btnSave = QPushButton() # altes Mietverhältnis self._edAlterMieter = BaseEdit() self._edAlteNettomiete = FloatEdit() self._edAlteNKV = FloatEdit() self._edAlteKaution = IntEdit() self._sdEndeMietverh = SmartDateEdit() self._sdEndeMietverh.textChanged.connect(self.onChange) # neues Mietverhältnis self._neuesMietvhView = MietverhaeltnisView(enableBrowsing=False) self._neuesMietvhView.dataChanged.connect(self.onChange) self._mieterwechsel: XMieterwechsel = None self._createGui() self.connectWidgetsToChangeSlot()
class NotizEditor( QWidget ): bezugAuswahlFirmaPressed = Signal() bezugAuswahlVwPressed = Signal() bezugAuswahlMieterPressed = Signal() def __init__( self, notiz:XNotiz=None, parent=None ): QWidget.__init__( self, parent ) self.setWindowTitle( "Bearbeiten einer Notiz" ) self._layout = QGridLayout( self ) self._bezug = BaseEdit() self._btnAuswahlBezug_Firma = QPushButton( text="F" ) self._btnAuswahlBezug_Firma.clicked.connect( self.bezugAuswahlFirmaPressed.emit ) self._btnAuswahlBezug_Vw = QPushButton( text="V" ) self._btnAuswahlBezug_Vw.clicked.connect( self.bezugAuswahlVwPressed.emit ) self._btnAuswahlBezug_Mieter = QPushButton( text="M" ) self._btnAuswahlBezug_Mieter.clicked.connect( self.bezugAuswahlMieterPressed.emit ) self._caption = BaseEdit() self._edi = MultiLineEdit() self._erledigt = CheckBox( "erledigt" ) self._notiz:XNotiz = None self._createGui() if notiz: self.setNotiz( notiz ) def _createGui( self ): l = self._layout r = c = 0 self._bezug.setPlaceholderText( "Bezug der Notiz" ) l.addWidget( self._bezug ) self._btnAuswahlBezug_Firma.setFixedWidth( 30 ) self._btnAuswahlBezug_Firma.setToolTip( "Auswahldialog Firma öffnen" ) self._btnAuswahlBezug_Vw.setFixedWidth( 30 ) self._btnAuswahlBezug_Vw.setToolTip( "Auswahldialog Verwalter öffnen" ) self._btnAuswahlBezug_Mieter.setFixedWidth( 30 ) self._btnAuswahlBezug_Mieter.setToolTip( "Auswahldialog Mieter öffnen" ) buttonsLayout = QHBoxLayout() buttonsLayout.addWidget( self._btnAuswahlBezug_Firma ) buttonsLayout.addWidget( self._btnAuswahlBezug_Vw ) buttonsLayout.addWidget( self._btnAuswahlBezug_Mieter ) c += 1 l.addLayout( buttonsLayout, r, c ) r += 1 c = 0 self._caption.setPlaceholderText( "Überschrift der Notiz" ) l.addWidget( self._caption, r, c, 1, 2 ) r += 1 l.addWidget( self._edi, r, c, 1, 2 ) r += 1 l.addWidget( self._erledigt, r, c ) self.setLayout( l ) def _dataToGui( self ) -> None: x = self._notiz self._bezug.setText( x.bezug ) self._caption.setText( x.ueberschrift ) self._edi.setText( x.text ) self._erledigt.setChecked( (x.erledigt == 1) ) def guiToData( self ) -> None: x = self._notiz x.bezug = self._bezug.text() x.ueberschrift = self._caption.text() x.text = self._edi.toPlainText() x.erledigt = 1 if self._erledigt.isChecked() else 0 def setNotiz( self, notiz:XNotiz ): self._notiz = notiz self._bezug.setText( notiz.bezug ) self._caption.setText( notiz.ueberschrift ) self._edi.setText( notiz.text ) self._erledigt.setChecked( True if notiz.erledigt == 1 else 0 ) def setBezug( self, bezug:str ): self._bezug.setText( bezug ) def getNotizCopyWithChanges( self ) -> XNotiz: """ liefert eine Kopie des in ARbeit befindlichen XNotiz-Objekts. Die in der GUI vorgenommenen Änderungen sind darin enthalten. Die Änderungen sind NICHT in der Original-Notiz enthalten! Das Einfügen der Änderungen in die Original-Notiz passiert durch Aufruf von guiToData(). :return: eine Kopie der Original-Notiz mit Änderungen """ xcopy = copy.copy( self._notiz ) xcopy.bezug = self._bezug.text() xcopy.ueberschrift = self._caption.text() xcopy.text = self._edi.toPlainText() xcopy.erledigt = 1 if self._erledigt.isChecked() else 0 return xcopy
class MieterwechselView(QWidget, ModifyInfo): # IccView ): """ Enthält ein paar Felder für das aktive ("alte") Mietverhältnis, sowie eine MietverhaeltnisView für das Folge-MV. Die Methode onChange() der MietverhaeltnisView wird umgebogen auf die onChange()-Methode dieser View. """ mieterwechsel_save = Signal() def __init__(self): QWidget.__init__(self) ModifyInfo.__init__(self) self._layout = QGridLayout() self._btnSave = QPushButton() # altes Mietverhältnis self._edAlterMieter = BaseEdit() self._edAlteNettomiete = FloatEdit() self._edAlteNKV = FloatEdit() self._edAlteKaution = IntEdit() self._sdEndeMietverh = SmartDateEdit() self._sdEndeMietverh.textChanged.connect(self.onChange) # neues Mietverhältnis self._neuesMietvhView = MietverhaeltnisView(enableBrowsing=False) self._neuesMietvhView.dataChanged.connect(self.onChange) self._mieterwechsel: XMieterwechsel = None self._createGui() self.connectWidgetsToChangeSlot() def onChange(self): if not self._btnSave.isEnabled(): self.setSaveButtonEnabled() def isChanged(self) -> bool: return super().isChanged() or self._neuesMietvhView.isChanged() def resetChangeFlag(self): super().resetChangeFlag() self._neuesMietvhView.resetChangeFlag() def setSaveButtonEnabled(self, enabled: bool = True): self._btnSave.setEnabled(enabled) def _createGui(self): self._createSaveButton() r = self._createGuiAlterMieter() r += 1 self._layout.addWidget(QLabel(""), r, 0) r += 1 self._createGuiNeuerMieter(r) self.setLayout(self._layout) def _createSaveButton(self): btn = self._btnSave btn.clicked.connect(self.mieterwechsel_save.emit) btn.setFlat(True) btn.setEnabled(False) btn.setToolTip("Änderungen dieser View speichern") icon = QIcon("./images/save_30.png") btn.setIcon(icon) size = QSize(32, 32) btn.setFixedSize(size) iconsize = QSize(30, 30) btn.setIconSize(iconsize) hbox = QHBoxLayout() hbox.addWidget(btn) self._layout.addLayout(hbox, 0, 0, alignment=Qt.AlignLeft) def _createGuiAlterMieter(self) -> int: l = self._layout r = 1 c = 0 lbl = BaseLabel("Aktuelles / letztes Mietverhältnis ") lbl.setFont(QFont("Arial", 12, QFont.Bold)) l.addWidget(lbl, r, c, 1, 2) r += 1 lbl = QLabel("Mieter: ") l.addWidget(lbl, r, c) self._edAlterMieter.setReadOnly(True) l.addWidget(self._edAlterMieter, r, c + 1) r += 1 lbl = BaseLabel("Nettomiete / NKV : ") l.addWidget(lbl, r, c) c += 1 hbox = QHBoxLayout() self._edAlteNettomiete.setReadOnly(True) self._edAlteNettomiete.setMaximumWidth(100) hbox.addWidget(self._edAlteNettomiete) self._edAlteNKV.setReadOnly(True) self._edAlteNKV.setMaximumWidth(100) hbox.addWidget(self._edAlteNKV) l.addLayout(hbox, r, c, Qt.AlignLeft) c = 0 r += 1 lbl = BaseLabel("Kaution: ") l.addWidget(lbl, r, c) c += 1 self._edAlteKaution.setReadOnly(True) self._edAlteKaution.setMaximumWidth(100) l.addWidget(self._edAlteKaution, r, c) c = 0 r += 1 lbl = QLabel("Ende des Mietverhältnisses: ") l.addWidget(lbl, r, c) self._sdEndeMietverh.setMaximumWidth(100) l.addWidget(self._sdEndeMietverh, r, c + 1) return r def _createGuiNeuerMieter(self, r: int): c = 0 l = self._layout lbl = BaseLabel("Neues Mietverhältnis") lbl.setFont(QFont("Arial", 12, QFont.Bold)) l.addWidget(lbl, r, c) r += 1 l.addWidget(self._neuesMietvhView, r, c, 1, 2) def setMieterwechselData(self, xmieterwechsel: XMieterwechsel): self._mieterwechsel = xmieterwechsel self._setAltesMietverhaeltnisFields(xmieterwechsel.mietverhaeltnis_alt) self._setNeuesMietverhaeltnisFields( xmieterwechsel.mietverhaeltnis_next) self.setSaveButtonEnabled(False) self.resetChangeFlag() def getMieterwechselData(self) -> XMieterwechsel: return self._mieterwechsel def _setAltesMietverhaeltnisFields(self, xmv: XMietverhaeltnis): self._edAlterMieter.setText(xmv.name + ", " + xmv.vorname) self._edAlteNettomiete.setFloatValue(xmv.nettomiete) self._edAlteNKV.setFloatValue(xmv.nkv) if xmv.kaution: self._edAlteKaution.setIntValue(xmv.kaution) self._sdEndeMietverh.setDateFromIsoString(xmv.bis) def _setNeuesMietverhaeltnisFields(self, xmv: XMietverhaeltnis): self._neuesMietvhView.setMietverhaeltnisData(xmv) self._neuesMietvhView.resetChangeFlag() def getMieterwechselDataCopyWithChanges(self) -> XMieterwechsel: xmwcopy = copy.copy(self._mieterwechsel) mvneu: XMietverhaeltnis = self._neuesMietvhView.getMietverhaeltnisCopyWithChanges( ) xmwcopy.mietverhaeltnis_next = mvneu xmwcopy.mietverhaeltnis_alt.bis = self._sdEndeMietverh.getDate() return xmwcopy def applyChanges(self): if self.isChanged(): self._neuesMietvhView.applyChanges() # nur das Ende-Datum ist bei den Daten des alten MV änderbar self._mieterwechsel.mietverhaeltnis_alt.bis = self._sdEndeMietverh.getDate( ) def getModel(self): return None
def __init__(self, mietverhaeltnis: XMietverhaeltnis = None, withSaveButton: bool = False, enableBrowsing=False, parent=None): QWidget.__init__(self, parent) ModifyInfo.__init__(self) self._mietverhaeltnis: XMietverhaeltnis = None self._withSaveButton = withSaveButton self._enableBrowsing = enableBrowsing # ob die Browse-Buttons angezeigt werden self._layout = QGridLayout() self._btnSave = QPushButton() self._btnVor = QPushButton() self._btnRueck = QPushButton() self._sdBeginnMietverh = SmartDateEdit() self._sdEndeMietverh = SmartDateEdit() self._edMieterName_1 = BaseEdit() self._edMieterVorname_1 = BaseEdit() self._edMieterName_2 = BaseEdit() self._edMieterVorname_2 = BaseEdit() self._edMieterTelefon = BaseEdit() self._edMieterMobil = BaseEdit() self._edMieterMailto = BaseEdit() self._edAnzPers = IntEdit() self._edNettomiete = FloatEdit() self._edNkv = FloatEdit() self._edKaution = IntEdit() self._sdKautionBezahltAm = SmartDateEdit() self._txtBemerkung1 = MultiLineEdit() self._txtBemerkung2 = MultiLineEdit() self._createGui() if mietverhaeltnis: self.setMietverhaeltnisData(mietverhaeltnis) #self.connectWidgetsToChangeSlot( self.onChange ) self.connectWidgetsToChangeSlot(self.onChange, self.onResetChangeFlag)
class MietverhaeltnisView(QWidget, ModifyInfo): save = Signal() dataChanged = Signal() nextMv = Signal() prevMv = Signal() def __init__(self, mietverhaeltnis: XMietverhaeltnis = None, withSaveButton: bool = False, enableBrowsing=False, parent=None): QWidget.__init__(self, parent) ModifyInfo.__init__(self) self._mietverhaeltnis: XMietverhaeltnis = None self._withSaveButton = withSaveButton self._enableBrowsing = enableBrowsing # ob die Browse-Buttons angezeigt werden self._layout = QGridLayout() self._btnSave = QPushButton() self._btnVor = QPushButton() self._btnRueck = QPushButton() self._sdBeginnMietverh = SmartDateEdit() self._sdEndeMietverh = SmartDateEdit() self._edMieterName_1 = BaseEdit() self._edMieterVorname_1 = BaseEdit() self._edMieterName_2 = BaseEdit() self._edMieterVorname_2 = BaseEdit() self._edMieterTelefon = BaseEdit() self._edMieterMobil = BaseEdit() self._edMieterMailto = BaseEdit() self._edAnzPers = IntEdit() self._edNettomiete = FloatEdit() self._edNkv = FloatEdit() self._edKaution = IntEdit() self._sdKautionBezahltAm = SmartDateEdit() self._txtBemerkung1 = MultiLineEdit() self._txtBemerkung2 = MultiLineEdit() self._createGui() if mietverhaeltnis: self.setMietverhaeltnisData(mietverhaeltnis) #self.connectWidgetsToChangeSlot( self.onChange ) self.connectWidgetsToChangeSlot(self.onChange, self.onResetChangeFlag) def onChange(self, newcontent: str = None): if not self._btnSave.isEnabled(): self.setSaveButtonEnabled() self.dataChanged.emit() def onResetChangeFlag(self): self.setSaveButtonEnabled(False) def setSaveButtonEnabled(self, enabled: bool = True): self._btnSave.setEnabled(enabled) def _createGui(self): hbox = QHBoxLayout() if self._withSaveButton: self._createSaveButton(hbox) if self._enableBrowsing: self._createVorRueckButtons(hbox) self._layout.addLayout(hbox, 0, 0, alignment=Qt.AlignLeft) self._addHorizontalLine(1) self._createFelder(2) self.setLayout(self._layout) def _createSaveButton(self, hbox): btn = self._btnSave btn.clicked.connect(self.save.emit) btn.setFlat(True) btn.setEnabled(False) btn.setToolTip("Änderungen am Mietverhältnis speichern") icon = ImageFactory.inst().getSaveIcon() #icon = QIcon( "./images/save_30.png" ) btn.setIcon(icon) size = QSize(32, 32) btn.setFixedSize(size) iconsize = QSize(30, 30) btn.setIconSize(iconsize) hbox.addWidget(btn) def _createVorRueckButtons(self, hbox): self._prepareButton(self._btnRueck, ImageFactory.inst().getPrevIcon(), "Zum vorigen Mietverhältnis blättern", self.prevMv) hbox.addWidget(self._btnRueck) self._prepareButton(self._btnVor, ImageFactory.inst().getNextIcon(), "Zum nächsten Mietverhältnis blättern", self.nextMv) hbox.addWidget(self._btnVor) def _prepareButton(self, btn: QPushButton, icon: QIcon, tooltip: str, signal: Signal): btn.setFlat(True) btn.setEnabled(True) btn.setToolTip(tooltip) btn.setIcon(icon) size = QSize(32, 32) btn.setFixedSize(size) iconsize = QSize(30, 30) btn.setIconSize(iconsize) btn.clicked.connect(signal.emit) def _addHorizontalLine(self, r: int): hline = HLine() self._layout.addWidget(hline, r, 0, 1, 2) return r + 1 def _createFelder(self, r): c = 0 l = self._layout lbl = QLabel("Beginn: ") l.addWidget(lbl, r, c) c += 1 self._sdBeginnMietverh.setMaximumWidth(100) l.addWidget(self._sdBeginnMietverh, r, c) c = 0 r += 1 l.addWidget(BaseLabel("Ende: "), r, c) c += 1 self._sdEndeMietverh.setMaximumWidth(100) l.addWidget(self._sdEndeMietverh, r, c) c = 0 r += 1 lbl = BaseLabel("Name / Vorname 1. Mieter: ") l.addWidget(lbl, r, c) c += 1 hbox = QHBoxLayout() hbox.addWidget(self._edMieterName_1) hbox.addWidget(self._edMieterVorname_1) l.addLayout(hbox, r, c) c = 0 r += 1 lbl = BaseLabel("Name / Vorname 2. Mieter: ") l.addWidget(lbl, r, c) c += 1 hbox = QHBoxLayout() hbox.addWidget(self._edMieterName_2) hbox.addWidget(self._edMieterVorname_2) l.addLayout(hbox, r, c) c = 0 r += 1 l.addWidget(BaseLabel("Telefon: "), r, c) c += 1 l.addWidget(self._edMieterTelefon, r, c) c = 0 r += 1 l.addWidget(BaseLabel("Mobil: "), r, c) c += 1 l.addWidget(self._edMieterMobil, r, c) c = 0 r += 1 l.addWidget(BaseLabel("Mailadresse: "), r, c) c += 1 l.addWidget(self._edMieterMailto, r, c) c = 0 r += 1 l.addWidget(BaseLabel("Anzahl Personen i.d. Whg: "), r, c) c += 1 self._edAnzPers.setMaximumWidth(20) l.addWidget(self._edAnzPers, r, c) c = 0 r += 1 l.addWidget(BaseLabel("Nettomiete / NKV: "), r, c) c += 1 self._edNettomiete.setMaximumWidth(100) #self._edNettomiete.setEnabled( False ) self._edNkv.setMaximumWidth(100) #self._edNkv.setEnabled( False ) hbox = QHBoxLayout() hbox.addWidget(self._edNettomiete) hbox.addWidget(self._edNkv) hbox.addWidget( BaseLabel( " Änderungen der Miete und NKV über Dialog 'Sollmiete'")) l.addLayout(hbox, r, c, alignment=Qt.AlignLeft) c = 0 r += 1 l.addWidget(BaseLabel("Kaution: "), r, c) c += 1 self._edKaution.setMaximumWidth(100) l.addWidget(self._edKaution, r, c) c = 0 r += 1 l.addWidget(BaseLabel("Kaution bezahlt am: "), r, c) c += 1 self._sdKautionBezahltAm.setMaximumWidth(100) l.addWidget(self._sdKautionBezahltAm, r, c) c = 0 r += 1 l.addWidget(BaseLabel(""), r, c) r += 1 l.addWidget(BaseLabel("Bemerkungen: "), r, c) c += 1 hbox = QHBoxLayout() hbox.addWidget(self._txtBemerkung1) hbox.addWidget(self._txtBemerkung2) l.addLayout(hbox, r, c) # cols = self._layout.columnCount() # print( cols, " columns" ) def setNettoUndNkvEnabled(self, enabled: bool = True): self._edNettomiete.setEnabled(enabled) self._edNkv.setEnabled(enabled) def _guiToData(self, x: XMietverhaeltnis): """ Überträgt die Änderungen, die der User im GUI gemacht hat, in das übergebene XMietverhaeltnis-Objekt :param x: XMietverhaeltnis-Objekt, in das die geänderten Daten übertragen werden :return: """ x.von = self._sdBeginnMietverh.getDate() x.bis = self._sdEndeMietverh.getDate() x.name = self._edMieterName_1.text() x.vorname = self._edMieterVorname_1.text() x.name2 = self._edMieterName_2.text() x.vorname2 = self._edMieterVorname_2.text() x.telefon = self._edMieterTelefon.text() x.mobil = self._edMieterMobil.text() x.mailto = self._edMieterMailto.text() x.anzahl_pers = self._edAnzPers.getIntValue() x.nettomiete = self._edNettomiete.getFloatValue() x.nkv = self._edNkv.getFloatValue() x.kaution = self._edKaution.getIntValue() x.kaution_bezahlt_am = self._sdKautionBezahltAm.getDate() x.bemerkung1 = self._txtBemerkung1.toPlainText() x.bemerkung2 = self._txtBemerkung2.toPlainText() def getMietverhaeltnisCopyWithChanges(self) -> XMietverhaeltnis: """ gibt eine Kopie der Mietverhaeltnis-Schnittstellendaten mit Änderungen zurück. Diese Kopie kann für Validierungszwecke verwendet werden. :return: Kopie von XMietverhaeltnis """ mvcopy = copy.copy(self._mietverhaeltnis) self._guiToData(mvcopy) return mvcopy def applyChanges(self): """ überträgt die Änderungen, die der User im GUI gemacht hat, in das originale XMietverhaeltnis-Objekt. """ if self.isChanged(): self._guiToData(self._mietverhaeltnis) def setMietverhaeltnisData(self, mv: XMietverhaeltnis): """ Daten, die im GUI angezeigt und geändert werden können. :param mv: :return: """ self._mietverhaeltnis = mv if mv.von: self._sdBeginnMietverh.setDateFromIsoString(mv.von) if mv.bis: self._sdEndeMietverh.setDateFromIsoString(mv.bis) self._edMieterName_1.setText(mv.name) self._edMieterVorname_1.setText(mv.vorname) self._edMieterName_2.setText(mv.name2) self._edMieterVorname_2.setText(mv.vorname2) self._edMieterTelefon.setText(mv.telefon) self._edMieterMobil.setText(mv.mobil) self._edMieterMailto.setText(mv.mailto) self._edAnzPers.setIntValue(mv.anzahl_pers) self._edNettomiete.setFloatValue(mv.nettomiete) self._edNkv.setFloatValue(mv.nkv) if mv.kaution: self._edKaution.setIntValue(mv.kaution) if mv.kaution_bezahlt_am: self._sdKautionBezahltAm.setDateFromIsoString( mv.kaution_bezahlt_am) self._txtBemerkung1.setText(mv.bemerkung1) self._txtBemerkung2.setText(mv.bemerkung2) self.resetChangeFlag() def clear(self): self._sdBeginnMietverh.clear() self._sdEndeMietverh.clear() self._edMieterName_1.clear() self._edMieterVorname_1.clear() self._edMieterName_2.clear() self._edMieterVorname_2.clear() self._edMieterTelefon.clear() self._edMieterMobil.clear() self._edMieterMailto.clear() self._edAnzPers.clear() self._edNettomiete.clear() self._edNkv.clear() self._edKaution.clear() self._sdKautionBezahltAm.clear() self._txtBemerkung1.clear() self._txtBemerkung2.clear()
class GeschaeftsreiseEditView(QWidget): def __init__(self, mobjIdList: List[str] = None, x: XGeschaeftsreise = None, parent=None): QWidget.__init__(self, parent) self._xgeschaeftsreise = x self._layout = QFormLayout() self.setLayout(self._layout) self._cboMobjId = QComboBox() self._sdVon = SmartDateEdit() self._sdBis = SmartDateEdit() self._beZiel = BaseEdit() self._meZweck = MultiLineEdit() self._ieKm = IntEdit() self._iePersonen = IntEdit() self._beUebernachtung = BaseEdit() self._feUebernachtKosten = FloatEdit() # self._btnSave = QPushButton( "Speichern" ) # self._btnSaveClose = QPushButton( "Speichern und Schließen" ) # self._btnCancel = QPushButton( "Abbrechen" ) self._createGui() if mobjIdList: self.setMietobjekte(mobjIdList) if x: self.setData(x) def _createGui(self): """ :return: """ l = self._layout self._cboMobjId.setMaximumWidth(100) l.addRow("Mietobjekt: ", self._cboMobjId) self._sdVon.setMaximumWidth(100) l.addRow("Beginn: ", self._sdVon) self._sdBis.setMaximumWidth(100) l.addRow("Ende: ", self._sdBis) l.addRow("Ziel: ", self._beZiel) self._meZweck.setMaximumHeight(80) l.addRow("Zweck: ", self._meZweck) l.addRow("Übernachtung: ", self._beUebernachtung) self._feUebernachtKosten.setMaximumWidth(55) l.addRow("Übernacht.-Kosten: ", self._feUebernachtKosten) self._ieKm.setMaximumWidth(55) l.addRow("Gefahrene Kilometer: ", self._ieKm) self._iePersonen.setMaximumWidth(55) l.addRow("Anz.Personen: ", self._iePersonen) dummy = QWidget() dummy.setFixedHeight(20) l.addRow("", dummy) # boxl = QHBoxLayout() # boxl.addWidget( self._btnSave ) # boxl.addWidget( self._btnSaveClose ) # boxl.addWidget( self._btnCancel ) # l.addRow( boxl ) def _setFieldsFromData(self): """ :return: """ x = self._xgeschaeftsreise self._cboMobjId.setCurrentText(x.mobj_id) self._sdVon.setDateFromIsoString(x.von) self._sdBis.setDateFromIsoString(x.bis) self._beZiel.setText(x.ziel) self._meZweck.setText(x.zweck) self._ieKm.setIntValue(x.km) self._iePersonen.setIntValue(x.personen) self._beUebernachtung.setText(x.uebernachtung) self._feUebernachtKosten.setFloatValue(x.uebernacht_kosten) def _setDataFromFields(self, x: XGeschaeftsreise): x.mobj_id = self._cboMobjId.currentText() x.von = self._sdVon.getDate() x.bis = self._sdBis.getDate() x.ziel = self._beZiel.text() x.zweck = self._meZweck.toPlainText() x.km = self._ieKm.getIntValue() x.personen = self._iePersonen.getIntValue() x.uebernachtung = self._beUebernachtung.text() x.uebernacht_kosten = self._feUebernachtKosten.getFloatValue() def setMietobjekte(self, mobj_idList: List[str]): """ Versorgt die ComboBox mit den möglichen Werten (Mietobjekten) Diese Methode muss VOR setData() aufgerufen werden. :param mobj_idList: :return: """ self._cboMobjId.addItems(mobj_idList) def getDataCopyWithChanges(self) -> XGeschaeftsreise: x = copy.copy(self._xgeschaeftsreise) self._setDataFromFields(x) return x def applyChanges(self) -> XGeschaeftsreise: self._setDataFromFields(self._xgeschaeftsreise) return self._xgeschaeftsreise def setData(self, x: XGeschaeftsreise) -> None: self._xgeschaeftsreise = x self._setFieldsFromData()