Hi Goran, Thanks for this insightful post.
I committed changes so that multi selection is possible ( http://code.google.com/p/pythonocc/source/detail?r=1116) and the zoom area (Shift+RMB)/multiselection(Shift+LMB) with qt backend ( http://code.google.com/p/pythonocc/source/detail?r=1117) (note that I moved the drawing stuff to the paintEvent method of the QtWidget class). I don't manage to get the rectangle displayed while moving the mouse pointer (although zoom and multi selection are ok). Is it a MacOS specific bug or is it the same for you under Debian? Thomas 2010/12/30 Goran Lukic <goranl...@gmail.com> > Hello Community, > > I try to implement Zoom Window and Select Area using Mouse+SHIFT but this > code from > class qtviewer3d doesn't work for me. > > So, I changed the following code: > # Draw rect > def DrawBox( self , event): > tolerance = 2 > pt = point( event.pos() ) > dx = pt.x - self.dragStartPos.x > dy = pt.y - self.dragStartPos.y > if abs( dx ) <= tolerance and abs( dy ) <= tolerance: > return > > painter = QtGui.QPainter() > painter.begin(self) > painter.setPen(QtGui.QPen(QtGui.QColor(255,255,255), 1, > QtCore.Qt.DotLine, QtCore.Qt.RoundCap, > QtCore.Qt.RoundJoin)) > rect = QtCore.QRect(self.dragStartPos.x, self.dragStartPos.y, dx, dy > ) > self._drawbox = [self.dragStartPos.x, self.dragStartPos.y , dx, dy] > painter.drawRect( rect ) > self.repaint() > painter.end() > > # and mouse release event > def mouseReleaseEvent( self, event ): > self.setCursor( self.crossNormalBitmapCursor ) > pt = point(event.pos()) > #print 'mouse release event' > if event.button() == QtCore.Qt.LeftButton: > pt = point(event.pos()) > self.repaint() > if self._select_area: > [Xmin, Ymin, dx, dy] = self._drawbox > selected_shapes = > self._display.Select(Xmin,Ymin,Xmin+dx,Ymin+dy) > self._select_area = False > > elif self._display.Select(pt.x,pt.y): > selected_shape = self._display.GetSelectedShape() > print selected_shape,selected_shape.ShapeType() > > # This part comes here !!! > elif event.button() == QtCore.Qt.RightButton: > if self._zoom_area: > [Xmin, Ymin, dx, dy] = self._drawbox > self._display.ZoomArea(Xmin, Ymin, Xmin+dx, Ymin+dy) > self._zoom_area = False > > # and I set following Attribute > #self.setAttribute(QtCore.Qt.WA_PaintOutsidePaintEvent) > class qtViewer3d( qtBaseViewer ): > def __init__( self, *kargs ): > qtBaseViewer.__init__( self, *kargs ) > self._drawbox = False > self._zoom_area = False > self._select_area = False > self._inited = False > self._leftisdown = False > self._middleisdown = False > self._rightisdown = False > self._selection = None > self._drawtext = True > # Very Important > self.setAttribute(QtCore.Qt.WA_PaintOutsidePaintEvent) > > > So, for now it works Zoom Window if I use RMB+SHIFT, > but Select Area (LMB+SHIFT) still not working. > > hier is output from console: > Traceback (most recent call last): > File "", line 656, in mouseReleaseEvent > selected_shapes = self._display.Select(Xmin,Ymin,Xmin+dx,Ymin+dy) > TypeError: Select() takes exactly 3 arguments (5 given) > Traceback (most recent call last): > File " ", line 655, in mouseReleaseEvent > [Xmin, Ymin, dx, dy] = self._drawbox > TypeError: 'bool' object is not iterable > > I do not know how to fix this error. > > I am using Debian GNU/Linux "squeeze". > > _______________________________________________ > Pythonocc-users mailing list > Pythonocc-users@gna.org > https://mail.gna.org/listinfo/pythonocc-users >
_______________________________________________ Pythonocc-users mailing list Pythonocc-users@gna.org https://mail.gna.org/listinfo/pythonocc-users