def __init__(self, parent): self.gui = parent self.fb_scale = 1.0 # OpenGL context setup if USE_QOPENGLWIDGET: f = QtGui.QSurfaceFormat() else: f = QtOpenGL.QGLFormat() from pymol.invocation import options # logic equivalent to layer5/main.cpp:launch if options.multisample: f.setSamples(4) if options.force_stereo != -1: # See layer1/Setting.h for stereo modes if options.stereo_mode in (1, 12) or ( options.stereo_mode == 0 and AUTO_DETECT_STEREO): f.setStereo(True) if options.stereo_mode in (11, 12) and not USE_QOPENGLWIDGET: f.setAccum(True) if USE_QOPENGLWIDGET: super(PyMOLGLWidget, self).__init__(parent=parent) self.setFormat(f) self.setUpdateBehavior(QtWidgets.QOpenGLWidget.PartialUpdate) else: super(PyMOLGLWidget, self).__init__(f, parent=parent) # pymol instance self.pymol = PyMOL() self.pymol.start() self.cmd = self.pymol.cmd # capture python output for feedback import pcatch pcatch._install() # for passive move drag self.setMouseTracking(True) # for accepting keyboard input (command line, shortcuts) self.setFocusPolicy(Qt.ClickFocus) # for idle rendering self._timer = QtCore.QTimer() self._timer.setSingleShot(True) self._timer.timeout.connect(self._pymolProcess) # drag n drop self.setAcceptDrops(True) # pinch-zoom self.grabGesture(Qt.PinchGesture)
def __init__(self, parent): self.gui = parent self.fb_scale = 1.0 # OpenGL context setup if USE_QOPENGLWIDGET: f = QtGui.QSurfaceFormat() else: f = QtOpenGL.QGLFormat() from pymol.invocation import options # logic equivalent to layer5/main.cpp:launch if options.multisample: f.setSamples(4) if options.force_stereo != -1: # See layer1/Setting.h for stereo modes if options.stereo_mode in (1, 12) or ( options.stereo_mode == 0 and AUTO_DETECT_STEREO): f.setStereo(True) if options.stereo_mode in (11, 12) and not USE_QOPENGLWIDGET: f.setAccum(True) if USE_QOPENGLWIDGET: super(PyMOLGLWidget, self).__init__(parent=parent) self.setFormat(f) else: super(PyMOLGLWidget, self).__init__(f, parent=parent) # pymol instance self.pymol = PyMOL() self.pymol.start() self.cmd = self.pymol.cmd # capture python output for feedback import pcatch pcatch._install() # for passive move drag self.setMouseTracking(True) # for accepting keyboard input (command line, shortcuts) self.setFocusPolicy(Qt.ClickFocus) # for idle rendering self._timer = QtCore.QTimer() self._timer.setSingleShot(True) self._timer.timeout.connect(self._pymolProcess) # drag n drop self.setAcceptDrops(True) # pinch-zoom self.grabGesture(Qt.PinchGesture)
def __init__(self, parent): self.gui = parent # OpenGL context setup f = QtOpenGL.QGLFormat() f.setRgba(True) f.setDepth(True) f.setDoubleBuffer(True) from pymol.invocation import options # logic equivalent to layer5/main.cpp:launch if options.multisample: f.setSampleBuffers(True) if options.force_stereo != -1: # See layer1/Setting.h for stereo modes if options.stereo_mode in (0, 1, 12): # this effectively disables stereo detection # on Linux that is faulty in QGLWidget / PyQt5 if not (options.stereo_mode == 0 and sys.platform.startswith("linux")): f.setStereo(True) if options.stereo_mode in (11, 12): f.setAccum(True) if options.stereo_mode in (0, 6, 7, 8, 9): f.setStencil(True) QtOpenGL.QGLWidget.__init__(self, f, parent=parent) if not self.isValid(): raise RuntimeError('OpenGL initialization failed') f_actual = self.format() # report if quad buffer available options.stereo_capable = int(f_actual.stereo() or (options.force_stereo == 1)) # feedback if stereo request failed if options.stereo_mode and ( # QTBUG-59636 f.stereo() and not f_actual.stereo() or f.accum() and not f_actual.accum() or f.stencil() and not f_actual.stencil()): # cPyMOLGlobals_LaunchStatus_StereoFailed options.launch_status |= 0x1 # feedback if multisample request failed if options.multisample and not f_actual.sampleBuffers(): # cPyMOLGlobals_LaunchStatus_MultisampleFailed options.launch_status |= 0x2 # pymol instance self.pymol = PyMOL() self.pymol.start() self.cmd = self.pymol.cmd # capture python output for feedback import pcatch pcatch._install() # for passive move drag self.setMouseTracking(True) # for accepting keyboard input (command line, shortcuts) self.setFocusPolicy(Qt.ClickFocus) # for idle rendering self._timer = QtCore.QTimer() self._timer.setSingleShot(True) self._timer.timeout.connect(self._pymolProcess) # drag n drop self.setAcceptDrops(True) # pinch-zoom self.grabGesture(Qt.PinchGesture)