fix: Various issues with the new popup system
This commit is contained in:
parent
52925c99e8
commit
1690cd2740
@ -31,7 +31,7 @@ namespace hex {
|
|||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] virtual ImVec2 getMaxSize() const {
|
[[nodiscard]] virtual ImVec2 getMaxSize() const {
|
||||||
return { FLT_MAX, FLT_MAX };
|
return { 0, 0 };
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] static std::vector<std::unique_ptr<PopupBase>> &getOpenPopups() {
|
[[nodiscard]] static std::vector<std::unique_ptr<PopupBase>> &getOpenPopups() {
|
||||||
@ -50,30 +50,22 @@ namespace hex {
|
|||||||
return this->m_modal;
|
return this->m_modal;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void close() {
|
void close() {
|
||||||
if (s_openPopups.empty())
|
this->m_close = true;
|
||||||
return;
|
|
||||||
|
|
||||||
TaskManager::doLater([]{
|
|
||||||
std::lock_guard lock(s_mutex);
|
|
||||||
|
|
||||||
ImGui::CloseCurrentPopup();
|
|
||||||
s_openPopups.pop_back();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::mutex& getMutex() {
|
[[nodiscard]] bool shouldClose() const {
|
||||||
return s_mutex;
|
return this->m_close;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static std::vector<std::unique_ptr<PopupBase>> s_openPopups;
|
static std::vector<std::unique_ptr<PopupBase>> s_openPopups;
|
||||||
static std::mutex s_mutex;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
std::string m_unlocalizedName;
|
std::string m_unlocalizedName;
|
||||||
bool m_closeButton, m_modal;
|
bool m_closeButton, m_modal;
|
||||||
|
std::atomic<bool> m_close = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -87,7 +79,8 @@ namespace hex {
|
|||||||
public:
|
public:
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
static void open(Args && ... args) {
|
static void open(Args && ... args) {
|
||||||
std::lock_guard lock(s_mutex);
|
static std::mutex mutex;
|
||||||
|
std::lock_guard lock(mutex);
|
||||||
|
|
||||||
auto popup = std::make_unique<T>(std::forward<Args>(args)...);
|
auto popup = std::make_unique<T>(std::forward<Args>(args)...);
|
||||||
|
|
||||||
|
@ -3,6 +3,5 @@
|
|||||||
namespace hex::impl {
|
namespace hex::impl {
|
||||||
|
|
||||||
std::vector<std::unique_ptr<PopupBase>> PopupBase::s_openPopups;
|
std::vector<std::unique_ptr<PopupBase>> PopupBase::s_openPopups;
|
||||||
std::mutex PopupBase::s_mutex;
|
|
||||||
|
|
||||||
}
|
}
|
@ -530,59 +530,61 @@ namespace hex {
|
|||||||
|
|
||||||
// Draw popup stack
|
// Draw popup stack
|
||||||
{
|
{
|
||||||
std::scoped_lock lock(impl::PopupBase::getMutex());
|
|
||||||
if (auto &popups = impl::PopupBase::getOpenPopups(); !popups.empty()) {
|
if (auto &popups = impl::PopupBase::getOpenPopups(); !popups.empty()) {
|
||||||
static bool popupDisplaying = false;
|
static bool popupDisplaying = false;
|
||||||
|
static bool positionSet = false;
|
||||||
static bool sizeSet = false;
|
static bool sizeSet = false;
|
||||||
static ImVec2 popupSize;
|
|
||||||
|
|
||||||
auto &currPopup = popups.back();
|
auto &currPopup = popups.back();
|
||||||
const auto &name = LangEntry(currPopup->getUnlocalizedName());
|
const auto &name = LangEntry(currPopup->getUnlocalizedName());
|
||||||
|
|
||||||
if (!ImGui::IsPopupOpen(ImGuiID(0), ImGuiPopupFlags_AnyPopupId) && !popupDisplaying)
|
if (!ImGui::IsPopupOpen(ImGuiID(0), ImGuiPopupFlags_AnyPopupId))
|
||||||
ImGui::OpenPopup(name);
|
ImGui::OpenPopup(name);
|
||||||
|
|
||||||
bool open = true;
|
bool open = true;
|
||||||
ImGui::SetNextWindowSizeConstraints(currPopup->getMinSize(), currPopup->getMaxSize());
|
|
||||||
|
|
||||||
const auto closeButton = currPopup->hasCloseButton() ? &open : nullptr;
|
const auto &minSize = currPopup->getMinSize();
|
||||||
const auto flags = currPopup->getFlags();
|
const auto &maxSize = currPopup->getMaxSize();
|
||||||
|
const bool hasConstraints = minSize.x != 0 && minSize.y != 0 && maxSize.x != 0 && maxSize.y != 0;
|
||||||
|
|
||||||
auto emptyWindowSize = ImGui::GetStyle().FramePadding * 4;
|
if (hasConstraints)
|
||||||
if (!sizeSet && popupSize.x > emptyWindowSize.x && popupSize.y > emptyWindowSize.y && popupSize.y < ImGui::GetMainViewport()->Size.y) {
|
ImGui::SetNextWindowSizeConstraints(minSize, maxSize);
|
||||||
ImGui::SetNextWindowSize(popupSize, ImGuiCond_Always);
|
else
|
||||||
ImGui::SetNextWindowPos(ImGui::GetMainViewport()->GetCenter(), ImGuiCond_Always, ImVec2(0.5F, 0.5F));
|
ImGui::SetNextWindowSize(ImVec2(0, 0), ImGuiCond_Appearing);
|
||||||
sizeSet = true;
|
|
||||||
|
auto* closeButton = currPopup->hasCloseButton() ? &open : nullptr;
|
||||||
|
|
||||||
|
const auto flags = currPopup->getFlags() | (!hasConstraints ? (ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize) : ImGuiWindowFlags_None);
|
||||||
|
|
||||||
|
if (!positionSet) {
|
||||||
|
ImGui::SetNextWindowPos(ImHexApi::System::getMainWindowPosition() + (ImHexApi::System::getMainWindowSize() / 2.0F), ImGuiCond_Always, ImVec2(0.5F, 0.5F));
|
||||||
|
if (sizeSet)
|
||||||
|
positionSet = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currPopup->isModal()) {
|
const auto createPopup = [&](bool displaying) {
|
||||||
if (ImGui::BeginPopupModal(name, closeButton, flags)) {
|
if (displaying) {
|
||||||
|
|
||||||
currPopup->drawContent();
|
currPopup->drawContent();
|
||||||
popupDisplaying = true;
|
popupDisplaying = true;
|
||||||
popupSize = ImGui::GetWindowSize();
|
|
||||||
|
if (ImGui::GetWindowSize().x > ImGui::GetStyle().FramePadding.x * 10)
|
||||||
|
sizeSet = true;
|
||||||
|
|
||||||
ImGui::EndPopup();
|
ImGui::EndPopup();
|
||||||
} else {
|
} else {
|
||||||
popupDisplaying = false;
|
popupDisplaying = false;
|
||||||
}
|
}
|
||||||
} else {
|
};
|
||||||
if (ImGui::BeginPopup(name, flags)) {
|
|
||||||
|
|
||||||
currPopup->drawContent();
|
if (currPopup->isModal())
|
||||||
popupDisplaying = true;
|
createPopup(ImGui::BeginPopupModal(name, closeButton, flags));
|
||||||
popupSize = ImGui::GetWindowSize();
|
else
|
||||||
|
createPopup(ImGui::BeginPopup(name, flags));
|
||||||
|
|
||||||
ImGui::EndPopup();
|
if (!popupDisplaying || currPopup->shouldClose()) {
|
||||||
} else {
|
log::debug("Closing popup '{}'", name);
|
||||||
popupDisplaying = false;
|
positionSet = sizeSet = false;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!open && !popupDisplaying) {
|
|
||||||
sizeSet = false;
|
|
||||||
popupDisplaying = false;
|
|
||||||
popupSize = ImVec2(0, 0);
|
|
||||||
popups.pop_back();
|
popups.pop_back();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ namespace hex::plugin::builtin {
|
|||||||
class PopupInfo : public impl::PopupNotification<PopupInfo> {
|
class PopupInfo : public impl::PopupNotification<PopupInfo> {
|
||||||
public:
|
public:
|
||||||
explicit PopupInfo(std::string message)
|
explicit PopupInfo(std::string message)
|
||||||
: PopupNotification("hex.builtin.common.info", std::move(message), []() {
|
: PopupNotification("hex.builtin.common.info", std::move(message), [this]() {
|
||||||
Popup::close();
|
Popup::close();
|
||||||
}) { }
|
}) { }
|
||||||
};
|
};
|
||||||
@ -56,7 +56,7 @@ namespace hex::plugin::builtin {
|
|||||||
class PopupError : public impl::PopupNotification<PopupError> {
|
class PopupError : public impl::PopupNotification<PopupError> {
|
||||||
public:
|
public:
|
||||||
explicit PopupError(std::string message)
|
explicit PopupError(std::string message)
|
||||||
: PopupNotification("hex.builtin.common.error", std::move(message), []() {
|
: PopupNotification("hex.builtin.common.error", std::move(message), [this]() {
|
||||||
Popup::close();
|
Popup::close();
|
||||||
}) { }
|
}) { }
|
||||||
};
|
};
|
||||||
@ -64,7 +64,7 @@ namespace hex::plugin::builtin {
|
|||||||
class PopupFatal : public impl::PopupNotification<PopupFatal> {
|
class PopupFatal : public impl::PopupNotification<PopupFatal> {
|
||||||
public:
|
public:
|
||||||
explicit PopupFatal(std::string message)
|
explicit PopupFatal(std::string message)
|
||||||
: PopupNotification("hex.builtin.common.fatal", std::move(message), []() {
|
: PopupNotification("hex.builtin.common.fatal", std::move(message), [this]() {
|
||||||
ImHexApi::System::closeImHex();
|
ImHexApi::System::closeImHex();
|
||||||
Popup::close();
|
Popup::close();
|
||||||
}) { }
|
}) { }
|
||||||
|
@ -21,12 +21,16 @@ namespace hex::plugin::builtin {
|
|||||||
|
|
||||||
auto width = ImGui::GetWindowWidth();
|
auto width = ImGui::GetWindowWidth();
|
||||||
ImGui::SetCursorPosX(width / 9);
|
ImGui::SetCursorPosX(width / 9);
|
||||||
if (ImGui::Button("hex.builtin.common.yes"_lang, ImVec2(width / 3, 0)))
|
if (ImGui::Button("hex.builtin.common.yes"_lang, ImVec2(width / 3, 0))) {
|
||||||
this->m_yesFunction();
|
this->m_yesFunction();
|
||||||
|
this->close();
|
||||||
|
}
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
ImGui::SetCursorPosX(width / 9 * 5);
|
ImGui::SetCursorPosX(width / 9 * 5);
|
||||||
if (ImGui::Button("hex.builtin.common.no"_lang, ImVec2(width / 3, 0)))
|
if (ImGui::Button("hex.builtin.common.no"_lang, ImVec2(width / 3, 0))) {
|
||||||
this->m_noFunction();
|
this->m_noFunction();
|
||||||
|
this->close();
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::SetWindowPos((ImHexApi::System::getMainWindowSize() - ImGui::GetWindowSize()) / 2, ImGuiCond_Appearing);
|
ImGui::SetWindowPos((ImHexApi::System::getMainWindowSize() - ImGui::GetWindowSize()) / 2, ImGuiCond_Appearing);
|
||||||
}
|
}
|
||||||
|
@ -78,18 +78,18 @@ namespace hex::plugin::builtin {
|
|||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::TextUnformatted("hex.builtin.view.pattern_editor.accept_pattern.question"_lang);
|
ImGui::TextUnformatted("hex.builtin.view.pattern_editor.accept_pattern.question"_lang);
|
||||||
|
|
||||||
confirmButtons(
|
confirmButtons("hex.builtin.common.yes"_lang, "hex.builtin.common.no"_lang,
|
||||||
"hex.builtin.common.yes"_lang, "hex.builtin.common.no"_lang, [this, provider] {
|
[this, provider] {
|
||||||
this->m_view->loadPatternFile(this->m_view->m_possiblePatternFiles[this->m_view->m_selectedPatternFile], provider);
|
this->m_view->loadPatternFile(this->m_view->m_possiblePatternFiles[this->m_view->m_selectedPatternFile], provider);
|
||||||
Popup::close();
|
this->close();
|
||||||
},
|
},
|
||||||
[] {
|
[this] {
|
||||||
Popup::close();
|
this->close();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
if (ImGui::IsKeyDown(ImGui::GetKeyIndex(ImGuiKey_Escape)))
|
if (ImGui::IsKeyDown(ImGui::GetKeyIndex(ImGuiKey_Escape)))
|
||||||
Popup::close();
|
this->close();
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] ImGuiWindowFlags getFlags() const override {
|
[[nodiscard]] ImGuiWindowFlags getFlags() const override {
|
||||||
|
@ -829,10 +829,10 @@
|
|||||||
"hex.builtin.welcome.plugins.author",
|
"hex.builtin.welcome.plugins.author",
|
||||||
"hex.builtin.welcome.plugins.desc",
|
"hex.builtin.welcome.plugins.desc",
|
||||||
"hex.builtin.welcome.plugins.plugin",
|
"hex.builtin.welcome.plugins.plugin",
|
||||||
"hex.builtin.welcome.safety_backup.delete",
|
"hex.builtin.popup.safety_backup.delete",
|
||||||
"hex.builtin.welcome.safety_backup.desc",
|
"hex.builtin.popup.safety_backup.desc",
|
||||||
"hex.builtin.welcome.safety_backup.restore",
|
"hex.builtin.popup.safety_backup.restore",
|
||||||
"hex.builtin.welcome.safety_backup.title",
|
"hex.builtin.popup.safety_backup.title",
|
||||||
"hex.builtin.welcome.start.create_file",
|
"hex.builtin.welcome.start.create_file",
|
||||||
"hex.builtin.welcome.start.open_file",
|
"hex.builtin.welcome.start.open_file",
|
||||||
"hex.builtin.welcome.start.open_other",
|
"hex.builtin.welcome.start.open_other",
|
||||||
|
@ -880,10 +880,10 @@
|
|||||||
"hex.builtin.welcome.plugins.author": "Autor",
|
"hex.builtin.welcome.plugins.author": "Autor",
|
||||||
"hex.builtin.welcome.plugins.desc": "Beschreibung",
|
"hex.builtin.welcome.plugins.desc": "Beschreibung",
|
||||||
"hex.builtin.welcome.plugins.plugin": "Plugin",
|
"hex.builtin.welcome.plugins.plugin": "Plugin",
|
||||||
"hex.builtin.welcome.safety_backup.delete": "Nein, entfernen",
|
"hex.builtin.popup.safety_backup.delete": "Nein, entfernen",
|
||||||
"hex.builtin.welcome.safety_backup.desc": "Oh nein, ImHex ist letztes Mal abgestürzt.\nWillst du das vorherige Projekt wiederherstellen?",
|
"hex.builtin.popup.safety_backup.desc": "Oh nein, ImHex ist letztes Mal abgestürzt.\nWillst du das vorherige Projekt wiederherstellen?",
|
||||||
"hex.builtin.welcome.safety_backup.restore": "Ja, wiederherstellen",
|
"hex.builtin.popup.safety_backup.restore": "Ja, wiederherstellen",
|
||||||
"hex.builtin.welcome.safety_backup.title": "Verlorene Daten wiederherstellen",
|
"hex.builtin.popup.safety_backup.title": "Verlorene Daten wiederherstellen",
|
||||||
"hex.builtin.welcome.start.create_file": "Neue Datei erstellen",
|
"hex.builtin.welcome.start.create_file": "Neue Datei erstellen",
|
||||||
"hex.builtin.welcome.start.open_file": "Datei öffnen",
|
"hex.builtin.welcome.start.open_file": "Datei öffnen",
|
||||||
"hex.builtin.welcome.start.open_other": "Andere Provider",
|
"hex.builtin.welcome.start.open_other": "Andere Provider",
|
||||||
|
@ -901,10 +901,10 @@
|
|||||||
"hex.builtin.welcome.plugins.author": "Author",
|
"hex.builtin.welcome.plugins.author": "Author",
|
||||||
"hex.builtin.welcome.plugins.desc": "Description",
|
"hex.builtin.welcome.plugins.desc": "Description",
|
||||||
"hex.builtin.welcome.plugins.plugin": "Plugin",
|
"hex.builtin.welcome.plugins.plugin": "Plugin",
|
||||||
"hex.builtin.welcome.safety_backup.delete": "No, Delete",
|
"hex.builtin.popup.safety_backup.delete": "No, Delete",
|
||||||
"hex.builtin.welcome.safety_backup.desc": "Oh no, ImHex crashed last time.\nDo you want to restore your past work?",
|
"hex.builtin.popup.safety_backup.desc": "Oh no, ImHex crashed last time.\nDo you want to restore your past work?",
|
||||||
"hex.builtin.welcome.safety_backup.restore": "Yes, Restore",
|
"hex.builtin.popup.safety_backup.restore": "Yes, Restore",
|
||||||
"hex.builtin.welcome.safety_backup.title": "Restore lost data",
|
"hex.builtin.popup.safety_backup.title": "Restore lost data",
|
||||||
"hex.builtin.welcome.start.create_file": "Create New File",
|
"hex.builtin.welcome.start.create_file": "Create New File",
|
||||||
"hex.builtin.welcome.start.open_file": "Open File",
|
"hex.builtin.welcome.start.open_file": "Open File",
|
||||||
"hex.builtin.welcome.start.open_other": "Other Providers",
|
"hex.builtin.welcome.start.open_other": "Other Providers",
|
||||||
|
@ -880,10 +880,10 @@
|
|||||||
"hex.builtin.welcome.plugins.author": "Autore",
|
"hex.builtin.welcome.plugins.author": "Autore",
|
||||||
"hex.builtin.welcome.plugins.desc": "Descrizione",
|
"hex.builtin.welcome.plugins.desc": "Descrizione",
|
||||||
"hex.builtin.welcome.plugins.plugin": "Plugin",
|
"hex.builtin.welcome.plugins.plugin": "Plugin",
|
||||||
"hex.builtin.welcome.safety_backup.delete": "No, Elimina",
|
"hex.builtin.popup.safety_backup.delete": "No, Elimina",
|
||||||
"hex.builtin.welcome.safety_backup.desc": "Oh no, l'ultima volta ImHex è crashato.\nVuoi ripristinare il tuo lavoro?",
|
"hex.builtin.popup.safety_backup.desc": "Oh no, l'ultima volta ImHex è crashato.\nVuoi ripristinare il tuo lavoro?",
|
||||||
"hex.builtin.welcome.safety_backup.restore": "Sì, Ripristina",
|
"hex.builtin.popup.safety_backup.restore": "Sì, Ripristina",
|
||||||
"hex.builtin.welcome.safety_backup.title": "Ripristina i dati persi",
|
"hex.builtin.popup.safety_backup.title": "Ripristina i dati persi",
|
||||||
"hex.builtin.welcome.start.create_file": "Crea un nuovo File",
|
"hex.builtin.welcome.start.create_file": "Crea un nuovo File",
|
||||||
"hex.builtin.welcome.start.open_file": "Apri un File",
|
"hex.builtin.welcome.start.open_file": "Apri un File",
|
||||||
"hex.builtin.welcome.start.open_other": "",
|
"hex.builtin.welcome.start.open_other": "",
|
||||||
|
@ -880,10 +880,10 @@
|
|||||||
"hex.builtin.welcome.plugins.author": "作者",
|
"hex.builtin.welcome.plugins.author": "作者",
|
||||||
"hex.builtin.welcome.plugins.desc": "詳細",
|
"hex.builtin.welcome.plugins.desc": "詳細",
|
||||||
"hex.builtin.welcome.plugins.plugin": "プラグイン",
|
"hex.builtin.welcome.plugins.plugin": "プラグイン",
|
||||||
"hex.builtin.welcome.safety_backup.delete": "破棄する",
|
"hex.builtin.popup.safety_backup.delete": "破棄する",
|
||||||
"hex.builtin.welcome.safety_backup.desc": "ImHexがクラッシュしました。\n前のデータを復元しますか?",
|
"hex.builtin.popup.safety_backup.desc": "ImHexがクラッシュしました。\n前のデータを復元しますか?",
|
||||||
"hex.builtin.welcome.safety_backup.restore": "復元する",
|
"hex.builtin.popup.safety_backup.restore": "復元する",
|
||||||
"hex.builtin.welcome.safety_backup.title": "セッションの回復",
|
"hex.builtin.popup.safety_backup.title": "セッションの回復",
|
||||||
"hex.builtin.welcome.start.create_file": "新規ファイルを作成",
|
"hex.builtin.welcome.start.create_file": "新規ファイルを作成",
|
||||||
"hex.builtin.welcome.start.open_file": "ファイルを開く…",
|
"hex.builtin.welcome.start.open_file": "ファイルを開く…",
|
||||||
"hex.builtin.welcome.start.open_other": "その他のファイル",
|
"hex.builtin.welcome.start.open_other": "その他のファイル",
|
||||||
|
@ -880,10 +880,10 @@
|
|||||||
"hex.builtin.welcome.plugins.author": "작성자",
|
"hex.builtin.welcome.plugins.author": "작성자",
|
||||||
"hex.builtin.welcome.plugins.desc": "설명",
|
"hex.builtin.welcome.plugins.desc": "설명",
|
||||||
"hex.builtin.welcome.plugins.plugin": "플러그인",
|
"hex.builtin.welcome.plugins.plugin": "플러그인",
|
||||||
"hex.builtin.welcome.safety_backup.delete": "아니요, 삭제",
|
"hex.builtin.popup.safety_backup.delete": "아니요, 삭제",
|
||||||
"hex.builtin.welcome.safety_backup.desc": "이전에 ImHex가 비 정상적으로 종료된 것 같습니다.\n이전의 작업을 복구할까요?",
|
"hex.builtin.popup.safety_backup.desc": "이전에 ImHex가 비 정상적으로 종료된 것 같습니다.\n이전의 작업을 복구할까요?",
|
||||||
"hex.builtin.welcome.safety_backup.restore": "네, 복구",
|
"hex.builtin.popup.safety_backup.restore": "네, 복구",
|
||||||
"hex.builtin.welcome.safety_backup.title": "손상된 데이터 복구",
|
"hex.builtin.popup.safety_backup.title": "손상된 데이터 복구",
|
||||||
"hex.builtin.welcome.start.create_file": "새 파일 생성",
|
"hex.builtin.welcome.start.create_file": "새 파일 생성",
|
||||||
"hex.builtin.welcome.start.open_file": "파일 열기",
|
"hex.builtin.welcome.start.open_file": "파일 열기",
|
||||||
"hex.builtin.welcome.start.open_other": "다른 공급자 열기",
|
"hex.builtin.welcome.start.open_other": "다른 공급자 열기",
|
||||||
|
@ -880,10 +880,10 @@
|
|||||||
"hex.builtin.welcome.plugins.author": "Autor",
|
"hex.builtin.welcome.plugins.author": "Autor",
|
||||||
"hex.builtin.welcome.plugins.desc": "Descrição",
|
"hex.builtin.welcome.plugins.desc": "Descrição",
|
||||||
"hex.builtin.welcome.plugins.plugin": "Plugin",
|
"hex.builtin.welcome.plugins.plugin": "Plugin",
|
||||||
"hex.builtin.welcome.safety_backup.delete": "Não, Apagar",
|
"hex.builtin.popup.safety_backup.delete": "Não, Apagar",
|
||||||
"hex.builtin.welcome.safety_backup.desc": "Ah não, ImHex crashou na ultima vez.\nDeseja restaurar seu trabalho anterior?",
|
"hex.builtin.popup.safety_backup.desc": "Ah não, ImHex crashou na ultima vez.\nDeseja restaurar seu trabalho anterior?",
|
||||||
"hex.builtin.welcome.safety_backup.restore": "Yes, Restaurar",
|
"hex.builtin.popup.safety_backup.restore": "Yes, Restaurar",
|
||||||
"hex.builtin.welcome.safety_backup.title": "Restaurar dados perdidos",
|
"hex.builtin.popup.safety_backup.title": "Restaurar dados perdidos",
|
||||||
"hex.builtin.welcome.start.create_file": "Criar Novo Arquivo",
|
"hex.builtin.welcome.start.create_file": "Criar Novo Arquivo",
|
||||||
"hex.builtin.welcome.start.open_file": "Abrir Arquivo",
|
"hex.builtin.welcome.start.open_file": "Abrir Arquivo",
|
||||||
"hex.builtin.welcome.start.open_other": "Outros Provedores",
|
"hex.builtin.welcome.start.open_other": "Outros Provedores",
|
||||||
|
@ -835,10 +835,10 @@
|
|||||||
"hex.builtin.welcome.plugins.author": "作者",
|
"hex.builtin.welcome.plugins.author": "作者",
|
||||||
"hex.builtin.welcome.plugins.desc": "描述",
|
"hex.builtin.welcome.plugins.desc": "描述",
|
||||||
"hex.builtin.welcome.plugins.plugin": "插件",
|
"hex.builtin.welcome.plugins.plugin": "插件",
|
||||||
"hex.builtin.welcome.safety_backup.delete": "删除",
|
"hex.builtin.popup.safety_backup.delete": "删除",
|
||||||
"hex.builtin.welcome.safety_backup.desc": "糟糕,ImHex 上次崩溃了!\n您想从异常转储中恢复之前的数据吗?",
|
"hex.builtin.popup.safety_backup.desc": "糟糕,ImHex 上次崩溃了!\n您想从异常转储中恢复之前的数据吗?",
|
||||||
"hex.builtin.welcome.safety_backup.restore": "恢复",
|
"hex.builtin.popup.safety_backup.restore": "恢复",
|
||||||
"hex.builtin.welcome.safety_backup.title": "恢复崩溃数据",
|
"hex.builtin.popup.safety_backup.title": "恢复崩溃数据",
|
||||||
"hex.builtin.welcome.start.create_file": "创建新文件",
|
"hex.builtin.welcome.start.create_file": "创建新文件",
|
||||||
"hex.builtin.welcome.start.open_file": "打开文件",
|
"hex.builtin.welcome.start.open_file": "打开文件",
|
||||||
"hex.builtin.welcome.start.open_other": "其他提供器",
|
"hex.builtin.welcome.start.open_other": "其他提供器",
|
||||||
|
@ -880,10 +880,10 @@
|
|||||||
"hex.builtin.welcome.plugins.author": "作者",
|
"hex.builtin.welcome.plugins.author": "作者",
|
||||||
"hex.builtin.welcome.plugins.desc": "說明",
|
"hex.builtin.welcome.plugins.desc": "說明",
|
||||||
"hex.builtin.welcome.plugins.plugin": "外掛程式",
|
"hex.builtin.welcome.plugins.plugin": "外掛程式",
|
||||||
"hex.builtin.welcome.safety_backup.delete": "不用,請刪除",
|
"hex.builtin.popup.safety_backup.delete": "不用,請刪除",
|
||||||
"hex.builtin.welcome.safety_backup.desc": "喔不,ImHex 上次崩潰了。\n您要復原您的工作階段嗎?",
|
"hex.builtin.popup.safety_backup.desc": "喔不,ImHex 上次崩潰了。\n您要復原您的工作階段嗎?",
|
||||||
"hex.builtin.welcome.safety_backup.restore": "好,請復原",
|
"hex.builtin.popup.safety_backup.restore": "好,請復原",
|
||||||
"hex.builtin.welcome.safety_backup.title": "復原遺失資料",
|
"hex.builtin.popup.safety_backup.title": "復原遺失資料",
|
||||||
"hex.builtin.welcome.start.create_file": "建立新檔案",
|
"hex.builtin.welcome.start.create_file": "建立新檔案",
|
||||||
"hex.builtin.welcome.start.open_file": "開啟檔案",
|
"hex.builtin.welcome.start.open_file": "開啟檔案",
|
||||||
"hex.builtin.welcome.start.open_other": "其他提供者",
|
"hex.builtin.welcome.start.open_other": "其他提供者",
|
||||||
|
@ -39,9 +39,7 @@ namespace hex::plugin::builtin {
|
|||||||
ImHexApi::Provider::resetDirty();
|
ImHexApi::Provider::resetDirty();
|
||||||
ImHexApi::System::closeImHex();
|
ImHexApi::System::closeImHex();
|
||||||
},
|
},
|
||||||
[]{
|
[] { }
|
||||||
PopupQuestion::close();
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
} else if (TaskManager::getRunningTaskCount() > 0 || TaskManager::getRunningBackgroundTaskCount() > 0) {
|
} else if (TaskManager::getRunningTaskCount() > 0 || TaskManager::getRunningBackgroundTaskCount() > 0) {
|
||||||
glfwSetWindowShouldClose(window, GLFW_FALSE);
|
glfwSetWindowShouldClose(window, GLFW_FALSE);
|
||||||
@ -59,11 +57,8 @@ namespace hex::plugin::builtin {
|
|||||||
PopupQuestion::open("hex.builtin.popup.close_provider.desc"_lang,
|
PopupQuestion::open("hex.builtin.popup.close_provider.desc"_lang,
|
||||||
[]{
|
[]{
|
||||||
ImHexApi::Provider::remove(ImHexApi::Provider::impl::getClosingProvider(), true);
|
ImHexApi::Provider::remove(ImHexApi::Provider::impl::getClosingProvider(), true);
|
||||||
PopupQuestion::close();
|
|
||||||
},
|
},
|
||||||
[]{
|
[] { }
|
||||||
PopupQuestion::close();
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -88,7 +88,7 @@ namespace hex::plugin::builtin {
|
|||||||
this->getWindowOpenState() = false;
|
this->getWindowOpenState() = false;
|
||||||
|
|
||||||
if (!this->getWindowOpenState() && this->m_restartRequested) {
|
if (!this->getWindowOpenState() && this->m_restartRequested) {
|
||||||
PopupQuestion::open("hex.builtin.view.settings.restart_question"_lang, ImHexApi::System::restartImHex, [] {});
|
PopupQuestion::open("hex.builtin.view.settings.restart_question"_lang, ImHexApi::System::restartImHex, []{});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,12 +67,12 @@ namespace hex::plugin::builtin {
|
|||||||
PopupRestoreBackup() : Popup("hex.builtin.popup.safety_backup.title") { }
|
PopupRestoreBackup() : Popup("hex.builtin.popup.safety_backup.title") { }
|
||||||
|
|
||||||
void drawContent() override {
|
void drawContent() override {
|
||||||
ImGui::TextUnformatted("hex.builtin.welcome.safety_backup.desc"_lang);
|
ImGui::TextUnformatted("hex.builtin.popup.safety_backup.desc"_lang);
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
|
|
||||||
auto width = ImGui::GetWindowWidth();
|
auto width = ImGui::GetWindowWidth();
|
||||||
ImGui::SetCursorPosX(width / 9);
|
ImGui::SetCursorPosX(width / 9);
|
||||||
if (ImGui::Button("hex.builtin.welcome.safety_backup.restore"_lang, ImVec2(width / 3, 0))) {
|
if (ImGui::Button("hex.builtin.popup.safety_backup.restore"_lang, ImVec2(width / 3, 0))) {
|
||||||
ProjectFile::load(s_safetyBackupPath);
|
ProjectFile::load(s_safetyBackupPath);
|
||||||
ProjectFile::clearPath();
|
ProjectFile::clearPath();
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ namespace hex::plugin::builtin {
|
|||||||
}
|
}
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
ImGui::SetCursorPosX(width / 9 * 5);
|
ImGui::SetCursorPosX(width / 9 * 5);
|
||||||
if (ImGui::Button("hex.builtin.welcome.safety_backup.delete"_lang, ImVec2(width / 3, 0))) {
|
if (ImGui::Button("hex.builtin.popup.safety_backup.delete"_lang, ImVec2(width / 3, 0))) {
|
||||||
wolv::io::fs::remove(s_safetyBackupPath);
|
wolv::io::fs::remove(s_safetyBackupPath);
|
||||||
|
|
||||||
Popup::close();
|
Popup::close();
|
||||||
@ -513,16 +513,17 @@ namespace hex::plugin::builtin {
|
|||||||
|
|
||||||
EventManager::subscribe<EventWindowInitialized>([] {
|
EventManager::subscribe<EventWindowInitialized>([] {
|
||||||
// documentation of the value above the setting definition
|
// documentation of the value above the setting definition
|
||||||
int showCheckForUpdates = ContentRegistry::Settings::read("hex.builtin.setting.general", "hex.builtin.setting.general.check_for_updates", 2);
|
auto showCheckForUpdates = ContentRegistry::Settings::read("hex.builtin.setting.general", "hex.builtin.setting.general.check_for_updates", 2);
|
||||||
if (showCheckForUpdates == 2) {
|
if (showCheckForUpdates == 2) {
|
||||||
ContentRegistry::Settings::write("hex.builtin.setting.general", "hex.builtin.setting.general.check_for_updates", 0);
|
ContentRegistry::Settings::write("hex.builtin.setting.general", "hex.builtin.setting.general.check_for_updates", 0);
|
||||||
PopupQuestion::open("hex.builtin.welcome.check_for_updates_text"_lang,
|
PopupQuestion::open("hex.builtin.welcome.check_for_updates_text"_lang,
|
||||||
[] { // yes
|
[] {
|
||||||
ContentRegistry::Settings::write("hex.builtin.setting.general", "hex.builtin.setting.general.check_for_updates", 1);
|
ContentRegistry::Settings::write("hex.builtin.setting.general", "hex.builtin.setting.general.check_for_updates", 1);
|
||||||
ImGui::CloseCurrentPopup();
|
},
|
||||||
}, [] { // no
|
[] {
|
||||||
ImGui::CloseCurrentPopup();
|
|
||||||
});
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user