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)
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)
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')
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)