增加导出搜索结果功能

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

@ -48,4 +48,4 @@ HEADERS += \
TRANSLATIONS += \
$$PWD/lang/zh.ts
$$PWD/lang/zh.ts

View File

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

View File

@ -572,6 +572,8 @@ MainWindow::MainWindow(DMainWindow *parent) {
setDockNestingEnabled(true);
findresultMenu = new DMenu(this);
AddMenuAction("export", tr("ExportFindResult"),
MainWindow::on_exportfindresult, findresultMenu);
AddMenuAction("del", tr("ClearFindResult"), MainWindow::on_clearfindresult,
findresultMenu);
@ -2168,6 +2170,38 @@ void MainWindow::on_clearfindresult() {
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() {
SponsorDialog d;
d.exec();
@ -2178,19 +2212,21 @@ void MainWindow::on_about() {
d.exec();
}
bool MainWindow::openWorkSpace(QString filename) {
ErrFile MainWindow::openWorkSpace(QString filename) {
QString file;
QList<BookMarkStruct> bookmarks;
QHash<quint64, QHexLineMetadata> metas;
auto res = ErrFile::Error;
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();
doc->applyBookMarks(bookmarks);
on_documentSwitched();
doc->metadata()->applyMetas(metas);
return true;
}
return false;
return res;
}
void MainWindow::on_openworkspace() {
@ -2198,7 +2234,7 @@ void MainWindow::on_openworkspace() {
this, tr("ChooseFile"), QString(), tr("ProjectFile (*.wingpro)"));
if (filename.isEmpty())
return;
if (!openWorkSpace(filename))
if (openWorkSpace(filename) != ErrFile::Success)
DMessageManager::instance()->sendMessage(this, ICONRES("workspace"),
tr("SaveUnSuccessfully"));
}

View File

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

View File

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