TclProp and FATCAT: Tools for Declarative Programming in Tcl
Tutorial Goals
Tutorial Goals (continued)
Brief Introductions
Guide to the Tutorial
Guide to the Tutorial (cont’d)
Constraints: the Big Picture
Example #1: Fahrenheit-Celsius converter
Fahrenheit-Celsius converter with Tk interface
Fahrenheit-Celsius converter: constraint architecture
Motivation: Why Bother?
So, What Does Declarative Programming Do?
Example #2: Video Poker
Video Poker
Video Poker Question: Procedural
A Partial Answer ...
Video Poker Questions: Declarative
Writing Video Poker Declaratively
Relationships independent of “BetOne” callback and defined outside of it
But, What About Betting the Max? Dealing? Drawing?
The Declarative Way …
Another Vote for the Declarative Way
Example #3: BetSame
So, why use constraints?
Constraints in Tcl/Tk
TclProp syntax
TclProp Formulas:Fahrenheit-Celsius converter
TclProp Triggers: Video Poker
Not All Interesting Values Are Stored in Variables
Traceable references allow formulas and triggers to include widget and object attributes.
Traceable References:for Widget Attributes
Traceable References:for Canvas Item Attributes
Programming Note: Quoting and Naming References
Example #4: Keeping Buttons Equally Active
Two-way relationship
Example #5: Structured Drawing
Example #6:Structured Drawing
Example #7: Your Turn!
Bonus Example
Example #8Constraint-based color picker
Example #9: Multiple Coordinated Views
Spatial Navigation with Constraints
Trace: The Basis of TclProp
FATCAT: Extending Traces
Extending Traces with the FATCAT C API
Is it Really that Easy?
Applications & Limitations
Limitations of TclProp
How can you get started?
Conclusions
Current Plans
Email: safonov@cs.umn.edu
Home Page: www.cs.umn.edu/~safonov/
Other information: Tutorial on TclProp and FATCAT at Tcl '97 Workshop