include(${QT_USE_FILE})

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
include(Qt4WrapTs)

include_directories(
		command
		gui
		gui/fit
		gui/main
		gui/opt
		gui/opt/style
		gui/opt/terminal
		gui/plot
		opt
		opt/style
		opt/terminal
)

set(cueplot_SRC
		command/Fit.cpp
		command/FitModifier.cpp
		command/FitRange.cpp
		command/Plot.cpp
		command/PlotModifier.cpp
		command/PlotRange.cpp
		command/PlotStyle.cpp
		command/PlotTitle.cpp
		command/Splot.cpp
		gui/ConfigDialog.cpp
		gui/ConsoleDialog.cpp
		gui/FileLineEdit.cpp
		gui/FitDialog.cpp
		gui/MainWindow.cpp
		gui/OptionDialog.cpp
		gui/PlotOptionDialog.cpp
		gui/Process.cpp
		gui/RawCommandDialog.cpp
		gui/fit/FitBasicWidget.cpp
		gui/fit/FitModifierWidget.cpp
		gui/fit/FitOthersWidget.cpp
		gui/fit/FitRangeWidget.cpp
		gui/main/PlotDataWidget.cpp
		gui/main/PlotInputWidget.cpp
		gui/main/PlotListWidget.cpp
		gui/opt/AnglesOptionWidget.cpp
		gui/opt/AxisDataOptionWidget.cpp
		gui/opt/AxisLabelOptionWidget.cpp
		gui/opt/AxisOptionWidget.cpp
		gui/opt/AxisRangeOptionWidget.cpp
		gui/opt/AxisTicsOptionWidget.cpp
		gui/opt/BarOptionWidget.cpp
		gui/opt/BoxWidthOptionWidget.cpp
		gui/opt/DummyOptionWidget.cpp
		gui/opt/EncodingOptionWidget.cpp
		gui/opt/FormatOptionWidget.cpp
		gui/opt/GridOptionWidget.cpp
		gui/opt/KeyOptionWidget.cpp
		gui/opt/LogScaleOptionWidget.cpp
		gui/opt/MAxisTicsOptionWidget.cpp
		gui/opt/MappingOptionWidget.cpp
		gui/opt/OutputOptionWidget.cpp
		gui/opt/ParametricOptionWidget.cpp
		gui/opt/SamplesOptionWidget.cpp
		gui/opt/SizeOptionWidget.cpp
		gui/opt/StyleOptionWidget.cpp
		gui/opt/TerminalOptionWidget.cpp
		gui/opt/TitleOptionWidget.cpp
		gui/opt/ViewOptionWidget.cpp
		gui/opt/style/StyleDataOptionWidget.cpp
		gui/opt/style/StyleFillOptionWidget.cpp
		gui/opt/style/StyleFunctionOptionWidget.cpp
		gui/opt/terminal/TerminalEmtexOptionWidget.cpp
		gui/opt/terminal/TerminalLatexEmtexOptionWidget.cpp
		gui/opt/terminal/TerminalLatexOptionWidget.cpp
		gui/opt/terminal/TerminalPbmOptionWidget.cpp
		gui/opt/terminal/TerminalPostScriptOptionWidget.cpp
		gui/plot/PlotModifierWidget.cpp
		gui/plot/PlotOthersWidget.cpp
		gui/plot/PlotStyleWidget.cpp
		gui/plot/PlotTitleWidget.cpp
		main.cpp
		opt/Angles.cpp
		opt/AxisData.cpp
		opt/AxisLabel.cpp
		opt/AxisRange.cpp
		opt/AxisTics.cpp
		opt/Bar.cpp
		opt/BoxWidth.cpp
		opt/Dummy.cpp
		opt/Encoding.cpp
		opt/Format.cpp
		opt/Grid.cpp
		opt/Key.cpp
		opt/LogScale.cpp
		opt/MAxisTics.cpp
		opt/Mapping.cpp
		opt/Output.cpp
		opt/Parametric.cpp
		opt/Samples.cpp
		opt/Size.cpp
		opt/Terminal.cpp
		opt/Title.cpp
		opt/View.cpp
		opt/style/StyleData.cpp
		opt/style/StyleFill.cpp
		opt/style/StyleFunction.cpp
		opt/terminal/TerminalLatexEmtex.cpp
		opt/terminal/TerminalPbm.cpp
		opt/terminal/TerminalPostScript.cpp
)

set(cueplot_MOC_HEADER
		gui/ConfigDialog.h
		gui/ConsoleDialog.h
		gui/FileLineEdit.h
		gui/FitDialog.h
		gui/MainWindow.h
		gui/OptionDialog.h
		gui/PlotOptionDialog.h
		gui/Process.h
		gui/RawCommandDialog.h
		gui/fit/FitBasicWidget.h
		gui/fit/FitModifierWidget.h
		gui/fit/FitOthersWidget.h
		gui/fit/FitRangeWidget.h
		gui/main/PlotDataWidget.h
		gui/main/PlotInputWidget.h
		gui/main/PlotListWidget.h
		gui/opt/AnglesOptionWidget.h
		gui/opt/AxisDataOptionWidget.h
		gui/opt/AxisLabelOptionWidget.h
		gui/opt/AxisOptionWidget.h
		gui/opt/AxisRangeOptionWidget.h
		gui/opt/AxisTicsOptionWidget.h
		gui/opt/BarOptionWidget.h
		gui/opt/BoxWidthOptionWidget.h
		gui/opt/DummyOptionWidget.h
		gui/opt/EncodingOptionWidget.h
		gui/opt/FormatOptionWidget.h
		gui/opt/GridOptionWidget.h
		gui/opt/KeyOptionWidget.h
		gui/opt/LogScaleOptionWidget.h
		gui/opt/MAxisTicsOptionWidget.h
		gui/opt/MappingOptionWidget.h
		gui/opt/OptionWidget.h
		gui/opt/OutputOptionWidget.h
		gui/opt/ParametricOptionWidget.h
		gui/opt/SamplesOptionWidget.h
		gui/opt/SizeOptionWidget.h
		gui/opt/StyleOptionWidget.h
		gui/opt/TerminalOptionWidget.h
		gui/opt/TitleOptionWidget.h
		gui/opt/ViewOptionWidget.h
		gui/opt/style/StyleDataOptionWidget.h
		gui/opt/style/StyleFillOptionWidget.h
		gui/opt/style/StyleFunctionOptionWidget.h
		gui/opt/terminal/TerminalEmtexOptionWidget.h
		gui/opt/terminal/TerminalLatexEmtexOptionWidget.h
		gui/opt/terminal/TerminalLatexOptionWidget.h
		gui/opt/terminal/TerminalPbmOptionWidget.h
		gui/opt/terminal/TerminalPostScriptOptionWidget.h
		gui/plot/PlotModifierWidget.h
		gui/plot/PlotOptionWidget.h
		gui/plot/PlotOthersWidget.h
		gui/plot/PlotStyleWidget.h
		gui/plot/PlotTitleWidget.h
)

set(cueplot_TS 
		cueplot_ja_JP.ts
		qt_ja_JP.ts
)

qt4_add_resources(cueplot_QRC cueplot.qrc)
qt4_automoc(${cueplot_SRC})

qt4_wrap_cpp(cueplot_MOC_SRC ${cueplot_MOC_HEADER})
qt4_wrap_ts(cueplot_QM ${cueplot_TS})

# Mac OS X
if (APPLE)
	add_executable(Cueplot MACOSX_BUNDLE 
		${cueplot_QM} ${cueplot_SRC} ${cueplot_MOC_SRC} ${cueplot_QRC})
	set_source_files_properties(${cueplot_QM} PROPERTIES 
		MACOSX_PACKAGE_LOCATION MacOS)
	# need more options?
	set_target_properties(Cueplot PROPERTIES LINK_FLAGS 
		"-framework AppKit -liconv")
	target_link_libraries(Cueplot ${QT_LIBRARIES})

	# set install dir
	if (NOT DEFINED ${BIN_INSTALL_DIR})
		set(BIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/Applications" CACHE PATH
			"The install dir for executables (default is ${CMAKE_INSTALL_PREFIX}/Applications)")
	endif (NOT DEFINED ${BIN_INSTALL_DIR})

	# avoid an error
	file(MAKE_DIRECTORY Cueplot.app)

	install(DIRECTORY Cueplot.app DESTINATION ${BIN_INSTALL_DIR}
		# "Cueplot" file is executable
		REGEX "Cueplot.app$|Contents$|MacOS$|Cueplot$"
		# rwxrwxr-x
		PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
		GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
		REGEX "qm$|Info.plist$"
		# rw-rw-r--
		PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE WORLD_READ)
else (APPLE)
	add_executable(cueplot 
		${cueplot_QM} ${cueplot_SRC} ${cueplot_MOC_SRC} ${cueplot_QRC})
	target_link_libraries(cueplot ${QT_LIBRARIES})
	# Unix-like OSes except for Mac OS X
	if (UNIX)
		# set install dir
		if (NOT DEFINED ${BIN_INSTALL_DIR})
			set(BIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH
				"The install dir for executables (default is ${CMAKE_INSTALL_PREFIX}/bin)")
		endif (NOT DEFINED ${BIN_INSTALL_DIR})
		if (NOT DEFINED ${LIB_INSTALL_DIR})
			set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH
				"The install dir for libraries (default is ${CMAKE_INSTALL_PREFIX}/lib)")
		endif (NOT DEFINED ${LIB_INSTALL_DIR})

		install(FILES ${cueplot_QM} DESTINATION ${LIB_INSTALL_DIR}/cueplot)
		install(TARGETS cueplot RUNTIME DESTINATION ${LIB_INSTALL_DIR}/cueplot)
		install(SCRIPT CODE "file(MAKE_DIRECTORY ${BIN_INSTALL_DIR})")
		install(SCRIPT CODE 
			"exec_program(${CMAKE_COMMAND} ARGS -E create_symlink
${LIB_INSTALL_DIR}/cueplot/cueplot ${BIN_INSTALL_DIR}/cueplot)")
	endif (UNIX)
endif (APPLE)
