Skip to content

Commit 985f82d

Browse files
authored
Kill qt3 (#126)
* qt3->qt4: upgrade SaveOutlinesWidget * upgrade ImageInformationDialogs * upgrade RadiotherapyStructureSetImporter * adding option to edit range in slider * upgrade SliceViewerWidget * get rid of nearly all Qt3 layout stuff in dialogs * q3-q4: growing widget * minor cleanup * get rid of qt3 function calls, get rid of std::vector<const char*> * readability: redundant QString(const char*) Co-authored-by: Bryn Lloyd <[email protected]>
1 parent 6f38924 commit 985f82d

File tree

73 files changed

+2941
-3810
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+2941
-3810
lines changed

CMake/CommonMacros.cmake

+12-7
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,17 @@
22
# use OpenMP features
33
#
44
MACRO(USE_OPENMP)
5+
IF(APPLE AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")
6+
SET(OpenMP_C_FLAGS "-Xpreprocessor -fopenmp")
7+
SET(OpenMP_CXX_FLAGS "-Xpreprocessor -fopenmp")
8+
ENDIF()
59
FIND_PACKAGE(OpenMP)
610
IF(OpenMP_FOUND)
711
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
812
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
913
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
1014
LIST( APPEND MY_EXTERNAL_LINK_LIBRARIES ${OpenMP_CXX_LIBRARIES} )
15+
INCLUDE_DIRECTORIES(${OpenMP_CXX_INCLUDE_DIRS}) # todo: use imported target instead
1116
ELSE()
1217
MESSAGE("OpenMP not found. Disabling OpenMP parallelization.")
1318
ADD_DEFINITIONS(-DNO_OPENMP_SUPPORT)
@@ -80,9 +85,9 @@ MACRO(SUBDIR_LIST result curdir)
8085
FILE(GLOB children RELATIVE ${curdir} ${curdir}/*)
8186
SET(dirlist "")
8287
FOREACH(child ${children})
83-
IF(IS_DIRECTORY ${curdir}/${child})
84-
LIST(APPEND dirlist ${child})
85-
ENDIF()
88+
IF(IS_DIRECTORY ${curdir}/${child})
89+
LIST(APPEND dirlist ${child})
90+
ENDIF()
8691
ENDFOREACH()
8792
SET(${result} ${dirlist})
8893
ENDMACRO()
@@ -94,13 +99,13 @@ MACRO(INIT_BUNDLE app_name)
9499

95100
SET(BUNDLE_INSTALL_TARGET ${CMAKE_INSTALL_PREFIX})
96101
IF(APPLE)
97-
SET(APP_BUNDLE_NAME "${app_name}.app")
102+
SET(APP_BUNDLE_NAME "${app_name}.app")
98103
SET(BUNDLE_INSTALL_DIRECTORY ${BUNDLE_INSTALL_TARGET}/${APP_BUNDLE_NAME}/Contents/MacOS)
99-
LIST(APPEND BUNDLE_APPS ${BUNDLE_INSTALL_TARGET}/${APP_BUNDLE_NAME})
104+
LIST(APPEND BUNDLE_APPS ${BUNDLE_INSTALL_TARGET}/${APP_BUNDLE_NAME})
100105
ELSE()
101-
SET(APP_BUNDLE_NAME ${app_name})
106+
SET(APP_BUNDLE_NAME ${app_name})
102107
SET(BUNDLE_INSTALL_DIRECTORY ${CMAKE_INSTALL_PREFIX})
103-
LIST(APPEND BUNDLE_APPS ${CMAKE_INSTALL_PREFIX}/${app_name})
108+
LIST(APPEND BUNDLE_APPS ${CMAKE_INSTALL_PREFIX}/${app_name})
104109
ENDIF(APPLE)
105110
ENDMACRO()
106111

CMake/ThirdPartyQt4.cmake

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
# - preprocessor definitions needed by package
66
#
77

8-
FIND_PACKAGE(Qt4 4.8.5 COMPONENTS QtCore QtGui QtScript Qt3Support QtXml QtOpenGL REQUIRED)
8+
FIND_PACKAGE(Qt4 4.8.5 COMPONENTS QtCore QtGui QtScript QtXml QtOpenGL Qt3Support REQUIRED)
99

1010
MACRO(USE_QT4)
1111
SET(QT_USE_QTOPENGL TRUE)

Core/ImageReader.cpp

+8-8
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,15 @@ class RGBToValue
5050
};
5151
} // namespace
5252

53-
bool ImageReader::GetInfo2D(const char* filename, unsigned& width, unsigned& height)
53+
bool ImageReader::GetInfo2D(const std::string& filename, unsigned& width, unsigned& height)
5454
{
5555
unsigned nrslices;
5656
float spacing[3];
5757
Transform tr;
5858
return ImageReader::GetInfo(filename, width, height, nrslices, spacing, tr);
5959
}
6060

61-
bool ImageReader::GetImageStack(const std::vector<const char*>& filenames, float** img_stack, unsigned width, unsigned height, const std::function<float(unsigned char, unsigned char, unsigned char)>& color2grey)
61+
bool ImageReader::GetImageStack(const std::vector<std::string>& filenames, float** img_stack, unsigned width, unsigned height, const std::function<float(unsigned char, unsigned char, unsigned char)>& color2grey)
6262
{
6363
using rgbpixel_type = itk::RGBPixel<unsigned char>;
6464
using input_image_type = itk::Image<rgbpixel_type, 3>;
@@ -104,12 +104,12 @@ bool ImageReader::GetImageStack(const std::vector<const char*>& filenames, float
104104
return true;
105105
}
106106

107-
bool ImageReader::GetSlice(const char* filename, float* slice, unsigned slicenr, unsigned width, unsigned height)
107+
bool ImageReader::GetSlice(const std::string& filename, float* slice, unsigned slicenr, unsigned width, unsigned height)
108108
{
109109
return GetVolume(filename, &slice, slicenr, 1, width, height);
110110
}
111111

112-
float* ImageReader::GetSliceInfo(const char* filename, unsigned slicenr, unsigned& width, unsigned& height)
112+
float* ImageReader::GetSliceInfo(const std::string& filename, unsigned slicenr, unsigned& width, unsigned& height)
113113
{
114114
unsigned nrslices;
115115
float spacing[3];
@@ -126,12 +126,12 @@ float* ImageReader::GetSliceInfo(const char* filename, unsigned slicenr, unsigne
126126
return nullptr;
127127
}
128128

129-
bool ImageReader::GetVolume(const char* filename, float** slices, unsigned nrslices, unsigned width, unsigned height)
129+
bool ImageReader::GetVolume(const std::string& filename, float** slices, unsigned nrslices, unsigned width, unsigned height)
130130
{
131131
return GetVolume(filename, slices, 0, nrslices, width, height);
132132
}
133133

134-
bool ImageReader::GetVolume(const char* filename, float** slices, unsigned startslice, unsigned nrslices, unsigned width, unsigned height)
134+
bool ImageReader::GetVolume(const std::string& filename, float** slices, unsigned startslice, unsigned nrslices, unsigned width, unsigned height)
135135
{
136136
// ITK does not know how to load VTI
137137
boost::filesystem::path path(filename);
@@ -180,9 +180,9 @@ bool ImageReader::GetVolume(const char* filename, float** slices, unsigned start
180180
return true;
181181
}
182182

183-
bool ImageReader::GetInfo(const char* filename, unsigned& width, unsigned& height, unsigned& nrslices, float spacing[3], Transform& transform)
183+
bool ImageReader::GetInfo(const std::string& filename, unsigned& width, unsigned& height, unsigned& nrslices, float spacing[3], Transform& transform)
184184
{
185-
auto image_io = itk::ImageIOFactory::CreateImageIO(filename, itk::ImageIOFactory::ReadMode);
185+
auto image_io = itk::ImageIOFactory::CreateImageIO(filename.c_str(), itk::ImageIOFactory::ReadMode);
186186
if (image_io)
187187
{
188188
image_io->SetFileName(filename);

Core/ImageReader.h

+7-7
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,23 @@ class Transform;
2424
class ISEG_CORE_API ImageReader
2525
{
2626
public:
27-
static bool GetInfo2D(const char* filename, unsigned& width, unsigned& height);
27+
static bool GetInfo2D(const std::string& filename, unsigned& width, unsigned& height);
2828

2929
/// loads 2D image into pre-allocated memory
30-
static bool GetImageStack(const std::vector<const char*>& filenames, float** img_stack, unsigned width, unsigned height, const std::function<float(unsigned char, unsigned char, unsigned char)>& color2grey);
30+
static bool GetImageStack(const std::vector<std::string>& filenames, float** img_stack, unsigned width, unsigned height, const std::function<float(unsigned char, unsigned char, unsigned char)>& color2grey);
3131

3232
/// get image size, spacing and transform
33-
static bool GetInfo(const char* filename, unsigned& width, unsigned& height, unsigned& nrslices, float spacing[3], Transform& transform);
33+
static bool GetInfo(const std::string& filename, unsigned& width, unsigned& height, unsigned& nrslices, float spacing[3], Transform& transform);
3434

3535
/// loads image into pre-allocated memory
36-
static bool GetSlice(const char* filename, float* slice, unsigned slicenr, unsigned width, unsigned height);
36+
static bool GetSlice(const std::string& filename, float* slice, unsigned slicenr, unsigned width, unsigned height);
3737

3838
/// \note allocates memory for slice using new
39-
static float* GetSliceInfo(const char* filename, unsigned slicenr, unsigned& width, unsigned& height);
39+
static float* GetSliceInfo(const std::string& filename, unsigned slicenr, unsigned& width, unsigned& height);
4040

4141
/// loads image into pre-allocated memory
42-
static bool GetVolume(const char* filename, float** slices, unsigned nrslices, unsigned width, unsigned height);
43-
static bool GetVolume(const char* filename, float** slices, unsigned startslice, unsigned nrslices, unsigned width, unsigned height);
42+
static bool GetVolume(const std::string& filename, float** slices, unsigned nrslices, unsigned width, unsigned height);
43+
static bool GetVolume(const std::string& filename, float** slices, unsigned startslice, unsigned nrslices, unsigned width, unsigned height);
4444
};
4545

4646
} // namespace iseg

Core/VTIreader.cpp

+20-20
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@
2929

3030
namespace iseg {
3131

32-
bool VTIreader::GetSlice(const char* filename, float* slice, unsigned slicenr, unsigned width, unsigned height)
32+
bool VTIreader::GetSlice(const std::string& filename, float* slice, unsigned slicenr, unsigned width, unsigned height)
3333
{
3434
vtkXMLImageDataReader* reader = vtkXMLImageDataReader::New();
35-
if (reader->CanReadFile(filename) == 0)
35+
if (reader->CanReadFile(filename.c_str()) == 0)
3636
{
3737
return false;
3838
}
39-
reader->SetFileName(filename);
39+
reader->SetFileName(filename.c_str());
4040
reader->Update();
4141

4242
int ext[6] = {0, 0, 0, 0, 0, 0};
@@ -104,14 +104,14 @@ bool VTIreader::GetSlice(const char* filename, float* slice, unsigned slicenr, u
104104
return true;
105105
}
106106

107-
float* VTIreader::GetSliceInfo(const char* filename, unsigned slicenr, unsigned& width, unsigned& height)
107+
float* VTIreader::GetSliceInfo(const std::string& filename, unsigned slicenr, unsigned& width, unsigned& height)
108108
{
109109
vtkXMLImageDataReader* reader = vtkXMLImageDataReader::New();
110-
if (reader->CanReadFile(filename) == 0)
110+
if (reader->CanReadFile(filename.c_str()) == 0)
111111
{
112112
return nullptr;
113113
}
114-
reader->SetFileName(filename);
114+
reader->SetFileName(filename.c_str());
115115
reader->Update();
116116

117117
int ext[6] = {0, 0, 0, 0, 0, 0};
@@ -179,16 +179,16 @@ float* VTIreader::GetSliceInfo(const char* filename, unsigned slicenr, unsigned&
179179
return slice;
180180
}
181181

182-
bool VTIreader::GetVolume(const char* filename, float** slices, unsigned nrslices, unsigned width, unsigned height, const std::string& arrayName)
182+
bool VTIreader::GetVolume(const std::string& filename, float** slices, unsigned nrslices, unsigned width, unsigned height, const std::string& arrayName)
183183
{
184184
vtkXMLImageDataReader* reader = vtkXMLImageDataReader::New();
185-
if (reader->CanReadFile(filename) == 0)
185+
if (reader->CanReadFile(filename.c_str()) == 0)
186186
{
187187
std::cerr << "VTIreader::getVolume() : can not read file " << filename
188188
<< endl;
189189
return false;
190190
}
191-
reader->SetFileName(filename);
191+
reader->SetFileName(filename.c_str());
192192
reader->Update();
193193

194194
int ext[6] = {0, 0, 0, 0, 0, 0};
@@ -268,14 +268,14 @@ bool VTIreader::GetVolume(const char* filename, float** slices, unsigned nrslice
268268
return true;
269269
}
270270

271-
bool VTIreader::GetVolumeAll(const char* filename, float** slicesbmp, float** sliceswork, tissues_size_t** slicestissue, unsigned nrslices, unsigned width, unsigned height)
271+
bool VTIreader::GetVolumeAll(const std::string& filename, float** slicesbmp, float** sliceswork, tissues_size_t** slicestissue, unsigned nrslices, unsigned width, unsigned height)
272272
{
273273
vtkXMLImageDataReader* reader = vtkXMLImageDataReader::New();
274-
if (reader->CanReadFile(filename) == 0)
274+
if (reader->CanReadFile(filename.c_str()) == 0)
275275
{
276276
return false;
277277
}
278-
reader->SetFileName(filename);
278+
reader->SetFileName(filename.c_str());
279279
reader->Update();
280280

281281
int ext[6] = {0, 0, 0, 0, 0, 0};
@@ -394,14 +394,14 @@ bool VTIreader::GetVolumeAll(const char* filename, float** slicesbmp, float** sl
394394
return true;
395395
}
396396

397-
bool VTIreader::GetVolume(const char* filename, float** slices, unsigned startslice, unsigned nrslices, unsigned width, unsigned height, const std::string& arrayName)
397+
bool VTIreader::GetVolume(const std::string& filename, float** slices, unsigned startslice, unsigned nrslices, unsigned width, unsigned height, const std::string& arrayName)
398398
{
399399
vtkXMLImageDataReader* reader = vtkXMLImageDataReader::New();
400-
if (reader->CanReadFile(filename) == 0)
400+
if (reader->CanReadFile(filename.c_str()) == 0)
401401
{
402402
return false;
403403
}
404-
reader->SetFileName(filename);
404+
reader->SetFileName(filename.c_str());
405405
reader->Update();
406406

407407
int ext[6] = {0, 0, 0, 0, 0, 0};
@@ -480,14 +480,14 @@ bool VTIreader::GetVolume(const char* filename, float** slices, unsigned startsl
480480
return true;
481481
}
482482

483-
bool VTIreader::GetInfo(const char* filename, unsigned& width, unsigned& height, unsigned& nrslices, float* pixelsize, float* offset, std::vector<std::string>& arrayNames)
483+
bool VTIreader::GetInfo(const std::string& filename, unsigned& width, unsigned& height, unsigned& nrslices, float* pixelsize, float* offset, std::vector<std::string>& arrayNames)
484484
{
485485
vtkXMLImageDataReader* reader = vtkXMLImageDataReader::New();
486-
if (reader->CanReadFile(filename) == 0)
486+
if (reader->CanReadFile(filename.c_str()) == 0)
487487
{
488488
return false;
489489
}
490-
reader->SetFileName(filename);
490+
reader->SetFileName(filename.c_str());
491491
reader->UpdateInformation();
492492
int extent[6];
493493
double spacing[3];
@@ -528,7 +528,7 @@ bool VTIreader::GetInfo(const char* filename, unsigned& width, unsigned& height,
528528
return true;
529529
}
530530

531-
bool VTIwriter::WriteVolumeAll(const char* filename, float** slicesbmp, float** sliceswork, tissues_size_t** slicestissue, tissues_size_t nrtissues, unsigned nrslices, unsigned width, unsigned height, float* pixelsize, float* offset, bool binary, bool compress)
531+
bool VTIwriter::WriteVolumeAll(const std::string& filename, float** slicesbmp, float** sliceswork, tissues_size_t** slicestissue, tissues_size_t nrtissues, unsigned nrslices, unsigned width, unsigned height, float* pixelsize, float* offset, bool binary, bool compress)
532532
{
533533
vtkSmartPointer<vtkImageData> input = vtkSmartPointer<vtkImageData>::New();
534534
input->SetExtent(0, (int)width - 1, 0, (int)height - 1, 0, (int)nrslices - 1);
@@ -650,7 +650,7 @@ bool VTIwriter::WriteVolumeAll(const char* filename, float** slicesbmp, float**
650650
writer->SetDataModeToAppended();
651651
if (binary)
652652
writer->EncodeAppendedDataOff();
653-
writer->SetFileName(filename);
653+
writer->SetFileName(filename.c_str());
654654
writer->Write();
655655

656656
return true;

Core/VTIreader.h

+7-7
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,18 @@ namespace iseg {
1919
class VTIreader
2020
{
2121
public:
22-
static bool GetInfo(const char* filename, unsigned& width, unsigned& height, unsigned& nrslices, float* pixelsize, float* offset, std::vector<std::string>& arrayNames);
23-
static bool GetSlice(const char* filename, float* slice, unsigned slicenr, unsigned width, unsigned height);
24-
static float* GetSliceInfo(const char* filename, unsigned slicenr, unsigned& width, unsigned& height);
25-
static bool GetVolume(const char* filename, float** slices, unsigned nrslices, unsigned width, unsigned height, const std::string& arrayName);
26-
static bool GetVolume(const char* filename, float** slices, unsigned startslice, unsigned nrslices, unsigned width, unsigned height, const std::string& arrayName);
27-
static bool GetVolumeAll(const char* filename, float** slicesbmp, float** sliceswork, tissues_size_t** slicestissue, unsigned nrslices, unsigned width, unsigned height);
22+
static bool GetInfo(const std::string& filename, unsigned& width, unsigned& height, unsigned& nrslices, float* pixelsize, float* offset, std::vector<std::string>& arrayNames);
23+
static bool GetSlice(const std::string& filename, float* slice, unsigned slicenr, unsigned width, unsigned height);
24+
static float* GetSliceInfo(const std::string& filename, unsigned slicenr, unsigned& width, unsigned& height);
25+
static bool GetVolume(const std::string& filename, float** slices, unsigned nrslices, unsigned width, unsigned height, const std::string& arrayName);
26+
static bool GetVolume(const std::string& filename, float** slices, unsigned startslice, unsigned nrslices, unsigned width, unsigned height, const std::string& arrayName);
27+
static bool GetVolumeAll(const std::string& filename, float** slicesbmp, float** sliceswork, tissues_size_t** slicestissue, unsigned nrslices, unsigned width, unsigned height);
2828
};
2929

3030
class VTIwriter
3131
{
3232
public:
33-
static bool WriteVolumeAll(const char* filename, float** slicesbmp, float** sliceswork, tissues_size_t** slicestissue, tissues_size_t nrtissues, unsigned nrslices, unsigned width, unsigned height, float* pixelsize, float* offset, bool binary, bool compress);
33+
static bool WriteVolumeAll(const std::string& filename, float** slicesbmp, float** sliceswork, tissues_size_t** slicestissue, tissues_size_t nrtissues, unsigned nrslices, unsigned width, unsigned height, float* pixelsize, float* offset, bool binary, bool compress);
3434
};
3535

3636
} // namespace iseg

Core/testsuite/test_ImageIO.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ class TestColorImageIO
305305

306306
std::vector<float> data(w * h, 0);
307307
std::vector<float*> stack(1, data.data());
308-
std::vector<const char*> files(1, file_path.c_str());
308+
std::vector<std::string> files(1, file_path);
309309
BOOST_REQUIRE(ImageReader::GetImageStack(files, stack.data(), w, h, [](unsigned char, unsigned char g, unsigned char) { return static_cast<float>(g); }));
310310

311311
itk::Index<2> idx = {0, 0};

Data/Property.cpp

+32-9
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,7 @@ namespace iseg {
66

77
void Property::OnModified(eChangeType change)
88
{
9-
Property_ptr me;
10-
try
11-
{
12-
me = shared_from_this();
13-
}
14-
catch (const std::exception& e)
15-
{
16-
ISEG_WARNING_MSG(e.what());
17-
}
9+
auto me = Self();
1810

1911
// signal change
2012
if (me && !m_BlockSignals)
@@ -31,6 +23,19 @@ void Property::OnModified(eChangeType change)
3123
}
3224
}
3325

26+
Property_ptr Property::Self()
27+
{
28+
try
29+
{
30+
return shared_from_this();
31+
}
32+
catch (const std::exception& e)
33+
{
34+
ISEG_WARNING_MSG(e.what());
35+
}
36+
return Property_ptr();
37+
}
38+
3439
void Property::OnChildModified(Property_ptr child, eChangeType change) const
3540
{
3641
// signal change
@@ -140,6 +145,24 @@ std::shared_ptr<PropertyButton> PropertyButton::Create(value_type value, const s
140145
return std::shared_ptr<PropertyButton>(new PropertyButton(value, txt));
141146
}
142147

148+
void PropertyButton::SetCheckable(bool v)
149+
{
150+
if (v != m_Checkable)
151+
{
152+
m_Checkable = v;
153+
OnModified(Property::kStateChanged);
154+
}
155+
}
156+
157+
void PropertyButton::SetChecked(bool v)
158+
{
159+
if (v != m_Checked)
160+
{
161+
m_Checked = v;
162+
OnModified(Property::kStateChanged);
163+
}
164+
}
165+
143166
std::shared_ptr<PropertySlider> PropertySlider::Create(value_type value, value_type min_value, value_type max_value)
144167
{
145168
return std::shared_ptr<PropertySlider>(new PropertySlider(value, min_value, max_value));

0 commit comments

Comments
 (0)