| 111 | } |
| 112 | |
| 113 | void importIPS32Patch() { |
| 114 | fs::openFileBrowser(fs::DialogMode::Open, {}, [](const auto &path) { |
| 115 | TaskManager::createTask("hex.ui.common.processing", TaskManager::NoProgress, [path](auto &task) { |
| 116 | auto patchData = wolv::io::File(path, wolv::io::File::Mode::Read).readVector(); |
| 117 | auto patch = Patches::fromIPS32Patch(patchData); |
| 118 | if (!patch.has_value()) { |
| 119 | handleIPSError(patch.error()); |
| 120 | return; |
| 121 | } |
| 122 | |
| 123 | task.setMaxValue(patch->get().size()); |
| 124 | |
| 125 | auto provider = ImHexApi::Provider::get(); |
| 126 | |
| 127 | for (auto &[address, value] : patch->get()) { |
| 128 | provider->write(address, &value, sizeof(value)); |
| 129 | task.increment(); |
| 130 | } |
| 131 | |
| 132 | provider->getUndoStack().groupOperations(patch->get().size(), "hex.builtin.undo_operation.patches"); |
| 133 | }); |
| 134 | }); |
| 135 | } |
| 136 | |
| 137 | void importModifiedFile() { |
| 138 | fs::openFileBrowser(fs::DialogMode::Open, {}, [](const auto &path) { |
nothing calls this directly
no test coverage detected