#
# Copyright 2009- ECMWF.
#
# This software is licensed under the terms of the Apache Licence version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
# In applying this licence, ECMWF does not waive the privileges and immunities
# granted to it by virtue of its status as an intergovernmental organisation
# nor does it submit to any jurisdiction.
#

set(viewer_srcs
  # Headers
  AboutDialog.hpp
  AbstractNodeModel.hpp
  AbstractNodeView.hpp
  AbstractSearchLine.hpp
  AbstractTextEditSearchInterface.hpp
  ActionHandler.hpp
  AddLabelDialog.hpp
  AddModelColumnDialog.hpp
  Animation.hpp
  AstCollateVNodesVisitor.hpp
  AttributeEditor.hpp
  AttributeEditorFactory.hpp
  CaseSensitiveButton.hpp
  ChangeNotify.hpp
  ChangeNotifyDialog.hpp
  ChangeNotifyEditor.hpp
  ChangeNotifyModel.hpp
  ChangeNotifyWidget.hpp
  ClockWidget.hpp
  CodeItemWidget.hpp
  ComboMulti.hpp
  CommandDesignerWidget.hpp
  CommandHandler.hpp
  CommandOutput.hpp
  CommandOutputDialog.hpp
  CommandOutputWidget.hpp
  CompactView.hpp
  ConfigListDelegate.hpp
  ConnectState.hpp
  CustomCommandDialog.hpp
  CustomCommandHandler.hpp
  CustomListWidget.hpp
  CustomTabWidget.hpp
  Dashboard.hpp
  DashboardDialog.hpp
  DashboardDock.hpp
  DashboardTitle.hpp
  DashboardWidget.hpp
  DiagData.hpp
  EditItemWidget.hpp
  EditProvider.hpp
  EditorInfoLabel.hpp
  EventEditor.hpp
  ExpandState.hpp
  ExpandStateNode.hpp
  FetchTask.hpp
  FileFetchTask.hpp
  FileInfoLabel.hpp
  FileWatcher.hpp
  FilterWidget.hpp
  FlagSet.hpp
  FontMetrics.hpp
  GenFileProvider.hpp
  GotoLineDialog.hpp
  Highlighter.hpp
  HistoryItemWidget.hpp
  HtmlEdit.hpp
  HtmlItemWidget.hpp
  InfoPanel.hpp
  InfoPanelHandler.hpp
  InfoPanelItem.hpp
  InfoPresenter.hpp
  InfoProvider.hpp
  InputEventLog.hpp
  JobItemWidget.hpp
  JobStatusItemWidget.hpp
  LabelEditor.hpp
  LimitEditor.hpp
  LineEdit.hpp
  LogProvider.hpp
  LogViewerCom.hpp
  MainWindow.hpp
  ManualItemWidget.hpp
  MenuConfigDialog.hpp
  MenuHandler.hpp
  MessageItemWidget.hpp
  MeterEditor.hpp
  ModelColumn.hpp
  NodeExpression.hpp
  NodeFilterDialog.hpp
  NodeObserver.hpp
  NodePanel.hpp
  NodePathWidget.hpp
  NodeQuery.hpp
  NodeQueryCombo.hpp
  NodeQueryEditor.hpp
  NodeQueryEngine.hpp
  NodeQueryHandler.hpp
  NodeQueryOption.hpp
  NodeQueryOptionEdit.hpp
  NodeQueryResult.hpp
  NodeQueryResultModel.hpp
  NodeQueryResultTmp.hpp
  NodeQueryResultView.hpp
  NodeQueryViewDelegate.hpp
  NodeSearchWidget.hpp
  NodeSearchWindow.hpp
  NodeViewBase.hpp
  NodeViewDelegate.hpp
  NodeWidget.hpp
  OneLineTextEdit.hpp
  OutputBrowser.hpp
  OutputCache.hpp
  OutputClient.hpp
  OutputDirClient.hpp
  OutputDirProvider.hpp
  OutputDirWidget.hpp
  OutputFetchInfo.hpp
  OutputFileClient.hpp
  OutputFileProvider.hpp
  OutputItemWidget.hpp
  OutputModel.hpp
  OverviewItemWidget.hpp
  OverviewProvider.hpp
  PlainTextEdit.hpp
  PlainTextSearchInterface.hpp
  PlainTextSearchLine.hpp
  PlainTextWidget.hpp
  PropertyDialog.hpp
  PropertyEditor.hpp
  PropertyLine.hpp
  PropertyMapper.hpp
  RectMetrics.hpp
  RepeatEditor.hpp
  RichTextEdit.hpp
  RichTextSearchInterface.hpp
  RichTextSearchLine.hpp
  SaveSessionAsDialog.hpp
  ScriptItemWidget.hpp
  ServerComInfoWidget.hpp
  ServerComObserver.hpp
  ServerComQueue.hpp
  ServerComThread.hpp
  ServerDefsAccess.hpp
  ServerFilter.hpp
  ServerHandler.hpp
  ServerItem.hpp
  ServerList.hpp
  ServerListDialog.hpp
  ServerListSyncWidget.hpp
  ServerLoadItemWidget.hpp
  ServerObserver.hpp
  ServerSettingsItemWidget.hpp
  SessionDialog.hpp
  SessionHandler.hpp
  SessionRenameDialog.hpp
  ShellCommand.hpp
  ShortcutHelpDialog.hpp
  Sound.hpp
  Spline.hpp
  StandardView.hpp
  StringMatchCombo.hpp
  StringMatchMode.hpp
  SuiteFilter.hpp
  SuiteFilterObserver.hpp
  SuiteItemWidget.hpp
  SuiteModel.hpp
  TabWidget.hpp
  TableFilterWidget.hpp
  TableNodeModel.hpp
  TableNodeSortModel.hpp
  TableNodeView.hpp
  TableNodeViewDelegate.hpp
  TableNodeWidget.hpp
  TextEditSearchLine.hpp
  TextFilterHandler.hpp
  TextFilterHandlerDialog.hpp
  TextFilterWidget.hpp
  TimelineData.hpp
  TimelineFileList.hpp
  TimelineHeaderView.hpp
  TimelineInfoDailyView.hpp
  TimelineInfoDailyWidget.hpp
  TimelineInfoDelegate.hpp
  TimelineInfoWidget.hpp
  TimelineItemWidget.hpp
  TimelineModel.hpp
  TimelinePreLoadDialog.hpp
  TimelineView.hpp
  TimelineWidget.hpp
  TreeNodeModel.hpp
  TreeNodeView.hpp
  TreeNodeViewDelegate.hpp
  TreeNodeWidget.hpp
  TreeView.hpp
  TriggerCollector.hpp
  TriggerEditor.hpp
  TriggerGraphLayoutBuilder.hpp
  TriggerGraphModel.hpp
  TriggerGraphView.hpp
  TriggerGraphWidget.hpp
  TriggerItemWidget.hpp
  TriggerTableModel.hpp
  TriggerTableView.hpp
  TriggerTableWidget.hpp
  TriggerTextWidget.hpp
  TriggerViewDelegate.hpp
  TriggeredScanner.hpp
  UiLogS.hpp
  UpdateTimer.hpp
  VAttribute.hpp
  VAttributeType.hpp
  VAutoArchiveAttr.hpp
  VAutoCancelAttr.hpp
  VAutoRestoreAttr.hpp
  VAvisoAttr.hpp
  VConfig.hpp
  VConfigLoader.hpp
  VDateAttr.hpp
  VDir.hpp
  VEventAttr.hpp
  VFile.hpp
  VFileInfo.hpp
  VFileTransfer.hpp
  VFileUncompress.hpp
  VFilter.hpp
  VGenVarAttr.hpp
  VIcon.hpp
  VInfo.hpp
  VItem.hpp
  VItemPathParser.hpp
  VLabelAttr.hpp
  VLateAttr.hpp
  VLimitAttr.hpp
  VLimiterAttr.hpp
  VMeterAttr.hpp
  VMirrorAttr.hpp
  VModelData.hpp
  VNState.hpp
  VNode.hpp
  VNodeList.hpp
  VNodeMover.hpp
  VNodeStateDiag.hpp
  VParam.hpp
  VProperty.hpp
  VQueueAttr.hpp
  VRepeatAttr.hpp
  VReply.hpp
  VReportMaker.hpp
  VSState.hpp
  VServerSettings.hpp
  VSettings.hpp
  VSettingsLoader.hpp
  VTask.hpp
  VTaskNode.hpp
  VTaskObserver.hpp
  VTimeAttr.hpp
  VTree.hpp
  VTriggerAttr.hpp
  VUserVarAttr.hpp
  VariableEditor.hpp
  VariableItemWidget.hpp
  VariableModel.hpp
  VariableModelData.hpp
  VariableModelDataObserver.hpp
  VariableSearchLine.hpp
  VariableView.hpp
  Viewer.hpp
  ViewerUtil.hpp
  WhyItemWidget.hpp
  WidgetNameProvider.hpp
  WmWorkspaceHandler.hpp
  ZombieItemWidget.hpp
  ZombieModel.hpp
  TextPager/TextCodecWrapper.hpp
  TextPager/TextPagerCursor.hpp
  TextPager/TextPagerCursor_p.hpp
  TextPager/TextPagerDocument.hpp
  TextPager/TextPagerDocument_p.hpp
  TextPager/TextPagerEdit.hpp
  TextPager/TextPagerEdit_p.hpp
  TextPager/TextPagerLayout_p.hpp
  TextPager/TextPagerSearchHighlighter.hpp
  TextPager/TextPagerSearchInterface.hpp
  TextPager/TextPagerSection.hpp
  TextPager/TextPagerSection_p.hpp
  TextPager/TextPagerWidget.hpp
  TextPager/WeakPointer.hpp
  TextPager/syntaxhighlighter.hpp
  $<$<BOOL:${ECFLOW_LOGVIEW}>:LogLoadWidget.hpp>
  $<$<BOOL:${ECFLOW_LOGVIEW}>:LogLoadView.hpp>
  # Sources
  ViewerMain.cpp
  AboutDialog.cpp
  AbstractNodeModel.cpp
  AbstractNodeView.cpp
  AbstractSearchLine.cpp
  AbstractTextEditSearchInterface.cpp
  ActionHandler.cpp
  AddLabelDialog.cpp
  AddModelColumnDialog.cpp
  Animation.cpp
  AstCollateVNodesVisitor.cpp
  AttributeEditor.cpp
  AttributeEditorFactory.cpp   
  CaseSensitiveButton.cpp
  ChangeNotify.cpp
  ChangeNotifyDialog.cpp
  ChangeNotifyEditor.cpp
  ChangeNotifyModel.cpp
  ChangeNotifyWidget.cpp
  ClockWidget.cpp
  CodeItemWidget.cpp
  ComboMulti.cpp
  CommandDesignerWidget.cpp
  CommandHandler.cpp
  CommandOutput.cpp
  CommandOutputDialog.cpp
  CommandOutputWidget.cpp
  CompactView.cpp
  ConfigListDelegate.cpp
  ConnectState.cpp
  CustomCommandDialog.cpp
  CustomCommandHandler.cpp
  CustomListWidget.cpp
  CustomTabWidget.cpp
  Dashboard.cpp
  DashboardDialog.cpp
  DashboardDock.cpp
  DashboardTitle.cpp
  DashboardWidget.cpp
  DiagData.cpp
  EditItemWidget.cpp
  EditProvider.cpp
  EditorInfoLabel.cpp
  EventEditor.cpp
  ExpandState.cpp
  ExpandStateNode.cpp
  FetchTask.cpp
  FlagSet.hpp
  FileFetchTask.cpp
  FileInfoLabel.cpp   
  FileWatcher.cpp
  FilterWidget.cpp
  FontMetrics.cpp
  GenFileProvider.cpp
  GotoLineDialog.cpp
  Highlighter.cpp
  HistoryItemWidget.cpp
  HtmlEdit.cpp
  HtmlItemWidget.cpp
  InfoPanel.cpp 
  InfoPanelItem.cpp   
  InfoPanelHandler.cpp
  InfoProvider.cpp
  InputEventLog.cpp
  JobItemWidget.cpp
  JobStatusItemWidget.cpp
  LabelEditor.cpp
  LimitEditor.cpp
  LineEdit.cpp  
  LogProvider.cpp   
  LogViewerCom.cpp
  MainWindow.cpp
  ManualItemWidget.cpp 
  MenuConfigDialog.cpp
  MenuHandler.cpp
  MessageItemWidget.cpp
  MeterEditor.cpp
  ModelColumn.cpp
  NodeExpression.cpp
  NodeFilterDialog.cpp  
  NodePanel.cpp
  NodePathWidget.cpp
  NodeQuery.cpp
  NodeQueryCombo.cpp
  NodeQueryEditor.cpp
  NodeQueryEngine.cpp
  NodeQueryHandler.cpp
  NodeQueryOption.cpp
  NodeQueryOptionEdit.cpp
  NodeQueryResult.cpp
  NodeQueryResultModel.cpp
  NodeQueryResultView.cpp
  NodeQueryViewDelegate.cpp
  NodeSearchWindow.cpp
  NodeSearchWidget.cpp
  NodeViewBase.cpp
  NodeViewDelegate.cpp
  NodeWidget.cpp
  OneLineTextEdit.cpp
  OutputBrowser.cpp
  OutputCache.cpp
  OutputClient.cpp
  OutputFetchInfo.cpp
  OutputFileClient.cpp
  OutputDirClient.cpp
  OutputModel.cpp
  OutputItemWidget.cpp
  OutputFileProvider.cpp
  OutputDirProvider.cpp
  OutputDirWidget.cpp
  OverviewItemWidget.cpp
  OverviewProvider.cpp
  PlainTextEdit.cpp
  PlainTextSearchLine.cpp
  PlainTextSearchInterface.cpp
  PlainTextWidget.cpp
  PropertyDialog.cpp
  PropertyEditor.cpp
  PropertyLine.cpp
  PropertyMapper.cpp
  RectMetrics.cpp
  RepeatEditor.cpp
  RichTextEdit.cpp
  RichTextSearchInterface.cpp
  RichTextSearchLine.cpp
  SaveSessionAsDialog.cpp
  ScriptItemWidget.cpp
  ServerComInfoWidget.cpp
  ServerComQueue.cpp
  ServerComThread.cpp
  ServerDefsAccess.cpp
  ServerHandler.cpp
  ServerFilter.cpp
  ServerItem.cpp
  ServerList.cpp
  ServerListDialog.cpp
  ServerListSyncWidget.cpp   
  ServerLoadItemWidget.cpp
  ServerSettingsItemWidget.cpp
  SessionDialog.cpp
  SessionRenameDialog.cpp
  SessionHandler.cpp
  ShellCommand.cpp
  ShortcutHelpDialog.cpp
  Sound.cpp
  Spline.cpp
  StandardView.cpp
  StringMatchCombo.cpp
  StringMatchMode.cpp
  SuiteItemWidget.cpp
  SuiteFilter.cpp
  SuiteFilterObserver.hpp
  SuiteModel.cpp
  TabWidget.cpp 
  TableFilterWidget.cpp
  TableNodeModel.cpp
  TableNodeSortModel.cpp
  TableNodeView.cpp
  TableNodeViewDelegate.cpp
  TableNodeWidget.cpp
  TextEditSearchLine.cpp
  TextFilterHandler.cpp
  TextFilterHandlerDialog.cpp
  TextFilterWidget.cpp   
  TimelineHeaderView.cpp
  TimelineInfoDailyView.cpp
  TimelineInfoDailyWidget.cpp
  TimelineInfoDelegate.cpp
  TimelineInfoWidget.cpp
  TimelineItemWidget.cpp
  TimelineData.cpp
  TimelineFileList.cpp
  TimelineModel.cpp
  TimelinePreLoadDialog.cpp
  TimelineView.cpp
  TimelineWidget.cpp
  TreeNodeModel.cpp
  TreeNodeView.cpp
  TreeNodeViewDelegate.cpp
  TreeNodeWidget.cpp
  TreeView.cpp
  TriggerEditor.cpp   
  TriggerItemWidget.cpp
  TriggerTextWidget.cpp  
  TriggerCollector.cpp
  TriggerGraphLayoutBuilder.cpp
  TriggerGraphModel.cpp
  TriggerGraphWidget.cpp
  TriggerGraphView.cpp
  TriggerTableModel.cpp
  TriggerTableView.cpp
  TriggerTableWidget.cpp
  TriggerViewDelegate.cpp
  TriggeredScanner.cpp  
  UiLogS.cpp
  UpdateTimer.cpp
  VAttribute.cpp
  VAttributeType.cpp
  VAutoArchiveAttr.cpp
  VAutoCancelAttr.cpp
  VAutoRestoreAttr.cpp
  VAvisoAttr.cpp
  VConfig.cpp
  VConfigLoader.cpp
  VDateAttr.cpp
  VDir.cpp
  VEventAttr.cpp
  VFilter.cpp
  VIcon.cpp
  VInfo.cpp
  VFile.cpp
  VFileInfo.cpp
  VFileTransfer.cpp
  VFileUncompress.cpp
  VItem.cpp
  VItemPathParser.cpp
  VLabelAttr.cpp
  VLateAttr.cpp
  VLimitAttr.cpp
  VLimiterAttr.cpp
  VMeterAttr.cpp
  VMirrorAttr.cpp
  VModelData.cpp
  VNode.cpp
  VNodeList.cpp
  VNodeMover.cpp
  VNodeStateDiag.cpp
  VNState.cpp
  VParam.cpp
  VProperty.cpp
  VQueueAttr.cpp
  VRepeatAttr.cpp
  VReply.cpp
  VReportMaker.cpp
  VServerSettings.cpp
  VSettings.cpp
  VSettingsLoader.cpp
  VSState.cpp
  VTask.cpp
  VTaskNode.cpp
  VTimeAttr.cpp
  VTree.cpp
  VTriggerAttr.cpp
  VGenVarAttr.cpp
  VUserVarAttr.cpp
  VariableEditor.cpp
  VariableModel.cpp
  VariableModelData.cpp
  VariableItemWidget.cpp
  VariableSearchLine.cpp
  VariableView.cpp
  ViewerUtil.cpp
  WhyItemWidget.cpp
  WidgetNameProvider.cpp
  WmWorkspaceHandler.cpp
  ZombieItemWidget.cpp
  ZombieModel.cpp
  TextPager/TextPagerCursor.cpp
  TextPager/TextPagerDocument.cpp
  TextPager/TextPagerEdit.cpp
  TextPager/TextPagerLayout_p.cpp
  TextPager/TextPagerSearchHighlighter.cpp
  TextPager/TextPagerSearchInterface.cpp
  TextPager/TextPagerSection.cpp
  TextPager/TextPagerWidget.cpp
  TextPager/syntaxhighlighter.cpp
  $<$<BOOL:${ECFLOW_LOGVIEW}>:LogLoadWidget.cpp>
  $<$<BOOL:${ECFLOW_LOGVIEW}>:LogLoadView.cpp>
)

set(viewer_moc_files
  AbstractNodeModel.hpp
  AbstractNodeView.hpp
  AbstractSearchLine.hpp
  ActionHandler.hpp
  AddLabelDialog.hpp
  AddModelColumnDialog.hpp
  Animation.hpp
  AttributeEditor.hpp
  CaseSensitiveButton.hpp
  ChangeNotifyDialog.hpp
  ChangeNotifyEditor.hpp
  ChangeNotifyModel.hpp
  ChangeNotifyWidget.hpp
  ClockWidget.hpp
  CodeItemWidget.hpp
  ComboMulti.hpp
  CommandDesignerWidget.hpp  
  CommandOutput.hpp
  CommandOutputDialog.hpp
  CommandOutputWidget.hpp
  CustomCommandDialog.hpp
  CustomListWidget.hpp
  Dashboard.hpp
  DashboardDialog.hpp
  DashboardDock.hpp
  DashboardTitle.hpp
  DashboardWidget.hpp
  EditItemWidget.hpp
  EventEditor.hpp
  FileFetchTask.hpp
  FileWatcher.hpp
  FilterWidget.hpp
  GotoLineDialog.hpp
  HistoryItemWidget.hpp
  HtmlItemWidget.hpp
  InfoPanel.hpp
  InputEventLog.hpp
  JobStatusItemWidget.hpp
  LabelEditor.hpp
  LimitEditor.hpp
  LineEdit.hpp   
  LogProvider.hpp  
  MainWindow.hpp
  MenuConfigDialog.hpp
  MessageItemWidget.hpp
  MeterEditor.hpp
  ModelColumn.hpp
  NodeFilterDialog.hpp
  NodePanel.hpp
  NodePathWidget.hpp
  NodeQueryCombo.hpp
  NodeQueryEditor.hpp
  NodeQueryOptionEdit.hpp
  NodeQueryEngine.hpp
  NodeQueryResult.hpp
  NodeQueryResultModel.hpp
  NodeQueryResultView.hpp
  NodeSearchWindow.hpp
  NodeSearchWidget.hpp
  NodeWidget.hpp
  OneLineTextEdit.hpp
  OutputBrowser.hpp
  OutputCache.hpp
  OutputClient.hpp
  OutputFetchInfo.hpp
  OutputFileClient.hpp
  OutputDirClient.hpp
  OutputItemWidget.hpp
  OutputDirProvider.hpp
  OutputDirWidget.hpp
  PlainTextEdit.hpp
  PlainTextWidget.hpp
  PropertyDialog.hpp
  PropertyEditor.hpp
  PropertyLine.hpp
  SaveSessionAsDialog.hpp
  ShortcutHelpDialog.hpp
  RepeatEditor.hpp
  RichTextEdit.hpp
  ServerComInfoWidget.hpp
  ServerComQueue.hpp
  ServerComThread.hpp
  ServerHandler.hpp
  ServerListDialog.hpp
  ServerListSyncWidget.hpp
  ServerSettingsItemWidget.hpp
  SessionDialog.hpp
  SessionRenameDialog.hpp
  ShellCommand.hpp
  StringMatchCombo.hpp
  SuiteItemWidget.hpp
  SuiteModel.hpp
  TabWidget.hpp
  TableFilterWidget.hpp
  TableNodeModel.hpp 
  TableNodeSortModel.hpp
  TableNodeView.hpp 
  TableNodeViewDelegate.hpp
  TableNodeWidget.hpp
  TextEditSearchLine.hpp
  TextFilterHandlerDialog.hpp
  TextFilterWidget.hpp
  TimelineData.hpp
  TimelineHeaderView.hpp
  TimelineInfoDailyView.hpp
  TimelineInfoDailyWidget.hpp
  TimelineInfoWidget.hpp
  TimelineModel.hpp
  TimelineView.hpp
  TimelineWidget.hpp
  TreeNodeModel.hpp
  TreeNodeView.hpp
  TreeNodeViewDelegate.hpp
  TreeNodeWidget.hpp  
  TriggerEditor.hpp
  TriggerGraphWidget.hpp
  TriggerGraphView.hpp
  TriggerItemWidget.hpp
  TriggerTableView.hpp
  TriggerTableWidget.hpp
  TriggeredScanner.hpp
  VariableEditor.hpp
  VariableItemWidget.hpp
  VariableModel.hpp
  VariableModelData.hpp
  VariableSearchLine.hpp
  VFileTransfer.hpp
  VFilter.hpp
  VModelData.hpp
  VNodeList.hpp
  WhyItemWidget.hpp
  ZombieItemWidget.hpp
  TextPager/TextCodecWrapper.hpp
  TextPager/TextPagerCursor_p.hpp
  TextPager/TextPagerDocument.hpp
  TextPager/TextPagerDocument_p.hpp
  TextPager/TextPagerEdit.hpp
  TextPager/TextPagerEdit_p.hpp
  TextPager/TextPagerSection_p.hpp
  TextPager/TextPagerWidget.hpp
  TextPager/syntaxhighlighter.hpp   
)

set(viewer_wrap_ui_files
  AboutDialog.ui
  AddLabelDialog.ui
  AddModelColumnDialog.ui
  AttributeEditorDialog.ui
  ChangeNotifyDialog.ui
  ChangeNotifyDialogWidget.ui
  ChangeNotifyEditor.ui
  CommandDesignerWidget.ui 
  CommandOutputDialog.ui
  CommandOutputWidget.ui
  CustomCommandDialog.ui
  CodeItemWidget.ui
  DashboardDialog.ui
  DashboardDockTitleWidget.ui
  EditItemWidget.ui
  EventEditorWidget.ui
  GotoLineDialog.ui
  HistoryItemWidget.ui
  HtmlItemWidget.ui
  InfoPanel.ui
  LabelEditorWidget.ui
  LimitEditorWidget.ui
  MainWindow.ui
  MessageItemWidget.ui
  MenuConfigDialog.ui
  MeterEditorWidget.ui
  NodeFilterDialog.ui
  NodeQueryEditor.ui
  NodeQuerySaveDialog.ui
  NodeSearchWindow.ui
  NodeSearchWidget.ui
  OutputFetchInfo.ui
  OutputItemWidget.ui
  OutputDirWidget.ui
  PlainTextWidget.ui
  PropertyDialog.ui
  PropertyEditor.ui
  RepeatEditorWidget.ui
  SaveSessionAsDialog.ui
  SearchLineWidget.ui
  ServerAddDialog.ui
  ServerEditDialog.ui 
  ServerListDialog.ui
  ServerListSyncWidget.ui
  ServerLoadItemWidget.ui
  ServerSettingsItemWidget.ui
  SessionDialog.ui
  SessionRenameDialog.ui
  ShortcutHelpDialog.ui
  SuiteItemWidget.ui
  TableFilterWidget.ui
  TableNodeWidget.ui
  TextFilterAddDialog.ui
  TextFilterHandlerDialog.ui
  TextFilterWidget.ui
  TimelineInfoDailyWidget.ui
  TimelineInfoWidget.ui
  TimelinePreLoadDialog.ui
  TimelineWidget.ui
  TreeNodeWidget.ui
  TriggerEditorWidget.ui
  TriggerGraphWidget.ui
  TriggerItemWidget.ui
  TriggerTableWidget.ui
  VariableAddDialog.ui
  VariableEditorWidget.ui
  VariablePropDialog.ui
  VariableItemWidget.ui
  ZombieItemWidget.ui
)

if(ECFLOW_LOGVIEW)
  list(APPEND viewer_moc_files
    LogLoadWidget.hpp
    LogLoadView.hpp)
  list(APPEND viewer_wrap_ui_files
    LogLoadWidget.ui)
endif()

if(Qt6_FOUND)
  qt6_wrap_cpp(VIEWER_MOC ${viewer_moc_files} TARGET ecflow_ui.x)
  qt6_add_resources(VIEWER_RES viewer.qrc)
  qt6_wrap_ui(VIEWER_FORMS_HEADERS ${viewer_wrap_ui_files})
elseif(Qt5_FOUND)
  qt5_wrap_cpp(VIEWER_MOC ${viewer_moc_files} TARGET ecflow_ui.x)
  qt5_add_resources(VIEWER_RES viewer.qrc)
  qt5_wrap_ui(VIEWER_FORMS_HEADERS ${viewer_wrap_ui_files})
endif()

# add all the images as dependencies of the resource file so that it is
# automatically recompiled when an image changes
file(GLOB image_files "${CMAKE_CURRENT_SOURCE_DIR}/../images/*.*")
add_custom_target(Qt_resource_cpp DEPENDS ${VIEWER_RES} ${image_files})

ecbuild_add_executable(
  TARGET
    ecflow_ui.x
  SOURCES
    ${viewer_srcs}
    ${VIEWER_MOC}
    ${VIEWER_RES}
    ${VIEWER_FORMS_HEADERS}
  INCLUDES
    .
    TextPager
    ${CMAKE_CURRENT_BINARY_DIR}
  LIBS
    viewer
    ecflow_all
    Threads::Threads
    m
    dl
    $<$<BOOL:${OPENSSL_FOUND}>:OpenSSL::SSL>
    # Qt5
    $<$<TARGET_EXISTS:Qt5::Core>:Qt5::Core>
    $<$<TARGET_EXISTS:Qt5::Gui>:Qt5::Gui>
    $<$<TARGET_EXISTS:Qt5::Svg>:Qt5::Svg>
    $<$<TARGET_EXISTS:Qt5::Widgets>:Qt5::Widgets>
    $<$<TARGET_EXISTS:Qt5::Network>:Qt5::Network>
    $<$<TARGET_EXISTS:Qt5::Charts>:Qt5::Charts>
    # Qt6
    $<$<TARGET_EXISTS:Qt6::Core>:Qt6::Core>
    $<$<TARGET_EXISTS:Qt6::Gui>:Qt6::Gui>
    $<$<TARGET_EXISTS:Qt6::Svg>:Qt6::Svg>
    $<$<TARGET_EXISTS:Qt6::Widgets>:Qt6::Widgets>
    $<$<TARGET_EXISTS:Qt6::Network>:Qt6::Network>
    $<$<TARGET_EXISTS:Qt6::Charts>:Qt6::Charts>
    $<$<TARGET_EXISTS:Qt6::Core5Compat>:Qt6::Core5Compat>
)
target_clangformat(ecflow_ui.x)

set(ENABLE_ECFLOW_UI_LOG "OFF")
# The following target, ecflow_ui_log, is inconsistent
# in the sense that no main() is defined.

if(${ENABLE_ECFLOW_UI_LOG})

  set(logviewer_srcs
    AboutDialog.cpp
    ClockWidget.cpp
    DirectoryHandler.cpp
    FlagSet.hpp
    IconProvider.cpp
    InfoPanel.cpp
    InfoPanelItem.cpp
    InfoPanelHandler.cpp
    InfoProvider.cpp
    LogData.cpp
    LogLoadWidget.cpp
    LogModel.cpp
    LogTruncator.cpp
    LogView.cpp
    LogViewerMain.cpp
    ServerLoadItemWidget.cpp
    UIDebug.cpp
    UiLog.cpp
    UserMessage.cpp
    VConfig.cpp
    VConfigLoader.cpp
  )

  list(REMOVE_ITEM viewer_srcs ViewerMain.cpp)

  ecbuild_add_executable(
    TARGET
      ecflow_ui_log
    SOURCES
      #LogEvent.cpp
      ${viewer_srcs}
      ${VIEWER_MOC}
      ${VIEWER_RES}
      ${VIEWER_FORMS_HEADERS}
    INCLUDES
      .
      TextPager
      ${CMAKE_CURRENT_BINARY_DIR}
    DEFINITIONS
      MAIN_LOG
    LIBS
      viewer
      libclient
      base
      node
      Threads::Threads
      m
      dl
      $<$<BOOL:${OPENSSL_FOUND}>:OpenSSL::SSL>
      # Qt5
      $<$<TARGET_EXISTS:Qt5::Core>:Qt5::Core>
      $<$<TARGET_EXISTS:Qt5::Gui>:Qt5::Gui>
      $<$<TARGET_EXISTS:Qt5::Svg>:Qt5::Svg>
      $<$<TARGET_EXISTS:Qt5::Widgets>:Qt5::Widgets>
      $<$<TARGET_EXISTS:Qt5::Network>:Qt5::Network>
      $<$<TARGET_EXISTS:Qt5::Charts>:Qt5::Charts>
      # Qt6
      $<$<TARGET_EXISTS:Qt6::Core>:Qt6::Core>
      $<$<TARGET_EXISTS:Qt6::Gui>:Qt6::Gui>
      $<$<TARGET_EXISTS:Qt6::Svg>:Qt6::Svg>
      $<$<TARGET_EXISTS:Qt6::Widgets>:Qt6::Widgets>
      $<$<TARGET_EXISTS:Qt6::Network>:Qt6::Network>
      $<$<TARGET_EXISTS:Qt6::Charts>:Qt6::Charts>
      $<$<TARGET_EXISTS:Qt6::Core5Compat>:Qt6::Core5Compat>
  )
  target_clangformat(ecflow_ui_log)

endif()
