コード例 #1
0
ファイル: mainwindow.py プロジェクト: ixjlyons/fenril
    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()
コード例 #2
0
ファイル: mainwindow.py プロジェクト: ixjlyons/fenril
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)