If anybody has Iwidgets 4, they might try this script. It's just a tabbed notebook with a few other widgets added (entry fields, disjoint listbox). The point is, pascal is an organized language, and a virtual notebook might help organize development. Certainly, text processing is yet to be added. Maybe the "diff debate" could be presented on a page. #!/bin/sh #\ exec wish "$0" package require Iwidgets 4.0 # ---------------------------------------------------------------------- # create tabnotebook # ---------------------------------------------------------------------- option add *textBackground white option add *Tabnotebook.backdrop DimGray option add *Scale.width 8 . configure -background white wm title . "T-pascal" iwidgets::tabnotebook .tnb \ -width 8i \ -height 10i \ -tabpos w \ -gap 10 \ -background seashell \ -font "helvetica 14" pack .tnb \ -expand yes \ -fill both \ -padx 4 -pady 4 # create Summary CoverPage # ---------------------------------------------------------------------- set page1 [.tnb add -label "Cover Page"] # put widgets in cover page frame $page1.filler1 \ -background "" \ -height 1i \ -width 5i pack $page1.filler1 \ -fill x iwidgets::entryfield $page1.unit_name \ -labeltext "Pascal Unit Name:" \ -labelfont "helvetica 14" \ -textfont "helvetica 14" \ -labelpos nw \ -background tan \ -width 50 pack $page1.unit_name \ -pady 5 iwidgets::entryfield $page1.unit_info \ -labeltext "Pascal Unit Info:" \ -labelfont "helvetica 14" \ -textfont "helvetica 14" \ -labelpos nw \ -background tan \ -width 50 pack $page1.unit_info \ -pady 5 iwidgets::entryfield $page1.unit_path \ -labeltext "Pascal Unit Path:" \ -labelfont "helvetica 14" \ -textfont "helvetica 14" \ -labelpos nw \ -background tan \ -width 50 pack $page1.unit_path \ -pady 5 frame $page1.filler2 \ -background "" \ -height 1i \ -width 5i pack $page1.filler2 \ -fill x iwidgets::entryfield $page1.c_lib_name \ -labeltext "C Library Name:" \ -labelfont "helvetica 14" \ -textfont "helvetica 14" \ -labelpos nw \ -background tan \ -width 50 pack $page1.c_lib_name \ -pady 5 iwidgets::entryfield $page1.c_lib_info \ -labeltext "C Library Info:" \ -labelfont "helvetica 14" \ -textfont "helvetica 14" \ -labelpos nw \ -background tan \ -width 50 pack $page1.c_lib_info \ -pady 5 iwidgets::entryfield $page1.c_lib_path \ -labeltext "C Library Path:" \ -labelfont "helvetica 14" \ -textfont "helvetica 14" \ -labelpos nw \ -background tan \ -width 50 pack $page1.c_lib_path \ -pady 5 frame $page1.filler3 \ -background "" \ -height 1i \ -width 5i pack $page1.filler3 \ -fill x iwidgets::entryfield $page1.author \ -labeltext "Author:" \ -labelpos nw \ -width 40 pack $page1.author iwidgets::entryfield $page1.author_email \ -labeltext "Author E-mail:" \ -labelpos nw \ -width 40 pack $page1.author_email frame $page1.filler4 \ -background "" \ -height 1i \ -width 5i pack $page1.filler4 \ -fill x # create more pages # ---------------------------------------------------------------------- set page2 [.tnb add -label "Compile Options"] iwidgets::disjointlistbox $page2.dlb pack $page2.dlb -padx 10 -pady 10 -fill both -expand yes $page2.dlb insertlhs {{1. DOS} {2. WINDOWS} {3. LINUX} {4. OSX} {5. SOLARIS} {6. IA32} {7. IA64} {8. M68X} {9. SPARC}} set page3 [.tnb add -label "Unit .inc Files"] # Unit Constants Page #4 # ---------------------------------------------------------------------- set page4 [.tnb add -label "Unit Constants"] iwidgets::scrolledtext $page4.scr_text \ -hscrollmode dynamic \ -vscrollmode dynamic pack $page4.scr_text \ -expand yes \ -fill both # Unit Types Page #5 # ---------------------------------------------------------------------- set page5 [.tnb add -label "Unit Types"] .tnb view "Cover Page" # End ---------------------------------------------------------------