修复Bug,增加功能

This commit is contained in:
寂静的羽夏 2022-06-18 20:27:02 +08:00
parent 520255e402
commit f19cc61370
17 changed files with 409 additions and 296 deletions

View File

@ -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);
} }

View File

@ -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;
} }

View File

@ -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();

View File

@ -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 {
// fix the bug by wingsummer
if (firstRow != lastRow)
length = m_lineWidth - start;
else
length = m_lineWidth; 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});

View File

@ -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;

View File

@ -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);

View File

@ -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) {

View File

@ -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);
/*=============================*/ /*=============================*/

View File

@ -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();

View File

@ -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.

View File

@ -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>

View File

@ -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>

View File

@ -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. 重构代码,提高效率