Esempio n. 1
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setWindowTitle("SUN - Risc-V Editor & Simulator ")
        MainWindow.resize(1417, 820)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum,
                                           QtWidgets.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            MainWindow.sizePolicy().hasHeightForWidth())
        MainWindow.setSizePolicy(sizePolicy)
        MainWindow.setMinimumSize(QtCore.QSize(1200, 800))
        MainWindow.setTabShape(QtWidgets.QTabWidget.Rounded)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        self.tabs = QtWidgets.QTabWidget(self.centralwidget)
        self.tabs.setTabShape(QtWidgets.QTabWidget.Triangular)
        self.tabs.setObjectName("tabs")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.tab)
        self.verticalLayout.setObjectName("verticalLayout")
        self.uploadButton = QtWidgets.QPushButton(self.tab)
        self.uploadButton.setMaximumSize(QtCore.QSize(200, 50))
        self.uploadButton.setObjectName("uploadButton")
        self.verticalLayout.addWidget(self.uploadButton)
        self.codeEditor = CodeEditor(self.tab)
        self.codeEditor.setObjectName("codeEditor")
        self.verticalLayout.addWidget(self.codeEditor)

        self.errorBox = QtWidgets.QPlainTextEdit(self.tab)
        self.errorBox.setStyleSheet("color: rgb(255,0,0);")
        self.errorBox.setObjectName("errorBox")
        self.errorBox.setMaximumHeight(150)
        self.verticalLayout.addWidget(self.errorBox)
        self.errorBox.setReadOnly(True)
        self.errorBox.setPlaceholderText("Errors will be displayed here")

        self.tabs.addTab(self.tab, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.tab_2)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.widget = QtWidgets.QWidget(self.tab_2)
        self.widget.setObjectName("widget")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.widget)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.horizontalWidget = QtWidgets.QWidget(self.widget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.horizontalWidget.sizePolicy().hasHeightForWidth())
        self.horizontalWidget.setSizePolicy(sizePolicy)
        self.horizontalWidget.setMinimumSize(QtCore.QSize(20, 50))
        self.horizontalWidget.setMaximumSize(QtCore.QSize(16777215, 75))
        self.horizontalWidget.setObjectName("horizontalWidget")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalWidget)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.runButton = QtWidgets.QPushButton(self.horizontalWidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.runButton.sizePolicy().hasHeightForWidth())
        self.runButton.setSizePolicy(sizePolicy)
        self.runButton.setObjectName("runButton")
        self.horizontalLayout_2.addWidget(self.runButton)
        self.stepButton = QtWidgets.QPushButton(self.horizontalWidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.stepButton.sizePolicy().hasHeightForWidth())
        self.stepButton.setSizePolicy(sizePolicy)
        self.stepButton.setObjectName("stepButton")
        self.horizontalLayout_2.addWidget(self.stepButton)
        self.prevButton = QtWidgets.QPushButton(self.horizontalWidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.prevButton.sizePolicy().hasHeightForWidth())
        self.prevButton.setSizePolicy(sizePolicy)
        self.prevButton.setObjectName("prevButton")
        self.horizontalLayout_2.addWidget(self.prevButton)
        self.resetButton = QtWidgets.QPushButton(self.horizontalWidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.resetButton.sizePolicy().hasHeightForWidth())
        self.resetButton.setSizePolicy(sizePolicy)
        self.resetButton.setObjectName("resetButton")
        self.horizontalLayout_2.addWidget(self.resetButton)
        self.verticalLayout_2.addWidget(self.horizontalWidget)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.codeTable = QtWidgets.QTableWidget(self.widget)
        self.codeTable.setGridStyle(QtCore.Qt.DashDotLine)
        self.codeTable.setObjectName("codeTable")
        self.codeTable.setColumnCount(4)
        self.codeTable.setRowCount(100)

        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignCenter)
        font = QtGui.QFont()
        font.setPointSize(12)
        item.setFont(font)
        self.codeTable.setEditTriggers(QtWidgets.QTableWidget.NoEditTriggers)
        self.codeTable.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignCenter)
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        item.setFont(font)
        self.codeTable.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignCenter)
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        item.setFont(font)
        self.codeTable.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignCenter)
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        item.setFont(font)
        self.codeTable.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.codeTable.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.codeTable.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.codeTable.setItem(0, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.codeTable.setItem(1, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.codeTable.setItem(1, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.codeTable.setItem(1, 2, item)
        self.codeTable.horizontalHeader().setCascadingSectionResizes(True)
        self.codeTable.horizontalHeader().setDefaultSectionSize(200)
        self.codeTable.horizontalHeader().setMinimumSectionSize(100)
        self.codeTable.horizontalHeader().setSortIndicatorShown(False)
        self.codeTable.horizontalHeader().setStretchLastSection(True)
        self.codeTable.verticalHeader().setVisible(False)
        self.codeTable.verticalHeader().setCascadingSectionResizes(True)
        self.codeTable.verticalHeader().setHighlightSections(True)
        self.codeTable.verticalHeader().setStretchLastSection(True)
        self.horizontalLayout_3.addWidget(self.codeTable)
        self.verticalLayout_2.addLayout(self.horizontalLayout_3)
        self.horizontalLayout.addWidget(self.widget)
        self.widget_2 = QtWidgets.QWidget(self.tab_2)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.widget_2.sizePolicy().hasHeightForWidth())
        self.widget_2.setSizePolicy(sizePolicy)
        self.widget_2.setMinimumSize(QtCore.QSize(550, 0))
        self.widget_2.setMaximumSize(QtCore.QSize(600, 16777215))
        self.widget_2.setObjectName("widget_2")
        self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.widget_2)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.splitter = QtWidgets.QSplitter(self.widget_2)
        self.splitter.setOrientation(QtCore.Qt.Horizontal)
        self.splitter.setObjectName("splitter")
        self.label_2 = QtWidgets.QLabel(self.splitter)
        self.label_2.setAlignment(QtCore.Qt.AlignRight
                                  | QtCore.Qt.AlignTrailing
                                  | QtCore.Qt.AlignVCenter)
        self.label_2.setObjectName("label_2")
        self.regMemDisplayTypeDrop = QtWidgets.QComboBox(self.splitter)
        self.regMemDisplayTypeDrop.setObjectName("regMemDisplayTypeDrop")
        self.regMemDisplayTypeDrop.addItem("")
        self.regMemDisplayTypeDrop.addItem("")
        self.regMemDisplayTypeDrop.addItem("")
        self.regMemDisplayTypeDrop.addItem("")
        self.verticalLayout_3.addWidget(self.splitter)
        self.regMemTab = QtWidgets.QTabWidget(self.widget_2)
        self.regMemTab.setTabShape(QtWidgets.QTabWidget.Rounded)
        self.regMemTab.setObjectName("regMemTab")
        self.tab_4 = QtWidgets.QWidget()
        self.tab_4.setObjectName("tab_4")
        self.gridLayout_2 = QtWidgets.QGridLayout(self.tab_4)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.registerTable = QtWidgets.QTableWidget(self.tab_4)
        self.tab_6 = QtWidgets.QWidget()
        self.tab_6.setObjectName("tab_6")
        self.gridLayout_3 = QtWidgets.QGridLayout(self.tab_6)
        self.gridLayout_3.setObjectName("gridLayout_3")
        self.registerTable = QtWidgets.QTableWidget(self.tab_6)
        self.registerTable.setGridStyle(QtCore.Qt.DashLine)
        self.registerTable.setObjectName("registerTable")
        self.registerTable.setEditTriggers(
            QtWidgets.QTableWidget.NoEditTriggers)
        self.registerTable.setColumnCount(1)
        self.registerTable.setRowCount(32)

        self.pipeTable = QtWidgets.QTableWidget(self.tab_6)
        self.pipeTable.setGridStyle(QtCore.Qt.DashLine)
        self.pipeTable.setObjectName("pipeTable")
        self.pipeTable.setEditTriggers(QtWidgets.QTableWidget.NoEditTriggers)
        self.pipeTable.setColumnCount(1)
        self.pipeTable.setRowCount(20)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(4, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(5, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(6, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(7, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(8, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(9, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(10, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(11, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(12, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(13, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(14, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(15, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(16, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(17, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(18, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(19, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setVerticalHeaderItem(20, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.pipeTable.setItem(1, 0, item)
        self.pipeTable.horizontalHeader().setCascadingSectionResizes(True)
        self.pipeTable.horizontalHeader().setDefaultSectionSize(150)
        self.pipeTable.horizontalHeader().setMinimumSectionSize(80)
        self.pipeTable.horizontalHeader().setStretchLastSection(True)
        self.pipeTable.verticalHeader().setCascadingSectionResizes(False)
        self.pipeTable.verticalHeader().setDefaultSectionSize(37)
        self.pipeTable.verticalHeader().setStretchLastSection(False)

        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(4, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(5, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(6, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(7, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(8, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(9, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(10, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(11, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(12, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(13, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(14, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(15, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(16, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(17, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(18, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(19, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(20, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(21, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(22, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(23, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(24, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(25, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(26, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(27, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(28, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(29, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(30, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setVerticalHeaderItem(31, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.registerTable.setItem(1, 0, item)
        self.registerTable.horizontalHeader().setCascadingSectionResizes(True)
        self.registerTable.horizontalHeader().setDefaultSectionSize(150)
        self.registerTable.horizontalHeader().setMinimumSectionSize(80)
        self.registerTable.horizontalHeader().setStretchLastSection(True)
        self.registerTable.verticalHeader().setCascadingSectionResizes(False)
        self.registerTable.verticalHeader().setDefaultSectionSize(37)
        self.registerTable.verticalHeader().setStretchLastSection(False)
        self.gridLayout_2.addWidget(self.registerTable, 0, 0, 1, 1)
        self.gridLayout_3.addWidget(self.pipeTable, 0, 0, 1, 1)
        self.regMemTab.addTab(self.tab_4, "")
        self.tab_5 = QtWidgets.QWidget()
        self.tab_5.setObjectName("tab_5")
        self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.tab_5)
        self.verticalLayout_4.setObjectName("verticalLayout_4")
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        self.label = QtWidgets.QLabel(self.tab_5)
        self.label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing
                                | QtCore.Qt.AlignVCenter)
        self.label.setObjectName("label")
        self.horizontalLayout_4.addWidget(self.label)
        self.memJumpDropDown = QtWidgets.QComboBox(self.tab_5)
        self.memJumpDropDown.setObjectName("memJumpDropDown")
        self.memJumpDropDown.addItem("")
        self.memJumpDropDown.addItem("")
        self.memJumpDropDown.addItem("")
        self.memJumpDropDown.addItem("")
        self.horizontalLayout_4.addWidget(self.memJumpDropDown)
        self.memUp = QtWidgets.QPushButton(self.tab_5)
        self.memUp.setObjectName("memUp")
        self.horizontalLayout_4.addWidget(self.memUp)
        self.memDown = QtWidgets.QPushButton(self.tab_5)
        self.memDown.setObjectName("memDown")
        self.horizontalLayout_4.addWidget(self.memDown)
        self.verticalLayout_4.addLayout(self.horizontalLayout_4)
        self.memoryTable = QtWidgets.QTableWidget(self.tab_5)
        self.memoryTable.setAlternatingRowColors(True)
        self.memoryTable.setObjectName("memoryTable")
        self.memoryTable.setEditTriggers(QtWidgets.QTableWidget.NoEditTriggers)
        self.memoryTable.setColumnCount(5)
        self.memoryTable.setRowCount(0)
        item = QtWidgets.QTableWidgetItem()
        self.memoryTable.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.memoryTable.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.memoryTable.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.memoryTable.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.memoryTable.setHorizontalHeaderItem(4, item)
        self.memoryTable.horizontalHeader().setCascadingSectionResizes(True)
        self.memoryTable.horizontalHeader().setDefaultSectionSize(100)
        self.memoryTable.horizontalHeader().setStretchLastSection(True)
        self.memoryTable.verticalHeader().setCascadingSectionResizes(True)
        self.verticalLayout_4.addWidget(self.memoryTable)
        self.regMemTab.addTab(self.tab_5, "")

        self.regMemTab.addTab(self.tab_6, "")

        self.verticalLayout_3.addWidget(self.regMemTab)
        self.horizontalLayout.addWidget(self.widget_2)
        self.tabs.addTab(self.tab_2, "")
        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setObjectName("tab_3")
        self.tabs.addTab(self.tab_3, "")

        #self.horizontalLayout = QtWidgets.QHBoxLayout(self.tab_2)
        #self.horizontalLayout.setObjectName("horizontalLayout")

        self.tab_3.layout = QtWidgets.QGridLayout()

        self.temp1 = QtWidgets.QLabel("")
        self.cb1 = QtWidgets.QCheckBox('Enable Pipelining')
        self.cb1.toggle()
        self.cb1.toggled.connect(lambda: self.knobs(self.cb1, 0))
        self.cb2 = QtWidgets.QCheckBox('Enable Data Forwarding')
        self.cb2.toggle()
        self.cb2.toggled.connect(lambda: self.knobs(self.cb2, 1))

        self.cb3 = QtWidgets.QCheckBox('Enable Printing Register File')
        self.cb3.toggled.connect(lambda: self.knobs(self.cb3, 2))
        self.cb4 = QtWidgets.QCheckBox('Enable Printing Pipelining Registers')
        self.cb4.toggled.connect(lambda: self.knobs(self.cb4, 3))

        #cb.stateChanged.connect(self.changeTitle) #TODO
        self.pushButton1 = QtWidgets.QPushButton("PyQt5 button")
        self.tab_3.layout.addWidget(self.cb1, 1, 1)
        self.tab_3.layout.addWidget(self.cb2, 2, 1)
        self.tab_3.layout.addWidget(self.cb3, 3, 1)
        self.tab_3.layout.addWidget(self.cb4, 4, 1)
        self.tab_3.layout.addWidget(self.temp1, 5, 0)
        self.tab_3.setLayout(self.tab_3.layout)

        self.gridLayout.addWidget(self.tabs, 0, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)

        self.uploadButton.clicked.connect(self.file_open)
        self.tabs.currentChanged.connect(self.onTabChange)
        self.runButton.clicked.connect(self.runCodeClick)
        self.stepButton.clicked.connect(self.stepForward)
        self.resetButton.clicked.connect(self.reset)
        self.prevButton.clicked.connect(self.stepBack)
        # self.regMemDisplayTypeDrop.currentIndexChanged.connect(self.displayTypeChange)
        self.regMemDisplayTypeDrop.activated[str].connect(
            self.displayTypeChange)
        self.memJumpDropDown.activated[str].connect(self.memoryTypeChange)

        self.retranslateUi(MainWindow)
        self.tabs.setCurrentIndex(0)
        self.regMemTab.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        self.translate = _translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.uploadButton.setText(_translate("MainWindow", "Upload Code"))
        self.tabs.setTabText(self.tabs.indexOf(self.tab),
                             _translate("MainWindow", "Editor"))
        self.runButton.setText(_translate("MainWindow", "Run"))
        self.stepButton.setText(_translate("MainWindow", "Step"))
        self.prevButton.setText(_translate("MainWindow", "Prev"))
        self.resetButton.setText(_translate("MainWindow", "Reset"))

        item = self.codeTable.horizontalHeaderItem(0)
        item.setText(_translate("MainWindow", "PC"))
        item = self.codeTable.horizontalHeaderItem(1)
        item.setText(_translate("MainWindow", "Machine Code"))
        item = self.codeTable.horizontalHeaderItem(2)
        item.setText(_translate("MainWindow", "Basic Code"))
        item = self.codeTable.horizontalHeaderItem(3)
        item.setText(_translate("MainWindow", "Original Code"))
        __sortingEnabled = self.codeTable.isSortingEnabled()
        self.codeTable.setSortingEnabled(False)

        self.codeTable.setSortingEnabled(__sortingEnabled)
        self.label_2.setText(_translate("MainWindow", "Display Setting "))
        self.regMemDisplayTypeDrop.setItemText(0,
                                               _translate("MainWindow", "Hex"))
        self.regMemDisplayTypeDrop.setItemText(
            1, _translate("MainWindow", "Decimal"))
        self.regMemDisplayTypeDrop.setItemText(
            2, _translate("MainWindow", "Unsigned"))
        self.regMemDisplayTypeDrop.setItemText(
            3, _translate("MainWindow", "Ascii"))

        item = self.pipeTable.verticalHeaderItem(0)
        item.setText(_translate("MainWindow", "Fetch (PC Value)"))
        item = self.pipeTable.verticalHeaderItem(1)
        item.setText(_translate("MainWindow", "Decode (PC Value)"))
        item = self.pipeTable.verticalHeaderItem(2)
        item.setText(_translate("MainWindow", "Execute (PC Value)"))
        item = self.pipeTable.verticalHeaderItem(3)
        item.setText(_translate("MainWindow", "Memory Access (PC Value)"))
        item = self.pipeTable.verticalHeaderItem(4)
        item.setText(_translate("MainWindow", "Writeback (PC Value)"))
        item = self.pipeTable.verticalHeaderItem(5)
        item.setText(_translate("MainWindow", "Total number of cycles"))
        item = self.pipeTable.verticalHeaderItem(6)
        item.setText(_translate("MainWindow", "Total instructions executed"))
        item = self.pipeTable.verticalHeaderItem(7)
        item.setText(_translate("MainWindow", "CPI"))
        item = self.pipeTable.verticalHeaderItem(8)
        item.setText(_translate("MainWindow", "Number of Data-transfer"))
        item = self.pipeTable.verticalHeaderItem(9)
        item.setText(_translate("MainWindow", "ALU instructions executed"))
        item = self.pipeTable.verticalHeaderItem(10)
        item.setText(_translate("MainWindow", "Control instructions executed"))
        item = self.pipeTable.verticalHeaderItem(11)
        item.setText(_translate("MainWindow", "Number of stalls/bubbles"))
        item = self.pipeTable.verticalHeaderItem(12)
        item.setText(_translate("MainWindow", "Number of data hazards"))
        item = self.pipeTable.verticalHeaderItem(13)
        item.setText(_translate("MainWindow", "Number of control hazards"))
        item = self.pipeTable.verticalHeaderItem(14)
        item.setText(
            _translate("MainWindow", "Number of branch mispredictions"))
        item = self.pipeTable.verticalHeaderItem(15)
        item.setText(
            _translate("MainWindow", "Number of stalls due to data hazards"))
        item = self.pipeTable.verticalHeaderItem(16)
        item.setText(
            _translate("MainWindow",
                       "Number of stalls due to control hazards"))

        item = self.pipeTable.horizontalHeaderItem(0)
        item.setText(_translate("MainWindow", "Status / Values"))
        __sortingEnabled = self.pipeTable.isSortingEnabled()
        self.pipeTable.setSortingEnabled(False)
        self.pipeTable.setSortingEnabled(__sortingEnabled)

        item = self.registerTable.verticalHeaderItem(0)
        item.setText(_translate("MainWindow", "zero(x0)"))
        item = self.registerTable.verticalHeaderItem(1)
        item.setText(_translate("MainWindow", "ra(x1)"))
        item = self.registerTable.verticalHeaderItem(2)
        item.setText(_translate("MainWindow", "sp(x2)"))
        item = self.registerTable.verticalHeaderItem(3)
        item.setText(_translate("MainWindow", "gp(x3)"))
        item = self.registerTable.verticalHeaderItem(4)
        item.setText(_translate("MainWindow", "tp(x4)"))
        item = self.registerTable.verticalHeaderItem(5)
        item.setText(_translate("MainWindow", "t0(x5)"))
        item = self.registerTable.verticalHeaderItem(6)
        item.setText(_translate("MainWindow", "t1(x6)"))
        item = self.registerTable.verticalHeaderItem(7)
        item.setText(_translate("MainWindow", "t2(x7)"))
        item = self.registerTable.verticalHeaderItem(8)
        item.setText(_translate("MainWindow", "s0(x8)"))
        item = self.registerTable.verticalHeaderItem(9)
        item.setText(_translate("MainWindow", "s1(x9)"))
        item = self.registerTable.verticalHeaderItem(10)
        item.setText(_translate("MainWindow", "a0(x10)"))
        item = self.registerTable.verticalHeaderItem(11)
        item.setText(_translate("MainWindow", "a1(x11)"))
        item = self.registerTable.verticalHeaderItem(12)
        item.setText(_translate("MainWindow", "a2(x12)"))
        item = self.registerTable.verticalHeaderItem(13)
        item.setText(_translate("MainWindow", "a3(x13)"))
        item = self.registerTable.verticalHeaderItem(14)
        item.setText(_translate("MainWindow", "a4(x14)"))
        item = self.registerTable.verticalHeaderItem(15)
        item.setText(_translate("MainWindow", "a5(x15)"))
        item = self.registerTable.verticalHeaderItem(16)
        item.setText(_translate("MainWindow", "a6(x16)"))
        item = self.registerTable.verticalHeaderItem(17)
        item.setText(_translate("MainWindow", "a7(x17)"))
        item = self.registerTable.verticalHeaderItem(18)
        item.setText(_translate("MainWindow", "s2(x18)"))
        item = self.registerTable.verticalHeaderItem(19)
        item.setText(_translate("MainWindow", "s3(x19)"))
        item = self.registerTable.verticalHeaderItem(20)
        item.setText(_translate("MainWindow", "s4(x20)"))
        item = self.registerTable.verticalHeaderItem(21)
        item.setText(_translate("MainWindow", "s5(x21)"))
        item = self.registerTable.verticalHeaderItem(22)
        item.setText(_translate("MainWindow", "s6(x22)"))
        item = self.registerTable.verticalHeaderItem(23)
        item.setText(_translate("MainWindow", "s7(x23)"))
        item = self.registerTable.verticalHeaderItem(24)
        item.setText(_translate("MainWindow", "s8(x24)"))
        item = self.registerTable.verticalHeaderItem(25)
        item.setText(_translate("MainWindow", "s9(x25)"))
        item = self.registerTable.verticalHeaderItem(26)
        item.setText(_translate("MainWindow", "s10(x26)"))
        item = self.registerTable.verticalHeaderItem(27)
        item.setText(_translate("MainWindow", "s11(x27)"))
        item = self.registerTable.verticalHeaderItem(28)
        item.setText(_translate("MainWindow", "t3(x28)"))
        item = self.registerTable.verticalHeaderItem(29)
        item.setText(_translate("MainWindow", "t4(x29)"))
        item = self.registerTable.verticalHeaderItem(30)
        item.setText(_translate("MainWindow", "t5(x30)"))
        item = self.registerTable.verticalHeaderItem(31)
        item.setText(_translate("MainWindow", "t6(x31)"))
        item = self.registerTable.horizontalHeaderItem(0)
        item.setText(_translate("MainWindow", "Values"))
        __sortingEnabled = self.registerTable.isSortingEnabled()
        self.registerTable.setSortingEnabled(False)
        self.registerTable.setSortingEnabled(__sortingEnabled)
        self.regMemTab.setTabText(self.regMemTab.indexOf(self.tab_4),
                                  _translate("MainWindow", "Registers"))
        self.regMemTab.setTabText(self.regMemTab.indexOf(self.tab_6),
                                  _translate("MainWindow", "Pipelining Info"))
        self.label.setText(_translate("MainWindow", "Jump To"))
        self.memJumpDropDown.setItemText(0, _translate("MainWindow", "Text"))
        self.memJumpDropDown.setItemText(1, _translate("MainWindow", "Data"))
        self.memJumpDropDown.setItemText(2, _translate("MainWindow", "Heap"))
        self.memJumpDropDown.setItemText(3, _translate("MainWindow", "Stack"))
        self.memUp.setText(_translate("MainWindow", "Up"))
        self.memDown.setText(_translate("MainWindow", "Down"))
        item = self.memoryTable.horizontalHeaderItem(0)
        item.setText(_translate("MainWindow", "Address"))
        item = self.memoryTable.horizontalHeaderItem(1)
        item.setText(_translate("MainWindow", "+0"))
        item = self.memoryTable.horizontalHeaderItem(2)
        item.setText(_translate("MainWindow", "+1"))
        item = self.memoryTable.horizontalHeaderItem(3)
        item.setText(_translate("MainWindow", "+2"))
        item = self.memoryTable.horizontalHeaderItem(4)
        item.setText(_translate("MainWindow", "+3"))
        self.regMemTab.setTabText(self.regMemTab.indexOf(self.tab_5),
                                  _translate("MainWindow", "Memory"))
        self.tabs.setTabText(self.tabs.indexOf(self.tab_2),
                             _translate("MainWindow", "Simulator"))
        self.tabs.setTabText(self.tabs.indexOf(self.tab_3),
                             _translate("MainWindow", "Customize Options"))

    def file_open(self):
        name = QtWidgets.QFileDialog.getOpenFileName(None, 'Open File')
        if (len(name[0]) == 0):
            return
        code_file = open(name[0], 'r')
        with code_file:
            text = code_file.read()
            self.codeEditor.clear()
            self.codeEditor.appendPlainText(text)

    def file_save(self):
        file = open("../lib/Files/assemblyCode.asm", 'w+')
        text = self.codeEditor.toPlainText()
        file.write(text)
        file.close()

    def reset(self):
        self.currentPC = 0
        self.displayTypeChange(0)
        self.tableReColor()

    def onTabChange(self, i):
        self.currentPC = 0
        if (i == 0):
            self.codeTable.setRowCount(0)
            self.memoryTable.setRowCount(0)
            # self.errorBox.clear()

        from Phase2.registers import RegisterTable
        RegisterTable.Initialize(file_path="../lib/Phase2/")
        self.doRegisterUpdate()
        if (i == 1):
            self.file_save()
            mydir = os.getcwd()
            mydir_tmp = "../lib/"
            mydir_new = os.chdir(mydir_tmp)
            exec(open("first_half_controller.py").read(), locals(), locals())
            mydir = os.chdir(mydir)

            from Phase1.detectError import detectError
            error_list = detectError()
            if (len(error_list) > 0):
                self.errorBox.setPlainText(error_list)

                self.tabs.setCurrentIndex(0)
                return

            self.errorBox.clear()

            mydir = os.getcwd()
            mydir_tmp = "../lib/"
            mydir_new = os.chdir(mydir_tmp)
            exec(open("second_half_controller.py").read())
            mydir = os.chdir(mydir)

            self.showProcessedCode()
            self.memJumpDropDown.setCurrentIndex(0)
            self.doMemoryUpdate()
            self.tableReColor()

            from Phase2.registers import RegisterTable
            RegisterTable.Initialize(file_path="../lib/Phase2/")
            self.doRegisterUpdate()
            self.doPipeUpdate()
            self.allInfo()

    def showProcessedCode(self):
        ori = open("../lib/Files/assemblyCodeFinal.asm")
        mac = open("../lib/Files/machine_code.mc")
        bas = open("../lib/Files/assemblyCodeFinal_BasicVersion.asm")

        ori = ori.readlines()
        mac = mac.readlines()
        bas = bas.readlines()
        self.codeTable.setRowCount(len(ori) + 2)
        self.maxPC = 1
        auipc_count = 0

        for ind in range(len(bas) + 1):
            # print(ind)
            # item = self.codeTable.verticalHeaderItem(ind)
            item = QtWidgets.QTableWidgetItem()
            item.setTextAlignment(QtCore.Qt.AlignHCenter)
            self.codeTable.setItem(ind, 0, item)
            item = QtWidgets.QTableWidgetItem()
            item.setTextAlignment(QtCore.Qt.AlignHCenter)
            self.codeTable.setItem(ind, 1, item)
            item = QtWidgets.QTableWidgetItem()
            item.setTextAlignment(QtCore.Qt.AlignHCenter)
            self.codeTable.setItem(ind, 2, item)
            item = QtWidgets.QTableWidgetItem()
            item.setTextAlignment(QtCore.Qt.AlignHCenter)
            self.codeTable.setItem(ind, 3, item)

            if (ind == len(bas)):
                continue

            item.setText(self.translate("MainWindow", "New Row"))
            item = self.codeTable.item(ind, 0)
            item.setText(
                self.translate("MainWindow", mac[ind].strip().split()[0]))
            item = self.codeTable.item(ind, 1)
            item.setText(
                self.translate("MainWindow", mac[ind].strip().split()[1]))
            item = self.codeTable.item(ind, 2)
            item.setText(self.translate("MainWindow", bas[ind].strip()))
            item = self.codeTable.item(ind, 3)
            item.setText(
                self.translate("MainWindow", ori[ind - auipc_count].strip()))
            if bas[ind].split()[0] == "auipc":
                auipc_count += 1

    def displayTypeChange(self, i):
        self.doRegisterUpdate()
        self.doMemoryUpdate()
        self.doPipeUpdate()
        self.allInfo()

    def memoryTypeChange(self, i):
        self.doMemoryUpdate()

    def stepForward(self):
        if self.currentPC == 0:
            self.runCode()
        if self.currentPC < self.maxPC:
            self.currentPC += 1
        self.displayTypeChange(0)
        self.tableReColor()

    def stepBack(self):
        if self.currentPC > 0:
            self.currentPC -= 1
        self.displayTypeChange(0)
        self.tableReColor()

    def getVal(self, val):

        if (self.regMemDisplayTypeDrop.currentIndex() == 0):
            val = (val & 0xffffffff)
            val = hex(val)
        elif (self.regMemDisplayTypeDrop.currentIndex() == 1):
            pass
        elif (self.regMemDisplayTypeDrop.currentIndex() == 2):
            val = (val & 0xffffffff)
        elif (self.regMemDisplayTypeDrop.currentIndex() == 3):
            try:
                val = chr(val)
            except:
                val = chr(1)
        return val

    def selectMemory(self, index):

        if (index == 0):
            dmt = open('../lib/Phase3/Snapshot/memory_instructions.txt',
                       'r+').readlines()
            return dmt

        if (self.currentPC == 0 or self.currentPC > self.maxPC):
            return []

        if (index == 1):
            dmt = open(
                '../lib/Phase3/Snapshot/Files/memory_after_cycle' +
                str(self.currentPC) + '.txt', 'r+').readlines()
            return dmt
        if (index == 2):
            dmt = open('../lib/Files/heap_memory_table.txt', 'r+').readlines()
            return dmt
        if (index == 3):
            dmt = open(
                '../lib/Phase3/Snapshot/Files/memory_after_cycle' +
                str(self.currentPC) + '.txt', 'r+').readlines()
            return dmt

    def doRegisterUpdate(self):
        rt = []
        if self.currentPC == 0 or self.currentPC > self.maxPC:
            rt = ["0"] * 32
            rt[2] = "2147483632"
        else:
            rt = open(
                '../lib/Phase3/Snapshot/Files/registers_after_cycle' +
                str(self.currentPC) + '.txt', 'r+')
            rt = rt.readlines()
        for ind in range(len(rt)):
            item = QtWidgets.QTableWidgetItem()
            val = int(rt[ind].strip())
            val = self.getVal(val)
            item.setText(str(val))
            self.registerTable.setItem(ind, 0, item)

    def doPipeUpdate(self):
        rt = []
        if self.currentPC == 0 or self.currentPC > self.maxPC:
            rt = ["0"] * 10
        else:
            rt = open(
                '../lib/Phase3/Snapshot/Files/instruction_details_after_cycle'
                + str(self.currentPC) + '.txt', 'r+')
            rt = rt.readlines()
        for ind in range(len(rt)):
            item = QtWidgets.QTableWidgetItem()
            val = int(rt[ind].strip(), 16)
            val = self.getVal(val)
            item.setText(str(val))
            self.pipeTable.setItem(ind, 0, item)

    def allInfo(self):
        rt = []
        if self.currentPC == 0:
            rt = ["0"] * 10
        else:
            rt = open('../lib/Phase3/Files/summary.txt', 'r+')
            rt = rt.readlines()
        for ind in range(len(rt)):
            item = QtWidgets.QTableWidgetItem()
            val = rt[ind].strip()
            #val = self.getVal(val)
            item.setText(str(val))
            self.pipeTable.setItem(5 + ind, 0, item)

    def knobs(self, but, ind):
        rt = open('../lib/Phase3/Files/knobs.txt', 'r+')
        rt = rt.readlines()
        if (len(rt) == 0):
            rt = ['1 1 0 0']
        lis = rt[0].strip().split()

        if but.isChecked() == True:
            lis[ind] = '1'
        else:
            lis[ind] = '0'

        rt = open('../lib/Phase3/Files/knobs.txt', 'w')
        rt.write(" ".join(lis))

        #print(lis)

    def tableReColor(self):

        for j in range(self.codeTable.rowCount() - 1):
            self.codeTable.item(j,
                                0).setBackground(QtGui.QColor(255, 255, 255))

        if self.currentPC != 0 and self.currentPC <= self.maxPC:

            self.codeTable.item((int(self.PCList[self.currentPC - 1]) // 4),
                                0).setBackground(QtGui.QColor(144, 238, 144))

    def doMemoryUpdate(self):
        memList = self.selectMemory(self.memJumpDropDown.currentIndex())
        self.memoryTable.setRowCount((len(memList) + 3) // 4)
        for ind in range(0, len(memList) // 4):

            item = QtWidgets.QTableWidgetItem()
            item.setTextAlignment(QtCore.Qt.AlignHCenter)
            self.memoryTable.setItem(ind, 0, item)
            item = QtWidgets.QTableWidgetItem()
            item.setTextAlignment(QtCore.Qt.AlignHCenter)
            self.memoryTable.setItem(ind, 1, item)
            item = QtWidgets.QTableWidgetItem()
            item.setTextAlignment(QtCore.Qt.AlignHCenter)
            self.memoryTable.setItem(ind, 2, item)
            item = QtWidgets.QTableWidgetItem()
            item.setTextAlignment(QtCore.Qt.AlignHCenter)
            self.memoryTable.setItem(ind, 3, item)
            item = QtWidgets.QTableWidgetItem()
            item.setTextAlignment(QtCore.Qt.AlignHCenter)
            self.memoryTable.setItem(ind, 4, item)
            item.setText("New Row")
            item = self.memoryTable.item(ind, 0)
            item.setText(memList[ind * 4].strip().split()[0])
            item = self.memoryTable.item(ind, 1)
            item.setText(
                str(self.getVal(int(memList[ind * 4].strip().split()[1]))))
            item = self.memoryTable.item(ind, 2)
            item.setText(
                str(self.getVal(int(memList[ind * 4 + 1].strip().split()[1]))))
            item = self.memoryTable.item(ind, 3)
            item.setText(
                str(self.getVal(int(memList[ind * 4 + 2].strip().split()[1]))))
            item = self.memoryTable.item(ind, 4)
            item.setText(
                str(self.getVal(int(memList[ind * 4 + 3].strip().split()[1]))))

    def runCodeClick(self):
        self.runCode()
        self.currentPC = self.maxPC
        self.displayTypeChange(0)
        self.tableReColor()

    def runCode(self):
        mydir = os.getcwd()
        mydir_tmp = "../lib/"
        mydir_new = os.chdir(os.path.join(mydir, mydir_tmp))
        exec(open("Main_Controller.py").read())
        mydir = os.chdir(mydir)
        self.PCList = open(
            '../lib/Phase3/Snapshot/Files/pcs_after_each_cycle.txt',
            'r+').readlines()
        self.maxPC = len(self.PCList) - 1
        self.doRegisterUpdate()
        self.doPipeUpdate()
        self.doMemoryUpdate()
        self.allInfo()

    def init(self):
        self.knobs(self.cb1, 0)
        self.knobs(self.cb2, 1)
        self.knobs(self.cb3, 2)
        self.knobs(self.cb4, 3)
Esempio n. 2
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(574, 601)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/icons/kaddressbook.svg"),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MainWindow.setWindowIcon(icon)
        self.centralWidget = QtGui.QWidget(MainWindow)
        self.centralWidget.setObjectName("centralWidget")
        self.horizontalLayout_3 = QtGui.QHBoxLayout(self.centralWidget)
        self.horizontalLayout_3.setMargin(3)
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.tabs = QtGui.QTabWidget(self.centralWidget)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.tabs.sizePolicy().hasHeightForWidth())
        self.tabs.setSizePolicy(sizePolicy)
        self.tabs.setObjectName("tabs")
        self.tab = QtGui.QWidget()
        self.tab.setObjectName("tab")
        self.horizontalLayout = QtGui.QHBoxLayout(self.tab)
        self.horizontalLayout.setMargin(0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.text = CodeEditor(self.tab)
        font = QtGui.QFont()
        font.setFamily("DejaVu Sans Mono")
        self.text.setFont(font)
        self.text.setFrameShape(QtGui.QFrame.NoFrame)
        self.text.setFrameShadow(QtGui.QFrame.Plain)
        self.text.setLineWidth(0)
        self.text.setObjectName("text")
        self.horizontalLayout.addWidget(self.text)
        self.tabs.addTab(self.tab, "")
        self.tab_2 = QtGui.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.horizontalLayout_2 = QtGui.QHBoxLayout(self.tab_2)
        self.horizontalLayout_2.setMargin(0)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.style = CodeEditor(self.tab_2)
        font = QtGui.QFont()
        font.setFamily("DejaVu Sans Mono")
        self.style.setFont(font)
        self.style.setFrameShape(QtGui.QFrame.NoFrame)
        self.style.setObjectName("style")
        self.horizontalLayout_2.addWidget(self.style)
        self.tabs.addTab(self.tab_2, "")
        self.horizontalLayout_3.addWidget(self.tabs)
        MainWindow.setCentralWidget(self.centralWidget)
        self.statusBar = QtGui.QStatusBar(MainWindow)
        self.statusBar.setObjectName("statusBar")
        MainWindow.setStatusBar(self.statusBar)
        self.menuBar = QtGui.QMenuBar(MainWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 574, 32))
        self.menuBar.setObjectName("menuBar")
        self.menuText = QtGui.QMenu(self.menuBar)
        self.menuText.setObjectName("menuText")
        self.menuView = QtGui.QMenu(self.menuBar)
        self.menuView.setObjectName("menuView")
        self.menuEdit = QtGui.QMenu(self.menuBar)
        self.menuEdit.setObjectName("menuEdit")
        self.menuHelp = QtGui.QMenu(self.menuBar)
        self.menuHelp.setObjectName("menuHelp")
        MainWindow.setMenuBar(self.menuBar)
        self.toolBar = QtGui.QToolBar(MainWindow)
        self.toolBar.setObjectName("toolBar")
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
        self.pdfbar = QtGui.QToolBar(MainWindow)
        self.pdfbar.setObjectName("pdfbar")
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.pdfbar)
        self.dock = QtGui.QDockWidget(MainWindow)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/icons/pdf.svg"), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.dock.setWindowIcon(icon1)
        self.dock.setObjectName("dock")
        self.dockWidgetContents = QtGui.QWidget()
        self.dockWidgetContents.setObjectName("dockWidgetContents")
        self.verticalLayout = QtGui.QVBoxLayout(self.dockWidgetContents)
        self.verticalLayout.setMargin(0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.dockLayout = QtGui.QVBoxLayout()
        self.dockLayout.setSpacing(0)
        self.dockLayout.setSizeConstraint(QtGui.QLayout.SetNoConstraint)
        self.dockLayout.setContentsMargins(-1, -1, -1, 0)
        self.dockLayout.setObjectName("dockLayout")
        self.verticalLayout.addLayout(self.dockLayout)
        self.dock.setWidget(self.dockWidgetContents)
        MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.dock)
        self.editbar = QtGui.QToolBar(MainWindow)
        self.editbar.setObjectName("editbar")
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.editbar)
        self.searchbar = QtGui.QToolBar(MainWindow)
        self.searchbar.setMovable(False)
        self.searchbar.setAllowedAreas(QtCore.Qt.BottomToolBarArea)
        self.searchbar.setFloatable(False)
        self.searchbar.setObjectName("searchbar")
        MainWindow.addToolBar(QtCore.Qt.BottomToolBarArea, self.searchbar)
        self.structure = QtGui.QDockWidget(MainWindow)
        self.structure.setObjectName("structure")
        self.dockWidgetContents_2 = QtGui.QWidget()
        self.dockWidgetContents_2.setObjectName("dockWidgetContents_2")
        self.verticalLayout_3 = QtGui.QVBoxLayout(self.dockWidgetContents_2)
        self.verticalLayout_3.setMargin(0)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.verticalLayout_2 = QtGui.QVBoxLayout()
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.tree = QtGui.QTreeWidget(self.dockWidgetContents_2)
        self.tree.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
        self.tree.setProperty("showDropIndicator", QtCore.QVariant(False))
        self.tree.setAlternatingRowColors(True)
        self.tree.setHeaderHidden(False)
        self.tree.setObjectName("tree")
        self.tree.header().setVisible(True)
        self.tree.header().setStretchLastSection(False)
        self.verticalLayout_2.addWidget(self.tree)
        self.verticalLayout_3.addLayout(self.verticalLayout_2)
        self.structure.setWidget(self.dockWidgetContents_2)
        MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.structure)
        self.actionLoad_Text = QtGui.QAction(MainWindow)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(":/icons/fileopen.svg"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionLoad_Text.setIcon(icon2)
        self.actionLoad_Text.setObjectName("actionLoad_Text")
        self.actionLoad_Style = QtGui.QAction(MainWindow)
        self.actionLoad_Style.setIcon(icon2)
        self.actionLoad_Style.setObjectName("actionLoad_Style")
        self.actionRender = QtGui.QAction(MainWindow)
        self.actionRender.setIcon(icon1)
        self.actionRender.setObjectName("actionRender")
        self.actionSave_Text = QtGui.QAction(MainWindow)
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(":/icons/filesave.svg"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionSave_Text.setIcon(icon3)
        self.actionSave_Text.setObjectName("actionSave_Text")
        self.actionSave_Style = QtGui.QAction(MainWindow)
        self.actionSave_Style.setIcon(icon3)
        self.actionSave_Style.setObjectName("actionSave_Style")
        self.actionSave_PDF = QtGui.QAction(MainWindow)
        self.actionSave_PDF.setIcon(icon1)
        self.actionSave_PDF.setObjectName("actionSave_PDF")
        self.actionSaveAs_Text = QtGui.QAction(MainWindow)
        self.actionSaveAs_Text.setIcon(icon3)
        self.actionSaveAs_Text.setObjectName("actionSaveAs_Text")
        self.actionSaveAs_Style = QtGui.QAction(MainWindow)
        self.actionSaveAs_Style.setIcon(icon3)
        self.actionSaveAs_Style.setObjectName("actionSaveAs_Style")
        self.actionSaveAs_PDF = QtGui.QAction(MainWindow)
        self.actionSaveAs_PDF.setIcon(icon1)
        self.actionSaveAs_PDF.setObjectName("actionSaveAs_PDF")
        self.actionUndo1 = QtGui.QAction(MainWindow)
        self.actionUndo1.setEnabled(False)
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(":/icons/undo.svg"), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.actionUndo1.setIcon(icon4)
        self.actionUndo1.setObjectName("actionUndo1")
        self.actionRedo1 = QtGui.QAction(MainWindow)
        self.actionRedo1.setEnabled(False)
        icon5 = QtGui.QIcon()
        icon5.addPixmap(QtGui.QPixmap(":/icons/redo.svg"), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.actionRedo1.setIcon(icon5)
        self.actionRedo1.setObjectName("actionRedo1")
        self.actionCut1 = QtGui.QAction(MainWindow)
        self.actionCut1.setEnabled(False)
        icon6 = QtGui.QIcon()
        icon6.addPixmap(QtGui.QPixmap(":/icons/editcut.svg"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionCut1.setIcon(icon6)
        self.actionCut1.setObjectName("actionCut1")
        self.actionCopy1 = QtGui.QAction(MainWindow)
        self.actionCopy1.setEnabled(False)
        icon7 = QtGui.QIcon()
        icon7.addPixmap(QtGui.QPixmap(":/icons/editcopy.svg"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionCopy1.setIcon(icon7)
        self.actionCopy1.setObjectName("actionCopy1")
        self.actionPaste1 = QtGui.QAction(MainWindow)
        self.actionPaste1.setEnabled(False)
        icon8 = QtGui.QIcon()
        icon8.addPixmap(QtGui.QPixmap(":/icons/editpaste.svg"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionPaste1.setIcon(icon8)
        self.actionPaste1.setObjectName("actionPaste1")
        self.actionUndo2 = QtGui.QAction(MainWindow)
        self.actionUndo2.setEnabled(False)
        self.actionUndo2.setIcon(icon4)
        self.actionUndo2.setObjectName("actionUndo2")
        self.actionRedo2 = QtGui.QAction(MainWindow)
        self.actionRedo2.setEnabled(False)
        self.actionRedo2.setIcon(icon5)
        self.actionRedo2.setObjectName("actionRedo2")
        self.actionCut2 = QtGui.QAction(MainWindow)
        self.actionCut2.setEnabled(False)
        self.actionCut2.setIcon(icon6)
        self.actionCut2.setObjectName("actionCut2")
        self.actionCopy2 = QtGui.QAction(MainWindow)
        self.actionCopy2.setEnabled(False)
        self.actionCopy2.setIcon(icon7)
        self.actionCopy2.setObjectName("actionCopy2")
        self.actionPaste2 = QtGui.QAction(MainWindow)
        self.actionPaste2.setEnabled(False)
        self.actionPaste2.setIcon(icon8)
        self.actionPaste2.setObjectName("actionPaste2")
        self.actionFind = QtGui.QAction(MainWindow)
        icon9 = QtGui.QIcon()
        icon9.addPixmap(QtGui.QPixmap(":/icons/find.svg"), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.actionFind.setIcon(icon9)
        self.actionFind.setObjectName("actionFind")
        self.actionAbout_Bookrest = QtGui.QAction(MainWindow)
        self.actionAbout_Bookrest.setObjectName("actionAbout_Bookrest")
        self.actionTest_Action = QtGui.QAction(MainWindow)
        self.actionTest_Action.setObjectName("actionTest_Action")
        self.actionSettings = QtGui.QAction(MainWindow)
        icon10 = QtGui.QIcon()
        icon10.addPixmap(QtGui.QPixmap(":/icons/configure.svg"),
                         QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionSettings.setIcon(icon10)
        self.actionSettings.setObjectName("actionSettings")
        self.menuText.addAction(self.actionLoad_Text)
        self.menuText.addAction(self.actionLoad_Style)
        self.menuText.addSeparator()
        self.menuText.addAction(self.actionSave_Text)
        self.menuText.addAction(self.actionSaveAs_Text)
        self.menuText.addAction(self.actionSave_Style)
        self.menuText.addAction(self.actionSaveAs_Style)
        self.menuText.addAction(self.actionSave_PDF)
        self.menuText.addAction(self.actionSaveAs_PDF)
        self.menuEdit.addAction(self.actionUndo1)
        self.menuEdit.addAction(self.actionUndo2)
        self.menuEdit.addAction(self.actionRedo1)
        self.menuEdit.addAction(self.actionRedo2)
        self.menuEdit.addSeparator()
        self.menuEdit.addAction(self.actionCut1)
        self.menuEdit.addAction(self.actionCut2)
        self.menuEdit.addAction(self.actionCopy1)
        self.menuEdit.addAction(self.actionCopy2)
        self.menuEdit.addAction(self.actionPaste1)
        self.menuEdit.addAction(self.actionPaste2)
        self.menuEdit.addSeparator()
        self.menuEdit.addAction(self.actionFind)
        self.menuEdit.addSeparator()
        self.menuEdit.addAction(self.actionSettings)
        self.menuHelp.addAction(self.actionAbout_Bookrest)
        self.menuBar.addAction(self.menuText.menuAction())
        self.menuBar.addAction(self.menuEdit.menuAction())
        self.menuBar.addAction(self.menuView.menuAction())
        self.menuBar.addAction(self.menuHelp.menuAction())
        self.toolBar.addAction(self.actionLoad_Text)
        self.toolBar.addAction(self.actionRender)
        self.toolBar.addAction(self.actionSettings)
        self.editbar.addAction(self.actionUndo1)
        self.editbar.addAction(self.actionUndo2)
        self.editbar.addAction(self.actionRedo1)
        self.editbar.addAction(self.actionRedo2)
        self.editbar.addAction(self.actionCut1)
        self.editbar.addAction(self.actionCut2)
        self.editbar.addAction(self.actionCopy1)
        self.editbar.addAction(self.actionCopy2)
        self.editbar.addAction(self.actionPaste1)
        self.editbar.addAction(self.actionPaste2)

        self.retranslateUi(MainWindow)
        self.tabs.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        MainWindow.setTabOrder(self.text, self.tabs)
        MainWindow.setTabOrder(self.tabs, self.style)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(
            QtGui.QApplication.translate("MainWindow", "Bookrest", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.tabs.setTabText(
            self.tabs.indexOf(self.tab),
            QtGui.QApplication.translate("MainWindow", "Text", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.tabs.setTabText(
            self.tabs.indexOf(self.tab_2),
            QtGui.QApplication.translate("MainWindow", "StyleSheet", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.menuText.setTitle(
            QtGui.QApplication.translate("MainWindow", "File", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.menuView.setTitle(
            QtGui.QApplication.translate("MainWindow", "View", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.menuEdit.setTitle(
            QtGui.QApplication.translate("MainWindow", "Edit", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.menuHelp.setTitle(
            QtGui.QApplication.translate("MainWindow", "Help", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.toolBar.setWindowTitle(
            QtGui.QApplication.translate("MainWindow", "toolBar", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.pdfbar.setWindowTitle(
            QtGui.QApplication.translate("MainWindow", "toolBar_2", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.dock.setWindowTitle(
            QtGui.QApplication.translate("MainWindow", "PDF Preview", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.editbar.setWindowTitle(
            QtGui.QApplication.translate("MainWindow", "toolBar_2", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.searchbar.setWindowTitle(
            QtGui.QApplication.translate("MainWindow", "toolBar_2", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.structure.setWindowTitle(
            QtGui.QApplication.translate("MainWindow", "Document Structure",
                                         None, QtGui.QApplication.UnicodeUTF8))
        self.tree.headerItem().setText(
            0,
            QtGui.QApplication.translate("MainWindow", "Section", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.tree.headerItem().setText(
            1,
            QtGui.QApplication.translate("MainWindow", "Line", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionLoad_Text.setText(
            QtGui.QApplication.translate("MainWindow", "Open Text", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionLoad_Text.setToolTip(
            QtGui.QApplication.translate("MainWindow", "Open Text", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionLoad_Text.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+O", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionLoad_Style.setText(
            QtGui.QApplication.translate("MainWindow", "Open Style", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionLoad_Style.setToolTip(
            QtGui.QApplication.translate("MainWindow", "Open Style", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionRender.setText(
            QtGui.QApplication.translate("MainWindow", "Render", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionSave_Text.setText(
            QtGui.QApplication.translate("MainWindow", "Save Text", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionSave_Text.setToolTip(
            QtGui.QApplication.translate("MainWindow", "Save Text", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionSave_Text.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+S", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionSave_Style.setText(
            QtGui.QApplication.translate("MainWindow", "Save Style", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionSave_Style.setToolTip(
            QtGui.QApplication.translate("MainWindow", "Save Style", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionSave_PDF.setText(
            QtGui.QApplication.translate("MainWindow", "Save PDF", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionSave_PDF.setToolTip(
            QtGui.QApplication.translate("MainWindow", "Save PDF", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionSaveAs_Text.setText(
            QtGui.QApplication.translate("MainWindow", "Save Text As", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionSaveAs_Text.setToolTip(
            QtGui.QApplication.translate("MainWindow", "Save Text", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionSaveAs_Style.setText(
            QtGui.QApplication.translate("MainWindow", "Save Style As", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionSaveAs_Style.setToolTip(
            QtGui.QApplication.translate("MainWindow", "Save Style", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionSaveAs_PDF.setText(
            QtGui.QApplication.translate("MainWindow", "Save PDF As", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionSaveAs_PDF.setToolTip(
            QtGui.QApplication.translate("MainWindow", "Save PDF", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionUndo1.setText(
            QtGui.QApplication.translate("MainWindow", "Undo", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionUndo1.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+Z", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionRedo1.setText(
            QtGui.QApplication.translate("MainWindow", "Redo", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionRedo1.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+Shift+Z", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionCut1.setText(
            QtGui.QApplication.translate("MainWindow", "Cut", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionCut1.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+X", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionCopy1.setText(
            QtGui.QApplication.translate("MainWindow", "Copy", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionCopy1.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+C", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionPaste1.setText(
            QtGui.QApplication.translate("MainWindow", "Paste", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionPaste1.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+V", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionUndo2.setText(
            QtGui.QApplication.translate("MainWindow", "Undo", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionUndo2.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+Z", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionRedo2.setText(
            QtGui.QApplication.translate("MainWindow", "Redo", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionRedo2.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+Shift+Z", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionCut2.setText(
            QtGui.QApplication.translate("MainWindow", "Cut", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionCut2.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+X", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionCopy2.setText(
            QtGui.QApplication.translate("MainWindow", "Copy", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionCopy2.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+C", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionPaste2.setText(
            QtGui.QApplication.translate("MainWindow", "Paste", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionPaste2.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+V", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionFind.setText(
            QtGui.QApplication.translate("MainWindow", "Find", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionFind.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+F", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionAbout_Bookrest.setText(
            QtGui.QApplication.translate("MainWindow", "About Bookrest", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionTest_Action.setText(
            QtGui.QApplication.translate("MainWindow", "Test Action", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionSettings.setText(
            QtGui.QApplication.translate("MainWindow", "Settings", None,
                                         QtGui.QApplication.UnicodeUTF8))
Esempio n. 3
0
class GeneralWidget(QWidget):
    def __init__(self, parent=None):

        super(QWidget, self).__init__(parent)

        self.model = Model()
        self.type = 'simple'
        self.prev = ''
        self.window = None

        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")

        self.gridLayout_4 = QtWidgets.QGridLayout(self.tab)
        self.gridLayout_4.setObjectName("gridLayout_4")

        self.widget = QtWidgets.QWidget(self.tab)
        self.widget.setObjectName("widget")

        self.gridLayout_3 = QtWidgets.QGridLayout(self.widget)
        self.gridLayout_3.setContentsMargins(-1, 0, -1, -1)
        self.gridLayout_3.setObjectName("gridLayout_3")

        self.splitter = QtWidgets.QSplitter(self.widget)
        self.splitter.setOrientation(QtCore.Qt.Vertical)
        self.splitter.setObjectName("splitter")

        self.frame = QtWidgets.QFrame(self.splitter)
        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")

        self.gridLayout = QtWidgets.QGridLayout(self.frame)
        self.gridLayout.setContentsMargins(0, 0, 0, 3)
        self.gridLayout.setObjectName("gridLayout")

        self.verticalLayout_3 = QtWidgets.QVBoxLayout()
        self.verticalLayout_3.setObjectName("verticalLayout_3")

        self.verticalLayout_2 = QtWidgets.QVBoxLayout()
        self.verticalLayout_2.setObjectName("verticalLayout_2")

        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setSpacing(0)
        self.verticalLayout.setObjectName("verticalLayout")

        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setContentsMargins(-1, -1, -1, 4)
        self.horizontalLayout.setObjectName("horizontalLayout")

        self.label = QtWidgets.QLabel(self.frame)

        font = QtGui.QFont()
        font.setFamily("MS Shell Dlg 2")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)

        self.label.setFont(font)
        self.label.setStyleSheet(
            "font: 10pt \"MS Shell Dlg 2\";color: rgb(255, 255, 255);")
        self.label.setObjectName("label")

        self.horizontalLayout.addWidget(self.label)

        self.lineEdit = DragLineEdit(self.frame)
        self.lineEdit.setObjectName("lineEdit")

        self.horizontalLayout.addWidget(self.lineEdit)

        self.pushButton = QtWidgets.QPushButton(self.frame)
        self.pushButton.setStyleSheet("font: 10pt \"MS Shell Dlg 2\";")
        self.pushButton.setObjectName("pushButton")

        self.horizontalLayout.addWidget(self.pushButton)

        self.pushButton_5 = QtWidgets.QPushButton(self.frame)
        self.pushButton_5.setStyleSheet("font: 10pt \"MS Shell Dlg 2\";")
        self.pushButton_5.setObjectName("pushButton_5")

        self.horizontalLayout.addWidget(self.pushButton_5)

        self.verticalLayout.addLayout(self.horizontalLayout)

        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")

        self.label_2 = QtWidgets.QLabel(self.frame)

        font = QtGui.QFont()
        font.setBold(False)
        font.setWeight(50)

        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")

        self.horizontalLayout_3.addWidget(self.label_2)
        spacerItem = QtWidgets.QSpacerItem(188, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)

        self.horizontalLayout_3.addItem(spacerItem)

        self.label_3 = QtWidgets.QLabel(self.frame)

        font = QtGui.QFont()
        font.setBold(False)
        font.setWeight(50)

        self.label_3.setFont(font)
        self.label_3.setObjectName("label_3")

        self.horizontalLayout_3.addWidget(self.label_3)
        spacerItem1 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem1)

        self.verticalLayout.addLayout(self.horizontalLayout_3)
        self.verticalLayout_2.addLayout(self.verticalLayout)

        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")

        self.plainTextEdit = CodeEditor(self.frame)
        self.plainTextEdit.setStyleSheet("font: 10pt \"Courier New\";")
        self.plainTextEdit.setObjectName("plainTextEdit")

        self.horizontalLayout_4.addWidget(self.plainTextEdit)

        self.plainTextEdit_2 = CodeEditor(self.frame)
        self.plainTextEdit_2.setStyleSheet("font: 10pt \"Courier New\";")
        self.plainTextEdit_2.setObjectName("plainTextEdit_2")

        self.horizontalLayout_4.addWidget(self.plainTextEdit_2)

        self.verticalLayout_2.addLayout(self.horizontalLayout_4)

        self.verticalLayout_3.addLayout(self.verticalLayout_2)

        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")

        self.label_4 = QtWidgets.QLabel(self.frame)
        self.label_4.setObjectName("label_4")

        self.horizontalLayout_2.addWidget(self.label_4)
        spacerItem2 = QtWidgets.QSpacerItem(173, 22,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem2)

        self.pushButton_3 = QtWidgets.QPushButton(self.frame)
        self.pushButton_3.setStyleSheet("font: 10pt \"MS Shell Dlg 2\";")
        self.pushButton_3.setObjectName("pushButton_3")

        self.horizontalLayout_2.addWidget(self.pushButton_3)

        self.pushButton_4 = QtWidgets.QPushButton(self.frame)
        self.pushButton_4.setStyleSheet("font: 10pt \"MS Shell Dlg 2\";")
        self.pushButton_4.setObjectName("pushButton_4")

        self.horizontalLayout_2.addWidget(self.pushButton_4)

        self.pushButton_2 = QtWidgets.QPushButton(self.frame)
        self.pushButton_2.setStyleSheet("font: 10pt \"MS Shell Dlg 2\";")
        self.pushButton_2.setObjectName("pushButton_2")

        self.horizontalLayout_2.addWidget(self.pushButton_2)

        self.verticalLayout_3.addLayout(self.horizontalLayout_2)

        self.gridLayout.addLayout(self.verticalLayout_3, 0, 0, 1, 1)

        self.plainTextEdit_3 = CodeEditor(self.splitter)

        self.splitter.setSizes([300, 100])

        self.plainTextEdit_3.setStyleSheet("font: 10pt \"MS Shell Dlg 2\";")
        self.plainTextEdit_3.setObjectName("plainTextEdit_3")

        self.gridLayout_3.addWidget(self.splitter, 0, 0, 1, 1)

        self.gridLayout_4.addWidget(self.widget, 0, 0, 1, 1)

        self.plainTextEdit.setAcceptDrops(False)
        self.plainTextEdit_3.setAcceptDrops(False)

        self.preview_thread = PreviewThread()
        self.preview_thread.signal.connect(self.loadPreview)

        self.label.setText("File Name : ")

        self.label_2.setText("Tikz : ")

        self.label_3.setText("GraphML : ")

        self.label_4.setText("Debug Logs : ")

        self.label_2.setStyleSheet(
            "font: 10pt \"MS Shell Dlg 2\";color: rgb(255, 255, 255);")

        self.label_3.setStyleSheet(
            "font: 10pt \"MS Shell Dlg 2\";color: rgb(255, 255, 255);")

        self.label_4.setStyleSheet(
            "font: 10pt \"MS Shell Dlg 2\";color: rgb(255, 255, 255);")

        self.pushButton.setText("Browse")

        self.pushButton_3.setText("Simple-Tikz")

        self.pushButton_2.setText("Save")

        self.pushButton_4.setText("Refresh")

        self.pushButton_5.setIcon(QtGui.QIcon('../Images/refresh.png'))

        self.pushButton.clicked.connect(self.browseSlot)

        self.lineEdit.returnPressed.connect(self.returnedPressedSlot)

        self.pushButton_3.clicked.connect(self.convertSlot)

        self.pushButton_4.clicked.connect(self.reloadSlot)

        self.pushButton_2.clicked.connect(self.saveSlot)

        #self.lineEdit.textChanged.connect(self.draganddrop)

        self.pushButton_5.clicked.connect(self.refreshSlot)

        self.setLayout(self.gridLayout_4)

    def debugPrint(self, msg):
        '''Print the message in the text edit at the bottom of the
        horizontal splitter.
        '''
        if self.prev != msg:
            self.prev = msg
            self.plainTextEdit_3.appendPlainText(str(msg))

    @pyqtSlot()
    def returnedPressedSlot(self):
        ''' Called when the user enters a string in the line edit and
        presses the ENTER key.
        '''
        fileName = self.lineEdit.text()
        extension = os.path.splitext(fileName)[1]
        self.debugPrint("Converting file : " + fileName)
        if self.model.isValid(fileName) and extension == '.graphml':
            self.model.setFileName(self.lineEdit.text())
            if self.type == 'simple':
                self.refreshAll()
            elif self.type == 'advance':
                self.refreshAllSimple()
        else:
            m = QtWidgets.QMessageBox()
            m.setText("File not supported or invalid path!\n" + fileName)
            m.setIcon(QtWidgets.QMessageBox.Warning)
            m.setStandardButtons(QtWidgets.QMessageBox.Ok
                                 | QtWidgets.QMessageBox.Cancel)
            m.setDefaultButton(QtWidgets.QMessageBox.Cancel)
            m.exec_()
            self.lineEdit.setText("")
            self.plainTextEdit.setPlainText("")
            self.plainTextEdit_2.setPlainText("")
            self.debugPrint("Invalid file specified: " + fileName)

    @pyqtSlot()
    def convertSlot(self):
        ''' Called when the user presses the convert button.
        '''

        if self.model.getFileName():
            if self.type == 'simple':
                self.refreshAllSimple()
                _translate = QtCore.QCoreApplication.translate
                self.pushButton_3.setText(_translate("MainWindow", "Adv-Tikz"))
                self.type = 'advance'
                self.debugPrint("Simple mode chosen.Output modified.")
            elif self.type == 'advance':
                self.refreshAll()
                _translate = QtCore.QCoreApplication.translate
                self.pushButton_3.setText(
                    _translate("MainWindow", "Simple Tikz"))
                self.debugPrint("Advanced mode chosen.Output modified.")
                self.type = 'simple'
        else:
            self.debugPrint("No file specified.")

    @pyqtSlot()
    def browseSlot(self):
        ''' Called when the user presses the Browse button
        '''
        options = QtWidgets.QFileDialog.Options()
        options |= QtWidgets.QFileDialog.DontUseNativeDialog
        fileName, _ = QtWidgets.QFileDialog.getOpenFileName(
            None,
            "Select GraphMl Files",
            "",
            filter="*.graphml",
            options=options)
        if fileName:
            self.debugPrint("Converting file : " + fileName)
            self.model.setFileName(fileName)
            try:
                self.window.close()
            except:
                pass
            self.refreshAll()

    @pyqtSlot()
    def saveSlot(self):
        ''' Called when the user presses the Save button
        '''
        if self.model.getFileName():
            options = QtWidgets.QFileDialog.Options()
            options |= QtWidgets.QFileDialog.DontUseNativeDialog
            fileName, _ = QtWidgets.QFileDialog.getSaveFileName(
                None,
                "QFileDialog.getSaveFileName()",
                "",
                ".tex",
                options=options)
            if fileName:
                content = self.plainTextEdit.toPlainText()
                with open(fileName + '.tex', 'w') as out:
                    out.write(content)
                self.debugPrint("File " + fileName + '.tex saved.')
        else:
            self.debugPrint("No file specified to save.")

    @pyqtSlot()
    def reloadSlot(self):
        ''' Called when the user presses the Refresh button.
        '''
        self.debugPrint('Refreshing preview....')
        if self.plainTextEdit.toPlainText() != '':
            fileName = self.model.getFileName()
            flin = os.path.splitext(fileName)[0]
            fileName = self.model.getFileName()
            flin = os.path.splitext(fileName)[0]
            fileout = flin + '.tex'
            tout = open(fileout, 'w')
            tout.write(
                '\\documentclass[11pt]{article}\n\\usepackage{tikz}\n\\thispagestyle{empty}\n\\usetikzlibrary{arrows,shapes}\n\\begin{document}\n'
            )
            tout.write(self.plainTextEdit.toPlainText())
            tout.write('\\end{document}')
            tout.close()
            self.preview(flin)

    @pyqtSlot()
    def refreshSlot(self):
        ''' Called when the user presses the Reload symbol.
        '''
        self.debugPrint('Reloaded file.')
        self.returnedPressedSlot()

    @pyqtSlot()
    def draganddrop(self):
        ''' Called when the user drags and drops file on the line edit.
        '''
        if self.lineEdit.text() != '':
            try:
                self.window.close()
            except:
                pass
            self.returnedPressedSlot()

    def loadPreview(self, flag):
        ''' This function loads the preview in a different window.
        '''
        self.preview_thread.stop()
        fileName = self.model.getFileName()
        flin = os.path.splitext(fileName)[0]
        _, tail = os.path.split(flin)
        if flag:
            cwd = os.getcwd()
            img_path = cwd + '\\' + tail + '.jpg'
            img = QImage(img_path)
            self.window = PreviewWindow(cwd + '\\' + tail)
            pixmap = QPixmap(img_path)
            self.window.setPicSize(img.width(), img.height())
            self.window.label.setPixmap(
                pixmap.scaled(self.window.label.size(),
                              QtCore.Qt.KeepAspectRatio,
                              QtCore.Qt.SmoothTransformation))
            icon = QIcon()
            icon.addFile('../Images/python.png', QSize(256, 256))
            self.window.setWindowIcon(icon)
            self.window.show()
            self.debugPrint("Preview loaded.")
            try:
                os.remove(flin + '.tex')
                os.remove(tail + '.log')
                os.remove(tail + '.aux')
                os.remove(tail + '.pdf')
                os.remove(tail + '-crop.pdf')
            except:
                pass
        else:
            try:
                self.window.close()
                os.remove(flin + '.tex')
                os.remove(tail + '.log')
                os.remove(tail + '.aux')
                os.remove(tail + '.pdf')
                os.remove(tail + '-crop.pdf')
            except:
                pass
            self.debugPrint("Preview failed due to latex compilation error.")

    def refreshAllSimple(self):
        '''
        Updates the widgets whenever an interaction happens.
        Typically some interaction takes place, the UI responds,
        and informs the model of the change.  Then this method
        is called, pulling from the model information that is
        updated in the GUI.
        '''
        self.lineEdit.setText(self.model.getFileName())
        flag, exception, contents = self.model.convertSlot()
        if flag == True:
            self.debugPrint(exception + ' in ' + str(self.model.getFileName()))
            self.debugPrint('Conversion for file : ' +
                            str(self.model.getFileName()) + ' failed.')
            self.plainTextEdit.setPlainText('')
            self.plainTextEdit_2.setPlainText('')
        else:
            fileName = self.model.getFileName()
            flin = os.path.splitext(fileName)[0]
            fileout = flin + '.tex'
            tout = open(fileout, 'w')
            tout.write(
                '\\documentclass[11pt]{article}\n\\usepackage{tikz}\n\\thispagestyle{empty}\n\\usetikzlibrary{arrows,shapes}\n\\begin{document}\n'
            )
            tout.write(contents)
            tout.write('\\end{document}')
            tout.close()
            self.plainTextEdit.setPlainText(contents)
            self.plainTextEdit_2.setPlainText(self.model.getGraphML())
            self.debugPrint('Conversion for file : ' +
                            str(self.model.getFileName()) + ' successful.')
            self.debugPrint('Loading Preview....')
            self.preview(flin)

    def refreshAll(self):
        '''
        Updates the widgets for simple mode.
        '''
        self.lineEdit.setText(self.model.getFileName())
        flag, exception, contents = self.model.getFileContents()
        if flag == True:
            self.debugPrint(exception + ' in ' + str(self.model.getFileName()))
            self.debugPrint('Conversion for file : ' +
                            str(self.model.getFileName()) + ' failed.')
            self.plainTextEdit.setPlainText('')
            self.plainTextEdit_2.setPlainText('')
        else:
            fileName = self.model.getFileName()
            flin = os.path.splitext(fileName)[0]
            fileout = flin + '.tex'
            tout = open(fileout, 'w')
            tout.write(
                '\\documentclass[11pt]{article}\n\\usepackage{tikz}\n\\thispagestyle{empty}\n\\usetikzlibrary{arrows,shapes}\n\\begin{document}\n'
            )
            tout.write(contents)
            tout.write('\\end{document}')
            tout.close()
            self.plainTextEdit.setPlainText(contents)
            self.plainTextEdit_2.setPlainText(self.model.getGraphML())
            self.debugPrint('Conversion for file : ' +
                            str(self.model.getFileName()) + ' successful.')
            self.debugPrint('Loading Preview....')
            self.preview(flin)

    def preview(self, flin):
        ''' This function is called before previewing which initialises threads.
        '''
        self.preview_thread.set_file(flin)
        self.preview_thread.start()
Esempio n. 4
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(1345, 1429)
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.gridLayout = QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName(u"gridLayout")
        self.gridLayout.setVerticalSpacing(6)
        self.verticalLayout = QVBoxLayout()
        self.verticalLayout.setSpacing(10)
        self.verticalLayout.setObjectName(u"verticalLayout")
        self.tabs = QTabWidget(self.centralwidget)
        self.tabs.setObjectName(u"tabs")
        font = QFont()
        font.setPointSize(10)
        self.tabs.setFont(font)
        self.tabs.setTabShape(QTabWidget.Rounded)
        self.tabs.setIconSize(QSize(16, 16))
        self.tabs.setElideMode(Qt.ElideNone)
        self.editor_tab = QWidget()
        self.editor_tab.setObjectName(u"editor_tab")
        self.gridLayout_2 = QGridLayout(self.editor_tab)
        self.gridLayout_2.setObjectName(u"gridLayout_2")
        self.gridLayout_2.setContentsMargins(0, 6, 0, 0)
        self.code_editor = CodeEditor(self.editor_tab)
        self.code_editor.setObjectName(u"code_editor")

        self.gridLayout_2.addWidget(self.code_editor, 1, 0, 1, 1)

        self.tabs.addTab(self.editor_tab, "")
        self.render_tab = QWidget()
        self.render_tab.setObjectName(u"render_tab")
        self.gridLayout_3 = QGridLayout(self.render_tab)
        self.gridLayout_3.setObjectName(u"gridLayout_3")
        self.gridLayout_3.setContentsMargins(0, 6, 0, 0)
        self.render_view = CodeEditor(self.render_tab)
        self.render_view.setObjectName(u"render_view")
        self.render_view.setReadOnly(True)

        self.gridLayout_3.addWidget(self.render_view, 0, 0, 1, 1)

        self.tabs.addTab(self.render_tab, "")

        self.verticalLayout.addWidget(self.tabs)

        self.compile = QPushButton(self.centralwidget)
        self.compile.setObjectName(u"compile")
        font1 = QFont()
        font1.setPointSize(14)
        self.compile.setFont(font1)

        self.verticalLayout.addWidget(self.compile)

        self.console_output = QPlainTextEdit(self.centralwidget)
        self.console_output.setObjectName(u"console_output")

        self.verticalLayout.addWidget(self.console_output)

        self.verticalLayout.setStretch(0, 4)

        self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1)

        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)

        self.tabs.setCurrentIndex(0)

        QMetaObject.connectSlotsByName(MainWindow)

    # setupUi

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(
            QCoreApplication.translate("MainWindow", u"MainWindow", None))
        self.tabs.setTabText(
            self.tabs.indexOf(self.editor_tab),
            QCoreApplication.translate("MainWindow", u"  Code Editor  ", None))
        self.tabs.setTabText(
            self.tabs.indexOf(self.render_tab),
            QCoreApplication.translate("MainWindow",
                                       u"  View Generated Code  ", None))
        self.compile.setText(
            QCoreApplication.translate("MainWindow", u"COMPILE", None))
Esempio n. 5
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(574, 601)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/icons/kaddressbook.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MainWindow.setWindowIcon(icon)
        self.centralWidget = QtGui.QWidget(MainWindow)
        self.centralWidget.setObjectName("centralWidget")
        self.horizontalLayout_3 = QtGui.QHBoxLayout(self.centralWidget)
        self.horizontalLayout_3.setMargin(3)
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.tabs = QtGui.QTabWidget(self.centralWidget)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.tabs.sizePolicy().hasHeightForWidth())
        self.tabs.setSizePolicy(sizePolicy)
        self.tabs.setObjectName("tabs")
        self.tab = QtGui.QWidget()
        self.tab.setObjectName("tab")
        self.horizontalLayout = QtGui.QHBoxLayout(self.tab)
        self.horizontalLayout.setMargin(0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.text = CodeEditor(self.tab)
        font = QtGui.QFont()
        font.setFamily("DejaVu Sans Mono")
        self.text.setFont(font)
        self.text.setFrameShape(QtGui.QFrame.NoFrame)
        self.text.setFrameShadow(QtGui.QFrame.Plain)
        self.text.setLineWidth(0)
        self.text.setObjectName("text")
        self.horizontalLayout.addWidget(self.text)
        self.tabs.addTab(self.tab, "")
        self.tab_2 = QtGui.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.horizontalLayout_2 = QtGui.QHBoxLayout(self.tab_2)
        self.horizontalLayout_2.setMargin(0)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.style = CodeEditor(self.tab_2)
        font = QtGui.QFont()
        font.setFamily("DejaVu Sans Mono")
        self.style.setFont(font)
        self.style.setFrameShape(QtGui.QFrame.NoFrame)
        self.style.setObjectName("style")
        self.horizontalLayout_2.addWidget(self.style)
        self.tabs.addTab(self.tab_2, "")
        self.horizontalLayout_3.addWidget(self.tabs)
        MainWindow.setCentralWidget(self.centralWidget)
        self.statusBar = QtGui.QStatusBar(MainWindow)
        self.statusBar.setObjectName("statusBar")
        MainWindow.setStatusBar(self.statusBar)
        self.menuBar = QtGui.QMenuBar(MainWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 574, 32))
        self.menuBar.setObjectName("menuBar")
        self.menuText = QtGui.QMenu(self.menuBar)
        self.menuText.setObjectName("menuText")
        self.menuView = QtGui.QMenu(self.menuBar)
        self.menuView.setObjectName("menuView")
        self.menuEdit = QtGui.QMenu(self.menuBar)
        self.menuEdit.setObjectName("menuEdit")
        self.menuHelp = QtGui.QMenu(self.menuBar)
        self.menuHelp.setObjectName("menuHelp")
        MainWindow.setMenuBar(self.menuBar)
        self.toolBar = QtGui.QToolBar(MainWindow)
        self.toolBar.setObjectName("toolBar")
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
        self.pdfbar = QtGui.QToolBar(MainWindow)
        self.pdfbar.setObjectName("pdfbar")
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.pdfbar)
        self.dock = QtGui.QDockWidget(MainWindow)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/icons/pdf.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.dock.setWindowIcon(icon1)
        self.dock.setObjectName("dock")
        self.dockWidgetContents = QtGui.QWidget()
        self.dockWidgetContents.setObjectName("dockWidgetContents")
        self.verticalLayout = QtGui.QVBoxLayout(self.dockWidgetContents)
        self.verticalLayout.setMargin(0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.dockLayout = QtGui.QVBoxLayout()
        self.dockLayout.setSpacing(0)
        self.dockLayout.setSizeConstraint(QtGui.QLayout.SetNoConstraint)
        self.dockLayout.setContentsMargins(-1, -1, -1, 0)
        self.dockLayout.setObjectName("dockLayout")
        self.verticalLayout.addLayout(self.dockLayout)
        self.dock.setWidget(self.dockWidgetContents)
        MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.dock)
        self.editbar = QtGui.QToolBar(MainWindow)
        self.editbar.setObjectName("editbar")
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.editbar)
        self.searchbar = QtGui.QToolBar(MainWindow)
        self.searchbar.setMovable(False)
        self.searchbar.setAllowedAreas(QtCore.Qt.BottomToolBarArea)
        self.searchbar.setFloatable(False)
        self.searchbar.setObjectName("searchbar")
        MainWindow.addToolBar(QtCore.Qt.BottomToolBarArea, self.searchbar)
        self.structure = QtGui.QDockWidget(MainWindow)
        self.structure.setObjectName("structure")
        self.dockWidgetContents_2 = QtGui.QWidget()
        self.dockWidgetContents_2.setObjectName("dockWidgetContents_2")
        self.verticalLayout_3 = QtGui.QVBoxLayout(self.dockWidgetContents_2)
        self.verticalLayout_3.setMargin(0)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.verticalLayout_2 = QtGui.QVBoxLayout()
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.tree = QtGui.QTreeWidget(self.dockWidgetContents_2)
        self.tree.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
        self.tree.setProperty("showDropIndicator", QtCore.QVariant(False))
        self.tree.setAlternatingRowColors(True)
        self.tree.setHeaderHidden(False)
        self.tree.setObjectName("tree")
        self.tree.header().setVisible(True)
        self.tree.header().setStretchLastSection(False)
        self.verticalLayout_2.addWidget(self.tree)
        self.verticalLayout_3.addLayout(self.verticalLayout_2)
        self.structure.setWidget(self.dockWidgetContents_2)
        MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.structure)
        self.actionLoad_Text = QtGui.QAction(MainWindow)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(":/icons/fileopen.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionLoad_Text.setIcon(icon2)
        self.actionLoad_Text.setObjectName("actionLoad_Text")
        self.actionLoad_Style = QtGui.QAction(MainWindow)
        self.actionLoad_Style.setIcon(icon2)
        self.actionLoad_Style.setObjectName("actionLoad_Style")
        self.actionRender = QtGui.QAction(MainWindow)
        self.actionRender.setIcon(icon1)
        self.actionRender.setObjectName("actionRender")
        self.actionSave_Text = QtGui.QAction(MainWindow)
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(":/icons/filesave.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionSave_Text.setIcon(icon3)
        self.actionSave_Text.setObjectName("actionSave_Text")
        self.actionSave_Style = QtGui.QAction(MainWindow)
        self.actionSave_Style.setIcon(icon3)
        self.actionSave_Style.setObjectName("actionSave_Style")
        self.actionSave_PDF = QtGui.QAction(MainWindow)
        self.actionSave_PDF.setIcon(icon1)
        self.actionSave_PDF.setObjectName("actionSave_PDF")
        self.actionSaveAs_Text = QtGui.QAction(MainWindow)
        self.actionSaveAs_Text.setIcon(icon3)
        self.actionSaveAs_Text.setObjectName("actionSaveAs_Text")
        self.actionSaveAs_Style = QtGui.QAction(MainWindow)
        self.actionSaveAs_Style.setIcon(icon3)
        self.actionSaveAs_Style.setObjectName("actionSaveAs_Style")
        self.actionSaveAs_PDF = QtGui.QAction(MainWindow)
        self.actionSaveAs_PDF.setIcon(icon1)
        self.actionSaveAs_PDF.setObjectName("actionSaveAs_PDF")
        self.actionUndo1 = QtGui.QAction(MainWindow)
        self.actionUndo1.setEnabled(False)
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(":/icons/undo.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionUndo1.setIcon(icon4)
        self.actionUndo1.setObjectName("actionUndo1")
        self.actionRedo1 = QtGui.QAction(MainWindow)
        self.actionRedo1.setEnabled(False)
        icon5 = QtGui.QIcon()
        icon5.addPixmap(QtGui.QPixmap(":/icons/redo.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionRedo1.setIcon(icon5)
        self.actionRedo1.setObjectName("actionRedo1")
        self.actionCut1 = QtGui.QAction(MainWindow)
        self.actionCut1.setEnabled(False)
        icon6 = QtGui.QIcon()
        icon6.addPixmap(QtGui.QPixmap(":/icons/editcut.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionCut1.setIcon(icon6)
        self.actionCut1.setObjectName("actionCut1")
        self.actionCopy1 = QtGui.QAction(MainWindow)
        self.actionCopy1.setEnabled(False)
        icon7 = QtGui.QIcon()
        icon7.addPixmap(QtGui.QPixmap(":/icons/editcopy.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionCopy1.setIcon(icon7)
        self.actionCopy1.setObjectName("actionCopy1")
        self.actionPaste1 = QtGui.QAction(MainWindow)
        self.actionPaste1.setEnabled(False)
        icon8 = QtGui.QIcon()
        icon8.addPixmap(QtGui.QPixmap(":/icons/editpaste.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionPaste1.setIcon(icon8)
        self.actionPaste1.setObjectName("actionPaste1")
        self.actionUndo2 = QtGui.QAction(MainWindow)
        self.actionUndo2.setEnabled(False)
        self.actionUndo2.setIcon(icon4)
        self.actionUndo2.setObjectName("actionUndo2")
        self.actionRedo2 = QtGui.QAction(MainWindow)
        self.actionRedo2.setEnabled(False)
        self.actionRedo2.setIcon(icon5)
        self.actionRedo2.setObjectName("actionRedo2")
        self.actionCut2 = QtGui.QAction(MainWindow)
        self.actionCut2.setEnabled(False)
        self.actionCut2.setIcon(icon6)
        self.actionCut2.setObjectName("actionCut2")
        self.actionCopy2 = QtGui.QAction(MainWindow)
        self.actionCopy2.setEnabled(False)
        self.actionCopy2.setIcon(icon7)
        self.actionCopy2.setObjectName("actionCopy2")
        self.actionPaste2 = QtGui.QAction(MainWindow)
        self.actionPaste2.setEnabled(False)
        self.actionPaste2.setIcon(icon8)
        self.actionPaste2.setObjectName("actionPaste2")
        self.actionFind = QtGui.QAction(MainWindow)
        icon9 = QtGui.QIcon()
        icon9.addPixmap(QtGui.QPixmap(":/icons/find.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionFind.setIcon(icon9)
        self.actionFind.setObjectName("actionFind")
        self.actionAbout_Bookrest = QtGui.QAction(MainWindow)
        self.actionAbout_Bookrest.setObjectName("actionAbout_Bookrest")
        self.actionTest_Action = QtGui.QAction(MainWindow)
        self.actionTest_Action.setObjectName("actionTest_Action")
        self.actionSettings = QtGui.QAction(MainWindow)
        icon10 = QtGui.QIcon()
        icon10.addPixmap(QtGui.QPixmap(":/icons/configure.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionSettings.setIcon(icon10)
        self.actionSettings.setObjectName("actionSettings")
        self.menuText.addAction(self.actionLoad_Text)
        self.menuText.addAction(self.actionLoad_Style)
        self.menuText.addSeparator()
        self.menuText.addAction(self.actionSave_Text)
        self.menuText.addAction(self.actionSaveAs_Text)
        self.menuText.addAction(self.actionSave_Style)
        self.menuText.addAction(self.actionSaveAs_Style)
        self.menuText.addAction(self.actionSave_PDF)
        self.menuText.addAction(self.actionSaveAs_PDF)
        self.menuEdit.addAction(self.actionUndo1)
        self.menuEdit.addAction(self.actionUndo2)
        self.menuEdit.addAction(self.actionRedo1)
        self.menuEdit.addAction(self.actionRedo2)
        self.menuEdit.addSeparator()
        self.menuEdit.addAction(self.actionCut1)
        self.menuEdit.addAction(self.actionCut2)
        self.menuEdit.addAction(self.actionCopy1)
        self.menuEdit.addAction(self.actionCopy2)
        self.menuEdit.addAction(self.actionPaste1)
        self.menuEdit.addAction(self.actionPaste2)
        self.menuEdit.addSeparator()
        self.menuEdit.addAction(self.actionFind)
        self.menuEdit.addSeparator()
        self.menuEdit.addAction(self.actionSettings)
        self.menuHelp.addAction(self.actionAbout_Bookrest)
        self.menuBar.addAction(self.menuText.menuAction())
        self.menuBar.addAction(self.menuEdit.menuAction())
        self.menuBar.addAction(self.menuView.menuAction())
        self.menuBar.addAction(self.menuHelp.menuAction())
        self.toolBar.addAction(self.actionLoad_Text)
        self.toolBar.addAction(self.actionRender)
        self.toolBar.addAction(self.actionSettings)
        self.editbar.addAction(self.actionUndo1)
        self.editbar.addAction(self.actionUndo2)
        self.editbar.addAction(self.actionRedo1)
        self.editbar.addAction(self.actionRedo2)
        self.editbar.addAction(self.actionCut1)
        self.editbar.addAction(self.actionCut2)
        self.editbar.addAction(self.actionCopy1)
        self.editbar.addAction(self.actionCopy2)
        self.editbar.addAction(self.actionPaste1)
        self.editbar.addAction(self.actionPaste2)

        self.retranslateUi(MainWindow)
        self.tabs.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        MainWindow.setTabOrder(self.text, self.tabs)
        MainWindow.setTabOrder(self.tabs, self.style)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "Bookrest", None, QtGui.QApplication.UnicodeUTF8))
        self.tabs.setTabText(self.tabs.indexOf(self.tab), QtGui.QApplication.translate("MainWindow", "Text", None, QtGui.QApplication.UnicodeUTF8))
        self.tabs.setTabText(self.tabs.indexOf(self.tab_2), QtGui.QApplication.translate("MainWindow", "StyleSheet", None, QtGui.QApplication.UnicodeUTF8))
        self.menuText.setTitle(QtGui.QApplication.translate("MainWindow", "File", None, QtGui.QApplication.UnicodeUTF8))
        self.menuView.setTitle(QtGui.QApplication.translate("MainWindow", "View", None, QtGui.QApplication.UnicodeUTF8))
        self.menuEdit.setTitle(QtGui.QApplication.translate("MainWindow", "Edit", None, QtGui.QApplication.UnicodeUTF8))
        self.menuHelp.setTitle(QtGui.QApplication.translate("MainWindow", "Help", None, QtGui.QApplication.UnicodeUTF8))
        self.toolBar.setWindowTitle(QtGui.QApplication.translate("MainWindow", "toolBar", None, QtGui.QApplication.UnicodeUTF8))
        self.pdfbar.setWindowTitle(QtGui.QApplication.translate("MainWindow", "toolBar_2", None, QtGui.QApplication.UnicodeUTF8))
        self.dock.setWindowTitle(QtGui.QApplication.translate("MainWindow", "PDF Preview", None, QtGui.QApplication.UnicodeUTF8))
        self.editbar.setWindowTitle(QtGui.QApplication.translate("MainWindow", "toolBar_2", None, QtGui.QApplication.UnicodeUTF8))
        self.searchbar.setWindowTitle(QtGui.QApplication.translate("MainWindow", "toolBar_2", None, QtGui.QApplication.UnicodeUTF8))
        self.structure.setWindowTitle(QtGui.QApplication.translate("MainWindow", "Document Structure", None, QtGui.QApplication.UnicodeUTF8))
        self.tree.headerItem().setText(0, QtGui.QApplication.translate("MainWindow", "Section", None, QtGui.QApplication.UnicodeUTF8))
        self.tree.headerItem().setText(1, QtGui.QApplication.translate("MainWindow", "Line", None, QtGui.QApplication.UnicodeUTF8))
        self.actionLoad_Text.setText(QtGui.QApplication.translate("MainWindow", "Open Text", None, QtGui.QApplication.UnicodeUTF8))
        self.actionLoad_Text.setToolTip(QtGui.QApplication.translate("MainWindow", "Open Text", None, QtGui.QApplication.UnicodeUTF8))
        self.actionLoad_Text.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+O", None, QtGui.QApplication.UnicodeUTF8))
        self.actionLoad_Style.setText(QtGui.QApplication.translate("MainWindow", "Open Style", None, QtGui.QApplication.UnicodeUTF8))
        self.actionLoad_Style.setToolTip(QtGui.QApplication.translate("MainWindow", "Open Style", None, QtGui.QApplication.UnicodeUTF8))
        self.actionRender.setText(QtGui.QApplication.translate("MainWindow", "Render", None, QtGui.QApplication.UnicodeUTF8))
        self.actionSave_Text.setText(QtGui.QApplication.translate("MainWindow", "Save Text", None, QtGui.QApplication.UnicodeUTF8))
        self.actionSave_Text.setToolTip(QtGui.QApplication.translate("MainWindow", "Save Text", None, QtGui.QApplication.UnicodeUTF8))
        self.actionSave_Text.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+S", None, QtGui.QApplication.UnicodeUTF8))
        self.actionSave_Style.setText(QtGui.QApplication.translate("MainWindow", "Save Style", None, QtGui.QApplication.UnicodeUTF8))
        self.actionSave_Style.setToolTip(QtGui.QApplication.translate("MainWindow", "Save Style", None, QtGui.QApplication.UnicodeUTF8))
        self.actionSave_PDF.setText(QtGui.QApplication.translate("MainWindow", "Save PDF", None, QtGui.QApplication.UnicodeUTF8))
        self.actionSave_PDF.setToolTip(QtGui.QApplication.translate("MainWindow", "Save PDF", None, QtGui.QApplication.UnicodeUTF8))
        self.actionSaveAs_Text.setText(QtGui.QApplication.translate("MainWindow", "Save Text As", None, QtGui.QApplication.UnicodeUTF8))
        self.actionSaveAs_Text.setToolTip(QtGui.QApplication.translate("MainWindow", "Save Text", None, QtGui.QApplication.UnicodeUTF8))
        self.actionSaveAs_Style.setText(QtGui.QApplication.translate("MainWindow", "Save Style As", None, QtGui.QApplication.UnicodeUTF8))
        self.actionSaveAs_Style.setToolTip(QtGui.QApplication.translate("MainWindow", "Save Style", None, QtGui.QApplication.UnicodeUTF8))
        self.actionSaveAs_PDF.setText(QtGui.QApplication.translate("MainWindow", "Save PDF As", None, QtGui.QApplication.UnicodeUTF8))
        self.actionSaveAs_PDF.setToolTip(QtGui.QApplication.translate("MainWindow", "Save PDF", None, QtGui.QApplication.UnicodeUTF8))
        self.actionUndo1.setText(QtGui.QApplication.translate("MainWindow", "Undo", None, QtGui.QApplication.UnicodeUTF8))
        self.actionUndo1.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Z", None, QtGui.QApplication.UnicodeUTF8))
        self.actionRedo1.setText(QtGui.QApplication.translate("MainWindow", "Redo", None, QtGui.QApplication.UnicodeUTF8))
        self.actionRedo1.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Shift+Z", None, QtGui.QApplication.UnicodeUTF8))
        self.actionCut1.setText(QtGui.QApplication.translate("MainWindow", "Cut", None, QtGui.QApplication.UnicodeUTF8))
        self.actionCut1.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+X", None, QtGui.QApplication.UnicodeUTF8))
        self.actionCopy1.setText(QtGui.QApplication.translate("MainWindow", "Copy", None, QtGui.QApplication.UnicodeUTF8))
        self.actionCopy1.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+C", None, QtGui.QApplication.UnicodeUTF8))
        self.actionPaste1.setText(QtGui.QApplication.translate("MainWindow", "Paste", None, QtGui.QApplication.UnicodeUTF8))
        self.actionPaste1.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+V", None, QtGui.QApplication.UnicodeUTF8))
        self.actionUndo2.setText(QtGui.QApplication.translate("MainWindow", "Undo", None, QtGui.QApplication.UnicodeUTF8))
        self.actionUndo2.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Z", None, QtGui.QApplication.UnicodeUTF8))
        self.actionRedo2.setText(QtGui.QApplication.translate("MainWindow", "Redo", None, QtGui.QApplication.UnicodeUTF8))
        self.actionRedo2.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Shift+Z", None, QtGui.QApplication.UnicodeUTF8))
        self.actionCut2.setText(QtGui.QApplication.translate("MainWindow", "Cut", None, QtGui.QApplication.UnicodeUTF8))
        self.actionCut2.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+X", None, QtGui.QApplication.UnicodeUTF8))
        self.actionCopy2.setText(QtGui.QApplication.translate("MainWindow", "Copy", None, QtGui.QApplication.UnicodeUTF8))
        self.actionCopy2.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+C", None, QtGui.QApplication.UnicodeUTF8))
        self.actionPaste2.setText(QtGui.QApplication.translate("MainWindow", "Paste", None, QtGui.QApplication.UnicodeUTF8))
        self.actionPaste2.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+V", None, QtGui.QApplication.UnicodeUTF8))
        self.actionFind.setText(QtGui.QApplication.translate("MainWindow", "Find", None, QtGui.QApplication.UnicodeUTF8))
        self.actionFind.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+F", None, QtGui.QApplication.UnicodeUTF8))
        self.actionAbout_Bookrest.setText(QtGui.QApplication.translate("MainWindow", "About Bookrest", None, QtGui.QApplication.UnicodeUTF8))
        self.actionTest_Action.setText(QtGui.QApplication.translate("MainWindow", "Test Action", None, QtGui.QApplication.UnicodeUTF8))
        self.actionSettings.setText(QtGui.QApplication.translate("MainWindow", "Settings", None, QtGui.QApplication.UnicodeUTF8))