Exemplo n.º 1
0
class KwFontDataChoicer(QWidget):
    u'''
    @version: 0.1.1
    '''

    fontChanged = pyqtSignal(str, name='fontChanged')
    font_sizeChanged = pyqtSignal(int, name='font_sizeChanged')

    def __init__(self, font='', size=10, *args, **kwargs):
        super(KwFontDataChoicer, self).__init__(*args, **kwargs)

        self.__fontChoice = QFontComboBox(self)
        self.__fontChoice.setCurrentFont(QFont(font))
        #.setCurrentText(font)
        self.__fontChoice.currentIndexChanged[str].connect(
            self.fontChanged.emit)

        self.__font_sizeEdit = QSpinBox(self)
        self.__font_sizeEdit.setRange(5, 72)
        self.__font_sizeEdit.setValue(size)
        self.__font_sizeEdit.valueChanged[int].connect(
            self.font_sizeChanged.emit)

        layout = QHBoxLayout(self)
        layout.setSpacing(5)
        layout.setContentsMargins(0, 0, 0, 0)
        layout.addWidget(self.__fontChoice, 1)
        layout.addWidget(self.__font_sizeEdit, 0)

    @property
    def font_data(self):
        return self.__fontChoice.currentText(), self.__font_sizeEdit.value()

    @font_data.setter
    def font_data(self, font, size):
        self.__fontChoice.setCurrentText(font)
        self.__font_sizeEdit.setValue(size)

    @property
    def font(self):
        return self.__fontChoice.currentText()

    @font.setter
    def font(self, font):
        self.__fontChoice.setCurrentText(font)

    @property
    def size(self):
        return self.__font_sizeEdit.value()

    @size.setter
    def size(self, size):
        return self.__font_sizeEdit.setValue(size)
Exemplo n.º 2
0
class WritingModeRLDocker(DockWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Create Vertical Writing")
        mainWidget = QWidget(self)
        self.setWidget(mainWidget)

        convertButtons = QWidget(mainWidget)
        buttonCopyToClipboard = QPushButton("Copy to Clipboard",
                                            convertButtons)
        buttonCopyToClipboard.clicked.connect(self.copyToClipboard)
        buttonOutputSVG = QPushButton("Output SVG", convertButtons)
        buttonOutputSVG.clicked.connect(self.outputSVG)
        buttonBoth = QPushButton("Both", convertButtons)
        buttonBoth.clicked.connect(self.both)

        convertTextLabels = QWidget(mainWidget)
        inputTextLabel = QLabel("Input Text", convertTextLabels)
        outputTextLabel = QLabel("Output SVG", convertTextLabels)

        convertTexts = QWidget(mainWidget)
        self.inputText = QPlainTextEdit(convertTexts)
        self.outputText = QPlainTextEdit(
            "text converted by \"Output SVG\" from left input textarea",
            convertTexts)
        self.outputText.setReadOnly(True)

        fontNames = QWidget(mainWidget)
        fontSelectorLabel = QLabel("font family", fontNames)
        self.fontSelector = QFontComboBox(fontNames)

        fontOptionDatas = QWidget(mainWidget)
        fontColorParts = QWidget(mainWidget)
        fontColorParts.setLayout(QHBoxLayout())
        fontColorLabel = QLabel("font color", fontColorParts)
        self.fontColorButton = QPushButton("■", fontColorParts)
        self.fontColorButton.clicked.connect(self.openTextColorDialog)
        self.fontColorDialog = QColorDialog(mainWidget)
        self.fontColorDialog.colorSelected.connect(self.selectedColor)
        self.fontColorCombo = QComboBox(fontOptionDatas)
        self.fontColorCombo.setEditable(True)
        self.fontColorCombo.addItems([
            "#000000", "#7f7f7f", "#ffffff", "#ff0000", "#ffff00", "#00ff00",
            "#00ffff", "#0000ff", "#ff00ff"
        ])
        self.fontColorCombo.editTextChanged.connect(self.colorChanged)
        self.colorChanged(self.fontColorCombo.currentText())
        fontColorParts.layout().addWidget(fontColorLabel)
        fontColorParts.layout().addWidget(self.fontColorButton)
        fontSizeLabel = QLabel("font size(pt)", fontOptionDatas)
        self.fontSizeCombo = QComboBox(fontOptionDatas)
        self.fontSizeCombo.setEditable(True)
        self.fontSizeCombo.addItems([
            "6", "7", "8", "9", "10", "11", "12", "14", "16", "18", "20", "22",
            "24", "26", "28", "36", "48", "72"
        ])
        self.fontSizeCombo.setEditText("8")

        fontNames.setLayout(QHBoxLayout())
        fontNames.layout().addWidget(fontSelectorLabel)
        fontNames.layout().addWidget(self.fontSelector)

        fontOptionDatas.setLayout(QHBoxLayout())
        fontOptionDatas.layout().addWidget(fontColorParts)
        fontOptionDatas.layout().addWidget(self.fontColorCombo)
        fontOptionDatas.layout().addWidget(fontSizeLabel)
        fontOptionDatas.layout().addWidget(self.fontSizeCombo)

        convertTextLabels.setLayout(QHBoxLayout())
        convertTextLabels.layout().addWidget(inputTextLabel)
        convertTextLabels.layout().addWidget(outputTextLabel)

        convertTexts.setLayout(QHBoxLayout())
        convertTexts.layout().addWidget(self.inputText)
        convertTexts.layout().addWidget(self.outputText)

        convertButtons.setLayout(QHBoxLayout())
        convertButtons.layout().addWidget(buttonOutputSVG)
        convertButtons.layout().addWidget(buttonCopyToClipboard)
        convertButtons.layout().addWidget(buttonBoth)

        mainWidget.setLayout(QVBoxLayout())
        mainWidget.layout().addWidget(fontNames)
        mainWidget.layout().addWidget(fontOptionDatas)
        mainWidget.layout().addWidget(convertButtons)
        mainWidget.layout().addWidget(convertTextLabels)
        mainWidget.layout().addWidget(convertTexts)

    def canvasChanged(self, canvas):
        pass

    def openTextColorDialog(self):
        self.fontColorDialog.open()

    def selectedColor(self, color):
        self.fontColorCombo.setEditText(color.name())

    def colorChanged(self, text):
        self.fontColorButton.setStyleSheet("color:" + text + ";")

    def both(self):
        self.outputSVG()
        self.copyToClipboard()

    def copyToClipboard(self):
        ccText = self.outputText.toPlainText()
        QApplication.clipboard().setText(ccText)

    def outputSVG(self):
        putText = self.__transSVG(self.inputText.toPlainText())
        self.outputText.setPlainText(putText)

    def __transSVG(self, originText):
        beforeText = copy.deepcopy(originText)
        width = len(beforeText.split("\n"))
        editingText = ""
        outChars = list(beforeText)
        y = 0
        x = (width - 1) * 1.2
        for part in outChars:
            if part == "\n":
                y = 0
                x -= 1.2
            else:
                editedTextX = DefineLocate.getEditedX(
                    part, self.fontSizeCombo.currentText())
                editedTextY = DefineLocate.getEditedY(
                    part, self.fontSizeCombo.currentText())
                resultX = x + editedTextX
                resultY = y + editedTextY
                editingText = editingText + "  <tspan x=\"" + \
                    str(resultX) + "em\" y=\"" + str(resultY) + "em\">" + \
                    html.escape(part) + "</tspan>\n"
                y += 1.2
        outText = "<text style=\"font-family:" + \
            self.fontSelector.currentText() + \
            ";font-size:"+self.fontSizeCombo.currentText() + \
            ";fill:" + self.fontColorCombo.currentText() + "\">\n" + \
            editingText + "</text>"
        return outText
Exemplo n.º 3
0
    def create_ui(self):
        # 1.文字标签
        # QLabel(显示的文字, 父标签/放到哪个窗口上)
        label1 = QLabel('用户名:', self)
        # 一般不常用的移动坐标
        label1.move(50, 10)

        # 2.按钮
        btn1 = QPushButton('登录', self)
        btn1.move(50, 50)
        # css语法:选择器{属性1:属性值1; 属性2:属性值2;..}
        # color - 字体颜色,对应的值:颜色单词, rbg(255, 0, 0)
        #
        btn1.setStyleSheet('QPushButton{}')
        btn2 = QRadioButton('男', self)
        btn2.move(50, 100)
        btn3 = QCheckBox('篮球', self)
        btn3.move(50, 150)
        btn4 = QCommandLinkButton('hello', 'hellowword', self)
        btn4.move(50, 200)

        b1 = QDialogButtonBox.StandardButton.Ok
        b2 = QDialogButtonBox.StandardButton.Cancel
        btn5 = QDialogButtonBox(b2, self)
        btn5.move(50, 300)

        # 3.输入框
        input1 = QLineEdit(self)
        input1.move(150, 10)
        input2 = QLineEdit('admin', self)
        input2.move(150, 50)
        input1.setText('张三')
        # 富文本
        input3 = QTextEdit('张三', self)
        input3.move(50, 300)
        # 设置成只读
        input3.setReadOnly(True)
        # 只能显示纯文本
        input4 = QPlainTextEdit(self)
        input4.move(300, 10)
        # 输入数值
        input5 = QSpinBox(self)
        input5.move(100, 100)
        input5.setMinimum(10)
        input5.setMaximum(20)
        input5.setValue(15)
        print(input5.value())  # 获取当前值
        # 输入小数
        input6 = QDoubleSpinBox(self)
        input6.move(100, 150)
        # 下拉菜单
        input7 = QComboBox(self)
        input7.addItems(['item1', 'item2'])
        input7.move(150, 200)
        print(input7.currentText())  # 获取当前选中的选项,适用input8
        input8 = QFontComboBox(self)
        input8.move(350, 300)
        input8.setCurrentIndex(2)
        print(input8.currentText())
        label1.setFont(input8.currentFont())
        # 日期选择
        input9 = QDateEdit(date.today(), self)
        input9.move(300, 400)
        # 选择颜色
        input10 = QColorDialog(self)
        input10.move(400, 400)
        # input10.show()

        input11 = QDial(self)
        input11.move(300, 200)

        input12 = QSlider(self)
        input12.move(430, 350)
        input12.setMaximum(100)
        input12.setMinimum(-100)
        input12.setValue(20)
        input12.setOrientation(Qt.Horizontal)  # 设置为水平方向
Exemplo n.º 4
0
class SettingsDialog(QDialog):
    def __init__(self, settings: Settings):
        super(SettingsDialog, self).__init__()
        self.settings = settings
        self.setWindowTitle("Sticky Note - Settings")
        self.layout = QFormLayout()

        self.fontSizeBox = QComboBox(self)
        for i in settings.getAllFontSizes():
            self.fontSizeBox.addItem(str(i))
        self.fontSizeBox.setCurrentText(str(settings.getFontSize()))
        self.layout.addRow("Font size", self.fontSizeBox)
        self.fontSizeBox.currentIndexChanged.connect(self.fontSizeChanged)

        self.fontFamilyBox = QFontComboBox(self)
        self.layout.addRow("Font Family", self.fontFamilyBox)
        self.fontFamilyBox.setCurrentFont(QFont(settings.getFontFamily()))
        self.fontFamilyBox.currentIndexChanged.connect(self.fontFamilyChanged)

        self.colorButton = QPushButton('', self)
        color = QColor(settings.getFontColor())
        self.fontColorChanged(color)
        self.colorButton.clicked.connect(self.showColors)
        self.layout.addRow("Font Color", self.colorButton)

        isAutoStartCheckBox = QCheckBox("Enable start on startup", self)
        #self.layout.addRow("", isAutoStartCheckBox)
        isAutoStartCheckBox.stateChanged.connect(self.actionEnableAutoStart)
        isAutoStartCheckBox.setChecked(settings.getStartOnStartup())

        QBtn = QDialogButtonBox.Ok | QDialogButtonBox.Cancel
        self.buttonBox = QDialogButtonBox(QBtn)
        self.buttonBox.accepted.connect(self.accept)
        self.buttonBox.rejected.connect(self.reject)
        self.layout.addRow(self.buttonBox)

        self.setLayout(self.layout)
        self.setWindowFlags(Qt.Window)
        self.setFixedSize(350, 150)

    def fontColorChanged(self, color):
        if (color.isValid()):
            self.colorButton.setStyleSheet(
                "background-color: {0};border-color: {0}".format(color.name()))
            self.settings.setFontColor(color.name())

    def showColors(self):
        colorDialog = QColorDialog()
        color = colorDialog.getColor()
        if color:
            self.fontColorChanged(color)

    def fontSizeChanged(self):
        fontSize = str(self.fontSizeBox.currentText())
        self.settings.setFontSize(fontSize)

    def fontFamilyChanged(self):
        fontFamily = str(self.fontFamilyBox.currentText())
        self.settings.setFontFamily(fontFamily)

    def accept(self):
        ConfigParser.config_instance.saveSettings(self.settings)
        self.done(0)
        StickyNoteManager.sticky_note_manager_instance.updateSettings()

    def reject(self):
        self.done(0)

    def actionEnableAutoStart(self, res):
        self.settings.setStartOnStartup(bool(res))
Exemplo n.º 5
0
class project:
    projectName = ""
    paratextFolder = ""
    audioFolderName = ""
    textFont = ""
    textSize = 0
    fileType = ""
    bBook = False
    currentBook = 1
    currentChapter = 1

    def project(self):
        pass

    def readProject(self, currentProject):
        try:
            print("Reading project " + currentProject)
            refMatcher = re.compile("^CurrentReference=([^ ]+) (\\d+)$")
            for line in open(currentProject + '.prj'):
                line = line.strip()
                mtch = refMatcher.match(line)
                if mtch:
                    self.currentBook = mtch.group(1)
                    # bk = mtch.group(1)
                    # for i, b in enumerate(data.data.book):
                    #    if b.equals(bk):
                    #         self.currentBook = i
                    #         break
                    self.currentChapter = mtch.group(2)
                elif line.startswith("ProjectName="):
                    self.projectName = line[len("ProjectName="):]
                elif line.startswith("VersionName="):
                    self.projectName = line[len("VersionName="):]
                elif line.startswith("ParatextFolder="):
                    self.paratextFolder = line[len("ParatextFolder="):]
                elif line.startswith("SoundFolder="):
                    self.audioFolderName = line[len("SoundFolder="):]
                elif line.startswith("AudioFolder="):
                    self.audioFolderName = line[len("AudioFolder="):]
                elif line.startswith("Font="):
                    self.textFont = line[len("Font="):]
                elif line.startswith("FontSize="):
                    self.textSize = int(line[len("FontSize=")])
                elif line.startswith("FileType="):
                    self.fileType = line[len("FileType="):]
                    self.bBook = self.fileType == "Book"
                else:
                    print("Unknown project option: ", line)
        except FileNotFoundError:
            print("Failed to open project file")
            self.writeProject(currentProject)
            pass
        except Exception as detail:
            print("Exception reading project file: ", detail)
            pass

    def writeProject(self, currentProject):
        print("Writing project file")
        try:
            fh = open(currentProject + ".prj", "w+")
            fh.write("CurrentReference=" + self.currentBook + " " +
                     str(self.currentChapter) + "\n")
            fh.write("ProjectName=" + self.projectName + "\n")
            fh.write("ParatextFolder=" + self.paratextFolder + "\n")
            fh.write("AudioFolder=" + self.audioFolderName + "\n")
            fh.write("Font=" + self.textFont + "\n")
            fh.write("FontSize=" + str(self.textSize) + "\n")
            fh.write("FileType=" + self.fileType + "\n")
            fh.close()
        except Exception as detail:
            print("IOException writing project file: ", detail)
            pass

# class Ui_Dialog(object):

    def setupUi(self, Dialog, proj, newProject):
        try:
            self.dialog = Dialog
            self.proj = proj
            Dialog.setObjectName("Dialog")
            Dialog.resize(400, 357)
            self.buttonBox = QDialogButtonBox(Dialog)
            self.buttonBox.setGeometry(QRect(30, 310, 341, 32))
            self.buttonBox.setOrientation(Qt.Horizontal)
            self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel
                                              | QDialogButtonBox.Ok)
            self.buttonBox.setObjectName("buttonBox")
            self.groupBox = QGroupBox(Dialog)
            self.groupBox.setGeometry(QRect(10, 0, 381, 61))
            self.groupBox.setObjectName("groupBox")
            self.lineEditProjectName = QLineEdit(self.groupBox)
            self.lineEditProjectName.setGeometry(QRect(10, 30, 361, 23))
            self.lineEditProjectName.setObjectName("lineEditProjectName")
            self.groupBox_2 = QGroupBox(Dialog)
            self.groupBox_2.setGeometry(QRect(10, 60, 381, 61))
            self.groupBox_2.setObjectName("groupBox_2")
            self.comboBoxProjectType = QComboBox(self.groupBox_2)
            self.comboBoxProjectType.setGeometry(QRect(10, 30, 361, 23))
            self.comboBoxProjectType.setObjectName("comboBoxProjectType")
            self.groupBox_3 = QGroupBox(Dialog)
            self.groupBox_3.setGeometry(QRect(10, 120, 381, 61))
            self.groupBox_3.setObjectName("groupBox_3")
            self.lineEditSourcePath = QLineEdit(self.groupBox_3)
            self.lineEditSourcePath.setGeometry(QRect(10, 30, 271, 23))
            self.lineEditSourcePath.setObjectName("lineEditSourcePath")
            self.pushButtonBrowseSource = QPushButton(self.groupBox_3)
            self.pushButtonBrowseSource.setGeometry(QRect(290, 30, 80, 23))
            self.pushButtonBrowseSource.setObjectName("pushButtonBrowseSource")
            self.groupBox_4 = QGroupBox(Dialog)
            self.groupBox_4.setGeometry(QRect(10, 180, 381, 61))
            self.groupBox_4.setObjectName("groupBox_4")
            self.pushButtonBrowseAudio = QPushButton(self.groupBox_4)
            self.pushButtonBrowseAudio.setGeometry(QRect(290, 30, 80, 23))
            self.pushButtonBrowseAudio.setObjectName("pushButtonBrowseAudio")
            self.lineEditAudioFilesPath = QLineEdit(self.groupBox_4)
            self.lineEditAudioFilesPath.setGeometry(QRect(10, 30, 271, 23))
            self.lineEditAudioFilesPath.setObjectName("lineEditAudioFilesPath")
            self.groupBox_5 = QGroupBox(Dialog)
            self.groupBox_5.setGeometry(QRect(10, 240, 381, 61))
            self.groupBox_5.setObjectName("groupBox_5")
            self.comboBoxFont = QFontComboBox(self.groupBox_5)
            self.comboBoxFont.setGeometry(QRect(10, 30, 271, 23))
            self.comboBoxFont.setObjectName("comboBoxFont")
            self.lineEditFontSize = QLineEdit(self.groupBox_5)
            self.lineEditFontSize.setGeometry(QRect(290, 30, 81, 23))
            self.lineEditFontSize.setObjectName("lineEditFontSize")

            # set up fields
            if newProject:
                self.projectName = ""
                self.paratextFolder = "c:\\My Paratext 8 Projects"
                self.textFont = "Times New Roman"
                self.textSize = 25
                self.fileType = "Paratext"

            typeList = ("Paratext", "Book", "BART")
            # self.comboBoxProjectType.clear()
            for index, i in enumerate(typeList):
                self.comboBoxProjectType.addItem(i)
            index = self.comboBoxProjectType.findText(self.fileType,
                                                      Qt.MatchFixedString)
            if index >= 0:
                self.comboBoxProjectType.setCurrentIndex(index)
            self.lineEditProjectName.setText(self.projectName)
            self.lineEditSourcePath.setText(self.paratextFolder)
            self.lineEditAudioFilesPath.setText(self.audioFolderName)
            index = self.comboBoxFont.findText(self.textFont,
                                               Qt.MatchFixedString)
            if index >= 0:
                self.comboBoxFont.setCurrentIndex(index)
            self.lineEditFontSize.setText(str(self.textSize))

            self.retranslateUi(Dialog)
            self.pushButtonBrowseSource.clicked.connect(self.browse_source)
            self.pushButtonBrowseAudio.clicked.connect(self.browse_audio_path)
            self.lineEditProjectName.textChanged.connect(
                self.lineEditProjectName_changed)
            self.comboBoxProjectType.currentTextChanged.connect(
                self.comboBoxProjectType_changed)
            self.comboBoxFont.currentTextChanged.connect(
                self.comboBoxFont_changed)
            self.lineEditFontSize.textChanged.connect(
                self.lineEditFontSize_changed)
            self.buttonBox.accepted.connect(self.accept)
            self.buttonBox.rejected.connect(self.reject)
            QMetaObject.connectSlotsByName(Dialog)
        except Exception as detail:
            print("Exception: " + detail)

    def retranslateUi(self, Dialog):
        _translate = QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.groupBox.setTitle(_translate("Dialog", "Project name"))
        self.groupBox_2.setTitle(_translate("Dialog", "Type"))
        self.groupBox_3.setTitle(_translate("Dialog", "Source"))
        self.pushButtonBrowseSource.setText(_translate("Dialog", "Browse..."))
        self.groupBox_4.setTitle(_translate("Dialog", "Audio files folder"))
        self.pushButtonBrowseAudio.setText(_translate("Dialog", "Browse..."))
        self.groupBox_5.setTitle(_translate("Dialog", "Font"))

    def accept(self):
        self.writeProject(self.projectName)
        print("Saved project " + self.projectName)
        self.dialog.close()

    def reject(self):
        print("Cancel")
        self.dialog.close()

    def comboBoxProjectType_changed(self):
        self.fileType = self.comboBoxProjectType.currentText()
        # print("Changing project type to " + self.fileType)
        self.bBook = True
        if self.fileType == "Paratext":
            self.paratextFolder = "c:\\Paratext\\My Paratext 8 Projects\\" + self.lineEditProjectName.text(
            )
            self.bBook = False
        elif self.fileType == "Book":
            self.paratextFolder = ""
        else:
            self.paratextFolder = ""
        self.lineEditSourcePath.setText(self.paratextFolder)

    def lineEditProjectName_changed(self):
        self.comboBoxProjectType_changed()
        self.lineEditSourcePath.setText(self.paratextFolder)
        self.projectName = self.lineEditProjectName.text()

    def comboBoxFont_changed(self):
        self.textFont = self.comboBoxFont.currentText()

    def lineEditFontSize_changed(self):
        self.textSize = int(self.lineEditFontSize.text())

    def browse_source(self):
        try:
            my_dir = QFileDialog.getExistingDirectory(self.dialog,
                                                      "Open a folder",
                                                      self.paratextFolder,
                                                      QFileDialog.ShowDirsOnly)
            if my_dir:
                self.paratextFolder = my_dir
            self.lineEditSourcePath.setText(self.paratextFolder)
        # except TypeError as detail:
        #     print (detail)
        except Exception:
            print("Failed choose Paratext folder: ")  # + detail)

    def browse_audio_path(self):
        try:
            my_dir = QFileDialog.getExistingDirectory(self.dialog,
                                                      "Open a folder",
                                                      self.audioFolderName,
                                                      QFileDialog.ShowDirsOnly)
            if my_dir:
                self.audioFolderName = my_dir
            self.lineEditAudioFilesPath.setText(self.audioFolderName)
        # except TypeError as detail:
        #     print (detail)
        except Exception:
            print("Failed choose audio folder: ")  # + detail)