void CtrlrLuaMethodEditor::saveSettings() { String settings; StringArray openedMethod; for (int i=0; i<methodEditArea->getTabs()->getNumTabs(); i++) { CtrlrLuaMethodCodeEditor *ed = dynamic_cast<CtrlrLuaMethodCodeEditor*>(methodEditArea->getTabs()->getTabContentComponent(i)); if (ed != nullptr) { if (ed->getMethod()) { openedMethod.add (ed->getMethod()->getUuid().toString()); } } } if (methodTree->getRootItem()) { ScopedPointer <XmlElement> treeState(methodTree->getOpennessState(true)); if (treeState) { settings << treeState->createDocument(""); settings << ";"; } settings << openedMethod.joinIntoString(":"); componentTree.setProperty (Ids::luaMethodEditor, settings, nullptr); } }
void CtrlrLuaMethodCodeEditor::findInOpened(const String &search) { if (owner.getTabs() == nullptr) return; StringArray names = owner.getTabs()->getTabNames(); owner.getMethodEditArea()->insertOutput("\n\nSearching for: \""+search+"\" in all opened methods (double click line to jump)\n", Colours::darkblue); for (int i=0; i<owner.getTabs()->getNumTabs(); i++) { CtrlrLuaMethodCodeEditor *codeEditor = dynamic_cast<CtrlrLuaMethodCodeEditor*>(owner.getTabs()->getTabContentComponent(i)); if (codeEditor != nullptr ) { CodeDocument &doc = codeEditor->getCodeDocument() ; Array<Range<int> > results = searchForMatchesInDocument (doc, search); for (int j=0; j<results.size(); j++) { reportFoundMatch (doc, names[i], results[j]); } } } owner.getMethodEditArea()->getLowerTabs()->setCurrentTabIndex(0,true); }
void CtrlrLuaMethodEditor::saveAndCompilAllMethods() { for (int i=0; i<getTabs()->getNumTabs(); i++) { CtrlrLuaMethodCodeEditor *ed = dynamic_cast<CtrlrLuaMethodCodeEditor*> (getTabs()->getTabContentComponent (i)); if (ed) { ed->saveAndCompileDocument(); } } }
void CtrlrLuaMethodEditor::valueTreePropertyChanged (ValueTree &treeWhosePropertyHasChanged, const Identifier &property) { if (property == Ids::luaMethodEditorFont || property == Ids::luaMethodEditorBgColour) { for (int i=0; i<methodEditArea->getTabs()->getNumTabs(); i++) { CtrlrLuaMethodCodeEditor *ed = dynamic_cast<CtrlrLuaMethodCodeEditor*>(methodEditArea->getTabs()->getTabContentComponent(i)); if (ed != nullptr) { ed->setFontAndColour (owner.getOwner().getFontManager().getFontFromString (componentTree.getProperty(Ids::luaMethodEditorFont)), VAR2COLOUR(componentTree.getProperty(Ids::luaMethodEditorBgColour))); } } } }
void CtrlrLuaMethodEditor::createNewTab (CtrlrLuaMethod *method) { if (method == nullptr) { jassertfalse; // don't do that return; } CtrlrLuaMethodCodeEditor *methodEditor = new CtrlrLuaMethodCodeEditor (*this, method); methodEditor->addKeyListener (this); methodEditArea->getTabs()->addTab (method->getName(), Colours::white, methodEditor, true, -1); methodEditArea->getTabs()->setCurrentTabIndex (methodEditArea->getTabs()->getNumTabs() - 1, true); saveSettings(); // save settings }
void CtrlrLuaMethodEditor::highlightCode (const String &methodName, const int lineNumber) { CtrlrLuaMethod *method = setEditedMethod(methodName); if (method) { CtrlrLuaMethodCodeEditor *editor = getEditorForMethod (method); if (editor) { editor->gotoLine (lineNumber, true); } } }
CtrlrLuaMethodCodeEditor *CtrlrLuaMethodEditor::getEditorForMethod (CtrlrLuaMethod *method) { for (int i=0; i<methodEditArea->getTabs()->getNumTabs(); i++) { if (methodEditArea->getTabs()->getTabContentComponent(i)) { CtrlrLuaMethodCodeEditor *editor = dynamic_cast<CtrlrLuaMethodCodeEditor *>(methodEditArea->getTabs()->getTabContentComponent(i)); if (editor) { if (editor->getMethod() == method) return (editor); } } } return (nullptr); }
void CtrlrLuaMethodEditArea::closeTabWithMethod(const ValueTree &item) { for (int i=0; i<upperTabs->getNumTabs(); i++) { CtrlrLuaMethodCodeEditor *ed = dynamic_cast<CtrlrLuaMethodCodeEditor*>(upperTabs->getTabContentComponent(i)); if (ed != nullptr) { if (ed->getMethod()->getUuid() == item.getProperty(Ids::uuid).toString()) { upperTabs->removeTab (i); upperTabs->setCurrentTabIndex(i == 0 ? i+1 : i-1 , true); break; } } } }
void CtrlrLuaMethodEditor::setCurrentTab (CtrlrLuaMethod *methodToSetAsCurrent) { for (int i=0; i<methodEditArea->getTabs()->getNumTabs(); i++) { if (methodEditArea->getTabs()->getTabContentComponent(i)) { CtrlrLuaMethodCodeEditor *editor = dynamic_cast<CtrlrLuaMethodCodeEditor *>(methodEditArea->getTabs()->getTabContentComponent(i)); if (editor) { if (editor->getMethod() == methodToSetAsCurrent) { methodEditArea->getTabs()->setCurrentTabIndex (i); return; } } } } }
void CtrlrLuaMethodEditor::menuItemSelected(int menuItemID, int topLevelMenuIndex) { if (menuItemID == 2 && topLevelMenuIndex == 0) { if (getCurrentEditor()) { getCurrentEditor()->saveDocument(); } } else if (menuItemID == 3 && topLevelMenuIndex == 0) { if (getCurrentEditor()) { getCurrentEditor()->saveAndCompileDocument(); } } else if (menuItemID == 4 && topLevelMenuIndex == 0) { for (int i=0; i<getTabs()->getNumTabs(); i++) { CtrlrLuaMethodCodeEditor *ed = dynamic_cast<CtrlrLuaMethodCodeEditor*> (getTabs()->getTabContentComponent (i)); if (ed) { ed->saveAndCompileDocument(); } } } else if (menuItemID == 4 && topLevelMenuIndex == 1) { methodEditArea->showFindDialog(); } else if (menuItemID == 5 && topLevelMenuIndex == 1) { CtrlrLuaMethodCodeEditorSettings s(*this); CtrlrDialogWindow::showModalDialog ("Code editor settings", &s, false, this); componentTree.setProperty (Ids::luaMethodEditorFont, owner.getOwner().getFontManager().getStringFromFont (s.getFont()), nullptr); componentTree.setProperty (Ids::luaMethodEditorBgColour, COLOUR2STR (s.getColour()), nullptr); } }
void CtrlrLuaMethodEditor::updateTabs() { for (int i=0; i<methodEditArea->getTabs()->getNumTabs(); i++) { CtrlrLuaMethodCodeEditor *ed = dynamic_cast<CtrlrLuaMethodCodeEditor*>(methodEditArea->getTabs()->getTabContentComponent(i)); if (ed != nullptr) { if (ed->getMethod()) { if (ed->getMethod()->isValid()) { methodEditArea->getTabs()->setTabBackgroundColour(i, Colours::white); } else { methodEditArea->getTabs()->setTabBackgroundColour(i, Colours::red.brighter(0.6f)); } } } } }
void CtrlrLuaMethodEditor::closeTab(const int tabIndex) { CtrlrLuaMethodCodeEditor *ed = dynamic_cast<CtrlrLuaMethodCodeEditor*>(methodEditArea->getTabs()->getTabContentComponent(tabIndex)); if (ed) { if (ed->getCodeDocument().hasChangedSinceSavePoint()) { if (SURE("There might be some unsaved changes, are you sure?", this)) { methodEditArea->getTabs()->removeTab (tabIndex); } } else { methodEditArea->getTabs()->removeTab (tabIndex); } methodEditArea->getTabs()->setCurrentTabIndex (tabIndex == 0 ? tabIndex+1 : tabIndex-1 , false); saveSettings(); } }