mirror of
https://github.com/WerWolv/ImHex.git
synced 2026-04-02 13:37:42 -05:00
impr: Show a loading spinner while providers are loading
This commit is contained in:
@@ -190,20 +190,23 @@ namespace hex::plugin::builtin {
|
||||
TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); });
|
||||
return;
|
||||
}
|
||||
if (!provider->open()) {
|
||||
ui::ToastError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage()));
|
||||
TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); });
|
||||
return;
|
||||
}
|
||||
|
||||
TaskManager::createBlockingTask("hex.builtin.provider.opening", TaskManager::NoProgress, [provider]() {
|
||||
if (!provider->open()) {
|
||||
ui::ToastError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage()));
|
||||
TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); });
|
||||
}
|
||||
});
|
||||
|
||||
EventProviderOpened::post(provider);
|
||||
}
|
||||
else if (!provider->hasLoadInterface()) {
|
||||
if (!provider->open() || !provider->isAvailable()) {
|
||||
ui::ToastError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage()));
|
||||
TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); });
|
||||
return;
|
||||
}
|
||||
TaskManager::createBlockingTask("hex.builtin.provider.opening", TaskManager::NoProgress, [provider]() {
|
||||
if (!provider->open() || !provider->isAvailable()) {
|
||||
ui::ToastError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage()));
|
||||
TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); });
|
||||
}
|
||||
});
|
||||
|
||||
EventProviderOpened::post(provider);
|
||||
}
|
||||
|
||||
@@ -238,15 +238,17 @@ namespace hex::plugin::builtin::recent {
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
auto *provider = ImHexApi::Provider::createProvider(recentEntry.type, true);
|
||||
if (provider != nullptr) {
|
||||
provider->loadSettings(recentEntry.data);
|
||||
|
||||
if (!provider->open() || !provider->isAvailable()) {
|
||||
ui::ToastError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage()));
|
||||
TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); });
|
||||
return;
|
||||
}
|
||||
TaskManager::createBlockingTask("hex.builtin.provider.opening", TaskManager::NoProgress, [provider]() {
|
||||
if (!provider->open() || !provider->isAvailable()) {
|
||||
ui::ToastError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage()));
|
||||
TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); });
|
||||
}
|
||||
});
|
||||
|
||||
EventProviderOpened::post(provider);
|
||||
|
||||
|
||||
@@ -376,7 +376,7 @@ namespace hex::plugin::builtin {
|
||||
}
|
||||
});
|
||||
|
||||
EventProviderCreated::subscribe(this, [this](auto *provider) {
|
||||
EventProviderOpened::subscribe(this, [this](auto *provider) {
|
||||
m_mainWorkspace.get(provider) = { };
|
||||
m_workspaceStack.get(provider).push_back(&m_mainWorkspace.get(provider));
|
||||
});
|
||||
@@ -429,7 +429,7 @@ namespace hex::plugin::builtin {
|
||||
}
|
||||
|
||||
ViewDataProcessor::~ViewDataProcessor() {
|
||||
EventProviderCreated::unsubscribe(this);
|
||||
EventProviderOpened::unsubscribe(this);
|
||||
EventProviderChanged::unsubscribe(this);
|
||||
RequestChangeTheme::unsubscribe(this);
|
||||
EventFileLoaded::unsubscribe(this);
|
||||
|
||||
@@ -168,7 +168,7 @@ namespace hex::plugin::builtin {
|
||||
|
||||
// Initialize the selected rule iterators to point to the end of the rules lists
|
||||
m_selectedRule = m_rules->end();
|
||||
EventProviderCreated::subscribe([this](prv::Provider *provider) {
|
||||
EventProviderOpened::subscribe([this](prv::Provider *provider) {
|
||||
m_selectedRule.get(provider) = m_rules.get(provider).end();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
namespace hex::plugin::builtin {
|
||||
|
||||
ViewProviderSettings::ViewProviderSettings() : View::Modal("hex.builtin.view.provider_settings.name") {
|
||||
EventProviderCreated::subscribe(this, [this](const hex::prv::Provider *provider) {
|
||||
EventProviderOpened::subscribe(this, [this](const hex::prv::Provider *provider) {
|
||||
if (provider->hasLoadInterface() && !provider->shouldSkipLoadInterface())
|
||||
this->getWindowOpenState() = true;
|
||||
});
|
||||
@@ -28,7 +28,7 @@ namespace hex::plugin::builtin {
|
||||
}
|
||||
|
||||
ViewProviderSettings::~ViewProviderSettings() {
|
||||
EventProviderCreated::unsubscribe(this);
|
||||
EventProviderOpened::unsubscribe(this);
|
||||
}
|
||||
|
||||
void ViewProviderSettings::drawContent() {
|
||||
|
||||
Reference in New Issue
Block a user