增加导出搜索结果功能

This commit is contained in:
寂静的羽夏 2022-06-14 16:03:59 +08:00
parent 1588fb6dda
commit c0e707957a
7 changed files with 132 additions and 72 deletions

View File

@ -16,7 +16,8 @@ AppManager *AppManager::instance() {
void AppManager::openFiles(QStringList files) { void AppManager::openFiles(QStringList files) {
if (mWindow) { if (mWindow) {
for (auto file : files) { for (auto file : files) {
mWindow->openFile(file); if (mWindow->openWorkSpace(file) != ErrFile::Success)
mWindow->openFile(file);
} }
//通过dbus接口从任务栏激活窗口 //通过dbus接口从任务栏激活窗口
if (!Q_LIKELY(Utilities::activeWindowFromDock(mWindow->winId()))) { if (!Q_LIKELY(Utilities::activeWindowFromDock(mWindow->winId()))) {

View File

@ -572,6 +572,8 @@ MainWindow::MainWindow(DMainWindow *parent) {
setDockNestingEnabled(true); setDockNestingEnabled(true);
findresultMenu = new DMenu(this); findresultMenu = new DMenu(this);
AddMenuAction("export", tr("ExportFindResult"),
MainWindow::on_exportfindresult, findresultMenu);
AddMenuAction("del", tr("ClearFindResult"), MainWindow::on_clearfindresult, AddMenuAction("del", tr("ClearFindResult"), MainWindow::on_clearfindresult,
findresultMenu); findresultMenu);
@ -2168,6 +2170,38 @@ void MainWindow::on_clearfindresult() {
findresitem = nullptr; findresitem = nullptr;
} }
void MainWindow::on_exportfindresult() {
auto c = findresult->rowCount();
if (c == 0) {
DMessageManager::instance()->sendMessage(this, ICONRES("export"),
tr("EmptyFindResult"));
return;
}
auto filename = QFileDialog::getSaveFileName(this, tr("ChooseSaveFile"));
if (filename.isEmpty())
return;
QFile f(filename);
if (f.open(QFile::WriteOnly)) {
QJsonArray arr;
for (int i = 0; i < c; i++) {
QJsonObject jobj;
jobj.insert("file", findresitem[i][0].text());
jobj.insert("offset", findresitem[i][1].text());
jobj.insert("value", findresitem[i][2].text());
arr.append(jobj);
}
QJsonDocument doc(arr);
if (f.write(doc.toJson(QJsonDocument::JsonFormat::Indented)) >= 0) {
f.close();
DMessageManager::instance()->sendMessage(this, ICONRES("export"),
tr("SaveFindResult"));
}
} else {
DMessageManager::instance()->sendMessage(this, ICONRES("export"),
tr("SaveFindResultError"));
}
}
void MainWindow::on_sponsor() { void MainWindow::on_sponsor() {
SponsorDialog d; SponsorDialog d;
d.exec(); d.exec();
@ -2178,19 +2212,21 @@ void MainWindow::on_about() {
d.exec(); d.exec();
} }
bool MainWindow::openWorkSpace(QString filename) { ErrFile MainWindow::openWorkSpace(QString filename) {
QString file; QString file;
QList<BookMarkStruct> bookmarks; QList<BookMarkStruct> bookmarks;
QHash<quint64, QHexLineMetadata> metas; QHash<quint64, QHexLineMetadata> metas;
auto res = ErrFile::Error;
if (WorkSpaceManager::loadWorkSpace(filename, file, bookmarks, metas)) { if (WorkSpaceManager::loadWorkSpace(filename, file, bookmarks, metas)) {
openFile(file, false, filename); res = openFile(file, false, filename);
if (res != ErrFile::Success)
return res;
auto doc = hexeditor->document(); auto doc = hexeditor->document();
doc->applyBookMarks(bookmarks); doc->applyBookMarks(bookmarks);
on_documentSwitched(); on_documentSwitched();
doc->metadata()->applyMetas(metas); doc->metadata()->applyMetas(metas);
return true;
} }
return false; return res;
} }
void MainWindow::on_openworkspace() { void MainWindow::on_openworkspace() {
@ -2198,7 +2234,7 @@ void MainWindow::on_openworkspace() {
this, tr("ChooseFile"), QString(), tr("ProjectFile (*.wingpro)")); this, tr("ChooseFile"), QString(), tr("ProjectFile (*.wingpro)"));
if (filename.isEmpty()) if (filename.isEmpty())
return; return;
if (!openWorkSpace(filename)) if (openWorkSpace(filename) != ErrFile::Success)
DMessageManager::instance()->sendMessage(this, ICONRES("workspace"), DMessageManager::instance()->sendMessage(this, ICONRES("workspace"),
tr("SaveUnSuccessfully")); tr("SaveUnSuccessfully"));
} }

View File

@ -114,6 +114,7 @@ private:
public: public:
ErrFile openFile(QString filename, bool readonly = false, ErrFile openFile(QString filename, bool readonly = false,
QString workspace = ""); QString workspace = "");
ErrFile openWorkSpace(QString filename);
private: private:
void newFile(); void newFile();
@ -140,7 +141,6 @@ private:
void cutCurrentBytes(quint64 pos, qint64 len, QByteArray &arr); void cutCurrentBytes(quint64 pos, qint64 len, QByteArray &arr);
void pasteFileBytes(int index, QByteArray arr, qint64 len = -1); void pasteFileBytes(int index, QByteArray arr, qint64 len = -1);
void pasteCurrentBytes(quint64 pos, QByteArray arr, qint64 len = -1); void pasteCurrentBytes(quint64 pos, QByteArray arr, qint64 len = -1);
bool openWorkSpace(QString filename);
bool saveWorkSpace(); bool saveWorkSpace();
bool saveAsWorkSpace(QString filename); bool saveAsWorkSpace(QString filename);
@ -184,6 +184,7 @@ private:
void on_fillnop(); void on_fillnop();
void on_fillzero(); void on_fillzero();
void on_fill(); void on_fill();
void on_exportfindresult();
void on_clearfindresult(); void on_clearfindresult();
void on_loadplg(); void on_loadplg();
void on_encoding(); void on_encoding();

Binary file not shown.

View File

@ -260,7 +260,7 @@
<location filename="../dialog/mainwindow.cpp" line="233"/> <location filename="../dialog/mainwindow.cpp" line="233"/>
<location filename="../dialog/mainwindow.cpp" line="328"/> <location filename="../dialog/mainwindow.cpp" line="328"/>
<location filename="../dialog/mainwindow.cpp" line="404"/> <location filename="../dialog/mainwindow.cpp" line="404"/>
<location filename="../dialog/mainwindow.cpp" line="2120"/> <location filename="../dialog/mainwindow.cpp" line="2122"/>
<source>Fill</source> <source>Fill</source>
<translation></translation> <translation></translation>
</message> </message>
@ -303,9 +303,9 @@
<location filename="../dialog/mainwindow.cpp" line="253"/> <location filename="../dialog/mainwindow.cpp" line="253"/>
<location filename="../dialog/mainwindow.cpp" line="341"/> <location filename="../dialog/mainwindow.cpp" line="341"/>
<location filename="../dialog/mainwindow.cpp" line="420"/> <location filename="../dialog/mainwindow.cpp" line="420"/>
<location filename="../dialog/mainwindow.cpp" line="660"/> <location filename="../dialog/mainwindow.cpp" line="662"/>
<location filename="../dialog/mainwindow.cpp" line="2032"/> <location filename="../dialog/mainwindow.cpp" line="2034"/>
<location filename="../dialog/mainwindow.cpp" line="2039"/> <location filename="../dialog/mainwindow.cpp" line="2041"/>
<source>BookMark</source> <source>BookMark</source>
<translation></translation> <translation></translation>
</message> </message>
@ -440,72 +440,92 @@
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="575"/> <location filename="../dialog/mainwindow.cpp" line="575"/>
<source>ExportFindResult</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="577"/>
<source>ClearFindResult</source> <source>ClearFindResult</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="585"/> <location filename="../dialog/mainwindow.cpp" line="587"/>
<source>file</source> <source>file</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="585"/> <location filename="../dialog/mainwindow.cpp" line="587"/>
<source>addr</source> <source>addr</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="585"/> <location filename="../dialog/mainwindow.cpp" line="587"/>
<source>value</source> <source>value</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="608"/> <location filename="../dialog/mainwindow.cpp" line="610"/>
<source>FindResult</source> <source>FindResult</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="615"/> <location filename="../dialog/mainwindow.cpp" line="617"/>
<source>Log</source> <source>Log</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="625"/> <location filename="../dialog/mainwindow.cpp" line="627"/>
<source>LoggerInitFinish</source> <source>LoggerInitFinish</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1636"/> <location filename="../dialog/mainwindow.cpp" line="1638"/>
<source>CutToClipBoard</source> <source>CutToClipBoard</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1639"/> <location filename="../dialog/mainwindow.cpp" line="1641"/>
<source>UnCutToClipBoard</source> <source>UnCutToClipBoard</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1646"/> <location filename="../dialog/mainwindow.cpp" line="1648"/>
<source>CopyToClipBoard</source> <source>CopyToClipBoard</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1785"/> <location filename="../dialog/mainwindow.cpp" line="1787"/>
<source>TooMuchFindResult</source> <source>TooMuchFindResult</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="2198"/> <location filename="../dialog/mainwindow.cpp" line="2177"/>
<location filename="../dialog/mainwindow.cpp" line="2253"/> <source>EmptyFindResult</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="2197"/>
<source>SaveFindResult</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="2201"/>
<source>SaveFindResultError</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="2234"/>
<location filename="../dialog/mainwindow.cpp" line="2289"/>
<source>ProjectFile (*.wingpro)</source> <source>ProjectFile (*.wingpro)</source>
<translation> (*.wingpro)</translation> <translation> (*.wingpro)</translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="2249"/> <location filename="../dialog/mainwindow.cpp" line="2285"/>
<source>Warn</source> <source>Warn</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="2249"/> <location filename="../dialog/mainwindow.cpp" line="2285"/>
<source>PleaseSaveNewFile</source> <source>PleaseSaveNewFile</source>
<translation></translation> <translation></translation>
</message> </message>
@ -514,52 +534,52 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="632"/> <location filename="../dialog/mainwindow.cpp" line="634"/>
<source>Value</source> <source>Value</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="646"/> <location filename="../dialog/mainwindow.cpp" line="648"/>
<source>Number</source> <source>Number</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="705"/> <location filename="../dialog/mainwindow.cpp" line="707"/>
<source>SettingLoading</source> <source>SettingLoading</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="765"/> <location filename="../dialog/mainwindow.cpp" line="767"/>
<source>PluginLoading</source> <source>PluginLoading</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="779"/> <location filename="../dialog/mainwindow.cpp" line="781"/>
<source>UnLoadPluginSetting</source> <source>UnLoadPluginSetting</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="798"/> <location filename="../dialog/mainwindow.cpp" line="800"/>
<source>MenuName :</source> <source>MenuName :</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="806"/> <location filename="../dialog/mainwindow.cpp" line="808"/>
<source>DockWidgetName :</source> <source>DockWidgetName :</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1279"/> <location filename="../dialog/mainwindow.cpp" line="1281"/>
<source>Untitled</source> <source>Untitled</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="2159"/> <location filename="../dialog/mainwindow.cpp" line="2161"/>
<source>ChoosePlugin</source> <source>ChoosePlugin</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="2159"/> <location filename="../dialog/mainwindow.cpp" line="2161"/>
<source>PluginFile (*.wingplg)</source> <source>PluginFile (*.wingplg)</source>
<translation> (*.wingplg)</translation> <translation> (*.wingplg)</translation>
</message> </message>
@ -568,113 +588,114 @@
<translation type="vanished"> ROOT </translation> <translation type="vanished"> ROOT </translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1658"/> <location filename="../dialog/mainwindow.cpp" line="1660"/>
<source>DriverOpenErrorTip</source> <source>DriverOpenErrorTip</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1501"/> <location filename="../dialog/mainwindow.cpp" line="1503"/>
<location filename="../dialog/mainwindow.cpp" line="1586"/> <location filename="../dialog/mainwindow.cpp" line="1588"/>
<location filename="../dialog/mainwindow.cpp" line="1601"/> <location filename="../dialog/mainwindow.cpp" line="1603"/>
<source>Error</source> <source>Error</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1501"/> <location filename="../dialog/mainwindow.cpp" line="1503"/>
<source>NoRoot</source> <source>NoRoot</source>
<translation> root </translation> <translation> root </translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1582"/> <location filename="../dialog/mainwindow.cpp" line="1584"/>
<location filename="../dialog/mainwindow.cpp" line="2198"/> <location filename="../dialog/mainwindow.cpp" line="2234"/>
<source>ChooseFile</source> <source>ChooseFile</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1586"/> <location filename="../dialog/mainwindow.cpp" line="1588"/>
<source>FileNotExist</source> <source>FileNotExist</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1601"/> <location filename="../dialog/mainwindow.cpp" line="1603"/>
<source>FilePermission</source> <source>FilePermission</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1612"/> <location filename="../dialog/mainwindow.cpp" line="1614"/>
<location filename="../dialog/mainwindow.cpp" line="1680"/> <location filename="../dialog/mainwindow.cpp" line="1682"/>
<source>Close</source> <source>Close</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1613"/> <location filename="../dialog/mainwindow.cpp" line="1615"/>
<location filename="../dialog/mainwindow.cpp" line="1681"/> <location filename="../dialog/mainwindow.cpp" line="1683"/>
<source>ConfirmSave</source> <source>ConfirmSave</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1664"/> <location filename="../dialog/mainwindow.cpp" line="1666"/>
<source>ChooseExportFile</source> <source>ChooseExportFile</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1703"/> <location filename="../dialog/mainwindow.cpp" line="1705"/>
<location filename="../dialog/mainwindow.cpp" line="1722"/> <location filename="../dialog/mainwindow.cpp" line="1724"/>
<location filename="../dialog/mainwindow.cpp" line="2238"/> <location filename="../dialog/mainwindow.cpp" line="2274"/>
<location filename="../dialog/mainwindow.cpp" line="2262"/> <location filename="../dialog/mainwindow.cpp" line="2298"/>
<source>SaveSuccessfully</source> <source>SaveSuccessfully</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1706"/> <location filename="../dialog/mainwindow.cpp" line="1708"/>
<location filename="../dialog/mainwindow.cpp" line="1725"/> <location filename="../dialog/mainwindow.cpp" line="1727"/>
<location filename="../dialog/mainwindow.cpp" line="2203"/> <location filename="../dialog/mainwindow.cpp" line="2239"/>
<location filename="../dialog/mainwindow.cpp" line="2241"/> <location filename="../dialog/mainwindow.cpp" line="2277"/>
<location filename="../dialog/mainwindow.cpp" line="2265"/> <location filename="../dialog/mainwindow.cpp" line="2301"/>
<source>SaveUnSuccessfully</source> <source>SaveUnSuccessfully</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1717"/> <location filename="../dialog/mainwindow.cpp" line="1719"/>
<location filename="../dialog/mainwindow.cpp" line="1897"/> <location filename="../dialog/mainwindow.cpp" line="1899"/>
<location filename="../dialog/mainwindow.cpp" line="2253"/> <location filename="../dialog/mainwindow.cpp" line="2180"/>
<location filename="../dialog/mainwindow.cpp" line="2289"/>
<source>ChooseSaveFile</source> <source>ChooseSaveFile</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1782"/> <location filename="../dialog/mainwindow.cpp" line="1784"/>
<source>FindFininish</source> <source>FindFininish</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1907"/> <location filename="../dialog/mainwindow.cpp" line="1909"/>
<source>SaveSelError</source> <source>SaveSelError</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="1920"/> <location filename="../dialog/mainwindow.cpp" line="1922"/>
<location filename="../dialog/mainwindow.cpp" line="2045"/> <location filename="../dialog/mainwindow.cpp" line="2047"/>
<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="2002"/> <location filename="../dialog/mainwindow.cpp" line="2004"/>
<source>NoSelection</source> <source>NoSelection</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="2032"/> <location filename="../dialog/mainwindow.cpp" line="2034"/>
<location filename="../dialog/mainwindow.cpp" line="2039"/> <location filename="../dialog/mainwindow.cpp" line="2041"/>
<source>InputComment</source> <source>InputComment</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="2120"/> <location filename="../dialog/mainwindow.cpp" line="2122"/>
<source>PleaseInputFill</source> <source>PleaseInputFill</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../dialog/mainwindow.cpp" line="2132"/> <location filename="../dialog/mainwindow.cpp" line="2134"/>
<source>FillInputError</source> <source>FillInputError</source>
<translation></translation> <translation></translation>
</message> </message>

View File

@ -77,7 +77,8 @@ int main(int argc, char *argv[]) {
MainWindow w; MainWindow w;
for (auto item : urls) { for (auto item : urls) {
w.openFile(item); if (w.openWorkSpace(item) != ErrFile::Success)
w.openFile(item);
} }
manager->mWindow = &w; manager->mWindow = &w;