UI: Add menu bar item to show missing files dialog

Adds an entry to the "Scene Collection" tab of the menu bar that makes
the missing files dialog come back in case it got dismissed of files got
removed while OBS was open
master
gxalpha 2021-08-16 01:10:53 +02:00 committed by Jim
parent c2cd372b00
commit 008c6e4805
4 changed files with 52 additions and 0 deletions

View File

@ -435,6 +435,8 @@ MissingFiles.Cleared="Cleared"
MissingFiles.Found="Found"
MissingFiles.AutoSearch="Additional file matches found"
MissingFiles.AutoSearchText="OBS has found additional matches for missing files in that directory. Would you like to add them?"
MissingFiles.NoMissing.Title="Missing Files Check"
MissingFiles.NoMissing.Text="No files appear to be missing."
# update dialog
UpdateAvailable="New Update Available"
@ -662,6 +664,7 @@ Basic.MainMenu.File.Remux="Re&mux Recordings"
Basic.MainMenu.File.Settings="&Settings"
Basic.MainMenu.File.ShowSettingsFolder="Show Settings Folder"
Basic.MainMenu.File.ShowProfileFolder="Show Profile Folder"
Basic.MainMenu.File.ShowMissingFiles="Check for Missing Files"
Basic.MainMenu.AlwaysOnTop="&Always On Top"
Basic.MainMenu.File.Exit="E&xit"

View File

@ -597,6 +597,8 @@
<addaction name="actionImportSceneCollection"/>
<addaction name="actionExportSceneCollection"/>
<addaction name="separator"/>
<addaction name="actionShowMissingFiles"/>
<addaction name="separator"/>
</widget>
<widget class="QMenu" name="viewMenu">
<property name="title">
@ -1778,6 +1780,11 @@
<string>Export</string>
</property>
</action>
<action name="actionShowMissingFiles">
<property name="text">
<string>Basic.MainMenu.File.ShowMissingFiles</string>
</property>
</action>
<action name="actionNewProfile">
<property name="text">
<string>New</string>

View File

@ -4654,6 +4654,47 @@ void OBSBasic::on_action_Settings_triggered()
}
}
static inline void AddMissingFiles(void *data, obs_source_t *source)
{
obs_missing_files_t *f = (obs_missing_files_t *)data;
obs_missing_files_t *sf = obs_source_get_missing_files(source);
obs_missing_files_append(f, sf);
obs_missing_files_destroy(sf);
}
void OBSBasic::on_actionShowMissingFiles_triggered()
{
obs_missing_files_t *files = obs_missing_files_create();
auto cb_sources = [](void *data, obs_source_t *source) {
AddMissingFiles(data, source);
return true;
};
obs_enum_sources(cb_sources, files);
auto cb_transitions = [](void *data, obs_source_t *source) {
if (obs_source_get_type(source) != OBS_SOURCE_TYPE_TRANSITION)
return true;
AddMissingFiles(data, source);
return true;
};
obs_enum_all_sources(cb_transitions, files);
if (obs_missing_files_count(files) > 0) {
missDialog = new OBSMissingFiles(files, this);
missDialog->setAttribute(Qt::WA_DeleteOnClose, true);
missDialog->show();
missDialog->raise();
} else {
obs_missing_files_destroy(files);
OBSMessageBox::information(
this, QTStr("MissingFiles.NoMissing.Title"),
QTStr("MissingFiles.NoMissing.Text"));
}
}
void save_audio_source(int channel, obs_data_t *save)
{
obs_source_t *source = obs_get_output_source(channel);

View File

@ -909,6 +909,7 @@ private slots:
void on_actionShow_Recordings_triggered();
void on_actionRemux_triggered();
void on_action_Settings_triggered();
void on_actionShowMissingFiles_triggered();
void on_actionAdvAudioProperties_triggered();
void AdvAudioPropsClicked();
void AdvAudioPropsDestroyed();