project(diagramCavas)

set(DIAGRAMCAVAS_HEADER_FILES
  include/baseScene.h
  include/designerScene.h
  include/designerView.h
  include/diagramCavas.h
  include/baseDrawingPanel.h
  include/drawingPanel.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/projectModelSetting.h
  include/projectIconSetting.h
  include/projectIconSelectionDlg.h
  include/projectDiagramNameInput.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/diagramEditor/editPanel.h
  include/diagramEditor/editView.h
  include/diagramEditor/editScene.h
  include/diagramEditor/editRowData.h
  include/diagramEditor/editMainRect.h
  include/diagramEditor/editItem.h
  include/diagramEditor/editItems.h
  include/diagramEditor/editContainerItem.h
  include/diagramEditor/editBlock.h
  include/diagramEditor/editBaseStruct.h
  include/diagramEditor/diagramEditorWizard.h
  include/diagramEditor/wizardBusTableDelegate.h
  include/diagramEditor/wizardBayContentDlg.h
  include/diagramEditor/diagramEditorBaseBlock.h
  include/diagramEditor/diagramEditorStructContainer.h
  include/diagramEditor/diagramEditorBaySettingDlg.h
  include/diagramEditor/diagramEditorBayDetailSettingDlg.h
  include/diagramEditor/diagramEditorBayDetailAddDlg.h
  include/diagramEditor/diagramEditorTransSettingDlg.h
  include/diagramEditor/diagramEditorBayPreviewDlg.h
  include/diagramEditor/diagramEditorTransDetailAddDlg.h
  include/diagramEditor/diagramEditorTransDetailSettingDlg.h
  include/diagramEditor/diagramEditorTransPreviewDlg.h
  include/diagramEditor/diagramEditorPreviewDlg.h
  include/diagramEditor/confirmEditorDlg.h
  include/graphicsDataModel/baseModel.h
  include/graphicsDataModel/fixedPortsModel.h
  include/graphicsDataModel/diagramEditorModel.h
  include/graphicsItem/electricConnectLineItem.h
  include/graphicsItem/electricSvgItem.h
  include/graphicsItem/electricSvgItemBus.h
  include/graphicsItem/electricSvgItemRect.h
  include/graphicsItem/electricSvgItemTriangle.h
  include/graphicsItem/graphicsBaseItem.h
  include/graphicsItem/graphicsItemGroup.h
  include/graphicsItem/graphicsPolygonItem.h
  include/graphicsItem/graphicsRectItem.h
  include/graphicsItem/handleRect.h
  include/graphicsItem/handleText.h
  include/graphicsItem/itemControlHandle.h
  include/graphicsItem/itemPort.h
  include/graphicsItem/electricBayItem.h
  include/graphicsItem/electricPortItem.h
  include/graphicsItem/electricSvgGroup.h
  include/graphicsItem/electricSvgGroupCT.h
  include/graphicsItem/electricSvgItemCT.h
  include/graphicsItem/electricSvgGroupPT.h
  include/graphicsItem/electricSvgItemPT.h
  include/graphicsItem/electricSvgItemES.h
  include/graphicsItem/electricSvgItemDS.h
  include/graphicsItem/electricSvgItemFES.h
  include/graphicsItem/electricSvgItemDTEDS.h
  include/graphicsItem/electricSvgItemPI.h
  include/graphicsItem/electricSvgItemLA.h
  include/graphicsItem/electricSvgItemCableTer.h
  include/graphicsItem/electricSvgItemCableEnd.h
  include/graphicsItem/electricSvgItem2wTransformer.h
  include/graphicsItem/electricSvgItem3wTransformer.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/global.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
)

set(DIAGRAMCAVAS_SOURCE_FILES
    source/baseScene.cpp
    source/designerScene.cpp
    source/designerView.cpp
    source/diagramCavas.cpp
    source/baseDrawingPanel.cpp
    source/drawingPanel.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/projectModelSetting.cpp
    source/projectIconSetting.cpp
    source/projectIconSelectionDlg.cpp
    source/projectDiagramNameInput.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/diagramEditor/editPanel.cpp
    source/diagramEditor/editView.cpp
    source/diagramEditor/editScene.cpp
    source/diagramEditor/editRowData.cpp
    source/diagramEditor/editMainRect.cpp
    source/diagramEditor/editItem.cpp
    source/diagramEditor/editItems.cpp
    source/diagramEditor/editContainerItem.cpp
    source/diagramEditor/editBlock.cpp
    source/diagramEditor/editBaseStruct.cpp
    source/diagramEditor/diagramEditorWizard.cpp
    source/diagramEditor/wizardBusTableDelegate.cpp
    source/diagramEditor/wizardBayContentDlg.cpp
    source/diagramEditor/diagramEditorBaseBlock.cpp
    source/diagramEditor/diagramEditorStructContainer.cpp
    source/diagramEditor/diagramEditorBaySettingDlg.cpp
    source/diagramEditor/diagramEditorBayDetailSettingDlg.cpp
    source/diagramEditor/diagramEditorBayDetailAddDlg.cpp
    source/diagramEditor/diagramEditorTransSettingDlg.cpp
    source/diagramEditor/diagramEditorBayPreviewDlg.cpp
    source/diagramEditor/diagramEditorTransDetailAddDlg.cpp
    source/diagramEditor/diagramEditorTransDetailSettingDlg.cpp
    source/diagramEditor/diagramEditorTransPreviewDlg.cpp
    source/diagramEditor/diagramEditorPreviewDlg.cpp
    source/diagramEditor/confirmEditorDlg.cpp
    source/graphicsDataModel/baseModel.cpp
    source/graphicsDataModel/fixedPortsModel.cpp
    source/graphicsDataModel/diagramEditorModel.cpp
    source/graphicsItem/electricConnectLineItem.cpp
    source/graphicsItem/electricSvgItem.cpp
    source/graphicsItem/electricSvgItemBus.cpp
    source/graphicsItem/electricSvgItemRect.cpp
    source/graphicsItem/electricSvgItemTriangle.cpp
    source/graphicsItem/graphicsBaseItem.cpp
    source/graphicsItem/graphicsItemGroup.cpp
    source/graphicsItem/graphicsPolygonItem.cpp
    source/graphicsItem/graphicsRectItem.cpp
    source/graphicsItem/handleRect.cpp
    source/graphicsItem/handleText.cpp
    source/graphicsItem/itemControlHandle.cpp
    source/graphicsItem/itemPort.cpp
    source/graphicsItem/electricBayItem.cpp
    source/graphicsItem/electricPortItem.cpp
    source/graphicsItem/electricSvgGroup.cpp
    source/graphicsItem/electricSvgGroupCT.cpp
    source/graphicsItem/electricSvgItemCT.cpp
    source/graphicsItem/electricSvgGroupPT.cpp
    source/graphicsItem/electricSvgItemPT.cpp
    source/graphicsItem/electricSvgItemES.cpp
    source/graphicsItem/electricSvgItemDS.cpp
    source/graphicsItem/electricSvgItemFES.cpp
    source/graphicsItem/electricSvgItemDTEDS.cpp
    source/graphicsItem/electricSvgItemPI.cpp
    source/graphicsItem/electricSvgItemLA.cpp
    source/graphicsItem/electricSvgItemCableTer.cpp
    source/graphicsItem/electricSvgItemCableEnd.cpp
    source/graphicsItem/electricSvgItem2wTransformer.cpp
    source/graphicsItem/electricSvgItem3wTransformer.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/global.cpp
    ../common/source/structDataSource.cpp
    ../common/source/extraPropertyManager.cpp
)

set(UI_FILES
    ui/itemPropertyDlg.ui
    ui/baseInfoDlg.ui
    ui/ptExtraInfoDlg.ui
    ui/ctExtraInfoDlg.ui
    ui/editorSettingDlg.ui
    ui/diagramEditorWizard.ui
    ui/projectModelSetting.ui
    ui/projectDiagramNameInput.ui
    ui/bayInfoDlg.ui
    ui/measureSettingDlg.ui
    ui/bayManagerDlg.ui
    ui/bayManagerContentDlg.ui
    ui/diagramEditorBaySettingDlg.ui
    ui/diagramEditorTransSettingDlg.ui
    ui/diagramEditorBayDetailSettingDlg.ui
    ui/diagramEditorBayDetailAddDlg.ui
    ui/diagramEditorTransDetailSettingDlg.ui
    ui/diagramEditorTransDetailAddDlg.ui
    ui/confirmEditorDlg.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
)

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 PUBLIC PropertyEditor)

target_compile_definitions(diagramCavas
  PUBLIC
    DIAGRAM_DESIGNER_SHARED
  PRIVATE
    DIAGRAM_DESIGNER_EXPORTS
    #QT_NO_KEYWORDS
)
