Commit Graph

2661 Commits (master)

Author SHA1 Message Date
gxalpha 467f73d4c9 obs-frontend-api: Add function for manual file splitting 2022-07-30 18:50:13 +10:00
Matt Gajownik cb8bc3413a UI: Add support for theme meta, parent theme palette
Theme Meta allows individual themes to provide additional information to
OBS.

The primarily goal is for a theme to define a "parent", allowing to
extend existing themes with additional attributes.
2022-07-30 18:48:19 +10:00
gxalpha 64abfca620 UI/themes: Add image to QGroupBox checkbox on Yami 2022-07-30 17:13:52 +10:00
jp9000 8ef134be79 UI: Set default theme to Yami
Note that this adds a new CurrentTheme3 config variable to preserve
settings of versions older than 28, making this change safely
backward-compatible.
2022-07-28 20:38:51 -07:00
jp9000 2b3c90d2cc UI: Show warning on plugin load failure
Allows the user to know what plugins failed to load. This is
particularly useful if we're going to block Qt5 plugins as well, or if
certain plugins can't load because they're incompatible with a newer
version.
2022-07-28 16:36:01 -07:00
Ryan Foster 4e4afcd6d1 UI: Deduplicate UI element names
Prevent some warnings from AutoUIC.
2022-07-28 15:38:22 -04:00
Tommy Vercetti fb30837a7c UI: Remove unused header for macOS 2022-07-28 14:04:01 -04:00
Norihiro Kamae 766d1bb5b1 UI: Search combo item with QVariant type
A combobox with `OBS_COMBO_FORMAT_FLOAT` type couldn't be initialized to
select current item from the settings data. This commit will create
QVariant value with the similar code as that of adding the items and
search the current item using that value.
2022-07-28 12:21:33 -04:00
Warchamp7 f9e7d237ad UI: Clean up Settings Output form
- Adds frames around certain elements for a better element hierarchy
- Moves the scroll areas into the tabs themselves
- Hides stacked widgets that aren't visible to prevent scrolling of invisible content
2022-07-28 12:19:20 -04:00
VodBox 76ae9cbc3d UI: Respect DPI for preview interactions
This change makes it so that selection outlines, handles and all
interaction events properly respect DPI scaling for the preview.
2022-07-27 22:43:32 -04:00
VodBox 580ebcc935 UI: Add scene item rotation handle
Add a rotation handle to the scene item selection box that will rotate
the source when clicked and dragged.
2022-07-27 22:40:01 -04:00
VodBox e5175e851b UI: Make status bar inactive icons color-blind safe 2022-07-27 21:37:30 -04:00
VodBox 77694d76e8 UI: Add Accessibility menu to settings
This change introduces an accessibility menu to settings, along with
options for overriding the colors used by OBS in the mixer and in the
preview to be more color blind friendly than the options provided by the
current theme.
2022-07-27 21:37:30 -04:00
VodBox 9299a3dbce UI: Change crop border line style 2022-07-27 21:37:30 -04:00
gxalpha f8b31f6f90 UI: Fix macOS permissions availability check
Documentation appears to wrongly claim that this is available in 10.15,
while in reality it's only 11+. This would lead to a crash on 10.15
since the symbol doesn't exist there.
2022-07-27 19:55:09 +02:00
Ryan Foster 81bd1d42f0 CI: Use VS2022 and clang-format 13
Switch to Visual Studio 2022 and clang-format 13.

The Ubuntu 22.04 image currently has clang-format 12.0.1, 13.0.1, and
14.0.0. VS2022 17.2 ships clang-format 13.0.1, so let's use that for now
until VS2022 17.3 is available with clang-format 14.

This commit also makes the necessary changes to allow the clang-format
check to pass.

This commit also updates the obs-browser submodules with the necessary
changes.
2022-07-27 11:09:59 -04:00
gxalpha 2e7c84a62b UI/forms: Improve macOS dock overlay icons 2022-07-27 14:55:56 +02:00
Norihiro Kamae a88b34507a UI: Fix missing file list not including transitions
Call the callback to check missing files during LoadTransition method.
2022-07-27 12:42:32 +10:00
Clayton Groeneveld aae15fc497 UI: Fix bugs with missing files refactor
With https://github.com/obsproject/obs-studio/pull/5148, it was
brought up that the loading of the missing files was not thread
safe, as the missing files were being loaded late in the loading
process. This PR tries to fix that problem, while still simplifying
the original missing files code.
2022-07-27 12:42:32 +10:00
jp9000 48819def6d UI: Omit stream codecs the service doesn't support
This change makes it so that if you select a service, it will check to
see what codecs that service supports, and only list encoders of those
codecs.

If the service doesn't support a codec and you currently have an
unsupported codec selected in output settings, then it'll prompt you
with a dialog telling the user it will switch to a supported codec, and
if they click yes, then it'll change the codec for the user. If they
click no, then it'll switch back to the previously selected service.
2022-07-26 09:23:35 -07:00
jp9000 ea5fb710a9 UI: Refactor simple encoders to a func 2022-07-26 09:23:35 -07:00
tytan652 a595128602 aja-output-ui: Add Qt::Gui to find_qt on Linux
The target is linked to Qt::GuiPrivate without finding the Qt::Gui
component.
2022-07-26 17:34:26 +02:00
tytan652 9c85ff8673 cmake,UI: Refactor find_qt macro
If QT_VERSION is not defined, it gets define with the AUTO value. And
its definition is moved to the helper file.

find_qt now:
- Check quietly for Qt5 and Qt6
- If QT_VERSION is set to AUTO. It checks firstly if Qt5 was found it
  will use it. If not it do the same for Qt6
- If QT_VERSION is set to 5 or 6, it checks if the choice was found and
  use it. And if not, it falls back to the other if found.
- If neither Qt5 or Qt6 are found, a fatal error is emitted.
- The macro saved the _QT_VERSION in the cache to replace QT_VERSION,
  so the process is not repeated each time that find_qt is used.
- When Qt::Gui is in the Linux component list, Qt::GuiPrivate is added.
  So using the versioned one is no longer required.
2022-07-26 17:34:26 +02:00
jp9000 64701a1cea UI: Only check major.minor for "what's new" 2022-07-26 07:49:09 -07:00
jp9000 a7ed93d88d UI: Use separate version string for what's new, save it
Uses a separate version entry for the "what's new" version check to
ensure that it properly resets whenever a "what's new" entry is ready to
be displayed.
2022-07-26 07:40:12 -07:00
jp9000 277e34fbb8 UI: Clean up OBSBasic::ReceivedIntroJson a bit
Just moves some defines above the function rather than have messy
defines all throughout the function.
2022-07-26 07:40:12 -07:00
jp9000 2df1ad5b39 UI: Ensure thread signal posts to UI thread
This is more of a safety precaution to ensure that the "what's new"
thread only executes its result function in the UI thread when emitted,
because the result function can read/write config files.
2022-07-26 07:40:11 -07:00
gxalpha edc509c642 UI/themes: Correctly specify rgb instead of rgba 2022-07-27 00:36:13 +10:00
derrod 9c40e448b6 UI: Add File Integrity Check 2022-07-27 00:34:04 +10:00
Clayton Groeneveld 3dae4a35a1 UI: Relatively center multiple scene items
Before the scene items would be centered at the same spot
when centering them, now they are moved relatively to each
other.
2022-07-27 00:29:32 +10:00
Clayton Groeneveld b3c5524a48 UI: Add scene names to preview/program labels
This makes it easier for users to determine what
is the current preview or program scene.
2022-07-26 23:28:05 +10:00
PatTheMav e15fdf69c0 UI: Add functions to check for and request macOS permissions
Adds functions to check and/or request specific macOS permissions
(audio device access, video device access, accessibility access, and
screen capture access).

By default only audio capture, video capture, and accessibility are
requested on launch - the first two have straight-forward "Yes/No"
prompts, the latter requires people to enable OBS in the settings
application (but is required for hotkey functionality, independent
of scene setups).
2022-07-26 14:20:34 +02:00
Warchamp7 4a38131fb5 UI: Remove padding on QStackedWidget in Yami 2022-07-25 14:25:08 -07:00
jpark37 0d5ba81e32 UI: Add audioProcessOutputIcon to Yami 2022-07-25 16:35:24 -04:00
PatTheMav c1740e3636 UI: Add initialization to ensure compat between pthread and NSThread
Ensures that Cocoa knows that we intend to use multiple threads, per
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Multithreading/CreatingThreads/CreatingThreads.html#//apple_ref/doc/uid/10000057i-CH15-SW21
2022-07-25 17:27:07 +02:00
gxalpha eea2fd2f3f UI: Add status overlay for macOS dock icon
Adds an implementation for the dock icon status overlay on macOS (which
doesn't rely on QtMacExtras, which means it also works on Qt6).
2022-07-25 16:34:31 +02:00
gxalpha f34393170e UI/forms: Add macOS specific dock overlay icons
Co-Authored-By: Misutaa Asriel <8140068+MisutaaAsriel@users.noreply.github.com>
2022-07-25 16:34:31 +02:00
jp9000 d68539e267 UI: Fix wrong AMD recording preset (simple output)
"hq" is not a valid preset. "quality" is the correct preset to use.
2022-07-24 11:18:18 -07:00
jpark37 1610ac04ff UI: Add application audio capture to toolbar 2022-07-23 17:41:34 -07:00
jpark37 9b46795d57 libobs, UI: Add OBS_ICON_TYPE_PROCESS_AUDIO_OUTPUT 2022-07-23 17:41:34 -07:00
tytan652 6c7f8853a8 UI: Use combobox data field for Theme value in settings
Use QComboBox item data rather than always checking for the default
theme custom string.
2022-07-24 10:23:18 +10:00
tytan652 6d06052c51 UI: Enforce Fusion Qt style on Linux
The Breeze Qt style plugin adds frame arround QDockWidget with QPainter
which can not be modifed. To avoid this the base style is enforce to the
Qt default style on Linux: Fusion.
2022-07-24 10:22:18 +10:00
PatTheMav 1766f01b7a UI: Fix crash on macOS if no python path is set in configuration
Obvious fix guarding against calling the std::string constructor with
a NULL pointer.
2022-07-24 10:11:54 +10:00
Norihiro Kamae 5ea10fec82 UI: Remove unused functions for audio mixers
Functions `save_audio_source` and `load_audio_source` are defined but
never called from any code. Also not defined in any header file.
2022-07-23 16:49:21 -07:00
tytan652 fc7af80f84 UI: Hide network features if a non-RTMP service is set
Reimplementation of bc80d0c and f2e6122, because they have to be
reverted by 0b9a8aa.
2022-07-23 16:29:10 -07:00
gxalpha e3f416f3fc UI: Replace QMessageBox setButtonText with addButton 2022-07-22 09:37:17 -04:00
gxalpha 05c6a408e3 UI: Fix Qt 6 position deprecations 2022-07-22 09:37:17 -04:00
gxalpha 49e37db952 UI: Use pipe operator instead of plus for Qt keys 2022-07-22 09:37:17 -04:00
jp9000 2b957c9368 UI: Update simple output to use new AMD encoder 2022-07-21 15:29:25 -07:00
PatTheMav ff4f4fcb92 frontend-tools: Upgrade legacy Python library paths to modern format
Updates the value at runtime and also stores it in the configuration.
2022-07-21 12:16:36 -04:00
Ryan Foster d88ca3b243 UI: Suppress LNK4098
defaultlib 'MSVCRT' conflicts with use of other libs; use
/NODEFAULTLIB:library
2022-07-20 19:32:34 -04:00
gxalpha 80e2a980bf UI: Remove disable_high_dpi_scaling option on Qt 6
With Qt 6, high dpi scaling is always enabled and the
AA_DisableHighDpiScaling becomes no-op. As such, the command line
argument can get removed.
2022-07-20 14:14:38 -04:00
jp9000 0a218e06b7 UI: Add low latency audio buffering mode to UI
This feature is meant to reduce maximum audio buffering and turn off
dynamic buffering mode. This allows the lowest possible consistent
latency for audio buffering, which is useful for the decklink and NDI
outputs which cannot rely on audio timestamps for synchronization.

This can have a negative effect of making audio segments (partial or in
full) cut out. So audio glitching or audio loss can occur if this is
enabled.
2022-07-20 05:31:20 -07:00
tytan652 8befd830a9 aja-output-ui: Avoid using OBS_UNUSED
OBS_UNUSED is not portable to MSVC.
2022-07-20 09:03:31 +02:00
tytan652 91c353c774 UI: Fix undo stack uninitialized ui warning
Moving the declaration of `ui` above `undo_stack` fix the warning.

Co-authored-by: Richard Stanway <r1ch@r1ch.net>
2022-07-19 15:57:55 -04:00
Norihiro Kamae 317780ca1b aja: Remove unnecessary .keepme files
Since the directory contains some files, .keepme, which is intended to
keep an empty directory on a git repository, is unnecessary.
2022-07-19 14:40:32 -04:00
Norihiro Kamae 288f29fa2a decklink-output-ui: Fix memory leak
Add missing bfree by changing `char *` to `BPtr<char>`.
2022-07-19 14:35:01 -04:00
Clayton Groeneveld 41e2491fb4 UI: Add media control icons to Yami
The Yami theme never added the media control icons to
the qss file.
2022-07-19 11:02:20 -04:00
Norihiro Kamae 4ca0273a57 UI: Remove unnecessary UNUSED_PARAMETER 2022-07-19 11:01:00 -04:00
jp9000 0b9a8aa1fd Revert service json lookup refactor in UI
Certain services have custom server lits handling which I had forgotten
about, so although it would have been nice to have this refactor, we'll
have to live with relying on the plugin properties object directly for a
while.

This also reverts obsproject/obs-studio#6530 and
obsproject/obs-studio#6683 because that change depended on this
problematic refactor code.

This reverts commits:
f2e6122881,
bc80d0ca95,
050a29da1a,
22ffc04f73,
275e510aad,
2fa5ffe4df.
2022-07-18 14:52:26 -07:00
Clayton Groeneveld 6eb5a922a7 UI: Remove duplicate missing files code
The same code was in different places, so call single function to
clean up code.
2022-07-18 19:12:31 +02:00
jpark37 54a57b63ad UI: Disable LNK4099 warning
We are very unlikely to ship PDBs for deps.
2022-07-18 03:52:04 -07:00
jpark37 6f3f42eb1f aja-output-ui: Suppress C4996
NTV2TestPatternGen::DrawTestPattern overloads are deprecated.
2022-07-18 03:52:04 -07:00
mvji c041deb433 UI: Check output path when starting replay buffer
Make a better error message for user,
in case recording path is invalid

Issue 6731
2022-07-16 16:50:32 -07:00
Clayton Groeneveld b224a2cd47 UI: Add frame around transitions dock
The transitions dock doesn't have a proper container, like
the other docks.
2022-07-16 16:39:17 -07:00
Clayton Groeneveld 2012963d02 UI: Add menu icons to resource folder
The menu icons were never added to the resource
folder, so they didn't work in the System theme.
2022-07-16 16:30:29 -07:00
gxalpha 05c245532f UI: Correctly spell "ChromeOS" again
Google made up their minds after we merged ccc5767
2022-07-16 16:12:24 -04:00
Clayton Groeneveld 9b09ad9a7a UI: Fix menu icons not showing up
The menu icon was set only in the Yami theme.
2022-07-14 19:48:53 -04:00
tytan652 b65411c343 UI: Fix color format warning
bbeafeabdd change how the combobox is filled.

`UpdateColorFormatSpaceWarning` did not get the required change to use
the combobox data rather than the text.
2022-07-14 11:47:56 -04:00
Warchamp7 9febf96a61 UI: Fix text shifting on lineEdits 2022-07-13 19:14:03 +10:00
mvji bbeafeabdd UI: Add more information to describe output format
In advanced settings
Also enable translation for color format
2022-07-12 23:37:01 +10:00
jpark37 df96e68ca6 cmake: Disable LNK4099 warning
We are very unlikely to ship PDBs for deps.
2022-07-11 22:07:10 -07:00
cg2121 a32793dd04 UI: Use more descriptive tooltips
This makes the scene/source tooltips easier to
understand.

Add -> Add Scene, Add Source
Remove -> Remove Selected Scene, Remove Selected Source(s)
MoveUp -> Move Scene Up, Move Source(s) Up
MoveDown -> Move Scene Down, Move Sources(s) Down
Properties -> Open Source Properties
Filters -> Open Source Filters
2022-07-11 18:17:04 -04:00
gxalpha 29ae00e4af UI: Add Apple H.264 hardware encoder to simple mode
Adds the Apple Silicon hardware encoder as a simple mode option. For
recordings this only requires being on Apple Silicon (since we use the
Constant Quality setting), while for streaming it requires the user to
be on macOS 13 or newer (since we're using CBR).
2022-07-11 23:45:43 +02:00
Tommy Vercetti cabc3c8aec UI: Implement Taskbar Overlay for Qt6 2022-07-10 14:06:15 +10:00
Clayton Groeneveld b307d38ef6 UI: Fix typo with SetSourceName function
The SetSoureName in the adv-audio-control.hpp had newName
misspelled as newNamw.
2022-07-10 14:00:35 +10:00
Clayton Groeneveld 1cf93a4b29 UI: Fix compiling error on nix platforms
On nix platforms, the compile would complain about
using non-const values for the function parameters.
2022-07-10 14:00:35 +10:00
Clayton Groeneveld 22dbf316df UI: Truncate push-to-* labels
The labels for the push-to-mute / push-to-talk hotkeys
were never truncated.
2022-07-10 14:00:35 +10:00
Clayton Groeneveld e40a6be031 UI: Use new truncate function with hotkeys
This updates the hotkeys to use the new truncate label
function in qt-wrappers.cpp
2022-07-10 14:00:35 +10:00
Colin Edwards 50372164d0 UI: Move multiview render into a new class
Co-authored-by: tt2468 <tt2468@irltoolkit.com>
2022-07-10 13:45:43 +10:00
Clayton Groeneveld 873ee8e7ba UI: Fix reset ui warning showing on first start
If a plugin adds a dock and the program is run for the
first time, the reset ui warning would show up.
2022-07-10 12:26:42 +10:00
PatTheMav fad83b040a aja-output-ui: Explicitly mark variables as unused 2022-07-10 09:59:55 +10:00
Warchamp7 2941c48dbe UI: Yami font adjustments
Removes font-family definition for now, and changes
other font sizes to pt units instead of px

Also adds a margin to the SceneTree/SourceTree line
edits to fix qss padding weirdness
2022-07-09 16:04:46 -07:00
gxalpha 2dd1a3fc6f UI: Fix compilation with browser disabled 2022-07-06 19:48:27 +02:00
Matt Gajownik 08cee21158 UI: Apply default stylesheet before applying theme
This significantly improves performance when switching themes.
The original intent was to "clear" customizations applied by the
previously selected theme. This change does not seem to achieve that goal.
2022-07-04 23:28:48 +10:00
Matt Gajownik 570c904977 UI: Don't re-apply theme when saving Settings
When the user changes theme, it is applied immediately. If the user
clicks Cancel, the previous theme is restored. This additional SetTheme
call was unnecessarily causing the existing theme to be re-applied,
resulting in a momentary hang without clear cause.
2022-07-04 23:00:15 +10:00
gxalpha 38ee4dea6e UI: Remove OBSBasic.ui.autosave 2022-07-03 01:55:31 +02:00
Warchamp7 936bd58874 UI: Add new theme Yami 2022-07-02 16:52:39 -07:00
tytan652 f2e6122881 UI: Fix network feature visibility after loading settings 2022-07-02 16:32:44 -07:00
Vainock e053f9dd26 UI,mac-avcapture: Use consistent variables in locales 2022-07-02 14:02:40 +10:00
Vainock e612a6bd66 UI: Remove unused undo/redo strings 2022-07-02 14:02:40 +10:00
gxalpha 31eb60f031 UI: Make properties window default to 50/50 split 2022-07-02 13:53:42 +10:00
Matt Gajownik 5fd4339c1d UI: Move HDR units for settings to suffix 2022-06-30 20:57:02 +10:00
gxalpha cf0275e00d UI: Fix YouTube Chat build failure with Qt 6 2022-06-29 18:32:09 -04:00
gxalpha 3513c78be2 UI: Add ability to send messages to YouTube chat 2022-06-27 14:35:01 -04:00
gxalpha 49dfc113c1 UI: Add SendChatMessage to YouTube API wrappers 2022-06-27 14:35:01 -04:00
gxalpha 5a298106bc UI: Add vertically expanding LineEdit Widget
Meant to behave like a QLineEdit (disallowing newlines and having a
maximum length), but show multiple lines.
2022-06-27 14:35:01 -04:00
tytan652 bf985946a4 libobs,UI,docs: Add info as text property sub-type in the property API 2022-06-26 17:31:59 +10:00
gxalpha cd900d7091 UI: Try closing remux before initiating shutdown
Makes OBS try to close the remux dialog before Clearing Scene data since
in case a remux might still be going on and the user does want to abort
closing OBS.
2022-06-25 21:44:58 -04:00
Clayton Groeneveld 3cfd30ae2a UI: Add ability to reset whole UI
Users for example disable all of the items in the view menu.
This allows them to easily reset them all.
2022-06-25 21:24:35 -04:00
tytan652 bc80d0ca95 UI: Hide network features if a non-RTMP service is set
Only rtmp_output has those features implemented.
2022-06-25 17:11:29 -07:00
tt2468 81003b2c64 UI: Change default reconnect values
- Base reconnect delay is now 2 seconds
- Max retry count is now 25
2022-06-25 17:06:00 -07:00
gxalpha 7475eff13a UI: Only offer ultrafast-fast x264 presets in Simple Mode 2022-06-25 16:30:27 -07:00
gxalpha cc5e5cbb94 UI: Move Simple Mode encoder preset out of Advanced 2022-06-25 16:30:27 -07:00
gxalpha b2895496c7 UI: Move Simple Mode audio bitrate above encoder 2022-06-25 16:30:27 -07:00
Norihiro Kamae fcf6b24e44 UI: Fix crash if missing module in context bar
If a module is not found in context bar, it crashed when resolving
source type name. This is same change as 41367bb2b but fixes
window-capture and display-capture.
Also removes an unnecessary pair of braces.
2022-06-25 16:09:30 -07:00
tytan652 066f0defcf UI: Fix cut transition not being initialised
78bdd4cb01 removed it accidentally
2022-06-25 12:12:39 +02:00
Matt Gajownik 2bb780468c UI: Fix formatting 2022-06-25 14:46:05 +10:00
Matt Gajownik 76cc739c7f UI: Support pressing space to open MenuButton 2022-06-25 14:39:30 +10:00
Matt Gajownik 0135af9c34 UI: Use existing IsThemeDark() in more places 2022-06-25 14:33:52 +10:00
gxalpha 889ca0fc04 UI: Regroup and Reorder source right-click menus
Visually, the Scale Filtering, Blending Mode & Method, and Deinterlacing
menus are now grouped together, with "Hide in Mixer" being its own group
until a better place for it has been found.
Projector and Screenshot menus have been moved down.

As a related code cleanup, the creation of sourceProjector and
sourceWindow has been moved down and partially inlined.
2022-06-20 19:31:31 -03:00
gxalpha bb69883bd0 UI: Only show "Interact" menu for interactable sources
Most sources can't be interacted with, so always showing this menu only
takes up space and makes the menu stack bigger.
2022-06-20 19:31:31 -03:00
gxalpha 829e906ac2 UI: Remove "Resize output (source size)" menu 2022-06-20 19:31:31 -03:00
gxalpha 1c7062c3a4 UI: Move transition duration above Add/Remove buttons 2022-06-20 18:29:22 -03:00
gxalpha 78bdd4cb01 Revert "UI: Redesign transitions dock"
This reverts commit d5905039c9.
2022-06-20 18:29:22 -03:00
gxalpha 6b287dbcc1 Revert "UI: Fix "Add [transition]" not being translated"
This reverts commit 1a14304784.
2022-06-20 18:29:22 -03:00
gxalpha 4feabf227f Revert "UI: Move "Add [transition]" to bottom of combo"
This reverts commit 6460579fb6.
2022-06-20 18:29:22 -03:00
gxalpha 609acca161 Revert "UI: Fix non-default transitions going below add vals"
This reverts commit da8547c112.
2022-06-20 18:29:22 -03:00
gxalpha 5fad651b2d Revert "UI: Fix selecting correct transition when deleting"
This reverts commit 3486c0b363.
2022-06-20 18:29:22 -03:00
gxalpha 6188144cab Partly revert "UI: Fix Qt signal connection warnings"
This partly reverts commit 40f99da8a2 so
that conflicts are gone.
2022-06-20 18:29:22 -03:00
gxalpha 0fa7834bfc UI: Use libobs rosetta detection 2022-06-19 01:37:15 +02:00
Clayton Groeneveld 295386781f UI: Cleanup advanced audio window
This converts the advanced audio window to use
a ui form, so it is easier to modify in the future.

This also fixes sizing issues with the control widgets,
as before the audio tracks would be clipped, because the
widgets in the window were too wide.
2022-06-18 23:13:13 +10:00
Clayton Groeneveld fca727c191 UI: Add eventFilter to media slider
When pressing the up and down arrows or moving the mouse wheel
for the media slider, the slider would move.
2022-06-11 16:28:57 -07:00
Clayton Groeneveld 76660517d2 UI: Make transform dialog spinboxes consistant
The spinboxes in the transform dialog were different sizes.
2022-06-11 16:19:23 -07:00
Clayton Groeneveld 5c5861098b UI: Fix position of reset filters button
This removes the horizontal spacer that pushed the filters
reset button to the right.
2022-06-11 16:16:00 -07:00
OldBaldGeek 1f34b4e2ed UI: handle theme file names with "." characters
Use QFileInfo::completeBaseName() to get name up to .qss for use
as Theme name.
2022-06-11 16:15:11 -07:00
Norihiro Kamae 1c4bc6e735 UI: Fix multithread-unsafe GetCurrentScene
The function `OBSBasic::GetCurrentScene()` is also called from the
graphics thread and access to a QListWidget object, which is not
multithread-safe.
2022-06-06 10:20:00 -07:00
Yuriy Chumak 84e7db5059 UI: Simple Output Mode for NVENC HEVC 2022-06-05 16:02:58 -07:00
gxalpha efd26b25ea UI: Mark YouTube window showEvent as override 2022-06-01 19:43:03 -04:00
gxalpha e0472f5b9e UI: Fix unused parameter warnings 2022-06-01 19:43:03 -04:00
tuduweb 34e346a011 UI: Fix crash when pressing `tab` key in rename 2022-05-31 09:53:14 -04:00
Richard Stanway 34bbb94acd
UI: Use int return type in OBSIgnoreWheelProxyStyle 2022-05-30 22:55:36 +02:00
cg2121 0d0b65e8c8 UI: Truncate names in advanced audio dialog
This limits the length of the name label in the advanced audio
dialog to 80 characters, so the dialog doesn't get too wide. If the
name is truncated, "..." are added at the end of the label, and the
label's tooltip is set to the full name of the source.
2022-05-30 21:00:53 +10:00
Jim 1705edf8f9
Merge pull request #6475 from GeorgesStavracas/gbsneto/drop-glx
Au revoir, GLX
2022-05-28 17:04:17 -07:00
Kurt Kartaltepe f8d415afbe UI: Close display before native surfaces
This hooks the platform specific events in order to close the obs
display more accurately. Earlier attempts on hooking visiblity, but Qt
does not ensure that visibility is changed before the surface is
destroyed. So we ended up racing with the EGL driver and on some
drivers if you lose the race they hang.

Also only force display creation if the display is actually visible.
When a source type is not video/drawable (or is missing) this would
force the display to be created for the blank window and also hang.

Finally force closure of the preview displays during scene cleanup to
avoid similar ordering issues in Qt. Qt has even less order guarentees
during close and we are sure that displays are no longer needed at this
point in the UI.
2022-05-28 16:54:37 -07:00
tt2468 f6a77ec0a6 libobs/util: Add %s string replacement for unix time
Adds %s which replaces the keyword with the current unix epoch time.

The %s keyword is common in languages like PHP and Python, and even
some C implementations, but it is not standard so this is a fallback.
2022-05-28 18:30:41 -04:00
cg2121 1dd406107c UI: Add suffixes to transform dialog
This makes it easier to understand what the
values in the dialog mean.
2022-05-28 14:19:26 +10:00
Georges Basile Stavracas Neto ca2d02c2ce Drop GLX renderer
"They must often change, who would be constant in happiness or wisdom"

 - Confucius
2022-05-24 14:31:48 -03:00
Richard Stanway 108d32c0c6 UI: Remove m3u8 format from simple output mode
This option regularly confuses users, who accidentally select it and
then ask why they have hundreds of 2-4 second video clips in their
output folder. HLS output format to file is a pretty niche use case,
so let's keep it in advanced mode only.
2022-05-21 15:46:40 -07:00
gxalpha 8328609b20 UI: Don't transition in studio mode if scenes are the same
Fixes an issue where when "Duplicate Scenes" and "Switch Preview/Program
after Transitioning" were disabled and preview and program were the same
scene, pressing "Transition" would just disable the menus without
anything happening. This is because a transition is initiated, but never
actually starts transitioning (since both scenes are the same). The
check for this already exists, but was only triggered in swapScenesMode.

Also renames the newScene variable to lastScene to make it more obvious
what it actually is (especially since now, it's not only the new scene
anymore).
2022-05-21 15:42:36 -07:00
Ryan Foster ff58d35df3 decklink-output-ui: Fix crash when stopping preview
Removing the first call to `video_output_stop` prevents the `data_mutex`
field in `struct video_output` from being destroyed while still in use.
The `render_preview_source` function will call `video_output_lock_frame`
upon that mutex and encounter a NULL pointer exception.

Co-authored-by: Paul Hindt <paulh@aja.com>
2022-05-20 21:15:53 -04:00
gxalpha 741bade4ec UI: Use correct terminology for Program in Studio Mode 2022-05-20 07:38:30 -04:00
gxalpha 41521b2816 UI: Move taskbar overlay functions into platform.hpp
Refactors the existing implementation for Windows into
platform-windows.cpp, allowing for other OS implementations in the
future.
2022-05-20 20:16:56 +10:00
derrod 5dcabaf5cf UI: Make OAuth base URL configurable 2022-05-19 09:31:38 -07:00
Ryan Foster dbdf82da80 UI: Fix memory leak with Manage Broadcast dialog
When OBS has been connected to a YouTube account, the Manage Broadcast
dialog becomes available. Opening and closing this dialog leaks about
2-3 MB of memory each time. This happens because the dialog is never
deleted, and a new object is created every time the dialog opens.

If we set Qt::WA_DeleteOnClose on the dialog, then the dialog->exec()
call would call delete this. However, if the dialog->Valid() call
returned false (this should currently be impossible), then exec is never
called, so it would not clean up.

To fix this, make the dialog stack-allocated instead of using new and
delete.

Detected by clang-analyzer.
2022-05-16 22:46:50 +02:00
Richard Stanway 377af35016
UI: Move scene import dialog to the stack
Changed for consistency as almost every other dialog in the application
is stack-allocated.
2022-05-16 21:51:01 +02:00
cg2121 8dc91ce5e1 UI: Add rename signal to adv audio dialog
The names wouldn't be updated in the advanced audio dialog
when the source is renamed.
2022-05-14 16:36:00 -07:00
gxalpha 252918a7c4 UI: Put program on top in vertical studio mode
Co-Authored-By: Elias Thompson <email@eliasthompson.com>
2022-05-14 16:15:04 -07:00
gxalpha 15874f9037 UI: Use Shift instead of Alt for Copy/Paste Transform
For Keyboard shortcuts with Ctrl as the primary modifier, the secondary
modifier should be Shift, not Alt. Alt could be used as a tertiary in
the future if really necessary, but generally it should be avoided.
2022-05-14 16:11:07 -07:00
Jim f2ea473373
Merge pull request #6436 from jpark37/jxr-wic
libobs,image-source,UI: Add JXR support on Windows
2022-05-12 16:09:53 -07:00
Ryan Foster 069f35a75c UI: Find Qt WinExtras only in Qt 5
WinExtras does not exist in Qt 6. Only try to find it and link against
it if using Qt 5.
2022-05-11 23:37:41 -07:00
jpark37 475d8432cb UI: Support JXR image dropEvent on Windows 2022-05-08 15:25:43 -07:00
jpark37 e646eb4828 UI: Restore portable mode on Windows 2022-05-08 06:47:09 +02:00
jpark37 f6589b12ae UI: Redo encoder names now that H.264 isn't alone
The old names were simple_h264_recording, simple_h264_stream,
recording_h264, and streaming_h264.

The new names are simple_video_recording, simple_video_stream,
advanced_video_recording, and advanced_video_stream.
2022-05-06 20:58:09 -07:00
jpark37 1dc3da4163 UI: Add "H.264" to simple hardware encoders
Hopefully stops people from assuming other video compression standards
are usable from these settings.
2022-05-06 06:11:25 -07:00
tytan652 f4809b614e UI: Fix unused-parameter warnings 2022-05-04 01:37:10 -07:00
PatTheMav 55b23a26d2 UI: Fix configuration path handling for Linux portable builds
Original code uses simple `ifdef` pattern as well using the preprocessor
definition in a conditional check. With the rework, the definition was
set to an empty string (if the build flag is not enabled), which leads
to it being evaluated as "true" all the time.

This change uses simpler definition check and fences off code relying
on the flag being enabled.
2022-05-03 14:35:08 -04:00
cg2121 346430e71f UI: Only use volume scrollbars when needed
The scrollbars were always set to be on, no matter
how many volume controls that were being used.
2022-05-01 09:48:12 +10:00
Norihiro Kamae 34e570c5bc Fix indent on multiline comments 2022-04-30 16:06:23 -07:00
jpark37 b45ad961c3 UI: Do not prefer NV12 for I010/P010
Can cause videos to save as 8-bit.
2022-04-29 12:34:56 -07:00
jpark37 165a513f78 UI: Allow HEVC streaming 2022-04-28 08:59:53 -07:00
Andrew Story 961b75b58c libobs,UI: Issue appropriate signals on group / ungroup
Due to the way the frontend works, the logic for inserting the row for
the group in the UI was dropped since the new item_add message will
insert one automatically since it forces a refresh of the scene items.
The reliance on that implicit row insertion when grouping items is a
bit of a code smell, although the alternative would be to add logic to
disable handling the signal for that instant, which is probably a
worse choice.
2022-04-24 12:09:38 -07:00
mvji 80600c1c26 UI: Fix compiler warning when WIN32 is not defined
Fix unused parameter warning.
2022-04-23 16:12:45 -07:00
mvji a427d69d76 UI/importers: Fix compiler warning
Fix comparison of integers of different signs.
Use string::npos instead of -1
2022-04-23 16:12:45 -07:00
Kurt Kartaltepe 242b49aa8a UI: Remove top level size constraints
This removes the min and max size properties from the YouTube "Manage
Broadcast" dialog. Such values depend on the actual content or very
precise layout management, making hardcoded values prone to being
incorrect. To avoid incorrect values we should avoid these settings on
top level widgets/windows.

This pattern can lead to crashes on Wayland compositors like
GNOME which are strict about these values being correct.
2022-04-20 18:34:45 -07:00
jp9000 050a29da1a UI: Use const ref for get_service_from_json() 2022-04-18 17:46:07 -07:00
jp9000 22ffc04f73 UI: Refactor duplicated streaming page code
Moves duplicated streaming service code to its own class to make this
particular code slightly less insufferable to modify (but only slightly)
2022-04-18 12:27:29 -07:00
jp9000 275e510aad UI: Prevent auto config service names squishing 2022-04-18 12:27:29 -07:00
gxalpha 2422deb78a UI: Default mixer volume meter to two channels
If OBS is set to mono, it will still default to mono.
Also corrects a somewhat related comment (which was also wrong before
this change)
2022-04-17 11:54:50 +10:00
gxalpha d6c6e8df87 UI: Add shortcut for larger movement steps in preview
Adds the ability to move a selected item 10 pixels in the preview when
holding shift while using the arrow keys, instead of going just 1 pixel
per step.
2022-04-16 16:47:44 -07:00
jpark37 338608bd67 libobs,UI: Support HLG nominal peak level
HLG output uses MovieLabs-recommended procedure.

- If peak luminance is greater than 1000, use maxRGB EETF to 1000.
- Otherwise, don't tonemap.
- Then use normal HLG conversion procedure with gamma 1.2 (1000 nits).
2022-04-14 09:36:44 -07:00
jp9000 2fa5ffe4df UI: Just use json directly for service lookups
This commit accomplishes three different things:

- Makes it much less difficult to communicate service settings
  between the UI and the plugin.

- Refactors some code and makes it cleaner and easier to modify to our
  needs (although there is still a lot of work to do on that front
  because of heavy code duplication issues between auto-config and the
  stream settings pane).

- Significantly reatly reduces the number of times the json file has to
  be opened and parsed.

This also kind of denotes a bit of a failure on the plugin communication
aspect. The properties system is too limited and jank for a lot of
things we would like to do at times.
2022-04-14 02:10:49 -07:00
cg2121 02aa833950 UI: Fix show/hide toggle with minimize to taskbar
If the user would minimize to tray instead of taskbar, the
window would flash when clicking show in the tray menu, and
the preview would be disabled. This would only happen on Linux.
2022-04-13 16:14:41 +10:00
Norihiro Kamae ebc291956c UI: Set automatic file splitting time in minutes
The original PR was made with time specified in seconds because it was
useful to debug the behavior. For production, assuming most users want
to specify 10 minutes or more, the time should be specified in minutes.
2022-04-11 06:58:39 -07:00
Jim b745a100a3
Merge pull request #5371 from norihiro/automatic-file-splitting
Automatic file splitting
2022-04-10 16:49:37 -07:00
jpark37 59dbc3eb81 libobs: Rename Rec. 2020 to Rec. 2100
Rec. 2020 is really an SDR spec, but I think HDR10 made it okay to slap
PQ on it, call it an HDR spec. Rec. 2100 came along after and formally
allowed the use of PQ/HLG, so we should use 2100 instead.
2022-04-10 00:13:52 -07:00
Matt Gajownik c426622690 UI: Create Log Viewer window XML file, migrate code 2022-04-10 11:52:11 +10:00
Matt Gajownik dbb063eae6 UI: Create Properties window XML file, migrate code
window-basic-properties was written in the earliest days of OBS. To
make it easier to navigate & adjust, this moves all the structural
code into a new .ui file and out of the C++ code.

This also modifies the ButtonBox in Filters to use matching buttons.
2022-04-10 11:52:11 +10:00
tt2468 af67ef8e57 libobs, UI: Fix `--verbose` logging for stdout
Verbosity of stdout was previously hardcoded to INFO, while log viewer
and log files had correct verbosity. This makes the behavior of
--verbose make sense in all places.
2022-04-09 16:48:37 -07:00
jpark37 76ddbe11d0 UI: Add high-precision sRGB support
Remove warnings about using 10-bit formats with SDR color spaces.
2022-04-08 17:19:23 -07:00
jpark37 9409ce1ea7 UI: Add Rec. 2020 space and I010/P010 formats
Also localize color spaces with improved naming. Should be compatible
with existing user profiles.
2022-04-07 02:38:33 -07:00
gxalpha 2d75167e4c UI: Truncate displayed file paths in the middle in Remux window 2022-04-07 01:52:02 -07:00
gxalpha e840966968 UI: Remove old ComboBoxIgnoreScroll 2022-04-02 16:04:51 -07:00
gxalpha e33b7d2dab UI: Disable wheel scrolling on QComboBoxes
Adds a new ProxyStyle, OBSIgnoreWheelProxyStyle, and applies it to the
entire program. This style sets a StyleHint to disable mouse wheel
scrolling on QComboBoxes.
The existing OBSProxyStyle, which is used only for the context bar, has
been renamed accordingly.
2022-04-02 16:04:51 -07:00
jpark37 f2b049c0e7 UI: Add support for nonlinear SRGB blending 2022-04-02 16:02:41 -07:00
Richard Stanway a8ecf3c8f2
UI: Fix display affinity logic when re-applying
The old behavior toggled display affinity every time the window was
updated instead of applying it consistently.
2022-03-31 17:23:53 +02:00
PatTheMav aae3a6a466 cmake: Fix diverging prefix padding for OBS status outputs
Status output related to OBS configuration is prefixed with the string
"OBS" and added padding for enabled and disabled features. This padding
was not aligned between platforms.

By moving the padding and prefix decoration into its own function,
both elements are controlled in a single place. CMake scripts were
changed to use this new function `obs_status` instead of using CMake's
`message` function directly.
2022-03-26 09:44:23 -04:00
gxalpha ee781bfa24 UI: Remove unneeded QProxyStyle include 2022-03-26 17:57:14 +11:00
Exeldro de1d806e83 UI: Add Copy/Paste for source visibility transitions 2022-03-24 23:51:10 -07:00
jp9000 e236a16715 libobs: Refactor hide/show transition functions
Having two separate functions for each hide/show transition action is
silly and makes code awful.
2022-03-24 22:32:41 -07:00
Richard Stanway 85addc3dac UI, file-updater, rtmp-services: Enable curl ALPN support
In the years since this code was added, ALPN is now widely supported,
and NPN is being removed entirely in the latest version of nginx. It's
time to start using ALPN!
2022-03-24 17:10:01 -07:00
Jim 8d15aea69d
Merge pull request #6146 from jpark37/hdr-main-preview
libobs, UI: Add support for color spaces
2022-03-24 16:56:59 -07:00
Monsteer 8c0603e991 UI: Add missing previousIcon in Rachni theme
The previous icon for the media icons set in the Rachni theme is missing
in the theme's .qss file.
2022-03-24 14:18:14 -04:00
jpark37 5748ab7e0d UI: Wire up WM_MOVE and WM_DISPLAYCHANGE events 2022-03-23 22:35:26 -07:00
jpark37 cd22df09c9 libobs, UI: Add SDR white nits option 2022-03-23 22:35:26 -07:00
tytan652 2a0e3c0c9b UI: Save custom browser docks with docks data
When saving custom browser docks, docks properties are used rather
than actions properties.
2022-03-22 22:24:23 -07:00
tytan652 b4b1b4c5d3 UI: Remove UUID from ExtraBrowsersModel
This attribute is completely unused.
2022-03-22 22:24:23 -07:00
tytan652 ed8ed0ce3f UI: Fix custom browser docks UUID
When those docks get updated, an empty string is applied to the UUID
property.
2022-03-22 22:24:23 -07:00
Matt Gajownik 923d427212 UI: Require Qt Creator's casing for cursorShape in XML validator
While Qt Designer doesn't care about casing, the XML schema spec does.
Due to Qt Creator automatically changing case on save, require the
uppercase variant in all situations, so that other devs don't have to
manually change the case after Qt Creator changes it.

NOTE: This introduces an adjustment to the spec, different from what
Qt provide from Qt Designer. If this file is changed in future, this
diff may need to be manually re-applied.
https://doc.qt.io/qt-5/designer-ui-file-format.html
2022-03-20 11:09:21 +11:00
Matt Gajownik d066e89d56 UI: Fixup minor Qt Creator inconsistencies
Qt Creator automatically adjusts these files when opened. Rather than
contributors having to manually undo these changes, just apply them
directly into the repository.
2022-03-20 10:32:45 +11:00