Commit Graph

794 Commits (05388655531026e3421690296c17ac004265c0db)

Author SHA1 Message Date
jp9000 0b7cd0ac38 UI: Log when user changes settings 2015-07-06 17:03:39 -07:00
jp9000 a0e42ff277 UI: Fix stream/recording startup/stop logging
I actually made the mistake of making these messages only display if all
outputs were no longer active.
2015-07-06 17:03:35 -07:00
jp9000 64d9dd77e7 UI: Fix update check logging (non-sparkle)
It currently says "Update check: latest version is x.x.x", which is a
bit confusion.  It should say "Update check: last known remote version
is x.x.x" instead.
2015-07-06 17:03:34 -07:00
jp9000 d0d799465b UI: Add large separator after obs initialization
This makes it so it's a bit more obvious when the primary initialization
has completed in the log file.
2015-07-06 17:03:33 -07:00
jp9000 a5b4330e7a UI: Don't log version in OBSBasic::UpdateTitleBar 2015-07-06 17:03:33 -07:00
jp9000 a903ae3103 UI: Fix logging for profiles/scene collections
This makes it so that the log message for altering scene collections
and/or profiles is now below, and then the separator below that.  This
makes it a bit more apparent that any loading/clearing/etc that happens
before the log message are associated with the log message.
2015-07-06 17:03:32 -07:00
jp9000 5e178c12e7 UI: Insert timestamps after log newlines
It was a bit weird seeing lines in the log without the associated
timestamps, so it should just insert it after every newline instead.
2015-07-06 17:03:31 -07:00
Palana 7bb430efd0 UI: Clean up sourceSceneRefs when removing scenes
Previously the sourceSceneRefs were being cleaned up in
OBSBasic::SceneItemRemoved; due to changes in
e82018579b the signal handler that called
OBSBasic::SceneItemRemoved is now being removed before the scene
triggers its item_remove signals
2015-07-07 02:02:41 +02:00
Palana 9f2566fe69 UI: Fix memory leak when saving stream settings
SetService started using addref in
71abed387f, so we have to release
the extra reference here
2015-07-06 13:39:08 +02:00
Palana 99db4d7577 UI: Toggle password "Show" button text when clicked 2015-07-06 13:38:57 +02:00
Palana 4725641c88 UI: Expose all available audio encoder bitrates 2015-07-04 13:30:13 +02:00
Palana 5bb88634fb UI: Create best matching audio encoder for given bitrate 2015-07-04 13:30:13 +02:00
Palana 8945309b58 UI: Move output handler audio bitrate config access 2015-07-04 13:30:13 +02:00
Palana 6a136ade4f UI: Add (AAC) audio encoder inspection helpers 2015-07-04 13:30:13 +02:00
Palana 473244da3c UI: Release recording/streaming signals before outputs 2015-07-04 08:00:21 +02: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 5d826a86cb UI: Add New/Duplicate/Untitled locale text 2015-07-03 18:21:22 -07:00
jp9000 a781c5bdea UI: Add functions to create safe file names
Adds functions to generate safe file names from potentially unsafe
names.  Also a function to ensure that a particular filename isn't
duplicated.
2015-07-03 18:21:21 -07:00
jp9000 650c8faaaf UI: Use default scaled res. of 1280x720 or equiv.
Originally this value defaulted to 1.5 downscaling, but on very high
resolution displays this would cause the default to be above 1280x720,
which is not ideal for streaming/recording due to the CPU usage
requirements.

Instead, it will now find the closest resolution with a pixel count
equivalent to or closest below 1280x720, and use that instead.
2015-07-03 10:26:18 -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 b4fe4ae5b4 UI: Remove unused default config values 2015-07-03 09:57:53 -07:00
jp9000 daa4706eb7 UI: Move adv. rec. tracks if updating from 0.10.1 2015-07-03 09:57:52 -07:00
jp9000 815b916b73 UI: Do not delete via takeItem in ClearListItems
Apparently some raw lingering pointers to the item widgets may be
present inside of the QListView if you delete the item widgets directly,
and the only way to ensure those pointers are properly cleared is to
call ->clear() on the list widget instead of deleting each item
individually.

We were deleting each item individually because we thought that
->deleteLater might be also be called on other data within, but after
some testing, that turned out to not be the case, so it's safe to call
->clear() on the list widget.

As a note, deleting item widgets directly is dangerous due to the
potential for lingering raw internal pointers, and our case is unique
where we can get away with it; do not delete list item widgets directly
unless you intend on calling ->clear() or ->takeItem on the specific
item you do it to after.

Again, the reason why we are deleting list widget items manually is due
to the fact that Qt will always use ->deleteLater() on them if they are
not deleted manually, which puts their deletion on the queue.  Only
problem is they cannot be removed from the queue once added, so
lingering references to sources will persist until the queue processes
them, which causes major problems if we need those objects deleted right
away.
2015-07-02 22:07:39 -07:00
jp9000 44afc71636 UI: Log when output starts/stops 2015-07-02 18:18:34 -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 412fbfce82 UI: Make shortcut filter not filter dialog keys
With dialog boxes, the keys Enter and Escape are important for
accepting/rejecting the dialog.
2015-07-02 18:08:53 -07:00
jp9000 5fc21edc1f UI: Clear scene data before loading new scene data
Clear scene data before loading new scene files or when creating new
scene data from scratch.
2015-07-02 18:08:41 -07:00
jp9000 1d3251a993 UI: Save after creating default scene
When initializing with a default scene, save the data to ensure a file
is actually present when needed (such as for scene collections which may
need the file)
2015-07-02 17:56:05 -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 20b4a1c008 UI: Manually delete visibility item widgets 2015-07-02 17:56:04 -07:00
jp9000 db9e966e6c UI: Add item widget helper functions
These functions are designed to manually delete item widgets within
other widgets to prevent ->deleteLater from being called on them.  This
prevents the item widgets from being stuck in the event queue, and
prevents references to things like sources from being stuck in the event
queue along with them if they're used in the item widget's class or
functions.
2015-07-02 17:56:03 -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
jp9000 cb6c90a02c UI: Use platform.h for snprintf
This allows snprintf to be used in any file in the UI.
2015-07-02 17:18:47 -07:00
jp9000 8273d2cf6f UI: Remove redundant directory creation 2015-07-02 17:18:46 -07:00
jp9000 8b338b35b1 UI: Remove whitespace when asking for a name 2015-07-02 17:18:45 -07:00
jp9000 70795300ac UI: Fix typo in error 2015-07-02 17:18:44 -07:00
shousa 708bac734f UI: Add Audio bitrate
CoreAudio AAC encoder is now available for both AAC-LC and HE-AAC.
Added some Audio bitrate settings for lower bitrate region.
2015-07-01 20:00:19 +09:00
Palana 8293103106 UI: Fix DoubleSlider behavior for OBS_NUMBER_SLIDER properties
When using e.g. a color correction filter on any source and changing
any value (with slider enabled, e.g. contrast) to -0.10 the value would
get cycle between -0.07/-0.08 at some point when using the up arrow; it
would also get stuck on -0.69.

For the other direction, when starting from e.g. -0.02 the value would
jump from 0.05 to -0.08 when pressing the down arrow.

Problem was reported at https://obsproject.com/forum/threads/32450
2015-07-01 08:22:04 +02:00
Palana 82471d7539 UI: Ignore reorder signals from drag&drop reordering
Not ignoring these signals doesn't seem to break anything, but it
shouldn't be necessary to process them either
2015-06-28 05:09:46 +02:00
Palana fc0819ca32 UI: Add workaround for drag&drop removing items with Qt-5.4/win
Workaround taken from <http://stackoverflow.com/a/30291775>,
potentially relevant Qt bug:
<https://bugreports.qt.io/browse/QTBUG-45365>
2015-06-28 05:09:46 +02:00
Palana b53d6e9e58 UI: Add drag&drop reordering for the sources list 2015-06-28 05:09:45 +02:00
Palana 95857b4443 UI: Enable drag&drop reordering for scenes
The empty implementation for the QDataStream operators is necessary to fix
a Qt assertion: "QVariant::save: unable to save type
'std::vector<std::shared_ptr<OBSSignal> >' (type id: 1036)."

It doesn't seem like a full implementation of the stream operators would be
useful since the signal registration is very specific to the interaction
between the scenes and sources list, i.e. in case the scenes list ever accepts
scenes from sources (not 'obs_source's) other than itself (non InternalMove
drag&drop?) it would have to register those scenes with the libobs core which
should trigger the normal signal registration
2015-06-28 05:09:45 +02:00
Palana b543ea6231 UI: Make scene items serializable via QDataStream
This minimal implementation should be enough to drag&drop scenes between UI
elements in the same process in the future
2015-06-28 04:30:17 +02:00
Palana 363b887cad UI: Make scenes serializable via QDataStream
This minimal implementation should be enough to drag&drop scenes between UI
elements in the same process in the future
2015-06-28 04:30:17 +02:00
Palana 9672aa0cb9 UI: Ensure only one source is selected on startup 2015-06-28 04:30:17 +02:00
Palana e1f0ac0bd0 UI: Ignore source deselect events for now
Also ensure only a single source is selected if it's an update from
libobs
2015-06-28 04:10:10 +02:00
Palana 66fd1b2e80 UI: Ignore sources selection self-update roundtrips 2015-06-28 04:10:10 +02:00
Palana 523e8b2517 UI: Explicitly delete source list items in closeEvent
This should reduce the chances of any deleteLater objects holding strong
references into the libobs core getting stuck in the Qt event queue
2015-06-28 04:04:15 +02:00
Palana e82018579b UI: Remove scene signal handlers in closeEvent 2015-06-28 04:04:15 +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 3c93345179 UI: Add optional config button to volume controls 2015-06-25 15:55:29 -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 19932f552a UI: Fix output mode name when setting defaults
The item in the [Output] section for the output mode is "Mode", not
"Type".
2015-06-25 01:06:46 -07:00
jp9000 f15965e721 UI: Add menu to visit website to basic main window 2015-06-25 01:02:47 -07:00
jp9000 c6a3287a16 UI: Remove unused actions from basic main window 2015-06-25 00:35:20 -07:00
jp9000 c618ac4e04 UI: Remove unused signals from basic main window 2015-06-25 00:23:17 -07:00
jp9000 94edb7f5d6 UI: Add warning if using no/multiple tracks
Certain output formats don't support multiple tracks, so it's important
to warn the user if they select multiple tracks.

Also warn the user if they select no tracks.
2015-06-21 22:34:58 -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 2679c8c3ad UI: Remove "FLV" from "FLV Recording Path" text 2015-06-21 22:34:53 -07:00
jp9000 a24af63527 UI: Allow multi-track recording in advanced output 2015-06-21 22:34:52 -07:00
jp9000 d07664b129 UI: Add option to select recording format
Add a listboxes to recording to allow changing file formats (allows mp4,
mov, mkv, ts, flv)
2015-06-21 22:34:51 -07:00
jp9000 227508a72a UI: Use ffmpeg muxer instead of flv by default
This allows the ability to save different container formats, such as
mp4, mkv, and ts files.
2015-06-21 22:34:50 -07:00
jp9000 336cd7ebe9 UI: Fix bug with path property browse button
When the editable list property was added, I added a case to a switch
statement without putting a break on the case before it.
2015-06-21 03:54:00 -07:00
Jim 92cae0c511 Merge pull request #437 from kc5nra/fix-ffmpeg-output
UI: Fix settings reload selecting  wrong fmt/codec
2015-06-14 15:32:50 -07:00
John Bradley 11bb0fecf6 UI: Fix settings reload selecting wrong fmt/codec 2015-06-10 17:46:08 -05:00
Jim 859415943f Merge pull request #436 from ThoNohT/output-folder
Use correct output folder for Show/Remux
2015-06-09 17:32:28 -07:00
Palana 4a75f79af3 UI: Try CoreAudio AAC encoder first 2015-06-07 04:22:25 +02:00
Palana faa3f263ae UI: Move AAC encoder creation 2015-06-07 04:22:24 +02:00
jp9000 d16ec97f7b UI: Change default simple audio bitrate to 160
The audio bitrate required is insignificant relative to the video
bitrate, and due to the fact that it's possible that a lower-quality
encoder may be in use (such as FFmpeg's AAC encoder), setting the
default to 160 is really more ideal to reducee any potential quality
loss.
2015-06-05 08:57:01 -07:00
Eric Bataille e42aee5da9 UI: Use correct output folder for Show/Remux
Ensures that the "Show Recordings" an "Remux Recordings" file menu
items will open the recordings folder from the currently active
output mode rather than always the simple output mode.
2015-06-04 20:57:16 +02:00
jp9000 e7eaa268e5 UI: Add option to disable aero on windows vista/7
On windows vista/7, you cannot really use display capture efficiently
without disabling aero, so this will add an option to settings to allow
it to be disabled and cause it to be disabled on startup.
2015-06-02 19:18:15 -07:00
jp9000 0c631db046 UI: Add funcs to get windows ver. and disable aero
Adds two functions, GetWindowsVersion and SetAeroEnabled.
2015-06-02 17:02:54 -07:00
jp9000 9d1204a8bc UI: Add editable list property to properties view
Implemented as a multi-selection QListWidget.  Individual values in the
list are saved to the settings in an obs_data_array_t item.
2015-06-02 17:01:39 -07:00
jp9000 4b422d7d23 UI: Replace os_get_config_path with GetConfigPath
This allows the UI to be able to use a custom config path for cases such
as portable mode, where the config path is relative to the executable.
2015-06-01 16:42:30 -07:00
jp9000 ea3496e512 UI: Add support for portable mode
Portable mode can be enabled via command line options (--portable or -p)
or by having any of the following files present in the base directory of
a portable install:

portable_mode
obs_portable_mode
portable_mode.txt
obs_portable_mode.txt

Portable mode is omitted when obs is built with a unix program
structure.
2015-06-01 16:42:29 -07:00
jp9000 161198ba6c UI: Fix bug where password property won't save
In my recent update to add a "show" button to the passworded text
property, I neglected to connect the edit widget to
WidgetInfo::ControlChanged, so it isn't able to detect when the text is
changed by the user.
2015-05-30 03:13:41 -07:00
jp9000 cce2eb9387 UI: Add "Show" button to password text properties
Allows the user to be able to optionally toggle the password text if
they wish.  Mostly useful for troubleshooting purposes.
2015-05-24 22:26:51 -07:00
jp9000 5cb8916522 UI: Add dark theme 'checked' color to push buttons 2015-05-24 22:22:28 -07:00
jp9000 39d1cda4e9 UI: Remove dependence on Qt5Network
Qt5Network has been replaced by libcurl.
2015-05-24 16:20:14 -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
jp9000 72e3ec7b4c UI: Add RemoteTextThread class
The RemoteTextThread class is a QThread that is used to get text
remotely in a separate thread with libcurl.  This is intended to replace
the Qt5Network classes because of their dependency on OpenSSL, which we
can't distribute.
2015-05-24 16:20:12 -07:00
Palana ee055b5799 UI: Make settings -> 'Audio' source list expand vertically
Reduces required scrolling when lots of new audio sources are added
(e.g. aux devices being enabled in the same dialog) when the dialog
was opened with just a few audio sources being present. Unfortunately,
the "restart required" warning is pushed all the way to the bottom
even if the source list is empty
2015-05-22 00:24:48 +02:00
Palana 190eef07a6 UI: Handle empty key combos from QEvents in hotkey dialog
This should allow entering alt + numpad N (N > 0) on windows since there
doesn't seem to be a way to completely ignore input events generated
from "alt codes"
2015-05-15 17:08:25 +02:00
Palana 9b07309147 UI: Pre-select "General" entry when launching settings
This is just for visuals, no functionality change
2015-05-13 22:48:38 +02:00
jp9000 aafd114e67 Add latest translations from Crowdin 2015-05-12 15:29:43 -07:00
John Bradley d6085ac05c UI: Set minimum width of add/remove hotkey buttons
This prevents odd behavior with Qt5.4 turning the rounded buttons
into square push buttons.
2015-05-12 22:40:57 +02:00
Palana f6234ec90d UI: Fix push-to-* localization strings being swapped 2015-05-12 21:36:46 +02: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 054f00ced1 UI: Add SelectScene hotkey
UI supplied per scene hotkey to allow switching between scenes; this
has to be done in the UI since it's up to the application to define
what exactly "changing/selecting a scene" means (changing the output
of channel 0 may not be enough for other applications)
2015-05-11 20:45:28 +02:00
Palana c23c071ba2 UI: Add Push-to-talk/mute settings to audio settings 2015-05-11 20:45:27 +02:00