示例#1
0
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();
	}
}
示例#2
0
// 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);
}
示例#3
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();
}
示例#4
0
// 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();
	}
}
示例#5
0
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();
}