diff --git a/assets/pics/document-open.svg b/assets/pics/document-open.svg
new file mode 100644
index 00000000..5c248041
--- /dev/null
+++ b/assets/pics/document-open.svg
@@ -0,0 +1,13 @@
+
diff --git a/resource.qrc b/resource.qrc
index af75dcc7..4a56db60 100755
--- a/resource.qrc
+++ b/resource.qrc
@@ -31,6 +31,7 @@
assets/pics/deletecell.svg
assets/pics/document-close.svg
assets/pics/document-export.svg
+ assets/pics/document-open.svg
assets/pics/document-new.svg
assets/pics/document-save.svg
assets/pics/globe.svg
diff --git a/src/filelineedit.cpp b/src/filelineedit.cpp
index 511fbe8b..c0b9a937 100644
--- a/src/filelineedit.cpp
+++ b/src/filelineedit.cpp
@@ -10,8 +10,17 @@
#include "filelineedit.h"
//
#include "base/settings.h"
+//
+#include
+#include
+#include
-FileLineEdit::FileLineEdit(QWidget *parent) : QLineEdit(parent) { completer = nullptr; }
+FileLineEdit::FileLineEdit(QWidget *parent) : QLineEdit(parent) {
+ completer = nullptr;
+ QAction *browseAction = addAction(QIcon(":/icon/document-open.svg"), QLineEdit::TrailingPosition);
+ browseAction->setToolTip(tr("Browse..."));
+ connect(browseAction, &QAction::triggered, this, &FileLineEdit::browse);
+}
void FileLineEdit::getFiles(const QString &curDir, const QString &prefix, QStringList &files) {
QDir dir(curDir);
@@ -54,3 +63,23 @@ void FileLineEdit::refreshFileList() {
completer = new QCompleter(files, this);
setCompleter(completer);
}
+
+void FileLineEdit::browse() {
+ QDir dataDir(QDir::currentPath());
+ dataDir.mkpath(Settings::dataPath());
+ dataDir.cd(Settings::dataPath());
+ QString filePath = QFileDialog::getOpenFileName(this, tr("Choose File"), dataDir.absolutePath());
+
+ if (filePath.isEmpty())
+ return;
+
+ QString relPath = dataDir.relativeFilePath(filePath);
+
+ if (relPath.startsWith("..") || QDir::isAbsolutePath(relPath)) {
+ QMessageBox::warning(this, tr("Warning"), tr("Please select a file inside the data directory."),
+ QMessageBox::Close);
+ return;
+ }
+
+ setText(QDir::toNativeSeparators(relPath));
+}
diff --git a/src/filelineedit.h b/src/filelineedit.h
index df6c335e..ca55f5db 100644
--- a/src/filelineedit.h
+++ b/src/filelineedit.h
@@ -27,6 +27,7 @@ class FileLineEdit : public QLineEdit {
QCompleter *completer;
QStringList nameFilters;
QDir::Filters filters;
+ void browse();
public slots:
void refreshFileList();
diff --git a/translations/en_US.ts b/translations/en_US.ts
index 24b8fef3..f820b2ab 100644
--- a/translations/en_US.ts
+++ b/translations/en_US.ts
@@ -2694,4 +2694,23 @@ p, li { white-space: pre-wrap; }
+
+ FileLineEdit
+
+ Browse...
+
+
+
+ Warning
+
+
+
+ Please select a file inside the data directory.
+
+
+
+ Choose File
+
+
+
diff --git a/translations/zh_CN.ts b/translations/zh_CN.ts
index 732a5a54..ee8fb1f2 100755
--- a/translations/zh_CN.ts
+++ b/translations/zh_CN.ts
@@ -2728,4 +2728,23 @@ p, li { white-space: pre-wrap; }
新建
+
+ FileLineEdit
+
+ Browse...
+ 浏览...
+
+
+ Warning
+ 警告
+
+
+ Please select a file inside the data directory.
+ 请选择 data 目录内的文件。
+
+
+ Choose File
+ 选择文件
+
+
diff --git a/translations/zh_TW.ts b/translations/zh_TW.ts
index 18ac6366..ecc0fd65 100644
--- a/translations/zh_TW.ts
+++ b/translations/zh_TW.ts
@@ -2728,4 +2728,23 @@ p, li { white-space: pre-wrap; }
新建
+
+ FileLineEdit
+
+ Browse...
+ 瀏覽...
+
+
+ Warning
+ 警告
+
+
+ Please select a file inside the data directory.
+ 請選擇 data 目錄內的檔案。
+
+
+ Choose File
+ 選擇檔案
+
+