31
31
#include " Dpm.h"
32
32
#include " FilterData.h"
33
33
#include " ImageLoader.h"
34
- #include " imageproc/BinaryThreshold.h"
35
34
#include < QCoreApplication>
35
+ #include < QFile>
36
+ #include < QDir>
36
37
#include < QImage>
37
38
#include < QString>
39
+ #include < QTextDocument> // for Qt::escape()
38
40
#include < assert.h>
39
41
40
42
using namespace imageproc ;
41
43
42
44
class LoadFileTask ::ErrorResult : public FilterResult
43
45
{
46
+ Q_DECLARE_TR_FUNCTIONS (LoadFileTask)
44
47
public:
45
48
ErrorResult (QString const & file_path);
46
49
@@ -51,6 +54,7 @@ class LoadFileTask::ErrorResult : public FilterResult
51
54
}
52
55
private:
53
56
QString m_filePath;
57
+ bool m_fileExists;
54
58
};
55
59
56
60
@@ -125,19 +129,41 @@ LoadFileTask::overrideDpi(QImage& image) const
125
129
/* ======================= LoadFileTask::ErrorResult ======================*/
126
130
127
131
LoadFileTask::ErrorResult::ErrorResult (QString const & file_path)
128
- : m_filePath(file_path)
132
+ : m_filePath(QDir::toNativeSeparators(file_path))
133
+ , m_fileExists(QFile::exists(file_path))
129
134
{
130
135
}
131
136
132
137
void
133
138
LoadFileTask::ErrorResult::updateUI (FilterUiInterface* ui)
134
139
{
135
- QString const err_msg (
136
- QCoreApplication::translate (
137
- " LoadFileTask" ,
138
- " The following file could not be loaded:\n %1"
139
- ).arg (m_filePath)
140
- );
141
- ui->setImageWidget (new ErrorWidget (err_msg), ui->TRANSFER_OWNERSHIP );
140
+ class ErrWidget : public ErrorWidget
141
+ {
142
+ public:
143
+ ErrWidget (IntrusivePtr<AbstractCommand0<void > > const & relinking_dialog_requester,
144
+ QString const & text, Qt::TextFormat fmt = Qt::AutoText)
145
+ : ErrorWidget(text, fmt), m_ptrRelinkingDialogRequester(relinking_dialog_requester) {}
146
+ private:
147
+ virtual void linkActivated (QString const &) {
148
+ (*m_ptrRelinkingDialogRequester)();
149
+ }
150
+
151
+ IntrusivePtr<AbstractCommand0<void > > m_ptrRelinkingDialogRequester;
152
+ };
153
+
154
+ QString err_msg;
155
+ Qt::TextFormat fmt = Qt::AutoText;
156
+ if (m_fileExists) {
157
+ err_msg = tr (" The following file could not be loaded:\n %1" ).arg (m_filePath);
158
+ fmt = Qt::PlainText;
159
+ } else {
160
+ err_msg = tr (
161
+ " The following file doesn't exist:<br>%1<br>"
162
+ " <br>"
163
+ " Use the <a href=\" #relink\" >Relinking Tool</a> to locate it."
164
+ ).arg (Qt::escape (m_filePath));
165
+ fmt = Qt::RichText;
166
+ }
167
+ ui->setImageWidget (new ErrWidget (ui->relinkingDialogRequester (), err_msg, fmt), ui->TRANSFER_OWNERSHIP );
142
168
ui->setOptionsWidget (new FilterOptionsWidget, ui->TRANSFER_OWNERSHIP );
143
169
}
0 commit comments