Commit Graph
112 Commits
Author SHA1 Message Date
Eberhard Graether 3c7c3da527 logic: made parsing interruptable by introducing TaskScheduler
This change introduces the TaskScheduler, which queues and processes Tasks on a separate thread. The Task class provides
a common interface for deriving all specific tasks. A task can split it's processing into multiple update calls. The
TaskScheduler will update a task until it is finished or interrupt it when necessary. TaskGroups can be used to bundle
multiple Tasks together. So far only TaskGroupSequential was implemented which runs the Tasks in the set order.

TaskParseCxx utilizes the CxxParser to parse each source file in a single update call. Parsing can be interrupted using
the ESC key. The Statusbar shows the parsing progress.
2015-04-23 18:57:38 +02:00
Andreas Stallinger 6b9f30c444 ui: layout loading fix for loading dockwidgets on linux 2015-04-21 16:29:50 +02:00
Andreas Stallinger 7655d43299 build: Linux package(.deb)
.deb package file for debian distros like ubuntu
To create the package use the command: ninja package
in the build directory
2015-04-21 12:01:06 +02:00
Eberhard Graether 7790241926 ui: panning GraphView and resizing after node was moved 2015-03-23 16:16:26 +01:00
Eberhard Graether 5fc7182dc0 ui: added new icon and moved it to data/gui/icon 2015-03-23 15:17:49 +01:00
Andreas Stallinger 9c224dc519 ui: keyboard grab commit reverted 2015-03-23 14:38:40 +01: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
Andreas Stallinger 416756b1c7 ui: keyboard input direct to searchbar
typing is directed to the searchbar
2015-03-18 17:01:38 +01:00
Andreas Stallinger ac090dd624 ui: adapt autocompletebox size
adapt autocompletebox size, starts at cursor ends at the end of the inputbox, minium size is 400

<description>
2015-03-18 16:15:44 +01:00
Eberhard Graether 03cf9eeb5f data: Fixes and features for loading Coati into Coati
This change facilitates loading Coati into Coati:
* removed error logs for TokenComponent setting
* fixed edge checks regarding template stuff
* separated CommonSettings to be inherited by Project- and ApplicationSettings for common settings
* pluralized SourcePaths setting in xml to allow for loading multiple directories and single files
* added CompilerFlags section to settings
* passing Compiler arguments to Parser via struct Parser::Arguments
* setting -isystem for all header search paths to avoid distinction between "" and <> headers
* parsing all headers from the SourcePaths, even the ones that are not included
* fixed parsing time measurement and display
* added utility.h file for general utility functionality
2015-03-16 10:07:57 +01:00
Andreas Stallinger 5a259ed7c7 ui: qt windowicon added 2015-03-11 11:16:49 +01:00
Eberhard Graether ca9dfe7f75 ui: improved file nodes
* added colors for file nodes and dependency edges
* use TokenComponentFilePath on file nodes to store FilePath
2015-03-09 14:07:58 +01:00
Eberhard Graether df888e4151 utility: added FilePath abstraction and rewrote data management to use it
The utility class FilePath wraps an instance of boost::filesystem::path. Using FilePath allows for easy comparision of
file paths on different platforms using absolute or relative paths. Whereever file paths are compared, this wrapper
should be used.
2015-03-09 01:51:32 +01:00
Eberhard Graether 7014c8ac4c data: ClangTool gets invoked for cpp files only, headers are parsed on-the-fly
This change adds the class FileRegister, that splits cpp and h files for the Parser and keeps track which headers have
been parsed yet. TranslationUnits get only created for cpp files now, and headers are parsed on the fly. This reduces
parse time by around half.
2015-03-09 01:32:51 +01:00
Manuel 06aa7bdb58 UI: Overlaps resolve
Fixed several issues with the overlaps resolving algorithm.

Introducing the cell padding in the last graph update caused some issues that are now resolved.

Coincidently the average number of algorithm iterations needed could be reduced, therefore the thing is now faster.

fortune cookie message = All the answers you need are right there in front of you!
2015-03-04 23:07:34 -08:00
Andreas Stallinger da1a6d69c4 ui: Colors in SearchView
Show the right colors in SearchView for the different NodeTypes or QueryNodeTyps

Note: add colors to your Applcationsettings like in the template

fortune cookie message = recognition will come from unexpected sources
2015-03-04 11:55:25 +01:00
Eberhard Graether 284fb336a6 ui: fixed crash on Windows caused by transition animation being deleted right after taking place 2015-03-04 10:58:50 +01:00
Eberhard Graether 89d3a9ab9f ui: fixed leak in QtGraphView transition 2015-03-03 01:16:30 +01:00
Eberhard Graether 598041f896 data: parsing file dependencies
This change adds the node NODE_FILE to the graph and the edge EDGE_INCLUDE, which determine the dependencies between
files by parsing the include preprocessor directive. File nodes can be searched and displayed in the GraphView as file
dependency graph. The filter "file" allows for selecting all files. The file depency information is used on project
refresh do determine which files need to get reparsed.
2015-03-03 00:33:13 +01:00
Eberhard Graether 4f7d31eb79 ui: graph transitions
This change adds animated transitions to the QtGraphView using sequential and parallel animations. First vanishing nodes
and all edges get faded out, then the remaining nodes are moved and resized, lastly new nodes and all edges are faded in.

fortune cookie message = Sorge dich nicht! Du wirst bekommen, was du brauchst.
2015-02-23 12:11:01 +01:00
Manuel 35867c17af ui: graph rastering
Graph nodes are now placed within a raster. This is true for initial layout as well as drag-and-droped stuff.
2015-02-17 23:40:53 -08:00
Eberhard Graether 0d53e69d21 utility: added log levels for Loggers
This change allows setting log levels on loggers. The apps ConsoleLogger was switched to only logging warnings and
errors the FileLogger still saves all types of logs.
2015-02-12 10:51:43 +01:00
Eberhard Graether 1fd7703995 ui: offset Edges to left or right whether they go up or down to avoid overlapping of different directions 2015-02-10 15:19:28 +01:00
Eberhard Graether b8f6b4be4e data: added Node type NODE_ENUM_CONSTANT 2015-02-10 14:28:53 +01:00
Eberhard Graether 0b9a2bf4a1 build: fixed clang warnings and console errors 2015-02-10 13:48:20 +01:00
Eberhard Graether 51c6675464 data: parsing and saving method overrides
This change parses method overrides and saves them in the Storage with type EDGE_OVERRIDE.
2015-02-10 12:18:40 +01:00
Eberhard Graether 53eab0a517 logic: fixed Searchbutton not searching and wrong destruction order in ComponentManager 2015-02-10 10:31:14 +01:00
Eberhard Graether 229c7a763b ui: saving and restoring DockWidget layout 2015-02-09 16:58:08 +01:00
Eberhard Graether 5ecc4fb39a logic/ui: added CompositeView for combining Views to one DockWidget
Added CompositView, which implements both View and ViewLayout, for combining Views to one Widget. The layout can be set
to either horizontal or vertical. SearchView, RefreshView and UndoRedoView are combined to one DockWidget by the
ComponentManager now.

fortune cookie message = You'll get more secure and confident with your relationship with your co-workers.
2015-02-09 16:27:23 +01:00
malte_langkabel 8bc11c9d9c logic: File Manager
* added FileManager that keeps track of the files analyzed by the project. It therefore checks if files get added, updated or deleted from the source- and include folders.
* refactored ASTVisitor::hasValidLocation() and implemented one version that search for the location in the currently parsed file and one that searches in all the project's source files.
* quickfix: switched order in FileManager so that header files are parsed first.
* created folder for helper classes used in tests.
* added test code for FileManager
* adjusted test code for Parser Tests.
2015-02-09 14:52:31 +01:00
Eberhard Graether af1462f955 ui: fixed autocompletion issues
* click in autocompletions list causes search
* right arrow for autocompletion
* changed query operator has from '>' to '.' and operator sub from '.' to '+'
* fixed autocompletions to fit to query
and
* fixed spectral layouting endless looping on unconnected node
2015-02-06 00:51:02 +01:00
Eberhard Graether 9fc71f9d7f build: fixed MacOS bundle to include all libraries and frameworks
Follwed instructions for Qt from: http://qt-project.org/doc/qt-4.8/deployment-mac.html

fortune cookie message = Smile! A smile will make you younger.
2015-02-05 11:48:39 +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 1690479b0e ui/logic/data: refreshing only source files that have been updated
This change adds the refresh component that allows for refreshing the source code via UI or shortcut. If automatic
refreshing is activated via the UI, the code is refreshed anytime the window gets focus. The contents of all the
updated source files get removed from Storage, before reparsing them. File dependencies are not respected yet.
2015-02-03 14:27:39 +01:00
Andreas Stallinger 944554d034 logic: UndoRedo
UndoRedo working for ActiveTokensMessages
2015-02-03 10:47:56 +01:00
Andreas Stallinger 00f15a2ce3 UI: Graphlayouting Linux
added missing include
changed std::sqrtf to std::sqrt
2015-02-02 18:03:56 +01:00
Manuel a7eaeae432 UI: GraphLayouting
Implemented graph layouting, hybrid approach using spectral and force based layouting

fortune cookie message = Giving credit where it's due ensures loyalty to you.
2015-01-29 15:47:02 +01:00
Eberhard Graether 016d692dda ui: preparations for user study
* added sample code
* bigger and closed arrow for inheritance edge
* fixed code hover
* lightened scope colors
* fixed interrupted scope ranges to show all lines
* fixed edge creation to correctly show recursion
* prevent aggregation edge number from floating around
* scroll to top when changing codesnippets
2015-01-26 06:50:23 +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 3f4ae8343c logic: initially parse source on message thread and add more StatusBar messages
This change puts the initial project loading into a MessageLoadProject so that the UI thread is still responding.
Also the StatusBar is now responding to more Messages and it's MessageListeners get added to the MessageQueue in
front of other listeners so that the StatusBar UI can announce actions.
2014-12-02 01:20:08 +01:00
Eberhard Graether c54c405dd1 logic: fixed warnings, tests and bugs
* fixed clang warnings
* fixed cxxparser tests
* added missing checks for valid location in ASTVisitor callbacks for templates
* removed warning when statusbar view is removed
* made font of activated classes bold
* fixed search box not responding to autocompletion tab or enter press
* fixed search box not updated when active token changes
2014-12-02 00:55:57 +01:00
Eberhard Graether 3b7b02ff8c ui: styled search view
fortune cookie message = Dein Einsatz wird in Kuerze belohnt werden
2014-12-01 11:27:35 +01:00
malte_langkabel 63407c2c81 data: basic template parsing
* Implemented basic parsing and storage of template parameter types, template classes and template functions
* Added template specialization edge.
* Implemented handling of partial specializations. Needs some more tweaking.
* Added a lot of test code for template stuff (still needs some cases to be tested)
* Removed the isTemplateParameterType from DataType, since it shouldn't be needed
* Function qualTypeToDataType uses clang PrintingPolicy to fetch the desired format.
* Merged a lot of code for getting the correct names and name hierarchies of definitions
* Removed TokenComponentDataType
* Merged both of the Storage::addTypeEdge(...) functions
* Added "-fno-delayed-template-parsing" flag to parser for parsing test code.
2014-11-24 16:50:31 +01:00
malte_langkabel 7b17f5b3ad ui: font size fix
* switched from using setPointSize() to setPixelSize() for fonts
2014-11-24 16:44:33 +01:00
Andreas Stallinger af4e3f7676 ui: statusbar
statusbar added, listen to status- , error-  and parsingfinishedmessages
2014-11-24 16:35:46 +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 113aab8e60 ui: styled edges in graph view
This change styles the edges in the QtGraphView. They get drawn with vertical and horizontal parts and rounded corners.
2014-11-15 17:48:13 +01:00