raubarede/Ruiby

View on GitHub
samples/dyn.rb

Summary

Maintainability
A
2 hrs
Test Coverage
# Creative Commons BY-SA :  Regis d'Aubarede <regis.aubarede@gmail.com>
# LGPL
require_relative '../lib/Ruiby.rb'



################################ App test ###################################

Ruiby.app do
  stacki {
     labeli( <<-EEND ,font: "Arial 14",bg: "#004455", fg: "#CCCCCC")
     Test variables binding for entry/slider/CheckButton/toggleButton/radioButton/label. 
     
     Observer pattern :
     widget can be observer of a variable,
     so variable modification will be showing in all widget observer,
     and a edition by a observer widget will be  notified to all widget concerned.
     EEND
     
     v1=DynVar.stock("v1",1)
     v2=DynVar.stock("v2","99")
     v3=DynVar.stock("v3",true)
     v4=DynVar.stock("v4",1)
     flow {
       framei("Int value",margins: 20) {
         framei("Dyn widget") {
           flowi { labeli "dyn label: " ;  label v1,bg: "#FFCCCC" ; bourrage 10 }
           flowi { labeli "dyn entry : " ;  entry v1 }
           flowi { labeli "dyn radiobutton: " ;  hradio_buttons(["FALSE","TRUE","two"],v1) }
           flowi { labeli "dyn show/edit slider: " ;  islider v1 }
           flowi { labeli "dyn show     slider: " ;  islider v1 do end}
           flowi { labeli "dyn checkButton: " ;  check_button "!= 0",v3 }
           flowi { labeli "dyn toggle: " ;  toggle_button "FALSE","TRUE",v3 }
           
         }
         flowi { labeli "editor (not dyn) :" ; entry("")  { |v| v1.value=v.to_i }                    }
         flowi { 
            labeli "+/- button :"
            button("v1++") { v1.value=v1.value+1}  
            button("v1--") { v1.value=v1.value-1} 
         }   
       }
       
       framei("String value",margins: 20) {
         framei("Dyn widget") {
          flowi { labeli "dyn entry : " ; entry v2 }
         }
         flowi { labeli "editor (not dyn) :" ; entry("")  { |v| v2.value=v }  }
         flowi { labeli "+/- button :" ; button("v2++") { v2.value=v2.value+"a"};  button("v2--") { v2.value=v2.value[0..-2] }  }
       }
       framei("Boolean value",margins: 20) {
         framei("Dyn widget") {
          flowi { labeli "dyn check button: " ; check_button "True", v3 }
          flowi { labeli "dyn check button: " ; check_button "True", v3 }
         }
         labeli(v3) 
         separator
         flowi {  button("set tot true ") { v3.value=true};  button("set to false") { v3.value=false }  }
       }
     }
     flow {
       Lieu=make_DynClass({"adresse" => "unknown" , "ville" => "Rouen" })
       l1=Lieu.new({"adresse" => "1 route du chemin vert", "ville" => "Caen"})
       framei("ObjectBinding",margins: 20) {
         flowi { labeli "adresse : " ,width: 200;  entry l1.adresse}
         flowi { labeli "ville : ",width: 200 ;  entry l1.ville}
         flowi { regular
           button(" Validation ") { alert l1.to_h }
           button(" Reset ") { l1.adresse.value=""; l1.ville.value=""  }
         }
       }
       Lieu2=make_StockDynClass({"adresse" => "unknown" , "ville" => "Rouen" })
       l2=Lieu2.new("add",{"adresse" => "2 route du chemin vert", "ville" => "Caen"})
       framei("Stoked ObjectBinding",margins: 20) {
         flowi { labeli "adresse : " ,width: 200;  entry l2.adresse  }
         flowi { labeli "ville : ",width: 200 ;  entry l2.ville      }
         flowi { 
           regular
           button("Validation") { alert l2.to_h }
           button("Reset")      { l2.adresse.value=""; l2.ville.value=""  }
         }
       }
     }
     buttoni("Normal Exit") { ruiby_exit } # will save l2 data at exit time, (not done on exit!(0) )
  }
end