def __init__(self, config, weboob, app, parent=None): super(MainWindow, self).__init__(parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.config = config self.weboob = weboob self.app = app # search history is a list of patterns which have been searched history_path = os.path.join(self.weboob.workdir, 'qcineoob_history') qc = HistoryCompleter(history_path, self) qc.load() qc.setCaseSensitivity(Qt.CaseInsensitive) self.ui.searchEdit.setCompleter(qc) self.ui.searchEdit.returnPressed.connect(self.search) self.ui.idEdit.returnPressed.connect(self.searchId) self.ui.typeCombo.currentIndexChanged[unicode].connect( self.typeComboChanged) count = self.config.get('settings', 'maxresultsnumber') self.ui.countSpin.setValue(int(count)) showT = self.config.get('settings', 'showthumbnails') self.ui.showTCheck.setChecked(showT == '1') self.ui.stopButton.clicked.connect(self.stopProcess) self.ui.stopButton.hide() self.ui.actionBackends.triggered.connect(self.backendsConfig) q = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_Q), self) q.activated.connect(self.close) n = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_PageDown), self) n.activated.connect(self.nextTab) p = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_PageUp), self) p.activated.connect(self.prevTab) w = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_W), self) w.activated.connect(self.closeCurrentTab) l = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_L), self) l.activated.connect(self.ui.searchEdit.setFocus) l.activated.connect(self.ui.searchEdit.selectAll) self.ui.resultsTab.tabCloseRequested.connect(self.closeTab) self.loadBackendsList() if self.ui.backendEdit.count() == 0: self.backendsConfig() langs = sorted(LANGUAGE_CONV.keys()) for lang in langs: self.ui.langCombo.addItem(lang) self.ui.langCombo.hide() self.ui.langLabel.hide()
def __init__(self, config, weboob, app, parent=None): QtMainWindow.__init__(self, parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.config = config self.weboob = weboob self.app = app # search history is a list of patterns which have been searched self.search_history = self.loadSearchHistory() self.updateCompletion() self.connect(self.ui.searchEdit, SIGNAL("returnPressed()"), self.search) self.connect(self.ui.idEdit, SIGNAL("returnPressed()"), self.searchId) self.connect(self.ui.typeCombo, SIGNAL("currentIndexChanged(QString)"), self.typeComboChanged) count = self.config.get('settings', 'maxresultsnumber') self.ui.countSpin.setValue(int(count)) showT = self.config.get('settings', 'showthumbnails') self.ui.showTCheck.setChecked(showT == '1') self.connect(self.ui.stopButton, SIGNAL("clicked()"), self.stopProcess) self.ui.stopButton.hide() self.connect(self.ui.actionBackends, SIGNAL("triggered()"), self.backendsConfig) q = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_Q), self) self.connect(q, SIGNAL("activated()"), self.close) n = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_PageDown), self) self.connect(n, SIGNAL("activated()"), self.nextTab) p = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_PageUp), self) self.connect(p, SIGNAL("activated()"), self.prevTab) w = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_W), self) self.connect(w, SIGNAL("activated()"), self.closeCurrentTab) l = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_L), self) self.connect(l, SIGNAL("activated()"), self.ui.searchEdit.setFocus) self.connect(l, SIGNAL("activated()"), self.ui.searchEdit.selectAll) self.connect(self.ui.resultsTab, SIGNAL("tabCloseRequested(int)"), self.closeTab) self.loadBackendsList() if self.ui.backendEdit.count() == 0: self.backendsConfig() langs = sorted(LANGUAGE_CONV.keys()) for lang in langs: self.ui.langCombo.addItem(lang) self.ui.langCombo.hide() self.ui.langLabel.hide()
def __init__(self, config, weboob, app, parent=None): super(MainWindow, self).__init__(parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.config = config self.weboob = weboob self.app = app # search history is a list of patterns which have been searched history_path = os.path.join(self.weboob.workdir, 'qcineoob_history') qc = HistoryCompleter(history_path, self) qc.load() qc.setCaseSensitivity(Qt.CaseInsensitive) self.ui.searchEdit.setCompleter(qc) self.ui.searchEdit.returnPressed.connect(self.search) self.ui.idEdit.returnPressed.connect(self.searchId) self.ui.typeCombo.currentIndexChanged[unicode].connect(self.typeComboChanged) count = self.config.get('settings', 'maxresultsnumber') self.ui.countSpin.setValue(int(count)) showT = self.config.get('settings', 'showthumbnails') self.ui.showTCheck.setChecked(showT == '1') self.ui.stopButton.clicked.connect(self.stopProcess) self.ui.stopButton.hide() self.ui.actionBackends.triggered.connect(self.backendsConfig) q = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_Q), self) q.activated.connect(self.close) n = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_PageDown), self) n.activated.connect(self.nextTab) p = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_PageUp), self) p.activated.connect(self.prevTab) w = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_W), self) w.activated.connect(self.closeCurrentTab) l = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_L), self) l.activated.connect(self.ui.searchEdit.setFocus) l.activated.connect(self.ui.searchEdit.selectAll) self.ui.resultsTab.tabCloseRequested.connect(self.closeTab) self.loadBackendsList() if self.ui.backendEdit.count() == 0: self.backendsConfig() langs = sorted(LANGUAGE_CONV.keys()) for lang in langs: self.ui.langCombo.addItem(lang) self.ui.langCombo.hide() self.ui.langLabel.hide()
class MainWindow(QtMainWindow): def __init__(self, config, weboob, app, parent=None): QtMainWindow.__init__(self, parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.config = config self.weboob = weboob self.app = app # search history is a list of patterns which have been searched self.search_history = self.loadSearchHistory() self.updateCompletion() self.connect(self.ui.searchEdit, SIGNAL("returnPressed()"), self.search) self.connect(self.ui.idEdit, SIGNAL("returnPressed()"), self.searchId) self.connect(self.ui.typeCombo, SIGNAL("currentIndexChanged(QString)"), self.typeComboChanged) count = self.config.get('settings', 'maxresultsnumber') self.ui.countSpin.setValue(int(count)) showT = self.config.get('settings', 'showthumbnails') self.ui.showTCheck.setChecked(showT == '1') self.connect(self.ui.stopButton, SIGNAL("clicked()"), self.stopProcess) self.ui.stopButton.hide() self.connect(self.ui.actionBackends, SIGNAL("triggered()"), self.backendsConfig) q = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_Q), self) self.connect(q, SIGNAL("activated()"), self.close) n = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_PageDown), self) self.connect(n, SIGNAL("activated()"), self.nextTab) p = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_PageUp), self) self.connect(p, SIGNAL("activated()"), self.prevTab) w = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_W), self) self.connect(w, SIGNAL("activated()"), self.closeCurrentTab) l = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_L), self) self.connect(l, SIGNAL("activated()"), self.ui.searchEdit.setFocus) self.connect(l, SIGNAL("activated()"), self.ui.searchEdit.selectAll) self.connect(self.ui.resultsTab, SIGNAL("tabCloseRequested(int)"), self.closeTab) self.loadBackendsList() if self.ui.backendEdit.count() == 0: self.backendsConfig() langs = sorted(LANGUAGE_CONV.keys()) for lang in langs: self.ui.langCombo.addItem(lang) self.ui.langCombo.hide() self.ui.langLabel.hide() def stopProcess(self): self.ui.resultsTab.currentWidget().stopProcess() def closeTab(self, index): if self.ui.resultsTab.widget(index) != 0: tabToClose = self.ui.resultsTab.widget(index) self.ui.resultsTab.removeTab(index) del(tabToClose) def closeCurrentTab(self): self.closeTab(self.ui.resultsTab.currentIndex()) def prevTab(self): index = self.ui.resultsTab.currentIndex() - 1 size = self.ui.resultsTab.count() if size != 0: self.ui.resultsTab.setCurrentIndex(index % size) def nextTab(self): index = self.ui.resultsTab.currentIndex() + 1 size = self.ui.resultsTab.count() if size != 0: self.ui.resultsTab.setCurrentIndex(index % size) def newTab(self, txt, backend, person=None, movie=None, torrent=None, subtitle=None): id = '' if person is not None: id = person.id stype = 'person' elif movie is not None: id = movie.id stype = 'movie' elif subtitle is not None: id = subtitle.id stype = 'subtitle' elif torrent is not None: id = torrent.id stype = 'torrent' new_res = Result(self.weboob, self.app, self) self.ui.resultsTab.addTab(new_res, txt) new_res.searchId(id, stype) def search(self): pattern = unicode(self.ui.searchEdit.text()) # arbitrary max number of completion word if len(self.search_history) > 50: self.search_history.pop(0) if pattern not in self.search_history: self.search_history.append(pattern) self.updateCompletion() tosearch = unicode(self.ui.typeCombo.currentText()) lang = unicode(self.ui.langCombo.currentText()) new_res = Result(self.weboob, self.app, self) self.ui.resultsTab.addTab(new_res, pattern) self.ui.resultsTab.setCurrentWidget(new_res) new_res.search(tosearch, pattern, lang) def searchId(self): id = unicode(self.ui.idEdit.text()) stype = unicode(self.ui.idTypeCombo.currentText()) new_res = Result(self.weboob, self.app, self) self.ui.resultsTab.addTab(new_res, id) self.ui.resultsTab.setCurrentWidget(new_res) new_res.searchId(id, stype) def backendsConfig(self): bckndcfg = BackendCfg(self.weboob, (CapCinema, CapTorrent, CapSubtitle,), self) if bckndcfg.run(): self.loadBackendsList() def loadBackendsList(self): self.ui.backendEdit.clear() for i, backend in enumerate(self.weboob.iter_backends()): if i == 0: self.ui.backendEdit.addItem('All backends', '') self.ui.backendEdit.addItem(backend.name, backend.name) if backend.name == self.config.get('settings', 'backend'): self.ui.backendEdit.setCurrentIndex(i+1) if self.ui.backendEdit.count() == 0: self.ui.searchEdit.setEnabled(False) else: self.ui.searchEdit.setEnabled(True) def loadSearchHistory(self): ''' Return search string history list loaded from history file ''' result = [] history_path = os.path.join(self.weboob.workdir, 'qcineoob_history') if os.path.exists(history_path): f = codecs.open(history_path, 'r', 'utf-8') conf_hist = f.read() f.close() if conf_hist is not None and conf_hist.strip() != '': result = conf_hist.strip().split('\n') return result def saveSearchHistory(self): ''' Save search history in history file ''' if len(self.search_history) > 0: history_path = os.path.join(self.weboob.workdir, 'qcineoob_history') f = codecs.open(history_path, 'w', 'utf-8') f.write('\n'.join(self.search_history)) f.close() def updateCompletion(self): qc = QCompleter(QStringList(self.search_history), self) qc.setCaseSensitivity(Qt.CaseInsensitive) self.ui.searchEdit.setCompleter(qc) def typeComboChanged(self, value): if unicode(value) == 'subtitle': self.ui.langCombo.show() self.ui.langLabel.show() else: self.ui.langCombo.hide() self.ui.langLabel.hide() def getCount(self): num = self.ui.countSpin.value() if num == 0: return None else: return num def closeEvent(self, ev): self.config.set('settings', 'backend', str(self.ui.backendEdit.itemData( self.ui.backendEdit.currentIndex()).toString())) self.saveSearchHistory() self.config.set('settings', 'maxresultsnumber', self.ui.countSpin.value()) self.config.set('settings', 'showthumbnails', '1' if self.ui.showTCheck.isChecked() else '0') self.config.save() ev.accept()
class MainWindow(QtMainWindow): def __init__(self, config, weboob, app, parent=None): QtMainWindow.__init__(self, parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.config = config self.weboob = weboob self.app = app # search history is a list of patterns which have been searched self.search_history = self.loadSearchHistory() self.updateCompletion() self.connect(self.ui.searchEdit, SIGNAL("returnPressed()"), self.search) self.connect(self.ui.idEdit, SIGNAL("returnPressed()"), self.searchId) self.connect(self.ui.typeCombo, SIGNAL("currentIndexChanged(QString)"), self.typeComboChanged) count = self.config.get('settings', 'maxresultsnumber') self.ui.countSpin.setValue(int(count)) showT = self.config.get('settings', 'showthumbnails') self.ui.showTCheck.setChecked(showT == '1') self.connect(self.ui.stopButton, SIGNAL("clicked()"), self.stopProcess) self.ui.stopButton.hide() self.connect(self.ui.actionBackends, SIGNAL("triggered()"), self.backendsConfig) q = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_Q), self) self.connect(q, SIGNAL("activated()"), self.close) n = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_PageDown), self) self.connect(n, SIGNAL("activated()"), self.nextTab) p = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_PageUp), self) self.connect(p, SIGNAL("activated()"), self.prevTab) w = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_W), self) self.connect(w, SIGNAL("activated()"), self.closeCurrentTab) l = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_L), self) self.connect(l, SIGNAL("activated()"), self.ui.searchEdit.setFocus) self.connect(l, SIGNAL("activated()"), self.ui.searchEdit.selectAll) self.connect(self.ui.resultsTab, SIGNAL("tabCloseRequested(int)"), self.closeTab) self.loadBackendsList() if self.ui.backendEdit.count() == 0: self.backendsConfig() langs = sorted(LANGUAGE_CONV.keys()) for lang in langs: self.ui.langCombo.addItem(lang) self.ui.langCombo.hide() self.ui.langLabel.hide() def stopProcess(self): self.ui.resultsTab.currentWidget().stopProcess() def closeTab(self, index): if self.ui.resultsTab.widget(index) != 0: tabToClose = self.ui.resultsTab.widget(index) self.ui.resultsTab.removeTab(index) del (tabToClose) def closeCurrentTab(self): self.closeTab(self.ui.resultsTab.currentIndex()) def prevTab(self): index = self.ui.resultsTab.currentIndex() - 1 size = self.ui.resultsTab.count() if size != 0: self.ui.resultsTab.setCurrentIndex(index % size) def nextTab(self): index = self.ui.resultsTab.currentIndex() + 1 size = self.ui.resultsTab.count() if size != 0: self.ui.resultsTab.setCurrentIndex(index % size) def newTab(self, txt, backend, person=None, movie=None, torrent=None, subtitle=None): id = '' if person is not None: id = person.id stype = 'person' elif movie is not None: id = movie.id stype = 'movie' elif subtitle is not None: id = subtitle.id stype = 'subtitle' elif torrent is not None: id = torrent.id stype = 'torrent' new_res = Result(self.weboob, self.app, self) self.ui.resultsTab.addTab(new_res, txt) new_res.searchId(id, stype) def search(self): pattern = unicode(self.ui.searchEdit.text()) # arbitrary max number of completion word if len(self.search_history) > 50: self.search_history.pop(0) if pattern not in self.search_history: self.search_history.append(pattern) self.updateCompletion() tosearch = unicode(self.ui.typeCombo.currentText()) lang = unicode(self.ui.langCombo.currentText()) new_res = Result(self.weboob, self.app, self) self.ui.resultsTab.addTab(new_res, pattern) self.ui.resultsTab.setCurrentWidget(new_res) new_res.search(tosearch, pattern, lang) def searchId(self): id = unicode(self.ui.idEdit.text()) stype = unicode(self.ui.idTypeCombo.currentText()) new_res = Result(self.weboob, self.app, self) self.ui.resultsTab.addTab(new_res, id) self.ui.resultsTab.setCurrentWidget(new_res) new_res.searchId(id, stype) def backendsConfig(self): bckndcfg = BackendCfg(self.weboob, ( ICapCinema, ICapTorrent, ICapSubtitle, ), self) if bckndcfg.run(): self.loadBackendsList() def loadBackendsList(self): self.ui.backendEdit.clear() for i, backend in enumerate(self.weboob.iter_backends()): if i == 0: self.ui.backendEdit.addItem('All backends', '') self.ui.backendEdit.addItem(backend.name, backend.name) if backend.name == self.config.get('settings', 'backend'): self.ui.backendEdit.setCurrentIndex(i + 1) if self.ui.backendEdit.count() == 0: self.ui.searchEdit.setEnabled(False) else: self.ui.searchEdit.setEnabled(True) def loadSearchHistory(self): ''' Return search string history list loaded from history file ''' result = [] history_path = os.path.join(self.weboob.workdir, 'qcineoob_history') if os.path.exists(history_path): f = codecs.open(history_path, 'r', 'utf-8') conf_hist = f.read() f.close() if conf_hist is not None and conf_hist.strip() != '': result = conf_hist.strip().split('\n') return result def saveSearchHistory(self): ''' Save search history in history file ''' if len(self.search_history) > 0: history_path = os.path.join(self.weboob.workdir, 'qcineoob_history') f = codecs.open(history_path, 'w', 'utf-8') f.write('\n'.join(self.search_history)) f.close() def updateCompletion(self): qc = QCompleter(QStringList(self.search_history), self) qc.setCaseSensitivity(Qt.CaseInsensitive) self.ui.searchEdit.setCompleter(qc) def typeComboChanged(self, value): if unicode(value) == 'subtitle': self.ui.langCombo.show() self.ui.langLabel.show() else: self.ui.langCombo.hide() self.ui.langLabel.hide() def getCount(self): num = self.ui.countSpin.value() if num == 0: return None else: return num def closeEvent(self, ev): self.config.set( 'settings', 'backend', str( self.ui.backendEdit.itemData( self.ui.backendEdit.currentIndex()).toString())) self.saveSearchHistory() self.config.set('settings', 'maxresultsnumber', self.ui.countSpin.value()) self.config.set('settings', 'showthumbnails', '1' if self.ui.showTCheck.isChecked() else '0') self.config.save() ev.accept()
class MainWindow(QtMainWindow): def __init__(self, config, weboob, app, parent=None): super(MainWindow, self).__init__(parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.config = config self.weboob = weboob self.app = app # search history is a list of patterns which have been searched history_path = os.path.join(self.weboob.workdir, 'qcineoob_history') qc = HistoryCompleter(history_path, self) qc.load() qc.setCaseSensitivity(Qt.CaseInsensitive) self.ui.searchEdit.setCompleter(qc) self.ui.searchEdit.returnPressed.connect(self.search) self.ui.idEdit.returnPressed.connect(self.searchId) self.ui.typeCombo.currentIndexChanged[unicode].connect( self.typeComboChanged) count = self.config.get('settings', 'maxresultsnumber') self.ui.countSpin.setValue(int(count)) showT = self.config.get('settings', 'showthumbnails') self.ui.showTCheck.setChecked(showT == '1') self.ui.stopButton.clicked.connect(self.stopProcess) self.ui.stopButton.hide() self.ui.actionBackends.triggered.connect(self.backendsConfig) q = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_Q), self) q.activated.connect(self.close) n = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_PageDown), self) n.activated.connect(self.nextTab) p = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_PageUp), self) p.activated.connect(self.prevTab) w = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_W), self) w.activated.connect(self.closeCurrentTab) l = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_L), self) l.activated.connect(self.ui.searchEdit.setFocus) l.activated.connect(self.ui.searchEdit.selectAll) self.ui.resultsTab.tabCloseRequested.connect(self.closeTab) self.loadBackendsList() if self.ui.backendEdit.count() == 0: self.backendsConfig() langs = sorted(LANGUAGE_CONV.keys()) for lang in langs: self.ui.langCombo.addItem(lang) self.ui.langCombo.hide() self.ui.langLabel.hide() @Slot() def stopProcess(self): self.ui.resultsTab.currentWidget().stopProcess() @Slot(object) def closeTab(self, index): if self.ui.resultsTab.widget(index) != 0: self.ui.resultsTab.removeTab(index) @Slot() def closeCurrentTab(self): self.closeTab(self.ui.resultsTab.currentIndex()) @Slot() def prevTab(self): index = self.ui.resultsTab.currentIndex() - 1 size = self.ui.resultsTab.count() if size != 0: self.ui.resultsTab.setCurrentIndex(index % size) @Slot() def nextTab(self): index = self.ui.resultsTab.currentIndex() + 1 size = self.ui.resultsTab.count() if size != 0: self.ui.resultsTab.setCurrentIndex(index % size) def newTab(self, txt, backend, person=None, movie=None, torrent=None, subtitle=None): id = '' if person is not None: id = person.id stype = 'person' elif movie is not None: id = movie.id stype = 'movie' elif subtitle is not None: id = subtitle.id stype = 'subtitle' elif torrent is not None: id = torrent.id stype = 'torrent' new_res = Result(self.weboob, self.app, self) self.ui.resultsTab.addTab(new_res, txt) new_res.searchId(id, stype) @Slot() def search(self): pattern = self.ui.searchEdit.text() self.ui.searchEdit.completer().addString(pattern) tosearch = self.ui.typeCombo.currentText() lang = self.ui.langCombo.currentText() new_res = Result(self.weboob, self.app, self) self.ui.resultsTab.addTab(new_res, pattern) self.ui.resultsTab.setCurrentWidget(new_res) new_res.search(tosearch, pattern, lang) @Slot() def searchId(self): id = self.ui.idEdit.text() stype = self.ui.idTypeCombo.currentText() new_res = Result(self.weboob, self.app, self) self.ui.resultsTab.addTab(new_res, id) self.ui.resultsTab.setCurrentWidget(new_res) new_res.searchId(id, stype) @Slot() def backendsConfig(self): bckndcfg = BackendCfg(self.weboob, ( CapCinema, CapTorrent, CapSubtitle, ), self) if bckndcfg.run(): self.loadBackendsList() def loadBackendsList(self): model = BackendListModel(self.weboob) model.addBackends() self.ui.backendEdit.setModel(model) current_backend = self.config.get('settings', 'backend') idx = self.ui.backendEdit.findData(current_backend) if idx >= 0: self.ui.backendEdit.setCurrentIndex(idx) if self.ui.backendEdit.count() == 0: self.ui.searchEdit.setEnabled(False) else: self.ui.searchEdit.setEnabled(True) @Slot(object) def typeComboChanged(self, value): if value == 'subtitle': self.ui.langCombo.show() self.ui.langLabel.show() else: self.ui.langCombo.hide() self.ui.langLabel.hide() def getCount(self): num = self.ui.countSpin.value() if num == 0: return None else: return num def closeEvent(self, ev): self.config.set( 'settings', 'backend', self.ui.backendEdit.itemData(self.ui.backendEdit.currentIndex())) self.ui.searchEdit.completer().save() self.config.set('settings', 'maxresultsnumber', self.ui.countSpin.value()) self.config.set('settings', 'showthumbnails', '1' if self.ui.showTCheck.isChecked() else '0') self.config.save() ev.accept()
class MainWindow(QtMainWindow): def __init__(self, config, weboob, app, parent=None): super(MainWindow, self).__init__(parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.config = config self.weboob = weboob self.app = app # search history is a list of patterns which have been searched history_path = os.path.join(self.weboob.workdir, 'qcineoob_history') qc = HistoryCompleter(history_path, self) qc.load() qc.setCaseSensitivity(Qt.CaseInsensitive) self.ui.searchEdit.setCompleter(qc) self.ui.searchEdit.returnPressed.connect(self.search) self.ui.idEdit.returnPressed.connect(self.searchId) self.ui.typeCombo.currentIndexChanged[unicode].connect(self.typeComboChanged) count = self.config.get('settings', 'maxresultsnumber') self.ui.countSpin.setValue(int(count)) showT = self.config.get('settings', 'showthumbnails') self.ui.showTCheck.setChecked(showT == '1') self.ui.stopButton.clicked.connect(self.stopProcess) self.ui.stopButton.hide() self.ui.actionBackends.triggered.connect(self.backendsConfig) q = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_Q), self) q.activated.connect(self.close) n = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_PageDown), self) n.activated.connect(self.nextTab) p = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_PageUp), self) p.activated.connect(self.prevTab) w = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_W), self) w.activated.connect(self.closeCurrentTab) l = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_L), self) l.activated.connect(self.ui.searchEdit.setFocus) l.activated.connect(self.ui.searchEdit.selectAll) self.ui.resultsTab.tabCloseRequested.connect(self.closeTab) self.loadBackendsList() if self.ui.backendEdit.count() == 0: self.backendsConfig() langs = sorted(LANGUAGE_CONV.keys()) for lang in langs: self.ui.langCombo.addItem(lang) self.ui.langCombo.hide() self.ui.langLabel.hide() @Slot() def stopProcess(self): self.ui.resultsTab.currentWidget().stopProcess() @Slot(object) def closeTab(self, index): if self.ui.resultsTab.widget(index) != 0: self.ui.resultsTab.removeTab(index) @Slot() def closeCurrentTab(self): self.closeTab(self.ui.resultsTab.currentIndex()) @Slot() def prevTab(self): index = self.ui.resultsTab.currentIndex() - 1 size = self.ui.resultsTab.count() if size != 0: self.ui.resultsTab.setCurrentIndex(index % size) @Slot() def nextTab(self): index = self.ui.resultsTab.currentIndex() + 1 size = self.ui.resultsTab.count() if size != 0: self.ui.resultsTab.setCurrentIndex(index % size) def newTab(self, txt, backend, person=None, movie=None, torrent=None, subtitle=None): id = '' if person is not None: id = person.id stype = 'person' elif movie is not None: id = movie.id stype = 'movie' elif subtitle is not None: id = subtitle.id stype = 'subtitle' elif torrent is not None: id = torrent.id stype = 'torrent' new_res = Result(self.weboob, self.app, self) self.ui.resultsTab.addTab(new_res, txt) new_res.searchId(id, stype) @Slot() def search(self): pattern = self.ui.searchEdit.text() self.ui.searchEdit.completer().addString(pattern) tosearch = self.ui.typeCombo.currentText() lang = self.ui.langCombo.currentText() new_res = Result(self.weboob, self.app, self) self.ui.resultsTab.addTab(new_res, pattern) self.ui.resultsTab.setCurrentWidget(new_res) new_res.search(tosearch, pattern, lang) @Slot() def searchId(self): id = self.ui.idEdit.text() stype = self.ui.idTypeCombo.currentText() new_res = Result(self.weboob, self.app, self) self.ui.resultsTab.addTab(new_res, id) self.ui.resultsTab.setCurrentWidget(new_res) new_res.searchId(id, stype) @Slot() def backendsConfig(self): bckndcfg = BackendCfg(self.weboob, (CapCinema, CapTorrent, CapSubtitle,), self) if bckndcfg.run(): self.loadBackendsList() def loadBackendsList(self): model = BackendListModel(self.weboob) model.addBackends() self.ui.backendEdit.setModel(model) current_backend = self.config.get('settings', 'backend') idx = self.ui.backendEdit.findData(current_backend) if idx >= 0: self.ui.backendEdit.setCurrentIndex(idx) if self.ui.backendEdit.count() == 0: self.ui.searchEdit.setEnabled(False) else: self.ui.searchEdit.setEnabled(True) @Slot(object) def typeComboChanged(self, value): if value == 'subtitle': self.ui.langCombo.show() self.ui.langLabel.show() else: self.ui.langCombo.hide() self.ui.langLabel.hide() def getCount(self): num = self.ui.countSpin.value() if num == 0: return None else: return num def closeEvent(self, ev): self.config.set('settings', 'backend', self.ui.backendEdit.itemData( self.ui.backendEdit.currentIndex())) self.ui.searchEdit.completer().save() self.config.set('settings', 'maxresultsnumber', self.ui.countSpin.value()) self.config.set('settings', 'showthumbnails', '1' if self.ui.showTCheck.isChecked() else '0') self.config.save() ev.accept()