From b099b1717874e0b67c244b2adb6b054be54c5577 Mon Sep 17 00:00:00 2001 From: Sai Charan Lanka Date: Sat, 28 Aug 2021 11:43:17 +0530 Subject: [PATCH] Create techbuilder.tcl --- tcltk/techbuilder.tcl | 113 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 tcltk/techbuilder.tcl diff --git a/tcltk/techbuilder.tcl b/tcltk/techbuilder.tcl new file mode 100644 index 00000000..b3d0e247 --- /dev/null +++ b/tcltk/techbuilder.tcl @@ -0,0 +1,113 @@ +# +# The long-awaited Technology File Builder Wizard +# + +# Needs BLT to build tab windows +package require BLT + +toplevel .techwizard +blt::tabset .techwizard.parts -relief sunken -borderwidth 2 + +magic::windowcaption off +magic::windowscrollbars off + +frame .techwizard.parts.layers +frame .techwizard.parts.drc + +magic::openwindow tech_layers .techwizard.parts.layers.layout +magic::openwindow drc_rules .techwizard.parts.drc.layout + +frame .techwizard.parts.layers.funcs +label .techwizard.parts.layers.funcs.prompt -text "Add:" +label .techwizard.parts.layers.funcs.prompt2 -text "Plane:" +entry .techwizard.parts.layers.funcs.lname +menubutton .techwizard.parts.layers.funcs.planes -text "(choose one)" \ + -relief groove +pack .techwizard.parts.layers.funcs.prompt -side left -padx 5 +pack .techwizard.parts.layers.funcs.lname -side left -expand true -fill x +pack .techwizard.parts.layers.funcs.prompt2 -side left -padx 5 +pack .techwizard.parts.layers.funcs.planes -side left -pady 5 + +pack .techwizard.parts.layers.layout -side top -expand true -fill both +pack .techwizard.parts.layers.funcs -side top -fill x + +frame .techwizard.parts.drc.funcs +button .techwizard.parts.drc.funcs.last -text "Last" +button .techwizard.parts.drc.funcs.next -text "Next" +pack .techwizard.parts.drc.funcs.last -side left +pack .techwizard.parts.drc.funcs.next -side left +pack .techwizard.parts.drc.layout -side top -expand true -fill both +pack .techwizard.parts.drc.funcs -side top -fill x + +frame .techwizard.parts.tech +frame .techwizard.parts.tech.tinfo +label .techwizard.parts.tech.tinfo.tname -text "Technology name:" \ + -foreground sienna4 +entry .techwizard.parts.tech.tinfo.tentry -width 50 +bind .techwizard.parts.tech.tinfo.tentry { \ + .techwizard.parts.tech.tinfo.tset configure -text \ + [.techwizard.parts.tech.tinfo.tentry get]; \ + pack forget .techwizard.parts.tech.tinfo.tentry; \ + } +button .techwizard.parts.tech.tinfo.tset -text "[magic::tech name]" \ + -relief groove \ + -foreground green4 \ + -command { \ + pack .techwizard.parts.tech.tinfo.tentry -side left -expand true; \ + } +pack .techwizard.parts.tech.tinfo.tname -side left +pack .techwizard.parts.tech.tinfo.tset -side left +pack .techwizard.parts.tech.tinfo -side top + +frame .techwizard.parts.planes +::set pnames [magic::tech planes] +::set j 0 +foreach i $pnames { + entry .techwizard.parts.planes.e$i -width 50 + bind .techwizard.parts.planes.e$i \ + ".techwizard.parts.planes.p$i configure -text \ + [.techwizard.parts.planes.e$i get]; \ + ::grid forget .techwizard.parts.planes.e$i" + button .techwizard.parts.planes.p$i -text "$i" \ + -foreground green4 \ + -relief groove \ + -command "::grid .techwizard.parts.planes.e$i -row $j -column 1 -sticky news" + ::grid .techwizard.parts.planes.p$i -row $j -column 0 -sticky news + incr j +} +::unset pnames +::unset j + +.techwizard.parts configure -tiers 2 +.techwizard.parts insert end "tech" "planes" "layers" "connect" "compose" \ + "cifinput" "cifoutput" "extract" "drc" \ + "wiring" "router" "plowing" "plot" + +.techwizard.parts tab configure "layers" -window .techwizard.parts.layers -fill both +.techwizard.parts tab configure "drc" -window .techwizard.parts.drc -fill both +.techwizard.parts tab configure "tech" -window .techwizard.parts.tech +.techwizard.parts tab configure "planes" -window .techwizard.parts.planes + +# Add styles to layout for selection + +::set i 0 +::set j 0 +::set k 50 +while { $k <= 127 } { + ::set rx [expr $i + 8] + ::set ry [expr $j + 8] + .techwizard.parts.layers.layout element add rect style$k $k $i $j $rx $ry + incr k + incr i 10 + if {$i >= 80} {::set i 0; incr j 10} +} +catch {.techwizard.parts.layers.layout box -100 -10 90 90} +catch {.techwizard.parts.layers.layout findbox zoom} +catch {.techwizard.parts.layers.layout box -100 -10 -10 90} + +.techwizard.parts.layers.layout element add text ltitle black 40 85 "Layer Styles" + +# To do: Add all existing layers and draw their styles + +pack .techwizard.parts -fill both -expand true +wm geometry .techwizard 800x500