##### verify required programs ##################

if( NOT DEFINED INTLTOOL_EXTRACT_EXECUTABLE )
  find_program( INTLTOOL_EXTRACT_EXECUTABLE
    NAMES intltool-extract
    HINTS "${TDE_PREFIX}/bin"
  )
  if( NOT INTLTOOL_EXTRACT_EXECUTABLE )
    tde_message_fatal( "intltool-extract is required but not found" )
  endif( )
endif( )


##### prepare xscreensavers data files ##########

message( STATUS "Prepare to extract strings from xscreensaver data files..." )

include( ${CMAKE_SOURCE_DIR}/FindXscreensaver.cmake )
string( REPLACE ":" ";" SEARCH_XSCREENSAVER_CONFIG_DIRS "${XSCREENSAVER_CONFIG_DIRS}" )

unset( _xsavers_l10n )
foreach( XSCREENSAVER_CONFIG_DIR IN LISTS SEARCH_XSCREENSAVER_CONFIG_DIRS )
  file( GLOB _xsaver_files
        RELATIVE "${XSCREENSAVER_CONFIG_DIR}"
        ${XSCREENSAVER_CONFIG_DIR}*.xml )
  list( SORT _xsaver_files )
  foreach( _xsaver_file ${_xsaver_files} )
    string( REGEX REPLACE "\\.xml\$" "" _xsaver_name "${_xsaver_file}" )
    if( NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ScreenSavers/${_xsaver_name}.desktop" )
        file( READ "${XSCREENSAVER_CONFIG_DIR}${_xsaver_file}" _xsaver_xml )
        string( REGEX REPLACE
            ".*<screensaver[^>]*_label=\"([^\"]*)\".*" "\\1"
            _xsaver_label "${_xsaver_xml}" )
        message( STATUS "Create desktop file for ${_xsaver_label} (${_xsaver_name})" )
        execute_process(
            COMMAND ldd "${XSCREENSAVER_DIR}/${_xsaver_name}"
            WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
            OUTPUT_VARIABLE _xsaver_libs
        )
        set( NAME "${_xsaver_name}" )
        set( LABEL "${_xsaver_label}" )
        if( "${_xsaver_libs}" MATCHES "libGL" )
          set( GL1 "X-TDE-Category=OpenGL Screen Savers" )
          set( GL2 "X-TDE-Type=OpenGL" )
        else( )
          set( GL1 "" )
          set( GL2 "" )
        endif( )
        configure_file(
            ${CMAKE_CURRENT_SOURCE_DIR}/ScreenSavers/xscreensaver.template
            ${CMAKE_CURRENT_SOURCE_DIR}/ScreenSavers/${_xsaver_name}.desktop
            @ONLY )
    endif( )

    execute_process(
        COMMAND ${INTLTOOL_EXTRACT_EXECUTABLE}
          --type=gettext/xml --srcdir ${XSCREENSAVER_CONFIG_DIR} ${_xsaver_file}
        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ScreenSavers
        OUTPUT_VARIABLE _xsaver_output
    )
    file( RENAME
        "${CMAKE_CURRENT_SOURCE_DIR}/ScreenSavers/${_xsaver_file}.h"
        "${CMAKE_CURRENT_SOURCE_DIR}/ScreenSavers/${_xsaver_file}.h.tde_l10n" )
    list( APPEND _xsavers_l10n "ScreenSavers/${_xsaver_file}.h.tde_l10n" )
  endforeach( )
endforeach( )


##### create translation templates ##############

tde_l10n_create_template(
    CATALOG "kxsconfig"
    SOURCES
        "."
        ${_xsavers_l10n}
    KEYWORDS
        N_
)
