The following lines which are part of /online_dir/TkIrc.pl create a widget to operate the MotorMask of a MultipleMotor.
$Spc::res_h{ blsc} = "momu"; # # # # $Spc::res_h{ mumo_title} = { text => "MultipleMotors"}; $Spc::res_h{ mumo_help} = sub { Util::display_text( "Help MC", ' Some Help text ' )}; $Spc::res_h{ mumo_cmpnd} = { name => "mnchrmtr", unit => "eV"}; $Spc::res_h{ mumo_io1} = { label => { name => "Analyzer"}, checkbutton => { name => "Enable", set_on => sub { my $msk = Spectra::tng_attrLongRd( "mnchrmtr", "MotorMask"); $msk |= 1; Spectra::tng_attrLongWrt( "mnchrmtr", "MotorMask", $msk);}, set_off => sub { my $msk = Spectra::tng_attrLongRd( "mnchrmtr", "MotorMask"); $msk &= ~1; Spectra::tng_attrLongWrt( "mnchrmtr", "MotorMask", $msk);}, get => sub { my $msk = Spectra::tng_attrLongRd( "mnchrmtr", "MotorMask"); if( $msk & 1) { return 1; } else { return 0; }}}}; $Spc::res_h{ mumo_io2} = { label => { name => "Undulator"}, checkbutton => { name => "Enable", set_on => sub { my $msk = Spectra::tng_attrLongRd( "mnchrmtr", "MotorMask"); $msk |= 2; Spectra::tng_attrLongWrt( "mnchrmtr", "MotorMask", $msk);}, set_off => sub { my $msk = Spectra::tng_attrLongRd( "mnchrmtr", "MotorMask"); $msk &= ~2; Spectra::tng_attrLongWrt( "mnchrmtr", "MotorMask", $msk);}, get => sub { my $msk = Spectra::tng_attrLongRd( "mnchrmtr", "MotorMask"); if( $msk & 2) { return 1; } else { return 0; }}}}; # # the motors # $Spc::res_h{ mumo_m1} = { name => "EnergyFMB", unit => "eV"}; $Spc::res_h{ mumo_m2} = { name => "Analyzer", unit => "eV"}; $Spc::res_h{ mumo_m3} = { name => "Undulator", unit => "eV"};