Added hooks to Qt GUI for importing of ld65 debug symbol files.
This commit is contained in:
parent
c1e7465fe5
commit
07617997f4
|
@ -7,6 +7,7 @@
|
|||
#include "debug.h"
|
||||
#include "fceu.h"
|
||||
#include "cart.h"
|
||||
#include "ld65dbg.h"
|
||||
|
||||
#ifdef __QT_DRIVER__
|
||||
#include "Qt/ConsoleUtilities.h"
|
||||
|
@ -773,6 +774,7 @@ int debugSymbolTable_t::loadGameSymbols(void)
|
|||
|
||||
return 0;
|
||||
}
|
||||
//--------------------------------------------------------------
|
||||
int debugSymbolTable_t::addSymbolAtBankOffset(int bank, int ofs, const char *name, const char *comment)
|
||||
{
|
||||
int result = -1;
|
||||
|
@ -909,3 +911,14 @@ const char *debugSymbolTable_t::errorMessage(void)
|
|||
return dbgSymTblErrMsg;
|
||||
}
|
||||
//--------------------------------------------------------------
|
||||
int debugSymbolTable_t::ld65LoadDebugFile( const char *dbgFilePath )
|
||||
{
|
||||
ld65::database db;
|
||||
|
||||
if ( db.dbgFileLoad( dbgFilePath ) )
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
//--------------------------------------------------------------
|
||||
|
|
|
@ -153,6 +153,8 @@ class debugSymbolTable_t
|
|||
|
||||
const char *errorMessage(void);
|
||||
|
||||
int ld65LoadDebugFile( const char *dbgFilePath );
|
||||
|
||||
private:
|
||||
std::map <int, debugSymbolPage_t*> pageMap;
|
||||
FCEU::mutex *cs;
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include <QGridLayout>
|
||||
#include <QRadioButton>
|
||||
#include <QInputDialog>
|
||||
#include <QFileDialog>
|
||||
#include <QFontDialog>
|
||||
#include <QMessageBox>
|
||||
#include <QMenuBar>
|
||||
|
@ -43,6 +44,7 @@
|
|||
#include <QActionGroup>
|
||||
#include <QApplication>
|
||||
#include <QGuiApplication>
|
||||
#include <QStandardPaths>
|
||||
#include <QSettings>
|
||||
#include <QToolTip>
|
||||
#include <QWindow>
|
||||
|
@ -262,6 +264,83 @@ void ConsoleDebugger::closeWindow(void)
|
|||
deleteLater();
|
||||
}
|
||||
//----------------------------------------------------------------------------
|
||||
void ConsoleDebugger::ld65ImportDebug(void)
|
||||
{
|
||||
int ret, useNativeFileDialogVal;
|
||||
QString filename;
|
||||
std::string last;
|
||||
const char *romPath;
|
||||
QFileDialog dialog(this, tr("Open ld65 Debug File") );
|
||||
QList<QUrl> urls;
|
||||
QDir d;
|
||||
|
||||
const QStringList filters({
|
||||
"dbg files (*.dbg *.DBG)",
|
||||
"Any files (*)"
|
||||
});
|
||||
|
||||
urls << QUrl::fromLocalFile( QDir::rootPath() );
|
||||
urls << QUrl::fromLocalFile(QStandardPaths::standardLocations(QStandardPaths::HomeLocation).first());
|
||||
urls << QUrl::fromLocalFile(QStandardPaths::standardLocations(QStandardPaths::DesktopLocation).first());
|
||||
urls << QUrl::fromLocalFile(QStandardPaths::standardLocations(QStandardPaths::DownloadLocation).first());
|
||||
urls << QUrl::fromLocalFile( QDir( FCEUI_GetBaseDirectory() ).absolutePath() );
|
||||
|
||||
romPath = getRomFile();
|
||||
|
||||
if ( romPath != nullptr )
|
||||
{
|
||||
std::string dir;
|
||||
|
||||
getDirFromFile( romPath, dir);
|
||||
|
||||
d.setPath(dir.c_str());
|
||||
|
||||
if ( d.exists() )
|
||||
{
|
||||
urls << QUrl::fromLocalFile( d.absolutePath() );
|
||||
|
||||
dialog.setDirectory( tr(dir.c_str()) );
|
||||
}
|
||||
}
|
||||
|
||||
dialog.setFileMode(QFileDialog::ExistingFile);
|
||||
|
||||
dialog.setNameFilters( filters );
|
||||
|
||||
dialog.setViewMode(QFileDialog::List);
|
||||
dialog.setFilter( QDir::AllEntries | QDir::AllDirs | QDir::Hidden );
|
||||
dialog.setLabelText( QFileDialog::Accept, tr("Open") );
|
||||
|
||||
// Check config option to use native file dialog or not
|
||||
g_config->getOption ("SDL.UseNativeFileDialog", &useNativeFileDialogVal);
|
||||
|
||||
dialog.setOption(QFileDialog::DontUseNativeDialog, !useNativeFileDialogVal);
|
||||
dialog.setSidebarUrls(urls);
|
||||
|
||||
ret = dialog.exec();
|
||||
|
||||
if ( ret )
|
||||
{
|
||||
QStringList fileList;
|
||||
fileList = dialog.selectedFiles();
|
||||
|
||||
if ( fileList.size() > 0 )
|
||||
{
|
||||
filename = fileList[0];
|
||||
}
|
||||
}
|
||||
|
||||
if ( filename.isNull() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
//qDebug() << "selected file path : " << filename.toUtf8();
|
||||
|
||||
debugSymbolTable.ld65LoadDebugFile( filename.toStdString().c_str() );
|
||||
|
||||
return;
|
||||
}
|
||||
//----------------------------------------------------------------------------
|
||||
QMenuBar *ConsoleDebugger::buildMenuBar(void)
|
||||
{
|
||||
QMenu *fileMenu, *viewMenu, *debugMenu,
|
||||
|
@ -283,6 +362,14 @@ QMenuBar *ConsoleDebugger::buildMenuBar(void)
|
|||
// File
|
||||
fileMenu = menuBar->addMenu(tr("&File"));
|
||||
|
||||
// File -> Import ld65 dbg
|
||||
act = new QAction(tr("&Import ld65 dbg file"), this);
|
||||
//act->setShortcut(QKeySequence::Close);
|
||||
act->setStatusTip(tr("Import ld65 Debug File"));
|
||||
connect(act, SIGNAL(triggered()), this, SLOT(ld65ImportDebug(void)) );
|
||||
|
||||
fileMenu->addAction(act);
|
||||
|
||||
// File -> Close
|
||||
act = new QAction(tr("&Close"), this);
|
||||
act->setShortcut(QKeySequence::Close);
|
||||
|
|
|
@ -557,6 +557,7 @@ class ConsoleDebugger : public QDialog
|
|||
void asmViewCtxMenuRunToCursor(void);
|
||||
void moveTab( QWidget *w, int row, int column);
|
||||
private slots:
|
||||
void ld65ImportDebug(void);
|
||||
void updatePeriodic(void);
|
||||
void hbarChanged(int value);
|
||||
void vbarChanged(int value);
|
||||
|
|
|
@ -26,4 +26,11 @@ namespace ld65
|
|||
{
|
||||
}
|
||||
//---------------------------------------------------------------------------------------------------
|
||||
int database::dbgFileLoad( const char *dbgFilePath )
|
||||
{
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
//---------------------------------------------------------------------------------------------------
|
||||
}
|
||||
|
|
|
@ -64,6 +64,8 @@ namespace ld65
|
|||
public:
|
||||
database(void);
|
||||
|
||||
int dbgFileLoad( const char *dbgFilePath );
|
||||
|
||||
private:
|
||||
std::map<int, scope*> scopeMap;
|
||||
std::map<int, segment*> segmentMap;
|
||||
|
|
Loading…
Reference in New Issue