mirror of
https://github.com/davidgiven/fluxengine.git
synced 2025-10-24 11:11:02 -07:00
Add a Disk menu.
This commit is contained in:
@@ -35,7 +35,7 @@
|
||||
|
||||
using hex::operator""_lang;
|
||||
|
||||
static std::shared_ptr<const Disk> disk;
|
||||
static std::shared_ptr<const Disk> disk = std::make_shared<Disk>();
|
||||
static std::shared_ptr<Image> wtImage;
|
||||
|
||||
static std::deque<std::function<void()>> pendingTasks;
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <hex/api/content_registry/provider.hpp>
|
||||
#include <hex/api/workspace_manager.hpp>
|
||||
#include <hex/helpers/default_paths.hpp>
|
||||
#include <hex/helpers/fs.hpp>
|
||||
#include <fonts/vscode_icons.hpp>
|
||||
#include <fonts/tabler_icons.hpp>
|
||||
#include <romfs/romfs.hpp>
|
||||
@@ -66,10 +67,106 @@ IMHEX_PLUGIN_SETUP("FluxEngine", "David Given", "FluxEngine integration")
|
||||
hex::WorkspaceManager::switchWorkspace(currentWorkspaceName);
|
||||
});
|
||||
|
||||
hex::ContentRegistry::UserInterface::registerMainMenuItem(
|
||||
"fluxengine.menu.name", 4999);
|
||||
|
||||
auto isReady = []
|
||||
{
|
||||
return !Datastore::isBusy();
|
||||
};
|
||||
|
||||
auto isReadyAndHasImage = []
|
||||
{
|
||||
return !Datastore::isBusy() && Datastore::getDisk()->image;
|
||||
};
|
||||
|
||||
hex::ContentRegistry::UserInterface::addMenuItem(
|
||||
{"hex.builtin.menu.extras", "fluxengine.menu.tools.exerciser"},
|
||||
{"fluxengine.menu.name", "fluxengine.view.controlpanel.readDevice"},
|
||||
ICON_TA_DEVICE_FLOPPY,
|
||||
1000,
|
||||
hex::Shortcut::None,
|
||||
[]
|
||||
{
|
||||
Datastore::beginRead(false);
|
||||
},
|
||||
isReady);
|
||||
|
||||
hex::ContentRegistry::UserInterface::addMenuItem(
|
||||
{"fluxengine.menu.name", "fluxengine.view.controlpanel.rereadBad"},
|
||||
ICON_TA_REPEAT,
|
||||
1100,
|
||||
hex::Shortcut::None,
|
||||
[]
|
||||
{
|
||||
Datastore::beginRead(true);
|
||||
},
|
||||
isReadyAndHasImage);
|
||||
|
||||
hex::ContentRegistry::UserInterface::addMenuItem(
|
||||
{"fluxengine.menu.name", "fluxengine.view.controlpanel.readImage"},
|
||||
ICON_VS_FOLDER_OPENED,
|
||||
1200,
|
||||
hex::Shortcut::None,
|
||||
[]
|
||||
{
|
||||
hex::fs::openFileBrowser(
|
||||
hex::fs::DialogMode::Open, {}, Datastore::readImage);
|
||||
},
|
||||
isReady);
|
||||
|
||||
hex::ContentRegistry::UserInterface::addMenuItem(
|
||||
{"fluxengine.menu.name", "fluxengine.view.controlpanel.createBlank"},
|
||||
ICON_VS_FOLDER_OPENED,
|
||||
1250,
|
||||
hex::Shortcut::None,
|
||||
Datastore::createBlankImage,
|
||||
[]
|
||||
{
|
||||
return !Datastore::isBusy() && Datastore::canFormat();
|
||||
});
|
||||
|
||||
hex::ContentRegistry::UserInterface::addMenuItemSeparator(
|
||||
{"fluxengine.menu.name"}, 1300);
|
||||
|
||||
hex::ContentRegistry::UserInterface::addMenuItem(
|
||||
{"fluxengine.menu.name", "fluxengine.view.controlpanel.writeDevice"},
|
||||
ICON_TA_DEVICE_FLOPPY,
|
||||
1400,
|
||||
hex::Shortcut::None,
|
||||
Datastore::beginWrite,
|
||||
isReadyAndHasImage);
|
||||
|
||||
hex::ContentRegistry::UserInterface::addMenuItem(
|
||||
{"fluxengine.menu.name", "fluxengine.view.controlpanel.writeFlux"},
|
||||
ICON_TA_DOWNLOAD,
|
||||
1500,
|
||||
hex::Shortcut::None,
|
||||
[]
|
||||
{
|
||||
hex::fs::openFileBrowser(
|
||||
hex::fs::DialogMode::Save, {}, Datastore::writeFluxFile);
|
||||
},
|
||||
isReady);
|
||||
|
||||
hex::ContentRegistry::UserInterface::addMenuItem(
|
||||
{"fluxengine.menu.name", "fluxengine.view.controlpanel.writeImage"},
|
||||
ICON_VS_SAVE_ALL,
|
||||
1600,
|
||||
hex::Shortcut::None,
|
||||
[]
|
||||
{
|
||||
hex::fs::openFileBrowser(
|
||||
hex::fs::DialogMode::Save, {}, Datastore::writeImage);
|
||||
},
|
||||
isReadyAndHasImage);
|
||||
|
||||
hex::ContentRegistry::UserInterface::addMenuItemSeparator(
|
||||
{"fluxengine.menu.name"}, 9999);
|
||||
|
||||
hex::ContentRegistry::UserInterface::addMenuItem(
|
||||
{"fluxengine.menu.name", "fluxengine.menu.disk.exerciser"},
|
||||
ICON_TA_TOOLS,
|
||||
2500,
|
||||
10000,
|
||||
hex::Shortcut::None,
|
||||
[]
|
||||
{
|
||||
|
||||
@@ -33,13 +33,13 @@
|
||||
"fluxengine.view.physical.name": "FluxEngine physical sector map",
|
||||
|
||||
"fluxengine.view.controlpanel.name": "FluxEngine controls",
|
||||
"fluxengine.view.controlpanel.readDevice": "Read",
|
||||
"fluxengine.view.controlpanel.writeDevice": "Write",
|
||||
"fluxengine.view.controlpanel.readDevice": "Read from device",
|
||||
"fluxengine.view.controlpanel.writeDevice": "Write to device",
|
||||
"fluxengine.view.controlpanel.writeFlux": "Write flux file",
|
||||
"fluxengine.view.controlpanel.readImage": "Load disk image",
|
||||
"fluxengine.view.controlpanel.writeImage": "Save disk image",
|
||||
"fluxengine.view.controlpanel.rereadBad": "Re-read bad tracks",
|
||||
"fluxengine.view.controlpanel.createBlank": "Empty filesystem",
|
||||
"fluxengine.view.controlpanel.createBlank": "Make empty image",
|
||||
"fluxengine.view.controlpanel.stop": "Stop",
|
||||
|
||||
"fluxengine.view.log.name": "FluxEngine log viewer",
|
||||
@@ -58,5 +58,8 @@
|
||||
"fluxengine.view.status.blankFilesystem": "Creating blank filesystem",
|
||||
|
||||
"fluxengine.messages.writingFluxToFile": "The current configuration is to write to a flux file rather than to hardware. Is this what you intended?",
|
||||
|
||||
"fluxengine.menu.name": "Disk",
|
||||
"fluxengine.menu.disk.exerciser": "Disk exerciser",
|
||||
"fluxengine.menu.workspace.reset": "Reset workspace"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user