Package schrodinger :: Package ui :: Package qt :: Module filedialog :: Class PhaseDatabaseOpenDialog
[hide private]
[frames] | no frames]

Class PhaseDatabaseOpenDialog

       object --+                        
                |                        
sip.simplewrapper --+                    
                    |                    
          sip.wrapper --+                
                        |                
     PyQt4.QtCore.QObject --+            
                            |            
           object --+       |            
                    |       |            
    sip.simplewrapper --+   |            
                        |   |            
 PyQt4.QtGui.QPaintDevice --+            
                            |            
          PyQt4.QtGui.QWidget --+        
                                |        
              PyQt4.QtGui.QDialog --+    
                                    |    
              PyQt4.QtGui.QFileDialog --+
                                        |
                                       PhaseDatabaseOpenDialog

A file dialog tailored to opening Phase databases.

Differences from a typical Open File Dialog:

The dialog should first be created, then the getFilename method called. ie:

   dialog = PhaseDatabaseOpenDialog()
   project_path = dialog.getFilename()
   if project_path:
       Do stuff

Because QFileDialogs normally cannot handle accepting either a directory OR a file, this uses a few tricks noted throughout the code to make the process of selecting either a project directory or a zip file invisible to the user.

Nested Classes [hide private]

Inherited from PyQt4.QtGui.QFileDialog: AcceptMode, DialogLabel, FileMode, Option, Options, ViewMode

Inherited from PyQt4.QtGui.QDialog: DialogCode

Inherited from PyQt4.QtGui.QWidget: RenderFlag, RenderFlags

Inherited from PyQt4.QtGui.QPaintDevice: PaintDeviceMetric

Instance Methods [hide private]
 
__init__(self, parent=None, caption='Open Phase database', directory='.', accept='Open', filter='Phase Databases (*_phasedb *.phdb)')
Create a PhaseDatabaseOpenDialog instance
 
accept(self)
Overwrites the QFileDialog accept method to also accept directories if they are a Phase DB directory.
 
exec_(self)
Makes sure this dialog is on top of other windows when it pops up.
 
finishIfDatabase(self, path)
Detect if the user has currently selected a database directory and either double-clicked on it or hit the accept button.
 
getFilename(self)
Open the dialog, allow the user to choose a Phase DD, and return the path to that database.
 
selectionChanged(self, path)
Called when the user clicks on a new file name.

Inherited from PyQt4.QtGui.QFileDialog: acceptMode, changeEvent, confirmOverwrite, currentChanged, defaultSuffix, directory, directoryEntered, done, fileMode, fileSelected, filesSelected, filter, filterSelected, filters, getExistingDirectory, getOpenFileName, getOpenFileNameAndFilter, getOpenFileNames, getOpenFileNamesAndFilter, getSaveFileName, getSaveFileNameAndFilter, history, iconProvider, isNameFilterDetailsVisible, isReadOnly, itemDelegate, labelText, nameFilters, open, options, proxyModel, resolveSymlinks, restoreState, saveState, selectFile, selectFilter, selectNameFilter, selectedFiles, selectedFilter, selectedNameFilter, setAcceptMode, setConfirmOverwrite, setDefaultSuffix, setDirectory, setFileMode, setFilter, setFilters, setHistory, setIconProvider, setItemDelegate, setLabelText, setNameFilter, setNameFilterDetailsVisible, setNameFilters, setOption, setOptions, setProxyModel, setReadOnly, setResolveSymlinks, setSidebarUrls, setViewMode, setVisible, sidebarUrls, testOption, viewMode

Inherited from PyQt4.QtGui.QDialog: accepted, closeEvent, contextMenuEvent, eventFilter, extension, finished, isSizeGripEnabled, keyPressEvent, minimumSizeHint, orientation, reject, rejected, resizeEvent, result, setExtension, setModal, setOrientation, setResult, setSizeGripEnabled, showEvent, showExtension, sizeHint

Inherited from PyQt4.QtGui.QWidget: acceptDrops, accessibleDescription, accessibleName, actionEvent, actions, activateWindow, addAction, addActions, adjustSize, autoFillBackground, backgroundRole, baseSize, childAt, childrenRect, childrenRegion, clearFocus, clearMask, close, contentsMargins, contentsRect, contextMenuPolicy, create, cursor, customContextMenuRequested, destroy, devType, dragEnterEvent, dragLeaveEvent, dragMoveEvent, dropEvent, effectiveWinId, enabledChange, ensurePolished, enterEvent, event, find, focusInEvent, focusNextChild, focusNextPrevChild, focusOutEvent, focusPolicy, focusPreviousChild, focusProxy, focusWidget, font, fontChange, fontInfo, fontMetrics, foregroundRole, frameGeometry, frameSize, geometry, getContentsMargins, grabGesture, grabKeyboard, grabMouse, grabShortcut, graphicsEffect, graphicsProxyWidget, handle, hasFocus, hasMouseTracking, height, heightForWidth, hide, hideEvent, inputContext, inputMethodEvent, inputMethodHints, inputMethodQuery, insertAction, insertActions, isActiveWindow, isAncestorOf, isEnabled, isEnabledTo, isEnabledToTLW, isFullScreen, isHidden, isLeftToRight, isMaximized, isMinimized, isModal, isRightToLeft, isTopLevel, isVisible, isVisibleTo, isWindow, isWindowModified, keyReleaseEvent, keyboardGrabber, languageChange, layout, layoutDirection, leaveEvent, locale, lower, mapFrom, mapFromGlobal, mapFromParent, mapTo, mapToGlobal, mapToParent, mask, maximumHeight, maximumSize, maximumWidth, metric, minimumHeight, minimumSize, minimumWidth, mouseDoubleClickEvent, mouseGrabber, mouseMoveEvent, mousePressEvent, mouseReleaseEvent, move, moveEvent, nativeParentWidget, nextInFocusChain, normalGeometry, overrideWindowFlags, overrideWindowState, paintEngine, paintEvent, palette, paletteChange, parentWidget, pos, previousInFocusChain, raise_, rect, releaseKeyboard, releaseMouse, releaseShortcut, removeAction, render, repaint, resetInputContext, resize, restoreGeometry, saveGeometry, scroll, setAcceptDrops, setAccessibleDescription, setAccessibleName, setAttribute, setAutoFillBackground, setBackgroundRole, setBaseSize, setContentsMargins, setContextMenuPolicy, setCursor, setDisabled, setEnabled, setFixedHeight, setFixedSize, setFixedWidth, setFocus, setFocusPolicy, setFocusProxy, setFont, setForegroundRole, setGeometry, setGraphicsEffect, setHidden, setInputContext, setInputMethodHints, setLayout, setLayoutDirection, setLocale, setMask, setMaximumHeight, setMaximumSize, setMaximumWidth, setMinimumHeight, setMinimumSize, setMinimumWidth, setMouseTracking, setPalette, setParent, setShortcutAutoRepeat, setShortcutEnabled, setShown, setSizeIncrement, setSizePolicy, setStatusTip, setStyle, setStyleSheet, setTabOrder, setToolTip, setUpdatesEnabled, setWhatsThis, setWindowFilePath, setWindowFlags, setWindowIcon, setWindowIconText, setWindowModality, setWindowModified, setWindowOpacity, setWindowRole, setWindowState, setWindowTitle, show, showFullScreen, showMaximized, showMinimized, showNormal, size, sizeIncrement, sizePolicy, stackUnder, statusTip, style, styleSheet, tabletEvent, testAttribute, toolTip, topLevelWidget, underMouse, ungrabGesture, unsetCursor, unsetLayoutDirection, unsetLocale, update, updateGeometry, updateMicroFocus, updatesEnabled, visibleRegion, whatsThis, wheelEvent, width, winId, window, windowActivationChange, windowFilePath, windowFlags, windowIcon, windowIconText, windowModality, windowOpacity, windowRole, windowState, windowTitle, windowType, x, x11Info, x11PictureHandle, y

Inherited from PyQt4.QtCore.QObject: __getattr__, blockSignals, childEvent, children, connect, connectNotify, customEvent, deleteLater, destroyed, disconnect, disconnectNotify, dumpObjectInfo, dumpObjectTree, dynamicPropertyNames, emit, findChild, findChildren, inherits, installEventFilter, isWidgetType, killTimer, metaObject, moveToThread, objectName, parent, property, pyqtConfigure, receivers, removeEventFilter, sender, setObjectName, setProperty, signalsBlocked, startTimer, thread, timerEvent, tr, trUtf8

Inherited from PyQt4.QtGui.QPaintDevice: colorCount, depth, heightMM, logicalDpiX, logicalDpiY, numColors, paintingActive, physicalDpiX, physicalDpiY, widthMM

Inherited from sip.simplewrapper: __new__

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__

Class Variables [hide private]

Inherited from PyQt4.QtGui.QFileDialog: Accept, AcceptOpen, AcceptSave, AnyFile, Detail, Directory, DirectoryOnly, DontConfirmOverwrite, DontResolveSymlinks, DontUseNativeDialog, DontUseSheet, ExistingFile, ExistingFiles, FileName, FileType, HideNameFilterDetails, List, LookIn, ReadOnly, Reject, ShowDirsOnly

Inherited from PyQt4.QtGui.QDialog: Accepted, Rejected

Inherited from PyQt4.QtGui.QWidget: DrawChildren, DrawWindowBackground, IgnoreMask

Inherited from PyQt4.QtCore.QObject: staticMetaObject

Inherited from PyQt4.QtGui.QPaintDevice: PdmDepth, PdmDpiX, PdmDpiY, PdmHeight, PdmHeightMM, PdmNumColors, PdmPhysicalDpiX, PdmPhysicalDpiY, PdmWidth, PdmWidthMM

Properties [hide private]

Inherited from object: __class__

Method Details [hide private]

__init__(self, parent=None, caption='Open Phase database', directory='.', accept='Open', filter='Phase Databases (*_phasedb *.phdb)')
(Constructor)

 

Create a PhaseDatabaseOpenDialog instance

Parameters:
  • parent (QWidget) - The parent widget for this dialog
  • caption (str) - The caption for this dialog
  • directory (str) - The directory this dialog starts in
  • accept (str) - The text that appears on the Open/Accept/Choose button that the user clicks to select a file and close the dialog
  • filter (str) - The file name filter used by the dialog
Overrides: object.__init__

accept(self)

 

Overwrites the QFileDialog accept method to also accept directories if they are a Phase DB directory. Normally, accept would only accept files.

Overrides: PyQt4.QtGui.QDialog.accept

exec_(self)

 

Makes sure this dialog is on top of other windows when it pops up. This is a particular problem on Mac OS.

Overrides: PyQt4.QtGui.QDialog.exec_

finishIfDatabase(self, path)

 

Detect if the user has currently selected a database directory and either double-clicked on it or hit the accept button. If so, close the dialog.

Parameters:
  • path (QString or str) - If this was called via the accept method, path will be the first selected file. If this was called via the directoryEntered signal, path will be the directory that the user just double-clicked on.

selectionChanged(self, path)

 

Called when the user clicks on a new file name. If that file name is a directory, PyQt won't put its name in the selected file box, because PyQt thinks this dialog only wants files (there is no PyQt file OR directory dialog). We have to manually put the name in the file box if this is a database file, but we have no Python-wrapped handle to do that. But this is a back door way to accomplish it.