Whole Tomato Software Support Forum
Whole Tomato Software Support Forum
Home | Profile | Register | Active Topics | Members | Search | FAQ
Username:
Password:
Save Password
Forgot your Password?

 All Forums
 Spaghetti
 Public Beta
 Initial impressions
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

feline
Moderator

United Kingdom
12802 Posts

Posted - Jun 22 2012 :  10:39:02 AM  Show Profile  Reply with Quote
Does anyone have any initial impressions on Spaghetti?
Anything you like?
Anything that is confusing or unclear?
Any features you would like to see added?

zen is the art of being at one with the two'ness

StefanEgo
Senior Member

45 Posts

Posted - Jun 25 2012 :  06:31:13 AM  Show Profile  Reply with Quote
a couple of first thoughts from my point of view / my own personal preferences:

Absolutely pro: Promising first version of this tool to help a lot on getting a quick overview of the architecture of the code.

Some possible additions/changes I think which would improve the general usability of this tool:
- If the representation of the represented model would follow a more standardized language (for instance UML) it'd be a lot more helpful for daily work (since people don't have to learn yet another proprietary model language).
- it'd be nice if the inheritance display could be changed/configured so that base classes are on top of the graph (see screenshot - the inheritance from Notification to IDBase should be displayed above Notification)
- the window itself should be attachable to VS windows
- one feature I'm missing most in Spaghetti is the possibility to tag/mark certain class members as compositions/aggregations of classes and them being visualized by Spaghetti ( http://en.wikipedia.org/wiki/Object_composition#UML_notation )
- possibiltiy to filter displays (i.e. turn on/off display of inheritance, specify the depth of the displayed compositions, etc.) - that might actually remove the need for multiple tabs (i.e. member/member calls/creation/composition/inheritance) since all of these could be enabled/disabled in a single view)


Go to Top of Page

jschroedl
Ketchup Master

USA
54 Posts

Posted - Jun 25 2012 :  11:34:42 AM  Show Profile  Visit jschroedl's Homepage  Reply with Quote
I tried Spaghetti with a toy/fun project and then on our corporate project.

It's been parsing the source in our corporate C++, C++/CLI, C# hybrid project for the past couple of hours -- I'm hoping there's a diagram in my future but clearly some perf work to do. :-)

For the small project, I played with the diagrams for a while and have these impressions:
* I'm still not clear on the utility of spaghetti other than seeing the relationships. All but the simplest classes look like spaghetti but I'm not really getting any insight. Will there be ways to refactor code from the diagrams?
* The arrows all seem backward to my way of thinking. Can I reverse them? ex. I'd think of a base class providing features/members to a derived class so I like the arrow to go from Base to Derived. I'm probably wierd.
* I'd like the option to use a more vertical layout algorithm (vs horizontal). This could allow mouse wheel scrolling through diagrams a bit more naturally.
* I'd like the Photoshop convention of holding down Spacebar to momentarily switch to a Panning mode so I can use the mouse to slide the diagram around quickly. My flow would be: Ctrl+Wheel to zoom in then Space+Drag to fine-tune pan around.
* How about a (closeable) legend of what the colors mean.
* Instead of gray and dk. gray for read and update how about matching the coloring in find references and use red/orange for updates.
* I noticed in Calls From that some calls were omitted.

I think the tool is promising but just don't see the utility yet.

Edited by - jschroedl on Jun 25 2012 11:35:04 AM
Go to Top of Page

jschroedl
Ketchup Master

USA
54 Posts

Posted - Jun 25 2012 :  1:14:36 PM  Show Profile  Visit jschroedl's Homepage  Reply with Quote
More feedback:
* Having every individual enum value listed separately in the tree and shown in the graphs makes it very unwieldy to use. Maybe a way to expand/collapse those would help?
* Needs a Find/Goto facility to quickly locate a class I'm interested in.
* In C++, we have some classes in the Global namespace but there isn't a "Global" item in the tree to see all of those.
* We have a bunch of C++ namespace aliases such as: namespace CollGen = System::Collections::Generic;
I see "CollGen" show in the tree with no items under it. I'd guess I'd expect those entries to not be there as they add a lot of clutter with no added information
Go to Top of Page

feline
Moderator

United Kingdom
12802 Posts

Posted - Jun 25 2012 :  3:52:10 PM  Show Profile  Reply with Quote
This reply is to StefanEgo

Which tab, which graph type is your screen shot? You have dark and light blue lines, so this does not look like the Inheritance graph. Since XLib, IDBase has other children, and a couple of different lines point to XLib, NonCopyable, simply placing XLib, IDBase at the top of this graph looks like it would be difficult, and make a bit of a mess. You can try this yourself though, by simply dragging XLib, IDBase to the top of the graph.

On the Inheritance graph, click on the Gear icon on the toolbar, and turn off "Invert Interface Direction", does this help achieve what you are after?

I don't understand what you are after with compositions/aggregations. You say you want to see these visualised, but if you simply select the class you want visualised, Spaghetti will show you its members, which seems to be what you are asking for. The page you have linked to is distinguishing between "has a member of type X" and "is derived from type Y", which is what Spaghetti is already showing you in the picture you have posted.

The available tabs change, depending on the item you are looking at, and provide a quick and easy way of changing what is being shown. I am not sure how you would convert the Inheritance graph onto the Creation graph, for example, with filter buttons, since these are trying to do two different things, so you have to replace one graph with a quite different graph.

I have put in a feature request to be able to dock the Spaghetti window, this is a good point, thank you:

case=67465

I assume you are running at a high resolution, so you have the screen space for this to fit well.

zen is the art of being at one with the two'ness

Edited by - feline on Jun 25 2012 10:24:57 PM
Go to Top of Page

feline
Moderator

United Kingdom
12802 Posts

Posted - Jun 25 2012 :  11:33:26 PM  Show Profile  Reply with Quote
jschroedl, some interesting points and questions, thank you.

What sort of refactoring are you thinking? Just rename, or something more complex?

You make an interesting comment about the direction of the arrows, so I have put in a feature request for an option to reverse their direction, to see what our developers make of it:

case=67466

Making the graphs more vertical is an interesting thought, but I am not sure how possible this is with the layout engine. Still, I have put in a feature request, to see what people make of this thought. You have a very good point about the mouse wheel:

case=67467

Are you aware of any other software that uses space to switch to panning mode? I have never used Photoshop, so am not aware of this convention. Having easy access to panning with the mouse makes a lot of sense, I am just wondering how natural / common the space key is for this. Having said that, I don't know of any program I use that has a keyboard shortcut to temporarily enable mouse panning like this.

I know some form of legend to explain the line colours has been discussed, but it did not make it into the initial beta:

case=67468

The dark and light grey lines for member variables are designed to be less obvious, so you can focus more clearly on the classes and member functions. Do you remember if you have modified your VA Find References colours? I have MistyRose and LightCyan for my Find References Results.

Following the VA colours makes some sense, but assumes that you are also using Visual Assist X. Are you more interested in variables being modified than other line colours? Also Red is currently taken, it is possible, in a few situations, to get red lines in a Spaghetti graph, but this feature is still being developed, and we are not sure how robust it is right now.

Are you able to offer any clues about the missing calls in the Calls From graph? Which language are you seeing this problem with? Is there any form of pattern to the missing calls? Are C++ macros involved for example?


The enum values, for me, the enum its self is listed in the tree as a parent node, and the enum values are children, that are collapsed by default. The only time I am seeing the enum items in the graph is in the Members graph for the enum item. I assume you are seeing something different, so could you post a couple of screen shots showing what you are seeing please?

A find feature in Spaghetti makes sense, especially if you don't want to jump back to VA, or don't even have VA installed, to do the search:

case=67470

Your C++ classes in the global namespace, in the tree are you seeing a namespace or a folder view? In a pure C# solution I get a namespace tree, and in a pure C++ solution I get a folder tree. I have a mixed, but mainly C++ solution, and this also has a folder tree. So I am wondering what you have here, and what you are looking for.

The C++ namespace aliases suggests that you have a namespace tree, not a folder tree.

I am not sure what to say about the namespace aliases. Hiding an empty namespace makes some sense, but how far should we take this? Just hiding empty namespaces sounds OK, but should empty classes still be shown?

zen is the art of being at one with the two'ness
Go to Top of Page

StefanEgo
Senior Member

45 Posts

Posted - Jun 26 2012 :  03:34:41 AM  Show Profile  Reply with Quote
quote:
Originally posted by feline

This reply is to StefanEgo

Which tab, which graph type is your screen shot? You have dark and light blue lines, so this does not look like the Inheritance graph. Since XLib, IDBase has other children, and a couple of different lines point to XLib, NonCopyable, simply placing XLib, IDBase at the top of this graph looks like it would be difficult, and make a bit of a mess. You can try this yourself though, by simply dragging XLib, IDBase to the top of the graph.


The graph was taken from the Composition tab.
I do understand setting the layout for graphs is no simple task, so it might be outside the scope for Spaghetti to do the following. Nevertheless to help u getting the picutre about what layout I had in mind when writing this here's a quick and dirty layout I'd envision for this case (note that the important thing to show in this graph is that inheritances go upwards --- neglect the other layout things (which could be improved further obviously)).

graph as it is displayed atm:


layout of the graph how it might look like:


quote:

On the Inheritance graph, click on the Gear icon on the toolbar, and turn off "Invert Interface Direction", does this help achieve what you are after?


changing that option doesn't make any difference for me... see the following two screenshots (one taken with Invert Interface Directions enabled, one with the option being disabled). Am I doing something wrong?




quote:

I don't understand what you are after with compositions/aggregations. You say you want to see these visualised, but if you simply select the class you want visualised, Spaghetti will show you its members, which seems to be what you are asking for. The page you have linked to is distinguishing between "has a member of type X" and "is derived from type Y", which is what Spaghetti is already showing you in the picture you have posted.


Not quite. I'm not only asking for a visualization of the members, but a rather a different visualization based on the classification of members (nothing to do with inheritance here). Speaking from a modelling point of view a member can either be an aggregation, a composition or none of these.
Maybe this link helps to explain that concept better:
http://www.c-sharpcorner.com/uploadfile/pcurnow/compagg07272007062838am/compagg.aspx

In UML aggregations/compositions are visualized by the filled (composition) or unfilled (aggregation) diamond symbol and the diamond symbol is displayed at that class which is the aggregator/compositor of the other class.

One way this could be done would be to add code-markers in the code which Spaghetti would parse to show the relationship correctly in the graphs --- f.e.
class Foo
{};
class Bar
{};
class FooBar
{
Bar b; //SPAGHETTI - AGGREGATOR
Foo f; //SPAGHETTI - COMPOSITOR
};

quote:

The available tabs change, depending on the item you are looking at, and provide a quick and easy way of changing what is being shown. I am not sure how you would convert the Inheritance graph onto the Creation graph, for example, with filter buttons, since these are trying to do two different things, so you have to replace one graph with a quite different graph.


Well in the "All References" tab you almost have what I was thinking about. A combination of all the information even though the depth is limited here. So by providing this view and some tagable settings (show inheritance, show Creation, show Compoisiton, etc.) the graph could be updated on the fly.

quote:

I assume you are running at a high resolution, so you have the screen space for this to fit well.


Running here at 1920x1200.

Edited by - StefanEgo on Jun 26 2012 04:14:56 AM
Go to Top of Page

feline
Moderator

United Kingdom
12802 Posts

Posted - Jun 26 2012 :  7:37:15 PM  Show Profile  Reply with Quote
Are you using the Inheritance graph much, or at all? I have been running some tests here, and the blue Inheritance lines always point upwards for me, so far, on the Inheritance graph, but they normally point downwards on the Composition graph.

If I am focusing on the Composition graph as a graph showing me how the current class is built, what it contains, and thus perhaps what it does, then this seems to make sense. Several of the blue lines in your updated graph are not involved in the inheritance of the graphed class "Notification", so it becomes a question of what this graph is trying to tell you.

You are right about the Invert Interface Direction setting, that was my mistake, this only effects lines to and from Interfaces, which are not present in the graphs we are looking at here.


Composition vs aggregation, the fact that we might need markers in the code to tell us which is which probably means that Spaghetti is never going to be able to do this, since it is not something that can be deduced purely from the code structure, which is all Spaghetti has to work with.

From the link, both code samples show a class with a member of another class. A member is a clear and simple relationship, but the point was that membership can have different meanings, but how can we tell which meaning applies?

If we assume for the moment that marker comments have to be applied, then this feature of Spaghetti is useless out of the box, since you will have to go through your entire code base, or which ever portion of it that you want to graph, and add these marker comments everywhere, and if you miss anywhere, then you are going to get the wrong graph results. If you are going to do this, isn't it simply easier to document this in the code as you go along?


The depth of the All References graph is limited, since it is simply trying to show you all references of the graphed item. Is moving between the current tabs slow or difficult? I am wondering what the advantage of adding toggle buttons is. Or are you trying to create a bigger, more information packed graph than is currently available with Spaghetti?

zen is the art of being at one with the two'ness
Go to Top of Page

jschroedl
Ketchup Master

USA
54 Posts

Posted - Jun 26 2012 :  7:50:55 PM  Show Profile  Visit jschroedl's Homepage  Reply with Quote
@feline: What sort of refactoring are you thinking? Just rename, or something more complex?

I am thinking rename and possibly something like selecting a bundle of related classes and maybe "Move to new source / header". Maybe selecting a member/contains arrow and right-click and convert it to a unique_ptr or shared_ptr to the object instead of containing the object. Also, maybe converting a member ptr to a contained. ex. shared_ptr<Foo> mpFoo; --> Foo mFoo; I dunno. Will think on it some more...


@feline: Are you aware of any other software that uses space to switch to panning mode?

Yes, Expression Blend does this too for example. Also, Visual Studio does this. Create a new WPf app and go to the Design surface. Ctrl+Wheel to zoom in then hold down the space bar. The mouse changes to a hand and now you can pan the design surface around. Release Space and your back in business. There are others...


@feline The dark and light grey lines for member variables are designed to be less obvious, so you can focus more clearly on the classes and member functions. Do you remember if you have modified your VA Find References colours? I have MistyRose and LightCyan for my Find References Results.

I use the defaults too so yes, Rose and Cyan. They can be muted, it's just not obvious what the diff is between gray and dk. gray and the association would help me. You're right, we can't assume VAX familiarity.


@feline: Are you able to offer any clues about the missing calls in the Calls From graph? Which language are you seeing this problem with? Is there any form of pattern to the missing calls? Are C++ macros involved for example?

It was a straight C# library off github or codeplex. Will start a separate thread once I retry it and find the issue again. Sorry I didn't write it down.


@feline ...enum values...could you post a couple of screen shots showing what you are seeing please?

Yes, I'll do that when I'm at work tomorrow.


@feline: Your C++ classes in the global namespace, in the tree are you seeing a namespace or a folder view?

I see a namespace view in our application. It's mostly C++ and C++/CLI with a separate C# assembly. I'm not sure how to get to a folder tree. Will post a screenshot once I can.


@feline: I am not sure what to say about the namespace aliases. Hiding an empty namespace makes some sense, but how far should we take this? Just hiding empty namespaces sounds OK, but should empty classes still be shown?

I'm not sure that the namespace is really empty -- there are things there (not stuff I created) just no child items are listed in the Spag heirarchy tree. For example if I map namespace WPFControls = System::Windows::Controls; then there a lots of classes I can get to like WPFControls::ListBox, WPFControls::Button, etc. but those are not listed in Spag under the WPFControls tree item...and I would not want them to be since they are from PresentationFramework or some other assembly -- it's an alias for convenience.

Edited by - jschroedl on Jun 27 2012 08:48:55 AM
Go to Top of Page

StefanEgo
Senior Member

45 Posts

Posted - Jun 27 2012 :  04:00:10 AM  Show Profile  Reply with Quote
quote:

If we assume for the moment that marker comments have to be applied, then this feature of Spaghetti is useless out of the box, since you will have to go through your entire code base, or which ever portion of it that you want to graph, and add these marker comments everywhere, and if you miss anywhere, then you are going to get the wrong graph results. If you are going to do this, isn't it simply easier to document this in the code as you go along?


I was merely thinking of using the generated graph from Spaghetti as the actual documentation.
Currently we do this using Enterprise Architect (http://www.sparxsystems.com) which is kind of a problem because it means we have to not only manually create the graphs there (i.e. add class by class, relation by relation, etc.) but also that we do have to maintain changes to classes/members in two places (in the code and in Enterprise Architect).
This leads to so much a documentation overhead that this is only of very limited use to us.
If Spaghetti would provide these information directly (with us only have to mark the members somehow in-code), that would be a definite selling point for Spaghetti.

quote:

The depth of the All References graph is limited, since it is simply trying to show you all references of the graphed item. Is moving between the current tabs slow or difficult? I am wondering what the advantage of adding toggle buttons is. Or are you trying to create a bigger, more information packed graph than is currently available with Spaghetti?


No, moving between the current tabs is not slow for me in any way. It was merely a personal subjective preference (that toggling settings is more intuitive for me than switching between different tabs). Plus toggling would have the result that one single tab with the toggle-feature can display much more a variety of different types of graphs than the 5 separate tabs together (since all of these settings could be toggled and hence result in graphs which only show inheritance and creation (but no members), or graphs which show only members but no inheritance, etc.) which has the benefit of getting a more personalized/customizable/focused views.
As you pointed out the next step might be to have an even larger (or smaller) graph by either setting the depth the graph would be displayed for or by being able to collapse/extend certain classes by clicking on them (so that they could display the inheritance by clicking on the class icon) or something like this (like it's already doable within VS' integrated class view).



I.e. clicking on the arrows in the upper right corner show the member information.
Right-clicking on Notification and choosing "Show Base classes" shows the base-class in the diagram.

Edited by - StefanEgo on Jun 27 2012 04:02:47 AM
Go to Top of Page

feline
Moderator

United Kingdom
12802 Posts

Posted - Jun 27 2012 :  11:16:59 PM  Show Profile  Reply with Quote
@jschroedl, a Rename refactoring command makes sense, I have put in a feature request for this:

case=67522

My initial thought is that Spaghetti should ask Visual Assist X to do the refactoring, since we already have refactoring in Visual Assist X, but this then requires VA if you want to refactor from within Spaghetti. You could describe this as the two tools working well together, or you could claim that we were somehow "limiting" Spaghetti, but since refactoring does not seem to be a core feature of Spaghetti, my initial thought is that using VA here is reasonable. Do you have any thoughts here?

I have put in a feature request for moving one or more classes to a new file, since the same refactoring feature request exists for VA:

case=67523

Converting a member from one type of pointer to another seems both to simple, and to complex, to be a refactoring. If this is as simple as changing one line of code, why not just left click on the line, and make the edit in the editor?

Converting a member from an instance to a pointer is more interesting, but I am not sure how easily this could be automated. "simply" converting all "member." statements to "member->" is one thing, but what about where the member is created? What about passing it as a parameter? Assignment?

I am concerned that VA could cause more problems than it fixes here.


I did not know about holding down the space key to pan around, but clearly this is a standard command, so I have put in a feature request for this. A simple way to access pan / scrolling, I can see why it is popular:

case=67524


The line colours for member variables, effectively you want to be able to customise the line colours. I have put in a feature request for this, since I am sure it is going to be a fairly common request:

case=67525


I am going to ask our developers about the namespace alias. For me, if I open a C++ or C++ CLR project and show the Spaghetti window, then the tree pane shows a folder tree. If I open a C# project then the tree pane shows a namespace tree.

This makes sense since namespaces are often not used in C++ code, but they always seem to be used in C#. My initial experiments with namespace aliases have not shown the namespace alias in the tree, instead they have converted the namespace tree into a folder tree.

zen is the art of being at one with the two'ness
Go to Top of Page

feline
Moderator

United Kingdom
12802 Posts

Posted - Jun 27 2012 :  11:45:49 PM  Show Profile  Reply with Quote
@StefanEgo, since this thread is getting a little hard to work with, I have started a new thread for the idea of showing aggregations and compositions:

http://www.wholetomato.com/forum/topic.asp?TOPIC_ID=10783

Now I see what you are trying to do with the filter buttons on the graphs! I thought you were just recreating the existing graphs, but I now see you are talking about creating different graph views. I have put in a feature request to see what our developers make of this:

case=67527

As for expanding a node in the graph, Spaghetti has the ability to mark some nodes with "[+]", as shown on the "SportsCar" node in this graph:



This does not happen all the time, but it does happen sometimes.

zen is the art of being at one with the two'ness
Go to Top of Page

holedigger
Moderator

96 Posts

Posted - Jun 28 2012 :  02:32:37 AM  Show Profile  Visit holedigger's Homepage  Reply with Quote
regarding namespace vs directory trees:
- If you invoke Spaghetti on a namespace'd symbol, it uses namespaces.
- If you invoke it on a non-namespace'd symbol, it uses directories.
- To switch from "namespace mode" to "directory mode" click the folder icon in the crumb bar.
- If in directory mode, and you select a namespace'd symbol, you'll see a namespace icon in the crumb bar that switches to namespace mode.
- In namespace mode, non-namespace'd symbols are not present in the tree, you'll need to switch to directory mode.

I'll have to think about how to handle namespace aliases...

Whole Tomato Software
Go to Top of Page

StefanEgo
Senior Member

45 Posts

Posted - Jun 28 2012 :  04:09:08 AM  Show Profile  Reply with Quote
quote:
Originally posted by feline
As for expanding a node in the graph, Spaghetti has the ability to mark some nodes with "[+]", as shown on the "SportsCar" node in this graph:



This does not happen all the time, but it does happen sometimes.



I didn't recognize the plus-sign before. That's exactly what I was looking for.
However atm when for me that feature has 3 "downsides" as it is in 1.0.8:
1. I'm used to do extend/collapse these using single mouse clicks. Atm I've to double-click on the plus-sign (or more precisely on the class showing the plus sign).
2. After I extended a class I can no longer collapse it again (i.e. there's no minus-sign or somesuch).
3. Extending class views is sometimes very slow (especially on larger views) since the entire graph seems to be redrawn and layouted again.
Go to Top of Page

jschroedl
Ketchup Master

USA
54 Posts

Posted - Jun 28 2012 :  10:17:32 AM  Show Profile  Visit jschroedl's Homepage  Reply with Quote
quote:
...since refactoring does not seem to be a core feature of Spaghetti, my initial thought is that using VA here is reasonable. Do you have any thoughts here?


I agree - use VAX to supply refactoring features (if it's discovered). No need to duplicate the features and cannibilize your own business.

quote:
Converting a member from one type of pointer to another seems both to simple, and to complex, to be a refactoring. If this is as simple as changing one line of code, why not just left click on the line, and make the edit in the editor?

...

I am concerned that VA could cause more problems than it fixes here.



Agreed - it's a simple code change. Ignore that suggesstion.

Go to Top of Page

support
Moderator

5503 Posts

Posted - Jun 28 2012 :  11:04:42 AM  Show Profile  Visit support's Homepage  Reply with Quote
quote:
2. After I extended a class I can no longer collapse it again (i.e. there's no minus-sign or somesuch).


Not obvious, but if you press Backspace, or click on the "<-" it will undo the expand.
Go to Top of Page

StefanEgo
Senior Member

45 Posts

Posted - Jun 29 2012 :  04:35:59 AM  Show Profile  Reply with Quote
Yeah already used that --- that's ok(ish) but it means that if you extend two classes and want to collapse the first one you have to go back twice and then extend the second class again... A minor thing IMO but still something I'd expect to be handled better (if I'd pay for the tool that is :) ).
Go to Top of Page

holedigger
Moderator

96 Posts

Posted - Jun 29 2012 :  1:43:19 PM  Show Profile  Visit holedigger's Homepage  Reply with Quote
@jschroedl, fyi you can Shift+MouseWheel for horizontal scrolling and Ctrl+MouseWheel for zooming

Whole Tomato Software
Go to Top of Page

feline
Moderator

United Kingdom
12802 Posts

Posted - Jun 29 2012 :  2:28:41 PM  Show Profile  Reply with Quote
@StefanEgo, single left click is used to go to the source code in the IDE that this node represents. I assume the tool you use where a single click expands the node is not tied to the source code like this?

You can right click and select "Expand node" instead of having to double click on a precise spot on this node.

When expanding the node is slow, approximately how many seconds does this take? If you use the tree and show a different, similarly sized graph, approximately how long does it take Spaghetti to generate this graph?

If expanding is noticeably slower than generating a new similar sized graph then something is wrong, but if the time taken is similar, then this is probably to be expected, since a significant change has to be made to the graph.

zen is the art of being at one with the two'ness
Go to Top of Page

StefanEgo
Senior Member

45 Posts

Posted - Jul 02 2012 :  03:39:57 AM  Show Profile  Reply with Quote
quote:
Originally posted by feline

@StefanEgo, single left click is used to go to the source code in the IDE that this node represents. I assume the tool you use where a single click expands the node is not tied to the source code like this?


The built-in class view in VS for instance behaves like this:
- single mouse-click: Expand/Collapse class member information
- double-click: go to source-code

quote:

When expanding the node is slow, approximately how many seconds does this take? If you use the tree and show a different, similarly sized graph, approximately how long does it take Spaghetti to generate this graph?


I didn't want to suggest it's slow in that it's hard to work with. It's just slow in the sense of not being an instance collapse/expand (like the one you get with VS' built-in class view).
No big deal though.
When collapsing/expanding a class which results in a very large graph I'd say it takes around 1-3 seconds for the graph to be updated.
Go to Top of Page

feline
Moderator

United Kingdom
12802 Posts

Posted - Jul 02 2012 :  3:11:43 PM  Show Profile  Reply with Quote
For single clicking, you are comparing a tree view with a graph, but the key point is that the tree view has a specific "button" to expand / contract, the + / - marks in the tree. Currently Spaghetti is simply placing a text marker into the text. Still, having an expand / contract button next to the node might make sense here, it would give you a method to undo the expand, which is something, I have put in a feature request for this:

case=67611

Expanding being instant, you are lucky if it is always instant to expand a node in a tree control in the IDE. I often use the Macro Explorer tree view in the IDE, and the first time I need to expand a node after loading the IDE tends to be slow, several seconds is normal. Once the node has been expanded and collapsed, the next expand is often instant. This is familiar behaviour to me in various IDE tree controls.

zen is the art of being at one with the two'ness
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
Whole Tomato Software Support Forum © 2013 Whole Tomato Software, Inc Go To Top Of Page
Snitz Forums 2000