def __init__(self, parent): super(QNEMainWindow, self).__init__(parent) self.logger = logging.getLogger("zne") self.logger.setLevel(logging.DEBUG) self.setMinimumSize(560, 360) self.setWindowTitle("ZOCP Node Editor") self.setWindowIcon(QIcon('assets/icon.png')) self.scene = QGraphicsScene(self) self.view = QGraphicsView(self) self.view.setScene(self.scene) self.setCentralWidget(self.view) self.nodesEditor = QNodesEditor(self, self.scene, self.view) self.nodesEditor.onAddConnection = self.onAddConnection self.nodesEditor.onRemoveConnection = self.onRemoveConnection self.nodesEditor.onBlockMoved = self.onBlockMoved self.scale = 1 self.installActions() self.initZOCP() self.nodes = {} self.pendingSubscribers = {} QTimer.singleShot(250, lambda: self.scene.invalidate())
def __init__(self, mainwindow): """ Initializes the GraphWidget. """ super(GraphWidget, self).__init__(mainwindow) self.setupUi(self.mw) self.startRelation = None self.abstractGraph = None self.gv = pygraphviz.AGraph(strict=False) self.widget = self.layoutWidget self.log = logging.getLogger('.' + __name__) self.nodesToQNodes = {} self.qLines = [] self.qpens = {} self.completer = QCompleter(list("")) self.completer.setCaseSensitivity(Qt.CaseInsensitive) self.completer.setWidget(self.lineEdit) self.lastScale = 1 self.initMenu() self.roots = set() self.doubleSpinBox.valueChanged[float].connect(self.changeScale) self.lineEdit.textChanged.connect(self.searchNode) self.rootSelector.insertItem(0, "---") self.rootSelector.currentIndexChanged[str].connect(self.newRoot) self.relations.currentIndexChanged[str].connect(self.newVariant) self.depth.valueChanged.connect(self.newRoot) self._updateActiveOntology() self.graphicsView.setScene(QGraphicsScene())
def init(self, parent): """ """ rad = self.factory.radius if not rad: rad = 20 if self.control is None: self.control = qtLED() scene = QGraphicsScene() # self.control.setStyleSheet("qtLED { border-style: none; }"); # self.control.setAutoFillBackground(True) # system background color scene.setBackgroundBrush(QBrush(QColor(237, 237, 237))) self.control.setStyleSheet("border: 0px") self.control.setMaximumWidth(rad+15) self.control.setMaximumHeight(rad+15) x, y = 10, 10 cx = x + rad / 1.75 cy = y + rad / 1.75 brush = self.get_color(self.value.state, cx, cy, rad / 2) pen = QPen() pen.setWidth(0) self.led = scene.addEllipse(x, y, rad, rad, pen=pen, brush=brush ) self.control.setScene(scene) self.value.on_trait_change(self.update_object, 'state')
def setUp(self): #Acquire resources super(QColorOnSetBrush, self).setUp() self.scene = QGraphicsScene() poly = QPolygonF() self.item = self.scene.addPolygon(poly) self.color = QColor('black')
def __init__(self, view, controller): self.view = view self.controller = controller self.scene = QGraphicsScene() self.view.setScene(self.scene) self.variables = {} self.variableOrder = [] self.currentX = None self.currentY = None
def test_setParentItem(self): global qgraphics_item_painted scene = QGraphicsScene() scene.addText("test") view = QGraphicsView(scene) rect = self.createRoundRect(scene) view.show() QTimer.singleShot(1000, self.quit_app) self.app.exec_() self.assert_(qgraphics_item_painted)
def _init_widgets(self): self.scene = QGraphicsScene(self.parent()) self.setScene(self.scene) # self.setDragMode(QGraphicsView.ScrollHandDrag) self.setRenderHints(QPainter.Antialiasing | QPainter.SmoothPixmapTransform | QPainter.HighQualityAntialiasing) self.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) self.horizontalScrollBar().setSingleStep(16) self.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) self.verticalScrollBar().setSingleStep(16)
def testIt(self): scene = QGraphicsScene() i1 = QGraphicsRectItem() scene.addItem(i1) i2 = QGraphicsRectItem(i1) i3 = QGraphicsRectItem() i4 = QGraphicsRectItem() group = scene.createItemGroup((i2, i3, i4)) scene.removeItem(i1) del i1 # this shouldn't delete i2 self.assertEqual(i2.scene(), scene) scene.destroyItemGroup(group) self.assertRaises(RuntimeError, group.type)
def __init__(self, camera=None, scene=None): super(DrawableCameraView, self).__init__() if scene is None: self.scene = QGraphicsScene() else: self.scene = scene self.setScene(self.scene) self.camera = camera self.pixmapitem = None # Overlay variables self.overlay_visible = False self.overlay_images = None
def testIt(self): scene = QGraphicsScene() minSize = QSizeF(30, 100) prefSize = QSizeF(210, 100) maxSize = QSizeF(300, 100) a = createItem(minSize, prefSize, maxSize, "A") b = createItem(minSize, prefSize, maxSize, "B") c = createItem(minSize, prefSize, maxSize, "C") d = createItem(minSize, prefSize, maxSize, "D") view = QGraphicsView(scene) view.show() self.app.exec_()
def __init__(self): self.app = QApplication.instance() if self.app is None: self.app = QApplication(sys.argv) loader = QUiLoader() self.mainWindow = loader.load("timelineTest.ui") self.scene = QGraphicsScene() self.mainWindow.graphicsView.setScene(self.scene) track = timelineTrack() self.addTrack(track) self.readEDL(track, 'sample.edl') self.mainWindow.show() self.app.exec_()
def init(self, parent): """ """ rad = self.factory.radius if not rad: rad = 20 if self.control is None: ctrl = qtLED() layout = QVBoxLayout() layout.addWidget(ctrl) scene = QGraphicsScene() # ctrl.setStyleSheet("qtLED { border-style: none; }"); # ctrl.setAutoFillBackground(True) # system background color scene.setBackgroundBrush(QBrush(QColor(237, 237, 237))) ctrl.setStyleSheet("border: 0px") ctrl.setMaximumWidth(rad + 15) ctrl.setMaximumHeight(rad + 15) x, y = 10, 10 cx = x + rad / 1.75 cy = y + rad / 1.75 brush = self.get_color(self.value.state, cx, cy, rad / 2) pen = QPen() pen.setWidth(0) self.led = scene.addEllipse(x, y, rad, rad, pen=pen, brush=brush) if self.factory.label: txt = QLabel(self.factory.label) layout.addWidget(txt) layout.setAlignment(txt, Qt.AlignHCenter) # txt = scene.addText(self.factory.label, QFont('arial 6')) # txt.setPos(cx, 10) ctrl.setScene(scene) layout.setAlignment(ctrl, Qt.AlignHCenter) self.value.on_trait_change(self.update_object, 'state') self.control = QWidget() self.control.setLayout(layout)
def setUp(self): #Acquire resources super(ItemRetrieve, self).setUp() self.scene = QGraphicsScene() self.topleft = QGraphicsRectItem(0, 0, 100, 100) self.topright = QGraphicsRectItem(100, 0, 100, 100) self.bottomleft = QGraphicsRectItem(0, 100, 100, 100) self.bottomright = QGraphicsRectItem(100, 100, 100, 100) self.items = [ self.topleft, self.topright, self.bottomleft, self.bottomright ] for item in self.items: self.scene.addItem(item)
def testQGraphicsProxyWidget(self): scene = QGraphicsScene() proxy = QGraphicsProxyWidget(None, Qt.Window) widget = QLabel('Widget') proxy.setWidget(widget) proxy.setCacheMode(QGraphicsItem.DeviceCoordinateCache) scene.addItem(proxy) scene.setSceneRect(scene.itemsBoundingRect()) view = QGraphicsView(scene) view.setRenderHints(QPainter.Antialiasing|QPainter.SmoothPixmapTransform) view.setViewportUpdateMode(QGraphicsView.BoundingRectViewportUpdate) view.show() timer = QTimer.singleShot(100, self.app.quit) self.app.exec_()
def __init__(self, parent): super(QNEMainWindow, self).__init__(parent) quitAct = QAction("&Quit", self, shortcut="Ctrl+Q", statusTip="Exit the application", triggered=self.close) addAct = QAction("&Add", self, statusTip="Add a block", triggered=self.addBlock) fileMenu = self.menuBar().addMenu("&File") fileMenu.addAction(addAct) fileMenu.addSeparator() fileMenu.addAction(quitAct) self.setWindowTitle("Node Editor") self.scene = QGraphicsScene(self) self.view = QGraphicsView(self) self.view.setScene(self.scene) self.view.setRenderHint(QPainter.Antialiasing) self.setCentralWidget(self.view) self.nodesEditor = QNodesEditor(self) self.nodesEditor.install(self.scene) block = QNEBlock(None) self.scene.addItem(block) block.addPort("test", 0, QNEPort.NamePort) block.addPort("TestBlock", 0, QNEPort.TypePort) block.addInputPort("in1") block.addInputPort("in2") block.addInputPort("in3") block.addOutputPort("out1") block.addOutputPort("out2") block.addOutputPort("out3") block = block.clone() block.setPos(150, 0) block = block.clone() block.setPos(150, 150)
def update_frame(self, img): ''' update the image :return: ''' #if not self.queue.empty(): # frame = self.queue.get() #img = frame['img'] img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) size = self.video_view.size() img = cv2.resize(img, (size.width() - 10, size.height() - 10)) height, width, bpc = img.shape bpl = bpc * width image = QImage(img.data, width, height, bpl, QImage.Format_RGB888) pitem = QGraphicsPixmapItem(QPixmap.fromImage(image)) scene = QGraphicsScene() scene.addItem(pitem) self.video_view.setScene(scene)
def __init__(self, parent=None, controller=None): ''' The initialization instanciates the GraphicsView/GraphicsScene combo. It sets up reference variables for handling nodes and edges of the graph. It register various signals. ''' super(NetworkView, self).__init__(parent) self.parent = parent # maybe needed later? self.controller = controller self.graphicsView = GraphicsView(self) self.graphicsScene = QGraphicsScene(self) self.graphicsView.setScene(self.graphicsScene) self.modelSelectionInProgress = False self.registerSignals() self.statusBar = None # can be set from the outside self.species = None self.reactions = None # TODO: check these self.nodes = [] self.edges = [] self.speciesNodesMapper = {} self.reactionEdgesMapper = {} self.lock = QReadWriteLock() layout = QHBoxLayout() layout.addWidget(self.graphicsView, 1) self.setLayout(layout)
def __init__(self,parent): global configuration super(OrderWorkflowDialog,self).__init__(parent) self.grey_pen = QPen(Qt.gray) title = _("Order workflow") self.setWindowTitle(title) self.title_widget = TitleWidget(title,self) self.buttons = QDialogButtonBox() self.buttons.addButton( QDialogButtonBox.Ok) self.buttons.addButton( QDialogButtonBox.Cancel) self.thinfont = QFont() if configuration.font_select: self.thinfont.setPointSize(self.thinfont.pointSize()*2) self.scene = QGraphicsScene() self.scene.selectionChanged.connect(self.selectionChanged) self.view = QGraphicsView(self) self.view.setRenderHint(QPainter.Antialiasing) self.view.setScene(self.scene) top_layout = QVBoxLayout() top_layout.addWidget(self.title_widget) top_layout.addWidget(self.view) top_layout.addWidget(self.buttons) self.setLayout(top_layout) # QWidget takes ownership of the layout self.buttons.accepted.connect(self.save_and_accept) self.buttons.rejected.connect(self.cancel) self.initial_state = None self.selected_state = None self._drawNodes(self.scene,self.selected_state,self.initial_state)
def setUp(self): super(ReferenceCount, self).setUp() self.scene = QGraphicsScene()
def setupUi(self): scene = QGraphicsScene(self) self.view = QGraphicsView(scene, self) self.view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.view.setVisible(True) self.view.setInteractive(True) self.createPixmapIcon() self.mapWidget = MapWidget(self.mapManager) scene.addItem(self.mapWidget) self.mapWidget.setCenter(QGeoCoordinate(-8.1, -34.95)) self.mapWidget.setZoomLevel(5) #... self.slider = QSlider(Qt.Vertical, self) self.slider.setTickInterval(1) self.slider.setTickPosition(QSlider.TicksBothSides) self.slider.setMaximum(self.mapManager.maximumZoomLevel()) self.slider.setMinimum(self.mapManager.minimumZoomLevel()) self.slider.valueChanged[int].connect(self.sliderValueChanged) self.mapWidget.zoomLevelChanged[float].connect(self.mapZoomLevelChanged) mapControlLayout = QVBoxLayout() self.mapWidget.mapTypeChanged.connect(self.mapTypeChanged) for mapType in self.mapWidget.supportedMapTypes(): radio = QRadioButton(self) if mapType == QGraphicsGeoMap.StreetMap: radio.setText('Street') elif mapType == QGraphicsGeoMap.SatelliteMapDay: radio.setText('Sattelite') elif mapType == QGraphicsGeoMap.SatelliteMapNight: radio.setText('Sattelite - Night') elif mapType == QGraphicsGeoMap.TerrainMap: radio.setText('Terrain') if mapType == self.mapWidget.mapType(): radio.setChecked(True) radio.toggled[bool].connect(self.mapTypeToggled) self.mapControlButtons.append(radio) self.mapControlTypes.append(mapType) mapControlLayout.addWidget(radio) self.latitudeEdit = QLineEdit() self.longitudeEdit = QLineEdit() formLayout = QFormLayout() formLayout.addRow('Latitude', self.latitudeEdit) formLayout.addRow('Longitude', self.longitudeEdit) self.captureCoordsButton = QToolButton() self.captureCoordsButton.setText('Capture coordinates') self.captureCoordsButton.setCheckable(True) self.captureCoordsButton.toggled[bool].connect( self.mapWidget.setMouseClickCoordQuery) self.mapWidget.coordQueryResult.connect(self.updateCoords) self.setCoordsButton = QPushButton() self.setCoordsButton.setText('Set coordinates') self.setCoordsButton.clicked.connect(self.setCoordsClicked) buttonLayout = QHBoxLayout() buttonLayout.addWidget(self.captureCoordsButton) buttonLayout.addWidget(self.setCoordsButton) coordControlLayout = QVBoxLayout() coordControlLayout.addLayout(formLayout) coordControlLayout.addLayout(buttonLayout) widget = QWidget(self) layout = QGridLayout() layout.setRowStretch(0, 1) layout.setRowStretch(1, 0) topLayout = QGridLayout() bottomLayout = QGridLayout() topLayout.setColumnStretch(0, 0) topLayout.setColumnStretch(1, 1) bottomLayout.setColumnStretch(0, 0) bottomLayout.setColumnStretch(1, 1) topLayout.addWidget(self.slider, 0, 0) topLayout.addWidget(self.view, 0, 1) bottomLayout.addLayout(mapControlLayout, 0, 0) bottomLayout.addLayout(coordControlLayout, 0, 1) layout.addLayout(topLayout, 0, 0) layout.addLayout(bottomLayout, 1, 0) self.layout = layout widget.setLayout(layout) self.setCentralWidget(widget) self.view.setContextMenuPolicy(Qt.CustomContextMenu) self.view.customContextMenuRequested.connect(self.customContextMenuRequest)
def __init__(self, charname='', currentzone='', parent=None): super(WorldViewer, self).__init__(parent) self.setWindowTitle("World Viewer") if not DEBUG: self.setWindowState(Qt.WindowMaximized) self.move(0, 0) self.grabKeyboard() self.keyspressed = set() self.currentzone = currentzone self.charname = charname self.scene = QGraphicsScene() self.view = QGraphicsView(self.scene) self.view.scale(5, 5) self.view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) # pb = QPushButton("Push!") # stylesheet = ''' # QPushButton { # border: 2px solid #8f8f91; # border-radius: 6px; # background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, # stop: 0 #f6f7fa, stop: 1 #dadbde); # min-width: 80px; # } # # QPushButton:pressed { # background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, # stop: 0 #dadbde, stop: 1 #f6f7fa); # } # # QPushButton:flat { # border: none; /* no border for a flat push button */ # } # QPushButton:default { # border-color: navy; /* make the default button prominent */ # } # ''' # pb.setStyleSheet(stylesheet) # self.scene.addWidget(pb) layout = QVBoxLayout() for w in (self.view, ): layout.addWidget(w) self.setLayout(layout) self.loading = self.scene.addText("Loading...") self.loading.setHtml("<h1>Loading...</h1>") self.last_update = datetime.datetime.now() self.world_objects = {} self.world_object_widgets = {} self._update_objects(client.get_all_objects(self.currentzone)) print self.world_objects # Set character status to online. client.set_status(self.currentzone, self.charname) self.loading.hide() # Set a repeating callback on a timer to get object updates self.obj_update_timer = QTimer(self) self.connect(self.obj_update_timer, SIGNAL("timeout()"), self.update_objects) self.obj_update_timer.start(CLIENT_UPDATE_FREQ) # Set a repeating callback on a timer to send movement packets. self.movement_timer = QTimer(self) self.connect(self.movement_timer, SIGNAL("timeout()"), self.send_movement) self.movement_timer.start(CLIENT_UPDATE_FREQ)
def setUp(self): #Acquire resources super(AddItem, self).setUp() self.scene = QGraphicsScene()
def setUp(self): #Acquire resources # PyQt4 doesn't accept a QRect as argument to constructor self.scene = QGraphicsScene(0, 200, 150, 175)
def testConstructor(self): #QGraphicsScene constructor obj = QGraphicsScene() self.assertTrue(isinstance(obj, QGraphicsScene))
def redraw(self, base_time, all_tars, employee_id, additional_work_timetracks, additional_presence_timetracks, special_activities=None, view_title=""): scene = QGraphicsScene() # This scene line is a hack to make sure I can control the "centerOn" # execution as I wish. This is very hackish. margin = 30 scene.addLine( QLineF(0, 0, self.width() - margin, self.height() - margin), QPen(Qt.white)) # Dat is heeeel belangerijk om de goede computation te doen all_tars = sorted(all_tars, key=lambda tar: tar.time) # chrono.chrono_click("Redraw step 1") timetracks_tars = dao.task_action_report_dao.compute_activity_timetracks_from_task_action_reports( all_tars, employee_id) # We got (timetrack, reports) tuples timetracks = [tt[0] for tt in timetracks_tars] # presence_time, off_time, presence_timetracks = dao.task_action_report_dao.recompute_presence_on_tars(employee_id, all_tars) # chrono.chrono_click("Redraw step 2") presence_intervals = dao.task_action_report_dao.compute_man_presence_periods( employee_id, base_time, all_tars, timetracks=[], commit=True) # chrono.chrono_click("Redraw step 2B") presence_timetracks = dao.task_action_report_dao.convert_intervals_to_presence_timetracks( presence_intervals, employee_id) # chrono.chrono_click("Redraw step 3") # FIXME this will trigger a session open... Must use the ID without a query first! presence_task_id = dao.task_action_report_dao.presence_task_id_regular_time( ) # chrono.chrono_click("redraw") # mainlog.debug("About to draw ...") # mainlog.debug("additional presence is") # for tt in additional_presence_timetracks: # mainlog.debug(tt) # mainlog.debug("all_tars") # mainlog.debug(all_tars) # mainlog.debug("Timetracks...") # mainlog.debug(timetracks_tars) # mainlog.debug("Presenec Timetracks...") # mainlog.debug(presence_timetracks) if presence_timetracks == [] and additional_presence_timetracks: presence_timetracks += additional_presence_timetracks timetracks += additional_work_timetracks # mainlog.debug("Augmented Timetracks...") # mainlog.debug(timetracks) # mainlog.debug("Augmented Presence Timetracks...") # for tt in presence_timetracks: # mainlog.debug(tt) y = 0 dy = 60 # Title of the view if view_title: description = QGraphicsSimpleTextItem() description.setText(view_title) description.setFont(self.title_font) br = QRect(0, 0, description.boundingRect().width(), description.boundingRect().height()) description.setPos(0, 0) # y - br.height()/2) scene.addItem(description) y += max(br.height() * 2, dy) # Presence timeline pointages = [] for tar in all_tars: # mainlog.debug(tar) # mainlog.debug(tar.kind == TaskActionReportType.presence) if tar.kind == TaskActionReportType.presence: pointages.append((tar.time, Timeline.NO_DIR, tar, self._hoover_text_for(tar))) elif tar.kind in (TaskActionReportType.day_in, TaskActionReportType.start_task): pointages.append((tar.time, Timeline.START, tar, self._hoover_text_for(tar))) elif tar.kind in (TaskActionReportType.day_out, TaskActionReportType.stop_task): pointages.append( (tar.time, Timeline.END, tar, self._hoover_text_for(tar))) else: raise Exception("Unsupported TAR.kind. I get {}".format( tar.kind)) periods = [] for tt in presence_timetracks: periods.append( (tt.start_time, tt.start_time + timedelta(tt.duration / 24.0), None)) # Show the presence timeline pointages_for_presence = [ p for p in pointages if p[2].kind not in (TaskActionReportType.start_task, TaskActionReportType.stop_task) ] if pointages_for_presence: tl = Timeline(base_time, pointages_for_presence, periods, None, _("Presence"), QColor(Qt.green).darker(150)) tl.draw(scene, y) y += dy # Special activities time line if special_activities: periods = [] for sa in special_activities: desc = None if sa.activity_type: desc = sa.activity_type.description periods.append((sa.start_time, sa.end_time, desc)) tl = Timeline(base_time, None, periods, None, _("Absence"), QColor(Qt.red).darker(150)) tl.draw(scene, y) y += dy # Group task action reports according to their task task_tar = dict() for tar in all_tars: task_id = tar.task_id if task_id and task_id != presence_task_id: if not task_id in task_tar: task_tar[task_id] = [] if tar.kind == TaskActionReportType.start_task: task_tar[task_id].append((tar.time, Timeline.START, tar, self._hoover_text_for(tar))) elif tar.kind == TaskActionReportType.stop_task: task_tar[task_id].append((tar.time, Timeline.END, tar, self._hoover_text_for(tar))) # Group timetracks according to their task task_to_timetracks = dict() for timetrack in timetracks: task_id = timetrack.task_id if task_id and task_id != presence_task_id: if not task_id in task_to_timetracks: task_to_timetracks[task_id] = [] task_to_timetracks[task_id].append(timetrack) # Figure out all the tasks (because each task gives a timeline) # It is quite possible that some timetracks are not associated # to any TAR and vice versa. all_tasks = set() for t in timetracks: if t.task_id: all_tasks.add(t.task_id) for t in all_tars: if t.task_id: all_tasks.add(t.task_id) all_tasks = dao.task_dao.find_by_ids_frozen(all_tasks) # map(lambda t:t.task and all_tasks.add(t.task),timetracks) # map(lambda t:t.task and all_tasks.add(t.task),all_tars) # The presence stuff was drawn on a separate timeline => we won't draw # it here again. # Remove presence task (because it's already drawn). # FIXME I use the ID because of session handling all_tasks = list( filter(lambda t: t.task_id != presence_task_id, all_tasks)) for task in list(sorted(all_tasks, key=lambda a: a.description)): # Not all TAR have a timetrack ! periods = [] if task.task_id in task_to_timetracks: for tt in task_to_timetracks[task.task_id]: periods.append( (tt.start_time, tt.start_time + timedelta(tt.duration / 24.0), None)) tars = [] if task.task_id in task_tar: tars = task_tar[task.task_id] timeline_title = task.description # timeline_title = self._make_time_line_title(task) # This will provide nice and complete bar titles if task.type == TaskOnOperation: tl = Timeline(base_time, tars, periods, task, timeline_title, Qt.blue) else: tl = Timeline(base_time, tars, periods, task, timeline_title, Qt.red) tl.draw(scene, y) y += dy self.setScene(scene) # See the hack top of this method ! self.centerOn(-(self.width() - margin) / 2, (self.height() - margin) / 2)