Beispiel #1
0
def line_edit_binder(line_edit, property, obj):
    print type(obj)
    print dir(obj)
    init_val = getattr(obj,property)
    line_edit.setText(str(init_val))
    property_type = type(init_val)
    validator, alignment = _line_edit_settings[property_type]
    line_edit.setAlignment(alignment)
    if validator : line_edit.setValidator(validator)

    def on_text_edited(text):
        try:
            value = property_type(text)
        except ValueError:
            value = None
        setattr(obj, property, value)

    line_edit.textEdited.connect(on_text_edited)

    def on_vm_changed(sender, prop_name):
        if prop_name == property: 
            value = getattr(sender, property)
            if not line_edit.hasFocus():
                line_edit.setText(str(value))
        if prop_name == property+'_validity':
            validity = getattr(sender, property+'_validity')
            print validity
            GUI_helper.set_line_edit_validity(line_edit, validity)

    validity = getattr(obj, property+'_validity', None)
    if validity:
        GUI_helper.set_line_edit_validity(line_edit, validity)
    obj.property_changed.connect(on_vm_changed)
Beispiel #2
0
 def on_vm_changed(sender, prop_name):
     if prop_name == property: 
         value = getattr(sender, property)
         if not line_edit.hasFocus():
             line_edit.setText(str(value))
     if prop_name == property+'_validity':
         validity = getattr(sender, property+'_validity')
         print validity
         GUI_helper.set_line_edit_validity(line_edit, validity)