Beispiel #1
0
    def confirmSubs(self, playersIn, playersOut, datetime):
        week = gameinfo.weekNum(datetime) + 1
        date = gameinfo.weekToDate(week).date()

        html = render_to_string(
            'subs_email.html', {
                'team': self.team,
                'players_in': playersIn,
                'players_out': playersOut,
                'week': week,
                'date': date
            })

        settings = QSettings()
        if settings.contains('SMTP/Server'):
            smtp_server = settings.value('SMTP/Server')
        else:
            smtp_server = None

        if not smtp_server:
            QMessageBox.critical(self, "Email Error",
                                 "Please add an SMTP server in settings.")
        else:
            email = HTMLEmail([self.team.email],
                              "*****@*****.**",
                              "Fantasy Football League",
                              bcc='*****@*****.**')
            email.sendMail("Sub Confirmation", html, smtp_server)
Beispiel #2
0
    def confirmSubs(self, playersIn, playersOut, datetime):
        week = gameinfo.weekNum(datetime) + 1
        date = gameinfo.weekToDate(week).date()

        html = render_to_string('subs_email.html', {'team': self.team,
                                                    'players_in': playersIn,
                                                    'players_out': playersOut,
                                                    'week': week,
                                                    'date': date}
                                )

        settings = QSettings()
        if settings.contains('SMTP/Server'):
            smtp_server = settings.value('SMTP/Server')
        else:
            smtp_server = None
        
        if not smtp_server:
            QMessageBox.critical(self, "Email Error", "Please add an SMTP server in settings.")
        else:
            email = HTMLEmail([self.team.email],
                              "*****@*****.**",
                              "Fantasy Football League",
                              bcc='*****@*****.**')
            email.sendMail("Sub Confirmation", html, smtp_server)
Beispiel #3
0
class Authenticator(QObject):

    ''' A class for manipulating tocken'''
    def __init__(self, ):
        QObject.__init__(self)
        self._settings = QSettings()
        self._token = ''
        self._timeremaining = ''
        self._serial = ''

        if self._settings.contains('REGION'):
            self._region = self._settings.value('REGION')
            if self._region not in ('EU', 'US'):
                self._set_region('US')
        else:
            self._region = 'US'

        if self._settings.contains('SECRET'):
            self._secret = unhexlify(self._settings.value('SECRET'))
            if not self._secret:
                self.new_serial()
        else:
            self.new_serial()

        if not self._serial:
            if self._settings.contains('SERIAL'):
                self._serial = self._settings.value('SERIAL')

        if self._token == '':
            self.sync()

    @Slot()
    def new_serial(self):
        try:
            authenticator = bna.requestNewSerial(self._region)
            self._secret = authenticator[1]
            self._set_serial(authenticator[0])
            self._settings.setValue("SECRET", hexlify(self._secret).decode("ascii"))
            self._settings.setValue("SERIAL", self._serial)
            self.sync()
        except Exception, e:
            self.on_error.emit("Could not connect: %s" % (unicode(e)))
            raise
class ControlMainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(ControlMainWindow, self).__init__(parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.settings = QSettings('Classificador', 'Independente')
        self._prepare_settings()
        self._abrir_pasta(self.settings.value('pasta_imagens'))
        # Caminho da pasta com as configurações de parâmetro.
        self.pasta_settings = os.path.join(self.settings.value('pasta_imagens'), 'images_settings')

    def _prepare_settings(self):
        # Verifica se tem o dir de imagens
        if not self.settings.contains('pasta_imagens'):
            self.settings.setValue('pasta_imagens', '.')

    def _inicio_selecao(self):
        print ("oi")


    def show_image(self, cv_image, destination='imagem_original'):
        """Show image on the interface.

        :param np.ndarray cv_image: OpenCV image (numpy array).
        :param destination: Name of QLabel to display the image.
        """
        # Muda a ordem das cores
        cv_image = cv2.cvtColor(cv_image, cv2.COLOR_BGR2RGB)

        # Alpha ou não.
        alpha = False
        formato = QImage.Format_ARGB32 if alpha else QImage.Format_RGB888

        # Caso  para mostrar a cv_image lida do disco, strides é necessaorio ou fica distorcida.
        # Strides é mais ou menos os espaços na memória entres as bandas.
        qimage = QImage(cv_image, cv_image.shape[1], cv_image.shape[0], cv_image.strides[0], formato)
        qpixmap = QPixmap.fromImage(qimage)
        imagem_widget = self.ui.centralwidget.findChild(QLabel, destination)
        imagem_widget.setPixmap(qpixmap)

    def _abrir_pasta(self, pasta):
        self.ui.caminho_pasta_imagens.setText(pasta)
        self.pasta = pasta
        #Lista os arquivos jpg.
        arquivos = os.listdir(pasta)
        arquivos_imagens = []
        for arquivo in arquivos:
            print os.path.splitext(arquivo)[1]
            if os.path.splitext(arquivo)[1] in ('.jpg', '.JPG', '.png', '.PNG'):
                arquivos_imagens.append(arquivo)
        self.ui.files_list.clear()
        self.ui.files_list.insertItems(0, arquivos_imagens)

    def selecionar_pasta(self):
        pasta = QFileDialog.getExistingDirectory(self, caption="Selecione uma pasta.")
        self.settings.setValue('pasta_imagens', pasta)
        # Caminho da pasta com as configurações de parâmetro.
        self.pasta_settings = os.path.join(self.settings.value('pasta_imagens'), 'images_settings')
        self._abrir_pasta(pasta)

    def selecionar_imagem(self):
        item = self.ui.files_list.currentItem()
        arquivo_imagem = os.path.join(self.pasta, item.text())
        imagem_settings = ImagemSettings(item.text(), self.pasta_settings)

        self.image_handler = ImageHandler(arquivo_imagem, imagem_settings)

        # Disponibiliza a imagem HSV no widget
        self.ui.imagem_original.cv_image = self.image_handler.hsv_image
        self.alterar_interface()


        self.show_image(self.image_handler.cv_image)
        self.show_image(self.image_handler.classificar_imagem(), destination='imagem_classificada')

    def alterar_interface(self):
        parametro = 'verde_upper'
        self.ui.hsv_h.setValue(self.image_handler.imagem_settings.param[parametro][0])
        self.ui.hsv_s.setValue(self.image_handler.imagem_settings.param[parametro][1])
        self.ui.hsv_v.setValue(self.image_handler.imagem_settings.param[parametro][2])
        parametro = 'verde_lower'
        self.ui.hsv_h_2.setValue(self.image_handler.imagem_settings.param[parametro][0])
        self.ui.hsv_s_2.setValue(self.image_handler.imagem_settings.param[parametro][1])
        self.ui.hsv_v_2.setValue(self.image_handler.imagem_settings.param[parametro][2])
        parametro = 'palha_upper'
        self.ui.hsv_h_3.setValue(self.image_handler.imagem_settings.param[parametro][0])
        self.ui.hsv_s_3.setValue(self.image_handler.imagem_settings.param[parametro][1])
        self.ui.hsv_v_3.setValue(self.image_handler.imagem_settings.param[parametro][2])
        parametro = 'palha_lower'
        self.ui.hsv_h_4.setValue(self.image_handler.imagem_settings.param[parametro][0])
        self.ui.hsv_s_4.setValue(self.image_handler.imagem_settings.param[parametro][1])
        self.ui.hsv_v_4.setValue(self.image_handler.imagem_settings.param[parametro][2])

    def alterar_parametro(self):
        # Pega os parametros.
        # Verde.
        parametro = 'verde_upper'
        h, s, v = self.ui.hsv_h.value(), self.ui.hsv_s.value(), self.ui.hsv_v.value()
        self.image_handler.imagem_settings.param[parametro] = [h, s, v]
        parametro = 'verde_lower'
        h, s, v = self.ui.hsv_h_2.value(), self.ui.hsv_s_2.value(), self.ui.hsv_v_2.value()
        self.image_handler.imagem_settings.param[parametro] = [h, s, v]
        self.image_handler.imagem_settings.salvar()

        # Palha.
        parametro = 'palha_upper'
        h, s, v = self.ui.hsv_h_3.value(), self.ui.hsv_s_3.value(), self.ui.hsv_v_3.value()
        self.image_handler.imagem_settings.param[parametro] = [h, s, v]
        parametro = 'palha_lower'
        h, s, v = self.ui.hsv_h_4.value(), self.ui.hsv_s_4.value(), self.ui.hsv_v_4.value()
        self.image_handler.imagem_settings.param[parametro] = [h, s, v]

        #Salva.
        self.image_handler.imagem_settings.salvar()

        #Recalcula.
        self.show_image(self.image_handler.classificar_imagem(), destination='imagem_classificada')
Beispiel #5
0
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.dirty = False

        # Models
        #  - Filesystem Model
        self.fileSystemModel = QFileSystemModel()
        # rootPath = QDesktopServices.storageLocation(
        # QDesktopServices.HomeLocation)
        # fileSystemRoot = self.fileSystemModel.setRootPath(rootPath)
        fileSystemRoot = self.fileSystemModel.setRootPath(
            "/home/ryan/Programming/Python/projects/r3tagger/r3tagger/tests"
        )

        # Views
        #  - Filesystem View
        self.fileSystemView = QTreeView()
        self.fileSystemView.setModel(self.fileSystemModel)
        self.fileSystemView.setRootIndex(fileSystemRoot)
        self.fileSystemView.doubleClicked.connect(self.updateAlbumModel)
        self.fileSystemView.expanded.connect(self.fixFileSystemColumns)
        self.fileSystemView.collapsed.connect(self.fixFileSystemColumns)
        #  - Album View
        self.albumView = albumcollection.MusicCollectionView()
        self.albumView.setSelectionMode(QAbstractItemView.MultiSelection)
        self.albumView.clicked.connect(self.updateEditing)
        self.albumView.expanded.connect(self.fixAlbumViewColumns)
        self.albumView.collapsed.connect(self.fixAlbumViewColumns)
        self.albumView.model().dataChanged.connect(self.fixAlbumViewColumns)
        self.albumView.model().dataChanged.connect(self._setDirty)

        model = self.albumView.model()
        model.dataChanged.connect(self.updateEditing)

        # Editing Group
        self.editingGroup = QFormLayout()
        self.lineArtist = QLineEdit()
        self.lineAlbum = QLineEdit()
        self.lineTitle = QLineEdit()
        self.lineTrack = QLineEdit()
        self.lineDate = QLineEdit()
        self.lineGenre = QLineEdit()
        self.editingGroup.addRow("Artist:", self.lineArtist)
        self.editingGroup.addRow("Album:", self.lineAlbum)
        self.editingGroup.addRow("Title:", self.lineTitle)
        self.editingGroup.addRow("Track:", self.lineTrack)
        self.editingGroup.addRow("Date:", self.lineDate)
        self.editingGroup.addRow("Genre:", self.lineGenre)

        self.tagsToAttribs = {
            "artist": self.lineArtist,
            "album": self.lineAlbum,
            "title": self.lineTitle,
            "tracknumber": self.lineTrack,
            "date": self.lineDate,
            "genre": self.lineGenre,
        }

        # Confirm / Cancel / Clear Group
        self.buttonGroup = QHBoxLayout()
        self.buttonGroup.addStretch()
        confirm = QPushButton("Confirm")
        confirm.clicked.connect(self.confirmChanges)
        self.buttonGroup.addWidget(confirm)
        cancel = QPushButton("Cancel")
        cancel.clicked.connect(self.cancelChanges)
        self.buttonGroup.addWidget(cancel)
        clear = QPushButton("Clear")
        clear.clicked.connect(self.clearAlbumView)
        self.buttonGroup.addWidget(clear)
        self.buttonGroup.addStretch()

        # Statusbar
        # status = self.statusBar()
        # status.setSizeGripEnabled(False)
        # status.showMessage("Ready", 5000)

        # Docks
        dockAllowed = Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea
        #  - Filesystem Dock
        fileSystemDock = QDockWidget("Navigate", self)
        fileSystemDock.setObjectName("fileSystemDock")
        fileSystemDock.setAllowedAreas(dockAllowed)
        fileSystemDock.setWidget(self.fileSystemView)
        self.addDockWidget(Qt.LeftDockWidgetArea, fileSystemDock)
        #  - Editing Dock
        editingWidget = QWidget()
        editingWidget.setLayout(self.editingGroup)
        editingDock = QDockWidget("Editing", self)
        editingDock.setObjectName("editingDock")
        editingDock.setAllowedAreas(dockAllowed)
        editingDock.setWidget(editingWidget)
        self.addDockWidget(Qt.RightDockWidgetArea, editingDock)

        # Actions
        fileAddSongAction = self._createAction(
            text="Add &Songs",
            slot=self.fileAddSong,
            shortcut=QKeySequence.Open,
            icon="fileOpen",
            tip="Add files (songs)",
        )

        fileAddAlbumAction = self._createAction(
            text="Add &Album",
            slot=self.fileAddAlbum,
            shortcut=QKeySequence(Qt.CTRL + Qt.SHIFT + Qt.Key_O),
            icon="fileOpen",
            tip="Add directory (album)",
        )

        fileSaveAction = self._createAction(
            text="&Save Changes",
            slot=self.confirmChanges,
            shortcut=QKeySequence.Save,
            icon="fileSave",
            tip="Save Changes",
        )

        fileQuitAction = self._createAction(
            text="&Quit", slot=self.close, shortcut=QKeySequence.Quit, icon="fileQuit", tip="Quit Program"
        )

        editRecognizeAction = self._createAction(
            text="&Recognize",
            slot=self.editRecognize,
            shortcut=QKeySequence(Qt.CTRL + Qt.Key_R),
            icon="editRecognize",
            tip="Recognize music",
        )

        editReorganizeAction = self._createAction(
            text="Reorganize",
            slot=self.editReorganize,
            shortcut=QKeySequence(Qt.CTRL + Qt.SHIFT + Qt.Key_R),
            icon="editReorganize",
            tip="Reorganize music",
        )

        editSettingsAction = self._createAction(
            text="Settings",
            slot=self.editSettings,
            shortcut=QKeySequence.Preferences,
            icon="editSettings",
            tip="Edit settings",
        )

        helpDocsAction = self._createAction(
            text="Documentation",
            slot=self.helpDocs,
            shortcut=QKeySequence.HelpContents,
            icon="helpDocs",
            tip="Documentation",
        )

        helpAboutAction = self._createAction(
            text="About",
            slot=self.helpAbout,
            shortcut=QKeySequence(Qt.CTRL + Qt.SHIFT + Qt.Key_F1),
            icon="helpAbout",
            tip="About",
        )

        toggleEditing = editingDock.toggleViewAction()
        toggleEditing.setIcon(QIcon(":/toggleEditing.png"))

        toggleFileNav = fileSystemDock.toggleViewAction()
        toggleFileNav.setIcon(QIcon(":/toggleFileNav.png"))

        # Menus
        fileMenu = self.menuBar().addMenu("&File")
        self._addActions(fileMenu, (fileAddSongAction, fileAddAlbumAction, fileSaveAction, fileQuitAction))

        editMenu = self.menuBar().addMenu("&Edit")
        self._addActions(editMenu, (editReorganizeAction, editRecognizeAction, editSettingsAction))

        helpMenu = self.menuBar().addMenu("&Help")
        self._addActions(helpMenu, (helpDocsAction, helpAboutAction))

        # Toolbars
        editToolbar = self.addToolBar("EditToolbar")
        editToolbar.setObjectName("editToolbar")
        self._addActions(editToolbar, (editRecognizeAction, editReorganizeAction))

        toggleToolbar = self.addToolBar("ToggleToolbar")
        toggleToolbar.setObjectName("toggleToolbar")
        self._addActions(toggleToolbar, (toggleFileNav, toggleEditing))

        # Settings
        settings = QSettings()
        if settings.contains("MainWindow/Geometry"):
            self.restoreGeometry(settings.value("MainWindow/Geometry"))

        if settings.contains("MainWindow/State"):
            self.restoreState(settings.value("MainWindow/State"))

        self.setWindowTitle("r3tagger")

        # Final Layout
        centralWidget = QWidget()
        centralLayout = QVBoxLayout()
        centralLayout.addWidget(self.albumView)
        centralLayout.addLayout(self.buttonGroup)
        centralWidget.setLayout(centralLayout)
        self.setCentralWidget(centralWidget)