mirror of
https://github.com/markdavidlong/AppleSAWS.git
synced 2025-04-16 16:42:23 +00:00
Added new docking support and viewer widgets for DiskExplorer
This commit is contained in:
parent
cd782f52a9
commit
c4badd2137
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule "ads"]
|
||||
path = ads
|
||||
url = https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System.git
|
@ -6,6 +6,7 @@ MOC_DIR = ./.build
|
||||
UI_DIR = ./.build
|
||||
OBJECTS_DIR = ./.build
|
||||
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
TARGET = AppleSAWS
|
||||
@ -32,6 +33,7 @@ INCLUDEPATH += src/sequence
|
||||
INCLUDEPATH += src/ui/central
|
||||
|
||||
|
||||
include(./ads.pri)
|
||||
|
||||
DEFINES += WS_VIDEO
|
||||
|
||||
|
1
ads
Submodule
1
ads
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 13853573ea51f9f0e682f7d005ca4443398512ae
|
68
ads.pri
Normal file
68
ads.pri
Normal file
@ -0,0 +1,68 @@
|
||||
DEFINES += QT_DEPRECATED_WARNINGS
|
||||
DEFINES += ADS_STATIC
|
||||
|
||||
INCLUDEPATH += ads/src/
|
||||
|
||||
windows {
|
||||
# MinGW
|
||||
*-g++* {
|
||||
QMAKE_CXXFLAGS += -Wall -Wextra -pedantic
|
||||
}
|
||||
# MSVC
|
||||
*-msvc* {
|
||||
QMAKE_CXXFLAGS += /utf-8
|
||||
}
|
||||
}
|
||||
|
||||
RESOURCES += ads/src/ads.qrc
|
||||
|
||||
HEADERS += \
|
||||
ads/src/ads_globals.h \
|
||||
ads/src/DockAreaWidget.h \
|
||||
ads/src/DockAreaTabBar.h \
|
||||
ads/src/DockContainerWidget.h \
|
||||
ads/src/DockManager.h \
|
||||
ads/src/DockWidget.h \
|
||||
ads/src/DockWidgetTab.h \
|
||||
ads/src/DockingStateReader.h \
|
||||
ads/src/FloatingDockContainer.h \
|
||||
ads/src/FloatingDragPreview.h \
|
||||
ads/src/DockOverlay.h \
|
||||
ads/src/DockSplitter.h \
|
||||
ads/src/DockAreaTitleBar_p.h \
|
||||
ads/src/DockAreaTitleBar.h \
|
||||
ads/src/ElidingLabel.h \
|
||||
ads/src/IconProvider.h \
|
||||
ads/src/DockComponentsFactory.h \
|
||||
ads/src/DockFocusController.h
|
||||
|
||||
|
||||
SOURCES += \
|
||||
ads/src/ads_globals.cpp \
|
||||
ads/src/DockAreaWidget.cpp \
|
||||
ads/src/DockAreaTabBar.cpp \
|
||||
ads/src/DockContainerWidget.cpp \
|
||||
ads/src/DockManager.cpp \
|
||||
ads/src/DockWidget.cpp \
|
||||
ads/src/DockingStateReader.cpp \
|
||||
ads/src/DockWidgetTab.cpp \
|
||||
ads/src/FloatingDockContainer.cpp \
|
||||
ads/src/FloatingDragPreview.cpp \
|
||||
ads/src/DockOverlay.cpp \
|
||||
ads/src/DockSplitter.cpp \
|
||||
ads/src/DockAreaTitleBar.cpp \
|
||||
ads/src/ElidingLabel.cpp \
|
||||
ads/src/IconProvider.cpp \
|
||||
ads/src/DockComponentsFactory.cpp \
|
||||
ads/src/DockFocusController.cpp
|
||||
|
||||
|
||||
unix:!macx {
|
||||
HEADERS += ads/src/linux/FloatingWidgetTitleBar.h
|
||||
SOURCES += ads/src/linux/FloatingWidgetTitleBar.cpp
|
||||
QT += x11extras
|
||||
LIBS += -lxcb
|
||||
}
|
||||
|
||||
|
||||
|
@ -1560,7 +1560,6 @@ QTabBar::tab:top {
|
||||
padding-right: 4px;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
min-width: 5px;
|
||||
border-bottom: 3px solid #32414B;
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
@ -2189,3 +2188,7 @@ DEButton {
|
||||
outline: none;
|
||||
min-width: 10px;
|
||||
}
|
||||
|
||||
ads--CElidingLabel {
|
||||
min-width: 80px;
|
||||
}
|
||||
|
@ -36,10 +36,10 @@
|
||||
#include <QStatusBar>
|
||||
#include <QStackedWidget>
|
||||
#include <QScrollArea>
|
||||
|
||||
|
||||
#include <QFile>
|
||||
|
||||
using namespace ads;
|
||||
|
||||
CentralAppWindow::CentralAppWindow(QWidget *parent) : QMainWindow(parent)
|
||||
{
|
||||
QFile f(":qdarkstyle/style.qss");
|
||||
@ -50,25 +50,63 @@ CentralAppWindow::CentralAppWindow(QWidget *parent) : QMainWindow(parent)
|
||||
else {
|
||||
f.open(QFile::ReadOnly | QFile::Text);
|
||||
QTextStream ts(&f);
|
||||
this->setStyleSheet(ts.readAll());
|
||||
// this->setStyleSheet(ts.readAll());
|
||||
this->setStyleSheet("font-family: \"Pr Number 3\"; font-size: 16px");
|
||||
}
|
||||
|
||||
initCentralWidget();
|
||||
createActions();
|
||||
initMenuBar();
|
||||
initToolBars();
|
||||
initDockWidgets();
|
||||
initStatusBar();
|
||||
initCentralWidget();
|
||||
|
||||
}
|
||||
|
||||
void CentralAppWindow::createActions()
|
||||
{
|
||||
m_quitAction = new QAction(QIcon(":/images/redblob.png"),tr("E&xit"));
|
||||
m_quitAction = new QAction(QIcon(":/images/redblob.png"),tr("&Quit"));
|
||||
connect(m_quitAction, &QAction::triggered,
|
||||
qApp, &QApplication::quit);
|
||||
|
||||
m_reference_action = new QAction(QIcon(":/images/redblob.png"),tr("&References"));
|
||||
m_reference_action->setCheckable(true);
|
||||
// connect(m_reference_action, &QAction::triggered,
|
||||
// qApp, &QApplication::xxxxxx);
|
||||
|
||||
m_utils_action = new QAction(QIcon(":/images/redblob.png"),tr("&Utils"));
|
||||
m_utils_action->setCheckable(true);
|
||||
// connect(m_reference_action, &QAction::triggered,
|
||||
// qApp, &QApplication::xxxxxx);
|
||||
|
||||
m_image_lib_action = new QAction(QIcon(":/images/redblob.png"),tr("&Disk Image\nLibrary"));
|
||||
m_image_lib_action->setCheckable(true);
|
||||
// connect(m_reference_action, &QAction::triggered,
|
||||
// qApp, &QApplication::xxxxxx);
|
||||
|
||||
m_disk_explorer_action= new QAction(QIcon(":/images/redblob.png"),tr("Disk Image\n&Explorer"));
|
||||
m_disk_explorer_action->setCheckable(true);
|
||||
// connect(m_reference_action, &QAction::triggered,
|
||||
// qApp, &QApplication::xxxxxx);
|
||||
|
||||
m_projects_action = new QAction(QIcon(":/images/redblob.png"),tr("&Projects"));
|
||||
m_projects_action->setCheckable(true);
|
||||
// connect(m_reference_action, &QAction::triggered,
|
||||
// qApp, &QApplication::xxxxxx);
|
||||
|
||||
m_tool_action_group = new QActionGroup(this);
|
||||
m_tool_action_group->addAction(m_reference_action);
|
||||
m_tool_action_group->addAction(m_utils_action);
|
||||
m_tool_action_group->addAction(m_image_lib_action);
|
||||
m_tool_action_group->addAction(m_disk_explorer_action);
|
||||
m_tool_action_group->addAction(m_projects_action);
|
||||
m_tool_action_group->setExclusive(true);
|
||||
m_disk_explorer_action->toggle();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
void CentralAppWindow::initMenuBar()
|
||||
{
|
||||
auto filemenu = menuBar()->addMenu(tr("&File"));
|
||||
@ -87,34 +125,27 @@ void CentralAppWindow::initToolBars()
|
||||
m_mainToolBar = new MainAppToolbar(this);
|
||||
m_mainToolBar->setIconSize(QSize(64,64));
|
||||
m_mainToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
|
||||
m_mainToolBar->addAction(m_quitAction);
|
||||
m_mainToolBar->setFont(QFont("Ariel",14));
|
||||
// m_mainToolBar->addAction(m_quitAction);
|
||||
|
||||
m_mainToolBar->addAction(m_reference_action);
|
||||
m_mainToolBar->addAction(m_utils_action);
|
||||
m_mainToolBar->addAction(m_image_lib_action);
|
||||
m_mainToolBar->addAction(m_disk_explorer_action);
|
||||
m_mainToolBar->addAction(m_projects_action);
|
||||
|
||||
addToolBar(Qt::LeftToolBarArea, m_mainToolBar);
|
||||
|
||||
}
|
||||
|
||||
void CentralAppWindow::initDockWidgets()
|
||||
{
|
||||
QDockWidget *container = new QDockWidget(this);
|
||||
container->setMinimumWidth(200);
|
||||
container->setFeatures(QDockWidget::DockWidgetMovable);
|
||||
|
||||
m_project_area = new QWidget(container);
|
||||
m_project_area->setMinimumSize(300,200);
|
||||
|
||||
m_directory_area = new Dos33DiskTreeView(container);
|
||||
m_directory_area = new Dos33DiskTreeView();
|
||||
m_directory_area->setFont(QFont("Pr Number 3", 12));
|
||||
m_directory_area->setMinimumSize(300,200);
|
||||
|
||||
QSplitter *split = new QSplitter(container);
|
||||
container->setWidget(split);
|
||||
split->setOrientation(Qt::Vertical);
|
||||
split->addWidget(m_directory_area);
|
||||
split->addWidget(m_project_area);
|
||||
split->setStretchFactor(0,1);
|
||||
split->setStretchFactor(1,1);
|
||||
split->setSizes(QList<int>({4000, 4000}));
|
||||
|
||||
|
||||
Dos33DiskImage *img = new Dos33DiskImage("c:/develop/git/AppleSAWS/disk-images/ApplesoftToolkit.dsk");
|
||||
|
||||
@ -128,37 +159,73 @@ void CentralAppWindow::initDockWidgets()
|
||||
model->addDiskImage(img);
|
||||
m_directory_area->setModel(model);
|
||||
|
||||
addDockWidget(Qt::LeftDockWidgetArea,container);
|
||||
|
||||
auto DiskImageDockWidget = new CDockWidget("Disk Images");
|
||||
DiskImageDockWidget->setWidget(m_directory_area);
|
||||
DiskImageDockWidget->setMinimumSizeHintMode(CDockWidget::MinimumSizeHintFromDockWidget);
|
||||
DiskImageDockWidget->resize(250, 150);
|
||||
DiskImageDockWidget->setMinimumSize(200,150);
|
||||
auto DiskImageWidgetArea = DockManager->addDockWidget(DockWidgetArea::LeftDockWidgetArea, DiskImageDockWidget);
|
||||
//DockManager->addDockWidget(DockWidgetArea::BottomDockWidgetArea, TableDockWidget, TableArea);
|
||||
// ui->menuView->addAction(TableDockWidget->toggleViewAction());
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
QDockWidget *stb = new QDockWidget(this);
|
||||
stb->setMinimumWidth(200);
|
||||
stb->setFeatures(QDockWidget::DockWidgetMovable);
|
||||
// stb->setLayout(new QGridLayout());
|
||||
|
||||
m_toolbox = new SequenceToolBox(this);
|
||||
|
||||
auto SequenceDockWidget = new CDockWidget("Sequences");
|
||||
SequenceDockWidget->setWidget(m_toolbox);
|
||||
SequenceDockWidget->setMinimumSizeHintMode(CDockWidget::MinimumSizeHintFromDockWidget);
|
||||
SequenceDockWidget->resize(250, 150);
|
||||
SequenceDockWidget->setMinimumSize(200,150);
|
||||
auto SequenceWidgetArea = DockManager->addDockWidget(DockWidgetArea::RightDockWidgetArea, SequenceDockWidget);
|
||||
|
||||
|
||||
addDockWidget(Qt::RightDockWidgetArea,stb);
|
||||
|
||||
|
||||
}
|
||||
|
||||
void CentralAppWindow::initCentralWidget()
|
||||
{
|
||||
CDockManager::setConfigFlag(CDockManager::OpaqueSplitterResize, true);
|
||||
CDockManager::setConfigFlag(CDockManager::XmlCompressionEnabled, false);
|
||||
CDockManager::setConfigFlag(CDockManager::FocusHighlighting, true);
|
||||
CDockManager::setConfigFlag(CDockManager::TabCloseButtonIsToolButton, true);
|
||||
|
||||
DockManager = new CDockManager(this);
|
||||
DockManager->setStyleSheet("");
|
||||
|
||||
m_central_stack = new QStackedWidget(this);
|
||||
QScrollArea *sa = new QScrollArea(m_central_stack);
|
||||
sa->setWidgetResizable(true);
|
||||
m_central_stack->addWidget(sa);
|
||||
|
||||
setCentralWidget(m_central_stack);
|
||||
CentralDockWidget = new CDockWidget("CentralWidget");
|
||||
CentralDockWidget->setWidget(m_central_stack);
|
||||
// CentralDockWidget->setFeature(CDockWidget::NoTab,true);
|
||||
m_central_dock_area = DockManager->setCentralWidget(CentralDockWidget);
|
||||
|
||||
Dos33DiskImage *img = new Dos33DiskImage("c:/develop/git/AppleSAWS/disk-images/ApplesoftToolkit.dsk");
|
||||
Dos33DiskImage *img = new Dos33DiskImage("c:/develop/git/AppleSAWS/disk-images/ApplesoftToolkit.dsk");
|
||||
auto dew = new DiskExplorerMapWidget(img->tracks(),img->sectorsPerTrack());
|
||||
dew->setDisk(img);
|
||||
sa->setWidget(dew);
|
||||
// m_central_stack->addWidget(dew);
|
||||
//new SequenceViewer()
|
||||
|
||||
auto VWSDockWidget = new CDockWidget("Sector Contents");
|
||||
VWSDockWidget->setWidget(dew->generateViewWidgetStack());
|
||||
auto VWSWidgetArea = DockManager->addDockWidget(DockWidgetArea::BottomDockWidgetArea, VWSDockWidget);
|
||||
|
||||
auto KeyDockWidget = new CDockWidget("Key");
|
||||
auto keywidget = dew->makeKeyWidget();
|
||||
keywidget->setMaximumWidth(240);
|
||||
KeyDockWidget->setWidget(keywidget);
|
||||
KeyDockWidget->setMinimumSizeHintMode(CDockWidget::MinimumSizeHintFromDockWidget);
|
||||
// KeyDockWidget->resize(250, 150);
|
||||
// KeyDockWidget->setMinimumSize(200,150);
|
||||
auto DiskImageWidgetArea =
|
||||
DockManager->addDockWidget(DockWidgetArea::LeftDockWidgetArea, KeyDockWidget, m_central_dock_area);
|
||||
|
||||
|
||||
}
|
||||
|
@ -30,6 +30,12 @@ class QStatusBar;
|
||||
class SequenceToolBox;
|
||||
class QStackedWidget;
|
||||
|
||||
#include "DockAreaWidget.h"
|
||||
#include "DockWidget.h"
|
||||
#include "DockManager.h"
|
||||
#include <QActionGroup>
|
||||
|
||||
|
||||
class CentralAppWindow : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
@ -47,6 +53,12 @@ private:
|
||||
|
||||
private:
|
||||
QAction *m_quitAction;
|
||||
QAction *m_reference_action;
|
||||
QAction *m_utils_action;
|
||||
QAction *m_image_lib_action;
|
||||
QAction *m_disk_explorer_action;
|
||||
QAction *m_projects_action;
|
||||
QActionGroup *m_tool_action_group;
|
||||
|
||||
MainAppToolbar *m_mainToolBar;
|
||||
QTreeView *m_directory_area;
|
||||
@ -55,6 +67,10 @@ private:
|
||||
|
||||
SequenceToolBox *m_toolbox;
|
||||
|
||||
ads::CDockManager *DockManager;
|
||||
ads::CDockWidget *CentralDockWidget;
|
||||
ads::CDockAreaWidget *m_central_dock_area;
|
||||
|
||||
QStackedWidget *m_central_stack;
|
||||
};
|
||||
|
||||
|
@ -134,7 +134,7 @@ void DiskExplorer::initUi()
|
||||
// m_hdv = new HexDumpViewer(this, 10);
|
||||
// frameLayout->addWidget(m_hdv);
|
||||
|
||||
m_vws = new ViewWidgetStack(this);
|
||||
m_vws = m_demw->generateViewWidgetStack(); // new ViewWidgetStack(this);
|
||||
frameLayout->addWidget(m_vws);
|
||||
|
||||
m_gridLayout->setColumnStretch(0,4);
|
||||
@ -155,8 +155,8 @@ void DiskExplorer::initUi()
|
||||
|
||||
connect(m_cw, &CatalogWidget::openWithDefaultViewer,
|
||||
this, &DiskExplorer::handleDiskItemSelectedDefaultOpen);
|
||||
connect(m_demw, &DiskExplorerMapWidget::showSectorData,
|
||||
this, &DiskExplorer::handleShowSectorData);
|
||||
// connect(m_demw, &DiskExplorerMapWidget::showSectorData,
|
||||
// this, &DiskExplorer::handleShowSectorData);
|
||||
|
||||
QStatusBar *statusBar = new QStatusBar(this);
|
||||
setStatusBar(statusBar);
|
||||
@ -179,6 +179,8 @@ void DiskExplorer::unloadDiskFile()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void DiskExplorer::loadDiskFile(QString filename)
|
||||
{
|
||||
if (m_disk) {
|
||||
@ -202,6 +204,7 @@ void DiskExplorer::loadDiskFile(QString filename)
|
||||
|
||||
void DiskExplorer::handleShowSectorData(QByteArray /*data*/, int track, int sector, QVariant metadata)
|
||||
{
|
||||
return;
|
||||
|
||||
ViewWidgetStack::PreferredViewer viewer =
|
||||
ViewWidgetStack::PreferredViewer::DontCare;
|
||||
|
@ -65,6 +65,7 @@ private slots:
|
||||
void setDiskToolsVisible(bool visible);
|
||||
|
||||
void handleViewerClosing(ViewerBase *viewer);
|
||||
|
||||
protected:
|
||||
void initUi();
|
||||
|
||||
|
@ -157,6 +157,8 @@ void DiskExplorerMapWidget::handleButtonCheck(int track, int sector, bool checke
|
||||
Sector sec = m_disk->getSector(track,sector);
|
||||
QByteArray *data = sec.rawData();
|
||||
emit showSectorData(*data,track,sector,QVariant((int) m_roles[TSPair(track,sector)]));
|
||||
emit showSector(&sec,track,sector,m_roles[TSPair(track,sector)]);
|
||||
|
||||
m_trackSectorLabel->setText(
|
||||
QString("Track: %1 Sector: %2 (%3)")
|
||||
.arg(track)
|
||||
@ -165,6 +167,8 @@ void DiskExplorerMapWidget::handleButtonCheck(int track, int sector, bool checke
|
||||
}
|
||||
else{
|
||||
emit showSectorData(QByteArray(),-1,-1,QVariant(-1));
|
||||
emit showSector(nullptr, -1, -1, DiskSectorRole::Unknown);
|
||||
|
||||
m_trackSectorLabel->setText("No Track/Sector selected");
|
||||
}
|
||||
|
||||
@ -249,7 +253,7 @@ QGroupBox *DiskExplorerMapWidget::makeKeyWidget()
|
||||
{
|
||||
int idx = 0;
|
||||
QGroupBox *groupbox= new QGroupBox();
|
||||
groupbox->setTitle("Key");
|
||||
//groupbox->setTitle("Key");
|
||||
QGridLayout *layout = new QGridLayout();
|
||||
layout->setVerticalSpacing(0);
|
||||
layout->setHorizontalSpacing(0);
|
||||
@ -273,6 +277,15 @@ QGroupBox *DiskExplorerMapWidget::makeKeyWidget()
|
||||
return groupbox;
|
||||
}
|
||||
|
||||
ViewWidgetStack *DiskExplorerMapWidget::generateViewWidgetStack()
|
||||
{
|
||||
ViewWidgetStack *vws = new ViewWidgetStack();
|
||||
vws->setSector(nullptr);
|
||||
connect(this, &DiskExplorerMapWidget::showSector,
|
||||
vws, &ViewWidgetStack::handleShowSectorData);
|
||||
return vws;
|
||||
}
|
||||
|
||||
DEButton *DiskExplorerMapWidget::buttonAt(int track, int sector)
|
||||
{
|
||||
//qDebug() << "Button At:" << track << "," << sector;
|
||||
|
@ -20,6 +20,7 @@
|
||||
*****************************************************************************/
|
||||
|
||||
#include "dos33diskimage.h"
|
||||
#include "viewwidgetstack.h"
|
||||
|
||||
#include <QWidget>
|
||||
#include <QPair>
|
||||
@ -30,6 +31,7 @@
|
||||
#include <QLabel>
|
||||
#include <QToolButton>
|
||||
|
||||
|
||||
class DEButton : public QToolButton
|
||||
{
|
||||
Q_OBJECT
|
||||
@ -112,7 +114,8 @@ private:
|
||||
"} "
|
||||
" "
|
||||
"DEButton:checked { "
|
||||
" font: bold italic 11px; "
|
||||
// " font: bold italic 11px; "
|
||||
" font: bold 11px; "
|
||||
"}"
|
||||
).arg(m_fgColor)
|
||||
.arg(m_backgroundColor);
|
||||
@ -168,9 +171,12 @@ public:
|
||||
|
||||
QGroupBox *makeKeyWidget();
|
||||
QWidget *getStatusWidget() const { return m_statusWidget; }
|
||||
ViewWidgetStack *generateViewWidgetStack();
|
||||
|
||||
|
||||
signals:
|
||||
void showSectorData(QByteArray data, int track, int sector, QVariant metadata);
|
||||
void showSector(Sector *sec, int track, int sector, DiskSectorRole role);
|
||||
|
||||
public slots:
|
||||
void handleButtonCheck(int track, int sector, bool checked);
|
||||
@ -206,6 +212,8 @@ protected:
|
||||
int &buttonNumber, int &tslCount);
|
||||
DiskSectorRole getFileTypeFromID(QString id);
|
||||
void checkForUsedButUnknown(TSPair vtoc = TSPair(17,0));
|
||||
|
||||
|
||||
private:
|
||||
|
||||
QMap<int, QMap<int,DEButton*> > m_buttons;
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "vtocview.h"
|
||||
#include "catalogsectorview.h"
|
||||
#include "tslistview.h"
|
||||
#include "DiskExplorerMapWidget.h"
|
||||
|
||||
ViewWidgetStack::ViewWidgetStack(QWidget *parent) : QTabWidget(parent)
|
||||
{
|
||||
@ -77,3 +78,34 @@ void ViewWidgetStack::makeWidgets()
|
||||
|
||||
setCurrentWidget(m_hdv);
|
||||
}
|
||||
|
||||
void ViewWidgetStack::handleShowSectorData(Sector *data, int track,
|
||||
int sector, DiskSectorRole role)
|
||||
{
|
||||
|
||||
ViewWidgetStack::PreferredViewer viewer =
|
||||
ViewWidgetStack::PreferredViewer::DontCare;
|
||||
|
||||
bool USE_SPECIFIC_VIEWER = true; // Hook for later allowing the disuse of
|
||||
if (USE_SPECIFIC_VIEWER) // default viewer switching
|
||||
{
|
||||
if (role == DiskSectorRole::VTOC)
|
||||
{
|
||||
viewer = ViewWidgetStack::PreferredViewer::VTOC;
|
||||
}
|
||||
else if (role == DiskSectorRole::CatalogSector)
|
||||
{
|
||||
viewer = ViewWidgetStack::PreferredViewer::CatalogSector;
|
||||
}
|
||||
else if (role == DiskSectorRole::TSList)
|
||||
{
|
||||
viewer = ViewWidgetStack::PreferredViewer::TSList;
|
||||
}
|
||||
else
|
||||
{
|
||||
viewer = ViewWidgetStack::PreferredViewer::HexDump;
|
||||
}
|
||||
}
|
||||
|
||||
setSector(data, viewer);
|
||||
}
|
||||
|
@ -28,6 +28,7 @@ class HexDumpViewer;
|
||||
class VTOCView;
|
||||
class CatalogSectorView;
|
||||
class TSListView;
|
||||
enum class DiskSectorRole;
|
||||
|
||||
class ViewWidgetStack : public QTabWidget
|
||||
{
|
||||
@ -48,6 +49,10 @@ public:
|
||||
public slots:
|
||||
void setSector(Sector *sec, PreferredViewer viewer = PreferredViewer::DontCare);
|
||||
|
||||
void handleShowSectorData(Sector *data, int track, int sector, DiskSectorRole role);
|
||||
|
||||
|
||||
|
||||
private:
|
||||
void makeWidgets();
|
||||
|
||||
|
@ -52,7 +52,8 @@ void VTOCView::setSector(Sector *sec)
|
||||
|
||||
ui->m_lastAllocTrackLabel->setText(QString("%1").arg(v.lastTrackAllocated()));
|
||||
|
||||
ui->m_allocDirLabel->setText(QString("%1").arg(v.directionOfAllocation()));
|
||||
ui->m_allocDirLabel->setText(QString("%1 %2").arg(v.directionOfAllocation())
|
||||
.arg((v.directionOfAllocation()>0)?"==>":"<=="));
|
||||
|
||||
ui->m_tracksPerDiskLabel->setText(QString("%1").arg(v.tracksPerDisk()));
|
||||
|
||||
@ -90,7 +91,7 @@ void VTOCView::setSector(Sector *sec)
|
||||
ui->m_usageTextBrowser->setText("");
|
||||
ui->m_usageTextBrowser->setWordWrapMode(QTextOption::NoWrap);
|
||||
auto format = ui->m_usageTextBrowser->currentCharFormat();
|
||||
format.setFont(QFont("courier new",6));
|
||||
// format.setFont(QFont("courier new"/*,6*/));
|
||||
ui->m_usageTextBrowser->setCurrentCharFormat(format);
|
||||
ui->m_usageTextBrowser->insertPlainText(usage);
|
||||
|
||||
@ -115,8 +116,3 @@ void VTOCView::setSector(Sector *sec)
|
||||
|
||||
|
||||
}
|
||||
|
||||
QString VTOCView::makeUsage()
|
||||
{
|
||||
return QString();
|
||||
}
|
||||
|
@ -39,8 +39,6 @@ public:
|
||||
|
||||
void setSector(Sector *sec);
|
||||
|
||||
protected:
|
||||
QString makeUsage();
|
||||
|
||||
private:
|
||||
Ui::VTOCView *ui;
|
||||
|
@ -19,7 +19,7 @@
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<widget class="QWidget" name="">
|
||||
<widget class="QWidget" name="layoutWidget">
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="labelx">
|
||||
@ -105,28 +105,28 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<item row="9" column="0">
|
||||
<widget class="QLabel" name="label_12">
|
||||
<property name="text">
|
||||
<string>Sectors/Track</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<item row="9" column="1">
|
||||
<widget class="QLabel" name="m_sectorsPerTrackLabel">
|
||||
<property name="text">
|
||||
<string>--</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="0">
|
||||
<item row="10" column="0">
|
||||
<widget class="QLabel" name="label_14">
|
||||
<property name="text">
|
||||
<string>Bytes/Sector</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="1">
|
||||
<item row="10" column="1">
|
||||
<widget class="QLabel" name="m_bytesPerSectorLabel">
|
||||
<property name="text">
|
||||
<string>--</string>
|
||||
@ -160,9 +160,35 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="11" column="0">
|
||||
<spacer name="verticalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="">
|
||||
<widget class="QWidget" name="layoutWidget">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_16">
|
||||
|
@ -19,8 +19,6 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
#include "genericfile.h"
|
||||
#include "fileviewerinterface.h"
|
||||
|
||||
@ -57,6 +55,7 @@ public slots:
|
||||
|
||||
protected:
|
||||
void setTextFont(const QFont &font, int forcedFontSize = -1);
|
||||
|
||||
private:
|
||||
void setText(QString text);
|
||||
void setData(QByteArray data);
|
||||
|
@ -30,6 +30,9 @@
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="lineWrapMode">
|
||||
<enum>QTextEdit::NoWrap</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
|
Loading…
x
Reference in New Issue
Block a user