/OOInteraction/src/commands/CDoxygen.cpp
https://github.com/dimitar-asenov/Envision · C++ · 63 lines · 27 code · 11 blank · 25 comment · 0 complexity · 6024ac5975f0d30b11996bce1ec997e3 MD5 · raw file
- /***********************************************************************************************************************
- **
- ** Copyright (c) 2011, 2014 ETH Zurich
- ** All rights reserved.
- **
- ** Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
- ** following conditions are met:
- **
- ** * Redistributions of source code must retain the above copyright notice, this list of conditions and the
- ** following disclaimer.
- ** * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
- ** following disclaimer in the documentation and/or other materials provided with the distribution.
- ** * Neither the name of the ETH Zurich nor the names of its contributors may be used to endorse or promote products
- ** derived from this software without specific prior written permission.
- **
- **
- ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- ** INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- ** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- ** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- ** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- **
- **********************************************************************************************************************/
- #include "CDoxygen.h"
- #include "OOInteraction/src/DoxygenWholeTreeVisitor.h"
- namespace OOInteraction {
- CDoxygen::CDoxygen() : CreateNamedObjectWithAttributes{"doxygen", {{}}}
- {
- }
- Interaction::CommandResult* CDoxygen::executeNamed(Visualization::Item* source, Visualization::Item* /*target*/,
- const std::unique_ptr<Visualization::Cursor>&, const QString& /*name*/, const QStringList& /*attributes*/)
- {
- QDir dir{QDir::currentPath()};
- dir.mkpath("doxygen/html/images");
- auto aDoxyVisitor = new OOInteraction::DoxygenWholeTreeVisitor{};
- QString valDoxy = aDoxyVisitor->visit(source->node()->root());
- delete aDoxyVisitor;
- QFile file{QDir::currentPath() + "/doxygen/doxy.cpp"};
- file.open(QIODevice::WriteOnly | QIODevice::Text);
- QTextStream out{&file};
- out << valDoxy;
- file.close();
- QProcess aProcess;
- aProcess.setWorkingDirectory(QDir::currentPath() + "/doxygen");
- aProcess.start("doxygen", QStringList{});
- aProcess.waitForFinished();
- QDesktopServices::openUrl(QUrl{QDir::currentPath() + "/doxygen/html/index.html"});
- return new Interaction::CommandResult{};
- }
- }