WoColorWheel Function

Creates a color wheel that can be used to modify a single color in the current color table.

Usage

wid = WoColorWheel(tool_name, color_index, value_changed_cb)

Parameters

tool_name — A string containing the unique name of a VDA Tool.

color_index — The index of the color to display in the color wheel.

value_changed_cb — A string containing the name of a callback procedure to call when the color value changes.

Keywords

None.

Returned Value

wid — The widget ID of the color wheel.

Callback Parameters

The “value changed” callback must have the following two parameters:

tool_name — A string containing the unique name of a VDA Tool.

color_index — The index of the color displayed in the color wheel.

Discussion

The color wheel modifies the current color table directly. WoColorWheel is used by the WzColorEdit VDA Tool.

Example

This is the callback that is called when the color wheel value is changed.

PRO ValueChangedCB, tool_name, color_index
   print, 'Value changed: ', tool_name, color_index
END

This callback is called when the Color Wheel or Quit button is pressed. If Color Wheel is pressed, a color wheel appears for the selected color index. If the Quit button is pressed, the shell is destroyed.

PRO ButtonCB, wid, which
   DECLARE FUNC, TmGetAttribute
   DECLARE FUNC, WoColorWheel
   ; Get the tool name from user data.
   tool_name = WwGetValue (wid, /Userdata)
   CASE which OF
   1: BEGIN ; Color Wheel
      ; Get the selected color index.
      color_om = TmGetAttribute (tool_name, 'TM', 'COLOR_OM')
      index = WwGetValue (color_om) - 1
      ; Display the color wheel.
      wheel = WoColorWheel (tool_name, index, 'ValueChangedCB')
      END
   2: BEGIN ; Quit
      top = TmGetTop (tool_name)
      status = WwSetValue (top, /Close)
      END
   ENDCASE
END

This program demonstrates the WoColorWheel function. It creates a simple tool that allows the user to display the color wheel for any of the first 10 colors in the current color table.

PRO WoColorWheel_test
   DECLARE FUNC, TmGetUniqueToolName
   DECLARE FUNC, TmSetAttribute
   ; Initialize the tool manager.
   TmInit
   ; Get a new unique tool name.
   tool_name = TmGetUniqueToolName ('WoColorWheel_test')
   ; Initialize the top-level shell, and register the tool.
   top = WwInit ('WoColorWheel_test', 'wocolorwheel_test', $
      layout, 'WoDestroyCB', 	Userdata = tool_name, $ 
      /Vertical, title = tool_name)
         TmRegister, tool_name, top
   ; Create the color option menu and the button box.
   color_menu = {, callback: 'TmNoOpCB', $
      button: '0', button: '1', button: '2', $
      button: '3', button: '4', button: '5', $
      button: '6', button: '7', button: '8', $
      button: '9', button: '10'}
   color_om = WwOptionMenu (layout, 'Color Index', color_menu)
   button_wid = WwButtonBox (layout, ['Color Wheel...', $
      'Quit'], 'ButtonCB', buttons = buttons)
   ; Save the attribute information needed for the callbacks.
   status = TmSetAttribute (tool_name, 'TM', 'COLOR_OM', $
      color_om)
   FOR i=0L, (N_ELEMENTS(buttons) - 1) DO BEGIN
      status = WwSetValue (buttons(i), Userdata =    tool_name)
   ENDFOR
   ; Display the tool.
   status = WwSetValue (top, /Display)
   WwLoop, /NoBlock
END