@@ -117,6 +117,13 @@ TabConfigurations::TabConfigurations(MainWindow &window, std::shared_ptr<Ui::Mai
117117 this ->connect (this ->ui ->configurations_list , SIGNAL (currentRowChanged (int )), this ,
118118 SLOT (on_configurations_list_currentRowChanged (int )));
119119
120+ this ->connect (this ->ui ->configuration_settings_file_enable , SIGNAL (toggled (bool )), this ,
121+ SLOT (on_configuration_settings_file_enable_toggled (bool )));
122+ this ->connect (this ->ui ->configuration_settings_file_search , SIGNAL (clicked ()), this ,
123+ SLOT (on_configuration_settings_file_search_pressed ()));
124+ this ->connect (this ->ui ->configuration_settings_file_remove , SIGNAL (clicked ()), this ,
125+ SLOT (on_configuration_settings_file_remove_pressed ()));
126+
120127 this ->connect (this ->ui ->configurations_layers_list , SIGNAL (currentRowChanged (int )), this ,
121128 SLOT (on_configurations_layers_list_currentRowChanged (int )));
122129
@@ -166,13 +173,12 @@ void TabConfigurations::UpdateUI_Configurations(UpdateUIMode mode) {
166173
167174 Configurator &configurator = Configurator::Get ();
168175
169- ui->configurations_executable_scope ->blockSignals (true );
170- ui->configurations_executable_scope ->setCurrentIndex (configurator.GetExecutableScope ());
171- ui->configurations_executable_scope ->blockSignals (false );
172-
173- ui->configurations_list ->blockSignals (true );
176+ this ->ui ->configurations_executable_scope ->blockSignals (true );
177+ this ->ui ->configurations_executable_scope ->setCurrentIndex (configurator.GetExecutableScope ());
178+ this ->ui ->configurations_executable_scope ->blockSignals (false );
174179
175- ui->configurations_list ->clear ();
180+ this ->ui ->configurations_list ->blockSignals (true );
181+ this ->ui ->configurations_list ->clear ();
176182
177183 int current_row = -1 ;
178184
@@ -223,10 +229,25 @@ void TabConfigurations::UpdateUI_Configurations(UpdateUIMode mode) {
223229 }
224230
225231 if (current_row != -1 ) {
226- ui->configurations_list ->setCurrentRow (current_row);
232+ this -> ui ->configurations_list ->setCurrentRow (current_row);
227233 }
228234
229- ui->configurations_list ->blockSignals (false );
235+ this ->ui ->configurations_list ->blockSignals (false );
236+
237+ const Configuration *configuration = configurator.GetActiveConfiguration ();
238+ this ->ui ->configuration_settings_file_enable ->setEnabled (configuration != nullptr );
239+ this ->ui ->configuration_settings_file_path ->setEnabled (configuration != nullptr );
240+ this ->ui ->configuration_settings_file_search ->setEnabled (configuration != nullptr );
241+
242+ if (configuration == nullptr ) {
243+ this ->ui ->configuration_settings_file_enable ->setChecked (false );
244+ this ->ui ->configuration_settings_file_path ->clear ();
245+ this ->ui ->configuration_settings_file_remove ->setEnabled (false );
246+ } else {
247+ this ->ui ->configuration_settings_file_enable ->setChecked (configuration->override_settings );
248+ this ->ui ->configuration_settings_file_path ->setText (configuration->override_settings_path .RelativePath ().c_str ());
249+ this ->ui ->configuration_settings_file_remove ->setEnabled (!configuration->override_settings_path .Empty ());
250+ }
230251}
231252
232253void TabConfigurations::UpdateUI_Applications (UpdateUIMode ui_update_mode) {
@@ -358,10 +379,14 @@ void TabConfigurations::UpdateUI_Settings(UpdateUIMode mode) {
358379
359380 const Parameter *parameter = configurator.GetActiveParameter ();
360381 if (parameter != nullptr ) {
361- const std::string state = parameter->override_settings ? " Uncheck to disable" : " Check to enable" ;
362- const std::string tooltip = format (" %s '%s' layer settings" , state.c_str (), parameter->key .c_str ());
382+ if (configurator.GetActiveConfiguration ()->override_settings ) {
383+ this ->ui ->configurations_group_box_settings ->setToolTip (" Override Layer Settings is enabled" );
384+ } else {
385+ const std::string state = parameter->override_settings ? " Uncheck to disable" : " Check to enable" ;
386+ const std::string tooltip = format (" %s '%s' layer settings" , state.c_str (), parameter->key .c_str ());
363387
364- this ->ui ->configurations_group_box_settings ->setToolTip (tooltip.c_str ());
388+ this ->ui ->configurations_group_box_settings ->setToolTip (tooltip.c_str ());
389+ }
365390 }
366391}
367392
@@ -1296,6 +1321,53 @@ void TabConfigurations::on_configurations_list_currentRowChanged(int currentRow)
12961321 }
12971322}
12981323
1324+ void TabConfigurations::on_configuration_settings_file_enable_toggled (bool checked) {
1325+ Configurator &configurator = Configurator::Get ();
1326+ Configuration *configuration = configurator.GetActiveConfiguration ();
1327+
1328+ if (checked && configuration->override_settings_path .Empty ()) {
1329+ this ->on_configuration_settings_file_search_pressed ();
1330+ } else {
1331+ configuration->override_settings = checked;
1332+
1333+ this ->UpdateUI_Configurations (UPDATE_REFRESH_UI );
1334+ this ->UpdateUI_Settings (UPDATE_REFRESH_UI );
1335+ }
1336+ }
1337+
1338+ void TabConfigurations::on_configuration_settings_file_search_pressed () {
1339+ Configurator &configurator = Configurator::Get ();
1340+ Configuration *configuration = configurator.GetActiveConfiguration ();
1341+ assert (configuration != nullptr );
1342+
1343+ const std::string selected_path =
1344+ QFileDialog::getOpenFileName (&this ->window , " Locate Layers Settings File" ,
1345+ configuration->override_settings_path .AbsolutePath ().c_str (), " vk_layer_settings.txt(*.txt)" )
1346+ .toStdString ();
1347+
1348+ if (selected_path.empty ()) {
1349+ return ;
1350+ }
1351+
1352+ configurator.GetActiveConfiguration ()->override_settings = true ;
1353+ configurator.GetActiveConfiguration ()->override_settings_path = selected_path;
1354+
1355+ this ->UpdateUI_Configurations (UPDATE_REFRESH_UI );
1356+ this ->UpdateUI_Settings (UPDATE_REFRESH_UI );
1357+ }
1358+
1359+ void TabConfigurations::on_configuration_settings_file_remove_pressed () {
1360+ Configurator &configurator = Configurator::Get ();
1361+ Configuration *configuration = configurator.GetActiveConfiguration ();
1362+ if (configuration != nullptr ) {
1363+ configurator.GetActiveConfiguration ()->override_settings = false ;
1364+ configurator.GetActiveConfiguration ()->override_settings_path .Clear ();
1365+ }
1366+
1367+ this ->UpdateUI_Configurations (UPDATE_REFRESH_UI );
1368+ this ->UpdateUI_Settings (UPDATE_REFRESH_UI );
1369+ }
1370+
12991371void TabConfigurations::on_configurations_layers_list_currentRowChanged (int currentRow) {
13001372 this ->_settings_tree_manager .CleanupGUI ();
13011373
0 commit comments