private static List<ToolboxTool> GetToolsToDisplay(Book.Book book, string[] idsOfToolsThisVersionKnowsAbout)
{
var toolsThatHaveDataInBookInfo =
book.BookInfo.Tools.Where(t => idsOfToolsThisVersionKnowsAbout.Contains(t.ToolId)).ToList();
var toolsToDisplay = toolsThatHaveDataInBookInfo;
toolsToDisplay.AddRange(
idsOfToolsThisVersionKnowsAbout.Except(
toolsThatHaveDataInBookInfo.Select(t => t.ToolId)).Select(ToolboxTool.CreateFromToolId));
#if __MonoCS__
// Until we get sound working on Linux, there's no point in showing a nonfunctional tool!
toolsToDisplay = toolsToDisplay.Where(t => t.ToolId != TalkingBookTool.StaticToolId).ToList();
#endif
return toolsToDisplay.Where(t => t.Enabled || t.AlwaysEnabled).ToList();
}