Merge branch 'master' into magic-8.2

This commit is contained in:
Tim Edwards 2019-11-22 03:00:07 -05:00
commit 9939a8b874
1 changed files with 33 additions and 9 deletions

View File

@ -280,6 +280,7 @@ proc magic::gencell_setparams {parameters} {
} elseif {[regexp {^.params.edits.(.*)_sel$} $s valid pname] != 0} {
set value [dict get $parameters $pname]
set magic::${pname}_val $value
.params.edits.${pname}_sel configure -text $value
} elseif {[regexp {^.params.edits.(.*)_txt$} $s valid pname] != 0} {
if {[dict exists $parameters $pname]} {
set value [dict get $parameters $pname]
@ -310,11 +311,18 @@ proc magic::gencell_change {instname gencell_type library parameters} {
if {$newinstname == $instname} {set newinstname $instname}
if {[instance list exists $newinstname] != ""} {set newinstname $instname}
}
if {[dict exists $parameters gencell]} {
# Setting special parameter "gencell" forces the gencell to change type
set gencell_type [dict get $parameters gencell]
}
if {[catch {set parameters [${library}::${gencell_type}_check $parameters]} \
checkerr]} {
puts stderr $checkerr
}
magic::gencell_setparams $parameters
if {[dict exists $parameters gencell]} {
set parameters [dict remove $parameters gencell]
}
set gname [instance list celldef $instname]
@ -346,6 +354,7 @@ proc magic::gencell_change {instname gencell_type library parameters} {
puts stderr $drawerr
}
property parameters $parameters
property gencell ${gencell_type}
tech revert
popstack
select cell $instname
@ -400,14 +409,24 @@ proc magic::gencell_create {gencell_type library parameters} {
set newinstname ""
# Get device defaults
set pdefaults [${library}::${gencell_type}_defaults]
if {$parameters == {}} {
# Pull user-entered values from dialog
set parameters [dict merge $pdefaults [magic::gencell_getparams]]
set dialogparams [magic::gencell_getparams]
if {[dict exists $dialogparams gencell]} {
# Setting special parameter "gencell" forces the gencell to change type
set gencell_type [dict get $dialogparams gencell]
}
set pdefaults [${library}::${gencell_type}_defaults]
set parameters [dict merge $pdefaults $dialogparams]
set newinstname [.params.title.ient get]
if {$newinstname == "(default)"} {set newinstname ""}
if {[instance list exists $newinstname] != ""} {set newinstname ""}
} else {
if {[dict exists $parameters gencell]} {
# Setting special parameter "gencell" forces the gencell to change type
set gencell_type [dict get $parameters gencell]
}
set pdefaults [${library}::${gencell_type}_defaults]
set parameters [dict merge $pdefaults $parameters]
}
@ -416,6 +435,9 @@ proc magic::gencell_create {gencell_type library parameters} {
puts stderr $checkerr
}
magic::gencell_setparams $parameters
if {[dict exists $parameters gencell]} {
set parameters [dict remove $parameters gencell]
}
set snaptype [snap list]
snap internal
@ -546,6 +568,10 @@ proc magic::add_dependency {callback gencell_type library args} {
#----------------------------------------------------------
proc magic::update_dialog {callback pname gencell_type library} {
if {[dict exists $parameters gencell]} {
# Setting special parameter "gencell" forces the gencell to change type
set gencell_type [dict get $parameters gencell]
}
set pdefaults [${library}::${gencell_type}_defaults]
set parameters [dict merge $pdefaults [magic::gencell_getparams]]
if {$callback != {}} {
@ -605,12 +631,12 @@ proc magic::add_message {pname ptext parameters {color blue}} {
# Add a selectable-list parameter to the gencell window
#----------------------------------------------------------
proc magic::add_selectlist {pname ptext all_values parameters} {
proc magic::add_selectlist {pname ptext all_values parameters {itext ""}} {
if [dict exists $parameters $pname] {
set value [dict get $parameters $pname]
} else {
set value ""
set value $itext
}
set numrows [lindex [grid size .params.edits] 1]
@ -635,12 +661,12 @@ proc magic::add_selectlist {pname ptext all_values parameters} {
# keying the selection to other parameter value lists.
#----------------------------------------------------------
proc magic::add_selectindex {pname ptext all_values parameters} {
proc magic::add_selectindex {pname ptext all_values parameters {ival 0}} {
if [dict exists $parameters $pname] {
set value [dict get $parameters $pname]
} else {
set value 0
set value $ival
}
set numrows [lindex [grid size .params.edits] 1]
@ -745,9 +771,7 @@ proc magic::gencell_dialog {instname gencell_type library parameters} {
set instname $instroot
}
set gname [instance list celldef [subst $instname]]
if {$gencell_type == {}} {
set gencell_type [cellname list property $gname gencell]
}
set gencell_type [cellname list property $gname gencell]
if {$library == {}} {
set library [cellname list property $gname library]
}