summaryrefslogtreecommitdiff
path: root/src/GudhUI/gui/Menu_edge_contraction.cpp
diff options
context:
space:
mode:
authorsalinasd <salinasd@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2015-01-27 10:20:13 +0000
committersalinasd <salinasd@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2015-01-27 10:20:13 +0000
commitf527cde6342c5b8109a20f0a6b483327c6569844 (patch)
tree1c0464b56b21ef7767f814b9a35a6e5c68aa7613 /src/GudhUI/gui/Menu_edge_contraction.cpp
parentdf6c26bdcb28805e8949d08dad5acd012e91ecb8 (diff)
Merge GudhUI, a UI for gudhi based on Qt
git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/trunk@427 636b058d-ea47-450e-bf9e-a15bfbe3eedb Former-commit-id: 17fedd974f14a8225b27d94361e835964eeb5cba
Diffstat (limited to 'src/GudhUI/gui/Menu_edge_contraction.cpp')
-rw-r--r--src/GudhUI/gui/Menu_edge_contraction.cpp91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/GudhUI/gui/Menu_edge_contraction.cpp b/src/GudhUI/gui/Menu_edge_contraction.cpp
new file mode 100644
index 00000000..dd2621be
--- /dev/null
+++ b/src/GudhUI/gui/Menu_edge_contraction.cpp
@@ -0,0 +1,91 @@
+/*
+ * Menu_edge_contraction.cpp
+ *
+ * Created on: Sep 11, 2014
+ * Author: dsalinas
+ */
+
+#ifndef MENU_EDGE_CONTRACTION_CPP_
+#define MENU_EDGE_CONTRACTION_CPP_
+
+
+#include "Menu_edge_contraction.h"
+
+Menu_edge_contraction::Menu_edge_contraction(MainWindow* parent,const Model& model):
+parent_(parent),model_(model)
+{
+ setupUi(this);
+ connectActions(parent_);
+}
+
+void Menu_edge_contraction::connectActions(MainWindow* parent)
+{
+ QObject::connect(
+ this->horizontalSlider,
+ SIGNAL(valueChanged(int)),
+ this,
+ SLOT(slider_value_changed(int))
+ );
+
+
+ QObject::connect(this, SIGNAL(contract_edges(unsigned)), parent, SLOT(contract_edges(unsigned)));
+
+ QObject::connect(this->pushButton_collapse, SIGNAL(clicked()), this, SLOT(send_contract_edges()));
+
+}
+
+void Menu_edge_contraction::slider_value_changed(int new_slider_value){
+ int num_collapses =
+ (horizontalSlider->value()==1)? 1 : horizontalSlider->value() * model_.num_vertices() / 100 ;
+ this->txt_nb_vertices->setNum((int)model_.num_vertices());
+ this->txt_nb_collapses->setNum(num_collapses);
+ this->spinBox_nb_remaining_vertices->setValue(model_.num_vertices()-num_collapses);
+}
+
+
+void
+Menu_edge_contraction::update_slider_value(){
+ int num_vertices = model_.num_vertices();
+ int num_collapses = (horizontalSlider->value()==1)? 1 : horizontalSlider->value() * num_vertices / 100 ;
+ int horizontal_slider_position = num_vertices>0? num_collapses/(double)num_vertices * 100 : 1 ;
+ horizontalSlider->setValue(horizontal_slider_position);
+}
+
+
+void
+Menu_edge_contraction::update_gui_numbers(){
+ update_slider_value();
+ bool ok;
+ int num_collapses = this->txt_nb_collapses->text().toInt(&ok,10);
+ if(!ok) return;
+ this->txt_nb_vertices->setNum((int)model_.num_vertices());
+ this->txt_nb_collapses->setNum(num_collapses);
+ this->spinBox_nb_remaining_vertices->setValue(model_.num_vertices()-num_collapses);
+}
+
+void
+Menu_edge_contraction::update_gui_numbers(int new_value){
+ update_gui_numbers();
+}
+
+
+void
+Menu_edge_contraction::send_contract_edges(){
+ emit(contract_edges(num_collapses()));
+ update_gui_numbers();
+}
+
+unsigned
+Menu_edge_contraction::num_vertices(){
+ return model_.num_vertices();
+}
+
+unsigned
+Menu_edge_contraction::num_collapses(){
+ return (horizontalSlider->value()==1)? 1 : horizontalSlider->value() * num_vertices() / 100 ;
+}
+
+
+#include "Menu_edge_contraction.moc"
+
+#endif /* MENU_EDGE_CONTRACTION_CPP_ */