Commit Graph
57 Commits
Author SHA1 Message Date
Eberhard Graether 5fc7182dc0 ui: added new icon and moved it to data/gui/icon 2015-03-23 15:17:49 +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 69ea6adddd src: file extension for header and source in config
header and source extensions are now in the projectsettings
2015-03-18 15:48:59 +01:00
Eberhard Graether 52baca3962 logic: flag FilterUndefinedNodesFromGraph in ApplicationSettings
If set to true the flag filters all undefined nodes from the graph, unless every active node is undefined.
2015-03-17 15:42:20 +01:00
Eberhard Graether c4ca420677 src: added StartupProject setting to ApplicationSettings 2015-03-17 14:45:49 +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
Eberhard Graether d6ad7614af script: added app icon to mac bundle
Extended the script to create an iconset from our logo and define it as icon for the bundled application.
2015-03-11 13:23:04 +01:00
Eberhard Graether ca85d5a5d3 build: bug fixes for release version
* fixed search activating 2 nodes, because of NodeType in query
* fixed search results didn't contain results with same name
* added protected contents to sample and tictactoe code
* fixed CxxParserTests not logging errors, disabled logging for tests with errors
* fixed CxxParserTests not finding system headers, added TestSettings.xml and pass headers to Parser::parseFile()
2015-03-11 13:14:22 +01:00
Andreas Stallinger 5a259ed7c7 ui: qt windowicon added 2015-03-11 11:16:49 +01:00
malte_langkabel 9b3f9ebdbf data: non-type- and template-template parameters
* name of template class now also contains type information on the template parameters (e.g. typename, class, bool, const std::string&, etc.)
* implemented handling of non-type template parameters and template template parameters.
* implemented lots of tests for these features.
2015-03-09 18:07:30 +01:00
Andreas Stallinger 5afd9aed2d UI: new public,protected,private icons 2015-03-09 15:23:05 +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
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
malte_langkabel d0c92a6553 data: refined template parameter names
* Fixed template parameters to be resolved to their correct names even if they are (re)definied outside of the class (e.g. for template method definitions).
* Added test code.
2015-02-27 14:40:38 +01:00
malte_langkabel 115b19c266 data: fixed parsing errors.
* (quick) fixed all the crashes that occurred when parsing the own source code.
2015-02-12 14:01:43 +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
malte_langkabel bdcca6dbad data: template arguments default parameters
* implemented parsing of template argument default parameters.
* added tests for default arguments of template parameters.

fortune cookie message = If you continually give, you will continually have.
2015-02-03 16:22:48 +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
malte_langkabel e17341fc43 data: parse partial template specializations
* fixed: implicit template specializations will be found even if the original template definition is located in a different file (that gets included).
* implemented correct extraction of template parameters, template arguments and template specialization edges.
* added token locations for template parameters of partial template specializations.
* graph view displays full names of template parameters and template arguments.
* added test code for features
2015-02-03 13:10:56 +01:00
Andreas Stallinger 944554d034 logic: UndoRedo
UndoRedo working for ActiveTokensMessages
2015-02-03 10:47: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
malte_langkabel 6fc61a7e22 data: token locations for constructor calls
* fixed token locations for implicit constructor calls.
* removed error line from test code.
2015-01-19 15:08:16 +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 8dafd0435f build: different location for clang release libs on UNIX
This change fixes the clang cmake config to use release libs of clang, adds the TicTacToe source files to bin/app/src/
and adds time measuring to the parse call in Project.
2014-12-14 11:51:35 +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
Andreas Stallinger af4e3f7676 ui: statusbar
statusbar added, listen to status- , error-  and parsingfinishedmessages
2014-11-24 16:35:46 +01:00
Eberhard Graether 72c5847d75 ui: styled nodes in graph view
This change styles the nodes in the QtGraphView. Since Stylesheets can't be applied to QGraphicsItems, the style
implementation was done in the source files. The containers for public/protected/private nodes are now subclassed from
QtGraphNode as QtGraphNodeAccess, including a helper class QtAccessArrow for indicating the opened/colapsed state.
2014-11-12 01:42:49 +01:00
Andreas Stallinger 250918a4e7 logic: Configmanager support for lists
Configmanager now works with list. Use getValues for list. Configmanager
is able to save into a file now.
2014-10-30 14:22:28 +01:00
Eberhard Graether a9c93a9437 ui: added smart search box
This change switches the search box in the search view from QLineEdit to the derived QtSmartSearchBox implementation,
which is capeable of displaying tokens of the query as selectable button elements in different colors. It allows for all
the usual mouse and keyboard interactions that the QLineEdit offers.

fortune cookie message = Good news from someone dear is coming soon.
2014-10-22 17:28:46 +02:00
Manuel Dobusch 103e60b52a ui: graphView
Graph view has now toggle-able subnodes. Subnodes connected to the active node are always visible.

fortune cookie message = You will enjoy true success in whatever you do.
2014-10-20 14:36:57 +02:00
Eberhard Graether f41e1c429d data: Added HeaderSearchPaths to Application- and ProjectSettings
This change allows for parsing of a real codebase by specifying the system header search paths in
ApplicationSettings.xml and the additional header search paths in ProjectSettings.xml.

Both settings files are now documented in ApplicationSettings_template.xml and ProjectSettings_template.xml, which show
all possible settings for each file.

This change also fixes some parsing edge cases that occured.
2014-10-07 12:11:48 +02:00
Eberhard Graether 4fd1f330ed data: added SearchIndex for fuzzy name search and rewrote name handling in the Storage
This change stores each Token name in the separate singleton class Dictionary. The Dictionary gives each saved word an
Id and thereby avoids duplicated names. E.g if the constructor method "Graph::Graph" is stored then the word "Graph"
only appears once in memory.

The class SearchIndex is now responsible for the name hierarchy and is instantiated by the Storage. The SearchIndex
builds the name hierarchy using SearchNodes, each holding a Dictionary string reference of the name it holds. E.g if the
names "math::ceil" and "math::floor" are added to the SearchIndex then 3 nodes get created, the SearchNode "math" will
hold the two childs "ceil" and "floor".

The hierarchical graph creation functionality got split off from Graph into the new subclass StorageGraph. The
StorageGraph creates nodes with a passed SearchNode pointer of the name it represents in the SearchIndex. Thereby the
StorageGraph reuses the hierarchical information in the SearchIndex and can create nodes much quicker by avoiding node
searches and name comparisions.

The name information is now stored in the Nodes via the TokenComponentName class, which is subclassed into
TokenComponentNameReferenced and TokenComponentNameCached. The StorageClass creates nodes with the component
TokenComponentNameReferenced, which holds a pointer to the SearchNode instance holding the name. This allows for
retrieving the full name of the node, without using other Nodes int the Graph, which might not be present. If the Node
is copied then the component changes to a TokenComponentNameCached, which holds the full name as a string, so the
memory in the Storage doesn't have to be accessed anymore.

TokenComponentSignature is now only holding an Id of the signature string saved in the Dictionary, which speeds up the
signature comparison. A follow-up will change saving the whole signature as string to reusing the wordIds it is
consisting of.

Lastly the SearchIndex holds basic fuzzy search functionality. A passed query gets compared down the SearchNode
hierarchy as long as matches for each letter are found. Matches must contain all letters of the query. The search is
case-insensitive. If letters are found in front positions, next to each other or written in uppercase they are weighed
higher in the match ranking. The character ':' is also interpreted and found, although the '::' delimiter is not stored.

E.g. the query "m:l" used on the example above will return both "math::floor" and "math::ceil", but "floor" is ranked
higher because the 'l' appears closer to the start.
2014-09-06 01:13:07 +02:00
Eberhard Graether c84972b96e logic: added query syntax and filtering system for search
This change allows the user to use a simple query syntax in the search field to filter the results using names,
operators and predefined filters.

The class QueryTree is capable of parsing a simple query language consiting of QueryNodes, subclassed as
QueryOperators, QueryCommands and QueryTokens. QueryToken identifies a Token by name. QueryCommand represents predefined
filters. QueryOperator defines the syntactic relationship.

QueryNode examples:
	"A" -> QueryToken that identifies the Token named A
	class -> QueryCommand that filters all Nodes that are classes
	. -> QueryOperator that concatenates filters

QueryExamples:
	"A".class -> All Tokens named A that are classes
	method.(private|protected) -> All methods that are private or protected
	"A".member -> All members of A
	"A":field.!const -> All fields of A that are not const (':' can be used instead of '.member')

QueryTree checks for correct operator precedence and validity of the query.
All QueryCommands can be found in data/query/QueryCommand.cpp
All QueryOperators can be found in data/query/QueryOperator.cpp

The parsed QueryTree is then passed to the class GraphFilterConductor, which is capable of applying the query on a
Graph. Each part of the query gets assigned a GraphFilter that filters the input Graph in order of node precedence. The
class SubGraph is used as intermediate container, only holding bare pointers to Nodes and Edges. The output Graph holds
all Nodes that match the query.

MessageActivateTokens is used to show all of the results in the CodeView. The GraphView currently only shows the first
Node of the results.

bug id = #6
2014-08-30 18:24:00 +02:00
Eberhard Graether 890575cd90 data: Parsing type usages within function and method bodies
This change parses type usages in function and method bodies and saves them with an edge of type EDGE_TYPE_USAGE. This
also includes base class types used in initialization lists of derived class constructors.
2014-07-30 22:35:30 +02:00
Eberhard Graether da4811c5ea data: Parsing Typedefs with ParseTypeUsage
With this change typedefs have two TokenLocations, one for the TypeName and one for the UnderlyingType. When the
typedef is used with a variable the typedef is referenced now and not the underlying type.
2014-07-30 13:24:25 +02:00
Eberhard Graether 96df63055a data: Saving TokenLocations of scopes separately
This change parses the TokenLocations of scopes of classes, structs, functions, methods, namespaces and enums and
saves them in Storage with type LOCATION_SCOPE. The TokenLocations of these nodes are just their name declarations now.
Scope locations are displayed in blue color in the code view.
2014-07-28 17:54:36 +02:00
Eberhard Graether dea79f701b ui: added maximize button to CodeSnippets that opens the full file in a separate window 2014-07-27 16:13:59 +02:00
Eberhard Graether 4bf459fa99 logic: Refreshing reloads the source code and resets the Token ids to start from 1 2014-07-26 15:31:55 +02:00
Eberhard Graether 4262be133a ui: fixed SearchView style on mac and aligned it at top 2014-07-21 20:32:20 +02:00
malte_langkabel 2d7af3dda2 ui: tooltip
* added tooltip to case_sensitive button.
* styled tooltip.
2014-07-17 16:01:38 +02:00
malte_langkabel ad5056354d data: parse variable usage
* Implemented functions for parsing usages of fields and global variables in ASTBodyVisitor and ASTVisitor.
* Storage adds TokenLocatons and Edges for usages.
* Added tests for parsing usage of fields and global variables.

fortune cookie message = Fame, riches and love are yours for the taking.
2014-07-17 15:09:53 +02:00
Eberhard Graether 75e1cb7229 ui: fixed fontMetrics lineheight working with wrong font in QtCodeSnippet
FontMetric specific settings are now applied in the showEvent method, which is executed right before showing the Widget
where the font setting from the stylesheet is already present.
2014-07-17 13:41:51 +02:00
Eberhard Graether efe3316ae3 ui: styled code view
* updated spacings and colors in QtCodeView and QtCodeFile
* using Source Code Pro Regular (had to remove light cut from the Fonts folder because it got always used)
* updated syntax highlighted colors to fit design
* changed colors of highlights
* indent all QtCodeSnippets by maximum line number in QtCodeFile
* fixed syntax highlighting to work with sole multiline comment end

fortune cookie message = Your present plans are going to succeed.
2014-07-17 12:26:37 +02:00
Manuel Dobusch ec42ef708d ui: graph view layouting and member rendering
Added simple layouting functions (implementations for simple grid and circle layout).
Also the graph displays class members and connections (edges) to or from them "correctly" now.

fortune cookie message = Your exotic ideas will lead you to many exciting new adventures.
2014-07-15 16:40:52 +02:00
malte_langkabel 61cb4afd91 ui: style search view
Added stylesheet for search view.
Added utility function that loads all font files inside a folder.
Added icons and font files.
2014-07-15 12:30:40 +02:00
Eberhard Graether bbe5874a89 data: saving typedef to Storage
This change save typedef expressions to the Storage using a node of type Node::NODE_TYPEDEF and an edge of type
Edge::EDGE_TYPEDEF_OF that leads to the original type, with the qualifiers saved as DataType on the edge.
2014-07-14 16:47:40 +02:00
malte_langkabel 78704b6407 data: complex typename parsing
Added DataType class that can be constructed with a clang::qualType.
DataType keeps an internal QualifierList and ModifierStack.
2014-07-09 11:00:35 +02:00