project(diagramCavas)

set(DIAGRAMCAVAS_HEADER_FILES
  include/baseScene.h
  include/designerScene.h
  include/designerView.h
  include/diagramCavas.h
  include/baseDrawingPanel.h
  include/monitorPanel.h
  include/monitorSideBarDlg.h
  include/monitorSelectedItemsDlg.h
  include/monitorToolPage.h
  include/monitorToolBox.h
  include/monitorAttributeDlg.h
  include/monitorAttributeGroupDlg.h
  include/monitorConfigDlg.h
  include/monitorDetailAttributeDlg.h
  include/monitorDisplaySettingDlg.h
  include/monitorItemPreviewDlg.h
  include/loadMonitorPageDlg.h
  include/cornerMonitorLauncher.h
  include/itemPropertyDlg.h
  include/propertyContentDlg.h
  include/serializable.h
  include/statusBar.h
  include/powerEntity.h
  include/powerConnection.h
  include/powerTerminal.h
  include/topologyManager.h
  include/baseInfoDlg.h
  include/baseContentDlg.h
  include/ptExtraInfoDlg.h
  include/ctExtraInfoDlg.h
  include/bayInfoDlg.h
  include/bayManagerDlg.h
  include/bayManagerContentDlg.h
  include/measureSettingDlg.h
  include/projectIconSetting.h
  include/projectIconSelectionDlg.h
  include/diagramConnectSetting.h
  include/structDataPreviewDlg.h
  include/titleBar.h
  include/structDataMeasurementModel.h
  include/structDataPropertyModel.h
  include/structDataMeasurementDelegate.h
  include/structDataPropertyDelegate.h
  include/structDataCauseEditDlg.h
  include/structDataActionParaDlg.h
  include/bayMeasureDlg.h
  include/basePropertyProxy.h
  include/basePannelPropertyProxy.h
  include/dataSourceDlg.h
  include/createHMIdlg.h
  include/graphicsDataModel/baseModel.h
  include/graphicsDataModel/fixedPortsModel.h
  include/graphicsItem/graphicsItemGroup.h
  #include/graphicsItem/graphicsPolygonItem.h
  include/graphicsItem/handleRect.h
  include/graphicsItem/handleText.h
  include/graphicsItem/itemPort.h
  include/graphicsItem/electricBayItem.h
  include/graphicsItem/itemControlHandle.h
  include/graphicsItem/graphicsBaseItem.h

  include/graphicsItem/pluginItemFactory.h
  include/graphicsItem/pluginItemWrapper.h

  include/graphicsItem/functionModelItem/electricFunctionModelConnectLineItem.h
  include/graphicsItem/functionModelItem/electricFunctionModelPortItem.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgGroup.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgGroupCT.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgGroupPT.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgItem.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgItem2wTransformer.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgItem3wTransformer.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgItemBus.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableEnd.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableTer.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCB.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgItemCT.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgItemDS.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgItemDTEDS.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgItemES.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgItemFES.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgItemLA.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgItemPI.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgItemPT.h
  include/graphicsItem/functionModelItem/graphicsFunctionModelItem.h
  include/graphicsItem/functionModelItem/electricFunctionModelSvgItemImage.h
  include/graphicsItem/functionModelItem/electricFunctionModelItemText.h

  include/baseModelItem/electricBaseModelSvgItem.h
  include/baseModelItem/electricBaseModelLineItem.h
  include/baseModelItem/electricBaseModelSvgBus.h
  include/baseModelItem/electricBaseModelPortItem.h
  include/util/baseSelector.h
  include/util/connectingSelector.h
  include/util/creatingSelector.h
  include/util/editingSelector.h
  include/util/linkMovingSelector.h
  include/util/movingSelector.h
  include/util/rotationSelector.h
  include/util/scalingSelector.h
  include/util/selectorManager.h
  include/util/subMovingSelector.h
  include/instance/dataAccessor.h

  include/propertyType/CustomGadget.h
  include/propertyType/CustomType.h
  include/propertyType/dataSourceType.h
  include/propertyType/PropertyTypeCustomization_CustomType.h
  include/propertyType/propertyTypeCustomization_DataSourceType.h
  include/propertyType/pannelColorGadget.h
  ../common/include/httpInterface.h
  ../common/include/tools.h
  ../common/include/baseProperty.h
  ../common/include/compiler.hpp
  ../common/include/export.hpp
  ../common/include/operatingSystem.hpp
  ../common/include/structDataSource.h
  ../common/include/extraPropertyManager.h

  ../common/core_model/types.h
  ../common/core_model/diagram.h
  ../common/core_model/topology.h
  ../common/core_model/data_transmission.h
  ../common/core_model/constants.h
  ../common/frontend/monitor_item.h
  ../common/backend/project_model.h
  ../common/frontend/graphics_items.h
)

set(DIAGRAMCAVAS_SOURCE_FILES
    source/baseScene.cpp
    source/designerScene.cpp
    source/designerView.cpp
    source/diagramCavas.cpp
    source/baseDrawingPanel.cpp
    source/monitorPanel.cpp
    source/monitorSideBarDlg.cpp
    source/monitorSelectedItemsDlg.cpp
    source/monitorToolPage.cpp
    source/monitorToolBox.cpp
    source/monitorAttributeDlg.cpp
    source/monitorAttributeGroupDlg.cpp
    source/monitorConfigDlg.cpp
    source/monitorDetailAttributeDlg.cpp
    source/monitorDisplaySettingDlg.cpp
    source/monitorItemPreviewDlg.cpp
    source/loadMonitorPageDlg.cpp
    source/cornerMonitorLauncher.cpp
    source/itemPropertyDlg.cpp
    source/propertyContentDlg.cpp
    source/statusBar.cpp
    source/powerEntity.cpp
    source/powerConnection.cpp
    source/powerTerminal.cpp
    source/topologyManager.cpp
    source/baseInfoDlg.cpp
    source/baseContentDlg.cpp
    source/ptExtraInfoDlg.cpp
    source/ctExtraInfoDlg.cpp
    source/bayInfoDlg.cpp
    source/bayManagerDlg.cpp
    source/bayManagerContentDlg.cpp
    source/measureSettingDlg.cpp
    source/projectIconSetting.cpp
    source/projectIconSelectionDlg.cpp
    source/diagramConnectSetting.cpp
    source/structDataPreviewDlg.cpp
    source/titleBar.cpp
    source/structDataMeasurementModel.cpp
    source/structDataPropertyModel.cpp
    source/structDataMeasurementDelegate.cpp
    source/structDataPropertyDelegate.cpp
    source/structDataCauseEditDlg.cpp
    source/structDataActionParaDlg.cpp
    source/bayMeasureDlg.cpp
    source/basePropertyProxy.cpp
    source/basePannelPropertyProxy.cpp
    source/dataSourceDlg.cpp
    source/createHMIdlg.cpp
    source/graphicsDataModel/baseModel.cpp
    source/graphicsDataModel/fixedPortsModel.cpp
    source/graphicsItem/graphicsItemGroup.cpp
    #source/graphicsItem/graphicsPolygonItem.cpp
    source/graphicsItem/handleRect.cpp
    source/graphicsItem/handleText.cpp
    source/graphicsItem/itemPort.cpp
    source/graphicsItem/electricBayItem.cpp
    source/graphicsItem/itemControlHandle.cpp
    source/graphicsItem/graphicsBaseItem.cpp

    source/graphicsItem/pluginItemFactory.cpp
    source/graphicsItem/pluginItemWrapper.cpp

    source/graphicsItem/functionModelItem/electricFunctionModelConnectLineItem.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelPortItem.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgGroup.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgGroupCT.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgGroupPT.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgItem.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgItem2wTransformer.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgItem3wTransformer.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgItemBus.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableEnd.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCableTer.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCB.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgItemCT.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgItemDS.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgItemDTEDS.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgItemES.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgItemFES.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgItemLA.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgItemPI.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgItemPT.cpp
    source/graphicsItem/functionModelItem/graphicsFunctionModelItem.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelSvgItemImage.cpp
    source/graphicsItem/functionModelItem/electricFunctionModelItemText.cpp

    source/baseModelItem/electricBaseModelSvgItem.cpp
    source/baseModelItem/electricBaseModelLineItem.cpp
    source/baseModelItem/electricBaseModelSvgBus.cpp
    source/baseModelItem/electricBaseModelPortItem.cpp
    source/util/baseSelector.cpp
    source/util/connectingSelector.cpp
    source/util/creatingSelector.cpp
    source/util/editingSelector.cpp
    source/util/linkMovingSelector.cpp
    source/util/movingSelector.cpp
    source/util/rotationSelector.cpp
    source/util/scalingSelector.cpp
    source/util/selectorManager.cpp
    source/util/subMovingSelector.cpp
    source/instance/dataAccessor.cpp

    source/propertyType/PropertyTypeCustomization_CustomType.cpp
    source/propertyType/propertyTypeCustomization_DataSourceType.cpp
    source/propertyType/pannelColorGadget.cpp
    ../common/source/httpInterface.cpp
    ../common/source/baseProperty.cpp
    ../common/source/tools.cpp
    ../common/source/structDataSource.cpp
    ../common/source/extraPropertyManager.cpp

    ../common/core_model/types.cpp
)

set(UI_FILES
    ui/itemPropertyDlg.ui
    ui/baseInfoDlg.ui
    ui/ptExtraInfoDlg.ui
    ui/ctExtraInfoDlg.ui
    ui/bayInfoDlg.ui
    ui/measureSettingDlg.ui
    ui/bayManagerDlg.ui
    ui/bayManagerContentDlg.ui
    ui/projectIconSetting.ui
    ui/monitorConfigDlg.ui
    ui/monitorDetailAttributeDlg.ui
    ui/monitorDisplaySettingDlg.ui
    ui/loadMonitorPageDlg.ui
    ui/diagramConnectSetting.ui
    ui/structDataPreviewDlg.ui
    ui/bayMeasureDlg.ui
    ui/dataSourceDlg.ui
    ui/createHMIdlg.ui
)

if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_add_library(diagramCavas SHARED
        MANUAL_FINALIZATION
        ${DIAGRAMCAVAS_HEADER_FILES}
        ${DIAGRAMCAVAS_SOURCE_FILES}
        ${UI_FILES}
        ../resource/DiagramDesigner.qrc
    )
else()
    add_library(diagramCavas SHARED
        ${DIAGRAMCAVAS_HEADER_FILES}
        ${DIAGRAMCAVAS_SOURCE_FILES}
        ${UI_FILES}
        ../resource/DiagramDesigner.qrc
    )
endif()

target_link_libraries(diagramCavas PUBLIC Qt${QT_VERSION_MAJOR}::Core
                                                  Qt${QT_VERSION_MAJOR}::Gui
                                                  Qt${QT_VERSION_MAJOR}::Widgets)
target_link_libraries(diagramCavas PRIVATE Qt6::SvgWidgets)
target_link_libraries(diagramCavas PRIVATE Qt6::Xml)
target_link_libraries(diagramCavas PRIVATE Qt6::Network)
target_link_libraries(diagramCavas PRIVATE Qt6::WebSockets)
target_link_libraries(diagramCavas PRIVATE Qt6::Charts)
target_link_libraries(diagramCavas PRIVATE Qt6::Sql ${PostgreSQL_LIBRARIES})

option(BUILD_SHARED_LIBS "Build as shared library" ON)


target_include_directories(diagramCavas PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)

target_link_libraries(diagramCavas PRIVATE diagramUtils)
target_link_libraries(diagramCavas PRIVATE diagramCommunication)
target_link_libraries(diagramCavas PRIVATE pluginManager)
target_link_libraries(diagramCavas PUBLIC PropertyEditor)

target_compile_definitions(diagramCavas
  PUBLIC
    DIAGRAM_DESIGNER_SHARED
  PRIVATE
    DIAGRAM_DESIGNER_EXPORTS
    #QT_NO_KEYWORDS
)
