private void btnClear_Click(object sender, RoutedEventArgs e)
        {
            if (canvasMain.Children.Count == 0)
            {
                return;
            }
            else
            {
                if (MessageBox.Show("Are you sure to clear the Page", "Clear?", MessageBoxButton.YesNo) == MessageBoxResult.No)
                {
                    return;
                }
            }

            grpStateOptions.IsEnabled = false;
            grpTransOptions.IsEnabled = false;
            btnInitial.IsChecked      = btnFinal.IsChecked = false;

            TransitionDiagram newDiag = null;

            switch (machine)
            {
            case machines.Dfa:
                newDiag = new DfaTransitionDiagram();
                break;

            case machines.Nfa:
                newDiag = new NfaTransitionDiagram();
                break;

            case machines.Moore:
                newDiag = new MooreTransitionDiagram();
                break;

            case machines.Mealy:
                newDiag = new MealyTransitionDiagram();
                break;

            case machines.Turing:
                newDiag = new TuringTransitionDiagram();
                break;
            }

            if (newDiag != null)
            {
                newDiag.inputs     = diagram.inputs;
                newDiag.noOfInputs = diagram.noOfInputs;
                newDiag.outputs    = diagram.outputs;
                canvasMain.Children.Clear();
                newDiag.setCanvas(canvasMain);
                diagram = newDiag;
            }
        }