include(${PARAVIEW_USE_FILE})

set(PLUGIN_HDRS
  pqCMBPostProcessingModeBehavior.h
)

set(PLUGIN_SRCS
  pqCMBPostProcessingModeBehavior.cxx
)

set(PLUGIN_RSRCS
  pqCMBPostProcessingModeBehavior.qrc
)

set(PLUGIN_UIS
  pqCMBPostProcessingModeBehavior.ui
)

set(PLUGIN_CONFIG_XMLS
  postprocessing-filters.xml
  postprocessing-sources.xml
)

# Before we process PLUGIN_RSRCS, append an additional entry
# that we generate from configuration XMLs:
set(generated_rsrc "${CMAKE_CURRENT_BINARY_DIR}/cmbPostProcessingModePluginConfig.qrc")
generate_qt_resource_from_files(
  "${generated_rsrc}"
  "/cmbPostProcessingModePlugin/Configuration"
  "${PLUGIN_CONFIG_XMLS}"
)
list(APPEND PLUGIN_RSRCS "${generated_rsrc}")

# Register the behavior with ParaView
add_paraview_action_group(PLUGIN_ACTION_IFACES PLUGIN_ACTION_IFACE_SRCS
  CLASS_NAME pqCMBPostProcessingModeBehavior
  GROUP_NAME "ToolBar/PostProcessing"
)

# Generate lots of intermediate files:
pv_qt_wrap_cpp(PLUGIN_MOC_SRCS ${PLUGIN_HDRS})
pv_qt_wrap_ui(UI_BUILT_SOURCES ${PLUGIN_UIS})
pv_qt_add_resources(RCS_SOURCES ${PLUGIN_RSRCS})

# Now mush it all into a plugin:
add_paraview_plugin(
  cmbPostProcessingModePlugin "1.0"
  GUI_INTERFACES
    ${PLUGIN_ACTION_IFACES}
  GUI_SOURCES
    ${PLUGIN_HDRS}
    ${PLUGIN_SRCS}
    ${PLUGIN_MOC_SRCS}
    ${PLUGIN_ACTION_IFACE_SRCS}
    ${UI_BUILT_SOURCES}
    ${RCS_SOURCES}
)
target_include_directories(cmbPostProcessingModePlugin
  PRIVATE
    ${cmb_SOURCE_DIR}
    ${cmb_BINARY_DIR}
)
target_link_libraries(cmbPostProcessingModePlugin
  LINK_PUBLIC
    pqApplicationComponents
)
