class AbstractDetective(AbstractPlayer):
    def __init__(self, engine, is_ai=False, name=None):
        super().__init__(engine, is_ai=is_ai)

        icon = choice(icons)
        if name is None:
            name = "Detective " + icon.capitalize()

        iconspath = pkg_resources.resource_filename("ScotlandPYard.resources",
                                                    "icons")
        iconpath = join(iconspath, icon + ".svg")

        self.icon = QGraphicsSvgItem(iconpath)
        self.icon.setScale(0.05)
        self.name = name
        self.tickets = {"Bus": 8, "Taxi": 10, "Underground": 4}

    def get_role(self):
        return "detective"
예제 #2
0
 def __setup_interface(self):
     """
     Initialise user interface elements
     """
     theme = "light_theme.qss"
     if GWASMiner.config.get(section="preferences",
                             option="theme").lower() == "dark":
         theme = "dark_theme.qss"
     self.__load_style(theme)
     self.form.stackedWidget.setGeometry(0, 0, self.window.width(),
                                         self.window.height())
     self.navigate_to_page(0)
     self.form.status_lbl.setHidden(True)
     self.set_loading_visible(True)
     splash_loading_scene = QGraphicsScene()
     main_loading_scene = QGraphicsScene()
     splash_loading_svg = QGraphicsSvgItem("res/loading.svg")
     splash_loading_svg.setScale(0.4)
     main_loading_svg = QGraphicsSvgItem("res/loading.svg")
     main_loading_svg.setScale(0.4)
     splash_loading_scene.addItem(splash_loading_svg)
     main_loading_scene.addItem(main_loading_svg)
     self.form.test_loading_graphicsview.setScene(splash_loading_scene)
     self.form.loading_svg.setScene(main_loading_scene)
class svg_size(QDialog):
    def showEvent(self, event):
        #self.grview.fitInView(self.scene.sceneRect(), Qt.KeepAspectRatio)
        pass

    def standard_size(self):
        # size in sqares times squaresize, minus distance from square borders
        w = self.ui.spin_width.value() * self.squaresize - 10
        h = self.ui.spin_height.value() * self.squaresize - 10

        standard_size = QRectF(0, 0, w, h)
        start_pos = QPointF(self.startpos + 5, self.startpos + 5)
        self.start_bounding_rect = QRectF(self.startpos + 5, self.startpos + 5,
                                          w, h)
        self.accept_rect(standard_size, start_pos)
        self.user_rect.setRect(self.start_bounding_rect)

    def __init__(self,
                 parent=None,
                 original_path=None,
                 icon_path=None,
                 xmax=1100,
                 ymax=1100,
                 squaresize=100):

        super(svg_size, self).__init__(parent)

        # boilerplate initialization
        self.xmax = xmax
        self.ymax = ymax
        self.squaresize = squaresize
        self.ui = size_gui()
        self.ui.setupUi(self)

        self.startpos = 5 * self.squaresize

        self.icon_path = Path(icon_path) if icon_path else None
        self.original_path = Path(original_path) if original_path else None
        self.outfilepath = None

        # set up grahpicsView
        self.grview = MyQGraphicsView(self)
        self.grview.setGeometry(QRect(0, 0, 571, 571))
        self.grview.setContextMenuPolicy(Qt.NoContextMenu)
        self.grview.setFrameShadow(QFrame.Plain)
        self.grview.setSizeAdjustPolicy(QAbstractScrollArea.AdjustIgnored)
        self.grview.setObjectName("graphicsView")

        #self.ui.graphicsView.wheelEvent = my_mouse_wheel_event
        self.scene = myGraphicsScene(
        )  # use my own scene class with the added signal
        self.scene.setSceneRect(0, 0, self.xmax, self.ymax)

        # Paint the grid lines every 100 "svg_points"
        for i in range(0, self.xmax + 1, self.squaresize):
            self.line(i, hori=False)
        for i in range(0, self.ymax + 1, self.squaresize):
            self.line(i, hori=True)

        # start rect and svg with some standard numbers
        self.svg = QGraphicsSvgItem(str(icon_path))
        self.user_rect = GraphicsRectItem(
            QRectF(self.startpos + 5, self.startpos + 5, self.squaresize - 10,
                   self.squaresize - 10))

        # add svg and rect to scene
        self.scene.addItem(self.svg)
        self.scene.addItem(self.user_rect)

        # set sizes according to spinboxes
        start_bounding_rect = self.standard_size()

        # connect interactive elements
        self.ui.spin_height.valueChanged.connect(self.standard_size)
        self.ui.spin_width.valueChanged.connect(self.standard_size)
        self.scene.rect_changed.connect(self.accept_rect)

        # put the graphics on the screen and show
        self.grview.setScene(self.scene)
        #self.grview.fitInView(self.scene.sceneRect(), Qt.KeepAspectRatio)
        self.grview.show()

    def retranslateUI(self):
        _translate = QtCore.QCoreApplication.translate
        self.graphicsView.setToolTip(
            _translate(
                "dialog_symbol_sizing",
                "After width and height are entered, do the last adjustments in this window"
            ))

    def line(self, coord, hori=True):
        if hori:
            self.scene.addLine(0, coord, self.xmax, coord, QPen())
        else:
            self.scene.addLine(coord, 0, coord, self.ymax, QPen())

    def accept_rect(self, rect, pos):
        ''' takes the new coordinates from the moved rectangle and applies them to the svg graphic'''
        br = self.svg.boundingRect()
        relative = min(br.width(), br.height())
        rect_min = min(rect.width(), rect.height())
        scale = rect_min / relative
        self.svg.setScale(scale)
        self.svg_scale = scale

        pos_x = pos.x() + rect.x()
        pos_y = pos.y() + rect.y()
        self.svg.setX(pos_x)
        self.svg.setY(pos_y)
        self.svg_pos = (pos_x % self.squaresize, pos_y % self.squaresize)
예제 #4
0
class Battery(QGraphicsView):
    
    viewUpdate = pyqtSignal()

    def __init__(self,winParent):
        QGraphicsView.__init__(self)
        self.winParent=winParent
        self.viewUpdate.connect(self.update)
        
        self.m_currentValue = 0
        
        self.m_scaleX = 0
        self.m_scaleY = 0
        
        self.m_originalHeight = 245
        self.m_originalWidth = 245
    
        self.m_originalCtr = QPointF(120,120)   
        
        self.m_faceZ = -20
        self.m_caseZ = 10   
        self.m_markZ = -30
        self.m_mark2Z = -30
        self.m_mark3Z = -30
        self.m_mark4Z = -30
        self.m_mark5Z = -30
        
        self.m_itemFace = None
        self.m_itemCase = None 
        self.m_itemMark = None
        self.m_itemMark2 = None
        self.m_itemMark3 = None
        self.m_itemMark4 = None
        self.m_itemMark5 = None
        
        self.setStyleSheet("background: transparent; border: none");
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        self.setInteractive(False)
        self.setEnabled(False)

        self.m_scene = QGraphicsScene(self)
        self.setScene(self.m_scene)
        self.init()
        
    def init (self):
        # os.chdir('/Users/zeyneptuna/Desktop/during_flight/widget/battery')
        
        self.m_scaleX = self.width() / self.m_originalWidth
        self.m_scaleY = self.height() / self.m_originalHeight
    
        self.m_itemFace = QGraphicsSvgItem("widget/battery/battery_face.svg")
        self.m_itemFace.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemFace.setZValue(self.m_faceZ)
        self.m_itemFace.setTransform(QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        self.m_itemFace.setTransformOriginPoint(self.m_originalCtr)
        self.m_scene.addItem(self.m_itemFace)
    
        self.m_itemCase = QGraphicsSvgItem("widget/battery/battery_case.svg")        
        self.m_itemCase.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemCase.setZValue(self.m_caseZ)
        self.m_itemCase.setTransform(QTransform.fromScale(self.m_scaleX, self.m_scaleY), True)
        self.m_itemCase.setTransformOriginPoint(self.m_originalCtr)
        self.m_scene.addItem(self.m_itemCase)
        
        self.m_itemMark = QGraphicsSvgItem("widget/battery/battery_mark.svg")
        self.m_itemMark.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemMark.setZValue(self.m_markZ)
        self.m_itemMark.setPos(57, 120)
        self.m_itemMark.setScale(0.77)
        self.m_scene.addItem(self.m_itemMark)   
        
        self.m_itemMark2 = QGraphicsSvgItem("widget/battery/battery_mark.svg")
        self.m_itemMark2.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemMark2.setZValue(self.m_mark2Z)
        self.m_itemMark2.setPos(57, 92.5)
        self.m_itemMark2.setScale(0.77)
        self.m_scene.addItem(self.m_itemMark2)     
        
        self.m_itemMark3 = QGraphicsSvgItem("widget/battery/battery_mark.svg")
        self.m_itemMark3.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemMark3.setZValue(self.m_mark3Z)
        self.m_itemMark3.setPos(57, 65)
        self.m_itemMark3.setScale(0.77)
        self.m_scene.addItem(self.m_itemMark3)
        
        self.m_itemMark4 = QGraphicsSvgItem("widget/battery/battery_mark.svg")
        self.m_itemMark4.setCacheMode(QGraphicsItem.NoCache)
        self.m_itemMark4.setZValue(self.m_mark4Z)
        self.m_itemMark4.setPos(57, 37.5)
        self.m_itemMark4.setScale(0.77)
        self.m_scene.addItem(self.m_itemMark4)
        
        self.m_itemMark5 = QGraphicsSvgItem("widget/battery/battery_mark.svg")
        self.m_itemMark5.setCacheMode (QGraphicsItem.NoCache)
        self.m_itemMark5.setZValue(self.m_mark5Z)
        self.m_itemMark5.setPos(57, 10)
        self.m_itemMark5.setScale(0.77)
        self.m_scene.addItem(self.m_itemMark5)        
        
        self.centerOn(self.width()/2, self.height()/2)
        self.updateView()
        
    def reinit(self):
        if (self.m_scene):
            self.m_scene.clear()
            self.init()

    def update(self):
        self.updateView()
        
    def setCurrentVal(self, val):
        self.m_currentValue = val
        
    def resizeEvent (self, event):
        QGraphicsView.resizeEvent (self,event)
        self.reinit()

    def reset (self):
        self.m_itemFace = None
        self.m_itemCase = None
        self.m_itemMark = None
        self.m_itemMark2 = None
        self.m_itemMark3 = None
        self.m_itemMark4 = None        
        self.m_itemMark5 = None        
        
        self.m_currentValue =  0
    
    def updateView(self):        
        if self.m_currentValue <= 20:
            self.m_itemMark2.setZValue(-30)
            
        elif self.m_currentValue <= 40:
            self.m_itemMark3.setZValue(-30)
            
        elif self.m_currentValue <= 60: 
            self.m_itemMark4.setZValue(-30)
            
        elif self.m_currentValue <= 80:  
            self.m_itemMark5.setZValue(-30)
            
        elif self.m_currentValue <= 100:
            self.m_itemMark.setZValue(20)
            self.m_itemMark2.setZValue(20)
            self.m_itemMark3.setZValue(20)
            self.m_itemMark4.setZValue(20)
            self.m_itemMark5.setZValue(20)
            
            self.m_scene.update()