def __init__(self, parent=None, bibfile=None, pdfdir=None): super(MainWindow, self).__init__(parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.bibfile = bibfile self.pdfdir = pdfdir if bibfile: self.init_bib(bibfile) self.doc_tabs = [] self.ui.tableView.clicked.connect(self.on_selection_changed) self.ui.tableView.activated.connect(self.on_item_activated) self.init_tab_widget()
class MainWindow(QMainWindow): def __init__(self, parent=None, bibfile=None, pdfdir=None): super(MainWindow, self).__init__(parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.bibfile = bibfile self.pdfdir = pdfdir if bibfile: self.init_bib(bibfile) self.doc_tabs = [] self.ui.tableView.clicked.connect(self.on_selection_changed) self.ui.tableView.activated.connect(self.on_item_activated) self.init_tab_widget() def init_tab_widget(self): self.ui.tabWidget.tabCloseRequested.connect(self.on_tab_close) def init_bib(self, bibfile): self.bibfile = bibfile bib_data = None with open(bibfile) as f: bib_data = bibtexparser.load(f) if bib_data is None: # TODO show warning and return return model = LibraryTableModel(bib_data.entries) self.ui.tableView.setModel(model) self.ui.tableView.resizeColumnsToContents() self.ui.tableView.horizontalHeader().sortIndicatorChanged.connect( self.ui.tableView.sortByColumn) def on_tab_close(self, index): if index == 0: # don't let the library table tab be closed return self.ui.tabWidget.widget(index).close() self.ui.tabWidget.removeTab(index) def on_selection_changed(self, index): entry = self.ui.tableView.model().item(index) docdetailswidget.inflate(self.ui.dockWidgetContents, entry) def on_item_activated(self, index): if self.pdfdir is None: return entry = self.ui.tableView.model().item(index) name = _get_val(entry, 'ID') # if tab for this doc is already open, switch to it for i in range(self.ui.tabWidget.count()): if self.ui.tabWidget.tabText(i) == name: self.ui.tabWidget.setCurrentIndex(i) return filepath = os.path.abspath(os.path.join(self.pdfdir, name+'.pdf')) if not os.path.isfile(filepath): return widget = docwidget.DocWidget(entry) widget.load(filepath) self.ui.tabWidget.addTab(widget, name) self.ui.tabWidget.setCurrentWidget(widget)