Commit Graph

116 Commits (27d2860629d5ea2677ba2613981e26f4c75e98ad)

Author SHA1 Message Date
jp9000 274841860b UI: Inhibit sleep/screensavers while active 2015-09-12 22:08:06 -07:00
jp9000 01e7a3c621 UI: Use empty scene for new scene collection
The user may not want their audio or their display to be captured when
creating a new scene collection.  Make new scene collections default to
fully empty.
2015-09-11 21:51:09 -07:00
jp9000 35b2ce565a UI: Always create a display capture on first run
For the sake of consistency, always create a display capture source on
the very first run of the program, just to have something displayed.

(NOTE: The only exception here is on windows 7/vista, which isn't ideal
for display capture, so it'll continue to be left blank)
2015-09-11 21:49:21 -07:00
jp9000 f592c33eec UI: Implement stream delay
When stream delay is active, the "Start/Stop Streaming" button is
changed in to a menu button, which allows the user to select either the
option to stop the stream (which causes it to count down), or forcibly
stop the stream (which immediately stops the stream and cuts off all
delayed data).

If the user decides they want to start the stream again while in the
process of counting down, they can safely do so without having to wait
for it to stop, and it will schedule it to start up again with the same
delay after the stop.

On the status bar, it will now show whether delay is active, and its
duration.  If the stream is in the process of stopping/starting, it will
count down to the stop/start.

If the option to preserve stream cutoff point on unexpected
disconnections/reconnections is enabled, it will update the current
delay duration accordingly.
2015-09-10 12:13:40 -07:00
jp9000 2ee4cc53be UI: Implement scene duplication (context menu) 2015-08-28 15:01:39 -07:00
Palana 4001767355 UI: Add missing override specifier
Found via clang-3.6, actual warning:
window-basic-main.hpp:406:14: warning: 'GetProfilePath' overrides
a member function but is not marked 'override'
[-Winconsistent-missing-override]
2015-07-19 06:30:35 +02:00
jp9000 3a974f5086 UI: Add SaveProjectNow function
This adds a function that allows saving the project now instead of
deferring it.
2015-07-09 10:51:22 -07:00
jp9000 9f6f6d632b UI: Remove all unused user sources on load
This temporarily fixes an issue where potential (for whatever reason)
stray sources that aren't associated with any scenes could be saved and
then persist with the save data on load.
2015-07-06 18:50:16 -07:00
jp9000 49501be2a3 UI: Fix potential deadlocks when saving
SaveProject calls obs functions that locks certain mutexes, and because
I made it so that SaveProject was being called inside of certain signal
handlers (which could already be locked in other mutexes), it could
cause a mutual deadlock with other threads.

This fix puts the main project saving code in to SaveProjectDeferred,
then pushes it on to the Qt message queue to safely save outside of
those locks.  It's a function that's perfectly safe to put on the
message queue because it will automatically be disabled in certain
circumstances where it would be unsafe to call, such as on shutdown.

This code will also make it so that the project will not needlessly be
saved more than once if the SaveProjectDeferred call was pushed multiple
times on to the queue.
2015-07-06 17:03:42 -07:00
jp9000 7c97e21a1f UI: Add menu options to open settings folders
Adds "Show Settings Folder" and "Show Profile Folder" items to the file
menu.
2015-07-03 18:35:33 -07:00
jp9000 f9314128ea UI: Add Profiles
Adds setting profiles to the basic user interface.  For each profile, a
subdirectory for the profile will be created in
[config_dir]/obs-studio/basic/profiles which will contain the settings
data for each profile.
2015-07-03 18:35:30 -07:00
jp9000 7d6a12f49e UI: Add scene collections
Adds scene collections to the menu bar, which allows you to duplicate,
rename, remove, or add clean new scene collections.

Scene files are now stored in ./obs-studio/basic/scenes directory with
filesystem-safe names.
2015-07-03 18:33:57 -07:00
jp9000 fabb99c35a UI: Add UpdateTitleBar function to basic UI 2015-07-03 18:21:23 -07:00
jp9000 b566428233 UI: Allow resize without timers
This prevents the weird stretching effect that occurs whenever a windows
is in the process of being resized by the user.

Originally it was intended as an optimization, but even on half-decent
computers it doesn't really have much benefit.
2015-07-03 10:10:58 -07:00
jp9000 da358da9a7 UI: Save project only on new changes 2015-07-02 18:08:55 -07:00
jp9000 4b93b42ded UI: Do not save at intervals
Saving at intervals is a poor way to handle saving issues in general.
Best to just save when something has been modified instead.
2015-07-02 18:08:54 -07:00
jp9000 c9f85f167c UI: Add OBSBasic::ClearHotkeys function
Add a function to clear basic window hotkeys to reduces potential code
duplication
2015-07-02 18:08:53 -07:00
jp9000 4330065d7d UI: Add ClearSceneData to clean up all obs data
Add a central function for clearing all data: scenes, sources, widgets
such as lists that may contain source references in their sub-items,
dialogs which may contain source references.  In certain circumstances
this data must be fully released and manually freed to ensure that there
are no outstanding references to obs data (such as on shutdown, where
all data should be properly freed).
2015-07-02 17:56:05 -07:00
jp9000 e8f30f222d UI: Remove unused signal from basic main window 2015-07-02 17:56:02 -07:00
jp9000 3b16477480 UI: Store global audio sources in scenes file only
Right now, information about global audio sources is stored in both
scene files and in the config.  These must be separated; there's no need
to store them in both when they can just be stored in the scenes file.
2015-07-02 17:18:47 -07:00
Palana 66fd1b2e80 UI: Ignore sources selection self-update roundtrips 2015-06-28 04:10:10 +02:00
Palana 21ac7a7e46 UI: Add QtDataRole enum
This introduces the OBSSignals data role, which will be used to store
signal handlers in stock Qt objects
2015-06-28 04:04:15 +02:00
Palana 4b003947b8 UI: Clear global signals in closeEvent 2015-06-28 02:42:03 +02:00
jp9000 97ead131c1 UI: Show popup menu w/ vol. control config button
Use the config button on volume controls to allow the ability for
filters/properties to be accessed via the mixer.  Particularly useful
for the purpose of accessing filters/properties of global audio outputs
that are added via audio settings.
2015-06-25 15:55:30 -07:00
jp9000 84567f2745 UI: Implement scene reordering
This simply saves/loads the actual list widget item order.

The reason why this is done is because internally, libobs doesn't have a
list of scenes, it only has a list of sources.  The list of scenes is
actually something artificially implemented by the basic window user
interface.
2015-06-25 03:55:33 -07:00
jp9000 f15965e721 UI: Add menu to visit website to basic main window 2015-06-25 01:02:47 -07:00
jp9000 c618ac4e04 UI: Remove unused signals from basic main window 2015-06-25 00:23:17 -07:00
jp9000 556fde66ae UI: Warn user if recording format unsupported
If the recording format is unsupported or doesn't support multiple
tracks, warn the user to check their settings.
2015-06-21 22:34:54 -07:00
jp9000 13bed1a448 UI: Replace Qt5Network classes with libcurl
The Qt5Network classes seem to only support OpenSSL, and because OpenSSL
isn't available on windows, we would have to distribute it with the
program to get SSL access working.  The problem with that is that
OpenSSL is not GPL-compatible, so we cannot distribute OpenSSL with the
program, which means we have to find a better (and preferably superior)
library for accessing remote files that can use the windows SSPI for our
SSL needs, which comes with the operating system.

Fortunately, libcurl is probably the best library out there, and can be
compiled with SSPI instead of OpenSSL, so we're just going to switch to
libcurl instead.  Originally I thought it didn't support SSPI, otherwise
I would have implemented it sooner.

As a side note, this will make it so we'll able to get files from the
internet via plugins, which will be quite useful.
2015-05-24 16:20:13 -07:00
Palana 37069d372f UI: Add Start/Stop Recording/Streaming hotkeys 2015-05-11 20:45:28 +02:00
Palana 6192b34ab3 UI: Add OBSBasic::StartStreaming/StopStreaming 2015-05-11 20:45:28 +02:00
Palana 508f04d927 UI: Add OBSBasic::StartRecording/StopRecording 2015-05-11 20:45:28 +02:00
Palana 9cda23f4b9 UI: Add basic hotkey integration 2015-05-11 20:45:26 +02:00
Palana 71abed387f (API Change) libobs: Make obs_service refcounted 2015-05-07 02:08:05 +02:00
jp9000 167e781b5e UI: Add fullscreen projector options
Add the ability to use a fullscreen projector for scenes, sources, and
the preview display.
2015-04-10 07:27:37 -07:00
jp9000 b7421aafde UI: Add up/down/left/right position shortcuts
Allows nudging of selected items in the direction pressed when the
preview window is focused.
2015-04-10 07:27:35 -07:00
jp9000 167df61d03 UI: Add context menu to preview
Includes the ability to disable the preview and general source context
menu options (add/remove/filters/properties/etc)
2015-04-10 07:27:35 -07:00
jp9000 86ed7f12f3 UI: Allow scenes to use filters 2015-03-25 14:12:01 -07:00
jp9000 ceba24c7e9 UI: Add user interface for filters 2015-03-25 14:12:00 -07:00
jp9000 c4ef2522ad UI: Destroy save timer before closing main window
This prevents the save timer from unexpectedly going off during the
middle of the save process.
2015-03-22 19:18:11 -07:00
Socapex 6a16778bc9 UI: Implement theme selection option
OBS will offer the user a list of themes which are .qss files inside
data/obs-studio/themes.  If no theme is found in the configuration, it
loads the default theme for the system.
2015-03-12 09:27:18 -07:00
jp9000 f4704cf4a8 UI: Use 'reorder' signal for scene item reordering
The old signals for for reordering have been removed; the new signal to
use is the 'reorder' signal, which means that the list needs to be
refreshed.
2015-03-05 02:28:17 -08:00
Caleb Anderson c3e382c8f7 UI: View Log menu entry in Help -> Log Files menu
Since the file being logged to changes with each run, opening a log
file is a tad more involved than desirable when it's necessary to view
the log each time OBS is run. This new menu entry shortcuts opening the
file from the file system manually.
2015-02-24 01:44:37 -07:00
fryshorts 90ccae6f4c UI: Ensure only one advanced audio settings window
Add a check to prevent that the advanced audio settings dialog is only
once. When the dialog is already present raise it to the top instead.
2015-02-13 13:11:15 +01:00
jp9000 69c6714090 UI: Make service settings use OK/Apply/Cancel
Currently service settings are updated in real time via the properties
view, which means that OK/Cancel/Apply have no effect.  This fixes that
by using the new type of properties view that operates only on settings
data, not an object.
2015-02-07 08:11:46 -08:00
jp9000 a3e47e53bf UI: Add button for adv. audio properties
Add a button to the main window to access advanced audio properties to
make it a bit more visible to users.

To facilitate this, the bottom part of the window was switched to a grid
layout.
2015-02-07 02:43:37 -08:00
jp9000 07007bcc6e UI: Refactor output handling
To accommodate multiple types of outputs, there has to be some level of
abstraction.  The BasicOutputHandler structure will give us a way that
we can switch between different output configurations.
2015-02-06 03:17:33 -08:00
jp9000 e8002dc9ed UI: Save at regular intervals
Save the file when "start recording" or "start streaming" is clicked,
and also save at every 20 second interval
2015-01-05 02:45:40 -08:00
jp9000 6fc52dfb16 UI: Add advanced audio properties dialog
This dialog gives options such as increasing audio past 100%, forcing
the audio of a source to mono, and setting the audio sync offset of a
source (which was an oft-requested feature)
2014-12-28 01:51:56 -08:00
fryshorts ca8ac4e809 obs: Refactor network requests.
Remove unneeded class members for request and buffer handling.
Let Qt do all the hard work here, keeping track of requests and
associated data.
2014-12-25 14:53:09 +01:00