Ejemplo n.º 1
2
    def getWidgetGeneralInfoStoryLine(self, parent, scale, value):
        if value:

            widget_value = QPlainTextEdit(parent)

            widget_value.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

            widget_value.setFont(
                QFont(PANEL_FONT_TYPE,
                      PANEL_FONT_SIZE * scale,
                      weight=QFont.Normal))
            widget_value.setReadOnly(True)
            widget_value.setMinimumHeight((PANEL_FONT_SIZE + 3) * scale)

            sizePolicy = QSizePolicy(QSizePolicy.Expanding,
                                     QSizePolicy.Expanding)
            widget_value.setSizePolicy(sizePolicy)

            [widget_value.appendPlainText(line) for line in value.split('\\n')]

            widget_value.moveCursor(QTextCursor.Start)
            # - eliminate the padding from the top - #
            widget_value.document().setDocumentMargin(0)
            widget_value.setStyleSheet(
                "QPlainTextEdit {padding-left:5px; padding-top:0px; border:0px;}"
            )

            return widget_value

        return None
class ExperimentConsoleOutput(QWidget):
    def __init__(self):
        # super().__init__()
        super(ExperimentConsoleOutput, self).__init__()
        # Create text entry box
        self.__plainTextWgt = QPlainTextEdit()
        # Change font, colour of text entry box
        self.__plainTextWgt.setStyleSheet(
            """QPlainTextEdit {background-color: #333;
                               color: #00FF00;
                               text-decoration: underline;
                               font-family: Courier;}""")
        self.__mainLayout = QVBoxLayout(self)
        # "Central Widget" expands to fill all available space
        self.__mainLayout.addWidget(self.__plainTextWgt)
        # Print text to console whenever it changes
        self.__plainTextWgt.textChanged.connect(lambda: print(self.__plainTextWgt.document().toPlainText()))
        # Set initial value of text
        self.__plainTextWgt.document().setPlainText("Experiment log will print here")
        #
        self.run()

    def qPlainTextWgt(self):
        return self.__plainTextWgt

    def run(self):
        try:
            self.show()
        except Exception as e:
            print("[", dt.datetime.now(), ", LOG] msg: ", e)
Ejemplo n.º 3
1
	def __init__(self, window:QMainWindow, system_info):
		super().__init__()
		v_box = QVBoxLayout()
		h_buttons = QHBoxLayout()

		button_style = "background-color: #006699; padding-left:20px; padding-right:20px; padding-top:5px; padding-bottom:5px;"
		copy_pastable_json = json.dumps(system_info, indent=2)
		website_link = str(base64.b64decode("aHR0cHM6Ly90YXJhbGxvLndlZWVvcGVuLml0L2J1bGsvYWRkCg=="), "utf-8")

		self.clipboard_button = QPushButton("Copy to clipboard")
		self.clipboard_button.setStyleSheet(button_style)
		self.clipboard_button.clicked.connect(lambda: QApplication.clipboard().setText(copy_pastable_json))
		self.clipboard_button.clicked.connect(lambda: self.spawn_notification("Copied to clipboard"))

		self.website_button = QPushButton("Go to T.A.R.A.L.L.O.")
		self.website_button.setStyleSheet(button_style)
		self.website_button.clicked.connect(lambda: sp.Popen(["xdg-open", website_link]))

		plain_text = QPlainTextEdit()
		plain_text.document().setPlainText(copy_pastable_json)
		plain_text.setStyleSheet("background-color:#333333; color:#bbbbbb")
		plain_text.setReadOnly(True)
		plain_text.setMinimumSize(plain_text.width(), plain_text.height())
		# prevent from resizing too much

		back_button = QPushButton("Go back")
		back_button.clicked.connect(lambda: self.restore_previous_window(window, system_info))

		h_buttons.addWidget(self.clipboard_button, alignment=Qt.AlignCenter)
		h_buttons.addWidget(self.website_button, alignment=Qt.AlignCenter)

		v_box.addLayout(h_buttons)
		v_box.addWidget(plain_text)
		v_box.addWidget(back_button, alignment=Qt.AlignCenter)
		self.setLayout(v_box)
Ejemplo n.º 4
0
def show_info_dialog(caption, parent, initial_text):
    dialog = QDialog(parent)
    dialog.setWindowTitle(caption)
    # Create OK and Cancel buttons in a horizontal box.
    ok_button = QPushButton("OK")
    ok_button.setDefault(True)
    ok_button.clicked.connect(dialog.accept)
    cancel_button = QPushButton("Cancel")
    cancel_button.setDefault(False)
    cancel_button.clicked.connect(dialog.reject)
    hbox = QHBoxLayout()
    hbox.addWidget(cancel_button, 0)
    hbox.addStretch()
    hbox.addWidget(ok_button, 0)
    # Lay out a Plain Text Edit above the buttons.
    vbox = QVBoxLayout()
    pt_editor = QPlainTextEdit()
    pt_editor.document().setPlainText(initial_text)
    vbox.addWidget(pt_editor, 1)
    vbox.addLayout(hbox, 0)
    dialog.setLayout(vbox)
    result = dialog.exec_()
    if result:
        return pt_editor.document().toPlainText()
    else:
        return None
Ejemplo n.º 5
0
def all():
    app = QApplication(sys.argv)
    #qanda = QandA()
    window = QWidget()
    window.resize(1000, 1000)
    edit_button = QPushButton()
    finish_button = QPushButton()
    finish_button.setText('Finish')
    #Create text entry box
    text_edit_widget = QPlainTextEdit()
    #Change font, color of text entry box
    text_edit_widget.setStyleSheet("""QPlainTextEdit {background-color:#333;
            color: #00FF00;
            text-decoration: underline;
            font-family: Courier;}""")
    layout = QVBoxLayout()
    layout.addWidget(text_edit_widget)

    layout.addWidget(finish_button)
    #"Central Widget" expands to fill all available space
    window.setLayout(layout)

    # Set initial value of text
    con = sqlite3.connect('QandA.db')
    c = con.cursor()
    question_list = ''
    for row in c.execute("select * from qanda"):
        question_list = question_list + row[1] + '\t' + row[2] + '\n\n'
    text_edit_widget.document().setPlainText(question_list)
    finish_button.clicked.connect(lambda: QCoreApplication.instance().quit())
    window.show()
    sys.exit(app.exec_())
Ejemplo n.º 6
0
def show_info_dialog( caption, parent, initial_text ):
    dialog = QDialog( parent )
    dialog.setWindowTitle( caption )
    # Create OK and Cancel buttons in a horizontal box.
    ok_button = QPushButton("OK")
    ok_button.setDefault(True)
    ok_button.clicked.connect(dialog.accept)
    cancel_button = QPushButton("Cancel")
    cancel_button.setDefault(False)
    cancel_button.clicked.connect(dialog.reject)
    hbox = QHBoxLayout()
    hbox.addWidget(cancel_button,0)
    hbox.addStretch()
    hbox.addWidget(ok_button,0)
    # Lay out a Plain Text Edit above the buttons.
    vbox = QVBoxLayout()
    pt_editor = QPlainTextEdit()
    pt_editor.document().setPlainText( initial_text )
    vbox.addWidget(pt_editor,1)
    vbox.addLayout(hbox,0)
    dialog.setLayout(vbox)
    result = dialog.exec_()
    if result :
        return pt_editor.document().toPlainText()
    else :
        return None
Ejemplo n.º 7
0
def get_text_edit_row_height(editor: QtWidgets.QPlainTextEdit,
                             rows: int) -> int:
    metrics = QtGui.QFontMetrics(editor.document().defaultFont())
    margins = editor.contentsMargins()
    return (metrics.lineSpacing() * rows +
            (editor.document().documentMargin() + editor.frameWidth()) * 2 +
            margins.top() + margins.bottom() + 1)
Ejemplo n.º 8
0
    def __init__(self, window: QMainWindow, system_info):
        super().__init__()
        v_box = QVBoxLayout()
        h_buttons = QHBoxLayout()
        s_buttons = QHBoxLayout()

        button_style = "background-color: #006699; padding-left:20px; padding-right:20px; padding-top:5px; padding-bottom:5px;"
        copy_pastable_json = json.dumps(system_info, indent=2)

        self.back_button = QPushButton("Go back")
        self.back_button.setStyleSheet(
            "padding-left:20px; padding-right:20px; padding-top:5px; padding-bottom:5px;"
        )
        self.back_button.clicked.connect(
            lambda: self.restore_previous_window(window, system_info))
        h_buttons.addWidget(self.back_button, alignment=Qt.AlignLeft)

        plain_text = QPlainTextEdit()
        plain_text.document().setPlainText(copy_pastable_json)
        plain_text.setStyleSheet("background-color:#333333; color:#bbbbbb")
        plain_text.setReadOnly(True)
        plain_text.setMinimumSize(plain_text.width(), plain_text.height())
        # prevent from resizing too much

        layout_grid = QGridLayout()

        self.lbl_manual = QLabel("Manual")
        layout_grid.addWidget(self.lbl_manual, 0, 1, Qt.AlignCenter)

        self.clipboard_button = QPushButton("Copy to clipboard")
        self.clipboard_button.setStyleSheet(button_style)
        self.clipboard_button.clicked.connect(
            lambda: QApplication.clipboard().setText(copy_pastable_json))
        self.clipboard_button.clicked.connect(
            lambda: self.spawn_notification("Copied to clipboard"))
        layout_grid.addWidget(self.clipboard_button, 1, 1, Qt.AlignCenter)

        self.website_button = QPushButton("Go to T.A.R.A.L.L.O.")
        self.website_button.setStyleSheet(button_style)
        self.website_button.clicked.connect(
            lambda: _go_to_tarallo("/bulk/add"))
        layout_grid.addWidget(self.website_button, 2, 1, Qt.AlignCenter)

        self.lbl_automatic = QLabel("Automatic")
        layout_grid.addWidget(self.lbl_automatic, 0, 0, Qt.AlignCenter)

        self.tarallo_data = QPushButton("Send data to T.A.R.A.L.L.O.")
        self.tarallo_data.setStyleSheet(button_style)
        self.tarallo_data.clicked.connect(lambda: self.send_data(system_info))
        layout_grid.addWidget(self.tarallo_data, 1, 0, -1, 1, Qt.AlignCenter)

        v_box.addLayout(h_buttons)
        v_box.addWidget(plain_text)
        v_box.addLayout(layout_grid)

        self.setLayout(v_box)
Ejemplo n.º 9
0
class GenericControlPanel(AbstractControlPanel):

    autoPilotRebootSignal = pyqtSignal()
    textMessageConsole = None
    __updateTextConsoleSignal = pyqtSignal(object)

    def __init__(self, parent=None):
        super().__init__(parent)
        l = QGridLayout()
        row = 0
        self.rebootAutoPilotButton = QPushButton('Reboot AutoPilot')
        self.rebootAutoPilotButton.setStyleSheet('background-color: red')
        self.rebootAutoPilotButton.clicked.connect(self.__rebootAutoPilot)
        l.addWidget(self.rebootAutoPilotButton, row, 0, 1, 1, Qt.AlignLeft)
        row += 1
        self.textMessageConsole = QPlainTextEdit(self)
        self.textMessageConsole.setReadOnly(True)
        self.textMessageConsole.document().setMaximumBlockCount(100)
        self.__updateTextConsoleSignal.connect(self.__textMessagePrint)
        l.addWidget(self.textMessageConsole, row, 0, 5, 5)
        self.setLayout(l)

    def tabName(self):
        return 'Mavlink'

    def registerMavlinkMessageListeners(self):
        return ['STATUSTEXT']

    def mavlinkMessageReceived(self, msg):
        if msg.get_type() == 'STATUSTEXT':
            self.__updateTextConsoleSignal.emit(msg.text)

    def __textMessagePrint(self, msg: str):
        self.textMessageConsole.insertPlainText('{}: {}'.format(
            time.strftime('%H:%M:%S', time.localtime()), msg))
        bar = self.textMessageConsole.verticalScrollBar()
        bar.setValue(bar.maximum())

    def __rebootAutoPilot(self):
        if self.isConnected:
            cfm = QMessageBox.question(self.window(), 'Reboot AutoPilot',
                                       'The autopilot will reboot, continue?',
                                       QMessageBox.Yes, QMessageBox.No)
            if cfm == QMessageBox.Yes:
                msg = mavlink.MAVLink_command_long_message(
                    255, 0, mavlink.MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN, 0, 1, 0,
                    0, 0, 0, 0, 0)
                self.autoPilotRebootSignal.emit(
                )  # signal other component the reboot event
                self.mavlinkTxSignal.emit(msg)
Ejemplo n.º 10
0
class Widget(QWidget):
    def __init__(self, parent=None):
        super(Widget, self).__init__(parent)

        self._lineedit = QLineEdit(textChanged=self.onTextChanged)
        regex_validator = QRegExpValidator(QRegExp(r"[0-9 ]+"))
        self._lineedit.setValidator(regex_validator)

        self._plaintextedit = QPlainTextEdit()

        self._highlighter = SyntaxHighlighter(self._plaintextedit.document())

        lay = QVBoxLayout(self)
        lay.addWidget(self._lineedit)
        lay.addWidget(self._plaintextedit)

        for i in range(10):
            self._plaintextedit.appendPlainText("line %d" % i)

        self.resize(720, 720)

    @pyqtSlot(str)
    def onTextChanged(self, text):
        fmt = QTextCharFormat()
        fmt.setBackground(QColor("yellow"))
        self._highlighter.clear_highlight()
        for e in text.split():
            line = int(e)
            self._highlighter.highlight_line(line, fmt)
Ejemplo n.º 11
0
class Example(QMainWindow):
    def __init__(self):
        super().__init__()
        self.text_editor = QPlainTextEdit()
        self.syntax = PythonHighlighter(self.text_editor.document())

        self.init_ui()

    def init_ui(self):

        background_color = QColor()
        background_color.setNamedColor('#282821')

        color_palette = self.text_editor.palette()
        color_palette.setColor(QPalette.Text, Qt.white)
        color_palette.setColor(QPalette.Base, background_color)
        self.text_editor.setPalette(color_palette)

        default_font = self.text_editor.font()
        default_font.setPointSize(9)
        self.text_editor.setFont(default_font)

        self.setWindowTitle('Example')
        self.setCentralWidget(self.text_editor)
        self.setGeometry(500, 500, 500, 500)

        self.show()
Ejemplo n.º 12
0
class GalleryDownloaderUrlExtracter(QWidget):

	url_emit = pyqtSignal(str)

	def __init__(self, parent=None):
		super().__init__(parent, flags=Qt.Window|Qt.WindowStaysOnTopHint)
		self.main_layout = QVBoxLayout(self)
		self.text_area = QPlainTextEdit(self)
		self.text_area.setPlaceholderText("URLs are seperated by a newline")
		self.main_layout.addWidget(self.text_area)
		self.text_area.setWordWrapMode(QTextOption.NoWrap)
		add_to_queue = QPushButton('Add to queue')
		add_to_queue.adjustSize()
		add_to_queue.setFixedWidth(add_to_queue.width())
		add_to_queue.clicked.connect(self.add_to_queue)
		self.main_layout.addWidget(add_to_queue, 0, Qt.AlignRight)
		self.setWindowIcon(QIcon(app_constants.APP_ICO_PATH))
		self.show()

	def add_to_queue(self):
		txt = self.text_area.document().toPlainText()
		urls = txt.split('\n')
		for u in urls:
			if u:
				self.url_emit.emit(u)
		self.close()
Ejemplo n.º 13
0
class GalleryDownloaderUrlExtracter(QWidget):

    url_emit = pyqtSignal(str)

    def __init__(self, parent=None):
        super().__init__(parent, flags=Qt.Window | Qt.WindowStaysOnTopHint)
        self.main_layout = QVBoxLayout(self)
        self.text_area = QPlainTextEdit(self)
        self.text_area.setPlaceholderText("URLs are seperated by a newline")
        self.main_layout.addWidget(self.text_area)
        self.text_area.setWordWrapMode(QTextOption.NoWrap)
        add_to_queue = QPushButton('Add to queue')
        add_to_queue.adjustSize()
        add_to_queue.setFixedWidth(add_to_queue.width())
        add_to_queue.clicked.connect(self.add_to_queue)
        self.main_layout.addWidget(add_to_queue, 0, Qt.AlignRight)
        self.setWindowIcon(QIcon(app_constants.APP_ICO_PATH))
        self.show()

    def add_to_queue(self):
        txt = self.text_area.document().toPlainText()
        urls = txt.split('\n')
        for u in urls:
            if u:
                self.url_emit.emit(u)
        self.close()
Ejemplo n.º 14
0
class MyW(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle('nyak1')
        grid = QGridLayout()
        self.setLayout(grid)

        self.editor = QPlainTextEdit()
        self.editor.setMinimumSize(100,100)
        self.check = QPushButton("check syntax")
        self.lb = QPlainTextEdit()
        self.lb.setStyleSheet("QLabel {"
                                 "border-style: solid;"
                                 "border-width: 1px;"
                                 "border-color: black; "
                                 "}")
        self.editor.setMinimumSize(40,100)
        grid.addWidget(self.editor, 0, 0, 2, 1)
        grid.addWidget(self.check, 0, 1)
        grid.addWidget(self.lb, 1, 1)
        font = QFont()
        font.setPointSize(12)
        #self.editor.setFont(font)
        self.highlight = HL_Syntax1.PythonHighlighter(self.editor.document())
        self.resize(700, 400)
        # Загрузите что-нибудь (например, editor_2.py) в редактор для демонстрации.
        infile = open('D:\Py_try\EZ_machining\examples\doc1.txt', 'r')
        self.editor.setPlainText(infile.read())
Ejemplo n.º 15
0
    def create_stdout_box(
            self) -> Tuple[QGroupBox, QPlainTextEdit, QSyntaxHighlighter]:
        gbox = QGroupBox('Program output')

        vbox = QVBoxLayout()
        gbox.setLayout(vbox)

        text_area = QPlainTextEdit()
        vbox.addWidget(text_area)
        text_area.setReadOnly(True)
        text_area.setWordWrapMode(QTextOption.NoWrap)

        palette = text_area.palette()  # type: QPalette
        palette.setColor(QPalette.Active, QPalette.Base, QColor('#1E1E1E'))
        palette.setColor(QPalette.Inactive, QPalette.Base, QColor('#1E1E1E'))
        text_area.setPalette(palette)

        font = QFont('Monospace', 9)
        font.setStyleHint(QFont.TypeWriter)
        fmt = QTextCharFormat()
        fmt.setFont(font)
        fmt.setForeground(QColor(212, 212, 212))
        text_area.setCurrentCharFormat(fmt)

        doc = text_area.document()
        highlighter = LogSeverityHighlighter(doc)

        return gbox, text_area, highlighter
Ejemplo n.º 16
0
    def cv2Info(self, cv2):
        layout = QVBoxLayout()

        info = cv2.getBuildInformation()

        text = QPlainTextEdit()
        fixedFont = QFontDatabase.systemFont(QFontDatabase.FixedFont)
        text.document().setDefaultFont(fixedFont)
        text.setReadOnly(True)
        text.setPlainText(info)

        layout.addWidget(QLabel(f"Version: {cv2.__version__}"))
        layout.addWidget(QLabel(f"Library: {cv2.__file__}"))
        layout.addWidget(text)
        layout.addStretch()
        return layout
Ejemplo n.º 17
0
class Example(QMainWindow):
    def __init__(self):
        super().__init__()
        self.text_editor = QPlainTextEdit()
        self.syntax = PythonHighlighter(self.text_editor.document())

        self.init_ui()
Ejemplo n.º 18
0
class Example(QMainWindow):
    def __init__(self):
        super().__init__()
        self.text_editor = QPlainTextEdit()
        self.syntax = PythonHighlighter(self.text_editor.document())

        self.init_ui()

    def init_ui(self):

        background_color = QColor()
        background_color.setNamedColor('#282821')

        color_palette = self.text_editor.palette()
        color_palette.setColor(QPalette.Text, Qt.white)
        color_palette.setColor(QPalette.Base, background_color)
        self.text_editor.setPalette(color_palette)

        default_font = self.text_editor.font()
        default_font.setPointSize(9)
        self.text_editor.setFont(default_font)

        self.setWindowTitle('Example')
        self.setCentralWidget(self.text_editor)
        self.setGeometry(500, 500, 500, 500)

        self.show()
Ejemplo n.º 19
0
def start():
    app = QApplication(sys.argv)
    qanda = QandA()
    window = QWidget()
    window.resize(1000, 1000)
    next_button = QPushButton()
    answer_button = QPushButton()
    finish_button = QPushButton()
    answer_button.setText('ans')
    next_button.setText('next')
    finish_button.setText('Finish')
    #Create text entry box
    text_edit_widget = QPlainTextEdit()
    answer_edit_widget = QPlainTextEdit()

    #Change font, color of text entry box
    text_edit_widget.setStyleSheet("""QPlainTextEdit {background-color:#333;
            color: #00FF00;
            text-decoration: underline;
            font-family: Courier;}""")
    answer_edit_widget.setStyleSheet("""QPlainTextEdit {background-color:#333;
            color: #00FF00;
            text-decoration: underline;
            font-family: Courier;}""")

    layout = QVBoxLayout()
    layout.addWidget(text_edit_widget)
    layout.addWidget(answer_edit_widget)
    layout.addWidget(answer_button)
    layout.addWidget(next_button)
    layout.addWidget(finish_button)
    #"Central Widget" expands to fill all available space
    window.setLayout(layout)

    # Set initial value of text
    text_edit_widget.document().setPlainText("nextを押してください")
    # next押されたら、問題の変更と回答を消す必要ありつまりpass??
    next_button.clicked.connect(lambda: output_question(
        qanda, text_edit_widget, answer_edit_widget, answer_button))
    next_button.clicked.connect(
        lambda: answer_edit_widget.document().setPlainText('ansで答えが表示されます'))

    window.show()
    finish_button.clicked.connect(lambda: qanda.finish())
    finish_button.clicked.connect(lambda: QCoreApplication.instance().quit())

    sys.exit(app.exec_())
Ejemplo n.º 20
0
    def editBookmarkDialog(cls, parent, item):
        '''
        @param: parent QWidget
        @param: item BookmarkItem
        '''
        dialog = QDialog(parent)
        layout = QFormLayout(dialog)

        title = QLineEdit()
        address = QLineEdit()
        keyword = QLineEdit()
        description = QPlainTextEdit()

        box = QDialogButtonBox(dialog)
        box.addButton(QDialogButtonBox.Ok)
        box.addButton(QDialogButtonBox.Cancel)
        box.rejected.connect(dialog.reject)
        box.accepted.connect(dialog.accept)

        layout.addRow(_('Title:'), title)
        title.setText(item.title())
        if not item.isFolder():
            layout.addRow(_('Address:'), address)
            address.setText(item.urlString())
            layout.addRow(_('Keyword:'), keyword)
            keyword.setText(item.keyword())
        layout.addRow(_('Description:'), description)
        description.document().setPlainText(item.description())
        layout.addWidget(box)

        dialog.setWindowIcon(item.icon())
        dialog.setWindowTitle(_('Edit Bookmark'))

        dialog.exec_()

        if dialog.result() == QDialog.Rejected:
            del dialog
            return False

        item.setTitle(title.text())
        if not item.isFolder():
            item.setUrl(QUrl.fromEncoded(address.text().encode()))
            item.setKeyword(keyword.text())
        item.setDescription(description.toPlainText())

        del dialog
        return True
Ejemplo n.º 21
0
    class ChartDialog(QDialog):
        def ok_success(self, *args):
            sourcecode = '\n'.join(list(map(lambda x: f'    {x}', self.code.toPlainText().replace('\t', '').replace(' ', '').splitlines())))
            self.code = f'''
def drawChart(qp:QtGui.QPainter, p1:QtCore.QPoint):
{sourcecode}
    canvas = FigureCanvas(fig)
    canvas.draw()
    canvas.setStyleSheet("background-color:transparent;")

    renderer = canvas.get_renderer()
    fwidth, fheight = fig.get_size_inches()
    fig_bbox = fig.get_window_extent(renderer)
    self.drawMatplotlib(qp, canvas, p1)
setattr(self, 'drawChart', drawChart)
'''
            exec(self.code, {'self': self.parent, **globals()})
            self.accept()

        def __init__(self, parent):
            super().__init__(parent=parent)
            self.parent = parent
            self.setWindowTitle("Chart")

            QBtn = QDialogButtonBox.Ok | QDialogButtonBox.Cancel

            self.buttonBox = QDialogButtonBox(QBtn)
            self.buttonBox.accepted.connect(self.ok_success)
            self.buttonBox.rejected.connect(self.reject)
            
            self.resize(800, 600)
            self.code    = QPlainTextEdit()
            highlight = syntax.PythonHighlighter(self.code.document())
            self.code.zoomIn(4)
            self.code.setPlainText('')

            l = QListWidget()
            for c in self.parent._codes:
                ech = QListWidgetItem(c.label)
                ech.code = c.code
                ech.name = c.name
                l.addItem(ech)
            def code_clicked(c):
                self.code.setPlainText(c.code)
            l.itemClicked.connect(code_clicked)
            self.layout = QVBoxLayout()
            
            buttons = QHBoxLayout()
            buttons.addWidget(self.buttonBox, 1)

            codelay = QHBoxLayout()
            codelay.addWidget(l)
            codelay.addWidget(self.code, 1)

            self.layout.addLayout(codelay)
            self.layout.addLayout(buttons)

            self.setLayout(self.layout)
Ejemplo n.º 22
0
def edit():
    con = sqlite3.connect('QandA.db')
    c = con.cursor()
    for row in c.execute("select * from qanda"):
        print(row)
    number = input('編集したい番号を入力してください>>>')
    if (number.isdigit()):
        app = QApplication(sys.argv)
        qanda = QandA(number)
        window = QWidget()
        window.resize(1000, 1000)
        save_button = QPushButton()
        edit_button = QPushButton()
        finish_button = QPushButton()
        save_button.setText('save')
        #Create text entry box
        text_edit_widget = QPlainTextEdit()
        answer_edit_widget = QPlainTextEdit()

        #Change font, color of text entry box
        text_edit_widget.setStyleSheet(
            """QPlainTextEdit {background-color:#333;
                color: #00FF00;
                text-decoration: underline;
                font-family: Courier;}""")
        answer_edit_widget.setStyleSheet(
            """QPlainTextEdit {background-color:#333;
                color: #00FF00;
                text-decoration: underline;
                font-family: Courier;}""")

        layout = QVBoxLayout()
        layout.addWidget(text_edit_widget)
        layout.addWidget(answer_edit_widget)
        layout.addWidget(save_button)
        #"Central Widget" expands to fill all available space
        window.setLayout(layout)

        #Print text to concole whenever it changes
        text_edit_widget.textChanged.connect(
            lambda: print(text_edit_widget.document().toPlainText()))

        # Set initial value of text
        text_edit_widget.document().setPlainText(qanda.question)
        answer_edit_widget.document().setPlainText(qanda.answer)

        # Write text to File whenever it changes
        save_button.clicked.connect(
            lambda: qanda.save(text_edit_widget.document().toPlainText(),
                               answer_edit_widget.document().toPlainText()))
        save_button.clicked.connect(lambda: QCoreApplication.instance().quit())

        window.show()

        sys.exit(app.exec_())
    else:
        print('数値を入力してください')
        sys.exit()
def window():
    textbomb = TextBomb()
    app = QApplication([])
    w = QWidget()
    w.resize(386, 292)

    # title
    label = QLabel("Text Bomber", w)
    font = label.font()
    font.setPointSize(18)
    label.setFont(font)
    label.move(150, 20)
    label.show()

    # repeat
    label = QLabel("Repeat", w)
    label.show()
    label.move(20, 250)
    repeatNumber = QSpinBox(w)
    repeatNumber.setValue(1)
    repeatNumber.show()
    repeatNumber.move(70, 250)
    repeatNumber.valueChanged.connect(textbomb.setRepeat)
    label = QLabel("time(s)", w)
    label.show()
    label.move(120, 250)

    # phone number input
    label = QLabel("Recipient #", w)
    label.show()
    label.move(20, 50)
    numberBox = QLineEdit(w)
    numberBox.setFixedWidth(261)
    numberBox.move(100, 50)
    numberBox.textChanged.connect(textbomb.setNumber)

    # raw text input
    label = QLabel("Content", w)
    label.show()
    label.move(40, 80)
    textBox = QPlainTextEdit(w)
    textBox.setFixedSize(261, 151)
    textBox.move(100, 80)
    textBox.textChanged.connect(
        lambda: textbomb.setText(textBox.document().toPlainText()))

    # button to send text bomb
    button = QPushButton("Send", w)
    button.setFixedWidth(113)
    button.move(250, 250)
    button.clicked.connect(lambda: textbomb.send())

    w.show()
    sys.exit(app.exec_())
Ejemplo n.º 24
0
class MainWindow(QMainWindow):
    def __init__(self, parent = None):
        super(MainWindow, self).__init__(parent)
        self.editor = QPlainTextEdit()
        font = QFont()
        font.setFamily('Courier')
        font.setFixedPitch(True)
        font.setPointSize(12)
        self.editor.setFont(font)
        self.highlighter = PythonSyntaxHighlighter(self.editor.document())
        self.setCentralWidget(self.editor)
        self.setWindowTitle("Python Syntax Highlighter")
Ejemplo n.º 25
0
class TabHash(QWidget):
    def __init__(self, parent):
        super(QWidget, self).__init__(parent)
        self.layout = QVBoxLayout(self)
        self.textEditInput = QPlainTextEdit(self)
        self.textEditInput.setPlaceholderText('Input')
        self.textEditOutput = QPlainTextEdit(self)
        self.textEditOutput.setPlaceholderText('Output')

        self.pushButtonHash = QPushButton("Hash")
        self.pushButtonHash.clicked.connect(self.on_clickHash)
        self.layout.addWidget(self.textEditInput)
        self.layout.addWidget(self.pushButtonHash)
        self.layout.addWidget(self.textEditOutput)
        self.setLayout(self.layout)

    @pyqtSlot()
    def on_clickHash(self):
        textEditValue = self.textEditInput.document().toPlainText()
        m = hashlib.sha256()
        m.update(textEditValue.encode('utf-8'))
        self.textEditOutput.document().setPlainText(str(m.hexdigest()))
Ejemplo n.º 26
0
class TabDecode(QWidget):
    def setKey(self):
        key = getKey()
        self.textEditPrivateKey.document().setPlainText(
            key.exportKey('PEM').decode("utf-8"))

    def __init__(self, parent):
        super(QWidget, self).__init__(parent)
        self.layout = QVBoxLayout(self)
        self.labelPrivateKey = QLabel("Private key")
        self.textEditPrivateKey = QPlainTextEdit(self)
        self.setKey()
        self.labelInput = QLabel("Input")
        self.textEditInput = QPlainTextEdit(self)
        self.buttonDecode = QPushButton("Decode")
        self.buttonDecode.clicked.connect(self.on_clickDecode)
        self.labelOutput = QLabel("Output")
        self.textEditOutput = QPlainTextEdit(self)

        self.layout.addWidget(self.labelPrivateKey)
        self.layout.addWidget(self.textEditPrivateKey)
        self.layout.addWidget(self.labelInput)
        self.layout.addWidget(self.textEditInput)
        self.layout.addWidget(self.buttonDecode)
        self.layout.addWidget(self.labelOutput)
        self.layout.addWidget(self.textEditOutput)
        self.setLayout(self.layout)

    @pyqtSlot()
    def on_clickDecode(self):
        textEditValue = self.textEditInput.document().toPlainText()
        key = getKey()
        textEditValue = base64.b64decode(textEditValue.encode('utf-8'))
        cipher = PKCS1_OAEP.new(key)
        ciphertext = cipher.decrypt(textEditValue)
        print(ciphertext)
        ciphertext = ciphertext.decode('utf-8')
        self.textEditOutput.document().setPlainText(str(ciphertext))
Ejemplo n.º 27
0
class ExampleWindow(QMainWindow):
    def __init__(self, m):
        QMainWindow.__init__(self)

        self.setMinimumSize(QSize(440, 240))
        self.setWindowTitle("Work Area")

        # Add text field
        self.text = m
        self.b = QPlainTextEdit(self)
        self.b.insertPlainText(m)
        self.b.move(10, 10)
        self.b.resize(400, 200)
        pybutton = QPushButton('Copy to clipboard', self)
        pybutton.clicked.connect(self.clickMethod)
        pybutton.resize(150, 50)
        pybutton.move(290, 190)

    def clickMethod(self):
        pyperclip.copy(self.b.document().toPlainText())
Ejemplo n.º 28
0
    def initUI(self):
        editor = QPlainTextEdit()
        editor.setStyleSheet("""
            QPlainTextEdit{
                font-family:'Consolas';
                color: #ccc;
                background-color: #2b2b2b;
                font-size: 10pt;
            }
        """)
        highlight = syntax.PythonHighlighter(editor.document())
        editor.setPlainText(session.contents)

        main_vbox = QVBoxLayout()
        main_vbox.setContentsMargins(0, 0, 0, 0)
        main_vbox.addWidget(editor)
        self.setLayout(main_vbox)
        self.setWindowTitle("File")
        self.setGeometry(400, 100, 1000, 700)
        self.show()
Ejemplo n.º 29
0
            def __init__(self, mainwin):

                te = QPlainTextEdit()
                hilighter = hilite.Highlighter(te.document())

                qd = QDockWidget("Dae:Xgm")
                qd.setWidget(te)
                qd.setMinimumSize(480, 240)
                qd.setFeatures(QDockWidget.DockWidgetMovable
                               | QDockWidget.DockWidgetVerticalTitleBar
                               | QDockWidget.DockWidgetFloatable)
                qd.setAllowedAreas(Qt.LeftDockWidgetArea)
                qdss = "QWidget{background-color: rgb(64,64,128); color: rgb(160,160,192);}"
                qdss += "QDockWidget::title {background-color: rgb(32,32,48); color: rgb(255,0,0);}"
                qd.setStyleSheet(qdss)
                mainwin.addDockWidget(Qt.LeftDockWidgetArea, qd)
                if mainwin.prevDockWidget != None:
                    mainwin.tabifyDockWidget(mainwin.prevDockWidget, qd)
                mainwin.prevDockWidget = qd
                self.stdout = ""
                self.stderr = ""

                def onSubProcStdout():
                    bytes = self.process.readAllStandardOutput()
                    self.stdout += str(bytes, encoding='ascii')
                    te.setPlainText(self.stdout + self.stderr)

                def onSubProcStderr():
                    bytes = self.process.readAllStandardError()
                    self.stderr += str(bytes, encoding='ascii')
                    te.setPlainText(self.stdout + self.stderr)

                def finished(text):
                    print("process done...\n")

                self.process = QProcess()
                self.process.readyReadStandardError.connect(onSubProcStderr)
                self.process.readyReadStandardOutput.connect(onSubProcStdout)
                self.process.finished.connect(finished)

                self.process.start(cmd)
Ejemplo n.º 30
0
class ScriptWindow(QDialog):
    def __init__(self, parent=None):
        super(ScriptWindow, self).__init__(parent)

        self.setGeometry(100, 100, 800, 600)
        self.parent = parent
        font = QFontDatabase.systemFont(QFontDatabase.FixedFont)
        font.setFixedPitch(True)
        font.setPointSize(10)

        self.editor = QPlainTextEdit()
        self.editor.setFont(font)
        self.editor.setTabStopWidth(self.editor.fontMetrics().width(" ") * 4)
        self.highlight = PythonHighlighter(self.editor.document())
        self.editor.setPlainText("# self.parent is the main GUI handle")
        self.runScriptButton = QPushButton("Run script")

        self.layout = QVBoxLayout()
        self.layout.addWidget(self.editor)
        self.layout.addWidget(self.runScriptButton)

        self.setLayout(self.layout)
        self.setWindowTitle("Script editor")

        self.setup_button_behavior()

        self.show()

    def setup_button_behavior(self):
        self.runScriptButton.clicked.connect(self.runscript)

    def runscript(self):
        print("Script is executed.")
        print("Testing parent data accessibility")

        text2execute = self.editor.toPlainText()

        exec(text2execute)
Ejemplo n.º 31
0
class MyMainWindow(QMainWindow):
    def __init__(self):
        super(MyMainWindow, self).__init__()
        layout = QHBoxLayout()

        self.centralWidget = QWidget()
        self.centralWidget.setLayout(layout)
        self.setCentralWidget(self.centralWidget)
        self.textedit = QPlainTextEdit()
        self.highlight = syntax.PythonHighlighter(self.textedit.document())
        self.text = self.textedit.toPlainText()
        self.textedit.setFont(QFont("Microsoft YaHei", 17))
        self.textedit.textChanged.connect(self.save_text)
        layout.addWidget(self.textedit)

    def save_text(self):
        list = ["baidu", "test", "screenshotaaa", "search"]
        lines_last_words = self.text.split("\n")[-1].split(" ")[-1]
        self.picwindow = ImgListView(lines_last_words)
        self.picwindow.resize(130, 130)
        self.picwindow.setWindowFlags(QtCore.Qt.FramelessWindowHint
                                      | QtCore.Qt.Tool)
        if lines_last_words in list:
            self.picwindow.show()
        #     popup_pos = self.textedit.cursorRect()
        #     x = popup_pos.x()
        #     y = popup_pos.height()
        #     pos2 = self.mapToGlobal(QPoint(4*x,2*y))
        #     #pos2 = self.mapToGlobal(QPoint(1.2*x,2*y))
        #     self.picwindow.move(pos2)
        #     self.picwindow.setStyleSheet("border :1px solid black;")
        #     self.picwindow.raise_()

        else:
            self.picwindow.hide()

        with open('mytextfile.txt', 'w') as f:
            f.write(self.text)
Ejemplo n.º 32
0
         def __init__(self,mainwin):

            te = QPlainTextEdit()
            hilighter = hilite.Highlighter(te.document())

            qd = QDockWidget("Dae:Xgm")
            qd.setWidget(te)
            qd.setMinimumSize(480,240)
            qd.setFeatures(QDockWidget.DockWidgetMovable|QDockWidget.DockWidgetVerticalTitleBar|QDockWidget.DockWidgetFloatable)
            qd.setAllowedAreas(Qt.LeftDockWidgetArea)
            qdss = "QWidget{background-color: rgb(64,64,128); color: rgb(160,160,192);}"
            qdss += "QDockWidget::title {background-color: rgb(32,32,48); color: rgb(255,0,0);}"
            qd.setStyleSheet(qdss)
            mainwin.addDockWidget(Qt.LeftDockWidgetArea,qd)
            if mainwin.prevDockWidget!=None:
               mainwin.tabifyDockWidget(mainwin.prevDockWidget,qd)
            mainwin.prevDockWidget = qd
            self.stdout = ""
            self.stderr = ""
            def onSubProcStdout():
               bytes = self.process.readAllStandardOutput()
               self.stdout += str(bytes, encoding='ascii')
               te.setPlainText(self.stdout+self.stderr)
            def onSubProcStderr():
               bytes = self.process.readAllStandardError()
               self.stderr += str(bytes, encoding='ascii')
               te.setPlainText(self.stdout+self.stderr)
            def finished(text):
               print( "process done...\n")

            self.process = QProcess()
            self.process.readyReadStandardError.connect(onSubProcStderr)
            self.process.readyReadStandardOutput.connect(onSubProcStdout);
            self.process.finished.connect(finished);
            

            self.process.start(cmd)
Ejemplo n.º 33
0
class AppDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(300, 100)

        mainLayout = QVBoxLayout()

        validator = QRegExpValidator(QRegExp(r'[0-9 ]+'))

        self.lineEdit = QLineEdit()
        self.lineEdit.setStyleSheet('font-size: 30px; height: 50px')
        self.lineEdit.setValidator(validator)
        self.lineEdit.textChanged.connect(self.onTextChanged)
        mainLayout.addWidget(self.lineEdit)

        self.textEditor = QPlainTextEdit()
        self.textEditor.setStyleSheet('font-size: 30px; color:green')
        mainLayout.addWidget(self.textEditor)

        for i in range(1, 21):
            self.textEditor.appendPlainText('line {0}'.format(i))

        self.highlighter = SyntaxHighlighter(self.textEditor.document())
        self.setLayout(mainLayout)

    def onTextChanged(self, text):
        fnt = QTextCharFormat()
        fnt.setBackground(QColor('yellow'))
        self.highlighter.clear_highlight()

        try:
            lineNumber = int(text) - 1
            self.highlighter.highlight_line(lineNumber, fnt)

        except ValueError:
            pass
Ejemplo n.º 34
0
    def _define_dl_info_view(self, text=None):
        border = self.DEFAULT_BORDER
        text_width = self.parent.DEFAULT_WIDTH * self.DEFAULT_PANE_WIDTH_RATIO
        text_height = self.parent.DEFAULT_HEIGHT * self.DEFAULT_PANE_HEIGHT_RATIO

        if self.parent.cfg is not None:
            border = self.parent.cfg.get_element(
                path=[CfgConsts.UI, CfgConsts.BORDER, CfgConsts.BORDER],
                default=border)

            total_width, total_height = UiUtils.get_dimensions(
                cfg=self.parent.cfg, path=[CfgConsts.UI, CfgConsts.GENERAL])

            text_width_ratio, text_height_ratio = UiUtils.get_dimensions(
                cfg=self.parent.cfg,
                path=[
                    CfgConsts.UI, CfgConsts.DOWNLOAD, CfgConsts.TEXT,
                    CfgConsts.RATIO
                ])

            text_width = (total_width * text_width_ratio) - border
            text_height = (total_height * text_height_ratio) - border

        dl_info = QPlainTextEdit()
        dl_info.setFixedSize(text_width, text_height)
        dl_info.setReadOnly(True)
        if text is not None:
            dl_info.insertPlainText(text)

        font = QFont()
        font.setFamily("Courier New")

        doc = dl_info.document()
        doc.setDefaultFont(font)

        return dl_info
Ejemplo n.º 35
0
class Assembler(QMainWindow):
    def __init__(self, parent=None):
        super(Assembler, self).__init__(parent)
        self.resize(800, 600)
        self.filename  = None
        self.filetuple = None
        self.dirty = False  # Refers to Data Page only.
        self.nb = None
        centralwidget = QWidget(self)
        gridLayout = QGridLayout(centralwidget)
        self.tabWidget = QTabWidget(centralwidget)


        # textbox

        self.tab = QWidget()
        font = QFont()
        font.setFamily("Inconsolata")
        font.setPointSize(14)
        self.tab.setFont(font)
        gridLayout_3 = QGridLayout(self.tab)
        self.plainTextEdit = QPlainTextEdit(self.tab)
        self.plainTextEdit.installEventFilter(self)
        self.plainTextEdit.setAcceptDrops(True)
        gridLayout_3.addWidget(self.plainTextEdit, 0, 0, 1, 1)
        self.tabWidget.addTab(self.tab, "")





        self.tab_2 = QWidget()
        self.tab_2.setFont(font)
        gridLayout_2 = QGridLayout(self.tab_2)
        self.plainTextEdit_2 = QPlainTextEdit(self.tab_2)
        gridLayout_2.addWidget(self.plainTextEdit_2, 0, 0, 1, 1)
        self.tabWidget.addTab(self.tab_2, "")

        self.tab_3 = QWidget()
        self.tab_3.setFont(font)
        gridLayout_3 = QGridLayout(self.tab_3)
        self.checkbox = QCheckBox("Cloning genes by tailed primers (no pYPKa_A vectors constructed)")
        self.checkbox.setChecked(True)
        gridLayout_3.addWidget(self.checkbox, 0, 0, 0, 0)
        self.tabWidget.addTab(self.tab_3, "")

        gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1)
        self.setCentralWidget(centralwidget)
        menubar = QMenuBar(self)
        menubar.setGeometry(QRect(0, 0, 800, 29))
        menu_File = QMenu(menubar)
        self.menu_Solve = QMenu(menubar)
        self.menu_Help = QMenu(menubar)
        self.setMenuBar(menubar)
        self.statusbar = QStatusBar(self)
        self.setStatusBar(self.statusbar)
        self.action_New = QAction(self)
        self.actionSave_As = QAction(self)
        self.action_Save = QAction(self)
        self.action_Open = QAction(self)
        self.action_Quit = QAction(self)
        self.action_About = QAction(self)
        self.actionShow_CCPL = QAction(self)
        self.action_Solve  = QAction(self)
        self.action_OpenNB = QAction(self)
        self.action_CCPL = QAction(self)
        self.action_Help = QAction(self)
        menu_File.addAction(self.action_New)
        menu_File.addAction(self.action_Open)
        menu_File.addAction(self.actionSave_As)
        menu_File.addAction(self.action_Save)
        menu_File.addSeparator()
        menu_File.addAction(self.action_Quit)
        self.menu_Solve.addAction(self.action_Solve)
        self.menu_Solve.addAction(self.action_OpenNB)
        self.menu_Help.addAction(self.action_About)
        #self.menu_Help.addAction(self.action_CCPL)
        #self.menu_Help.addAction(self.action_Help)
        menubar.addAction(menu_File.menuAction())
        menubar.addAction(self.menu_Solve.menuAction())
        menubar.addAction(self.menu_Help.menuAction())

        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab),\
                                   "Data Page")
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2),\
                                   "Assembly log")
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3),\
                                   "Settings")
        menu_File.setTitle("&File")
        self.menu_Solve.setTitle("&Assemble")
        self.menu_Help.setTitle("&About")
        self.tabWidget.setCurrentIndex(0)
        self.action_New.setText("&New")
        self.action_Open.setText("&Open")
        self.actionSave_As.setText("Save &As")
        self.action_Save.setText("&Save")
        self.action_Quit.setText("&Quit")
        self.action_Solve.setText("&Assemble")
        self.action_OpenNB.setText("&Open &pathway")
        self.action_About.setText("&About")
        #self.action_CCPL.setText("&CCPL")
        #self.action_Help.setText("&Help")
        self.action_Quit.triggered.connect(self.close)
        allToolBar = self.addToolBar("AllToolBar")
        allToolBar.setObjectName("AllToolBar")
        self.addActions(allToolBar, (self.action_Open,
                                     self.actionSave_As,
                                     self.action_Save,
                                     self.action_Solve,
                                     self.action_OpenNB,
                                     self.action_Quit ))
        self.action_New.triggered.connect(self.fileNew)
        self.action_Open.triggered.connect(self.fileOpen)
        self.actionSave_As.triggered.connect(self.fileSaveAs)
        self.action_Save.triggered.connect(self.fileSave)
        self.action_Solve.triggered.connect(self.solveAssembly)
        self.action_OpenNB.triggered.connect(self.openNB)
        self.action_About.triggered.connect(self.aboutBox)
        #self.action_CCPL.triggered.connect(self.displayCCPL)
        #self.action_Help.triggered.connect(self.help)
        self.plainTextEdit.textChanged.connect(self.setDirty)
        self.action_New = self.editAction(self.action_New, None,\
                            'ctrl+N', 'filenew', 'New File.')
        self.action_Open = self.editAction(self.action_Open, None,
                            'ctrl+O', 'fileopen', 'Open File.')
        self.actionSave_As = self.editAction(self.actionSave_As,\
                            None, 'ctrl+A', 'filesaveas',\
                            'Save and Name File.')
        self.action_Save = self.editAction(self.action_Save, None,
                            'ctrl+S', 'filesave', 'Save File.')
        self.action_Solve = self.editAction(self.action_Solve, None,
                            '', 'solve', 'Assemble.')
        self.action_OpenNB = self.editAction(self.action_OpenNB, None,
                            '', 'ipynb', 'Open pathway.')
        self.action_About = self.editAction(self.action_About, None,
                            'ctrl+B', 'about','Pop About Box.')
        self.action_CCPL = self.editAction(self.action_CCPL, None,
                            'ctrl+G', 'licence', 'Show Licence')
        self.action_Help = self.editAction(self.action_Help, None,
                            'ctrl+H', 'help', 'Show Help Page.')
        self.action_Quit =  self.editAction(self.action_Quit, None,
                            'ctrl+Q', 'quit', 'Quit the program.')
        self.plainTextEdit_2.setReadOnly(True)

        self.setWindowTitle("ypkpathway")
        self.setWindowIcon(QIcon( resource_filename("ypkpathway","icons/ypkpathway.png")))
        self.plainTextEdit.setFocus()

    def eventFilter(self, object, event):
        #print(event.type(), QEvent.DragEnter, object, self.plainTextEdit)
        if (object is self.plainTextEdit):
            if (event.type() == QEvent.DragEnter):
                if event.mimeData().hasUrls():
                    event.accept()   # must accept the dragEnterEvent or else the dropEvent can't occur !!!
                    print("accept")
                else:
                    event.ignore()
                    print("ignore")
            if (event.type() == QEvent.Drop):
                if event.mimeData().hasUrls():   # if file or link is dropped
                    urlcount = len(event.mimeData().urls())  # count number of drops
                    url = event.mimeData().urls()[0]   # get first url
                    object.setPlainText('abc')   # assign first url to editline
                    event.accept()  # doesnt appear to be needed
                    print(456)
                    return True
            return False # lets the event continue to the edit
        return False

    def setDirty(self):
        '''On change of text in textEdit window, set the flag
        "dirty" to True'''
        index = self.tabWidget.currentIndex()
        if index is not 0:
            return
        if self.dirty:
            return True
        self.dirty = True
        self.updateStatus('self.dirty set to True')

    def clearDirty(self):
        'Clear dirty flag'
        self.dirty = False

    def fileNew(self):
        '''Clear both Data Page and Solution Page.'''
        self.plainTextEdit.setPlainText(' ')
        self.plainTextEdit_2.setPlainText(' ')
        self.clearDirty()
        self.filename = None

    def okToContinue(self):
        if self.dirty:
            reply = QMessageBox.question(self,
                    "Data Loader - Unsaved Changes",
                    "Save unsaved changes?",
                    QMessageBox.Yes|QMessageBox.No|QMessageBox.Cancel)
            if reply == QMessageBox.Cancel:
                return False
            elif reply == QMessageBox.Yes:
                self.clearDirty()
                return self.fileSave()
        return True

    def okRead(self):
        'Pop-up a warning message.'
        reply = QMessageBox.warning(self,
                "Warning",
                '''\nFile Open and Save only in Data Page
\n\(Use SaveAs for the Assembly log)''', QMessageBox.Ok)
        return True

    def fileOpen(self):
        '''Open a file in Data Page (with index == 0)'''
        if self.tabWidget.currentIndex():
            self.okRead()
            return
        if not self.okToContinue():
            return
        dir_ = (os.path.dirname(str(self.filename)) if self.filename is not None else ".")
        filetuple = QFileDialog.getOpenFileName(self,"Open File", dir_,)
        self.filename = filetuple[0]
        #  QFileDialog returns a tuple x with x[0] = file name and
        #  x[1] = type of filter.
        if self.filename:
            self.loadFile(self.filename)
            self.updateStatus('New file opened.')

    def loadFile(self, fname=None):
        fl = open(fname, "r")
        text = fl.read()
        self.plainTextEdit.setPlainText(text)
        self.dirty = False

    def fileSave(self):
        '''Save file with current file name.'''
        if self.tabWidget.currentIndex():
            self.okRead()
            return
        if self.filename is None:
            return self.fileSaveAs()
        else:
            flname = self.filename
            if flname:
                tempText = self.plainTextEdit.toPlainText()
                with open(flname, 'w') as fl: fl.write(tempText)
                self.dirty = False
                self.updateStatus('File saved.')
                return True
            else:
                self.updateStatus('Failed to save... ')
                return False
        self.filename = None
        self.dirty = False

    def fileSaveAs(self):
        '''Save file with a new name.'''
        qpr = self.qprintline
        fname = self.filename or "NoName.txt"
        self.filename = str(QFileDialog.getSaveFileName(self,"ypkpathway - Save File", fname))
        flname = self.filename or "NoName.txt"
        self.filename = flname
        fl = open(flname, 'w')
        tempText = str(self.plainTextEdit.toPlainText())
        fl.write(tempText)
        fl.close()
        self.dirty = False
        self.updateStatus('File saved.')


    def solveAssembly(self):
        printline = self.qprintline
        self.plainTextEdit_2.clear()
        self.tabWidget.setCurrentIndex(1)
        flbase = os.path.basename(str(self.filename))

        title = 'Assembly log for ' + flbase

        printline('='*len(title))
        printline(title)
        printline('='*len(title))


        #print(type(self.plainTextEdit.toPlainText()))
        #qstringobj = self.plainTextEdit.toPlainText().encode('utf-8')
        #print(type(qstringobj)) #<class 'PyQt4.QtCore.QString'>
        #print(qstringobj.toUtf8()[3268:3279])
        #print(str(qstringobj.toUtf8()[3268:3279]))
        #print(type(rawtext), "rawtext")
        #codec0 = .QTextCodec.codecForName("UTF-16");
        #rawtext = unicode(codec0.fromUnicode(tmp), 'UTF-16')
        #unicode(qstringobj.toUtf8(), encoding="UTF-8").decode()
        
        qstringobj = self.plainTextEdit.toPlainText()

        #import sys;sys.exit(42)

        pth = parse( qstringobj )
        
        #import sys;sys.exit(42)

        if len(pth)==0:
            printline("No of sequences found in Data window")
            return

        if self.filename is None:
            self.fileSaveAs()

        dir_, ext = os.path.splitext( str(self.filename))

        fl, log = ypkpathway.pathway( pth, dir_, pYPKa_A = not self.checkbox.isChecked(), print = printline)

        if not fl:
            return

        with open(os.path.join(dir_, "log.txt"),"w") as f: f.write(log)

        shutil.copy2( str(self.filename), os.path.join(dir_, "INDATA_"+os.path.basename(str(self.filename))))

        printline('')
        printline('\n\nAssembly finished.')
        printline('click on the Open pathway button above to open the pathway in the default web browser')
        self.nb =  fl.path

    def qprintline(self, line):
        '''Append one line to Solution Page.'''
        self.plainTextEdit_2.appendPlainText(line.rstrip()) #.decode("utf8"))
        QApplication.processEvents()

    def openNB(self):
        if self.nb:
            subprocess.Popen(["ipython", "notebook", self.nb])



    def aboutBox(self):

        from PyQt5.QtCore import QT_VERSION_STR
        from PyQt5.Qt import PYQT_VERSION_STR
        from sip import SIP_VERSION_STR
        from ._version import get_versions
        __version__ = get_versions()["version"][:5]
        del get_versions
        from IPython import __version__ as IPython_version

        QMessageBox.about(self, "About ypkpathway",
                             """<b>Planning of yeast pathway kit constructions.</b>
                                <p>version: {}<br>
                                 Copyright 2015-2017 Björn Johansson.
                                 This software is released under a BSD style license.
                                 This software comes with no warranties
                                 expressed or implied.<br><br>
                                 Python version: {}<br><br>
                                 IPython version: {}<br>
                                 Qt version: {}<br>
                                 SIP version: {}<br>
                                 PyQt version: {}<br>
                                 pydna version: {}<br></p>
                                 """.format(__version__,
                                            sys.version,
                                            IPython_version,
                                            QT_VERSION_STR,
                                            SIP_VERSION_STR,
                                            PYQT_VERSION_STR,
                                            pydna.__version__[:5]))




    def displayCCPL(self):
        '''Read and display CCPL licence.'''
        self.plainTextEdit.setPlainText(open('CCPL.txt').read())
        self.dirty = False
        self.filename = 'COPYING.txt'
        self.updateStatus('CCPL displayed.')

    def help(self):
        '''Read and display a help file- currently the README.txt.'''
        self.plainTextEdit.setPlainText(open('README.md').read())
        self.dirty = False
        self.filename = 'README.txt'
        self.updateStatus('README displayed.')

    def addActions(self, target, actions):
        '''Actions are added to Tool Bar.'''
        for action in actions:
            if action is None:
                target.addSeparator()
            else:
                target.addAction(action)

    def editAction(self, action, slot=None, shortcut=None, icon=None,
                     tip=None):
        '''This method adds to action: icon, shortcut, ToolTip,\
        StatusTip and can connect triggered action to slot '''
        if icon is not None:
            action.setIcon(QIcon(":/%s.png" % (icon)))
        if shortcut is not None:
            action.setShortcut(shortcut)
        if tip is not None:
            action.setToolTip(tip)
            action.setStatusTip(tip)
        if slot is not None:
            action.triggered.connect(slot)
        return action

    def qreadline(self, lineNo):
        '''Read one line from Data Page (lineNo starts with 0)'''
        return str(self.plainTextEdit.document().\
            findBlockByLineNumber(lineNo).text()).rstrip()

    def updateStatus(self, message):
        '''Keep status current.'''
        if self.filename is not None:
            flbase = os.path.basename(str(self.filename))
            self.setWindowTitle(str("ypkpathway - " +\
                                         flbase + "[*]") )
            self.statusBar().showMessage(message, 5000)
            self.setWindowModified(self.dirty)