Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkFileChooser.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #include "QmitkFileChooser.h"
14 
15 #include <QApplication>
16 #include <QFileDialog>
17 #include <QHBoxLayout>
18 #include <QLineEdit>
19 #include <QPushButton>
20 #include <QVBoxLayout>
21 
22 QmitkFileChooser::QmitkFileChooser(QWidget *parent, Qt::WindowFlags f)
23  : QWidget(parent, f),
24  m_SelectDir(false),
25  m_FileMustExist(true),
26  m_SelectFile(new QPushButton("Select File")),
27  m_File(new QLineEdit)
28 {
29  m_File->setReadOnly(true);
30  this->SetHorizotalLayout(false);
31 
32  connect(m_SelectFile, SIGNAL(clicked(bool)), this, SLOT(OnSelectFileClicked(bool)));
33  connect(m_File, SIGNAL(editingFinished()), this, SLOT(OnFileEditingFinished()));
34 }
35 
36 void QmitkFileChooser::SetHorizotalLayout(bool horizontalLayout)
37 {
38  QBoxLayout *layout = nullptr;
39  if (horizontalLayout)
40  layout = new QHBoxLayout;
41  else
42  layout = new QVBoxLayout;
43 
44  layout->setContentsMargins(0, 0, 0, 0);
45  layout->addWidget(m_File);
46  layout->addWidget(m_SelectFile);
47 
48  this->setLayout(layout);
49 }
50 
51 void QmitkFileChooser::SetSelectDir(bool selectDir)
52 {
53  m_SelectDir = selectDir;
54 }
55 
56 void QmitkFileChooser::SetFileMustExist(bool fileMustExist)
57 {
58  m_FileMustExist = fileMustExist;
59 }
60 
61 void QmitkFileChooser::SetReadOnly(bool ReadOnly)
62 {
63  m_File->setReadOnly(ReadOnly);
64 }
65 
66 void QmitkFileChooser::SetFile(const std::string &file)
67 {
68  QFileInfo info(QString::fromStdString(file));
69  if (info.exists() || m_FileMustExist == false)
70  {
71  m_File->setText(QString::fromStdString(file));
72  emit NewFileSelected(file);
73  }
74 }
75 
76 void QmitkFileChooser::SetFilePattern(const std::string &filepattern)
77 {
78  m_FilePattern = QString::fromStdString(filepattern);
79 }
80 
82 {
83  QFileInfo info(m_File->text());
84  return info.exists();
85 }
86 
87 std::string QmitkFileChooser::GetFile() const
88 {
89  return m_File->text().toStdString();
90 }
91 
93 {
94  QString filename;
95  if (m_SelectDir)
96  filename = QFileDialog::getExistingDirectory(QApplication::activeWindow(), "Open directory", m_File->text());
97  else
98  {
99  if (m_FileMustExist)
100  filename = QFileDialog::getOpenFileName(QApplication::activeWindow(), "Open file", m_File->text(), m_FilePattern);
101  else
102  filename = QFileDialog::getSaveFileName(QApplication::activeWindow(), "Open file", m_File->text(), m_FilePattern);
103  }
104 
105  if (!filename.isEmpty())
106  m_File->setText(filename);
107 
108  emit NewFileSelected(filename.toStdString());
109 }
110 
112 {
113  emit NewFileSelected(m_File->text().toStdString());
114 }
QPushButton * m_SelectFile
bool IsValidFile() const
virtual void OnSelectFileClicked(bool)
void NewFileSelected(const std::string &)
virtual void OnFileEditingFinished()
static void info(const char *fmt,...)
Definition: svm.cpp:86
void SetFilePattern(const std::string &filepattern)
void SetReadOnly(bool ReadOnly)
QmitkFileChooser(QWidget *parent=nullptr, Qt::WindowFlags f=nullptr)
void SetSelectDir(bool selectDir)
void SetFile(const std::string &file)
virtual std::string GetFile() const
void SetFileMustExist(bool fileMustExist)
void SetHorizotalLayout(bool horizontalLayout)