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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175 | ###############################################################################
# Copyright (c) 2021-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 Layout
# @section
# GUI Specific Userware Examples
# @description
# Example code for doc/tutorial/guiCustomization.html
# @files
# guiCustomization/customizeLayout.tcl
# @example
# ""
# @cmdline
# -userware @files[0]
# @tag
# gui
###############################################################################
# -----------------------------------------------------------------------------
# example1 - Add a new Cone window right of the main Schem window.
# -----------------------------------------------------------------------------
#
proc CustomizeLayout:example1 {} {
##
# Get the main Schem window.
#
set schem [gui window defaultClassWindow Schem]
##
# Create an empty Tab window right of the Schem window.
#
set tab [gui window split $schem right]
##
# Insert a new Cone window into the Tab window.
#
gui window new -tabwindow $tab "Cone"
}
# -----------------------------------------------------------------------------
# example2 - Add a row of Schem, Cone, Source windows.
# -----------------------------------------------------------------------------
#
proc CustomizeLayout:example2 {} {
##
# Get the main vertical pane window of the main window.
#
set mainVertical [gui window getMainVerticalPane .]
##
# Insert a new horizontal pane window into the main vertical pane.
# It is added bottom-most into the vertical pane, but above the Console and
# Messages windows.
#
set horizontal [gui window createHorizontalPane $mainVertical]
##
# Create and insert three vertical Pane windows into the horizontal Pane.
#
set vertical1 [gui window createVerticalPane $horizontal]
set vertical2 [gui window createVerticalPane $horizontal]
set vertical3 [gui window createVerticalPane $horizontal]
##
# Insert a Tab window into each of the vertical Pane windows.
#
set tab1 [gui window createTab $vertical1]
set tab2 [gui window createTab $vertical2]
set tab3 [gui window createTab $vertical3]
##
# Space the three vertical Pane windows evenly by setting the horizontal
# pane's sash positions to 1/3 and 2/3.
#
gui window setPaneSashes $horizontal {0.333 0.666}
##
# Insert new Schem, Cone, Source windows into the three Tab windows.
#
gui window new -tabwindow $tab1 "Schem"
gui window new -tabwindow $tab2 "Cone"
gui window new -tabwindow $tab3 "Source"
}
# -----------------------------------------------------------------------------
# example3 - Add a new top-level window with Schem, Cone, Source windows.
# -----------------------------------------------------------------------------
#
proc CustomizeLayout:example3 {} {
##
# Create a new top-level window (this also creates and inserts the
# obligatory vertical pane).
#
set top [gui window createToplevel]
##
# Show it.
#
gui window modelessDialog \
$top \
"My Custom Top-Level Window" \
-place "CENTER" \
-size {800 600} \
-onTop \
-closeCallback "destroy $top"
##
# Get the vertical pane.
#
set vertical [gui window getMainVerticalPane $top]
##
# Create two horizontal panes.
#
set horizontal1 [gui window createHorizontalPane $vertical]
set horizontal2 [gui window createHorizontalPane $vertical]
##
# Space the horizontal panes evenly (set the vertical pane's sash
# position to 1/2).
#
gui window setPaneSashes $vertical {0.5}
##
# Create some vertical Pane windows.
#
set vertical1_1 [gui window createVerticalPane $horizontal1]
set vertical1_2 [gui window createVerticalPane $horizontal1]
set vertical2 [gui window createVerticalPane $horizontal2]
##
# Space the vertical pane windows in the first horizontal Pane evenly by
# setting its sash position to 1/2.
#
gui window setPaneSashes $horizontal1 {0.5}
##
# Create a Tab window in each vertical Pane.
#
set tab1_1 [gui window createTab $vertical1_1]
set tab1_2 [gui window createTab $vertical1_2]
set tab2 [gui window createTab $vertical2]
##
# Insert Schem, Cone, Source windows into the Tab windows.
#
gui window new -tabwindow $tab1_1 "Schem"
gui window new -tabwindow $tab1_2 "Cone"
gui window new -tabwindow $tab2 "Source"
}
##
# Run all examples.
#
CustomizeLayout:example1
CustomizeLayout:example2
CustomizeLayout:example3
|