/// <summary> /// Set active tool. /// </summary> /// <param name="toolType">Tool type.</param> public void SetTool(ToolType toolType) { //if (toolType == currentTool) //nothing to do? //return; if (currentTool != ToolType.Add && toolType != currentTool) //skip tools whithout buttons { previousTool = currentTool; } currentTool = toolType; //do cancel on curent tool if (tool != null) { tool.OnCancel(); } switch (toolType) { case ToolType.HandTool: tool = handTool; handToolButton.SetSelected(); break; case ToolType.Select: tool = selectSingleTool; selectToolButton.SetSelected(); break; case ToolType.SelectColor: tool = selectColorTool; selectColorToolButton.SetSelected(); break; case ToolType.SelectShape: tool = selectShapeTool; selectShapeToolButton.SetSelected(); break; case ToolType.Rotate: tool = rotateTool; break; case ToolType.Clone: tool = cloneTool; cloneToolButton.SetSelected(); break; case ToolType.Colour: tool = colorTool; colorToolButton.SetSelected(); break; case ToolType.Add: tool = addTool; ToolButton.UnselectAll(); break; case ToolType.Measure: tool = measureTool; measureToolButton.SetSelected(); break; case ToolType.MultiTool: tool = multiTool; multiToolButton.SetSelected(); break; } OnToolChange?.Invoke(toolType); }