Next: Contents

XF

An interactive Interface Builder (Draft)

Technische Universität Berlin
Institut für Angewandte Informatik
Fachbereich 13 (Informatik)
Lehrgebiet Softwaretechnik
written by:
Sven Delmas
garfield@cs.tu-berlin.de
Abstract

XF is an integrated programming environment that supports the development of graphical user interfaces. The described programming system enables developers who don't want to dive into the complex task of window system programming, to construct sophisticated graphical applications in a very short time. XF takes advantage of Tk , a -like widget set that is accessible through Tcl , a very efficient interpreted programming language. The flexibility of this approach allows to build or modify application programs while they are running. This makes it possible to test the effect of modifications immediately without incurring costly re-compilation cycles.

Many users of XF have reported that the tool is very easy to use, and allows rapid construction of graphical interfaces. Nevertheless it does not restrict the developer when he wants to manipulate the graphical interface in more detail. Support for libraries of reusable interface components and functions leads to further reductions of the development time, and also supports a standardized look & feel. It is possible to merge external code into the application, and to reuse pre-existing code. Berlin, 19 October. 1993

Acknowledgments

I owe gratitude to many people who supported and inspired me when implementing the program and writing this paper.

Special thanks to Wilfried Koch and Axel Mahler who both attended my work and made suggestions for XF and the paper. Andreas Lampen, who also contributed many ideas, both for the paper and for XF . Many people around the world who have used XF and reported bugs, suggestions and comments on the program.

The BYO team, that developed BYO which was the trigger for the development of XF . This program contains the basic concept for XF , and showed how easy it is to write a powerful interface builder based upon Tcl/Tk .

Very special thanks to John Ousterhout, the inventor of Tcl/Tk . The power and flexibility of these packages made the development of XF possible (and his answers to my questions and suggestions).

My sister Britta. She corrected my numerous spelling errors, and my lousy English, partially supported by ispell. And finally a big (unnamed) soda pop producer, for providing the coffein that was necessary to keep my brain going (The choice of an old generation).

Sven Delmas

- Contents
- Introduction
  - Interface builders
  - Terminology
  - Roadmap
- The Design of XF
  - Interface builders
  - Existing interface builders
  - The XF design
- Tcl/Tk
  - Tcl
    - Syntax
    - Datatypes
    - Variables
    - Commands
    - Quoting
  - Tk
    - Widget classes
    - Inserting widgets
    - Widget commands
    - Widget configuration
    - Geometry handling
      - The placer
      - The packer
    - Other Tk commands
- Using XF
  - The first steps
    - Start
    - Inserting widgets into the widget tree
    - Layouting widgets
      - Layouting with the placer
      - Layouting with the packer
    - Configuring widgets
    - Procedures
  - XF and Tcl/Tk
    - Text widgets
    - Entry widgets
    - Scale widgets
    - Checkbutton widgets
    - Radiobutton widgets
    - Send
  - XF constraints
    - Restrictions
    - Pitfalls
  - Advanced features
    - Templates
    - Toplevel windows
    - Source modules
    - Levels for procedures and bindings
- The Implementation of XF
  - The generated code
  - Extending XF
    - Supporting new widgets
      - XFAdd.<WidgetClass>
      - XFAddTmp.<WidgetClass>
      - XFConfig.<WidgetClass>
      - XFSaveWidget.<WidgetClass>
      - XFSaveSpecial.<WidgetClass>
    - Initializations at startup
    - Adding procedures named XFProc
- Conclusion
  - Epilogue
  - Missing features
- External Tools
  - Edge
  - Editors
    - TkEmacs
    - Emacs
    - vi
  - ShapeTools
    - Saving procedures
    - Retrieving modules
  - xfappdef
  - xfhardcopy
    - Hardcopy commands
  - xfhelp
    - Help pages
  - xfpixmap
  - xftutorial
    - The script files
- XF User's Guide
  - Main
    - XFProcMain
  - File
    - XFProcFileEnterTCL
    - XFProcFileInsert
    - XFProcFileNew
    - XFProcFileLoad
    - XFProcFileQuit
    - XFProcFileSave
    - XFProcFileSaveAs
  - Configuration
    - XFProcConfAddCurrentItem
    - XFProcConfBinding
    - XFProcConfBindingAll
    - XFProcConfBindingClass
    - XFProcConfConfigure
    - XFProcConfGeometryDefault
    - XFProcConfInsertTemplate
    - XFProcConfInsertWidgetDefault
    - XFProcConfInsertWidgetConfig
    - XFProcConfLayout
    - XFProcConfPacking
    - XFProcConfParametersDefault
    - XFProcConfParametersGeneral
    - XFProcConfParametersGroups
    - XFProcConfParametersSmall
    - XFProcConfParametersSpecial
    - XFProcConfPlacing
  - Edit
    - XFProcEditClearCut
    - XFProcEditCopy
    - XFProcEditCut
    - XFProcEditDelete
    - XFProcEditLoadCut
    - XFProcEditLoadTemplate
    - XFProcEditMakeAProc
    - XFProcEditPaste
    - XFProcEditSaveCut
    - XFProcEditSaveCutAsTemplate
    - XFProcEditShowCut
  - Programming
    - XFProcProgCommands
    - XFProcProgEditScript
    - XFProcProgEndSrc
    - XFProcProgErrors
    - XFProcProgGlobals
    - XFProcProgProcs
    - XFProcProgShowScript
    - XFProcProgStartupSrc
    - XFProcProgWidgetTree
  - Misc
    - XFProcMiscAliases
    - XFProcMiscAppDefaults
    - XFProcMiscEdge
    - XFProcMiscHardcopy
    - XFProcMiscModules
    - XFProcMiscPixmaps
    - XFProcMiscSaveEdge
    - XFProcMiscTestProgram
  - Options
    - XFProcOptionsBindings
    - XFProcOptionsGeneral
    - XFProcOptionsIconBar
    - XFProcOptionsInterpreter
    - XFProcOptionsMenuBar
    - XFProcOptionsPathFile
    - XFProcOptionsSaveClassBindings
    - XFProcOptionsSaveModuleList
    - XFProcOptionsSaveOptions
    - XFProcOptionsSavePositions
    - XFProcOptionsSource
    - XFProcOptionsVersion
    - XFProcOptionsWindow
  - Help
    - XFProcHelpAbout
    - XFProcHelpHelp
    - XFProcHelpTutorial
- Templates
  - Combined
    - CanvasLS, CanvasRS
    - EntryL, EntryLLS, EntryLS, EntryS
    - HypertextLS, HypertextRS
    - ListboxLS, ListboxRS
    - PhotoLS, PhotoRS
    - TextLS, TextRO, TextROLS, TextRORS, TextRS
    - TkEmacsLS, TkEmacsRS
  - Procedures
    - AlertBox, AlertBoxFd, AlertBoxFile
    - ClearList, ClearText
    - ColorBox
    - CursorBox
    - FSBox
    - FdInList, FileInList, FdInText, FileInText
    - FontBox
    - IconBar
    - InputBox
    - IsADir, IsAFile, IsASymlink
    - KeysymBox
    - MakeMButton
    - MenuBar
    - ReadBox
    - TextBox, TextBoxFd, TextBoxFile
    - YesNoBox
    - fileselect
  - Widgets
    - MListbox
    - MListbox2
    - Menubar
    - OptionButtonE, OptionButtonL
    - Popup1, Popup2, Popup3, PopupC-1...
- List of Figures
- References
- Index
- About this document ...

Next: Contents