|
@@ -124,6 +124,14 @@ String EditorExportPlatformIOS::get_export_option_warning(const EditorExportPres
|
|
|
return String();
|
|
|
}
|
|
|
|
|
|
+void EditorExportPlatformIOS::_notification(int p_what) {
|
|
|
+#ifdef MACOS_ENABLED
|
|
|
+ if (p_what == NOTIFICATION_POSTINITIALIZE) {
|
|
|
+ EditorExport::get_singleton()->connect_presets_runnable_updated(callable_mp(this, &EditorExportPlatformIOS::_update_preset_status));
|
|
|
+ }
|
|
|
+#endif
|
|
|
+}
|
|
|
+
|
|
|
bool EditorExportPlatformIOS::get_export_option_visibility(const EditorExportPreset *p_preset, const String &p_option) const {
|
|
|
return true;
|
|
|
}
|
|
@@ -2228,7 +2236,7 @@ void EditorExportPlatformIOS::_check_for_changes_poll_thread(void *ud) {
|
|
|
|
|
|
// Enum real devices (via ios_deploy, pre Xcode 15).
|
|
|
String idepl = EDITOR_GET("export/ios/ios_deploy");
|
|
|
- if (!idepl.is_empty()) {
|
|
|
+ if (ea->has_runnable_preset.is_set() && !idepl.is_empty()) {
|
|
|
String devices;
|
|
|
List<String> args;
|
|
|
args.push_back("-c");
|
|
@@ -2266,7 +2274,7 @@ void EditorExportPlatformIOS::_check_for_changes_poll_thread(void *ud) {
|
|
|
}
|
|
|
|
|
|
// Enum simulators.
|
|
|
- if (_check_xcode_install() && (FileAccess::exists("/usr/bin/xcrun") || FileAccess::exists("/bin/xcrun"))) {
|
|
|
+ if (ea->has_runnable_preset.is_set() && _check_xcode_install() && (FileAccess::exists("/usr/bin/xcrun") || FileAccess::exists("/bin/xcrun"))) {
|
|
|
{
|
|
|
String devices;
|
|
|
List<String> args;
|
|
@@ -2304,7 +2312,7 @@ void EditorExportPlatformIOS::_check_for_changes_poll_thread(void *ud) {
|
|
|
}
|
|
|
|
|
|
// Enum simulators.
|
|
|
- {
|
|
|
+ if (ea->has_runnable_preset.is_set()) {
|
|
|
String devices;
|
|
|
List<String> args;
|
|
|
args.push_back("simctl");
|
|
@@ -2373,6 +2381,25 @@ void EditorExportPlatformIOS::_check_for_changes_poll_thread(void *ud) {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+void EditorExportPlatformIOS::_update_preset_status() {
|
|
|
+ const int preset_count = EditorExport::get_singleton()->get_export_preset_count();
|
|
|
+ bool has_runnable = false;
|
|
|
+
|
|
|
+ for (int i = 0; i < preset_count; i++) {
|
|
|
+ const Ref<EditorExportPreset> &preset = EditorExport::get_singleton()->get_export_preset(i);
|
|
|
+ if (preset->get_platform() == this && preset->is_runnable()) {
|
|
|
+ has_runnable = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (has_runnable) {
|
|
|
+ has_runnable_preset.set();
|
|
|
+ } else {
|
|
|
+ has_runnable_preset.clear();
|
|
|
+ }
|
|
|
+}
|
|
|
#endif
|
|
|
|
|
|
Error EditorExportPlatformIOS::run(const Ref<EditorExportPreset> &p_preset, int p_device, int p_debug_flags) {
|
|
@@ -2637,6 +2664,7 @@ EditorExportPlatformIOS::EditorExportPlatformIOS() {
|
|
|
plugins_changed.set();
|
|
|
devices_changed.set();
|
|
|
#ifdef MACOS_ENABLED
|
|
|
+ _update_preset_status();
|
|
|
check_for_changes_thread.start(_check_for_changes_poll_thread, this);
|
|
|
#endif
|
|
|
}
|