set(PGLAB_SOURCES
    main.cpp
    About.cpp
    catalog/delegates/IconColumnDelegate.cpp
    catalog/models/BaseTableModel.cpp
    catalog/models/ColumnTableModel.cpp
    catalog/models/ConstraintModel.cpp
    catalog/models/DatabasesTableModel.cpp
    catalog/models/DependantsTableModel.cpp
    catalog/models/IndexModel.cpp
    catalog/models/ProcTableModel.cpp
    catalog/models/RolesTableModel.cpp
    catalog/models/SequenceModel.cpp
    catalog/models/TriggerTableModel.cpp
    catalog/tables/TablesTableModel.cpp
    catalog/widgets/CatalogConstraintPage.cpp
    catalog/widgets/CatalogFunctionsPage.cpp
    catalog/widgets/CatalogIndexPage.cpp
    catalog/widgets/CatalogInspector.cpp
    catalog/widgets/CatalogNamespacePage.cpp
    catalog/widgets/CatalogPageBase.cpp
    catalog/widgets/CatalogSequencesPage.cpp
    catalog/widgets/CatalogTablesPage.cpp
    catalog/widgets/CatalogTypesPage.cpp
    catalog/widgets/ColumnPage.cpp
    catalog/widgets/DependantsPage.cpp
    catalog/widgets/TriggerPage.cpp
    codeeditor/CodeEditor.cpp
    codeeditor/EditorGutter.cpp
    codeeditor/GutterPainter.cpp
    crud/CrudModel.cpp
    crud/CrudTab.cpp
    crud/DataGridWidget.cpp
    crud/RecordPanel.cpp
    querytool/QueryExplainModel.cpp
    querytool/QueryParamListController.cpp
    querytool/QueryTool.cpp
    querytool/SqlDocument.cpp
    querytool/SqlDocumentRegistry.cpp
    querytool/UnsavedDocumentsDialog.cpp
    serverinspector/DatabasesPage.cpp
    serverinspector/RolesPage.cpp
    serverinspector/ServerInspector.cpp
    util/Colors.cpp
    util/PgLabItemDelegate.cpp
    util/PgLabTableView.cpp
    util/SqlSyntaxHighlighter.cpp
    ConnectionConfigurationWidget.cpp
    ConnectionController.cpp
    ManagedPage.cpp
    PgDumpOutputHighlighter.cpp
    CreateDatabaseDialog.cpp
    ConnectionManagerWindow.cpp
    ConnectionListModel.cpp
    SslModeModel.cpp
    stopwatch.cpp
    tuplesresultwidget.cpp
    BackupDialog.cpp
    MasterController.cpp
    ParamTypeDelegate.cpp
    OpenDatabase.cpp
    ProcessStdioWidget.cpp
    ResultTableModelUtil.cpp
    NamespaceItemModel.cpp
    PropertyProxyModel.cpp
    CodeGenerator.cpp
    UserConfiguration.cpp
    widgets/SqlCodePreview.cpp
    CustomFilterSortModel.cpp
    PropertiesPage.cpp
    PasswordPromptDialog.cpp
    EditTableWidget.cpp
    EditColumnTableModel.cpp
    DatabaseWindow.cpp
    widgets/SingleRecordModel.cpp
    widgets/SingleRecordWidget.cpp
    )

set(PGLAB_FORMS
    ConnectionManagerWindow.ui
    CreateDatabaseDialog.ui
    DatabaseWindow.ui
    tuplesresultwidget.ui
    querytool/QueryTab.ui
    ProcessStdioWidget.ui
    crud/CrudTab.ui
    CodeGenerator.ui
    widgets/SingleRecordWidget.ui
    )

add_executable(pglab
    ${PGLAB_SOURCES}
    ${PGLAB_FORMS}
    resources.qrc
    )

if(WIN32)
    set_target_properties(pglab PROPERTIES WIN32_EXECUTABLE ON)
    target_link_libraries(pglab PRIVATE ws2_32)
endif()

target_link_libraries(pglab PRIVATE
    pglablib
    pgsql
    core
    Qt6::Core
    Qt6::Gui
    Qt6::Widgets
    Qt6::Sql
    Qt6::Concurrent
    )

target_include_directories(pglab PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}
    )

set_target_properties(pglab PROPERTIES
    CXX_STANDARD 20
    CXX_STANDARD_REQUIRED ON
    )
