CustusX  2023.01.05-dev+develop.0da12
An IGT application
cxImportDataTypeWidget.h
Go to the documentation of this file.
1 /*=========================================================================
2 This file is part of CustusX, an Image Guided Therapy Application.
3 
4 Copyright (c) SINTEF Department of Medical Technology.
5 All rights reserved.
6 
7 CustusX is released under a BSD 3-Clause license.
8 
9 See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details.
10 =========================================================================*/
11 
12 #ifndef CXIMPORTDATATYPEWIDGET_H
13 #define CXIMPORTDATATYPEWIDGET_H
14 
15 #include "org_custusx_core_filemanager_Export.h"
16 #include <QPushButton>
17 #include "cxBaseWidget.h"
18 #include "cxForwardDeclarations.h"
19 #include "cxLogger.h"
20 #include "cxVisServices.h"
21 #include "cxFileManagerService.h"
22 #include "cxPatientModelService.h"
24 #include "cxDataInterface.h"
25 class QTableWidget;
26 class QStackedWidget;
27 
28 namespace cx
29 {
30 
31 class ImportWidget;
32 
33 class org_custusx_core_filemanager_EXPORT ImportDataTypeWidget : public BaseWidget
34 {
35  Q_OBJECT
36 public:
37  ImportDataTypeWidget(ImportWidget *parent, VisServicesPtr services, std::vector<DataPtr> data, std::vector<DataPtr> &parentCandidates, QString filename);
39 
40  static QSize getQTableWidgetSize(QTableWidget *t);
41  static int findRowIndexContainingButton(QPushButton *button, QTableWidget *tableWidget);
42 
43  //Functions used by SimpleImportDataDialog
44  QTableWidget* getSimpleTableWidget();
45  std::vector<DataPtr> getDatas() {return mData;};
46  void setData(std::vector<DataPtr> datas) {mData = datas;}
47 
48 public slots:
49  void update();
50  void prepareDataForImport();
51 
52 private slots:
53  virtual void showEvent(QShowEvent *event);
54  void pointMetricGroupSpaceChanged(int index);
55  void updateImageType();
56  void tableItemSelected(int currentRow, int currentColumn, int previousRow, int previousColumn);
57  void removeRowFromTableAndDataFromImportList();
58 
59 private:
60  void createDataSpecificGui(int index);
61  void updateTableWithNumberOfSlices(ImagePtr image);
62  void updateTableWithSliceSpacing(ImagePtr image);
63  std::map<QString, QString> getParentCandidateList();
64 
65  void updateSpaceComboBox(QComboBox *box, QString space);
66  void updateParentCandidatesComboBox();
67 
68  void importAllData();
69 
70  void applyParentTransformImport();
71  void applyConversionLPS();
72  void applyConversionToUnsigned();
73 
74  //Use heuristics to guess a parent frame, based on similarities in name.
75  QString getInitialGuessForParentFrame();
76  int similatiryMeasure(QString current, QString candidate);
77  QStringList splitStringIntoSeparateParts(QString current);
78  int countEqualListElements(QStringList first, QStringList second);
79  bool excludeElement(QString element);
80  QString removeParenthesis(QString current);
81 
82  void addPointMetricGroupsToTable();
83 
84  bool isInputFileInNiftiFormat();
85  bool isSegmentation(QString filename);
86 
87  ImportWidget* mImportWidget;
88  VisServicesPtr mServices;
89  std::vector<DataPtr> mData;
90  QString mFilename;
91  std::vector<DataPtr> &mParentCandidates;
92 
93  std::map<QString, QComboBox *> mSpaceCBs;
94  std::map<QString, std::vector<DataPtr> > mPointMetricGroups;
95 
96  QComboBox *mAnatomicalCoordinateSystems;
97  QComboBox *mShouldImportParentTransform;
98  QComboBox *mParentCandidatesCB;
99  QCheckBox *mShouldConvertDataToUnsigned;
100 
101  QTableWidget* mTableWidget;
102  QStringList mTableHeader;
103  int mSelectedIndexInTable;
104 
105  //image specific
106  QStackedWidget *mStackedWidgetImageParameters;
107  StringPropertyDataModalityPtr mModalityAdapter;
108  StringPropertyImageTypePtr mImageTypeAdapter;
109  QWidget* mImageTypeCombo;
110  QWidget* mModalityCombo;
111 
112  int mSeriesNumColumn = 1;
113  int mNumSlicesColoumn = 2;
114  int mFilenameColoumn = 3;
115  int mTypeColoumn = 4;
116  int mSliceSpacingColoumn = 5;
117  int mSpaceColoumn = 6;
118 };
119 
120 }
121 #endif // CXIMPORTDATATYPEWIDGET_H
boost::shared_ptr< class VisServices > VisServicesPtr
Definition: cxMainWindow.h:40
boost::shared_ptr< class StringPropertyImageType > StringPropertyImageTypePtr
boost::shared_ptr< class Image > ImagePtr
Definition: cxDicomWidget.h:27
std::vector< DataPtr > getDatas()
boost::shared_ptr< class StringPropertyDataModality > StringPropertyDataModalityPtr
Interface for QWidget which handles widgets uniformly for the system.
Definition: cxBaseWidget.h:88
void setData(std::vector< DataPtr > datas)
Namespace for all CustusX production code.