From ad73f44a896e63115167373405741adde6e20dd7 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Thu, 18 Feb 2021 12:41:52 +0100 Subject: [PATCH 1/5] add bbox axis lengths to the tooltip of an item --- Polyhedron/demo/Polyhedron/MainWindow.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Polyhedron/demo/Polyhedron/MainWindow.cpp b/Polyhedron/demo/Polyhedron/MainWindow.cpp index 490ad9e0094..0fc2dac5fea 100644 --- a/Polyhedron/demo/Polyhedron/MainWindow.cpp +++ b/Polyhedron/demo/Polyhedron/MainWindow.cpp @@ -1794,13 +1794,16 @@ void MainWindow::updateInfo() { QString item_filename = item->property("source filename").toString(); CGAL::Bbox_3 bbox = item->bbox(); if(bbox !=CGAL::Bbox_3()) - item_text += QString("
Bounding box: min (%1,%2,%3), max (%4,%5,%6)
") + item_text += QString("
Bounding box: min (%1,%2,%3), max (%4,%5,%6), axis lengths (%7, %8, %9)
") .arg(bbox.xmin(),0, 'g', 17) .arg(bbox.ymin(),0, 'g', 17) .arg(bbox.zmin(),0, 'g', 17) .arg(bbox.xmax(),0, 'g', 17) .arg(bbox.ymax(),0, 'g', 17) - .arg(bbox.zmax(),0, 'g', 17); + .arg(bbox.zmax(),0, 'g', 17) + .arg(bbox.xmax() - bbox.xmin(), 0, 'g', 17) + .arg(bbox.ymax() - bbox.ymin(), 0, 'g', 17) + .arg(bbox.zmax() - bbox.zmin(), 0, 'g', 17); if(!item_filename.isEmpty()) { item_text += QString("
File: %1
").arg(item_filename); } From bcb9940eb768d150182e6afc0a269609ca99d912 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Fri, 26 Feb 2021 13:05:48 +0100 Subject: [PATCH 2/5] WIP for groups in save_scene --- Polyhedron/demo/Polyhedron/MainWindow.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Polyhedron/demo/Polyhedron/MainWindow.cpp b/Polyhedron/demo/Polyhedron/MainWindow.cpp index 0fc2dac5fea..ae89cf30dfa 100644 --- a/Polyhedron/demo/Polyhedron/MainWindow.cpp +++ b/Polyhedron/demo/Polyhedron/MainWindow.cpp @@ -2988,6 +2988,11 @@ void MainWindow::on_actionSa_ve_Scene_as_Script_triggered() if(!rem.hasMatch()) continue; ext = rem.captured(1); + //check if it is in a group + if(item->parentGroup()) + { + + } QListto_save; to_save.append(item); QString savename(tr("%1.%2").arg(item->name()).arg(ext)); From 714d7091ce6e3df4bdaf4de961e993cfd094648b Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 2 Mar 2021 15:44:00 +0100 Subject: [PATCH 3/5] WIP save items. Need tests. --- Polyhedron/demo/Polyhedron/MainWindow.cpp | 48 ++++++++++++++++++++++- Polyhedron/demo/Polyhedron/Scene.h | 2 +- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/Polyhedron/demo/Polyhedron/MainWindow.cpp b/Polyhedron/demo/Polyhedron/MainWindow.cpp index ae89cf30dfa..6308d80dd88 100644 --- a/Polyhedron/demo/Polyhedron/MainWindow.cpp +++ b/Polyhedron/demo/Polyhedron/MainWindow.cpp @@ -1,3 +1,4 @@ + #ifdef CGAL_USE_SSH # include "CGAL/Use_ssh.h" #endif @@ -2970,6 +2971,7 @@ void MainWindow::on_actionSa_ve_Scene_as_Script_triggered() std::vector rendering_modes; QStringList not_saved; Polyhedron_demo_io_plugin_interface* camera_plugin = nullptr; + QMap > group_children_map; for(int i = 0; i < scene->numberOfEntries(); ++i) { Scene_item* item = scene->item(i); @@ -2991,7 +2993,8 @@ void MainWindow::on_actionSa_ve_Scene_as_Script_triggered() //check if it is in a group if(item->parentGroup()) { - + group_children_map[item->parentGroup()->name()].append(item->name()); + ; } QListto_save; to_save.append(item); @@ -3055,6 +3058,28 @@ void MainWindow::on_actionSa_ve_Scene_as_Script_triggered() //delete temp file QFile tmp_file(fullpath); tmp_file.remove(); + //group relations + if(!group_children_map.empty()) + { + os << "var groups = ["; + for(int i = 0; i< group_children_map.size() -1; ++i) + { + QString group_name = group_children_map.keys()[i]; + os << "[\'" << group_name.toStdString().c_str()<<"\', ["; + for(int j = 0; j Date: Wed, 3 Mar 2021 11:02:39 +0100 Subject: [PATCH 4/5] Fixes --- Polyhedron/demo/Polyhedron/MainWindow.cpp | 39 +++++++++++++++-------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/Polyhedron/demo/Polyhedron/MainWindow.cpp b/Polyhedron/demo/Polyhedron/MainWindow.cpp index 6308d80dd88..03afabc58d9 100644 --- a/Polyhedron/demo/Polyhedron/MainWindow.cpp +++ b/Polyhedron/demo/Polyhedron/MainWindow.cpp @@ -2964,7 +2964,7 @@ void MainWindow::on_actionSa_ve_Scene_as_Script_triggered() std::ofstream os(filename.toUtf8(), std::ofstream::binary); if(!os) return; - CGAL::Three::Three::CursorScopeGuard cs(Qt::WaitCursor); + QApplication::setOverrideCursor(Qt::WaitCursor); std::vector > names; std::vector > loaders; std::vector colors; @@ -3009,9 +3009,12 @@ void MainWindow::on_actionSa_ve_Scene_as_Script_triggered() } if(loader.isEmpty()) { + QApplication::restoreOverrideCursor(); QMessageBox::warning(this, "", tr("No plugin found for %1. Not saved.").arg(item->name())); + QApplication::setOverrideCursor(Qt::WaitCursor); continue; } + loaders.push_back(std::make_pair(loader, ext)); colors.push_back(item->color()); rendering_modes.push_back(item->renderingMode()); @@ -3125,17 +3128,20 @@ void MainWindow::on_actionSa_ve_Scene_as_Script_triggered() os << " it.setRgbColor(r,g,b);\n"; os << " it.setRenderingMode(rendering_modes[index]);\n"; os << "});\n"; - os << "groups.forEach(function(group, index, array){\n"; - os << " main_window.selectSceneItem(-1);\n"; - os << " var group_name = group[0];\n"; - os << " var item_list = group[1];\n"; - os << " main_window.makeNewGroup();\n"; - os << " var it = scene.item(scene.numberOfEntries-1);\n"; - os << " it.setName(group_name);\n"; - os << " item_list.forEach(function(child, index, array){\n"; - os << " scene.changeGroup(scene.item(indexFromName(child)), it);\n"; - os << " });\n"; - os << "});\n"; + if(!group_children_map.empty()) + { + os << "groups.forEach(function(group, index, array){\n"; + os << " main_window.selectSceneItem(-1);\n"; + os << " var group_name = group[0];\n"; + os << " var item_list = group[1];\n"; + os << " main_window.makeNewGroup();\n"; + os << " var it = scene.item(scene.numberOfEntries-1);\n"; + os << " it.setName(group_name);\n"; + os << " item_list.forEach(function(child, index, array){\n"; + os << " scene.changeGroup(scene.item(indexFromName(child)), it);\n"; + os << " });\n"; + os << "});\n"; + } os << "viewer.moveCameraToCoordinates(camera, 0.05);\n"; if(has_camera_positions) { @@ -3144,11 +3150,14 @@ void MainWindow::on_actionSa_ve_Scene_as_Script_triggered() os<<" main_window.open(fullpath,\'camera_positions_plugin\');\n"; } os.close(); - if(!not_saved.empty()) + if(!not_saved.empty()){ + QApplication::restoreOverrideCursor(); QMessageBox::warning(this, "Items Not Saved", QString("The following items could not be saved: %1").arg( not_saved.join(", "))); + QApplication::setOverrideCursor(Qt::WaitCursor); + } #ifdef CGAL_USE_SSH using namespace CGAL::ssh_internal; if(do_upload) @@ -3190,6 +3199,7 @@ void MainWindow::on_actionSa_ve_Scene_as_Script_triggered() if(!ok) { ssh_free(session); + QApplication::restoreOverrideCursor(); return; } pass = pass.trimmed(); @@ -3207,11 +3217,13 @@ void MainWindow::on_actionSa_ve_Scene_as_Script_triggered() "Error", "The SSH session could not be started."); ssh_free(session); + QApplication::restoreOverrideCursor(); return; } res = push_file(session,path.toStdString().c_str(), filename.toStdString().c_str()); if(!res) { + QApplication::restoreOverrideCursor(); QMessageBox::warning(this, "Error", "The file could not be uploaded. Check your console for more information."); @@ -3230,6 +3242,7 @@ void MainWindow::on_actionSa_ve_Scene_as_Script_triggered() } } #endif + QApplication::restoreOverrideCursor(); } void MainWindow::setTransparencyPasses(int val) { From 2349ba6d39e3f85660381741d5c42412e1d57682 Mon Sep 17 00:00:00 2001 From: Maxime GIMENO Date: Wed, 3 Mar 2021 11:51:14 +0100 Subject: [PATCH 5/5] Update Polyhedron/demo/Polyhedron/MainWindow.cpp Co-authored-by: Laurent Rineau --- Polyhedron/demo/Polyhedron/MainWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Polyhedron/demo/Polyhedron/MainWindow.cpp b/Polyhedron/demo/Polyhedron/MainWindow.cpp index 03afabc58d9..cbbcb0daeed 100644 --- a/Polyhedron/demo/Polyhedron/MainWindow.cpp +++ b/Polyhedron/demo/Polyhedron/MainWindow.cpp @@ -1795,7 +1795,7 @@ void MainWindow::updateInfo() { QString item_filename = item->property("source filename").toString(); CGAL::Bbox_3 bbox = item->bbox(); if(bbox !=CGAL::Bbox_3()) - item_text += QString("
Bounding box: min (%1,%2,%3), max (%4,%5,%6), axis lengths (%7, %8, %9)
") + item_text += QString("
Bounding box: min (%1,%2,%3), max (%4,%5,%6), dimensions (%7, %8, %9)
") .arg(bbox.xmin(),0, 'g', 17) .arg(bbox.ymin(),0, 'g', 17) .arg(bbox.zmin(),0, 'g', 17)