Example #1
0
class Authorization(QtWidgets.QMainWindow):
    def enter(self):
        login = self.ui.loginEdit.text()
        password = self.ui.passworEdit.text()

        if get_password(login) is None:
            QMessageBox.question(self, 'Error', 'Error', QMessageBox.Ok,
                                 QMessageBox.Ok)
        elif get_password(login).lower() == password.lower():
            self.user_window = User(login)
            self.user_window.show()
        elif get_password(login).lower() == (password.lower() + '~1'):
            self.w3 = Administrator(login)
            self.w3.show()
        else:
            QMessageBox.question(self, 'Error', 'Error', QMessageBox.Ok,
                                 QMessageBox.Ok)

    def exit(self):
        self.close()

    def registration(self):
        self.w2 = Account()
        self.w2.show()

    def __init__(self):
        super(Authorization, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.enter.clicked.connect(self.enter)
        self.ui.exit.clicked.connect(self.exit)
        self.ui.reg.clicked.connect(self.registration)
Example #2
0
class eitMain(QMainWindow):
    def __init__(self):
        super(eitMain, self).__init__()

        self.ui = Ui_MainWindow()  #Opens the main window.
        self.ui.setupUi(self)
        self.ui.searchBtn.clicked.connect(
            self.charSearch)  #this is the search button.
        self.ui.actionExit.triggered.connect(
            QApplication.quit)  #This is the quit option in the menu bar.

    def charSearch(
        self
    ):  #this passes the text from the search box to the later thing that actually searches.
        self.charName = self.ui.charSearch.text()
        esiFunction.charIntelSearch(self, eitMain)

    def noResults(
        self
    ):  #this is displayed if your search has no results, otherwise it would crash.
        noResults = QMessageBox()
        noResults.setIcon(QMessageBox.Information)
        noResults.setText("No Results Found.")
        noResults.setInformativeText(
            "Search must be exact.\n\nCase Sensitive.")
        noResults.setStandardButtons(QMessageBox.Ok)
        noResults.setWindowTitle("Error")
        noResults.exec_()
        self.ui.searchBtn.clicked.connect(self.charSearch)
Example #3
0
def init_gui():
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
class mywindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.comboBox.currentIndexChanged.connect(self.updateLabel)
        self.ui.comboBox_2.currentIndexChanged.connect(self.updateLabel)
        self.ui.comboBox_3.currentIndexChanged.connect(self.updateLabel)
        self.ui.comboBox_4.currentIndexChanged.connect(self.updateLabel)
        self.ui.comboBox_5.currentIndexChanged.connect(self.updateLabel)
        self.ui.comboBox_6.currentIndexChanged.connect(self.updateLabel)

    def updateLabel(self):
        currentDataArr = [
            str(determineValue(self.ui.comboBox.currentText())),
            str(determineValue(self.ui.comboBox_2.currentText())),
            str(determineValue(self.ui.comboBox_3.currentText())),
            str(determineValue(self.ui.comboBox_4.currentText())),
            str(determineValue(self.ui.comboBox_5.currentText())),
            str(determineValue(self.ui.comboBox_6.currentText()))
        ]

        result = ''
        for i in range(len(currentDataArr)):
            if currentDataArr[i] == '-1':
                continue
            result = result + currentDataArr[i]

        self.ui.label.setText(result + " ohms")
Example #5
0
class MatplotlibWidget(QMainWindow):
    def __init__(self):
        super().__init__()
        #loadUi("design.ui", self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.setWindowTitle("yet another title (im bad at names)")
        self.ui.MplWidget.canvas.axes.format_coord = lambda x, y: ""
        self.addToolBar(2, NavigationToolbar2QT(self.ui.MplWidget.canvas,
                                                self))
        self.ui.MplWidget.canvas.mpl_connect("motion_notify_event",
                                             self.handle_mouse_moved)
        self.draw_graph()

    def handle_mouse_moved(self, event):
        if event.xdata is not None and event.ydata is not None:
            #print(f"x: {event.xdata:.2f}, y: {event.ydata:.2f}")
            self.ui.statusbar.showMessage(
                f"x: {event.xdata:.2f}, y: {event.ydata:.2f}")

    def draw_graph(self):
        fq = randint(1, 100)
        ln = 100
        t = np.linspace(0, 1, ln)
        wave = np.cos(2 * np.pi * fq * t)

        self.ui.MplWidget.canvas.axes.clear()
        self.ui.MplWidget.canvas.axes.plot(wave)
        self.ui.MplWidget.canvas.draw()
Example #6
0
class MyWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(MyWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.download_btn.clicked.connect(self.download)
        self.ui.get_lex.clicked.connect(self.analysis)

    def download(self):
        path = self.ui.pathfile.text()
        with open(path) as file:
            data = file.readlines()
        self.ui.listWidget.addItems(data)

    def analysis(self):
        lex_list = []
        for index in range(self.ui.listWidget.count()):
            for item_pair in lex_analysis(
                    self.ui.listWidget.item(index).text()):
                lex_list.append(item_pair)
        self.ui.tableWidget.setRowCount(len(lex_list))
        row = 1
        for lexem, lexem_type in lex_list:
            self.ui.tableWidget.setItem(row, 0,
                                        QtWidgets.QTableWidgetItem(lexem))
            self.ui.tableWidget.setItem(row, 1,
                                        QtWidgets.QTableWidgetItem(lexem_type))
            row += 1
Example #7
0
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # connected run_alg to btn
        self.ui.pushButton.clicked.connect(self.run_alg)
Example #8
0
 def __init__(self):
     super(Authorization, self).__init__()
     self.ui = Ui_MainWindow()
     self.ui.setupUi(self)
     self.ui.enter.clicked.connect(self.enter)
     self.ui.exit.clicked.connect(self.exit)
     self.ui.reg.clicked.connect(self.registration)
Example #9
0
class sayiTahmin    (QMainWindow):
    pc_sayi = random.randint(1, 100)
    flag = False
    kalan_hak = 4
    def __init__(self):
        super().__init__()
        self.ui=Ui_MainWindow()
        self.ui.setupUi(self)

        self.setWindowIcon(QIcon(":\icons/num.jpg"))
        self.ui.txt_kalanhak.setText(str(self.kalan_hak + 1))
        self.ui.txt_tahmin.returnPressed.connect(self.tahminet)
        self.ui.btn_yenioyun.clicked.connect(self.yeniOyun)

    def yeniOyun(self):
        self.kalan_hak=4
        self.flag=False
        self.ui.txt_sonuc.setText("Yeni Oyun Başladı")
        self.ui.txt_tahmin.setText("")
        self.ui.txt_kalanhak.setText(str(self.kalan_hak + 1))
        self.pc_sayi = random.randint(1, 100)

    def tahminet(self):


        try:
            girilenSayi = int(self.ui.txt_tahmin.text())
            if self.pc_sayi == int(girilenSayi):
                self.ui.txt_sonuc.setText("Tebrikler doğru bildiniz.. " + str(self.pc_sayi))
                self.flag = True
                self.ui.txt_tahmin.setText("")

                #self.yeniOyun()

            elif self.kalan_hak == 0:
                self.ui.txt_sonuc.setText(
                    "Son hakkında da bilemedin ve hakkın bitti.. Başka bir oyunda tekrar deneyin. \n Doğru sayi: " + str(
                        self.pc_sayi))
                self.ui.txt_tahmin.setText("")
                self.ui.txt_kalanhak.setText(str(self.kalan_hak))


            elif int(girilenSayi) > self.pc_sayi:
                self.ui.txt_sonuc.setText(
                    "Tekrar Deneyin.. İpucu: Daha küçük sayi girin.. ")
                # Kalan hakkınız: " + str(self.kalan_hak))
                self.kalan_hak -= 1
                self.ui.txt_kalanhak.setText(str(self.kalan_hak + 1))
                self.ui.txt_tahmin.setText("")

            else:
                self.ui.txt_sonuc.setText(
                    "Tekrar Deneyin.. İpucu: Daha büyük bir sayi girin..")
                # Kalan hakkınız: " + str(self.kalan_hak))
                self.kalan_hak -= 1
                self.ui.txt_kalanhak.setText(str(self.kalan_hak + 1))
                self.ui.txt_tahmin.setText("")
        except ValueError:
            self.ui.txt_sonuc.setText("Sayi giriniz..")
Example #10
0
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.mosStyleLable.setText("")
        self.ui.petStyleLabe.setText("")

        self.ui.splitBtn.clicked.connect(self.splitBtn_clicked)
Example #11
0
 def __init__(self, parent=None):
     super(MainWindow, self).__init__(parent=parent)
     self.ui = Ui_MainWindow()
     self.ui.setupUi(self)
     self.figure = Figure()
     self.figureCanvas = FigureCanvas(self.figure)
     self.plotToolbar = NavigationToolbar(self.figureCanvas, self)
     self.data = StiffnessData()
Example #12
0
 def __init__(self, dialog, text=None):
     Ui_MainWindow.__init__(self)
     self.setupUi(dialog)
     self.text = text
     self.init_ui()
     dialog.setWindowTitle("GCG")
     scriptDir = path.dirname(path.realpath('__file__'))
     dialog.setWindowIcon(QtGui.QIcon(scriptDir + path.sep + 'images/gcg.png'))
Example #13
0
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.ui.label.setText('Hello4!')
        self.ui.label.setFont(QtGui.QFont('SansSerif', 25))
        self.ui.label.setFixedHeight(50)
Example #14
0
 def __init__(self):
     super(mywindow, self).__init__()
     self.mutex = threading.Lock()
     self.semaphore = threading.Semaphore()
     
     self.ui = Ui_MainWindow()
     self.ui.setupUi(self)
     
     self.ui.pushButton.clicked.connect(self.start_threads)
Example #15
0
    def __init__(self):
        super().__init__()
        self.ui = Ui_MainWindow(self)
        self.ui.setupUi(self)
        self.show()
        self.coeff = []

        self.readInput()
        self.ui.clearBtn.clicked.connect(self.ui.inputFld.clear)
Example #16
0
    def __init__(self):
        super().__init__()
        self.ui=Ui_MainWindow()
        self.ui.setupUi(self)

        self.setWindowIcon(QIcon(":\icons/num.jpg"))
        self.ui.txt_kalanhak.setText(str(self.kalan_hak + 1))
        self.ui.txt_tahmin.returnPressed.connect(self.tahminet)
        self.ui.btn_yenioyun.clicked.connect(self.yeniOyun)
Example #17
0
    def __init__(self):
        super(ApplicationWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.timer = QtCore.QTimer()
        self.timer.setInterval(10)
        self.timer.timeout.connect(self.pan)
        self.timer.start()
Example #18
0
    def __init__(self):
        super(eitMain, self).__init__()

        self.ui = Ui_MainWindow()  #Opens the main window.
        self.ui.setupUi(self)
        self.ui.searchBtn.clicked.connect(
            self.charSearch)  #this is the search button.
        self.ui.actionExit.triggered.connect(
            QApplication.quit)  #This is the quit option in the menu bar.
Example #19
0
 def __init__(self):
     super(mywindow, self).__init__()
     self.ui = Ui_MainWindow()
     self.ui.setupUi(self)
     self.ui.progressBar.setRange(0, 100)
     self.ui.progressBar.setValue(10)
     self.ui.horizontalSlider.setValue(35)
     self.ui.calendarWidget.setSelectedDate(QtCore.QDate(1993, 5, 5))
     self.ui.pushButton.clicked.connect(self.btn_click)
Example #20
0
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.ui.label.setFont(QtGui.QFont('SansSerif', 30))

        self.ui.label.setGeometry(QtCore.QRect(
            10, 10, 200, 200))  # изменить геометрию ярлыка
        self.ui.pushButton.clicked.connect(self.move_label)
 def __init__(self):
     super(mywindow, self).__init__()
     self.ui = Ui_MainWindow()
     self.ui.setupUi(self)
     self.ui.comboBox.currentIndexChanged.connect(self.updateLabel)
     self.ui.comboBox_2.currentIndexChanged.connect(self.updateLabel)
     self.ui.comboBox_3.currentIndexChanged.connect(self.updateLabel)
     self.ui.comboBox_4.currentIndexChanged.connect(self.updateLabel)
     self.ui.comboBox_5.currentIndexChanged.connect(self.updateLabel)
     self.ui.comboBox_6.currentIndexChanged.connect(self.updateLabel)
Example #22
0
    def __init__(self, model: MainModel, controller: MainController):
        super().__init__()
        self.controller = controller
        self.model = model
        self.currentBlock = ""

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.saveControls()
        self.setupButtons()
        self.model.subscribe_update_function(self.updateFilenames)
Example #23
0
    def __init__(self, dialog):
        Ui_MainWindow.__init__(self)
        self.setupUi(dialog)

        self.plotButtonStart.clicked.connect(self.plotStart)
        self.plotButtonEnd.clicked.connect(self.plotEnd)

        self.PlotStart = GetLogData('Start')
        self.PlotEnd = GetLogData('End')

        self.horizontalSlider.setMaximum(self.getLogLength())
class interface(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.text=None
        self.scroll = QScrollArea()
        self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
        self.ui.setupUi(self)
        self.grid = QGridLayout()
        self.ui.label.setLayout(self.grid)
        self.list_img=[]
        self.ui.pushButton.clicked.connect(self.search)
        #self.create_labels(self.list_img)
    def search(self):
        self.text=self.ui.textEdit.toPlainText()
        self.get_img_database(self.text)
        if (len(self.text)!=0):
            self.list_img = self.get_img_database(self.text)
            if (len(self.list_img)==0):
                QMessageBox.warning(self, 'Error', 'There is no image about search key')
            else:
                self.create_labels(self.list_img)
        else:
            QMessageBox.warning(self, 'Error', 'There is no search key')
    def location(self,i):
        y=int(i/4)
        x=int(i%4)
        return x,y
    def create_labels(self,list):
        for i in reversed(range(self.grid.count())):
            self.grid.itemAt(i).widget().setParent(None)
        for i in range(0,len(list)):
            label1=QLabel()
            label1.setAlignment(Qt.AlignCenter)
            req = Request(list[i],headers={'User-Agent': 'Mozilla/5.0'})
            url_data = urllib2.urlopen(req).read()
            self.pm = QPixmap() #.scaled(250, 250, Qt.KeepAspectRatio,Qt.SmoothTransformation)
            self.pm.loadFromData(url_data)
            label1.setPixmap(self.pm)
            x,y=self.location(i)
            self.grid.addWidget(label1, y, x)
    def get_img_database(self,key):
        cluster = MongoClient("mongodb+srv://muho:84437**[email protected]/muho?retryWrites=true&w=majority")
        db = cluster["muho"]
        collection = db["images"]
        regx = re.compile("{}".format(key), re.IGNORECASE)
        collections = collection.find({"caption": regx})
        url_list=[]
        for x in collections:
            if "https" in x["url"]:
                if (len(url_list)<20):
                    url_list.append(x['url'])
        return url_list
 def __init__(self):
     super().__init__()
     self.ui = Ui_MainWindow()
     self.ui.setupUi(self)
     self.text=None
     self.scroll = QScrollArea()
     self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
     self.ui.setupUi(self)
     self.grid = QGridLayout()
     self.ui.label.setLayout(self.grid)
     self.list_img=[]
     self.ui.pushButton.clicked.connect(self.search)
Example #26
0
    def __init__(self):
        super().__init__()

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.number_string = '0'
        # falta-me criar o grupo dos botões no designer
        for button in self.ui.digits.buttons():
            button.clicked.connect(self.add_digit)

        self.show()
Example #27
0
    def __init__(self):
        super().__init__()
        #loadUi("design.ui", self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.setWindowTitle("yet another title (im bad at names)")
        self.ui.MplWidget.canvas.axes.format_coord = lambda x, y: ""
        self.addToolBar(2, NavigationToolbar2QT(self.ui.MplWidget.canvas,
                                                self))
        self.ui.MplWidget.canvas.mpl_connect("motion_notify_event",
                                             self.handle_mouse_moved)
        self.draw_graph()
Example #28
0
    def __init__(self):
        super(Window, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # Привязка обработчика на кнопку загрузки фотографии.
        self.ui.loadButton.clicked.connect(self.load_file)

        # Привязка обработчика на кнопку "найти очаг".
        self.ui.findStrokeButton.clicked.connect(self.process_image)

        # Привязка обработчика на кнопку скачивания фотографии.
        self.ui.downloadButton.clicked.connect(self.download_file)
Example #29
0
class mywindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.ui.label.setFont(QtGui.QFont('SansSerif', 30))

        self.ui.label.setGeometry(QtCore.QRect(
            10, 10, 200, 200))  # изменить геометрию ярлыка
        self.ui.pushButton.clicked.connect(self.move_label)

    def _move_second_label(self):
        while True:
            x = self.ui.label.x()
            y = self.ui.label.y()

            rand_x = random.randint(-4, 4)
            rand_y = random.randint(-4, 4)

            self.ui.label.move(x + rand_x, y + rand_y)
            time.sleep(0.1)

    def _move_first_label(self):
        while True:
            x = self.ui.label_2.x()
            y = self.ui.label_2.y()

            rand_x = random.randint(-8, 8)
            rand_y = random.randint(-8, 8)

            self.ui.label_2.move(x + rand_x, y + rand_y)
            time.sleep(0.1)

    def _move_third_label(self):
        while True:
            x = self.ui.label_2.x()
            y = self.ui.label_2.y()

            rand_x = random.randint(-10, 10)
            rand_y = random.randint(-10, 10)

            self.ui.label_3.move(x + rand_x, y + rand_y)
            time.sleep(0.1)

    def move_label(self):
        threading.Thread(target=(self._move_first_label)).start()
        threading.Thread(target=(self._move_second_label)).start()
        threading.Thread(target=(self._move_third_label)).start()
Example #30
0
class mywindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.mosStyleLable.setText("")
        self.ui.petStyleLabe.setText("")

        self.ui.splitBtn.clicked.connect(self.splitBtn_clicked)

    def splitBtn_clicked(self):
        self.ui.mosStyleLable.setText(
            MoscowSpliter(self.ui.inputTextField.toPlainText()))
        self.ui.petStyleLabe.setText(
            PeterSpliter(self.ui.inputTextField.toPlainText()))
Example #31
0
File: calc.py Project: pineman/code
class Calculator(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.number_string = '0'
        # falta-me criar o grupo dos botões no designer
        for button in self.ui.digits.buttons():
            button.clicked.connect(self.add_digit)

        self.show()

    def add_digit(self):
        number = self.sender()
        self.ui.LCD.display(self.number_string)
Example #32
0
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.setFixedSize(857, 716)
        self.setWindowTitle("LALR Parser")

        self.init()

        QtCore.QObject.connect(self.ui.action_Open, QtCore.SIGNAL("triggered()"), self.open_file)
        self.ui.action_Exit.triggered.connect(self.exit_app)
        self.ui.display.clicked.connect(self.disp)
        self.ui.first.clicked.connect(self.disp_first)
        self.ui.lr1.clicked.connect(self.disp_lr1_states)
        self.ui.lalr.clicked.connect(self.disp_lalr_states)
        self.ui.parse_table.clicked.connect(self.disp_parse_table)
        self.ui.plainTextEdit.textChanged.connect(self.check_changed)
        self.ui.parse.clicked.connect(self.disp_parsing)
        self.ui.actionAuthor.triggered.connect(self.disp_author)
Example #33
0
    def __init__(self, loop, config):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.config = config
        self.ui.txt_log.insertPlainText('Файл настроек загружен.')

        self.prefs_window = None

        self.ui.menu_exit.triggered.connect(self._exit)
        self.ui.menu_preferences.triggered.connect(self.prefs_open)
        self.ui.menu_open.triggered.connect(self.open_dialog)
        self.ui.menu_save.triggered.connect(self.save)
        self.ui.menu_save_as.triggered.connect(self.save_as)
        self.ui.menu_create.triggered.connect(self.clear_numbers)

        self.ui.btn_exit.clicked.connect(self._exit)
        self.ui.btn_send.clicked.connect(self.send)

        self.loop = loop
Example #34
0
class MainFrame(QtGui.QMainWindow, Ui_MainWindow):

    def __init__(self, loop, config):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.config = config
        self.ui.txt_log.insertPlainText('Файл настроек загружен.')

        self.prefs_window = None

        self.ui.menu_exit.triggered.connect(self._exit)
        self.ui.menu_preferences.triggered.connect(self.prefs_open)
        self.ui.menu_open.triggered.connect(self.open_dialog)
        self.ui.menu_save.triggered.connect(self.save)
        self.ui.menu_save_as.triggered.connect(self.save_as)
        self.ui.menu_create.triggered.connect(self.clear_numbers)

        self.ui.btn_exit.clicked.connect(self._exit)
        self.ui.btn_send.clicked.connect(self.send)

        self.loop = loop

    def _exit(self):
        sys.exit()

    def open_dialog(self):
        file_name = QtGui.QFileDialog.getOpenFileName(self, "Открыть файл списка номеров", "", "text file (*.txt)")
        if os.path.exists(file_name):
            self.ui.txt_sms_num.clear()
            with open(file_name, 'r') as f:
                self.ui.txt_sms_num.insertPlainText(f.read())
            self.response_decode((5, file_name))

    def save(self):
        file_name = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S") + '.txt'
        cat = os.path.split(os.path.abspath(__file__))[0]
        full_path = os.path.join(cat, file_name)
        with open(full_path, 'w') as f:
            f.write(self.ui.txt_sms_num.toPlainText())
        self.response_decode((6, file_name))

    def save_as(self):
        file_name = QtGui.QFileDialog.getSaveFileName(self, "Сохранить файл с номерами как", "", "text file (*.txt)")
        cat = os.path.split(os.path.abspath(__file__))[0]
        full_path = os.path.join(cat, file_name)
        with open(full_path, 'w') as f:
            f.write(self.ui.txt_sms_num.toPlainText())
        self.response_decode((6, file_name))

    def clear_numbers(self):
        self.ui.txt_sms_num.clear()


    def prefs_open(self):
        if self.prefs_window is None:
            self.prefs = Preferences(self.config)
            self.connect(self.prefs, QtCore.SIGNAL('config(PyQt_PyObject)'), self.reload_config)
            self.connect(self.prefs, QtCore.SIGNAL("response(PyQt_PyObject)"), self.response_decode)
            self.prefs.show()

    def reload_config(self, config):
        self.config = config

    def sanitarize_numbers(self):
        pattern = re.compile(r'\d+', flags=re.IGNORECASE)

        numbers = list(self.ui.txt_sms_num.toPlainText().split('\n'))

        phone_numbers = []
        for number in numbers:
            digits = re.findall(pattern, number)
            fixed_number = ''
            if len(digits) > 1:
                for digit in digits:
                    fixed_number += digit
                phone_numbers.append(fixed_number)
            elif len(digits) == 1:
                phone_numbers.append(digits[0])
        return phone_numbers

    def sanitarize_text(self):
        text = self.ui.txt_sms_text.toPlainText()
        pattern = re.compile(r'([\"\'])', flags=re.IGNORECASE)
        r_pattern = re.compile(r'[\"\']', flags=re.IGNORECASE)
        index = re.findall(pattern, text)

        if len(index) != 0:
            for i in range(1, len(index)+1):
                print(i%2)
                if i % 2 == 1:
                    text = re.sub(r_pattern, "<<", text, 1)
                elif i % 2 == 0:
                    text = re.sub(r_pattern, ">>", text, 1)
        return text

    def send(self):
        # Следующие аргументы должны быть загружены из файла в момент инициализации!!!
        numbers = list(self.ui.txt_sms_num.toPlainText().split('\n'))
        sms_text = self.ui.txt_sms_text.toPlainText()


        if self.config['sanitarize'] == 'true':
            numbers = self.sanitarize_numbers()
            sms_text = self.sanitarize_text()
        if numbers[0] == '':
            self.ui.txt_log.insertPlainText('Не указано ни одного номера телефона для отправки!\n')
        else:
            print(sms_text)
            self.GSM = GSMGateway(self.loop,(self.config['username'], self.config['password']),
                                  self.config['gateway'], SIMSlot=self.config['simslot'],
                                  numbers_list=numbers, text=sms_text)
            self.connect(self.GSM, QtCore.SIGNAL("response(PyQt_PyObject)"), self.response_decode)
            self.GSM.start()

    def response_decode(self, response):
        stage, data = response
        if stage == 0:
            if data == 'Connection established':
                self.ui.txt_log.insertPlainText('\nСоединение с шлюзом установлено успешно.')
            else:
                self.ui.txt_log.insertPlainText('\nНевозможно установить соединение со шлюзом.')
        elif stage == 1:
            if 'Success' in data:
                self.ui.txt_log.insertPlainText('\nДанные авторизации приняты')
            else:
                self.ui.txt_log.insertPlainText('\nШлюз отверг запрос авторизации')
        elif stage == 2:
            pattern = re.compile(r"\w+:\s?(\d+)", flags=re.IGNORECASE)
            if 'failed' in data:
                number = re.findall(pattern, data)[0]
                self.ui.txt_log.insertPlainText('\nОшибка отправки СМС на номер: %s' % number)
            elif 'Response: Follows' in data:
                number = re.findall(pattern, data)[0]
                self.ui.txt_log.insertPlainText('\nСМС отправлена на номер: %s' % number)
        #-------------------------------------------------------------------------------------
        elif stage == 5:
            self.ui.txt_log.insertPlainText('\nЗагружен файл списка номеров: %s' % data)
        elif stage == 6:
            self.ui.txt_log.insertPlainText('\nСохранен файл списка номеров: %s' % data)
        elif stage == 7:
            self.ui.txt_log.insertPlainText('\nФайл настроек изменен: %s' % data)
Example #35
0
class parser(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.setFixedSize(857, 716)
        self.setWindowTitle("LALR Parser")

        self.init()

        QtCore.QObject.connect(self.ui.action_Open, QtCore.SIGNAL("triggered()"), self.open_file)
        self.ui.action_Exit.triggered.connect(self.exit_app)
        self.ui.display.clicked.connect(self.disp)
        self.ui.first.clicked.connect(self.disp_first)
        self.ui.lr1.clicked.connect(self.disp_lr1_states)
        self.ui.lalr.clicked.connect(self.disp_lalr_states)
        self.ui.parse_table.clicked.connect(self.disp_parse_table)
        self.ui.plainTextEdit.textChanged.connect(self.check_changed)
        self.ui.parse.clicked.connect(self.disp_parsing)
        self.ui.actionAuthor.triggered.connect(self.disp_author)

    def init(self):
        self.grammar = []
        self.augment_grammar = []

        self.first = {}

        self.term = []
        self.non_term = []

        self.states = []
        self.lalr_states = []
        self.parse_table = []
        State.state_count = -1
        lalrState.state_count = 0

    def check_changed(self):
        self.changed = True

    def open_file(self):
        file = QtGui.QFileDialog.getOpenFileName(self, "Open Grammar file")
        file = open(file, "r")
        self.ui.plainTextEdit.setPlainText(file.read())
        file.close()
        self.ui.lineEdit.clear()
        self.ui.textBrowser.clear()

    def read_input(self):
        self.init()
        lines = self.ui.plainTextEdit.toPlainText()  # string
        lines_list = lines.split("\n")  # converting into list of lines

        try:
            for line in lines_list:
                line = line.replace(" ", "")

                if line != "":
                    line_list = line.split("->")

                    if line_list[0].isupper() and line_list[1] != "":
                        if "|" in line_list[1]:
                            prod_list = line_list[1].split("|")
                            for prod in prod_list:
                                self.grammar.append([line_list[0], prod])
                        else:
                            self.grammar.append(line_list)
                    else:
                        self.ui.textBrowser.clear()
                        self.ui.textBrowser.setText("Invalid grammar")
                        self.grammar = []

            if self.grammar != []:
                term_and_nonterm(self.grammar, self.term, self.non_term)
                calculate_first(self.grammar, self.first, self.term, self.non_term)
                get_augmented(self.grammar, self.augment_grammar)
                find_states(self.states, self.augment_grammar, self.first, self.term, self.non_term)
                combine_states(self.lalr_states, self.states)
                get_parse_table(self.parse_table, self.lalr_states, self.augment_grammar)
                self.changed = False

        except (KeyError, IndexError):
            self.ui.textBrowser.clear()
            self.ui.textBrowser.setText("Invalid grammar")
            self.init()

    ############################         DISPLAY          ################################

    def disp(self):
        self.ui.textBrowser.clear()
        if self.grammar == [] or self.changed:
            self.read_input()

        if self.grammar != []:
            for prod in self.grammar:
                s = prod[0] + " -> " + prod[1] + "\n"
                self.ui.textBrowser.append(s)
            self.ui.textBrowser.append(
                "\nNon Terminals : " + " ".join(self.non_term) + "\nTerminals : " + " ".join(self.term)
            )

    def disp_first(self):
        if self.first == {} or self.changed:
            self.read_input()
        if self.first != {}:
            self.ui.textBrowser.clear()
            for key, value in self.first.items():
                if key in self.non_term:
                    self.ui.textBrowser.append("First(" + key + ") : " + " ".join(value) + "\n")

    def disp_lr1_states(self):
        if self.states == [] or self.changed:
            self.read_input()
        if self.states != []:
            self.ui.textBrowser.clear()
            self.ui.textBrowser.append(
                "Number of LR(1) states : " + str(self.states[len(self.states) - 1].state_num + 1)
            )
            for state in self.states:
                self.ui.textBrowser.append("----------------------------------------------------------------")
                if state.state_num == 0:
                    self.ui.textBrowser.append("\nI" + str(state.state_num) + " : " + "\n")
                else:
                    self.ui.textBrowser.append(
                        "\nI"
                        + str(state.state_num)
                        + " : "
                        + " goto ( I"
                        + str(state.parent[0])
                        + " -> '"
                        + str(state.parent[1])
                        + "' )\n"
                    )
                for item in state.state:
                    self.ui.textBrowser.append(item[0] + " -> " + item[1] + " ,  [ " + " ".join(item[2]) + " ]")
                if state.actions != {}:
                    self.ui.textBrowser.append("\nActions : ")
                    for k, v in state.actions.items():
                        self.ui.textBrowser.insertPlainText(str(k) + " -> " + str(abs(v)) + "\t")

    def disp_lalr_states(self):
        if self.lalr_states == [] or self.changed:
            self.read_input()
        if self.lalr_states != []:
            self.ui.textBrowser.clear()
            self.ui.textBrowser.append("Number of LALR states : " + str(lalrState.state_count))
            for state in self.lalr_states:
                self.ui.textBrowser.append("----------------------------------------------------------------")
                if state.state_num == 0:
                    self.ui.textBrowser.append(
                        "\nI" + str(state.state_num) + " : " + "\tGot by -> " + str(state.parent_list) + "\n"
                    )
                else:
                    self.ui.textBrowser.append(
                        "\nI"
                        + str(state.state_num)
                        + " : "
                        + " goto ( I"
                        + str(state.parent[0])
                        + " -> '"
                        + str(state.parent[1])
                        + "' )"
                        + "\tGot by -> "
                        + str(state.parent_list)
                        + "\n"
                    )
                for item in state.state:
                    self.ui.textBrowser.append(item[0] + " -> " + item[1] + " ,   [ " + " ".join(item[2]) + " ]")
                if state.actions != {}:
                    self.ui.textBrowser.append("\nActions : ")
                    for k, v in state.actions.items():
                        self.ui.textBrowser.insertPlainText(str(k) + " -> " + str(abs(v)) + "\t")

    def disp_parse_table(self):
        if self.grammar == [] or self.changed:
            self.read_input()

        if self.grammar != []:
            self.ui.textBrowser.clear()
            all_symb = []
            all_symb.extend(self.term)
            all_symb.append("$")
            all_symb.extend(self.non_term)
            if "e" in all_symb:
                all_symb.remove("e")

            head = "{0:12}".format(" ")
            for X in all_symb:
                head = head + "{0:12}".format(X)
            self.ui.textBrowser.setText(head + "\n")
            s = "------------" * len(all_symb)
            self.ui.textBrowser.append(s)

            for index, state in enumerate(self.parse_table):
                line = "{0:<12}".format(index)
                for X in all_symb:
                    if X in state.keys():
                        if X in self.non_term:
                            action = state[X]
                        else:
                            if state[X] > 0:
                                action = "s" + str(state[X])
                            elif state[X] < 0:
                                action = "r" + str(abs(state[X]))
                            elif state[X] == 0:
                                action = "accept"

                        line = line + "{0:<12}".format(action)
                    else:
                        line = line + "{0:<12}".format("")

                self.ui.textBrowser.append(line)
                self.ui.textBrowser.append(s)

    def disp_parsing(self):
        if self.grammar == [] or self.changed:
            self.read_input()
        if self.grammar != []:
            self.ui.textBrowser.clear()
            line_input = self.ui.lineEdit.text()
            self.parse(self.parse_table, self.augment_grammar, line_input)

    def parse(self, parse_table, augment_grammar, inpt):
        inpt = list(inpt + "$")
        stack = [0]
        a = inpt[0]
        try:
            head = "{0:40} {1:40} {2:40}".format("Stack", "Input", "Actions")
            self.ui.textBrowser.setText(head)
            while True:
                string = "\n{0:<40} {1:<40} ".format(stack, "".join(inpt))
                s = stack[len(stack) - 1]
                action = parse_table[s][a]
                if action > 0:
                    inpt.pop(0)
                    stack.append(action)
                    self.ui.textBrowser.append(string + "Shift " + a + "\n")
                    a = inpt[0]
                elif action < 0:
                    prod = augment_grammar[-action]
                    if prod[1] != "e":
                        for i in range(len(prod[1])):
                            stack.pop()
                    t = stack[len(stack) - 1]
                    stack.append(parse_table[t][prod[0]])
                    self.ui.textBrowser.append(string + "Reduce " + prod[0] + " -> " + prod[1] + "\n")
                elif action == 0:
                    self.ui.textBrowser.append("ACCEPT\n")
                    break
        except KeyError:
            self.ui.textBrowser.append("\n\nERROR\n")

    def exit_app(self):
        QtGui.QApplication.quit()

    def disp_author(self):
        QtGui.QMessageBox.information(
            self,
            "About",
            "LALR PARSER\n\nAuthors:\n  Akshay Hebbar Y S\t\n  Bharath Kumar N B\t\n  Nikil Upadhyaya\t\n  Alok S\t",
            QtGui.QMessageBox.Ok,
        )
Example #36
0
class parser(QtGui.QMainWindow):
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self,parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.setFixedSize(852, 671)
        self.setWindowTitle("LALR Parser")

        self.init()

        QtCore.QObject.connect(self.ui.action_Open,QtCore.SIGNAL("triggered()"),self.open_file)
        self.ui.action_Exit.triggered.connect(self.exit_app)
        self.ui.display.clicked.connect(self.disp)
        self.ui.first.clicked.connect(self.disp_first)
        self.ui.lr1.clicked.connect(self.disp_lr1_states)
        self.ui.lalr.clicked.connect(self.disp_lalr_states)
        self.ui.parse_table.clicked.connect(self.disp_parse_table)
        self.ui.plainTextEdit.textChanged.connect(self.check_changed)
        self.ui.parse.clicked.connect(self.disp_parsing)
        self.ui.actionAuthor.triggered.connect(self.disp_author)


    def init(self):
        self.grammar = []
        self.augment_grammar = []
        self.first = {}
        self.term = []
        self.non_term = []
        self.states = []
        self.lalr_states = []
        self.parse_table = []
        State.state_count = -1
        lalrState.state_count = 0

    def check_changed(self):
        self.changed = True


    def open_file(self):
        file = QtGui.QFileDialog.getOpenFileName(self,'Open Grammar file')
        if file != '':
            file = open(file,'r')
            self.ui.plainTextEdit.setPlainText(file.read())
            file.close()
            self.ui.lineEdit.clear()
            self.ui.textBrowser.clear()


    def read_input(self):
        self.init()
        lines = self.ui.plainTextEdit.toPlainText()         #string
        lines_list = lines.split('\n')                      #converting into list of lines

        try:
            for line in lines_list:
                line = line.replace(' ' ,'')
        
                if line != '':
                    line_list = line.split('->')
        
                    if line_list[0].isupper() and line_list[1] != '':
                        if '|' in line_list[1]:
                            prod_list = line_list[1].split('|')
                            for prod in prod_list:
                                self.grammar.append([line_list[0],prod])
                        else:
                            self.grammar.append(line_list)
                    else:
                        self.ui.textBrowser.clear()
                        self.ui.textBrowser.setText("Invalid grammar")
                        self.grammar = []
    
            if self.grammar != []:
                term_and_nonterm(self.grammar,self.term,self.non_term)
                calculate_first(self.grammar,self.first,self.term,self.non_term)
                get_augmented(self.grammar,self.augment_grammar)
                find_states(self.states,self.augment_grammar,self.first,self.term,self.non_term)
                combine_states(self.lalr_states, self.states)
                get_parse_table(self.parse_table,self.lalr_states,self.augment_grammar)
                self.changed = False

        except (KeyError, IndexError):
            self.ui.textBrowser.clear()
            self.ui.textBrowser.setText("Invalid grammar")
            self.init()
            


############################         DISPLAY          ################################

    def disp(self):
        self.ui.textBrowser.clear()
        if self.grammar == [] or self.changed:
            self.read_input()

        if self.grammar != []:
            for prod in self.grammar:
                s =  prod[0]+ ' -> ' + prod[1]+'\n'
                self.ui.textBrowser.append(s)
            self.ui.textBrowser.append("\nNon Terminals : "+' '.join(self.non_term)+"\nTerminals : "+' '.join(self.term))
        

    def disp_first(self):
        if self.first == {} or self.changed:
            self.read_input()
        if self.first != {}:
            self.ui.textBrowser.clear()
            for nonterm in self.non_term:
                self.ui.textBrowser.append('First('+nonterm+') : '+' '.join(self.first[nonterm])+'\n')


    def disp_lr1_states(self):
        if self.states == [] or self.changed:
            self.read_input()
        if self.states != []:
            self.ui.textBrowser.clear()
            self.ui.textBrowser.append("Number of LR(1) states : "+ str(self.states[len(self.states)-1].state_num + 1))
            for state in self.states:
                self.ui.textBrowser.append('----------------------------------------------------------------')
                if state.state_num == 0:
                    self.ui.textBrowser.append("\nI"+str(state.state_num)+' : '+'\n')
                else:
                    self.ui.textBrowser.append("\nI"+str(state.state_num)+' : '+' goto ( I'+str(state.parent[0])+" -> '"+ str(state.parent[1]) +"' )\n")
                for item in state.state:
                    self.ui.textBrowser.append(item[0]+ ' -> ' + item[1]+' ,  [ '+ ' '.join(item[2])+' ]')
                if state.actions != {}:
                    self.ui.textBrowser.append('\nActions : ')
                    for k,v in state.actions.items():
                        self.ui.textBrowser.insertPlainText(str(k)+' -> '+str(abs(v))+'\t')



    def disp_lalr_states(self):
        if self.lalr_states == [] or self.changed:
            self.read_input()
        if self.lalr_states != []:
            self.ui.textBrowser.clear()
            self.ui.textBrowser.append("Number of LALR states : " + str(lalrState.state_count))
            for state in self.lalr_states:
                self.ui.textBrowser.append('----------------------------------------------------------------')
                if state.state_num == 0:
                    self.ui.textBrowser.append("\nI"+str(state.state_num)+' : '+'\tGot by -> '+str(state.parent_list)+'\n')
                else:
                    self.ui.textBrowser.append("\nI"+str(state.state_num)+' : '+' goto ( I'+str(state.parent[0])+" -> '"+ str(state.parent[1]) +"' )"+'\tGot by -> '+str(state.parent_list)+'\n')
                for item in state.state:
                    self.ui.textBrowser.append(item[0]+ ' -> ' + item[1]+' ,   [ '+ ' '.join(item[2])+' ]')
                if state.actions != {}:
                    self.ui.textBrowser.append('\nActions : ')
                    for k,v in state.actions.items():
                        self.ui.textBrowser.insertPlainText(str(k)+' -> '+str(abs(v))+'\t')



    def disp_parse_table(self):
        if self.grammar == [] or self.changed:
            self.read_input()

        if self.grammar != []:
            self.ui.textBrowser.clear()
            all_symb = []
            all_symb.extend(self.term)
            all_symb.append('$')
            all_symb.extend(self.non_term)
            if 'e' in all_symb:
                all_symb.remove('e')

            head = '{0:12}'.format(' ')
            for X in all_symb:
                head = head + '{0:12}'.format(X)
            self.ui.textBrowser.setText(head+'\n')
            s = '------------'*len(all_symb)
            self.ui.textBrowser.append(s)

            for index, state in enumerate(self.parse_table):
                line = '{0:<12}'.format(index)
                for X in all_symb:
                    if X in state.keys():
                        if X in self.non_term:
                            action = state[X]
                        else:
                            if state[X] > 0:
                                action = 's' + str(state[X])
                            elif state[X] < 0:
                                action = 'r' + str(abs(state[X]))
                            elif state[X] == 0:
                                action = 'accept'
                        
                        line = line + '{0:<12}'.format(action)
                    else:
                        line = line + '{0:<12}'.format("")
    
                self.ui.textBrowser.append(line)
                self.ui.textBrowser.append(s)


    def disp_parsing(self):
        if self.grammar == [] or self.changed:
            self.read_input()
        if self.grammar != []:
            self.ui.textBrowser.clear()
            line_input = self.ui.lineEdit.text()
            self.parse(self.parse_table, self.augment_grammar, line_input)



    def parse(self,parse_table,augment_grammar,inpt):
        inpt = list(inpt+'$')
        stack = [0]
        a = inpt[0]
        try:
            head = '{0:40} {1:40} {2:40}'.format("Stack","Input", "Actions")
            self.ui.textBrowser.setText(head)
            while True:
                string = '\n{0:<40} {1:<40} '.format(stack, ''.join(inpt))
                s = stack[len(stack)-1]
                action = parse_table[s][a]
                if action > 0:
                    inpt.pop(0)
                    stack.append(action)
                    self.ui.textBrowser.append(string + 'Shift ' + a+ '\n')
                    a = inpt[0]
                elif action < 0:
                    prod = augment_grammar[-action]
                    if prod[1] != 'e':
                        for i in prod[1]:
                            stack.pop()
                    t = stack[len(stack)-1]
                    stack.append(parse_table[t][prod[0]])
                    self.ui.textBrowser.append(string + 'Reduce ' + prod[0] + ' -> '+ prod[1] + '\n')
                elif action == 0:
                    self.ui.textBrowser.append('ACCEPT\n')
                    break
        except KeyError:
            self.ui.textBrowser.append('\n\nERROR\n')


    def exit_app(self):
        QtGui.QApplication.quit()
        
    def disp_author(self):
        QtGui.QMessageBox.information(self, "About", "LALR PARSER\n\nAuthor:\n  Akshay Hebbar Y S\t", QtGui.QMessageBox.Ok)