Example #1
0
    def __init__(self, mainwin, **kwargs):
        if sys.platform.startswith('darwin'):
            super(SettingsDialog, self).__init__(parent=mainwin, flags=Qt.Sheet)
            self.setWindowModality(Qt.WindowModal)
        else:
            super(SettingsDialog, self).__init__(parent=mainwin)
        self.ui = Ui_SettingsDialog()
        self.ui.setupUi(self)

        self.mainwin = None
        
        #with ContextAttributeSetter(
        #    (self.ui.cbxLatexMode.blockSignals, self.ui.cbxLatexMode.signalsBlocked, True),
        #    (self.ui.cbxFileNaming.blockSignals, self.ui.cbxFileNaming.signalsBlocked, True),
        #    ):
        #    # set up the initial values, without re-updating the main windows' settings at this point
        self.setupLatexModes()
        self.setupFileNamingConventions()

        self.mainwin = mainwin
Example #2
0
class SettingsDialog(QDialog):
    def __init__(self, mainwin, **kwargs):
        if sys.platform.startswith('darwin'):
            super(SettingsDialog, self).__init__(parent=mainwin, flags=Qt.Sheet)
            self.setWindowModality(Qt.WindowModal)
        else:
            super(SettingsDialog, self).__init__(parent=mainwin)
        self.ui = Ui_SettingsDialog()
        self.ui.setupUi(self)

        self.mainwin = None
        
        #with ContextAttributeSetter(
        #    (self.ui.cbxLatexMode.blockSignals, self.ui.cbxLatexMode.signalsBlocked, True),
        #    (self.ui.cbxFileNaming.blockSignals, self.ui.cbxFileNaming.signalsBlocked, True),
        #    ):
        #    # set up the initial values, without re-updating the main windows' settings at this point
        self.setupLatexModes()
        self.setupFileNamingConventions()

        self.mainwin = mainwin


    def showSettings(self):
        self.show()
        try:
            blk1 = self.ui.cbxLatexMode.blockSignals(True)
            blk2 = self.ui.cbxFileNaming.blockSignals(True)
            # set up the initial values, without re-updating the main windows' settings at this point
            idx = latexmodes.latex_modes.index(self.mainwin.latexmode)
            self.ui.cbxLatexMode.setCurrentIndex(idx)
            idx = filenamingconventions.naming_conventions.index(self.mainwin.filenamingconvention)
            self.ui.cbxFileNaming.setCurrentIndex(idx)
            self.updateFileNamingConventionDescription()
        finally:
            self.ui.cbxLatexMode.blockSignals(blk1)
            self.ui.cbxFileNaming.blockSignals(blk2)
            
    
    def setupLatexModes(self):
        self.ui.cbxLatexMode.clear()
        for mode in latexmodes.latex_modes:
            self.ui.cbxLatexMode.addItem(mode.title(), QVariant(QString(str(mode.__class__.__name__))))

    @pyqtSlot(int)
    def on_cbxLatexMode_activated(self, index):
        if not self.mainwin:
            return
        cls = str(self.ui.cbxLatexMode.itemData(index).toString())
        try:
            latexmode = next(iter( (mode for mode in latexmodes.latex_modes if mode.__class__.__name__ == cls) ))
        except StopIteration:
            logger.warning("Couldn't find mode: %s", cls)
            return

        self.mainwin.latexmode = latexmode
        self.updateFileNamingConventions()

    def setupFileNamingConventions(self):
        self.ui.cbxFileNaming.clear()
            
        titlekwargs = {}
        if self.mainwin:
            titlekwargs['ext'] = self.mainwin.latexmode.outputext()

        for filenaming in filenamingconventions.naming_conventions:
            self.ui.cbxFileNaming.addItem(filenaming.title(**titlekwargs),
                                          QVariant(QString(str(filenaming.__class__.__name__))))

    def updateFileNamingConventions(self):
        titlekwargs = {}
        if self.mainwin:
            titlekwargs['ext'] = self.mainwin.latexmode.outputext()

        for k in range(self.ui.cbxFileNaming.count()):
            self.ui.cbxFileNaming.setItemText(
                k,
                filenamingconventions.naming_conventions[k].title(**titlekwargs)
                )
        self.updateFileNamingConventionDescription()

    def updateFileNamingConventionDescription(self, index=None):
        titlekwargs = {}
        if self.mainwin:
            titlekwargs['ext'] = self.mainwin.latexmode.outputext()

        if index is None:
            index = self.ui.cbxFileNaming.currentIndex()
            
        if index >= 0 and index < self.ui.cbxFileNaming.count():
            text = filenamingconventions.naming_conventions[index].description(**titlekwargs)
        else:
            text = ""
            
        self.ui.lblFileNamingDesc.setText(text)

    @pyqtSlot(int)
    def on_cbxFileNaming_activated(self, index):
        self.updateFileNamingConventionDescription(index)

        cls = str(self.ui.cbxFileNaming.itemData(index).toString())
        try:
            filenaming = next(iter(
                (mode for mode in filenamingconventions.naming_conventions if mode.__class__.__name__ == cls)
                ))
        except StopIteration:
            logger.warning("Couldn't find file naming scheme: %s", cls)
            return

        self.mainwin.filenamingconvention = filenaming