From c5f1fe381522e661da9527b937910e2e9428dff5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Bol=C3=ADvar?= Date: Sun, 13 May 2018 12:40:59 +0200 Subject: [PATCH 01/15] Refactor filenames closes #73 --- src/Chart/{chartXY.cpp => ChartXY.cpp} | 0 src/Chart/{chartXY.h => ChartXY.h} | 0 src/Chart/{colorTFChart.cpp => ColorTFChart.cpp} | 0 src/Chart/{colorTFChart.h => ColorTFChart.h} | 0 ...erControlPointsItem.cpp => ColorTransferControlPointsItem.cpp} | 0 ...ansferControlPointsItem.h => ColorTransferControlPointsItem.h} | 0 src/Chart/{opacityTFChart.cpp => OpacityTFChart.cpp} | 0 src/Chart/{opacityTFChart.h => OpacityTFChart.h} | 0 ...cewiseControlPointsItem.cpp => PiecewiseControlPointsItem.cpp} | 0 ...{piecewiseControlPointsItem.h => PiecewiseControlPointsItem.h} | 0 src/Core/{sculpture.cpp => Sculpture.cpp} | 0 src/Core/{sculpture.h => Sculpture.h} | 0 src/Core/{slicePlane.cpp => SlicePlane.cpp} | 0 src/Core/{slicePlane.h => SlicePlane.h} | 0 src/Core/{transferFunction.cpp => TransferFunction.cpp} | 0 src/Core/{transferFunction.h => TransferFunction.h} | 0 src/GUI/{filterselectiondialog.ui => FilterSelectionDialog.ui} | 0 src/GUI/{lineSelectionDialog.cpp => LineSelectionDialog.cpp} | 0 src/GUI/{lineSelectionDialog.h => LineSelectionDialog.h} | 0 src/GUI/{lineselectiondialog.ui => LineSelectionDialog.ui} | 0 src/GUI/{mainwindow.cpp => MainWindow.cpp} | 0 src/GUI/{mainwindow.h => MainWindow.h} | 0 src/GUI/{mainwindow.ui => MainWindow.ui} | 0 src/GUI/{segmentedvolumedialog.ui => SegmentedVolumeDialog.ui} | 0 .../{interactorStyleDeleter.cpp => InteractorStyleDeleter.cpp} | 0 .../{interactorStyleDeleter.h => InteractorStyleDeleter.h} | 0 .../{interactorStyleImage.cpp => InteractorStyleImage.cpp} | 0 src/Interactor/{interactorStyleImage.h => InteractorStyleImage.h} | 0 ...actorStyleSegmentation.cpp => InteractorStyleSegmentation.cpp} | 0 ...nteractorStyleSegmentation.h => InteractorStyleSegmentation.h} | 0 .../{regionGrowingDeleter.cpp => RegionGrowingDeleter.cpp} | 0 .../{regionGrowingDeleter.h => RegionGrowingDeleter.h} | 0 src/Segmentation/{segmentationCommons.h => SegmentationCommons.h} | 0 src/Segmentation/{woodSegmentation.cpp => WoodSegmentation.cpp} | 0 src/Segmentation/{woodSegmentation.h => WoodSegmentation.h} | 0 src/Util/{geometry.cpp => Geometry.cpp} | 0 src/Util/{geometry.h => Geometry.h} | 0 src/Util/{measures.h => Measures.h} | 0 src/Util/{utils.cpp => Utils.cpp} | 0 src/Util/{utils.h => Utils.h} | 0 src/Widget/{imagePlaneWidget.cpp => ImagePlaneWidget.cpp} | 0 src/Widget/{imagePlaneWidget.h => ImagePlaneWidget.h} | 0 42 files changed, 0 insertions(+), 0 deletions(-) rename src/Chart/{chartXY.cpp => ChartXY.cpp} (100%) rename src/Chart/{chartXY.h => ChartXY.h} (100%) rename src/Chart/{colorTFChart.cpp => ColorTFChart.cpp} (100%) rename src/Chart/{colorTFChart.h => ColorTFChart.h} (100%) rename src/Chart/{colorTransferControlPointsItem.cpp => ColorTransferControlPointsItem.cpp} (100%) rename src/Chart/{colorTransferControlPointsItem.h => ColorTransferControlPointsItem.h} (100%) rename src/Chart/{opacityTFChart.cpp => OpacityTFChart.cpp} (100%) rename src/Chart/{opacityTFChart.h => OpacityTFChart.h} (100%) rename src/Chart/{piecewiseControlPointsItem.cpp => PiecewiseControlPointsItem.cpp} (100%) rename src/Chart/{piecewiseControlPointsItem.h => PiecewiseControlPointsItem.h} (100%) rename src/Core/{sculpture.cpp => Sculpture.cpp} (100%) rename src/Core/{sculpture.h => Sculpture.h} (100%) rename src/Core/{slicePlane.cpp => SlicePlane.cpp} (100%) rename src/Core/{slicePlane.h => SlicePlane.h} (100%) rename src/Core/{transferFunction.cpp => TransferFunction.cpp} (100%) rename src/Core/{transferFunction.h => TransferFunction.h} (100%) rename src/GUI/{filterselectiondialog.ui => FilterSelectionDialog.ui} (100%) rename src/GUI/{lineSelectionDialog.cpp => LineSelectionDialog.cpp} (100%) rename src/GUI/{lineSelectionDialog.h => LineSelectionDialog.h} (100%) rename src/GUI/{lineselectiondialog.ui => LineSelectionDialog.ui} (100%) rename src/GUI/{mainwindow.cpp => MainWindow.cpp} (100%) rename src/GUI/{mainwindow.h => MainWindow.h} (100%) rename src/GUI/{mainwindow.ui => MainWindow.ui} (100%) rename src/GUI/{segmentedvolumedialog.ui => SegmentedVolumeDialog.ui} (100%) rename src/Interactor/{interactorStyleDeleter.cpp => InteractorStyleDeleter.cpp} (100%) rename src/Interactor/{interactorStyleDeleter.h => InteractorStyleDeleter.h} (100%) rename src/Interactor/{interactorStyleImage.cpp => InteractorStyleImage.cpp} (100%) rename src/Interactor/{interactorStyleImage.h => InteractorStyleImage.h} (100%) rename src/Interactor/{interactorStyleSegmentation.cpp => InteractorStyleSegmentation.cpp} (100%) rename src/Interactor/{interactorStyleSegmentation.h => InteractorStyleSegmentation.h} (100%) rename src/Segmentation/{regionGrowingDeleter.cpp => RegionGrowingDeleter.cpp} (100%) rename src/Segmentation/{regionGrowingDeleter.h => RegionGrowingDeleter.h} (100%) rename src/Segmentation/{segmentationCommons.h => SegmentationCommons.h} (100%) rename src/Segmentation/{woodSegmentation.cpp => WoodSegmentation.cpp} (100%) rename src/Segmentation/{woodSegmentation.h => WoodSegmentation.h} (100%) rename src/Util/{geometry.cpp => Geometry.cpp} (100%) rename src/Util/{geometry.h => Geometry.h} (100%) rename src/Util/{measures.h => Measures.h} (100%) rename src/Util/{utils.cpp => Utils.cpp} (100%) rename src/Util/{utils.h => Utils.h} (100%) rename src/Widget/{imagePlaneWidget.cpp => ImagePlaneWidget.cpp} (100%) rename src/Widget/{imagePlaneWidget.h => ImagePlaneWidget.h} (100%) diff --git a/src/Chart/chartXY.cpp b/src/Chart/ChartXY.cpp similarity index 100% rename from src/Chart/chartXY.cpp rename to src/Chart/ChartXY.cpp diff --git a/src/Chart/chartXY.h b/src/Chart/ChartXY.h similarity index 100% rename from src/Chart/chartXY.h rename to src/Chart/ChartXY.h diff --git a/src/Chart/colorTFChart.cpp b/src/Chart/ColorTFChart.cpp similarity index 100% rename from src/Chart/colorTFChart.cpp rename to src/Chart/ColorTFChart.cpp diff --git a/src/Chart/colorTFChart.h b/src/Chart/ColorTFChart.h similarity index 100% rename from src/Chart/colorTFChart.h rename to src/Chart/ColorTFChart.h diff --git a/src/Chart/colorTransferControlPointsItem.cpp b/src/Chart/ColorTransferControlPointsItem.cpp similarity index 100% rename from src/Chart/colorTransferControlPointsItem.cpp rename to src/Chart/ColorTransferControlPointsItem.cpp diff --git a/src/Chart/colorTransferControlPointsItem.h b/src/Chart/ColorTransferControlPointsItem.h similarity index 100% rename from src/Chart/colorTransferControlPointsItem.h rename to src/Chart/ColorTransferControlPointsItem.h diff --git a/src/Chart/opacityTFChart.cpp b/src/Chart/OpacityTFChart.cpp similarity index 100% rename from src/Chart/opacityTFChart.cpp rename to src/Chart/OpacityTFChart.cpp diff --git a/src/Chart/opacityTFChart.h b/src/Chart/OpacityTFChart.h similarity index 100% rename from src/Chart/opacityTFChart.h rename to src/Chart/OpacityTFChart.h diff --git a/src/Chart/piecewiseControlPointsItem.cpp b/src/Chart/PiecewiseControlPointsItem.cpp similarity index 100% rename from src/Chart/piecewiseControlPointsItem.cpp rename to src/Chart/PiecewiseControlPointsItem.cpp diff --git a/src/Chart/piecewiseControlPointsItem.h b/src/Chart/PiecewiseControlPointsItem.h similarity index 100% rename from src/Chart/piecewiseControlPointsItem.h rename to src/Chart/PiecewiseControlPointsItem.h diff --git a/src/Core/sculpture.cpp b/src/Core/Sculpture.cpp similarity index 100% rename from src/Core/sculpture.cpp rename to src/Core/Sculpture.cpp diff --git a/src/Core/sculpture.h b/src/Core/Sculpture.h similarity index 100% rename from src/Core/sculpture.h rename to src/Core/Sculpture.h diff --git a/src/Core/slicePlane.cpp b/src/Core/SlicePlane.cpp similarity index 100% rename from src/Core/slicePlane.cpp rename to src/Core/SlicePlane.cpp diff --git a/src/Core/slicePlane.h b/src/Core/SlicePlane.h similarity index 100% rename from src/Core/slicePlane.h rename to src/Core/SlicePlane.h diff --git a/src/Core/transferFunction.cpp b/src/Core/TransferFunction.cpp similarity index 100% rename from src/Core/transferFunction.cpp rename to src/Core/TransferFunction.cpp diff --git a/src/Core/transferFunction.h b/src/Core/TransferFunction.h similarity index 100% rename from src/Core/transferFunction.h rename to src/Core/TransferFunction.h diff --git a/src/GUI/filterselectiondialog.ui b/src/GUI/FilterSelectionDialog.ui similarity index 100% rename from src/GUI/filterselectiondialog.ui rename to src/GUI/FilterSelectionDialog.ui diff --git a/src/GUI/lineSelectionDialog.cpp b/src/GUI/LineSelectionDialog.cpp similarity index 100% rename from src/GUI/lineSelectionDialog.cpp rename to src/GUI/LineSelectionDialog.cpp diff --git a/src/GUI/lineSelectionDialog.h b/src/GUI/LineSelectionDialog.h similarity index 100% rename from src/GUI/lineSelectionDialog.h rename to src/GUI/LineSelectionDialog.h diff --git a/src/GUI/lineselectiondialog.ui b/src/GUI/LineSelectionDialog.ui similarity index 100% rename from src/GUI/lineselectiondialog.ui rename to src/GUI/LineSelectionDialog.ui diff --git a/src/GUI/mainwindow.cpp b/src/GUI/MainWindow.cpp similarity index 100% rename from src/GUI/mainwindow.cpp rename to src/GUI/MainWindow.cpp diff --git a/src/GUI/mainwindow.h b/src/GUI/MainWindow.h similarity index 100% rename from src/GUI/mainwindow.h rename to src/GUI/MainWindow.h diff --git a/src/GUI/mainwindow.ui b/src/GUI/MainWindow.ui similarity index 100% rename from src/GUI/mainwindow.ui rename to src/GUI/MainWindow.ui diff --git a/src/GUI/segmentedvolumedialog.ui b/src/GUI/SegmentedVolumeDialog.ui similarity index 100% rename from src/GUI/segmentedvolumedialog.ui rename to src/GUI/SegmentedVolumeDialog.ui diff --git a/src/Interactor/interactorStyleDeleter.cpp b/src/Interactor/InteractorStyleDeleter.cpp similarity index 100% rename from src/Interactor/interactorStyleDeleter.cpp rename to src/Interactor/InteractorStyleDeleter.cpp diff --git a/src/Interactor/interactorStyleDeleter.h b/src/Interactor/InteractorStyleDeleter.h similarity index 100% rename from src/Interactor/interactorStyleDeleter.h rename to src/Interactor/InteractorStyleDeleter.h diff --git a/src/Interactor/interactorStyleImage.cpp b/src/Interactor/InteractorStyleImage.cpp similarity index 100% rename from src/Interactor/interactorStyleImage.cpp rename to src/Interactor/InteractorStyleImage.cpp diff --git a/src/Interactor/interactorStyleImage.h b/src/Interactor/InteractorStyleImage.h similarity index 100% rename from src/Interactor/interactorStyleImage.h rename to src/Interactor/InteractorStyleImage.h diff --git a/src/Interactor/interactorStyleSegmentation.cpp b/src/Interactor/InteractorStyleSegmentation.cpp similarity index 100% rename from src/Interactor/interactorStyleSegmentation.cpp rename to src/Interactor/InteractorStyleSegmentation.cpp diff --git a/src/Interactor/interactorStyleSegmentation.h b/src/Interactor/InteractorStyleSegmentation.h similarity index 100% rename from src/Interactor/interactorStyleSegmentation.h rename to src/Interactor/InteractorStyleSegmentation.h diff --git a/src/Segmentation/regionGrowingDeleter.cpp b/src/Segmentation/RegionGrowingDeleter.cpp similarity index 100% rename from src/Segmentation/regionGrowingDeleter.cpp rename to src/Segmentation/RegionGrowingDeleter.cpp diff --git a/src/Segmentation/regionGrowingDeleter.h b/src/Segmentation/RegionGrowingDeleter.h similarity index 100% rename from src/Segmentation/regionGrowingDeleter.h rename to src/Segmentation/RegionGrowingDeleter.h diff --git a/src/Segmentation/segmentationCommons.h b/src/Segmentation/SegmentationCommons.h similarity index 100% rename from src/Segmentation/segmentationCommons.h rename to src/Segmentation/SegmentationCommons.h diff --git a/src/Segmentation/woodSegmentation.cpp b/src/Segmentation/WoodSegmentation.cpp similarity index 100% rename from src/Segmentation/woodSegmentation.cpp rename to src/Segmentation/WoodSegmentation.cpp diff --git a/src/Segmentation/woodSegmentation.h b/src/Segmentation/WoodSegmentation.h similarity index 100% rename from src/Segmentation/woodSegmentation.h rename to src/Segmentation/WoodSegmentation.h diff --git a/src/Util/geometry.cpp b/src/Util/Geometry.cpp similarity index 100% rename from src/Util/geometry.cpp rename to src/Util/Geometry.cpp diff --git a/src/Util/geometry.h b/src/Util/Geometry.h similarity index 100% rename from src/Util/geometry.h rename to src/Util/Geometry.h diff --git a/src/Util/measures.h b/src/Util/Measures.h similarity index 100% rename from src/Util/measures.h rename to src/Util/Measures.h diff --git a/src/Util/utils.cpp b/src/Util/Utils.cpp similarity index 100% rename from src/Util/utils.cpp rename to src/Util/Utils.cpp diff --git a/src/Util/utils.h b/src/Util/Utils.h similarity index 100% rename from src/Util/utils.h rename to src/Util/Utils.h diff --git a/src/Widget/imagePlaneWidget.cpp b/src/Widget/ImagePlaneWidget.cpp similarity index 100% rename from src/Widget/imagePlaneWidget.cpp rename to src/Widget/ImagePlaneWidget.cpp diff --git a/src/Widget/imagePlaneWidget.h b/src/Widget/ImagePlaneWidget.h similarity index 100% rename from src/Widget/imagePlaneWidget.h rename to src/Widget/ImagePlaneWidget.h From 83fef1e0864d27627f9f8c6690a54a42726f3a93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Bol=C3=ADvar?= Date: Sun, 13 May 2018 13:10:10 +0200 Subject: [PATCH 02/15] Solve CMake warnings closes #75 --- src/CMakeLists.txt | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4d266ff..17eafe7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,9 +1,21 @@ cmake_minimum_required(VERSION 2.8) + +if(POLICY CMP0020) + cmake_policy(SET CMP0020 NEW) +endif() + +if(POLICY CMP0043) + cmake_policy(SET CMP0043 NEW) +endif() + +set(CMAKE_CONFIGURATION_TYPES Release) +set(CMAKE_AUTOMOC ON) + PROJECT(3DCurator) find_package(ITK REQUIRED) include(${ITK_USE_FILE}) -if (ITKVtkGlue_LOADED) +if(ITKVtkGlue_LOADED) find_package(VTK REQUIRED) include(${VTK_USE_FILE}) else() @@ -14,10 +26,6 @@ endif() find_package(OpenCV REQUIRED) find_package(Boost REQUIRED) - -# Instruct CMake to run moc automatically when needed. -set(CMAKE_AUTOMOC ON) - find_package(Qt5Widgets REQUIRED QUIET) include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${Boost_INCLUDE_DIRS}) From 533538d5521480d1dc0a5df4c1c95169112c0509 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Bol=C3=ADvar?= Date: Mon, 14 May 2018 22:50:08 +0200 Subject: [PATCH 03/15] Update libs closes #66 closes #67 closes #68 closes #69 closes #70 closes #74 --- README.md | 95 ++++++++++++++++++++++++------------------------------- 1 file changed, 42 insertions(+), 53 deletions(-) diff --git a/README.md b/README.md index 03f2bc3..ec2a4f7 100644 --- a/README.md +++ b/README.md @@ -6,23 +6,23 @@ ## Description -A 3D Viewer for CTs of Polychromed Wood Sculptures. Further info in [https://fblupi.github.io/3DCurator/](https://fblupi.github.io/3DCurator/). +A 3D Viewer for CTs of Polychromed Wood Sculptures. Further info in [https://fblupi.github.io/3DCurator/](https://fblupi.github.io/3DCurator/) ## License -[GNU General Public License Version 3](LICENSE). +[GNU General Public License Version 3](LICENSE) ![GNU GPL v3](https://camo.githubusercontent.com/cffb10a3e84f202bdac9c38fe1f9c212a7a8b59a/68747470733a2f2f646c2e64726f70626f7875736572636f6e74656e742e636f6d2f732f7430796c76697337663173746375372f47504c2d332e302e706e67) ## Software -* CMake 3.7.2 -* Visual Studio Community 2017 -* Qt5.9.1 -* VTK 8.0.0 -* ITK 4.12.0 -* Boost 1.64.0 -* OpenCV 3.2.0 +* CMake 3.11.1 (2018, April) +* Visual Studio Community 2017 15.7.1 (2018, May) +* Qt5.10.1 (2018, Feb) +* VTK 8.1.1 (2018, May) +* ITK 4.13.0 (2017, Dec) +* Boost 1.67.0 (2018, Apr) +* OpenCV 3.4.1 (2018, Feb) ## Installation and configuration for developers @@ -34,15 +34,15 @@ A 3D Viewer for CTs of Polychromed Wood Sculptures. Further info in [https://fbl * Download [Visual Studio Community 2017](https://www.visualstudio.com/es-es/downloads/download-visual-studio-vs.aspx) and install -##### Qt5.9.1 +##### Qt5.10.1 -* Download [Qt5.9.1](http://download.qt.io/official_releases/qt/5.9/5.9.1/qt-opensource-windows-x86-5.9.1.exe) and install for `msvc2017 64-bit` -* Create a new environment variable `QTDIR` with the value `C:\Qt\Qt5.9.1` -* Add to the path: `C:\Qt\Qt5.9.1\5.9.1\msvc2017_64\bin` +* Download [Qt5.10.1](http://download.qt.io/official_releases/qt/5.10/5.10.1/qt-opensource-windows-x86-5.10.1.exe) and install for `msvc2017 64-bit` +* Create a new environment variable `QTDIR` with the value `C:\Qt\Qt5.10.1` +* Add to the path: `C:\Qt\Qt5.10.1\5.10.1\msvc2017_64\bin` -##### CMake 3.8.2 +##### CMake 3.11.1 -* Download [CMake 3.8.2](https://cmake.org/files/v3.8/cmake-3.8.2-win64-x64.msi) and install +* Download [CMake 3.11.1](https://cmake.org/files/v3.11/cmake-3.11.1-win64-x64.msi) and install #### Build libraries @@ -74,79 +74,72 @@ C:\ Thus it will be easier to migrate from one version to another -##### VTK 8.0.0 +##### VTK 8.1.1 -* Download [VTK 8.0.0](http://www.vtk.org/files/release/8.0/VTK-8.0.0.zip) and extract files +* Download [VTK 8.1.1](http://www.vtk.org/files/release/8.1/VTK-8.1.1.zip) and extract files * Open CMake and complete the fields: - + src: `C:\VTK\8.0.0\src` - + build: `C:\VTK\8.0.0\build\msvc2017_64` + + src: `C:\VTK\8.1.1\src` + + build: `C:\VTK\8.1.1\build\msvc2017_64` * Use `Visual Studio 15 2017 Win64` as generator * Press configure * Check advanced options -* Once generated choose these options: - + `BUILD_SHARED_LIBS` +* Once generated check these options: + `Module_vtkDICOM` + `Module_vtkGUISupportQt` + `Module_vtkGUISupportQtOpenGL` - + `Module_vtkGUISupportQtSQL` - + `Module_vtkGUISupportQtWebkit` + `Module_vtkRenderingQt` + `Module_vtkViewsQt` + `VTK_Group_Imaging` + `VTK_Group_Qt` -* Add two new entries: - + `QT_QMAKE_EXECUTABLE:PATHFILE=C:/Qt/Qt5.9.1/5.9.1/msvc2017_64/bin/qmake.exe` - + `CMAKE_PREFIX_PATH:PATH=C:/Qt/Qt5.9.1/5.9.1/msvc2017_64/` * Press configure and an error will appear, you have to change the Qt version to the 5 and configure again * Configure until there is no red option -* Then press generate. It will create some files and folders in `C:\VTK\8.0.0\build\msvc2017_64` +* Then press generate. It will create some files and folders in `C:\VTK\8.1.1\build\msvc2017_64` -##### ITK 4.12.0 +##### ITK 4.13.0 -* Download [ITK 4.12.0](https://sourceforge.net/projects/itk/files/itk/4.11/InsightToolkit-4.12.0.zip/download) and extract files +* Download [ITK 4.13.0](https://sourceforge.net/projects/itk/files/itk/4.13/InsightToolkit-4.13.0.zip/download) and extract files * Open CMake and complete the fields: - + src: `C:\ITK\4.12.0\src` - + build: `C:\ITK\4.12.0\build\msvc2017_64` + + src: `C:\ITK\4.13.0\src` + + build: `C:\ITK\4.13.0\build\msvc2017_64` * Use `Visual Studio 15 2017 Win64` as generator * Press configure * Check advanced options * Once configured check this option: + `Module_ITKVtkGlue` -* Press configure and an error will appear. Give `VTK_DIR` this path `C:\VTK\8.0.0\build\msvc2017_64` +* Press configure and an error will appear. Give `VTK_DIR` this path `C:\VTK\8.1.1\build\msvc2017_64` * Configure until there is no red option -* Then press generate. It will create some files and folders in `C:\ITK\4.12.0\build\msvc2017_64` +* Then press generate. It will create some files and folders in `C:\ITK\4.13.0\build\msvc2017_64` #### Compile libraries -##### VTK 8.0.0 +##### VTK 8.1.1 -* Open `VTK.sln`. +* Open `VTK.sln` * Build `ALL_BUILD` in *Release* mode and wait for a long time until it finish -* Copy the files `QVTKWidgetPlugin.lib` and `QVTKWidgetPlugin.dll` stored in `C:\VTK\8.0.0\build\msvc2017_64\lib\Release` and `C:\VTK\8.0.0\build\msvc2017_64\bin\Release` respectively and paste in `C:\Qt\Qt5.9.1\5.9.1\msvc2017_64\plugins\designer`. We will be able to use `QVTKWidget` in QtDesigner doing this -* Create a new environment variable `VTK_DIR` with the value `C:\VTK\8.0.0\build\msvc2017_64` +* Create a new environment variable `VTK_DIR` with the value `C:\VTK\8.1.1\build\msvc2017_64` * Add to the path: `%VTK_DIR%\bin\Release` -##### ITK 4.12.0 +##### ITK 4.13.0 * Open `ITK.sln` * Build `ALL_BUILD` in *Release* mode and wait for a long time until it finish -* Create a new environment variable `ITK_DIR` with the value `C:\ITK\4.12.0\build\msvc2017_64` +* Create a new environment variable `ITK_DIR` with the value `C:\ITK\4.13.0\build\msvc2017_64` * Add to the path: `%ITK_DIR%\bin\Release` -##### Boost 1.64.0 +##### Boost 1.67.0 -* Download [Boost 1.64.0](http://sourceforge.net/projects/boost/files/boost/1.64.0/) de su web oficial +* Download [Boost 1.67.0](http://sourceforge.net/projects/boost/files/boost/1.67.0/) de su web oficial * Extract and open Development Command Prompt for VS2017 in the folder where we have extracted the files * Type `bootstrap.bat` to generate *Boost.Build* * Compile with: `b2 toolset=msvc --build-type=complete --abbreviate-paths address-model=64 install -j4` * Create a new environment variable `BOOST_ROOT` with the value `C:\Boost` -##### OpenCV 3.2.0 +##### OpenCV 3.4.1 -* Download [OpenCV 3.2.0](https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.2.0/opencv-3.2.0-vc14.exe/download) +* Download [OpenCV 3.4.1](https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.4.1/opencv-3.4.1-vc14_vc15.exe/download) * Execute and extract -* Move the extracted directory to `C:\OpenCV\3.2.0\` -* Create a new environment variable `OPENCV_ROOT` with the value `C:\OpenCV\3.2.0\opencv\build\x64\vc14\` +* Move the extracted directory to `C:\OpenCV\3.4.1\` +* Create a new environment variable `OPENCV_ROOT` with the value `C:\OpenCV\3.4.1\opencv\build\x64\vc15\` * Create a new environment variable `OPENCV_DIR` with the value `%OPENCV_ROOT%\lib` * Add to the path: `%OPENCV_ROOT%\bin` @@ -156,7 +149,6 @@ Thus it will be easier to migrate from one version to another + src: `%PROJECT_PATH%\src` + build: `%PROJECT_PATH%\build` * Use `Visual Studio 15 2017 Win64` as generator -* In `CMAKE_CONFIGURATION_TYPES` type only `Release` * Configure until there is no red option * Then press generate. It will create some files and folders in `%PROJECT_PATH%\build` * Open `3DCurator.sln` @@ -164,15 +156,12 @@ Thus it will be easier to migrate from one version to another * In *SubSystem* select the option *Windows (/SUBSYSTEM:WINDOWS)* * In *Enable Large Adresses* select the option *Yes (/LARGEADRESSAWARE)* * Set `3DCurator` solution as default project +* Once compiled, copy to the `build\Release` folder the DLL files `libEGL.dll`, `libGLESv2.dll`, `Qt5Core.dll`, `Qt5Gui.dll` and `Qt5Widgets.dll` from `C:\Qt\Qt5.10.1\5.10.1\msvc2017_64\bin` and `qwindows.dll` from `C:\Qt\Qt5.10.1\5.10.1\msvc2017_64\plugins\platforms` -##### F.A.Q. +### Linux -* If you get the error below when you execute the program Copy to the `Release` folder the DLL files `libEGL.dll`, `libGLESv2.dll`, `Qt5Core.dll`, `Qt5Gui.dll` and `Qt5Widgets.dll` (you can find them in `C:\Qt\Qt5.9.1\5.9.1\msvc2017_64\bin`) +Building... -``` -The procedure entry point ?rgbSwapped@QImage@@QEHAA$$QEAV1@Z could not be located in the dynamic link library C:\VTK\8.0.0\build\bin\Release\vtkGUISupportQt-8.0.dll -``` - -### Linux +### Mac OS X Building... \ No newline at end of file From 203250e98534de554b93ae5a6b3c4b82e50c58df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Bol=C3=ADvar?= Date: Thu, 17 May 2018 20:28:24 +0200 Subject: [PATCH 04/15] Naming convention and documentation in contributing file --- CONTRIBUTING.md | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2d6c855..aae4805 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,13 +4,35 @@ First of all, I am grateful that you are interested in contributing. The first i We have got a [code of conduct](https://github.com/fblupi/3DCurator/blob/master/CODE_OF_CONDUCT.md) you should read before start contributing too. -### Issue process +## Naming convention + +Although it is pure logic, the code has to be written in English. + +### Files + +Write the name of the files in Camel Case. + +#### Extensions + +* Headers: `*.h` +* C++ source: `*.cpp` +* Qt UI: `*.ui` + +### Code + +Write the name of the classes in Camel Case and the functions in Lower Case Camel Case. + +## Documentation + +The code has to be properly documented following the [Doxygen guidelines](https://www.stack.nl/~dimitri/doxygen/manual/docblocks.html) with JavaDoc style. It is a mandatory requirement if you want your pull request to be accepted. + +## Issue process 1. Check the issue is not already in the list of [opened issues](https://github.com/fblupi/3DCurator/issues). 2. If not, open a new one following the template provided. Do your best to write a good description. -### Pull request process +## Pull request process 1. Pull request must solve some issue. 2. Check the software is running ok and test it as good as you can. -3. Open a new pull request following the template provided. +3. Open a new pull request to develop branch following the template provided. From 3e14f538acb025c1c3d8da3a3ed8d8131c3eff18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Bol=C3=ADvar?= Date: Thu, 17 May 2018 22:22:33 +0200 Subject: [PATCH 05/15] Software logos --- README.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ec2a4f7..777c6c3 100644 --- a/README.md +++ b/README.md @@ -12,18 +12,27 @@ A 3D Viewer for CTs of Polychromed Wood Sculptures. Further info in [https://fbl [GNU General Public License Version 3](LICENSE) -![GNU GPL v3](https://camo.githubusercontent.com/cffb10a3e84f202bdac9c38fe1f9c212a7a8b59a/68747470733a2f2f646c2e64726f70626f7875736572636f6e74656e742e636f6d2f732f7430796c76697337663173746375372f47504c2d332e302e706e67) +![GNU GPL v3](https://raw.githubusercontent.com/fblupi/3DCurator/assets/libs/64/gplv3.png) ## Software -* CMake 3.11.1 (2018, April) * Visual Studio Community 2017 15.7.1 (2018, May) +* CMake 3.11.1 (2018, April) * Qt5.10.1 (2018, Feb) * VTK 8.1.1 (2018, May) * ITK 4.13.0 (2017, Dec) * Boost 1.67.0 (2018, Apr) * OpenCV 3.4.1 (2018, Feb) +![C++](https://raw.githubusercontent.com/fblupi/3DCurator/assets/libs/64/c++.png) +![Visual Studio](https://raw.githubusercontent.com/fblupi/3DCurator/assets/libs/64/visual-studio.png) +![CMake](https://raw.githubusercontent.com/fblupi/3DCurator/assets/libs/64/cmake.png) +![Qt](https://raw.githubusercontent.com/fblupi/3DCurator/assets/libs/64/qt.png) +![VTK](https://raw.githubusercontent.com/fblupi/3DCurator/assets/libs/64/vtk.png) +![ITK](https://raw.githubusercontent.com/fblupi/3DCurator/assets/libs/64/itk.png) +![Boost](https://raw.githubusercontent.com/fblupi/3DCurator/assets/libs/64/boost.png) +![OpenCV](https://raw.githubusercontent.com/fblupi/3DCurator/assets/libs/64/opencv.png) + ## Installation and configuration for developers ### Windows From 0f05cc7b7a3c0ec8b438a8458532ca540782f65a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Bol=C3=ADvar=20Lupi=C3=A1=C3=B1ez?= Date: Thu, 17 May 2018 22:28:29 +0200 Subject: [PATCH 06/15] Update LICENSE --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 9cecc1d..b4f00be 100644 --- a/LICENSE +++ b/LICENSE @@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: - {project} Copyright (C) {year} {fullname} + 3DCurator Copyright (C) 2018 Francisco Javier Bolívar Lupiáñez This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. From 72180a0c4d40c86fa4a05be69b34518d89a950d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Bol=C3=ADvar=20Lupi=C3=A1=C3=B1ez?= Date: Thu, 17 May 2018 22:30:10 +0200 Subject: [PATCH 07/15] Update LICENSE --- LICENSE | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LICENSE b/LICENSE index b4f00be..851c6a6 100644 --- a/LICENSE +++ b/LICENSE @@ -631,8 +631,8 @@ to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} + 3DCurator A 3D Viewer for CTs of Polychromed Wood Sculptures + Copyright (C) 2018 Francisco Javier Bolívar Lupiáñez 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 From a077193ee05e6262c8d401cccc3db6d3193ef1db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Bol=C3=ADvar?= Date: Tue, 5 Jun 2018 20:55:12 +0200 Subject: [PATCH 08/15] Updated Qt version and starting with internationalization #72 --- README.md | 22 ++++++++++------------ assets/i18n/en_US.qm | Bin 0 -> 102 bytes assets/i18n/en_US.ts | 11 +++++++++++ assets/i18n/es_ES.ts | 11 +++++++++++ assets/translations.qrc | 7 +++++++ src/3DCurator.cpp | 5 ++++- src/CMakeLists.txt | 24 +++++++++++++----------- src/GUI/MainWindow.ui | 16 ++++++++-------- 8 files changed, 64 insertions(+), 32 deletions(-) create mode 100644 assets/i18n/en_US.qm create mode 100644 assets/i18n/en_US.ts create mode 100644 assets/i18n/es_ES.ts create mode 100644 assets/translations.qrc diff --git a/README.md b/README.md index 777c6c3..920543a 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,9 @@ A 3D Viewer for CTs of Polychromed Wood Sculptures. Further info in [https://fbl ## Software -* Visual Studio Community 2017 15.7.1 (2018, May) -* CMake 3.11.1 (2018, April) -* Qt5.10.1 (2018, Feb) +* Visual Studio Community 2017 15.7.3 (2018, Jun) +* CMake 3.11.3 (2018, May) +* Qt5.11.0 (2018, May) * VTK 8.1.1 (2018, May) * ITK 4.13.0 (2017, Dec) * Boost 1.67.0 (2018, Apr) @@ -43,15 +43,15 @@ A 3D Viewer for CTs of Polychromed Wood Sculptures. Further info in [https://fbl * Download [Visual Studio Community 2017](https://www.visualstudio.com/es-es/downloads/download-visual-studio-vs.aspx) and install -##### Qt5.10.1 +##### Qt5.11.0 -* Download [Qt5.10.1](http://download.qt.io/official_releases/qt/5.10/5.10.1/qt-opensource-windows-x86-5.10.1.exe) and install for `msvc2017 64-bit` -* Create a new environment variable `QTDIR` with the value `C:\Qt\Qt5.10.1` -* Add to the path: `C:\Qt\Qt5.10.1\5.10.1\msvc2017_64\bin` +* Download [Qt5.11.0](http://download.qt.io/official_releases/qt/5.11/5.11.0/qt-opensource-windows-x86-5.11.0.exe) and install for `msvc2017 64-bit` +* Create a new environment variable `QTDIR` with the value `C:\Qt\Qt5.11.0` +* Add to the path: `C:\Qt\Qt5.11.0\5.11.0\msvc2017_64\bin` -##### CMake 3.11.1 +##### CMake 3.11.3 -* Download [CMake 3.11.1](https://cmake.org/files/v3.11/cmake-3.11.1-win64-x64.msi) and install +* Download [CMake 3.11.3](https://cmake.org/files/v3.11/cmake-3.11.3-win64-x64.msi) and install #### Build libraries @@ -100,7 +100,6 @@ Thus it will be easier to migrate from one version to another + `Module_vtkViewsQt` + `VTK_Group_Imaging` + `VTK_Group_Qt` -* Press configure and an error will appear, you have to change the Qt version to the 5 and configure again * Configure until there is no red option * Then press generate. It will create some files and folders in `C:\VTK\8.1.1\build\msvc2017_64` @@ -165,8 +164,7 @@ Thus it will be easier to migrate from one version to another * In *SubSystem* select the option *Windows (/SUBSYSTEM:WINDOWS)* * In *Enable Large Adresses* select the option *Yes (/LARGEADRESSAWARE)* * Set `3DCurator` solution as default project -* Once compiled, copy to the `build\Release` folder the DLL files `libEGL.dll`, `libGLESv2.dll`, `Qt5Core.dll`, `Qt5Gui.dll` and `Qt5Widgets.dll` from `C:\Qt\Qt5.10.1\5.10.1\msvc2017_64\bin` and `qwindows.dll` from `C:\Qt\Qt5.10.1\5.10.1\msvc2017_64\plugins\platforms` - +* Once compiled, copy to the `build\Release` folder the DLL files `libEGL.dll`, `libGLESv2.dll`, `Qt5Core.dll`, `Qt5Gui.dll` and `Qt5Widgets.dll` from `C:\Qt\Qt5.10.1\5.10.1\msvc2017_64\bin`. ### Linux Building... diff --git a/assets/i18n/en_US.qm b/assets/i18n/en_US.qm new file mode 100644 index 0000000000000000000000000000000000000000..2e2c3956d71a33596d99f42b90d2429b6809f2f5 GIT binary patch literal 102 zcmcE7ks@*G{hX<16=n7(EZlq7iGhKEgEd8|6i72<0 + + + + MainWindow + + APP_NAME + 3DCuratasor + + + diff --git a/assets/i18n/es_ES.ts b/assets/i18n/es_ES.ts new file mode 100644 index 0000000..c6be47b --- /dev/null +++ b/assets/i18n/es_ES.ts @@ -0,0 +1,11 @@ + + + + + MainWindow + + APP_NAME + 3DCuratillor + + + diff --git a/assets/translations.qrc b/assets/translations.qrc new file mode 100644 index 0000000..cdcfe45 --- /dev/null +++ b/assets/translations.qrc @@ -0,0 +1,7 @@ + + + + i18n/en_US.ts + i18n/es_ES.ts + + \ No newline at end of file diff --git a/src/3DCurator.cpp b/src/3DCurator.cpp index e2cb352..fb9e144 100644 --- a/src/3DCurator.cpp +++ b/src/3DCurator.cpp @@ -6,7 +6,7 @@ #include "GUI/MainWindow.h" -#define RELEASE +//#define RELEASE #ifdef RELEASE #define WINAPI __stdcall @@ -22,6 +22,9 @@ int main() #endif QTranslator qtTranslator; + + std::cout << QLocale::system().name().toUtf8().constData(); + qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); QApplication a(argc, 0); diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 17eafe7..d3fbf91 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.1.0) if(POLICY CMP0020) cmake_policy(SET CMP0020 NEW) @@ -21,24 +21,26 @@ if(ITKVtkGlue_LOADED) else() find_package(ItkVtkGlue REQUIRED) include(${ItkVtkGlue_USE_FILE}) - set(Glue ItkVtkGlue) + set(GLUE ItkVtkGlue) endif() find_package(OpenCV REQUIRED) find_package(Boost REQUIRED) +find_package(Qt5Core REQUIRED QUIET) +find_package(Qt5Gui REQUIRED QUIET) +find_package(Qt5LinguistTools REQUIRED QUIET) find_package(Qt5Widgets REQUIRED QUIET) include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${Boost_INCLUDE_DIRS}) -file(GLOB_RECURSE UI_FILES *.ui) -file(GLOB_RECURSE QT_WRAP *.h) +file(GLOB_RECURSE HEADER_FILES *.h) file(GLOB_RECURSE CPP_FILES *.cpp) +file(GLOB_RECURSE UI_FILES *.ui) +file(GLOB_RECURSE QRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../assets/*.qrc) -set(RESOURCE ${CMAKE_CURRENT_SOURCE_DIR}/../assets/resources.qrc) -qt5_add_resources(RESOURCE_ADDED ${RESOURCE}) +qt5_wrap_ui(UI_SOURCES ${UI_FILES}) +qt5_add_resources(QRC_SOURCES ${QRC_FILES}) -qt5_wrap_ui(UISrcs ${UI_FILES}) -set_source_files_properties(${RESOURCE_ADDED} PROPERTIES GENERATED ON) -add_executable(3DCurator ${CPP_FILES} ${UISrcs} ${QT_WRAP} ${RESOURCE_ADDED}) -qt5_use_modules(3DCurator Core Gui) -target_link_libraries(3DCurator ${Glue} ${VTK_LIBRARIES} ${ITK_LIBRARIES} ${OpenCV_LIBS} ${Boost_LIBS}) +set_source_files_properties(${QRC_SOURCES} PROPERTIES GENERATED ON) +add_executable(3DCurator ${UI_SOURCES} ${QRC_SOURCES} ${HEADER_FILES} ${CPP_FILES}) +target_link_libraries(3DCurator Qt5::Core Qt5::Gui Qt5::Widgets ${GLUE} ${VTK_LIBRARIES} ${ITK_LIBRARIES} ${OpenCV_LIBS} ${Boost_LIBS}) diff --git a/src/GUI/MainWindow.ui b/src/GUI/MainWindow.ui index 061e8d4..82e7bb1 100644 --- a/src/GUI/MainWindow.ui +++ b/src/GUI/MainWindow.ui @@ -17,7 +17,7 @@ - 3DCurator + APP_NAME @@ -391,7 +391,7 @@ - + 200 @@ -656,7 +656,7 @@ 0 0 - 452 + 131 693 @@ -697,7 +697,7 @@ - + 0 @@ -719,7 +719,7 @@ - + 0 @@ -767,7 +767,7 @@ - + 0 @@ -990,7 +990,7 @@ - + 200 @@ -1781,7 +1781,7 @@ p, li { white-space: pre-wrap; } - + 300 From 49a35a131a72018a45d21997a943628746b031ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Bol=C3=ADvar?= Date: Thu, 7 Jun 2018 20:01:54 +0200 Subject: [PATCH 09/15] i18n working closes #72 and i18n MainWindow.ui closes #76 --- assets/i18n/en_US.qm | Bin 102 -> 7551 bytes assets/i18n/en_US.ts | 378 +++++++++++++++++++++++++++++++++++++++- assets/i18n/es_ES.qm | Bin 0 -> 8025 bytes assets/i18n/es_ES.ts | 378 +++++++++++++++++++++++++++++++++++++++- assets/translations.qrc | 13 +- src/3DCurator.cpp | 21 +-- src/GUI/MainWindow.ui | 261 +++++++++++++++------------ 7 files changed, 923 insertions(+), 128 deletions(-) create mode 100644 assets/i18n/es_ES.qm diff --git a/assets/i18n/en_US.qm b/assets/i18n/en_US.qm index 2e2c3956d71a33596d99f42b90d2429b6809f2f5..6b00a485bc17f825169f716838e5c0f5d2a82a4e 100644 GIT binary patch literal 7551 zcmbVReQX=$8GqcI9e>+#661JTann*d0in}AKwIhR*ys3!?epw&(r(kP`6PiRj*_&6 ze-LP_sI7mEE84`m6?N@aVBMyT2_{snXxr~SJLkL0 zeMGI*TrPQ^-}8Gu-{*a^<-~a6S0DW7(3|UePwjm2mGc8cYpxJ?_+28;dE%bMv;8n} zOKu|HCUS4=CJLUQ;F~uP`Gb^Cv-M9?&4c&waTfb00B+wk+7TrXCh2kzajPwwB0XKYQ|8$6NgLfZ|WeuJpv zg|=@`q=@K|wx@Hq6ZI50|GONX`?%2hZA9K2x9&Lft@#ai>m7%{*UR1UOfOMni5qoN16UVvkN52c?lE`$W7rpe-2K2==;;c%_x%vKi4Wb+UwD8h zR&&3Ygukvk=lV5F;*TL^A-gCeB0_4ZMpPWYAxc7aLn^WL1>+5@L zC*HUDGJp6B^u&C^FaHSq^}b`Y8T!BLJ9`=HgO_~oJ@yuGKk{APdXXskDLEDX`1O77!H=E6AKd>}@OveA<^uAe`?=spA1on$ZNaPm z1x`c=1-|+O;&^@Nn|BiaT?sw7gm?c_q5YG14ZR%tUJu^eJ`5dz+bO&~ba>-7W=iw8{6cH67`ODzlR*TFW0Y7LweGB})=B~&) zKRF5exM>(O*@j>AQkur`Nzok5Q=Jy^b%e(7tkXPP3M28qBc094>C#|IZgSs{& z-5IeUR?JpMmDOtYX&mfr=ANmG*EYqNk0#*aiDpSm&;ol`xkdm|F7OgBmn(dgH;wda zv62QXS<2ZtF{w~w?whp?Xec9A#FAY|SA){6L$Tx3hrFCHxXh}HbY*$PagL3o*8pnX zPU20tRdkfN0dNLB9M_gX6RId?Ey_S|rBS|9BX8%eEe0Of*56`HZ4NEYX!Ja)PTS~~ zNmm?tT?1zU)jN+)GPk1L2C{rLQxVFNAePJuG7O`q(Yhz0AGM@bQhQd&S}9l)rw#@%W>9KYS1dR$pL zr>JMt*|xhtQ>vc>{Pwa~kz{Dgo5jaTKCF@N@9)1Bh)xZJU40}Crm&gB*np!=tVa8_ zAha5wgbv7|_j)OZXlToa%LxV3&;^@IS@>Hcln2Wt-gL(@7YH{5?A(>2K{#kc$#G>4 zLGjAd(Gt43?V^9reUz@Akw9%S!BH6HDfXRi@b#0-Kv%o zI$<-HLq7ws9$r#9h-tKvI{vc`I0;T;nk?wiLMfE&lGT~obviuzS;$Kzuz`2f*m2e~ zu!!Vi^)Z1;Nx=+#AqT`VU*fZ}RXrzB4h{Jfb|nErm^#N9@!f+cEP)gEC%fjB>Nd($vSjRE0ivvR}l<>Tnvya3n}dx3W5)t_~=! z2ePwcgTibNg14HRhG;cC#5-Lzq%@EYrJ%q$lmat(O!3(Wda~7qAFgK7g>=PkyYB-K zyIx^i46bRE1X#XmF&=Pws{EijYRl}HWaq?9K%PSR?4?^VQcNq!W`DtytmegGS**x; z0nm;IL`Hq30^NMB)@`p2dKHJowWi=J?@nSmV9RE-S~$H66gWE{vou)g0^=F4N5|3W zq!$F{F2oC)yrzsj)q;>Quj7pxffRaX{Os+92a@M1ZtAy?$IJ* zimOI9VMMg^Srl~Hp1`gT*>2LB&b`$#pQ)i>%tkrpYMmIWj?J}u0o8&CFGI*>aoBv& zj{|5Cy2tRT1H?Go1*%dllMyYayQD$hY`zOMF{}qXRyKSTXL)gW0&kf8d5x<3~(w3Ph)B` zOLKDpUqirR>e-}K0?wP1Uf;SwZSEuV8I?ds6R&ZHm0cySb8G2p;yU)0J_BVFXq9Zw z3Q#+b$7oo|I(En~mbPzL#2+NAj%{&`q*+l16lv>{UaOI}E9Zm;$FZ25NX4~a)@8gO Ke;Hcia{V79fZ6*1 delta 73 zcmexwm1b$PBSqrW`#Dq3D$49nSh)AD69WSS2WyH_DUfE!1Y%oeAR)$J%;3V{%uvcu W#E{5P0>s6WPqV18cL3#>7#RUde-Z@% diff --git a/assets/i18n/en_US.ts b/assets/i18n/en_US.ts index 32bc331..01e2cc3 100644 --- a/assets/i18n/en_US.ts +++ b/assets/i18n/en_US.ts @@ -5,7 +5,383 @@ MainWindow APP_NAME - 3DCuratasor + 3DCurator + + + FILE + File + + + EDIT + Edit + + + TOOLS + Tools + + + OPEN_DICOM... + Open DICOM... + + + OPEN_VOLUME... + Open volume... + + + VOLUME_SCREENSHOT... + Volume screenshot... + + + SLICE_SCREENSHOT... + Slice screenshot... + + + EXIT + Exit + + + SHOW_OR_HIDE_PLANE + Show/Hide plane + + + SAGITTAL_PLANE + Sagittal plane + + + AXIAL_PLANE + Axial plane + + + CORONAL_PLANE + Coronal plane + + + COMPLETE_PRESET + Complete preset + + + WOOD_PRESET + Wood preset + + + STUCCO_PRESET + Stucco preset + + + METAL_PRESET + Metal preset + + + DELETE_MODE + Delete mode + + + WOOD_MESH + Wood mesh + + + STUCCO_MESH + Stucco mesh + + + METAL_MESH + Metal mesh + + + FILTER + Filter + + + IMPORT_PRESET... + Import preset + + + EXPORT_PRESET... + Export preset + + + EXPORT_MESH... + Export mesh + + + VOLUME + Volume + + + OPENED_FILE + Opened file + + + SLICES + Slices + + + TRANSFER_FUNCTION + Transfer function + + + EXPORT_MESH + Export mesh + + + PROPERTIES + Properties + + + PLANE + Plane + + + HU_OUT_OF_RANGE + HU: Out of range + + + TF_PRESETS + Presets + + + NAME + Name + + + DESCRIPTION + Description + + + COLOR + Color + + + SCALAR_OPACITY + Scalar opacity + + + GRADIENT_OPACITY + Gradient opacity + + + MESH_PRESETS + Presets + + + MATERIAL + Material + + + AMBIENT + Ambient + + + DIFFUSE + Diffuse + + + SPECULAR + Specular + + + SPECULAR_POWER + Specular power + + + RESTORE_MTL + Restore + + + UPDATE_MTL + Update + + + BACKGROUND + Background + + + VOLUME_BG + Volume + + + VOLUME_DELETED_BG + Volume (delete mode) + + + MESH_BG + Mesh + + + RESTORE_BG + Restore + + + DOCUMENTATION + Documentation + + + RULES + Rules + + + ANGLES + Protractors + + + COMMENTS + Comments + + + EMPTY_COMMENT_MESSAGE + Insert here your comment text before create it + + + OPEN_DICOM_TOOLTIP + Open DICOM folder + + + OPEN_VTI_TOOLTIP + Open volume file + + + SAVE_VTI_TOOLTIP + Save volume file + + + FILTER_TOOLTIP + Filter + + + DELETE_MODE_TOOLTIP + Delete mode + + + VOLUME_SCREENSHOT_TOOLTIP + Volume screenshot + + + SHOW_OR_HIDE_PLANE_TOOLTIP + Show/Hide plane + + + SAGITTAL_PLANE_TOOLTIP + Sagittal plane + + + AXIAL_PLANE_TOOLTIP + Axial plane + + + CORONAL_PLANE_TOOLTIP + Coronal plane + + + SLICE_SCREENSHOT_TOOLTIP + Slice screenshot + + + SEGMENTATION_MODE_TOOLTIP + Segmentation mode + + + COMPLETE_PRESET_TF_TOOLTIP + Complete preset + + + WOOD_PRESET_TF_TOOLTIP + Wood preset + + + STUCCO_PRESET_TF_TOOLTIP + Stucco preset + + + METAL_PRESET_TF_TOOLTIP + Metal preset + + + IMPORT_PRESET_TF_TOOLTIP + Import preset + + + EXPORT_PRESET_TF_TOOLTIP + Export preset + + + WOOD_PRESET_MESH_TOOLTIP + Wood isosurface + + + STUCCO_PRESET_MESH_TOOLTIP + Stucco isosurface + + + METAL_PRESET_MESH_TOOLTIP + Metal isosurface + + + EXPORT_MESH_TOOLTIP + Export mesh + + + RESTORE_MTL_TOOLTIP + Restore default material + + + UPDATE_MTL_TOOLTIP + Update material + + + RESTORE_BG_TOOLTIP + Update default backgrounds + + + OPEN_ROD_TOOLTIP + Open documentation + + + SAVE_ROD_TOOLTIP + Save documentation + + + ADD_ROD_TOOLTIP + Add region of documentation + + + DELETE_ROD_TOOLTIP + Delete region of documentation + + + ADD_RULE_TOOLTIP + Add rule + + + DELETE_RULE_TOOLTIP + Delete rule + + + SHOW_OR_HIDE_RULE_TOOLTIP + Show/Hide rule + + + ADD_ANGLE_TOOLTIP + Add protractor + + + DELETE_ANGLE_TOOLTIP + Delete protractor + + + SHOW_OR_HIDE_ANGLE_TOOLTIP + Show/Hide protractor + + + ADD_COMMENT_TOOLTIP + Add comment + + + DELETE_COMMENT_TOOLTIP + Delete comment + + + SHOW_OR_HIDE_COMMENT_TOOLTIP + Show/Hide comment diff --git a/assets/i18n/es_ES.qm b/assets/i18n/es_ES.qm new file mode 100644 index 0000000000000000000000000000000000000000..977f8ad9d073059a2d8946f375547bc4e7b35e75 GIT binary patch literal 8025 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 E4}c{?YybcN literal 0 HcmV?d00001 diff --git a/assets/i18n/es_ES.ts b/assets/i18n/es_ES.ts index c6be47b..537f553 100644 --- a/assets/i18n/es_ES.ts +++ b/assets/i18n/es_ES.ts @@ -5,7 +5,383 @@ MainWindow APP_NAME - 3DCuratillor + 3DCurator + + + FILE + Archivo + + + EDIT + Editar + + + TOOLS + Herramientas + + + OPEN_DICOM... + Abrir DICOM... + + + OPEN_VOLUME... + Abrir volumen... + + + VOLUME_SCREENSHOT... + Guardar imagen volumen... + + + SLICE_SCREENSHOT... + Guardar imagen corte... + + + EXIT + Salir + + + SHOW_OR_HIDE_PLANE + Mostrar/Ocultar plano + + + SAGITTAL_PLANE + Plano sagital + + + AXIAL_PLANE + Plano axial + + + CORONAL_PLANE + Plano coronal + + + COMPLETE_PRESET + Preset completo + + + WOOD_PRESET + Preset madera + + + STUCCO_PRESET + Preset estuco + + + METAL_PRESET + Preset metal + + + DELETE_MODE + Borrar partes + + + WOOD_MESH + Malla madera + + + STUCCO_MESH + Malla estuco + + + METAL_MESH + Malla metal + + + FILTER + Filtrar + + + IMPORT_PRESET... + Importar preset + + + EXPORT_PRESET... + Exportar preset + + + EXPORT_MESH... + Exportar malla + + + VOLUME + Volumen + + + OPENED_FILE + Archivo abierto + + + SLICES + Cortes + + + TRANSFER_FUNCTION + Función de transferencia + + + EXPORT_MESH + Exportar malla + + + PROPERTIES + Propiedades + + + PLANE + Plano + + + HU_OUT_OF_RANGE + HU: Fuera de rango + + + TF_PRESETS + Presets + + + NAME + Nombre + + + DESCRIPTION + Descripción + + + COLOR + Color + + + SCALAR_OPACITY + Opacidad escalar + + + GRADIENT_OPACITY + Opacidad gradiente + + + MESH_PRESETS + Presets + + + MATERIAL + Material + + + AMBIENT + Ambiental + + + DIFFUSE + Difusa + + + SPECULAR + ESPECULAR + + + SPECULAR_POWER + Potencia especular + + + RESTORE_MTL + Restaurar + + + UPDATE_MTL + Actualizar + + + BACKGROUND + Fondo + + + VOLUME_BG + Volumen + + + VOLUME_DELETED_BG + Volumen (modo borrado) + + + MESH_BG + Malla + + + RESTORE_BG + Restaurar + + + DOCUMENTATION + Documentación + + + RULES + Reglas + + + ANGLES + Transportadores de ángulos + + + COMMENTS + Notas + + + EMPTY_COMMENT_MESSAGE + Introducir aquí el texto de la nota antes de crearla + + + OPEN_DICOM_TOOLTIP + Abrir directorio DICOM + + + OPEN_VTI_TOOLTIP + Abrir archivo de volumen + + + SAVE_VTI_TOOLTIP + Guardar archivo de volumen + + + FILTER_TOOLTIP + Filtrar + + + DELETE_MODE_TOOLTIP + Borrar partes + + + VOLUME_SCREENSHOT_TOOLTIP + Imagen volumen + + + SHOW_OR_HIDE_PLANE_TOOLTIP + Mosrtar/Esconder plano + + + SAGITTAL_PLANE_TOOLTIP + Plano sagital + + + AXIAL_PLANE_TOOLTIP + Plano axial + + + CORONAL_PLANE_TOOLTIP + Plano coronal + + + SLICE_SCREENSHOT_TOOLTIP + Imagen corte + + + SEGMENTATION_MODE_TOOLTIP + Segmentar + + + COMPLETE_PRESET_TF_TOOLTIP + Preset completo + + + WOOD_PRESET_TF_TOOLTIP + Preset madera + + + STUCCO_PRESET_TF_TOOLTIP + Preset estuco + + + METAL_PRESET_TF_TOOLTIP + Preset metal + + + IMPORT_PRESET_TF_TOOLTIP + Importar preset + + + EXPORT_PRESET_TF_TOOLTIP + Exportar preset + + + WOOD_PRESET_MESH_TOOLTIP + Isosuperficie madera + + + STUCCO_PRESET_MESH_TOOLTIP + Isosuperficie estuco + + + METAL_PRESET_MESH_TOOLTIP + Isosuperficie metal + + + EXPORT_MESH_TOOLTIP + Exportar malla + + + RESTORE_MTL_TOOLTIP + Restaurar material predeterminado + + + UPDATE_MTL_TOOLTIP + Actualizar material + + + RESTORE_BG_TOOLTIP + Restaurar fondos predeterminados + + + OPEN_ROD_TOOLTIP + Abrir documentación + + + SAVE_ROD_TOOLTIP + Guardar documentación + + + ADD_ROD_TOOLTIP + Añadir región de documentación + + + DELETE_ROD_TOOLTIP + Eliminar región de documentación + + + ADD_RULE_TOOLTIP + Añadir regla + + + DELETE_RULE_TOOLTIP + Eliminar regla + + + SHOW_OR_HIDE_RULE_TOOLTIP + Mostrar/Ocultar regla + + + ADD_ANGLE_TOOLTIP + Añadir transportador de ángulos + + + DELETE_ANGLE_TOOLTIP + Eliminar transportador de ángulos + + + SHOW_OR_HIDE_ANGLE_TOOLTIP + Mostrar/Ocultar transportador de ángulos + + + ADD_COMMENT_TOOLTIP + Añadir nota + + + DELETE_COMMENT_TOOLTIP + Eliminar nota + + + SHOW_OR_HIDE_COMMENT_TOOLTIP + Mostrar/Ocultar nota diff --git a/assets/translations.qrc b/assets/translations.qrc index cdcfe45..ddb6024 100644 --- a/assets/translations.qrc +++ b/assets/translations.qrc @@ -1,7 +1,6 @@ - - - - i18n/en_US.ts - i18n/es_ES.ts - - \ No newline at end of file + + + i18n/es_ES.qm + i18n/en_US.qm + + diff --git a/src/3DCurator.cpp b/src/3DCurator.cpp index fb9e144..5f41a73 100644 --- a/src/3DCurator.cpp +++ b/src/3DCurator.cpp @@ -1,12 +1,13 @@ #include #include #include +#include #include #include "GUI/MainWindow.h" -//#define RELEASE +#define RELEASE #ifdef RELEASE #define WINAPI __stdcall @@ -20,19 +21,15 @@ int main() #ifdef RELEASE vtkObject::GlobalWarningDisplayOff(); // disable VTK warnings #endif - - QTranslator qtTranslator; - - std::cout << QLocale::system().name().toUtf8().constData(); - - qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); - QApplication a(argc, 0); + QApplication app(argc, 0); - a.installTranslator(&qtTranslator); + QTranslator qtTranslator; + qtTranslator.load(":/i18n/en_US"); + app.installTranslator(&qtTranslator); - MainWindow w; - w.show(); + MainWindow window; + window.show(); - return a.exec(); + return app.exec(); } diff --git a/src/GUI/MainWindow.ui b/src/GUI/MainWindow.ui index 82e7bb1..db416c2 100644 --- a/src/GUI/MainWindow.ui +++ b/src/GUI/MainWindow.ui @@ -6,8 +6,8 @@ 0 0 - 1152 - 699 + 800 + 600 @@ -34,7 +34,7 @@ - Volumen + VOLUME false @@ -43,7 +43,7 @@ - Abrir directorio DICOM + OPEN_DICOM_TOOLTIP @@ -62,6 +62,9 @@ + + OPEN_VTI_TOOLTIP + @@ -79,6 +82,9 @@ + + SAVE_VTI_TOOLTIP + @@ -136,7 +142,7 @@ - Filtrar + FILTER_TOOLTIP @@ -156,7 +162,7 @@ - Borrar partes + DELETE_MODE_TOOLTIP @@ -189,7 +195,7 @@ - Guardar imagen volumen + VOLUME_SCREENSHOT_TOOLTIP @@ -216,7 +222,7 @@ - Cortes + SLICES @@ -234,7 +240,7 @@ - Plano + PLANE false @@ -246,7 +252,7 @@ - Mosrtar/Esconder plano + SHOW_OR_HIDE_PLANE_TOOLTIP @@ -285,7 +291,7 @@ - Plano sagital + SAGITTAL_PLANE_TOOLTIP @@ -311,7 +317,7 @@ - Plano axial + AXIAL_PLANE @@ -337,7 +343,7 @@ - Plano coronal + CORONAL_PLANE @@ -370,7 +376,7 @@ - Guardar imagen corte + SLICE_SCREENSHOT_TOOLTIP @@ -409,7 +415,7 @@ - HU: Fuera de rango + HU_OUT_OF_RANGE @@ -429,7 +435,7 @@ - Segmentar + SEGMENTATION_MODE_TOOLTIP @@ -450,13 +456,13 @@ - Función de transferencia + TRANSFER_FUNCTION - Exportar preset + EXPORT_PRESET_TF_TOOLTIP @@ -482,7 +488,7 @@ - Presets + TF_PRESETS @@ -501,7 +507,7 @@ - Preset completo + COMPLETE_PRESET_TF_TOOLTIP @@ -521,7 +527,7 @@ - Preset madera + WOOD_PRESET_TF_TOOLTIP @@ -541,7 +547,7 @@ - Preset estuco + STUCCO_PRESET_TF_TOOLTIP @@ -561,7 +567,7 @@ - Preset metal + METAL_PRESET_TF_TOOLTIP @@ -597,14 +603,14 @@ - Nombre + NAME - Descripción + DESCRIPTION @@ -612,7 +618,7 @@ - 120 + 60 0 @@ -656,7 +662,7 @@ 0 0 - 131 + 138 693 @@ -664,7 +670,7 @@ - Color + COLOR @@ -715,7 +721,7 @@ - Opacidad escalar + SCALAR_OPACITY @@ -763,7 +769,7 @@ - Opacidad gradiente + GRADIENT_OPACITY @@ -815,7 +821,7 @@ - Importar preset + IMPORT_PRESET_TF_TOOLTIP @@ -836,13 +842,13 @@ - Extraer malla + EXPORT_MESH - Exportar malla + EXPORT_MESH_TOOLTIP @@ -897,7 +903,7 @@ - Presets + MESH_PRESETS @@ -916,7 +922,7 @@ - Isosuperficie madera + WOOD_PRESET_MESH_TOOLTIP @@ -936,7 +942,7 @@ - Isosuperficie estuco + STUCCO_PRESET_MESH_TOOLTIP @@ -956,7 +962,7 @@ - Isosuperficie metal + METAL_PRESET_MESH_TOOLTIP @@ -1006,13 +1012,13 @@ Qt::LeftToRight - Propiedades + PROPERTIES - Material + MATERIAL @@ -1031,21 +1037,21 @@ - Especular + SPECULAR - Ambiente + AMBIENT - Difusa + DIFFUSE @@ -1091,7 +1097,7 @@ - Potencia especular + SPECULAR_POWER @@ -1150,20 +1156,20 @@ - Restaurar material por defecto + RESTORE_MTL_TOOLTIP - Restaurar + RESTORE_MTL - Actualizar material + UPDATE_MTL_TOOLTIP - Actualizar + UPDATE_MTL @@ -1200,20 +1206,20 @@ - Fondos + BACKGROUND - Malla + MESH_BG - Color de fondo malla + @@ -1223,7 +1229,7 @@ - Color de fondo borrado + @@ -1233,17 +1239,17 @@ - Volumen + VOLUME_BG - Restaurar colores de fondo por defecto + RESTORE_BG_TOOLTIP - Restaurar + RESTORE_BG @@ -1256,7 +1262,7 @@ - Color de fondo volumen + true @@ -1269,7 +1275,7 @@ - Volumen (borrado) + VOLUME_DELETED_BG @@ -1360,7 +1366,7 @@ - Documentación + DOCUMENTATION @@ -1379,7 +1385,7 @@ - Añadir regla + ADD_ANGLE_TOOLTIP @@ -1443,6 +1449,9 @@ + + SAVE_ROD_TOOLTIP + @@ -1464,7 +1473,7 @@ - Reglas + RULES @@ -1516,7 +1525,7 @@ - Mostrar/Esconder regla + SHOW_OR_HIDE_RULE_TOOLTIP @@ -1536,7 +1545,7 @@ - Añadir regla + ADD_RULE_TOOLTIP @@ -1556,7 +1565,7 @@ - Transportadores de ángulos + ANGLES @@ -1566,7 +1575,7 @@ - Mostrar/Esconder regla + SHOW_OR_HIDE_ANGLE_TOOLTIP @@ -1593,14 +1602,7 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - Introducir aquí el texto de la nota antes de crearla - - - - - - - Nota + EMPTY_COMMENT_MESSAGE @@ -1620,7 +1622,7 @@ p, li { white-space: pre-wrap; } - Mostrar/Esconder regla + SHOW_OR_HIDE_COMMENT_TOOLTIP @@ -1642,6 +1644,9 @@ p, li { white-space: pre-wrap; } + + OPEN_ROD_TOOLTIP + @@ -1660,7 +1665,7 @@ p, li { white-space: pre-wrap; } - Añadir regla + ADD_ROD_TOOLTIP @@ -1680,7 +1685,7 @@ p, li { white-space: pre-wrap; } - Eliminar regla + DELETE_ROD_TOOLTIP @@ -1700,7 +1705,7 @@ p, li { white-space: pre-wrap; } - Eliminar regla + DELETE_RULE_TOOLTIP @@ -1719,8 +1724,11 @@ p, li { white-space: pre-wrap; } + + false + - Eliminar regla + DELETE_ANGLE_TOOLTIP @@ -1740,7 +1748,7 @@ p, li { white-space: pre-wrap; } - Añadir regla + ADD_COMMENT_TOOLTIP @@ -1760,7 +1768,7 @@ p, li { white-space: pre-wrap; } - Eliminar regla + DELETE_COMMENT_TOOLTIP @@ -1777,6 +1785,13 @@ p, li { white-space: pre-wrap; } + + + + COMMENTS + + + @@ -1799,7 +1814,7 @@ p, li { white-space: pre-wrap; } - Carpeta + OPENED_FILE @@ -1810,13 +1825,13 @@ p, li { white-space: pre-wrap; } 0 0 - 1152 + 800 21 - Archivo + FILE @@ -1827,7 +1842,7 @@ p, li { white-space: pre-wrap; } - Editar + EDIT @@ -1849,7 +1864,7 @@ p, li { white-space: pre-wrap; } - Herramientas + TOOLS @@ -1864,13 +1879,13 @@ p, li { white-space: pre-wrap; } - :/icons/folder.png:/icons/folder.png + :/icons/folder-dicom.png:/icons/folder-dicom.png - Abrir... + OPEN_DICOM... - <html><head/><body><p>Abrir</p></body></html> + OPEN_DICOM Ctrl+O @@ -1885,26 +1900,49 @@ p, li { white-space: pre-wrap; } :/icons/power.png:/icons/power.png - Salir + EXIT - Salir + EXIT Ctrl+Q - - Exportar figura... + + + :/icons/camera.png:/icons/camera.png + + + VOLUME_SCREENSHOT... + + + VOLUME_SCREENSHOT... + + + + + + Ctrl+F + + + :/icons/camera.png:/icons/camera.png + - Exportar corte... + SLICE_SCREENSHOT... + + + SLICE_SCREENSHOT... + + + SLICE_SCREENSHOT... Ctrl+S @@ -1912,7 +1950,7 @@ p, li { white-space: pre-wrap; } - Importar preset... + IMPORT_PRESET... Ctrl+Shift+I @@ -1920,7 +1958,7 @@ p, li { white-space: pre-wrap; } - Exportar preset... + EXPORT_PRESET... Ctrl+Shift+E @@ -1928,7 +1966,7 @@ p, li { white-space: pre-wrap; } - Borrar partes + DELETE_MODE Ctrl+Shift+D @@ -1950,7 +1988,7 @@ p, li { white-space: pre-wrap; } - Mostrar/Esconder plano + SHOW_OR_HIDE_PLANE Ctrl+Shift+H @@ -1958,7 +1996,7 @@ p, li { white-space: pre-wrap; } - Plano sagital + SAGITTAL_PLANE Ctrl+Shift+S @@ -1966,7 +2004,7 @@ p, li { white-space: pre-wrap; } - Plano axial + AXIAL_PLANE Ctrl+Shift+A @@ -1974,7 +2012,7 @@ p, li { white-space: pre-wrap; } - Plano coronal + CORONAL_PLANE Ctrl+Shift+C @@ -1982,7 +2020,7 @@ p, li { white-space: pre-wrap; } - Preset madera + WOOD_PRESET F2 @@ -1990,7 +2028,7 @@ p, li { white-space: pre-wrap; } - Preset estuco + STUCCO_PRESET F3 @@ -1998,7 +2036,7 @@ p, li { white-space: pre-wrap; } - Preset metal + METAL_PRESET F4 @@ -2006,7 +2044,7 @@ p, li { white-space: pre-wrap; } - Preset completo + COMPLETE_PRESET F1 @@ -2014,22 +2052,22 @@ p, li { white-space: pre-wrap; } - Malla madera + WOOD_MESH - Malla estuco + STUCCO_MESH - Malla metal + METAL_MESH - Extraer malla... + EXPORT_MESH... Ctrl+Shift+M @@ -2037,12 +2075,21 @@ p, li { white-space: pre-wrap; } - Filtrar + FILTER Ctrl+Shift+F + + + + :/icons/folder.png:/icons/folder.png + + + OPEN_VOLUME... + + From f53b834d6f9677be316c84c753ec29299b5f60d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Bol=C3=ADvar?= Date: Fri, 8 Jun 2018 17:33:30 +0200 Subject: [PATCH 10/15] i18n FilterSelectionDialog.ui closes #79 --- assets/i18n/en_US.qm | Bin 7551 -> 8050 bytes assets/i18n/en_US.ts | 34 +++++++++++++++++++++++++++++++ assets/i18n/es_ES.qm | Bin 8025 -> 8536 bytes assets/i18n/es_ES.ts | 34 +++++++++++++++++++++++++++++++ src/GUI/FilterSelectionDialog.ui | 14 ++++++------- 5 files changed, 75 insertions(+), 7 deletions(-) diff --git a/assets/i18n/en_US.qm b/assets/i18n/en_US.qm index 6b00a485bc17f825169f716838e5c0f5d2a82a4e..5de171861ed876feab532058758cc9db787f7f0d 100644 GIT binary patch delta 1320 zcma)4e@v8h9DZKz`@VNC_r7=hI)n=qD4>Rx{!zI^@`QuCfIGaywQQ3ga=|t92(X%e zaI(srGe!{&%rT+TazQSwu_$oiByAw8l|>U!w5Yahwz(3^p5qT@tu6QN`+nZf`~7~N z&+|N=@6Cs<=7w_ys*}!KInXhdmNHz?^U3)QfMFFNuLY0|(Rm3lbwa$$sQMxLWgvPM za;6QiG(sE80L-IsIanvku}NVbQ-wzlz5&D;@K}C4kn}R@#g~AdAQh)Q&$w5r3zhP} zD)ojG14>fcCv~+;^0~8PbhrlF-MZ45ytWv_I;B@h?bd!jQ4_G!Vbd@IoLJ zi1HfVELa2FVKn^NdXf9>BKneG?hyK&>q%4+X@^Nbyd>^h*Fhm8V%?DxAT}tfPLQA> zQ-o`O9tZ3`@pRS!0zm9>@g4WMXuZG~zf5$#Mc~A@MepP+m9>ffq+Tkvh`}{f5VupD zy7?<$TPn`~LI)D3W#{Tvzm2&7Bl_zbMcb#KH+h_9b*NJQIlaEgC0uo}v z@^L$@Ozx0BXqy3)Qu+EIfsL=p^IiNOw_1_bGFL7rN?{r4om3Jho2dM%l7-*tP>Hg) zwwTVnr?ef?h!d+E$!(*;9;GjPh&WTqz%X;`UCLMP6BP8JG3R3vFh6Yk=`5X7!_B4@ z&zXQFcbm#zy_XFCFtt26N}%hep*`(@RBxL6=zdza%yeUfvsHRj>xxtY-=n5?SMZ+9 ztJyDpO2kLhyl;P?Lu0D@2Uj&L3 zx_RS4T0N<6DFU52rnmGn*S6?;o?vc$M&FmrT<+6bISItX>z$eFNuWia;JGlOU$Ka; zTwWHpMSR1k*(~obub>l6mH~Sz0gYDI9GS~8)@@xRC=FUiRz^mVZvF0^Ag O?aj93$8rpL_P+srt2lrF delta 817 zcmWkseJoXR7=DlQJI6Wqo^$W@{gLJ?v?2PVvEoLeYgy|{rM9w2D5-5g;}b$vbmpmf07 zqbvDQ$M`NHn`L6<(?sGpu|}Y6IWdbsByT3c--$@Ek}}{&q*2Hey*^({i6UxUJsqv8 zAu^aKX}1HB^Lx6;-Vte&xCHNf;2?KCdq4X7xN0eY$W_bLo2SBX5XiM2YzA>Ax0(|Q zw722=V~My4-fv?+kzEUa{frk8mGHH3;Y4l;Of$`Z1x)pgB9h{mcRd!`yk#Mgr4TH! z$OaE0y@j3bh9K@7OaJi(3(Huc2{d*FR`hutQ<%B@@fRY;pR9Ux3J!*u#kCqv53#mz zC^dAk-nHLE4yW1pFF1ADB*bnl!kk`6^|=D#Iw5-r4xJwgxg%KQs0s!5LF~F9G*9Fb z*(VCE?numKRCrcANyJKpzir?Z#)Op$^bJ?dBDZ6`;V+7N4ioXR=sbEE#9?9pEhCxR z;*InKMEyrBu2VpCL~Jk?!`ZCZ6xfL?@)fOJsMQQ{IKCT>R%|2MAwbTz{XU4KYhk0d6o~axH@uECuoFsDJpkXEf1{yV;!I&4zw0)Bh=6F}Tq=3)< zxpJal21z<7_j0~LV23g|fj41xYEl;GEx1EoS@{PdeY~nYP=&knR8Q_De9LN{1+}I| zElfkHwyU??Q1c6F5t1j}F}2)33U8rT9a^80Ms%#g2rSaE4?xXvU5jTj7QfJ0-Mxq? zL2sIaa6VC=RZ&d7=;(Wb5xvb>{n(REIAj^Hlg8t~gQ6*wQtw=H@q8L0#JK+l;aktm diff --git a/assets/i18n/en_US.ts b/assets/i18n/en_US.ts index 01e2cc3..06a3d37 100644 --- a/assets/i18n/en_US.ts +++ b/assets/i18n/en_US.ts @@ -1,6 +1,17 @@ + + Core + + OK + OK + + + CANCEL + Cancel + + MainWindow @@ -384,4 +395,27 @@ Show/Hide comment + + FilterSelectionDialog + + GAUSSIAN_FILTER + Guassian + + + MEAN_FILTER + Mean + + + MEDIAN_FILTER + Median + + + REPETITIONS + Repetitions + + + NEIGHBORHOOD_SIZE + Neighborhood size + + diff --git a/assets/i18n/es_ES.qm b/assets/i18n/es_ES.qm index 977f8ad9d073059a2d8946f375547bc4e7b35e75..b62ba52dad74029bacf59b38814e5717ee31314f 100644 GIT binary patch delta 1317 zcma))drXs87{;HEp6~1J`&zDAplrZ`B#M{)p(9Z{p_I1aQY;YTG=hUVS&%ve|5$>B zY&yaWA#o<4%sIBnW;Vj+C1g4vV;NzIV73^Mg@Lz-nhebrLx#FN-4^(7GtKEa=R5EF zJJ0*P=bB?YJG7y%()Pn_=g~_k_JQ&bznRPibZY>4J%H5^?Y979EX3#Gc?zOO2F&k5 zUKR&fUxs=q4Nx24$zq;3gHnb2sO{Kt@*^N74O??!fP{4H6+Z#mxRjsrHee}|s)I#9 z{0CB3$dC>swn*JKUt++g(pi5m10G6`4^V{VNQ7?0ML}~B>qdX1pmAMV(g+aStveV< z1|k}CALnKQ_A9z4tv7hyAxyUfkQ67h7d8Q=<07S-0>pK(dgDUN3H?)#$z*v06ibwK(N6g&v)>9OsOKR=U%^AQQReLOSH0NqK@EIN;>A~P?XZL zJD<+Ip|qV+Y4wnD+R?@ezf`_h(NE5HrEh?H>r>^5caR1BuHSHx0?f1edt-FY6jBWt zZyBikyrJy9RaDquXnK8^f(8x!%|`&~O~b_3YYFN!JRV|i^_tO|k<9shW9o@=3icXT zyz?!Ig+}MKJ9KEo=>6^&UU=Sk3Tw!L@#+lotTo2lCoaDA*wdP&iM{d&&$8#^wYpv`ABA;mO%QjKKR_!w5LNKqhhziKeBe9zLCkWAoOt7nGFJOvVkc@)fdHzxs-?lSDmYmg~(garwiUak*91b%EOAKy{#^t}0lQQ?;`?_?i?( znNUDYm0`?3h!8)T3tZ2dZ&}P|eg86u&Qf**?F==gTQ8_P*l!pAv2G6StS6j-W6$NN@oA7CbZiT}7@EZ;97eSe*DD Kv@_8A3W08A4S8x-= zre>~wB$voFn`jE5V={z=Tswc@Fy%DA=39*8`zbA+tfRfXH1l2Z~1NqEV5 zHq@GAx$qEbZHau<6E#~W7bAJnZIH|Sqafg#+`Bj@W@%Y@B+y6827nqt`)FAzocn5< sOkPBELKi;?;mYf} + + Core + + OK + OK + + + CANCEL + Cancelar + + MainWindow @@ -384,4 +395,27 @@ Mostrar/Ocultar nota + + FilterSelectionDialog + + GAUSSIAN_FILTER + Guassiano + + + MEAN_FILTER + Media + + + MEDIAN_FILTER + Mediana + + + REPETITIONS + Repeticiones + + + NEIGHBORHOOD_SIZE + Tamaño vecindario + + diff --git a/src/GUI/FilterSelectionDialog.ui b/src/GUI/FilterSelectionDialog.ui index d8c47b8..d47bb73 100644 --- a/src/GUI/FilterSelectionDialog.ui +++ b/src/GUI/FilterSelectionDialog.ui @@ -23,7 +23,7 @@ - Cancelar + CANCEL @@ -54,7 +54,7 @@ - Gaussiano + GAUSSIAN_FILTER @@ -73,7 +73,7 @@ - Repeticiones + REPETITIONS @@ -104,7 +104,7 @@ - Media + MEAN_FILTER @@ -123,7 +123,7 @@ - Tamaño del vecinadario + NEIGHBORHOOD_SIZE @@ -163,13 +163,13 @@ - Mediana + MEDIAN_FILTER - Tamaño del vecinadario + NEIGHBORHOOD_SIZE From 819936c6c57facd23e41b9419646a5ff4d6bc59a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Bol=C3=ADvar?= Date: Fri, 8 Jun 2018 17:39:16 +0200 Subject: [PATCH 11/15] i18n LineSelectionDialog.ui closes #78 --- assets/i18n/en_US.qm | Bin 8050 -> 8617 bytes assets/i18n/en_US.ts | 39 +++++++++++++++++++++++++++++++++ assets/i18n/es_ES.qm | Bin 8536 -> 9133 bytes assets/i18n/es_ES.ts | 39 +++++++++++++++++++++++++++++++++ src/GUI/LineSelectionDialog.ui | 20 ++++++++--------- 5 files changed, 88 insertions(+), 10 deletions(-) diff --git a/assets/i18n/en_US.qm b/assets/i18n/en_US.qm index 5de171861ed876feab532058758cc9db787f7f0d..47ac16bb208d1093f10082c76e0078dd346abdca 100644 GIT binary patch delta 1397 zcmaJVq~)HjzeXDIr)jl1hwdYlWhzZ4Ey_YGZ6^TJe>lO{&q9nEIfHge?7G$z`ng}1Pi^)h(<9gGK1q_Q5q7R8+hfr$Gk$&3KZxCYdU zp8%&UdFStB+%9c6_#=gcNL4lYKke7xpagY&t(Y!$*>UDXSF98s#^5?Il0Pz#@ljiHJ?-#b40+^R9jD=}1VZSHl zAE6TUJ@LXSPHsCPR&~cy;cH^kIVx46#MVEDN#GK1C$^ISqA82-$TOn(8e^0pS`U#p z=78uLy}=1h(G$}}hn|SO6b=yS7e7qi1EO{D+h24hW>|5**bIbytyCiR0Uq<5wHlU{X05M~mm~R89rP0ByB08s?!xwaPzzY+&7`JZfV- zGC`GAFxN&@)l&@IkZ4Ff zeU^DxgnBvq92+09tn8-{W0~d7MOtXzrY-qE<4U5njV;S4bX;qE;{u6pYXeRDc~@$+ z(KE~GprJiJ&s}Q)t8+;Ld1I^#I?4dc9c$8_Z%Meun(@mYbgJK)ZGQJVcR6G|jARlm zw_X`1Fm#{wR>ue%eP$g`9pkRPw}~u;1nX@BOL^YrvR@dZ(3mv)gihi)W%|07r@Ukf z^$ojkG5<#YWXEj^uhcJI<(-Nx)*syM;Q+_O59 zfvcHtW{qXzv>NtYm6PM-}Sf zqsKhUpGfx>xh?#N@cOHL>wHzd&2|2o>P&xmRZXQNv!EdZ+fk0{8B9irD|c3m10K{M z0Tq0|GlMi?@#JmH%qyN9ZJS2dqc+%6A+RWa)}~Xix8UP5BUSMfxZS~S=Kl=ng&)=b zHN~5qJG&_k4X V&mc@KaeKXa#X)56-{Sqae*rI3M(qFq delta 845 zcmWlXdrVGo9LAs1`JMBg^S(3KbR0tv}F)ZE z*Hx@3L`^RfX0kVv$z`Q6w@jr%*f2IjZcl%G_dUP!d%mCN`Ti;=e@*s=ct!%sSO5tS zMO}ba1aY2Kp9|qr0DC8txKO~k2}WZq;AlYF#7Tfyiuo%0z!g|<@)Qs(W8oAR5PlFj z;xS-`NHe2%v+k4DZOGtvT`Je&frvZO+0HS5@m9K=c@gk9W2N7@gfJTea{xd)*$ss`b`?TY8!Wh z0FDW^4-c7~o~sSrr2%~gYfFy|C*V&lZ>^_+LccVB!C^qk(ORyLVs!nr-}T(BTBch= zqbNK?k11WochaLL?7cH6ds@0d`do_@QPZ=+SOz)0#$)t`0qp0iYcQ`*cyKD|4+ zohy237ikLbud(}w@qaDT(a=uNusM$J9)rRm8;!;JZ&;g*lHB(s-flc>H)U0rJe| z-v8`}oT50HHQgzmvl^k!ahC=xV-%a6*W6JQv{`B0Bv%5h^~EHVYOVTVy{m|^URL_K a+d8XbKX)y;vVq9xnnQA(RFh)McK-*XPScA3 diff --git a/assets/i18n/en_US.ts b/assets/i18n/en_US.ts index 06a3d37..574e1b8 100644 --- a/assets/i18n/en_US.ts +++ b/assets/i18n/en_US.ts @@ -418,4 +418,43 @@ Neighborhood size + + LineSelectionDialog + + LINE + Line + + + RED + Red + + + BLUE + Blue + + + GREEN + Green + + + CYAN + Cyan + + + MAGENTA + Magenta + + + YELLOW + Yellow + + + GO_UP + Go up + + + GO_DOWN + Go down + + diff --git a/assets/i18n/es_ES.qm b/assets/i18n/es_ES.qm index b62ba52dad74029bacf59b38814e5717ee31314f..53250bad8b37d0f55943092153e2bd1267e0814e 100644 GIT binary patch delta 1304 zcmZ8feN0tl9DWY>ea}7jEs^34S&jMUIpVKbS0+<>?O5+7qOFaqNmf+4iBjjMf_ zW6D@kLN&&)G?+4%xLFo4sTebr%95~>P!?I4Ta8>G_1u4;>(1WuJMVd)-}C!D&+i>e zJD%AZi{GH#chD$Nr-1&2b5um17(b}5bf6iODx1OZ~P6SPXc;7q-{CicMCE; z81Q$&dY*e*GqO_C0Cf13@Rw{PUa6_e2O^Fs-C6<=bx1jSEt$AeN`Ju#;^vjPrqzsHeufbz3rfES zFMLHIV}|8XBS1*M;gu=}Aes&DJhB#uo;2KPndEtgFkcryOq|e{ZGZ>X_eAVbcB0-C zN$aWHk}uZxMgl=Eii$yYDtC(NUoVg#Q9PUQHVGj1W$_(+TeSSd7_v#Uzf0oqheY@I zH7YzL`a-+u(1J+W3bL zkf%qR8{(`@;U@b^2V<`(u5$|;FE*`s^(+Z zJ4LILt#3B{!poR!y?B*(DneTS{G*Qo%B{2Ww)bPUu<+lu)8P*C zrP;HlDZu!&eR~HRHC(a}t>Q@31NJLD1GIjJeR6*z9gC7~z!7xvQNuaKp&=E!(1;p( zOe~j3a}_y_{0MZpYpV__GKipbJdY<(y9i1zP0jTItqDOEAv@8)w}Y#KYa8koQjD2- z=xV^axd6IcW`98IlnNf@?A}dk#KU{&+>B}Bxh6}%=me@r;;mXeS z)t6|)MmGBtVYS}&7buMzQ!|~pg{eNpV>A??&PSS|z?tELxn~J&-A+!gm>NEdHmIde Pmn*Mi0e(`EC6WID$6O+{ delta 845 zcmWlXc}P@I7{$+X?tAmz%zN|Ham-~bD^w_L`NI;lX|Y8~!XyzT|4N-IS(XrTzntWJMjKJNX__dDmiH`n-ARE2mK0CF;b z`4H8^fEEIAafM`Xw!a67)Idzu-XAE*zI)R8d z>=Dla!!KpbJOVf}r5(F7f$&RGy&4BZR!EH>7W4j^bSJ9?@H)OpzYh_@aXP@#y9%&O z1T5-%Mj*c>CaM<*X|x>O8Vv-LSgx#20^BbwQ`e zKxY-AIjo)ubc%aPbl|KNkN$oILXV0!pP4||R(aLJN+7UB-ZE=H2i%u;|D^NquX5>2 z4xE-DA3IN7cbVKWSPHm2@|_4K8JQ!uRSf}(PyTf;(+j8$d9sEV&TK_W<{;~OMOm|f zYYA3D2li2To)U)%CKRMp6lE~Fy-HPs&ZxVUCQlU|-coMP^-(8Z>A26@{G+@`@1mg} z)|5^H*uPlE`1aDV2o|#9$61A+@+e4x*)mMHRkPfN?cM~a8tN!lhZmou9 z#z*tKpv}5iNaA#D?(qjyT&JbJ8f8MgTKdDc9N4ZkU;%ZYy&Pkoxl0?l_>@U_v@y>R zSJYt>X)+D9*?b9nulCt{h6p&pS54Xy@qX4t?Y&o1^y+^7DjE=-V4|5eMsm5p+*w0HsmJV2;3`C^`TDw# bk#9ENpX9EksO`XXYwIb?W2v>+n(F=szB<>6 diff --git a/assets/i18n/es_ES.ts b/assets/i18n/es_ES.ts index 1bccef2..4146165 100644 --- a/assets/i18n/es_ES.ts +++ b/assets/i18n/es_ES.ts @@ -418,4 +418,43 @@ Tamaño vecindario + + LineSelectionDialog + + LINE + Línea + + + RED + Rojo + + + BLUE + Azul + + + GREEN + Verde + + + CYAN + Cyan + + + MAGENTA + Magenta + + + YELLOW + Amarillo + + + GO_UP + Hasta arriba + + + GO_DOWN + Hasta abajo + + diff --git a/src/GUI/LineSelectionDialog.ui b/src/GUI/LineSelectionDialog.ui index 35032db..a31f581 100644 --- a/src/GUI/LineSelectionDialog.ui +++ b/src/GUI/LineSelectionDialog.ui @@ -29,13 +29,13 @@ - Línea + LINE - Rojo + RED true @@ -45,7 +45,7 @@ - Azul + BLUE false @@ -55,28 +55,28 @@ - Verde + GREEN - Cyan + CYAN - Magenta + MAGENTA - Amarillo + YELLOW @@ -118,7 +118,7 @@ - Cancelar + CANCEL @@ -145,7 +145,7 @@ - Hasta arriba + GO_UP true @@ -155,7 +155,7 @@ - Hasta abajo + GO_DOWN true From 930f25f74022028260b0815492431410e872bd1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Bol=C3=ADvar?= Date: Fri, 8 Jun 2018 17:40:17 +0200 Subject: [PATCH 12/15] i18n SegmentatedVolumeDialog.ui closes #77 --- src/GUI/SegmentedVolumeDialog.ui | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/GUI/SegmentedVolumeDialog.ui b/src/GUI/SegmentedVolumeDialog.ui index e14cd98..fb4d190 100644 --- a/src/GUI/SegmentedVolumeDialog.ui +++ b/src/GUI/SegmentedVolumeDialog.ui @@ -21,7 +21,7 @@ - + @@ -39,7 +39,7 @@ - Cancelar + CANCEL From 8d272cb7e3a71e2d488dc8389dc7ac351b73ae26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Bol=C3=ADvar?= Date: Sat, 9 Jun 2018 20:19:53 +0200 Subject: [PATCH 13/15] i18n cpp closes #80 and fixes some i18n bugs --- assets/i18n/en_US.qm | Bin 8617 -> 14504 bytes assets/i18n/en_US.ts | 292 ++++++++++++++++- assets/i18n/es_ES.qm | Bin 9133 -> 15501 bytes assets/i18n/es_ES.ts | 294 +++++++++++++++++- src/3DCurator.cpp | 2 +- src/GUI/FilterSelectionDialog.ui | 4 +- src/GUI/LineSelectionDialog.ui | 4 +- src/GUI/MainWindow.cpp | 92 +++--- src/GUI/MainWindow.ui | 10 +- src/GUI/SegmentedVolumeDialog.ui | 4 +- src/Interactor/InteractorStyleDeleter.cpp | 16 +- src/Interactor/InteractorStyleDeleter.h | 2 + src/Interactor/InteractorStyleImage.cpp | 9 +- src/Interactor/InteractorStyleImage.h | 2 + .../InteractorStyleSegmentation.cpp | 10 +- src/Interactor/InteractorStyleSegmentation.h | 1 + 16 files changed, 643 insertions(+), 99 deletions(-) diff --git a/assets/i18n/en_US.qm b/assets/i18n/en_US.qm index 47ac16bb208d1093f10082c76e0078dd346abdca..ab9f959559c9579610953a6115bdea4c3fda1d78 100644 GIT binary patch literal 14504 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 delta 1097 zcmX|9YfMvT7=BOtozrvLb9$krlv1=vq(6$vvN$jzQaeT&^){J~VYG4RWElaM&27nI zA@jmEWlau7n3Vudon$u7qZ<=MqjQEOVCUl8Se$s<&@F?^g_w!5hd=w#zJ2?>-}63~ z@3SpOgVDmCYS(vT@x6mtp0kn8GuM|8>E9vZ7ZQ=5Xmtzv#l*JkCE|LC?OBI9My&M? zk#QHX&rwZFh$VO;`3mvo*+jY_;&W1otQ$xkM6Y~Fp#X4&WfZRHzvb!L(jRhNqK_!!6nEry zK9Tth^%(OKihA5amR4eAbFCvmOaed2N z5FHg8U%LdHdt!f+inmfP4xgS62NiMh0-_dUk|oy*T$ePfJwg;U+?V{j&I9pzDfsj6 zu&Pfg`{q|arepG>Cjd-&pqN&6 z!1@7YT{*#`E~PPn-n>+4+JxS=N!gu_-Vj%skqo8il-8VL5UE#^({pm8nY9(67MR&j zsAgt9F*5>3UNQH$y@+PQ5*md7Vaih52BP|I%Y``=>G;ED`Q>OovQAiT?MC*Ty@qIp zRjn#;&l7@yWxr}-%%W2kpCueAy-p_IW0Y0W1v;Y7A diff --git a/assets/i18n/en_US.ts b/assets/i18n/en_US.ts index 574e1b8..622fb03 100644 --- a/assets/i18n/en_US.ts +++ b/assets/i18n/en_US.ts @@ -1,17 +1,6 @@ - - Core - - OK - OK - - - CANCEL - Cancel - - MainWindow @@ -394,6 +383,198 @@ SHOW_OR_HIDE_COMMENT_TOOLTIP Show/Hide comment + + CHART_DENSITY + Density + + + CHART_OPACITY + Opacity + + + CHART_GRADIENT + Gradient + + + ERROR_OPENING_DEFALT_TF_FILE + Error opening default transfer function file + + + LOADING... + Loading... + + + OPEN_DICOM_FOLDER_CAPTION + Open DICOM folder + + + LOADING_DICOM_FILES + Loading specified DICOM files + + + OPEN_VTI_FILE_CAPTION + Open VTI file + + + LOADING_VTI_FILE + Loading specified volume file + + + SAVE_VOLUME_DEFAULT_NAME + Volume + + + EXPORTING_VOLUME + Exporting... + + + EXPORTING_VOLUME_MODEL + Exporting the model + + + OPEN_PRESET_CAPTION + Open preset + + + EXPORTING_MESH + Exporting... + + + EXPORTING_MESH_MODEL + Exporting mesh model + + + SAVE_PRESET_CAPTION + Save preset + + + SAVE_SCREENSHOT_CAPTION + Save screenshot + + + SAVE_MESH_CAPTION + Save mesh + + + SAVE_ROD_CAPTION + Save ROD + + + SAVE_VOLUME_CAPTION + Save volume + + + SAVE_MESH_DEFAULT_NAME + Mesh + + + UPDATING_MESH + Updating... + + + GENERATING_MESH_WITH_THE_SPECIFIED_ISO_SURFACE + Generating mesh with the specified iso-surface + + + WARNING + Warning + + + WARNING_VOLUME + You must load a volume model + + + WARNING_RULE + You must select a rule + + + WARNING_PROTRACTOR + You must select a protractor + + + WARNING_COMMENT_TEXT + You must write the comment text + + + WARNING_COMMENT + Select a comment + + + WARNING_ROD + Select a ROD + + + FILTERING... + Filtering... + + + APPLYING_FILTER + Applying filter with the specified parameters + + + ADD_ROD_TITLE + ROD name + + + ADD_ROD_LABEL + Name: + + + ADD_ROD_UNNAMED + Unnamed + + + ADD_RULE_TITLE + Rule name + + + ADD_RULE_LABEL + Name: + + + ADD_RULE_UNNAMED + Unnamed + + + ADD_PROTRACTOR_TITLE + Protractor name + + + ADD_PROTRACTOR_LABEL + Name: + + + ADD_PROTRACTOR_UNNAMED + Unnamed + + + ADD_COMMENT_TITLE + Comment name + + + ADD_COMMENT_LABEL + Name: + + + ADD_COMMENT_UNNAMED + Unnamed + + + OPEN_ROD_FILE + Open ROD + + + ARE_YOU_SURE_YOU_WANT_TO_EXIT? + Are you sure you want to exit? + + + CONFIRM_EXIT_YES + Yes + + + CONFIRM_EXIT_NO + No + FilterSelectionDialog @@ -417,6 +598,14 @@ NEIGHBORHOOD_SIZE Neighborhood size + + FILTER_OK + OK + + + FILTER_CANCEL + Cancel + LineSelectionDialog @@ -456,5 +645,86 @@ GO_DOWN Go down + + LINE_OK + OK + + + LINE_CANCEL + Cancel + + + + SegmentedVolumeDialog + + LINE_OK + OK + + + SEGMENTED_CANCEL + Cancel + + + + InteractorStyleDeleter + + DELETING... + Deleting... + + + DELETING_SELECTED_PART_OF_THE_VOLUME + Deleting selected part of the volume + + + CONFIRM_DELETION + Confirm + + + UPDATE_DELETION_CHANGES? + Update changes? + + + CONFIRM_DELETION_YES + Yes + + + CONFIRM_DELETION_NO + No + + + DELETION_RESTORING... + Restoring... + + + UNDOING_DELETION + Undoing deletion + + + + InteractorStyleSegmentation + + SEGMENTING... + Segmenting... + + + SEGMENTING_PIECE_OF_WOOD_SELECTED + Segmenting the piece of wood selected + + + SAVE_SUB_VOLUME_CAPTION + Save volume + + + SAVE_SUB_VOLUME_DEFAULT_NAME + Sub-volume + + + EXPORTING_SUB_VOLUME... + Exporting... + + + EXPORTING_SUB_VOLUME_MODEL + Exporting the model + diff --git a/assets/i18n/es_ES.qm b/assets/i18n/es_ES.qm index 53250bad8b37d0f55943092153e2bd1267e0814e..303902f636db7b4d0c40ef069721466724829854 100644 GIT binary patch literal 15501 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 delta 1135 zcmX|9e@sHlprn8P$u389CwO}Hs%Co$iQltSu5SR z*bie&7f_Djk+5|z12TU^%5*$E)7s@c@S}k(32v_Wfx1g2Y_rqJ!Lh%!9^NCatRDow& zPXUe40!wzX9jCq}A_?sI%6uTaleI~SK;$uYW+I*H&as{? z-Bh>0=BrXEwwlaC*)&ivrCs`tgj_SnM-BlYJ?6J|#{j(6{K3HS+cug+- zJ09@*Unz!c=1m_GZrEzxHabB9kMS;N8#y$@`&N+vM?3%W-x3E7X; z1A*s-(%6@2z&AqWEIAPVP^i9216_r};o}4xRWEektOi2!gq|?6II>hY*DwZ1UkjrF zIpolL!asd9z#1;hHPgFem&h_Gmy1L(rvR`-iy@=?7uPE$;sH73ixO+gy<}mP*l=1Q z>qo?n%mz~G7tb#96HtZNdx7#moA|?qej3ayYd#|)>b&LlWwKClNz31mNWg$p-1sOF zt(6Y#86;xElD|f$TR9+&e)uqHJwkpd(9Bb{w80tJ9VDtA3|rOjj=7q?-yClt1ou!3U*SnOh*h-~iRO zxs`UFtrq2hHu|S}sEcxYl3G(nd0@GE#6`Izsr9rO1X zHGYkv_OteJbO{aqOY04bA-whW+$j=ZdCvYqGZ8gku@58{xM*OV{d&8ftlw)NKSH}_ zkrhBpuzpaBN)bI-8$H=x3#i{yxo)rJre2-v7@=v{=QA7`2!g_q7P7 zpInlw_Xh6KXM%F{1Htd;#~rKntdKs#2sJUi#I@AObctO5J2Kg*j-Ft8s@tji-El@! zYz{Nx;_FPh_Q+1XJ5keFQloJvY1*XUPcAglQ|_AWTak}!c(4s#WMPZ3Vx`lp52iVd Z&a^V7x3ARnr5VA-?2`(!)GV@O>_6ilCmH|% diff --git a/assets/i18n/es_ES.ts b/assets/i18n/es_ES.ts index 4146165..06314ab 100644 --- a/assets/i18n/es_ES.ts +++ b/assets/i18n/es_ES.ts @@ -1,17 +1,6 @@ - - Core - - OK - OK - - - CANCEL - Cancelar - - MainWindow @@ -188,7 +177,7 @@ SPECULAR - ESPECULAR + Especular SPECULAR_POWER @@ -394,6 +383,198 @@ SHOW_OR_HIDE_COMMENT_TOOLTIP Mostrar/Ocultar nota + + CHART_DENSITY + Densidad + + + CHART_OPACITY + Opacidad + + + CHART_GRADIENT + Gradiente + + + ERROR_OPENING_DEFALT_TF_FILE + Error abriendo archivo por defecto de función de transferenia + + + LOADING... + Cargando... + + + OPEN_DICOM_FOLDER_CAPTION + Abrir carpeta DICOM + + + LOADING_DICOM_FILES + Cargando los datos DICOM especificados + + + OPEN_VTI_FILE_CAPTION + Abrir archivo VTI + + + LOADING_VTI_FILE + Cargando los datos del volumen especificados + + + SAVE_VOLUME_DEFAULT_NAME + Volumen + + + EXPORTING_VOLUME + Extrayendo... + + + EXPORTING_VOLUME_MODEL + Extrayendo el modelo + + + OPEN_PRESET_CAPTION + Abrir preset + + + EXPORTING_MESH + Extrayendo... + + + EXPORTING_MESH_MODEL + Extrayendo la maya del modelo + + + SAVE_PRESET_CAPTION + Guardar preset + + + SAVE_SCREENSHOT_CAPTION + Guardar captura + + + SAVE_MESH_CAPTION + Guardar malla + + + SAVE_ROD_CAPTION + Guardar ROD + + + SAVE_VOLUME_CAPTION + Guardar volumen + + + SAVE_MESH_DEFAULT_NAME + Malla + + + UPDATING_MESH + Actualizando... + + + GENERATING_MESH_WITH_THE_SPECIFIED_ISO_SURFACE + Generando el modelo con la isosuperficie especificada + + + WARNING + Advertencia + + + WARNING_VOLUME + Hace falta cargar un modelo antes + + + WARNING_RULE + Seleccione una regla antes + + + WARNING_PROTRACTOR + Seleccione un transportador de ángulos antes + + + WARNING_COMMENT_TEXT + Escribe el texto de la nota antes + + + WARNING_COMMENT + Seleccione una nota antes + + + WARNING_ROD + Seleccione una ROD antes + + + FILTERING... + Filtrando... + + + APPLYING_FILTER + Aplicando filtro con los parámetros seleccionados + + + ADD_ROD_TITLE + Nombre de la ROD + + + ADD_ROD_LABEL + Nombre: + + + ADD_ROD_UNNAMED + Sin nombre + + + ADD_RULE_TITLE + Nombre de la regla + + + ADD_RULE_LABEL + Nombre: + + + ADD_RULE_UNNAMED + Sin nombre + + + ADD_PROTRACTOR_TITLE + Nombre del transportador de ángulos + + + ADD_PROTRACTOR_LABEL + Nombre: + + + ADD_PROTRACTOR_UNNAMED + Sin nombre + + + ADD_COMMENT_TITLE + Nombre de la nota + + + ADD_COMMENT_LABEL + Nombre: + + + ADD_COMMENT_UNNAMED + Sin nombre + + + OPEN_ROD_FILE + Abrir ROD + + + ARE_YOU_SURE_YOU_WANT_TO_EXIT? + ¿Seguro que desea salir? + + + CONFIRM_EXIT_YES + Sí + + + CONFIRM_EXIT_NO + No + FilterSelectionDialog @@ -417,6 +598,14 @@ NEIGHBORHOOD_SIZE Tamaño vecindario + + FILTER_OK + OK + + + FILTER_CANCEL + Cancelar + LineSelectionDialog @@ -456,5 +645,86 @@ GO_DOWN Hasta abajo + + LINE_OK + OK + + + LINE_CANCEL + Cancelar + + + + SegmentedVolumeDialog + + SEGMENTED_OK + OK + + + SEGMENTED_CANCEL + Cancelar + + + + InteractorStyleDeleter + + DELETING... + Borrando... + + + DELETING_SELECTED_PART_OF_THE_VOLUME + Borrando la parte del volumen seleccionada + + + CONFIRM_DELETION + Confirmar + + + UPDATE_DELETION_CHANGES? + ¿Actualizar cambios? + + + CONFIRM_DELETION_YES + Sí + + + CONFIRM_DELETION_NO + No + + + DELETION_RESTORING... + Restaurando... + + + UNDOING_DELETION + Deshaciendo borrado + + + + InteractorStyleSegmentation + + SEGMENTING... + Segmentando... + + + SEGMENTING_PIECE_OF_WOOD_SELECTED + Segmentando la pieza de madera seleccionada + + + SAVE_SUB_VOLUME_CAPTION + Guardar volumen + + + SAVE_SUB_VOLUME_DEFAULT_NAME + Sub-volumen + + + EXPORTING_SUB_VOLUME... + Extrayendo... + + + EXPORTING_SUB_VOLUME_MODEL + Extrayendo el modelo + diff --git a/src/3DCurator.cpp b/src/3DCurator.cpp index 5f41a73..f078c38 100644 --- a/src/3DCurator.cpp +++ b/src/3DCurator.cpp @@ -25,7 +25,7 @@ int main() QApplication app(argc, 0); QTranslator qtTranslator; - qtTranslator.load(":/i18n/en_US"); + qtTranslator.load(":/i18n/es_ES"); app.installTranslator(&qtTranslator); MainWindow window; diff --git a/src/GUI/FilterSelectionDialog.ui b/src/GUI/FilterSelectionDialog.ui index d47bb73..301819f 100644 --- a/src/GUI/FilterSelectionDialog.ui +++ b/src/GUI/FilterSelectionDialog.ui @@ -23,7 +23,7 @@ - CANCEL + FILTER_CANCEL @@ -43,7 +43,7 @@ - OK + FILTER_OK diff --git a/src/GUI/LineSelectionDialog.ui b/src/GUI/LineSelectionDialog.ui index a31f581..bdcefc6 100644 --- a/src/GUI/LineSelectionDialog.ui +++ b/src/GUI/LineSelectionDialog.ui @@ -118,7 +118,7 @@ - CANCEL + LINE_CANCEL @@ -138,7 +138,7 @@ - OK + LINE_OK diff --git a/src/GUI/MainWindow.cpp b/src/GUI/MainWindow.cpp index 3d4ffb0..23c7455 100644 --- a/src/GUI/MainWindow.cpp +++ b/src/GUI/MainWindow.cpp @@ -27,9 +27,9 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi defaultMaterial(); defaultBackgroundsColors(); - colorTFChart = new ColorTFChart(ui->volumeWidget->GetRenderWindow(), ui->colorTFWidget->GetRenderWindow(), sculpture->getTransferFunction()->getColorFun(), "Densidad", "", MIN_INTENSITY, MAX_INTENSITY); - scalarTFChart = new OpacityTFChart(ui->volumeWidget->GetRenderWindow(), ui->scalarTFWidget->GetRenderWindow(), sculpture->getTransferFunction()->getScalarFun(), "Densidad", "Opacidad", MIN_INTENSITY, MAX_INTENSITY); - gradientTFChart = new OpacityTFChart(ui->volumeWidget->GetRenderWindow(), ui->gradientTFWidget->GetRenderWindow(), sculpture->getTransferFunction()->getGradientFun(), "Gradiente", "Opacidad", 0, MAX_INTENSITY - MIN_INTENSITY); + colorTFChart = new ColorTFChart(ui->volumeWidget->GetRenderWindow(), ui->colorTFWidget->GetRenderWindow(), sculpture->getTransferFunction()->getColorFun(), tr("CHART_DENSITY").toUtf8().constData(), "", MIN_INTENSITY, MAX_INTENSITY); + scalarTFChart = new OpacityTFChart(ui->volumeWidget->GetRenderWindow(), ui->scalarTFWidget->GetRenderWindow(), sculpture->getTransferFunction()->getScalarFun(), tr("CHART_DENSITY").toUtf8().constData(), tr("CHART_OPACITY").toUtf8().constData(), MIN_INTENSITY, MAX_INTENSITY); + gradientTFChart = new OpacityTFChart(ui->volumeWidget->GetRenderWindow(), ui->gradientTFWidget->GetRenderWindow(), sculpture->getTransferFunction()->getGradientFun(), tr("CHART_GRADIENT").toUtf8().constData(), tr("CHART_OPACITY").toUtf8().constData(), 0, MAX_INTENSITY - MIN_INTENSITY); updateSliders(); sliceViewer->GetWindowLevel()->SetLookupTable(sculpture->getTransferFunction()->getColorFun()); @@ -135,7 +135,7 @@ void MainWindow::loadDefaultPreset(QFile *file) { ui->tfName->setText(QString::fromUtf8(sculpture->getTransferFunction()->getName().c_str())); ui->tfDescription->setText(QString::fromUtf8(sculpture->getTransferFunction()->getDescription().c_str())); } else { - cerr << "Error abriendo archivo por defecto de función de transferencia" << endl; + cerr << tr("ERROR_OPENING_DEFAULT_TF_FILE").toUtf8().constData() << endl; exit(-1); } } @@ -204,14 +204,14 @@ void MainWindow::updateSliders() { } void MainWindow::importDICOM() { - QString dicomFolder = QFileDialog::getExistingDirectory(this, tr("Abrir carpeta DICOM"), QDir::homePath(), QFileDialog::ShowDirsOnly); + QString dicomFolder = QFileDialog::getExistingDirectory(this, tr("OPEN_DICOM_FOLDER_CAPTION"), QDir::homePath(), QFileDialog::ShowDirsOnly); if (dicomFolder != NULL) { // -- launch progress bar QPointer bar = new QProgressBar(0); QPointer progressDialog = new QProgressDialog(0); - progressDialog->setWindowTitle(QString("Cargando...")); - progressDialog->setLabelText(QString::fromLatin1("Cargando los datos DICOM especificados")); + progressDialog->setWindowTitle(tr("LOADING...")); + progressDialog->setLabelText(tr("LOADING_DICOM_FILES")); progressDialog->setWindowIcon(QIcon(":/icons/3DCurator.png")); progressDialog->setWindowFlags(progressDialog->windowFlags() & ~Qt::WindowCloseButtonHint); progressDialog->setCancelButton(0); @@ -245,14 +245,14 @@ void MainWindow::importDICOM() { } void MainWindow::importVTI() { - QString vtiFile = QFileDialog::getOpenFileName(this, tr("Abrir archivo VTI"), QDir::homePath(), "VTI (*.vti) ;; XML (*.xml) ;; All files (*.*)"); + QString vtiFile = QFileDialog::getOpenFileName(this, tr("OPEN_VTI_FILE_CAPTION"), QDir::homePath(), "VTI (*.vti) ;; XML (*.xml) ;; All files (*.*)"); if (vtiFile != NULL) { // -- launch progress bar QPointer bar = new QProgressBar(0); QPointer progressDialog = new QProgressDialog(0); - progressDialog->setWindowTitle(QString("Cargando...")); - progressDialog->setLabelText(QString::fromLatin1("Cargando los datos especificados")); + progressDialog->setWindowTitle(QString("LOADING...")); + progressDialog->setLabelText(QString::fromLatin1("LOADING_VTI_FILE")); progressDialog->setWindowIcon(QIcon(":/icons/3DCurator.png")); progressDialog->setWindowFlags(progressDialog->windowFlags() & ~Qt::WindowCloseButtonHint); progressDialog->setCancelButton(0); @@ -287,13 +287,13 @@ void MainWindow::importVTI() { void MainWindow::exportVTI() { if (sculpture->getLoaded()) { - QString filename = getExportVTIFilename("Volume"); + QString filename = getExportVTIFilename(tr("SAVE_VOLUME_DEFAULT_NAME")); if (filename != NULL) { // -- launch progress bar QPointer bar = new QProgressBar(0); QPointer progressDialog = new QProgressDialog(0); - progressDialog->setWindowTitle(QString("Extrayendo...")); - progressDialog->setLabelText(QString::fromLatin1("Extrayendo el modelo")); + progressDialog->setWindowTitle(tr("EXPORTING_VOLUME...")); + progressDialog->setLabelText(tr("EXPORTING_VOLUME_MODEL")); progressDialog->setWindowIcon(QIcon(":/icons/3DCurator.png")); progressDialog->setWindowFlags(progressDialog->windowFlags() & ~Qt::WindowCloseButtonHint); progressDialog->setCancelButton(0); @@ -318,7 +318,7 @@ void MainWindow::exportVTI() { } void MainWindow::importPreset() { - QString presetFile = QFileDialog::getOpenFileName(this, tr("Importar preset"), QDir::homePath(), "XML (*.xml) ;; All files (*.*)"); + QString presetFile = QFileDialog::getOpenFileName(this, tr("OPEN_PRESET_CAPTION"), QDir::homePath(), "XML (*.xml) ;; All files (*.*)"); if (presetFile != NULL) { std::string s = presetFile.toUtf8().constData(); @@ -358,8 +358,8 @@ void MainWindow::exportMeshToFile(const QString filename) { // -- launch progress bar QPointer bar = new QProgressBar(0); QPointer progressDialog = new QProgressDialog(0); - progressDialog->setWindowTitle(QString("Extrayendo...")); - progressDialog->setLabelText(QString::fromLatin1("Extrayendo la malla del modelo")); + progressDialog->setWindowTitle(tr("EXPORTING_MESH...")); + progressDialog->setLabelText(tr("EXPORTING_MESH_MODEL")); progressDialog->setWindowIcon(QIcon(":/icons/3DCurator.png")); progressDialog->setWindowFlags(progressDialog->windowFlags() & ~Qt::WindowCloseButtonHint); progressDialog->setCancelButton(0); @@ -427,23 +427,23 @@ void MainWindow::exportPreset(const QString filename) { } QString MainWindow::getExportPresetFilename(const QString defaultFilename) { - return QFileDialog::getSaveFileName(this, tr("Exportar preset"), QDir(QDir::homePath()).filePath(defaultFilename), "XML (*.xml)"); + return QFileDialog::getSaveFileName(this, tr("SAVE_PRESET_CAPTION"), QDir(QDir::homePath()).filePath(defaultFilename), "XML (*.xml)"); } QString MainWindow::getExportImageFilename(const QString defaultFilename) { - return QFileDialog::getSaveFileName(this, tr("Exportar imagen"), QDir(QDir::homePath()).filePath(defaultFilename), "PNG (*.png);;JPG (*.jpg)"); + return QFileDialog::getSaveFileName(this, tr("SAVE_SCREENSHOT_CAPTION"), QDir(QDir::homePath()).filePath(defaultFilename), "PNG (*.png);;JPG (*.jpg)"); } QString MainWindow::getExportMeshFilename(const QString defaultFilename) { - return QFileDialog::getSaveFileName(this, tr("Exportar malla"), QDir(QDir::homePath()).filePath(defaultFilename), "STL (*.stl)"); + return QFileDialog::getSaveFileName(this, tr("SAVE_MESH_CAPTION"), QDir(QDir::homePath()).filePath(defaultFilename), "STL (*.stl)"); } QString MainWindow::getExportRODFilename(const QString defaultFilename) { - return QFileDialog::getSaveFileName(this, tr("Exportar ROD"), QDir(QDir::homePath()).filePath(defaultFilename), "XML (*.xml)"); + return QFileDialog::getSaveFileName(this, tr("SAVE_ROD_CAPTION"), QDir(QDir::homePath()).filePath(defaultFilename), "XML (*.xml)"); } QString MainWindow::getExportVTIFilename(const QString defaultFilename) { - return QFileDialog::getSaveFileName(this, tr("Exportar volumen"), QDir(QDir::homePath()).filePath(defaultFilename), "VTI (*.vti) ;; XML (*.xml)"); + return QFileDialog::getSaveFileName(this, tr("SAVE_VOLUME_CAPTION"), QDir(QDir::homePath()).filePath(defaultFilename), "VTI (*.vti) ;; XML (*.xml)"); } void MainWindow::enablePlane() { @@ -462,7 +462,7 @@ void MainWindow::disablePlane() { void MainWindow::exportMesh() { if (sculpture->getLoaded()) { - exportMeshToFile(getExportMeshFilename("Mesh")); + exportMeshToFile(getExportMeshFilename(tr("SAVE_MESH_DEFAULT_NAME"))); } else { launchWarningNoVolume(); } @@ -473,8 +473,8 @@ void MainWindow::updateMesh() { // -- launch progress bar QPointer bar = new QProgressBar(0); QPointer progressDialog = new QProgressDialog(0); - progressDialog->setWindowTitle(QString("Actualizando...")); - progressDialog->setLabelText(QString::fromLatin1("Generando el modelo con la isosuperficie especificada")); + progressDialog->setWindowTitle(tr("UPDATING_MESH...")); + progressDialog->setLabelText(tr("GENERATING_MESH_WITH_THE_SPECIFIED_ISO_SURFACE")); progressDialog->setWindowIcon(QIcon(":/icons/3DCurator.png")); progressDialog->setWindowFlags(progressDialog->windowFlags() & ~Qt::WindowCloseButtonHint); progressDialog->setCancelButton(0); @@ -633,7 +633,7 @@ void MainWindow::restoreBackgroundsColors() { } void MainWindow::launchWarning(const std::string message) { QPointer confirmBox = new QMessageBox(0); - confirmBox->setWindowTitle(QString::fromLatin1("Advertencia")); + confirmBox->setWindowTitle(tr("WARNING")); confirmBox->setWindowIcon(QIcon(":/icons/3DCurator.png")); confirmBox->setIcon(QMessageBox::Information); confirmBox->setText(QString::fromLatin1(message.c_str())); @@ -642,27 +642,27 @@ void MainWindow::launchWarning(const std::string message) { } void MainWindow::launchWarningNoVolume() { - launchWarning("Hace falta cargar un modelo antes"); + launchWarning(tr("WARNING_VOLUME").toUtf8().constData()); } void MainWindow::launchWarningNoRule() { - launchWarning("Seleccione una regla antes"); + launchWarning(tr("WARNING_RULE").toUtf8().constData()); } void MainWindow::launchWarningNoProtractor() { - launchWarning("Seleccione un transportador de ángulos antes"); + launchWarning(tr("WARNING_PROTRACTOR").toUtf8().constData()); } void MainWindow::launchWarningNoAnnotationText() { - launchWarning("Escribe el texto de la nota antes"); + launchWarning(tr("WARNING_COMMENT_TEXT").toUtf8().constData()); } void MainWindow::launchWarningNoAnnotation() { - launchWarning("Seleccione una nota antes"); + launchWarning(tr("WARNING_COMMENT").toUtf8().constData()); } void MainWindow::launchWarningNoActiveROD() { - launchWarning("Seleccione un ROD antes"); + launchWarning(tr("WARNING_ROD").toUtf8().constData()); } void MainWindow::segmentateOnOff() { @@ -687,8 +687,8 @@ void MainWindow::filter() { // -- launch progress bar QPointer bar = new QProgressBar(0); QPointer progressDialog = new QProgressDialog(0); - progressDialog->setWindowTitle(QString("Filtrando...")); - progressDialog->setLabelText(QString::fromLatin1("Aplicando filtro con los parámetros seleccionados")); + progressDialog->setWindowTitle(tr("FILTERING...")); + progressDialog->setLabelText(tr("APPLYING_FILTER")); progressDialog->setWindowIcon(QIcon(":/icons/3DCurator.png")); progressDialog->setWindowFlags(progressDialog->windowFlags() & ~Qt::WindowCloseButtonHint); progressDialog->setCancelButton(0); @@ -751,10 +751,10 @@ void MainWindow::addROD() { std::string name; QListWidgetItem *item = new QListWidgetItem(0); bool ok; - QString text = QInputDialog::getText(this, tr("Nombre del ROD"), tr("Nombre:"), QLineEdit::Normal, tr("Sin nombre"), &ok); + QString text = QInputDialog::getText(this, tr("ADD_ROD_TITLE"), tr("ADD_ROD_LABEL"), QLineEdit::Normal, tr("ADD_ROD_UNNAMED"), &ok); if (ok) { if (text.isEmpty()) { - name = "Sin nombre"; + name = tr("ADD_ROD_UNNAMED").toUtf8().constData();; } else { name = text.toUtf8().constData(); } @@ -793,10 +793,10 @@ void MainWindow::addRule() { std::string name; QListWidgetItem *item = new QListWidgetItem(0); bool ok; - QString text = QInputDialog::getText(this, tr("Nombre de la regla"), tr("Nombre:"), QLineEdit::Normal, tr("Sin nombre"), &ok); + QString text = QInputDialog::getText(this, tr("ADD_RULE_LABEL"), tr("ADD_RULE_LABEL"), QLineEdit::Normal, tr("ADD_RULE_UNNAMED"), &ok); if (ok) { if (text.isEmpty()) { - name = "Sin nombre"; + name = tr("ADD_RULE_UNNAMED").toUtf8().constData(); } else { name = text.toUtf8().constData(); } @@ -836,10 +836,10 @@ void MainWindow::addProtractor() { std::string name; QListWidgetItem *item = new QListWidgetItem(0); bool ok; - QString text = QInputDialog::getText(this, tr("Nombre del transportador de ángulos"), tr("Nombre:"), QLineEdit::Normal, tr("Sin nombre"), &ok); + QString text = QInputDialog::getText(this, tr("ADD_PROTRACTOR_TITLE"), tr("ADD_PROTRACTOR_LABEL"), QLineEdit::Normal, tr("ADD_PROTRACTOR_UNNAMED"), &ok); if (ok) { if (text.isEmpty()) { - name = "Sin nombre"; + name = tr("ADD_PROTRACTOR_UNNAMED").toUtf8().constData(); } else { name = text.toUtf8().constData(); } @@ -883,10 +883,10 @@ void MainWindow::addAnnotation() { } else { QListWidgetItem *item = new QListWidgetItem(0); bool ok; - QString text = QInputDialog::getText(this, tr("Nombre de la nota"), tr("Nombre:"), QLineEdit::Normal, tr("Sin nombre"), &ok); + QString text = QInputDialog::getText(this, tr("ADD_COMMENT_TITLE"), tr("ADD_COMMENT_LABEL"), QLineEdit::Normal, tr("ADD_COMMENT_UNNAMED"), &ok); if (ok) { if (text.isEmpty()) { - name = "Sin nombre"; + name = tr("ADD_COMMENT_UNNAMED").toUtf8().constData(); } else { name = text.toUtf8().constData(); } @@ -922,7 +922,7 @@ void MainWindow::enableDisableAnnotation() { void MainWindow::importROD() { if (sculpture->getLoaded()) { - QString rodFile = QFileDialog::getOpenFileName(this, tr("Importar ROD"), QDir::homePath(), "XML (*.xml) ;; All files (*.*)"); + QString rodFile = QFileDialog::getOpenFileName(this, tr("OPEN_ROD_FILE"), QDir::homePath(), "XML (*.xml) ;; All files (*.*)"); if (rodFile != NULL) { std::string s = rodFile.toUtf8().constData(); ROD* rod = new ROD(s, itemListEnabled, itemListDisabled, ui->slicesWidget->GetInteractor(), ui->ruleList, ui->protractorList, ui->annotationList); @@ -963,13 +963,13 @@ void MainWindow::on_actionExportSliceImage_triggered() { void MainWindow::on_actionExit_triggered() { QPointer confirmBox = new QMessageBox(0); - confirmBox->setWindowTitle(QString::fromLatin1("Advertencia")); + confirmBox->setWindowTitle(tr("WARNING")); confirmBox->setWindowIcon(QIcon(":/icons/3DCurator.png")); confirmBox->setIcon(QMessageBox::Information); - confirmBox->setText(QString::fromLatin1("¿Seguro que desea salir?")); + confirmBox->setText(tr("ARE_YOU_SURE_YOU_WANT_TO_EXIT?")); confirmBox->setStandardButtons(QMessageBox::Yes | QMessageBox::No); - confirmBox->button(QMessageBox::Yes)->setText(QString::fromLatin1("Sí")); - confirmBox->button(QMessageBox::No)->setText(QString::fromLatin1("No")); + confirmBox->button(QMessageBox::Yes)->setText(tr("CONFIRM_EXIT_YES")); + confirmBox->button(QMessageBox::No)->setText(tr("CONFIRM_EXIT_NO")); if (confirmBox->exec() == QMessageBox::Yes) { exit(0); } diff --git a/src/GUI/MainWindow.ui b/src/GUI/MainWindow.ui index db416c2..f86ee55 100644 --- a/src/GUI/MainWindow.ui +++ b/src/GUI/MainWindow.ui @@ -6,8 +6,8 @@ 0 0 - 800 - 600 + 1280 + 720 @@ -240,7 +240,7 @@ - PLANE + PLANE false @@ -662,7 +662,7 @@ 0 0 - 138 + 408 693 @@ -1825,7 +1825,7 @@ p, li { white-space: pre-wrap; } 0 0 - 800 + 1024 21 diff --git a/src/GUI/SegmentedVolumeDialog.ui b/src/GUI/SegmentedVolumeDialog.ui index fb4d190..5df9396 100644 --- a/src/GUI/SegmentedVolumeDialog.ui +++ b/src/GUI/SegmentedVolumeDialog.ui @@ -39,14 +39,14 @@ - CANCEL + SEGMENTED_CANCEL - OK + SEGMENTED_OK diff --git a/src/Interactor/InteractorStyleDeleter.cpp b/src/Interactor/InteractorStyleDeleter.cpp index 45947e0..7268a08 100644 --- a/src/Interactor/InteractorStyleDeleter.cpp +++ b/src/Interactor/InteractorStyleDeleter.cpp @@ -18,8 +18,8 @@ void InteractorStyleDeleter::OnLeftButtonDown() { // -- launch progress bar QPointer bar = new QProgressBar(0); QPointer progressDialog = new QProgressDialog(0); - progressDialog->setWindowTitle(QString("Borrando...")); - progressDialog->setLabelText(QString::fromLatin1("Extrayendo la malla del objeto")); + progressDialog->setWindowTitle(QCoreApplication::translate("InteractorStyleDeleter", "DELETING...")); + progressDialog->setLabelText(QCoreApplication::translate("InteractorStyleDeleter", "DELETING_SELECTED_PART_OF_THE_VOLUME")); progressDialog->setWindowIcon(QIcon(":/icons/3DCurator.png")); progressDialog->setWindowFlags(progressDialog->windowFlags() & ~Qt::WindowCloseButtonHint); progressDialog->setCancelButton(0); @@ -52,18 +52,18 @@ void InteractorStyleDeleter::OnLeftButtonDown() { // -- launch confirm box QPointer confirmBox = new QMessageBox(0); - confirmBox->setWindowTitle(QString::fromLatin1("Confirmar")); + confirmBox->setWindowTitle(QCoreApplication::translate("InteractorStyleDeleter", "CONFIRM_DELETION")); confirmBox->setWindowIcon(QIcon(":/icons/3DCurator.png")); confirmBox->setIcon(QMessageBox::Question); - confirmBox->setText(QString::fromLatin1("¿Actualizar cambios?")); + confirmBox->setText(QCoreApplication::translate("InteractorStyleDeleter", "UPDATE_DELETION_CHANGES?")); confirmBox->setStandardButtons(QMessageBox::Yes | QMessageBox::No); - confirmBox->button(QMessageBox::Yes)->setText(QString::fromLatin1("Sí")); - confirmBox->button(QMessageBox::No)->setText(QString::fromLatin1("No")); + confirmBox->button(QMessageBox::Yes)->setText(QCoreApplication::translate("InteractorStyleDeleter", "CONFIRM_DELETION_YES")); + confirmBox->button(QMessageBox::No)->setText(QCoreApplication::translate("InteractorStyleDeleter", "CONFIRM_DELETION_NO")); if (confirmBox->exec() == QMessageBox::No) { // -- launch progress bar - progressDialog->setWindowTitle(QString("Restaurando...")); - progressDialog->setLabelText(QString::fromLatin1("Deshaciendo borrado")); + progressDialog->setWindowTitle(QCoreApplication::translate("InteractorStyleDeleter", "DELTION_RESTORING...")); + progressDialog->setLabelText(QCoreApplication::translate("InteractorStyleDeleter", "UNDOING_DELETION")); progressDialog->show(); QApplication::processEvents(); // -- END launch progress bar diff --git a/src/Interactor/InteractorStyleDeleter.h b/src/Interactor/InteractorStyleDeleter.h index d55205f..d205b16 100644 --- a/src/Interactor/InteractorStyleDeleter.h +++ b/src/Interactor/InteractorStyleDeleter.h @@ -8,6 +8,8 @@ #include #include #include +#include +#include #include #include diff --git a/src/Interactor/InteractorStyleImage.cpp b/src/Interactor/InteractorStyleImage.cpp index 8844dbe..7d78198 100644 --- a/src/Interactor/InteractorStyleImage.cpp +++ b/src/Interactor/InteractorStyleImage.cpp @@ -15,9 +15,8 @@ void InteractorStyleImage::OnMouseMove() { if (picker->GetPointId() != -1) { // a voxel has been selected float value = slicePlane->getPlane()->GetResliceOutput()->GetScalarComponentAsFloat(ijk[0], ijk[1], ijk[2], 0); label->setText(QString::fromStdString("HU: " + std::to_string((int)value))); - } - else { - label->setText(QString::fromStdString("HU: Fuera de rango")); + } else { + label->setText(QCoreApplication::translate("MainWindow", "HU_OUT_OF_RANGE")); } } vtkInteractorStyleImage::OnMouseMove(); // Forward events @@ -27,8 +26,8 @@ void InteractorStyleImage::OnLeftButtonDown() { // idle } -void InteractorStyleImage::SetSlicePlane(SlicePlane* plano) { - this->slicePlane = plano; +void InteractorStyleImage::SetSlicePlane(SlicePlane* plane) { + this->slicePlane = plane; } void InteractorStyleImage::SetLabel(QLabel* label) { diff --git a/src/Interactor/InteractorStyleImage.h b/src/Interactor/InteractorStyleImage.h index 7f5c5d0..f9b5fc2 100644 --- a/src/Interactor/InteractorStyleImage.h +++ b/src/Interactor/InteractorStyleImage.h @@ -4,6 +4,8 @@ #include #include #include +#include +#include #include #include diff --git a/src/Interactor/InteractorStyleSegmentation.cpp b/src/Interactor/InteractorStyleSegmentation.cpp index d34ac5f..142e32c 100644 --- a/src/Interactor/InteractorStyleSegmentation.cpp +++ b/src/Interactor/InteractorStyleSegmentation.cpp @@ -64,8 +64,8 @@ void InteractorStyleSegmentation::OnLeftButtonDown() { // -- launch progress bar QPointer bar = new QProgressBar(0); QPointer progressDialog = new QProgressDialog(0); - progressDialog->setWindowTitle(QString("Segmentando...")); - progressDialog->setLabelText(QString::fromLatin1("Segmentando la pieza de madera seleccionada")); + progressDialog->setWindowTitle(QCoreApplication::translate("InteractorStyleSegmentation", "SEGMENTING...")); + progressDialog->setLabelText(QCoreApplication::translate("InteractorStyleSegmentation", "SEGMENTING_PIECE_OF_WOOD_SELECTED")); progressDialog->setWindowIcon(QIcon(":/icons/3DCurator.png")); progressDialog->setWindowFlags(progressDialog->windowFlags() & ~Qt::WindowCloseButtonHint); progressDialog->setCancelButton(0); @@ -106,13 +106,13 @@ void InteractorStyleSegmentation::OnLeftButtonDown() { if (exportSegmentedVolume == QMessageBox::Yes) { QString vtiFile = NULL; - vtiFile = QFileDialog::getSaveFileName(NULL, QObject::tr("Exportar volumen"), QDir(QDir::homePath()).filePath("Sub-volume"), "VTI (*.vti) ;; XML (*.xml)"); + vtiFile = QFileDialog::getSaveFileName(NULL, QCoreApplication::translate("InteractorStyleSegmentation", "SAVE_SUB_VOLUME_CAPTION"), QDir(QDir::homePath()).filePath(QCoreApplication::translate("InteractorStyleSegmentation", "SAVE_SUB_VOLUME_DEFAULT_NAME")), "VTI (*.vti) ;; XML (*.xml)"); if (vtiFile != NULL) { // -- launch progress bar QPointer bar = new QProgressBar(0); QPointer progressDialog = new QProgressDialog(0); - progressDialog->setWindowTitle(QString("Extrayendo...")); - progressDialog->setLabelText(QString::fromLatin1("Extrayendo el modelo")); + progressDialog->setWindowTitle(QCoreApplication::translate("InteractorStyleSegmentation", "EXPORTING_SUB_VOLUME...")); + progressDialog->setLabelText(QCoreApplication::translate("InteractorStyleSegmentation", "EXPORTING_SUB_VOLUME_MODEL")); progressDialog->setWindowIcon(QIcon(":/icons/3DCurator.png")); progressDialog->setWindowFlags(progressDialog->windowFlags() & ~Qt::WindowCloseButtonHint); progressDialog->setCancelButton(0); diff --git a/src/Interactor/InteractorStyleSegmentation.h b/src/Interactor/InteractorStyleSegmentation.h index 7c12f68..d8cf084 100644 --- a/src/Interactor/InteractorStyleSegmentation.h +++ b/src/Interactor/InteractorStyleSegmentation.h @@ -14,6 +14,7 @@ #include #include #include +#include #include #include From c76fccd0135bbe6193607573821088b153b9d1bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Bol=C3=ADvar=20Lupi=C3=A1=C3=B1ez?= Date: Sun, 10 Jun 2018 19:21:21 +0200 Subject: [PATCH 14/15] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 27 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 17 ++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..aec760f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,27 @@ +--- +name: Bug report +about: Create a report to help us improve + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. Windows] + - Version [e.g. 7] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..066b2d9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,17 @@ +--- +name: Feature request +about: Suggest an idea for this project + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. From 038cfefeea76a748b1ca894d8c26d94b544075fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Bol=C3=ADvar?= Date: Mon, 11 Jun 2018 20:51:33 +0200 Subject: [PATCH 15/15] hotfix translation --- src/GUI/MainWindow.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/GUI/MainWindow.cpp b/src/GUI/MainWindow.cpp index 3d4ffb0..5366ede 100644 --- a/src/GUI/MainWindow.cpp +++ b/src/GUI/MainWindow.cpp @@ -251,8 +251,13 @@ void MainWindow::importVTI() { // -- launch progress bar QPointer bar = new QProgressBar(0); QPointer progressDialog = new QProgressDialog(0); +<<<<<<< Updated upstream progressDialog->setWindowTitle(QString("Cargando...")); progressDialog->setLabelText(QString::fromLatin1("Cargando los datos especificados")); +======= + progressDialog->setWindowTitle(tr("LOADING...")); + progressDialog->setLabelText(tr("LOADING_VTI_FILE")); +>>>>>>> Stashed changes progressDialog->setWindowIcon(QIcon(":/icons/3DCurator.png")); progressDialog->setWindowFlags(progressDialog->windowFlags() & ~Qt::WindowCloseButtonHint); progressDialog->setCancelButton(0);