# Below is all for the User Interface

COMMANDLINEUISOURCE = \
  UIElements/CommandLineUI/Query/AtomCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/AtomsCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/BooleanCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/BoxCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/DoubleCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/DoublesCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/ElementCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/ElementsCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/EmptyCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/FileCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/IntCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/IntsCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/MoleculeCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/MoleculesCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/StringCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/StringsCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/UnsignedIntCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/UnsignedIntsCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/VectorCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/VectorsCommandLineQuery.cpp \
  UIElements/CommandLineUI/Query/RandomNumberDistribution_ParametersCommandLineQuery.cpp \
  UIElements/CommandLineUI/CommandLineDialog.cpp \
  UIElements/CommandLineUI/CommandLineParser.cpp \
  UIElements/CommandLineUI/CommandLineParser_validate.cpp \
  UIElements/CommandLineUI/CommandLineStatusIndicator.cpp \
  UIElements/CommandLineUI/CommandLineUIFactory.cpp \
  UIElements/CommandLineUI/CommandLineWindow.cpp \
  UIElements/CommandLineUI/TypeEnumContainer.cpp
  
COMMANDLINEUIHEADER = \
  UIElements/CommandLineUI/Query/CommandLineQuery.hpp \
  UIElements/CommandLineUI/CommandLineDialog.hpp \
  UIElements/CommandLineUI/CommandLineParser.hpp \
  UIElements/CommandLineUI/CommandLineParser_validate.hpp \
  UIElements/CommandLineUI/CommandLineStatusIndicator.hpp \
  UIElements/CommandLineUI/CommandLineUIFactory.hpp \
  UIElements/CommandLineUI/CommandLineWindow.hpp \
  UIElements/CommandLineUI/TypeEnumContainer.hpp

MENUSOURCE = \
  UIElements/Menu/Menu.cpp \
  UIElements/Menu/MenuDescription.cpp \
  UIElements/Menu/MenuInterface.cpp

MENUHEADER = \
  UIElements/Menu/Menu.hpp \
  UIElements/Menu/MenuDescription.hpp \
  UIElements/Menu/MenuInterface.hpp
  
TEXTMENUSOURCE = \
  UIElements/Menu/TextMenu/ActionMenuItem.cpp \
  UIElements/Menu/TextMenu/DisplayMenuItem.cpp \
  UIElements/Menu/TextMenu/MenuItem.cpp \
  UIElements/Menu/TextMenu/SeparatorMenuItem.cpp \
  UIElements/Menu/TextMenu/SubMenuItem.cpp \
  UIElements/Menu/TextMenu/TxMenu.cpp \
  UIElements/Menu/TextMenu/TxMenuLeaveAction.cpp
  
TEXTMENUHEADER = \
  UIElements/Menu/TextMenu/ActionMenuItem.hpp \
  UIElements/Menu/TextMenu/DisplayMenuItem.hpp \
  UIElements/Menu/TextMenu/MenuItem.hpp \
  UIElements/Menu/TextMenu/SeparatorMenuItem.hpp \
  UIElements/Menu/TextMenu/SubMenuItem.hpp \
  UIElements/Menu/TextMenu/TextMenu.hpp \
  UIElements/Menu/TextMenu/TxMenu.hpp \
  UIElements/Menu/TextMenu/TxMenuLeaveAction.hpp

TEXTUISOURCE = \
  UIElements/TextUI/Query/AtomsTextQuery.cpp \
  UIElements/TextUI/Query/AtomTextQuery.cpp \
  UIElements/TextUI/Query/BooleanTextQuery.cpp \
  UIElements/TextUI/Query/BoxTextQuery.cpp \
  UIElements/TextUI/Query/DoubleTextQuery.cpp \
  UIElements/TextUI/Query/DoublesTextQuery.cpp \
  UIElements/TextUI/Query/ElementTextQuery.cpp \
  UIElements/TextUI/Query/ElementsTextQuery.cpp \
  UIElements/TextUI/Query/EmptyTextQuery.cpp \
  UIElements/TextUI/Query/FileTextQuery.cpp \
  UIElements/TextUI/Query/IntTextQuery.cpp \
  UIElements/TextUI/Query/IntsTextQuery.cpp \
  UIElements/TextUI/Query/MoleculesTextQuery.cpp \
  UIElements/TextUI/Query/MoleculeTextQuery.cpp \
  UIElements/TextUI/Query/StringTextQuery.cpp \
  UIElements/TextUI/Query/StringsTextQuery.cpp \
  UIElements/TextUI/Query/UnsignedIntTextQuery.cpp \
  UIElements/TextUI/Query/UnsignedIntsTextQuery.cpp \
  UIElements/TextUI/Query/VectorTextQuery.cpp \
  UIElements/TextUI/Query/VectorsTextQuery.cpp \
  UIElements/TextUI/Query/RandomNumberDistribution_ParametersTextQuery.cpp \
  UIElements/TextUI/TextDialog.cpp \
  UIElements/TextUI/TextStatusIndicator.cpp \
  UIElements/TextUI/TextUIFactory.cpp \
  UIElements/TextUI/TextWindow.cpp
TEXTUIHEADER = \
  UIElements/TextUI/Query/TextQuery.hpp \
  UIElements/TextUI/TextDialog.hpp \
  UIElements/TextUI/TextStatusIndicator.hpp \
  UIElements/TextUI/TextUIFactory.hpp \
  UIElements/TextUI/TextWindow.hpp

VIEWSOURCE = \
  UIElements/Views/View.cpp \
  UIElements/Views/StringView.cpp \
  UIElements/Views/MethodStringView.cpp \
  UIElements/Views/StreamStringView.cpp
VIEWHEADER = \
  UIElements/Views/View.hpp \
  UIElements/Views/StringView.hpp \
  UIElements/Views/MethodStringView.hpp \
  UIElements/Views/StreamStringView.hpp

UISOURCE = \
  ${COMMANDLINEUISOURCE} \
  ${MENUSOURCE} \
  ${TEXTMENUSOURCE} \
  ${TEXTUISOURCE} \
  ${VIEWSOURCE} \
  UIElements/Query/AtomQuery.cpp \
  UIElements/Query/AtomsQuery.cpp \
  UIElements/Query/BooleanQuery.cpp \
  UIElements/Query/BoxQuery.cpp \
  UIElements/Query/DoubleQuery.cpp \
  UIElements/Query/DoublesQuery.cpp \
  UIElements/Query/ElementQuery.cpp \
  UIElements/Query/ElementsQuery.cpp \
  UIElements/Query/EmptyQuery.cpp \
  UIElements/Query/FileQuery.cpp \
  UIElements/Query/IntQuery.cpp \
  UIElements/Query/IntsQuery.cpp \
  UIElements/Query/MoleculeQuery.cpp \
  UIElements/Query/MoleculesQuery.cpp \
  UIElements/Query/Query.cpp \
  UIElements/Query/RandomNumberDistribution_ParametersQuery.cpp \
  UIElements/Query/StringQuery.cpp \
  UIElements/Query/StringsQuery.cpp \
  UIElements/Query/UnsignedIntQuery.cpp \
  UIElements/Query/UnsignedIntsQuery.cpp \
  UIElements/Query/VectorQuery.cpp \
  UIElements/Query/VectorsQuery.cpp \
  UIElements/Dialog.cpp \
  UIElements/MainWindow.cpp
  
UIHEADER = \
  ${COMMANDLINEUIHEADER} \
  ${MENUHEADER} \
  ${TEXTMENUHEADER} \
  ${TEXTUIHEADER} \
  ${VIEWHEADER} \
  UIElements/Dialog.hpp \
  UIElements/MainWindow.hpp

QTUISOURCE = \
  UIElements/Qt4/Pipe/AtomQtQueryPipe.cpp \
  UIElements/Qt4/Pipe/AtomsQtQueryPipe.cpp \
  UIElements/Qt4/Pipe/BooleanQtQueryPipe.cpp \
  UIElements/Qt4/Pipe/BoxQtQueryPipe.cpp \
  UIElements/Qt4/Pipe/DoubleQtQueryPipe.cpp \
  UIElements/Qt4/Pipe/ElementsQtQueryPipe.cpp \
  UIElements/Qt4/Pipe/EmptyQtQueryPipe.cpp \
  UIElements/Qt4/Pipe/ElementQtQueryPipe.cpp \
  UIElements/Qt4/Pipe/FileQtQueryPipe.cpp \
  UIElements/Qt4/Pipe/IntQtQueryPipe.cpp \
  UIElements/Qt4/Pipe/MoleculeQtQueryPipe.cpp \
  UIElements/Qt4/Pipe/MoleculesQtQueryPipe.cpp \
  UIElements/Qt4/Pipe/StringQtQueryPipe.cpp \
  UIElements/Qt4/Pipe/UnsignedIntQtQueryPipe.cpp \
  UIElements/Qt4/Pipe/VectorQtQueryPipe.cpp \
  UIElements/Qt4/Pipe/VectorsQtQueryPipe.cpp \
  UIElements/Qt4/Pipe/RandomNumberDistribution_ParametersQtQueryPipe.cpp \
  UIElements/Qt4/Query/AtomQtQuery.cpp \
  UIElements/Qt4/Query/AtomsQtQuery.cpp \
  UIElements/Qt4/Query/BooleanQtQuery.cpp \
  UIElements/Qt4/Query/BoxQtQuery.cpp \
  UIElements/Qt4/Query/DoubleQtQuery.cpp \
  UIElements/Qt4/Query/DoublesQtQuery.cpp \
  UIElements/Qt4/Query/ElementQtQuery.cpp \
  UIElements/Qt4/Query/ElementsQtQuery.cpp \
  UIElements/Qt4/Query/EmptyQtQuery.cpp \
  UIElements/Qt4/Query/FileQtQuery.cpp \
  UIElements/Qt4/Query/IntQtQuery.cpp \
  UIElements/Qt4/Query/IntsQtQuery.cpp \
  UIElements/Qt4/Query/MoleculeQtQuery.cpp \
  UIElements/Qt4/Query/MoleculesQtQuery.cpp \
  UIElements/Qt4/Query/StringQtQuery.cpp \
  UIElements/Qt4/Query/StringsQtQuery.cpp \
  UIElements/Qt4/Query/UnsignedIntQtQuery.cpp \
  UIElements/Qt4/Query/UnsignedIntsQtQuery.cpp \
  UIElements/Qt4/Query/VectorQtQuery.cpp \
  UIElements/Qt4/Query/VectorsQtQuery.cpp \
  UIElements/Qt4/Query/RandomNumberDistribution_ParametersQtQuery.cpp \
  UIElements/Qt4/QtMainWindow.cpp \
  UIElements/Qt4/QtDialog.cpp \
  UIElements/Qt4/QtUIFactory.cpp \
  UIElements/Menu/Qt4/QtMenuPipe.cpp \
  UIElements/Views/Qt4/QtWorldView.cpp \
  UIElements/Views/Qt4/QtMoleculeView.cpp \
  UIElements/Views/Qt4/QtStatusBar.cpp \
  UIElements/Views/Qt4/Qt3D/GLWorldView.cpp \
  UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp \
 	UIElements/Views/Qt4/Qt3D/GLMoleculeObject.cpp \
 	UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.cpp \
 	UIElements/Views/Qt4/Qt3D/GLMoleculeObject_bond.cpp
#  UIElements/Views/Qt4/dialoglight.cpp
             
QTUIMOC_HEADER = \
  UIElements/Qt4/QtDialog.hpp \
  UIElements/Qt4/QtMainWindow.hpp \
  UIElements/Qt4/Pipe/AtomQtQueryPipe.hpp \
  UIElements/Qt4/Pipe/AtomsQtQueryPipe.hpp \
  UIElements/Qt4/Pipe/BooleanQtQueryPipe.hpp \
  UIElements/Qt4/Pipe/BoxQtQueryPipe.hpp \
  UIElements/Qt4/Pipe/DoubleQtQueryPipe.hpp \
  UIElements/Qt4/Pipe/ElementQtQueryPipe.hpp \
  UIElements/Qt4/Pipe/ElementsQtQueryPipe.hpp \
  UIElements/Qt4/Pipe/EmptyQtQueryPipe.hpp \
  UIElements/Qt4/Pipe/FileQtQueryPipe.hpp \
  UIElements/Qt4/Pipe/IntQtQueryPipe.hpp \
  UIElements/Qt4/Pipe/MoleculeQtQueryPipe.hpp \
  UIElements/Qt4/Pipe/MoleculesQtQueryPipe.hpp \
  UIElements/Qt4/Pipe/RandomNumberDistribution_ParametersQtQueryPipe.hpp \
  UIElements/Qt4/Pipe/StringQtQueryPipe.hpp \
  UIElements/Qt4/Pipe/UnsignedIntQtQueryPipe.hpp \
  UIElements/Qt4/Pipe/VectorQtQueryPipe.hpp \
  UIElements/Qt4/Pipe/VectorsQtQueryPipe.hpp \
  UIElements/Menu/Qt4/QtMenuPipe.hpp \
  UIElements/Views/Qt4/QtWorldView.hpp \
  UIElements/Views/Qt4/QtMoleculeView.hpp \
  UIElements/Views/Qt4/QtStatusBar.hpp \
  UIElements/Views/Qt4/Qt3D/GLWorldView.hpp \
 	UIElements/Views/Qt4/Qt3D/GLWorldScene.hpp \
	UIElements/Views/Qt4/Qt3D/GLMoleculeObject.hpp \
 	UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.hpp \
 	UIElements/Views/Qt4/Qt3D/GLMoleculeObject_bond.hpp

QTUIUI_UIFILES = \
  UIElements/Views/Qt4/changeposition.ui \
  UIElements/Views/Qt4/dialoglight.ui \
  UIElements/Views/Qt4/dialoglight.ui.h

QTUIHEADER = \
  ${QTUIMOC_HEADER} \
  UIElements/Menu/Qt4/QtMenu.hpp \
  UIElements/Qt4/Query/QtQuery.hpp \
  UIElements/Qt4/QtUIFactory.hpp \
  UIElements/Qt4/Pipe/QtQueryPipe.hpp \
  UIElements/Qt4/Pipe/QtQueryListPipe.hpp

lib_LTLIBRARIES += libMolecuilderUI.la \
  libMolecuilderQtUI.la
libMolecuilderUI_la_includedir = $(includedir)/MoleCuilder/UIElements/
libMolecuilderQtUI_la_includedir = $(includedir)/MoleCuilder/UIElements/
libMolecuilderUI_la_CPPFLAGS = ${BOOST_CPPFLAGS} ${CodePatterns_CFLAGS}
libMolecuilderQtUI_la_CPPFLAGS = ${QT_CXXFLAGS} ${GLU_CXXFLAGS} ${BOOST_CPPFLAGS} ${CodePatterns_CFLAGS}
libMolecuilderUI_la_LDFLAGS = $(AM_LDFLAGS) $(BOOST_FILESYSTEM_LDFLAGS) $(BOOST_PROGRAM_OPTIONS_LDFLAGS) $(BOOST_RANDOM_LDFLAGS) $(BOOST_SYSTEM_LDFLAGS) $(BOOST_THREAD_LDFLAGS)
libMolecuilderQtUI_la_LDFLAGS = $(AM_LDFLAGS) $(BOOST_FILESYSTEM_LDFLAGS) $(BOOST_PROGRAM_OPTIONS_LDFLAGS) $(BOOST_RANDOM_LDFLAGS) $(BOOST_SYSTEM_LDFLAGS) $(BOOST_THREAD_LDFLAGS)
# NOTE: ActionPrototypes BEFORE Actions!
# this is to ensure that static Action prototypes are instantiated after
# ActionRegistry is present.
libMolecuilderUI_la_LIBADD = \
	libMolecuilderActionPrototypes.la \
	libMolecuilderActions.la \
	libMolecuilderAnalysis.la \
	libMolecuilderGraph.la \
	libMolecuilder.la \
	libMolecuilderFragmentation.la \
	libMolecuilderParser.la \
	libMolecuilderShapes.la \
	libMolecuilderHelpers.la \
	libMolecuilderElement.la \
	$(top_builddir)/LinearAlgebra/src/LinearAlgebra/libLinearAlgebra.la \
	libMolecuilderRandomNumbers.la \
	${CodePatterns_LIBS} \
	$(BOOST_SERIALIZATION_LDFLAGS) $(BOOST_SERIALIZATION_LIBS) \
	$(BOOST_PROGRAM_OPTIONS_LDFLAGS) $(BOOST_PROGRAM_OPTIONS_LIBS) \
	$(BOOST_FILESYSTEM_LDFLAGS) $(BOOST_FILESYSTEM_LIBS) \
	$(BOOST_SYSTEM_LDFLAGS) $(BOOST_SYSTEM_LIBS)

libMolecuilderQtUI_la_LIBADD = \
	${QT_LIBS} \
	-lQtOpenGL \
	${GLU_LIBS}


nobase_libMolecuilderUI_la_include_HEADERS = ${UIHEADER}
nobase_libMolecuilderQtUI_la_include_HEADERS = ${QTUIHEADER} $(QTUIUI_UIFILES)

## Define the source file list for the "libexample-@MOLECUILDER_API_VERSION@.la"
## target.  Note that @MOLECUILDER_API_VERSION@ is not interpreted by Automake and
## will therefore be treated as if it were literally part of the target name,
## and the variable name derived from that.
## The file extension .cc is recognized by Automake, and makes it produce
## rules which invoke the C++ compiler to produce a libtool object file (.lo)
## from each source file.  Note that it is not necessary to list header files
## which are already listed elsewhere in a _HEADERS variable assignment.
libMolecuilderUI_la_SOURCES = ${UISOURCE}
libMolecuilderQtUI_la_SOURCES = ${QTUISOURCE}
nodist_libMolecuilderQtUI_la_SOURCES =

## Instruct libtool to include ABI version information in the generated shared
## library file (.so).  The library ABI version is defined in configure.ac, so
## that all version information is kept in one place.
libMolecuilderUI_la_LDFLAGS += -version-info $(MOLECUILDER_SO_VERSION)
libMolecuilderQtUI_la_LDFLAGS += -version-info $(MOLECUILDER_SO_VERSION)

## The generated configuration header is installed in its own subdirectory of
## $(libdir).  The reason for this is that the configuration information put
## into this header file describes the target platform the installed library
## has been built for.  Thus the file must not be installed into a location
## intended for architecture-independent files, as defined by the Filesystem
## Hierarchy Standard (FHS).
## The nodist_ prefix instructs Automake to not generate rules for including
## the listed files in the distribution on 'make dist'.  Files that are listed
## in _HEADERS variables are normally included in the distribution, but the
## configuration header file is generated at configure time and should not be
## shipped with the source tarball.
#libMolecuilderUI_libincludedir = $(libdir)/MoleCuilder/include
#libMolecuilderQtUI_libincludedir = $(libdir)/MoleCuilder/include
#nodist_libMolecuilderUI_libinclude_HEADERS = $(top_builddir)/libmolecuilder_config.h
#nodist_libMolecuilderQtUI_libinclude_HEADERS = $(top_builddir)/libmolecuilder_config.h

## Install the generated pkg-config file (.pc) into the expected location for
## architecture-dependent package configuration information.  Occasionally,
## pkg-config files are also used for architecture-independent data packages,
## in which case the correct install location would be $(datadir)/pkgconfig.
#pkgconfigdir = $(libdir)/pkgconfig
#pkgconfig_DATA = $(top_builddir)/MoleCuilder.pc

# This is the old stuff from branch molecuilderGUI which does not work
#%.h: %.ui
#	$(UIC) -o $@ $<
#	
#%.cpp: %.ui
#	$(UIC) -o $@ -impl $*.h $<

BUILT_SOURCES = ui_dialoglight.h ui_changeposition.h

#noinst_HEADERS = dialoglight.h changeposition.h

nodist_libMolecuilderQtUI_la_SOURCES += moc_dialoglight.cpp moc_changeposition.cpp

#libMolecuilderQtUI_la_SOURCES += dialoglight.cpp changeposition.cpp

ui_dialoglight.h: UIElements/Views/Qt4/dialoglight.ui
	$(QT_UIC) -o $@ $<

ui_changeposition.h: UIElements/Views/Qt4/changeposition.ui
	$(QT_UIC) -o $@ $<

moc_dialoglight.cpp: ui_dialoglight.h
	$(QT_MOC) -o $@ $<

moc_changeposition.cpp: ui_changeposition.h
	$(QT_MOC) -o $@ $<

nodist_libMolecuilderQtUI_la_SOURCES += allmocs.moc.cpp

#Rules needed for Qt4
# UI-Files are scattered throughout several subdirectories
# Therfore `%'-rules do not seem to work
#Quick fix to get it done otherwise
allmocs.moc.cpp: ${QTUIMOC_HEADER}
	echo "" > allmocs.moc.cpp;\
	list='$(QTUIMOC_HEADER)'; for header in $$list; do \
	echo "Making mocfile for $$header"; \
	target=`basename $$header | sed "s/\(.*\)\..*/\1.moc.cpp/"`;\
	$(QT_MOC) $(srcdir)/$$header -o $$target \
	|| eval $$failcom; \
	echo "#include \"$$target\"" >> allmocs.moc.cpp; \
	done;

MOSTLYCLEANFILES += \
	*.moc.cpp \
	moc_*.cpp \
	ui_*.h

