project(diagramCavas)

set(DIAGRAMCAVAS_HEADER_FILES
  include/baseScene.h
  include/designerScene.h
  include/designerView.h
  include/diagramCavas.h
  include/drawingPanel.h
  include/itemPropertyDlg.h
  include/serializable.h
  include/statusBar.h
  include/graphicsDataModel/baseModel.h
  include/graphicsDataModel/fixedPortsModel.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/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
  ../common/include/dataBase.h
  ../common/include/httpInterface.h
  ../common/include/global.h
  ../common/include/compiler.hpp
  ../common/include/export.hpp
  ../common/include/operatingSystem.hpp
)

set(DIAGRAMCAVAS_SOURCE_FILES
    source/baseScene.cpp
    source/designerScene.cpp
    source/designerView.cpp
    source/diagramCavas.cpp
    source/drawingPanel.cpp
    source/itemPropertyDlg.cpp
    source/statusBar.cpp
    #source/serializable.cpp
    source/graphicsDataModel/baseModel.cpp
    source/graphicsDataModel/fixedPortsModel.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/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
    ../common/source/dataBase.cpp
    ../common/source/httpInterface.cpp
)

set(UI_FILES
    ui/drawingPanel.ui
    ui/itemPropertyDlg.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::Sql ${POSTGRESQL_LIBRARIES})

option(BUILD_SHARED_LIBS "Build as shared library" ON)



target_include_directories(diagramCavas PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)

target_compile_definitions(diagramCavas
  PUBLIC
    DIAGRAM_DESIGNER_SHARED
  PRIVATE
    DIAGRAM_DESIGNER_EXPORTS
    #QT_NO_KEYWORDS
)
