mirror of
https://github.com/davidgiven/fluxengine.git
synced 2025-10-31 11:17:01 -07:00
Add a Disk menu.
This commit is contained in:
@@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
using hex::operator""_lang;
|
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::shared_ptr<Image> wtImage;
|
||||||
|
|
||||||
static std::deque<std::function<void()>> pendingTasks;
|
static std::deque<std::function<void()>> pendingTasks;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
#include <hex/api/content_registry/provider.hpp>
|
#include <hex/api/content_registry/provider.hpp>
|
||||||
#include <hex/api/workspace_manager.hpp>
|
#include <hex/api/workspace_manager.hpp>
|
||||||
#include <hex/helpers/default_paths.hpp>
|
#include <hex/helpers/default_paths.hpp>
|
||||||
|
#include <hex/helpers/fs.hpp>
|
||||||
#include <fonts/vscode_icons.hpp>
|
#include <fonts/vscode_icons.hpp>
|
||||||
#include <fonts/tabler_icons.hpp>
|
#include <fonts/tabler_icons.hpp>
|
||||||
#include <romfs/romfs.hpp>
|
#include <romfs/romfs.hpp>
|
||||||
@@ -66,10 +67,106 @@ IMHEX_PLUGIN_SETUP("FluxEngine", "David Given", "FluxEngine integration")
|
|||||||
hex::WorkspaceManager::switchWorkspace(currentWorkspaceName);
|
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::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,
|
ICON_TA_TOOLS,
|
||||||
2500,
|
10000,
|
||||||
hex::Shortcut::None,
|
hex::Shortcut::None,
|
||||||
[]
|
[]
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -33,13 +33,13 @@
|
|||||||
"fluxengine.view.physical.name": "FluxEngine physical sector map",
|
"fluxengine.view.physical.name": "FluxEngine physical sector map",
|
||||||
|
|
||||||
"fluxengine.view.controlpanel.name": "FluxEngine controls",
|
"fluxengine.view.controlpanel.name": "FluxEngine controls",
|
||||||
"fluxengine.view.controlpanel.readDevice": "Read",
|
"fluxengine.view.controlpanel.readDevice": "Read from device",
|
||||||
"fluxengine.view.controlpanel.writeDevice": "Write",
|
"fluxengine.view.controlpanel.writeDevice": "Write to device",
|
||||||
"fluxengine.view.controlpanel.writeFlux": "Write flux file",
|
"fluxengine.view.controlpanel.writeFlux": "Write flux file",
|
||||||
"fluxengine.view.controlpanel.readImage": "Load disk image",
|
"fluxengine.view.controlpanel.readImage": "Load disk image",
|
||||||
"fluxengine.view.controlpanel.writeImage": "Save disk image",
|
"fluxengine.view.controlpanel.writeImage": "Save disk image",
|
||||||
"fluxengine.view.controlpanel.rereadBad": "Re-read bad tracks",
|
"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.controlpanel.stop": "Stop",
|
||||||
|
|
||||||
"fluxengine.view.log.name": "FluxEngine log viewer",
|
"fluxengine.view.log.name": "FluxEngine log viewer",
|
||||||
@@ -58,5 +58,8 @@
|
|||||||
"fluxengine.view.status.blankFilesystem": "Creating blank filesystem",
|
"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.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"
|
"fluxengine.menu.workspace.reset": "Reset workspace"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user