Improve EditorExportPlatform interface.
Convert all get_device* methods to get_option* and normalize their usage as icon, label, tooltip.
This commit is contained in:
parent
2ae3631318
commit
53637e4b1c
5 changed files with 46 additions and 29 deletions
|
@ -376,6 +376,12 @@ Error EditorExportPlatform::_save_zip_file(void *p_userdata, const String &p_pat
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ref<ImageTexture> EditorExportPlatform::get_option_icon(int p_index) const {
|
||||||
|
Ref<Theme> theme = EditorNode::get_singleton()->get_editor_theme();
|
||||||
|
ERR_FAIL_COND_V(theme.is_null(), Ref<ImageTexture>());
|
||||||
|
return theme->get_icon("Play", "EditorIcons");
|
||||||
|
}
|
||||||
|
|
||||||
String EditorExportPlatform::find_export_template(String template_file_name, String *err) const {
|
String EditorExportPlatform::find_export_template(String template_file_name, String *err) const {
|
||||||
|
|
||||||
String current_version = VERSION_FULL_CONFIG;
|
String current_version = VERSION_FULL_CONFIG;
|
||||||
|
@ -1403,7 +1409,7 @@ bool EditorExport::poll_export_platforms() {
|
||||||
|
|
||||||
bool changed = false;
|
bool changed = false;
|
||||||
for (int i = 0; i < export_platforms.size(); i++) {
|
for (int i = 0; i < export_platforms.size(); i++) {
|
||||||
if (export_platforms.write[i]->poll_devices()) {
|
if (export_platforms.write[i]->poll_export()) {
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -243,10 +243,12 @@ public:
|
||||||
Error save_pack(const Ref<EditorExportPreset> &p_preset, const String &p_path, Vector<SharedObject> *p_so_files = NULL, bool p_embed = false, int64_t *r_embedded_start = NULL, int64_t *r_embedded_size = NULL);
|
Error save_pack(const Ref<EditorExportPreset> &p_preset, const String &p_path, Vector<SharedObject> *p_so_files = NULL, bool p_embed = false, int64_t *r_embedded_start = NULL, int64_t *r_embedded_size = NULL);
|
||||||
Error save_zip(const Ref<EditorExportPreset> &p_preset, const String &p_path);
|
Error save_zip(const Ref<EditorExportPreset> &p_preset, const String &p_path);
|
||||||
|
|
||||||
virtual bool poll_devices() { return false; }
|
virtual bool poll_export() { return false; }
|
||||||
virtual int get_device_count() const { return 0; }
|
virtual int get_options_count() const { return 0; }
|
||||||
virtual String get_device_name(int p_device) const { return ""; }
|
virtual String get_options_tooltip() const { return ""; }
|
||||||
virtual String get_device_info(int p_device) const { return ""; }
|
virtual Ref<ImageTexture> get_option_icon(int p_index) const;
|
||||||
|
virtual String get_option_label(int p_device) const { return ""; }
|
||||||
|
virtual String get_option_tooltip(int p_device) const { return ""; }
|
||||||
|
|
||||||
enum DebugFlags {
|
enum DebugFlags {
|
||||||
DEBUG_FLAG_DUMB_CLIENT = 1,
|
DEBUG_FLAG_DUMB_CLIENT = 1,
|
||||||
|
|
|
@ -75,20 +75,18 @@ void EditorRunNative::_notification(int p_what) {
|
||||||
|
|
||||||
Ref<EditorExportPlatform> eep = EditorExport::get_singleton()->get_export_platform(E->key());
|
Ref<EditorExportPlatform> eep = EditorExport::get_singleton()->get_export_platform(E->key());
|
||||||
MenuButton *mb = E->get();
|
MenuButton *mb = E->get();
|
||||||
int dc = eep->get_device_count();
|
int dc = eep->get_options_count();
|
||||||
|
|
||||||
if (dc == 0) {
|
if (dc == 0) {
|
||||||
mb->hide();
|
mb->hide();
|
||||||
} else {
|
} else {
|
||||||
mb->get_popup()->clear();
|
mb->get_popup()->clear();
|
||||||
mb->show();
|
mb->show();
|
||||||
if (dc == 1) {
|
mb->set_tooltip(eep->get_options_tooltip());
|
||||||
mb->set_tooltip(eep->get_device_name(0) + "\n\n" + eep->get_device_info(0).strip_edges());
|
if (dc > 1) {
|
||||||
} else {
|
|
||||||
mb->set_tooltip("Select device from the list");
|
|
||||||
for (int i = 0; i < dc; i++) {
|
for (int i = 0; i < dc; i++) {
|
||||||
mb->get_popup()->add_icon_item(get_icon("Play", "EditorIcons"), eep->get_device_name(i));
|
mb->get_popup()->add_icon_item(eep->get_option_icon(i), eep->get_option_label(i));
|
||||||
mb->get_popup()->set_item_tooltip(mb->get_popup()->get_item_count() - 1, eep->get_device_info(i).strip_edges());
|
mb->get_popup()->set_item_tooltip(mb->get_popup()->get_item_count() - 1, eep->get_option_tooltip(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -111,7 +109,7 @@ void EditorRunNative::_run_native(int p_idx, int p_platform) {
|
||||||
ERR_FAIL_COND(eep.is_null());
|
ERR_FAIL_COND(eep.is_null());
|
||||||
|
|
||||||
if (p_idx == -1) {
|
if (p_idx == -1) {
|
||||||
if (eep->get_device_count() == 1) {
|
if (eep->get_options_count() == 1) {
|
||||||
menus[p_platform]->get_popup()->hide();
|
menus[p_platform]->get_popup()->hide();
|
||||||
p_idx = 0;
|
p_idx = 0;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1345,7 +1345,7 @@ public:
|
||||||
return logo;
|
return logo;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool poll_devices() {
|
virtual bool poll_export() {
|
||||||
|
|
||||||
bool dc = devices_changed;
|
bool dc = devices_changed;
|
||||||
if (dc) {
|
if (dc) {
|
||||||
|
@ -1355,7 +1355,7 @@ public:
|
||||||
return dc;
|
return dc;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual int get_device_count() const {
|
virtual int get_options_count() const {
|
||||||
|
|
||||||
device_lock->lock();
|
device_lock->lock();
|
||||||
int dc = devices.size();
|
int dc = devices.size();
|
||||||
|
@ -1364,20 +1364,31 @@ public:
|
||||||
return dc;
|
return dc;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual String get_device_name(int p_device) const {
|
virtual String get_options_tooltip() const {
|
||||||
|
|
||||||
ERR_FAIL_INDEX_V(p_device, devices.size(), "");
|
return TTR("Select device from the list");
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual String get_option_label(int p_index) const {
|
||||||
|
|
||||||
|
ERR_FAIL_INDEX_V(p_index, devices.size(), "");
|
||||||
device_lock->lock();
|
device_lock->lock();
|
||||||
String s = devices[p_device].name;
|
String s = devices[p_index].name;
|
||||||
device_lock->unlock();
|
device_lock->unlock();
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual String get_device_info(int p_device) const {
|
virtual String get_option_tooltip(int p_index) const {
|
||||||
|
|
||||||
ERR_FAIL_INDEX_V(p_device, devices.size(), "");
|
ERR_FAIL_INDEX_V(p_index, devices.size(), "");
|
||||||
device_lock->lock();
|
device_lock->lock();
|
||||||
String s = devices[p_device].description;
|
String s = devices[p_index].description;
|
||||||
|
if (devices.size() == 1) {
|
||||||
|
// Tooltip will be:
|
||||||
|
// Name
|
||||||
|
// Description
|
||||||
|
s = devices[p_index].name + "\n\n" + s;
|
||||||
|
}
|
||||||
device_lock->unlock();
|
device_lock->unlock();
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,11 +61,11 @@ public:
|
||||||
virtual List<String> get_binary_extensions(const Ref<EditorExportPreset> &p_preset) const;
|
virtual List<String> get_binary_extensions(const Ref<EditorExportPreset> &p_preset) const;
|
||||||
virtual Error export_project(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags = 0);
|
virtual Error export_project(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags = 0);
|
||||||
|
|
||||||
virtual bool poll_devices();
|
virtual bool poll_export();
|
||||||
virtual int get_device_count() const;
|
virtual int get_options_count() const;
|
||||||
virtual String get_device_name(int p_device) const { return TTR("Run in Browser"); }
|
virtual String get_options_name(int p_index) const { return p_index ? TTR("Stop HTTP Server") : TTR("Run in Browser"); }
|
||||||
virtual String get_device_info(int p_device) const { return TTR("Run exported HTML in the system's default browser."); }
|
virtual String get_option_tooltip(int p_index) const { return p_index ? TTR("Stop HTTP Server") : TTR("Run exported HTML in the system's default browser."); }
|
||||||
virtual Error run(const Ref<EditorExportPreset> &p_preset, int p_device, int p_debug_flags);
|
virtual Error run(const Ref<EditorExportPreset> &p_preset, int p_option, int p_debug_flags);
|
||||||
virtual Ref<Texture> get_run_icon() const;
|
virtual Ref<Texture> get_run_icon() const;
|
||||||
|
|
||||||
virtual void get_platform_features(List<String> *r_features) {
|
virtual void get_platform_features(List<String> *r_features) {
|
||||||
|
@ -337,7 +337,7 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EditorExportPlatformJavaScript::poll_devices() {
|
bool EditorExportPlatformJavaScript::poll_export() {
|
||||||
|
|
||||||
Ref<EditorExportPreset> preset;
|
Ref<EditorExportPreset> preset;
|
||||||
|
|
||||||
|
@ -355,12 +355,12 @@ bool EditorExportPlatformJavaScript::poll_devices() {
|
||||||
return runnable_when_last_polled != prev;
|
return runnable_when_last_polled != prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
int EditorExportPlatformJavaScript::get_device_count() const {
|
int EditorExportPlatformJavaScript::get_options_count() const {
|
||||||
|
|
||||||
return runnable_when_last_polled;
|
return runnable_when_last_polled;
|
||||||
}
|
}
|
||||||
|
|
||||||
Error EditorExportPlatformJavaScript::run(const Ref<EditorExportPreset> &p_preset, int p_device, int p_debug_flags) {
|
Error EditorExportPlatformJavaScript::run(const Ref<EditorExportPreset> &p_preset, int p_option, int p_debug_flags) {
|
||||||
|
|
||||||
String basepath = EditorSettings::get_singleton()->get_cache_dir().plus_file("tmp_js_export");
|
String basepath = EditorSettings::get_singleton()->get_cache_dir().plus_file("tmp_js_export");
|
||||||
String path = basepath + ".html";
|
String path = basepath + ".html";
|
||||||
|
|
Loading…
Reference in a new issue