Commit Graph
56 Commits
Author SHA1 Message Date
Eberhard Graether f0b7dcdcdd ui: Show call graphs, inheritance trees and include trees for active symbol (issue 249 337)
* Added TrailLayouter with Sugiyama dependency layouting
* Layouter supports horizontal and vertical layouts
* Added basic ui to graph view for showing incoming and outgoing paths
* Added depth slider, with infinity at maximum
* Disable trail ui when not available
* Added trail messages to undo stack and only use last one when undoing
* Added QtGraphLineBezier for trail graphs and refactored other line types
* Disabled edge activation for trail layouts, shown only visually
* Highlight all connected edges when hovering a node in trail layout
* Use different color when highlighting call edges for better contrast
* Fixed BucketLayouter issue when edge does not leave node
* Increased click area for angled edges

bug id = 249 337

fortune cookie message = Answer just what the heart prompts to you.
2017-04-24 01:14:53 +02:00
Eberhard Graether 630009a2ba logic: Refactored undo redo stack
* Store MessageActivateTokens instead of original view messages
* Renamed FeatureController to ActivationController
* Remove all non-activation messages from undo redo stack after reindexing project
* Added MessageShowReference to undo redo stack
* Added MessageScrollGraph for restoring graph view scroll position
* Fixed MessageGraphNodeMove not saved for bundles
* Refactored tokenIds and nodeNames in SearchMatch and MessageActivateTokens
* Refactored SearchController
* Fixed file expansion on undoing/redoing after switching code view mode
* Fixed redundant graph animation due to present qualifier nodes
* Fixed no restoring of graph node expansion when showing overview in between
2017-03-16 23:24:33 +01:00
Eberhard Graether 1fca7d2f29 ui: Fixed namespace shown as separate node in graph when 'using namespace' edge is visible 2017-02-15 11:03:50 +01:00
Eberhard Graether bd17bd3573 ui: Count by connected sub node for non-indexed bundles 2017-02-14 10:45:56 +01:00
Eberhard Graether 52b0cd2017 ui: redesigned graph overview and use new list layouting within overview bundles
* overview bundles imitate style of bundled node type
* removed bundle for built-in types
* show contents of overview bundle in vertical list layouted with new ListLayouter
* nodes starting with the same letter are grouped with the letter displayed above
* pressing the letter key will scroll to the group
* also use this list layouting for namespace & package contents
* renamed BucketGrid to BucketLayouter
* moved used functions of GraphPostProcessor to GraphViewStyle and removed GraphPostProcessor

fortune cookie message = Don't be afraid to take that big step
2017-02-02 13:29:40 +01:00
Eberhard Graether 05ad054421 logic: Refactored graph node sorting
* Fixed sorting to always be alphabetical within each bucket
* Bundled nodes will expand in place
* Overview bundles are not sorted alphabetical
* Probably improved sorting performance by using std::set
2016-12-10 12:40:46 +01:00
Eberhard Graether 272ebcd279 ui: improve bundling of file nodes
* Don't bundle referencing and referenced symbols when file or macro is active
* Bundle importing files when activating java symbols
2016-12-02 11:26:16 +01:00
Eberhard Graether d0a063a3b6 ui: Added shortcuts for navigating to next and previous reference in code view
* Added new class QtCodeNavigator between QtCodeView and QtCodeFileList that handles active ids and navigation
* Pass all files as initially collapsed to code view and decide in QtCodeNavigator which ones show content
* Rewrote requesting of active snippet display to top down approach
* Display other locations focused when active location changes
* Show corresponding edges when navigating references
2016-08-09 13:29:14 +02:00
Eberhard Graether fae418897c ui: sub bundle for anonymous namespaces
bug id = 126
2016-08-06 14:47:38 +02:00
Eberhard Graether f4677a902d ui: Pan graph view to name of active symbol after activation
bug id = 80
2016-07-22 13:57:58 +02:00
Eberhard Graether 7f867bf889 ui: added color_scheme_test command displaying all graph node types and states
implementations for other views comming.
2016-06-22 16:14:06 +02:00
Eberhard Graether 7e3b2622ec src: miscellaneous bug fixes for upcoming release
* only randomize parsing order of source files for multithreaded indexing
* fixed overview not displayed when switching projects due to MessageScrollCode being dispatched
* avoid adding duplicate TokenLocations that causes highlighting to break in QtCodeArea
* clear all controllers when switching project
* maximize unindexed file when clicking title instead of activating it
2016-06-09 12:30:00 +02:00
Eberhard Graether badad741b0 logic: Fixed slow aggregation click and nodes not staying expanded 2016-05-21 04:44:31 +02:00
Eberhard Graether 5d2a476813 logic: Improved graph and code view performance
* added sql index for component_access
* improved policy for expanded code files
* reduced amount of initially expanded code files
* faster DummyEdge creation
* faster DummyNode search by token id
* switched GraphController DummyNodes and DummyEdges to shared_ptr for memory safety
2016-05-21 00:01:46 +02:00
Eberhard Graether 79f788db2e ui: sort buckets in graph layout alphabetically and put bundles at end 2016-05-17 14:28:22 +02:00
Eberhard Graether 7bb40f2630 logic: Simplified node bundling by collecting relevant data upfront 2016-05-13 14:17:20 +02:00
Andreas Stallinger e775ae1ecd logic: Fulltextsearch
* fulltextsearch enabled in sqlite
* fulltextsearch start search with @
* codeview performance improved
* strip sRGB profile from png files to get rid of libpng warning at runtime
2016-05-10 11:10:13 +02:00
Eberhard Graether 661dbd844c ui: Show undefined child nodes in graph
So far pure virtual methods where not shown when activating the interface class.
2016-04-19 16:37:44 +02:00
Eberhard Graether 9307d6d855 logic: Refactored namespace activation
* show namespace name in search view when activated
* show namespace definitions in code view when activated
* no children in namespace
* no implicit nodes in overview or namespace
* Show a maximum of 10 open snippets
* Fixed bug causing nodes in GraphView to be stacked at 0,0
2016-04-12 11:59:37 +02:00
Eberhard Graether 78287dd694 logic: increased performance of bundleEdgesByType for overview 2016-04-08 14:31:46 +02:00
Eberhard Graether ae6cd6e02c logic: don't show implicit or undefined child nodes in graph unless connected
* visit implicit declarations in ASTVisitor
* show implicit and undefined child nodes only when connected
* fixed some bundle edges couldn't be split
* add "implicit" to tooltip
* show undefiend and implicit nodes hatched
2016-04-07 14:16:17 +02:00
Eberhard Graether 29149f313a logic: Added namespaces to overview and fixed namespace activation 2016-02-08 03:39:08 +01:00
Eberhard Graether acce0477b4 ui: improved graph view layouting and bundling
* move top and bottom layout buckets closer to center buckets
* split undefined bundles into users and usees
* acknowledge zoom for graph view size in layouting
* bundle all referencing nodes
* fixed bundle node and bundle edge count
2016-02-04 16:15:01 +01:00
Eberhard Graether eb12d3cda1 logic: Show overview of analyzed symbols after launch
* show analysed nodes as bundles in graph
* ellide node names longer than 50 chars
* sort nodes alphabetic in these bundles
* show stats of analysis in code
* error are displayed as well in overview
* added keywords overview and error
* project description can be set in .coatiproject file
* description can include links to symbols using [symbol] syntax
* updated documentation
* increased toc nesting in documentation
2016-01-25 17:02:48 +01:00
Eberhard Graether 9f684ad9f5 data: saving errors to Storage
* saving errors in separate sqlite table
* use MessageShowErrors to show the errors in the UI
* show error count permanently in the right side of the status bar with click to show
* fixed clicking of error locations
* fixed expanding of files with errors
2015-11-04 12:00:28 +01:00
Eberhard Graether 8fa9bdde5e data: refactored file clearing on reparse to use TaskClearStorage 2015-10-01 13:45:31 +02:00
Eberhard Graether b8c95c5a20 logic: removed namespace splitting from GraphController
Namespace splitting is now handled in active token id retrieval from the Storage, so that namespace nodes are not added
to the Graph at all and complexity in the GraphController is reduced.
2015-09-24 15:37:35 +02:00
Eberhard Graether 5825fe77ab ui: switch Graph to bucket grid layouting
This change introduces bucket grid layouting, which sorts the nodes into buckets based on how they are connected. Each
bucket is then layouted individually before they are arranged next to each other. Edges go from left to right, except
for inheritance edges that go from bottom to top.
2015-09-24 03:12:42 +02:00
Eberhard Graether 78c1b32797 data: increased parse and graph assembly performance
* removed header search in subdirectories of header search paths
* cache file node ids in Storage for faster lookup
* retrieve node names from SearchIndex
* fixed addNodeAndAllChildren also called for member edges
* added check if node already present in addEdgeAndAllChildren
2015-09-23 09:26:03 +02:00
Eberhard Graether a14bfaff56 data: saving and loading Storage with sqlite file next to project file 2015-09-17 12:08:25 +02:00
Eberhard Graether a7ec6772ff data: Fixed aggregation edge creation and display 2015-09-08 14:36:17 +02:00
Eberhard Graether f823d0ddb4 ui: fixed some ui related bugs
* aggregation edges only connect toplevel nodes
* fixed aggregation click for undo and redo
* don't show edge name in search field, because they are not searchable
* clear search field when clicking aggregation
* leave active nodes active when clicking edges
2015-08-03 16:33:29 +02:00
Eberhard Graether 165f32f6a6 logic: MessageFlushUpdates to send new Graph to GraphView when restoring Graph 2015-07-30 20:24:18 +02:00
Eberhard Graether e5a8609d7a ui: removed namespace nodes from graph
Nodes within namespaces are display their full name including the namespace.
2015-07-18 22:03:13 +02:00
Eberhard Graether 7275082284 logic: correctly undoing graph interactions by replaying actions since last active token change
This change introdoces a classification of commands by order in the undo stack. Undoing the last action will resend the
message of the last active token change and all messages changing the ui after that.
2015-06-24 01:15:31 +02:00
Eberhard Graether d6269f9608 ui: bundling nodes in the graph view
This change bundles similar nodes in the graph view together. When the bundled node or it's aggregation edge are clicked,
then the bundle is split. This change also adds an arrow to the aggregation edge based on the direction of it's edges.
2015-06-17 22:47:08 +02:00
Eberhard Graether 1e8d8cece0 ui: Prevent activation of already activated Tokens 2015-05-21 03:32:02 +02:00
Andreas Stallinger a41c0e1b85 ui: bidirectional hovering
hovering for graphview and codeview via messaging, hovering in one view will "hover" the equivalent in the other view
2015-05-12 13:55:23 +02:00
Eberhard Graether aa0c40b213 ui: Improved graph layouting to properly place and resize subnodes
This change moves the toplevel node resizing from the QtPostProcessor to the GraphController to place and resize their
subnodes accordingly as well.
2015-04-30 16:25:24 +02:00
Eberhard Graether 791189c3c3 ui: only single class expand button next to class name
This change reduces the size of collapsed classes in the GraphView by removing the condensed view of the class access
nodes and using a single button next to the class name for collapsing and expanding instead.
2015-04-28 20:08:05 +02:00
Eberhard Graether f5aa698225 ui: separated GraphView style settings into class GraphViewStyle
This change adds the class GraphViewStyle that holds all values for defining the style of Nodes and Edges in the Graph.
The GraphViewStyleImpl interface and the QtGraphViewStyleImpl implementation are used to request Qt specific metrics,
like the charwidth of used fonts.

This change includes the following fixes:
* aggregation number always in the middle between nodes
* darker color for aggregation edge
* split off QGraphicsLineItem implementations from QtGraphEdge
* fixed some colors in color scheme

fortune cookie message = Sorge dich nicht! Du wirst bekommen was du brauchst.
2015-03-23 11:44:57 +01:00
Eberhard Graether e3f1f004a0 logic: combined GraphAccess and LocationAccess to StorageAccess
Having only one access point to the Storage will simplify caching and parallelisation in the future. Also the two
accesses were never really independent of each other anyways, because in some cases they had to access both data sets.
2015-03-17 16:38:17 +01:00
Eberhard Graether 33aff14813 logic: only show edges connected to active node
* split active and visible setting for DummyNodes
* set and check visible on DummyEdges
* include fix for Mac in MatrixDynamicBase
* fix for disappearing style and crashes in GraphView
* cleaned up DummyNode

fortune cookie message = Du stehst kurz davor etwas Neues zu unternehmen.
2015-02-03 16:48:32 +01:00
Eberhard Graether bdb38acbce ui/logic/data: show parse errors in CodeView
This change saves the errors while parsing in the Storage and displays them in the CodeView. The error messages can be
read in the tooltip on hovering. The error count is visible in the status bar.
2015-01-15 19:38:19 +01:00
Eberhard Graether 7596c699d6 ui: improvements proposed by Julian Mautner
* automatically expand active class
* increase arrow size
* return child nodes in autocompletions
* always return filters in autocompletions
2015-01-12 23:47:57 +01:00
Eberhard Graether 8242454104 ui/data: cleaned up UI and parsing
* HOT FIX: typename not always correctly split to name hierarchy
* show node main if available as first active token after parsing
* show all contents of namespaces if searched for
* added missing enum type and enum value usages
* added inheritance for structs
* removed MessageActivateToken and replaced it with MessageActivateTokens
* activating correct nodes for clicks in GraphView and CodeView
* no graph change when clicking an edge, but highlighting the edge instead
* only show active nodes without connections when multiple are activated
* fixed snippet sorting to put file that contains declarations on top
* set sizeHints on CodeView and SearchView to increase their initial size

fortune cookie message = Das Leben wird eine positive Wendung nehmen.
2015-01-08 12:12:50 +01:00
Eberhard Graether ee85abfc7b data/logic/ui: added aggregation edges
This change adds the creation of aggregation edges to the StorageGraph, which save the connection counts between
children in their parents. Aggregation edges are displayed using a straight line, that is thicker than more connections
it represents with the connection count in the middle.
2015-01-07 14:42:35 +01:00
Eberhard Graether 048fcb28b4 ui: moved subnode layouting from GraphView to GraphController
This change moves nested layouting of the Graph to GraphController. The DummyNodes get the correct size assigned, as
well as a visible flag. Mouse interaction with the Graph is now handled via the GraphController, which makes it
easier to undo them or reuse the changed state after graph updates.
2014-11-20 20:53:01 +01:00
Eberhard Graether 5b230cefa0 ui: extented graph view ui features
* fitting boxes to name length
* highlighting active edges and nodes
* hover for edges and nodes
* single click selection for edges and nodes
* edges have transparent second line for easier clicking
* sub structure class members by public/protected/private
2014-11-09 05:18:37 +01:00
Eberhard Graether 760e5ffafd logic: refactored GraphAccess and GraphController to use single call that returns Graph
This change refactors the GraphController to use the GraphAccess only with a single call that returns a Graph. The Graph
contains all information for visually representing the active Token with all parent and child nodes and edges. This
reduces coupling of the data and logic tiers.
2014-09-10 01:07:26 +02:00