2

Pharo 2.0 の Glamour ブラウザー内から Roassal を使用して動的なコールグラフを描画します。

デフォルトでは、ノードだけでなくエッジもクリック可能です。

エッジに表示する情報がこれ以上ないので、クリックできないようにします。「クリック可能性」を削除するにはどうすればよいですか?

それが、グラマーブラウザー内からコールグラフを描画する方法です。

methodsUnderTestAsCallGraphIn: constructor
    constructor roassal
        painting: [ :view :testFailure | 
                    view shape rectangle
                        size: 30;
                        fillColor: ThreeColorLinearNormalizer new.
                    view nodes: (tests methodsUnderTest: testFailure).
                    view shape arrowedLine.
                    view edges: (tests methodsUnderTest: testFailure) from: #yourself toAll: #outgoingCalls.
                    view treeLayout ];
        title: 'Callgraph of methods under test'

GLMRoassalPresentation>>renderOn: が「クリック可能性」を追加する責任があると思います:

[...]

    self shouldPopulateSelection ifTrue: [   
        aView raw allElementsDo: [:each | 
            each on: ROMouseClick do: [:event | self selection: each model ]] ].

[...]

ノードではこの動作を維持したいのですが、エッジでは維持したくありません。

4

3 に答える 3

2

必要な動作を明確にするために自己完結型の例を用意すると役立つため、質問を再構成しました。

コメントアウトされた 2 行で、望ましくない動作だと思います。これら 2 行のコメントを解除すると、必要な動作が得られますか?

browser := GLMTabulator new.
browser column: #myRoassal ; column: #mySelection.
browser transmit 
    to: #myRoassal ;
    andShow: 
    [   : aGLMPresentation |
        aGLMPresentation roassal
            painting:
            [   : view : numbers |  |edges|
                view shape rectangle ; withText ; size: 30.
                view nodes: numbers.
                view interaction noPopup.
                view edges: numbers from:  [ :x | x / 2] to: [ :x | x ].
"               view edges do: [ :edge | edge model:#doNotSelectMe ]."
                view treeLayout.
            ].
    ].
browser transmit 
    to: #mySelection ;
    from: #myRoassal ;
"   when: [ :selection | selection ~= #doNotSelectMe ] ;"
    andShow: 
    [   : aGLMPresentation |
        aGLMPresentation text
            display: [ : selectedItem | selectedItem asString ]
    ].
browser openOn: (1 to: 10).
于 2013-09-18T03:02:16.590 に答える
2

残念ながら、クリックは GLMRoassalPresentation でハードコーディングされているため、現時点ではこれは不可能です。ただし、解決策を見つける必要があるというあなたの意見は正しいので、問題を開きました: http://code.google.com/p/moose-technology/issues/detail?id=981

于 2013-09-18T05:39:19.343 に答える