You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
qtermwidget-packaging/lib/tools.cpp

111 lines
2.9 KiB

#include "tools.h"
#include <QCoreApplication>
#include <QDir>
#include <QtDebug>
/*! Helper function to get possible location of layout files.
By default the KB_LAYOUT_DIR is used (linux/BSD/macports).
But in some cases (apple bundle) there can be more locations).
*/
QString get_kb_layout_dir()
{
#ifdef BUNDLE_KEYBOARDLAYOUTS
return QLatin1String(":/");
#else
// qDebug() << __FILE__ << __FUNCTION__;
QString rval = "";
QString k(KB_LAYOUT_DIR);
QDir d(k);
qDebug() << "default KB_LAYOUT_DIR: " << k;
if (d.exists())
{
rval = k.append("/");
return rval;
}
// subdir in the app location
d.setPath(QCoreApplication::applicationDirPath() + "/kb-layouts/");
//qDebug() << d.path();
if (d.exists())
return QCoreApplication::applicationDirPath() + "/kb-layouts/";
#ifdef Q_WS_MAC
d.setPath(QCoreApplication::applicationDirPath() + "/../Resources/kb-layouts/");
if (d.exists())
return QCoreApplication::applicationDirPath() + "/../Resources/kb-layouts/";
#endif
qDebug() << "Cannot find KB_LAYOUT_DIR. Default:" << k;
return QString();
#endif // BUNDLE_KEYBOARDLAYOUTS
}
/*! Helper function to add custom location of color schemes.
*/
namespace {
QStringList custom_color_schemes_dirs;
}
void add_custom_color_scheme_dir(const QString& custom_dir)
{
if (!custom_color_schemes_dirs.contains(custom_dir))
custom_color_schemes_dirs << custom_dir;
}
/*! Helper function to get possible locations of color schemes.
By default the COLORSCHEMES_DIR is used (linux/BSD/macports).
But in some cases (apple bundle) there can be more locations).
*/
const QStringList get_color_schemes_dirs()
{
#ifdef BUNDLE_COLORSCHEMES
return QLatin1String(":/");
#else
// qDebug() << __FILE__ << __FUNCTION__;
QStringList rval;
QString k(COLORSCHEMES_DIR);
QDir d(k);
// qDebug() << "default COLORSCHEMES_DIR: " << k;
if (d.exists())
rval << k.append("/");
// subdir in the app location
d.setPath(QCoreApplication::applicationDirPath() + "/color-schemes/");
//qDebug() << d.path();
if (d.exists())
{
if (!rval.isEmpty())
rval.clear();
rval << (QCoreApplication::applicationDirPath() + "/color-schemes/");
}
#ifdef Q_WS_MAC
d.setPath(QCoreApplication::applicationDirPath() + "/../Resources/color-schemes/");
if (d.exists())
{
if (!rval.isEmpty())
rval.clear();
rval << (QCoreApplication::applicationDirPath() + "/../Resources/color-schemes/");
}
#endif
for (const QString& custom_dir : const_cast<const QStringList&>(custom_color_schemes_dirs))
{
d.setPath(custom_dir);
if (d.exists())
rval << custom_dir;
}
#ifdef QT_DEBUG
if(!rval.isEmpty()) {
qDebug() << "Using color-schemes: " << rval;
} else {
qDebug() << "Cannot find color-schemes in any location!";
}
#endif
return rval;
#endif // BUNDLE_COLORSCHEMES
}