set (viewSrcs
  smtkRGGAddMaterialView.cxx
  smtkRGGEditAssemblyView.cxx
  smtkRGGEditCoreView.cxx
  smtkRGGEditDuctView.cxx
  smtkRGGEditMaterialView.cxx
  smtkRGGEditPinView.cxx
  smtkRGGRemoveMaterialView.cxx
)

set (non_ui_srcs
  smtkRGGViewHelper.cxx
  rggAuxiliaryGeometryExtension.cxx
)

set (viewHdrs
  smtkRGGAddMaterialView.h
  smtkRGGEditAssemblyView.h
  smtkRGGEditCoreView.h
  smtkRGGEditDuctView.h
  smtkRGGEditMaterialView.h
  smtkRGGEditPinView.h
  smtkRGGRemoveMaterialView.h
)

set (qtui
  smtkRGGAddMaterialParameters.ui
  smtkRGGEditAssemblyParameters.ui
  smtkRGGEditCoreParameters.ui
  smtkRGGEditDuctParameters.ui
  smtkRGGEditMaterialParameters.ui
  smtkRGGEditPinParameters.ui
  smtkRGGRemoveMaterialParameters.ui
)

set(rggSessionSrcs
  Registrar.cxx
  smtkRGGAutoStart.cxx
  smtkRGGScaleToolBar.cxx
  smtkRGGSelectionBehavior.cxx
)

set(rggSessionHdrs
  Registrar.h
  smtkRGGAutoStart.h
  smtkRGGScaleToolBar.h
  smtkRGGSelectionBehavior.h
)

# put contents of this file in a string in a header. It's not xml, but it still works.
smtk_encode_file("${CMAKE_CURRENT_SOURCE_DIR}/rggResourcePanelConfiguration.json"
  TARGET_OUTPUT rggSMTKResourcePanelJSON)

set(CMAKE_AUTOMOC 1)
set(CMAKE_AUTOUIC 1)

paraview_plugin_add_auto_start(
  CLASS_NAME smtkRGGAutoStart
  INTERFACES auto_start_interfaces
  SOURCES auto_start_sources
  )
paraview_plugin_add_toolbar(
  CLASS_NAME smtkRGGScaleToolBar
  INTERFACES toolbar_interfaces
  SOURCES toolbar_sources)

set(interfaces
  ${auto_start_interfaces}
  ${toolbar_interfaces}
  )

list(APPEND rggSessionSrcs
  ${auto_start_sources}
  ${toolbar_sources}
  )

set(CMAKE_AUTOMOC 1)

smtk_export_header(smtkRGGSession Exports.h)

smtk_add_plugin(smtkRGGSessionPlugin
  REGISTRARS
    smtk::session::rgg::Registrar
    smtk::session::rgg::plugin::Registrar
  MANAGERS
    smtk::operation::Manager
    smtk::resource::Manager
    smtk::view::Manager
  PARAVIEW_PLUGIN_ARGS
    VERSION "1.0"
    UI_INTERFACES
      ${interfaces}
    SOURCES
      ${rggSessionHdrs}
      ${rggSessionSrcs}
      ${qtui}
      ${viewSrcs}
      ${non_ui_srcs}
)
add_dependencies(smtkRGGSession ${rggSMTKResourcePanelJSON})

target_link_libraries(smtkRGGSessionPlugin
  PRIVATE
    ParaView::RemotingClientServerStream
    ParaView::RemotingViews
    smtkCore
    smtkQtExt
    smtkRGGSession
    smtkPQComponentsExt
    smtkQtRGGSession
    smtkQtRGGNuclides
    Qt5::Core
    Qt5::Widgets
    smtkPVServerExt
    vtkSMTKWidgetsExtCS
    vtkSMTKModelExt
    vtkSMTKSourceExt
    )
