3737# 1.0.7: added support for "Apply" button
3838# 1.0.6: code cleaning
3939
40- __version__ = '1.0.7 '
40+ __version__ = '1.0.9 '
4141__license__ = __doc__
4242
4343DEBUG = False
5656 QPixmap , QTabWidget , QApplication , QStackedWidget ,
5757 QDateEdit , QDateTimeEdit , QFont , QFontComboBox ,
5858 QFontDatabase , QGridLayout )
59- from PyQt4 .QtCore import (Qt , SIGNAL , SLOT , QSize , QString ,
59+ from PyQt4 .QtCore import (Qt , SIGNAL , SLOT , QObject , QSize ,
6060 pyqtSignature , pyqtProperty )
61- from datetime import date
61+ import datetime
6262
6363
6464class ColorButton (QPushButton ):
@@ -102,7 +102,8 @@ def text_to_qcolor(text):
102102 Avoid warning from Qt when an invalid QColor is instantiated
103103 """
104104 color = QColor ()
105- if isinstance (text , QString ):
105+ if isinstance (text , QObject ):
106+ # actually a QString, which is not provided by the new PyQt4 API:
106107 text = str (text )
107108 if not isinstance (text , (unicode , str )):
108109 return color
@@ -272,24 +273,19 @@ def setup(self):
272273 field .setCurrentIndex (selindex )
273274 elif isinstance (value , bool ):
274275 field = QCheckBox (self )
275- if value :
276- field .setCheckState (Qt .Checked )
277- else :
278- field .setCheckedState (Qt .Unchecked )
279-
276+ field .setCheckState (Qt .Checked if value else Qt .Unchecked )
280277 elif isinstance (value , float ):
281278 field = QLineEdit (repr (value ), self )
282279 elif isinstance (value , int ):
283280 field = QSpinBox (self )
281+ field .setRange (- 1e9 , 1e9 )
284282 field .setValue (value )
285- field .setMaximum (1e9 )
286- elif isinstance (value , date ):
287- if hasattr (value , 'hour' ):
288- field = QDateTimeEdit (self )
289- field .setDateTime (value )
290- else :
291- field = QDateEdit (self )
292- field .setDate (value )
283+ elif isinstance (value , datetime .datetime ):
284+ field = QDateTimeEdit (self )
285+ field .setDateTime (value )
286+ elif isinstance (value , datetime .date ):
287+ field = QDateEdit (self )
288+ field .setDate (value )
293289 else :
294290 field = QLineEdit (repr (value ), self )
295291 self .formlayout .addRow (label , field )
@@ -318,11 +314,10 @@ def get(self):
318314 value = float (field .text ())
319315 elif isinstance (value , int ):
320316 value = int (field .value ())
321- elif isinstance (value , date ):
322- if hasattr (value , 'hour' ):
323- value = field .dateTime ().toPyDateTime ()
324- else :
325- value = field .date ().toPyDate ()
317+ elif isinstance (value , datetime .datetime ):
318+ value = field .dateTime ().toPyDateTime ()
319+ elif isinstance (value , datetime .date ):
320+ value = field .date ().toPyDate ()
326321 else :
327322 value = eval (str (field .text ()))
328323 valuelist .append (value )
@@ -459,7 +454,7 @@ def fedit(data, title="", comment="", icon=None, parent=None, apply=None):
459454 # Create a QApplication instance if no instance currently exists
460455 # (e.g. if the module is used directly from the interpreter)
461456 if QApplication .startingUp ():
462- QApplication ([])
457+ _app = QApplication ([])
463458
464459 dialog = FormDialog (data , title , comment , icon , parent , apply )
465460 if dialog .exec_ ():
@@ -481,7 +476,8 @@ def create_datalist_example():
481476 ('font' , ('Arial' , 10 , False , True )),
482477 ('color' , '#123409' ),
483478 ('bool' , True ),
484- ('datetime' , date (2010 , 10 , 10 )),
479+ ('date' , datetime .date (2010 , 10 , 10 )),
480+ ('datetime' , datetime .datetime (2010 , 10 , 10 )),
485481 ]
486482
487483 def create_datagroup_example ():
0 commit comments