3 proc menubar_create
{menulist
{top .
}} {
4 global _MenuData tcl_platform bgColor
6 if {$top == "." ||
$top == ""} {
14 set _MenuData
(menu) $mw
15 set _MenuData
(list) ""
17 if {$tcl_platform(platform
) == "windows"} {
18 menu $mw -tearoff 0 -relief flat
-type menubar
20 set i
[string tolower
$j]
21 lappend _MenuData
(list) $i
22 set m m
$_MenuData(next
)
24 $mw add cascade
-label $j -menu $mw.
$m -underline 0
25 menu $mw.
$m -tearoff 0
26 set _MenuData
($i,menu) $mw.
$m
30 frame $mw -relief flat
-bg $bgColor(button)
31 pack $mw -side top
-fill x
33 set i
[string tolower
$j]
34 lappend _MenuData
(list) $i
35 set m m
$_MenuData(next
)
37 menubutton $mw.
$m -text $j -menu $mw.
$m.
menu -pady 0 \
38 -highlightthickness 0 -underline 0
39 pack $mw.
$m -side left
-padx 5
40 menu $mw.
$m.
menu -tearoff 0
41 set _MenuData
($i,menu) $mw.
$m.
menu
45 frame $ms -bd 1 -height 2 -relief sunken
46 pack $ms -side top
-fill x
49 proc menubar_add
{menu {before
""}} {
50 global tcl_platform _MenuData bgColor
52 set i
[string tolower
$menu]
53 if {[info exists _MenuData
($i,menu)]} {
54 return $_MenuData($i,menu)
58 set before
[string tolower
$before]
59 set n
[lsearch $_MenuData(list) $before]
60 if {$n >= 0} {set where
$n}
62 set mw
$_MenuData(menu)
63 set m m
$_MenuData(next
)
66 if {$tcl_platform(platform
) == "windows"} {
68 $mw add cascade
-label $menu -menu $mw.
$m -underline 0
70 $mw insert
$where cascade
-label $menu -menu $mw.
$m -underline 0
72 set _MenuData
($i,menu) $mw.
$m
74 menubutton $mw.
$m -text $menu -menu $mw.
$m.
menu -pady 0 \
75 -highlightthickness 0 -underline 0
77 pack $mw.
$m -side left
-padx 5
79 pack $mw.
$m -side left
-padx 5 \
80 -before [winfo parent
$_MenuData($before,menu)]
82 set _MenuData
($i,menu) $mw.
$m.
menu
85 menu $_MenuData($i,menu) -tearoff 0
87 lappend _MenuData
(list) $i
89 set _MenuData
(list) [linsert $_MenuData(list) $where $i]
91 return $_MenuData($i,menu)
94 proc menubar_delete
{menu} {
95 global _MenuData tcl_platform
97 set i
[string tolower
$menu]
98 set n
[lsearch $_MenuData(list) $i]
100 if {$tcl_platform(platform
) == "windows"} {
101 $_MenuData(menu) delete
$n $n
103 set m
[winfo parent
$_Menudata($i,menu)]
107 set _MenuData
(list) [lreplace $_MenuData(list) $n $n]
110 proc menubar_get
{menu} {
112 set i
[string tolower
$menu]
113 if {[lsearch $_MenuData(list) $i] >= 0} {
114 return $_MenuData($i,menu)
119 proc menubar_state
{menu state
{entry ""}} {
120 global _MenuData tcl_platform
122 set i
[string tolower
$menu]
123 set n
[lsearch $_MenuData(list) $i]
126 $_MenuData($i,menu) entryconfigure
$entry -state $state
127 } elseif
{$tcl_platform(platform
) == "windows"} {
128 $_MenuData(menu) entryconfigure
$n -state $state
130 [winfo parent
$_MenuData($i,menu)] configure
-state $state