Commit Graph

241 Commits (71130137f35b48a3f61f1ca963df36bc51d14836)

Author SHA1 Message Date
SuslikV 2b175d6da9 UI: Add missing option to context menu
Add 'Advanced Audio Properties' option to context menu over empty area
of the Mixer's pane.
2017-09-14 15:01:15 +02:00
cg2121 76b6266689 UI: Allow hiding/unhiding sources in the mixer
Allows the ability to hide/unhide sources in the mixer that the user
doesn't care about or doesn't necessarily want to see (such as video
sources that have audio but don't have any audio playing).  If all
sources are hidden, the user can right-click the mixer's empty area and
choose "unhide all" via a context menu.

Closes jp9000/obs-studio#1002
2017-09-13 21:17:44 -07:00
jp9000 7bde1eb6af UI: Allow right-clicking mixer sources to bring up menu
Allows bringing up properties/filters/etc via right-clicking mixer items
in addition instead of only being able to click the gear icon.  Minor
QoL improvement.
2017-09-13 21:17:44 -07:00
SuslikV a21da59741 UI: Fix parent window geometry loading
The parent window adjusted according to child object polices and hint 
sizes. Thus, it is possible to disable all docking panes to restore 
true parent geometry first, the docking geometry and settings will be 
restored later in OBSBasic::OBSInit().
2017-08-12 19:45:25 +02:00
SuslikV 77ddce3f9a UI: Fix stats window geometry saving on shutdown
Possible fix for: https://obsproject.com/mantis/view.php?id=923

If you close whole application (not just stats window) it skips the
close event and thus saving of the geometry.  The Qt::WA_DeleteOnClose
was set earlier.

Closes jp9000/obs-studio#984
2017-08-06 05:41:58 -07:00
jp9000 10d6c347cc UI: Move adv. audio props. to each audio config button
Instead of having an extra config button that essentially wastes
valuable window space, allow the ability to open advanced audio
properties from each audio meter config button.
2017-08-05 21:20:08 -07:00
jp9000 8b68ccdc13 UI: Fix build issue with older linux Qt5 packages
QMainWindow::resizeDocks isn't supported on certain long-term support
distros (ubuntu trusty in particular), so instead just restore the
starting state and don't try to recalculate the ideal positioning.
2017-07-27 22:50:25 -07:00
jp9000 25bb8a444f UI: Add modular UI
Changes the UI to an adjustable user interface, allowing the user to
fully customize how the scenes list, sources list, the mixer,
transitions, and the buttons are oriented on the main window window.
2017-07-27 12:17:18 -07:00
SammyJames 4fd66d4d1e libobs: Add post-load module callback
This allows the ability for certain types of modules (particularly
scripting-related modules) to initialize extra data when all other
modules have loaded.  Because front-ends may wish to have custom
handling for loading modules, the front-end must manually call
obs_post_load_modules after it has completed loading all plug-in
modules.

Closes jp9000/obs-studio#965
2017-07-21 08:27:31 -07:00
Jim 9ad8e0c5f0 Merge pull request #947 from Fenrirthviti/new-theme
UI: Add new theme, update theme capabilities
2017-07-01 15:48:05 -07:00
Joseph El-Khouri 8942c18695 UI: Allow zoom with the scroll wheel
Adds the ability to zoom into the preview when fixed scaling mode is
enabled.

(Edit by Jim: Also now saves zoom and scroll position)

Closes jp9000/obs-studio#917
2017-06-30 20:20:56 -07:00
Shaolin e5756a922a libobs/plugins/UI: Suppress unused variables warnings
Closes jp9000/obs-studio#937
2017-06-27 21:55:37 -07:00
cg2121 fce078d997 UI, libobs: Add ability to lock individual scene items
Adds a lock checkbox to allow the user to lock a specific scene item.

Closes jp9000/obs-studio#949
2017-06-27 10:27:57 -07:00
cg2121 b8d907f399 UI: Add fullscreen UI option to view menu
(Edit by Jim: Removed "Fullscreen Preview" because that's already sort
of served by the normal fullscreen projector option via the preview
context menu)

Closes jp9000/obs-studio#846
2017-06-26 09:49:43 -07:00
cg2121 50103825c0 UI: Add fullscreen projector to systray menu
(Edit by Jim: Changed it to just add the fullscreen projector sub-menu
like when right-clicking the preview, that way it doesn't have to add
new locale text for translators, and allows the users to specify which
monitor to use)

Closes jp9000/obs-studio#845
2017-06-26 08:35:52 -07:00
jp9000 36394ab08d UI: Fix potential crash with unsupported video cards
If a video card is unsupported, it will attempt to initialize the stats
window, querying values from a video subsystem that doesn't exist, and
crash instead of alerting the user that their hardware is unsupported.
2017-06-24 09:14:46 -07:00
jp9000 1d2def766f UI: Preserve source if audio settings device changed
If the user changes one of the devices in audio settings, it would reset
all of its data, including settings, filters, flags, and all that.  This
changes the handling so that the source and all of its other settings
are preserved if the user just changes the device.  (Note that if the
user disables the device, settings will be lost; this only applies to
when the user changes the device to a different device for whatever
reason)
2017-06-21 00:03:14 -07:00
jp9000 96f746ce41 UI: Initialize Stats window values after OBSInit/reset
When the statistics window starts up for the first time, it reset values
at that very moment so that stray lagged frames due to OBS' startup
wouldn't be displayed.  However, that's really a bad place to reset
those values because the user could want to view the stats window after
a long stream, and having those values reset when he/she views the
window for the first time would sort of make the point of viewing your
stats moot.

Instead, reset the values only when applicable, such as after OBSInit or
when video is reset.
2017-06-19 15:38:13 -07:00
Joel Bethke 432e285257 UI: Add new theme, update theme capabilities
I have always felt that the out of the box themes for OBS were quite
lacking, and have spent a lot of time going through and sorting out the
difficulties with the current setup. I've added a new themeID parameter to
several elements that were otherwise impossible to target with QSS in a
theme. Since Qt has pushed for the use of QML over QSS at this point,
these should be considered workarounds. Included is the theme I was
working on that can serve as a base. I'm hoping to encourage others to
make their own themes, so we can grow the available themes for OBS.

I am happy for any feedback on the theme itself, or other updates that
can me made to make creating new themes easier overall.
2017-06-13 14:37:59 -05:00
Colin Edwards c6e2318eae UI: Look for plugins in ~/Library/Application Support/obs-studio/plugins/ 2017-05-29 17:41:29 -05:00
jp9000 3470776843 UI: Make Stats a regular window rather than dialog 2017-05-15 15:02:56 -07:00
jp9000 4ff7ac0bfa UI: Change output blocking bool to integer ref counter 2017-05-15 14:35:36 -07:00
jp9000 0697e37b26 UI: Fix misleading log message when updating settings
While an output is active, the user may try to reset the settings in the
settings window, causing a misleading error message to be thrown in the
log indicating that it's "falling back" to OpenGL.

Instead, if an output is currently active, do not reset video.
2017-05-15 14:28:00 -07:00
Richard Stanway 2933b89733
UI: Add support for showing output error messages 2017-05-15 12:03:42 +02:00
jp9000 13741034dd UI: Don't use "quit on last window closed"
Instead, quit only when the main window has been fully closed (and not
minimized to tray).  Fixes a bug where if the main window is minimized
to tray and another non-child window is open (for example, the stats
window), and then that window is closed, would cause the program to
prematurely exit and crash.
2017-05-14 13:03:46 -07:00
jp9000 b40f940b51 UI: Add option to show stats on startup to general 2017-05-13 20:47:47 -07:00
jp9000 b3435f62d7 UI: Bring stats to front if it already exists
If the menu item is triggered again, just bring it to the front instead
of trying to recreate it again.
2017-05-13 20:45:48 -07:00
jp9000 522f5cdf3b UI: Make sure all message box buttons are translated
Instead of QMessageBox::question and QMessageBox::information, use the
OBSMessageBox class, which translates all buttons.
2017-05-13 14:06:32 -07:00
jp9000 0e1ae62355 UI: Add stats dialog
Shows performance stats, and streaming/recording stats, and helps warn
the user when they have less-than-optimal values with coloring on the
values (e.g. yellow when getting low on disk space, red when getting
really low)
2017-05-13 01:52:54 -07:00
jp9000 4049a5a882 UI: Add auto-configuration wizard
The auto-configuration wizard is designed to allow first-time or
novice/uneducated users or to set up video and encoding settings in a
very quick and easy way.  It'll automatically perform a bandwidth test,
and/or test the user's video settings to determine the most ideal
settings for streaming and recording (assuming a 1-pc setup).
2017-05-08 02:12:03 -07:00
jp9000 9d019e90ab UI: Limit default canvas res to 1920x1080 or below
The reasoning behind this is because having a very large canvas size can
negatively affect the user experience -- most sources end up seeming
smaller than they need to be to users, resulting in the user needing to
size up the sources, or in the case of webcams it makes the user try to
use much larger webcam resolutions than they should reasonably need to
do, resulting in higher unintentional resource usage.  The program will
additionally require more fillrate to render and downscale things as
well.

This applies only to the default starting base/canvas resolution for new
users only.

Additionally, users that ran the program pre-19 will be unaffected by
this change, as it will detect that and set the old defaults to prevent
an unexpected change in resolution for those users.
2017-05-06 11:29:40 -07:00
jp9000 ca0d4d18d5 UI: Don't subject base/output resolutions defaults
If defaults change for the base or output resolutions, it could
unintentionally affect users who are using defaults by chance and have
never changed those values.

Instead, save those values are soon as defaults are set if the users
haven't already set them.
2017-05-06 11:29:39 -07:00
jp9000 b850bc6415 UI: Add function to enable/disable outputs 2017-05-06 11:29:37 -07:00
jp9000 08a94072a0 UI: Always alternatively open backup scene json file
Fixes an issue where scene data would reset if the file was not found,
even if a backup file existed.  This should prevent those remaining
stray cases where user's scenes would seem to be suddenly deleted if the
original file was deleted for some reason or another.  The backup files
should always be available, so this should clear up that last remaining
case.
2017-05-04 18:17:42 -07:00
cg2121 71c5753207 UI: Add ability to output to window
Closes jp9000/obs-studio#841
2017-05-04 17:07:36 -07:00
Shamun 0206227b75 UI: Add command line option for starting up always on top
Closes jp9000/obs-studio#853
2017-04-30 07:49:25 -07:00
Ryan Foster 2d80ae0231 UI: Remove unused defines from old updater code
This commit removes some define statements that were used in the updater
code before OBS Studio 18.0.0.
2017-04-26 13:09:30 -04:00
Jim 3a3015aecd Merge pull request #855 from MP2E/master
UI: Fix segfault when no system tray exists
2017-03-25 08:53:02 -07:00
jp9000 6af48130e0 UI: Fix bug where items can't be deleted in last scene
Bug introduced in jp9000/obs-studio#861
2017-03-25 07:36:46 -07:00
cg2121 bcd491a3d6 UI: Add copying/pasting of sources/filters
Closes jp9000/obs-studio#860
2017-03-25 04:29:49 -07:00
Cray Elliott c47cb25434 UI: Fix segfault when no system tray exists 2017-03-23 16:47:42 -07:00
cg2121 66dbf8f258 UI: Add workaround to fix deleting final scene bug 2017-03-13 13:18:10 -05:00
jp9000 556ac1fbb7 UI: Add logging of audio monitoring to sources 2017-03-02 13:05:38 -08:00
jp9000 8d3e839ac8 UI: Log audio monitoring dev. on start and when changed 2017-03-02 12:35:37 -08:00
jp9000 075f911f12 UI: Fix audio monitoring dev. not being set on startup 2017-03-02 11:38:55 -08:00
jp9000 133fa04db3 UI: If scene/source names exist, start from 2
Currently if you have a scene, "Scene" for example, and you create a new
scene, the dialog will pop up with a default name, but it'll start with
"Scene 1" instead of "Scene 2".  Same thing occurs with sources.  This
fixes that to start from 2 instead.
2017-02-26 08:23:31 -08:00
derrod 3fe2a79c81 UI: Add codec compatability checkbox to ffmpeg output
Closes jp9000/obs-studio#804
2017-02-25 09:16:46 -08:00
derrod 1fd302218b UI: Add gop size option for custom ffmpeg output
Closes jp9000/obs-studio#804
2017-02-25 09:08:01 -08:00
derrod 379b41aa0e UI: Add options for new socket loop 2017-02-25 06:21:24 -08:00
jp9000 f72fd3c9e3 UI: Trigger scene list change event when scene removed 2017-02-23 00:43:20 -08:00
jp9000 c1c84e9101 UI: Add front-end auto-updater 2017-02-20 22:45:34 -08:00
derrod 6bc1ecc794 UI: Add warning if starting the output fails
This is mainly to give visual feedback to those affected by NVENC not
working with older driver versions. Currenlty obs fails silently which
could go unnoticed for users who are using hotkeys as well as confuse
users who are not trained to read their logs when issues occur.

Closes jp9000/obs-studio#788
2017-02-14 19:21:19 -08:00
jp9000 52784c3e79 UI: Add 24 NTSC as a common FPS value 2017-02-06 14:55:14 -08:00
jp9000 7639b277ce UI: Add audio monitoring to settings/adv audio props.
Adds audio monitoring selection to advanced audio properties, and adds
the ability to select the device in advanced settings.
2017-02-06 11:44:04 -08:00
jp9000 0fcd661e13 UI: Remove unused variables
Closes jp9000/obs-studio#778
2017-01-30 16:55:29 -08:00
Alexandre Vicenzi 722443b228 UI: Fix linux display/resize bug with preview widget
On linux, the main window isn't immediately set to a native widget, so
the call:

connect(windowHandle(), &QWindow::screenChanged, displayResize);

on line 189 will fail, causing the preview widget to not properly resize
when the main window is resized.

Closes jp9000/obs-studio#776
2017-01-29 19:51:42 -08:00
Jim ce46ffa82e Merge pull request #758 from cg2121/command-line-args
UI: Add more command line options
2017-01-29 19:42:37 -08:00
dennis 21584fa2c0 UI: Add auto-start replay buf. opt. when stream starts
Closes jp9000/obs-studio#748
2017-01-29 19:09:23 -08:00
cg2121 29f22e72a8 UI: Add option to save projectors
This adds an option to the general settings to save the opened
projectors on exit.

(Note: Fixed conflicts -Jim)

Closes jp9000/obs-studio#743
2017-01-29 06:02:15 -08:00
SuslikV d473b2da96 UI: Hide/show dialogs when minimizing to tray
Hides dialogs when minimizing to tray, and shows again when restoring
from tray.

Closes jp9000/obs-studio#737
2017-01-25 20:22:55 -08:00
SuslikV abe4bfd96e UI: Add option to always minimize to tray
Closes jp9000/obs-studio#737
2017-01-25 20:22:45 -08:00
cg2121 7c98edccc5 UI: Add more command line options 2017-01-11 15:48:59 -06:00
jp9000 579a5019d8 UI: Fix video initialization failure error message
It incorrectly assumed windows systems before, now it uses an
appropriate platform-independent error message.  Also fixes a missing
word.
2016-12-22 06:57:26 -08:00
jp9000 a2c92b1c69 UI: Add default audio track bitrates
Closes jp9000/obs-studio#732
2016-12-22 06:54:44 -08:00
jp9000 c11572fddf UI: Clarify startup error messages related to video 2016-12-21 19:22:16 -08:00
Ryan Foster 42a646f28e UI: Add ability to copy-paste scene item transforms
This commit adds the ability to copy a scene item's transform and crop
settings and paste those settings onto another scene item in any scene
or scene collection. It also changes the menu shortcut key for the
Transform action "Center to screen" from "C" to "n" because "C" is the
standard shortcut key for "Copy" in most other applications.

Closes jp9000/obs-studio#719
2016-12-18 17:21:58 -08:00
Jim 4b8411fa4d Merge pull request #716 from flash0110/ui_fix-frontend-api-scene-added
UI: Fix frontend-api event call for adding scenes
2016-12-17 18:59:40 -08:00
jp9000 1865285ccb UI: Fix replay buffer compile issues on older compilers 2016-12-11 21:04:58 -08:00
jp9000 ec60ab9bc6 UI: Add file prefix/suffix options for replay buffer
Adds the ability to use a specific prefix and/or suffix on replay buffer
filenames to distinguish them from normal recordings.  Defaults to
having the prefix "Replay".
2016-12-09 14:48:44 -08:00
jp9000 f790d0fe08 UI: Separate replay buffer from recording
Replay buffer and recording should be separate in case the user wants to
start recording from a specific point rather being forced to reconfigure
for regular recording.

Creates a new button on the main window below the recording button for
turning on/off the replay buffer.
2016-12-09 14:47:03 -08:00
jp9000 752c118f2e UI: Add replay buffer options to simple output mode 2016-12-08 03:36:19 -08:00
Alexander Uhlmann 90a9d1d726 UI: Fix frontend-api event call for adding scenes
Added missing frontend-api event call for AddScene and removed thus
obsolete event call in DuplicateSelectedScene.
2016-12-02 20:37:15 +01:00
Joseph El-Khouri 3b616823a1 UI: Add preview scaling options
Adds preview scaling to the right-click context menu for the preview
pane.  This allows the ability to, for example, zoom the preview and
edit the preview 1:1 (canvas/base resolution).  This was a missing
parity feature.  Additionally, also allows scaling to the
"output/scaled" resolution the program is set to.

When the preview is in scale mode and is the focused widget, you can
hold space and drag with left click to change the zoomed position.

(Notes added by Jim)

Closes jp9000/obs-studio#687
2016-11-09 14:21:47 -08:00
jp9000 d0e186497f UI: Allow the ability to use deprecated sources 2016-11-03 12:28:33 -07:00
Christoph Hohmann 623c9dc41a UI: Fix full screen projector on screens that have reserved areas
QScreen::availableGeometry() does not return the full screen size on X11
if areas of the screen are reserved by the window manager. In this case
the full screen projector does not cover the whole screen. Using
QScreen::geometry() instead fixes this issue.
2016-10-20 15:32:15 +02:00
jp9000 ee7e319a61 UI: Fix improper brace placement for function 2016-10-19 06:49:12 -07:00
jp9000 9081df9708 UI: Fix poor handling of system tray pointers
The original pull request that added the system tray feature was riddled
with bad pointer usage.  Bare pointers that are never properly freed,
never contained within a QPointer or unique_ptr.

These have now been changed to use QPointer variables, and to always
check when the variables are valid before using.  The order of
destruction for QMenu that uses the actions has now been prioritized
first before the actions.
2016-10-19 06:48:03 -07:00
jp9000 dadefceccf UI: Fix sys. tray crashes when sys. tray not available
When the system tray is not available, the system tray variables would
still be used despite not being initialized.

Fixes mantis bug 640 on linux systems in particular that may not always
have system tray available.
2016-10-19 05:32:01 -07:00
Ryan Foster b75292dbf4 UI: Add Portable Mode indicator to title bar and log
Closes jp9000/obs-studio#654
2016-10-09 18:10:18 -07:00
Warren Turkal f3eb8aacfe UI: Use Qt lib for screen info instead of x11 libs
All of the monitor discovery logic can be implemented with Qt. This
change removes all the x11 implementations in favor of Qt and removes a
fair amount of platform specific code.
2016-10-03 23:50:13 -07:00
jp9000 48f0c73f82 UI: Use rect intersection test for validating position
Instead of checking to see if the window's position is valid, check to
see if the rectangles of the window and the monitor intersect via a
rectangle intersection test.
2016-09-28 22:26:28 -07:00
jp9000 071ed465cb UI: Fix window size/pos not saving on exit 2016-09-28 02:01:25 -07:00
jp9000 eb1fecdd34 UI: Add media/image file drop support 2016-09-27 10:01:22 -07:00
jp9000 406a8c89ca UI: Disable hiding if settings open
Fixes a bug where you could minimize to tray if the settings window was
open.
2016-09-21 21:20:06 -07:00
Jim b2fd5ca25e Merge pull request #607 from CoDEmanX/master
Don't nudge sources if preview is locked
2016-09-16 20:43:47 -07:00
jp9000 b8acca7cca UI: Hide deprecated sources from add source popup menu 2016-09-14 16:59:45 -07:00
jp9000 dc2915dc3b UI: Sort 'Add' source popup menu 2016-09-14 16:59:28 -07:00
jp9000 5c5d0ba9e5 UI: Add ability to forcibly stop streams/recordings
If the user hits the "stop stream" button it'll transition in to
"stopping stream..." and will continue to output until the stream
reaches the timing in which "stop" was pressed.

However, if there is significant congestion, stopping the stream can
take far longer than the user may like.  So there needs to be an option
to forcibly stop the stream in that case; pushing the "stop" button a
second time should allow the user to tell the stream/recording to stop
right away instead of waiting for the precise stop timing.
2016-09-09 17:39:21 -07:00
jp9000 8836592d92 UI: Add front-end API library
Allows manipulating and modifying the front-end via plugins.
2016-09-06 22:01:48 -07:00
CoDEmanX 4986cbae30 UI: Don't nudge source if preview is locked 2016-09-02 17:13:45 +02:00
jp9000 01b274f1da UI: Rename 'obs' dir to 'UI'
This is to prevent confusion both when prefixing commits and when
reading the directory structure for the first time.
2016-08-27 20:19:45 -07:00