コード例 #1
0
    static public EncoderConfigurationWindow View(bool gravitatory, EncoderConfiguration ec, bool definedInConfig)
    {
        /*
         * if we are on gravitatory but ec is inertial, then put definedInConfig as false
         * and create a new ec that suits
         */
        if (ec.has_inertia == gravitatory)
        {
            definedInConfig = false;
            if (gravitatory)
            {
                ec = new EncoderConfiguration();                 //LINEAR, not inertial
            }
            else
            {
                ec = new EncoderConfiguration(Constants.EncoderConfigurationNames.ROTARYAXISINERTIAL);
                ec.SetInertialDefaultOptions();
            }
        }

        if (EncoderConfigurationWindowBox == null)
        {
            EncoderConfigurationWindowBox = new EncoderConfigurationWindow(definedInConfig);
        }

        //activate default radiobutton
        if (ec.type == Constants.EncoderType.ROTARYFRICTION)
        {
            EncoderConfigurationWindowBox.radio_rotary_friction.Active = true;
        }
        else if (ec.type == Constants.EncoderType.ROTARYAXIS)
        {
            EncoderConfigurationWindowBox.radio_rotary_axis.Active = true;
        }
        else            //linear
        {
            EncoderConfigurationWindowBox.radio_linear.Active = true;
        }

        if (!ec.has_inertia)
        {
            EncoderConfigurationWindowBox.radio_gravity.Active = true;
        }
        else
        {
            EncoderConfigurationWindowBox.radio_inertia.Active = true;
        }

        EncoderConfigurationWindowBox.check_rotary_friction_inertia_on_axis.Active = ec.rotaryFrictionOnAxis;


        EncoderConfigurationWindowBox.initializeList(ec.type, ec.has_inertia, ec.rotaryFrictionOnAxis, ec.position);

        EncoderConfigurationWindowBox.create_list_d_spinbutton();

        EncoderConfigurationWindowBox.putValuesStoredPreviously(
            ec.d, ec.list_d, ec.D, ec.anglePush, ec.angleWeight,
            ec.inertiaMachine, ec.extraWeightGrams, ec.extraWeightLength,
            ec.has_gearedDown, ec.GearedUpDisplay());


        //id definedInConfig then only few things can change
        if (definedInConfig)
        {
            EncoderConfigurationWindowBox.hbox_encoder_types.Visible = false;
            EncoderConfigurationWindowBox.check_rotary_friction_inertia_on_axis.Visible = false;
            EncoderConfigurationWindowBox.alignment_options.Visible    = false;
            EncoderConfigurationWindowBox.vbox_inertia_calcule.Visible = false;
        }

        EncoderConfigurationWindowBox.encoder_configuration.Show();
        return(EncoderConfigurationWindowBox);
    }