CmdPrompt::CmdPrompt(QWidget* parent) : QWidget(parent) { qDebug("CmdPrompt Constructor"); setObjectName("Command Prompt"); promptInput = new CmdPromptInput(this); promptHistory = new CmdPromptHistory(); promptDivider = new QFrame(this); promptVBoxLayout = new QVBoxLayout(this); promptSplitter = new CmdPromptSplitter(this); this->setFocusProxy(promptInput); promptHistory->setFocusProxy(promptInput); promptDivider->setLineWidth(1); promptDivider->setFrameStyle(QFrame::HLine); promptDivider->setMaximumSize(QWIDGETSIZE_MAX, 1); promptVBoxLayout->addWidget(promptSplitter); promptVBoxLayout->addWidget(promptHistory); promptVBoxLayout->addWidget(promptDivider); promptVBoxLayout->addWidget(promptInput); promptVBoxLayout->setSpacing(0); promptVBoxLayout->setContentsMargins(0,0,0,0); this->setLayout(promptVBoxLayout); styleHash = new QHash<QString, QString>(); styleHash->insert("color", "#000000"); // Match -------| styleHash->insert("background-color", "#FFFFFF"); // | styleHash->insert("selection-color", "#FFFFFF"); // | styleHash->insert("selection-background-color", "#000000"); // Match -------| styleHash->insert("font-family", "Monospace"); styleHash->insert("font-style", "normal"); styleHash->insert("font-size", "12px"); updateStyle(); this->show(); connect(promptInput, SIGNAL(appendHistory(const QString&)), promptHistory, SLOT(appendHistory(const QString&))); connect(this, SIGNAL(appendTheHistory(const QString&)), promptHistory, SLOT(appendHistory(const QString&))); //For use outside of command prompt connect(promptInput, SIGNAL(startCommand(const QString&)), this, SIGNAL(startCommand(const QString&))); connect(promptInput, SIGNAL(runCommand(const QString&, const QString&)), this, SIGNAL(runCommand(const QString&, const QString&))); connect(promptInput, SIGNAL(deletePressed()), this, SIGNAL(deletePressed())); connect(promptInput, SIGNAL(tabPressed()), this, SIGNAL(tabPressed())); connect(promptInput, SIGNAL(escapePressed()), this, SIGNAL(escapePressed())); connect(promptInput, SIGNAL(F1Pressed()), this, SIGNAL(F1Pressed())); connect(promptInput, SIGNAL(F2Pressed()), this, SIGNAL(F2Pressed())); connect(promptInput, SIGNAL(F3Pressed()), this, SIGNAL(F3Pressed())); connect(promptInput, SIGNAL(F4Pressed()), this, SIGNAL(F4Pressed())); connect(promptInput, SIGNAL(F5Pressed()), this, SIGNAL(F5Pressed())); connect(promptInput, SIGNAL(F6Pressed()), this, SIGNAL(F6Pressed())); connect(promptInput, SIGNAL(F7Pressed()), this, SIGNAL(F7Pressed())); connect(promptInput, SIGNAL(F8Pressed()), this, SIGNAL(F8Pressed())); connect(promptInput, SIGNAL(F9Pressed()), this, SIGNAL(F9Pressed())); connect(promptInput, SIGNAL(F10Pressed()), this, SIGNAL(F10Pressed())); connect(promptInput, SIGNAL(F11Pressed()), this, SIGNAL(F11Pressed())); connect(promptInput, SIGNAL(F12Pressed()), this, SIGNAL(F12Pressed())); connect(promptInput, SIGNAL(cutPressed()), this, SIGNAL(cutPressed())); connect(promptInput, SIGNAL(copyPressed()), this, SIGNAL(copyPressed())); connect(promptInput, SIGNAL(pastePressed()), this, SIGNAL(pastePressed())); connect(promptInput, SIGNAL(selectAllPressed()), this, SIGNAL(selectAllPressed())); connect(promptInput, SIGNAL(undoPressed()), this, SIGNAL(undoPressed())); connect(promptInput, SIGNAL(redoPressed()), this, SIGNAL(redoPressed())); }
bool CmdPromptInput::eventFilter(QObject* obj, QEvent* event) { if(event->type() == QEvent::KeyPress) { QKeyEvent* pressedKey = (QKeyEvent*)event; //NOTE: These shortcuts need to be caught since QLineEdit uses them if(pressedKey->matches(QKeySequence::Cut)) { pressedKey->accept(); emit cutPressed(); return true; } else if(pressedKey->matches(QKeySequence::Copy)) { pressedKey->accept(); emit copyPressed(); return true; } else if(pressedKey->matches(QKeySequence::Paste)) { pressedKey->accept(); emit pastePressed(); return true; } else if(pressedKey->matches(QKeySequence::SelectAll)) { pressedKey->accept(); emit selectAllPressed(); return true; } else if(pressedKey->matches(QKeySequence::Undo)) { pressedKey->accept(); emit undoPressed(); return true; } else if(pressedKey->matches(QKeySequence::Redo)) { pressedKey->accept(); emit redoPressed(); return true; } int key = pressedKey->key(); switch(key) { case Qt::Key_Enter: case Qt::Key_Return: case Qt::Key_Space: pressedKey->accept(); processInput(QChar(key)); return true; break; case Qt::Key_Delete: pressedKey->accept(); emit deletePressed(); return true; break; case Qt::Key_Tab: pressedKey->accept(); emit tabPressed(); return true; break; case Qt::Key_Escape: pressedKey->accept(); prefix = "Command: "; clear(); emit appendHistory(curText + tr("*Cancel*")); emit escapePressed(); return true; break; case Qt::Key_F1: pressedKey->accept(); emit F1Pressed(); return true; break; case Qt::Key_F2: pressedKey->accept(); emit F2Pressed(); return true; break; case Qt::Key_F3: pressedKey->accept(); emit F3Pressed(); return true; break; case Qt::Key_F4: pressedKey->accept(); emit F4Pressed(); return true; break; case Qt::Key_F5: emit F5Pressed(); pressedKey->accept(); return true; break; case Qt::Key_F6: pressedKey->accept(); emit F6Pressed(); return true; break; case Qt::Key_F7: pressedKey->accept(); emit F7Pressed(); return true; break; case Qt::Key_F8: pressedKey->accept(); emit F8Pressed(); return true; break; case Qt::Key_F9: pressedKey->accept(); emit F9Pressed(); return true; break; case Qt::Key_F10: pressedKey->accept(); emit F10Pressed(); return true; break; case Qt::Key_F11: pressedKey->accept(); emit F11Pressed(); return true; break; case Qt::Key_F12: pressedKey->accept(); emit F12Pressed(); return true; break; default: pressedKey->ignore(); } } return QObject::eventFilter(obj, event); }
MainWindow::MainWindow() : QMainWindow(0) { readSettings(); QString lang = getSettingsGeneralLanguage(); qDebug("language: %s", qPrintable(lang)); if(lang == "system") lang = QLocale::system().languageToString(QLocale::system().language()).toLower(); //Load translations for the Embroidermodder 2 GUI QTranslator translatorEmb; translatorEmb.load("translations/" + lang + "/embroidermodder2_" + lang); qApp->installTranslator(&translatorEmb); //Load translations for the commands QTranslator translatorCmd; translatorCmd.load("translations/" + lang + "/commands_" + lang); qApp->installTranslator(&translatorCmd); //Load translations provided by Qt - this covers dialog buttons and other common things. QTranslator translatorQt; translatorQt.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); qApp->installTranslator(&translatorQt); //Init mainWin = this; //Menus fileMenu = new QMenu(tr("&File"), this); editMenu = new QMenu(tr("&Edit"), this); viewMenu = new QMenu(tr("&View"), this); settingsMenu = new QMenu(tr("&Settings"), this); windowMenu = new QMenu(tr("&Window"), this); helpMenu = new QMenu(tr("&Help"), this); //SubMenus recentMenu = new QMenu(tr("Open &Recent"), this); zoomMenu = new QMenu(tr("&Zoom"), this); panMenu = new QMenu(tr("&Pan"), this); //Toolbars toolbarFile = addToolBar(tr("File")); toolbarEdit = addToolBar(tr("Edit")); toolbarView = addToolBar(tr("View")); toolbarZoom = addToolBar(tr("Zoom")); toolbarPan = addToolBar(tr("Pan")); toolbarIcon = addToolBar(tr("Icon")); toolbarHelp = addToolBar(tr("Help")); toolbarLayer = addToolBar(tr("Layer")); toolbarProperties = addToolBar(tr("Properties")); toolbarText = addToolBar(tr("Text")); toolbarPrompt = addToolBar(tr("Command Prompt")); //Selectors layerSelector = new QComboBox(this); colorSelector = new QComboBox(this); linetypeSelector = new QComboBox(this); lineweightSelector = new QComboBox(this); textFontSelector = new QFontComboBox(this); textSizeSelector = new QComboBox(this); numOfDocs = 0; docIndex = 0; shiftKeyPressedState = false; setWindowIcon(QIcon("icons/" + getSettingsGeneralIconTheme() + "/" + "app" + ".png")); //create the mdiArea QFrame* vbox = new QFrame(this); QVBoxLayout* layout = new QVBoxLayout(vbox); layout->setMargin(0); vbox->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); mdiArea = new MdiArea(this, vbox); mdiArea->useBackgroundLogo(getSettingsGeneralMdiBGUseLogo()); mdiArea->useBackgroundTexture(getSettingsGeneralMdiBGUseTexture()); mdiArea->useBackgroundColor(getSettingsGeneralMdiBGUseColor()); mdiArea->setBackgroundLogo(getSettingsGeneralMdiBGLogo()); mdiArea->setBackgroundTexture(getSettingsGeneralMdiBGTexture()); mdiArea->setBackgroundColor(QColor(getSettingsGeneralMdiBGColor())); mdiArea->setViewMode(QMdiArea::TabbedView); mdiArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); mdiArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); mdiArea->setActivationOrder(QMdiArea::ActivationHistoryOrder); layout->addWidget(mdiArea); setCentralWidget(vbox); //create the Command Prompt prompt = new CmdPrompt(this); prompt->setFocus(Qt::OtherFocusReason); this->setFocusProxy(prompt); mdiArea->setFocusProxy(prompt); prompt->setPromptTextColor(QColor(getSettingsPromptTextColor())); prompt->setPromptBackgroundColor(QColor(getSettingsPromptBGColor())); connect(prompt, SIGNAL(startCommand(const QString&)), this, SLOT(runCommandMain(const QString&))); connect(prompt, SIGNAL(runCommand(const QString&, const QString&)), this, SLOT(runCommandPrompt(const QString&, const QString&))); connect(prompt, SIGNAL(deletePressed()), this, SLOT(deletePressed())); //TODO: connect(prompt, SIGNAL(tabPressed()), this, SLOT(someUnknownSlot())); connect(prompt, SIGNAL(escapePressed()), this, SLOT(escapePressed())); connect(prompt, SIGNAL(F1Pressed()), this, SLOT(help())); //TODO: connect(prompt, SIGNAL(F2Pressed()), this, SLOT(floatHistory())); //TODO: connect(prompt, SIGNAL(F3Pressed()), this, SLOT(toggleQSNAP())); connect(prompt, SIGNAL(F4Pressed()), this, SLOT(toggleLwt())); //TODO: typically this is toggleTablet(), make F-Keys customizable thru settings //TODO: connect(prompt, SIGNAL(F5Pressed()), this, SLOT(toggleISO())); //TODO: connect(prompt, SIGNAL(F6Pressed()), this, SLOT(toggleCoords())); connect(prompt, SIGNAL(F7Pressed()), this, SLOT(toggleGrid())); //TODO: connect(prompt, SIGNAL(F8Pressed()), this, SLOT(toggleORTHO())); //TODO: connect(prompt, SIGNAL(F9Pressed()), this, SLOT(toggleSNAP())); //TODO: connect(prompt, SIGNAL(F10Pressed()), this, SLOT(togglePOLAR())); //TODO: connect(prompt, SIGNAL(F11Pressed()), this, SLOT(toggleQTRACK())); connect(prompt, SIGNAL(F12Pressed()), this, SLOT(toggleRuler())); connect(prompt, SIGNAL(cutPressed()), this, SLOT(cut())); connect(prompt, SIGNAL(copyPressed()), this, SLOT(copy())); connect(prompt, SIGNAL(pastePressed()), this, SLOT(paste())); connect(prompt, SIGNAL(selectAllPressed()), this, SLOT(selectAll())); connect(prompt, SIGNAL(undoPressed()), this, SLOT(undo())); connect(prompt, SIGNAL(redoPressed()), this, SLOT(redo())); connect(prompt, SIGNAL(shiftPressed()), this, SLOT(setShiftPressed())); connect(prompt, SIGNAL(shiftReleased()), this, SLOT(setShiftReleased())); //create the Object Property Editor dockPropEdit = new PropertyEditor("icons/" + getSettingsGeneralIconTheme(), getSettingsSelectionModePickAdd(), prompt, this); addDockWidget(Qt::LeftDockWidgetArea, dockPropEdit); connect(dockPropEdit, SIGNAL(pickAddModeToggled()), this, SLOT(pickAddModeToggled())); //create the Command History Undo Editor dockUndoEdit = new UndoEditor("icons/" + getSettingsGeneralIconTheme(), prompt, this); addDockWidget(Qt::LeftDockWidgetArea, dockUndoEdit); //setDockOptions(QMainWindow::AnimatedDocks | QMainWindow::AllowTabbedDocks | QMainWindow::VerticalTabs); //TODO: Load these from settings //tabifyDockWidget(dockPropEdit, dockUndoEdit); //TODO: load this from settings //Javascript initMainWinPointer(this); engine = new QScriptEngine(this); engine->installTranslatorFunctions(); debugger = new QScriptEngineDebugger(this); debugger->attachTo(engine); javaInitNatives(engine); //Load all commands in a loop QDir commandDir("commands"); QStringList cmdList = commandDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot); foreach(QString cmdName, cmdList) { javaLoadCommand(cmdName); }