コード例 #1
0
    def paint(self, painter, option, index):
        """
                Overloads the base paint method for a QItemDelegate
                to force the overlay color options to be drawn.
                
                :param      painter:
                :type       <QPainter>:
                
                :param      option:
                :type       <QStyleOptionViewItem>:
                
                :param      index:
                :type       <QModelIndex>:
        """
        self.drawBackground(painter, option, index)

        # extract the option's frame range information
        key = index.data(Qt.UserRole).toString()
        if not key:
            return

        pixmap = QPixmap()

        # restore the pixmap from cache
        if not QPixmapCache.find(key, pixmap):
            pixmap.load(settings.iconCachePath("%s.jpg" % key))
            QPixmapCache.insert(key, pixmap)

        # draw the overlay
        painter.drawPixmap(option.rect, pixmap)
コード例 #2
0
class LabelCompartilharImagemRemoto(QLabel):
    def __init__(self, ip, parent=None):
        super().__init__(parent)
        
        self.setAcceptDrops(True)
        self.setText("Arraste e solte uma imagem aqui")

        self._pixmap = None
        
        self._servicoCompartilhar = CompartilharImagemRemoto()
        self._servicoCompartilhar.setPara(ip)
        self._servicoCompartilhar.imagemRecebida.connect(self._mostrarImagem)
        
    def _mostrarImagem(self, imagem):
        self.setPixmap(imagem)
        
    def dragEnterEvent(self, event):
        if event.mimeData().hasUrls():
            url = event.mimeData().urls()[0].toString().strip("file:///")
            
            self._pixmap = QPixmap()
            self._pixmap.load(url)
            if not self._pixmap.isNull():
                event.acceptProposedAction()
    
    def dropEvent(self, event):
        #self.setPixmap(self._pixmap)
        self._servicoCompartilhar.enviarImagem(self._pixmap)
コード例 #3
0
def png(nom):
    u"""Charge l'image <nom>.png depuis le repertoire 'images/'.

    L'image doit être au format png, et son nom doit indiqué sans l'extension '.png'."""
    pixmap = QPixmap()
    pixmap.load(png_pth(nom), 'PNG')
    return pixmap
コード例 #4
0
    def paint(self, painter, option, index):
        """
                Overloads the base paint method for a QItemDelegate
                to force the overlay color options to be drawn.
                
                :param      painter:
                :type       <QPainter>:
                
                :param      option:
                :type       <QStyleOptionViewItem>:
                
                :param      index:
                :type       <QModelIndex>:
        """
        self.drawBackground(painter, option, index)

        # extract the option's frame range information
        key = index.data(Qt.UserRole).toString()
        if (not key):
            return

        pixmap = QPixmap()

        # restore the pixmap from cache
        if (not QPixmapCache.find(key, pixmap)):
            pixmap.load(settings.iconCachePath('%s.jpg' % key))
            QPixmapCache.insert(key, pixmap)

        # draw the overlay
        painter.drawPixmap(option.rect, pixmap)
コード例 #5
0
    def drawOverlay(self, painter, option, index):
        """
                Paints the overlay color for this item if the current thumbnail
                based on whether or not it is the latest thumbnail available
                
                :param      painter:
                :type       <QPainter>:
                
                :param      option:
                :param      <QStyleOptionItem>:
                
                :param      index:
                :type       <QModelIndex>:
        """
        # extract the option's frame range information
        key = index.data(Qt.UserRole).toString()
        if (not key):
            return

        pixmap = QPixmap()

        # restore the pixmap from cache
        if (not QPixmapCache.find(key, pixmap)):
            pixmap.load(settings.iconCachePath('%s.jpg' % key))
            QPixmapCache.insert(key, pixmap)

        # draw the overlay
        painter.drawPixmap(option.rect, pixmap)
コード例 #6
0
    def __filesListReceived_(self):
        """Called when the files listing of the current folder has arrived"""
        if config.DEBUG_GUI:
            print "<-- Received files listing"
        self.__scanned_files_ = self.__scanner_.files
        
        # Add the files to the list and request their previews
        if len(self.__scanned_files_) != 0:
            # Sort by filename (wich is also by date)
            filenames = self.__scanned_files_.keys()
            filenames.sort()
            # Create the Waiting for preview pixmap
            pixmap = QPixmap()
            pixmap.load(config.WAITING_PREVIEW_FILENAME)
            self.__add_black_border_(pixmap)

            # Add the files to the list
            for filename in filenames:
                self.__basewidget_.imageList.addItem(QListWidgetItem(QIcon(pixmap), filename))

            # Request the previews
            if config.DEBUG_GUI:
                print "--> Requesting previews"
            self.__scanner_.getPreviews(filenames)
        else:
            self.__unlock_()
コード例 #7
0
        def drawImage (self, uri):
                uri = IMAGES_DIR + "/" + str(uri)
                image = QPixmap()
                image.load(uri)
                self.ui_.img.setPixmap(image)

                print uri
コード例 #8
0
    def showFeatureDetail(self, errMsg, theFeature):
        strFeatureInfo = self.getFeatureInfoString(theFeature)
        self.textEditFeatureInfo.setText(strFeatureInfo)
        if self.mIsMyFeature(theFeature) == False:
            return

        errMsg = ['']
        day_pic = theFeature.attribute('day_pic')
        arrowimg = theFeature.attribute('arrowimg')
        basePath = r"\\tangpinghui\20151010_nostra_junctionview\output_jpg_and_png"
        day_pic_path = os.path.join(basePath, day_pic + ".psd\Main_Day.jpg")
        arrowimg_path = ''
        tempPath = os.path.join(basePath, day_pic + ".psd")
        for curDir, subDirs, fileNames in os.walk(tempPath):
            for oneFile in fileNames:
                if oneFile.find(arrowimg) != -1 and oneFile.find('_en') != -1:
                    arrowimg_path = os.path.join(curDir, oneFile)

        self.mPixmapList = []
        patternPixmap = QPixmap()
        patternPixmap.load(day_pic_path)
        self.mPixmapList.append(patternPixmap)
        arrowPixmap = QPixmap()
        arrowPixmap.load(arrowimg_path)
        self.mPixmapList.append(arrowPixmap)
        self.showImageInGraphicsView()
        return
コード例 #9
0
    def __previewReceived_(self, filename):
        """Received when a preview has been received
        
        @param filename: The filename of the preview
        @type filename: str
        """
        if config.DEBUG_GUI:
            print "<-- Preview received:", filename
        filename = str(filename)
        preview = self.__scanner_.previews[filename]
        del self.__scanner_.previews[filename]

        # Create the pixmap item
        pixmap = QPixmap()
        if preview == None:
            pixmap.load(config.NO_PREVIEW_FILENAME)
        else:
            pixmap.loadFromData(preview)
            
        # Add a black border
        self.__add_black_border_(pixmap)

        # Add the new icon to the list
        items = self.__basewidget_.imageList.findItems(filename, Qt.MatchExactly)
        items[0].setIcon(QIcon(pixmap))
コード例 #10
0
 def set_file(self, file_path):
     self.clear()
     self.file_path = file_path
     if file_path and os.path.exists(file_path):
         pix_map = QPixmap()
         if file_path.endswith('.jpg'):
             jpg_data = read(file_path)
             str_io = StringIO.StringIO(jpg_data)
             img = Image.open(str_io)
             img.thumbnail((300,300), Image.ANTIALIAS)
             png_data = StringIO.StringIO()
             mode = img.mode
             if mode not in ('L', 'RGB'):
                 if mode == 'RGBA':
                     alpha = img.split()[3]
                     bg_mask = alpha.point(lambda x: 255 - x)
                     img = img.convert('RGB')
                     img.paste((255, 255, 255), None, bg_mask)
                 else:
                     img = img.convert('RGB')
             img.save(png_data, format='png')
             pix_map.loadFromData(QtCore.QByteArray(png_data.getvalue()))
         else:
             pix_map.load(file_path)
         self.addPixmap(pix_map)
コード例 #11
0
    def drawOverlay(self, painter, option, index):
        """
                Paints the overlay color for this item if the current thumbnail
                based on whether or not it is the latest thumbnail available
                
                :param      painter:
                :type       <QPainter>:
                
                :param      option:
                :param      <QStyleOptionItem>:
                
                :param      index:
                :type       <QModelIndex>:
        """
        # extract the option's frame range information
        key = index.data(Qt.UserRole).toString()
        if not key:
            return

        pixmap = QPixmap()

        # restore the pixmap from cache
        if not QPixmapCache.find(key, pixmap):
            pixmap.load(settings.iconCachePath("%s.jpg" % key))
            QPixmapCache.insert(key, pixmap)

        # draw the overlay
        painter.drawPixmap(option.rect, pixmap)
コード例 #12
0
    def data(self, index, role):

        #
        if role == Qt.BackgroundColorRole and (
                index.column() == self.ColumnID.Fix
                or index.column() == self.ColumnID.FixIcon):
            row = index.row()
            value = self._elements[row]
            if value.isFixed:
                color = QColor(Qt.red)

                color.setAlphaF(0.5)
                return QVariant(color)

        if role == Qt.DisplayRole and index.column() == self.ColumnID.Text:
            row = index.row()
            value = self._elements[row]
            return value.density

        if role == Qt.DisplayRole and index.column() == self.ColumnID.Fix:
            row = index.row()
            value = self._elements[row]

            return value.fixvalue

        if role == Qt.DecorationRole and index.column() == self.ColumnID.Color:
            row = index.row()
            value = self._elements[row]
            pixmap = QPixmap(_NPIXELS, _NPIXELS)
            pixmap.fill(value.color)
            icon = QIcon(pixmap)
            return icon

        if role == Qt.DecorationRole and index.column(
        ) == self.ColumnID.FixIcon:
            row = index.row()
            value = self._elements[row]

            pixmap = QPixmap(_NPIXELS, _NPIXELS)

            if value.isFixed:
                iconpath = os.path.join(
                    os.path.split(__file__)[0], 'icons/lock-edit-icon-32.png')
            else:
                iconpath = os.path.join(
                    os.path.split(__file__)[0], 'icons/lock_open-32.png')
            pixmap.load(iconpath)
            icon = QIcon(pixmap)

            return icon

        return super(BoxListModel, self).data(index, role)
コード例 #13
0
 def displayIcon(self, summoner_name):
     iconName = self.summoner.getIcon(summoner_name)
     iconPixmap = QPixmap()
     self.icon_label.setStyleSheet(
         "QLabel {border-style: outset; border-width: 3px; border-color: gold}"
     )
     try:
         iconPixmap.loadFromData(
             self.summoner.getImage('profileicon', iconName))
         self.icon_label.setPixmap(iconPixmap)
     except RiotError:
         iconPixmap.load("./images/no_image.png")
         self.icon_label.setPixmap(iconPixmap)
コード例 #14
0
ファイル: sliceSelectorHud.py プロジェクト: CVML/volumina
def _load_icon(filename, backgroundColor, width, height):
    foreground = QPixmap()
    foreground.load(filename)
    pixmap = QPixmap(foreground.size())
    pixmap.fill(backgroundColor)

    painter = QPainter()
    painter.begin(pixmap)
    painter.drawPixmap(QPointF(0, 0), foreground)
    painter.end()

    pixmap = pixmap.scaled(QSize(width, height), Qt.KeepAspectRatio, Qt.SmoothTransformation)
    return pixmap
コード例 #15
0
    def data(self, index, role):
            
#         
        if role == Qt.BackgroundColorRole and (index.column() == self.ColumnID.Fix or index.column() == self.ColumnID.FixIcon):
            row = index.row()
            value = self._elements[row]
            if value.isFixed:
                color=QColor(Qt.red)
                
                color.setAlphaF(0.5)
                return QVariant(color)
        
        if role == Qt.DisplayRole and index.column() == self.ColumnID.Text:
            row = index.row()
            value = self._elements[row]
            return value.density
        
        if role == Qt.DisplayRole and index.column() == self.ColumnID.Fix:
            row = index.row()
            value = self._elements[row]
            
            return value.fixvalue
                
        if role == Qt.DecorationRole and index.column() == self.ColumnID.Color:
            row = index.row()
            value = self._elements[row]
            pixmap = QPixmap(_NPIXELS, _NPIXELS)
            pixmap.fill(value.color)
            icon = QIcon(pixmap)
            return icon
        
        if role == Qt.DecorationRole and index.column() == self.ColumnID.FixIcon:
            row = index.row()
            value = self._elements[row]
                
            pixmap = QPixmap(_NPIXELS,_NPIXELS)
            
            if value.isFixed:
                iconpath=os.path.join(os.path.split(__file__)[0],
                                      'icons/lock-edit-icon-32.png')
            else:
                iconpath=os.path.join(os.path.split(__file__)[0],
                                      'icons/lock_open-32.png')       
            pixmap.load(iconpath)
            icon = QIcon(pixmap)
            
            return icon
        
        
        
        return super(BoxListModel,self).data(index, role)
コード例 #16
0
ファイル: surfaceManager.py プロジェクト: tuturto/pyherc
    def __load_image(self, image_name):
        """
        Load a file and return corresponding surface object

        :param image_name: file name
        :type image_name: string

        :returns: image
        :rtype: QPixmap
        """
        image = QPixmap()
        image.load(image_name)

        return image
コード例 #17
0
    def __load_image(self, image_name):
        """
        Load a file and return corresponding surface object

        :param image_name: file name
        :type image_name: string

        :returns: image
        :rtype: QPixmap
        """
        image = QPixmap()
        image.load(image_name)

        return image
コード例 #18
0
def _load_icon(filename, backgroundColor, width, height):
    foreground = QPixmap()
    foreground.load(filename)
    pixmap = QPixmap(foreground.size())
    pixmap.fill(backgroundColor)

    painter = QPainter()
    painter.begin(pixmap)
    painter.drawPixmap(QPointF(0, 0), foreground)
    painter.end()

    pixmap = pixmap.scaled(QSize(width, height), Qt.KeepAspectRatio,
                           Qt.SmoothTransformation)
    return pixmap
コード例 #19
0
ファイル: htmlviewer.py プロジェクト: vpicavet/Roam
def openimage(url):
    key = url.toString().lstrip('file://')
    try:
        data, imagetype = images[os.path.basename(key)]
    except KeyError:
        # It's not a image so lets just pass it of as a normal
        # URL
        QDesktopServices.openUrl(url)
        return

    pix = QPixmap()
    if imagetype == 'base64':
        pix.loadFromData(data)
    else:
        pix.load(data)
    utils.openImageViewer(pix)
コード例 #20
0
 def store_file(self, id, file):
     directory = ApplicationData.get('images')
     filename = os.path.join(directory, id + '.png')
     if filename == os.path.normpath(file):
         return self.iconmap.get(id, None)
     makedirs(directory)
     pixmap = QPixmap()
     if file is not None and pixmap.load(file):
         if pixmap.size().width() > self.max_size or pixmap.size().height(
         ) > self.max_size:
             pixmap = pixmap.scaled(self.max_size, self.max_size,
                                    Qt.KeepAspectRatio,
                                    Qt.SmoothTransformation)
         buffer = QBuffer()
         pixmap.save(buffer, 'png')
         data = str(buffer.data())
         with open(filename, 'wb') as f:
             f.write(data)
         icon = QIcon(pixmap)
         icon.filename = filename
         icon.content = data
     else:
         unlink(filename)
         icon = None
     self.iconmap[id] = icon
     return icon
コード例 #21
0
ファイル: __init__.py プロジェクト: Munk801/QTProjectStarter
	def getProjectsBanner(self):
		projectName = str(self.ui.ProjectsEDIT.text())
		# Don't requery for the project banner if its there
		if self.currentProjectName == projectName:
			return
		self.currentProjectName = projectName
		self.ui.ProjectsEDIT.currentProject = Project.recordByName(projectName)
		sgProj = sg.find_one(
			"Project",
			[["name", "is", projectName]], ["billboard"]
		)
		if sgProj:
			if sgProj["billboard"]:
				billboardPath = sgProj["billboard"]["url"]
				if billboardPath:
					urllib.urlretrieve(billboardPath, self.BANNERPATH)
					if os.path.exists(self.BANNERPATH):
						bannerPixmap = QPixmap(
							self.ui.ProjectBannerView.maximumWidth(),
							self.ui.ProjectBannerView.maximumHeight()
						)
						didLoad = bannerPixmap.load(self.BANNERPATH)
						# We actually don't care about the height
						# since this will be clamped from the width
						self.ui.ProjectBannerView.setPixmap(
							bannerPixmap.scaled(244, 200, Qt.KeepAspectRatio)
						)
						self.ui.ProjectBannerView.setAlignment(Qt.AlignCenter)
						self.ui.ProjectBannerView.setScaledContents(True)
						# For some reason, calling the window repaint
						# fixes the issue with the flickering
						self.ui.header.show()
						self.repaint()
						self.parent.repaint()
コード例 #22
0
ファイル: desk.py プロジェクト: mafagan/FineSonChess
class Desk(QLabel):
    def __init__(self, deskID):
        QLabel.__init__(self)
        self.ID = deskID
        self.setupUI()
        pass

    def setupUI(self):
        self.setFixedSize(QSize(120, 120))

        self.desk = QPixmap()
        self.desk.load("img\\desk.png")
        self.setPixmap(self.desk)


    def mousePressEvent(self, QMouseEvent):
        pass
コード例 #23
0
ファイル: labels.py プロジェクト: grengojbo/blink-qt
 def _set_filename(self, filename):
     self.__dict__['filename'] = filename
     filename = ApplicationData.get(filename) if filename else Resources.get(self.default_icon)
     pixmap = QPixmap()
     if pixmap.load(filename):
         self.setPixmap(pixmap.scaled(32, 32, Qt.KeepAspectRatio, Qt.SmoothTransformation))
     else:
         self.setPixmap(pixmap)
コード例 #24
0
ファイル: lineedit.py プロジェクト: kevinlovesing/blink-qt
 def __init__(self, parent=None, size=16):
     QWidget.__init__(self, parent)
     self.setFocusPolicy(Qt.NoFocus)
     self.setVisible(True)
     self.setMinimumSize(size+2, size+2)
     pixmap = QPixmap()
     if pixmap.load(Resources.get("icons/search.svg")):
         self.icon = pixmap.scaled(size, size, Qt.KeepAspectRatio, Qt.SmoothTransformation)
     else:
         self.icon = None
コード例 #25
0
ファイル: accounts.py プロジェクト: grengojbo/sipclients
 def _NH_SIPAccountManagerDidAddAccount(self, notification):
     account = notification.data.account
     icon = None
     if account is BonjourAccount():
         pixmap = QPixmap()
         if pixmap.load(Resources.get("icons/bonjour.png")):
             pixmap = pixmap.scaled(16, 16, Qt.KeepAspectRatio, Qt.SmoothTransformation)
             icon = QIcon(pixmap)
     self.beginInsertRows(QModelIndex(), len(self.accounts), len(self.accounts))
     self.accounts.append(AccountInfo(account, icon))
     self.endInsertRows()
コード例 #26
0
ファイル: lineedit.py プロジェクト: webodf/blink-qt
 def __init__(self, parent=None, size=16):
     QWidget.__init__(self, parent)
     self.setFocusPolicy(Qt.NoFocus)
     self.setVisible(True)
     self.setMinimumSize(size + 2, size + 2)
     pixmap = QPixmap()
     if pixmap.load(Resources.get("icons/search.svg")):
         self.icon = pixmap.scaled(size, size, Qt.KeepAspectRatio,
                                   Qt.SmoothTransformation)
     else:
         self.icon = None
コード例 #27
0
ファイル: widgets.py プロジェクト: marad/deadline-framework
class Model(QAbstractListModel):

	def __init__(self, parent = None):
		QAbstractListModel.__init__(self, parent)
		self.list = []
		self.strategies = parent
		self.play = QPixmap()
		self.play.load("img/Play.png")
		self.none = QPixmap(32, 32)
		self.none.fill(QColor(0, 0, 0, 0))

	def add(self, obj):
		self.list.append(obj)
		index = QModelIndex()
		self.dataChanged.emit(index, index)

	def remove(self, index):
		del self.list[index.row()]
		self.dataChanged.emit(index.child(0, 1), index.child(len(self.list), 1))

	def rowCount(self, parent):
		return len(self.list)

	def data(self, index, role):
		#print index
		if index.row() < 0 or index.row() >= len(self.list):
			return None

		if role == Qt.DisplayRole:
			return unicode(self.list[index.row()].name())

		elif role == Qt.DecorationRole:
			module = self.list[index.row()]
			if module == self.strategies.activeStrategy:
				return self.play
			else:
				return self.none

	def get(self, index):
		return self.list[index.row()]
コード例 #28
0
ファイル: qiconloader.py プロジェクト: pardus-anka/pds
    def findIconHelper(self, size=int, themeName=str, iconName=str):
        pixmap = QPixmap()

        if iconName == '' or self.themeName == '':
            return pixmap

        if themeName == '':
            themeName = self.themeName

        if themeName == self.themeName:
            index = self.themeIndex
        else:
            index = self.readThemeIndex(themeName)

        subDirs = filter(lambda x: x[0] == size, index.dirList)
        for iconDir in self.iconDirs:
            if path.exists(path.join(iconDir, themeName)):
                for theme in subDirs:
                    fileName = path.join(iconDir, themeName, theme[1],
                                         '%s.png' % str(iconName))
                    logging.debug('Looking for : %s' % fileName)
                    if path.exists(fileName):
                        pixmap.load(fileName)
                        logging.debug('Icon: %s found in theme %s' % \
                                (iconName, themeName))
                        return pixmap

        for iconDir in self.extraIcons:
            fileName = path.join(iconDir, '%s.png' % str(iconName))
            if path.exists(fileName):
                pixmap.load(fileName)
                logging.debug('Icon: %s found in %s' % (iconName, iconDir))
                return pixmap

        if len(self._themes) > 0:
            self._themes.pop(0)
            if not len(self._themes) == 0 and pixmap.isNull():
                pixmap = self.findIconHelper(size, self._themes[0], iconName)
        return pixmap
コード例 #29
0
ファイル: qiconloader.py プロジェクト: Pardus-Linux/pds
    def findIconHelper(self, size = int, themeName = str, iconName = str):
        pixmap = QPixmap()

        if iconName == '' or self.themeName == '':
            return pixmap

        if themeName == '':
            themeName = self.themeName

        if themeName == self.themeName:
            index = self.themeIndex
        else:
            index = self.readThemeIndex(themeName)

        subDirs = filter(lambda x:x[0] == size, index.dirList)
        for iconDir in self.iconDirs:
            if path.exists(path.join(iconDir, themeName)):
                for theme in subDirs:
                    fileName = path.join(iconDir, themeName, theme[1],
                            '%s.png' % str(iconName))
                    logging.debug('Looking for : %s' % fileName)
                    if path.exists(fileName):
                        pixmap.load(fileName)
                        logging.debug('Icon: %s found in theme %s' % \
                                (iconName, themeName))
                        return pixmap

        for iconDir in self.extraIcons:
            fileName = path.join(iconDir, '%s.png' % str(iconName))
            if path.exists(fileName):
                pixmap.load(fileName)
                logging.debug('Icon: %s found in %s' % (iconName, iconDir))
                return pixmap

        if len(self._themes) > 0:
            self._themes.pop(0)
            if not len(self._themes) == 0 and pixmap.isNull():
                pixmap = self.findIconHelper(size, self._themes[0], iconName)
        return pixmap
コード例 #30
0
ファイル: gui.py プロジェクト: meloi/almoviesrenamer
    def check_connection(self):
        """
        checks if internet connection is up.
        
        if internet connection is down, notifies the user with a message.
        """

        try:
            # try to open a web URL
            f = urllib2.urlopen("http://www.google.com/")
        except URLError:
            # if an error occurs, notify the user with a message
            msg_box = QMessageBox()
            msg_box.setWindowTitle(QApplication.translate('GUI', "Internet connection down?"))
            msg_box.setText(QApplication.translate('GUI', """
<p>It seems your internet connection is down (but maybe I'm wrong).</p>
<p>That program needs access to the internet, to get information about movies, so please check your connection.</p>
<p>If I'm wrong, sorry for the interruption...</p>
            """))
            icon = QPixmap()
            icon.load('icons/exclamation.png')
            msg_box.setIconPixmap(icon)
            msg_box.exec_()
コード例 #31
0
 def viewurl(self, url):
     """
     Open a URL in Roam
     :param url:
     :return:
     """
     key = url.toString().lstrip('file://')
     try:
         # Hack. Eww fix me.
         data, imagetype = roam.htmlviewer.images[os.path.basename(key)]
         pix = QPixmap()
         if imagetype == 'base64':
             pix.loadFromData(data)
         else:
             pix.load(data)
         self.openimage(pix)
     except KeyError:
         pix = QPixmap()
         pix.load(key)
         if pix.isNull():
             QDesktopServices.openUrl(url)
             return
         self.openimage(pix)
コード例 #32
0
 def viewurl(self, url):
     """
     Open a URL in Roam
     :param url:
     :return:
     """
     key = url.toString().lstrip('file://')
     try:
         # Hack. Eww fix me.
         data, imagetype = roam.htmlviewer.images[os.path.basename(key)]
         pix = QPixmap()
         if imagetype == 'base64':
             pix.loadFromData(data)
         else:
             pix.load(data)
         self.openimage(pix)
     except KeyError:
         pix = QPixmap()
         pix.load(key)
         if pix.isNull():
             QDesktopServices.openUrl(url)
             return
         self.openimage(pix)
コード例 #33
0
ファイル: mainwindow.py プロジェクト: SFrav/Roam
    def viewurl(self, url):
        """
        Open a URL in Roam
        :param url:
        :return:
        """
        key = url.toString().lstrip('file://')
        try:
            # Hack. Eww fix me.
            data, imagetype = roam.htmlviewer.images[os.path.basename(key)]
        except KeyError:
            # It's not a image so lets just pass it of as a normal
            # URL
            QDesktopServices.openUrl(url)
            return

        pix = QPixmap()
        if imagetype == 'base64':
            pix.loadFromData(data)
        else:
            pix.load(data)

        self.openimage(pix)
コード例 #34
0
ファイル: mainwindow.py プロジェクト: grengojbo/blink-qt
 def set_user_icon(self, image_file_name):
     pixmap = QPixmap(32, 32)
     pixmap.fill(QColor(Qt.transparent))
     painter = QPainter(pixmap)
     painter.setRenderHint(QPainter.Antialiasing, True)
     painter.setBrush(QBrush(Qt.white))
     painter.setPen(QPen(painter.brush(), 0, Qt.NoPen))
     #painter.drawRoundedRect(0, 0, 32, 32, 6, 6)
     painter.drawRoundedRect(0, 0, 32, 32, 0, 0)
     icon = QPixmap()
     if icon.load(image_file_name):
         icon = icon.scaled(32, 32, Qt.KeepAspectRatio, Qt.SmoothTransformation)
         painter.setCompositionMode(QPainter.CompositionMode_SourceOver)
         painter.drawPixmap(0, 0, icon)
     painter.end()
     self.image.setPixmap(pixmap)
コード例 #35
0
ファイル: pixmapbutton.py プロジェクト: dmlloyd/Carla
class PixmapButton(QPushButton):
    def __init__(self, parent):
        QPushButton.__init__(self, parent)

        self.fPixmapNormal = QPixmap()
        self.fPixmapDown   = QPixmap()
        self.fPixmapHover  = QPixmap()
        self.fPixmapRect   = QRectF(0, 0, 0, 0)

        self.fIsHovered = False

        self.setText("")

    def setPixmaps(self, normal, down, hover):
        self.fPixmapNormal.load(normal)
        self.fPixmapDown.load(down)
        self.fPixmapHover.load(hover)

        width  = self.fPixmapNormal.width()
        height = self.fPixmapNormal.height()

        self.fPixmapRect = QRectF(0, 0, width, height)

        self.setMinimumSize(width, height)
        self.setMaximumSize(width, height)

    def enterEvent(self, event):
        self.fIsHovered = True
        QPushButton.enterEvent(self, event)

    def leaveEvent(self, event):
        self.fIsHovered = False
        QPushButton.leaveEvent(self, event)

    def paintEvent(self, event):
        painter = QPainter(self)
        event.accept()

        if not self.isEnabled():
            painter.save()
            painter.setOpacity(0.2)
            painter.drawPixmap(self.fPixmapRect, self.fPixmapNormal, self.fPixmapRect)
            painter.restore()

        elif self.isChecked() or self.isDown():
            painter.drawPixmap(self.fPixmapRect, self.fPixmapDown, self.fPixmapRect)

        elif self.fIsHovered:
            painter.drawPixmap(self.fPixmapRect, self.fPixmapHover, self.fPixmapRect)

        else:
            painter.drawPixmap(self.fPixmapRect, self.fPixmapNormal, self.fPixmapRect)
コード例 #36
0
ファイル: board_show.py プロジェクト: mafagan/FineSonChess
class Board(QLabel):
    def __init__(self, layoutWidget):
        QLabel.__init__(self, layoutWidget)
        self.resize(490,490)

        #建立棋盘
        self.board = QPixmap()
        self.board.load("img\\board.png")
        self.setPixmap(self.board)

        self.whiteChess = QPixmap()
        self.whiteChess.load("img\\white.png")

        self.blackChess = QPixmap()
        self.blackChess.load("img\\black.png")

        self.boardArray = [[0 for col in range(15)] for row in range(15)]
    def mousePressEvent(self, QMouseEvent):
        self.setPixmap(self.board)
        x = None
        if ((QMouseEvent.x() - 20) % 32) < 16:
            x = (QMouseEvent.x() - 20) / 32
        else:
            x = ((QMouseEvent.x() - 20) / 32 + 1)

        y = None
        if ((QMouseEvent.y() - 20) % 32) < 16:
            y = (QMouseEvent.y() - 20) / 32
        else:
            y = ((QMouseEvent.y() - 20) / 32 + 1)

        if (x >= 15) | (y >= 15):
            return

        if self.boardArray[x][y] == 1:
            self.boardArray[x][y] = 0
        else:
            self.boardArray[x][y] = 1

        self.update()
    def paintEvent(self, QPaintEvent):
        QLabel.paintEvent(self, QPaintEvent)
        painter = QPainter(self)

        for i in range(15):
            for j in range(15):
                if self.boardArray[i][j] == 1:
                    painter.drawPixmap(i * 32 + 5, j * 32 + 5, self.whiteChess)

    def setBoardImg(self):
        self.setPixmap(self.board)
コード例 #37
0
ファイル: resources.py プロジェクト: grengojbo/blink-qt
 def store(self, filename, pixmap=None):
     if filename is None:
         return None
     if not os.path.isabs(filename):
         return filename
     if filename.startswith(ApplicationData.directory + os.path.sep):
         return filename[len(ApplicationData.directory + os.path.sep):]
     try:
         file_mapping = self.filemap[filename]
     except KeyError:
         pass
     else:
         source_info = FileInfo(filename)
         destination_info = FileInfo(file_mapping.destination.name)
         if (source_info, destination_info) == (file_mapping.source, file_mapping.destination):
             return destination_info.name
     try:
         destination_name = os.path.join('images', self.available_names.popleft())
     except IndexError:
         # No more available file names. Return original file for now
         return filename
     if pixmap is None:
         pixmap = QPixmap()
         if pixmap.load(filename):
             pixmap = pixmap.scaled(32, 32, Qt.KeepAspectRatio, Qt.SmoothTransformation)
     makedirs(ApplicationData.get('images'))
     if pixmap.save(ApplicationData.get(destination_name)):
         source_info = FileInfo(filename)
         destination_info = FileInfo(destination_name)
         file_mapping = FileMapping(source_info, destination_info)
         self.filemap[filename] = file_mapping
         map_filename = ApplicationData.get(os.path.join('images', '.cached_icons.map'))
         map_tempname = map_filename + '.tmp'
         try:
             file = open(map_tempname, 'wb')
             pickle.dump(self.filemap, file)
             file.close()
             if sys.platform == 'win32':
                 unlink(map_filename)
             os.rename(map_tempname, map_filename)
         except Exception, e:
             log.error("could not save icon cache file mappings: %s" % e)
         return destination_name
コード例 #38
0
ファイル: lineedit.py プロジェクト: kevinlovesing/blink-qt
 def __init__(self, parent=None, size=16):
     QAbstractButton.__init__(self, parent)
     self.setCursor(Qt.ArrowCursor)
     self.setFocusPolicy(Qt.NoFocus)
     self.setToolTip(u"Clear")
     self.setVisible(False)
     self.setMinimumSize(size+2, size+2)
     pixmap = QPixmap()
     if pixmap.load(Resources.get("icons/delete.svg")):
         self.icon = pixmap.scaled(size, size, Qt.KeepAspectRatio, Qt.SmoothTransformation)
         # Use QImage because QPainter using a QPixmap does not support CompositionMode_Multiply -Dan
         image = self.icon.toImage()
         painter = QPainter(image)
         painter.setRenderHint(QPainter.Antialiasing, True)
         painter.setCompositionMode(QPainter.CompositionMode_Multiply)
         painter.drawPixmap(0, 0, self.icon)
         painter.end()
         self.icon_pressed = QPixmap(image)
     else:
         self.icon = self.icon_pressed = None
コード例 #39
0
ファイル: lineedit.py プロジェクト: webodf/blink-qt
 def __init__(self, parent=None, size=16):
     QAbstractButton.__init__(self, parent)
     self.setCursor(Qt.ArrowCursor)
     self.setFocusPolicy(Qt.NoFocus)
     self.setToolTip(u"Clear")
     self.setVisible(False)
     self.setMinimumSize(size + 2, size + 2)
     pixmap = QPixmap()
     if pixmap.load(Resources.get("icons/delete.svg")):
         self.icon = pixmap.scaled(size, size, Qt.KeepAspectRatio,
                                   Qt.SmoothTransformation)
         # Use QImage because QPainter using a QPixmap does not support CompositionMode_Multiply -Dan
         image = self.icon.toImage()
         painter = QPainter(image)
         painter.setRenderHint(QPainter.Antialiasing, True)
         painter.setCompositionMode(QPainter.CompositionMode_Multiply)
         painter.drawPixmap(0, 0, self.icon)
         painter.end()
         self.icon_pressed = QPixmap(image)
     else:
         self.icon = self.icon_pressed = None
コード例 #40
0
ファイル: helper.py プロジェクト: davidmorrill/facets
def pixmap_cache ( name ):
    """ Return the QPixmap corresponding to a filename.  If the filename does
        not contain a path component then the local 'images' directory is used.
    """
    if name[:1] == '@':
        image = image_for( name )
        if image is not None:
            return image.bitmap

    path, _ = split( name )
    if not path:
        name = join( dirname( __file__ ), 'images', name )

    pm = QPixmap()

    if not QPixmapCache.find( name, pm ):
        if not pm.load( name ) :
            print "WARNING: could not load pixmap file", name

        QPixmapCache.insert( name, pm )

    return pm
コード例 #41
0
ファイル: resources.py プロジェクト: pol51/blink-qt
 def store_file(self, id, file):
     directory = ApplicationData.get('images')
     filename = os.path.join(directory, id + '.png')
     if filename == os.path.normpath(file):
         return self.iconmap.get(id, None)
     makedirs(directory)
     pixmap = QPixmap()
     if file is not None and pixmap.load(file):
         if pixmap.size().width() > self.max_size or pixmap.size().height() > self.max_size:
             pixmap = pixmap.scaled(self.max_size, self.max_size, Qt.KeepAspectRatio, Qt.SmoothTransformation)
         buffer = QBuffer()
         pixmap.save(buffer, 'png')
         data = str(buffer.data())
         with open(filename, 'wb') as f:
             f.write(data)
         icon = QIcon(pixmap)
         icon.filename = filename
         icon.content = data
     else:
         unlink(filename)
         icon = None
     self.iconmap[id] = icon
     return icon
コード例 #42
0
ファイル: frames.py プロジェクト: kevinlovesing/blink-qt
class BackgroundFrame(QFrame):
    backgroundColor = QtDynamicProperty('backgroundColor', unicode)
    backgroundImage = QtDynamicProperty('backgroundImage', unicode)
    imageGeometry   = QtDynamicProperty('imageGeometry', QRect)

    def __init__(self, parent=None):
        super(BackgroundFrame, self).__init__(parent)
        self.backgroundColor = None
        self.backgroundImage = None
        self.imageGeometry = None
        self.pixmap = None
        self.scaled_pixmap = None

    @property
    def image_position(self):
        return QPoint(0, 0) if self.imageGeometry is None else self.imageGeometry.topLeft()

    @property
    def image_size(self):
        if self.imageGeometry is not None:
            size = self.imageGeometry.size().expandedTo(QSize(0, 0)) # requested size with negative values turned to 0
            if size.isNull():
                return size if self.pixmap is None else self.pixmap.size()
            elif size.width() == 0:
                return size.expandedTo(QSize(16777215, 0))
            elif size.height() == 0:
                return size.expandedTo(QSize(0, 16777215))
            else:
                return size
        elif self.pixmap:
            return self.pixmap.size()
        else:
            return QSize(0, 0)

    def event(self, event):
        if event.type() == QEvent.DynamicPropertyChange:
            if event.propertyName() == 'backgroundImage':
                self.pixmap = QPixmap()
                if self.backgroundImage and self.pixmap.load(Resources.get(self.backgroundImage)):
                    self.scaled_pixmap = self.pixmap.scaled(self.image_size, Qt.KeepAspectRatio, Qt.SmoothTransformation)
                else:
                    self.pixmap = self.scaled_pixmap = None
                self.update()
            elif event.propertyName() == 'imageGeometry' and self.pixmap:
                self.scaled_pixmap = self.pixmap.scaled(self.image_size, Qt.KeepAspectRatio, Qt.SmoothTransformation)
                self.update()
            elif event.propertyName() == 'backgroundColor':
                self.update()
        return super(BackgroundFrame, self).event(event)

    def resizeEvent(self, event):
        self.scaled_pixmap = self.pixmap and self.pixmap.scaled(self.image_size, Qt.KeepAspectRatio, Qt.SmoothTransformation)

    def paintEvent(self, event):
        super(BackgroundFrame, self).paintEvent(event)
        painter = QPainter(self)
        if self.backgroundColor:
            painter.fillRect(self.rect(), QColor(self.backgroundColor))
        if self.scaled_pixmap is not None:
            painter.drawPixmap(self.image_position, self.scaled_pixmap)
        painter.end()
コード例 #43
0
ファイル: pixmapkeyboard.py プロジェクト: kayosiii/Cadence
class PixmapKeyboard(QWidget):
    COLOR_CLASSIC = 0
    COLOR_ORANGE = 1

    HORIZONTAL = 0
    VERTICAL = 1

    def __init__(self, parent):
        QWidget.__init__(self, parent)

        self.m_octaves = 6
        self.m_lastMouseNote = -1

        self.m_needsUpdate = False
        self.m_enabledKeys = []

        self.m_font = QFont("Monospace", 8, QFont.Normal)
        self.m_pixmap = QPixmap("")

        self.setMode(self.HORIZONTAL)

    def sendNoteOn(self, note, sendSignal=True):
        if 0 <= note <= 127 and note not in self.m_enabledKeys:
            self.m_enabledKeys.append(note)
            if sendSignal:
                self.emit(SIGNAL("noteOn(int)"), note)

            self.m_needsUpdate = True
            QTimer.singleShot(0, self, SLOT("slot_updateOnce()"))

        if len(self.m_enabledKeys) == 1:
            self.emit(SIGNAL("notesOn()"))

    def sendNoteOff(self, note, sendSignal=True):
        if 0 <= note <= 127 and note in self.m_enabledKeys:
            self.m_enabledKeys.remove(note)
            if sendSignal:
                self.emit(SIGNAL("noteOff(int)"), note)

            self.m_needsUpdate = True
            QTimer.singleShot(0, self, SLOT("slot_updateOnce()"))

        if len(self.m_enabledKeys) == 0:
            self.emit(SIGNAL("notesOff()"))

    def setMode(self, mode, color=COLOR_ORANGE):
        if color == self.COLOR_CLASSIC:
            self.m_colorStr = "classic"
        elif color == self.COLOR_ORANGE:
            self.m_colorStr = "orange"
        else:
            qCritical("PixmapKeyboard::setMode(%i, %i) - Invalid keyboard color" % (mode, color))
            return self.setMode(mode)

        if mode == self.HORIZONTAL:
            self.m_midi_map = midi_key2rect_map_horizontal
            self.m_pixmap.load(":/bitmaps/kbd_h_%s.png" % self.m_colorStr)
            self.m_pixmap_mode = self.HORIZONTAL
            self.p_width  = self.m_pixmap.width()
            self.p_height = self.m_pixmap.height() / 2
        elif mode == self.VERTICAL:
            self.m_midi_map = midi_key2rect_map_vertical
            self.m_pixmap.load(":/bitmaps/kbd_v_%s.png" % self.m_colorStr)
            self.m_pixmap_mode = self.VERTICAL
            self.p_width  = self.m_pixmap.width() / 2
            self.p_height = self.m_pixmap.height()
        else:
            qCritical("PixmapKeyboard::setMode(%i, %i) - Invalid keyboard mode" % (mode, color))
            return self.setMode(self.HORIZONTAL)

        self.setOctaves(self.m_octaves)

    def setOctaves(self, octaves):
        if octaves < 1:
            octaves = 1
        elif octaves > 6:
            octaves = 6
        self.m_octaves = octaves

        if self.m_pixmap_mode == self.HORIZONTAL:
            self.setMinimumSize(self.p_width * self.m_octaves, self.p_height)
            self.setMaximumSize(self.p_width * self.m_octaves, self.p_height)
        elif self.m_pixmap_mode == self.VERTICAL:
            self.setMinimumSize(self.p_width, self.p_height * self.m_octaves)
            self.setMaximumSize(self.p_width, self.p_height * self.m_octaves)

        self.update()

    def keyPressEvent(self, event):
        qKey = str(event.key())

        if qKey in midi_keyboard2key_map.keys():
            self.sendNoteOn(midi_keyboard2key_map.get(qKey))

        QWidget.keyPressEvent(self, event)

    def keyReleaseEvent(self, event):
        qKey = str(event.key())

        if qKey in midi_keyboard2key_map.keys():
            self.sendNoteOff(midi_keyboard2key_map.get(qKey))

        QWidget.keyReleaseEvent(self, event)

    def mousePressEvent(self, event):
        self.m_lastMouseNote = -1
        self.handleMousePos(event.pos())
        self.setFocus()
        QWidget.mousePressEvent(self, event)

    def mouseMoveEvent(self, event):
        self.handleMousePos(event.pos())
        QWidget.mousePressEvent(self, event)

    def mouseReleaseEvent(self, event):
        if self.m_lastMouseNote != -1:
            self.sendNoteOff(self.m_lastMouseNote)
            self.m_lastMouseNote = -1
        QWidget.mouseReleaseEvent(self, event)

    def handleMousePos(self, pos):
        if self.m_pixmap_mode == self.HORIZONTAL:
            if pos.x() < 0 or pos.x() > self.m_octaves * 144:
                return
            octave = int(pos.x() / self.p_width)
            n_pos = QPointF(pos.x() % self.p_width, pos.y())
        elif self.m_pixmap_mode == self.VERTICAL:
            if pos.y() < 0 or pos.y() > self.m_octaves * 144:
                return
            octave = int(self.m_octaves - pos.y() / self.p_height)
            n_pos = QPointF(pos.x(), pos.y() % self.p_height)
        else:
            return

        octave += 3

        if self.m_midi_map['1'].contains(n_pos):   # C#
            note = 1
        elif self.m_midi_map['3'].contains(n_pos): # D#
            note = 3
        elif self.m_midi_map['6'].contains(n_pos): # F#
            note = 6
        elif self.m_midi_map['8'].contains(n_pos): # G#
            note = 8
        elif self.m_midi_map['10'].contains(n_pos):# A#
            note = 10
        elif self.m_midi_map['0'].contains(n_pos): # C
            note = 0
        elif self.m_midi_map['2'].contains(n_pos): # D
            note = 2
        elif self.m_midi_map['4'].contains(n_pos): # E
            note = 4
        elif self.m_midi_map['5'].contains(n_pos): # F
            note = 5
        elif self.m_midi_map['7'].contains(n_pos): # G
            note = 7
        elif self.m_midi_map['9'].contains(n_pos): # A
            note = 9
        elif self.m_midi_map['11'].contains(n_pos):# B
            note = 11
        else:
            note = -1

        if note != -1:
            note += octave * 12
            if self.m_lastMouseNote != note:
                self.sendNoteOff(self.m_lastMouseNote)
                self.sendNoteOn(note)
        else:
            self.sendNoteOff(self.m_lastMouseNote)

        self.m_lastMouseNote = note

    def paintEvent(self, event):
        painter = QPainter(self)

        # -------------------------------------------------------------
        # Paint clean keys (as background)

        for octave in range(self.m_octaves):
            if self.m_pixmap_mode == self.HORIZONTAL:
                target = QRectF(self.p_width * octave, 0, self.p_width, self.p_height)
            elif self.m_pixmap_mode == self.VERTICAL:
                target = QRectF(0, self.p_height * octave, self.p_width, self.p_height)
            else:
                return

            source = QRectF(0, 0, self.p_width, self.p_height)
            painter.drawPixmap(target, self.m_pixmap, source)

        # -------------------------------------------------------------
        # Paint (white) pressed keys

        paintedWhite = False

        for i in range(len(self.m_enabledKeys)):
            note = self.m_enabledKeys[i]
            pos = self._getRectFromMidiNote(note)

            if self._isNoteBlack(note):
                continue

            if note < 35:
                # cannot paint this note
                continue
            elif note < 48:
                octave = 0
            elif note < 60:
                octave = 1
            elif note < 72:
                octave = 2
            elif note < 84:
                octave = 3
            elif note < 96:
                octave = 4
            elif note < 108:
                octave = 5
            else:
                # cannot paint this note either
                continue

            if self.m_pixmap_mode == self.VERTICAL:
                octave = self.m_octaves - octave - 1

            if self.m_pixmap_mode == self.HORIZONTAL:
                target = QRectF(pos.x() + (self.p_width * octave), 0, pos.width(), pos.height())
                source = QRectF(pos.x(), self.p_height, pos.width(), pos.height())
            elif self.m_pixmap_mode == self.VERTICAL:
                target = QRectF(pos.x(), pos.y() + (self.p_height * octave), pos.width(), pos.height())
                source = QRectF(self.p_width, pos.y(), pos.width(), pos.height())
            else:
                return

            paintedWhite = True
            painter.drawPixmap(target, self.m_pixmap, source)

        # -------------------------------------------------------------
        # Clear white keys border

        if paintedWhite:
            for octave in range(self.m_octaves):
                for note in (1, 3, 6, 8, 10):
                    pos = self._getRectFromMidiNote(note)
                    if self.m_pixmap_mode == self.HORIZONTAL:
                        target = QRectF(pos.x() + (self.p_width * octave), 0, pos.width(), pos.height())
                        source = QRectF(pos.x(), 0, pos.width(), pos.height())
                    elif self.m_pixmap_mode == self.VERTICAL:
                        target = QRectF(pos.x(), pos.y() + (self.p_height * octave), pos.width(), pos.height())
                        source = QRectF(0, pos.y(), pos.width(), pos.height())
                    else:
                        return

                    painter.drawPixmap(target, self.m_pixmap, source)

        # -------------------------------------------------------------
        # Paint (black) pressed keys

        for i in range(len(self.m_enabledKeys)):
            note = self.m_enabledKeys[i]
            pos = self._getRectFromMidiNote(note)

            if not self._isNoteBlack(note):
                continue

            if note < 35:
                # cannot paint this note
                continue
            elif note < 48:
                octave = 0
            elif note < 60:
                octave = 1
            elif note < 72:
                octave = 2
            elif note < 84:
                octave = 3
            elif note < 96:
                octave = 4
            elif note < 108:
                octave = 5
            else:
                # cannot paint this note either
                continue

            if self.m_pixmap_mode == self.VERTICAL:
                octave = self.m_octaves - octave - 1

            if self.m_pixmap_mode == self.HORIZONTAL:
                target = QRectF(pos.x() + (self.p_width * octave), 0, pos.width(), pos.height())
                source = QRectF(pos.x(), self.p_height, pos.width(), pos.height())
            elif self.m_pixmap_mode == self.VERTICAL:
                target = QRectF(pos.x(), pos.y() + (self.p_height * octave), pos.width(), pos.height())
                source = QRectF(self.p_width, pos.y(), pos.width(), pos.height())
            else:
                return

            painter.drawPixmap(target, self.m_pixmap, source)

        # Paint C-number note info
        painter.setFont(self.m_font)
        painter.setPen(Qt.black)

        for i in range(self.m_octaves):
            if self.m_pixmap_mode == self.HORIZONTAL:
                painter.drawText(i * 144, 48, 18, 18, Qt.AlignCenter, "C%i" % (i + 2))
            elif self.m_pixmap_mode == self.VERTICAL:
                painter.drawText(45, (self.m_octaves * 144) - (i * 144) - 16, 18, 18, Qt.AlignCenter, "C%i" % (i + 2))

    @pyqtSlot()
    def slot_updateOnce(self):
        if self.m_needsUpdate:
            self.update()
            self.m_needsUpdate = False

    def _isNoteBlack(self, note):
        baseNote = note % 12
        return bool(baseNote in (1, 3, 6, 8, 10))

    def _getRectFromMidiNote(self, note):
        return self.m_midi_map.get(str(note % 12))
コード例 #44
0
ファイル: pixmapdial.py プロジェクト: kasbah/slim_looper
class PixmapDial(QDial):
    # enum CustomPaint
    CUSTOM_PAINT_NULL      = 0
    CUSTOM_PAINT_CARLA_WET = 1
    CUSTOM_PAINT_CARLA_VOL = 2
    CUSTOM_PAINT_CARLA_L   = 3
    CUSTOM_PAINT_CARLA_R   = 4

    # enum Orientation
    HORIZONTAL = 0
    VERTICAL   = 1

    HOVER_MIN = 0
    HOVER_MAX = 9

    def __init__(self, parent):
        QDial.__init__(self, parent)

        self.fPixmap      = QPixmap("./bitmaps/dial_01d.png")
        self.fPixmapNum   = "01"
        self.fCustomPaint = self.CUSTOM_PAINT_NULL

        self.fHovered   = False
        self.fHoverStep = self.HOVER_MIN

        if self.fPixmap.width() > self.fPixmap.height():
            self.fOrientation = self.HORIZONTAL
        else:
            self.fOrientation = self.VERTICAL

        self.fLabel     = ""
        self.fLabelPos  = QPointF(0.0, 0.0)
        self.fLabelFont = QFont()
        self.fLabelFont.setPointSize(6)
        self.fLabelWidth  = 0
        self.fLabelHeight = 0
        self.fLabelGradient = QLinearGradient(0, 0, 0, 1)

        if self.palette().window().color().lightness() > 100:
            # Light background
            c = self.palette().dark().color()
            self.fColor1 = c
            self.fColor2 = QColor(c.red(), c.green(), c.blue(), 0)
            self.fColorT = [self.palette().buttonText().color(), self.palette().mid().color()]
        else:
            # Dark background
            self.fColor1 = QColor(0, 0, 0, 255)
            self.fColor2 = QColor(0, 0, 0, 0)
            self.fColorT = [Qt.white, Qt.darkGray]

        self.updateSizes()

    def getSize(self):
        return self.fSize

    def setCustomPaint(self, paint):
        self.fCustomPaint = paint
        self.fLabelPos.setY(self.fSize + self.fLabelHeight/2)
        self.update()

    def setEnabled(self, enabled):
        if self.isEnabled() != enabled:
            self.fPixmap.load("./bitmaps/dial_%s%s.png" % (self.fPixmapNum, "" if enabled else "d"))
            self.updateSizes()
            self.update()
        QDial.setEnabled(self, enabled)

    def setLabel(self, label):
        self.fLabel = label

        self.fLabelWidth  = QFontMetrics(self.fLabelFont).width(label)
        self.fLabelHeight = QFontMetrics(self.fLabelFont).height()

        self.fLabelPos.setX(float(self.fSize)/2.0 - float(self.fLabelWidth)/2.0)
        self.fLabelPos.setY(self.fSize + self.fLabelHeight)

        self.fLabelGradient.setColorAt(0.0, self.fColor1)
        self.fLabelGradient.setColorAt(0.6, self.fColor1)
        self.fLabelGradient.setColorAt(1.0, self.fColor2)

        self.fLabelGradient.setStart(0, float(self.fSize)/2.0)
        self.fLabelGradient.setFinalStop(0, self.fSize + self.fLabelHeight + 5)

        self.fLabelGradientRect = QRectF(float(self.fSize)/8.0, float(self.fSize)/2.0, float(self.fSize*6)/8.0, self.fSize+self.fLabelHeight+5)
        self.update()

    def setPixmap(self, pixmapId):
        self.fPixmapNum = "%02i" % pixmapId
        self.fPixmap.load("./bitmaps/dial_%s%s.png" % (self.fPixmapNum, "" if self.isEnabled() else "d"))

        if self.fPixmap.width() > self.fPixmap.height():
            self.fOrientation = self.HORIZONTAL
        else:
            self.fOrientation = self.VERTICAL

        self.updateSizes()
        self.update()

    def minimumSizeHint(self):
        return QSize(self.fSize, self.fSize)

    def sizeHint(self):
        return QSize(self.fSize, self.fSize)

    def updateSizes(self):
        self.fWidth  = self.fPixmap.width()
        self.fHeight = self.fPixmap.height()

        if self.fWidth < 1:
            self.fWidth = 1

        if self.fHeight < 1:
            self.fHeight = 1

        if self.fOrientation == self.HORIZONTAL:
            self.fSize  = self.fHeight
            self.fCount = self.fWidth / self.fHeight
        else:
            self.fSize  = self.fWidth
            self.fCount = self.fHeight / self.fWidth

        self.setMinimumSize(self.fSize, self.fSize + self.fLabelHeight + 5)
        self.setMaximumSize(self.fSize, self.fSize + self.fLabelHeight + 5)

    def enterEvent(self, event):
        self.fHovered = True
        if self.fHoverStep == self.HOVER_MIN:
            self.fHoverStep = self.HOVER_MIN + 1
        QDial.enterEvent(self, event)

    def leaveEvent(self, event):
        self.fHovered = False
        if self.fHoverStep == self.HOVER_MAX:
            self.fHoverStep = self.HOVER_MAX - 1
        QDial.leaveEvent(self, event)

    def paintEvent(self, event):
        event.accept()

        painter = QPainter(self)
        painter.save()
        painter.setRenderHint(QPainter.Antialiasing, True)

        if self.fLabel:
            if self.fCustomPaint == self.CUSTOM_PAINT_NULL:
                painter.setPen(self.fColor2)
                painter.setBrush(self.fLabelGradient)
                painter.drawRect(self.fLabelGradientRect)

            painter.setFont(self.fLabelFont)
            painter.setPen(self.fColorT[0 if self.isEnabled() else 1])
            painter.drawText(self.fLabelPos, self.fLabel)

        if self.isEnabled():
            current = float(self.value() - self.minimum())
            divider = float(self.maximum() - self.minimum())

            if divider == 0.0:
                return

            value  = current / divider
            target = QRectF(0.0, 0.0, self.fSize, self.fSize)

            per = int((self.fCount - 1) * value)

            if self.fOrientation == self.HORIZONTAL:
                xpos = self.fSize * per
                ypos = 0.0
            else:
                xpos = 0.0
                ypos = self.fSize * per

            source = QRectF(xpos, ypos, self.fSize, self.fSize)
            painter.drawPixmap(target, self.fPixmap, source)

            # Custom knobs (Dry/Wet and Volume)
            if self.fCustomPaint in (self.CUSTOM_PAINT_CARLA_WET, self.CUSTOM_PAINT_CARLA_VOL):
                # knob color
                colorGreen = QColor(0x5D, 0xE7, 0x3D, 191 + self.fHoverStep*7)
                colorBlue  = QColor(0x3E, 0xB8, 0xBE, 191 + self.fHoverStep*7)

                # draw small circle
                ballRect = QRectF(8.0, 8.0, 15.0, 15.0)
                ballPath = QPainterPath()
                ballPath.addEllipse(ballRect)
                #painter.drawRect(ballRect)
                tmpValue  = (0.375 + 0.75*value)
                ballValue = tmpValue - floor(tmpValue)
                ballPoint = ballPath.pointAtPercent(ballValue)

                # draw arc
                startAngle = 216*16
                spanAngle  = -252*16*value

                if self.fCustomPaint == self.CUSTOM_PAINT_CARLA_WET:
                    painter.setBrush(colorBlue)
                    painter.setPen(QPen(colorBlue, 0))
                    painter.drawEllipse(QRectF(ballPoint.x(), ballPoint.y(), 2.2, 2.2))

                    gradient = QConicalGradient(15.5, 15.5, -45)
                    gradient.setColorAt(0.0,   colorBlue)
                    gradient.setColorAt(0.125, colorBlue)
                    gradient.setColorAt(0.625, colorGreen)
                    gradient.setColorAt(0.75,  colorGreen)
                    gradient.setColorAt(0.76,  colorGreen)
                    gradient.setColorAt(1.0,   colorGreen)
                    painter.setBrush(gradient)
                    painter.setPen(QPen(gradient, 3))

                else:
                    painter.setBrush(colorBlue)
                    painter.setPen(QPen(colorBlue, 0))
                    painter.drawEllipse(QRectF(ballPoint.x(), ballPoint.y(), 2.2, 2.2))

                    painter.setBrush(colorBlue)
                    painter.setPen(QPen(colorBlue, 3))

                painter.drawArc(4.0, 4.0, 26.0, 26.0, startAngle, spanAngle)

            # Custom knobs (L and R)
            elif self.fCustomPaint in (self.CUSTOM_PAINT_CARLA_L, self.CUSTOM_PAINT_CARLA_R):
                # knob color
                color = QColor(0xAD + self.fHoverStep*5, 0xD5 + self.fHoverStep*4, 0x4B + self.fHoverStep*5)

                # draw small circle
                ballRect = QRectF(7.0, 8.0, 11.0, 12.0)
                ballPath = QPainterPath()
                ballPath.addEllipse(ballRect)
                #painter.drawRect(ballRect)
                tmpValue  = (0.375 + 0.75*value)
                ballValue = tmpValue - floor(tmpValue)
                ballPoint = ballPath.pointAtPercent(ballValue)

                painter.setBrush(color)
                painter.setPen(QPen(color, 0))
                painter.drawEllipse(QRectF(ballPoint.x(), ballPoint.y(), 2.0, 2.0))

                # draw arc
                if self.fCustomPaint == self.CUSTOM_PAINT_CARLA_L:
                    startAngle = 216*16
                    spanAngle  = -252.0*16*value
                elif self.fCustomPaint == self.CUSTOM_PAINT_CARLA_R:
                    startAngle = 324.0*16
                    spanAngle  = 252.0*16*(1.0-value)
                else:
                    return

                painter.setPen(QPen(color, 2))
                painter.drawArc(3.5, 4.5, 22.0, 22.0, startAngle, spanAngle)

            if self.HOVER_MIN < self.fHoverStep < self.HOVER_MAX:
                self.fHoverStep += 1 if self.fHovered else -1
                QTimer.singleShot(20, self, SLOT("update()"))

        else: # isEnabled()
            target = QRectF(0.0, 0.0, self.fSize, self.fSize)
            painter.drawPixmap(target, self.fPixmap, target)

        painter.restore()

    def resizeEvent(self, event):
        self.updateSizes()
        QDial.resizeEvent(self, event)
コード例 #45
0
ファイル: frames.py プロジェクト: webodf/blink-qt
class BackgroundFrame(QFrame):
    backgroundColor = QtDynamicProperty('backgroundColor', unicode)
    backgroundImage = QtDynamicProperty('backgroundImage', unicode)
    imageGeometry = QtDynamicProperty('imageGeometry', QRect)

    def __init__(self, parent=None):
        super(BackgroundFrame, self).__init__(parent)
        self.backgroundColor = None
        self.backgroundImage = None
        self.imageGeometry = None
        self.pixmap = None
        self.scaled_pixmap = None

    @property
    def image_position(self):
        return QPoint(
            0,
            0) if self.imageGeometry is None else self.imageGeometry.topLeft()

    @property
    def image_size(self):
        if self.imageGeometry is not None:
            size = self.imageGeometry.size().expandedTo(QSize(
                0, 0))  # requested size with negative values turned to 0
            if size.isNull():
                return size if self.pixmap is None else self.pixmap.size()
            elif size.width() == 0:
                return size.expandedTo(QSize(16777215, 0))
            elif size.height() == 0:
                return size.expandedTo(QSize(0, 16777215))
            else:
                return size
        elif self.pixmap:
            return self.pixmap.size()
        else:
            return QSize(0, 0)

    def event(self, event):
        if event.type() == QEvent.DynamicPropertyChange:
            if event.propertyName() == 'backgroundImage':
                self.pixmap = QPixmap()
                if self.backgroundImage and self.pixmap.load(
                        Resources.get(self.backgroundImage)):
                    self.scaled_pixmap = self.pixmap.scaled(
                        self.image_size, Qt.KeepAspectRatio,
                        Qt.SmoothTransformation)
                else:
                    self.pixmap = self.scaled_pixmap = None
                self.update()
            elif event.propertyName() == 'imageGeometry' and self.pixmap:
                self.scaled_pixmap = self.pixmap.scaled(
                    self.image_size, Qt.KeepAspectRatio,
                    Qt.SmoothTransformation)
                self.update()
            elif event.propertyName() == 'backgroundColor':
                self.update()
        return super(BackgroundFrame, self).event(event)

    def resizeEvent(self, event):
        self.scaled_pixmap = self.pixmap and self.pixmap.scaled(
            self.image_size, Qt.KeepAspectRatio, Qt.SmoothTransformation)

    def paintEvent(self, event):
        super(BackgroundFrame, self).paintEvent(event)
        painter = QPainter(self)
        if self.backgroundColor:
            painter.fillRect(self.rect(), QColor(self.backgroundColor))
        if self.scaled_pixmap is not None:
            painter.drawPixmap(self.image_position, self.scaled_pixmap)
        painter.end()
コード例 #46
0
ファイル: ledbutton.py プロジェクト: kayosiii/Cadence
class LEDButton(QPushButton):
    BLUE    = 1
    GREEN   = 2
    RED     = 3
    YELLOW  = 4
    BIG_RED = 5

    def __init__(self, parent):
        QPushButton.__init__(self, parent)

        self.m_pixmap = QPixmap()
        self.m_pixmap_rect = QRectF(0, 0, 0, 0)

        self.setCheckable(True)
        self.setText("")

        self.setColor(self.BLUE)

    def setColor(self, color):
        self.m_color = color

        if color in (self.BLUE, self.GREEN, self.RED, self.YELLOW):
            size = 14
        elif color == self.BIG_RED:
            size = 32
        else:
            return qCritical("LEDButton::setColor(%i) - Invalid color" % color)

        self.setPixmapSize(size)

    def setPixmapSize(self, size):
        self.m_pixmap_rect = QRectF(0, 0, size, size)

        self.setMinimumWidth(size)
        self.setMaximumWidth(size)
        self.setMinimumHeight(size)
        self.setMaximumHeight(size)

    def paintEvent(self, event):
        painter = QPainter(self)

        if self.isChecked():
            if self.m_color == self.BLUE:
                self.m_pixmap.load(":/bitmaps/led_blue.png")
            elif self.m_color == self.GREEN:
                self.m_pixmap.load(":/bitmaps/led_green.png")
            elif self.m_color == self.RED:
                self.m_pixmap.load(":/bitmaps/led_red.png")
            elif self.m_color == self.YELLOW:
                self.m_pixmap.load(":/bitmaps/led_yellow.png")
            elif self.m_color == self.BIG_RED:
                self.m_pixmap.load(":/bitmaps/led-big_on.png")
            else:
                return
        else:
            if self.m_color in (self.BLUE, self.GREEN, self.RED, self.YELLOW):
                self.m_pixmap.load(":/bitmaps/led_off.png")
            elif self.m_color == self.BIG_RED:
                self.m_pixmap.load(":/bitmaps/led-big_off.png")
            else:
                return

        painter.drawPixmap(self.m_pixmap_rect, self.m_pixmap, self.m_pixmap_rect)
コード例 #47
0
class Panel(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)

        self.clean_up_queue = []
        self.summoner = SummonerData()
        self.summoner.getStaticData()

        ### Search Bar ###
        ##################

        #label
        self.search_label = QLabel(self)
        self.search_label.move(20, 15)
        self.search_label.resize(220, 25)
        self.search_label.setText('Enter summoner name(s):')
        self.search_label.setStyleSheet("QLabel {font:14pt}")

        #text field
        self.search_field = QLineEdit(self)
        self.search_field.move(260, 15)
        self.search_field.resize(250, 25)
        self.search_field.setPlaceholderText("ex: mcnuggets, teltor, ...")
        self.search_field.setFocusPolicy(Qt.ClickFocus)

        #search button
        self.search_button = QPushButton(self)
        self.search_button.move(520, 15)
        self.search_button.resize(150, 25)
        self.search_button.setText('Search Summoner')

        #region combobox
        self.region_list = QComboBox(self)
        self.region_list.move(680, 15)
        self.region_list.resize(75, 25)
        regions = ['NA', 'LAN', 'BR', 'LAS', 'EUW', 'EUNE', 'TR', 'RU', 'OCE']
        self.region_list.addItems(regions)

        #error label
        self.error_label = QLabel(self)
        self.error_label.move(775, 15)
        self.error_label.resize(160, 25)
        self.error_label.setStyleSheet("QLabel {font:14pt}")

        ### Summoner Information ###
        ############################

        #summoner Icon label
        self.icon_label = QLabel(self)
        self.icon_label.setScaledContents(True)
        self.icon_label.move(260, 50)
        self.icon_label.resize(110, 110)

        #name label
        self.name_label = QLabel(self)
        self.name_label.move(380, 50)
        self.name_label.resize(620, 50)
        self.name_label.setText('SUMMONER NAME')
        self.name_label.setStyleSheet("QLabel {font:32pt}")

        #rank label
        self.rank_label = QLabel(self)
        self.rank_label.move(380, 100)
        self.rank_label.resize(200, 60)
        self.rank_label.setText('summoner rank')
        self.rank_label.setStyleSheet("QLabel {font:18pt}")

        #miniseries labels
        self.series_labels = {}
        self.pixmap_win = QPixmap()
        self.pixmap_loss = QPixmap()
        self.pixmap_n = QPixmap()
        self.pixmap_win.load("./images/win.png")
        self.pixmap_loss.load("./images/loss.png")
        self.pixmap_n.load("./images/n.png")
        xPos = 600
        for x in range(5):
            match_label = QLabel(self)
            match_label.move(xPos, 120)
            match_label.resize(35, 35)
            match_label.setScaledContents(True)
            match_label.hide()
            self.series_labels[x] = match_label
            xPos += 40

        #mastery image labels
        print 'loading mastery images ...'
        self.ferocity_tree_images = self.getMasteryImages(
            self.summoner.ferocityMasteryTree())
        self.cunning_tree_images = self.getMasteryImages(
            self.summoner.cunningMasteryTree())
        self.resolve_tree_images = self.getMasteryImages(
            self.summoner.resolveMasteryTree())
        print 'Done'

        #champion icon image labels
        print 'loading champion icon images ...'
        self.championIcons = self.getChampionIconImages(
            self.summoner.championList())
        print 'Done'

        #overview widget
        self.overview_widget = QWidget()
        self.overview_menu = QTabWidget(self.overview_widget)
        self.overview_menu.resize(720, 270)

        #runes widget
        self.runes_widget = QWidget()
        self.runes_menu = QTabWidget(self.runes_widget)
        self.runes_menu.resize(720, 270)

        #masteries widget
        self.masteries_widget = QWidget()
        self.masteries_menu = QTabWidget(self.masteries_widget)
        self.masteries_menu.resize(720, 270)

        #summoner menu
        self.menu = QTabWidget(self)
        self.menu.move(260, 180)
        self.menu.resize(720, 300)
        self.menu.addTab(self.overview_widget, "Overview")
        self.menu.addTab(self.runes_widget, "Runes")
        self.menu.addTab(self.masteries_widget, "Masteries")
        self.menu.hide()

        #summoners buttons
        self.button_list = {}
        yPos = 150
        for x in range(10):
            sum_button = QPushButton(self)
            sum_button.move(50, yPos)
            sum_button.resize(150, 25)
            sum_button.hide()
            self.button_list[x] = sum_button
            yPos += 25

        ### Connecting Widgets ###
        ##########################

        self.connect(self.search_button, QtCore.SIGNAL("clicked()"),
                     self.getData)
        self.connect(self.search_button, QtCore.SIGNAL("clicked()"),
                     self.getRankedData)
        self.connect(self.button_list[0], QtCore.SIGNAL("clicked()"),
                     lambda: self.displayData(str(self.button_list[0].text())))
        self.connect(self.button_list[1], QtCore.SIGNAL("clicked()"),
                     lambda: self.displayData(str(self.button_list[1].text())))
        self.connect(self.button_list[2], QtCore.SIGNAL("clicked()"),
                     lambda: self.displayData(str(self.button_list[2].text())))
        self.connect(self.button_list[3], QtCore.SIGNAL("clicked()"),
                     lambda: self.displayData(str(self.button_list[3].text())))
        self.connect(self.button_list[4], QtCore.SIGNAL("clicked()"),
                     lambda: self.displayData(str(self.button_list[4].text())))
        self.connect(self.button_list[5], QtCore.SIGNAL("clicked()"),
                     lambda: self.displayData(str(self.button_list[5].text())))
        self.connect(self.button_list[6], QtCore.SIGNAL("clicked()"),
                     lambda: self.displayData(str(self.button_list[6].text())))
        self.connect(self.button_list[7], QtCore.SIGNAL("clicked()"),
                     lambda: self.displayData(str(self.button_list[7].text())))
        self.connect(self.button_list[8], QtCore.SIGNAL("clicked()"),
                     lambda: self.displayData(str(self.button_list[8].text())))
        self.connect(self.button_list[9], QtCore.SIGNAL("clicked()"),
                     lambda: self.displayData(str(self.button_list[9].text())))

        ### Window Configuration ###
        ############################

        #window settings
        self.setGeometry(200, 150, 1000, 500)
        self.setMaximumSize(1000, 500)
        self.setWindowTitle('summoner App')

        self.show()

    ### GUI methods ###
    ###################

    ############### GUI get methods ###############

    #get data related to given summoner names
    def getData(self):
        self.cleanUp()
        name_list = str(self.search_field.text()).replace(
            ' ', '').lower().split(',')
        region = str(self.region_list.currentText()).lower()
        if name_list != ['']:
            try:
                self.summoner.getSummonerData(name_list, region)
                for x in range(len(name_list)):
                    sum_name = self.summoner.getName(name_list[x])
                    if sum_name != None:
                        self.button_list[x].setText(sum_name)
                        self.clean_up_queue.append(self.button_list[x])
                    else:
                        self.button_list[x].setText(name_list[x])
                        self.clean_up_queue.append(self.button_list[x])
                        self.button_list[x].setEnabled(False)
                    self.button_list[x].show()
            except RiotError as e:
                response = e.message
                print response
                if response == 'ServiceUnavailable':
                    self.error_label.setText(response)
                elif response == '429':
                    self.error_label.setText('Rate limit reached')
                elif response == 'InternalServerError':
                    self.error_label.setText(response)
                elif response == 'Unauthorized':
                    self.error_label.setText('Invalid Input')
                elif response == 'ServerError':
                    self.error_label.setText(response)
                else:
                    self.error_label.setText('Not Found')
            except KeyError as k:
                self.error_label.setText('Invalid Input')

    #get summoner ranked data
    def getRankedData(self):
        if str(self.search_field.text()) != '':
            region = str(self.region_list.currentText()).lower()
            try:
                self.summoner.getRankedData(region)
            except RiotError:
                print 'Rank info not found'

    #get mastery images
    def getMasteryImages(self, masteryList):
        pixmap_list = collections.OrderedDict()
        empty_spaces = 0
        for row in masteryList:
            if len(row['masteryTreeItems']) == 2:
                #if len(row) == 3:
                row['masteryTreeItems'].append(None)
                #row.append(None)
            for element in row['masteryTreeItems']:
                #for element in row:
                if element != None:
                    pixmap = QPixmap()
                    pixmap.loadFromData(
                        self.summoner.getImage(
                            'mastery',
                            str(element['masteryId']) + '.png'))
                    pixmap_list[element['masteryId']] = pixmap
                else:
                    pixmap_list['null' + str(empty_spaces)] = None
                    empty_spaces += 1
        return pixmap_list

    #get champion icon images
    def getChampionIconImages(self, clist):
        pixmap_list = {}
        for champ in clist.values():
            pixmap = QPixmap()
            pixmap.loadFromData(
                self.summoner.getImage('champion', champ['key'] + '.png'))
            pixmap_list[champ['name']] = pixmap
        return pixmap_list

    ############### GUI update methods ###############

    #removes previous data from GUI
    def cleanUp(self):
        self.error_label.setText("")
        #clears summoner info
        self.icon_label.setPixmap(QPixmap())
        self.icon_label.setStyleSheet("QLabel {}")
        self.name_label.setText("")
        self.rank_label.setText("")
        #hides elements in clean up queue
        for x in self.clean_up_queue:
            x.hide()
            x.setEnabled(True)

    #display data
    def displayData(self, buttonName):
        sum_ID = self.summoner.getID(buttonName)
        self.displayIcon(buttonName.replace(' ', '').lower())
        self.name_label.setText(buttonName)
        self.displayRank(sum_ID)
        self.displayMenu(sum_ID)

    #display summoner icon
    def displayIcon(self, summoner_name):
        iconName = self.summoner.getIcon(summoner_name)
        iconPixmap = QPixmap()
        self.icon_label.setStyleSheet(
            "QLabel {border-style: outset; border-width: 3px; border-color: gold}"
        )
        try:
            iconPixmap.loadFromData(
                self.summoner.getImage('profileicon', iconName))
            self.icon_label.setPixmap(iconPixmap)
        except RiotError:
            iconPixmap.load("./images/no_image.png")
            self.icon_label.setPixmap(iconPixmap)

    #display summoner rank
    def displayRank(self, sumID):
        for x in range(len(self.series_labels)):
            self.series_labels[x].setPixmap(QPixmap())
        try:
            tier = self.summoner.getTier(sumID)
            division = self.summoner.getDivision(sumID)
            points = self.summoner.getLeaguePoints(sumID)
            self.rank_label.setText(tier + ': ' + division + '\n' +
                                    str(points) + ' league points')
            if points == 100:
                self.displayMiniseries(sumID)
        except KeyError:
            self.rank_label.setText('UNRANKED')

    #display promotion series
    def displayMiniseries(self, sumID):
        progress = self.summoner.getRankSeries(sumID)
        i = 0
        for x in progress:
            if x == 'W':
                self.series_labels[i].setPixmap(self.pixmap_win)
            elif x == 'L':
                self.series_labels[i].setPixmap(self.pixmap_loss)
            else:
                self.series_labels[i].setPixmap(self.pixmap_n)
            self.clean_up_queue.append(self.series_labels[i])
            self.series_labels[i].show()
            i += 1

    #display summoner menu
    def displayMenu(self, sumID):
        self.displayOverviewMenu(sumID)
        self.displayRuneMenu(sumID)
        self.displayMasteryMenu(sumID)
        self.clean_up_queue.append(self.menu)
        self.menu.show()

    #display overview menu
    def displayOverviewMenu(self, sumID):
        self.overview_menu.clear()

        overview_normal = OverviewWidget()
        overview_ranked_solo = OverviewWidget()
        overview_ranked_team = OverviewWidget()
        overview_champions = ChampionsWidget()

        overview_normal.showStats(self.summoner.getStats(sumID, 'Normal'))
        overview_ranked_solo.showStats(
            self.summoner.getStats(sumID, 'Ranked Solo'))
        overview_ranked_team.showStats(
            self.summoner.getStats(sumID, 'Ranked Team'))
        overview_champions.showStats(self.summoner.getChampionStats(sumID),
                                     self.championIcons)

        self.overview_menu.addTab(overview_normal, 'Normal')
        self.overview_menu.addTab(overview_ranked_solo, 'Ranked Solo')
        self.overview_menu.addTab(overview_ranked_team, 'Ranked Team')
        self.overview_menu.addTab(overview_champions, 'Champions')

    #display rune menu
    def displayRuneMenu(self, sumID):
        self.runes_menu.clear()
        for x in range(self.summoner.getNumOfRunePages(sumID)):
            rune_page = RuneWidget()
            rune_page.setSize(700, 225)
            rune_page.setName(self.summoner.getRunePageName(sumID, x))
            rune_data = self.summoner.getRunes(sumID, x)
            if rune_data != None:
                for y in rune_data:
                    rid = self.summoner.getRuneID(y)
                    desc = self.summoner.runeDescription(rid)
                    rname = self.summoner.runeName(rid)
                    rune_page.addRune(rid, desc, rname)
                rune_page.showRunes()
            self.runes_menu.addTab(rune_page, str(x + 1))

    #display mastery menu
    def displayMasteryMenu(self, sumID):
        self.masteries_menu.clear()
        for x in range(self.summoner.getNumOfMasteryPages(sumID)):
            mastery_page = MasteryWidget()
            mastery_page.setMasteryLabels(self.ferocity_tree_images,
                                          self.cunning_tree_images,
                                          self.resolve_tree_images)
            mastery_page.setName(self.summoner.getMasteryPageName(sumID, x))
            mastery_data = self.summoner.getMasteries(sumID, x)
            if mastery_data != None:
                for y in mastery_data:
                    mid = self.summoner.getMasteryID(y)
                    rank = self.summoner.getMasteryRank(y)
                    mastery_page.setMasteryRank(mid, rank)
            mastery_page.setTotalPoints()
            self.masteries_menu.addTab(mastery_page, str(x + 1))
コード例 #48
0
class Empresas(QMainWindow, Ui_MainWindow):
    """
	Class documentation goes here.
	"""
    def __init__(self, parent=None):
        """
		Constructor
		"""
        QMainWindow.__init__(self, parent)
        self.setupUi(self)

        self.botonera = Botonera(self.frmbotonera)
        #self.botonera.connect(self, QtCore.SIGNAL('on_btnNuevo_released()'), self.on_action_Nuevo_triggered)
        #self.botonera.setupUi(self.frmbotonera)
        self.connect(self.botonera, QtCore.SIGNAL("btnNuevo_released"),
                     self.on_actionNuevo_triggered)
        self.connect(self.botonera, QtCore.SIGNAL("btnModificar_released"),
                     self.on_actionModificar_triggered)
        self.connect(self.botonera, QtCore.SIGNAL("btnGuardar_released"),
                     self.on_actionGuardar_triggered)
        self.connect(self.botonera, QtCore.SIGNAL("btnSalir_released"),
                     self.on_actionSalir_triggered)
        self.connect(self.botonera, QtCore.SIGNAL("btnSearch_released"),
                     self.show_search)
        self.connect(self.botonera, QtCore.SIGNAL("btnEliminar_released"),
                     self.on_actionEliminar_triggered)

        self.datos = Dbdata()
        #self.havedata=False
        self.fill_data()
        #base de datos para controlesQT (tablesview, combos, etc)
        self.db = QDbdata()
        self.ok = self.db.open()

        self.isediting = False
        self.isadding = False

        #self.emit(SIGNAL("btnNuevo_released"), ())
        self.msgBox = QMessageBox(self)
        self.search = Busqueda(self)
        self.search.db = self.db
        self.search.campos = ['id', 'nombre', 'rif']
        self.search.tabla = 'cf_empresa'
        self.search.headers = ['Id', 'Nombre', 'Rif']
        self.search.sql = 'select ' + ','.join(
            self.search.campos) + ' from ' + self.search.tabla
        self.connect(self.search, QtCore.SIGNAL("tableView_clicked"),
                     self.fill_data)

    def show_search(self):
        self.search.fillgrid()
        self.search.show()

    def fill_data(self, id=None):
        #id.model().record(id.row()).value('id').toInt()
        #if id !=None:
        #	id = id.model().record(id.row()).value('id').toInt()
        #	id = id[0]		#solo para enteros para string cambia
        if self.datos.check_havedata('cf_empresa') == True:
            self.botonera.btnModificar.setEnabled(True)
            self.botonera.btnEliminar.setEnabled(True)
            self.botonera.btnSearch.setEnabled(True)
            self.botonera.btnPrint.setEnabled(True)
            self.emp = self.datos.get_data('cf_empresa', id)
            self.empid = self.emp[0]
            self.lineEdit_2.setText(self.emp[1])
            self.lineEdit_3.setText(self.emp[2])
            self.lineEdit_4.setText(self.emp[3])
            self.lineEdit_5.setText(self.emp[4])
            self.lineEdit_6.setText(self.emp[5])
            self.lineEdit_7.setText(self.emp[6])
            self.lineEdit_8.setText(self.emp[7])
            self.lineEdit.setText(self.emp[8])
        else:
            self.botonera.btnModificar.setEnabled(False)
            self.botonera.btnEliminar.setEnabled(False)
            self.clear_fields()

    def clear_fields(self):
        self.lineEdit_2.setText('')
        self.lineEdit_3.setText('')
        self.lineEdit_4.setText('')
        self.lineEdit_5.setText('')
        self.lineEdit_6.setText('')
        self.lineEdit_7.setText('')
        self.lineEdit_8.setText('')
        self.lineEdit.setText('')

    @pyqtSignature("")
    def on_pushButton_released(self):
        """
		Slot documentation goes here.
		"""
        self.filedialog = QFileDialog.getOpenFileName(self,
                                                      "Seleccione Archivo", "",
                                                      "*.jpg")
        self.lineEdit.setText(self.filedialog)
        self.logo = QPixmap()
        self.logo.load(self.filedialog)
        self.label.setPixmap(self.logo)
        self.msgBox.setText("Imagen cargada con exito !!!")
        self.msgBox.exec_()

        #codigo para copiar a la carpeta seleccionada y dialogo todo ok

    @pyqtSignature("")
    def on_actionNuevo_triggered(self):
        self.isadding = True
        self.clear_fields()
        self.frame_2.setEnabled(True)
        self.frame_3.setEnabled(True)

    @pyqtSignature("")
    def on_actionModificar_triggered(self):
        self.isediting = True
        self.frame_2.setEnabled(True)
        self.frame_3.setEnabled(True)


#		self.actionGuardar.setEnabled(True)
#		self.actionNuevo.setEnabled(False)
#		self.actionEliminar.setEnabled(False)
#		self.actionModificar.setEnabled(False)

    @pyqtSignature("")
    def on_actionEliminar_triggered(self):
        """
		Slot documentation goes here.
		"""
        self.msgBox.setText('Esta seguro de eliminar registro?')
        self.msgBox.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
        self.msgBox.setDefaultButton(QMessageBox.Cancel)
        result = self.msgBox.exec_()
        #print sssss
        if result == QMessageBox.Ok:
            datos = ['cf_empresa', self.empid]
            rs = self.datos.delete_record(datos)
            if rs:
                self.mensaje = 'Registro eliminado'
                self.msgBox.setText(self.mensaje)
                self.msgBox.exec_()
                if self.datos.check_havedata('cf_empresa'):
                    self.fill_data()
                else:
                    self.clear_fields()

    @pyqtSignature("")
    def on_actionGuardar_triggered(self):
        """
		Slot documentation goes here.
		"""
        #nombre,razon_social,rif,nit,email,tlf,fax,ruta_foto
        if self.isadding:
            datos = [
                self.lineEdit_2.text(),
                self.lineEdit_3.text(),
                self.lineEdit_4.text(),
                self.lineEdit_5.text(),
                self.lineEdit_6.text(),
                self.lineEdit_7.text(),
                self.lineEdit_8.text(),
                self.lineEdit.text()
            ]
            self.lastid = self.datos.save_empresa(datos)
            self.mensaje = 'Datos salvados con exito'
        elif self.isediting:
            datos = [
                self.lineEdit_2.text(),
                self.lineEdit_3.text(),
                self.lineEdit_4.text(),
                self.lineEdit_5.text(),
                self.lineEdit_6.text(),
                self.lineEdit_7.text(),
                self.lineEdit_8.text(),
                self.lineEdit.text(), self.empid
            ]
            self.datos.update_empresa(datos)
            self.lastid = self.empid
            self.mensaje = 'Datos actualizados con exito'

        self.frame_2.setEnabled(False)
        self.frame_3.setEnabled(False)
        self.msgBox.setText(self.mensaje)
        self.msgBox.exec_()
        self.isediting = False
        self.isadding = False
        self.fill_data(self.lastid)

    @pyqtSignature("")
    def on_actionSalir_triggered(self):
        """
		Slot documentation goes here.
		"""
        self.msgBox.setText('Esta seguro que desea salir?')
        self.msgBox.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
        self.msgBox.setDefaultButton(QMessageBox.Cancel)
        result = self.msgBox.exec_()
        if result == QMessageBox.Ok:
            self.close()
        else:
            pass