2 // SaveDumpAsWin.cpp - Save Dump function
6 // JPM = Jean-Paul Mari <djipi.mari@gmail.com>
9 // --- ---------- -----------------------------------------------------------
10 // JPM 04/10/2019 Created this file
16 #include "debugger/SaveDumpAsWin.h"
18 #include "debugger/DBGManager.h"
19 #include "m68000/m68kinterface.h"
24 SaveDumpAsWindow::SaveDumpAsWindow(QWidget
* parent
/*= 0*/): QWidget(parent
, Qt::Dialog
),
25 layout(new QVBoxLayout
),
26 maddress(new QLineEdit
),
28 savedump(new SaveDumpAsInfo
),
29 save(new QPushButton(tr("Save")))
31 setWindowTitle(tr("Save Dump As..."));
33 maddress
->setPlaceholderText("0x<value>, decimal value or symbol name");
34 msize
->setPlaceholderText("0x<value>, or decimal value");
36 QHBoxLayout
* hbox1
= new QHBoxLayout
;
37 hbox1
->addWidget(maddress
);
38 hbox1
->addWidget(msize
);
39 hbox1
->addWidget(save
);
41 layout
->addLayout(hbox1
);
44 connect(save
, SIGNAL(clicked()), this, SLOT(SaveDumpAs()));
49 SaveDumpAsWindow::~SaveDumpAsWindow(void)
55 void SaveDumpAsWindow::keyPressEvent(QKeyEvent
* e
)
57 if (e
->key() == Qt::Key_Escape
)
63 if (e
->key() == Qt::Key_Return
)
72 void SaveDumpAsWindow::SaveDumpAs(void)
74 if (SelectAddress() && SelectSize())
76 QString fileName
= QFileDialog::getSaveFileName(this, tr("Save dump"), "", tr("Save dump files (*.bin)"));
80 if (FILE *File
= fopen((char *)fileName
.toUtf8().data(), "wb"))
82 if (fwrite((void *)&jagMemSpace
[savedump
->Adr
], savedump
->Size
, 1, File
) == 1)
93 bool SaveDumpAsWindow::SelectSize(void)
100 QPalette p
= msize
->palette();
101 newSize
= msize
->text();
103 if ((len
= newSize
.size()))
105 if ((len
> 1) && (newSize
.at(0) == QChar('0')) && (newSize
.at(1) == QChar('x')))
107 s
= newSize
.toUInt(&ok
, 16);
111 s
= newSize
.toUInt(&ok
, 10);
114 // Check validity size
115 if (ok
&& s
&& (s
< 0xffffff))
117 // In all cases, consider size as valid
119 p
.setColor(QPalette::Text
, Qt::darkYellow
);
125 p
.setColor(QPalette::Text
, Qt::red
);
130 // Size has not be set
131 p
.setColor(QPalette::Text
, Qt::darkRed
);
134 msize
->setPalette(p
);
135 return ok
? true : false;
140 // Address can be an hexa, decimal or a symbol name
141 bool SaveDumpAsWindow::SelectAddress(void)
148 QPalette p
= maddress
->palette();
149 newAddress
= maddress
->text();
151 if ((len
= newAddress
.size()))
153 if ((len
> 1) && (newAddress
.at(0) == QChar('0')) && (newAddress
.at(1) == QChar('x')))
155 adr
= newAddress
.toUInt(&ok
, 16);
159 if (!(adr
= DBGManager_GetAdrFromSymbolName(newAddress
.toLatin1().data())))
161 adr
= newAddress
.toUInt(&ok
, 10);
169 // Check validity address
170 if (ok
&& (adr
< 0xffffff))
172 // In all cases, consider address as valid
174 p
.setColor(QPalette::Text
, Qt::darkYellow
);
178 // Address is not valid
179 p
.setColor(QPalette::Text
, Qt::red
);
184 // Address has not be set
185 p
.setColor(QPalette::Text
, Qt::darkRed
);
188 maddress
->setPalette(p
);
189 return ok
? true : false;