class WindowUI(object):
    def __init__(self, main_window):
        # Set up the base UI elements
        if not main_window.objectName():
            main_window.setObjectName("MainWindow")
        main_window.resize(self.width, self.height)

        self.base_widget = QWidget(main_window)
        self.base_widget.setObjectName("base_widget")
        self.base_layout = QVBoxLayout()

        # Set up the main UI elements
        self.rocket_status = RocketStatusUI(self.base_layout)
        self.tab_widget = TabUI(left=0,
                                top=self.height // 5,
                                width=self.width,
                                height=math.floor(self.height * 0.5),
                                main_ui=self)
        self.base_layout.addWidget(self.tab_widget)
        self.set_up_bars(main_window)

        main_window.setWindowTitle("Red Kite Avionics Ground Station")
        main_window.setCentralWidget(self.base_widget)

        QMetaObject.connectSlotsByName(main_window)

        self.base_widget.setLayout(self.base_layout)

    def set_up_bars(self, main_window):
        self.status_bar = QStatusBar(main_window)
        self.status_bar.setObjectName("statusbar")
        main_window.setStatusBar(self.status_bar)
        self.menu_bar = QMenuBar(main_window)
        self.menu_bar.setObjectName("menubar")
        self.menu_bar.setGeometry(QRect(0, 0, self.width, self.height // 10))
        main_window.setMenuBar(self.menu_bar)

    @property
    def width(self) -> int:
        return 1200

    @property
    def height(self) -> int:
        return 800
Example #2
0
class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        self.setupUi(self)

        self.player = QMediaPlayer()

        self.player.error.connect(self.erroralert)
        self.player.play()

        # Setup the playlist.
        self.playlist = QMediaPlaylist()
        self.player.setPlaylist(self.playlist)

        # Add viewer for video playback, separate floating window.
        self.viewer = ViewerWindow(self)
        self.viewer.setWindowFlags(self.viewer.windowFlags()
                                   | Qt.WindowStaysOnTopHint)
        self.viewer.setMinimumSize(QSize(480, 360))

        videoWidget = QVideoWidget()
        self.viewer.setCentralWidget(videoWidget)
        self.player.setVideoOutput(videoWidget)

        # Connect control buttons/slides for media player.
        self.playButton.pressed.connect(self.player.play)
        self.pauseButton.pressed.connect(self.player.pause)
        self.stopButton.pressed.connect(self.player.stop)
        self.volumeSlider.valueChanged.connect(self.player.setVolume)

        self.viewButton.toggled.connect(self.toggle_viewer)
        self.viewer.state.connect(self.viewButton.setChecked)

        self.previousButton.pressed.connect(self.playlist.previous)
        self.nextButton.pressed.connect(self.playlist.next)

        self.model = PlaylistModel(self.playlist)
        self.playlistView.setModel(self.model)
        self.playlist.currentIndexChanged.connect(
            self.playlist_position_changed)
        selection_model = self.playlistView.selectionModel()
        selection_model.selectionChanged.connect(
            self.playlist_selection_changed)

        self.player.durationChanged.connect(self.update_duration)
        self.player.positionChanged.connect(self.update_position)
        self.timeSlider.valueChanged.connect(self.player.setPosition)

        self.open_file_action.triggered.connect(self.open_file)

        self.setAcceptDrops(True)

        self.show()

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(484, 371)
        self.centralWidget = QWidget(MainWindow)
        sizePolicy = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.centralWidget.sizePolicy().hasHeightForWidth())
        self.centralWidget.setSizePolicy(sizePolicy)
        self.centralWidget.setObjectName("centralWidget")
        self.horizontalLayout = QHBoxLayout(self.centralWidget)
        self.horizontalLayout.setContentsMargins(11, 11, 11, 11)
        self.horizontalLayout.setSpacing(6)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.verticalLayout = QVBoxLayout()
        self.verticalLayout.setSpacing(6)
        self.verticalLayout.setObjectName("verticalLayout")
        self.playlistView = QListView(self.centralWidget)
        self.playlistView.setAcceptDrops(True)
        self.playlistView.setProperty("showDropIndicator", True)
        self.playlistView.setDragDropMode(QAbstractItemView.DropOnly)
        self.playlistView.setAlternatingRowColors(True)
        self.playlistView.setUniformItemSizes(True)
        self.playlistView.setObjectName("playlistView")
        self.verticalLayout.addWidget(self.playlistView)
        self.horizontalLayout_4 = QHBoxLayout()
        self.horizontalLayout_4.setSpacing(6)
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        self.currentTimeLabel = QLabel(self.centralWidget)
        self.currentTimeLabel.setMinimumSize(QSize(80, 0))
        self.currentTimeLabel.setAlignment(Qt.AlignRight | Qt.AlignTrailing
                                           | Qt.AlignVCenter)
        self.currentTimeLabel.setObjectName("currentTimeLabel")
        self.horizontalLayout_4.addWidget(self.currentTimeLabel)
        self.timeSlider = QSlider(self.centralWidget)
        self.timeSlider.setOrientation(Qt.Horizontal)
        self.timeSlider.setObjectName("timeSlider")
        self.horizontalLayout_4.addWidget(self.timeSlider)
        self.totalTimeLabel = QLabel(self.centralWidget)
        self.totalTimeLabel.setMinimumSize(QSize(80, 0))
        self.totalTimeLabel.setAlignment(Qt.AlignLeading | Qt.AlignLeft
                                         | Qt.AlignVCenter)
        self.totalTimeLabel.setObjectName("totalTimeLabel")
        self.horizontalLayout_4.addWidget(self.totalTimeLabel)
        self.verticalLayout.addLayout(self.horizontalLayout_4)
        self.horizontalLayout_5 = QHBoxLayout()
        self.horizontalLayout_5.setSpacing(6)
        self.horizontalLayout_5.setObjectName("horizontalLayout_5")
        self.previousButton = QPushButton(self.centralWidget)
        self.previousButton.setText("")
        icon = QIcon()
        icon.addPixmap(QPixmap("images/control-skip-180.png"), QIcon.Normal,
                       QIcon.Off)
        self.previousButton.setIcon(icon)
        self.previousButton.setObjectName("previousButton")
        self.horizontalLayout_5.addWidget(self.previousButton)
        self.playButton = QPushButton(self.centralWidget)
        self.playButton.setText("")
        icon1 = QIcon()
        icon1.addPixmap(QPixmap("images/control.png"), QIcon.Normal, QIcon.Off)
        self.playButton.setIcon(icon1)
        self.playButton.setObjectName("playButton")
        self.horizontalLayout_5.addWidget(self.playButton)
        self.pauseButton = QPushButton(self.centralWidget)
        self.pauseButton.setText("")
        icon2 = QIcon()
        icon2.addPixmap(QPixmap("images/control-pause.png"), QIcon.Normal,
                        QIcon.Off)
        self.pauseButton.setIcon(icon2)
        self.pauseButton.setObjectName("pauseButton")
        self.horizontalLayout_5.addWidget(self.pauseButton)
        self.stopButton = QPushButton(self.centralWidget)
        self.stopButton.setText("")
        icon3 = QIcon()
        icon3.addPixmap(QPixmap("images/control-stop-square.png"),
                        QIcon.Normal, QIcon.Off)
        self.stopButton.setIcon(icon3)
        self.stopButton.setObjectName("stopButton")
        self.horizontalLayout_5.addWidget(self.stopButton)
        self.nextButton = QPushButton(self.centralWidget)
        self.nextButton.setText("")
        icon4 = QIcon()
        icon4.addPixmap(QPixmap("images/control-skip.png"), QIcon.Normal,
                        QIcon.Off)
        self.nextButton.setIcon(icon4)
        self.nextButton.setObjectName("nextButton")
        self.horizontalLayout_5.addWidget(self.nextButton)
        self.viewButton = QPushButton(self.centralWidget)
        self.viewButton.setText("")
        icon5 = QIcon()
        icon5.addPixmap(QPixmap("images/application-image.png"), QIcon.Normal,
                        QIcon.Off)
        self.viewButton.setIcon(icon5)
        self.viewButton.setCheckable(True)
        self.viewButton.setObjectName("viewButton")
        self.horizontalLayout_5.addWidget(self.viewButton)
        spacerItem = QSpacerItem(40, 20, QSizePolicy.Expanding,
                                 QSizePolicy.Minimum)
        self.horizontalLayout_5.addItem(spacerItem)
        self.label = QLabel(self.centralWidget)
        self.label.setText("")
        self.label.setPixmap(QPixmap("images/speaker-volume.png"))
        self.label.setObjectName("label")
        self.horizontalLayout_5.addWidget(self.label)
        self.volumeSlider = QSlider(self.centralWidget)
        self.volumeSlider.setMaximum(100)
        self.volumeSlider.setProperty("value", 100)
        self.volumeSlider.setOrientation(Qt.Horizontal)
        self.volumeSlider.setObjectName("volumeSlider")
        self.horizontalLayout_5.addWidget(self.volumeSlider)
        self.verticalLayout.addLayout(self.horizontalLayout_5)
        self.horizontalLayout.addLayout(self.verticalLayout)
        MainWindow.setCentralWidget(self.centralWidget)
        self.menuBar = QMenuBar(MainWindow)
        self.menuBar.setGeometry(QRect(0, 0, 484, 22))
        self.menuBar.setObjectName("menuBar")
        self.menuFIle = QMenu(self.menuBar)
        self.menuFIle.setObjectName("menuFIle")
        MainWindow.setMenuBar(self.menuBar)
        self.statusBar = QStatusBar(MainWindow)
        self.statusBar.setObjectName("statusBar")
        MainWindow.setStatusBar(self.statusBar)
        self.open_file_action = QAction(MainWindow)
        self.open_file_action.setObjectName("open_file_action")
        self.menuFIle.addAction(self.open_file_action)
        self.menuBar.addAction(self.menuFIle.menuAction())

        self.retranslateUi(MainWindow)
        QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Failamp"))
        self.currentTimeLabel.setText(_translate("MainWindow", "0:00"))
        self.totalTimeLabel.setText(_translate("MainWindow", "0:00"))
        self.menuFIle.setTitle(_translate("MainWindow", "FIle"))
        self.open_file_action.setText(_translate("MainWindow", "Open file..."))

    def dragEnterEvent(self, e):
        if e.mimeData().hasUrls():
            e.acceptProposedAction()

    def dropEvent(self, e):
        for url in e.mimeData().urls():
            self.playlist.addMedia(QMediaContent(url))

        self.model.layoutChanged.emit()

        # If not playing, seeking to first of newly added + play.
        if self.player.state() != QMediaPlayer.PlayingState:
            i = self.playlist.mediaCount() - len(e.mimeData().urls())
            self.playlist.setCurrentIndex(i)
            self.player.play()

    def open_file(self):
        path, _ = QFileDialog.getOpenFileName(
            self, "Open file", "",
            "mp3 Audio (*.mp3);mp4 Video (*.mp4);Movie files (*.mov);All files (*.*)"
        )

        if path:
            self.playlist.addMedia(QMediaContent(QUrl.fromLocalFile(path)))

        self.model.layoutChanged.emit()

    def update_duration(self, duration):
        print("!", duration)
        print("?", self.player.duration())

        self.timeSlider.setMaximum(duration)

        if duration >= 0:
            self.totalTimeLabel.setText(hhmmss(duration))

    def update_position(self, position):
        if position >= 0:
            self.currentTimeLabel.setText(hhmmss(position))

        # Disable the events to prevent updating triggering a setPosition event (can cause stuttering).
        self.timeSlider.blockSignals(True)
        self.timeSlider.setValue(position)
        self.timeSlider.blockSignals(False)

    def playlist_selection_changed(self, ix):
        # We receive a QItemSelection from selectionChanged.
        i = ix.indexes()[0].row()
        self.playlist.setCurrentIndex(i)

    def playlist_position_changed(self, i):
        if i > -1:
            ix = self.model.index(i)
            self.playlistView.setCurrentIndex(ix)

    def toggle_viewer(self, state):
        if state:
            self.viewer.show()
        else:
            self.viewer.hide()

    def erroralert(self, *args):
        print(args)
Example #3
0
class EditorConfigWindow(QMainWindow):
    def __init__(self):
        super(EditorConfigWindow, self).__init__()
        self.started = False
        self.widget = QWidget()
        self.setupUi(self)

    def setupUi(self, MainWindow):

        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(1301, 755)
        self.actionGroup_Editor = QAction(MainWindow)
        self.actionGroup_Editor.setObjectName(u"actionGroup_Editor")
        self.actionClient_Editor = QAction(MainWindow)
        self.actionClient_Editor.setObjectName(u"actionClient_Editor")
        self.actionProject_Editor = QAction(MainWindow)
        self.actionProject_Editor.setObjectName(u"actionProject_Editor")
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.gridLayoutWidget = QWidget(self.centralwidget)
        self.gridLayoutWidget.setObjectName(u"gridLayoutWidget")
        self.gridLayoutWidget.setGeometry(QRect(20, 70, 1261, 621))
        self.gridLayout = QGridLayout(self.gridLayoutWidget)
        self.gridLayout.setObjectName(u"gridLayout")
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(MainWindow)
        self.menubar.setObjectName(u"menubar")
        self.menubar.setGeometry(QRect(0, 0, 1301, 20))
        self.menuFile = QMenu(self.menubar)
        self.menuFile.setObjectName(u"menuFile")
        self.menuEditors = QMenu(self.menubar)
        self.menuEditors.setObjectName(u"menuEditors")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QStatusBar(MainWindow)
        self.statusbar.setObjectName(u"statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.menubar.addAction(self.menuFile.menuAction())
        self.menubar.addAction(self.menuEditors.menuAction())
        self.menuEditors.addAction(self.actionGroup_Editor)
        self.menuEditors.addAction(self.actionClient_Editor)
        self.menuEditors.addAction(self.actionProject_Editor)
        self.show()
        # self.retranslateUi(MainWindow)

        QMetaObject.connectSlotsByName(MainWindow)

    # setupUi

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(
            QCoreApplication.translate("MainWindow", u"MainWindow", None))
        self.actionGroup_Editor.setText(
            QCoreApplication.translate("MainWindow", u"Group Editor", None))
        self.actionClient_Editor.setText(
            QCoreApplication.translate("MainWindow", u"Client Editor", None))
        self.actionProject_Editor.setText(
            QCoreApplication.translate("MainWindow", u"Project Editor", None))
        self.menuFile.setTitle(
            QCoreApplication.translate("MainWindow", u"File", None))
        self.menuEditors.setTitle(
            QCoreApplication.translate("MainWindow", u"Editors", None))
Example #4
0
class Ui_MainWindow(object):

    image_stack=[None]
    current_effect=""
    def resize(self):
        self.timer.stop()
        temp=QDialog()
        temp.ui=Ui_Dialog_Resize(self.image_stack[-1])
        temp.ui.setupUi(temp)
        temp.show()
        temp.exec_()
        self.image_stack.append(temp.ui.image)
        self.timer.start(1)
        pass

    def cropping(self):
        if type(self.image_stack[-1])==type(None):
            print("lol")
            return
        self.timer.stop()
        temp=QDialog()
        temp.ui=Ui_Dialog(self.image_stack[-1])
        temp.ui.setupUi(temp)
        temp.show()
        temp.exec_()
        self.image_stack.append(temp.ui.image)
        self.timer.start(1)
        pass

    def effectFuctions(self,effect,image,amount):
        if effect=="Brightness":
            return brightness(image, amount=amount)
        elif effect=="Saturation":
            return saturation(image, amount)
        elif effect=="Sharpen":
            return sharpness(image, amount)
        elif effect=="Sepia Effect":
            return sepia(image, amount)
        elif effect=="Warm":
            return warm(image, amount)
        elif effect == "Cold":
            return cold(image, amount)
        elif effect == "Equalize":
            return equalise(image, amount)
        elif effect== "Cartoon":
            return cartoon(image, amount)
        elif effect== "Blurring":
            return blurring(image, amount) 
        elif effect== "Pencil Sketch":
            return pencil_sketch(image, amount)
        elif effect== "Noise Reduction":
            return noise_reduction(image, amount)
        elif effect== "Negetive" :
            return negative(image, amount)
        elif effect== "Vignette":  
            return vignette(image, amount)
        elif effect== "Emboss":
            return emboss(image, amount)
        elif effect== "Redden": # lal panni
            return redden(image, amount)
        elif effect== "Greenify": # hari panni 
            return greenify(image, amount)
        elif effect== "Bloom Blue": # nili panni 
            return nili_panni(image, amount)
        elif effect== "HDR":  
            return hdr(image, amount)
        elif effect== "Yellow":  
            return yellow_panni(image, amount)


    def showFrame(self,frame):
        if type(frame)==type(None):
            self.label.setText(QCoreApplication.translate("MainWindow", u"<html><head/><body style=\"background-color:powderblue;\"><p align=\"center\">Your Image Here</p></body></html>", None))
            return
        if self.listWidget.selectedItems()!=[]:
            effect=self.listWidget.selectedItems()[0].text()
            if effect!=self.current_effect:
                print("LOL")
                self.current_effect=effect
                clearTemp()
            temp=self.effectFuctions(effect,frame.copy(),self.horizontalSlider.value())
            frame= temp if type(temp)!=type(None) else frame
        
        frame=cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
        image=qimage2ndarray.array2qimage(frame)
        self.label.setPixmap(QPixmap.fromImage(image))
        pass

    def addImage(self):
        #
        self.image_stack=[None]
        filePath,_=QFileDialog.getOpenFileName(QMainWindow(), 'Open file')
        self.image_stack.append(cv2.imread(filePath))
        pass

    def saveImage(self):
        #print("lol")
        filePath,_=QFileDialog.getSaveFileName(QMainWindow(),"Choose the save location")
        self.label.pixmap().save(filePath,"jpg",100)
        
        #self.cv2.imwrite(filePath,self.image_stack[-1])
        #pass
    
    def commit(self):
        frame=self.image_stack[-1]
        if self.listWidget.selectedItems()==[]:
            return
        effect=self.listWidget.selectedItems()[0].text()
        temp=self.effectFuctions(effect,frame,self.horizontalSlider.value())
        #frame= temp if type(temp)!=type(None) else None
        if type(frame)!=type(None):
            self.image_stack.append(temp)
        self.horizontalSlider.setValue(0)
        self.listWidget.setCurrentItem(None)

    def cancle(self):
       self.horizontalSlider.setValue(0)
       self.listWidget.setCurrentItem(None)

    def undo(self):
        if type(self.image_stack)!=type(None):
            self.image_stack.pop()

    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(1131, 555)
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.label = QLabel(self.centralwidget)
        self.label.setObjectName(u"label")
        self.label.setGeometry(QRect(10, 60, 781, 431))
        self.label.setStyleSheet(u"background-color: rgb(85, 255, 255)")
        self.label.setScaledContents(True)
        
        self.listWidget = QListWidget(self.centralwidget)
        no_of_widgets=19
        for i in range(no_of_widgets):
            QListWidgetItem(self.listWidget)
        self.listWidget.setObjectName(u"listWidget")
        self.listWidget.setGeometry(QRect(850, 160, 256, 201))

        self.horizontalSlider = QSlider(self.centralwidget)
        self.horizontalSlider.setObjectName(u"horizontalSlider")
        self.horizontalSlider.setGeometry(QRect(870, 70, 211, 22))
        self.horizontalSlider.setOrientation(Qt.Horizontal)
        #print(self.horizontalSlider.value())
        self.label_2 = QLabel(self.centralwidget)
        self.label_2.setObjectName(u"label_2")
        self.label_2.setGeometry(QRect(930, 10, 101, 51))
        self.label_2.setMinimumSize(QSize(0, 31))
        self.label_2.setScaledContents(True)
        self.label_2.setWordWrap(True)
        self.label_2.setMargin(10)
        
        # โœ… commit button
        self.pushButton = QPushButton(self.centralwidget)
        self.pushButton.setObjectName(u"pushButton")
        self.pushButton.setGeometry(QRect(892, 110, 61, 28))
        self.pushButton.clicked.connect(lambda : self.commit())

        # โŒ cancle button
        self.pushButton_2 = QPushButton(self.centralwidget)
        self.pushButton_2.setObjectName(u"pushButton_2")
        self.pushButton_2.setGeometry(QRect(990, 110, 61, 28))
        self.pushButton_2.clicked.connect(lambda : self.cancle())

        # โ†ฉ๏ธ Undo button
        self.pushButton_3 = QPushButton(self.centralwidget)
        self.pushButton_3.setObjectName(u"pushButton_3")
        self.pushButton_3.setGeometry(QRect(370, 20, 61, 28))
        self.pushButton_3.clicked.connect(lambda : self.undo())

        #crop
        self.pushButton_4 = QPushButton(self.centralwidget)
        self.pushButton_4.setObjectName(u"pushButton_4")
        self.pushButton_4.setGeometry(QRect(910, 380, 61, 28))
        self.pushButton_4.clicked.connect(self.cropping)
        
        # Resize
        self.pushButton_5 = QPushButton(self.centralwidget)
        self.pushButton_5.setObjectName(u"pushButton_5")
        self.pushButton_5.setGeometry(QRect(980, 380, 61, 28))
        self.pushButton_5.clicked.connect(self.resize)
        
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(MainWindow)
        self.menubar.setObjectName(u"menubar")

        self.menubar.setGeometry(QRect(0, 0, 1131, 26))
        self.menuNew_File = QMenu(self.menubar)
        self.menuNew_File.setObjectName(u"menuNew_File")

        #New File
        self.actionNew_File = QAction("NewFile")
        self.actionNew_File.triggered.connect(self.addImage)
        self.menuNew_File.addAction(self.actionNew_File)

        #Save File
        self.actionSave_File = QAction("SaveFile")
        self.actionSave_File.triggered.connect(self.saveImage)
        self.menuNew_File.addAction(self.actionSave_File)

        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QStatusBar(MainWindow)
        self.statusbar.setObjectName(u"statusbar")

        self.timer=QTimer()
        self.timer.timeout.connect(lambda : self.showFrame(self.image_stack[-1]) ) 
        self.timer.start(1)

        MainWindow.setStatusBar(self.statusbar)

        self.menubar.addAction(self.menuNew_File.menuAction())
        #self.menubar.addAction(self.menuSave.menuAction())

        self.retranslateUi(MainWindow)

        QMetaObject.connectSlotsByName(MainWindow)
    # setupUi

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
        self.label.setText(QCoreApplication.translate("MainWindow", u"<html><head/><body style=\"background-color:powderblue;\"><p align=\"center\">Your Image Here</p></body></html>", None))

        __sortingEnabled = self.listWidget.isSortingEnabled()
        self.listWidget.setSortingEnabled(False)
        ___qlistwidgetitem = self.listWidget.item(0)
        ___qlistwidgetitem.setText(QCoreApplication.translate("MainWindow", u"Brightness", None));
        ___qlistwidgetitem1 = self.listWidget.item(1)
        ___qlistwidgetitem1.setText(QCoreApplication.translate("MainWindow", u"Saturation", None));
        ___qlistwidgetitem2 = self.listWidget.item(2)
        ___qlistwidgetitem2.setText(QCoreApplication.translate("MainWindow", u"Sharpen", None));
        ___qlistwidgetitem3 = self.listWidget.item(3)
        ___qlistwidgetitem3.setText(QCoreApplication.translate("MainWindow", u"Sepia Effect", None));
        ___qlistwidgetitem4 = self.listWidget.item(4)
        ___qlistwidgetitem4.setText(QCoreApplication.translate("MainWindow", u"Warm", None));
        ___qlistwidgetitem5 = self.listWidget.item(5)
        ___qlistwidgetitem5.setText(QCoreApplication.translate("MainWindow", u"Cold", None));
        ___qlistwidgetitem6 = self.listWidget.item(6)
        ___qlistwidgetitem6.setText(QCoreApplication.translate("MainWindow", u"Equalize", None));
        ___qlistwidgetitem7 = self.listWidget.item(7)
        ___qlistwidgetitem7.setText(QCoreApplication.translate("MainWindow", u"Cartoon", None));
        ___qlistwidgetitem8 = self.listWidget.item(8)
        ___qlistwidgetitem8.setText(QCoreApplication.translate("MainWindow", u"Blurring", None)); 
        ___qlistwidgetitem9 = self.listWidget.item(9)
        ___qlistwidgetitem9.setText(QCoreApplication.translate("MainWindow", u"Pencil Sketch", None)); 
        ___qlistwidgetitem10 = self.listWidget.item(10)
        ___qlistwidgetitem10.setText(QCoreApplication.translate("MainWindow", u"Noise Reduction", None));
        ___qlistwidgetitem11 = self.listWidget.item(11)
        ___qlistwidgetitem11.setText(QCoreApplication.translate("MainWindow", u"Negetive", None));
        ___qlistwidgetitem12 = self.listWidget.item(12)
        ___qlistwidgetitem12.setText(QCoreApplication.translate("MainWindow", u"Vignette", None));  #"Redden" "Greenify" "Bloom Blue" "HDR" "Bass"
        ___qlistwidgetitem13 = self.listWidget.item(13)
        ___qlistwidgetitem13.setText(QCoreApplication.translate("MainWindow", u"Emboss", None)); 
        ___qlistwidgetitem14 = self.listWidget.item(14)
        ___qlistwidgetitem14.setText(QCoreApplication.translate("MainWindow", u"Redden", None));
        ___qlistwidgetitem15 = self.listWidget.item(15)
        ___qlistwidgetitem15.setText(QCoreApplication.translate("MainWindow", u"Greenify", None));
        ___qlistwidgetitem16 = self.listWidget.item(16)
        ___qlistwidgetitem16.setText(QCoreApplication.translate("MainWindow", u"Bloom Blue", None));
        ___qlistwidgetitem17 = self.listWidget.item(17)
        ___qlistwidgetitem17.setText(QCoreApplication.translate("MainWindow", u"HDR", None));
        ___qlistwidgetitem18 = self.listWidget.item(18)
        ___qlistwidgetitem18.setText(QCoreApplication.translate("MainWindow", u"Yellow", None));
        self.listWidget.setSortingEnabled(__sortingEnabled)

        self.label_2.setText(QCoreApplication.translate("MainWindow", u"<html><head/><body><p><span style=\" font-size:11pt;\">Amount%</span></p></body></html>", None))
        self.pushButton.setText(QCoreApplication.translate("MainWindow", u"\u2705 ", None))
        self.pushButton_2.setText(QCoreApplication.translate("MainWindow", u"\u274c", None))
        self.pushButton_3.setText(QCoreApplication.translate("MainWindow", u"\u21a9\ufe0f", None))
        self.pushButton_4.setText(QCoreApplication.translate("MainWindow", u"Crop", None))
        self.pushButton_5.setText(QCoreApplication.translate("MainWindow", u"Resize", None))
        self.menuNew_File.setTitle(QCoreApplication.translate("MainWindow", u"File", None))
Example #5
0
class Ui_Main_Window():

    def Show_Data(self):
        self.conn = sqlite3.connect("cv.db")
        self.query =('SELECT * FROM user')
        self.result = self.conn.execute(self.query)
        self.listWidget.setRowCount(0)
        self.listWidget.setColumnWidth( 1, 200)
        self.listWidget.setColumnWidth( 2, 200)
        self.listWidget.setColumnWidth( 3, 200)

        for self.row_num,self.row_data in enumerate(self.result):
            self.listWidget.insertRow(self.row_num)

            for self.col_num,self.data in enumerate(self.row_data):
                self.listWidget.setItem(self.row_num,self.col_num,QTableWidgetItem(str(self.data)))


    def setupUi(self, Main_Window):

        def about_fn():
            about_msgbox = QMessageBox()
            about_msgbox.setWindowTitle("About")
            about_msgbox.setIcon(QMessageBox.Information)
            about_msgbox.setText(f"CV Collector {settings.version}")
            about_msgbox.setInformativeText(f'''
CV Collector is an app that lets you store your CVs in a secure and lightweight sqlite3 database.
{settings.special_text}.
            ''')
            about_msgbox.setStandardButtons(QMessageBox.Close)
            about_msgbox.exec_()
        font1 = QFont("Roboto", 20)
        font2 = QFont("Roboto", 16)
        Main_Window.setObjectName("Main_Window")
        Main_Window.resize(700, 535)
        Main_Window.setFixedSize(Main_Window.size())
        self.centralwidget = QWidget(Main_Window)
        self.centralwidget.setObjectName("centralwidget")
        self.search = QLineEdit(self.centralwidget)
        self.search.setGeometry(QRect(60, 30, 460, 50))
        self.search.setFont(font1)
        self.search.setPlaceholderText("Search..")

        menuBar = QMenuBar(self.centralwidget)
        Help = menuBar.addMenu("Help")
        About = Help.addAction("About")
        About.triggered.connect(about_fn)
        self.addBtn = QPushButton(self.centralwidget)
        self.addBtn.setGeometry(QRect(20, 90, 191, 41))
        self.addBtn.setObjectName("addBtn")
        self.deleteBtn = QPushButton(self.centralwidget)
        self.deleteBtn.setGeometry(QRect(245, 90, 191, 41))
        self.deleteBtn.setObjectName("deleteBtn")
        self.showBtn = QPushButton(self.centralwidget)
        self.showBtn.setGeometry(QRect(470, 90, 191, 41))
        self.showBtn.setObjectName("showBtn")
        self.listWidget = QTableWidget(self.centralwidget)
        self.listWidget.setGeometry(QRect(20, 150, 661, 350))
        self.listWidget.setRowCount(20)
        self.listWidget.setColumnCount(4)
        self.listWidget.setObjectName("listWidget")
        self.listWidget.hideColumn(0)
        horizontal_names = ('hidden', 'CV Name', 'CV Filename', 'Date')
        self.listWidget.setHorizontalHeaderLabels(horizontal_names)
        self.listWidget.setColumnWidth( 1, 200)
        self.listWidget.setColumnWidth( 2, 200)
        self.listWidget.setColumnWidth( 3, 200)
        self.listWidget.setFont(font2)

        def initialize():
            self.Show_Data()
        initialize()

        def search_fn():
            columnOfInterest = 1
            valueOfInterest = self.search.text()
            for rowIndex in range(self.listWidget.rowCount()):
                item = self.listWidget.item(rowIndex, columnOfInterest)
                if self.search.text() in item.text():
                    self.listWidget.setRowHidden(rowIndex, False)
                else:
                    self.listWidget.setRowHidden(rowIndex, True)


        self.searchBtn = QPushButton(self.centralwidget)
        self.searchBtn.setGeometry(QRect(530, 30, 100, 50))
        self.searchBtn.setObjectName("addBtn")
        self.searchBtn.clicked.connect(search_fn)

        Main_Window.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(Main_Window)
        self.menubar.setGeometry(QRect(0, 0, 723, 22))
        self.menubar.setObjectName("menubar")
        Main_Window.setMenuBar(self.menubar)
        self.statusbar = QStatusBar(Main_Window)
        self.statusbar.setObjectName("statusbar")
        Main_Window.setStatusBar(self.statusbar)

        self.retranslateUi(Main_Window)
        QMetaObject.connectSlotsByName(Main_Window)
        self.showBtn.clicked.connect(self.Show_Data)

        self.addBtn.clicked.connect(self.Add)
        self.deleteBtn.clicked.connect(self.Delete)

    def retranslateUi(self, Main_Window):
        _translate = QCoreApplication.translate
        Main_Window.setWindowTitle(_translate("Main_Window", "CV Collector"))
        self.addBtn.setText(_translate("Main_Window", "Add CV"))
        self.deleteBtn.setText(_translate("Main_Window", "Delete CV"))
        self.showBtn.setText(_translate("Main_Window", "Update List"))
        self.searchBtn.setText(_translate("Main_Window", "search"))

    def Add(self):
        self.Add_Window = QMainWindow()
        self.Add_Window_Ui = add.Ui_Add_Window()
        self.Add_Window_Ui.setupUi(self.Add_Window)
        self.Add_Window.show()

    def Delete(self):
        self.Delete_Window = QMainWindow()
        self.Delete_Window_Ui = delete.Ui_Delete_Window()
        self.Delete_Window_Ui.setupUi(self.Delete_Window)
        self.Delete_Window.show()
Example #6
0
class Ui_Delete_Window(object):
    def Show_Data(self):

        self.conn = sqlite3.connect("cv.db")
        self.query = ('SELECT * FROM user')
        self.result = self.conn.execute(self.query)

        for self.row_num, self.row_data in enumerate(self.result):
            self.tableWidget.insertRow(self.row_num)
            for self.col_num, self.data in enumerate(self.row_data):
                self.tableWidget.setItem(self.row_num, self.col_num,
                                         QTableWidgetItem(str(self.data)))

    def setupUi(self, Delete_Window):
        font2 = QFont("Roboto", 16)
        Delete_Window.setObjectName("Delete_Window")
        Delete_Window.resize(685, 500)
        Delete_Window.setFixedSize(Delete_Window.size())
        self.centralwidget = QWidget(Delete_Window)
        self.centralwidget.setObjectName("centralwidget")
        self.tableWidget = QTableWidget(self.centralwidget)
        self.tableWidget.setGeometry(QRect(10, 20, 661, 181))
        self.tableWidget.setRowCount(10)
        self.tableWidget.setColumnCount(4)
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setRowCount(0)
        self.tableWidget.setColumnCount(4)
        self.tableWidget.setObjectName("listWidget")
        self.tableWidget.hideColumn(0)
        self.tableWidget.setColumnWidth(1, 200)
        self.tableWidget.setColumnWidth(2, 200)
        self.tableWidget.setColumnWidth(3, 200)

        horizontal_names = ('hidden', 'CV Name', 'CV Filename', 'Date')
        self.tableWidget.setHorizontalHeaderLabels(horizontal_names)
        self.tableWidget.setFont(font2)
        self.numberEdit = QLineEdit(self.centralwidget)
        self.numberEdit.setGeometry(QRect(20, 240, 651, 41))
        self.numberEdit.setObjectName("numberEdit")
        self.deleteBtn = QPushButton(self.centralwidget)
        self.deleteBtn.setGeometry(QRect(20, 300, 651, 51))
        self.deleteBtn.setObjectName("deleteBtn")
        self.delete_allBtn = QPushButton(self.centralwidget)
        self.delete_allBtn.setGeometry(QRect(20, 420, 651, 51))
        self.delete_allBtn.setObjectName("delete_allBtn")
        self.delete_allBtn.clicked.connect(self.Delete_All)
        self.delete_allBtn.setStyleSheet("background-color: red; color: white")
        Delete_Window.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(Delete_Window)
        self.menubar.setGeometry(QRect(0, 0, 685, 22))
        self.menubar.setObjectName("menubar")
        Delete_Window.setMenuBar(self.menubar)
        self.statusbar = QStatusBar(Delete_Window)
        self.statusbar.setObjectName("statusbar")
        Delete_Window.setStatusBar(self.statusbar)

        self.retranslateUi(Delete_Window)
        QMetaObject.connectSlotsByName(Delete_Window)

        self.Show_Data()

        self.deleteBtn.clicked.connect(self.Delete)

    def retranslateUi(self, Delete_Window):
        _translate = QCoreApplication.translate
        Delete_Window.setWindowTitle(_translate("Delete_Window", "Delete"))
        self.numberEdit.setPlaceholderText(
            _translate("Delete_Window",
                       "Enter the number of an entry you want to delete."))
        self.deleteBtn.setText(_translate("Delete_Window", "Delete"))
        self.delete_allBtn.setText(_translate("Delete_Window", "Delete All"))

    def Delete(self):
        self.number = int(self.numberEdit.text())
        deleted_msgbox = QMessageBox()
        deleted_msgbox.setIcon(QMessageBox.Information)
        #deleted_msgbox.setWindowTitle("")
        deleted_msgbox.setText(f"You're about to delete entry {self.number}")
        deleted_msgbox.setInformativeText(
            "You can't reverse this, are you sure you want to proceed?")
        deleted_msgbox.setStandardButtons(QMessageBox.Yes | QMessageBox.Cancel)
        result = deleted_msgbox.exec_()
        if result == QMessageBox.Yes:
            self.conn = sqlite3.connect("cv.db")
            self.cur = self.conn.cursor()
            self.query = ('DELETE FROM user WHERE id = "%s"' % self.number)
            self.cur.execute(self.query)
            self.conn.commit()

    def Delete_All(self):
        deleted_all_msgbox = QMessageBox()
        deleted_all_msgbox.setIcon(QMessageBox.Information)
        deleted_all_msgbox.setWindowTitle("Caution")
        deleted_all_msgbox.setText(
            "You're about to delete All of your entries.")
        deleted_all_msgbox.setInformativeText(
            "You can't reverse this, are you sure you want to proceed?")
        deleted_all_msgbox.setStandardButtons(QMessageBox.Yes
                                              | QMessageBox.Cancel)
        result = deleted_all_msgbox.exec_()
        if result == QMessageBox.Yes:
            self.conn = sqlite3.connect("cv.db")
            self.cur = self.conn.cursor()
            self.cur.execute('DELETE FROM user', )
            self.conn.commit()
            print("all deleted.")
Example #7
0
class Ui_MainWindow(object):
    def __init__(self):
        self.file_name = ""
        self.threadpool = QThreadPool()
        self.num_of_co = 1000
        self.alpha = 0.1
        self.watermarker = None

    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(1024, 768)
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.verticalLayoutWidget_2 = QWidget(self.centralwidget)
        self.verticalLayoutWidget_2.setObjectName(u"verticalLayoutWidget_2")
        self.verticalLayoutWidget_2.setGeometry(QRect(0, 0, 1021, 511))
        self.pictureLayout = QVBoxLayout(self.verticalLayoutWidget_2)
        self.pictureLayout.setObjectName(u"pictureLayout")
        self.pictureLayout.setContentsMargins(0, 0, 0, 0)
        self.picture_label = QLabel(self.verticalLayoutWidget_2)
        self.picture_label.setObjectName(u"picture_label")

        self.pictureLayout.addWidget(self.picture_label)

        self.picture_button = QPushButton(self.verticalLayoutWidget_2)
        self.picture_button.setObjectName(u"picture_button")

        self.pictureLayout.addWidget(self.picture_button)

        self.horizontalLayoutWidget = QWidget(self.centralwidget)
        self.horizontalLayoutWidget.setObjectName(u"horizontalLayoutWidget")
        self.horizontalLayoutWidget.setGeometry(QRect(10, 520, 1011, 120))
        self.horizontalLayout_2 = QHBoxLayout(self.horizontalLayoutWidget)
        self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
        self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_3 = QVBoxLayout()
        self.verticalLayout_3.setObjectName(u"verticalLayout_3")
        self.label_2 = QLabel(self.horizontalLayoutWidget)
        self.label_2.setObjectName(u"label_2")

        self.verticalLayout_3.addWidget(self.label_2)

        self.DCT_encode = QPushButton(self.horizontalLayoutWidget)
        self.DCT_encode.setObjectName(u"DCT_encode")

        self.verticalLayout_3.addWidget(self.DCT_encode)

        self.DCT_decode = QPushButton(self.horizontalLayoutWidget)
        self.DCT_decode.setObjectName(u"DCT_decode")

        self.verticalLayout_3.addWidget(self.DCT_decode)

        self.label_4 = QLabel(self.horizontalLayoutWidget)
        self.label_4.setObjectName(u"label_4")

        self.verticalLayout_3.addWidget(self.label_4)

        self.DCT_masg = QLineEdit(self.horizontalLayoutWidget)
        self.DCT_masg.setObjectName(u"DCT_masg")

        self.verticalLayout_3.addWidget(self.DCT_masg)

        self.horizontalLayout_2.addLayout(self.verticalLayout_3)

        self.verticalLayout = QVBoxLayout()
        self.verticalLayout.setObjectName(u"verticalLayout")
        self.label_3 = QLabel(self.horizontalLayoutWidget)
        self.label_3.setObjectName(u"label_3")

        self.verticalLayout.addWidget(self.label_3)

        self.LSB_encode = QPushButton(self.horizontalLayoutWidget)
        self.LSB_encode.setObjectName(u"LSB_encode")

        self.verticalLayout.addWidget(self.LSB_encode)

        self.LSB_decode = QPushButton(self.horizontalLayoutWidget)
        self.LSB_decode.setObjectName(u"LSB_decode")

        self.verticalLayout.addWidget(self.LSB_decode)

        self.lsb_encode_msg = QLabel(self.horizontalLayoutWidget)
        self.lsb_encode_msg.setObjectName(u"lsb_encode_msg")

        self.verticalLayout.addWidget(self.lsb_encode_msg)

        self.LSB_msg = QLineEdit(self.horizontalLayoutWidget)
        self.LSB_msg.setObjectName(u"LSB_msg")

        self.verticalLayout.addWidget(self.LSB_msg)

        self.horizontalLayout_2.addLayout(self.verticalLayout)

        self.verticalLayoutWidget_3 = QWidget(self.centralwidget)
        self.verticalLayoutWidget_3.setObjectName(u"verticalLayoutWidget_3")
        self.verticalLayoutWidget_3.setGeometry(QRect(20, 650, 981, 51))
        self.verticalLayout_2 = QVBoxLayout(self.verticalLayoutWidget_3)
        self.verticalLayout_2.setObjectName(u"verticalLayout_2")
        self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.label_6 = QLabel(self.verticalLayoutWidget_3)
        self.label_6.setObjectName(u"label_6")

        self.verticalLayout_2.addWidget(self.label_6)

        self.progressBar = QProgressBar(self.verticalLayoutWidget_3)
        self.progressBar.setObjectName(u"progressBar")
        self.progressBar.setValue(0)

        self.verticalLayout_2.addWidget(self.progressBar)

        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(MainWindow)
        self.menubar.setObjectName(u"menubar")
        self.menubar.setGeometry(QRect(0, 0, 1024, 21))
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QStatusBar(MainWindow)
        self.statusbar.setObjectName(u"statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        # bind functions
        self.picture_button.clicked.connect(self.open_file)
        self.LSB_encode.clicked.connect(self.call_lsb_encode)
        self.LSB_decode.clicked.connect(self.call_lsb_decode)
        self.DCT_encode.clicked.connect(self.call_dct_encode)
        self.DCT_decode.clicked.connect(self.call_dct_decode)
        # end bind functions()
        self.hide_progress_bar()
        self.disable_Methods(True)

        QMetaObject.connectSlotsByName(MainWindow)

    # setupUi

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(
            QCoreApplication.translate("MainWindow", u"Watermarking tool",
                                       None))
        # self.picture_label.setText(QCoreApplication.translate("MainWindow", u"TextLabel", None))
        self.picture_button.setText(
            QCoreApplication.translate("MainWindow", u"Select picture", None))
        self.label_2.setText(
            QCoreApplication.translate("MainWindow", u"DCT", None))
        self.DCT_encode.setText(
            QCoreApplication.translate("MainWindow", u"encode", None))
        self.DCT_decode.setText(
            QCoreApplication.translate("MainWindow", u"decode", None))
        self.label_4.setText(
            QCoreApplication.translate("MainWindow", u"coeficient:", None))
        self.DCT_masg.setText(
            QCoreApplication.translate("MainWindow", u"1000, 0.1", None))
        self.label_3.setText(
            QCoreApplication.translate("MainWindow", u"LSB", None))
        self.LSB_encode.setText(
            QCoreApplication.translate("MainWindow", u"encode", None))
        self.LSB_decode.setText(
            QCoreApplication.translate("MainWindow", u"decode", None))
        self.lsb_encode_msg.setText(
            QCoreApplication.translate("MainWindow", u"LSB msg:", None))
        self.LSB_msg.setText(
            QCoreApplication.translate("MainWindow", u"secret", None))
        self.label_6.setText(
            QCoreApplication.translate("MainWindow", u"Work in progress:",
                                       None))

    # retranslateUi

    # def bindFunctions(self):

    def load_picture(self):
        pixmap = QPixmap(self.file_name[0])
        if pixmap.width() > pixmap.height():
            self.picture_label.setPixmap(
                pixmap.scaledToWidth(self.picture_label.width()))
        else:
            self.picture_label.setPixmap(
                pixmap.scaledToHeight(self.picture_label.height()))

    def open_file(self):
        self.hide_progress_bar()
        self.file_name = QFileDialog.getOpenFileName(
            None, "Open Image", "", "Image Files (*.png *.jpg *.bmp)")
        self.load_picture()
        self.disable_Methods(False)

    def method_LSB_encode(self, progress_callback):
        self.disable_Methods(True)
        progress_callback.emit(10)
        msg = self.LSB_msg.text()
        image = cv2.imread(self.file_name[0])
        watermarker = LSBWatermarker(image=image,
                                     mode='encode-message',
                                     message=msg,
                                     filename='result.png')
        progress_callback.emit(50)
        self.file_name = ["result.png", ""]
        watermarker.run()
        progress_callback.emit(90)
        self.load_picture()
        self.disable_Methods(False)
        progress_callback.emit(100)

    def method_LSB_decode(self, progress_callback):
        self.disable_Methods(True)
        self.LSB_msg.setText("")
        progress_callback.emit(10)
        image = cv2.imread(self.file_name[0])
        watermarker = LSBWatermarker(image=image, mode='decode-message')
        progress_callback.emit(50)
        watermarker.run()
        self.disable_Methods(False)
        progress_callback.emit(90)
        # self.show_decoded_msg(watermarker.decoded_msg)
        if watermarker.decoded_msg == "Provided file has no message encoded!":
            self.LSB_msg.setText(watermarker.decoded_msg)
        else:
            self.LSB_msg.setText("Decoded: " + watermarker.decoded_msg)
        progress_callback.emit(100)

    def method_DCT_encode(self, progress_callback):
        self.disable_Methods(True)
        progress_callback.emit(10)
        msg = self.DCT_masg.text().split(",")
        try:
            self.num_of_co = int(msg[0])
            self.alpha = float(msg[1])
            self.watermarker = WatermarkDCT(self.file_name[0],
                                            num_of_co=self.num_of_co,
                                            alpha=self.alpha)
            progress_callback.emit(50)
            self.watermarker.encode_watermark()
            self.file_name = ["result_DCT.png", ""]
            self.DCT_masg.setText("Picture is watermarked?:" +
                                  str(self.watermarker.detect_watermark()))

        except Exception as e:
            print(e)
            self.DCT_masg.setText("Error: wrong parameters: example 1000, 0.1")
        finally:
            progress_callback.emit(90)

            self.load_picture()
            self.disable_Methods(False)
            progress_callback.emit(100)

    def method_DCT_decode(self, progress_callback):
        self.disable_Methods(True)
        progress_callback.emit(10)
        try:
            if self.watermarker is None:
                self.watermarker = WatermarkDCT(self.file_name[0],
                                                num_of_co=self.num_of_co,
                                                alpha=self.alpha)
            progress_callback.emit(50)
            self.DCT_masg.setText(
                "Picture is watermarked?:" +
                str(self.watermarker.detect_watermark(self.file_name[0])))
        except Exception as e:
            print(e)
            self.DCT_masg.setText("Error: Unable to check the picture.")
        finally:
            progress_callback.emit(90)

            self.load_picture()
            self.disable_Methods(False)
            progress_callback.emit(100)

    def show_decoded_msg(self, msg):
        msgBox = QMessageBox()
        msgBox.setWindowTitle("Decoded message:")
        msgBox.setText(msg)
        msgBox.exec_()

    def thread_complete(self):
        print("THREAD COMPLETE!")

    def progress_fn(self, n):
        self.progressBar.setValue(n)

    def print_output(self, s):
        print(s)

    def call_lsb_encode(self):
        self.show_progress_bar()
        self.call_function(self.method_LSB_encode)

    def call_lsb_decode(self):
        self.show_progress_bar()
        self.call_function(self.method_LSB_decode)

    def call_dct_encode(self):
        self.show_progress_bar()
        self.call_function(self.method_DCT_encode)

    def call_dct_decode(self):
        self.show_progress_bar()
        self.call_function(self.method_DCT_decode)

    def call_function(self, fn):
        worker = Worker(
            fn)  # Any other args, kwargs are passed to the run function
        worker.signals.result.connect(self.print_output)
        worker.signals.finished.connect(self.thread_complete)
        worker.signals.progress.connect(self.progress_fn)

        # Execute
        self.threadpool.start(worker)

    def hide_progress_bar(self):
        self.progressBar.setValue(0)
        self.progressBar.setVisible(False)
        self.label_6.setVisible(False)

    def show_progress_bar(self):
        self.progressBar.setValue(0)
        self.progressBar.setVisible(True)
        self.label_6.setVisible(True)

    def disable_Methods(self, disable):
        self.LSB_encode.setDisabled(disable)
        self.LSB_decode.setDisabled(disable)
        self.DCT_decode.setDisabled(disable)
        self.DCT_encode.setDisabled(disable)
Example #8
0
class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        self.setupUi(self)

        self.translator = Translator()

        self.destTextEdit.setReadOnly(True)

        if GOOGLE_TRANSLATE_AVAILABLE:
            self.srcLanguage.addItems(tuple(LANGUAGES.keys()))
            self.srcLanguage.currentTextChanged[str].connect(
                self.update_src_language)
            self.srcLanguage.setCurrentText('English')
        else:
            self.srcLanguage.hide()

        self.translateButton.pressed.connect(self.translate)

        self.show()

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(721, 333)
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalLayout = QHBoxLayout(self.centralwidget)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.verticalLayout = QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.srcLanguage = QComboBox(self.centralwidget)
        self.srcLanguage.setObjectName("srcLanguage")
        self.verticalLayout.addWidget(self.srcLanguage)
        self.srcTextEdit = QTextEdit(self.centralwidget)
        self.srcTextEdit.setObjectName("srcTextEdit")
        self.verticalLayout.addWidget(self.srcTextEdit)
        self.horizontalLayout.addLayout(self.verticalLayout)
        self.verticalLayout_3 = QVBoxLayout()
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.translateButton = QPushButton(self.centralwidget)
        self.translateButton.setMinimumSize(QSize(75, 50))
        self.translateButton.setMaximumSize(QSize(75, 50))
        self.translateButton.setText("")
        icon = QIcon()
        icon.addPixmap(QPixmap("images/flag.png"), QIcon.Normal, QIcon.Off)
        self.translateButton.setIcon(icon)
        self.translateButton.setIconSize(QSize(75, 50))
        self.translateButton.setObjectName("translateButton")
        self.verticalLayout_3.addWidget(self.translateButton)
        self.horizontalLayout.addLayout(self.verticalLayout_3)
        self.verticalLayout_2 = QVBoxLayout()
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.destTextEdit = QTextEdit(self.centralwidget)
        self.destTextEdit.setObjectName("destTextEdit")
        self.verticalLayout_2.addWidget(self.destTextEdit)
        self.horizontalLayout.addLayout(self.verticalLayout_2)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(MainWindow)
        self.menubar.setGeometry(QRect(0, 0, 721, 22))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)

        self.retranslateUi(MainWindow)
        QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Translataarrr"))
        self.translateButton.setToolTip(_translate("MainWindow", "Translate"))

    def update_src_language(self, l):
        self.language_src = LANGUAGES[l]

    def google_translate(self, text):
        params = dict(dest='en', text=text)

        if self.language_src:
            params['src'] = self.language_src

        try:
            tr = self.translator.translate(**params)

        except Exception:
            self.destTextEdit.setPlainText(
                'Google translate error :(. Try translating from English')
            return False

        else:
            return tr.text

    def translate(self):
        # Perform pre-translation to English via Google Translate.
        if self.language_src != 'en':
            text = self.google_translate(self.srcTextEdit.toPlainText())
            if not text:
                return False

        # Already in English.
        else:
            text = self.srcTextEdit.toPlainText()

        # Perform translation to piraat.
        r = requests.get(
            'http://api.funtranslations.com/translate/pirate.json?%s' %
            parse.urlencode({'text': text}))

        data = json.loads(r.text)
        if 'error' in data:
            self.destTextEdit.setPlainText("%s\n\n%s" %
                                           (data['error']['message'], text))
        else:
            self.destTextEdit.setPlainText(data['contents']['translated'])
Example #9
0
class Ui_Add_Window(object):
    def setupUi(self, Add_Window):
        Add_Window.setObjectName("Add_Window")
        Add_Window.resize(598, 276)
        Add_Window.setFixedSize(Add_Window.size())
        self.centralwidget = QWidget(Add_Window)
        self.centralwidget.setObjectName("centralwidget")
        self.addTxt = QLineEdit(self.centralwidget)
        self.addTxt.setGeometry(QRect(20, 40, 551, 51))
        self.addTxt.setObjectName("addTxt")
        self.cv_file_name = QLineEdit(self.centralwidget)
        self.cv_file_name.setGeometry(QRect(20, 120, 551, 51))
        self.cv_file_name.setObjectName("cv_file_name")
        self.cv_file_name.setPlaceholderText("Example: file.docx")
        self.addBtn = QPushButton(self.centralwidget)
        self.addBtn.setGeometry(QRect(20, 200, 551, 51))
        self.addBtn.setObjectName("addBtn")
        Add_Window.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(Add_Window)
        self.menubar.setGeometry(QRect(0, 0, 598, 22))
        self.menubar.setObjectName("menubar")
        Add_Window.setMenuBar(self.menubar)
        self.statusbar = QStatusBar(Add_Window)
        self.statusbar.setObjectName("statusbar")
        Add_Window.setStatusBar(self.statusbar)

        self.retranslateUi(Add_Window)
        QMetaObject.connectSlotsByName(Add_Window)

        self.addBtn.clicked.connect(self.Add)

    def retranslateUi(self, Add_Window):
        _translate = QCoreApplication.translate
        Add_Window.setWindowTitle(_translate("Add_Window", "Add"))
        self.addTxt.setPlaceholderText(_translate("Add_Window", "Add new CV"))
        self.addBtn.setText(_translate("Add_Window", "Add"))

    def Add(self):
        self.add_txt = self.addTxt.text()
        self.cv_filename_txt = self.cv_file_name.text()
        self.conn = sqlite3.connect('cv.db')
        self.cur = self.conn.cursor()

        # TODO: Fix the error system
        def error(error_message):
            error_msgbox = QMessageBox()
            error_msgbox.setIcon(QMessageBox.Information)
            error_msgbox.setWindowTitle("Oh no!")
            error_msgbox.setText("Error!")
            error_msgbox.setInformativeText(error_message)
            error_msgbox.setStandardButtons(QMessageBox.Close)
            error_msgbox.exec_()

        if self.add_txt == '' and self.cv_file_name == '':
            error("One or both text fields are empty.")
        if self.add_txt != '' and self.cv_file_name != '':
            if "." in self.cv_filename_txt:
                timeofcreation = datetime.now()
                self.cur.execute(
                    "INSERT INTO user (cvname, cvfilename, date) VALUES(?,?,?);",
                    (str(self.add_txt), str(
                        self.cv_filename_txt), str(timeofcreation)))
                self.conn.commit()
                added_msg = QMessageBox()
                added_msg.setIcon(QMessageBox.Information)
                added_msg.setText("Hooray!")
                added_msg.setWindowTitle("Success!")
                added_msg.setInformativeText(
                    "Your CV has been successfully added to the database.")
                added_msg.setStandardButtons(QMessageBox.Ok)
                added_msg.exec_()

            else:
                error("Add a valid filename")
Example #10
0
class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        self.setupUi(self)

        # Setup numbers.
        for n in range(0, 10):
            getattr(self, 'pushButton_n%s' % n).pressed.connect(lambda v=n: self.input_number(v))

        # Setup operations.
        self.pushButton_add.pressed.connect(lambda: self.operation(operator.add))
        self.pushButton_sub.pressed.connect(lambda: self.operation(operator.sub))
        self.pushButton_mul.pressed.connect(lambda: self.operation(operator.mul))
        self.pushButton_div.pressed.connect(lambda: self.operation(operator.truediv))  # operator.div for Python2.7

        self.pushButton_pc.pressed.connect(self.operation_pc)
        self.pushButton_eq.pressed.connect(self.equals)

        # Setup actions
        self.actionReset.triggered.connect(self.reset)
        self.pushButton_ac.pressed.connect(self.reset)

        self.actionExit.triggered.connect(self.close)

        self.pushButton_m.pressed.connect(self.memory_store)
        self.pushButton_mr.pressed.connect(self.memory_recall)

        self.memory = 0
        self.reset()

        self.show()

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(484, 433)
        self.centralWidget = QWidget(MainWindow)
        sizePolicy = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.centralWidget.sizePolicy().hasHeightForWidth())
        self.centralWidget.setSizePolicy(sizePolicy)
        self.centralWidget.setObjectName("centralWidget")
        self.verticalLayout_2 = QVBoxLayout(self.centralWidget)
        self.verticalLayout_2.setContentsMargins(11, 11, 11, 11)
        self.verticalLayout_2.setSpacing(6)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.verticalLayout = QVBoxLayout()
        self.verticalLayout.setSpacing(6)
        self.verticalLayout.setObjectName("verticalLayout")
        self.lcdNumber = QLCDNumber(self.centralWidget)
        self.lcdNumber.setDigitCount(10)
        self.lcdNumber.setObjectName("lcdNumber")
        self.verticalLayout.addWidget(self.lcdNumber)
        self.gridLayout = QGridLayout()
        self.gridLayout.setSpacing(6)
        self.gridLayout.setObjectName("gridLayout")
        self.pushButton_n4 = QPushButton(self.centralWidget)
        self.pushButton_n4.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_n4.setFont(font)
        self.pushButton_n4.setStyleSheet("QPushButton {\n"
"color: #1976D2;\n"
"}")
        self.pushButton_n4.setObjectName("pushButton_n4")
        self.gridLayout.addWidget(self.pushButton_n4, 3, 0, 1, 1)
        self.pushButton_n1 = QPushButton(self.centralWidget)
        self.pushButton_n1.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_n1.setFont(font)
        self.pushButton_n1.setStyleSheet("QPushButton {\n"
"color: #1976D2;\n"
"}")
        self.pushButton_n1.setObjectName("pushButton_n1")
        self.gridLayout.addWidget(self.pushButton_n1, 4, 0, 1, 1)
        self.pushButton_n8 = QPushButton(self.centralWidget)
        self.pushButton_n8.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_n8.setFont(font)
        self.pushButton_n8.setStyleSheet("QPushButton {\n"
"color: #1976D2;\n"
"}")
        self.pushButton_n8.setObjectName("pushButton_n8")
        self.gridLayout.addWidget(self.pushButton_n8, 2, 1, 1, 1)
        self.pushButton_mul = QPushButton(self.centralWidget)
        self.pushButton_mul.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton_mul.setFont(font)
        self.pushButton_mul.setObjectName("pushButton_mul")
        self.gridLayout.addWidget(self.pushButton_mul, 2, 3, 1, 1)
        self.pushButton_n7 = QPushButton(self.centralWidget)
        self.pushButton_n7.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_n7.setFont(font)
        self.pushButton_n7.setStyleSheet("QPushButton {\n"
"color: #1976D2;\n"
"}")
        self.pushButton_n7.setObjectName("pushButton_n7")
        self.gridLayout.addWidget(self.pushButton_n7, 2, 0, 1, 1)
        self.pushButton_n6 = QPushButton(self.centralWidget)
        self.pushButton_n6.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_n6.setFont(font)
        self.pushButton_n6.setStyleSheet("QPushButton {\n"
"color: #1976D2;\n"
"}")
        self.pushButton_n6.setObjectName("pushButton_n6")
        self.gridLayout.addWidget(self.pushButton_n6, 3, 2, 1, 1)
        self.pushButton_n5 = QPushButton(self.centralWidget)
        self.pushButton_n5.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_n5.setFont(font)
        self.pushButton_n5.setStyleSheet("QPushButton {\n"
"color: #1976D2;\n"
"}")
        self.pushButton_n5.setObjectName("pushButton_n5")
        self.gridLayout.addWidget(self.pushButton_n5, 3, 1, 1, 1)
        self.pushButton_n0 = QPushButton(self.centralWidget)
        self.pushButton_n0.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_n0.setFont(font)
        self.pushButton_n0.setStyleSheet("QPushButton {\n"
"color: #1976D2;\n"
"}")
        self.pushButton_n0.setObjectName("pushButton_n0")
        self.gridLayout.addWidget(self.pushButton_n0, 5, 0, 1, 1)
        self.pushButton_n2 = QPushButton(self.centralWidget)
        self.pushButton_n2.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_n2.setFont(font)
        self.pushButton_n2.setStyleSheet("QPushButton {\n"
"color: #1976D2;\n"
"}")
        self.pushButton_n2.setObjectName("pushButton_n2")
        self.gridLayout.addWidget(self.pushButton_n2, 4, 1, 1, 1)
        self.pushButton_n9 = QPushButton(self.centralWidget)
        self.pushButton_n9.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_n9.setFont(font)
        self.pushButton_n9.setStyleSheet("QPushButton {\n"
"color: #1976D2;\n"
"}")
        self.pushButton_n9.setObjectName("pushButton_n9")
        self.gridLayout.addWidget(self.pushButton_n9, 2, 2, 1, 1)
        self.pushButton_n3 = QPushButton(self.centralWidget)
        self.pushButton_n3.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_n3.setFont(font)
        self.pushButton_n3.setStyleSheet("QPushButton {\n"
"color: #1976D2;\n"
"}")
        self.pushButton_n3.setObjectName("pushButton_n3")
        self.gridLayout.addWidget(self.pushButton_n3, 4, 2, 1, 1)
        self.pushButton_div = QPushButton(self.centralWidget)
        self.pushButton_div.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton_div.setFont(font)
        self.pushButton_div.setObjectName("pushButton_div")
        self.gridLayout.addWidget(self.pushButton_div, 1, 3, 1, 1)
        self.pushButton_sub = QPushButton(self.centralWidget)
        self.pushButton_sub.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton_sub.setFont(font)
        self.pushButton_sub.setObjectName("pushButton_sub")
        self.gridLayout.addWidget(self.pushButton_sub, 3, 3, 1, 1)
        self.pushButton_add = QPushButton(self.centralWidget)
        self.pushButton_add.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton_add.setFont(font)
        self.pushButton_add.setObjectName("pushButton_add")
        self.gridLayout.addWidget(self.pushButton_add, 4, 3, 1, 1)
        self.pushButton_ac = QPushButton(self.centralWidget)
        self.pushButton_ac.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton_ac.setFont(font)
        self.pushButton_ac.setStyleSheet("QPushButton {\n"
"    color: #f44336;\n"
"}")
        self.pushButton_ac.setObjectName("pushButton_ac")
        self.gridLayout.addWidget(self.pushButton_ac, 1, 0, 1, 1)
        self.pushButton_mr = QPushButton(self.centralWidget)
        self.pushButton_mr.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton_mr.setFont(font)
        self.pushButton_mr.setStyleSheet("QPushButton {\n"
"   color: #FFC107;\n"
"}")
        self.pushButton_mr.setObjectName("pushButton_mr")
        self.gridLayout.addWidget(self.pushButton_mr, 1, 2, 1, 1)
        self.pushButton_m = QPushButton(self.centralWidget)
        self.pushButton_m.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton_m.setFont(font)
        self.pushButton_m.setStyleSheet("QPushButton {\n"
"   color: #FFC107;\n"
"}")
        self.pushButton_m.setObjectName("pushButton_m")
        self.gridLayout.addWidget(self.pushButton_m, 1, 1, 1, 1)
        self.pushButton_pc = QPushButton(self.centralWidget)
        self.pushButton_pc.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton_pc.setFont(font)
        self.pushButton_pc.setObjectName("pushButton_pc")
        self.gridLayout.addWidget(self.pushButton_pc, 5, 1, 1, 1)
        self.pushButton_eq = QPushButton(self.centralWidget)
        self.pushButton_eq.setMinimumSize(QSize(0, 50))
        font = QFont()
        font.setPointSize(27)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_eq.setFont(font)
        self.pushButton_eq.setStyleSheet("QPushButton {\n"
"color: #4CAF50;\n"
"}")
        self.pushButton_eq.setObjectName("pushButton_eq")
        self.gridLayout.addWidget(self.pushButton_eq, 5, 2, 1, 2)
        self.verticalLayout.addLayout(self.gridLayout)
        self.verticalLayout_2.addLayout(self.verticalLayout)
        MainWindow.setCentralWidget(self.centralWidget)
        self.menuBar = QMenuBar(MainWindow)
        self.menuBar.setGeometry(QRect(0, 0, 484, 22))
        self.menuBar.setObjectName("menuBar")
        self.menuFile = QMenu(self.menuBar)
        self.menuFile.setObjectName("menuFile")
        MainWindow.setMenuBar(self.menuBar)
        self.statusBar = QStatusBar(MainWindow)
        self.statusBar.setObjectName("statusBar")
        MainWindow.setStatusBar(self.statusBar)
        self.actionExit = QAction(MainWindow)
        self.actionExit.setObjectName("actionExit")
        self.actionReset = QAction(MainWindow)
        self.actionReset.setObjectName("actionReset")
        self.menuFile.addAction(self.actionReset)
        self.menuFile.addAction(self.actionExit)
        self.menuBar.addAction(self.menuFile.menuAction())

        self.retranslateUi(MainWindow)
        QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Calculon"))
        self.pushButton_n4.setText(_translate("MainWindow", "4"))
        self.pushButton_n4.setShortcut(_translate("MainWindow", "4"))
        self.pushButton_n1.setText(_translate("MainWindow", "1"))
        self.pushButton_n1.setShortcut(_translate("MainWindow", "1"))
        self.pushButton_n8.setText(_translate("MainWindow", "8"))
        self.pushButton_n8.setShortcut(_translate("MainWindow", "8"))
        self.pushButton_mul.setText(_translate("MainWindow", "x"))
        self.pushButton_mul.setShortcut(_translate("MainWindow", "*"))
        self.pushButton_n7.setText(_translate("MainWindow", "7"))
        self.pushButton_n7.setShortcut(_translate("MainWindow", "7"))
        self.pushButton_n6.setText(_translate("MainWindow", "6"))
        self.pushButton_n6.setShortcut(_translate("MainWindow", "6"))
        self.pushButton_n5.setText(_translate("MainWindow", "5"))
        self.pushButton_n5.setShortcut(_translate("MainWindow", "5"))
        self.pushButton_n0.setText(_translate("MainWindow", "0"))
        self.pushButton_n0.setShortcut(_translate("MainWindow", "0"))
        self.pushButton_n2.setText(_translate("MainWindow", "2"))
        self.pushButton_n2.setShortcut(_translate("MainWindow", "2"))
        self.pushButton_n9.setText(_translate("MainWindow", "9"))
        self.pushButton_n9.setShortcut(_translate("MainWindow", "9"))
        self.pushButton_n3.setText(_translate("MainWindow", "3"))
        self.pushButton_n3.setShortcut(_translate("MainWindow", "3"))
        self.pushButton_div.setText(_translate("MainWindow", "รท"))
        self.pushButton_div.setShortcut(_translate("MainWindow", "/"))
        self.pushButton_sub.setText(_translate("MainWindow", "-"))
        self.pushButton_sub.setShortcut(_translate("MainWindow", "-"))
        self.pushButton_add.setText(_translate("MainWindow", "+"))
        self.pushButton_add.setShortcut(_translate("MainWindow", "+"))
        self.pushButton_ac.setText(_translate("MainWindow", "AC"))
        self.pushButton_ac.setShortcut(_translate("MainWindow", "Esc"))
        self.pushButton_mr.setText(_translate("MainWindow", "MR"))
        self.pushButton_mr.setShortcut(_translate("MainWindow", "R"))
        self.pushButton_m.setText(_translate("MainWindow", "M"))
        self.pushButton_m.setShortcut(_translate("MainWindow", "M"))
        self.pushButton_pc.setText(_translate("MainWindow", "%"))
        self.pushButton_pc.setShortcut(_translate("MainWindow", "%"))
        self.pushButton_eq.setText(_translate("MainWindow", "="))
        self.pushButton_eq.setShortcut(_translate("MainWindow", "Return"))
        self.menuFile.setTitle(_translate("MainWindow", "File"))
        self.actionExit.setText(_translate("MainWindow", "Exit"))
        self.actionExit.setShortcut(_translate("MainWindow", "Ctrl+Q"))
        self.actionReset.setText(_translate("MainWindow", "Reset"))
        self.actionReset.setShortcut(_translate("MainWindow", "Ctrl+R"))


    def display(self):
        self.lcdNumber.display(self.stack[-1])

    def reset(self):
        self.state = READY
        self.stack = [0]
        self.last_operation = None
        self.current_op = None
        self.display()

    def memory_store(self):
        self.memory = self.lcdNumber.value()

    def memory_recall(self):
        self.state = INPUT
        self.stack[-1] = self.memory
        self.display()

    def input_number(self, v):
        if self.state == READY:
            self.state = INPUT
            self.stack[-1] = v
        else:
            self.stack[-1] = self.stack[-1] * 10 + v

        self.display()

    def operation(self, op):
        if self.current_op:  # Complete the current operation
            self.equals()

        self.stack.append(0)
        self.state = INPUT
        self.current_op = op

    def operation_pc(self):
        self.state = INPUT
        self.stack[-1] *= 0.01
        self.display()

    def equals(self):
        # Support to allow '=' to repeat previous operation
        # if no further input has been added.
        if self.state == READY and self.last_operation:
            s, self.current_op = self.last_operation
            self.stack.append(s)

        if self.current_op:
            self.last_operation = self.stack[-1], self.current_op

            try:
                self.stack = [self.current_op(*self.stack)]
            except Exception:
                self.lcdNumber.display('Err')
                self.stack = [0]
            else:
                self.current_op = None
                self.state = READY
                self.display()