[mcclim-devel] questions about space requirements and graph layout
rpgoldman at real-time.com
rpgoldman at real-time.com
Mon Jun 26 01:19:53 UTC 2006
I was careless and did not check up on my application that used graph
layout while a couple of rounds of changes were made. Now I find that
my application is all stuffed up, and I was hoping that someone could
make some suggestions. In particular:
1. My old code would draw graphs, and at the end of each
graph-drawing function would invoke:
(change-space-requirements stream
:min-width (bounding-rectangle-width rect)
:min-height
(bounding-rectangle-height rect))
In the past this seemed to Do The Right Thing: the application
pane (at the top, over an interactor pane) would get larger, and
scroll bars would appear as needed. Now, however, something that
seems very wrong to me happens, viz:
a. I stretch the frame larger than its original size.
b. I invoke a graph drawer.
c. The frame resizes itself to its original size.
My conjecture is that the effect of changing space requirements
may have changed.
Weirdly, the space requirement is now:
[1i] GRAPH-MDP(74): :i 22
A NEW CLIMI::STANDARD-SPACE-REQUIREMENT @ #x881c250a = #<CLIMI::STANDARD-SPACE-REQUIREMENT
width: 0.0d0 [0.0d0,100000000] height: 0.0d0 [0.0d0,100000000]>
0 Class --------> #<STANDARD-CLASS CLIMI::STANDARD-SPACE-REQUIREMENT>
1 WIDTH --------> double-float = 0.0d0 [#x00000000 00000000]
2 MAX-WIDTH ----> fixnum 100000000 [#x17d78400]
3 MIN-WIDTH ----> double-float = 0.0d0 [#x00000000 00000000]
4 HEIGHT -------> double-float = 0.0d0 [#x00000000 00000000]
5 MAX-HEIGHT ---> fixnum 100000000 [#x17d78400]
6 MIN-HEIGHT ---> double-float = 0.0d0 [#x00000000 00000000]
although the current-width is 6952.0 and the current-height is
4261.5.
I was considering that perhaps I should have been changing the
width and height slots of the space-requirement instead of min-
values, but (a) this used to work and (b) it seems like none of my
changed space requirements are "taking."
Here's what happens when I trace change-space-requirements:
0[9]: (CLIM:CHANGE-SPACE-REQUIREMENTS
#<CLIM:APPLICATION-PANE SIFT.MDP:MDP @ #x72d0bc22> :WIDTH 6952.0
:HEIGHT 4261.5
:MIN-WIDTH 6952.0
:MIN-HEIGHT 4261.5)
0* (CALL-METHOD
#<STANDARD-METHOD CLIM:CHANGE-SPACE-REQUIREMENTS :AROUND (CLIM:CLIM-STREAM-PANE)>
((MULTIPLE-VALUE-PROG1 (PROGN #<STANDARD-METHOD CLIM:CHANGE-SPACE-REQUIREMENTS
:BEFORE
(CLIM-INTERNALS::SPACE-REQUIREMENT-OPTIONS-MIXIN)>
#<STANDARD-METHOD CLIM:CHANGE-SPACE-REQUIREMENTS
:BEFORE (CLIM-INTERNALS::LAYOUT-PROTOCOL-MIXIN)>
#<STANDARD-METHOD CLIM:CHANGE-SPACE-REQUIREMENTS
(CLIM-INTERNALS::LAYOUT-PROTOCOL-MIXIN)>)
#<STANDARD-METHOD CLIM:CHANGE-SPACE-REQUIREMENTS :AFTER
(CLIM-INTERNALS::LAYOUT-PROTOCOL-MIXIN)>)))
1[9]: (CLIM:CHANGE-SPACE-REQUIREMENTS
#<CLIM-EXTENSIONS:VIEWPORT-PANE "(Unnamed Pane)" @ #x72d0c35a>
:RESIZE-FRAME NIL)
1* (MULTIPLE-VALUE-PROG1 (PROGN #<STANDARD-METHOD CLIM:CHANGE-SPACE-REQUIREMENTS
:BEFORE
(CLIM-INTERNALS::SPACE-REQUIREMENT-OPTIONS-MIXIN)>
#<STANDARD-METHOD CLIM:CHANGE-SPACE-REQUIREMENTS
:BEFORE (CLIM-INTERNALS::LAYOUT-PROTOCOL-MIXIN)>
#<STANDARD-METHOD CLIM:CHANGE-SPACE-REQUIREMENTS
(CLIM-EXTENSIONS:VIEWPORT-PANE)>)
#<STANDARD-METHOD CLIM:CHANGE-SPACE-REQUIREMENTS :AFTER
(CLIM-INTERNALS::LAYOUT-PROTOCOL-MIXIN)>)
1[9]: returned NIL
0[9]: returned NIL
Possibly the information about the space requirements is not
properly percolating up from the application-pane to its enclosing
viewport-pane?
[1i] GRAPH-MDP(85): :i
A TENURED CLIM-EXTENSIONS:VIEWPORT-PANE @ #x72d0c35a = #<CLIM-EXTENSIONS:VIEWPORT-PANE
"(Unnamed Pane)"
@
#x72d0c35a>
0 Class --------> #<STANDARD-CLASS CLIM-EXTENSIONS:VIEWPORT-PANE>
1 REGION -------> #<STANDARD-BOUNDING-RECTANGLE X 0:646.0d0 Y 0:590 @ #x735b3e8a>
2 NATIVE-TRANSFORMATION -> #<CLIMI::STANDARD-IDENTITY-TRANSFORMATION 1 0 0 1 0 0>
3 NATIVE-REGION -> #<STANDARD-RECTANGLE X 0:646.0d0 Y 0:590 @ #x735b3e9a>
4 DEVICE-TRANSFORMATION -> The symbol NIL
5 DEVICE-REGION -> The symbol NIL
6 POINTER-CURSOR -> The symbol :DEFAULT
7 ENABLED-P ----> The symbol T
8 CURRENT-WIDTH -> The symbol NIL
9 CURRENT-HEIGHT -> The symbol NIL
10 TRANSFORMATION -> #<CLIMI::STANDARD-TRANSLATION 1 0 0 1 4 4>
11 QUEUE --------> #<CLIMI::PORT-EVENT-QUEUE @ #x72d06c52>
12 NAME ---------> A simple-string (14) "(Unnamed Pane)"
13 MANAGER ------> #<CLIM-CLX::CLX-FRAME-MANAGER @ #x72c0b642>
14 FRAME --------> #<TAEMS-MDP-APP @ #x72ceb5b2>
15 ENABLEDP -----> The symbol NIL
16 SPACE-REQUIREMENT -> The symbol NIL
17 NEW-WIDTH ----> The symbol NIL
18 NEW-HEIGHT ---> The symbol NIL
19 REDISPLAY-NEEDED -> The symbol NIL
20 PORT ---------> #<CLIM-CLX::CLX-PORT :HOST "" :DISPLAY-ID 0 @ #x72c02ada>
21 MIRROR-TRANSFORMATION -> #<CLIMI::STANDARD-TRANSLATION 1 0 0 1 4 4>
22 MIRROR-REGION -> #<STANDARD-RECTANGLE X 0:646 Y 0:590 @ #x735b3eca>
23 PARENT -------> #<SCROLLER-PANE "(Unnamed Pane)" @ #x72d0c7aa>
24 USER-WIDTH ---> The symbol NIL
25 USER-MIN-WIDTH -> The symbol NIL
26 USER-MAX-WIDTH -> The symbol NIL
27 USER-HEIGHT --> The symbol NIL
28 USER-MIN-HEIGHT -> The symbol NIL
29 USER-MAX-HEIGHT -> The symbol NIL
30 X-SPACING ----> fixnum 0 [#x00000000]
31 Y-SPACING ----> fixnum 0 [#x00000000]
32 FOREGROUND ---> #<CLIMI::NAMED-COLOR "black">
33 BACKGROUND ---> #<CLIMI::NAMED-COLOR "gray84">
34 TEXT-STYLE ---> #<STANDARD-TEXT-STYLE :FIX :ROMAN :NORMAL>
35 ALIGN-X ------> The symbol :LEFT
36 ALIGN-Y ------> The symbol :TOP
37 CHILD --------> #<APPLICATION-PANE MDP @ #x72d0bc22>
[1i] GRAPH-MDP(86): :i 37
A TENURED APPLICATION-PANE @ #x72d0bc22 = #<APPLICATION-PANE MDP @ #x72d0bc22>
0 Class --------> #<STANDARD-CLASS APPLICATION-PANE>
1 MARKINGS -----> The symbol NIL
2 POINT-1-X ----> The symbol NIL
3 POINT-1-Y ----> The symbol NIL
4 POINT-2-X ----> The symbol NIL
5 POINT-2-Y ----> The symbol NIL
6 DRAGGING-P ---> The symbol NIL
7 REGION -------> #<STANDARD-BOUNDING-RECTANGLE X 0:6952.0 Y 0:4261.5 @ #x87f3415a>
8 NATIVE-TRANSFORMATION -> #<CLIMI::STANDARD-IDENTITY-TRANSFORMATION 1 0 0 1 0 0>
9 NATIVE-REGION -> #<STANDARD-RECTANGLE X 0:646.0d0 Y 0:590 @ #x87f34172>
10 DEVICE-TRANSFORMATION -> The symbol NIL
11 DEVICE-REGION -> #<STANDARD-RECTANGLE X 0:646.0d0 Y 0:590 @ #x87f34172>
12 POINTER-CURSOR -> The symbol :DEFAULT
13 ENABLED-P ----> The symbol T
14 CURRENT-WIDTH -> single-float = 6952.0 [#x45d94000]
15 CURRENT-HEIGHT -> single-float = 4261.5 [#x45852c00]
16 TRANSFORMATION -> #<CLIMI::STANDARD-IDENTITY-TRANSFORMATION 1 0 0 1 0 0>
17 QUEUE --------> #<CLIMI::PORT-EVENT-QUEUE @ #x72d06c52>
18 NAME ---------> The symbol MDP
19 MANAGER ------> #<CLIM-CLX::CLX-FRAME-MANAGER @ #x72c0b642>
20 FRAME --------> #<TAEMS-MDP-APP @ #x72ceb5b2>
21 ENABLEDP -----> The symbol NIL
22 SPACE-REQUIREMENT -> #<CLIMI::STANDARD-SPACE-REQUIREMENT
width: 0.0d0 [0.0d0,100000000] height: 0.0d0 [0.0d0,100000000]>
23 NEW-WIDTH ----> The symbol NIL
24 NEW-HEIGHT ---> The symbol NIL
25 PORT ---------> #<CLIM-CLX::CLX-PORT :HOST "" :DISPLAY-ID 0 @ #x72c02ada>
26 MIRROR-TRANSFORMATION -> #<CLIMI::STANDARD-IDENTITY-TRANSFORMATION 1 0 0 1 0 0>
27 MIRROR-REGION -> #<STANDARD-RECTANGLE X 0:3799 Y 0:2425 @ #x87f341c2>
28 PARENT -------> #<CLIM-EXTENSIONS:VIEWPORT-PANE "(Unnamed Pane)" @ #x72d0c35a>
29 X-SPACING ----> fixnum 0 [#x00000000]
30 Y-SPACING ----> fixnum 0 [#x00000000]
31 ALIGN-X ------> The symbol :LEFT
32 ALIGN-Y ------> The symbol :TOP
33 CHILDREN -----> The symbol NIL
34 RECORDING-P --> The symbol T
35 DRAWING-P ----> The symbol T
36 OUTPUT-HISTORY -> #<STANDARD-TREE-OUTPUT-HISTORY X 0.0d0:6952.0 Y 0.0d0:4261.5 @
#x72d0c36a>
37 CURRENT-OUTPUT-RECORD -> #<STANDARD-TREE-OUTPUT-HISTORY
X 0.0d0:6952.0 Y 0.0d0:4261.5 @ #x72d0c36a>
38 CURRENT-TEXT-OUTPUT-RECORD -> The symbol NIL
39 LOCAL-RECORD-P -> The symbol T
...
123 (MISC C APPLICATION-PANE) -> #<Function STM-FUNDAMENTAL-MISC>
2. I have three flavors of layouts, two use the built in graph types,
and one uses my own, experimental tree-with-cross-edges graph
subtype. Previously they all three worked (for some definition of
"worked," that does not extend to "lays out graphs in an
aesthetically-pleasing way :->). Now only my own
tree-with-cross-edges works; the other two seem to display
nothing, although I can see a traced call to
format-graph-from-roots, I find reasonable bounds (which *should*
trigger the addition of scroll bars, AFAICT), and if I take a long
and laborious trip down into the guts of the pane's output record,
I find a CLIMI::DAG-GRAPH-OUTPUT-RECORD inside a
STANDARD-SEQUENCE-OUTPUT-RECORD inside a
STANDARD-UPDATING-OUTPUT-RECORD.
As I said, this used to work, but alas, that was even before the
addition of spatial-trees, so I'm not sure where this went south.
Any suggestions about how I might figure out why this is not
showing up?
Actually, it might be as simple as the graph being so large that
none of it actually appears in the part of the pane that is
actually displayed... So perhaps the answer to this question
reduces to answering question 1...
More information about the mcclim-devel
mailing list