void ScoreErrorsDlg::Refresh()
{
	itmSel.ResetContent();

	ProjectItem *pi = prjTree->FirstChild(theProject->nlInfo);
	while (pi)
	{
		if (pi->GetType() == PRJNODE_NOTEFILE)
		{
			int ndx = itmSel.AddString(pi->GetName());
			itmSel.SetItemDataPtr(ndx, (void*)pi);
		}
		pi = prjTree->NextSibling(pi);
	}
	itmSel.SetCurSel(0);
	ShowErrors();
}
int InstrList::Save(XmlSynthElem *node)
{
	XmlSynthElem *child = node->AddChild("instrlib");

	ProjectItem *pi = prjTree->FirstChild(this);
	while (pi)
	{
		if (pi->GetType() == PRJNODE_INSTR)
		{
			XmlSynthElem *instr = child->AddChild("instr");
			InstrItem *ii = (InstrItem *) pi;
			ii->Save(instr);
			delete instr;
		}
		pi = prjTree->NextSibling(pi);
	}
	delete child;
	return 0;
}
void WavetableSelectDlg::OnInitDialog(wxInitDialogEvent& evt)
{
	CenterOnParent();
	wxWindow *frm = FindWindow("IDC_WT_GRAPH");
	if (!frm)
		return;
	wxPoint pos = frm->GetPosition();
	wxSize  siz = frm->GetSize();
	frm->Destroy();

	plotter = new WavetableDraw(this, 99, pos, siz);
	plotter->index = initSelect;

	lst = (wxListBox*)FindWindow("IDC_WT_LIST");
	lst->Append("Sin", (void*)0);
	lst->Append("Sawtooth (sum)", (void*)1);
	lst->Append("Square (sum)", (void*)2);
	lst->Append("Triangle (sum)", (void*)3);
	lst->Append("Pulse (sum)", (void*)4);
	lst->Append("Sawtooth (direct)", (void*)5);
	lst->Append("Square (direct)", (void*)6);
	lst->Append("Triangle (direct)", (void*)7);
	lst->Append("Sawtooth (positive)", (void*)8);
	lst->Append("Triangle (positive)", (void*)9);

	int selected = initSelect;
	ProjectItem *pi = prjTree->FirstChild(theProject->synthInfo);
	while (pi)
	{
		if (pi->GetType() == PRJNODE_WVTABLE)
		{
			WavetableItem *wi = (WavetableItem*)pi;
			int index = lst->Append(wi->GetName(), (void*)(long)wi->GetID());
			if (wi->GetID() == initSelect)
				selected = index;
		}
		pi = prjTree->NextSibling(pi);
	}
	if ((unsigned int)selected < lst->GetCount())
		lst->SetSelection(selected);
}
int InstrList::NextInum()
{
	int inum = 1;
	InstrConfig *ic = 0;
	ProjectItem *pi = prjTree->FirstChild(theProject->instrInfo);
	while (pi)
	{
		if (pi->GetType() == PRJNODE_INSTR)
		{
			InstrItem *ii = (InstrItem *) pi;
			ic = ii->GetConfig();
			if (ic && ic->inum < 16384 && ic->inum >= inum)
				inum = ic->inum+1;
		}
		pi = prjTree->NextSibling(pi);
	}
	// check against library values...
	while ((ic = theProject->mgr.FindInstr(inum)) != 0)
		inum++;
	return inum;
}