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

Class ProjectOpenDialog

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

A file dialog tailored to opening Projects.

Differences from a typical Open File Dialog:

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

   dialog = ProjectOpenDialog()
   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 Project', directory='.', accept='Open', filter='Projects (*.prj *.prjzip *.prj.zip)')
Create a ProjectOpenDialog instance
 
_finishIfProject(self, path)
Detect if the user has currently selected a project directory and either double-clicked on it or hit the accept button.
 
_selectionChanged(self, path)
Called when the user clicks on a new file name.
 
accept(self)
Overwrites the QFileDialog accept method to also accept directories if they are a project directory.
 
exec_(self)
Makes sure this dialog is on top of other windows when it pops up.
 
getFilename(self)
Open the dialog, allow the user to choose a Project, and return the path to that project.

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 Project', directory='.', accept='Open', filter='Projects (*.prj *.prjzip *.prj.zip)')
(Constructor)

 

Create a ProjectOpenDialog 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__

_finishIfProject(self, path)

 

Detect if the user has currently selected a project 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 project file, but we have no Python-wrapped handle to do that. But this is a back door way to accomplish it.

accept(self)

 

Overwrites the QFileDialog accept method to also accept directories if they are a project 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_