QGIS 2.0 has changed the visualisation of a form opened from the attribute table: instead of opening the form in a separate window, the form is opened in the same one. This is not a problem, but all the buttons disappear...
I created my own form with Qt4 and all the logic with PyQt and the majority of the constraints are associated to the Ok button: now my logic is no longer useful.
Is it possible to re-enable these buttons in QGIS 2.0.1?
I copy here part of my code, maybe someone can help me.
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from definizioni import *
myDialog = None
denominazione = None
denominazioneCheck = None
def formOpen(dialog,layerid,featureid):
global myDialog
myDialog = dialog
global denominazione, denominazioneCheck
denominazione = myDialog.findChild(QLineEdit,"denominazione")
denominazione.textChanged.connect(denominazione_onTextChanged)
if (denominazione.text() == "NULL"):
denominazione.setText("")
else:
temp = denominazione.text()
denominazione.setText("null")
denominazione.setText(temp)
buttonBox = myDialog.findChild(QDialogButtonBox,"buttonBox")
# Disconnect the signal that QGIS has wired up for the dialog to the button box.
buttonBox.accepted.disconnect(myDialog.accept)
# Wire up our own signals.
buttonBox.accepted.connect(validate)
buttonBox.rejected.connect(myDialog.reject)
self.connect(buttonBox, SIGNAL("accepted()"), self.accept)
def denominazione_onTextChanged(text):
global denominazioneCheck
if not validateStringNotNull(text):
denominazione.setStyleSheet("background-color: rgba(255, 107, 107, 150);")
denominazioneCheck = -2
else:
if not validateAlpha(text):
denominazione.setStyleSheet("background-color: rgba(255, 107, 107, 150);")
denominazioneCheck = -1
else:
denominazione.setStyleSheet("")
denominazioneCheck = 1
# Valido la form
def validate():
if denominazioneCheck == -2:
messageBoxErrore(myDialog,"La denominazione di un comune non puo' essere vuota")
else:
if denominazioneCheck == -1:
messageBoxErrore(myDialog,"La denominazione di un comune non puo' contenere numeri")
else:
# Return the form as accepted to QGIS.
myDialog.accept()
I need that the field of the form respect some constraints, as you can see.
In case that constraints are not fulfilled I don't want that the record is stored in the database (I don't want accept() signal is called!).
No comments:
Post a Comment