Compare commits

...
212 Commits
Author SHA1 Message Date
malte_langkabel b9c4bd05cd data: showing local symbols
- added local symbols to storage
- added tests for local symbol parsing
- added MessageActivateLocalSymbols to activate local symbols in code view
- TokenLocations now store their LocationType instead of a plain bool "isScope"
- moved LocationType from TokenLocation to separate file, since it is also used in Annotations now.
- added local_symbol in stylesheet to define a style for hovering and activating these elements
- renamed location to token in stylesheet
2016-04-12 13:28:37 +02:00
Andreas Stallinger a448485b35 build: linux package change to qt5.6 2016-04-12 12:58:06 +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 e8e6b909a8 logic: Fixed referencing of nodes in GraphController::bundleNodesByType 2016-04-12 11:05:29 +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
malte_langkabel 7a0cd0c8d7 src: project load performance
removed unused fields from StorageStats to improve project loading performance.
2016-04-07 13:18:41 +02:00
malte_langkabel 7bc2f2b548 logic: improved fuzzysearch score calculation 2016-04-06 17:07:13 +02:00
Eberhard Graether 73e77a1baa docu: updated edge aggregation 2016-04-06 11:41:29 +02:00
Eberhard Graether 5e6714d95a ui: Added user interface for auto system header search paths detection
* moved detection files to lib_gui
* added ui to global header search and framework search ui in project wizzard and preferences
* detecting the search paths will add them to the list if not added yet
* only detected compilers are shown in the dropdown list
2016-04-06 11:23:20 +02:00
Eberhard Graether 93f21283f6 ui: improved angled edges and new style of aggregation
* added different routing options for horizontal, vertical or any
* added different pivot options to connect in the middle or at thirds
* changed aggregation to angled edge with thickness logarithmic to weight
* aggregation to pivot at middle and route any direction
* aggregation weight displayed in tooltip
* inheritance to route vertical
2016-04-04 21:05:39 +02:00
Andreas Stallinger 2ffec90c19 ui: startscreen display not existing project
* displays moved or deleted recent projects as disabled button
2016-04-04 20:43:56 +02:00
malte_langkabel f3dc12b0ed logic: search ui performance optimization
* replaced the implementation of the search index. the search index now uses a search-trie. edges have gates that can be used to check if a character can be matched when following the edge.
* SearchMatches now have a text and a list of NameHierarchies that share this node (instead of Ids, so that nodes must be found by names (which makes sure that SearchMatches are still valid after refresh).
* when parsing a project's description the CodeController now looks for NameHierarchies instead of SearchNode names to find ids of linked elements.
2016-04-04 15:39:39 +02:00
Andreas Stallinger ffc00829f0 ui: Bug Tracker in Menu 2016-04-04 14:39:09 +02:00
Andreas Stallinger e5bf177241 utility: Standardheadersearch
Standardheadersearch for clang and gcc
TODO: Visual Studio & Windows Kit bzw SDK
2016-04-04 14:13:32 +02:00
Eberhard Graether 31f366ab8f ui: Increased graph edge drawing performance
* only draw lines within the redrawn rectangle
* cache polygon points
2016-04-01 15:26:44 +02:00
Andreas Stallinger 2be3b541a6 fix: vs detector fix for wrong published headersearch stuff 2016-03-30 17:56:20 +02:00
Andreas Stallinger 03901e8173 logic: Test License is valid on day 0
* License was invalid on expire date
* build script does not start app after failing build
* symlink on linux
2016-03-30 15:49:08 +02:00
Manuel Dobusch fe74dfb7cc logic: vs plugin upgrade
Upgraded plugin project to vs 2015. Can now serve all targets (vs 2012 to 2015) with one binary.
2016-03-30 14:04:47 +02:00
Manuel Dobusch b75dd2abe1 logic: vs compiler flags
Added compiler flags from VS solution and vs compatibility flags.
2016-03-30 13:37:37 +02:00
Eberhard Graether cec370cfff data: Improved graph retrieval to use fixed number of requests 2016-03-30 12:26:19 +02:00
Andreas Stallinger a662424e2b logic: Test License
Test license for x days
License_generator flag -e <days>
2016-03-29 15:37:58 +02:00
Eberhard Graether ac506622b4 src: Fixed template function specialization defined within class definition caused clang error 2016-03-29 12:13:42 +02:00
malte_langkabel 880a199540 ui: changed the display format of the parse duration to "hh:mm:ss" 2016-03-24 10:44:09 +01:00
Manuel Dobusch 82db193c78 logic: solution parsing refactor
Refactored solution parser handling to make it more generic
Also includes new parser (wip)
2016-03-23 17:06:40 +01:00
malte_langkabel bac394381c ui: codeview show fully qualified scope names 2016-03-23 15:44:27 +01:00
malte_langkabel fee1d97604 ui: moved recent projects submenu
* moved the menu entry for "recent projects" to be placed close to "open project"
* replaced enum for MaxRecentProjectsCount in AppSettings by a getter function.
2016-03-23 14:15:30 +01:00
malte_langkabel d1a4bc7b08 src: small code cleanup 2016-03-22 10:14:59 +01:00
malte_langkabel 6743336f03 data: tweaked refresh for performance 2016-03-21 15:29:19 +01:00
malte_langkabel eab703cb0d data: implicit in database
* storing the information if a node is defined implicitly in the database
* the analysis however does not visit implicit nodes directly. Currently they are just recorded when used somewhere in the code. This should be changed once implicit nodes are hidde in the UI.
* removed error logs for unnamed template parameters and function parameters since it is ok when they are anonymous.
2016-03-18 13:33:34 +01:00
Andreas Stallinger f6de07ecf1 build: update botan paths
botan has new paths on linux build, debug - release fix on linux
2016-03-17 13:58:47 +01:00
Eberhard Graether a78e7b85d1 ui: Use update loop in graph panning and zooming for smooth interaction 2016-03-16 15:03:57 +01:00
Eberhard Graether 2d0700cd06 resource: changelog for 0.5.1.21 2016-03-16 14:44:14 +01:00
Eberhard Graether d18b6fb873 build: Fixed compile_commands.json not exportet 2016-03-16 14:42:28 +01:00
Eberhard Graether 3140b6dbb8 src: Fixed command execution for real
<description>
2016-03-15 18:03:42 +01:00
Eberhard Graether 2008d1401a src: Fixed command order at startup 2016-03-15 17:12:04 +01:00
Andreas Stallinger 23f05c003b build: Linux package update
create database with via commandline in packaging
symlink fix in setup
2016-03-15 16:13:43 +01:00
Eberhard Graether 09e3ff6897 ui: Fixed window size to use biggest dimensions of content and preferred 2016-03-15 15:23:19 +01:00
malte_langkabel 0db6f5fb36 build: installer fixes
* changed the windows installer projects to include the new gui resources
2016-03-15 14:04:30 +01:00
malte_langkabel c398302e4d logic: fixed relative project settings paths
* when specifying relative paths in project settings these stay relative when saving and loading them now.
2016-03-15 12:54:44 +01:00
Eberhard Graether ba523111af ui: Tuned graph zooming 2016-03-14 23:42:45 +01:00
Andreas Stallinger 0cc777a892 script: pre push hook - ignore delete remote branch 2016-03-14 17:02:27 +01:00
Eberhard Graether 1032b83a09 Revert "src: removed use of clang::tooling::CompileCommand::Filename"
This reverts commit 5d845961ac.
2016-03-14 15:21:46 +01:00
Manuel Dobusch 52aeae2f6d logic: plugin binary update
Updated all vs plugin binaries to latest version
2016-03-14 15:13:55 +01:00
Eberhard Graether 0dbdf9081e logic: Reparse project of newer version 2016-03-14 14:52:40 +01:00
Eberhard Graether cefaeae1ab resource: Updated documentation and smaller fixes
* updated documentation of: cdb loading, advanced settings, graph view
* removed stats of search index
* added global search paths to cdb summary
2016-03-14 14:45:42 +01:00
malte_langkabel f82da323b3 data: increased project load and codeview performance
* rewrote searchnode to use map
* added local cache for parent node ids when creating the Hierarchy Cache.
* added indices to SqliteStorage to increase code view performance.
2016-03-14 12:32:01 +01:00
Eberhard Graether 53d5fe6a06 ui: Added more movement controls to the graph
* SHIFT + mouse wheel for zooming
* WASD for moving up, right, left, down
* SHIFT + WS for zooming
* zoom anchor is under the mouse

bug id = 54
2016-03-12 00:55:31 +01:00
Eberhard Graether bcb43eccd0 ui: moved contentbased sizing to QtWindow 2016-03-11 22:22:57 +01:00
Eberhard Graether 813cde4d26 ui: adapt window size to contents if bigger than preferred size 2016-03-11 21:50:07 +01:00
Eberhard Graether f6e2821430 utility: turned of logging for scroll and focus messages
These messages added up to about 80% of all logs during use of the UI.
2016-03-11 15:29:13 +01:00
Eberhard Graether 47bf9bb7fa ui: Show loader when loading project and building search index 2016-03-11 15:18:59 +01:00
Eberhard Graether 8c9b9355d5 ui: Fixed expanding file with errors showed all locations as errors 2016-03-11 13:52:24 +01:00
Eberhard Graether a8aaf6950f data: save nodes and edges to Storage in order of parsing 2016-03-11 13:01:59 +01:00
Eberhard Graether f85d5a6024 ui: Fixed crash when opening preferences 2016-03-10 18:48:58 +01:00
malte_langkabel 9a7b818dba data: parser performance optimization for large projects
* moved inserting everything into the database to the end of parsing a file. this reduces many duplicate queries.
* removed ParserClient interface from Storage.
* errors are updated after parsing a file because we only if there are any duplicate errors after merging the new errors into the database.
* renamed field in db
* added fatal column to error db
2016-03-10 18:24:28 +01:00
Eberhard Graether e7c7178057 ui: Only bundle nodes when a single node is active 2016-03-10 13:03:15 +01:00
Eberhard Graether 527418fe2c ui: Fixed escaping and interrupting
* Fixed crash when closing window with ESCAPE
* Fixed interrupt status message not showing when interrupting parsing
2016-03-10 11:47:33 +01:00
Eberhard Graether 66e8be4b4d utility: Disabled ConfigManager warnings 2016-03-10 10:26:58 +01:00
Eberhard Graether 5d845961ac src: removed use of clang::tooling::CompileCommand::Filename 2016-03-09 12:22:39 +01:00
Eberhard Graether 2d1aa6bf8d ui: Added file extension UI to project setup 2016-03-08 15:20:50 +01:00
Eberhard Graether 20fbfa18be ui: Added toggle for advanced settings 2016-03-08 14:40:28 +01:00
Eberhard Graether 8cc8f5d534 logic: Added compilation database project setup
* Added CDB option to project type selection
* show CDB source files in popup
* define header paths separately
* made generic content summary in wizzard and use it everywhere
* fixed file paths not canonical in analysis
* refactored wizzard content paths to use summary instead of subpaths
* refactored files popup to simpler communication with content

bug id = 35
2016-03-08 13:20:37 +01:00
Andreas Stallinger 90c0d15d20 src: move set app path to linux includes 2016-03-08 13:01:00 +01:00
Manuel Dobusch cabdb69956 logic: listening status for communication controller
Added isListening method to ide communication controller
2016-03-07 17:29:20 +01:00
Andreas Stallinger d431161fbb script: test enforced push to master
enforced building and test with a pre-push hook
IMPORTANT: cmake is needed in PATH
2016-03-07 16:58:57 +01:00
Andreas Stallinger fec17e452d utility: Headless Coati
switch from qt to boost commandlineoptions
coati can now parse a coatiproject without gui with commandline flag -d
show all commandline options with flag --hidden
2016-03-07 16:38:53 +01:00
Manuel Dobusch b761db9b22 logic: fix for TaskParseCxx
Adaption for MessageFinishedParsing change
2016-03-07 16:25:08 +01:00
Eberhard Graether 1603df1a43 ui: Added delay when changing fontsize via mouse wheel
bug id = 44
2016-03-07 15:23:34 +01:00
malte_langkabel 6d7a1faaa4 src: code cleanup
* removed unused code: ParseFunction, ParseVariable and ParseTypeUsage. All this is handled using NameHierarchies now.
* Moved the getErrorCount method from ParserClient to the StorageAccess
* MessageFinishedParsing doesn't know the error count anymore.
* StatusBarController now has a StorageAccess to fetch the error count when needed.
2016-03-07 10:59:39 +01:00
wrongway88 5cdaafc6de logic: vs plugin fixes
Can now deal with single projects and solutions with non-c/c++ projects

bug id = 32
2016-03-05 18:18:54 +01:00
Eberhard Graether c9f1f65ba4 data: Fixed type references in parsed headers saved again 2016-03-04 12:46:44 +01:00
malte_langkabel 731c88dabd data: template argument fix
* improved context detection of template parameters.
* fixed case where declaration and definition of template function has 2 nodes in graph.
* removed code duplications: replaced individual cache classes in ASTVisitor with template based
2016-03-04 11:13:13 +01:00
Andreas Stallinger 8f1326e02a build: clang warning cleanup
* unused member in undoredocontroller
* int - size_t comparion
* virtual destructor ASTVisitor added
* braces when && and || in same if
* 1 warning left: isNamedDeclUnnamed in ASTVisitor is unused
2016-03-03 20:16:20 +01:00
Manuel Dobusch 8b4b4bb027 ui: Prevent network message handling without valid licence
Message by the ide com. controller are now caught by the licence checker to prevent them from causing trouble when waiting for the licence.

bug id = 45
2016-03-02 18:50:20 +01:00
Manuel Dobusch 612e12b35f ui: font size limits
Introduced font size limits and prevent ui refresh beyond those limits. Should prevent UI from freezing up with unlocked mouse wheel.
2016-03-02 16:22:16 +01:00
Eberhard Graether 8fa1763402 docs: changed path to static app data on Windows 2016-03-02 16:16:48 +01:00
Eberhard Graether 346a6f706d ui: Added ui for compiler flags to project setup summary
bug id = 37
2016-03-02 11:59:55 +01:00
malte_langkabel 2ebfbbf88e ui: display fatal errors
* added ErrorCountInfo to incorporate reporting of fatal errors during code analysis.
2016-03-02 10:53:04 +01:00
Eberhard Graether 4425b39ea1 ui: center windows on top of main window
* justify windows in middle of main window
* fixed window resizing
* add window displacement automatic with logo
2016-03-02 10:36:50 +01:00
Eberhard Graether f3534ac6a8 ui: Refactored windows to QtWindow base class
* renamed QtSettingsWindow to QtWindow
* moved functionality from QtProjectWizzardWindow to QtWindow
* use common createWindow method in QtMainWindow
2016-03-01 17:53:58 +01:00
Manuel Dobusch eb831376ce logic: Access right hotfix
Catch exception when coati tries to write to a database without sufficient rights. Display error message asking for restart with admin rights

bug id = 43
2016-02-29 18:07:14 +01:00
Andreas Stallinger b3ac0532cc utility: ringlogging fix, delete when switching log files 2016-02-26 12:31:38 +01:00
Eberhard Graether 47a0dd69a4 resources: changelog 0.5.0.4 2016-02-25 16:45:10 +01:00
Eberhard Graether c35419e281 utility: Fixed file logger using wrong directory for first log file 2016-02-25 14:40:22 +01:00
malte_langkabel bf0d99c9ba build: changed installer version 2016-02-25 12:53:32 +01:00
wrongway88 cfceb21e7e logic: vs solution parsing hotfix
Fixed bugged path building when project items have absolute paths
Based on, but not a fix for UrHo3D parsing crash

bug id = 30
2016-02-25 12:40:18 +01:00
Eberhard Graether e7a2d5a724 logic: Fixed global search paths not saved 2016-02-25 10:25:25 +01:00
Eberhard Graether 2b7f0bc506 ui: disable refresh buttons in trial project 2016-02-25 09:37:28 +01:00
malte_langkabel 08e6f47311 build: Fixed version number for Windows deploy script 2016-02-24 19:46:39 +01:00
Eberhard Graether c65e545ab4 build: Fixed version number for Mac bundle 2016-02-24 15:26:35 +01:00
Andreas Stallinger 389c7881c3 build: linuxbuild public beta 2016-02-24 13:39:22 +01:00
malte_langkabel c5b96a63ba build: windows setup script fix
* removed headless coati usage
* added automatic installer editing. YEAH!
2016-02-24 12:58:14 +01:00
Eberhard Graether 39e7789acd Revert "utility: headless parsing"
This reverts commit 76697d8b6e.
2016-02-24 11:17:25 +01:00
malte_langkabel 4dabe31776 build: windows deploy
* implemented a new deploy script for windows
* created a new setup project for the Coati Trail
2016-02-24 10:52:24 +01:00
Eberhard Graether 64ffafffa8 ui: picking folders and files only works on Mac OS 2016-02-24 10:40:00 +01:00
malte_langkabel 66f7fe9550 ui: fixed some spacings
* enter license screen
* project wizard
2016-02-24 10:34:01 +01:00
Eberhard Graether d34aea17b6 ui: Don't show that files are outdated in trial 2016-02-24 01:36:08 +01:00
Eberhard Graether b07e562a6e logic: Check if color scheme path still exists 2016-02-24 00:30:16 +01:00
Eberhard Graether 33ab897c91 ui: fixed squashed Combobox and pick both files and directories in QtDirectoryListBox 2016-02-24 00:02:17 +01:00
Eberhard Graether 7845987f8f build: added EULA.rtf to MacOS bundle
<description>
2016-02-23 19:58:14 +01:00
malte_langkabel 4c70c867d3 ui: changed the EULA 2016-02-23 19:27:56 +01:00
Eberhard Graether 0291ec9e92 web: updated documentation to cover setup wizzard 2016-02-23 19:08:40 +01:00
Andreas Stallinger 76697d8b6e utility: headless parsing
* resolve merge conflict
   * rpath for dev
   * generate a coatidb with a coatiproject
   * build script change to cmake --build
2016-02-23 18:59:17 +01:00
Eberhard Graether 5b7e958ea7 build: added plist for trial
<description>
2016-02-23 18:45:12 +01:00
Eberhard Graether 391054c0ac build: Fixes for trial release on MacOS 2016-02-23 18:30:34 +01:00
malte_langkabel d8cd3a6f2f ui: fixed linebreaks in license key box 2016-02-23 17:39:19 +01:00
Manuel Dobusch 8a2c4b4e9b logic: vs solution parsing fix
Fixed vs solution parsing to be able to handle some more variations of vs solution layouts...
2016-02-23 16:49:02 +01:00
Eberhard Graether f0178fb3c6 ui: removed compilation database option as project type 2016-02-23 16:04:46 +01:00
Eberhard Graether 8633201350 ui: Added descriptions to project type selection in wizzard 2016-02-23 14:39:43 +01:00
Eberhard Graether 32dc58b0c0 ui: Added compilation database loading via project wizzard 2016-02-23 12:55:17 +01:00
malte_langkabel 3cf3a3f575 ui: adjusted start screen width 2016-02-23 11:01:56 +01:00
Andreas Stallinger 2f94fed439 fix: undo last main.cpp changes
revert last main.cpp changes
2016-02-23 10:43:11 +01:00
Andreas Stallinger 0cbf1ad1bb logic: getframeworkpaths to compilationdatabase
* getframeworkpaths added
* typename for iterator in cache added(fix)
2016-02-23 10:38:34 +01:00
Andreas Stallinger a7975b4428 logic: iframework in compilationdatabase
add iframeworks to compilationdatabase headersearchpaths
2016-02-23 09:55:05 +01:00
malte_langkabel efaee022a6 logic: improved codeview performance
* reduced database queries necessary for creating code snippets in the codeview.
2016-02-22 21:23:33 +01:00
Eberhard Graether 43ac76d38c logic: Only activate node when clicking locations of both nodes and edges 2016-02-22 20:51:58 +01:00
Eberhard Graether 95b4ea4a6c ui: diverse improvements before release
* hide build file content
* use small buttons in all windows
* new design for start screen
* fixed design for enter license ui
* added spacing to summary
* brighter icons in wizzard
* added template icon for graph
* smoothing for graph icons
* switched error icon to dot
* fixed error message tooltip immediatly disappearing
* menu item for opening documentation
2016-02-22 20:07:26 +01:00
Andreas Stallinger e5eb7f2f12 utility: ringlogging
ringlogging
default_logs_per_file: 1000
default_log_files:2
2016-02-22 20:02:53 +01:00
malte_langkabel 1928e4beab ui: codeview template specialization
* when activating a template specialization the specialized template class (specialization parent) is not shown in the codeview anymore.
2016-02-22 15:25:56 +01:00
malte_langkabel e054df2e71 logic: search bar duplicates
* When a location is clicked in the code that has more than one TokenLocations pointing to the same element, only one instance of the element is displayed in the search bar.
2016-02-22 14:17:53 +01:00
malte_langkabel fc1a43c1a5 data: fixed indexer coverage
* revised the check if a declaration is implicit. this affects whether or not the reference to the decl should be recorded.
2016-02-22 13:14:48 +01:00
Eberhard Graether 7847d53fbb ui: Properly handle sub window stacks with QtWindowStackElement interface 2016-02-22 09:19:53 +01:00
Eberhard Graether 95b3fe9950 ui: Fixes in project wizzard
* stretch at end of preferences
* space at scrollbar
* default font size
* only refresh project when something changed
* fixed sizing of text fields
* icons fit to font size
* use em base sizes
* added language to project type label
2016-02-20 02:24:26 +01:00
Eberhard Graether 6e460afbfc ui: project wizzard design
* switched to QGridLayout for wizzard content layouting
* distinguish scrollable windows based on content
* content can define window size
* removed QtApplicationSettingsScreen, now done via QtProjectWizzardWindow and QtProjectWizzardContentPreferences
* added new project icon
2016-02-19 11:52:46 +01:00
Andreas Stallinger a8f5fd02f1 logic: compilationdatabase parsing
* compilationdatabase cleaned
* add SolutionparserCompliationDatabase
* added cmake_build_type_init as release for better autocomplition on linux
* external source handling for different linux versions
* clean script remove windows symbolic links only on windows
* linux external lib handling for different build easier
2016-02-18 17:20:27 +01:00
malte_langkabel 59232bda69 build: installer fix
* added missing folders/data to application dir
* installer now looks for the exe in the Release folder when packaging
2016-02-18 13:11:11 +01:00
wrongway88 ccd42f64be build: updated windows setup project
Removed some superfluous files
2016-02-17 18:22:33 +01:00
Eberhard Graether 5a22875a72 ui: Added links to about window 2016-02-17 15:24:38 +01:00
Eberhard Graether a4c6cebce6 ui: Extended wizzard with simple setup and vs solution parsing
* removed blurry coati background
* added language selection to project type window
* search for headers in project paths option as part of simple setup
* show popup containing list of all analyzed symbols
* show build file path in summary and allow refreshing
* only force refresh after editing project and something changed
2016-02-17 13:32:21 +01:00
malte_langkabel b7bb1349f2 misc: expanded Readme.md
* added instructions for tagging to Readme.md
2016-02-17 12:32:18 +01:00
malte_langkabel 7f33ab37be ui: display of project name
* Window title now reads "Coati - Project name".
* Removed file endings in the recent projects list.
* Changed the first line of the project summary to be "Project: Project name" instead of just "Project name".
2016-02-17 12:20:36 +01:00
malte_langkabel 42513fe102 data: revised indexing
* increased performance. coati is now 1.55 times as fast as at version 0.4
* integrated sourceweb parsing code
* removed astbodyvisitor
* NameHierarchy now store signatures in a new format
* storage does not allow to re-set the type of a node, once it is marked as "defined".
* made onTemplateRecordSpecParsed just create the edge, not the node.
* removed distinction between template specialitzations for functions and classes
2016-02-17 10:45:35 +01:00
wrongway88 9047d602ff logic: windows app path hotfix
windows app path hotfix
2016-02-16 19:54:17 +01:00
malte_langkabel bfb0a20636 build: fix symbolic links
* expanded setup and clean scripts to create/delete symbolic links for the new user folder.
2016-02-16 18:30:42 +01:00
malte_langkabel 70a9394d94 data: ignore MS-style ASM errors
* ignoring a certain error message for MS-style inline assemblies that is thrown by clang.
2016-02-16 17:43:40 +01:00
Eberhard Graether 19e03aeec7 src: Fixed wrong changes in main.cpp 2016-02-16 17:30:48 +01:00
Manuel Dobusch 835b6718ff build: deployment update
Updated deployment project according to data folder update
2016-02-16 16:56:15 +01:00
Eberhard Graether 86cf1ee62d build: split user and data folder, moving user data to Application Support on Mac 2016-02-16 16:44:42 +01:00
Eberhard Graether 89b8d51ab8 ui: Fixed about window size for Mac OS 2016-02-16 16:21:48 +01:00
malte_langkabel 2effa950f7 ui: redesigned about window
* adjusted layout of about window to match the design concept.
* replaced main font to be Roboto.
2016-02-16 16:10:22 +01:00
malte_langkabel b3df8fb825 ui: tutorial adjustments
* adjusted the start of the tutorial to work with the "overview" filter.
* fixes some spelling errors in the tutorial.
* tabs can be encoded by "\\t" in the project description.
2016-02-16 13:25:03 +01:00
Manuel Dobusch d04cf6316b logic: vs plugin update
Changed some exception handling behavious in network utility
2016-02-15 18:50:08 +01:00
Manuel Dobusch d31557cb66 Logic: VS Solution Parsing update
Updated vs solution parsing, fixed some issues. Also fixed some issues with corresponding unit tests.
2016-02-15 17:55:01 +01:00
malte_langkabel 1113544b6b src: fixed canonical paths
* reimplemented FilePath::canonical method to work for symbolic links.
2016-02-15 10:49:24 +01:00
malte_langkabel b7c20d4b79 build: updated qt dlls for windows
* updated qt dlls to QT version 5.6 for msvc 14
2016-02-15 09:00:01 +01:00
Eberhard Graether 56830f3ddc logic: Fixed aggregation click not showing source locations 2016-02-14 16:42:54 +01:00
Eberhard Graether 2d48f0a663 ui: Rewrote project setup to wizzard
* QtProjectWizzard handles window managment logic of project setup
* QtProjectWizzardWindow is used in every step and displays QtProjectWizzardContent
* QtProjectWizzardContent is the base class for all differnt content types
* Removed Singleton from ProjectSettings
* ProjectSettings are created by wizzard and QtProjectWizzardContent can access and load
* added project type selection at start of wizzard
* added summary at end of wizzard
* show global search paths in setup and summary
* fixed layout problems after font switch
* fixed scrolling and resizing of QtDirectoryListBox
* separated QtLocationPicker to own class
2016-02-14 15:42:30 +01:00
Andreas Stallinger 50a94bf108 logic: Application moving protection, licensegenerator for other licensetypes
* Licensegenerator can now generate any type of license via commandline argument
* When moving the appliction, the user needs to enter the License again
2016-02-10 12:52:00 +01:00
Manuel Dobusch 082b94ac8d logic: code view asset fix
Fixed asset paths for code view
2016-02-09 14:05:25 +01:00
Manuel Dobusch e13eaa85da logic: visual studio solution parsing
Can now parse visual studio solutions. VS Plugin can send a command, parsing is implemented in Coati.
Some minor changes: added project file icon, added language check to vs plugin
2016-02-08 15:58:25 +01:00
Eberhard Graether 29149f313a logic: Added namespaces to overview and fixed namespace activation 2016-02-08 03:39:08 +01:00
Eberhard Graether d6c03ffb02 logic: Don't show line numbers for summary 2016-02-08 01:24:28 +01:00
Eberhard Graether d8a8bbee06 utility: Fixed log file names not sorted chronologically 2016-02-04 16:33:43 +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 5c49eaf293 ui: Fixed aggregation click and activation of already active symbol 2016-02-03 15:23:24 +01:00
Eberhard Graether b40e49b633 ui: Display scope name at bottom of snippet if available
* Show scope name at bottom looking like top one
* Refactored CodeSnippetParams out of CodeView and use them everywhere
* Fixed border radius clipping problem at bottom of file by defining a small padding
* Scroll to line number when inserting a scope
2016-02-03 13:54:46 +01:00
Eberhard Graether e7224e0c46 ui: switched fonts to FiraSans 2016-02-02 13:59:14 +01:00
Eberhard Graether 3cbafa6456 logic: file associations for Mac and opening project files via Mac OS
* hide start screen when opening with project file
* added project icon file to bundle and file type association to plist
* listen for file open events from double click or drag and drop
* fixed crashes in window handling
2016-02-02 13:20:05 +01:00
Eberhard Graether 29a70b8f70 ui: Fixed gui_path for enter license ui css files 2016-02-01 15:43:04 +01:00
Eberhard Graether 5aa1add617 ui: Fixed gui_paths in css subtracted with RessourcePaths::getGuiPath() 2016-02-01 14:14:54 +01:00
Eberhard Graether ead0abfba2 logic: Return to last scroll position in code view on undo
* fixed scrolling on undo
* refactored autoscrolling in code view
* save scroll position of user with MessageScrollCode
2016-01-29 13:08:30 +01:00
Andreas Stallinger 427c94457b build: fix trial build on linux
add dl and pthread libs for trial on linux to get rid off linker error
2016-01-28 15:16:04 +01:00
Eberhard Graether 7bd44a9f45 ui: Clearing error count when parsing starts
* fixed undo showed errors twice when activated from status bar.
2016-01-28 14:30:52 +01:00
Eberhard Graether 635f6058c6 ui: Update error count while parsing 2016-01-28 13:19:38 +01:00
Eberhard Graether 38f943e8a0 logic: Undoing file minimize, snippets and maximize actions
* MessageChangeFileView as single message for changing file state in the code view
* Show code view after updates at once
2016-01-28 12:40:29 +01:00
malte_langkabel 297d5490c0 logic: name cache
* implemented name caching while visiting the AST of a translation unit.
2016-01-27 16:27:12 +01:00
malte_langkabel 45fcf80a74 build: fixed project setup
* expanded setup script to create symbolic links
* expanded clean script to remove symbolic links before deleting contents of Debug and Release folders.
* fixed lines in tutorial so they don't exceed the limit of 80 chars.
2016-01-27 16:14:48 +01:00
Eberhard Graether fdf44b4573 setup: Fixed include location for botan in lib_gui target 2016-01-27 15:43:29 +01:00
Eberhard Graether ae897c58a5 setup: Fixed botan debug and release split for Unix 2016-01-27 14:46:10 +01:00
Eberhard Graether 8044f5cb5f data: Fixed delete not working due to missing foreign keys pragma 2016-01-27 14:12:25 +01:00
Eberhard Graether 6cadab1b23 src: Fixed errors in file path switch 2016-01-27 12:20:46 +01:00
Manuel Dobusch 8d6220dafb logic: file paths
Changed relative file paths for resources to absolute paths to ensure functionality of shortcuts and file associations on windows platform
2016-01-26 15:28:43 +01:00
Eberhard Graether e0d7f1d613 logic: save template parameters as child nodes with member access 'template parameter'
* added access node to graph for template parameters, no icon so far
* don't reexpand function nodes with children when active before
* removed console warnings for edges
2016-01-26 14:38:41 +01:00
Andreas Stallinger 91d655f397 ui: fix about and licenses screen
esc now works for the about and license window
2016-01-26 13:35:56 +01:00
malte_langkabel ada00cc627 logic: template parameter as child nodes
* when generating the name hierarchy of a template parameter the parameter name is now an extra element that follows the template class/struct/function element.
2016-01-26 12:08:07 +01:00
Eberhard Graether b57ea3addb ui: increased performance of annotation painting in QtCodeArea 2016-01-26 00:21:07 +01:00
malte_langkabel 6a5975fe13 data: fixed storing of non-canonical includes
* Include paths are converted to a canonical version before they are tested for being in the project files. Therefore non-canonical include edges will be stored by Coati as well.
2016-01-25 17:13:22 +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
malte_langkabel 8addbb2195 src: fix crash on edit project
* fixed crash when comparing two vectors of different sizes.
2016-01-25 16:40:28 +01:00
malte_langkabel 1209d0e7c0 ui: AWS in About window
* added "funded by the AWS"
* changed about window to depend on layout which is easily modifiable
* added aws logo
2016-01-21 14:45:21 +01:00
malte_langkabel 9250360750 web: documentation
* Created a web based version of our documentation.
* Updated all the texts to reflect the current version of Coati.
2016-01-21 13:59:09 +01:00
malte_langkabel 3b62c1353e build: fixed licensing project
* fixed license includes for windows
2016-01-21 13:54:41 +01:00
Eberhard Graether 46d9825454 logic: Trim lines and remove empty ones when checking license key 2016-01-19 11:48:41 +01:00
Eberhard Graether cc2b74ccca ui: Fixed listbox line layout on Mac 2016-01-19 09:58:58 +01:00
Manuel Dobusch ed1aba8858 build: Botan include fix
Fixed CMakeLists to allow debug build
2016-01-18 17:59:46 +01:00
Eberhard Graether 503e4f185b logic: Show node with search name main after parsing 2016-01-18 16:30:38 +01:00
Andreas Stallinger f16e6b58c5 build: fix botan find_lib for linux
add NO_DEFAULT_PATH to find_library so that the search exclude botan libs installed on the system
2016-01-18 15:09:21 +01:00
Andreas Stallinger 8bbd764cfc build: different find_library for windows and unix 2016-01-18 12:40:08 +01:00
Eberhard Graether e1f29da76a script: Look for botan-1.11 in CMake setup 2016-01-18 11:42:32 +01:00
malte_langkabelandEberhard Graether 8be7886c7a build: fixed cmake for windows
* added target for the license lib.
* switched to statically linked version of boost.
* removed boost dlls from bin directories.
* cleaned up CMakeLists.
2016-01-18 11:42:32 +01:00
Eberhard Graether f3223e535a ui: Removed tooltip css from SettingsWindow 2016-01-18 11:42:31 +01:00
Eberhard Graether 2954865d41 build: fixed boost linking 2016-01-18 11:42:31 +01:00
Eberhard Graether d2f9a748ef build: Fixed keygen integration after app/trial split 2016-01-18 11:42:31 +01:00
Eberhard Graether 8197172523 ressources: added template tags to app settings template 2016-01-18 11:42:31 +01:00
Eberhard Graether 75b102a528 ui, logic: design for license ui and forcing the user to enter a key on first open
This change integrates the license key ui into the application and makes it necessary for the user to enter a correct
key. The check for a correct key is done on startup and whenever a project is loaded. The check for the key also
includes a check whether the location of the application has changed.
2016-01-18 11:42:31 +01:00
Andreas StallingerandEberhard Graether 23257a3071 build,logic : Key/License Generator
Generator using the Botan Cyrptography library
2016-01-18 11:42:31 +01:00
malte_langkabel 743f91e882 locig: refresh after edit project
* implemented saving project settings force-refreshes the project if something has changed.
* when nothing has changed while editing the project settings, the project is not refreshed anymore.
* new project window is cleared now before it is displayed.
2016-01-18 10:59:32 +01:00
Eberhard Graether 3852bb7e5c ui: Fixed error locations at line end span down to next line 2016-01-18 10:22:57 +01:00
Eberhard Graether 3884db21d7 logic: Fixed deselection of edge didn't restore active locations in code view 2016-01-15 16:21:50 +01:00
malte_langkabel ca4fb79af7 ui: fixed search navigation bug
* fixed bug where navigating backwards to a symbol that was activated using the search bar did not update the search bar's text.
2016-01-15 13:43:09 +01:00
malte_langkabel 2c4711f657 logic: fixed undo redo not working for functions
* added real NameHierarchy (with signatures) when creating nodes for the graph, instead of using the SearchIndex which doesn't know about signatures.
2016-01-15 13:02:30 +01:00
malte_langkabel ad3229ebb2 data: fixed auto type
* fixed handling of non-deducible auto-type (e.g. when the auto-type depends on a template parameter).
2016-01-15 12:29:43 +01:00
malte_langkabel eecf8b95d2 data: expanded typename resolving
* implemented explicit handling of Decltype when resolving the typename.
2016-01-14 16:01:32 +01:00
malte_langkabel 5a39cab495 test: made tests run again.
* added call to SqliteStorage::init() in storage tests.
* made Storage::getIdForNodeWithNameHierarchy(...) return the correct node id again.
2016-01-14 13:28:49 +01:00
malte_langkabel c9e499c86c ui: language standard
* reversed the order of language standard options in the dropdowns.
2016-01-14 12:51:01 +01:00
Andreas Stallinger 047490512b ui: mouse cursor override
mouse cursor override in qtmainwindow removed, mouse cursor for codearea and graphview set to arrow
2016-01-13 17:15:53 +01:00
Eberhard Graether 99776f0242 logic: Defaults for C and C++ standard in dropdowns and fixed main to be first active symbol 2016-01-13 12:19:47 +01:00
Andreas Stallinger 46a629358c utility: loading project via commanlineargument
loading a project via commanline with --project or -p argument
2016-01-12 13:24:04 +01:00
Eberhard Graether b8faa5506d data: Fixed version check when opening older db 2016-01-08 14:51:11 +01:00
malte_langkabel ffca8841ea logic: exception parsing
* disabled clang warnings when analyzed code contains exception related constructs.
2016-01-08 13:40:40 +01:00
malte_langkabel 6d6d67470b data: performance optimization
* added index for node names.
* removed some unused methods of the SqliteStorage.
2016-01-08 12:20:27 +01:00
621 changed files with 41914 additions and 12798 deletions
+39 -23
View File
@@ -4,16 +4,18 @@
/bin/app/Debug/
/bin/app/Release/
/bin/app/data/log/
/bin/app/data/projects/ignored/
/bin/app/data/ApplicationSettings.xml
/bin/app/data/window_settings.ini
/bin/app/user/log/
/bin/app/user/ApplicationSettings.xml
/bin/app/user/window_settings.ini
/bin/lib/
/bin/lib_gui/
/bin/lib_parser/
/bin/lib_license/
/bin/gen/
/bin/license_generator/Debug/
/bin/license_generator/Release/
/bin/test/Debug/
/bin/test/Release/
@@ -25,28 +27,42 @@
.DS_Store
.idea
/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/bin
/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/obj
*.coatidb
/deployment/windows/CoatiSetup/CoatiSetup/Debug
/deployment/windows/CoatiSetup/CoatiSetup/Release
/deployment/windows/CoatiSetup/CoatiSetup.v12.suo
/deployment/windows/CoatiSetup/SetupApplicationSettingsLib/bin/
/deployment/windows/CoatiSetup/SetupApplicationSettingsLib/obj/
/deployment/windows/CoatiSetup/SetupCreateDesktopShortcutLib/bin/
/deployment/windows/CoatiSetup/SetupCreateDesktopShortcutLib/obj/
/deployment/windows/CoatiSetup/SetupCreateStartMenuShortcutLib/bin/
/deployment/windows/CoatiSetup/SetupCreateStartMenuShortcutLib/obj/
/deployment/windows/CoatiSetup/SetupRemoveCacheFiles/bin/
/deployment/windows/CoatiSetup/SetupRemoveCacheFiles/obj/
*.suo
*.sqlite
*.pch
*.swp
.clang_complete
*.swo
.clang_complete
.ycm_extra_conf.py
.ycm_extra_conf.pyc
compile_commands.json
Makefile
/__pycache__/
/deployment/windows/CoatiAppSetup/CoatiSetup/Debug
/deployment/windows/CoatiAppSetup/CoatiSetup/Release
/deployment/windows/CoatiAppSetup/SetupApplicationSettingsLib/bin/
/deployment/windows/CoatiAppSetup/SetupApplicationSettingsLib/obj/
/deployment/windows/CoatiAppSetup/SetupCreateDesktopShortcutLib/bin/
/deployment/windows/CoatiAppSetup/SetupCreateDesktopShortcutLib/obj/
/deployment/windows/CoatiAppSetup/SetupCreateStartMenuShortcutLib/bin/
/deployment/windows/CoatiAppSetup/SetupCreateStartMenuShortcutLib/obj/
/deployment/windows/CoatiAppSetup/SetupRemoveCacheFiles/bin/
/deployment/windows/CoatiAppSetup/SetupRemoveCacheFiles/obj/
/deployment/windows/CoatiTrialSetup/CoatiSetup/Debug
/deployment/windows/CoatiTrialSetup/CoatiSetup/Release
/deployment/windows/CoatiTrialSetup/SetupApplicationSettingsLib/bin/
/deployment/windows/CoatiTrialSetup/SetupApplicationSettingsLib/obj/
/deployment/windows/CoatiTrialSetup/SetupCreateDesktopShortcutLib/bin/
/deployment/windows/CoatiTrialSetup/SetupCreateDesktopShortcutLib/obj/
/deployment/windows/CoatiTrialSetup/SetupCreateStartMenuShortcutLib/bin/
/deployment/windows/CoatiTrialSetup/SetupCreateStartMenuShortcutLib/obj/
/deployment/windows/CoatiTrialSetup/SetupRemoveCacheFiles/bin/
/deployment/windows/CoatiTrialSetup/SetupRemoveCacheFiles/obj/
+209 -42
View File
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8.9)
# to get CMP0043 warnings, upgrade to version 3 and change the line above to VERSION 3.0 and remove the line below
if(POLICY CMP0043)
cmake_policy(SET CMP0043 OLD)
cmake_policy(SET CMP0043 OLD)
endif()
include(cmake/add_files.cmake)
@@ -11,15 +11,20 @@ include(cmake/version.cmake)
include(cmake/version_setup.cmake)
include(cmake/licenses.cmake)
# set Standerd build type to Release
set(CMAKE_BUILD_TYPE_INIT "Release")
# Variables --------------------------------------------------------------------
set(PROJECT_NAME Coati)
set(APP_PROJECT_NAME "${PROJECT_NAME}")
set(TRIAL_PROJECT_NAME "${PROJECT_NAME}_trial")
set(LIB_LICENSE_PROJECT_NAME "${PROJECT_NAME}_lib_license")
set(LIB_GUI_PROJECT_NAME "${PROJECT_NAME}_lib_gui")
set(LIB_PARSER_PROJECT_NAME "${PROJECT_NAME}_lib_parser")
set(LIB_PROJECT_NAME "${PROJECT_NAME}_lib")
set(LICENSE_GENERATOR_PROJECT_NAME "${PROJECT_NAME}_license_generator")
set(TEST_PROJECT_NAME "${PROJECT_NAME}_test")
if (WIN32)
@@ -28,7 +33,7 @@ if (WIN32)
elseif (APPLE)
set(PLATFORM_INCLUDE "includesMac.h")
else ()
set(PLATFORM_INCLUDE "includesDefault.h")
set(PLATFORM_INCLUDE "includesLinux.h")
endif ()
# Settings ---------------------------------------------------------------------
@@ -38,44 +43,90 @@ if (UNIX)
endif ()
# Project ----------------------------------------------------------------------
project(${PROJECT_NAME})
#RPATH
if(UNIX AND NOT APPLE)
set(CMAKE_SKIP_BUILD_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
set(CMAKE_INSTALL_RPATH "$ORIGIN/lib/:$$ORIGIN/lib/")
include(cmake/external.cmake)
endif()
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# Clang ------------------------------------------------------------------------
if (UNIX)
if (UNIX AND APPLE)
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
find_package(LLVM REQUIRED PATHS "$ENV{CLANG_DIR}/build_release/share/llvm/cmake")
find_package(LLVM REQUIRED PATHS "$ENV{CLANG_DIR}/build_release/share/llvm/cmake" NO_DEFAULT_PATH)
else()
find_package(LLVM REQUIRED PATHS "$ENV{CLANG_DIR}/build_debug/share/llvm/cmake")
find_package(LLVM REQUIRED PATHS "$ENV{CLANG_DIR}/build_debug/share/llvm/cmake" NO_DEFAULT_PATH)
endif()
elseif(UNIX)
find_package(LLVM REQUIRED PATHS "${EXTERNAL_BUILD}/llvm/share/llvm/cmake" NO_DEFAULT_PATH)
else()
find_package(LLVM REQUIRED PATHS "$ENV{CLANG_DIR}/build/share/llvm/cmake")
endif()
find_package(CLANG REQUIRED PATHS "${CMAKE_SOURCE_DIR}/cmake")
find_package(CLANG REQUIRED PATHS "${CMAKE_SOURCE_DIR}/cmake" NO_DEFAULT_PATH)
add_definitions(${CLANG_DEFINITIONS})
# Boost ------------------------------------------------------------------------
set(BOOST_ROOT $ENV{BOOST_159_DIR})
if(UNIX AND NOT APPLE)
set(BOOST_ROOT ${EXTERNAL_BUILD}/boost)
else()
set(BOOST_ROOT $ENV{BOOST_159_DIR})
endif()
set(Boost_USE_MULTITHREAD ON)
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_STATIC_RUNTIME OFF)
Set(Boost_NO_SYSTEM_PATHS ON)
set(BOOST_LIBRARYDIR $ENV{BOOST_159_DIR})
find_package(Boost 1.59 COMPONENTS system filesystem date_time REQUIRED)
find_package(Boost 1.59 COMPONENTS system program_options filesystem date_time REQUIRED)
# Eigen ------------------------------------------------------------------------
add_definitions(-DEIGEN_MPL2_ONLY)
set(EIGEN_ROOT $ENV{EIGEN_DIR})
if(UNIX AND NOT APPLE)
set(EIGEN_ROOT ${EXTERNAL_SRC}/eigen)
else()
set(EIGEN_ROOT $ENV{EIGEN_DIR})
endif()
# Botan -------------------------------------------------------------------------
set(BOTAN_VERSION "botan-1.11")
if(UNIX AND APPLE)
find_library(BOTAN ${BOTAN_VERSION} $ENV{BOTAN_DIR}/release NO_DEFAULT_PATH)
find_library(BOTAN_D ${BOTAN_VERSION} $ENV{BOTAN_DIR}/debug NO_DEFAULT_PATH)
elseif(UNIX)
find_library(BOTAN ${BOTAN_VERSION} "${EXTERNAL_BUILD}/botan" NO_DEFAULT_PATH)
else()
find_library(BOTAN botan "$ENV{BOTAN_DIR}/release")
find_library(BOTAN_D botan "$ENV{BOTAN_DIR}/debug")
endif()
if(${BOTAN} STREQUAL "BOTAN-NOTFOUND")
message(FATAL_ERROR "Botan not found")
else()
message(STATUS "Botan found")
endif()
if(UNIX AND NOT APPLE)
set(BOTAN_INCLUDE_DIR "${EXTERNAL_BUILD}/botan")
else()
set(BOTAN_INCLUDE_DIR "$ENV{BOTAN_DIR}")
endif()
# Lib --------------------------------------------------------------------------
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/lib)
#set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/lib)
#set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/lib)
add_subdirectory(src/lib)
add_subdirectory(src/external)
@@ -107,15 +158,15 @@ target_include_directories(${LIB_PROJECT_NAME} SYSTEM
${CLANG_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${EIGEN_ROOT}
"${CMAKE_SOURCE_DIR}/src/external"
"${CMAKE_SOURCE_DIR}/src/external"
)
target_link_libraries(${LIB_PROJECT_NAME} ${Boost_LIBRARIES})
# Lib Parser -------------------------------------------------------------------
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/lib_parser)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/lib_parser)
#set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/lib_parser)
#set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/lib_parser)
add_subdirectory(src/lib_parser)
@@ -132,6 +183,13 @@ set_property(
"${CMAKE_SOURCE_DIR}/src/lib"
)
set_target_properties(
${LIB_PARSER_PROJECT_NAME}
PROPERTIES
DEBUG_OUTPUT_NAME ${LIB_PARSER_PROJECT_NAME}_d
RELEASE_OUTPUT_NAME ${LIB_PARSER_PROJECT_NAME}
)
target_include_directories(${LIB_PARSER_PROJECT_NAME} SYSTEM
PUBLIC ${LLVM_INCLUDE_DIRS}
${CLANG_INCLUDE_DIRS}
@@ -139,13 +197,59 @@ target_include_directories(${LIB_PARSER_PROJECT_NAME} SYSTEM
)
link_directories(${LLVM_LIBRARY_DIRS} ${CLANG_LIBRARY_DIRS} ${Boost_LIBRARY_DIRS})
llvm_map_components_to_libnames(REQ_LLVM_LIBS support core libdriver)
target_link_libraries(${LIB_PARSER_PROJECT_NAME} ${CLANG_LIBRARIES} ${LLVM_AVAILABLE_LIBS})
#target_link_libraries(${LIB_PARSER_PROJECT_NAME} ${CLANG_LIBRARIES} ${LLVM_AVAILABLE_LIBS})
target_link_libraries(${LIB_PARSER_PROJECT_NAME} ${CLANG_LIBRARIES} ${REQ_LLVM_LIBS})
# Lib License -------------------------------------------------------------------
#set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/lib_license)
#set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/lib_license)
add_subdirectory(src/lib_license)
add_library(${LIB_LICENSE_PROJECT_NAME} ${LIB_LICENSE_FILES})
create_source_groups(${LIB_LICENSE_FILES})
set_property(
TARGET ${LIB_LICENSE_PROJECT_NAME}
PROPERTY INCLUDE_DIRECTORIES
"${CMAKE_SOURCE_DIR}/src/lib_license"
)
set_target_properties(
${LIB_LICENSE_PROJECT_NAME}
PROPERTIES
DEBUG_OUTPUT_NAME ${LIB_LICENSE_PROJECT_NAME}_d
RELEASE_OUTPUT_NAME ${LIB_LICENSE_PROJECT_NAME}
)
target_include_directories(${LIB_LICENSE_PROJECT_NAME} SYSTEM
PUBLIC
${Boost_INCLUDE_DIRS}
${LIB_LICENSE_PROJECT_NAME}
${BOTAN_INCLUDE_DIR}
)
# target_include_directories(${LIB_LICENSE_PROJECT_NAME} optimized "$ENV{BOTAN_DIR}/release")
# target_include_directories(${LIB_LICENSE_PROJECT_NAME} debug "$ENV{BOTAN_DIR}/debug")
if(UNIX)
target_link_libraries(${LIB_LICENSE_PROJECT_NAME} ${BOTAN})
else()
link_directories(optimized "$ENV{BOTAN_DIR}/release")
link_directories(debug "$ENV{BOTAN_DIR}/debug")
target_link_libraries(${LIB_LICENSE_PROJECT_NAME} debug ${BOTAN_D})
target_link_libraries(${LIB_LICENSE_PROJECT_NAME} optimized ${BOTAN})
endif()
# Lib Gui ----------------------------------------------------------------------
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/lib_gui)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/lib_gui)
#set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/lib_gui)
#set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/lib_gui)
add_subdirectory(src/lib_gui)
@@ -155,21 +259,27 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
# Find the QtWidgets library
set(CMAKE_PREFIX_PATH "$ENV{QT_DIR}/")
if(UNIX AND NOT APPLE)
set(CMAKE_PREFIX_PATH ${EXTERNAL_BUILD}/qt)
else()
set(CMAKE_PREFIX_PATH "$ENV{QT_DIR}/")
endif()
set(Qt5Widgets_DIR "$ENV{QT_DIR}/cmake/Qt5Widgets/")
set(Qt5PrintSupport_DIR "$ENV{QT_DIR}/cmake/Qt5PrintSupport/")
if(UNIX AND APPLE)
set(Qt5Widgets_DIR "$ENV{QT_DIR}/cmake/Qt5Widgets/")
set(Qt5PrintSupport_DIR "$ENV{QT_DIR}/cmake/Qt5PrintSupport/")
endif()
find_package(Qt5Widgets)
find_package(Qt5PrintSupport)
find_package(Qt5Network)
if(Qt5Widgets_FOUND)
MESSAGE(STATUS "Found Qt ${Qt5Widgets_VERSION_STRING}")
# FIX: Qt was built with -reduce-relocations
if (Qt5_POSITION_INDEPENDENT_CODE)
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
MESSAGE(STATUS "Found Qt ${Qt5Widgets_VERSION_STRING}")
# FIX: Qt was built with -reduce-relocations
if (Qt5_POSITION_INDEPENDENT_CODE)
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
endif()
# target for running versionnumber script
@@ -187,7 +297,7 @@ add_custom_command(
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/version.cmake
BYPRODUCTS ${PROJECT_SOURCE_DIR}/build/src/lib_gui/version.h
DEPENDS ${LIB_GUI_PROJECT_NAME}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMENT "check/update version number"
)
add_dependencies(${LIB_GUI_PROJECT_NAME} versionnumber)
@@ -197,14 +307,23 @@ create_source_groups(${LIB_GUI_FILES})
set_property(
TARGET ${LIB_GUI_PROJECT_NAME}
PROPERTY INCLUDE_DIRECTORIES
"${CMAKE_SOURCE_DIR}/build/src/lib_gui"
"${CMAKE_SOURCE_DIR}/src/lib"
"${CMAKE_SOURCE_DIR}/src/lib_gui"
"${CMAKE_SOURCE_DIR}/build/src/lib_gui"
"${CMAKE_SOURCE_DIR}/src/lib_license"
)
set_target_properties(
${LIB_GUI_PROJECT_NAME}
PROPERTIES
DEBUG_OUTPUT_NAME ${LIB_GUI_PROJECT_NAME}_d
RELEASE_OUTPUT_NAME ${LIB_GUI_PROJECT_NAME}
)
# include external header without warnings
target_include_directories(${LIB_GUI_PROJECT_NAME} SYSTEM
PUBLIC "${CMAKE_SOURCE_DIR}/src/external"
PUBLIC ${BOTAN_INCLUDE_DIR}
PUBLIC ${Boost_INCLUDE_DIRS}
)
@@ -220,10 +339,13 @@ configure_file(
#configure the versioning file
configure_file(
${CMAKE_SOURCE_DIR}/cmake/version.h.in
${CMAKE_SOURCE_DIR}/build/src/lib_gui/version.h
${CMAKE_SOURCE_DIR}/cmake/version.h.in
${CMAKE_SOURCE_DIR}/build/src/lib_gui/version.h
)
# configure public key for the coati version
include(cmake/publicKey.cmake)
set(CMAKE_AUTOMOC OFF)
# App --------------------------------------------------------------------------
@@ -236,7 +358,6 @@ endif ()
add_subdirectory(src/app)
# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
@@ -246,7 +367,8 @@ if (WIN32)
"// remains consistent on all systems.\n"
"IDI_ICON1 ICON \"${CMAKE_SOURCE_DIR}/build/coati.ico\"\n"
)
add_executable(${APP_PROJECT_NAME} ${APP_FILES} ${CMAKE_SOURCE_DIR}/build/Coati.rc)
add_executable(${APP_PROJECT_NAME} ${APP_FILES} ${CLANG_FILES} ${GEN_FILES} ${CMAKE_SOURCE_DIR}/build/Coati.rc ${CMAKE_SOURCE_DIR}/build/src/lib_gui/version.h)
# hide the console when running a release build.
set_target_properties(${APP_PROJECT_NAME} PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE")
@@ -255,14 +377,13 @@ if (WIN32)
set_target_properties(${APP_PROJECT_NAME} PROPERTIES COMPILE_DEFINITIONS_RELWITHDEBINFO "_CONSOLE")
set_target_properties(${APP_PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "/ENTRY:\"mainCRTStartup\" /SUBSYSTEM:WINDOWS")
set_target_properties(${APP_PROJECT_NAME} PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS")
else ()
add_executable(${APP_PROJECT_NAME} ${APP_FILES})
add_executable(${APP_PROJECT_NAME} ${APP_FILES} ${GEN_FILES} ${CMAKE_SOURCE_DIR}/build/src/lib_gui/version.h)
endif ()
create_source_groups(${APP_FILES})
target_link_libraries(${APP_PROJECT_NAME} ${LIB_GUI_PROJECT_NAME} ${LIB_PARSER_PROJECT_NAME} ${LIB_PROJECT_NAME} )
target_link_libraries(${APP_PROJECT_NAME} ${LIB_GUI_PROJECT_NAME} ${LIB_PARSER_PROJECT_NAME} ${LIB_PROJECT_NAME} ${LIB_LICENSE_PROJECT_NAME})
set_property(
TARGET ${APP_PROJECT_NAME}
@@ -270,8 +391,10 @@ set_property(
"${CMAKE_SOURCE_DIR}/src/app"
"${CMAKE_SOURCE_DIR}/src/lib"
"${CMAKE_SOURCE_DIR}/src/lib_gui"
"${CMAKE_SOURCE_DIR}/src/lib_license"
"${CMAKE_SOURCE_DIR}/src/lib_parser"
"${CMAKE_SOURCE_DIR}/build/src/lib_gui"
"${CMAKE_SOURCE_DIR}/build/src/app"
)
target_include_directories(${APP_PROJECT_NAME} SYSTEM
@@ -319,12 +442,16 @@ if (WIN32)
set_target_properties(${TRIAL_PROJECT_NAME} PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS")
else ()
add_executable(${TRIAL_PROJECT_NAME} ${TRIAL_FILES})
add_executable(${TRIAL_PROJECT_NAME} ${TRIAL_FILES} ${GEN_FILES})
endif ()
create_source_groups(${TRIAL_FILES})
target_link_libraries(${TRIAL_PROJECT_NAME} ${LIB_GUI_PROJECT_NAME} ${LIB_PROJECT_NAME})
target_link_libraries(${TRIAL_PROJECT_NAME} ${LIB_GUI_PROJECT_NAME} ${LIB_PROJECT_NAME} ${LIB_LICENSE_PROJECT_NAME} )
if(UNIX AND NOT APPLE)
target_link_libraries(${TRIAL_PROJECT_NAME} pthread dl rt)
endif()
set_property(
TARGET ${TRIAL_PROJECT_NAME}
@@ -392,8 +519,44 @@ if (APPLE)
@ONLY
)
configure_file(
${PROJECT_SOURCE_DIR}/setup/MacOSX/Info_trial.plist.in
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bundle_info_trial.plist
@ONLY
)
endif ()
# License Generator --------------------------------------------------------
add_subdirectory(src/license_generator)
if (UNIX)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/license_generator/${CMAKE_BUILD_TYPE})
else ()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/license_generator/)
endif ()
add_executable(${LICENSE_GENERATOR_PROJECT_NAME} ${LICENSE_GENERATOR_FILES})
create_source_groups(${LICENSE_GENERATOR_FILES})
set_property(
TARGET ${LICENSE_GENERATOR_PROJECT_NAME}
PROPERTY INCLUDE_DIRECTORIES
"${CMAKE_SOURCE_DIR}/src/lib_license"
)
target_include_directories(${LICENSE_GENERATOR_PROJECT_NAME} SYSTEM
PUBLIC ${Boost_INCLUDE_DIRS}
)
if(UNIX AND NOT APPLE)
target_link_libraries(${LICENSE_GENERATOR_PROJECT_NAME} pthread dl rt)
endif()
target_link_libraries(${LICENSE_GENERATOR_PROJECT_NAME} ${LIB_LICENSE_PROJECT_NAME} ${Boost_LIBRARIES} )
# CxxTest ----------------------------------------------------------------------
if (UNIX)
@@ -404,27 +567,32 @@ endif ()
add_subdirectory(src/test)
set(CXXTEST_INCLUDE_DIR $ENV{CXX_TEST_DIR})
if(UNIX AND NOT APPLE)
set(CXXTEST_INCLUDE_DIR ${EXTERNAL_SRC}/cxxtest)
else()
set(CXXTEST_INCLUDE_DIR $ENV{CXX_TEST_DIR})
endif()
set(CXXTEST_PYTHON_TESTGEN_EXECUTABLE ${CXXTEST_INCLUDE_DIR}/bin/cxxtestgen)
set(TESTGEN_FILE ${CMAKE_CURRENT_BINARY_DIR}/test_main.cpp)
find_package(PythonInterp REQUIRED)
add_executable (${TEST_PROJECT_NAME} ${TESTGEN_FILE} ${TEST_FILES})
add_executable (${TEST_PROJECT_NAME} ${TESTGEN_FILE} ${TEST_FILES} )
create_source_groups(${TEST_FILES})
target_link_libraries(${TEST_PROJECT_NAME} ${LIB_PARSER_PROJECT_NAME} ${LIB_PROJECT_NAME})
target_link_libraries(${TEST_PROJECT_NAME} ${LIB_PARSER_PROJECT_NAME} ${LIB_PROJECT_NAME} ${LIB_LICENSE_PROJECT_NAME})
find_package(CxxTest)
if (CXXTEST_FOUND)
set_property(
TARGET ${TEST_PROJECT_NAME}
PROPERTY INCLUDE_DIRECTORIES
"${CXXTEST_INCLUDE_DIR}"
"${CMAKE_SOURCE_DIR}/src/lib"
"${CMAKE_SOURCE_DIR}/src/lib_parser"
"${CXXTEST_INCLUDE_DIR}"
"${CMAKE_SOURCE_DIR}/src/external"
"${CMAKE_SOURCE_DIR}/src/lib_license"
${Boost_INCLUDE_DIRS}
)
endif (CXXTEST_FOUND)
@@ -460,7 +628,6 @@ elseif (UNIX)
endif ()
# Visual Leak Detector ---------------------------------------------------------
if (WIN32)
+86 -1
View File
@@ -7,9 +7,10 @@
* QT 5.5
* CxxTest 4.3
* Valgrind 3.9.0 (linux)
* Clang & LLVM (installation guide http://clang.llvm.org/docs/LibASTMatchersTutorial.html)
* Clang & LLVM (doesnt quite work for windows, use unix setup below and skip all the ninja stuff)(installation guide http://clang.llvm.org/docs/LibASTMatchersTutorial.html)
* Boost 1.59
* Eigen 3.2.6
* Botan 1.11.24
##### Environment Variables
@@ -18,11 +19,26 @@
* CLANG_DIR - .../clang-llvm/
* BOOST_159_DIR - .../boost_1_59_0
* EIGEN_DIR - .../eigen
* BOTAN_DIR - .../Botan-1.11.24
For Win32:
* VLD_DIR - .../Visual Leak Detector
* path - apped path to git.exe
###### Botan setup
Build release lib in ${BOTAN_DIR}/release
Build debug lib in ${BOTAN_DIR}/debug
for Windows release build:
$ python configure.py --cc=msvc --cpu=x86_32 --via-amalgamation --disable-shared
for Windows debug build:
python configure.py --cc=msvc --cpu=x86_32 --via-amalgamation --disable-shared --no-optimizations --with-debug-info
for other:
$ python configure.py --via-amalgamation --disable-shared
##### Settings
Run setup script:
@@ -71,6 +87,11 @@ $ ninja -j4 check-all
* Boost lib dir: rename library directory for your system (e.g.: 'lib32-msvc-12.0') to 'lib'
#### Tagging
$ git tag -a VERSION_NUMBER -m "DESCRIPTION"
$ git push --tags
#### Changelog
##### 0.3.0
@@ -125,3 +146,67 @@ $ ninja -j4 check-all
* navigate back&forward via mouse buttons
* navigate back via backspace key
##### 0.5.0.4
* Added option to hide widget window title bars to View menu
* Added C support
* Added shortcuts for font size resetting to View menu
* Fixed number postions in graph
* Improved performance of token name saving
* Added commandline option for project file
* Fixed cursor changing for resize and text interactions
* Added C and C++ standard setting to project
* Refresh project editing settings
* Added license key window and license checker
* Added trial target without analysis
* Added web documentation
* Improved code view annotation painting performance
* Update error count while analysis
* Improved back & forward in code view
* Return to last scroll position when going back in code view
* Added .coatiproject file associations with icon for Mac and Windows
* Display scope name at bottom of code snippet
* Improved graph view node bundeling to bundle more
* Improved log file names to be sorted chronologically
* Added application move protection to reenter license key
* Show overview on project open with node bundles per type
* Added overview and error keywords to search view
* Added project setup wizard for step-by-step project setup
* Added Visual Studio solution parsing via project wizard or VS plugin
* Improved style of ui windows
* Save user data in ~/Library/Application Support/Coati on Mac
* Improved analysis performance to take only 66% of the time
* Improved logging to alternate between 2 files of 1000 lines to decrease logfile sizes
* Improved painting of icons in graph to be smoother
* Added link to documentation to Help menu
* Fixed preferences not saved
##### 0.5.1.21
* Added project setup for Compilation Databases
* Improved analysis performance for large projects (10x as fast for 1.000.000 LoC)
* Improved project load and code view performance
* Added graph panning with WASD
* Added graph zooming with Shift + mouse wheel or Shift + WS
* Added file extension UI to advanced settings in project setup summary
* Added compiler flags UI to advanced settings in project setup summary
* Show fatal errors in UI that stopped analysis
* Fixed linux package creating ~/.config if not there
* Fixed project setup window sizes to adapt to content size
* Fixed project paths are now saved relative if defined relative
* Fixed crash when opening newer project with older version of Coati
* Removed high traffic log messages
* Show loader animation when loading project
* Fixed expanding file with errors showed all locations in red
* Fixed children on namespace activation were bundled
* Fixed interrupting of analysis to show message in status bar
* Disabled config file warnings
* Added delay for changing fontsize via mouse wheel
* Fixed Visual Studio plugin project loading
* Improved context detection for template parameters
* Fixed type references in headers saved multiple times
* Prevent network message handling without valid license
* Added font size limits
* Center windows on top of main window
* Fixed crash when accessing files without read permission
* Fixed file logger using wrong directory for first log file
+10
View File
@@ -7,6 +7,10 @@
<!-- COLOR: int int int int - rgba e.g. 125 125 125 255 -->
<config>
<info>
<description><!-- STRING: optional description shown in overview. Symbols can be linked with syntax [main] --></description>
</info>
<language_settings>
<language><!-- STRING: name of the language, e.g. c, c++, spanish, greek, greek++,... --></language>
<standard><!-- STRING: language version, e.g. c++ '11' --></standard>
@@ -35,5 +39,11 @@
<source_extensions><!-- STRING: extension for source e.g. .cpp --></source_extensions>
</extensions>
<use_source_paths_for_header_search><!-- BOOL: If enabled all subfolder of the source paths will be used for header search --></use_source_paths_for_header_search>
<build_file_path>
<vs_solution_path><!-- STRING: path to Visual Studio solution *.sln --></vs_solution_path>
<compilation_db_path><!-- STRING: path to Compilation Database --></compilation_db_path>
</build_file_path>
</source>
</config>
+28 -6
View File
@@ -31,8 +31,8 @@
<hover>#CCCCCC</hover>
</none>
<command>
<normal>#406D4D</normal>
<hover>#4E855E</hover>
<normal>#86BD40</normal>
<hover>#9EC769</hover>
</command>
<operator>
<normal>#7D2724</normal>
@@ -87,7 +87,7 @@
</syntax>
<selection>
<location>
<token>
<normal>
<border>transparent</border>
<fill>transparent</fill>
@@ -100,7 +100,21 @@
<border>#B2B2B2</border>
<fill>#4A4A4A</fill>
</active>
</location>
</token>
<local_symbol>
<normal>
<border>transparent</border>
<fill>transparent</fill>
</normal>
<focus>
<border>#FF9C3C</border>
<fill>transparent</fill>
</focus>
<active>
<border>#FF9C3C</border>
<fill>#695540</fill>
</active>
</local_symbol>
<scope>
<normal>
<border>transparent</border>
@@ -192,6 +206,9 @@
<normal>transparent</normal>
<focus>#FFFFFF</focus>
</border>
<hatching>
<normal>#FFFFFF</normal>
</hatching>
</function>
<method>
<like>function</like>
@@ -206,6 +223,9 @@
<normal>transparent</normal>
<focus>#FFFFFF</focus>
</border>
<hatching>
<normal>#FFFFFF</normal>
</hatching>
</global_variable>
<field>
<like>global_variable</like>
@@ -216,10 +236,12 @@
<undefined>
<fill>
<normal>#00000000</normal>
<normal>#EE7326</normal>
<focus>#EE8A4C</focus>
</fill>
<border>
<normal>#78282D</normal>
<normal>#80FFFFFF</normal>
<focus>#FFFFFF</focus>
</border>
</undefined>
<namespace>
+21 -6
View File
@@ -87,7 +87,7 @@
</syntax>
<selection>
<location>
<token>
<normal>
<border>transparent</border>
<fill>transparent</fill>
@@ -100,7 +100,21 @@
<border>#B2B2B2</border>
<fill>#EDEDED</fill>
</active>
</location>
</token>
<local_symbol>
<normal>
<border>transparent</border>
<fill>transparent</fill>
</normal>
<focus>
<border>#FF9C3C</border>
<fill>transparent</fill>
</focus>
<active>
<border>#FF9C3C</border>
<fill>#FFDFC0</fill>
</active>
</local_symbol>
<scope>
<normal>
<border>transparent</border>
@@ -210,10 +224,11 @@
<undefined>
<fill>
<normal>#00000000</normal>
<normal>#CC8D91</normal>
</fill>
<border>
<normal>#CC8D91</normal>
<normal>#803C3C3C</normal>
<focus>#3C3C3C</focus>
</border>
</undefined>
<namespace>
@@ -294,8 +309,8 @@
</template_member_specialization>
<aggregation>
<normal>#EEE</normal>
<focus>#DDD</focus>
<normal>#DDD</normal>
<focus>#CCC</focus>
</aggregation>
</edge>
</graph>
+21 -6
View File
@@ -87,7 +87,7 @@
</syntax>
<selection>
<location>
<token>
<normal>
<border>transparent</border>
<fill>transparent</fill>
@@ -100,7 +100,21 @@
<border>#B2B2B2</border>
<fill>#4A4A4A</fill>
</active>
</location>
</token>
<local_symbol>
<normal>
<border>transparent</border>
<fill>transparent</fill>
</normal>
<focus>
<border>#FF9C3C</border>
<fill>transparent</fill>
</focus>
<active>
<border>#FF9C3C</border>
<fill>#695540</fill>
</active>
</local_symbol>
<scope>
<normal>
<border>transparent</border>
@@ -225,10 +239,11 @@
<undefined>
<fill>
<normal>#00000000</normal>
<normal>#78282D</normal>
</fill>
<border>
<normal>#78282D</normal>
<normal>#80C3C3C3</normal>
<focus>#C3C3C3</focus>
</border>
</undefined>
<namespace>
@@ -316,8 +331,8 @@
</macro_use>
<aggregation>
<normal>#5D5D5D</normal>
<focus>#6D6D6D</focus>
<normal>#3D3D3D</normal>
<focus>#4D4D4D</focus>
</aggregation>
</edge>
</graph>
Binary file not shown.
Binary file not shown.
+45
View File
@@ -0,0 +1,45 @@
Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ with Reserved Font Name Fira Sans.
Copyright (c) 2014, Telefonica S.A.
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the copyright statement(s).
"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+201
View File
@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
@@ -0,0 +1,93 @@
Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
+4 -8
View File
@@ -1,23 +1,19 @@
* {
color: white;
font-size: 12px;
font-size: 14px;
font-weight: 100;
}
#small {
font-size: 12px;
}
#closeButton {
background: transparent;
border: none;
color: white;
font-size: 14pt;
height: 20px;
width: 20px;
height: 24px;
width: 24px;
}
#closeButton:hover {
border: 2px solid white;
border-radius: 10px;
border-radius: 12px;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

+12 -18
View File
@@ -9,13 +9,16 @@
#code_file {
background-color: <color:code/snippet/background>;
border: 2px solid <color:code/file/background>;
border-radius: 14px;
border-radius: 12px;
border-top-left-radius: 14px;
border-top-right-radius: 14px;
padding-bottom: 7px;
}
#code_file #title_widget {
background-color: <color:code/file/background>;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
border-top-left-radius: 7px;
border-top-right-radius: 7px;
padding-right: 5px;
}
@@ -60,11 +63,6 @@
padding-top: 0px;
}
#code_file #code_snippet[isLast=true] {
border-bottom-left-radius: 12px;
border-bottom-right-radius: 12px;
}
#code_file #code_snippet #scope_name, #code_file #code_snippet #dots {
background-color: <color:code/snippet/title/background>;
color: <color:code/snippet/title/text>;
@@ -92,10 +90,6 @@
color: <color:code/snippet/line_number/text>;
}
#code_file #code_snippet[isLast=true] #line_number_area {
border-bottom-left-radius: 12px;
}
#code_area {
background-color: transparent;
color: <color:code/snippet/syntax/normal>;
@@ -108,25 +102,25 @@
}
#code_file #maximize_button {
border-image: url(data/gui/code_view/images/maximize_inactive.png);
border-image: url(<setting:gui_path>code_view/images/maximize_inactive.png);
}
#code_file #maximize_button:enabled {
border-image: url(data/gui/code_view/images/maximize_active.png);
border-image: url(<setting:gui_path>code_view/images/maximize_active.png);
}
#code_file #snippet_button {
border-image: url(data/gui/code_view/images/snippet_inactive.png);
border-image: url(<setting:gui_path>code_view/images/snippet_inactive.png);
}
#code_file #snippet_button:enabled {
border-image: url(data/gui/code_view/images/snippet_active.png);
border-image: url(<setting:gui_path>code_view/images/snippet_active.png);
}
#code_file #minimize_button {
border-image: url(data/gui/code_view/images/minimize_inactive.png);
border-image: url(<setting:gui_path>code_view/images/minimize_inactive.png);
}
#code_file #minimize_button:enabled {
border-image: url(data/gui/code_view/images/minimize_active.png);
border-image: url(<setting:gui_path>code_view/images/minimize_active.png);
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 852 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

+47 -69
View File
@@ -1,98 +1,76 @@
{\rtf1\ansi\ansicpg1252\deff0\deflang3079{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
{\rtf1\ansi\ansicpg1252\deff0\deflang3079{\fonttbl{\f0\fnil\fcharset0 Calibri;}{\f1\fnil\fcharset2 Symbol;}}
{\colortbl ;\red0\green0\blue255;}
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\sa200\sl276\slmult1\lang7\f0\fs22 Coati\par
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\sl240\slmult1\lang7\f0\fs22 Coati\par
Software License Agreement\par
Effective 1.1.2016\par
\par
\pard\sa200\sl276\slmult1\par
BY INSTALLING OR USING THIS SOFTWARE, YOU ARE BECOMING A PARTY TO, AND ARE CONSENTING TO BE BOUND BY, THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, DO NOT INSTALL OR USE THIS SOFTWARE.\par
\par
\par
\b DEFINITIONS\b0\par
\par
"Software" means:\par
\bullet\tab A major version of Coati in executable form. The major version is defined by the leading number of the version string (e.g. the major version of Coati 1.x.x.x is version 1); \par
\bullet\tab documentation for that major version of Coati;\par
\bullet\tab minor updates included in software maintenance which are indicated by an increase in the numbers that follow the major version number (e.g. the update from Coati 1.0.0.0 to Coati 1.0.1.4).\par
"Licensor" means:\par
\bullet\tab Coati Software OG, having a place of business at Schlossallee 7/1, 5412 Puch/Hallein, Austria.\par
"Licensee" means:\par
\bullet\tab the individual evaluating the trial version of the Software;\par
\bullet\tab the company, corporation, or organization that purchased a License(s) for the Software;\par
\bullet\tab the individual who purchased a License for the Software.\par
"Activation Key" means:\par
\bullet\tab the name of the Licensee, the kind of license, the major version of the software that is licensed, and a hashcode; the combination of these values allows the Licensee to activate a genuine copy of the Software.\par
"Authorized User" means:\par
\bullet\tab the individual evaluating the Software during a trial;\par
\bullet\tab an employee or independent contractor who might at any time use the Software, of the company, corporation, or organization that purchased a License(s) for the Software; an entity has one Authorized User for each License purchased;\par
\bullet\tab the individual who purchased a License for the Software; the individual is the only Authorized User.\par
\par
\par
\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-360\li720\sa200\sl276\slmult1 A major version of Coati in executable form. The major version is defined by the leading number of the version string (e.g. the major version of Coati 1.x.x.x is version 1);\par
{\pntext\f1\'B7\tab}documentation for that major version of Coati;\par
{\pntext\f1\'B7\tab}minor updates included in software maintenance which are indicated by an increase in the numbers that follow the major version number (e.g. the update from Coati 1.0.0.0 to Coati 1.0.1.4).\par
\pard\sa200\sl276\slmult1 "Licensor" means:\par
\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-360\li720\sa200\sl276\slmult1 Coati Software OG, having a place of business at Schlossallee 7/1, 5412 Puch/Hallein, Austria.\par
\pard\sa200\sl276\slmult1 "Licensee" means:\par
\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-360\li720\sa200\sl276\slmult1 the individual evaluating the trial version of the Software;\par
{\pntext\f1\'B7\tab}the company, corporation, or organization that purchased a License(s) for the Software;\par
{\pntext\f1\'B7\tab}the individual who purchased a License for the Software.\par
\pard\sa200\sl276\slmult1 "Activation Key" means:\par
\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-360\li720\sa200\sl276\slmult1 the name of the Licensee, the kind of license, the major version of the software that is licensed, and a hashcode; the combination of these values allows the Licensee to activate a genuine copy of the Software.\par
\pard\sa200\sl276\slmult1 "Authorized User" means:\par
\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-360\li720\sa200\sl276\slmult1 the individual evaluating the Software during a trial;\par
{\pntext\f1\'B7\tab}an employee or independent contractor who might at any time use the Software, of the company, corporation, or organization that purchased a License(s) for the Software; an entity has one Authorized User for each License purchased;\par
{\pntext\f1\'B7\tab}the individual who purchased a License for the Software; the individual is the only Authorized User.\par
\pard\sa200\sl276\slmult1\par
\b GRANT\b0\par
\par
Subject to the terms of this Agreement, the Licensor hereby grants the Licensee a non-transferable, non-exclusive, non-sub-licensable, limited license that allows:\par
\bullet\tab the Licensee to distribute (an) Activation Key(s) to Authorized User(s);\par
\bullet\tab Authorized User(s) to install the licensed version of the Software on computer PCs where potential use of the Software is restricted exclusively to Authorized User(s);\par
\bullet\tab Authorized User(s) to use the Software on computer PCs, in virtual machines, in combination with multiple IDEs, and in combination with multiple instances of an IDE;\par
\bullet\tab Authorized User(s) to use the trial version of the software in order to examine the provided example project;\par
\bullet\tab Licensee to make a copy of the Software for archival purposes provided the copy contains all of the proprietary notices of the Software.\par
In case the Licensee of the software is a company, corporation, or organization the Licensor has the right to mention this usage of the Software on its own website.\par
\par
\par
\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-360\li720\sa200\sl276\slmult1 Subject to the terms of this Agreement, the Licensor hereby grants the Licensee a non-transferable, non-exclusive, non-sub-licensable, limited license that allows:\par
{\pntext\f1\'B7\tab}the Licensee to distribute (an) Activation Key(s) to Authorized User(s);\par
{\pntext\f1\'B7\tab}Authorized User(s) to install the licensed version of the Software on computer PCs where potential use of the Software is restricted exclusively to Authorized User(s);\par
{\pntext\f1\'B7\tab}Authorized User(s) to use the Software on computer PCs, in virtual machines, in combination with multiple IDEs, and in combination with multiple instances of an IDE;\par
{\pntext\f1\'B7\tab}Authorized User(s) to use the trial version of the software in order to examine the provided example projects;\par
{\pntext\f1\'B7\tab}Licensee to make a copy of the Software for archival purposes provided the copy contains all of the proprietary notices of the Software.\par
{\pntext\f1\'B7\tab}In case the Licensee of the software is a company, corporation, or organization the Licensor has the right to mention this usage of the Software on its own website.\par
\pard\sa200\sl276\slmult1\par
\b RESTRICTIONS\b0\par
\par
Licensee will not, and will have no right to:\par
\bullet\tab use the trial version of the software for any commercial purposes;\par
\bullet\tab distribute, use, or transfer an Activation Key(s) that has been superseded by an Activation Key(s) provided with software maintenance;\par
\bullet\tab modify, translate, reverse engineer, decompile, disassemble (except to the extent applicable laws specifically prohibit such restriction), create derivative works based on, or otherwise attempt to discover the source code or underlying ideas or algorithms of the Software;\par
\bullet\tab sell, rent, lease, distribute, or otherwise transfer rights to the Software without prior written consent from Licensor;\par
\bullet\tab remove any proprietary notices or labels from the Software.\par
\par
\par
\b TITLE AND COPYRIGHT\par
\b0\par
\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-360\li720\sa200\sl276\slmult1 use the trial version of the software in order to examine project other than the provided examples;\par
{\pntext\f1\'B7\tab}use a private/academic license of the software for any commercial purposes;\par
{\pntext\f1\'B7\tab}distribute, use, or transfer an Activation Key(s) that has been superseded by an Activation Key(s) provided with software maintenance;\par
{\pntext\f1\'B7\tab}modify, translate, reverse engineer, decompile, disassemble (except to the extent applicable laws specifically prohibit such restriction), create derivative works based on, or otherwise attempt to discover the source code or underlying ideas or algorithms of the Software;\par
{\pntext\f1\'B7\tab}sell, rent, lease, distribute, or otherwise transfer rights to the Software without prior written consent from Licensor;\par
{\pntext\f1\'B7\tab}remove any proprietary notices or labels from the Software.\par
\pard\sa200\sl276\slmult1\par
\b TITLE AND COPYRIGHT\b0\par
Title, ownership rights, intellectual property rights, and copyright to the Software, and any copies or portions thereof, shall remain in Licensor. The Software is protected by European copyright directives, Austrian copyright laws as well as United States copyright laws and international treaty provisions.\par
\par
\par
\b DISCLAIMER OF WARRANTY\b0\par
\par
\b\par
DISCLAIMER OF WARRANTY\b0\par
THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND. LICENSOR HEREBY DISCLAIMS ALL EXPRESS OR IMPLIED WARRANTIES, INCLUDING WITHOUT LIMITATION WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS AGREEMENT. SOME U.S. STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE. LICENSEE MAY HAVE OTHER LEGAL RIGHTS THAT VARY FROM STATE TO STATE OR BY JURISDICTION.\par
\par
\par
\b LIMITATION OF LIABILITY\par
\b0\par
\b LIMITATION OF LIABILITY\b0\par
LICENSEE ASSUMES THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. LICENSOR ASSUMES NO LIABILITY FOR THE COST OF ANY SERVICE OR REPAIR IF THE SOFTWARE IS DEFECTIVE. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT, STRICT LIABILITY, OR OTHERWISE, SHALL LICENSOR, OR ITS LICENSORS, SUPPLIERS OR RESELLERS, BE LIABLE TO LICENSEE OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES. IN NO EVENT WILL LICENSOR BE LIABLE FOR ANY DAMAGES IN EXCESS OF THE MONEY PAID FOR THE SOFTWARE, EVEN IF LICENSOR SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. FURTHERMORE, SOME U.S. STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT APPLY TO LICENSEE.\par
\par
\par
\b TERMINATION\par
\b0\par
\b TERMINATION\b0\par
The license granted herein shall be perpetual. If Licensee fails to comply with any of the terms of this Agreement, this Agreement and the rights granted herein will terminate immediately. Licensor may, at its sole discretion and at any time, terminate this Agreement. On termination, Licensee must cease using and destroy all copies of the Software.\par
\par
\par
\b EXPORT CONTROLS\par
\b0\par
\b\par
EXPORT CONTROLS\b0\par
Licensee shall comply with all export laws, restrictions and regulations of the United States, the Directive 2009/428/EC of the European Parliament and of the Council and the Austrian Au\'dfenwirtschaftsgesetz 2011, BGBl I No. 26/2011. Licensee shall not export, re-export or otherwise transfer the Software to any country for which the United States or the European Union or Austria maintains an embargo, or to any person or entity on the U.S. Department of Treasury List of Specially Designated Nationals or the U.S. Department of Commerce Denied Persons List or Entity List. Licensee represents and warrants that licensee is not located in, under the control of, or a national or resident of any restricted country or on any such list.\par
\par
\par
\b THIRD PARTY CREDITS\par
\b0\par
\b THIRD PARTY CREDITS\b0\par
Portions of the Software utilize or include third party software and other copyrighted materials. Credits, licensing terms, and disclaimers for such materials are contained in the installation directory for the Software, and are accessible via the \ldblquote Licenses\rdblquote dialog for the Software. Licensee agrees that use of such copyrighted materials is governed by their respective terms.\par
\par
\par
\b ENTIRE AGREEMENT\par
\b0\par
\b ENTIRE AGREEMENT\b0\par
This Agreement represents the complete agreement concerning this license between the parties and supersedes all prior agreements and representations between them. It may be amended only in writing executed by both parties. Coati Software OG reserves the exclusive right to periodically update this EULA at its discretion at any time, with reasonable notice to you by posting the new EULA at the following URL: {\field{\*\fldinst{HYPERLINK "http://www.coati.io/"}}{\fldrslt{\ul\cf1 http://www.coati.io/}}}\f0\fs22 . Any action arising out of or relating to this Agreement may be brought exclusively in Salzburg, Austria, and Coati Software OG and you irrevocably consent to the jurisdiction of such courts and venue in Salzburg, Austria.\par
\par
\par
\b CONTACT\par
\b0\par
\b CONTACT\b0\par
If you have questions regarding this agreement, contact:\par
\par
Coati Software OG\par
\pard\sl276\slmult1 Coati Software OG\par
Schlossallee 7/1\par
5412 Puch/Hallein\par
Austria\par
\par
\pard\sa200\sl276\slmult1 Austria\par
support@coati.io\par
\par
\par
}
+72
View File
@@ -0,0 +1,72 @@
Coati
Software License Agreement
Effective 1.1.2016
BY INSTALLING OR USING THIS SOFTWARE, YOU ARE BECOMING A PARTY TO, AND ARE CONSENTING TO BE BOUND BY, THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, DO NOT INSTALL OR USE THIS SOFTWARE.
DEFINITIONS
"Software" means:
·0 A major version of Coati in executable form. The major version is defined by the leading number of the version string (e.g. the major version of Coati 1.x.x.x is version 1);
·1 documentation for that major version of Coati;
·2 minor updates included in software maintenance which are indicated by an increase in the numbers that follow the major version number (e.g. the update from Coati 1.0.0.0 to Coati 1.0.1.4).
"Licensor" means:
·3 Coati Software OG, having a place of business at Schlossallee 7/1, 5412 Puch/Hallein, Austria.
"Licensee" means:
·4 the individual evaluating the trial version of the Software;
·5 the company, corporation, or organization that purchased a License(s) for the Software;
·6 the individual who purchased a License for the Software.
"Activation Key" means:
·7 the name of the Licensee, the kind of license, the major version of the software that is licensed, and a hashcode; the combination of these values allows the Licensee to activate a genuine copy of the Software.
"Authorized User" means:
·8 the individual evaluating the Software during a trial;
·9 an employee or independent contractor who might at any time use the Software, of the company, corporation, or organization that purchased a License(s) for the Software; an entity has one Authorized User for each License purchased;
·10 the individual who purchased a License for the Software; the individual is the only Authorized User.
GRANT
·11 Subject to the terms of this Agreement, the Licensor hereby grants the Licensee a non-transferable, non-exclusive, non-sub-licensable, limited license that allows:
·12 the Licensee to distribute (an) Activation Key(s) to Authorized User(s);
·13 Authorized User(s) to install the licensed version of the Software on computer PCs where potential use of the Software is restricted exclusively to Authorized User(s);
·14 Authorized User(s) to use the Software on computer PCs, in virtual machines, in combination with multiple IDEs, and in combination with multiple instances of an IDE;
·15 Authorized User(s) to use the trial version of the software in order to examine the provided example projects;
·16 Licensee to make a copy of the Software for archival purposes provided the copy contains all of the proprietary notices of the Software.
·17 In case the Licensee of the software is a company, corporation, or organization the Licensor has the right to mention this usage of the Software on its own website.
RESTRICTIONS
Licensee will not, and will have no right to:
·18 use the trial version of the software in order to examine project other than the provided examples;
·19 use a private/academic license of the software for any commercial purposes;
·20 distribute, use, or transfer an Activation Key(s) that has been superseded by an Activation Key(s) provided with software maintenance;
·21 modify, translate, reverse engineer, decompile, disassemble (except to the extent applicable laws specifically prohibit such restriction), create derivative works based on, or otherwise attempt to discover the source code or underlying ideas or algorithms of the Software;
·22 sell, rent, lease, distribute, or otherwise transfer rights to the Software without prior written consent from Licensor;
·23 remove any proprietary notices or labels from the Software.
TITLE AND COPYRIGHT
Title, ownership rights, intellectual property rights, and copyright to the Software, and any copies or portions thereof, shall remain in Licensor. The Software is protected by European copyright directives, Austrian copyright laws as well as United States copyright laws and international treaty provisions.
DISCLAIMER OF WARRANTY
THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND. LICENSOR HEREBY DISCLAIMS ALL EXPRESS OR IMPLIED WARRANTIES, INCLUDING WITHOUT LIMITATION WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS AGREEMENT. SOME U.S. STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE. LICENSEE MAY HAVE OTHER LEGAL RIGHTS THAT VARY FROM STATE TO STATE OR BY JURISDICTION.
LIMITATION OF LIABILITY
LICENSEE ASSUMES THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. LICENSOR ASSUMES NO LIABILITY FOR THE COST OF ANY SERVICE OR REPAIR IF THE SOFTWARE IS DEFECTIVE. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT, STRICT LIABILITY, OR OTHERWISE, SHALL LICENSOR, OR ITS LICENSORS, SUPPLIERS OR RESELLERS, BE LIABLE TO LICENSEE OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES. IN NO EVENT WILL LICENSOR BE LIABLE FOR ANY DAMAGES IN EXCESS OF THE MONEY PAID FOR THE SOFTWARE, EVEN IF LICENSOR SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. FURTHERMORE, SOME U.S. STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT APPLY TO LICENSEE.
TERMINATION
The license granted herein shall be perpetual. If Licensee fails to comply with any of the terms of this Agreement, this Agreement and the rights granted herein will terminate immediately. Licensor may, at its sole discretion and at any time, terminate this Agreement. On termination, Licensee must cease using and destroy all copies of the Software.
EXPORT CONTROLS
Licensee shall comply with all export laws, restrictions and regulations of the United States, the Directive 2009/428/EC of the European Parliament and of the Council and the Austrian Außenwirtschaftsgesetz 2011, BGBl I No. 26/2011. Licensee shall not export, re-export or otherwise transfer the Software to any country for which the United States or the European Union or Austria maintains an embargo, or to any person or entity on the U.S. Department of Treasury List of Specially Designated Nationals or the U.S. Department of Commerce Denied Persons List or Entity List. Licensee represents and warrants that licensee is not located in, under the control of, or a national or resident of any restricted country or on any such list.
THIRD PARTY CREDITS
Portions of the Software utilize or include third party software and other copyrighted materials. Credits, licensing terms, and disclaimers for such materials are contained in the installation directory for the Software, and are accessible via the “Licenses” dialog for the Software. Licensee agrees that use of such copyrighted materials is governed by their respective terms.
ENTIRE AGREEMENT
This Agreement represents the complete agreement concerning this license between the parties and supersedes all prior agreements and representations between them. It may be amended only in writing executed by both parties. Coati Software OG reserves the exclusive right to periodically update this EULA at its discretion at any time, with reasonable notice to you by posting the new EULA at the following URL: http://www.coati.io/. Any action arising out of or relating to this Agreement may be brought exclusively in Salzburg, Austria, and Coati Software OG and you irrevocably consent to the jurisdiction of such courts and venue in Salzburg, Austria.
CONTACT
If you have questions regarding this agreement, contact:
Coati Software OG
Schlossallee 7/1
5412 Puch/Hallein
Austria
support@coati.io
+21
View File
@@ -0,0 +1,21 @@
QLabel {
font-size: 12pt;
}
#licenseField {
font-family: "<setting:font_name>";
font-size: 10pt;
height: 200px;
padding: 5px;
width: 470px;
}
#licenseError {
color: red;
}
QTextEdit {
background-color: rgba(255, 255, 255, 200);
border-radius: 10px;
border: 1px solid lightgrey;
}
@@ -3,3 +3,7 @@ QToolTip {
color: black;
font-size: <setting:font_size>pt;
}
* {
font-family: "Roboto";
}
@@ -13,6 +13,10 @@ QPushButton:hover, QPushButton:checked {
background: <color:search/button/hover>;
}
QPushButton:disabled {
background: <color:search/button/disabled>;
}
QPushButton:pressed {
background: <color:search/button/press>;
}
@@ -1,58 +0,0 @@
QtDirectoryListBox {
background-color: rgba(255, 255, 255, 200);
border: 1px solid lightgray;
border-radius: 12px;
}
QListWidget {
background: transparent;
border: none;
margin: 2px 0 2px 0;
}
QListWidget::item {
border-bottom: 1px solid lightgray;
height: 20px;
}
QListWidget::item:selected {
background-color: #EEE;
}
QtListItemWidget #field {
background-color: transparent;
border: none;
font-size: 12px;
margin-top: 2px;
}
QtListItemWidget #button {
border: 1px solid lightgray;
border-radius: 8px;
font-size: 12px;
margin-top: 2px;
margin-right: 2px;
width: 20px;
}
QtListItemWidget #button:hover {
color: white;
background: #2D3F85;
}
#bar {
border-top: 1px solid lightgray;
}
#roundedButton {
color: white;
height: 16px;
margin-right: 3px;
width: 16px;
border: none;
}
#dropInfo {
color: lightgray;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

@@ -1,77 +0,0 @@
#titleLabel {
color: black;
font-size: 16pt;
font-weight: bold;
}
QLineEdit {
background-color: rgba(255, 255, 255, 200);
border-radius: 10px;
border: 1px solid lightgrey;
padding-left: 5px;
padding-right: 5px;
}
QLineEdit:disabled {
border: 1px solid lightgrey;
}
#formArea {
background-color: transparent;
border: none;
border-top: 1px solid lightgrey;
border-bottom: 1px solid lightgrey;
}
#form {
background-color: rgba(255, 255, 255, 150);
}
#form QLabel {
font-weight: bold;
}
#form #help {
background: transparent;
border: 1px solid #575656;
border-radius: 9px;
color: #575656;
height: 16px;
width: 16px;
}
#form #help:hover {
border-color: black;
color: black;
}
#moreButton {
background-color: rgba(255, 255, 255, 200);
border: 1px solid lightgray;
border-radius: 10px;
color: gray;
font-size: 15px;
height: 20px;
margin-left: 10px;
width: 28px;
}
#moreButton:hover {
color: white;
background: #2D3F85;
}
#windowButton {
background: white;
border: 1px solid lightgray;
border-radius: 10px;
color: black;
font-size: 17pt;
height: 30px;
width: 140px;
}
#windowButton:hover {
color: white;
background: #2D3F85;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 432 KiB

+7 -4
View File
@@ -1,13 +1,16 @@
#projectButton {
background: white;
border: 1px solid lightgray;
border-radius: 10px;
font-size: 17pt;
border-radius: 8px;
color: black;
padding: 3px 5px 2px;
font-size: 14pt;
min-width: 6em;
}
#projectButton:hover {
background: #2D3F85;
color: white;
background: #2D3F85;
}
#recentButton {
@@ -18,7 +21,7 @@
}
#recentButton:hover {
background-color: rgba(45, 63, 133, 70);
background-color: #CFD2E0;
border-radius: 10px;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

+75
View File
@@ -0,0 +1,75 @@
* {
font-size: 12pt;
}
QtDirectoryListBox {
background-color: white;
border: 1px solid lightgray;
border-radius: 12px;
}
QListWidget {
background: transparent;
border: none;
margin: 2px 0 2px 0;
}
QListWidget::item {
height: 20px;
border-bottom: 1px solid lightgray;
}
QListWidget::item:selected {
background-color: #EEE;
}
QtListItemWidget #field {
background-color: transparent;
border: none;
margin-top: 2px;
margin-left: 5px;
}
#bar {
border-top: 1px solid lightgray;
}
#plusButton, #minusButton, #dotsButton {
color: white;
height: 1em;
margin-right: 3px;
width: 1em;
border: none;
}
#dotsButton {
margin-top: 2px;
}
#plusButton {
border-image: url(<setting:gui_path>window/plus.png);
}
#plusButton:hover {
border-image: url(<setting:gui_path>window/plus_hover.png);
}
#minusButton {
border-image: url(<setting:gui_path>window/minus.png);
}
#minusButton:hover {
border-image: url(<setting:gui_path>window/minus_hover.png);
}
#dotsButton {
border-image: url(<setting:gui_path>window/dots.png);
}
#dotsButton:hover {
border-image: url(<setting:gui_path>window/dots_hover.png);
}
#dropInfo {
color: #999;
}

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

+158
View File
@@ -0,0 +1,158 @@
* {
font-size: 12pt;
}
#title {
color: black;
font-size: 16pt;
font-weight: bold;
}
#section, #projectTitle {
color: black;
font-size: 14pt;
font-weight: bold;
}
#projectTitle {
background: white;
padding: 5px;
margin-left: 40px;
}
#projectDescription {
font-size: 12pt;
margin-left: 20px;
}
#label {
font-weight: bold;
}
#formArea {
background: white;
border: none;
}
#scrollArea {
background: white;
border: none;
border-top: 1px solid lightgrey;
border-bottom: 1px solid lightgrey;
}
#form {
background: white;
}
#helpButton, #dotsButton, #refreshButton {
border: none;
color: white;
height: 1em;
width: 1em;
}
#helpButton {
border-image: url(<setting:gui_path>window/help.png);
}
#helpButton:hover {
border-image: url(<setting:gui_path>window/help_hover.png);
}
#dotsButton {
border-image: url(<setting:gui_path>window/dots.png);
}
#dotsButton:hover {
border-image: url(<setting:gui_path>window/dots_hover.png);
}
#refreshButton {
border-image: url(<setting:gui_path>window/refresh.png);
}
#refreshButton:hover {
border-image: url(<setting:gui_path>window/refresh_hover.png);
}
#name, #picker {
border-radius: 10px;
border: 1px solid lightgrey;
padding: 2px 5px 0px;
}
#locationField {
background: white;
border: none;
border-radius: 5px;
margin-left: 5px;
margin-top: 2px;
}
#dotsButton, #refreshButton {
margin-right: 2px;
}
#windowButton {
background: white;
border: 1px solid lightgray;
border-radius: 8px;
color: black;
padding: 3px 5px 2px;
font-size: 14pt;
min-width: 5em;
}
#menuButton {
background: white;
border: none;
border-radius: 8px;
border-bottom-right-radius: 0px;
border-top-right-radius: 0px;
font-size: 15pt;
margin-right: 0px;
margin-bottom: 7px;
height: 25px;
width: 90px;
}
#windowButton:hover {
color: white;
background: #2D3F85;
}
#menuButton:hover, #menuButton:checked {
background: #CFD2E0;
}
#windowButton:disabled {
color: lightgray;
}
#projectContainer {
background: white;
border: 1px solid lightgray;
border-radius: 8px;
margin-top: 15px;
margin-left: 20px;
}
#projectButton {
background: white;
border-radius: 8px;
font-size: 12pt;
width: 7em;
height: 7em;
margin-top: 10px;
}
#projectButton:hover, #projectButton:checked {
background: #CFD2E0;
}
#files {
border: 1px solid lightgray;
border-radius: 12px;
padding: 6px;
}
-1
View File
@@ -1 +0,0 @@
%windir%\system32\msiexec.exe /I{2A3B2FF5-A114-4CAB-88FB-DE8942D5B8EB}
+1
View File
@@ -0,0 +1 @@
%windir%\system32\msiexec.exe /I{E6343DF1-6651-4487-BACE-59068B169BA0}
+1
View File
@@ -0,0 +1 @@
%windir%\system32\msiexec.exe /I{99D5E031-E895-47B2-B108-AD026571FD29}
@@ -5,8 +5,17 @@
<standard>11</standard>
</language_settings>
<source>
<extensions>
<header_extensions>.h</header_extensions>
<header_extensions>.hpp</header_extensions>
<source_extensions>.cpp</source_extensions>
<source_extensions>.cxx</source_extensions>
<source_extensions>.cc</source_extensions>
<source_extensions>.c</source_extensions>
</extensions>
<source_paths>
<source_path>./src</source_path>
</source_paths>
<use_source_paths_for_header_search>0</use_source_paths_for_header_search>
</source>
</config>
@@ -7,7 +7,7 @@
//------------------------------------------------------------------------------
//
// 1 - THE CODE TUTORIAL
// As you already know the code view displays the snippets of code that are
// As you already know the Code View displays the snippets of code that are
// related to your currently active symbol. These snippets show the relevant
// lines in combination with some context.
// In case you discover something interesting as part of the snippet's context
@@ -37,9 +37,9 @@ void function_with_snippets()
// 9 - EDIT YOUR CODE
// In case you wondered if you can edit your code using Coati: You can't. Coati
// is designed for code exploration, not as a text editor or an IDE. But there
// is a chance that Coati can talk to your favourite editor (that you already
// is a chance that Coati can talk to your favorite editor (that you already
// know how to operate) via plugin. For more information about available
// plugins please take a look at Coati's user manual.
// plugins please take a look at Coati's documentation.
//
// We hope you enjoyed this tutorial. You can follow the call below to get back
// to the central hub.
@@ -51,6 +51,7 @@ void function_with_snippets()
//
//------------------------------------------------------------------------------
the_central_hub();
@@ -19,10 +19,11 @@ public:
// You completed the tutorial on the graph view. There is still more to learn
// but I guess you will figure it out on your own. One last thing: If you see
// an element with a hatched background please call us. It's a runaway!
// Just kidding. Those are elements that are used within your code, but without
// a definition anywhere in your source folder. So if you click them, Coati
// will display all the relations for the element, but the code view won't show
// a definition. If you want to learn more about Coati, go back to the central
// Just kidding. Those are elements that are used within your code, but have no
// definition anywhere in your source folder (like the "int" symbol on the
// right hand side of the graph). So if you click them, Coati will display
// all the relations for the element, but the code view won't show a
// definition. If you want to learn more about Coati, go back to the central
// hub. It is called in the function below but you can also try to get there
// using only the graph.
//
+4 -12
View File
@@ -6,18 +6,10 @@
//------------------------------------------------------------------------------
//
// WHAT IS THIS?
// This is a tutorial and it is one of the fastest ways to get to know Coati.
//
// WHERE AM I?
// This is Coati's Code View and you are looking at the main function of this
// project's program.
//
// WHY AM I HERE?
// Every time you open up a project in Coati it will go through your project in
// search for a function called "main". In case this function is defined the
// corresponding symbol is activated. Otherwise Coati will just activate the
// first thing in your codebase it happens to stumble across.
// WHAT IS THIS?
// Now the Code View finally shows some real code of the tutorial project.
// And who could think of a better place to start a tutorial that involves
// code than a main function?
//
// WHAT CAN I DO NOW?
// Left-click the "my_first_step()" function call inside the main function.
@@ -7,8 +7,8 @@
//------------------------------------------------------------------------------
//
// WHAT JUST HAPPENED?
// As I mentioned earlier, Coati knows the concept of an "active" symbol. You
// just changed the active symbol by clicking on the name of a function.
// Coati uses the concept of an "active" symbol. You just changed the active
// symbol by clicking on the name of a function.
//
// OK, BUT WHAT IS AN ACTIVE SYMBOL?
// Coati doesn't show your entire code base on a single screen. Even for
@@ -16,7 +16,7 @@
//
//------------------------------------------------------------------------------
void finde_me_if_you_can()
void find_me_if_you_can()
{
}
@@ -10,15 +10,13 @@
// Well done. Lets get over the other buttons left to the search bar really
// quick.
//
// 5 - UNDO AND REDO
// You can use the buttons to the very left to undo and redo your actions. This
// may seem odd since Coati doesn't include any features to actually change
// code. Instead Coati offers these buttons to help you navigate. So they
// really come in handy in case you ask yourself something like "How did I end
// up here?"
// 5 - FORWARD AND BACKWARD
// You can use the buttons to the very left to go forward and backward, like
// in a web browser. They really come in handy in case you ask yourself
// something like "How did I end up here?"
//
// 6 - REFRESH
// The next button allows you to refresh you project in case you changed some
// The next button allows you to refresh the project in case you changed some
// of your code. The second button toggels the auto-refresh option. When
// enabled Coati refreshes your project every time it's window gets focused.
//
@@ -1,12 +1,29 @@
<?xml version="1.0" encoding="utf-8" ?>
<config>
<source>
<extensions>
<header_extensions>.h</header_extensions>
<source_extensions>.cpp</source_extensions>
</extensions>
<source_paths>
<source_path>./src</source_path>
</source_paths>
</source>
</config>
<info>
<description>
WHAT IS THIS?\n
\tThis is a tutorial and it is one of the fastest ways to get to know Coati.\n
\n
WHERE AM I?\n
\tYou're looking at Coati's Code View which usually displays source code,\n
\tbut every time a new project is loaded it gives a quick summary to\n
\testimate the project's size. This is a fairly small project. It only\n
\tcontains a few hundred lines of code as you can see by the numbers below.\n
\n
LET'S GET STARTED!\n
\tTo keep things simple just click the "main" symbol below to start the tour.\n
\n
[main\tint\r()](); // &lt;- start here\n\n
</description>
</info>
<source>
<extensions>
<header_extensions>.h</header_extensions>
<source_extensions>.cpp</source_extensions>
</extensions>
<source_paths>
<source_path>./src</source_path>
</source_paths>
</source>
</config>
-16
View File
@@ -1,16 +0,0 @@
void lambdaCaller()
{
[](){}();
}
void lambdaSuperCaller()
{
lambdaCaller();
}
void lambdaMetaCaller()
{
[](){
lambdaCaller();
}();
}
-17
View File
@@ -1,17 +0,0 @@
/* hallo */
int a; /* hallo */
int b = 6/3/2; /* hallo */
//*
int c;
//*/
// /*
int d;
// */
/*
hallo
// */ int e = 0;
-129
View File
@@ -1,129 +0,0 @@
class Point
{
public:
Point(int x, int y)
: x(x)
, y(y)
{
}
int x;
int y;
};
class Shape
{
public:
virtual void draw() = 0;
};
class Line
: public Shape
{
public:
Line(Point start, Point end)
: start(start)
, end(end)
{
}
void draw()
{
// line drawing
}
private:
Point start;
Point end;
};
class Circle
: public Shape
{
public:
Circle(Point center, int radius)
: center(center)
, radius(radius)
{}
void draw()
{
// circle drawing
}
private:
Point center;
int radius;
};
class Image
{
public:
Image(int width, int height)
: width(width)
, height(height)
, idx(0)
{
shapes = new Shape*[10];
}
~Image()
{
for (int i = 0; i < idx; i++)
{
delete shapes[i];
}
delete [] shapes;
}
void addShape(Shape* shape)
{
if (idx < 10)
{
shapes[idx] = shape;
idx++;
}
}
void draw()
{
for (int i = 0; i < idx; i++)
{
shapes[i]->draw();
}
}
private:
Shape** shapes;
int idx;
int width;
int height;
};
void drawStickMan()
{
Image stickman(100, 200);
// head
stickman.addShape(new Circle(Point(50, 50), 25));
// torso
stickman.addShape(new Line(Point(50, 75), Point(50, 180)));
// arms
stickman.addShape(new Line(Point(50, 100), Point(10, 125)));
stickman.addShape(new Line(Point(50, 100), Point(90, 125)));
// legs
stickman.addShape(new Line(Point(50, 100), Point(10, 125)));
stickman.addShape(new Line(Point(50, 100), Point(90, 125)));
stickman.draw();
}
-3
View File
@@ -1,3 +0,0 @@
// nothing here
// except for text
-34
View File
@@ -1,34 +0,0 @@
class Player {
public:
void Do() {}
};
class Base {
protected:
void Init() {}
};
class Game : public Base {
public:
Game() {
Init();
}
void Run() {
player.Do();
}
private:
Player player;
};
Game* game;
int main() {
game = new Game();
game->Run();
delete game;
return 0;
}
-198
View File
@@ -1,198 +0,0 @@
int number = 3;
int calculate();
int calculate(long i)
{
int a = 1 + 2;
return a;
}
int calculate()
{
int a = 1 + 2;
return a;
}
int calculate(int i)
{
int a = 1 + 2;
return a;
}
#define PI 3.1415
#define CALL_CALCULATE() \
do \
{ \
calculate(); \
} \
while(0) \
int main()
{
CALL_CALCULATE();
}
int count = 0;
void countUp()
{
count += 1;
}
void countDown()
{
count -= 1;
}
void countUpTen()
{
for (int i = 0; i < 10; i++)
{
countUp();
}
}
class Person
{
public:
Person(char* name)
: name(name)
, age(0)
, weight(3)
, height(50)
{
}
char* askForName() const
{
return name;
}
void gainWeight(int gain)
{
weight += gain;
}
void grow(int gain)
{
height += gain;
}
void celebrateBirthday()
{
age += 1;
grow(5);
gainWeight(3);
}
private:
char* name;
int age;
int height;
int weight;
};
class Vehicle
{
protected:
int wheelCount;
int seatCount;
};
class Car
: public Vehicle
{
public:
Car()
{
wheelCount = 4;
seatCount = 5;
}
};
class Truck
: public Vehicle
{
public:
Truck()
{
wheelCount = 6;
seatCount = 2;
}
};
template<typename T>
T sum(T a, T b)
{
return a + b;
}
class Apple {};
class Pear {};
template<typename Fruit>
class Basket
{
public:
Fruit** field;
};
Basket<Apple> apples;
Basket<Pear> pears;
class Dog {};
class Cat
{
Dog getDog();
};
class Bird
{
Dog getDog();
Cat getCat();
};
class Fish
{
Dog getDog();
Cat getCat();
Bird getBird();
};
class Horse
: public Dog
{
Dog getDog();
Cat getCat();
Bird getBird();
Fish getFish();
};
class Building {};
class House : public Building {};
class Tower : public Building {};
class SkyScrapper : public Building {};
class Mansion : public Building {};
class Shard : public House, public Tower, public SkyScrapper, public Mansion {};
typedef unsigned int uint;
uint a = 1 + 2;
enum Size
{
SMALL,
MEDIUM,
LARGE
};
-272
View File
@@ -1,272 +0,0 @@
const bool *abd(int abc, int bca);
bool const *abc(int a, int b);
bool *const abcd(int a, int b);
int main();
void foo();
int sum(int a, int b);
int diff(int a, int b);
void funk();
class A
{
public:
A(char c)
: m_importantValue(42)
, m_importanterValue(c)
, m_importantestValue(3.14159265359f)
{
}
~A()
{
}
void doImportantStuff()
{
int a = 1;
m_importantValue *= a;
}
void doModeratelyImportantStuff()
{
m_importanterValue = 'R';
int answer = sum(21, 21);
}
private:
int m_importantValue;
char m_importanterValue;
const float m_importantestValue;
};
A globalA(' ');
class B : public A
{
public:
B()
: A('b')
{
}
virtual ~B()
{
}
protected:
virtual float getNumber() = 0;
};
class C
{
public:
C()
: m_valuable(0)
{
globalA.doImportantStuff();
s_count++;
}
~C()
{
s_count--;
}
static int getCount()
{
return s_count;
}
void solveAllProblems() const
{
A aInstance('a');
aInstance.doImportantStuff();
aInstance.doModeratelyImportantStuff();
}
private:
static int s_count;
int m_valuable;
};
namespace
{
namespace noname
{
struct V
{
int x;
int y;
};
}
enum E
{
X,
Y
};
}
noname::V voo;
typedef A* D;
D globalD;
class E
{
public:
E(){}
~E(){}
class SubE
{
public:
SubE(){}
~SubE(){}
};
private:
int m_importantInt;
};
class AnotherClass
: public A
{
public:
AnotherClass()
: A('x')
{
}
int publicInt;
protected:
int protectedInt;
private:
int privateInt;
};
class circleA
{
public:
circleA()
{
}
private:
//circleB m_b;
};
class circleB
{
public:
circleB()
{
m_a = circleA();
}
circleA foo(){return circleA();}
private:
circleA m_a;
};
struct circleC
{
public:
circleC()
{
m_b = circleB();
}
circleA foo0(){return circleA();}
circleB foo1(){return circleB();}
private:
circleB m_b;
};
class circleD
{
public:
circleD()
{
m_c = circleC();
}
circleC foo(){return circleC();}
circleA foo2(){return circleA();}
circleB foo3(){return circleB();}
private:
circleC m_c;
};
class circleE
{
public:
circleE()
{
m_d = circleD();
}
circleC foo(){return circleC();}
circleB foo1(){return circleB();}
circleD foo2(){return circleD();}
circleA foo3(){return circleA();}
private:
circleD m_d;
};
class circleF
{
public:
circleF()
{
m_e = circleE();
}
circleC foo(){return circleC();}
circleB foo1(){return circleB();}
circleD foo2(){return circleD();}
circleA foo3(){return circleA();}
circleE foo4(){return circleE();}
private:
circleE m_e;
};
class circleCenter
{
public:
circleCenter()
{
m_a = circleA();
m_b = circleB();
m_c = circleC();
m_d = circleD();
}
circleA foo0(){return circleA();}
circleB foo1(){return circleB();}
circleC foo2(){return circleC();}
circleD foo3(){return circleD();}
circleE foo4(){return circleE();}
circleF foo5(){return circleF();}
private:
circleA m_a;
circleB m_b;
circleC m_c;
circleD m_d;
//AnotherClass m_anotherClass;
};
-48
View File
@@ -1,48 +0,0 @@
#include "header.h"
int main();
void foo();
int sum(int a, int b);
int sum(int* a, int* b);
int diff(int a, int b);
int main()
{
A aInstance('m');
aInstance.doImportantStuff();
int a = sum(1, 2);
int b = diff(a, 3);
int c = a * b;
int x = 0;
return 0;
}
int sum(int a, int b);
int diff(int a, int b);
void foo()
{
const char* foo = "bar";
}
int diff(int a, int b);
int sum(int a, int b)
{
return a + b;
}
int diff(int a, int b)
{
return a - b;
}
void funk()
{
A aInstance('x');
aInstance.doModeratelyImportantStuff();
}
-13
View File
@@ -1,13 +0,0 @@
#include "header.h"
void test(int i, int b)
{
int x;
A instanceOfA('v');
return;
}
-23
View File
@@ -1,23 +0,0 @@
#include <memory>
class A
{
};
template <typename T>
class B
{
};
int main()
{
A a;
A* aPtr = nullptr;
std::shared_ptr<A> aSharedPtr = std::make_shared<A>();
B<A> b;
return 0;
}
-35
View File
@@ -1,35 +0,0 @@
template <bool B, typename, class F>
class Foo
{
public:
void bar()
{
}
};
template <typename T>
class Fooo
{
public:
void bar()
{
}
};
template <typename T, typename T::a::type U>
class Foooo1
{
public:
void bar()
{
}
};
template <typename T, typename T::type U>
class Foooo2
{
public:
void bar()
{
}
};
-13
View File
@@ -1,13 +0,0 @@
#include "header.h"
int main()
{
Foo<true, int, float> ft;
ft.bar();
return 0;
}
@@ -1,67 +0,0 @@
#include "artificial_player.h"
ArtificialPlayer::ArtificialPlayer( Field::Token token, const char* name )
: Player( token, name ) {
}
ArtificialPlayer::~ArtificialPlayer() {
}
Field::Move ArtificialPlayer::Turn( const Field& field ) const {
Field fakeField = field.Clone();
Node node = MinMax( fakeField, token_ );
return node.move;
}
ArtificialPlayer::Node ArtificialPlayer::MinMax( Field& field, Field::Token token ) const {
Node node;
node.value = -10000;
Field::Move move;
int sameMove;
for ( int i = 0; i < 3; i++ ) {
move.row = i;
for ( int j = 0; j < 3; j++ ) {
move.col = j;
if ( !field.IsEmpty( move ) ) {
continue;
}
field.MakeMove( move, token );
int turnValue = Evaluate( field, token );
if ( !turnValue && !field.IsFull() ) {
turnValue = -MinMax( field, Field::Opponent( token ) ).value;
}
field.ClearMove( move );
if ( turnValue > node.value ) {
node.move = move;
node.value = turnValue;
sameMove = 1;
} else if ( turnValue == node.value ) {
sameMove++;
if ( 1 % sameMove == 0 ) {
node.move = move;
}
}
}
}
return node;
}
int ArtificialPlayer::Evaluate( const Field& field, Field::Token token ) const {
if ( field.SameInRow( token, 3 ) ) {
return 2;
} else if ( field.SameInRow( Field::Opponent( token ), 2 ) ) {
return -1;
} else if ( field.SameInRow( token, 2 ) > 1 ) {
return 1;
}
return 0;
}
@@ -1,24 +0,0 @@
#ifndef _ARTIFICIAL_PLAYER_
#define _ARTIFICIAL_PLAYER_
#include "player.h"
class ArtificialPlayer : public Player {
public:
ArtificialPlayer( Field::Token token, const char* name );
virtual ~ArtificialPlayer();
virtual Field::Move Turn( const Field& field ) const;
private:
struct Node {
Field::Move move;
int value;
};
Node MinMax( Field& field, Field::Token token ) const;
int Evaluate( const Field& field, Field::Token token ) const;
};
#endif // _ARTIFICIAL_PLAYER_
-126
View File
@@ -1,126 +0,0 @@
#include "field.h"
#include "io.h"
Field::Token Field::Opponent( Token token ) {
if ( token == PlayerA ) {
return PlayerB;
} else if (token == PlayerB){
return PlayerA;
} else {
return None;
}
}
Field::Field()
: left_( 9 ) {
grid_ = new Token* [3];
for ( int i = 0; i < 3 ; i++ ) {
grid_[i] = new Token[3];
}
}
Field::~Field() {
for ( int i = 0; i < 3; i++ ) {
delete [] grid_[i];
}
delete [] grid_;
}
Field Field::Clone() const {
Field field;
for ( int i = 0; i < 3; i++ ) {
for ( int j = 0; j < 3; j++ ) {
field.grid_[i][j] = grid_[i][j];
}
}
field.left_ = left_;
return field;
}
void Field::Clear() {
for ( int i = 0; i < 3; i++ ) {
for ( int j = 0; j < 3; j++ ) {
grid_[i][j] = None;
}
}
left_ = 9;
}
void Field::Show() const {
io::stringOut(" 1 2 3\n");
for ( int row = 0; row < 3; row++ ) {
io::numberOut(row + 1);
io::stringOut(" ");
for ( int col = 0; col < 3; col++ ) {
if ( grid_[row][col] == PlayerA ) {
io::stringOut(" X ");
} else if ( grid_[row][col] == PlayerB ) {
io::stringOut(" O ");
} else {
io::stringOut(" ");
}
if ( col < 2 ) {
io::stringOut("|");
}
}
if ( row < 2 ) {
io::stringOut("\n -----------\n");
}
}
io::stringOut("\n\n");
}
int Field::SameInRow( Token token, int amount ) const {
int sum = amount * token;
int count = 0;
for ( int i = 0; i < 3; i++ ) {
if ( grid_[i][0] + grid_[i][1] + grid_[i][2] == sum ) {
count++;
} else if ( grid_[0][i] + grid_[1][i] + grid_[2][i] == sum ) {
count++;
}
}
if ( grid_[0][0] + grid_[1][1] + grid_[2][2] == sum ) {
count++;
} else if ( grid_[2][0] + grid_[1][1] + grid_[0][2] == sum ) {
count++;
}
return count;
}
bool Field::InRange( const Move& move ) const {
return move.row >= 0 && move.row < 3 && move.col >= 0 && move.col < 3;
}
bool Field::IsEmpty( const Move& move ) const {
return grid_[move.row][move.col] == None;
}
bool Field::IsFull() const {
return left_ == 0;
}
void Field::MakeMove( const Move& move, Token token ) {
if ( !InRange( move ) || !IsEmpty( move ) || token == None || !left_ ) {
return;
}
grid_[move.row][move.col] = token;
left_--;
}
void Field::ClearMove( const Move& move ) {
if ( !InRange( move ) || !IsEmpty( move ) || left_ == 9 ) {
return;
}
grid_[move.row][move.col] = None;
left_++;
}
-41
View File
@@ -1,41 +0,0 @@
#ifndef _FIELD_
#define _FIELD_
class Field {
public:
enum Token {
None = 0,
PlayerA = 1,
PlayerB = 4
};
static Token Opponent( Token token );
struct Move {
int row;
int col;
};
Field();
~Field();
Field Clone() const;
void Clear();
void Show() const;
int SameInRow( Token token, int amount ) const;
bool InRange( const Move& move ) const;
bool IsEmpty( const Move& move ) const;
bool IsFull() const;
void MakeMove( const Move& move, Token token );
void ClearMove( const Move& move );
private:
Token** grid_;
int left_;
};
#endif // _FIELD_
@@ -1,49 +0,0 @@
#include "human_player.h"
#include "io.h"
HumanPlayer::HumanPlayer( Field::Token token, const char* name )
: Player( token, name ) {
}
HumanPlayer::~HumanPlayer() {
}
Field::Move HumanPlayer::Turn( const Field& field ) const {
Field::Move move;
io::stringOut(name_);
io::stringOut("\n");
do {
move = Input();
move.row -= 1;
move.col -= 1;
} while ( !Check( field, move ) );
return move;
}
Field::Move HumanPlayer::Input() const {
Field::Move move;
move.row = -1;
move.col = -1;
io::stringOut("Insert row: ");
move.row = io::numberIn();
io::stringOut("Insert column: ");
move.col = io::numberIn();
io::stringOut("\n");
return move;
}
bool HumanPlayer::Check( const Field& field, const Field::Move& move ) const {
if ( !field.InRange( move ) ) {
io::stringOut("Wrong input!\n");
return false;
} else if ( !field.IsEmpty( move ) ) {
io::stringOut("Is occupied!\n");
return false;
}
return true;
}
-19
View File
@@ -1,19 +0,0 @@
#ifndef _HUMAN_PLAYER_
#define _HUMAN_PLAYER_
#include "player.h"
class HumanPlayer : public Player {
public:
HumanPlayer( Field::Token token, const char* name );
virtual ~HumanPlayer();
virtual Field::Move Turn( const Field& field ) const;
private:
Field::Move Input() const;
bool Check( const Field& field, const Field::Move& move ) const;
};
#endif // _HUMAN_PLAYER_
+9 -9
View File
@@ -1,23 +1,23 @@
#include "io.h"
// #include <iostream>
// #include <sstream>
// #include <string>
#include <iostream>
#include <sstream>
#include <string>
int io::numberIn() {
// std::string input;
// getline( std::cin, input );
// std::stringstream stream( input );
std::string input;
getline( std::cin, input );
std::stringstream stream( input );
int number;
// stream >> number;
stream >> number;
return number;
}
void io::numberOut(int num) {
// std::cout << num;
std::cout << num;
}
void io::stringOut(const char* str) {
// std::cout << str;
std::cout << str;
}
-13
View File
@@ -1,13 +0,0 @@
#ifndef _IO_
#define _IO_
namespace io {
int numberIn();
void numberOut(int num);
void stringOut(const char* str);
}
#endif // _IO_
-11
View File
@@ -1,11 +0,0 @@
#include "tictactoe.h"
int main() {
TicTacToe tictactoe;
while ( tictactoe.Start() ) {
tictactoe.Run();
}
return 0;
}
-19
View File
@@ -1,19 +0,0 @@
#include "player.h"
Player::Player( Field::Token token, const char* name )
: token_( token )
, name_( name ) {
}
Player::~Player() {
}
const Field::Token& Player::getToken() const
{
return token_;
}
const char* Player::getName() const
{
return name_;
}
-21
View File
@@ -1,21 +0,0 @@
#ifndef _PLAYER_
#define _PLAYER_
#include "field.h"
class Player {
public:
Player( Field::Token token, const char* name );
virtual ~Player();
virtual Field::Move Turn( const Field& field ) const = 0;
const Field::Token& getToken() const;
const char* getName() const;
protected:
const Field::Token token_;
const char* name_;
};
#endif // _PLAYER_
-85
View File
@@ -1,85 +0,0 @@
#include "tictactoe.h"
#include "artificial_player.h"
#include "human_player.h"
#include "io.h"
TicTacToe::TicTacToe() {
players_[0] = 0;
players_[1] = 0;
}
TicTacToe::~TicTacToe() {
Reset();
}
bool TicTacToe::Start() {
Reset();
io::stringOut("Tic Tac Toe\n\n[1] Human\n[2] Computer\n[3] Quit\n\n");
players_[0] = SelectPlayer( Field::PlayerA, "Player A" );
if ( !players_[0] ) {
return false;
}
players_[1] = SelectPlayer( Field::PlayerB, "Player B" );
if ( !players_[1] ) {
return false;
}
io::stringOut("\n");
return true;
}
void TicTacToe::Run() {
field_.Show();
int playerIndex = 0;
for ( int i = 0; i < 9; i++ ) {
Player& player = *players_[playerIndex];
field_.MakeMove( player.Turn( field_ ), player.getToken() );
field_.Show();
if ( field_.SameInRow( player.getToken(), 3 ) ) {
io::stringOut(player.getName());
io::stringOut(" won!\n\n");
return;
}
playerIndex = ( playerIndex + 1 ) % 2;
}
io::stringOut("Game ends in draw!\n\n");
}
void TicTacToe::Reset() {
field_.Clear();
for ( int i = 0; i < 2; i++ ) {
if ( players_[i] ) {
delete players_[i];
players_[i] = 0;
}
}
}
Player* TicTacToe::SelectPlayer( Field::Token token, const char* name ) const {
int selection = 0;
while ( true ) {
io::stringOut("Choose ");
io::stringOut(name);
io::stringOut(": ");
selection = io::numberIn();
switch ( selection ) {
case 1 : return new HumanPlayer( token, name );
case 2 : return new ArtificialPlayer( token, name );
case 3 : return 0;
default : io::stringOut("Wrong input!\n");
}
}
}
-23
View File
@@ -1,23 +0,0 @@
#ifndef _TIC_TAC_TOE_
#define _TIC_TAC_TOE_
#include "field.h"
#include "player.h"
class TicTacToe {
public:
TicTacToe();
~TicTacToe();
bool Start();
void Run();
private:
void Reset();
Player* SelectPlayer( Field::Token token, const char* name ) const;
Player* players_[2];
Field field_;
};
#endif // _TIC_TAC_TOE_
-82
View File
@@ -1,82 +0,0 @@
#ifndef _ARTIFICIAL_
#define _ARTIFICIAL_
#include <stdlib.h>
#include <time.h>
#include "player.h"
class ArtificialPlayer : public Player {
public:
ArtificialPlayer( Field::Token token, const std::string& name )
: Player( token, name ) {
}
virtual ~ArtificialPlayer() {}
virtual Field::Move Turn( const Field& field ) const {
// srand( static_cast<unsigned int>( time( NULL ) ) );
Field fakeField = field.Clone();
Node node = MinMax( fakeField, token_ );
return node.move;
}
private:
struct Node {
Field::Move move;
int value;
};
Node MinMax( Field& field, Field::Token token ) const {
Node node;
node.value = -10000;
Field::Move move;
int sameMove;
for ( int i = 0; i < 3; i++ ) {
move.row = i;
for ( int j = 0; j < 3; j++ ) {
move.col = j;
if ( !field.IsEmpty( move ) ) {
continue;
}
field.MakeMove( move, token );
int turnValue = Evaluate( field, token );
if ( !turnValue && !field.IsFull() ) {
turnValue = -MinMax( field, Field::Opponent( token ) ).value;
}
field.ClearMove( move );
if ( turnValue > node.value ) {
node.move = move;
node.value = turnValue;
sameMove = 1;
} else if ( turnValue == node.value ) {
sameMove++;
if ( 1 % sameMove == 0 ) {
node.move = move;
}
}
}
}
return node;
}
int Evaluate( const Field& field, Field::Token token ) const {
if ( field.SameInRow( token, 3 ) ) {
return 2;
} else if ( field.SameInRow( Field::Opponent( token ), 2 ) ) {
return -1;
} else if ( field.SameInRow( token, 2 ) > 1 ) {
return 1;
}
return 0;
}
};
#endif // _ARTIFICIAL_
-147
View File
@@ -1,147 +0,0 @@
#ifndef _FIELD_
#define _FIELD_
#include <cassert>
#include <iostream>
class Field {
public:
enum Token {
None = 0,
PlayerA = 1,
PlayerB = 4
};
static Token Opponent( Token token ) {
assert( token != None );
if ( token == PlayerA ) {
return PlayerB;
} else {
return PlayerA;
}
}
struct Move {
int row;
int col;
};
Field()
: left_( 9 ) {
grid_ = new Token* [3];
for ( int i = 0; i < 3 ; i++ ) {
grid_[i] = new Token[3];
}
}
~Field() {
for ( int i = 0; i < 3; i++ ) {
delete grid_[i];
}
delete [] grid_;
}
Field Clone() const {
Field field;
for ( int i = 0; i < 3; i++ ) {
for ( int j = 0; j < 3; j++ ) {
field.grid_[i][j] = grid_[i][j];
}
}
field.left_ = left_;
return field;
}
void Clear() {
for ( int i = 0; i < 3; i++ ) {
for ( int j = 0; j < 3; j++ ) {
grid_[i][j] = None;
}
}
left_ = 9;
}
void Show() const {
std::cout << " 1 2 3\n";
for ( int row = 0; row < 3; row++ ) {
std::cout << row + 1 << " ";
for ( int col = 0; col < 3; col++ ) {
if ( grid_[row][col] == PlayerA ) {
std::cout << " X ";
} else if ( grid_[row][col] == PlayerB ) {
std::cout << " O ";
} else {
std::cout << " ";
}
if ( col < 2 ) {
std::cout << "|";
}
}
if ( row < 2 ) {
std::cout << "\n -----------\n";
}
}
std::cout << "\n\n";
}
int SameInRow( Token token, int amount ) const {
int sum = amount * token;
int count = 0;
for ( int i = 0; i < 3; i++ ) {
if ( grid_[i][0] + grid_[i][1] + grid_[i][2] == sum ) {
count++;
} else if ( grid_[0][i] + grid_[1][i] + grid_[2][i] == sum ) {
count++;
}
}
if ( grid_[0][0] + grid_[1][1] + grid_[2][2] == sum ) {
count++;
} else if ( grid_[2][0] + grid_[1][1] + grid_[0][2] == sum ) {
count++;
}
return count;
}
bool InRange( const Move& move ) const {
return move.row >= 0 && move.row < 3 && move.col >= 0 && move.col < 3;
}
bool IsEmpty( const Move& move ) const {
return grid_[move.row][move.col] == None;
}
bool IsFull() const {
return left_ == 0;
}
void MakeMove( const Move& move, Token token ) {
assert( InRange( move ) );
assert( IsEmpty( move ) );
assert( token != None );
assert( left_ );
grid_[move.row][move.col] = token;
left_--;
}
void ClearMove( const Move& move ) {
assert( InRange(move) );
assert( !IsEmpty(move) );
assert( left_ < 9 );
grid_[move.row][move.col] = None;
left_++;
}
private:
Token** grid_;
int left_;
};
#endif // _FIELD_
-51
View File
@@ -1,51 +0,0 @@
#ifndef _HUMAN_
#define _HUMAN_
#include "input.h"
#include "player.h"
class HumanPlayer : public Player {
public:
HumanPlayer( Field::Token token, const std::string& name )
: Player( token, name ) {
}
virtual ~HumanPlayer() {}
virtual Field::Move Turn( const Field& field ) const {
Field::Move move;
std::cout << name_ << '\n';
do {
move = Input();
move.row -= 1;
move.col -= 1;
} while ( !Check( field, move ) );
return move;
}
private:
Field::Move Input() const {
Field::Move move;
std::cout << "Insert row: ";
input::number( &move.row );
std::cout << "Insert column: ";
input::number( &move.col );
std::cout << '\n';
return move;
}
bool Check( const Field& field, const Field::Move& move ) const {
if ( !field.InRange( move ) ) {
std::cout << "Wrong input!\n";
return false;
} else if ( !field.IsEmpty( move ) ) {
std::cout << "Is occupied!\n";
return false;
}
return true;
}
};
#endif // _HUMAN_
-20
View File
@@ -1,20 +0,0 @@
#ifndef _INPUT_
#define _INPUT_
#include <string>
#include <iostream>
#include <sstream>
namespace input {
template<typename T>
void number( T* number ) {
std::string input;
getline( std::cin, input );
std::stringstream stream( input );
stream >> *number;
}
}
#endif // _INPUT_
-11
View File
@@ -1,11 +0,0 @@
#include "tictactoe.h"
int main() {
TicTacToe tictactoe;
while ( tictactoe.Start() ) {
tictactoe.Run();
}
return 0;
}
-33
View File
@@ -1,33 +0,0 @@
#ifndef _PLAYER_
#define _PLAYER_
#include <string>
#include "field.h"
class Player {
public:
Player( Field::Token token, const std::string& name )
: token_( token )
, name_( name ) {
}
virtual ~Player() {}
virtual Field::Move Turn( const Field& field ) const = 0;
const Field::Token& getToken() const
{
return token_;
}
const std::string getName() const
{
return name_;
}
protected:
const Field::Token token_;
const std::string name_;
};
#endif // _PLAYER_
@@ -1,93 +0,0 @@
#ifndef _TIC_TAC_TOE_
#define _TIC_TAC_TOE_
#include "computer.h"
#include "field.h"
#include "human.h"
#include "input.h"
#include "player.h"
class TicTacToe {
public:
TicTacToe() {
players_[0] = NULL;
players_[1] = NULL;
}
~TicTacToe() {
Reset();
}
bool Start() {
Reset();
std::cout << "Tic Tac Toe\n\n[1] Human\n[2] Computer\n[3] Quit\n\n";
players_[0] = SelectPlayer( Field::PlayerA, "PlayerA" );
if ( !players_[0] ) {
return false;
}
players_[1] = SelectPlayer( Field::PlayerB, "PlayerB" );
if ( !players_[1] ) {
return false;
}
std::cout << '\n';
return true;
}
void Run() {
field_.Show();
int playerIndex = 0;
for ( int i = 0; i < 9; i++ ) {
Player& player = *players_[playerIndex];
field_.MakeMove( player.Turn( field_ ), player.getToken() );
field_.Show();
if ( field_.SameInRow( player.getToken(), 3 ) ) {
std::cout << player.getName() << " won!\n\n";
return;
}
playerIndex = ( playerIndex + 1 ) % 2;
}
std::cout << "Game ends in draw!\n\n";
}
private:
void Reset() {
field_.Clear();
for ( int i = 0; i < 2; i++ ) {
if ( players_[i] ) {
delete players_[i];
players_[i] = NULL;
}
}
}
Player* SelectPlayer( Field::Token token, const std::string& name ) const {
int selection;
while ( true ) {
std::cout << "Choose " << name << ": ";
input::number( &selection );
switch ( selection ) {
case 1 : return new HumanPlayer( token, name );
case 2 : return new ArtificialPlayer( token, name );
case 3 : return NULL;
default : std::cout << "Wrong input!\n";
}
}
}
Player* players_[2];
Field field_;
};
#endif // _TIC_TAC_TOE_

Some files were not shown because too many files have changed in this diff Show More