###
# wxRuby3 wxWidgets interface director
# Copyright (c) M.J.N. Corino, The Netherlands
###

require_relative './window'

module WXRuby3

  class Director

    class ToolBar < Window

      def setup
        spec.items << 'wxToolBarToolBase'
        super
        # This class is an 'opaque handle' so these methods don't actually
        # work to change the state; therefore hide them.
        spec.ignore %w[
          wxToolBarToolBase::Enable
          wxToolBarToolBase::Toggle
          wxToolBarToolBase::SetToggle
          wxToolBarToolBase::SetShortHelp
          wxToolBarToolBase::SetLongHelp
          wxToolBarToolBase::SetNormalBitmap
          wxToolBarToolBase::SetDisabledBitmap
          wxToolBarToolBase::SetLabel
          wxToolBarToolBase::SetClientData
          wxToolBarToolBase::Detach
          wxToolBarToolBase::Attach
          ]
        spec.no_proxy 'wxToolBarToolBase'
        # more sensible name to use
        spec.rename_for_ruby('ToolBarTool' => 'wxToolBarToolBase')
        # Ensure that the C++ wxToolBar(Base) implementation of UpdateWindowUI
        # is called internally, so that UpdateUIEvents are also sent to each
        # button within the toolbar. This means update_window_ui can't be
        # overridden for this class in Ruby, but unlikely a real problem.
        spec.no_proxy 'wxToolBar::UpdateWindowUI'
        # problematic (and probably not very useful to overload)
        spec.no_proxy %w[
          wxToolBar::AddControl
          wxToolBar::AddSeparator
          wxToolBar::FindControl
          wxToolBar::FindToolForPosition
          wxToolBar::GetToolClientData
          wxToolBar::InsertControl
          wxToolBar::InsertSeparator
          wxToolBar::RemoveTool
          wxToolBar::CreateTool
          ]
        # These don't work as you would think...
        spec.ignore [
          'wxToolBar::AddTool(wxToolBarToolBase *)',
          'wxToolBar::InsertTool(size_t,wxToolBarToolBase *)'
          ]
      end
    end # class Object

  end # class Director

end # module WXRuby3