int macroLoad(char *name, char *filepath) { node *codeTree; int res; rmMacro(name); renameAllocation("newMacro","tmpSavenewMacro"); if ( (codeTree = loadMacro(filepath,NOSEARCH, &res)) ) { saveMacro(name,codeTree,PERMANENT); releaseAllWithId("newMacro"); renameAllocation("tmpSavenewMacro","newMacro"); return(0); } releaseAllWithId("newMacro"); renameAllocation("tmpSavenewMacro","newMacro"); return(-1); }
extern QList<QSharedPointer<Macro> > loadFromFile(const QString &fileName) { QList<QSharedPointer<Macro> > result; QFile f(fileName); if (f.open(QIODevice::ReadOnly|QIODevice::Text)) { QDomDocument doc; doc.setContent(&f); const QDomNodeList macros = doc.elementsByTagName("macro"); for (int i=0; i<macros.count(); i++) { QSharedPointer<Macro> macro(new Macro()); if (loadMacro(macros.at(i).toElement(), macro)) { result << macro; } } f.close(); } return result; }
void AddFxContextMenu::fillMenus() { loadFxs(); loadMacro(); }
void startUp(void) { char buffer[200]; char strCounts[20]; int key; SetSystemClockRate(MAX_CLOCK_SPEED); // to speed up initial startup -- set CLOCK_RATE later setDefaults(); setLED(LED_RED,FALSE); // red light can be left on after reprog restart setLED(LED_GREEN,TRUE); // red light can be left on after reprog restart //to stop user from wondering if power is on and possibly cycling too quickly, playDing(); // it is important to play a sound immediately key = keyCheck(1); // long keycheck // voltage checks in SystemIntoUSB.c if (key == KEY_STAR || key == KEY_MINUS) { // allows USB device mode no matter what is on memory card Snd_Stop(); SystemIntoUDisk(1); loadConfigFile(); processInbox(); resetSystem(); } else if (key == KEY_PLUS) { // outbox mode: copy outbox files to connecting device loadConfigFile(); copyOutbox(); resetSystem(); } // check for new firmware first, but don't flash if voltage is low if(V_MIN_SDWRITE_VOLTAGE <= vCur_1) { check_new_sd_flash(); } if (loadConfigFile() == -1) // config.txt file not found testPCB(); if (!SNexists()) logException(32,(const char *)"no serial number",SHUT_DOWN); SysDisableWaitMode(WAITMODE_CHANNEL_A); adjustVolume(NORMAL_VOLUME,FALSE,FALSE); adjustSpeed(NORMAL_SPEED,FALSE); loadDefaultPackage(); if (MACRO_FILE) loadMacro(); loadSystemCounts(); systemCounts.powerUpNumber++; if (systemCounts.powerUpNumber - systemCounts.lastLogErase > MAX_PWR_CYCLES_IN_LOG) { systemCounts.lastLogErase = systemCounts.powerUpNumber; clearStaleLog(); } #ifndef TB_CAN_WAKE resetRTC(); // reset before saving anything to disk and running macros #endif saveSystemCounts(); strcpy(buffer,"\x0d\x0a" "---------------------------------------------------\x0d\x0a"); strcat(buffer,getDeviceSN(1)); strcpy(strCounts,(char *)" counts:S"); longToDecimalString(systemCounts.powerUpNumber, strCounts+9, 4); strcat(strCounts,(char *)"P"); longToDecimalString(systemCounts.packageNumber, strCounts+14, 4); strcat(strCounts,(char *)"R"); longToDecimalString(systemCounts.revdPkgNumber, strCounts+19, 4); strcat(buffer,strCounts); strcat(buffer,"\x0d\x0a" "CYCLE "); //cycle number longToDecimalString(systemCounts.powerUpNumber,(char *)(buffer+strlen(buffer)),4); strcat(buffer,(const char *)" - version " VERSION); logString(buffer,BUFFER); #ifdef TB_CAN_WAKE logRTC(); #endif loadPackage(PKG_SYS,BOOT_PACKAGE); SetSystemClockRate(CLOCK_RATE); // either set in config file or the default 48 MHz set at beginning of startUp() mainLoop(); }
MainWindow::MainWindow(QDesktopWidget * d):QMainWindow() { this->setMinimumSize(d->availableGeometry().width()/1.15, d->availableGeometry().height()/1.25); this->setDockNestingEnabled(false); this->setDockOptions(NULL); this->setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea); this->setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); this->setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea); this->setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea); databackend=new DataBackend(); databackend->setDataInserter(new ChangeFactory(databackend)); databrowser=new DataBrowser(databackend,d); dataeditor=new DataEditor(databackend,d); QObject::connect(databrowser,SIGNAL(editObject(QString)),dataeditor,SLOT(loadObject(QString))); QObject::connect(databrowser,SIGNAL(editForce(QString)),dataeditor,SLOT(loadForce(QString))); QObject::connect(databrowser,SIGNAL(editMacro(QString)),dataeditor,SLOT(loadMacro(QString))); QObject::connect(databrowser,SIGNAL(editConstant(QString)),dataeditor,SLOT(loadConstant(QString))); QObject::connect(databrowser,SIGNAL(deleteObject(QString)),dataeditor,SLOT(loadBlank())); QObject::connect(databrowser,SIGNAL(deleteForce(QString)),dataeditor,SLOT(loadBlank())); QObject::connect(databrowser,SIGNAL(deleteMacro(QString)),dataeditor,SLOT(loadBlank())); QObject::connect(databrowser,SIGNAL(deleteConstant(QString)),dataeditor,SLOT(loadBlank())); simcontrol=new SimulationControl(databackend); openglpane=new GLDrawPane(databackend,d); timer = new QTimer(this); connect(timer, SIGNAL(timeout()), openglpane, SLOT(updateGL())); connect(qApp, SIGNAL(lastWindowClosed()),timer,SLOT(stop())); timer -> start(15); this->setCentralWidget(openglpane); this->addDockWidget(Qt::RightDockWidgetArea, databrowser); this->addDockWidget(Qt::RightDockWidgetArea, dataeditor); this->addDockWidget(Qt::BottomDockWidgetArea, simcontrol); QMenu * fileMenu = this->menuBar()->addMenu(tr("File")); QMenu * newMenu=fileMenu->addMenu("New Project"); newMenu->addAction("Blank Project",databackend,SLOT(newFromBlank()),QKeySequence("Ctrl+N")); newMenu->addAction("From Default",databackend,SLOT(newFromDefault()),QKeySequence("Ctrl+Shift+N")); fileMenu->addAction("Open Project",databackend,SLOT(load()),QKeySequence("Ctrl+O")); fileMenu->addAction("Save Project",databackend,SLOT(save()),QKeySequence("Ctrl+S")); fileMenu->addAction("Save Project As",databackend,SLOT(saveAs()),QKeySequence("Ctrl+Shift+S")); fileMenu->addAction("Exit",databackend, SLOT(quit())); QMenu * editMenu = this->menuBar()->addMenu(tr("Edit")); QAction * undo=databackend->getUndoStack()->createUndoAction(this); undo->setShortcut(QKeySequence(QKeySequence::Undo)); editMenu->addAction(undo); QAction * redo=databackend->getUndoStack()->createRedoAction(this); redo->setShortcut(QKeySequence(QKeySequence::Redo)); editMenu->addAction(redo); QMenu * viewMenu = this->menuBar()->addMenu(tr("View")); QMenu * cameraMenu=viewMenu->addMenu("Camera Presets"); cameraMenu->addAction("Isometric",this,SLOT(view_setIsometric())); cameraMenu->addAction("View XY Plane",this,SLOT(view_setXY())); cameraMenu->addAction("View XZ Plane",this,SLOT(view_setXZ())); cameraMenu->addAction("View YZ Plane",this,SLOT(view_setYZ())); QMenu * zoomMenu=viewMenu->addMenu("Zoom"); QActionGroup * zoomGroup=new QActionGroup(NULL); zoomGroup->addAction(zoomMenu->addAction("10%",this,SLOT(view_zoom10())))->setCheckable(true); zoomGroup->addAction(zoomMenu->addAction("50%",this,SLOT(view_zoom50())))->setCheckable(true); zoomGroup->addAction(zoomMenu->addAction("100%",this,SLOT(view_zoom100())))->setCheckable(true); zoomGroup->addAction(zoomMenu->addAction("150%",this,SLOT(view_zoom150())))->setCheckable(true); zoomGroup->addAction(zoomMenu->addAction("200%",this,SLOT(view_zoom200())))->setCheckable(true); view_zoom50(); viewMenu->addSeparator(); viewMenu->addAction(databrowser->toggleViewAction()); viewMenu->addAction(dataeditor->toggleViewAction()); viewMenu->addAction(simcontrol->toggleViewAction()); QMenu * simulationMenu = this->menuBar()->addMenu(tr("Simulation")); simulationMenu->addAction("Run",simcontrol->getStepEngine(),SLOT(startPull()),QKeySequence("Ctrl+R")); simulationMenu->addAction("Pause",simcontrol->getStepEngine(),SLOT(stopPull()),QKeySequence("Ctrl+P")); simulationMenu->addAction("Reset to Initial Conditions",databackend->getUndoStack(),SLOT(undo()),QKeySequence("Ctrl+Shift+R")); QAction * a=simulationMenu->addAction("Warn Before Clearing Undo Stack"); a->setCheckable(true); a->setChecked(true); QObject::connect(a,SIGNAL(toggled(bool)),databackend,SLOT(setWarning(bool))); QMenu * dataMenu = this->menuBar()->addMenu(tr("Data")); dataMenu->addAction("Clear All Objects",databackend->getDataInserter(),SLOT(clearObjects())); dataMenu->addAction("Clear All Forces",databackend->getDataInserter(),SLOT(clearForces())); dataMenu->addAction("Clear All Macros",databackend->getDataInserter(),SLOT(clearMacros())); dataMenu->addAction("Clear All Constants",databackend->getDataInserter(),SLOT(clearConstants())); QMenu * helpMenu = this->menuBar()->addMenu(tr("Help")); helpMenu->addAction("Manual",this,SLOT(showManual())); helpMenu->addAction("About",this,SLOT(showAbout())); }
/*-------------------------------------------------------------------------- | | macroLd | | This command loads a macro into cache memory. If the macro | of the same name already exists in the cache memory, it is first | deleted before the new macro is loaded. | /+--------------------------------------------------------------------------*/ int macroLd(int argc, char *argv[], int retc, char *retv[]) { int i; node *codeTree; int res; int ret = 0; if (argc == 1) { Werrprintf("Usage -- %s('macro1'[,'macro2',...])",argv[0]); ABORT; } else { if (retc > 1) WstoreMessageOn(); for (i=1;i<argc;i++) { TPRINT1("macroLd: removing macro \"%s\"\n",argv[i]); rmMacro(argv[i]); renameAllocation("newMacro","tmpSavenewMacro"); if (argv[i][0] == '/') { char *s; s = strrchr(argv[i],'/'); rmMacro(s+1); if ( (codeTree = loadMacro(argv[i],NOSEARCH, &res)) ) { TPRINT1("macroLd: saving macro \"%s\"\n",s+1); saveMacro(s+1,codeTree,PERMANENT); ret = 1; if (!retc) Winfoprintf("Loaded macro '%s'",s+1); else if (retc > 1) sprintf(storeMessage,"Loaded macro '%s'",s+1); } } else if ( (codeTree = loadMacro(argv[i],SEARCH, &res)) ) { TPRINT1("macroLd: saving macro \"%s\"\n",argv[i]); saveMacro(argv[i],codeTree,PERMANENT); ret = 1; if (!retc) Winfoprintf("Loaded macro '%s'",argv[i]); else if (retc > 1) sprintf(storeMessage,"Loaded macro '%s'",argv[i]); } releaseAllWithId("newMacro"); renameAllocation("tmpSavenewMacro","newMacro"); } if (retc) { retv[0] = intString( ret ); if (retc > 1) { retv[1] = newString(storeMessage); WstoreMessageOff(); } } } RETURN; }