big-bass - 2022-06-27

PRAGMA INCLUDE <QtWidgets/QApplication>  <QtWidgets/QLabel>  
PRAGMA INCLUDE <QtWidgets/QMainWindow> <QtWidgets/QPushButton>    <QtWidgets/QFileDialog>
PRAGMA INCLUDE <QtCore/QVariant> <QtWidgets/QAction> <QtCore/QDir> <QtWidgets/QMessageBox>
PRAGMA INCLUDE <QtWidgets/QMenu> <QtWidgets/QMenuBar> <QtWidgets/QStatusBar>  <QtCore/QTextStream>
PRAGMA INCLUDE <QtWidgets/QTextEdit> <QtWidgets/QToolBar> <QtWidgets/QWidget>   <QtWidgets/QFontDialog>
PRAGMA INCLUDE <QtWidgets/QAction> <QtWidgets/QMenuBar> <QtWidgets/QStatusBar> 
PRAGMA INCLUDE <QtWidgets/QMenu>  <QtWidgets/QTextEdit> <QtWidgets/QToolBar> <QtWidgets/QVBoxLayout>
PRAGMA LDFLAGS -lQt5Widgets -lQt5Gui -lQt5Core -lGLESv2 -lpthread -latomic 
PRAGMA COMPILER g++
PRAGMA OPTIONS -Wno-write-strings -Wno-pointer-arith -I/usr/include/arm-linux-gnueabihf/qt5 

OPTION PARSE FALSE



'--- our signal /slot  from Qt  placed in a  bacon SUB 
'--------------------------------------------------------
SUB actionBold_cb(bool bold)
'--------------------------------------------------------

    '--- change the text to bold hack for toggle in bacon
        IF bold THEN
                textEdit->setFontWeight(QFont::Bold)
        ELSE
                textEdit->setFontWeight(QFont::Normal)
        ENDIF        
ENDSUB



'--------------------------------------------------------
SUB newDocument_cb()
'--------------------------------------------------------
        textEdit->setText(QString())
        PRINT "new"
END SUB






'--------------------------------------------------------
SUB   open_cb()
'--------------------------------------------------------
    LOCAL fileName TYPE QString
    LOCAL text TYPE  QString
    LOCAL currentFile TYPE QString

    fileName = QFileDialog::getOpenFileName(0, "Open the file")
    QFile file(fileName)
    currentFile = fileName
    IF (file.open(QIODevice::ReadOnly | QFile::Text)) == false THEN
        QMessageBox::warning(0, "Warning", "Cannot open file: " + file.errorString())
        RETURN
    END IF 
    win->setWindowTitle(fileName)
    QTextStream in(&file)
    text = in.readAll()
    textEdit->setText(text)
    file.close()    
END SUB


'--------------------------------------------------------
SUB    save_cb()
'--------------------------------------------------------
        LOCAL fileName TYPE QString
        LOCAL currentFile TYPE QString
        LOCAL text TYPE  QString

        '--- If we don't have a filename from before, get one.
        IF (currentFile.isEmpty()) THEN
                        fileName = QFileDialog::getSaveFileName(0, "Save")
                        currentFile = fileName
        ELSE 
                        fileName = currentFile
        END IF
        QFile file(fileName)
        IF (file.open(QIODevice::WriteOnly | QFile::Text)) == false  THEN
                QMessageBox::warning(0, "Warning", "Cannot save file: " + file.errorString())
                RETURN
        END IF
        win->setWindowTitle(fileName)
        QTextStream out(&file)
        text = textEdit->toPlainText()
        out << text
        file.close()
END SUB



'--------------------------------------------------------
SUB    saveAs_cb()
'--------------------------------------------------------

        LOCAL fileName TYPE  QString
        LOCAL text TYPE  QString
        LOCAL currentFile TYPE QString


        fileName = QFileDialog::getSaveFileName(0, "Save as")
        QFile file(fileName)

        IF (file.open(QFile::WriteOnly | QFile::Text))  == false THEN
                        QMessageBox::warning(0, "Warning", "Cannot save file: " + file.errorString())
                        RETURN
        END IF
        currentFile = fileName
        win->setWindowTitle(fileName)
        QTextStream out(&file)
        text = textEdit->toPlainText()
        out << text
        file.close()

END SUB






'--------------------------------------------------------
SUB exit_cb()
'--------------------------------------------------------
    QCoreApplication::quit()
END SUB




'--------------------------------------------------------
SUB copy_cb()
'--------------------------------------------------------
        QT_CONFIG(clipboard)
        textEdit->copy()
END SUB


'--------------------------------------------------------
SUB  cut_cb()
'--------------------------------------------------------
        QT_CONFIG(clipboard)
        textEdit->cut()
END SUB

'--------------------------------------------------------
SUB paste_cb()
'--------------------------------------------------------
        QT_CONFIG(clipboard)
        textEdit->paste()
END SUB

'--------------------------------------------------------
SUB undo_cb()
'--------------------------------------------------------
        textEdit->undo()
END SUB



'--------------------------------------------------------
SUB redo_cb()
'--------------------------------------------------------
        textEdit->redo()
END SUB



'--------------------------------------------------------
SUB selectFont_cb()
'--------------------------------------------------------
        LOCAL fontSelected TYPE bool
        LOCAL font TYPE QFont

        font = QFontDialog::getFont(&fontSelected, 0)
    IF  (fontSelected) THEN
        textEdit->setFont(font)
    END IF 
END SUB



'--------------------------------------------------------
SUB setFontUnderline_cb(bool underline)
'--------------------------------------------------------
        textEdit->setFontUnderline( underline)
END SUB 



'--------------------------------------------------------
SUB setFontItalic_cb(bool italic)
'--------------------------------------------------------
        textEdit->setFontItalic(italic)
END SUB



'--------------------------------------------------------
SUB about_cb()
'--------------------------------------------------------
        QMessageBox::about(0,"About","The <b>Notepad</b> ported to bacon   " "by bigbass")
END SUB



DECLARE win TYPE  QMainWindow*
DECLARE app TYPE QApplication*

DECLARE actionNew TYPE QAction*
DECLARE actionOpen TYPE QAction*
DECLARE actionSave TYPE QAction*
DECLARE actionSave_as TYPE QAction*
DECLARE actionPrint TYPE QAction*
DECLARE actionExit TYPE QAction*
DECLARE actionCopy TYPE  QAction*
DECLARE actionCut TYPE  QAction*
DECLARE actionPaste TYPE  QAction*
DECLARE actionUndo TYPE  QAction*
DECLARE actionRedo TYPE QAction*
DECLARE actionFont TYPE QAction*
DECLARE actionItalic TYPE  QAction*
DECLARE actionBold TYPE  QAction*
DECLARE actionUnderline TYPE  QAction*
DECLARE actionAbout   TYPE  QAction*

DECLARE centralWidget TYPE QWidget*
DECLARE verticalLayout TYPE QVBoxLayout*
DECLARE textEdit TYPE  QTextEdit*
DECLARE menuBar TYPE QMenuBar*
DECLARE menuFile TYPE QMenu*
DECLARE menuEdit TYPE QMenu*
DECLARE mainToolBar TYPE  QToolBar*
DECLARE statusBar TYPE QStatusBar*

DECLARE  icon ,icon1 ,icon2,icon3 , icon5, icon6, icon7, icon8, icon9 TYPE QIcon
DECLARE  icon10, icon11, icon12 , icon13 , icon14, icon15 TYPE QIcon



        app = new QApplication(argc, argv)
        win = new QMainWindow()


        win->resize(800, 400)
        actionNew = new QAction(win)


        icon.addFile((QDir::currentPath())+"/images/new.png")
        actionNew->setIcon(icon)
        actionOpen = new QAction(win)


        icon1.addFile((QDir::currentPath())+"/images/open.png")
        actionOpen->setIcon(icon1)
        actionSave = new QAction(win)


        icon2.addFile((QDir::currentPath())+"/images/save.png")
        actionSave->setIcon(icon2)
        actionSave_as = new QAction(win)


        icon3.addFile((QDir::currentPath())+"/images/save_as.png")
        actionSave_as->setIcon(icon3)
        'actionPrint = new QAction(win)


        'icon4.addFile((QDir::currentPath())+"/images/print.png")
        'actionPrint->setIcon(icon4)
        actionExit = new QAction(win)


        icon5.addFile((QDir::currentPath())+"/images/exit.png")
        actionExit->setIcon(icon5)
        actionCopy = new QAction(win)


        icon6.addFile((QDir::currentPath())+"/images/copy.png")
        actionCopy->setIcon(icon6)
        actionCut = new QAction(win)


        icon7.addFile((QDir::currentPath())+"/images/cut.png")
        actionCut->setIcon(icon7)
        actionPaste = new QAction(win)


        icon8.addFile((QDir::currentPath())+"/images/paste.png")
        actionPaste->setIcon(icon8)
        actionUndo = new QAction(win)


        icon9.addFile((QDir::currentPath())+"/images/edit_undo.png")
        actionUndo->setIcon(icon9)
        actionRedo = new QAction(win)


        icon10.addFile((QDir::currentPath())+"/images/edit_redo.png")
        actionRedo->setIcon(icon10)
        actionFont = new QAction(win)


        icon11.addFile((QDir::currentPath())+"/images/font.png")
        actionFont->setIcon(icon11)
        actionItalic = new QAction(win)
        actionItalic->setCheckable(true)

        icon12.addFile((QDir::currentPath())+"/images/italic.png")
        actionItalic->setIcon(icon12)
        actionBold = new QAction(win)
        actionBold->setCheckable(true)

        icon13.addFile((QDir::currentPath())+"/images/bold.png")
        actionBold->setIcon(icon13)
        actionUnderline = new QAction(win)
        actionUnderline->setCheckable(true)

        icon14.addFile((QDir::currentPath())+"/images/underline.png")
        actionUnderline->setIcon(icon14)
        actionAbout = new QAction(win)


        icon15.addFile((QDir::currentPath())+"/images/info.png")
        actionAbout->setIcon(icon15)
        centralWidget = new QWidget(win)

        verticalLayout = new QVBoxLayout(centralWidget)
        verticalLayout->setSpacing(6)
        verticalLayout->setContentsMargins(11, 11, 11, 11)

        textEdit = new QTextEdit(centralWidget)


        verticalLayout->addWidget(textEdit)

        win->setCentralWidget(centralWidget)
        menuBar = new QMenuBar(win)


        menuBar->setGeometry(QRect(0, 0, 800, 25))
        menuFile = new QMenu(menuBar)
        menuEdit = new QMenu(menuBar)

        win->setMenuBar(menuBar)
        mainToolBar = new QToolBar(win)

        win->addToolBar(Qt::TopToolBarArea, mainToolBar)
        statusBar = new QStatusBar(win)

        win->setStatusBar(statusBar)


        menuBar->addAction(menuFile->menuAction())
        menuBar->addAction(menuEdit->menuAction())
        menuFile->addAction(actionNew)
        menuFile->addAction(actionOpen)
        menuFile->addAction(actionSave)
        menuFile->addAction(actionSave_as)
        menuFile->addAction(actionPrint)
        menuFile->addSeparator()
        menuFile->addAction(actionExit)
        menuEdit->addAction(actionCopy)
        menuEdit->addAction(actionCut)
        menuEdit->addAction(actionPaste)
        menuEdit->addSeparator()
        menuEdit->addAction(actionUndo)
        menuEdit->addAction(actionRedo)
        menuEdit->addAction(actionFont)
        mainToolBar->addAction(actionNew)
        mainToolBar->addAction(actionOpen)
        mainToolBar->addAction(actionSave)
        mainToolBar->addAction(actionSave_as)
        mainToolBar->addAction(actionPrint)
        mainToolBar->addSeparator()
        mainToolBar->addAction(actionCopy)
        mainToolBar->addAction(actionCut)
        mainToolBar->addAction(actionPaste)
        mainToolBar->addAction(actionUndo)
        mainToolBar->addAction(actionRedo)
        mainToolBar->addSeparator()
        mainToolBar->addAction(actionFont)
        mainToolBar->addAction(actionBold)
        mainToolBar->addAction(actionItalic)
        mainToolBar->addAction(actionUnderline)
        mainToolBar->addSeparator()
        mainToolBar->addAction(actionAbout)
        mainToolBar->addSeparator()
        mainToolBar->addAction(actionExit)



        '---CALLBACK  widget ,event, SUB

        QObject::connect(actionNew, &QAction::triggered, newDocument_cb)
        QObject::connect(actionOpen, &QAction::triggered, open_cb)
        QObject::connect(actionSave, &QAction::triggered, save_cb)
        QObject::connect(actionSave_as, &QAction::triggered,saveAs_cb)
        ' connect(actionPrint, &QAction::triggered, &Notepad::print)
        QObject::connect(actionExit, &QAction::triggered,exit_cb)
        QObject::connect(actionCopy, &QAction::triggered, copy_cb)
        QObject::connect(actionCut, &QAction::triggered, cut_cb)
        QObject::connect(actionPaste, &QAction::triggered,paste_cb)
        QObject::connect(actionUndo, &QAction::triggered,undo_cb)
        QObject::connect(actionRedo, &QAction::triggered,redo_cb)
        QObject::connect(actionFont, &QAction::triggered, selectFont_cb)
        QObject::connect(actionBold, &QAction::triggered, actionBold_cb)
        QObject::connect(actionUnderline, &QAction::triggered, setFontUnderline_cb)
        QObject::connect(actionItalic, &QAction::triggered, setFontItalic_cb)
        QObject::connect(actionAbout, &QAction::triggered,about_cb)



        win->show()
        return app->exec()
 

Last edit: big-bass 2022-06-27