#include <QSocketNotifier>
#include <QSortFilterProxyModel>
#include <QStandardItemModel>
+#include <QSvgRenderer>
#include <QTimer>
#include <QTranslator>
#include <QThreadPool>
}
+QPixmap GuiApplication::getScaledPixmap(QString imagedir, QString name) const
+{
+ qreal dpr = 1.0;
+ // Consider device/pixel ratio (HiDPI)
+ if (currentView())
+ dpr = currentView()->devicePixelRatio();
+ // We render SVG directly for HiDPI scalability
+ QPixmap pm = getPixmap(imagedir, name, "svgz,png");
+ FileName fname = imageLibFileSearch(imagedir, name, "svgz,png");
+ QString fpath = toqstr(fname.absFileName());
+ if (!fpath.isEmpty()) {
+ QSvgRenderer svgRenderer(fpath);
+ if (svgRenderer.isValid()) {
+ pm = QPixmap(pm.size() * dpr);
+ pm.fill(Qt::transparent);
+ QPainter painter(&pm);
+ svgRenderer.render(&painter);
+ pm.setDevicePixelRatio(dpr);
+ }
+ }
+ return pm;
+}
+
+
Clipboard & GuiApplication::clipboard()
{
return d->clipboard_;
/// Return true if current position is RTL of if no document is open and interface if RTL
bool rtlContext() const;
+ /// Scale Pixmaps properly (also for HiDPI)
+ QPixmap getScaledPixmap(QString imagedir, QString name) const;
+
///
Clipboard & clipboard();
///
preambleTE->setReadOnly(true);
theFormats().edit(*current_id_, tempfilename, format);
editPB->setText(qt_("&End Edit"));
- QIcon warn(getPixmap("images/", "emblem-shellescape", "svgz,png"));
+ QIcon warn(guiApp ? guiApp->getScaledPixmap("images/", "emblem-shellescape-user")
+ : getPixmap("images/", "emblem-shellescape", "svgz,png"));
editPB->setIcon(warn);
changed();
}
locallayoutTE->setReadOnly(true);
theFormats().edit(*current_id_, tempfilename, format);
editPB->setText(qt_("&End Edit"));
- QIcon warn(getPixmap("images/", "emblem-shellescape", "svgz,png"));
+ QIcon warn(guiApp ? guiApp->getScaledPixmap("images/", "emblem-shellescape-user")
+ : getPixmap("images/", "emblem-shellescape", "svgz,png"));
editPB->setIcon(warn);
validatePB->setEnabled(false);
hideConvert();
return 0 < b.name.localeAwareCompare(a.name);
});
- QIcon user_icon(getPixmap("images/", "lyxfiles-user", "svgz,png"));
- QIcon system_icon(getPixmap("images/", "lyxfiles-system", "svgz,png"));
+ QIcon user_icon(guiApp ? guiApp->getScaledPixmap("images/", "lyxfiles-user")
+ : getPixmap("images/", "lyxfiles-user", "svgz,png"));
+ QIcon system_icon(guiApp ? guiApp->getScaledPixmap("images/", "lyxfiles-system")
+ : getPixmap("images/", "lyxfiles-system", "svgz,png"));
int i = 0;
for (modInfoStruct const & m : modInfoList) {
modInfoList.sort([](modInfoStruct const & a, modInfoStruct const & b) {
return 0 < b.name.localeAwareCompare(a.name);
});
- QIcon user_icon(getPixmap("images/", "lyxfiles-user", "svgz,png"));
- QIcon system_icon(getPixmap("images/", "lyxfiles-system", "svgz,png"));
+ QIcon user_icon(guiApp ? guiApp->getScaledPixmap("images/", "lyxfiles-user")
+ : getPixmap("images/", "lyxfiles-user", "svgz,png"));
+ QIcon system_icon(guiApp ? guiApp->getScaledPixmap("images/", "lyxfiles-system")
+ : getPixmap("images/", "lyxfiles-system", "svgz,png"));
int i = 0;
QFont catfont;
catfont.setBold(true);
//filesLW->setViewMode(QListView::ListMode);
filesLW->setIconSize(QSize(22, 22));
- QIcon user_icon(getPixmap("images/", "lyxfiles-user", "svgz,png"));
- QIcon system_icon(getPixmap("images/", "lyxfiles-system", "svgz,png"));
+ QIcon user_icon(guiApp ? guiApp->getScaledPixmap("images/", "lyxfiles-user")
+ : getPixmap("images/", "lyxfiles-user", "svgz,png"));
+ QIcon system_icon(guiApp ? guiApp->getScaledPixmap("images/", "lyxfiles-system")
+ : getPixmap("images/", "lyxfiles-system", "svgz,png"));
fileTypeCO->addItem(qt_("User and System Files"), toqstr("all"));
fileTypeCO->addItem(user_icon, qt_("User Files Only"), toqstr("user"));
fileTypeCO->addItem(system_icon, qt_("System Files Only"), toqstr("system"));
setLanguage();
QString const realpath = getRealPath();
filesLW->currentItem()->setData(0, Qt::ToolTipRole, realpath);
- QIcon user_icon(getPixmap("images/", "lyxfiles-user", "svgz,png"));
- QIcon system_icon(getPixmap("images/", "lyxfiles-system", "svgz,png"));
+ QIcon user_icon(guiApp ? guiApp->getScaledPixmap("images/", "lyxfiles-user")
+ : getPixmap("images/", "lyxfiles-user", "svgz,png"));
+ QIcon system_icon(guiApp ? guiApp->getScaledPixmap("images/", "lyxfiles-system")
+ : getPixmap("images/", "lyxfiles-system", "svgz,png"));
QIcon file_icon = (realpath.startsWith(toqstr(package().user_support().absFileName()))) ?
user_icon : system_icon;
item->setIcon(0, file_icon);
languageCO->model()->sort(0);
filesLW->clear();
- QIcon user_icon(getPixmap("images/", "lyxfiles-user", "svgz,png"));
- QIcon system_icon(getPixmap("images/", "lyxfiles-system", "svgz,png"));
- QIcon user_folder_icon(getPixmap("images/", "lyxfiles-user-folder", "svgz,png"));
- QIcon system_folder_icon(getPixmap("images/", "lyxfiles-system-folder", "svgz,png"));
+
+ QIcon user_icon(guiApp ? guiApp->getScaledPixmap("images/", "lyxfiles-user")
+ : getPixmap("images/", "lyxfiles-user", "svgz,png"));
+ QIcon system_icon(guiApp ? guiApp->getScaledPixmap("images/", "lyxfiles-system")
+ : getPixmap("images/", "lyxfiles-system", "svgz,png"));
+ QIcon user_folder_icon(guiApp ? guiApp->getScaledPixmap("images/", "lyxfiles-user-folder")
+ : getPixmap("images/", "lyxfiles-user-folder", "svgz,png"));
+ QIcon system_folder_icon(guiApp ? guiApp->getScaledPixmap("images/", "lyxfiles-system-folder")
+ : getPixmap("images/", "lyxfiles-system-folder", "svgz,png"));
+
QStringList cats;
QMap<QString, QString>::const_iterator it = files.constBegin();
QFont capfont;
item->setIcon(0, QIcon());
item->setToolTip(0, QString());
} else {
- QIcon warn(getPixmap("images/", "emblem-shellescape", "svgz,png"));
+ QIcon warn(guiApp ? guiApp->getScaledPixmap("images/", "emblem-shellescape-user")
+ : getPixmap("images/", "emblem-shellescape", "svgz,png"));
item->setIcon(0, warn);
item->setToolTip(0, qt_("This section contains invalid input. Please fix!"));
}