blob: 64daaf87ff9ec7b3668957351e9adc67c2d7aecd (
plain)
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
|
# Local variable window for Insight.
# Copyright 1997, 1998, 1999, 2001 Red Hat
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License (GPL) as published by
# the Free Software Foundation; either version 2 of the License, or (at
# your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
class LocalsWin {
inherit VariableWin
# ------------------------------------------------------------------
# CONSTRUCTOR - create new locals window
# ------------------------------------------------------------------
constructor {args} {
update dummy
}
# ------------------------------------------------------------------
# DESTRUCTOR - delete locals window
# ------------------------------------------------------------------
destructor {
}
method build_win {f} {
global tcl_platform
build_menu_helper Variable
if {$tcl_platform(platform) == "windows"} {
frame $f.f
VariableWin::build_win $f.f
pack $f.f -expand yes -fill both -side top
frame $f.stat
pack $f.stat -side bottom -fill x
} else {
VariableWin::build_win $f
}
}
# ------------------------------------------------------------------
# METHOD: reconfig
# Overrides VarialbeWin::reconfig method. Have to make sure the locals
# will get redrawn after everything is destroyed...
# ------------------------------------------------------------------
method reconfig {} {
VariableWin::reconfig
populate {}
}
# ------------------------------------------------------------------
# METHOD: getVariablesBlankPath
# Overrides VarialbeWin::getVariablesBlankPath. For a Locals Window,
# this method returns a list of local variables.
# ------------------------------------------------------------------
method getVariablesBlankPath {} {
global Update
debug
return [$_frame variables]
}
method update {event} {
global Update Display
debug "START LOCALS UPDATE CALLBACK"
# Check that a context switch has not occured
if {[context_switch]} {
debug "CONTEXT SWITCH"
# our context has changed... repopulate with new variables
# destroy the old tree and create a new one
#
# We need to be more intelligent about saving window state
# when browsing the stack or stepping into new frames, but
# for now, we'll have to settle for just getting this working.
deleteTree
set ChangeList {}
# context_switch will have already created the new frame for
# us, so all we need to do is shove stuff into the window.
debug "_frame=$_frame"
if {$_frame != ""} {
debug "vars=[$_frame variables]"
}
if {$_frame != "" && [$_frame variables] != ""} {
populate {}
}
}
# Erase old variables
if {$_frame != ""} {
foreach var [$_frame old] {
$Hlist delete entry $var
$_frame deleteOld
unset Update($this,$var)
}
# Add new variables
foreach var [$_frame new] {
set Update($this,$var) 1
$Hlist add $var \
-itemtype text \
-text [label $var]
if {[$var numChildren] > 0} {
# Make sure we get this labeled as openable
$Tree setmode $var open
}
}
}
# Update variables in window
VariableWin::update dummy
debug "END LOCALS UPDATE CALLBACK"
}
}
|