diff --git a/UI/cmake/feature-browserpanels.cmake b/UI/cmake/feature-browserpanels.cmake deleted file mode 100644 index 73ef6d2e4..000000000 --- a/UI/cmake/feature-browserpanels.cmake +++ /dev/null @@ -1,10 +0,0 @@ -if(TARGET OBS::browser-panels) - target_enable_feature(obs-studio "Browser panels" BROWSER_AVAILABLE) - - target_link_libraries(obs-studio PRIVATE OBS::browser-panels) - - target_sources( - obs-studio - PRIVATE window-dock-browser.cpp window-dock-browser.hpp window-extra-browsers.cpp window-extra-browsers.hpp - ) -endif() diff --git a/UI/cmake/feature-importers.cmake b/UI/cmake/feature-importers.cmake deleted file mode 100644 index d11ab27a2..000000000 --- a/UI/cmake/feature-importers.cmake +++ /dev/null @@ -1,10 +0,0 @@ -target_sources( - obs-studio - PRIVATE - importers/classic.cpp - importers/importers.cpp - importers/importers.hpp - importers/sl.cpp - importers/studio.cpp - importers/xsplit.cpp -) diff --git a/UI/cmake/ui-elements.cmake b/UI/cmake/ui-elements.cmake deleted file mode 100644 index d68890945..000000000 --- a/UI/cmake/ui-elements.cmake +++ /dev/null @@ -1,78 +0,0 @@ -if(NOT TARGET OBS::properties-view) - add_subdirectory("${CMAKE_SOURCE_DIR}/shared/properties-view" "${CMAKE_BINARY_DIR}/shared/properties-view") -endif() - -if(NOT TARGET OBS::qt-plain-text-edit) - add_subdirectory("${CMAKE_SOURCE_DIR}/shared/qt/plain-text-edit" "${CMAKE_BINARY_DIR}/shared/qt/plain-text-edit") -endif() - -if(NOT TARGET OBS::qt-slider-ignorewheel) - add_subdirectory( - "${CMAKE_SOURCE_DIR}/shared/qt/slider-ignorewheel" - "${CMAKE_BINARY_DIR}/shared/qt/slider-ignorewheel" - ) -endif() - -if(NOT TARGET OBS::qt-vertical-scroll-area) - add_subdirectory( - "${CMAKE_SOURCE_DIR}/shared/qt/vertical-scroll-area" - "${CMAKE_BINARY_DIR}/shared/qt/vertical-scroll-area" - ) -endif() - -target_link_libraries( - obs-studio - PRIVATE OBS::properties-view OBS::qt-plain-text-edit OBS::qt-slider-ignorewheel OBS::qt-vertical-scroll-area -) - -target_sources( - obs-studio - PRIVATE - absolute-slider.cpp - absolute-slider.hpp - adv-audio-control.cpp - adv-audio-control.hpp - audio-encoders.cpp - audio-encoders.hpp - balance-slider.hpp - basic-controls.cpp - basic-controls.hpp - clickable-label.hpp - context-bar-controls.cpp - context-bar-controls.hpp - focus-list.cpp - focus-list.hpp - horizontal-scroll-area.cpp - horizontal-scroll-area.hpp - hotkey-edit.cpp - hotkey-edit.hpp - item-widget-helpers.cpp - item-widget-helpers.hpp - log-viewer.cpp - log-viewer.hpp - media-controls.cpp - media-controls.hpp - menu-button.cpp - menu-button.hpp - mute-checkbox.hpp - noncheckable-button.hpp - preview-controls.cpp - preview-controls.hpp - remote-text.cpp - remote-text.hpp - scene-tree.cpp - scene-tree.hpp - screenshot-obj.hpp - source-label.cpp - source-label.hpp - source-tree.cpp - source-tree.hpp - undo-stack-obs.cpp - undo-stack-obs.hpp - url-push-button.cpp - url-push-button.hpp - visibility-item-widget.cpp - visibility-item-widget.hpp - volume-control.cpp - volume-control.hpp -) diff --git a/UI/cmake/ui-qt.cmake b/UI/cmake/ui-qt.cmake deleted file mode 100644 index 53d53671a..000000000 --- a/UI/cmake/ui-qt.cmake +++ /dev/null @@ -1,65 +0,0 @@ -find_package(Qt6 REQUIRED Widgets Network Svg Xml) - -if(OS_LINUX OR OS_FREEBSD OR OS_OPENBSD) - find_package(Qt6 REQUIRED Gui DBus) -endif() - -if(NOT TARGET OBS::qt-wrappers) - add_subdirectory("${CMAKE_SOURCE_DIR}/shared/qt/wrappers" "${CMAKE_BINARY_DIR}/shared/qt/wrappers") -endif() - -target_link_libraries( - obs-studio - PRIVATE Qt::Widgets Qt::Svg Qt::Xml Qt::Network OBS::qt-wrappers -) - -set_target_properties( - obs-studio - PROPERTIES AUTOMOC ON AUTOUIC ON AUTORCC ON -) - -set_property(TARGET obs-studio APPEND PROPERTY AUTOUIC_SEARCH_PATHS forms forms/source-toolbar) - -set( - _qt_sources - forms/AutoConfigFinishPage.ui - forms/AutoConfigStartPage.ui - forms/AutoConfigStartPage.ui - forms/AutoConfigStreamPage.ui - forms/AutoConfigTestPage.ui - forms/AutoConfigVideoPage.ui - forms/ColorSelect.ui - forms/obs.qrc - forms/OBSAbout.ui - forms/OBSAdvAudio.ui - forms/OBSBasic.ui - forms/OBSBasicControls.ui - forms/OBSBasicFilters.ui - forms/OBSBasicInteraction.ui - forms/OBSBasicProperties.ui - forms/OBSBasicSettings.ui - forms/OBSBasicSourceSelect.ui - forms/OBSBasicTransform.ui - forms/OBSBasicVCamConfig.ui - forms/OBSExtraBrowsers.ui - forms/OBSImporter.ui - forms/OBSLogReply.ui - forms/OBSLogViewer.ui - forms/OBSMissingFiles.ui - forms/OBSRemux.ui - forms/OBSUpdate.ui - forms/OBSYoutubeActions.ui - forms/source-toolbar/browser-source-toolbar.ui - forms/source-toolbar/color-source-toolbar.ui - forms/source-toolbar/device-select-toolbar.ui - forms/source-toolbar/game-capture-toolbar.ui - forms/source-toolbar/image-source-toolbar.ui - forms/source-toolbar/media-controls.ui - forms/source-toolbar/text-source-toolbar.ui -) - -target_sources(obs-studio PRIVATE ${_qt_sources}) - -source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/forms" PREFIX "UI Files" FILES ${_qt_sources}) - -unset(_qt_sources) diff --git a/UI/cmake/ui-windows.cmake b/UI/cmake/ui-windows.cmake deleted file mode 100644 index 84f561edb..000000000 --- a/UI/cmake/ui-windows.cmake +++ /dev/null @@ -1,63 +0,0 @@ -target_sources( - obs-studio - PRIVATE - window-basic-about.cpp - window-basic-about.hpp - window-basic-adv-audio.cpp - window-basic-adv-audio.hpp - window-basic-auto-config-test.cpp - window-basic-auto-config.cpp - window-basic-auto-config.hpp - window-basic-filters.cpp - window-basic-filters.hpp - window-basic-interaction.cpp - window-basic-interaction.hpp - window-basic-main-browser.cpp - window-basic-main-dropfiles.cpp - window-basic-main-icons.cpp - window-basic-main-outputs.cpp - window-basic-main-outputs.hpp - window-basic-main-profiles.cpp - window-basic-main-scene-collections.cpp - window-basic-main-screenshot.cpp - window-basic-main-transitions.cpp - window-basic-main.cpp - window-basic-main.hpp - window-basic-preview.cpp - window-basic-preview.hpp - window-basic-properties.cpp - window-basic-properties.hpp - window-basic-settings-a11y.cpp - window-basic-settings-appearance.cpp - window-basic-settings-stream.cpp - window-basic-settings.cpp - window-basic-settings.hpp - window-basic-source-select.cpp - window-basic-source-select.hpp - window-basic-stats.cpp - window-basic-stats.hpp - window-basic-status-bar.cpp - window-basic-status-bar.hpp - window-basic-transform.cpp - window-basic-transform.hpp - window-basic-vcam-config.cpp - window-basic-vcam-config.hpp - window-basic-vcam.hpp - window-dock.cpp - window-dock.hpp - window-importer.cpp - window-importer.hpp - window-log-reply.cpp - window-log-reply.hpp - window-main.hpp - window-missing-files.cpp - window-missing-files.hpp - window-namedialog.cpp - window-namedialog.hpp - window-projector.cpp - window-projector.hpp - window-remux.cpp - window-remux.hpp - window-whats-new.cpp - window-whats-new.hpp -) diff --git a/UI/obs.manifest b/UI/obs.manifest deleted file mode 100644 index b20d07746..000000000 --- a/UI/obs.manifest +++ /dev/null @@ -1,20 +0,0 @@ - - - OBS Studio - - - - - - - - - - - - - - diff --git a/UI/obs.rc.in b/UI/obs.rc.in deleted file mode 100644 index f1f06b697..000000000 --- a/UI/obs.rc.in +++ /dev/null @@ -1,26 +0,0 @@ -IDI_ICON1 ICON DISCARDABLE "../cmake/bundle/windows/obs-studio.ico" - -1 VERSIONINFO -FILEVERSION ${UI_VERSION_MAJOR},${UI_VERSION_MINOR},${UI_VERSION_PATCH},0 -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904B0" - BEGIN - VALUE "CompanyName", "OBS" - VALUE "FileDescription", "OBS Studio" - VALUE "FileVersion", "${UI_VERSION}" - VALUE "InternalName", "obs" - VALUE "OriginalFilename", "obs" - VALUE "ProductName", "OBS Studio" - VALUE "ProductVersion", "${UI_VERSION}" - VALUE "Comments", "Free and open source software for video recording and live streaming" - VALUE "LegalCopyright", "(C) Lain Bailey" - END - END - - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0409, 0x04B0 - END -END diff --git a/UI/CMakeLists.txt b/frontend/CMakeLists.txt similarity index 55% rename from UI/CMakeLists.txt rename to frontend/CMakeLists.txt index 0917c82c8..380941569 100644 --- a/UI/CMakeLists.txt +++ b/frontend/CMakeLists.txt @@ -1,10 +1,10 @@ cmake_minimum_required(VERSION 3.28...3.30) -add_subdirectory(obs-frontend-api) +add_subdirectory(api) -option(ENABLE_UI "Enable building with UI (requires Qt)" ON) +option(ENABLE_FRONTEND "Enable building with UI frontend (requires Qt6)" ON) -if(NOT ENABLE_UI) +if(NOT ENABLE_FRONTEND) target_disable_feature(obs "User Interface") return() else() @@ -15,11 +15,15 @@ find_package(FFmpeg REQUIRED COMPONENTS avcodec avutil avformat) find_package(CURL REQUIRED) if(NOT TARGET OBS::json11) - add_subdirectory("${CMAKE_SOURCE_DIR}/deps/json11" "${CMAKE_BINARY_DIR}/deps/json11") + add_subdirectory("${CMAKE_SOURCE_DIR}/deps/json11" json11) +endif() + +if(NOT TARGET OBS::libobs) + add_subdirectory("${CMAKE_SOURCE_DIR}/libobs" libobs) endif() if(NOT TARGET OBS::bpm) - add_subdirectory("${CMAKE_SOURCE_DIR}/shared/bpm" "${CMAKE_BINARY_DIR}/shared/bpm") + add_subdirectory("${CMAKE_SOURCE_DIR}/shared/bpm" bpm) endif() add_executable(obs-studio) @@ -32,17 +36,23 @@ target_link_libraries( FFmpeg::avcodec FFmpeg::avutil FFmpeg::avformat - OBS::bpm OBS::libobs OBS::frontend-api OBS::json11 + OBS::bpm ) -include(cmake/ui-qt.cmake) -include(cmake/ui-elements.cmake) -include(cmake/ui-windows.cmake) +include(cmake/ui-components.cmake) +include(cmake/ui-dialogs.cmake) +include(cmake/ui-docks.cmake) include(cmake/feature-importers.cmake) +include(cmake/ui-oauth.cmake) include(cmake/feature-browserpanels.cmake) +include(cmake/ui-qt.cmake) +include(cmake/ui-settings.cmake) +include(cmake/ui-utility.cmake) +include(cmake/ui-widgets.cmake) +include(cmake/ui-wizards.cmake) if(NOT OAUTH_BASE_URL) set(OAUTH_BASE_URL "https://auth.obsproject.com/" CACHE STRING "Default OAuth base URL") @@ -53,56 +63,13 @@ include(cmake/feature-restream.cmake) include(cmake/feature-youtube.cmake) include(cmake/feature-whatsnew.cmake) -add_subdirectory(frontend-plugins) +add_subdirectory(plugins) -configure_file(ui-config.h.in ui-config.h) +configure_file(cmake/templates/ui-config.h.in ui-config.h) target_sources( obs-studio - PRIVATE - api-interface.cpp - auth-base.cpp - auth-base.hpp - auth-listener.cpp - auth-listener.hpp - auth-oauth.cpp - auth-oauth.hpp - display-helpers.hpp - ffmpeg-utils.cpp - ffmpeg-utils.hpp - multiview.cpp - multiview.hpp - obf.c - obf.h - obs-app-theming.cpp - obs-app-theming.hpp - obs-app.cpp - obs-app.hpp - obs-proxy-style.cpp - obs-proxy-style.hpp - platform.hpp - qt-display.cpp - qt-display.hpp - ui-config.h - ui-validation.cpp - ui-validation.hpp -) - -target_sources( - obs-studio - PRIVATE - goliveapi-censoredjson.cpp - goliveapi-censoredjson.hpp - goliveapi-network.cpp - goliveapi-network.hpp - goliveapi-postdata.cpp - goliveapi-postdata.hpp - models/multitrack-video.hpp - multitrack-video-error.cpp - multitrack-video-error.hpp - multitrack-video-output.cpp - multitrack-video-output.hpp - system-info.hpp + PRIVATE obs-main.cpp OBSStudioAPI.cpp OBSStudioAPI.hpp OBSApp.cpp OBSApp.hpp OBSApp_Themes.cpp ui-config.h ) if(OS_WINDOWS) @@ -132,4 +99,18 @@ get_property(obs_module_list GLOBAL PROPERTY OBS_MODULES_ENABLED) list(JOIN obs_module_list "|" SAFE_MODULES) target_compile_definitions(obs-studio PRIVATE "SAFE_MODULES=\"${SAFE_MODULES}\"") +get_target_property(target_sources obs-studio SOURCES) +set(target_cpp_sources ${target_sources}) +set(target_hpp_sources ${target_sources}) +set(target_qt_sources ${target_sources}) +list(FILTER target_cpp_sources INCLUDE REGEX ".+\\.(cpp|mm|c|m)") +list(SORT target_cpp_sources COMPARE NATURAL CASE SENSITIVE ORDER ASCENDING) +list(FILTER target_hpp_sources INCLUDE REGEX ".+\\.(hpp|h)") +list(SORT target_hpp_sources COMPARE NATURAL CASE SENSITIVE ORDER ASCENDING) +list(FILTER target_qt_sources INCLUDE REGEX ".+\\.(ui|qrc)") +list(SORT target_qt_sources COMPARE NATURAL CASE SENSITIVE ORDER ASCENDING) +source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}" PREFIX "Source Files" FILES ${target_cpp_sources}) +source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}" PREFIX "Header Files" FILES ${target_hpp_sources}) +source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}" PREFIX "Qt Files" FILES ${target_qt_sources}) + set_target_properties_obs(obs-studio PROPERTIES FOLDER frontend OUTPUT_NAME "$,obs64,obs>") diff --git a/frontend/cmake/feature-browserpanels.cmake b/frontend/cmake/feature-browserpanels.cmake new file mode 100644 index 000000000..04c36695b --- /dev/null +++ b/frontend/cmake/feature-browserpanels.cmake @@ -0,0 +1,18 @@ +if(TARGET OBS::browser-panels) + target_enable_feature(obs-studio "Browser panels" BROWSER_AVAILABLE) + + target_link_libraries(obs-studio PRIVATE OBS::browser-panels) + + target_sources( + obs-studio + PRIVATE + dialogs/OBSExtraBrowsers.cpp + dialogs/OBSExtraBrowsers.hpp + docks/BrowserDock.cpp + docks/BrowserDock.hpp + utility/ExtraBrowsersDelegate.cpp + utility/ExtraBrowsersDelegate.hpp + utility/ExtraBrowsersModel.cpp + utility/ExtraBrowsersModel.hpp + ) +endif() diff --git a/frontend/cmake/feature-importers.cmake b/frontend/cmake/feature-importers.cmake new file mode 100644 index 000000000..b4f54eaca --- /dev/null +++ b/frontend/cmake/feature-importers.cmake @@ -0,0 +1,16 @@ +target_sources( + obs-studio + PRIVATE + importer/ImporterEntryPathItemDelegate.cpp + importer/ImporterEntryPathItemDelegate.hpp + importer/ImporterModel.cpp + importer/ImporterModel.hpp + importer/OBSImporter.cpp + importer/OBSImporter.hpp + importers/classic.cpp + importers/importers.cpp + importers/importers.hpp + importers/sl.cpp + importers/studio.cpp + importers/xsplit.cpp +) diff --git a/UI/cmake/feature-macos-update.cmake b/frontend/cmake/feature-macos-update.cmake similarity index 51% rename from UI/cmake/feature-macos-update.cmake rename to frontend/cmake/feature-macos-update.cmake index 7c6327792..da654babf 100644 --- a/UI/cmake/feature-macos-update.cmake +++ b/frontend/cmake/feature-macos-update.cmake @@ -9,14 +9,16 @@ endif() target_sources( obs-studio PRIVATE - update/crypto-helpers-mac.mm - update/crypto-helpers.hpp - update/models/branches.hpp - update/models/whatsnew.hpp - update/shared-update.cpp - update/shared-update.hpp - update/update-helpers.cpp - update/update-helpers.hpp + utility/crypto-helpers-mac.mm + utility/crypto-helpers.hpp + utility/models/branches.hpp + utility/models/whatsnew.hpp + utility/update-helpers.cpp + utility/update-helpers.hpp + utility/WhatsNewBrowserInitThread.cpp + utility/WhatsNewBrowserInitThread.hpp + utility/WhatsNewInfoThread.cpp + utility/WhatsNewInfoThread.hpp ) target_link_libraries( diff --git a/UI/cmake/feature-restream.cmake b/frontend/cmake/feature-restream.cmake similarity index 78% rename from UI/cmake/feature-restream.cmake rename to frontend/cmake/feature-restream.cmake index 65847a1ab..5e77f75dd 100644 --- a/UI/cmake/feature-restream.cmake +++ b/frontend/cmake/feature-restream.cmake @@ -1,5 +1,5 @@ if(RESTREAM_CLIENTID AND RESTREAM_HASH MATCHES "^(0|[a-fA-F0-9]+)$" AND TARGET OBS::browser-panels) - target_sources(obs-studio PRIVATE auth-restream.cpp auth-restream.hpp) + target_sources(obs-studio PRIVATE oauth/RestreamAuth.cpp oauth/RestreamAuth.hpp) target_enable_feature(obs-studio "Restream API connection" RESTREAM_ENABLED) else() target_disable_feature(obs-studio "Restream API connection") diff --git a/UI/cmake/feature-sparkle.cmake b/frontend/cmake/feature-sparkle.cmake similarity index 65% rename from UI/cmake/feature-sparkle.cmake rename to frontend/cmake/feature-sparkle.cmake index eb9fe7d92..3c9935702 100644 --- a/UI/cmake/feature-sparkle.cmake +++ b/frontend/cmake/feature-sparkle.cmake @@ -1,8 +1,17 @@ if(SPARKLE_APPCAST_URL AND SPARKLE_PUBLIC_KEY) find_library(SPARKLE Sparkle) mark_as_advanced(SPARKLE) - target_sources(obs-studio PRIVATE update/mac-update.cpp update/mac-update.hpp update/sparkle-updater.mm) - set_source_files_properties(update/sparkle-updater.mm PROPERTIES COMPILE_FLAGS -fobjc-arc) + target_sources( + obs-studio + PRIVATE + utility/MacUpdateThread.cpp + utility/MacUpdateThread.hpp + utility/OBSSparkle.hpp + utility/OBSSparkle.mm + utility/OBSUpdateDelegate.h + utility/OBSUpdateDelegate.mm + ) + set_source_files_properties(utility/OBSSparkle.mm PROPERTIES COMPILE_FLAGS -fobjc-arc) target_link_libraries(obs-studio PRIVATE "$") diff --git a/UI/cmake/feature-twitch.cmake b/frontend/cmake/feature-twitch.cmake similarity index 78% rename from UI/cmake/feature-twitch.cmake rename to frontend/cmake/feature-twitch.cmake index b8415749f..663c48e05 100644 --- a/UI/cmake/feature-twitch.cmake +++ b/frontend/cmake/feature-twitch.cmake @@ -1,5 +1,5 @@ if(TWITCH_CLIENTID AND TWITCH_HASH MATCHES "^(0|[a-fA-F0-9]+)$" AND TARGET OBS::browser-panels) - target_sources(obs-studio PRIVATE auth-twitch.cpp auth-twitch.hpp) + target_sources(obs-studio PRIVATE oauth/TwitchAuth.cpp oauth/TwitchAuth.hpp) target_enable_feature(obs-studio "Twitch API connection" TWITCH_ENABLED) else() target_disable_feature(obs-studio "Twitch API connection") diff --git a/UI/cmake/feature-whatsnew.cmake b/frontend/cmake/feature-whatsnew.cmake similarity index 68% rename from UI/cmake/feature-whatsnew.cmake rename to frontend/cmake/feature-whatsnew.cmake index 8e6771821..c7afb49a9 100644 --- a/UI/cmake/feature-whatsnew.cmake +++ b/frontend/cmake/feature-whatsnew.cmake @@ -20,13 +20,15 @@ if(ENABLE_WHATSNEW AND TARGET OBS::browser-panels) target_sources( obs-studio PRIVATE - update/crypto-helpers-mbedtls.cpp - update/crypto-helpers.hpp - update/models/whatsnew.hpp - update/shared-update.cpp - update/shared-update.hpp - update/update-helpers.cpp - update/update-helpers.hpp + utility/crypto-helpers-mbedtls.cpp + utility/crypto-helpers.hpp + utility/models/whatsnew.hpp + utility/update-helpers.cpp + utility/update-helpers.hpp + utility/WhatsNewBrowserInitThread.cpp + utility/WhatsNewBrowserInitThread.hpp + utility/WhatsNewInfoThread.cpp + utility/WhatsNewInfoThread.hpp ) endif() diff --git a/UI/cmake/feature-youtube.cmake b/frontend/cmake/feature-youtube.cmake similarity index 55% rename from UI/cmake/feature-youtube.cmake rename to frontend/cmake/feature-youtube.cmake index 4db0e31ad..be87b509f 100644 --- a/UI/cmake/feature-youtube.cmake +++ b/frontend/cmake/feature-youtube.cmake @@ -8,14 +8,17 @@ if( target_sources( obs-studio PRIVATE - auth-youtube.cpp - auth-youtube.hpp - window-dock-youtube-app.cpp - window-dock-youtube-app.hpp - window-youtube-actions.cpp - window-youtube-actions.hpp - youtube-api-wrappers.cpp - youtube-api-wrappers.hpp + dialogs/OBSYoutubeActions.cpp + dialogs/OBSYoutubeActions.hpp + docks/YouTubeAppDock.cpp + docks/YouTubeAppDock.hpp + docks/YouTubeChatDock.cpp + docks/YouTubeChatDock.hpp + forms/OBSYoutubeActions.ui + oauth/YoutubeAuth.cpp + oauth/YoutubeAuth.hpp + utility/YoutubeApiWrappers.cpp + utility/YoutubeApiWrappers.hpp ) target_enable_feature(obs-studio "YouTube API connection" YOUTUBE_ENABLED) diff --git a/UI/cmake/linux/com.obsproject.Studio.desktop b/frontend/cmake/linux/com.obsproject.Studio.desktop similarity index 100% rename from UI/cmake/linux/com.obsproject.Studio.desktop rename to frontend/cmake/linux/com.obsproject.Studio.desktop diff --git a/UI/cmake/linux/com.obsproject.Studio.metainfo.xml.in b/frontend/cmake/linux/com.obsproject.Studio.metainfo.xml.in similarity index 100% rename from UI/cmake/linux/com.obsproject.Studio.metainfo.xml.in rename to frontend/cmake/linux/com.obsproject.Studio.metainfo.xml.in diff --git a/UI/cmake/linux/icons/obs-logo-128.png b/frontend/cmake/linux/icons/obs-logo-128.png similarity index 100% rename from UI/cmake/linux/icons/obs-logo-128.png rename to frontend/cmake/linux/icons/obs-logo-128.png diff --git a/UI/cmake/linux/icons/obs-logo-256.png b/frontend/cmake/linux/icons/obs-logo-256.png similarity index 100% rename from UI/cmake/linux/icons/obs-logo-256.png rename to frontend/cmake/linux/icons/obs-logo-256.png diff --git a/UI/cmake/linux/icons/obs-logo-512.png b/frontend/cmake/linux/icons/obs-logo-512.png similarity index 100% rename from UI/cmake/linux/icons/obs-logo-512.png rename to frontend/cmake/linux/icons/obs-logo-512.png diff --git a/UI/cmake/linux/icons/obs-logo-scalable.svg b/frontend/cmake/linux/icons/obs-logo-scalable.svg similarity index 100% rename from UI/cmake/linux/icons/obs-logo-scalable.svg rename to frontend/cmake/linux/icons/obs-logo-scalable.svg diff --git a/UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/Contents.json b/frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/Contents.json rename to frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_128x128.png b/frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_128x128.png similarity index 100% rename from UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_128x128.png rename to frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_128x128.png diff --git a/UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png b/frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png similarity index 100% rename from UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png rename to frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png diff --git a/UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_16x16.png b/frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_16x16.png similarity index 100% rename from UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_16x16.png rename to frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_16x16.png diff --git a/UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png b/frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png similarity index 100% rename from UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png rename to frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png diff --git a/UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_256x256.png b/frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_256x256.png similarity index 100% rename from UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_256x256.png rename to frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_256x256.png diff --git a/UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png b/frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png similarity index 100% rename from UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png rename to frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png diff --git a/UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_32x32.png b/frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_32x32.png similarity index 100% rename from UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_32x32.png rename to frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_32x32.png diff --git a/UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png b/frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png similarity index 100% rename from UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png rename to frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png diff --git a/UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_512x512.png b/frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_512x512.png similarity index 100% rename from UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_512x512.png rename to frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_512x512.png diff --git a/UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png b/frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png similarity index 100% rename from UI/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png rename to frontend/cmake/macos/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png diff --git a/UI/cmake/macos/Assets.xcassets/Contents.json b/frontend/cmake/macos/Assets.xcassets/Contents.json similarity index 100% rename from UI/cmake/macos/Assets.xcassets/Contents.json rename to frontend/cmake/macos/Assets.xcassets/Contents.json diff --git a/UI/cmake/macos/Info.plist.in b/frontend/cmake/macos/Info.plist.in similarity index 100% rename from UI/cmake/macos/Info.plist.in rename to frontend/cmake/macos/Info.plist.in diff --git a/UI/cmake/macos/entitlements-extension.plist b/frontend/cmake/macos/entitlements-extension.plist similarity index 100% rename from UI/cmake/macos/entitlements-extension.plist rename to frontend/cmake/macos/entitlements-extension.plist diff --git a/UI/cmake/macos/entitlements.plist b/frontend/cmake/macos/entitlements.plist similarity index 100% rename from UI/cmake/macos/entitlements.plist rename to frontend/cmake/macos/entitlements.plist diff --git a/UI/cmake/macos/exportOptions-extension.plist.in b/frontend/cmake/macos/exportOptions-extension.plist.in similarity index 100% rename from UI/cmake/macos/exportOptions-extension.plist.in rename to frontend/cmake/macos/exportOptions-extension.plist.in diff --git a/UI/cmake/macos/exportOptions.plist.in b/frontend/cmake/macos/exportOptions.plist.in similarity index 100% rename from UI/cmake/macos/exportOptions.plist.in rename to frontend/cmake/macos/exportOptions.plist.in diff --git a/UI/cmake/macos/qt.conf b/frontend/cmake/macos/qt.conf similarity index 100% rename from UI/cmake/macos/qt.conf rename to frontend/cmake/macos/qt.conf diff --git a/UI/cmake/os-freebsd.cmake b/frontend/cmake/os-freebsd.cmake similarity index 92% rename from UI/cmake/os-freebsd.cmake rename to frontend/cmake/os-freebsd.cmake index 93544ad16..d06d73874 100644 --- a/UI/cmake/os-freebsd.cmake +++ b/frontend/cmake/os-freebsd.cmake @@ -1,9 +1,7 @@ -target_sources(obs-studio PRIVATE platform-x11.cpp) +target_sources(obs-studio PRIVATE utility/platform-x11.cpp utility/system-info-posix.cpp) target_compile_definitions(obs-studio PRIVATE OBS_INSTALL_PREFIX="${OBS_INSTALL_PREFIX}") target_link_libraries(obs-studio PRIVATE Qt::GuiPrivate Qt::DBus procstat) -target_sources(obs-studio PRIVATE system-info-posix.cpp) - if(TARGET OBS::python) find_package(Python REQUIRED COMPONENTS Interpreter Development) target_link_libraries(obs-studio PRIVATE Python::Python) diff --git a/UI/cmake/os-linux.cmake b/frontend/cmake/os-linux.cmake similarity index 95% rename from UI/cmake/os-linux.cmake rename to frontend/cmake/os-linux.cmake index ce9f873d7..a32a3312e 100644 --- a/UI/cmake/os-linux.cmake +++ b/frontend/cmake/os-linux.cmake @@ -1,12 +1,10 @@ -target_sources(obs-studio PRIVATE platform-x11.cpp) +target_sources(obs-studio PRIVATE utility/platform-x11.cpp utility/system-info-posix.cpp) target_compile_definitions( obs-studio PRIVATE OBS_INSTALL_PREFIX="${OBS_INSTALL_PREFIX}" $<$:ENABLE_PORTABLE_CONFIG> ) target_link_libraries(obs-studio PRIVATE Qt::GuiPrivate Qt::DBus) -target_sources(obs-studio PRIVATE system-info-posix.cpp) - if(TARGET OBS::python) find_package(Python REQUIRED COMPONENTS Interpreter Development) target_link_libraries(obs-studio PRIVATE Python::Python) diff --git a/UI/cmake/os-macos.cmake b/frontend/cmake/os-macos.cmake similarity index 75% rename from UI/cmake/os-macos.cmake rename to frontend/cmake/os-macos.cmake index a965f1bff..0bd51c923 100644 --- a/UI/cmake/os-macos.cmake +++ b/frontend/cmake/os-macos.cmake @@ -1,10 +1,16 @@ include(cmake/feature-sparkle.cmake) -target_sources(obs-studio PRIVATE platform-osx.mm forms/OBSPermissions.ui window-permissions.cpp window-permissions.hpp) +target_sources( + obs-studio + PRIVATE + dialogs/OBSPermissions.cpp + dialogs/OBSPermissions.hpp + forms/OBSPermissions.ui + utility/platform-osx.mm + utility/system-info-macos.mm +) target_compile_options(obs-studio PRIVATE -Wno-quoted-include-in-framework-header -Wno-comma) -target_sources(obs-studio PRIVATE system-info-macos.mm) - set_source_files_properties(platform-osx.mm PROPERTIES COMPILE_FLAGS -fobjc-arc) if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 14.0.3) diff --git a/UI/cmake/os-windows.cmake b/frontend/cmake/os-windows.cmake similarity index 57% rename from UI/cmake/os-windows.cmake rename to frontend/cmake/os-windows.cmake index f781c9db5..9c77a0263 100644 --- a/UI/cmake/os-windows.cmake +++ b/frontend/cmake/os-windows.cmake @@ -18,42 +18,48 @@ target_sources( obs-studio PRIVATE cmake/windows/obs.manifest + dialogs/OBSUpdate.cpp + dialogs/OBSUpdate.hpp + forms/OBSUpdate.ui obs.rc - platform-windows.cpp - update/crypto-helpers-mbedtls.cpp - update/crypto-helpers.hpp - update/models/branches.hpp - update/models/whatsnew.hpp - update/shared-update.cpp - update/shared-update.hpp - update/update-helpers.cpp - update/update-helpers.hpp - update/update-window.cpp - update/update-window.hpp - update/win-update.cpp - update/win-update.hpp - win-dll-blocklist.c - win-update/updater/manifest.hpp + utility/AutoUpdateThread.cpp + utility/AutoUpdateThread.hpp + utility/crypto-helpers-mbedtls.cpp + utility/crypto-helpers.hpp + utility/models/branches.hpp + utility/models/whatsnew.hpp + utility/platform-windows.cpp + utility/system-info-windows.cpp + utility/update-helpers.cpp + utility/update-helpers.hpp + utility/WhatsNewBrowserInitThread.cpp + utility/WhatsNewBrowserInitThread.hpp + utility/WhatsNewInfoThread.cpp + utility/WhatsNewInfoThread.hpp + utility/win-dll-blocklist.c ) -target_sources(obs-studio PRIVATE system-info-windows.cpp) +add_library(obs-updater-manifest INTERFACE) +add_library(OBS::updater-manifest ALIAS obs-updater-manifest) + +target_sources(obs-updater-manifest INTERFACE updater/manifest.hpp) target_link_libraries( obs-studio - PRIVATE crypt32 OBS::blake2 OBS::w32-pthreads MbedTLS::mbedtls nlohmann_json::nlohmann_json Detours::Detours + PRIVATE + crypt32 + OBS::blake2 + OBS::updater-manifest + OBS::w32-pthreads + MbedTLS::mbedtls + nlohmann_json::nlohmann_json + Detours::Detours ) target_compile_definitions(obs-studio PRIVATE PSAPI_VERSION=2) target_link_options(obs-studio PRIVATE /IGNORE:4099 $<$:/NODEFAULTLIB:MSVCRT>) -add_library(obs-update-helpers INTERFACE) -add_library(OBS::update-helpers ALIAS obs-update-helpers) - -target_sources(obs-update-helpers INTERFACE win-update/win-update-helpers.cpp win-update/win-update-helpers.hpp) - -target_include_directories(obs-update-helpers INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/win-update") - # Set commit for untagged version comparisons in the Windows updater if(OBS_VERSION MATCHES ".+g[a-f0-9]+.*") string(REGEX REPLACE ".+g([a-f0-9]+).*$" "\\1" OBS_COMMIT ${OBS_VERSION}) @@ -61,9 +67,9 @@ else() set(OBS_COMMIT "") endif() -set_source_files_properties(update/win-update.cpp PROPERTIES COMPILE_DEFINITIONS OBS_COMMIT="${OBS_COMMIT}") +set_source_files_properties(utility/AutoUpdateThread.cpp PROPERTIES COMPILE_DEFINITIONS OBS_COMMIT="${OBS_COMMIT}") -add_subdirectory(win-update/updater) +add_subdirectory(updater) set_property(TARGET obs-studio APPEND PROPERTY AUTORCC_OPTIONS --format-version 1) diff --git a/UI/ui-config.h.in b/frontend/cmake/templates/ui-config.h.in similarity index 100% rename from UI/ui-config.h.in rename to frontend/cmake/templates/ui-config.h.in diff --git a/frontend/cmake/ui-components.cmake b/frontend/cmake/ui-components.cmake new file mode 100644 index 000000000..acea2d66c --- /dev/null +++ b/frontend/cmake/ui-components.cmake @@ -0,0 +1,85 @@ +if(NOT TARGET OBS::qt-slider-ignorewheel) + add_subdirectory( + "${CMAKE_SOURCE_DIR}/shared/qt/slider-ignorewheel" + "${CMAKE_BINARY_DIR}/shared/qt/slider-ignorewheel" + ) +endif() + +target_link_libraries(obs-studio PRIVATE OBS::qt-slider-ignorewheel) + +target_sources( + obs-studio + PRIVATE + components/AbsoluteSlider.cpp + components/AbsoluteSlider.hpp + components/ApplicationAudioCaptureToolbar.cpp + components/ApplicationAudioCaptureToolbar.hpp + components/AudioCaptureToolbar.cpp + components/AudioCaptureToolbar.hpp + components/BalanceSlider.hpp + components/BrowserToolbar.cpp + components/BrowserToolbar.hpp + components/ClickableLabel.hpp + components/ColorSourceToolbar.cpp + components/ColorSourceToolbar.hpp + components/ComboSelectToolbar.cpp + components/ComboSelectToolbar.hpp + components/DelButton.hpp + components/DeviceCaptureToolbar.cpp + components/DeviceCaptureToolbar.hpp + components/DisplayCaptureToolbar.cpp + components/DisplayCaptureToolbar.hpp + components/EditWidget.hpp + components/FocusList.cpp + components/FocusList.hpp + components/GameCaptureToolbar.cpp + components/GameCaptureToolbar.hpp + components/HScrollArea.cpp + components/HScrollArea.hpp + components/ImageSourceToolbar.cpp + components/ImageSourceToolbar.hpp + components/MediaControls.cpp + components/MediaControls.hpp + components/MenuButton.cpp + components/MenuButton.hpp + components/Multiview.cpp + components/Multiview.hpp + components/MuteCheckBox.hpp + components/NonCheckableButton.hpp + components/OBSAdvAudioCtrl.cpp + components/OBSAdvAudioCtrl.hpp + components/OBSPreviewScalingComboBox.cpp + components/OBSPreviewScalingComboBox.hpp + components/OBSPreviewScalingLabel.cpp + components/OBSPreviewScalingLabel.hpp + components/OBSSourceLabel.cpp + components/OBSSourceLabel.hpp + components/SceneTree.cpp + components/SceneTree.hpp + components/SilentUpdateCheckBox.hpp + components/SilentUpdateSpinBox.hpp + components/SourceToolbar.cpp + components/SourceToolbar.hpp + components/SourceTree.cpp + components/SourceTree.hpp + components/SourceTreeDelegate.cpp + components/SourceTreeDelegate.hpp + components/SourceTreeItem.cpp + components/SourceTreeItem.hpp + components/SourceTreeModel.cpp + components/SourceTreeModel.hpp + components/TextSourceToolbar.cpp + components/TextSourceToolbar.hpp + components/UIValidation.cpp + components/UIValidation.hpp + components/UrlPushButton.cpp + components/UrlPushButton.hpp + components/VisibilityItemDelegate.cpp + components/VisibilityItemDelegate.hpp + components/VisibilityItemWidget.cpp + components/VisibilityItemWidget.hpp + components/VolumeSlider.cpp + components/VolumeSlider.hpp + components/WindowCaptureToolbar.cpp + components/WindowCaptureToolbar.hpp +) diff --git a/frontend/cmake/ui-dialogs.cmake b/frontend/cmake/ui-dialogs.cmake new file mode 100644 index 000000000..dfedb2b21 --- /dev/null +++ b/frontend/cmake/ui-dialogs.cmake @@ -0,0 +1,40 @@ +if(NOT TARGET OBS::properties-view) + add_subdirectory("${CMAKE_SOURCE_DIR}/shared/properties-view" "${CMAKE_BINARY_DIR}/shared/properties-view") +endif() + +target_link_libraries(obs-studio PRIVATE OBS::properties-view) + +target_sources( + obs-studio + PRIVATE + dialogs/NameDialog.cpp + dialogs/NameDialog.hpp + dialogs/OAuthLogin.cpp + dialogs/OAuthLogin.hpp + dialogs/OBSAbout.cpp + dialogs/OBSAbout.hpp + dialogs/OBSBasicAdvAudio.cpp + dialogs/OBSBasicAdvAudio.hpp + dialogs/OBSBasicFilters.cpp + dialogs/OBSBasicFilters.hpp + dialogs/OBSBasicInteraction.cpp + dialogs/OBSBasicInteraction.hpp + dialogs/OBSBasicProperties.cpp + dialogs/OBSBasicProperties.hpp + dialogs/OBSBasicSourceSelect.cpp + dialogs/OBSBasicSourceSelect.hpp + dialogs/OBSBasicTransform.cpp + dialogs/OBSBasicTransform.hpp + dialogs/OBSBasicVCamConfig.cpp + dialogs/OBSBasicVCamConfig.hpp + dialogs/OBSLogReply.cpp + dialogs/OBSLogReply.hpp + dialogs/OBSLogViewer.cpp + dialogs/OBSLogViewer.hpp + dialogs/OBSMissingFiles.cpp + dialogs/OBSMissingFiles.hpp + dialogs/OBSRemux.cpp + dialogs/OBSRemux.hpp + dialogs/OBSWhatsNew.cpp + dialogs/OBSWhatsNew.hpp +) diff --git a/frontend/cmake/ui-docks.cmake b/frontend/cmake/ui-docks.cmake new file mode 100644 index 000000000..0de10de2a --- /dev/null +++ b/frontend/cmake/ui-docks.cmake @@ -0,0 +1 @@ +target_sources(obs-studio PRIVATE docks/OBSDock.cpp docks/OBSDock.hpp) diff --git a/frontend/cmake/ui-oauth.cmake b/frontend/cmake/ui-oauth.cmake new file mode 100644 index 000000000..b48f845e8 --- /dev/null +++ b/frontend/cmake/ui-oauth.cmake @@ -0,0 +1,4 @@ +target_sources( + obs-studio + PRIVATE oauth/Auth.cpp oauth/Auth.hpp oauth/AuthListener.cpp oauth/AuthListener.hpp oauth/OAuth.cpp oauth/OAuth.hpp +) diff --git a/frontend/cmake/ui-qt.cmake b/frontend/cmake/ui-qt.cmake new file mode 100644 index 000000000..c4293e0eb --- /dev/null +++ b/frontend/cmake/ui-qt.cmake @@ -0,0 +1,58 @@ +find_package(Qt6 REQUIRED Widgets Network Svg Xml) + +if(OS_LINUX OR OS_FREEBSD OR OS_OPENBSD) + find_package(Qt6 REQUIRED Gui DBus) +endif() + +if(NOT TARGET OBS::qt-wrappers) + add_subdirectory("${CMAKE_SOURCE_DIR}/shared/qt/wrappers" "${CMAKE_BINARY_DIR}/shared/qt/wrappers") +endif() + +target_link_libraries( + obs-studio + PRIVATE Qt::Widgets Qt::Svg Qt::Xml Qt::Network OBS::qt-wrappers +) + +set_target_properties( + obs-studio + PROPERTIES AUTOMOC TRUE AUTOUIC TRUE AUTORCC TRUE AUTOGEN_PARALLEL AUTO +) + +set_property(TARGET obs-studio APPEND PROPERTY AUTOUIC_SEARCH_PATHS forms forms/source-toolbar) + +target_sources( + obs-studio + PRIVATE + forms/AutoConfigFinishPage.ui + forms/AutoConfigStartPage.ui + forms/AutoConfigStartPage.ui + forms/AutoConfigStreamPage.ui + forms/AutoConfigTestPage.ui + forms/AutoConfigVideoPage.ui + forms/ColorSelect.ui + forms/obs.qrc + forms/OBSAbout.ui + forms/OBSAdvAudio.ui + forms/OBSBasic.ui + forms/OBSBasicControls.ui + forms/OBSBasicFilters.ui + forms/OBSBasicInteraction.ui + forms/OBSBasicProperties.ui + forms/OBSBasicSettings.ui + forms/OBSBasicSourceSelect.ui + forms/OBSBasicVCamConfig.ui + forms/OBSExtraBrowsers.ui + forms/OBSImporter.ui + forms/OBSLogReply.ui + forms/OBSLogReply.ui + forms/OBSMissingFiles.ui + forms/OBSRemux.ui + forms/source-toolbar/browser-source-toolbar.ui + forms/source-toolbar/color-source-toolbar.ui + forms/source-toolbar/device-select-toolbar.ui + forms/source-toolbar/game-capture-toolbar.ui + forms/source-toolbar/image-source-toolbar.ui + forms/source-toolbar/media-controls.ui + forms/source-toolbar/text-source-toolbar.ui + forms/StatusBarWidget.ui +) diff --git a/frontend/cmake/ui-settings.cmake b/frontend/cmake/ui-settings.cmake new file mode 100644 index 000000000..cea9e5d52 --- /dev/null +++ b/frontend/cmake/ui-settings.cmake @@ -0,0 +1,15 @@ +target_sources( + obs-studio + PRIVATE + settings/OBSBasicSettings_A11y.cpp + settings/OBSBasicSettings_Appearance.cpp + settings/OBSBasicSettings_Stream.cpp + settings/OBSBasicSettings.cpp + settings/OBSBasicSettings.hpp + settings/OBSHotkeyEdit.cpp + settings/OBSHotkeyEdit.hpp + settings/OBSHotkeyLabel.cpp + settings/OBSHotkeyLabel.hpp + settings/OBSHotkeyWidget.cpp + settings/OBSHotkeyWidget.hpp +) diff --git a/frontend/cmake/ui-utility.cmake b/frontend/cmake/ui-utility.cmake new file mode 100644 index 000000000..88535faff --- /dev/null +++ b/frontend/cmake/ui-utility.cmake @@ -0,0 +1,69 @@ +target_sources( + obs-studio + PRIVATE + utility/AdvancedOutput.cpp + utility/AdvancedOutput.hpp + utility/audio-encoders.cpp + utility/audio-encoders.hpp + utility/BaseLexer.hpp + utility/BasicOutputHandler.cpp + utility/BasicOutputHandler.hpp + utility/display-helpers.hpp + utility/FFmpegCodec.cpp + utility/FFmpegCodec.hpp + utility/FFmpegFormat.cpp + utility/FFmpegFormat.hpp + utility/FFmpegShared.hpp + utility/GoLiveAPI_CensoredJson.cpp + utility/GoLiveAPI_CensoredJson.hpp + utility/GoLiveAPI_Network.cpp + utility/GoLiveAPI_Network.hpp + utility/GoLiveAPI_PostData.cpp + utility/GoLiveAPI_PostData.hpp + utility/item-widget-helpers.cpp + utility/item-widget-helpers.hpp + utility/MissingFilesModel.cpp + utility/MissingFilesModel.hpp + utility/MissingFilesPathItemDelegate.cpp + utility/MissingFilesPathItemDelegate.hpp + utility/models/multitrack-video.hpp + utility/MultitrackVideoError.cpp + utility/MultitrackVideoError.hpp + utility/MultitrackVideoOutput.cpp + utility/MultitrackVideoOutput.hpp + utility/obf.c + utility/obf.h + utility/OBSEventFilter.hpp + utility/OBSProxyStyle.cpp + utility/OBSProxyStyle.hpp + utility/OBSTheme.hpp + utility/OBSThemeVariable.hpp + utility/OBSTranslator.cpp + utility/OBSTranslator.hpp + utility/platform.hpp + utility/QuickTransition.cpp + utility/QuickTransition.hpp + utility/RemoteTextThread.cpp + utility/RemoteTextThread.hpp + utility/RemuxEntryPathItemDelegate.cpp + utility/RemuxEntryPathItemDelegate.hpp + utility/RemuxQueueModel.cpp + utility/RemuxQueueModel.hpp + utility/RemuxWorker.cpp + utility/RemuxWorker.hpp + utility/SceneRenameDelegate.cpp + utility/SceneRenameDelegate.hpp + utility/ScreenshotObj.cpp + utility/ScreenshotObj.hpp + utility/SettingsEventFilter.hpp + utility/SimpleOutput.cpp + utility/SimpleOutput.hpp + utility/StartMultiTrackVideoStreamingGuard.hpp + utility/SurfaceEventFilter.hpp + utility/system-info.hpp + utility/undo_stack.cpp + utility/undo_stack.hpp + utility/VCamConfig.hpp + utility/VolumeMeterTimer.cpp + utility/VolumeMeterTimer.hpp +) diff --git a/frontend/cmake/ui-widgets.cmake b/frontend/cmake/ui-widgets.cmake new file mode 100644 index 000000000..20befdeb0 --- /dev/null +++ b/frontend/cmake/ui-widgets.cmake @@ -0,0 +1,66 @@ +if(NOT TARGET OBS::qt-vertical-scroll-area) + add_subdirectory( + "${CMAKE_SOURCE_DIR}/shared/qt/vertical-scroll-area" + "${CMAKE_BINARY_DIR}/shared/qt/vertical-scroll-area" + ) +endif() + +target_link_libraries(obs-studio PRIVATE OBS::qt-vertical-scroll-area) + +target_sources( + obs-studio + PRIVATE + widgets/ColorSelect.cpp + widgets/ColorSelect.hpp + widgets/OBSBasic.cpp + widgets/OBSBasic.hpp + widgets/OBSBasic_Browser.cpp + widgets/OBSBasic_Clipboard.cpp + widgets/OBSBasic_ContextToolbar.cpp + widgets/OBSBasic_Docks.cpp + widgets/OBSBasic_Dropfiles.cpp + widgets/OBSBasic_Hotkeys.cpp + widgets/OBSBasic_Icons.cpp + widgets/OBSBasic_MainControls.cpp + widgets/OBSBasic_OutputHandler.cpp + widgets/OBSBasic_Preview.cpp + widgets/OBSBasic_Profiles.cpp + widgets/OBSBasic_Projectors.cpp + widgets/OBSBasic_Recording.cpp + widgets/OBSBasic_ReplayBuffer.cpp + widgets/OBSBasic_SceneCollections.cpp + widgets/OBSBasic_SceneItems.cpp + widgets/OBSBasic_Scenes.cpp + widgets/OBSBasic_Screenshots.cpp + widgets/OBSBasic_Service.cpp + widgets/OBSBasic_StatusBar.cpp + widgets/OBSBasic_Streaming.cpp + widgets/OBSBasic_StudioMode.cpp + widgets/OBSBasic_SysTray.cpp + widgets/OBSBasic_Transitions.cpp + widgets/OBSBasic_Updater.cpp + widgets/OBSBasic_VirtualCam.cpp + widgets/OBSBasic_VolControl.cpp + widgets/OBSBasic_YouTube.cpp + widgets/OBSBasicControls.cpp + widgets/OBSBasicControls.hpp + widgets/OBSBasicPreview.cpp + widgets/OBSBasicPreview.hpp + widgets/OBSBasicStats.cpp + widgets/OBSBasicStats.hpp + widgets/OBSBasicStatusBar.cpp + widgets/OBSBasicStatusBar.hpp + widgets/OBSMainWindow.hpp + widgets/OBSProjector.cpp + widgets/OBSProjector.hpp + widgets/OBSQTDisplay.cpp + widgets/OBSQTDisplay.hpp + widgets/StatusBarWidget.cpp + widgets/StatusBarWidget.hpp + widgets/VolControl.cpp + widgets/VolControl.hpp + widgets/VolumeAccessibleInterface.cpp + widgets/VolumeAccessibleInterface.hpp + widgets/VolumeMeter.cpp + widgets/VolumeMeter.hpp +) diff --git a/frontend/cmake/ui-wizards.cmake b/frontend/cmake/ui-wizards.cmake new file mode 100644 index 000000000..2dfc3f647 --- /dev/null +++ b/frontend/cmake/ui-wizards.cmake @@ -0,0 +1,15 @@ +target_sources( + obs-studio + PRIVATE + wizards/AutoConfig.cpp + wizards/AutoConfig.hpp + wizards/AutoConfigStartPage.cpp + wizards/AutoConfigStartPage.hpp + wizards/AutoConfigStreamPage.cpp + wizards/AutoConfigStreamPage.hpp + wizards/AutoConfigTestPage.cpp + wizards/AutoConfigTestPage.hpp + wizards/AutoConfigVideoPage.cpp + wizards/AutoConfigVideoPage.hpp + wizards/TestMode.hpp +) diff --git a/UI/cmake/windows/obs-studio.ico b/frontend/cmake/windows/obs-studio.ico similarity index 100% rename from UI/cmake/windows/obs-studio.ico rename to frontend/cmake/windows/obs-studio.ico diff --git a/UI/cmake/windows/obs.manifest b/frontend/cmake/windows/obs.manifest similarity index 100% rename from UI/cmake/windows/obs.manifest rename to frontend/cmake/windows/obs.manifest diff --git a/UI/cmake/windows/obs.rc.in b/frontend/cmake/windows/obs.rc.in similarity index 100% rename from UI/cmake/windows/obs.rc.in rename to frontend/cmake/windows/obs.rc.in