Exemple #1
0
    def openDialog(self):
        od = QFileDialog(self, 'Open MaLPi drive data directory')
        od.setAcceptMode(QFileDialog.AcceptOpen)
        od.setFileMode(QFileDialog.Directory)
        od.setOption(QFileDialog.DontUseNativeDialog, True)

        # Try to select multiple files and directories at the same time in QFileDialog
        if False:
            l = od.findChild(QListView, "listView")
            if l is not None:
                l.setSelectionMode(QAbstractItemView.MultiSelection)

            t = od.findChild(QTreeView)
            if t is not None:
                t.setSelectionMode(QAbstractItemView.MultiSelection)

        nMode = od.exec()
        if nMode == QDialog.Accepted:
            _fnames = od.selectedFiles()  # QStringList

            try:
                if 1 == len(_fnames) and os.path.isdir(_fnames[0]):
                    self.loadData(_fnames[0])
                elif 0 != len(_fnames):
                    self.statusBar().showMessage(
                        "Formats other than MaLPi and Tub are not yet supported"
                    )
            except Exception as ex:
                msg = "Error loading data: {}".format(str(ex))
                self.statusBar().showMessage(msg)
                print(msg)
Exemple #2
0
    def open_file_dialog(self):
        options = QFileDialog.Options()
        options |= QFileDialog.DontUseNativeDialog
        options |= QFileDialog.ShowDirsOnly
        dialog = QFileDialog(self)
        dialog.setFileMode(QFileDialog.DirectoryOnly)
        dialog.setOptions(options)
        file_view = dialog.findChild(QListView, 'listView')

        # to make it possible to select multiple directories:
        if file_view:
            file_view.setSelectionMode(QAbstractItemView.ExtendedSelection)
        f_tree_view = dialog.findChild(QTreeView)
        if f_tree_view:
            f_tree_view.setSelectionMode(QAbstractItemView.ExtendedSelection)

        if dialog.exec():
            paths = dialog.selectedFiles()
            for patient_data_directory in paths:
                patient_identifier = os.path.basename(patient_data_directory)
                if patient_identifier not in self.patient_data_sets:
                    dp_file_path = os.path.join(patient_data_directory,
                                                'result_images',
                                                'exported_data',
                                                'diffusion_parameters.mat')
                    if os.path.exists(dp_file_path):
                        data = loadmat(dp_file_path)
                        self.load_data(patient_identifier, data)
                    else:
                        error_dialog = QtWidgets.QErrorMessage()
                        error_dialog.showMessage(
                            f'File path error: {patient_data_directory} does not contain diffusion '
                            f'parameters')
                        error_dialog.exec_()
Exemple #3
0
	def from_folder(self):
		file_dialog = QFileDialog()
		file_dialog.setFileMode(QFileDialog.DirectoryOnly)
		file_dialog.setOption(QFileDialog.DontUseNativeDialog, True)
		file_view = file_dialog.findChild(QListView, 'listView')
		if file_view:
			file_view.setSelectionMode(QAbstractItemView.MultiSelection)
		f_tree_view = file_dialog.findChild(QTreeView)
		if f_tree_view:
			f_tree_view.setSelectionMode(QAbstractItemView.MultiSelection)

		if file_dialog.exec():
			for path in file_dialog.selectedFiles():
				self.add_gallery(path, os.path.split(path)[1])
Exemple #4
0
 def select_folders():
     file_dialog = QFileDialog()
     file_dialog.setFileMode(QFileDialog.DirectoryOnly)
     file_dialog.setOption(QFileDialog.DontUseNativeDialog, True)
     file_view = file_dialog.findChild(QListView, 'listView')
     if file_view:
         file_view.setSelectionMode(QAbstractItemView.MultiSelection)
     f_tree_view = file_dialog.findChild(QTreeView)
     if f_tree_view:
         f_tree_view.setSelectionMode(QAbstractItemView.MultiSelection)
     paths = []
     if file_dialog.exec() == QDialog.Accepted:
         paths = file_dialog.selectedFiles()
     return paths
Exemple #5
0
    def show_ui(self):
        file_dialog = QFileDialog(self, self.caption, self.default_dir)
        file_dialog.setFileMode(QFileDialog.DirectoryOnly)
        file_dialog.setDirectory(self.default_dir)
        file_dialog.setOption(QFileDialog.DontUseNativeDialog, True)
        file_view = file_dialog.findChild(QListView, 'listView')

        # to make it possible to select multiple directories:
        file_view.setSelectionMode(QAbstractItemView.MultiSelection)
        f_tree_view = file_dialog.findChild(QTreeView)
        f_tree_view.setSelectionMode(QAbstractItemView.MultiSelection)

        # execute the modified file dialog and return result
        self.close_later.emit()
        if file_dialog.exec():
            self.file_names = file_dialog.selectedFiles()
Exemple #6
0
 def on_click(self):
     file_dialog = QFileDialog()
     file_dialog.setFileMode(QFileDialog.DirectoryOnly)
     file_dialog.setOption(QFileDialog.DontUseNativeDialog, True)
     file_view = file_dialog.findChild(QListView, 'listView')
     # to make it possible to select multiple directories:
     if file_view:
         file_view.setSelectionMode(QAbstractItemView.MultiSelection)
     f_tree_view = file_dialog.findChild(QTreeView)
     if f_tree_view:
         f_tree_view.setSelectionMode(QAbstractItemView.MultiSelection)
     file_dialog = QFileDialog()
     file_dialog.setFileMode(QFileDialog.DirectoryOnly)
     file_dialog.setOption(QFileDialog.DontUseNativeDialog, True)
     file_view = file_dialog.findChild(QListView, 'listView')
     if file_dialog.exec():
         sourceFolder = file_dialog.selectedFiles()
     return sourceFolder
Exemple #7
0
class Open_files(QWidget):
    def __init__(self):
        super(QWidget, self).__init__()
        self.layout = QHBoxLayout(self)
        self.file_dialog = QFileDialog()
        self.file_dialog.setWindowFlags(Qt.Widget)
        self.file_dialog.setModal(False)
        self.file_dialog.setOption(QFileDialog.DontUseNativeDialog)

        # Remove open and cancel button from widget
        self.buttonBox = self.file_dialog.findChild(QDialogButtonBox,
                                                    "buttonBox")
        self.buttonBox.clear()

        # Only open following file types
        # self.file_dialog.setNameFilter("Images (*.czi *.nd2 *.tiff *.tif *.jpg *.png)")
        self.file_dialog.setNameFilter(
            "Images (*.czi *.ome.tiff *ome.tif *.tiff *.tif)")
        self.layout.addWidget(self.file_dialog)
        self.file_dialog.currentChanged.connect(self.open_path)

    def open_path(self, path):

        if os.path.isfile(path):

            # remove exiting layers from napari
            viewer.layers.select_all()
            viewer.layers.remove_selected()

            # get the metadata
            md, addmd = imf.get_metadata(path)

            # temporary workaround for slider / floating point issue
            # https://forum.image.sc/t/problem-with-dimension-slider-when-adding-array-as-new-layer-for-ome-tiff/39092/2?u=sebi06

            md['XScale'] = np.round(md['XScale'], 3)
            md['YScale'] = np.round(md['YScale'], 3)
            md['ZScale'] = np.round(md['ZScale'], 3)

            # get AICSImageIO object using the python wrapper for libCZI (if file is CZI)
            img = AICSImage(path)
            stack = img.get_image_data()

            if md['ImageType'] == 'czi':
                use_pylibczi = True
            if md['ImageType'] == 'ometiff':
                use_pylibczi = False

            add_napari(stack,
                       md,
                       blending='additive',
                       gamma=0.85,
                       verbose=True,
                       use_pylibczi=use_pylibczi,
                       rename_sliders=True)
Exemple #8
0
def requestOpenFileOrDir ( parent=None, caption='', directory='',
                        filter='All Files  ( * )', initialFilter='', options=None ):
	def updateText ():
		# update the contents of the line edit widget with the selected files
		selected = []
		for index in view.selectionModel ().selectedRows ():
			selected.append ( '"{}"'.format ( index.data () ) )
		lineEdit.setText ( ' '.join ( selected ) )

	dialog = QFileDialog ( parent, caption = caption )
	dialog.setFileMode ( QFileDialog.ExistingFiles )
	if options:
		dialog.setOptions ( options )
	dialog.setOption ( QFileDialog.DontUseNativeDialog, True )
	if directory:
		dialog.setDirectory ( directory )
	if filter:
		dialog.setNameFilter ( filter )
		if initialFilter:
			dialog.selectNameFilter ( initialFilter )

	# by default, if a directory is opened in file listing mode,
	# QFileDialog.accept() shows the contents of that directory, but we
	# need to be able to "open" directories as we can do with files, so we
	# just override accept() with the default QDialog implementation which
	# will just return exec_()
	dialog.accept = lambda: QtWidgets.QDialog.accept ( dialog )

	# there are many item views in a non-native dialog, but the ones displaying
	# the actual contents are created inside a QStackedWidget; they are a
	# QTreeView and a QListView, and the tree is only used when the
	# viewMode is set to QFileDialog.Details, which is not this case
	stackedWidget = dialog.findChild ( QtWidgets.QStackedWidget )
	view = stackedWidget.findChild ( QtWidgets.QListView )
	view.selectionModel ().selectionChanged.connect ( updateText )

	lineEdit = dialog.findChild ( QtWidgets.QLineEdit )
	# clear the line edit contents whenever the current directory changes
	dialog.directoryEntered.connect ( lambda: lineEdit.setText ( '' ) )

	dialog.exec_ ()
	return dialog.selectedFiles ()
Exemple #9
0
    def addFolderTriggered(self):
        no_native = not self.app.prefs.use_native_dialogs
        title = tr("Select a folder to add to the scanning list")
        file_dialog = QFileDialog(self, title, self.lastAddedFolder)
        file_dialog.setFileMode(QFileDialog.DirectoryOnly)
        file_dialog.setOption(QFileDialog.DontUseNativeDialog, no_native)
        if no_native:
            file_view = file_dialog.findChild(QListView, "listView")
            if file_view:
                file_view.setSelectionMode(QAbstractItemView.MultiSelection)
            f_tree_view = file_dialog.findChild(QTreeView)
            if f_tree_view:
                f_tree_view.setSelectionMode(QAbstractItemView.MultiSelection)
        if not file_dialog.exec():
            return

        paths = file_dialog.selectedFiles()
        self.lastAddedFolder = paths[-1]
        [self.app.model.add_directory(path) for path in paths]
        [self.recentFolders.insertItem(path) for path in paths]
Exemple #10
0
    def on_browseFolders_clicked(self, widget):
        index = self.usbDevicesChooser.currentIndex()
        file_dialog = QFileDialog()
        file_dialog.setFileMode(QFileDialog.DirectoryOnly)
        file_dialog.setOption(QFileDialog.DontUseNativeDialog, True)
        file_view = file_dialog.findChild(QListView, 'listView')

        if file_view:
            file_view.setSelectionMode(QAbstractItemView.MultiSelection)

        ftree_view = file_dialog.findChild(QTreeView)

        if ftree_view:
            ftree_view.setSelectionMode(QAbstractItemView.MultiSelection)

        file_dialog.setDirectory(self.usbDevices[index].getPath())

        if file_dialog.exec():
            paths = file_dialog.selectedFiles()

        self.pathToFolders.setText(";".join(paths))
Exemple #11
0
class Open_files(QWidget):
    def __init__(self):
        super(QWidget, self).__init__()
        self.layout = QHBoxLayout(self)
        self.file_dialog = QFileDialog()
        self.file_dialog.setWindowFlags(Qt.Widget)
        self.file_dialog.setModal(False)
        self.file_dialog.setOption(QFileDialog.DontUseNativeDialog)

        # Remove open and cancel button from widget
        self.buttonBox = self.file_dialog.findChild(QDialogButtonBox,
                                                    "buttonBox")
        self.buttonBox.clear()

        # Only open following file types
        self.file_dialog.setNameFilter(
            "Images (*.czi *.ome.tiff *ome.tif *.tiff *.tif)")
        self.layout.addWidget(self.file_dialog)
        self.file_dialog.currentChanged.connect(self.open_path)

    def open_path(self, path):

        if os.path.isfile(path):

            # remove exitings layers from napari
            viewer.layers.select_all()
            viewer.layers.remove_selected()

            # get the metadata
            md, addmd = imf.get_metadata(path)

            # add the metadata and adapt the table display
            mdbrowser.update_metadata(md)
            mdbrowser.update_style()

            use_dask = checkbox.cbox.isChecked()
            print('Use Dask : ', use_dask)

            # get AICSImageIO object
            img = AICSImage(path)
            if use_dask:
                stack = img.dask_data
            if not use_dask:
                stack = img.get_image_data()

            # add the image stack to the napari viewer
            show_image_napari(stack,
                              md,
                              blending='additive',
                              gamma=0.85,
                              rename_sliders=True)
Exemple #12
0
    def ab_clicked(self):
        file_dialog = QFileDialog()
        file_dialog.setFileMode(QFileDialog.DirectoryOnly)
        file_dialog.setDirectory(self.mainwindow.options.get_default_last_folder_opened())
        file_dialog.setOption(QFileDialog.DontUseNativeDialog, True)
        file_view = file_dialog.findChild(QListView, 'listView')

        # to make it possible to select multiple directories:
        if file_view:
            file_view.setSelectionMode(QAbstractItemView.MultiSelection)
        f_tree_view = file_dialog.findChild(QTreeView)
        if f_tree_view:
            f_tree_view.setSelectionMode(QAbstractItemView.MultiSelection)

        if file_dialog.exec():
            folders = file_dialog.selectedFiles()

            if len(folders) != 0:
                for folder in folders:
                    parent_folder = os.path.dirname(r"{}".format(folder))
                    self.mainwindow.options.save_user_defaults(music_folder=folder, last_folder_opened=parent_folder)
                    self.folder_list.addItem(folder)
                    self.folder_list.sortItems()
Exemple #13
0
    def btnChooseDirs_clicked(self):
        # https://stackoverflow.com/questions/38252419/how-to-get-qfiledialog-to-select-and-return-multiple-folders
        # just copied :)
        file_dialog = QFileDialog()
        file_dialog.setFileMode(QFileDialog.DirectoryOnly)
        file_dialog.setOption(QFileDialog.DontUseNativeDialog, True)
        file_dialog.setDirectory(self.sett['/Private settings/Load kinetics last path'])
        file_view = file_dialog.findChild(QListView, 'listView')

        # to make it possible to select multiple directories:
        if file_view:
            file_view.setSelectionMode(QAbstractItemView.MultiSelection)
        f_tree_view = file_dialog.findChild(QTreeView)
        if f_tree_view:
            f_tree_view.setSelectionMode(QAbstractItemView.MultiSelection)

        if file_dialog.exec():
            for path in file_dialog.selectedFiles():
                head, tail = os.path.split(path)
                head2, tail2 = os.path.split(head)
                name = os.path.join(tail2, tail)
                self.sett['/Private settings/Load kinetics last path'] = head
                if name not in self.lwFolders.item_names:
                    self.lwFolders.addItem(name, path)
class FileBrowser(QWidget):

    def __init__(self, defaultfolder=r'c:\Zen_Output'):
        super(QWidget, self).__init__()
        self.layout = QHBoxLayout(self)
        self.file_dialog = QFileDialog()
        self.file_dialog.setWindowFlags(Qt.Widget)
        self.file_dialog.setModal(False)
        self.file_dialog.setOption(QFileDialog.DontUseNativeDialog)
        self.file_dialog.setDirectory(defaultfolder)

        # remove open and cancel button from widget
        self.buttonBox = self.file_dialog.findChild(QDialogButtonBox, "buttonBox")
        self.buttonBox.clear()

        # only show the following file types
        self.file_dialog.setNameFilter("Images (*.czi *.ome.tiff *ome.tif *.tiff *.tif)")
        self.layout.addWidget(self.file_dialog)
        self.file_dialog.currentChanged.connect(open_image_stack)
class Open_files(QWidget):
    def __init__(self):
        super(QWidget, self).__init__()
        self.layout = QHBoxLayout(self)
        self.file_dialog = QFileDialog()
        self.file_dialog.setWindowFlags(Qt.Widget)
        self.file_dialog.setModal(False)
        self.file_dialog.setOption(QFileDialog.DontUseNativeDialog)

        # Remove open and cancel button from widget
        self.buttonBox = self.file_dialog.findChild(QDialogButtonBox,
                                                    "buttonBox")
        self.buttonBox.clear()

        # Only open following file types
        # self.file_dialog.setNameFilter("Images (*.czi *.nd2 *.tiff *.tif *.jpg *.png)")
        self.file_dialog.setNameFilter(
            "Images (*.czi *.ome.tiff *ome.tif *.tiff *.tif)")
        self.layout.addWidget(self.file_dialog)
        self.file_dialog.currentChanged.connect(self.open_path)

    def open_path(self, path):

        if os.path.isfile(path):

            # remove exiting layers from napari
            viewer.layers.select_all()
            viewer.layers.remove_selected()

            # get the metadata
            md, addmd = imf.get_metadata(path)

            # get AICSImageIO object
            img = AICSImage(path)
            stack = img.get_image_data()

            add_napari(stack,
                       md,
                       blending='additive',
                       gamma=0.85,
                       rename_sliders=True)
Exemple #16
0
class Open_files(QWidget):
    def __init__(self):
        super(QWidget, self).__init__()
        self.layout = QHBoxLayout(self)
        self.file_dialog = QFileDialog()
        self.file_dialog.setWindowFlags(Qt.Widget)
        self.file_dialog.setModal(False)
        self.file_dialog.setOption(QFileDialog.DontUseNativeDialog)

        # Remove open and cancel button from widget
        self.buttonBox = self.file_dialog.findChild(QDialogButtonBox,
                                                    "buttonBox")
        self.buttonBox.clear()

        # Only open following file types
        #self.file_dialog.setNameFilter("Images (*.czi *.nd2 *.tiff *.tif *.jpg *.png)")
        self.file_dialog.setNameFilter(
            "Images (*.czi *.ome.tiff *ome.tif *.tiff *.tif *.jpg *.png)")
        self.layout.addWidget(self.file_dialog)
        self.file_dialog.currentChanged.connect(self.open_path)

    def open_path(self, path):
        if os.path.isfile(path):
            viewer.layers.select_all()
            viewer.layers.remove_selected()
            if path.endswith((".tiff", ".tif", ".czi")):
                # Uses aicsimageio to open these files
                # (image.io but the channel in last dimension which doesn't)
                # work with napari
                image = imread(path)
            if path.endswith((".jpg", ".png")):
                image = io.imread(path)
            if path.endswith((".ome.tiff", "ome.tif")):
                # a little slow but dask_image imread doesn't work well
                javabridge.start_vm(class_path=bioformats.JARS)
                #image = load_bioformats(path)
                image = imread(path)
            viewer.add_image(image, name="image_1")