diff options
Diffstat (limited to 'GudhUI/gui/MainWindow.cpp')
-rw-r--r-- | GudhUI/gui/MainWindow.cpp | 299 |
1 files changed, 0 insertions, 299 deletions
diff --git a/GudhUI/gui/MainWindow.cpp b/GudhUI/gui/MainWindow.cpp deleted file mode 100644 index b11b80e9..00000000 --- a/GudhUI/gui/MainWindow.cpp +++ /dev/null @@ -1,299 +0,0 @@ -/* This file is part of the Gudhi Library. The Gudhi library - * (Geometric Understanding in Higher Dimensions) is a generic C++ - * library for computational topology. - * - * Author(s): David Salinas - * - * Copyright (C) 2014 Inria - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "MainWindow.h" - -#include <QWidget> -#include <QInputDialog> -#include <QFileDialog> - -#include <fenv.h> - -#include "gui/Menu_k_nearest_neighbors.h" -#include "gui/Menu_uniform_neighbors.h" -#include "gui/Menu_edge_contraction.h" -#include "gui/Menu_persistence.h" - -MainWindow::MainWindow(QWidget* parent) : - menu_k_nearest_neighbors_(new Menu_k_nearest_neighbors(this)), - menu_uniform_neighbors_(new Menu_uniform_neighbors(this)), - menu_edge_contraction_(new Menu_edge_contraction(this, model_)), - menu_persistence_(new Menu_persistence(this)) { - // #ifndef NDEBUG // catch nan - // feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW); - // #endif - - setupUi(this); - - viewer_instructor_ = new Viewer_instructor( - this, - this->viewer, - model_.complex_); - - connectActions(); - - update_view(); -} - -void -MainWindow::closeEvent(QCloseEvent *event) { - exit(0); -} - -void -MainWindow::connectActions() { - QObject::connect(this->actionLoad_complex, SIGNAL(triggered()), this, - SLOT(off_file_open())); - QObject::connect(this->actionLoad_points, SIGNAL(triggered()), this, - SLOT(off_points_open())); - QObject::connect(this->actionSave_complex, SIGNAL(triggered()), this, - SLOT(off_file_save())); - QObject::connect(this->actionSave_points, SIGNAL(triggered()), this, - SLOT(off_points_save())); - - QObject::connect(this->actionShow_graph_stats, SIGNAL(triggered()), this, - SLOT(show_graph_stats())); - QObject::connect(this->actionShow_complex_stats, SIGNAL(triggered()), this, - SLOT(show_complex_stats())); - QObject::connect(this->actionShow_complex_dimension, SIGNAL(triggered()), this, - SLOT(show_complex_dimension())); - - QObject::connect(this->actionUniform_proximity_graph, SIGNAL(triggered()), this, - SLOT(build_rips_menu())); - QObject::connect(this->actionK_nearest_neighbors_graph, SIGNAL(triggered()), this, - SLOT(build_k_nearest_neighbors_menu())); - - - QObject::connect(this->actionContract_edges, SIGNAL(triggered()), this, - SLOT(contract_edge_menu())); - - QObject::connect(this->actionCollapse_vertices, SIGNAL(triggered()), this, - SLOT(collapse_vertices())); - - QObject::connect(this->actionCollapse_edges, SIGNAL(triggered()), this, - SLOT(collapse_edges())); - - QObject::connect(this->actionNoise, SIGNAL(triggered()), this, - SLOT(uniform_noise())); - QObject::connect(this->actionLloyd, SIGNAL(triggered()), this, - SLOT(lloyd())); - - - // view - QObject::connect(this->actionPoints, SIGNAL(triggered()), this->viewer_instructor_, - SLOT(change_draw_vertices())); - QObject::connect(this->actionEdges, SIGNAL(triggered()), this->viewer_instructor_, - SLOT(change_draw_edges())); - QObject::connect(this->actionTriangles, SIGNAL(triggered()), this->viewer_instructor_, - SLOT(change_draw_triangles())); - - // topology - QObject::connect(this->actionShow_homology_group, SIGNAL(triggered()), this, - SLOT(show_homology_group())); - QObject::connect(this->actionEuler_characteristic, SIGNAL(triggered()), this, - SLOT(show_euler_characteristic())); - QObject::connect(this->actionPersistence, SIGNAL(triggered()), this, - SLOT(persistence_menu())); - QObject::connect(this->actionEstimate_topological_changes, SIGNAL(triggered()), this, - SLOT(critical_points_menu())); - QObject::connect(this->actionIs_manifold, SIGNAL(triggered()), this, - SLOT(is_manifold_menu())); - - - QObject::connect(this, SIGNAL(sceneChanged()), this->viewer_instructor_, - SLOT(sceneChanged())); -} - -void -MainWindow::init_view() const { - viewer_instructor_->initialize_bounding_box(); - viewer_instructor_->show_entire_scene(); - update_view(); -} - -void -MainWindow::update_view() const { - emit(sceneChanged()); -} - -/** - * open a file chooser to choose an off to load - */ -void -MainWindow::off_file_open() { - QString fileName = QFileDialog::getOpenFileName(this, tr("Open off File"), - "~/", tr("off files (*.off)")); - if (!fileName.isEmpty()) { - model_.off_file_open(fileName.toStdString()); - init_view(); - } -} - -void -MainWindow::off_points_open() { - QString fileName = QFileDialog::getOpenFileName(this, tr("Open points in a off file"), - "~/", tr("off files (*.off)")); - if (!fileName.isEmpty()) { - model_.off_points_open(fileName.toStdString()); - init_view(); - } -} - -/** - * open a file chooser to choose an off to save - */ -void -MainWindow::off_file_save() { - QString fileName = QFileDialog::getOpenFileName(this, tr("Save to off File"), - "~/", tr("off files (*.off)")); - if (!fileName.isEmpty()) { - model_.off_file_save(fileName.toStdString()); - } -} - -/** - * open a file chooser to choose an off to save - */ -void -MainWindow::off_points_save() { - QString fileName = QFileDialog::getOpenFileName(this, tr("Save to off File"), - "~/", tr("off files (*.off)")); - if (!fileName.isEmpty()) { - model_.off_points_save(fileName.toStdString()); - } -} - -void -MainWindow::show_graph_stats() { - model_.show_graph_stats(); -} - -void -MainWindow::show_complex_stats() { - model_.show_complex_stats(); -} - -void -MainWindow::show_complex_dimension() { - model_.show_complex_dimension(); -} - -void -MainWindow::build_rips_menu() { - menu_uniform_neighbors_->show(); -} - -void -MainWindow::build_rips(double alpha) { - model_.build_rips(alpha); - update_view(); -} - -void -MainWindow::build_k_nearest_neighbors_menu() { - menu_k_nearest_neighbors_->show(); -} - -void -MainWindow::build_k_nearest_neighbors(unsigned k) { - model_.build_k_nearest_neighbors(k); - update_view(); -} - -void -MainWindow::contract_edge_menu() { - menu_edge_contraction_->show(); -} - -void -MainWindow::contract_edges(unsigned num_collapses) { - std::cerr << "Collapse " << num_collapses << " vertices\n"; - model_.contract_edges(num_collapses); - update_view(); -} - -void -MainWindow::collapse_edges() { - model_.collapse_edges(model_.num_edges()); - update_view(); -} - -void -MainWindow::collapse_vertices() { - std::cerr << "Collapse vertices edges\n"; - model_.collapse_vertices(0); - update_view(); -} - -void -MainWindow::uniform_noise() { - bool ok; - double amplitude = QInputDialog::getDouble(this, tr("Uniform noise"), - tr("Amplitude:"), 0, 0, 10000, 3, &ok); - srand(time(NULL)); - if (ok) - model_.uniform_noise(amplitude); -} - -void -MainWindow::lloyd() { - // todo 1 ask lloyd parameters - model_.lloyd(0, 0); - update_view(); -} - -void -MainWindow::show_homology_group() { - model_.show_homology_group(); -} - -void -MainWindow::show_euler_characteristic() { - model_.show_euler_characteristic(); -} - -void -MainWindow::persistence_menu() { - menu_persistence_->show(); -} - -void -MainWindow::compute_persistence(int p, double threshold, int max_dim, double min_pers) { - model_.show_persistence(p, threshold, max_dim, min_pers); -} - -void -MainWindow::critical_points_menu() { - bool ok; - double max_length = QInputDialog::getDouble(this, tr("Maximal edge length for the Rips"), - tr("Maximal edge length:"), 0, 0, 10000, 3, &ok); - if (ok) - model_.show_critical_points(max_length); -} - -void -MainWindow::is_manifold_menu() { - model_.show_is_manifold(); -} - - -#include "MainWindow.moc" |