def testClickOnShortcut(self): dialog = self.createDialog() dialog.show() self.qWaitForWindowExposed(dialog) sidebar = testutils.findChildren(dialog, qt.QListView, name="sidebar")[0] url = testutils.findChildren(dialog, qt.QLineEdit, name="url")[0] browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0] dialog.setDirectory(_tmpDirectory) self.qWaitForPendingActions(dialog) self.assertSamePath(url.text(), _tmpDirectory) urls = sidebar.urls() if len(urls) == 0: self.skipTest("No sidebar path") path = urls[0].path() if path != "" and not os.path.exists(path): self.skipTest("Sidebar path do not exists") index = sidebar.model().index(0, 0) # rect = sidebar.visualRect(index) # self.mouseClick(sidebar, qt.Qt.LeftButton, pos=rect.center()) # Using mouse click is not working, let's use the selection API sidebar.selectionModel().select(index, qt.QItemSelectionModel.ClearAndSelect) self.qWaitForPendingActions(dialog) index = browser.rootIndex() if not index.isValid(): path = "" else: path = index.model().filePath(index) self.assertNotSamePath(_tmpDirectory, path) self.assertNotSamePath(url.text(), _tmpDirectory)
def testClickOnBackToDirectoryTool(self): dialog = self.createDialog() dialog.show() self.qWaitForWindowExposed(dialog) url = testutils.findChildren(dialog, qt.QLineEdit, name="url")[0] action = testutils.findChildren(dialog, qt.QAction, name="toDirectoryAction")[0] button = testutils.getQToolButtonFromAction(action) filename = _tmpDirectory + "/data.h5" # init state path = silx.io.url.DataUrl(file_path=filename, data_path="/group/image").path() dialog.selectUrl(path) self.qWaitForPendingActions(dialog) path = silx.io.url.DataUrl(scheme="silx", file_path=filename, data_path="/group/image").path() self.assertSamePath(url.text(), path) self.assertTrue(button.isEnabled()) # test self.mouseClick(button, qt.Qt.LeftButton) self.qWaitForPendingActions(dialog) self.assertSamePath(url.text(), _tmpDirectory) self.assertFalse(button.isEnabled()) # FIXME: There is an unreleased qt.QWidget without nameObject # No idea where it come from. self.allowedLeakingWidgets = 1
def testSelectRoot_Activate(self): if fabio is None: self.skipTest("fabio is missing") dialog = self.createDialog() browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0] dialog.show() self.qWaitForWindowExposed(dialog) self.assertTrue(dialog.isVisible()) filename = _tmpDirectory + "/data.h5" dialog.selectFile(os.path.dirname(filename)) self.qWaitForPendingActions(dialog) # select, then double click on the file index = browser.rootIndex().model().index(filename) browser.selectIndex(index) browser.activated.emit(index) self.qWaitForPendingActions(dialog) button = testutils.findChildren(dialog, qt.QPushButton, name="open")[0] self.assertTrue(button.isEnabled()) self.mouseClick(button, qt.Qt.LeftButton) url = silx.io.url.DataUrl(dialog.selectedUrl()) self.assertTrue(url.data_path() is not None) self.assertFalse(dialog.isVisible()) self.assertEqual(dialog.result(), qt.QDialog.Accepted)
def testSelectNXdataAccepted_Activate(self): dialog = self.createDialog() browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0] dialog.show() self.qWaitForWindowExposed(dialog) self.assertTrue(dialog.isVisible()) filename = _tmpDirectory + "/data.h5" dialog.selectFile(os.path.dirname(filename)) self.qWaitForPendingActions(dialog) # select, then double click on the file index = browser.rootIndex().model().index(filename) browser.selectIndex(index) browser.activated.emit(index) self.qWaitForPendingActions(dialog) # select, then double click on the file index = browser.rootIndex().model().indexFromH5Object(dialog._AbstractDataFileDialog__h5["/nxdata"]) browser.selectIndex(index) browser.activated.emit(index) self.qWaitForPendingActions(dialog) button = testutils.findChildren(dialog, qt.QPushButton, name="open")[0] self.assertTrue(button.isEnabled()) self.mouseClick(button, qt.Qt.LeftButton) url = silx.io.url.DataUrl(dialog.selectedUrl()) self.assertEqual(url.data_path(), "/nxdata") self.assertFalse(dialog.isVisible()) self.assertEqual(dialog.result(), qt.QDialog.Accepted)
def testSelectGroupRefused_Activate(self): dialog = self.createDialog() browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0] dialog.show() self.qWaitForWindowExposed(dialog) self.assertTrue(dialog.isVisible()) filename = _tmpDirectory + "/data.h5" dialog.selectFile(os.path.dirname(filename)) self.qWaitForPendingActions(dialog) # select, then double click on the file index = browser.rootIndex().model().index(filename) browser.selectIndex(index) browser.activated.emit(index) self.qWaitForPendingActions(dialog) # select, then double click on the file index = browser.rootIndex().model().indexFromH5Object(dialog._AbstractDataFileDialog__h5["/group"]) browser.selectIndex(index) browser.activated.emit(index) self.qWaitForPendingActions(dialog) button = testutils.findChildren(dialog, qt.QPushButton, name="open")[0] self.assertFalse(button.isEnabled()) self.assertRaises(Exception, dialog.selectedData)
def testClickOnBackToRootTool(self): if h5py is None: self.skipTest("h5py is missing") dialog = self.createDialog() dialog.show() self.qWaitForWindowExposed(dialog) url = testutils.findChildren(dialog, qt.QLineEdit, name="url")[0] action = testutils.findChildren(dialog, qt.QAction, name="toRootFileAction")[0] button = testutils.getQToolButtonFromAction(action) filename = _tmpDirectory + "/data.h5" # init state path = silx.io.url.DataUrl(scheme="silx", file_path=filename, data_path="/group/image").path() dialog.selectUrl(path) self.qWaitForPendingActions(dialog) self.assertSamePath(url.text(), path) self.assertTrue(button.isEnabled()) # test self.mouseClick(button, qt.Qt.LeftButton) self.qWaitForPendingActions(dialog) path = silx.io.url.DataUrl(scheme="silx", file_path=filename, data_path="/").path() self.assertSamePath(url.text(), path)
def testFilterExtensions(self): if h5py is None: self.skipTest("h5py is missing") if fabio is None: self.skipTest("fabio is missing") dialog = self.createDialog() browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0] filters = testutils.findChildren(dialog, qt.QWidget, name="fileTypeCombo")[0] dialog.show() self.qWaitForWindowExposed(dialog) dialog.selectUrl(_tmpDirectory) self.qWaitForPendingActions(dialog) self.assertEqual(self._countSelectableItems(browser.model(), browser.rootIndex()), 6) codecName = fabio.edfimage.EdfImage.codec_name() index = filters.indexFromCodec(codecName) filters.setCurrentIndex(index) filters.activated[int].emit(index) self.qWait(50) self.assertEqual(self._countSelectableItems(browser.model(), browser.rootIndex()), 4) codecName = fabio.fit2dmaskimage.Fit2dMaskImage.codec_name() index = filters.indexFromCodec(codecName) filters.setCurrentIndex(index) filters.activated[int].emit(index) self.qWait(50) self.assertEqual(self._countSelectableItems(browser.model(), browser.rootIndex()), 2)
def testClickOnBackToParentTool(self): dialog = self.createDialog() dialog.show() self.qWaitForWindowExposed(dialog) url = testutils.findChildren(dialog, qt.QLineEdit, name="url")[0] action = testutils.findChildren(dialog, qt.QAction, name="toParentAction")[0] toParentButton = testutils.getQToolButtonFromAction(action) filename = _tmpDirectory + "/data/data.h5" # init state path = silx.io.url.DataUrl(file_path=filename, data_path="/group/image").path() dialog.selectUrl(path) self.qWaitForPendingActions(dialog) path = silx.io.url.DataUrl(scheme="silx", file_path=filename, data_path="/group/image").path() self.assertSamePath(url.text(), path) # test self.mouseClick(toParentButton, qt.Qt.LeftButton) self.qWaitForPendingActions(dialog) path = silx.io.url.DataUrl(scheme="silx", file_path=filename, data_path="/").path() self.assertSamePath(url.text(), path) self.mouseClick(toParentButton, qt.Qt.LeftButton) self.qWaitForPendingActions(dialog) self.assertSamePath(url.text(), _tmpDirectory + "/data") self.mouseClick(toParentButton, qt.Qt.LeftButton) self.qWaitForPendingActions(dialog) self.assertSamePath(url.text(), _tmpDirectory)
def testFilterExtensions(self): dialog = self.createDialog() browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0] filters = testutils.findChildren(dialog, qt.QWidget, name="fileTypeCombo")[0] dialog.show() self.qWaitForWindowExposed(dialog) dialog.selectUrl(_tmpDirectory) self.qWaitForPendingActions(dialog) self.assertEqual( self._countSelectableItems(browser.model(), browser.rootIndex()), 6) codecName = fabio.edfimage.EdfImage.codec_name() index = filters.indexFromCodec(codecName) filters.setCurrentIndex(index) filters.activated[int].emit(index) self.qWait(50) self.assertEqual( self._countSelectableItems(browser.model(), browser.rootIndex()), 4) codecName = fabio.fit2dmaskimage.Fit2dMaskImage.codec_name() index = filters.indexFromCodec(codecName) filters.setCurrentIndex(index) filters.activated[int].emit(index) self.qWait(50) self.assertEqual( self._countSelectableItems(browser.model(), browser.rootIndex()), 2)
def testClickOnDetailView(self): dialog = self.createDialog() dialog.show() self.qWaitForWindowExposed(dialog) action = testutils.findChildren(dialog, qt.QAction, name="detailModeAction")[0] detailModeButton = testutils.getQToolButtonFromAction(action) self.mouseClick(detailModeButton, qt.Qt.LeftButton) self.assertEqual(dialog.viewMode(), qt.QFileDialog.Detail) action = testutils.findChildren(dialog, qt.QAction, name="listModeAction")[0] listModeButton = testutils.getQToolButtonFromAction(action) self.mouseClick(listModeButton, qt.Qt.LeftButton) self.assertEqual(dialog.viewMode(), qt.QFileDialog.List)
def testClickOnHistoryTools(self): if h5py is None: self.skipTest("h5py is missing") dialog = self.createDialog() dialog.show() self.qWaitForWindowExposed(dialog) url = testutils.findChildren(dialog, qt.QLineEdit, name="url")[0] forwardAction = testutils.findChildren(dialog, qt.QAction, name="forwardAction")[0] backwardAction = testutils.findChildren(dialog, qt.QAction, name="backwardAction")[0] filename = _tmpDirectory + "/data.h5" dialog.setDirectory(_tmpDirectory) self.qWaitForPendingActions(dialog) # No way to use QTest.mouseDClick with QListView, QListWidget # Then we feed the history using selectPath dialog.selectUrl(filename) self.qWaitForPendingActions(dialog) path2 = silx.io.url.DataUrl(scheme="silx", file_path=filename, data_path="/").path() dialog.selectUrl(path2) self.qWaitForPendingActions(dialog) path3 = silx.io.url.DataUrl(scheme="silx", file_path=filename, data_path="/group").path() dialog.selectUrl(path3) self.qWaitForPendingActions(dialog) self.assertFalse(forwardAction.isEnabled()) self.assertTrue(backwardAction.isEnabled()) button = testutils.getQToolButtonFromAction(backwardAction) self.mouseClick(button, qt.Qt.LeftButton) self.qWaitForPendingActions(dialog) self.assertTrue(forwardAction.isEnabled()) self.assertTrue(backwardAction.isEnabled()) self.assertSamePath(url.text(), path2) button = testutils.getQToolButtonFromAction(forwardAction) self.mouseClick(button, qt.Qt.LeftButton) self.qWaitForPendingActions(dialog) self.assertFalse(forwardAction.isEnabled()) self.assertTrue(backwardAction.isEnabled()) self.assertSamePath(url.text(), path3)
def testFilterExtensions(self): dialog = self.createDialog() browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0] dialog.show() self.qWaitForWindowExposed(dialog) dialog.selectUrl(_tmpDirectory) self.qWaitForPendingActions(dialog) self.assertEqual(self._countSelectableItems(browser.model(), browser.rootIndex()), 4)
def testDisplayAndClickCancel(self): dialog = self.createDialog() dialog.show() self.qWaitForWindowExposed(dialog) self.assertTrue(dialog.isVisible()) button = testutils.findChildren(dialog, qt.QPushButton, name="cancel")[0] self.mouseClick(button, qt.Qt.LeftButton) self.assertFalse(dialog.isVisible()) self.assertFalse(dialog.isVisible()) self.assertEqual(dialog.result(), qt.QDialog.Rejected)
def testDisplayAndClickLockedOpen(self): dialog = self.createDialog() dialog.show() self.qWaitForWindowExposed(dialog) self.assertTrue(dialog.isVisible()) button = testutils.findChildren(dialog, qt.QPushButton, name="open")[0] self.mouseClick(button, qt.Qt.LeftButton) # open button locked, dialog is not closed self.assertTrue(dialog.isVisible()) self.assertEqual(dialog.result(), qt.QDialog.Rejected)
def testDisplayAndClickOpen(self): dialog = self.createDialog() dialog.show() self.qWaitForWindowExposed(dialog) self.assertTrue(dialog.isVisible()) filename = _tmpDirectory + "/singleimage.edf" dialog.selectFile(filename) self.qWaitForPendingActions(dialog) button = testutils.findChildren(dialog, qt.QPushButton, name="open")[0] self.assertTrue(button.isEnabled()) self.mouseClick(button, qt.Qt.LeftButton) self.assertFalse(dialog.isVisible()) self.assertEqual(dialog.result(), qt.QDialog.Accepted)
def testSelectBadFileFormat_Activate(self): dialog = self.createDialog() dialog.show() self.qWaitForWindowExposed(dialog) # init state dialog.selectUrl(_tmpDirectory) self.qWaitForPendingActions(dialog) browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0] filename = _tmpDirectory + "/badformat.edf" index = browser.rootIndex().model().index(filename) browser.activated.emit(index) self.qWaitForPendingActions(dialog) # test self.assertTrue(dialog.selectedUrl(), filename)
def testSelectBadFileFormat_Activate(self): dialog = self.createDialog() dialog.show() self.qWaitForWindowExposed(dialog) # init state dialog.selectUrl(_tmpDirectory) self.qWaitForPendingActions(dialog) browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0] filename = _tmpDirectory + "/badformat.h5" index = browser.rootIndex().model().index(filename) browser.activated.emit(index) self.qWaitForPendingActions(dialog) # test self.assertTrue(dialog.selectedUrl(), filename)
def testDisplayAndClickOpen(self): if fabio is None: self.skipTest("fabio is missing") dialog = self.createDialog() dialog.show() self.qWaitForWindowExposed(dialog) self.assertTrue(dialog.isVisible()) filename = _tmpDirectory + "/singleimage.edf" dialog.selectFile(filename) self.qWaitForPendingActions(dialog) button = testutils.findChildren(dialog, qt.QPushButton, name="open")[0] self.assertTrue(button.isEnabled()) self.mouseClick(button, qt.Qt.LeftButton) self.assertFalse(dialog.isVisible()) self.assertEqual(dialog.result(), qt.QDialog.Accepted)
def testBadSubpath(self): dialog = self.createDialog() self.qWaitForPendingActions(dialog) browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0] filename = _tmpDirectory + "/data.h5" url = silx.io.url.DataUrl(scheme="silx", file_path=filename, data_path="/group/foobar") dialog.selectUrl(url.path()) self.qWaitForPendingActions(dialog) self.assertIsNotNone(dialog._selectedData()) # an existing node is browsed, but the wrong path is selected index = browser.rootIndex() obj = index.model().data(index, role=Hdf5TreeModel.H5PY_OBJECT_ROLE) self.assertEqual(obj.name, "/group") url = silx.io.url.DataUrl(dialog.selectedUrl()) self.assertEqual(url.data_path(), "/group")
def testSelectH5_Activate(self): dialog = self.createDialog() dialog.show() self.qWaitForWindowExposed(dialog) # init state dialog.selectUrl(_tmpDirectory) self.qWaitForPendingActions(dialog) browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0] filename = _tmpDirectory + "/data.h5" path = silx.io.url.DataUrl(scheme="silx", file_path=filename, data_path="/").path() index = browser.rootIndex().model().index(filename) # click browser.selectIndex(index) # double click browser.activated.emit(index) self.qWaitForPendingActions(dialog) # test self.assertSamePath(dialog.selectedUrl(), path)
def testSelectImageFromEdf_Activate(self): dialog = self.createDialog() dialog.show() self.qWaitForWindowExposed(dialog) # init state dialog.selectUrl(_tmpDirectory) self.qWaitForPendingActions(dialog) browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0] filename = _tmpDirectory + "/singleimage.edf" path = silx.io.url.DataUrl(scheme="fabio", file_path=filename).path() index = browser.rootIndex().model().index(filename) # click browser.selectIndex(index) # double click browser.activated.emit(index) self.qWaitForPendingActions(dialog) # test self.assertTrue(dialog.selectedImage().shape, (100, 100)) self.assertSamePath(dialog.selectedFile(), filename) self.assertSamePath(dialog.selectedUrl(), path)
def testSelectImageFromEdf_Activate(self): if fabio is None: self.skipTest("fabio is missing") dialog = self.createDialog() dialog.show() self.qWaitForWindowExposed(dialog) # init state dialog.selectUrl(_tmpDirectory) self.qWaitForPendingActions(dialog) browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0] filename = _tmpDirectory + "/singleimage.edf" path = silx.io.url.DataUrl(scheme="fabio", file_path=filename).path() index = browser.rootIndex().model().index(filename) # click browser.selectIndex(index) # double click browser.activated.emit(index) self.qWaitForPendingActions(dialog) # test self.assertTrue(dialog.selectedImage().shape, (100, 100)) self.assertSamePath(dialog.selectedFile(), filename) self.assertSamePath(dialog.selectedUrl(), path)