void XMLBarEditor::treeContextRemoveCb(void) { int id = barTree.GetCursor(); if(id > 0) { int line = barTree.GetCursorLine(); barTree.Remove(id); RefreshBar(); barTree.SetCursorLine(line); itemPane.label.SetFocus(); } }
// sets bar being edited void XMLBarEditor::SetBar(XMLToolBar *_bar) { // if changing bar, update current one if not null // before changing it if(bar && bar != _bar) RefreshBar(); bar = _bar; barTree.Clear(); if(!bar) return; buildTree(0, bar); barTree.SetRoot(Null, bar->GetName()); barTree.OpenDeep(0); }
void XMLBarEditor::treeContextAddCb(int mode) { int id = barTree.GetCursor(); int parentId = 0; int childIdx; int newId = 0; XMLToolBarItem item; if(mode > 4) { item.isSeparator = true; mode -= 4; } String lbl = (item.IsSeparator() ? t_("<SEPARATOR>") : ""); Value v = RawPickToValue(item); switch(mode) { case 1: parentId = barTree.GetParent(id); childIdx = barTree.GetChildIndex(parentId, id); newId = barTree.Insert(parentId, childIdx, Null, v, lbl); break; case 2: parentId = barTree.GetParent(id); childIdx = barTree.GetChildIndex(parentId, id); newId = barTree.Insert(parentId, childIdx + 1, Null, v, lbl); break; case 3: newId = barTree.Insert(id, 0, Null, v, ""); break; case 4: newId = barTree.Add(id, Null, v, ""); break; default: NEVER(); } RefreshBar(); barTree.SetCursor(newId); itemPane.label.SetFocus(); }
// refresh current bar void XMLBarEditor::RefreshBar(int treeRoot, XMLToolBar *subBar) { if(!subBar) subBar = bar; if(!subBar) return; subBar->items.Clear(); for(int iChild = 0; iChild < barTree.GetChildCount(treeRoot); iChild++) { int iNode = barTree.GetChild(treeRoot, iChild); XMLToolBarItem const &item = ValueTo<XMLToolBarItem>(barTree.Get(iNode)); subBar->items.Add(new XMLToolBarItem(item, 0)); if(barTree.GetChildCount(iNode)) { subBar->items.Top().subMenu = new XMLToolBar; RefreshBar(iNode, ~subBar->items.Top().subMenu); } else subBar->items.Top().subMenu.Clear(); } }
void XMLBarEditor::treeContextAddCb(int mode) { int id = barTree.GetCursor(); int parentId = 0; int childIdx; int newId = 0; Value v; CreateRawValue<XMLToolBarItem>(v); switch(mode) { case 1: parentId = barTree.GetParent(id); childIdx = barTree.GetChildIndex(parentId, id); newId = barTree.Insert(parentId, childIdx, Null, v, ""); break; case 2: parentId = barTree.GetParent(id); childIdx = barTree.GetChildIndex(parentId, id); newId = barTree.Insert(parentId, childIdx + 1, Null, v, ""); break; case 3: newId = barTree.Insert(id, 0, Null, v, ""); break; case 4: newId = barTree.Add(id, Null, v, ""); break; default: NEVER(); } RefreshBar(); barTree.SetCursor(newId); itemPane.label.SetFocus(); }