class ActionKnob extends KnobController
  main_icon: 'gears'
  css_classes: 'action_menu'
  elem_label: 'Action Menu'
  make_panel: ->
    super(@elem_tmpl)
class ActionKnob extends KnobController
  main_icon: 'gears'
  css_classes: 'action_menu'
  elem_label: 'Action Menu'
  make_panel: ->
    super(@elem_tmpl)ColoredTreePicker = require(‘coloredtreepicker’).ColoredTreePicker @verb_box = @elem.append($(‘
    @elem.hide()
    @watch_for(':visible', null, () => @reveal())
  fp_spec:
    make_frame: true
    suppress_corner_buttons: true
    propagate:
      always_show_NEWS_buttons: false
      make_frame: false
      color_panels_uniquely: false
      inject_tree_path: false
      suppress_corner_buttons: true  # just suppress the close button
      suppress_content_area: false
      always_show_close_button: false
      show_NEWS_handle: {} # supress side drop zones
  get_formurlaManager: ->
    @fractalcomponent.get_formurlaManager()
  get_unique_panel_name: () ->
    return "knob_" + (new Date()).getTime()
  get_formurla: () ->
    return "#{@function_spec.name}(g=#{@function_spec.g})"
  reveal: () ->
    if not @my_panel
      FractalPanel = require('fractalpanel').FractalPanel
      @my_panel = new FractalPanel @target, @get_unique_panel_name(), @fp_spec
      forMan = @get_formurlaManager() # HACK? Perhaps the global formurlaManager should NOT be used?
      menuFunc = forMan.resolve_function(@function_spec.name)
      src = @get_formurla()alert src
      formurla = forMan.compile_formurla(src)
      expression = forMan.get_first_expression(formurla)
      @menu_widget = menuFunc.apply(forMan,[@my_panel.first_frac, expression])One should not normally do such intimate things TO somebody else, but this means that the menu_widgets do not have to be subclasses of the same parent just to inherit a method like register_knob_which_controls_me()
      @menu_widget.knob_which_controls_me = @
(exports ? this).ActionKnob = ActionKnob