增加导出搜索结果功能
This commit is contained in:
parent
1588fb6dda
commit
c0e707957a
|
@ -48,4 +48,4 @@ HEADERS += \
|
|||
|
||||
|
||||
TRANSLATIONS += \
|
||||
$$PWD/lang/zh.ts
|
||||
$$PWD/lang/zh.ts
|
||||
|
|
|
@ -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()))) {
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
|
|
|
@ -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.
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue