修复Bug,增加功能
This commit is contained in:
parent
520255e402
commit
f19cc61370
|
@ -6,10 +6,10 @@ MetaReplaceCommand::MetaReplaceCommand(QHexMetadata *hexmeta,
|
||||||
QUndoCommand *parent)
|
QUndoCommand *parent)
|
||||||
: MetaCommand(hexmeta, meta, parent), m_old(oldmeta) {}
|
: MetaCommand(hexmeta, meta, parent), m_old(oldmeta) {}
|
||||||
|
|
||||||
void MetaReplaceCommand::redo() {
|
void MetaReplaceCommand::undo() {
|
||||||
m_hexmeta->modifyMetadata(m_meta, m_old, true);
|
m_hexmeta->modifyMetadata(m_meta, m_old, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MetaReplaceCommand::undo() {
|
void MetaReplaceCommand::redo() {
|
||||||
m_hexmeta->modifyMetadata(m_old, m_meta, true);
|
m_hexmeta->modifyMetadata(m_old, m_meta, true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ bool QHexDocument::setKeepSize(bool b) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QHexDocument::isModified() { return !m_undostack.isClean(); }
|
bool QHexDocument::isSaved() { return m_undostack.isClean(); }
|
||||||
|
|
||||||
void QHexDocument::getBookMarks(QList<BookMarkStruct> &bookmarks) {
|
void QHexDocument::getBookMarks(QList<BookMarkStruct> &bookmarks) {
|
||||||
bookmarks.clear();
|
bookmarks.clear();
|
||||||
|
@ -133,10 +133,21 @@ QHexDocument::QHexDocument(QHexBuffer *buffer, bool readonly, QObject *parent)
|
||||||
connect(m_metadata, &QHexMetadata::metadataCleared, this,
|
connect(m_metadata, &QHexMetadata::metadataCleared, this,
|
||||||
&QHexDocument::documentChanged);
|
&QHexDocument::documentChanged);
|
||||||
|
|
||||||
|
/*=======================*/
|
||||||
|
// added by wingsummer
|
||||||
connect(&m_undostack, &QUndoStack::canUndoChanged, this,
|
connect(&m_undostack, &QUndoStack::canUndoChanged, this,
|
||||||
&QHexDocument::canUndoChanged);
|
&QHexDocument::canUndoChanged);
|
||||||
connect(&m_undostack, &QUndoStack::canRedoChanged, this,
|
connect(&m_undostack, &QUndoStack::canRedoChanged, this,
|
||||||
&QHexDocument::canRedoChanged);
|
&QHexDocument::canRedoChanged);
|
||||||
|
connect(m_metadata, &QHexMetadata::canMetaRedoChanged, this,
|
||||||
|
&QHexDocument::canMetaRedoChanged);
|
||||||
|
connect(m_metadata, &QHexMetadata::canMetaUndoChanged, this,
|
||||||
|
&QHexDocument::canMetaUndoChanged);
|
||||||
|
connect(&m_undostack, &QUndoStack::cleanChanged, this,
|
||||||
|
&QHexDocument::documentSaved);
|
||||||
|
connect(m_metadata, &QHexMetadata::isSaved, this,
|
||||||
|
&QHexDocument::workspaceSaved);
|
||||||
|
/*=======================*/
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QHexDocument::isEmpty() const { return m_buffer->isEmpty(); }
|
bool QHexDocument::isEmpty() const { return m_buffer->isEmpty(); }
|
||||||
|
@ -289,8 +300,6 @@ bool QHexDocument::saveTo(QIODevice *device, bool cleanUndo) {
|
||||||
m_buffer->write(device);
|
m_buffer->write(device);
|
||||||
if (cleanUndo)
|
if (cleanUndo)
|
||||||
m_undostack.setClean(); // added by wingsummer
|
m_undostack.setClean(); // added by wingsummer
|
||||||
|
|
||||||
emit documentSaved();
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ public:
|
||||||
bool isReadOnly();
|
bool isReadOnly();
|
||||||
bool isKeepSize();
|
bool isKeepSize();
|
||||||
bool isLocked();
|
bool isLocked();
|
||||||
bool isModified();
|
bool isSaved();
|
||||||
|
|
||||||
void addBookMark(QString comment);
|
void addBookMark(QString comment);
|
||||||
BookMarkStruct bookMark(int index);
|
BookMarkStruct bookMark(int index);
|
||||||
|
@ -109,9 +109,19 @@ public:
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
void documentSaved();
|
/*================================*/
|
||||||
|
|
||||||
/*================================*/
|
/*================================*/
|
||||||
|
// added by wingsummer
|
||||||
|
|
||||||
|
void documentSaved(bool saved);
|
||||||
|
void workspaceSaved(bool saved);
|
||||||
|
|
||||||
|
void canMetaUndoChanged(bool canUndo);
|
||||||
|
void canMetaRedoChanged(bool canRedo);
|
||||||
|
|
||||||
|
/*================================*/
|
||||||
|
|
||||||
void canUndoChanged(bool canUndo);
|
void canUndoChanged(bool canUndo);
|
||||||
void canRedoChanged(bool canRedo);
|
void canRedoChanged(bool canRedo);
|
||||||
void documentChanged();
|
void documentChanged();
|
||||||
|
|
|
@ -4,7 +4,13 @@
|
||||||
#include "commands/metaremovecommand.h"
|
#include "commands/metaremovecommand.h"
|
||||||
#include "commands/metareplacecommand.h"
|
#include "commands/metareplacecommand.h"
|
||||||
|
|
||||||
QHexMetadata::QHexMetadata(QObject *parent) : QObject(parent) {}
|
QHexMetadata::QHexMetadata(QObject *parent) : QObject(parent) {
|
||||||
|
connect(&m_undo, &QUndoStack::canUndoChanged, this,
|
||||||
|
&QHexMetadata::canMetaUndoChanged);
|
||||||
|
connect(&m_undo, &QUndoStack::canRedoChanged, this,
|
||||||
|
&QHexMetadata::canMetaRedoChanged);
|
||||||
|
connect(&m_undo, &QUndoStack::cleanChanged, this, &QHexMetadata::isSaved);
|
||||||
|
}
|
||||||
|
|
||||||
const QHexLineMetadata &QHexMetadata::get(quint64 line) const {
|
const QHexLineMetadata &QHexMetadata::get(quint64 line) const {
|
||||||
auto it = m_metadata.find(line);
|
auto it = m_metadata.find(line);
|
||||||
|
@ -23,10 +29,12 @@ QList<QHexMetadataAbsoluteItem> QHexMetadata::getallMetas() {
|
||||||
return m_absoluteMetadata;
|
return m_absoluteMetadata;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QHexMetadata::isMetaSaved() { return m_undo.isClean(); }
|
||||||
|
|
||||||
void QHexMetadata::modifyMetadata(QHexMetadataAbsoluteItem newmeta,
|
void QHexMetadata::modifyMetadata(QHexMetadataAbsoluteItem newmeta,
|
||||||
QHexMetadataAbsoluteItem oldmeta,
|
QHexMetadataAbsoluteItem oldmeta,
|
||||||
bool reundo) {
|
bool reundo) {
|
||||||
removeMetadata(oldmeta);
|
removeMetadata(oldmeta, true);
|
||||||
metadata(newmeta.begin, newmeta.end, newmeta.foreground, newmeta.background,
|
metadata(newmeta.begin, newmeta.end, newmeta.foreground, newmeta.background,
|
||||||
newmeta.comment, false);
|
newmeta.comment, false);
|
||||||
if (!reundo)
|
if (!reundo)
|
||||||
|
@ -165,7 +173,7 @@ void QHexMetadata::metadata(qint64 begin, qint64 end, const QColor &fgcolor,
|
||||||
m_undo.push(new MetaAddCommand(this, absi));
|
m_undo.push(new MetaAddCommand(this, absi));
|
||||||
}
|
}
|
||||||
m_absoluteMetadata.append(absi);
|
m_absoluteMetadata.append(absi);
|
||||||
setAbsoluteMetadata(m_absoluteMetadata.back());
|
setAbsoluteMetadata(absi);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QHexMetadata::setAbsoluteMetadata(const QHexMetadataAbsoluteItem &mai) {
|
void QHexMetadata::setAbsoluteMetadata(const QHexMetadataAbsoluteItem &mai) {
|
||||||
|
@ -183,8 +191,13 @@ void QHexMetadata::setAbsoluteMetadata(const QHexMetadataAbsoluteItem &mai) {
|
||||||
const int lastChar = mai.end % m_lineWidth;
|
const int lastChar = mai.end % m_lineWidth;
|
||||||
length = lastChar - start;
|
length = lastChar - start;
|
||||||
} else {
|
} else {
|
||||||
length = m_lineWidth;
|
// fix the bug by wingsummer
|
||||||
|
if (firstRow != lastRow)
|
||||||
|
length = m_lineWidth - start;
|
||||||
|
else
|
||||||
|
length = m_lineWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (length > 0) {
|
if (length > 0) {
|
||||||
setMetadata(
|
setMetadata(
|
||||||
{row, start, length, mai.foreground, mai.background, mai.comment});
|
{row, start, length, mai.foreground, mai.background, mai.comment});
|
||||||
|
|
|
@ -70,6 +70,7 @@ public:
|
||||||
void undo();
|
void undo();
|
||||||
bool canRedo();
|
bool canRedo();
|
||||||
bool canUndo();
|
bool canUndo();
|
||||||
|
bool isMetaSaved();
|
||||||
|
|
||||||
/*============================*/
|
/*============================*/
|
||||||
|
|
||||||
|
@ -106,6 +107,14 @@ signals:
|
||||||
void metadataChanged(quint64 line);
|
void metadataChanged(quint64 line);
|
||||||
void metadataCleared();
|
void metadataCleared();
|
||||||
|
|
||||||
|
/*============================*/
|
||||||
|
// added by wingsummer
|
||||||
|
|
||||||
|
void canMetaUndoChanged(bool canUndo);
|
||||||
|
void canMetaRedoChanged(bool canRedo);
|
||||||
|
void isSaved(bool saved);
|
||||||
|
/*============================*/
|
||||||
|
|
||||||
private:
|
private:
|
||||||
quint8 m_lineWidth;
|
quint8 m_lineWidth;
|
||||||
QHash<quint64, QHexLineMetadata> m_metadata;
|
QHash<quint64, QHexLineMetadata> m_metadata;
|
||||||
|
|
|
@ -342,12 +342,11 @@ void QHexRenderer::applyMetadata(QTextCursor &textcursor, quint64 line,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const QHexLineMetadata &linemetadata = metadata->get(line);
|
const QHexLineMetadata &linemetadata = metadata->get(line);
|
||||||
|
|
||||||
for (const QHexMetadataItem &mi : linemetadata) {
|
for (const QHexMetadataItem &mi : linemetadata) {
|
||||||
QTextCharFormat charformat;
|
QTextCharFormat charformat;
|
||||||
if (mi.background.isValid())
|
if (mi.background.isValid() && mi.background.rgba())
|
||||||
charformat.setBackground(mi.background);
|
charformat.setBackground(mi.background);
|
||||||
if (mi.foreground.isValid())
|
if (mi.foreground.isValid() && mi.foreground.rgba())
|
||||||
charformat.setForeground(mi.foreground);
|
charformat.setForeground(mi.foreground);
|
||||||
if (!mi.comment.isEmpty())
|
if (!mi.comment.isEmpty())
|
||||||
charformat.setUnderlineStyle(QTextCharFormat::SingleUnderline);
|
charformat.setUnderlineStyle(QTextCharFormat::SingleUnderline);
|
||||||
|
|
|
@ -21,9 +21,17 @@ QHexRenderer *QHexView::renderer() { return m_renderer; }
|
||||||
void QHexView::switchDocument(QHexDocument *document, QHexRenderer *renderer,
|
void QHexView::switchDocument(QHexDocument *document, QHexRenderer *renderer,
|
||||||
int vBarValue) {
|
int vBarValue) {
|
||||||
if (document && renderer) {
|
if (document && renderer) {
|
||||||
|
|
||||||
|
if (m_document) {
|
||||||
|
m_document->disconnect();
|
||||||
|
m_document->cursor()->disconnect();
|
||||||
|
}
|
||||||
|
|
||||||
m_document = document;
|
m_document = document;
|
||||||
m_renderer = renderer;
|
m_renderer = renderer;
|
||||||
|
|
||||||
|
establishSignal(document);
|
||||||
|
|
||||||
this->adjustScrollBars();
|
this->adjustScrollBars();
|
||||||
this->viewport()->update();
|
this->viewport()->update();
|
||||||
auto vbar = this->verticalScrollBar();
|
auto vbar = this->verticalScrollBar();
|
||||||
|
@ -31,9 +39,6 @@ void QHexView::switchDocument(QHexDocument *document, QHexRenderer *renderer,
|
||||||
vbar->setValue(vBarValue);
|
vbar->setValue(vBarValue);
|
||||||
|
|
||||||
m_blinktimer->start(); // let mouse blink
|
m_blinktimer->start(); // let mouse blink
|
||||||
|
|
||||||
emit documentStatusChanged();
|
|
||||||
emit documentSwitched();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,13 +48,13 @@ bool QHexView::isLocked() { return m_document->isLocked(); }
|
||||||
|
|
||||||
bool QHexView::setLockedFile(bool b) {
|
bool QHexView::setLockedFile(bool b) {
|
||||||
bool res = m_document->setLockedFile(b);
|
bool res = m_document->setLockedFile(b);
|
||||||
emit documentStatusChanged();
|
emit documentLockedFile(b);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QHexView::setKeepSize(bool b) {
|
bool QHexView::setKeepSize(bool b) {
|
||||||
bool res = m_document->setKeepSize(b);
|
bool res = m_document->setKeepSize(b);
|
||||||
emit documentStatusChanged();
|
emit documentKeepSize(b);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,7 +104,7 @@ void QHexView::setAddressBase(quint64 base) {
|
||||||
m_document->setBaseAddress(base);
|
m_document->setBaseAddress(base);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QHexView::isModified() { return m_document->isModified(); }
|
bool QHexView::isSaved() { return m_document->isSaved(); }
|
||||||
|
|
||||||
QFont QHexView::getHexeditorFont() {
|
QFont QHexView::getHexeditorFont() {
|
||||||
QFont f = QFontDatabase::systemFont(QFontDatabase::FixedFont);
|
QFont f = QFontDatabase::systemFont(QFontDatabase::FixedFont);
|
||||||
|
@ -110,6 +115,37 @@ QFont QHexView::getHexeditorFont() {
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QHexView::establishSignal(QHexDocument *doc) {
|
||||||
|
connect(doc, &QHexDocument::documentChanged, this, [&]() {
|
||||||
|
this->adjustScrollBars();
|
||||||
|
this->viewport()->update();
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(doc->cursor(), &QHexCursor::positionChanged, this,
|
||||||
|
&QHexView::moveToSelection);
|
||||||
|
connect(doc->cursor(), &QHexCursor::insertionModeChanged, this,
|
||||||
|
&QHexView::renderCurrentLine);
|
||||||
|
connect(doc, &QHexDocument::canUndoChanged, this, &QHexView::canUndoChanged);
|
||||||
|
connect(doc, &QHexDocument::canRedoChanged, this, &QHexView::canRedoChanged);
|
||||||
|
connect(doc, &QHexDocument::canMetaRedoChanged, this,
|
||||||
|
&QHexView::canMetaRedoChanged);
|
||||||
|
connect(doc, &QHexDocument::canMetaUndoChanged, this,
|
||||||
|
&QHexView::canMetaUndoChanged);
|
||||||
|
connect(doc, &QHexDocument::documentSaved, this, &QHexView::documentSaved);
|
||||||
|
connect(doc, &QHexDocument::workspaceSaved, this, &QHexView::workspaceSaved);
|
||||||
|
|
||||||
|
emit canUndoChanged(doc->canUndo());
|
||||||
|
emit canRedoChanged(doc->canRedo());
|
||||||
|
emit canMetaRedoChanged(doc->metadata()->canRedo());
|
||||||
|
emit canMetaUndoChanged(doc->metadata()->canUndo());
|
||||||
|
emit cursorLocationChanged();
|
||||||
|
emit documentSwitched();
|
||||||
|
emit documentSaved(doc->isSaved());
|
||||||
|
emit documentKeepSize(doc->isKeepSize());
|
||||||
|
emit documentLockedFile(doc->isLocked());
|
||||||
|
emit workspaceSaved(doc->metadata()->isMetaSaved());
|
||||||
|
}
|
||||||
|
|
||||||
/*======================*/
|
/*======================*/
|
||||||
|
|
||||||
QHexView::QHexView(QWidget *parent)
|
QHexView::QHexView(QWidget *parent)
|
||||||
|
@ -138,6 +174,7 @@ QHexView::QHexView(QWidget *parent)
|
||||||
|
|
||||||
QHexDocument *QHexView::document() { return m_document; }
|
QHexDocument *QHexView::document() { return m_document; }
|
||||||
|
|
||||||
|
// modified by wingsummer
|
||||||
void QHexView::setDocument(QHexDocument *document) {
|
void QHexView::setDocument(QHexDocument *document) {
|
||||||
|
|
||||||
// modified by wingsummer
|
// modified by wingsummer
|
||||||
|
@ -147,29 +184,18 @@ void QHexView::setDocument(QHexDocument *document) {
|
||||||
// if (m_document)
|
// if (m_document)
|
||||||
// m_document->deleteLater();
|
// m_document->deleteLater();
|
||||||
|
|
||||||
|
if (m_document) {
|
||||||
|
m_document->disconnect();
|
||||||
|
m_document->cursor()->disconnect();
|
||||||
|
}
|
||||||
|
|
||||||
m_document = document;
|
m_document = document;
|
||||||
m_renderer = new QHexRenderer(m_document, this->fontMetrics(), this);
|
m_renderer = new QHexRenderer(m_document, this->fontMetrics(), this);
|
||||||
|
|
||||||
connect(m_document, &QHexDocument::documentChanged, this, [&]() {
|
establishSignal(m_document);
|
||||||
this->adjustScrollBars();
|
|
||||||
this->viewport()->update();
|
|
||||||
emit documentChanged(); // added by wingsummer
|
|
||||||
});
|
|
||||||
|
|
||||||
connect(m_document, &QHexDocument::documentSaved, this,
|
|
||||||
[&]() { emit documentStatusChanged(); }); // added by wingsummer
|
|
||||||
|
|
||||||
connect(m_document->cursor(), &QHexCursor::positionChanged, this,
|
|
||||||
&QHexView::moveToSelection);
|
|
||||||
connect(m_document->cursor(), &QHexCursor::insertionModeChanged, this,
|
|
||||||
&QHexView::renderCurrentLine);
|
|
||||||
|
|
||||||
this->adjustScrollBars();
|
this->adjustScrollBars();
|
||||||
this->viewport()->update();
|
this->viewport()->update();
|
||||||
|
|
||||||
emit documentChanged(); // added by wingsummer
|
|
||||||
emit documentStatusChanged();
|
|
||||||
emit documentSwitched();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QHexView::event(QEvent *e) {
|
bool QHexView::event(QEvent *e) {
|
||||||
|
|
|
@ -45,15 +45,22 @@ public:
|
||||||
quint64 addressBase();
|
quint64 addressBase();
|
||||||
void setAddressBase(quint64 base);
|
void setAddressBase(quint64 base);
|
||||||
|
|
||||||
bool isModified();
|
bool isSaved();
|
||||||
|
void establishSignal(QHexDocument *doc);
|
||||||
|
|
||||||
static QFont getHexeditorFont();
|
static QFont getHexeditorFont();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void cursorLocationChanged();
|
void cursorLocationChanged();
|
||||||
void documentChanged();
|
|
||||||
void documentStatusChanged();
|
|
||||||
void documentSwitched();
|
void documentSwitched();
|
||||||
|
void workspaceSaved(bool saved);
|
||||||
|
void canMetaUndoChanged(bool canUndo);
|
||||||
|
void canMetaRedoChanged(bool canRedo);
|
||||||
|
void canUndoChanged(bool canUndo);
|
||||||
|
void canRedoChanged(bool canRedo);
|
||||||
|
void documentSaved(bool saved);
|
||||||
|
void documentLockedFile(bool locked);
|
||||||
|
void documentKeepSize(bool keep);
|
||||||
|
|
||||||
/*=============================*/
|
/*=============================*/
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include <DSettingsWidgetFactory>
|
#include <DSettingsWidgetFactory>
|
||||||
#include <DTitlebar>
|
#include <DTitlebar>
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
|
#include <QDesktopServices>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
|
@ -112,6 +113,15 @@ MainWindow::MainWindow(DMainWindow *parent) {
|
||||||
AddToolSubMenuShortcutAction("open", tr("OpenF"), MainWindow::on_openfile,
|
AddToolSubMenuShortcutAction("open", tr("OpenF"), MainWindow::on_openfile,
|
||||||
QKeySequence::Open);
|
QKeySequence::Open);
|
||||||
|
|
||||||
|
auto keyundo =
|
||||||
|
QKeySequence(Qt::KeyboardModifier::ControlModifier | Qt::Key_Z);
|
||||||
|
auto keymundo = QKeySequence(Qt::KeyboardModifier::ControlModifier |
|
||||||
|
Qt::KeyboardModifier::ShiftModifier | Qt::Key_Z);
|
||||||
|
auto keyredo =
|
||||||
|
QKeySequence(Qt::KeyboardModifier::ControlModifier | Qt::Key_Y);
|
||||||
|
auto keymredo = QKeySequence(Qt::KeyboardModifier::ControlModifier |
|
||||||
|
Qt::KeyboardModifier::ShiftModifier | Qt::Key_Y);
|
||||||
|
|
||||||
auto keysaveas =
|
auto keysaveas =
|
||||||
QKeySequence(Qt::KeyboardModifier::ControlModifier |
|
QKeySequence(Qt::KeyboardModifier::ControlModifier |
|
||||||
Qt::KeyboardModifier::ShiftModifier | Qt::Key_S);
|
Qt::KeyboardModifier::ShiftModifier | Qt::Key_S);
|
||||||
|
@ -217,10 +227,10 @@ MainWindow::MainWindow(DMainWindow *parent) {
|
||||||
tm->setTitle(tr("Edit"));
|
tm->setTitle(tr("Edit"));
|
||||||
tm->setIcon(ICONRES("edit"));
|
tm->setIcon(ICONRES("edit"));
|
||||||
AddToolSubMenuShortcutAction("undo", tr("Undo"), MainWindow::on_undofile,
|
AddToolSubMenuShortcutAction("undo", tr("Undo"), MainWindow::on_undofile,
|
||||||
QKeySequence::Undo);
|
keyundo);
|
||||||
AddMenuDB(ToolBoxIndex::Undo);
|
AddMenuDB(ToolBoxIndex::Undo);
|
||||||
AddToolSubMenuShortcutAction("redo", tr("Redo"), MainWindow::on_redofile,
|
AddToolSubMenuShortcutAction("redo", tr("Redo"), MainWindow::on_redofile,
|
||||||
QKeySequence::Redo);
|
keyredo);
|
||||||
AddMenuDB(ToolBoxIndex::Redo);
|
AddMenuDB(ToolBoxIndex::Redo);
|
||||||
tm->addSeparator();
|
tm->addSeparator();
|
||||||
AddToolSubMenuShortcutAction("cut", tr("Cut"), MainWindow::on_cutfile,
|
AddToolSubMenuShortcutAction("cut", tr("Cut"), MainWindow::on_cutfile,
|
||||||
|
@ -262,6 +272,21 @@ MainWindow::MainWindow(DMainWindow *parent) {
|
||||||
MainWindow::on_fillzero, keyfillzero);
|
MainWindow::on_fillzero, keyfillzero);
|
||||||
AddMenuDB(ToolBoxIndex::FillZero);
|
AddMenuDB(ToolBoxIndex::FillZero);
|
||||||
tm->addSeparator();
|
tm->addSeparator();
|
||||||
|
AddToolSubMenuShortcutAction("encoding", tr("Encoding"),
|
||||||
|
MainWindow::on_encoding, keyencoding);
|
||||||
|
AddMenuDB(ToolBoxIndex::Encoding);
|
||||||
|
menu->addMenu(tm);
|
||||||
|
|
||||||
|
tm = new DMenu(this);
|
||||||
|
tm->setTitle(tr("Mark"));
|
||||||
|
tm->setIcon(ICONRES("mark"));
|
||||||
|
AddToolSubMenuShortcutAction("metaundo", tr("Undo"), MainWindow::on_metaundo,
|
||||||
|
keymundo);
|
||||||
|
AddMenuDB(ToolBoxIndex::MetaUndo);
|
||||||
|
AddToolSubMenuShortcutAction("metaredo", tr("Redo"), MainWindow::on_metaredo,
|
||||||
|
keymredo);
|
||||||
|
AddMenuDB(ToolBoxIndex::MetaRedo);
|
||||||
|
tm->addSeparator();
|
||||||
AddToolSubMenuShortcutAction("metadata", tr("MetaData"),
|
AddToolSubMenuShortcutAction("metadata", tr("MetaData"),
|
||||||
MainWindow::on_metadata, keymetadata);
|
MainWindow::on_metadata, keymetadata);
|
||||||
AddMenuDB(ToolBoxIndex::Meta);
|
AddMenuDB(ToolBoxIndex::Meta);
|
||||||
|
@ -284,10 +309,6 @@ MainWindow::MainWindow(DMainWindow *parent) {
|
||||||
AddToolSubMenuShortcutAction("bookmarkcls", tr("ClearBookMark"),
|
AddToolSubMenuShortcutAction("bookmarkcls", tr("ClearBookMark"),
|
||||||
MainWindow::on_bookmarkcls, keybookmarkcls);
|
MainWindow::on_bookmarkcls, keybookmarkcls);
|
||||||
AddMenuDB(ToolBoxIndex::ClsBookMark);
|
AddMenuDB(ToolBoxIndex::ClsBookMark);
|
||||||
tm->addSeparator();
|
|
||||||
AddToolSubMenuShortcutAction("encoding", tr("Encoding"),
|
|
||||||
MainWindow::on_encoding, keyencoding);
|
|
||||||
AddMenuDB(ToolBoxIndex::Encoding);
|
|
||||||
menu->addMenu(tm);
|
menu->addMenu(tm);
|
||||||
|
|
||||||
tm = new DMenu(this);
|
tm = new DMenu(this);
|
||||||
|
@ -316,6 +337,7 @@ MainWindow::MainWindow(DMainWindow *parent) {
|
||||||
tm->setIcon(ICONRES("author"));
|
tm->setIcon(ICONRES("author"));
|
||||||
AddToolSubMenuAction("soft", tr("About"), MainWindow::on_about);
|
AddToolSubMenuAction("soft", tr("About"), MainWindow::on_about);
|
||||||
AddToolSubMenuAction("sponsor", tr("Sponsor"), MainWindow::on_sponsor);
|
AddToolSubMenuAction("sponsor", tr("Sponsor"), MainWindow::on_sponsor);
|
||||||
|
AddToolSubMenuAction("wiki", tr("Wiki"), MainWindow::on_wiki);
|
||||||
|
|
||||||
menu->addMenu(tm);
|
menu->addMenu(tm);
|
||||||
|
|
||||||
|
@ -331,13 +353,6 @@ MainWindow::MainWindow(DMainWindow *parent) {
|
||||||
a->setEnabled(false); \
|
a->setEnabled(false); \
|
||||||
conmenutools.insert(index, a);
|
conmenutools.insert(index, a);
|
||||||
|
|
||||||
AddContextMenuAction("undo", tr("Undo"), MainWindow::on_undofile,
|
|
||||||
QKeySequence::Undo);
|
|
||||||
AddContextMenuDB(ToolBoxIndex::Undo);
|
|
||||||
AddContextMenuAction("redo", tr("Redo"), MainWindow::on_redofile,
|
|
||||||
QKeySequence::Redo);
|
|
||||||
AddContextMenuDB(ToolBoxIndex::Redo);
|
|
||||||
hexeditorMenu->addSeparator();
|
|
||||||
AddContextMenuAction("cut", tr("Cut"), MainWindow::on_cutfile,
|
AddContextMenuAction("cut", tr("Cut"), MainWindow::on_cutfile,
|
||||||
QKeySequence::Cut);
|
QKeySequence::Cut);
|
||||||
AddContextMenuAction("cuthex", tr("CutHex"), MainWindow::on_cuthex,
|
AddContextMenuAction("cuthex", tr("CutHex"), MainWindow::on_cuthex,
|
||||||
|
@ -356,29 +371,11 @@ MainWindow::MainWindow(DMainWindow *parent) {
|
||||||
AddContextMenuAction("find", tr("Find"), MainWindow::on_findfile,
|
AddContextMenuAction("find", tr("Find"), MainWindow::on_findfile,
|
||||||
QKeySequence::Find);
|
QKeySequence::Find);
|
||||||
AddContextMenuAction("jmp", tr("Goto"), MainWindow::on_gotoline, keygoto);
|
AddContextMenuAction("jmp", tr("Goto"), MainWindow::on_gotoline, keygoto);
|
||||||
hexeditorMenu->addSeparator();
|
|
||||||
AddContextMenuAction("fill", tr("Fill"), MainWindow::on_fill, keyfill);
|
AddContextMenuAction("fill", tr("Fill"), MainWindow::on_fill, keyfill);
|
||||||
AddContextMenuAction("fillNop", tr("FillNop"), MainWindow::on_fillnop,
|
|
||||||
keyfillnop);
|
|
||||||
AddContextMenuAction("fillZero", tr("FillZero"), MainWindow::on_fillzero,
|
|
||||||
keyfillzero);
|
|
||||||
hexeditorMenu->addSeparator();
|
|
||||||
AddContextMenuAction("metadata", tr("MetaData"), MainWindow::on_metadata,
|
AddContextMenuAction("metadata", tr("MetaData"), MainWindow::on_metadata,
|
||||||
keymetadata);
|
keymetadata);
|
||||||
AddContextMenuAction("metadataedit", tr("MetaDataEdit"),
|
|
||||||
MainWindow::on_metadataedit, keymetaedit);
|
|
||||||
AddContextMenuAction("metadatadel", tr("DeleteMetaData"),
|
|
||||||
MainWindow::on_metadatadel, keymetadatadel);
|
|
||||||
AddContextMenuAction("metadatacls", tr("ClearMetaData"),
|
|
||||||
MainWindow::on_metadatacls, keymetadatacls);
|
|
||||||
hexeditorMenu->addSeparator();
|
|
||||||
AddContextMenuAction("bookmark", tr("BookMark"), MainWindow::on_bookmark,
|
AddContextMenuAction("bookmark", tr("BookMark"), MainWindow::on_bookmark,
|
||||||
keybookmark);
|
keybookmark);
|
||||||
AddContextMenuAction("bookmarkdel", tr("DeleteBookMark"),
|
|
||||||
MainWindow::on_bookmarkdel, keybookmarkdel);
|
|
||||||
AddContextMenuAction("bookmarkcls", tr("ClearBookMark"),
|
|
||||||
MainWindow::on_bookmarkcls, keybookmarkcls);
|
|
||||||
hexeditorMenu->addSeparator();
|
|
||||||
AddContextMenuAction("encoding", tr("Encoding"), MainWindow::on_encoding,
|
AddContextMenuAction("encoding", tr("Encoding"), MainWindow::on_encoding,
|
||||||
keyencoding);
|
keyencoding);
|
||||||
toolbar = new DToolBar(this);
|
toolbar = new DToolBar(this);
|
||||||
|
@ -478,7 +475,9 @@ MainWindow::MainWindow(DMainWindow *parent) {
|
||||||
|
|
||||||
AddToolBtnBegin("metadata") {
|
AddToolBtnBegin("metadata") {
|
||||||
AddToolBtnBtn("metaundo", tr("Undo"), MainWindow::on_metaundo);
|
AddToolBtnBtn("metaundo", tr("Undo"), MainWindow::on_metaundo);
|
||||||
|
AddToolsDB(ToolBoxIndex::MetaUndo);
|
||||||
AddToolBtnBtn("metaredo", tr("Redo"), MainWindow::on_metaredo);
|
AddToolBtnBtn("metaredo", tr("Redo"), MainWindow::on_metaredo);
|
||||||
|
AddToolsDB(ToolBoxIndex::MetaRedo);
|
||||||
tmenu->addSeparator();
|
tmenu->addSeparator();
|
||||||
AddToolBtnBtn("metadata", tr("MetaData"), MainWindow::on_metadata);
|
AddToolBtnBtn("metadata", tr("MetaData"), MainWindow::on_metadata);
|
||||||
AddToolBtnBtn("metadataedit", tr("MetaDataEdit"),
|
AddToolBtnBtn("metadataedit", tr("MetaDataEdit"),
|
||||||
|
@ -580,11 +579,6 @@ MainWindow::MainWindow(DMainWindow *parent) {
|
||||||
AddNamedStatusLabel(lblloc, "(0,0)");
|
AddNamedStatusLabel(lblloc, "(0,0)");
|
||||||
connect(hexeditor, &QHexView::cursorLocationChanged, this,
|
connect(hexeditor, &QHexView::cursorLocationChanged, this,
|
||||||
&MainWindow::on_locChanged);
|
&MainWindow::on_locChanged);
|
||||||
connect(hexeditor, &QHexView::documentChanged, this,
|
|
||||||
&MainWindow::on_documentChanged);
|
|
||||||
connect(hexeditor, &QHexView::documentStatusChanged, this,
|
|
||||||
&MainWindow::on_documentStatusChanged);
|
|
||||||
|
|
||||||
AddStatusLabel(tr("sel:"));
|
AddStatusLabel(tr("sel:"));
|
||||||
l->setMinimumWidth(50);
|
l->setMinimumWidth(50);
|
||||||
l->setAlignment(Qt::AlignCenter);
|
l->setAlignment(Qt::AlignCenter);
|
||||||
|
@ -607,11 +601,12 @@ MainWindow::MainWindow(DMainWindow *parent) {
|
||||||
|
|
||||||
AddStausILable(infoSaved, "saved", iSaved, infoUnsaved, "unsaved", infoSaveg,
|
AddStausILable(infoSaved, "saved", iSaved, infoUnsaved, "unsaved", infoSaveg,
|
||||||
"saveg");
|
"saveg");
|
||||||
|
iSaved->setToolTip(tr("InfoSave"));
|
||||||
AddStausILable(infoWriteable, "writable", iReadWrite, infoReadonly,
|
AddStausILable(infoWriteable, "writable", iReadWrite, infoReadonly,
|
||||||
"readonly", inforwg, "rwg");
|
"readonly", inforwg, "rwg");
|
||||||
|
iReadWrite->setToolTip(tr("InfoReadWrite"));
|
||||||
AddStausILable(infow, "works", iw, infouw, "uworks", infowg, "worksg");
|
AddStausILable(infow, "works", iw, infouw, "unworks", infowg, "worksg");
|
||||||
|
iw->setToolTip(tr("InfoWorks"));
|
||||||
infoUnLock = ICONRES("unlock");
|
infoUnLock = ICONRES("unlock");
|
||||||
infoLock = ICONRES("lock");
|
infoLock = ICONRES("lock");
|
||||||
infoCanOver = ICONRES("canover");
|
infoCanOver = ICONRES("canover");
|
||||||
|
@ -751,6 +746,28 @@ MainWindow::MainWindow(DMainWindow *parent) {
|
||||||
connect(gotobar, &GotoBar::pressEsc, [=] { // ToDo
|
connect(gotobar, &GotoBar::pressEsc, [=] { // ToDo
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// connect hexeditor status
|
||||||
|
connect(hexeditor, &QHexView::canUndoChanged, [=](bool b) {
|
||||||
|
toolbartools[ToolBoxIndex::Undo]->setEnabled(b);
|
||||||
|
toolmenutools[ToolBoxIndex::Undo]->setEnabled(b);
|
||||||
|
});
|
||||||
|
connect(hexeditor, &QHexView::canRedoChanged, [=](bool b) {
|
||||||
|
toolmenutools[ToolBoxIndex::Redo]->setEnabled(b);
|
||||||
|
toolmenutools[ToolBoxIndex::Redo]->setEnabled(b);
|
||||||
|
});
|
||||||
|
connect(hexeditor, &QHexView::canMetaRedoChanged,
|
||||||
|
[=](bool b) { toolbartools[ToolBoxIndex::MetaRedo]->setEnabled(b); });
|
||||||
|
connect(hexeditor, &QHexView::canMetaUndoChanged,
|
||||||
|
[=](bool b) { toolbartools[ToolBoxIndex::MetaUndo]->setEnabled(b); });
|
||||||
|
connect(hexeditor, &QHexView::documentSaved,
|
||||||
|
[=](bool b) { iSaved->setPixmap(b ? infoSaved : infoUnsaved); });
|
||||||
|
connect(hexeditor, &QHexView::documentKeepSize, this,
|
||||||
|
[=](bool b) { iOver->setIcon(b ? infoCannotOver : infoCanOver); });
|
||||||
|
connect(hexeditor, &QHexView::documentLockedFile, this,
|
||||||
|
[=](bool b) { iLocked->setIcon(b ? infoLock : infoUnLock); });
|
||||||
|
connect(hexeditor, &QHexView::workspaceSaved,
|
||||||
|
[=](bool b) { iw->setPixmap(b ? infow : infouw); });
|
||||||
|
|
||||||
#define ConnectShortCut(ShortCut, Slot) \
|
#define ConnectShortCut(ShortCut, Slot) \
|
||||||
s = new QShortcut(ShortCut, this); \
|
s = new QShortcut(ShortCut, this); \
|
||||||
connect(s, &QShortcut::activated, this, &Slot);
|
connect(s, &QShortcut::activated, this, &Slot);
|
||||||
|
@ -759,8 +776,8 @@ MainWindow::MainWindow(DMainWindow *parent) {
|
||||||
ConnectShortCut(QKeySequence::Open, MainWindow::on_openfile);
|
ConnectShortCut(QKeySequence::Open, MainWindow::on_openfile);
|
||||||
ConnectShortCut(QKeySequence::Save, MainWindow::on_savefile);
|
ConnectShortCut(QKeySequence::Save, MainWindow::on_savefile);
|
||||||
ConnectShortCut(keysaveas, MainWindow::on_saveasfile);
|
ConnectShortCut(keysaveas, MainWindow::on_saveasfile);
|
||||||
ConnectShortCut(QKeySequence::Undo, MainWindow::on_undofile);
|
ConnectShortCut(keyundo, MainWindow::on_undofile);
|
||||||
ConnectShortCut(QKeySequence::Redo, MainWindow::on_redofile);
|
ConnectShortCut(keyredo, MainWindow::on_redofile);
|
||||||
ConnectShortCut(QKeySequence::Cut, MainWindow::on_cutfile);
|
ConnectShortCut(QKeySequence::Cut, MainWindow::on_cutfile);
|
||||||
ConnectShortCut(QKeySequence::Copy, MainWindow::on_copyfile);
|
ConnectShortCut(QKeySequence::Copy, MainWindow::on_copyfile);
|
||||||
ConnectShortCut(QKeySequence::Paste, MainWindow::on_pastefile);
|
ConnectShortCut(QKeySequence::Paste, MainWindow::on_pastefile);
|
||||||
|
@ -782,6 +799,8 @@ MainWindow::MainWindow(DMainWindow *parent) {
|
||||||
ConnectShortCut(keycuthex, MainWindow::on_cuthex);
|
ConnectShortCut(keycuthex, MainWindow::on_cuthex);
|
||||||
ConnectShortCut(keycopyhex, MainWindow::on_copyhex);
|
ConnectShortCut(keycopyhex, MainWindow::on_copyhex);
|
||||||
ConnectShortCut(keypastehex, MainWindow::on_pastehex);
|
ConnectShortCut(keypastehex, MainWindow::on_pastehex);
|
||||||
|
ConnectShortCut(keymredo, MainWindow::on_metaredo);
|
||||||
|
ConnectShortCut(keymundo, MainWindow::on_metaundo);
|
||||||
|
|
||||||
logger->logMessage(INFOLOG(tr("SettingLoading")));
|
logger->logMessage(INFOLOG(tr("SettingLoading")));
|
||||||
|
|
||||||
|
@ -925,7 +944,7 @@ void MainWindow::connectShadow(HexViewShadow *shadow) {
|
||||||
PCHECKRETURN(hexfiles[_pcurfile].doc->isKeepSize(), true);
|
PCHECKRETURN(hexfiles[_pcurfile].doc->isKeepSize(), true);
|
||||||
});
|
});
|
||||||
ConnectShadowLamba(HexViewShadow::isModified, [=] {
|
ConnectShadowLamba(HexViewShadow::isModified, [=] {
|
||||||
PCHECKRETURN(hexfiles[_pcurfile].doc->isModified(), false);
|
PCHECKRETURN(!hexfiles[_pcurfile].doc->isSaved(), false);
|
||||||
});
|
});
|
||||||
ConnectShadowLamba(HexViewShadow::isReadOnly, [=] {
|
ConnectShadowLamba(HexViewShadow::isReadOnly, [=] {
|
||||||
PCHECKRETURN(hexfiles[_pcurfile].doc->isReadOnly(), true);
|
PCHECKRETURN(hexfiles[_pcurfile].doc->isReadOnly(), true);
|
||||||
|
@ -1589,11 +1608,18 @@ ErrFile MainWindow::openDriver(QString driver) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MainWindow::isModified(int index) {
|
bool MainWindow::isSavedMeta(int index) {
|
||||||
if (index < 0 || index >= hexfiles.count())
|
if (index < 0 || index >= hexfiles.count())
|
||||||
return false;
|
return false;
|
||||||
auto p = hexfiles.at(index);
|
auto p = hexfiles.at(index);
|
||||||
return p.doc->isModified();
|
return p.doc->metadata()->isMetaSaved();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MainWindow::isSavedFile(int index) {
|
||||||
|
if (index < 0 || index >= hexfiles.count())
|
||||||
|
return false;
|
||||||
|
auto p = hexfiles.at(index);
|
||||||
|
return p.doc->isSaved();
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrFile MainWindow::closeCurrentFile(bool force) {
|
ErrFile MainWindow::closeCurrentFile(bool force) {
|
||||||
|
@ -1610,7 +1636,7 @@ ErrFile MainWindow::closeFile(int index, bool force) {
|
||||||
if (index >= 0 && index < hexfiles.count()) {
|
if (index >= 0 && index < hexfiles.count()) {
|
||||||
auto p = hexfiles.at(index);
|
auto p = hexfiles.at(index);
|
||||||
if (!force) {
|
if (!force) {
|
||||||
if (isModified(index)) {
|
if (!isSavedFile(index) || !isSavedMeta(index)) {
|
||||||
if (_enableplugin) {
|
if (_enableplugin) {
|
||||||
params[0].setValue(HookIndex::CloseFileEnd);
|
params[0].setValue(HookIndex::CloseFileEnd);
|
||||||
params << ErrFile::UnSaved;
|
params << ErrFile::UnSaved;
|
||||||
|
@ -2002,24 +2028,6 @@ void MainWindow::on_setting_general() {
|
||||||
m_settings->settings->sync();
|
m_settings->settings->sync();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_documentChanged() {
|
|
||||||
CheckEnabled;
|
|
||||||
iSaved->setPixmap(isModified(_currentfile) ? infoUnsaved : infoSaved);
|
|
||||||
auto canundo = hexeditor->document()->canUndo();
|
|
||||||
auto canredo = hexeditor->document()->canRedo();
|
|
||||||
toolbartools[ToolBoxIndex::Undo]->setEnabled(canundo);
|
|
||||||
toolbartools[ToolBoxIndex::Redo]->setEnabled(canredo);
|
|
||||||
toolmenutools[ToolBoxIndex::Undo]->setEnabled(canundo);
|
|
||||||
toolmenutools[ToolBoxIndex::Redo]->setEnabled(canredo);
|
|
||||||
conmenutools[ToolBoxIndex::Undo]->setEnabled(canundo);
|
|
||||||
conmenutools[ToolBoxIndex::Redo]->setEnabled(canredo);
|
|
||||||
if (hexfiles[_currentfile].workspace.length() > 0) {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
iw->setPixmap(infowg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::on_savesel() {
|
void MainWindow::on_savesel() {
|
||||||
CheckEnabled;
|
CheckEnabled;
|
||||||
auto filename = QFileDialog::getSaveFileName(this, tr("ChooseSaveFile"));
|
auto filename = QFileDialog::getSaveFileName(this, tr("ChooseSaveFile"));
|
||||||
|
@ -2037,7 +2045,7 @@ void MainWindow::on_savesel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_documentSwitched() {
|
void MainWindow::on_documentSwitched() {
|
||||||
CheckEnabled;
|
iReadWrite->setPixmap(hexeditor->isReadOnly() ? infoReadonly : infoWriteable);
|
||||||
QList<BookMarkStruct> bookmaps;
|
QList<BookMarkStruct> bookmaps;
|
||||||
bookmarks->clear();
|
bookmarks->clear();
|
||||||
hexeditor->document()->getBookMarks(bookmaps);
|
hexeditor->document()->getBookMarks(bookmaps);
|
||||||
|
@ -2050,14 +2058,6 @@ void MainWindow::on_documentSwitched() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_documentStatusChanged() {
|
|
||||||
CheckEnabled;
|
|
||||||
iSaved->setPixmap(hexeditor->isModified() ? infoUnsaved : infoSaved);
|
|
||||||
iReadWrite->setPixmap(hexeditor->isReadOnly() ? infoReadonly : infoWriteable);
|
|
||||||
iLocked->setIcon(hexeditor->isLocked() ? infoLock : infoUnLock);
|
|
||||||
iOver->setIcon(hexeditor->isKeepSize() ? infoCannotOver : infoCanOver);
|
|
||||||
}
|
|
||||||
|
|
||||||
ErrFile MainWindow::saveFile(int index) {
|
ErrFile MainWindow::saveFile(int index) {
|
||||||
if (index >= 0 && index < hexfiles.count()) {
|
if (index >= 0 && index < hexfiles.count()) {
|
||||||
auto f = hexfiles.at(index);
|
auto f = hexfiles.at(index);
|
||||||
|
@ -2273,13 +2273,11 @@ void MainWindow::setEditModeEnabled(bool b, bool isdriver) {
|
||||||
enableDirverLimit(isdriver);
|
enableDirverLimit(isdriver);
|
||||||
|
|
||||||
status->setEnabled(b);
|
status->setEnabled(b);
|
||||||
if (b) {
|
if (!b) {
|
||||||
on_documentChanged();
|
|
||||||
on_documentStatusChanged();
|
|
||||||
} else {
|
|
||||||
iSaved->setPixmap(infoSaveg);
|
iSaved->setPixmap(infoSaveg);
|
||||||
iReadWrite->setPixmap(inforwg);
|
iReadWrite->setPixmap(inforwg);
|
||||||
iLocked->setIcon(infoLockg);
|
iLocked->setIcon(infoLockg);
|
||||||
|
iw->setPixmap(infowg);
|
||||||
iOver->setIcon(infoOverg);
|
iOver->setIcon(infoOverg);
|
||||||
lblloc->setText("(0,0)");
|
lblloc->setText("(0,0)");
|
||||||
lblsellen->setText("0 - 0x0");
|
lblsellen->setText("0 - 0x0");
|
||||||
|
@ -2385,6 +2383,11 @@ void MainWindow::on_exportfindresult() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_wiki() {
|
||||||
|
QDesktopServices::openUrl(QUrl("https://code.gitlink.org.cn/wingsummer/"
|
||||||
|
"WingHexExplorer/wiki/%E7%AE%80%E4%BB%8B"));
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::on_sponsor() {
|
void MainWindow::on_sponsor() {
|
||||||
SponsorDialog d;
|
SponsorDialog d;
|
||||||
d.exec();
|
d.exec();
|
||||||
|
|
|
@ -76,6 +76,8 @@ class MainWindow : public DMainWindow {
|
||||||
FillZero,
|
FillZero,
|
||||||
Meta,
|
Meta,
|
||||||
MetaEdit,
|
MetaEdit,
|
||||||
|
MetaRedo,
|
||||||
|
MetaUndo,
|
||||||
DelMeta,
|
DelMeta,
|
||||||
ClsMeta,
|
ClsMeta,
|
||||||
BookMark,
|
BookMark,
|
||||||
|
@ -132,7 +134,8 @@ private:
|
||||||
ErrFile saveasFile(QString filename, int index);
|
ErrFile saveasFile(QString filename, int index);
|
||||||
ErrFile closeCurrentFile(bool force = false);
|
ErrFile closeCurrentFile(bool force = false);
|
||||||
ErrFile saveCurrentFile();
|
ErrFile saveCurrentFile();
|
||||||
bool isModified(int index);
|
bool isSavedFile(int index);
|
||||||
|
bool isSavedMeta(int index);
|
||||||
void FindFileBytes(int index, QByteArray arr, QList<int> &indices);
|
void FindFileBytes(int index, QByteArray arr, QList<int> &indices);
|
||||||
void FindAllBytes(QByteArray arr, QList<FindResult> &res);
|
void FindAllBytes(QByteArray arr, QList<FindResult> &res);
|
||||||
void gotoFileLine(int index, quint64 offset);
|
void gotoFileLine(int index, quint64 offset);
|
||||||
|
@ -179,9 +182,7 @@ private:
|
||||||
void on_setting_plugin();
|
void on_setting_plugin();
|
||||||
void on_gotobar(int pos, bool isline);
|
void on_gotobar(int pos, bool isline);
|
||||||
void on_locChanged();
|
void on_locChanged();
|
||||||
void on_documentChanged();
|
|
||||||
void on_documentSwitched();
|
void on_documentSwitched();
|
||||||
void on_documentStatusChanged();
|
|
||||||
void on_metaundo();
|
void on_metaundo();
|
||||||
void on_metaredo();
|
void on_metaredo();
|
||||||
void on_metadata();
|
void on_metadata();
|
||||||
|
@ -194,6 +195,7 @@ private:
|
||||||
void on_restoreLayout();
|
void on_restoreLayout();
|
||||||
void on_about();
|
void on_about();
|
||||||
void on_sponsor();
|
void on_sponsor();
|
||||||
|
void on_wiki();
|
||||||
void on_fillnop();
|
void on_fillnop();
|
||||||
void on_fillzero();
|
void on_fillzero();
|
||||||
void on_fill();
|
void on_fill();
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 8.7 KiB |
Binary file not shown.
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.8 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.7 KiB |
Binary file not shown.
|
@ -127,413 +127,435 @@
|
||||||
<context>
|
<context>
|
||||||
<name>MainWindow</name>
|
<name>MainWindow</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="107"/>
|
<location filename="../dialog/mainwindow.cpp" line="108"/>
|
||||||
<source>File</source>
|
<source>File</source>
|
||||||
<translation>文件</translation>
|
<translation>文件</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="109"/>
|
<location filename="../dialog/mainwindow.cpp" line="110"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="392"/>
|
<location filename="../dialog/mainwindow.cpp" line="397"/>
|
||||||
<source>New</source>
|
<source>New</source>
|
||||||
<translation>新建</translation>
|
<translation>新建</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="112"/>
|
<location filename="../dialog/mainwindow.cpp" line="113"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="393"/>
|
<location filename="../dialog/mainwindow.cpp" line="398"/>
|
||||||
<source>OpenF</source>
|
<source>OpenF</source>
|
||||||
<translation>打开文件</translation>
|
<translation>打开文件</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="185"/>
|
<location filename="../dialog/mainwindow.cpp" line="198"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="394"/>
|
<location filename="../dialog/mainwindow.cpp" line="399"/>
|
||||||
<source>OpenD</source>
|
<source>OpenD</source>
|
||||||
<translation>打开驱动器</translation>
|
<translation>打开驱动器</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="188"/>
|
<location filename="../dialog/mainwindow.cpp" line="201"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="396"/>
|
<location filename="../dialog/mainwindow.cpp" line="401"/>
|
||||||
<source>Save</source>
|
<source>Save</source>
|
||||||
<translation>保存</translation>
|
<translation>保存</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="191"/>
|
<location filename="../dialog/mainwindow.cpp" line="204"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="398"/>
|
<location filename="../dialog/mainwindow.cpp" line="403"/>
|
||||||
<source>SaveAs</source>
|
<source>SaveAs</source>
|
||||||
<translation>另存为</translation>
|
<translation>另存为</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="194"/>
|
<location filename="../dialog/mainwindow.cpp" line="207"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="400"/>
|
<location filename="../dialog/mainwindow.cpp" line="405"/>
|
||||||
<source>Export</source>
|
<source>Export</source>
|
||||||
<translation>导出</translation>
|
<translation>导出</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="197"/>
|
<location filename="../dialog/mainwindow.cpp" line="210"/>
|
||||||
<source>SaveSel</source>
|
<source>SaveSel</source>
|
||||||
<translation>保存选区字节</translation>
|
<translation>保存选区字节</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="200"/>
|
<location filename="../dialog/mainwindow.cpp" line="213"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="404"/>
|
<location filename="../dialog/mainwindow.cpp" line="409"/>
|
||||||
<source>OpenWorkSpace</source>
|
<source>OpenWorkSpace</source>
|
||||||
<translation>打开工作区</translation>
|
<translation>打开工作区</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="202"/>
|
<location filename="../dialog/mainwindow.cpp" line="215"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="406"/>
|
<location filename="../dialog/mainwindow.cpp" line="411"/>
|
||||||
<source>SaveWorkSpace</source>
|
<source>SaveWorkSpace</source>
|
||||||
<translation>保存工作区</translation>
|
<translation>保存工作区</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="205"/>
|
<location filename="../dialog/mainwindow.cpp" line="218"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="409"/>
|
<location filename="../dialog/mainwindow.cpp" line="414"/>
|
||||||
<source>SaveAsWorkSpace</source>
|
<source>SaveAsWorkSpace</source>
|
||||||
<translation>另存为工作区</translation>
|
<translation>另存为工作区</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="209"/>
|
<location filename="../dialog/mainwindow.cpp" line="222"/>
|
||||||
<source>Exit</source>
|
<source>Exit</source>
|
||||||
<translation>退出</translation>
|
<translation>退出</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="214"/>
|
<location filename="../dialog/mainwindow.cpp" line="227"/>
|
||||||
<source>Edit</source>
|
<source>Edit</source>
|
||||||
<translation>编辑</translation>
|
<translation>编辑</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="216"/>
|
<location filename="../dialog/mainwindow.cpp" line="229"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="328"/>
|
<location filename="../dialog/mainwindow.cpp" line="283"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="412"/>
|
<location filename="../dialog/mainwindow.cpp" line="417"/>
|
||||||
|
<location filename="../dialog/mainwindow.cpp" line="477"/>
|
||||||
<source>Undo</source>
|
<source>Undo</source>
|
||||||
<translation>撤销</translation>
|
<translation>撤销</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="219"/>
|
<location filename="../dialog/mainwindow.cpp" line="232"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="331"/>
|
<location filename="../dialog/mainwindow.cpp" line="286"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="414"/>
|
<location filename="../dialog/mainwindow.cpp" line="419"/>
|
||||||
|
<location filename="../dialog/mainwindow.cpp" line="479"/>
|
||||||
<source>Redo</source>
|
<source>Redo</source>
|
||||||
<translation>恢复</translation>
|
<translation>恢复</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="223"/>
|
<location filename="../dialog/mainwindow.cpp" line="236"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="335"/>
|
<location filename="../dialog/mainwindow.cpp" line="356"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="436"/>
|
<location filename="../dialog/mainwindow.cpp" line="443"/>
|
||||||
<source>Cut</source>
|
<source>Cut</source>
|
||||||
<translation>剪切</translation>
|
<translation>剪切</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="226"/>
|
<location filename="../dialog/mainwindow.cpp" line="239"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="337"/>
|
<location filename="../dialog/mainwindow.cpp" line="358"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="436"/>
|
<location filename="../dialog/mainwindow.cpp" line="444"/>
|
||||||
<source>CutHex</source>
|
<source>CutHex</source>
|
||||||
<translation>剪切(十六进制)</translation>
|
<translation>剪切(十六进制)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="229"/>
|
<location filename="../dialog/mainwindow.cpp" line="242"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="339"/>
|
<location filename="../dialog/mainwindow.cpp" line="360"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="438"/>
|
<location filename="../dialog/mainwindow.cpp" line="449"/>
|
||||||
<source>Copy</source>
|
<source>Copy</source>
|
||||||
<translation>复制</translation>
|
<translation>复制</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="232"/>
|
<location filename="../dialog/mainwindow.cpp" line="245"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="341"/>
|
<location filename="../dialog/mainwindow.cpp" line="362"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="439"/>
|
<location filename="../dialog/mainwindow.cpp" line="450"/>
|
||||||
<source>CopyHex</source>
|
<source>CopyHex</source>
|
||||||
<translation>复制(十六进制)</translation>
|
<translation>复制(十六进制)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="235"/>
|
<location filename="../dialog/mainwindow.cpp" line="248"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="343"/>
|
<location filename="../dialog/mainwindow.cpp" line="364"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="440"/>
|
<location filename="../dialog/mainwindow.cpp" line="455"/>
|
||||||
<source>Paste</source>
|
<source>Paste</source>
|
||||||
<translation>粘贴</translation>
|
<translation>粘贴</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="238"/>
|
<location filename="../dialog/mainwindow.cpp" line="251"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="345"/>
|
<location filename="../dialog/mainwindow.cpp" line="366"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="441"/>
|
<location filename="../dialog/mainwindow.cpp" line="456"/>
|
||||||
<source>PasteHex</source>
|
<source>PasteHex</source>
|
||||||
<translation>粘贴(十六进制)</translation>
|
<translation>粘贴(十六进制)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="241"/>
|
<location filename="../dialog/mainwindow.cpp" line="254"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="347"/>
|
<location filename="../dialog/mainwindow.cpp" line="368"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="443"/>
|
<location filename="../dialog/mainwindow.cpp" line="460"/>
|
||||||
<source>Delete</source>
|
<source>Delete</source>
|
||||||
<translation>删除</translation>
|
<translation>删除</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="245"/>
|
<location filename="../dialog/mainwindow.cpp" line="258"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="350"/>
|
<location filename="../dialog/mainwindow.cpp" line="371"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="446"/>
|
<location filename="../dialog/mainwindow.cpp" line="463"/>
|
||||||
<source>Find</source>
|
<source>Find</source>
|
||||||
<translation>查找</translation>
|
<translation>查找</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="248"/>
|
<location filename="../dialog/mainwindow.cpp" line="261"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="352"/>
|
<location filename="../dialog/mainwindow.cpp" line="373"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="448"/>
|
<location filename="../dialog/mainwindow.cpp" line="465"/>
|
||||||
<source>Goto</source>
|
<source>Goto</source>
|
||||||
<translation>跳转</translation>
|
<translation>跳转</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="252"/>
|
<location filename="../dialog/mainwindow.cpp" line="265"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="354"/>
|
<location filename="../dialog/mainwindow.cpp" line="374"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="495"/>
|
<location filename="../dialog/mainwindow.cpp" line="470"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2303"/>
|
<location filename="../dialog/mainwindow.cpp" line="2303"/>
|
||||||
<source>Fill</source>
|
<source>Fill</source>
|
||||||
<translation>填充</translation>
|
<translation>填充</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="255"/>
|
<location filename="../dialog/mainwindow.cpp" line="268"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="355"/>
|
<location filename="../dialog/mainwindow.cpp" line="471"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="495"/>
|
|
||||||
<source>FillNop</source>
|
<source>FillNop</source>
|
||||||
<translation>填充 nop</translation>
|
<translation>填充 nop</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="258"/>
|
<location filename="../dialog/mainwindow.cpp" line="271"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="357"/>
|
<location filename="../dialog/mainwindow.cpp" line="472"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="496"/>
|
|
||||||
<source>FillZero</source>
|
<source>FillZero</source>
|
||||||
<translation>填充零</translation>
|
<translation>填充零</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="262"/>
|
<location filename="../dialog/mainwindow.cpp" line="290"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="360"/>
|
<location filename="../dialog/mainwindow.cpp" line="375"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="498"/>
|
<location filename="../dialog/mainwindow.cpp" line="482"/>
|
||||||
<source>MetaData</source>
|
<source>MetaData</source>
|
||||||
<translation>添加标注</translation>
|
<translation>添加标注</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="265"/>
|
<location filename="../dialog/mainwindow.cpp" line="296"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="362"/>
|
<location filename="../dialog/mainwindow.cpp" line="485"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="500"/>
|
|
||||||
<source>DeleteMetaData</source>
|
<source>DeleteMetaData</source>
|
||||||
<translation>删除标注</translation>
|
<translation>删除标注</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="268"/>
|
<location filename="../dialog/mainwindow.cpp" line="299"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="364"/>
|
<location filename="../dialog/mainwindow.cpp" line="487"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="501"/>
|
|
||||||
<source>ClearMetaData</source>
|
<source>ClearMetaData</source>
|
||||||
<translation>清空标注</translation>
|
<translation>清空标注</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="272"/>
|
<location filename="../dialog/mainwindow.cpp" line="303"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="367"/>
|
<location filename="../dialog/mainwindow.cpp" line="377"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="503"/>
|
<location filename="../dialog/mainwindow.cpp" line="493"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="741"/>
|
<location filename="../dialog/mainwindow.cpp" line="733"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2212"/>
|
<location filename="../dialog/mainwindow.cpp" line="2214"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2219"/>
|
<location filename="../dialog/mainwindow.cpp" line="2221"/>
|
||||||
<source>BookMark</source>
|
<source>BookMark</source>
|
||||||
<translation>书签</translation>
|
<translation>书签</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="275"/>
|
<location filename="../dialog/mainwindow.cpp" line="306"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="369"/>
|
<location filename="../dialog/mainwindow.cpp" line="494"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="504"/>
|
|
||||||
<source>DeleteBookMark</source>
|
<source>DeleteBookMark</source>
|
||||||
<translation>删除书签</translation>
|
<translation>删除书签</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="278"/>
|
<location filename="../dialog/mainwindow.cpp" line="309"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="371"/>
|
<location filename="../dialog/mainwindow.cpp" line="496"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="505"/>
|
|
||||||
<source>ClearBookMark</source>
|
<source>ClearBookMark</source>
|
||||||
<translation>清空书签</translation>
|
<translation>清空书签</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="282"/>
|
<location filename="../dialog/mainwindow.cpp" line="275"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="374"/>
|
<location filename="../dialog/mainwindow.cpp" line="379"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="507"/>
|
<location filename="../dialog/mainwindow.cpp" line="501"/>
|
||||||
<source>Encoding</source>
|
<source>Encoding</source>
|
||||||
<translation>编码</translation>
|
<translation>编码</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="288"/>
|
<location filename="../dialog/mainwindow.cpp" line="315"/>
|
||||||
<source>Setting</source>
|
<source>Setting</source>
|
||||||
<translation>设置</translation>
|
<translation>设置</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="290"/>
|
<location filename="../dialog/mainwindow.cpp" line="317"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="510"/>
|
<location filename="../dialog/mainwindow.cpp" line="504"/>
|
||||||
<source>General</source>
|
<source>General</source>
|
||||||
<translation>基本设置</translation>
|
<translation>基本设置</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="292"/>
|
<location filename="../dialog/mainwindow.cpp" line="319"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="300"/>
|
<location filename="../dialog/mainwindow.cpp" line="327"/>
|
||||||
<source>Plugin</source>
|
<source>Plugin</source>
|
||||||
<translation>插件</translation>
|
<translation>插件</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="295"/>
|
<location filename="../dialog/mainwindow.cpp" line="322"/>
|
||||||
<source>RestoreLayout</source>
|
<source>RestoreLayout</source>
|
||||||
<translation>恢复默认布局</translation>
|
<translation>恢复默认布局</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="302"/>
|
<location filename="../dialog/mainwindow.cpp" line="329"/>
|
||||||
<source>LoadPlugin</source>
|
<source>LoadPlugin</source>
|
||||||
<translation>加载外部插件</translation>
|
<translation>加载外部插件</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="309"/>
|
<location filename="../dialog/mainwindow.cpp" line="336"/>
|
||||||
<source>Author</source>
|
<source>Author</source>
|
||||||
<translation>作者</translation>
|
<translation>作者</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="311"/>
|
<location filename="../dialog/mainwindow.cpp" line="338"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="511"/>
|
<location filename="../dialog/mainwindow.cpp" line="505"/>
|
||||||
<source>About</source>
|
<source>About</source>
|
||||||
<translation>关于</translation>
|
<translation>关于</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="312"/>
|
<location filename="../dialog/mainwindow.cpp" line="339"/>
|
||||||
<source>Sponsor</source>
|
<source>Sponsor</source>
|
||||||
<translation>赞助</translation>
|
<translation>赞助</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="499"/>
|
<location filename="../dialog/mainwindow.cpp" line="293"/>
|
||||||
|
<location filename="../dialog/mainwindow.cpp" line="483"/>
|
||||||
<source>MetaDataEdit</source>
|
<source>MetaDataEdit</source>
|
||||||
<translation>编辑标记</translation>
|
<translation>编辑标记</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="551"/>
|
<location filename="../dialog/mainwindow.cpp" line="281"/>
|
||||||
|
<source>Mark</source>
|
||||||
|
<translation>标记</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../dialog/mainwindow.cpp" line="340"/>
|
||||||
|
<source>Wiki</source>
|
||||||
|
<translation>网页 Wiki</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../dialog/mainwindow.cpp" line="545"/>
|
||||||
<source>SetaddressBase</source>
|
<source>SetaddressBase</source>
|
||||||
<translation>设置基址</translation>
|
<translation>设置基址</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="554"/>
|
<location filename="../dialog/mainwindow.cpp" line="548"/>
|
||||||
<source>addressBase</source>
|
<source>addressBase</source>
|
||||||
<translation>基址</translation>
|
<translation>基址</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="554"/>
|
<location filename="../dialog/mainwindow.cpp" line="548"/>
|
||||||
<source>inputAddressBase</source>
|
<source>inputAddressBase</source>
|
||||||
<translation>请输入基址</translation>
|
<translation>请输入基址</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="562"/>
|
<location filename="../dialog/mainwindow.cpp" line="556"/>
|
||||||
<source>ErrBaseAddress</source>
|
<source>ErrBaseAddress</source>
|
||||||
<translation>非法基址输入</translation>
|
<translation>非法基址输入</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="568"/>
|
<location filename="../dialog/mainwindow.cpp" line="562"/>
|
||||||
<source>SetColInfo</source>
|
<source>SetColInfo</source>
|
||||||
<translation>显示/隐藏地址栏</translation>
|
<translation>显示/隐藏地址栏</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="572"/>
|
<location filename="../dialog/mainwindow.cpp" line="566"/>
|
||||||
<source>SetHeaderInfo</source>
|
<source>SetHeaderInfo</source>
|
||||||
<translation>显示/隐藏表头</translation>
|
<translation>显示/隐藏表头</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="576"/>
|
<location filename="../dialog/mainwindow.cpp" line="570"/>
|
||||||
<source>SetAsciiString</source>
|
<source>SetAsciiString</source>
|
||||||
<translation>显示/隐藏解码字符串</translation>
|
<translation>显示/隐藏解码字符串</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="581"/>
|
<location filename="../dialog/mainwindow.cpp" line="575"/>
|
||||||
<source>loc:</source>
|
<source>loc:</source>
|
||||||
<translation>坐标:</translation>
|
<translation>坐标:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="593"/>
|
<location filename="../dialog/mainwindow.cpp" line="582"/>
|
||||||
<source>sel:</source>
|
<source>sel:</source>
|
||||||
<translation>选长:</translation>
|
<translation>选长:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="628"/>
|
<location filename="../dialog/mainwindow.cpp" line="604"/>
|
||||||
|
<source>InfoSave</source>
|
||||||
|
<translation>是否保存</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../dialog/mainwindow.cpp" line="607"/>
|
||||||
|
<source>InfoReadWrite</source>
|
||||||
|
<translation>是否可写</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../dialog/mainwindow.cpp" line="609"/>
|
||||||
|
<source>InfoWorks</source>
|
||||||
|
<translation>是否保存工作区</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../dialog/mainwindow.cpp" line="620"/>
|
||||||
<source>SetLocked</source>
|
<source>SetLocked</source>
|
||||||
<translation>启用/禁用锁定编辑</translation>
|
<translation>启用/禁用锁定编辑</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="632"/>
|
<location filename="../dialog/mainwindow.cpp" line="624"/>
|
||||||
<source>SetOver</source>
|
<source>SetOver</source>
|
||||||
<translation>启用/禁用改变大小</translation>
|
<translation>启用/禁用改变大小</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="637"/>
|
<location filename="../dialog/mainwindow.cpp" line="629"/>
|
||||||
<source>ErrUnLock</source>
|
<source>ErrUnLock</source>
|
||||||
<translation>锁定编辑失败</translation>
|
<translation>锁定编辑失败</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="644"/>
|
<location filename="../dialog/mainwindow.cpp" line="636"/>
|
||||||
<source>ErrUnOver</source>
|
<source>ErrUnOver</source>
|
||||||
<translation>锁定文件大小失败</translation>
|
<translation>锁定文件大小失败</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="654"/>
|
<location filename="../dialog/mainwindow.cpp" line="646"/>
|
||||||
<source>ExportFindResult</source>
|
<source>ExportFindResult</source>
|
||||||
<translation>导出搜索结果</translation>
|
<translation>导出搜索结果</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="656"/>
|
<location filename="../dialog/mainwindow.cpp" line="648"/>
|
||||||
<source>ClearFindResult</source>
|
<source>ClearFindResult</source>
|
||||||
<translation>清空记录</translation>
|
<translation>清空记录</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="666"/>
|
<location filename="../dialog/mainwindow.cpp" line="658"/>
|
||||||
<source>file</source>
|
<source>file</source>
|
||||||
<translation>文件名</translation>
|
<translation>文件名</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="666"/>
|
<location filename="../dialog/mainwindow.cpp" line="658"/>
|
||||||
<source>addr</source>
|
<source>addr</source>
|
||||||
<translation>地址偏移</translation>
|
<translation>地址偏移</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="666"/>
|
<location filename="../dialog/mainwindow.cpp" line="658"/>
|
||||||
<source>value</source>
|
<source>value</source>
|
||||||
<translation>搜索值</translation>
|
<translation>搜索值</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="689"/>
|
<location filename="../dialog/mainwindow.cpp" line="681"/>
|
||||||
<source>FindResult</source>
|
<source>FindResult</source>
|
||||||
<translation>搜索结果</translation>
|
<translation>搜索结果</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="696"/>
|
<location filename="../dialog/mainwindow.cpp" line="688"/>
|
||||||
<source>Log</source>
|
<source>Log</source>
|
||||||
<translation>日志</translation>
|
<translation>日志</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="706"/>
|
<location filename="../dialog/mainwindow.cpp" line="698"/>
|
||||||
<source>LoggerInitFinish</source>
|
<source>LoggerInitFinish</source>
|
||||||
<translation>日志系统初始化完毕</translation>
|
<translation>日志系统初始化完毕</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1720"/>
|
<location filename="../dialog/mainwindow.cpp" line="1743"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1731"/>
|
<location filename="../dialog/mainwindow.cpp" line="1754"/>
|
||||||
<source>CutToClipBoard</source>
|
<source>CutToClipBoard</source>
|
||||||
<translation>数据已剪切到粘贴板!</translation>
|
<translation>数据已剪切到粘贴板!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1723"/>
|
<location filename="../dialog/mainwindow.cpp" line="1746"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1734"/>
|
<location filename="../dialog/mainwindow.cpp" line="1757"/>
|
||||||
<source>UnCutToClipBoard</source>
|
<source>UnCutToClipBoard</source>
|
||||||
<translation>由于保持大小限制,数据剪切到粘贴板失败!</translation>
|
<translation>由于保持大小限制,数据剪切到粘贴板失败!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1742"/>
|
<location filename="../dialog/mainwindow.cpp" line="1765"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1749"/>
|
<location filename="../dialog/mainwindow.cpp" line="1772"/>
|
||||||
<source>CopyToClipBoard</source>
|
<source>CopyToClipBoard</source>
|
||||||
<translation>数据已拷贝到粘贴板</translation>
|
<translation>数据已拷贝到粘贴板</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1903"/>
|
<location filename="../dialog/mainwindow.cpp" line="1926"/>
|
||||||
<source>TooMuchFindResult</source>
|
<source>TooMuchFindResult</source>
|
||||||
<translation>搜索结果数量达到限制,结果可能不完整!</translation>
|
<translation>搜索结果数量达到限制,结果可能不完整!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1909"/>
|
<location filename="../dialog/mainwindow.cpp" line="1932"/>
|
||||||
<source>FindFininishError</source>
|
<source>FindFininishError</source>
|
||||||
<translation>正在搜索中,无法创建新的搜索!</translation>
|
<translation>正在搜索中,无法创建新的搜索!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2137"/>
|
<location filename="../dialog/mainwindow.cpp" line="2143"/>
|
||||||
<source>NoMetaData</source>
|
<source>NoMetaData</source>
|
||||||
<translation>无可编辑标记</translation>
|
<translation>无可编辑标记</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -553,18 +575,18 @@
|
||||||
<translation>导出结果失败!</translation>
|
<translation>导出结果失败!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2415"/>
|
<location filename="../dialog/mainwindow.cpp" line="2420"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2470"/>
|
<location filename="../dialog/mainwindow.cpp" line="2475"/>
|
||||||
<source>ProjectFile (*.wingpro)</source>
|
<source>ProjectFile (*.wingpro)</source>
|
||||||
<translation>项目文件 (*.wingpro)</translation>
|
<translation>项目文件 (*.wingpro)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2466"/>
|
<location filename="../dialog/mainwindow.cpp" line="2471"/>
|
||||||
<source>Warn</source>
|
<source>Warn</source>
|
||||||
<translation>警告</translation>
|
<translation>警告</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2466"/>
|
<location filename="../dialog/mainwindow.cpp" line="2471"/>
|
||||||
<source>PleaseSaveNewFile</source>
|
<source>PleaseSaveNewFile</source>
|
||||||
<translation>请保存文件后继续!</translation>
|
<translation>请保存文件后继续!</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -573,42 +595,42 @@
|
||||||
<translation type="vanished">类型</translation>
|
<translation type="vanished">类型</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="713"/>
|
<location filename="../dialog/mainwindow.cpp" line="705"/>
|
||||||
<source>Value</source>
|
<source>Value</source>
|
||||||
<translation>值</translation>
|
<translation>值</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="727"/>
|
<location filename="../dialog/mainwindow.cpp" line="719"/>
|
||||||
<source>Number</source>
|
<source>Number</source>
|
||||||
<translation>数值</translation>
|
<translation>数值</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="789"/>
|
<location filename="../dialog/mainwindow.cpp" line="805"/>
|
||||||
<source>SettingLoading</source>
|
<source>SettingLoading</source>
|
||||||
<translation>设置加载中……</translation>
|
<translation>设置加载中……</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="849"/>
|
<location filename="../dialog/mainwindow.cpp" line="865"/>
|
||||||
<source>PluginLoading</source>
|
<source>PluginLoading</source>
|
||||||
<translation>正在加载插件……</translation>
|
<translation>正在加载插件……</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="863"/>
|
<location filename="../dialog/mainwindow.cpp" line="879"/>
|
||||||
<source>UnLoadPluginSetting</source>
|
<source>UnLoadPluginSetting</source>
|
||||||
<translation>因在设置中禁用插件导致无法加载!</translation>
|
<translation>因在设置中禁用插件导致无法加载!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="883"/>
|
<location filename="../dialog/mainwindow.cpp" line="899"/>
|
||||||
<source>MenuName :</source>
|
<source>MenuName :</source>
|
||||||
<translation>菜单名称:</translation>
|
<translation>菜单名称:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="891"/>
|
<location filename="../dialog/mainwindow.cpp" line="907"/>
|
||||||
<source>DockWidgetName :</source>
|
<source>DockWidgetName :</source>
|
||||||
<translation>停靠组件名:</translation>
|
<translation>停靠组件名:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1363"/>
|
<location filename="../dialog/mainwindow.cpp" line="1379"/>
|
||||||
<source>Untitled</source>
|
<source>Untitled</source>
|
||||||
<translation>未命名</translation>
|
<translation>未命名</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -627,105 +649,105 @@
|
||||||
<translation type="vanished">由于你目前处于 ROOT 状态,故默认锁定文件!请为自己的修改负责!</translation>
|
<translation type="vanished">由于你目前处于 ROOT 状态,故默认锁定文件!请为自己的修改负责!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1767"/>
|
<location filename="../dialog/mainwindow.cpp" line="1790"/>
|
||||||
<source>DriverOpenErrorTip</source>
|
<source>DriverOpenErrorTip</source>
|
||||||
<translation>打开驱动器失败</translation>
|
<translation>打开驱动器失败</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1585"/>
|
<location filename="../dialog/mainwindow.cpp" line="1601"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1670"/>
|
<location filename="../dialog/mainwindow.cpp" line="1693"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1685"/>
|
<location filename="../dialog/mainwindow.cpp" line="1708"/>
|
||||||
<source>Error</source>
|
<source>Error</source>
|
||||||
<translation>错误</translation>
|
<translation>错误</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1585"/>
|
<location filename="../dialog/mainwindow.cpp" line="1601"/>
|
||||||
<source>NoRoot</source>
|
<source>NoRoot</source>
|
||||||
<translation>无 root 权限,无法继续的操作!</translation>
|
<translation>无 root 权限,无法继续的操作!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1666"/>
|
<location filename="../dialog/mainwindow.cpp" line="1689"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2415"/>
|
<location filename="../dialog/mainwindow.cpp" line="2420"/>
|
||||||
<source>ChooseFile</source>
|
<source>ChooseFile</source>
|
||||||
<translation>选择文件</translation>
|
<translation>选择文件</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1670"/>
|
<location filename="../dialog/mainwindow.cpp" line="1693"/>
|
||||||
<source>FileNotExist</source>
|
<source>FileNotExist</source>
|
||||||
<translation>文件不存在!</translation>
|
<translation>文件不存在!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1685"/>
|
<location filename="../dialog/mainwindow.cpp" line="1708"/>
|
||||||
<source>FilePermission</source>
|
<source>FilePermission</source>
|
||||||
<translation>因文件权限无法继续!</translation>
|
<translation>因文件权限无法继续!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1696"/>
|
<location filename="../dialog/mainwindow.cpp" line="1719"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1789"/>
|
<location filename="../dialog/mainwindow.cpp" line="1812"/>
|
||||||
<source>Close</source>
|
<source>Close</source>
|
||||||
<translation>关闭</translation>
|
<translation>关闭</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1697"/>
|
<location filename="../dialog/mainwindow.cpp" line="1720"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1790"/>
|
<location filename="../dialog/mainwindow.cpp" line="1813"/>
|
||||||
<source>ConfirmSave</source>
|
<source>ConfirmSave</source>
|
||||||
<translation>正在关闭未保存的文件,你确定抛弃继续吗?</translation>
|
<translation>正在关闭未保存的文件或工作区,你确定抛弃继续吗?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1773"/>
|
<location filename="../dialog/mainwindow.cpp" line="1796"/>
|
||||||
<source>ChooseExportFile</source>
|
<source>ChooseExportFile</source>
|
||||||
<translation>请选择导出文件路径:</translation>
|
<translation>请选择导出文件路径:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1812"/>
|
<location filename="../dialog/mainwindow.cpp" line="1835"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1831"/>
|
<location filename="../dialog/mainwindow.cpp" line="1854"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2455"/>
|
<location filename="../dialog/mainwindow.cpp" line="2460"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2479"/>
|
<location filename="../dialog/mainwindow.cpp" line="2484"/>
|
||||||
<source>SaveSuccessfully</source>
|
<source>SaveSuccessfully</source>
|
||||||
<translation>保存成功!</translation>
|
<translation>保存成功!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1815"/>
|
<location filename="../dialog/mainwindow.cpp" line="1838"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1834"/>
|
<location filename="../dialog/mainwindow.cpp" line="1857"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2420"/>
|
<location filename="../dialog/mainwindow.cpp" line="2425"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2458"/>
|
<location filename="../dialog/mainwindow.cpp" line="2463"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2482"/>
|
<location filename="../dialog/mainwindow.cpp" line="2487"/>
|
||||||
<source>SaveUnSuccessfully</source>
|
<source>SaveUnSuccessfully</source>
|
||||||
<translation>保存失败</translation>
|
<translation>保存失败</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1826"/>
|
<location filename="../dialog/mainwindow.cpp" line="1849"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2023"/>
|
<location filename="../dialog/mainwindow.cpp" line="2033"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2361"/>
|
<location filename="../dialog/mainwindow.cpp" line="2361"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2470"/>
|
<location filename="../dialog/mainwindow.cpp" line="2475"/>
|
||||||
<source>ChooseSaveFile</source>
|
<source>ChooseSaveFile</source>
|
||||||
<translation>请选择保存文件路径:</translation>
|
<translation>请选择保存文件路径:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="1906"/>
|
<location filename="../dialog/mainwindow.cpp" line="1929"/>
|
||||||
<source>FindFininish</source>
|
<source>FindFininish</source>
|
||||||
<translation>查找结果完毕!</translation>
|
<translation>查找结果完毕!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2033"/>
|
<location filename="../dialog/mainwindow.cpp" line="2043"/>
|
||||||
<source>SaveSelError</source>
|
<source>SaveSelError</source>
|
||||||
<translation>保存选区字节失败,因文件不具有可写权限!</translation>
|
<translation>保存选区字节失败,因文件不具有可写权限!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2046"/>
|
<location filename="../dialog/mainwindow.cpp" line="2056"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2225"/>
|
<location filename="../dialog/mainwindow.cpp" line="2227"/>
|
||||||
<source>Addr : 0x%1</source>
|
<source>Addr : 0x%1</source>
|
||||||
<translation>地址:0x%1</translation>
|
<translation>地址:0x%1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2141"/>
|
<location filename="../dialog/mainwindow.cpp" line="2147"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2179"/>
|
<location filename="../dialog/mainwindow.cpp" line="2181"/>
|
||||||
<source>NoSelection</source>
|
<source>NoSelection</source>
|
||||||
<translation>没有选区,无法继续的操作!</translation>
|
<translation>没有选区,无法继续的操作!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2212"/>
|
<location filename="../dialog/mainwindow.cpp" line="2214"/>
|
||||||
<location filename="../dialog/mainwindow.cpp" line="2219"/>
|
<location filename="../dialog/mainwindow.cpp" line="2221"/>
|
||||||
<source>InputComment</source>
|
<source>InputComment</source>
|
||||||
<translation>请输入评语:</translation>
|
<translation>请输入评语:</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
|
@ -70,6 +70,8 @@
|
||||||
<file>images/unworks.png</file>
|
<file>images/unworks.png</file>
|
||||||
<file>images/metaredo.png</file>
|
<file>images/metaredo.png</file>
|
||||||
<file>images/metaundo.png</file>
|
<file>images/metaundo.png</file>
|
||||||
|
<file>images/mark.png</file>
|
||||||
|
<file>images/wiki.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
<qresource prefix="/resources">
|
<qresource prefix="/resources">
|
||||||
<file>settings.json</file>
|
<file>settings.json</file>
|
||||||
|
|
11
更新日志.log
11
更新日志.log
|
@ -36,3 +36,14 @@ v1.2:
|
||||||
14. 增加搜索方向和选区,充分发挥搜索功能
|
14. 增加搜索方向和选区,充分发挥搜索功能
|
||||||
15. 增加以十六进制的形式拷贝、剪切、复制
|
15. 增加以十六进制的形式拷贝、剪切、复制
|
||||||
16. 修复插件禁用时,因未禁用打开插件对话框会导致程序崩溃问题。
|
16. 修复插件禁用时,因未禁用打开插件对话框会导致程序崩溃问题。
|
||||||
|
|
||||||
|
v1.3:
|
||||||
|
1. 工具栏简化,方便使用,菜单整改
|
||||||
|
2. 增加标记功能的恢复和撤销(注意标记的撤销和恢复和十六进制编辑的是独立的)
|
||||||
|
3. 增加标记编辑功能
|
||||||
|
4. 修复标记保存导致再次打开项目零碎标记的 Bug ,这会使得读取 v1.2.0 的工程时的标记数据丢失,不兼容
|
||||||
|
5. 简化右键菜单,删除不必要的右键
|
||||||
|
6. 增加项目保存提示
|
||||||
|
7. 修复第一行背景色标注超出的 Bug
|
||||||
|
8. 增加遗漏的人性化提示
|
||||||
|
9. 重构代码,提高效率
|
||||||
|
|
Loading…
Reference in New Issue