Ejemplo n.º 1
0
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    connect(ui->actionNew,SIGNAL(triggered()),this,SLOT(actionNew()));
    connect(ui->actionOpen,SIGNAL(triggered()),this,SLOT(actionOpen()));
    connect(ui->actionSave,SIGNAL(triggered()),this,SLOT(actionSaveAs()));
    connect(ui->actionSave_as,SIGNAL(triggered()),this,SLOT(actionSaveAs()));
    connect(ui->textEdit,SIGNAL(textChanged()),this,SLOT(edit()));
    connect(ui->textEdit_2,SIGNAL(textChanged()),this,SLOT(edit()));
    connect(ui->lineEdit,SIGNAL(textChanged(QString)),this,SLOT(edit()));
    connect(ui->actionExit,SIGNAL(triggered()),this,SLOT(close()));


    connect(ui->actionSave_2,SIGNAL(triggered()),this,SLOT(saveVertexShader()));
    connect(ui->actionSave_3,SIGNAL(triggered()),this,SLOT(saveFragmentShader()));

    connect(ui->actionOpen_2,SIGNAL(triggered()),this,SLOT(openVertexShader()));
    connect(ui->actionOpen_3,SIGNAL(triggered()),this,SLOT(openFragmentShader()));
    connect(ui->actionBuild,SIGNAL(triggered()),this,SLOT(tryBuild()));

    this->setWindowTitle("OpenCraft shaderprogram editor - unnamed[*]");

    mChanged = false;
}
Ejemplo n.º 2
0
void MainWindow::actionOpen()
{
    QString fileName =
            QFileDialog::getOpenFileName(this, tr("Open Circuit"), "",
                                         tr("Digital Circuit (*.dic);;All Files (*)"));
    if (!fileName.isEmpty())
    {
        QFile file(fileName);
        if (!file.open(QIODevice::ReadOnly))
        {
            QMessageBox::information(this, tr("Unable to open file"),
                                     file.errorString());
            return;
        }
        QDataStream in(&file);
        in.setVersion(QDataStream::Qt_4_7);

        actionNew();
        setWindowTitle(QFileInfo(fileName).baseName() + " - DIC Sim v" + VERSION);
        in >> *console;
    }
Ejemplo n.º 3
0
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    /****************** Menu Bar ******************/
    /*
     * File Menu
     */
    QAction *newAction = new QAction("&New File", this);
    newAction->setShortcut(tr("Ctrl+N"));
    connect(newAction, SIGNAL(triggered()), this, SLOT(actionNew()));
    QAction *openAction = new QAction("&Open File", this);
    openAction->setShortcut(tr("Ctrl+O"));
    connect(openAction, SIGNAL(triggered()), this, SLOT(actionOpen()));
    QAction *saveAction = new QAction("&Save File", this);
    saveAction->setShortcut(tr("Ctrl+S"));
    connect(saveAction, SIGNAL(triggered()), this, SLOT(actionSave()));
    QAction *quitAction = new QAction("&Quit", this);
    quitAction->setShortcut(tr("Ctrl+Q"));
    connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));

    QMenu *fileMenu;
    fileMenu = menuBar()->addMenu("&File");
    fileMenu->addAction(newAction);
    fileMenu->addAction(openAction);
    fileMenu->addAction(saveAction);
    fileMenu->addAction(quitAction);

    /*
     * Edit Menu
     */
    QAction *chooseWireColorAction = new QAction("Choose Wire &Color", this);
    chooseWireColorAction->setShortcut(tr("Ctrl+C"));
    connect(chooseWireColorAction, SIGNAL(triggered()), this, SLOT(actionChooseWireColor()));

    QMenu *editMenu;
    editMenu = menuBar()->addMenu("&Edit");
    editMenu->addSeparator();
    editMenu->addAction(chooseWireColorAction);

    /*
     * Insert Menu
     */
    QAction *insertWireAction = new QAction("Insert &Wire", this);
    insertWireAction->setShortcut(tr("Ctrl+W"));
    connect(insertWireAction, SIGNAL(triggered()), this, SLOT(actionInsertWire()));

    QAction *insertLEDAction = new QAction("Insert &LED", this);
    insertLEDAction->setShortcut(tr("Ctrl+L"));
    connect(insertLEDAction, SIGNAL(triggered()), this, SLOT(actionInsertLED()));

    QAction *insertICAction = new QAction("Insert &IC", this);
    insertICAction->setShortcut(tr("Ctrl+I"));
    connect(insertICAction, SIGNAL(triggered()), this, SLOT(actionInsertIC()));

    QAction *insertTagAction = new QAction("Insert &Tag", this);
    insertTagAction->setShortcut(tr("Ctrl+T"));
    connect(insertTagAction, SIGNAL(triggered()), this, SLOT(actionInsertTag()));

    QMenu *insertMenu;
    insertMenu = menuBar()->addMenu("&Insert");
    insertMenu->addAction(insertWireAction);
    insertMenu->addAction(insertLEDAction);
    insertMenu->addAction(insertICAction);
    insertMenu->addSeparator();
    insertMenu->addAction(insertTagAction);

    /*
     * Circuit Menu
     */
    QAction *runCircuitAction = new QAction("&Run Circuit", this);
    runCircuitAction->setShortcut(tr("F5"));
    connect(runCircuitAction, SIGNAL(triggered()), this, SLOT(actionRunCircuit()));
    QAction *stopCircuitAction = new QAction("&Stop Circuit", this);
    stopCircuitAction->setShortcut(tr("F12"));
    connect(stopCircuitAction, SIGNAL(triggered()), this, SLOT(actionStopCircuit()));
    QAction *truthTableAction = new QAction("Generate &Truth Table", this);
    truthTableAction->setShortcut(tr("F6"));
    connect(truthTableAction, SIGNAL(triggered()), this, SLOT(actionTruthTable()));

    QMenu *circuitMenu;
    circuitMenu = menuBar()->addMenu("&Circuit");
    circuitMenu->addAction(runCircuitAction);
    circuitMenu->addAction(stopCircuitAction);
    circuitMenu->addAction(truthTableAction);

    /*
     * Help Menu
     */
    QAction *aboutAction = new QAction("&About", this);
    connect(aboutAction, SIGNAL(triggered()), this, SLOT(actionAbout()));

    QMenu *helpMenu;
    helpMenu = menuBar()->addMenu("&Help");
    helpMenu->addAction(aboutAction);

    /*
     * Invisible Actions
     */
    QShortcut *toggleInput1 = new QShortcut(QKeySequence(tr("Alt+1")), this);
    QShortcut *toggleInput2 = new QShortcut(QKeySequence(tr("Alt+2")), this);
    QShortcut *toggleInput3 = new QShortcut(QKeySequence(tr("Alt+3")), this);
    QShortcut *toggleInput4 = new QShortcut(QKeySequence(tr("Alt+4")), this);
    QShortcut *toggleInput5 = new QShortcut(QKeySequence(tr("Alt+5")), this);
    QShortcut *toggleInput6 = new QShortcut(QKeySequence(tr("Alt+6")), this);
    QShortcut *toggleInput7 = new QShortcut(QKeySequence(tr("Alt+7")), this);
    QShortcut *toggleInput8 = new QShortcut(QKeySequence(tr("Alt+8")), this);
    QShortcut *toggleInput9 = new QShortcut(QKeySequence(tr("Alt+9")), this);
    QShortcut *toggleInput0 = new QShortcut(QKeySequence(tr("Alt+0")), this);
    connect(toggleInput1, SIGNAL(activated()), this, SLOT(actionToggleInput1()));
    connect(toggleInput2, SIGNAL(activated()), this, SLOT(actionToggleInput2()));
    connect(toggleInput3, SIGNAL(activated()), this, SLOT(actionToggleInput3()));
    connect(toggleInput4, SIGNAL(activated()), this, SLOT(actionToggleInput4()));
    connect(toggleInput5, SIGNAL(activated()), this, SLOT(actionToggleInput5()));
    connect(toggleInput6, SIGNAL(activated()), this, SLOT(actionToggleInput6()));
    connect(toggleInput7, SIGNAL(activated()), this, SLOT(actionToggleInput7()));
    connect(toggleInput8, SIGNAL(activated()), this, SLOT(actionToggleInput8()));
    connect(toggleInput9, SIGNAL(activated()), this, SLOT(actionToggleInput9()));
    connect(toggleInput0, SIGNAL(activated()), this, SLOT(actionToggleInput0()));

    QShortcut *cheatNO_GND_VCC_sh = new QShortcut(
        QKeySequence(Qt::Key_N, Qt::Key_G, Qt::Key_V), this);
    connect(cheatNO_GND_VCC_sh, SIGNAL(activated()), this,
        SLOT(actionCheatNO_GND_VCC()));

    /*************** Central Contents ***************/
    QWidget *centralWidget = new QWidget;
    centralWidget->setObjectName(QObject::tr("centralWidget"));

    console = nullptr;
    consoleView = new QGraphicsView();
    consoleView->setFixedSize(Console::CONSOLE_WIDTH, Console::CONSOLE_HEIGHT);
    actionNew();

    QVBoxLayout *vLayout = new QVBoxLayout;
    QHBoxLayout *hLayout = new QHBoxLayout;

    hLayout->addStretch(1);
    hLayout->addWidget(consoleView);
    hLayout->addStretch(1);

    vLayout->addStretch(1);
    vLayout->addLayout(hLayout);
    vLayout->addStretch(1);

    centralWidget->setLayout(vLayout);
    setCentralWidget(centralWidget);

    /*************** Containers *****************/
    icNameList = new QStringList;
    icPinsList = new QStringList;
    icDescList = new QStringList;
    icLabelList = new QStringList;

    /*************** Functions ******************/
    parseICs();
    icdialog = new ICDialog(this, icNameList, icDescList);

    /*************** Booleans *******************/
    circuitState = false;
    cheatNO_GND_VCC = false;
}