void CtrlrLuaMethodEditor::addNewMethod(ValueTree parentGroup) { AlertWindow wnd(METHOD_NEW, String::empty, AlertWindow::InfoIcon, this); wnd.addTextEditor ("methodName", "myNewMethod", "Method name", false); wnd.addComboBox ("templateList", getMethodManager().getTemplateList(), "Initialize from template"); wnd.addButton ("OK", 1, KeyPress(KeyPress::returnKey)); wnd.addButton ("Cancel", 0, KeyPress(KeyPress::escapeKey)); if (wnd.runModalLoop()) { const String methodName = wnd.getTextEditorContents("methodName"); if (getMethodManager().isValidMethodName(methodName)) { const String initialCode = getMethodManager().getDefaultMethodCode(methodName, wnd.getComboBoxComponent("templateList")->getText()); getMethodManager().addMethod (parentGroup, wnd.getTextEditorContents("methodName"), initialCode, String::empty); } else { WARN("Invalid method name, please correct"); } } updateRootItem(); saveSettings(); // save settings }
CtrlrLuaMethodEditor::CtrlrLuaMethodEditor (CtrlrPanel &_owner) : owner(_owner), methodEditArea (nullptr), methodTree(nullptr), resizer(nullptr), caseCansitive(true), lookInString("Current"), searchInString("Editor"), findDialogActive(false), currentSearchString(String::empty) { addAndMakeVisible (resizer = new StretchableLayoutResizerBar (&layoutManager, 1, true)); addAndMakeVisible (methodTree = new CtrlrValueTreeEditorTree ("LUA METHOD TREE")); addAndMakeVisible (methodEditArea = new CtrlrLuaMethodEditArea(*this)); methodTree->setRootItem (new CtrlrValueTreeEditorItem(*this, getMethodManager().getManagerTree(), Ids::luaMethodName)); getMethodManager().setMethodEditor (this); methodTree->setMultiSelectEnabled (true); layoutManager.setItemLayout (0, -0.001, -1.0, -0.29); layoutManager.setItemLayout (1, 8, 8, 8); layoutManager.setItemLayout (2, -0.001, -1.0, -0.69); addKeyListener (this); getMethodManager().setMethodEditor (this); componentTree.addListener (this); setSize (700, 600); }
void CtrlrLuaMethodEditor::removeGroup(ValueTree parentGroup) { if (parentGroup.getNumChildren() > 0) { if (SURE("Remove group: "+parentGroup.getProperty(Ids::name).toString()+" ?", this)) { getMethodManager().removeGroup(parentGroup); } } else { getMethodManager().removeGroup(parentGroup); } updateRootItem(); saveSettings(); // save settings }
CtrlrLuaMethod *CtrlrLuaMethodEditor::setEditedMethod (const String &methodName) { CtrlrLuaMethod *method = getMethodManager().getMethodByName(methodName); if (method != nullptr) { return (setEditedMethod (method->getUuid())); } return (nullptr); }
void CtrlrLuaMethodEditor::addNewGroup(ValueTree parentGroup) { AlertWindow wnd(GROUP_NEW, String::empty, AlertWindow::InfoIcon, this); wnd.addTextEditor ("groupName", "New Group", "Group name", false); wnd.addButton ("OK", 1, KeyPress(KeyPress::returnKey)); wnd.addButton ("Cancel", 0, KeyPress(KeyPress::escapeKey)); if (wnd.runModalLoop()) { if (parentGroup.hasType (Ids::luaMethodGroup)) { getMethodManager().addGroup (wnd.getTextEditorContents("groupName"), parentGroup.getProperty(Ids::uuid).toString()); } else { getMethodManager().addGroup (wnd.getTextEditorContents("groupName")); } } updateRootItem(); saveSettings(); // save settings }
CtrlrLuaMethodEditor::CtrlrLuaMethodEditor (CtrlrPanel &_owner) : owner(_owner), methodEditArea (nullptr), methodTree(nullptr), resizer(nullptr) { addAndMakeVisible (resizer = new StretchableLayoutResizerBar (&layoutManager, 1, true)); addAndMakeVisible (methodTree = new CtrlrValueTreeEditorTree ("LUA METHOD TREE")); addAndMakeVisible (methodEditArea = new CtrlrLuaMethodEditArea(*this)); methodTree->setRootItem (new CtrlrValueTreeEditorItem(*this, getMethodManager().getManagerTree(), Ids::luaMethodName)); getMethodManager().setMethodEditor (this); methodTree->setMultiSelectEnabled (true); layoutManager.setItemLayout (0, -0.001, -1.0, -0.29); layoutManager.setItemLayout (1, 8, 8, 8); layoutManager.setItemLayout (2, -0.001, -1.0, -0.69); addKeyListener (this); getMethodManager().setMethodEditor (this); componentTree.addListener (this); setSize (700, 600); }
void CtrlrLuaMethodEditor::addMethodFromFile(ValueTree parentGroup) { FileChooser fc ("Select LUA files", lastBrowsedSourceDir, "*.lua;*.txt"); if (fc.browseForMultipleFilesToOpen ()) { Array <File> results = fc.getResults(); for (int i=0; i<results.size(); i++) { getMethodManager().addMethodFromFile (parentGroup, results[i]); } } updateRootItem(); saveSettings(); // save settings }
void CtrlrLuaMethodEditor::searchResultClicked (const String &methodName, const int lineNumber, const int resultPositionStart, const int resultPositionEnd) { // _DBG("CtrlrLuaMethodEditor::searchResultClicked"); // _DBG("\t"+methodName+" ln:"+STR(lineNumber)+" s:"+STR(resultPositionStart)+" e:"+STR(resultPositionEnd)); CtrlrLuaMethod *method = getMethodManager().getMethodByName(methodName); if (method != nullptr) { setEditedMethod (method->getUuid()); if (method->getCodeEditor()) { CodeEditorComponent *ed = method->getCodeEditor()->getCodeComponent(); CodeDocument &doc = method->getCodeEditor()->getCodeDocument(); if (ed) { ed->selectRegion (CodeDocument::Position(doc,resultPositionStart), CodeDocument::Position(doc,resultPositionEnd)); } } } }
CtrlrLuaMethod *CtrlrLuaMethodEditor::setEditedMethod (const Uuid &methodUuid) { CtrlrLuaMethod *method = getMethodManager().getMethodByUuid(methodUuid); if (method != nullptr) { if (method->getCodeEditor() == nullptr) { /* the method is not yest beeing edited */ createNewTab (method); } else { /* it looks like the method is edited, switch to the tab that has it */ setCurrentTab (method); } return (method); } return (nullptr); // A method has been selected that's invalid }
void CtrlrLuaMethodEditor::itemClicked (const MouseEvent &e, ValueTree &item) { if (e.mods.isPopupMenu()) { if ( item.hasType (Ids::luaManagerMethods) || item.hasType (Ids::luaMethodGroup) ) { PopupMenu m; m.addSectionHeader ("Group operations"); m.addItem (1, "Add method"); m.addItem (2, "Add files"); m.addItem (3, "Add group"); m.addSeparator(); if (item.hasType (Ids::luaMethodGroup)) { m.addItem (4, "Remove group"); m.addItem (5, "Rename group"); } m.addSeparator(); m.addItem (6, "Sort by name"); m.addItem (7, "Sort by size"); const int ret = m.show(); if (ret == 1) { addNewMethod (item); } else if (ret == 2) { addMethodFromFile (item); } else if (ret == 3) { addNewGroup (item); } else if (ret == 4) { removeGroup (item); } else if (ret == 5) { renameGroup (item); } else if (ret == 6) { ChildSorter sorter(true); getMethodManager().getManagerTree().sort (sorter, nullptr, false); triggerAsyncUpdate(); } else if (ret == 7) { ChildSorter sorter(false); getMethodManager().getManagerTree().sort (sorter, nullptr, false); triggerAsyncUpdate(); } } else if (item.hasType(Ids::luaMethod)) { PopupMenu m; m.addSectionHeader ("Method " + item.getProperty(Ids::luaMethodName).toString()); if ((int)item.getProperty(Ids::luaMethodSource) == CtrlrLuaMethod::codeInFile) { if (!File(item.getProperty(Ids::luaMethodSourcePath)).existsAsFile()) { m.addItem (12, "Locate file on disk"); } } m.addSeparator(); m.addItem (2,"Remove method"); const int ret = m.show(); if (ret == 11) { /* convert a in-memory method to a file based one */ } else if (ret == 12) { /* locate a missing file on disk */ } else if (ret == 10) { /* convert a method from a file to a in-memory property */ } else if (ret == 2) { /* remove a method */ if (SURE("Delete the selected method?", this)) { { methodEditArea->closeTabWithMethod (item); getMethodManager().removeMethod (item.getProperty(Ids::uuid).toString()); } triggerAsyncUpdate(); } } } } }