1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138 | ###############################################################################
# Copyright (c) 2019-2024 by Altair Engineering, Inc.
# All rights reserved.
#
# Altair Engineering, Inc. makes this software available as part of the Vision
# tool platform. As long as you are a licensee of the Vision tool platform
# you may make copies of the software and modify it to be used within the
# Vision tool platform, but you must include all of this notice on any copy.
# Redistribution without written permission to any third party, with or
# without modification, is not permitted.
# Altair Engineering, Inc. does not warrant that this software is error free
# or fit for any purpose. Altair Engineering, Inc. disclaims any liability for
# all claims, expenses, losses, damages and costs any user may incur as a
# result of using, copying or modifying the software.
# =============================================================================
# @userware
# Customize Menu
# @section
# GUI Specific Userware Examples
# @description
# Example code for doc/tutorial/guiCustomization.html
# @files
# guiCustomization/customizeMenu.tcl
# @example
# ""
# @cmdline
# -userware @files[0]
# @tag
# gui
###############################################################################
gui menu mainMenu _Custom -position 5
gui menu command \
{{Custom} {Regenerate _Schematics}} \
{CustomizeMenu:regenerateSchematics}
gui menu command \
{{Custom} {_Into Memory}} \
{CustomizeMenu:intoMemory}
gui menu submenu \
{{Custom} {_Rotate}}
gui menu command \
{{Custom} {Rotate} {_0}} \
{CustomizeMenu:rotate R0}
gui menu command \
{{Custom} {Rotate} {_90}} \
{CustomizeMenu:rotate R90}
gui menu command \
{{Custom} {Rotate} {_180}} \
{CustomizeMenu:rotate R180}
gui menu command \
{{Custom} {Rotate} {_270}} \
{CustomizeMenu:rotate R270}
gui menu checkbutton \
{{Custom} {Show _Net Names}} \
{gui settings changed} \
[gui settings variable "nlv:shownetname"]
gui menu checkbutton \
{{Custom} {Show _Tooltips}} \
{gui settings changed} [gui settings variable "tooltips"]
gui menu customizeEntry \
{{Custom} {Into Memory}} \
CustomizeMenu:enableIfSomethingIsSelected
gui menu customizeEntry \
{{Custom} {Rotate}} \
CustomizeMenu:enableIfAnInstanceIsSelected
# -----------------------------------------------------------------------------
# enableIfSomethingIsSelected - Enable the last item in $menu if some OIDs are
# selected.
# -----------------------------------------------------------------------------
#
proc CustomizeMenu:enableIfSomethingIsSelected {menu} {
set hasSelection [expr {[gui selection get] != {}}]
$menu entryconfigure end \
-state [expr {$hasSelection ? "normal" : "disabled"}]
}
# -----------------------------------------------------------------------------
# enableIfAnInstanceIsSelected - Enable the last item in $menu at least one
# instance OID is selected.
# -----------------------------------------------------------------------------
#
proc CustomizeMenu:enableIfAnInstanceIsSelected {menu} {
set hasInstSelection 0
set db [gui database get]
if {$db != {}} {
foreach oid [gui selection get] {
if {[$db oid type $oid] eq "inst"} {
set hasInstSelection 1
break
}
}
}
$menu entryconfigure end \
-state [expr {$hasInstSelection ? "normal" : "disabled"}]
}
# -----------------------------------------------------------------------------
# regenerateSchematics - Regenerate the schematics view of the main visualizer.
# -----------------------------------------------------------------------------
#
proc CustomizeMenu:regenerateSchematics {} {
gui schem regenerate
}
# -----------------------------------------------------------------------------
# intoMemory - Add the selected OIDs to the main Memory window and
# activate it.
# -----------------------------------------------------------------------------
#
proc CustomizeMenu:intoMemory {} {
gui mem append [gui selection get]
gui window show Mem
}
# -----------------------------------------------------------------------------
# rotate - Set the rotation mode of all selected instances to $mode.
# -----------------------------------------------------------------------------
#
proc CustomizeMenu:rotate {mode} {
set db [gui database get]
foreach oid [gui selection get] {
if {[$db oid type $oid] eq "inst"} {
$db orient $oid $mode
}
}
gui schem regenerate
}
|