Compare commits

...
135 Commits
Author SHA1 Message Date
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
malte_langkabel 899138a6bd data: performance optimization NameHierarchy
* For performance reasons nodes now store a serialized version of their name hierarchy directly. Removed NameHierarchy table from database.
2016-01-05 16:42:29 +01:00
Eberhard Graether 6f083a10ac src: improvements to logging
* log messages as they are sent and received
* log information about messages by overriding method print()
* reduced logging of autocompletion list
* removed log location from message and parsing logs, as they are known and make up 90% of logs
2016-01-04 16:06:32 +01:00
malte_langkabel f44b76936d build: cmake fix
* removed parser files from the app target since they are already compiled into the parser_lib which is linked to the app target.
2016-01-04 15:22:15 +01:00
Eberhard Graether 94e3058e38 ui: Added shortcut to font size resetting 2016-01-04 11:34:20 +01:00
Manuel Dobusch 958dad1d59 logic: vs plugin solution utility
Utility class to get list of files in a vs solution in the plugin.
2015-12-30 01:06:15 +01:00
Manuel Dobusch 5af8d0f03f ui: graph toggle button number position
Improved the position of the small number in the graph node toggle button for windows.
2015-12-30 00:21:38 +01:00
Manuel Dobusch afc2d1e6b5 ui: windows start menu shortcut
Fixed an issue with the start menu shortcut generated when installing on windows.
2015-12-27 18:45:05 +01:00
malte_langkabel bed0f8f157 logic: c language support
* re-added gui for c project setup
* ASTVisitor now visits RecordDecls instead of CXXRecordDecls
* prevented endless recursion when parsing struct that is defined in functions signature.
2015-12-18 16:27:49 +01:00
Eberhard Graether 5c0493267c ui: Added option for hiding dock widge title bars to view menu 2015-12-17 14:28:47 +01:00
malte_langkabel b6beab8283 logic: fixed locations in macro
* fixed a bug where the end of source locations contained in a macro was not calculated correctly.
2015-12-17 14:14:03 +01:00
Eberhard Graether 32cc49b0fd refactor: Define tooltip style in single css file and pass it to QApplication 2015-12-17 13:45:02 +01:00
Eberhard Graether b107fd2655 ui: Fixed activation of unparsed file with errors not showing anything 2015-12-17 13:23:45 +01:00
Eberhard Graether dd119fe12c script: fixed Mac OS bundle script 2015-12-17 12:00:51 +01:00
Eberhard Graether b58778da0c resources: Added new changelog 2015-12-17 11:41:43 +01:00
538 changed files with 36396 additions and 10351 deletions
+37 -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,40 @@
.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
/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/
+167 -26
View File
@@ -11,15 +11,21 @@ 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")
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# 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 +34,7 @@ if (WIN32)
elseif (APPLE)
set(PLATFORM_INCLUDE "includesMac.h")
else ()
set(PLATFORM_INCLUDE "includesDefault.h")
set(PLATFORM_INCLUDE "includesLinux.h")
endif ()
# Settings ---------------------------------------------------------------------
@@ -40,37 +46,77 @@ 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 "$ORIGIN/lib/:$$ORIGIN/lib/")
include(cmake/external.cmake)
endif()
# 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 -------------------------------------------------------------------------
if(UNIX AND APPLE)
find_library(BOTAN botan-1.11 $ENV{BOTAN_DIR}/release NO_DEFAULT_PATH)
find_library(BOTAN_D botan-1.11 $ENV{BOTAN_DIR}/debug NO_DEFAULT_PATH)
elseif(UNIX)
find_library(BOTAN botan-1.11 "${EXTERNAL_BUILD}/botan/lib" 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_SRC}/botan")
else()
set(BOTAN_INCLUDE_DIR "$ENV{BOTAN_DIR}")
endif()
# Lib --------------------------------------------------------------------------
@@ -139,8 +185,47 @@ 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"
)
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 ----------------------------------------------------------------------
@@ -155,10 +240,16 @@ 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)
@@ -197,14 +288,16 @@ 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"
)
# 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}
)
@@ -224,6 +317,9 @@ configure_file(
${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 +332,6 @@ endif ()
add_subdirectory(src/app)
# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
@@ -246,7 +341,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} ${CLANG_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 +351,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 +365,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 +416,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 +493,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 +541,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 +602,6 @@ elseif (UNIX)
endif ()
# Visual Leak Detector ---------------------------------------------------------
if (WIN32)
+53 -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
@@ -94,3 +115,34 @@ $ ninja -j4 check-all
* Focus all overlapping source locations in the code view
* Added recent projects menu option
* Saving all template arguments type uses
##### 0.4.0
* Network ports for IDE communication can be defined in the ApplicationSettings.xml
* Coati can now handle inclass initialization of members
* Improved handling of template arguments in analysis
* Coati now handles anonymous symbols when parsing files
* Extended color schemes to allow more extensive use in the graph
* Added new color scheme called "bad_rainbow"
* Coati shows a template's general definition when an implicit specialization is activated
* Fixed source locations of many declarations
* Fixed syntax highlighting to correctly identify strings, comments and block comments
* Added analysis for template parameter packs
* Show function and method signature in tooltip when hovering the graph node
* Fixed graph font size was too small for Windows and Linux
* Removed Coati directory from Linux package
* Introduced file endings .coatiproject and .coatidb for Coati's project files
* Added installer for Windows
* Installing prerequisits in Windows Installer
* Redesigned the about window
* Parse errors will be displayed as they appear during analysis
* Fixed constructors and destructors using return type 'void' withou source location
* Removed 'close window' action from menu
* Added help texts to project setup and preferences window
* Improved lambda handling in analysis
* Fixed style of function or method nodes with children
* Fixed tooltip colors in dark color scheme
* renamed undo&redo to back&forward
* navigate back&forward via mouse buttons
* navigate back via backspace key
+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>
+12 -4
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>
@@ -192,6 +192,9 @@
<normal>transparent</normal>
<focus>#FFFFFF</focus>
</border>
<hatching>
<normal>#FFFFFF</normal>
</hatching>
</function>
<method>
<like>function</like>
@@ -206,6 +209,9 @@
<normal>transparent</normal>
<focus>#FFFFFF</focus>
</border>
<hatching>
<normal>#FFFFFF</normal>
</hatching>
</global_variable>
<field>
<like>global_variable</like>
@@ -216,10 +222,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>
+3 -2
View File
@@ -210,10 +210,11 @@
<undefined>
<fill>
<normal>#00000000</normal>
<normal>#CC8D91</normal>
</fill>
<border>
<normal>#CC8D91</normal>
<normal>#803C3C3C</normal>
<focus>#3C3C3C</focus>
</border>
</undefined>
<namespace>
+3 -2
View File
@@ -225,10 +225,11 @@
<undefined>
<fill>
<normal>#00000000</normal>
<normal>#78282D</normal>
</fill>
<border>
<normal>#78282D</normal>
<normal>#80C3C3C3</normal>
<focus>#C3C3C3</focus>
</border>
</undefined>
<namespace>
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 -4
View File
@@ -1,6 +1,6 @@
* {
color: white;
font-size: 12px;
font-size: 14px;
font-weight: 100;
}
@@ -13,11 +13,11 @@
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 -24
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,31 +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);
}
QToolTip {
background-color: #E0E0E0;
color: black;
font-size: <setting:font_size>pt;
border-image: url(<setting:gui_path>code_view/images/minimize_active.png);
}
@@ -1,9 +1,3 @@
QGraphicsView, QGraphicsScene {
background-color: <color:graph/background>;
}
QToolTip {
background-color: #E0E0E0;
color: black;
font-size: <setting:font_size>pt;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 852 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

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;
}
+9
View File
@@ -0,0 +1,9 @@
QToolTip {
background-color: #E0E0E0;
color: black;
font-size: <setting:font_size>pt;
}
* {
font-family: "Roboto";
}
+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>setting_window/help.png);
}
#helpButton:hover {
border-image: url(<setting:gui_path>setting_window/help_hover.png);
}
#dotsButton {
border-image: url(<setting:gui_path>setting_window/dots.png);
}
#dotsButton:hover {
border-image: url(<setting:gui_path>setting_window/dots_hover.png);
}
#refreshButton {
border-image: url(<setting:gui_path>setting_window/refresh.png);
}
#refreshButton:hover {
border-image: url(<setting:gui_path>setting_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;
}
@@ -27,9 +27,3 @@ QPushButton:pressed {
border-bottom-right-radius: 12px;
border-top-right-radius: 12px;
}
QToolTip {
background-color: #E0E0E0;
color: black;
font-size: <setting:font_size>pt;
}
@@ -57,9 +57,3 @@ QPushButton#search_button {
#search_button:pressed {
background: <color:search/button/press>;
}
QToolTip {
background-color: #E0E0E0;
color: black;
font-size: <setting:font_size>pt;
}
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

+39 -22
View File
@@ -1,5 +1,9 @@
* {
font-size: 12pt;
}
QtDirectoryListBox {
background-color: rgba(255, 255, 255, 200);
background-color: white;
border: 1px solid lightgray;
border-radius: 12px;
}
@@ -11,48 +15,61 @@ QListWidget {
}
QListWidget::item {
border-bottom: 1px solid lightgray;
height: 20px;
border-bottom: 1px solid lightgray;
}
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;
margin-left: 5px;
}
#bar {
border-top: 1px solid lightgray;
}
#roundedButton {
#plusButton, #minusButton, #dotsButton {
color: white;
height: 16px;
height: 1em;
margin-right: 3px;
width: 16px;
width: 1em;
border: none;
}
#dotsButton {
margin-top: 2px;
}
#plusButton {
border-image: url(<setting:gui_path>setting_window/plus.png);
}
#plusButton:hover {
border-image: url(<setting:gui_path>setting_window/plus_hover.png);
}
#minusButton {
border-image: url(<setting:gui_path>setting_window/minus.png);
}
#minusButton:hover {
border-image: url(<setting:gui_path>setting_window/minus_hover.png);
}
#dotsButton {
border-image: url(<setting:gui_path>setting_window/dots.png);
}
#dotsButton:hover {
border-image: url(<setting:gui_path>setting_window/dots_hover.png);
}
#dropInfo {
color: lightgray;
color: #999;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

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

+9 -10
View File
@@ -8,6 +8,7 @@ QLineEdit {
background-color: rgba(255, 255, 255, 200);
border-radius: 10px;
border: 1px solid lightgrey;
height: 20px;
padding-left: 5px;
padding-right: 5px;
}
@@ -27,7 +28,7 @@ QLineEdit:disabled {
background-color: rgba(255, 255, 255, 150);
}
#form QLabel {
#form #label {
font-weight: bold;
}
@@ -52,7 +53,7 @@ QLineEdit:disabled {
color: gray;
font-size: 15px;
height: 20px;
margin-left: 10px;
margin-left: 5px;
width: 28px;
}
@@ -64,11 +65,11 @@ QLineEdit:disabled {
#windowButton {
background: white;
border: 1px solid lightgray;
border-radius: 10px;
border-radius: 8px;
color: black;
font-size: 17pt;
height: 30px;
width: 140px;
padding: 3px 5px 2px;
font-size: 14pt;
min-width: 5em;
}
#windowButton:hover {
@@ -76,8 +77,6 @@ QLineEdit:disabled {
background: #2D3F85;
}
QToolTip {
background-color: #E0E0E0;
color: black;
font-size: <setting:font_size>pt;
#windowButton:disabled {
color: lightgray;
}
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

@@ -32,9 +32,3 @@ QPushButton:hover {
QPushButton:pressed {
background: <color:search/button/press>;
}
QToolTip {
background-color: #E0E0E0;
color: black;
font-size: <setting:font_size>pt;
}
+1
View File
@@ -0,0 +1 @@
%windir%\system32\msiexec.exe /I{5DF07CC0-F774-4C4F-9397-0A749A22AB03}
@@ -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](); // &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_
@@ -43,6 +43,10 @@
<recent_projects>
<recent_project><!-- STRING: recent project path --></recent_project>
</recent_projects>
<license>
<check><!-- STRING: hashed path of the working directory used when entering the license key --></check>
<license><!-- STRING: the license key --></license>
</license>
</user>
<network>

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