My idea can be like this:
now we have :
label = TkLabel.new(self){
text 'Arcadia'
font conf('font') [or Arcadia.conf('font')]
place('width' => '190','x' => 110,'y' => 10,'height' => 25)
}
if we create a new method:
def conf(_property, _change_callback_proc)
...
@hash_property_callbacks[_property] << _change_callback_proc
...
end
we rewriete :
label = TkLabel.new(self){
text 'Arcadia'
font conf('font', proc{|new_value| self.configure('font'=> new_value)})
place('width' => '190','x' => 110,'y' => 10,'height' => 25)
}
when you edit properties file throws a wizard then use
@hash_property_callbacks[_property].each{|cb|
cb.call(new_value)
}