mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2025-05-29 13:20:18 +02:00
Allow the user to create a shortcut on the desktop and/or application folder (#2966)
This commit is contained in:
commit
2c838f8c2c
@ -892,6 +892,11 @@ QString getDesktopDir()
|
|||||||
return QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
|
return QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString getApplicationsDir()
|
||||||
|
{
|
||||||
|
return QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation);
|
||||||
|
}
|
||||||
|
|
||||||
// Cross-platform Shortcut creation
|
// Cross-platform Shortcut creation
|
||||||
bool createShortcut(QString destination, QString target, QStringList args, QString name, QString icon)
|
bool createShortcut(QString destination, QString target, QStringList args, QString name, QString icon)
|
||||||
{
|
{
|
||||||
@ -903,16 +908,7 @@ bool createShortcut(QString destination, QString target, QStringList args, QStri
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#if defined(Q_OS_MACOS)
|
#if defined(Q_OS_MACOS)
|
||||||
// Create the Application
|
QDir application = destination + ".app/";
|
||||||
QDir applicationDirectory =
|
|
||||||
QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation) + "/" + BuildConfig.LAUNCHER_NAME + " Instances/";
|
|
||||||
|
|
||||||
if (!applicationDirectory.mkpath(".")) {
|
|
||||||
qWarning() << "Couldn't create application directory";
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
QDir application = applicationDirectory.path() + "/" + name + ".app/";
|
|
||||||
|
|
||||||
if (application.exists()) {
|
if (application.exists()) {
|
||||||
qWarning() << "Application already exists!";
|
qWarning() << "Application already exists!";
|
||||||
|
@ -353,6 +353,9 @@ bool checkProblemticPathJava(QDir folder);
|
|||||||
// Get the Directory representing the User's Desktop
|
// Get the Directory representing the User's Desktop
|
||||||
QString getDesktopDir();
|
QString getDesktopDir();
|
||||||
|
|
||||||
|
// Get the Directory representing the User's Applications directory
|
||||||
|
QString getApplicationsDir();
|
||||||
|
|
||||||
// Overrides one folder with the contents of another, preserving items exclusive to the first folder
|
// Overrides one folder with the contents of another, preserving items exclusive to the first folder
|
||||||
// Equivalent to doing QDir::rename, but allowing for overrides
|
// Equivalent to doing QDir::rename, but allowing for overrides
|
||||||
bool overrideFolder(QString overwritten_path, QString override_path);
|
bool overrideFolder(QString overwritten_path, QString override_path);
|
||||||
|
@ -206,6 +206,26 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
|
|||||||
exportInstanceMenu->addAction(ui->actionExportInstanceMrPack);
|
exportInstanceMenu->addAction(ui->actionExportInstanceMrPack);
|
||||||
exportInstanceMenu->addAction(ui->actionExportInstanceFlamePack);
|
exportInstanceMenu->addAction(ui->actionExportInstanceFlamePack);
|
||||||
ui->actionExportInstance->setMenu(exportInstanceMenu);
|
ui->actionExportInstance->setMenu(exportInstanceMenu);
|
||||||
|
|
||||||
|
QList<QAction*> shortcutActions = { ui->actionCreateInstanceShortcutOther };
|
||||||
|
if (!DesktopServices::isFlatpak()) {
|
||||||
|
QString desktopDir = FS::getDesktopDir();
|
||||||
|
QString applicationDir = FS::getApplicationsDir();
|
||||||
|
|
||||||
|
if(!applicationDir.isEmpty())
|
||||||
|
shortcutActions.push_front(ui->actionCreateInstanceShortcutApplications);
|
||||||
|
|
||||||
|
if(!desktopDir.isEmpty())
|
||||||
|
shortcutActions.push_front(ui->actionCreateInstanceShortcutDesktop);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(shortcutActions.length() > 1) {
|
||||||
|
auto shortcutInstanceMenu = new QMenu(this);
|
||||||
|
|
||||||
|
for(auto action : shortcutActions)
|
||||||
|
shortcutInstanceMenu->addAction(action);
|
||||||
|
ui->actionCreateInstanceShortcut->setMenu(shortcutInstanceMenu);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// hide, disable and show stuff
|
// hide, disable and show stuff
|
||||||
@ -1514,18 +1534,11 @@ void MainWindow::on_actionKillInstance_triggered()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_actionCreateInstanceShortcut_triggered()
|
void MainWindow::createInstanceShortcut(QString shortcutFilePath)
|
||||||
{
|
{
|
||||||
if (!m_selectedInstance)
|
if (!m_selectedInstance)
|
||||||
return;
|
return;
|
||||||
auto desktopPath = FS::getDesktopDir();
|
|
||||||
if (desktopPath.isEmpty()) {
|
|
||||||
// TODO come up with an alternative solution (open "save file" dialog)
|
|
||||||
QMessageBox::critical(this, tr("Create instance shortcut"), tr("Couldn't find desktop?!"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString desktopFilePath;
|
|
||||||
QString appPath = QApplication::applicationFilePath();
|
QString appPath = QApplication::applicationFilePath();
|
||||||
QString iconPath;
|
QString iconPath;
|
||||||
QStringList args;
|
QStringList args;
|
||||||
@ -1594,13 +1607,6 @@ void MainWindow::on_actionCreateInstanceShortcut_triggered()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (DesktopServices::isFlatpak()) {
|
if (DesktopServices::isFlatpak()) {
|
||||||
desktopFilePath = FS::PathCombine(desktopPath, FS::RemoveInvalidFilenameChars(m_selectedInstance->name()) + ".desktop");
|
|
||||||
QFileDialog fileDialog;
|
|
||||||
// workaround to make sure the portal file dialog opens in the desktop directory
|
|
||||||
fileDialog.setDirectoryUrl(desktopPath);
|
|
||||||
desktopFilePath = fileDialog.getSaveFileName(this, tr("Create Shortcut"), desktopFilePath, tr("Desktop Entries") + " (*.desktop)");
|
|
||||||
if (desktopFilePath.isEmpty())
|
|
||||||
return; // file dialog canceled by user
|
|
||||||
appPath = "flatpak";
|
appPath = "flatpak";
|
||||||
args.append({ "run", BuildConfig.LAUNCHER_APPID });
|
args.append({ "run", BuildConfig.LAUNCHER_APPID });
|
||||||
}
|
}
|
||||||
@ -1639,20 +1645,99 @@ void MainWindow::on_actionCreateInstanceShortcut_triggered()
|
|||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
args.append({ "--launch", m_selectedInstance->id() });
|
args.append({ "--launch", m_selectedInstance->id() });
|
||||||
if (FS::createShortcut(desktopFilePath, appPath, args, m_selectedInstance->name(), iconPath)) {
|
|
||||||
#if not defined(Q_OS_MACOS)
|
if (!FS::createShortcut(std::move(shortcutFilePath), appPath, args, m_selectedInstance->name(), iconPath)) {
|
||||||
QMessageBox::information(this, tr("Create instance shortcut"), tr("Created a shortcut to this instance on your desktop!"));
|
|
||||||
#else
|
|
||||||
QMessageBox::information(this, tr("Create instance shortcut"), tr("Created a shortcut to this instance!"));
|
|
||||||
#endif
|
|
||||||
} else {
|
|
||||||
#if not defined(Q_OS_MACOS)
|
#if not defined(Q_OS_MACOS)
|
||||||
iconFile.remove();
|
iconFile.remove();
|
||||||
#endif
|
#endif
|
||||||
QMessageBox::critical(this, tr("Create instance shortcut"), tr("Failed to create instance shortcut!"));
|
QMessageBox::critical(this, tr("Create instance shortcut"), tr("Failed to create instance shortcut!"));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_actionCreateInstanceShortcutOther_triggered()
|
||||||
|
{
|
||||||
|
if (!m_selectedInstance)
|
||||||
|
return;
|
||||||
|
|
||||||
|
QString defaultedDir = FS::getDesktopDir();
|
||||||
|
#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) || defined(Q_OS_OPENBSD)
|
||||||
|
QString extension = ".desktop";
|
||||||
|
#elif defined(Q_OS_WINDOWS)
|
||||||
|
QString extension = ".lnk";
|
||||||
|
#else
|
||||||
|
QString extension = "";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
QString shortcutFilePath = FS::PathCombine(defaultedDir, FS::RemoveInvalidFilenameChars(m_selectedInstance->name()) + extension);
|
||||||
|
QFileDialog fileDialog;
|
||||||
|
// workaround to make sure the portal file dialog opens in the desktop directory
|
||||||
|
fileDialog.setDirectoryUrl(defaultedDir);
|
||||||
|
|
||||||
|
shortcutFilePath =
|
||||||
|
fileDialog.getSaveFileName(this, tr("Create Shortcut"), shortcutFilePath, tr("Desktop Entries") + " (*" + extension + ")");
|
||||||
|
if (shortcutFilePath.isEmpty())
|
||||||
|
return; // file dialog canceled by user
|
||||||
|
|
||||||
|
if(shortcutFilePath.endsWith(extension))
|
||||||
|
shortcutFilePath = shortcutFilePath.mid(0, shortcutFilePath.length() - extension.length());
|
||||||
|
createInstanceShortcut(shortcutFilePath);
|
||||||
|
QMessageBox::information(this, tr("Create instance shortcut"), tr("Created a shortcut to this instance!"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_actionCreateInstanceShortcut_triggered()
|
||||||
|
{
|
||||||
|
if (!m_selectedInstance)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (DesktopServices::isFlatpak())
|
||||||
|
on_actionCreateInstanceShortcutOther_triggered();
|
||||||
|
else
|
||||||
|
on_actionCreateInstanceShortcutDesktop_triggered();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_actionCreateInstanceShortcutDesktop_triggered()
|
||||||
|
{
|
||||||
|
if (!m_selectedInstance)
|
||||||
|
return;
|
||||||
|
|
||||||
|
QString desktopDir = FS::getDesktopDir();
|
||||||
|
if (desktopDir.isEmpty()) {
|
||||||
|
QMessageBox::critical(this, tr("Create instance shortcut"), tr("Couldn't find desktop?!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString shortcutFilePath = FS::PathCombine(FS::getDesktopDir(), FS::RemoveInvalidFilenameChars(m_selectedInstance->name()));
|
||||||
|
createInstanceShortcut(shortcutFilePath);
|
||||||
|
QMessageBox::information(this, tr("Create instance shortcut"), tr("Created a shortcut to this instance on your desktop!"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_actionCreateInstanceShortcutApplications_triggered()
|
||||||
|
{
|
||||||
|
if (!m_selectedInstance)
|
||||||
|
return;
|
||||||
|
|
||||||
|
QString applicationsDir = FS::getApplicationsDir();
|
||||||
|
if (applicationsDir.isEmpty()) {
|
||||||
|
QMessageBox::critical(this, tr("Create instance shortcut"), tr("Couldn't find applications folder?!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(Q_OS_MACOS) || defined(Q_OS_WIN)
|
||||||
|
applicationsDir = FS::PathCombine(applicationsDir, BuildConfig.LAUNCHER_DISPLAYNAME + " Instances");
|
||||||
|
|
||||||
|
QDir applicationsDirQ(applicationsDir);
|
||||||
|
if (!applicationsDirQ.mkpath(".")) {
|
||||||
|
QMessageBox::critical(this, tr("Create instance shortcut"), tr("Failed to create instances folder in applications folder!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
QString shortcutFilePath = FS::PathCombine(applicationsDir, FS::RemoveInvalidFilenameChars(m_selectedInstance->name()));
|
||||||
|
createInstanceShortcut(shortcutFilePath);
|
||||||
|
QMessageBox::information(this, tr("Create instance shortcut"), tr("Created a shortcut to this instance in your applications folder!"));
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::taskEnd()
|
void MainWindow::taskEnd()
|
||||||
{
|
{
|
||||||
QObject* sender = QObject::sender();
|
QObject* sender = QObject::sender();
|
||||||
|
@ -167,6 +167,10 @@ class MainWindow : public QMainWindow {
|
|||||||
|
|
||||||
void on_actionCreateInstanceShortcut_triggered();
|
void on_actionCreateInstanceShortcut_triggered();
|
||||||
|
|
||||||
|
void on_actionCreateInstanceShortcutDesktop_triggered();
|
||||||
|
void on_actionCreateInstanceShortcutApplications_triggered();
|
||||||
|
void on_actionCreateInstanceShortcutOther_triggered();
|
||||||
|
|
||||||
void taskEnd();
|
void taskEnd();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -226,6 +230,7 @@ class MainWindow : public QMainWindow {
|
|||||||
void setSelectedInstanceById(const QString& id);
|
void setSelectedInstanceById(const QString& id);
|
||||||
void updateStatusCenter();
|
void updateStatusCenter();
|
||||||
void setInstanceActionsEnabled(bool enabled);
|
void setInstanceActionsEnabled(bool enabled);
|
||||||
|
void createInstanceShortcut(QString shortcutDirPath);
|
||||||
|
|
||||||
void runModalTask(Task* task);
|
void runModalTask(Task* task);
|
||||||
void instanceFromInstanceTask(InstanceTask* task);
|
void instanceFromInstanceTask(InstanceTask* task);
|
||||||
|
@ -131,7 +131,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>800</width>
|
<width>800</width>
|
||||||
<height>27</height>
|
<height>22</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QMenu" name="fileMenu">
|
<widget class="QMenu" name="fileMenu">
|
||||||
@ -235,8 +235,7 @@
|
|||||||
</widget>
|
</widget>
|
||||||
<action name="actionMoreNews">
|
<action name="actionMoreNews">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="news">
|
<iconset theme="news"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>More news...</string>
|
<string>More news...</string>
|
||||||
@ -250,8 +249,7 @@
|
|||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="cat">
|
<iconset theme="cat"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Meow</string>
|
<string>&Meow</string>
|
||||||
@ -286,8 +284,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionAddInstance">
|
<action name="actionAddInstance">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="new">
|
<iconset theme="new"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Add Instanc&e...</string>
|
<string>Add Instanc&e...</string>
|
||||||
@ -298,8 +295,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionCheckUpdate">
|
<action name="actionCheckUpdate">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="checkupdate">
|
<iconset theme="checkupdate"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Update...</string>
|
<string>&Update...</string>
|
||||||
@ -313,8 +309,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionSettings">
|
<action name="actionSettings">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="settings">
|
<iconset theme="settings"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Setti&ngs...</string>
|
<string>Setti&ngs...</string>
|
||||||
@ -328,8 +323,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionManageAccounts">
|
<action name="actionManageAccounts">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="accounts">
|
<iconset theme="accounts"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Manage Accounts...</string>
|
<string>&Manage Accounts...</string>
|
||||||
@ -337,8 +331,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionLaunchInstance">
|
<action name="actionLaunchInstance">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="launch">
|
<iconset theme="launch"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Launch</string>
|
<string>&Launch</string>
|
||||||
@ -349,8 +342,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionKillInstance">
|
<action name="actionKillInstance">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="status-bad">
|
<iconset theme="status-bad"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Kill</string>
|
<string>&Kill</string>
|
||||||
@ -364,8 +356,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionRenameInstance">
|
<action name="actionRenameInstance">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="rename">
|
<iconset theme="rename"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Rename</string>
|
<string>Rename</string>
|
||||||
@ -376,8 +367,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionChangeInstGroup">
|
<action name="actionChangeInstGroup">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="tag">
|
<iconset theme="tag"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Change Group...</string>
|
<string>&Change Group...</string>
|
||||||
@ -399,8 +389,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionEditInstance">
|
<action name="actionEditInstance">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="settings">
|
<iconset theme="settings"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Edit...</string>
|
<string>&Edit...</string>
|
||||||
@ -414,8 +403,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionViewSelectedInstFolder">
|
<action name="actionViewSelectedInstFolder">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="viewfolder">
|
<iconset theme="viewfolder"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Folder</string>
|
<string>&Folder</string>
|
||||||
@ -426,8 +414,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionDeleteInstance">
|
<action name="actionDeleteInstance">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="delete">
|
<iconset theme="delete"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Dele&te</string>
|
<string>Dele&te</string>
|
||||||
@ -441,8 +428,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionCopyInstance">
|
<action name="actionCopyInstance">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="copy">
|
<iconset theme="copy"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Cop&y...</string>
|
<string>Cop&y...</string>
|
||||||
@ -456,8 +442,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionExportInstance">
|
<action name="actionExportInstance">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="export">
|
<iconset theme="export"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>E&xport...</string>
|
<string>E&xport...</string>
|
||||||
@ -468,8 +453,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionExportInstanceZip">
|
<action name="actionExportInstanceZip">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="launcher">
|
<iconset theme="launcher"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Prism Launcher (zip)</string>
|
<string>Prism Launcher (zip)</string>
|
||||||
@ -477,8 +461,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionExportInstanceMrPack">
|
<action name="actionExportInstanceMrPack">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="modrinth">
|
<iconset theme="modrinth"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Modrinth (mrpack)</string>
|
<string>Modrinth (mrpack)</string>
|
||||||
@ -486,8 +469,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionExportInstanceFlamePack">
|
<action name="actionExportInstanceFlamePack">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="flame">
|
<iconset theme="flame"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>CurseForge (zip)</string>
|
<string>CurseForge (zip)</string>
|
||||||
@ -495,20 +477,18 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionCreateInstanceShortcut">
|
<action name="actionCreateInstanceShortcut">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="shortcut">
|
<iconset theme="shortcut"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Create Shortcut</string>
|
<string>Create Shortcut</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Creates a shortcut on your desktop to launch the selected instance.</string>
|
<string>Creates a shortcut on a selected folder to launch the selected instance.</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionNoAccountsAdded">
|
<action name="actionNoAccountsAdded">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="noaccount">
|
<iconset theme="noaccount"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>No accounts added!</string>
|
<string>No accounts added!</string>
|
||||||
@ -519,8 +499,7 @@
|
|||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="noaccount">
|
<iconset theme="noaccount"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>No Default Account</string>
|
<string>No Default Account</string>
|
||||||
@ -531,8 +510,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionCloseWindow">
|
<action name="actionCloseWindow">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="status-bad">
|
<iconset theme="status-bad"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Close &Window</string>
|
<string>Close &Window</string>
|
||||||
@ -546,8 +524,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionViewInstanceFolder">
|
<action name="actionViewInstanceFolder">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="viewfolder">
|
<iconset theme="viewfolder"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Instances</string>
|
<string>&Instances</string>
|
||||||
@ -558,8 +535,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionViewLauncherRootFolder">
|
<action name="actionViewLauncherRootFolder">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="viewfolder">
|
<iconset theme="viewfolder"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Launcher &Root</string>
|
<string>Launcher &Root</string>
|
||||||
@ -570,8 +546,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionViewCentralModsFolder">
|
<action name="actionViewCentralModsFolder">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="centralmods">
|
<iconset theme="centralmods"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Central Mods</string>
|
<string>&Central Mods</string>
|
||||||
@ -582,8 +557,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionViewSkinsFolder">
|
<action name="actionViewSkinsFolder">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="viewfolder">
|
<iconset theme="viewfolder"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Skins</string>
|
<string>&Skins</string>
|
||||||
@ -594,8 +568,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionViewIconsFolder">
|
<action name="actionViewIconsFolder">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="viewfolder">
|
<iconset theme="viewfolder"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Instance Icons</string>
|
<string>Instance Icons</string>
|
||||||
@ -606,8 +579,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionViewLogsFolder">
|
<action name="actionViewLogsFolder">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="viewfolder">
|
<iconset theme="viewfolder"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Logs</string>
|
<string>Logs</string>
|
||||||
@ -623,8 +595,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionReportBug">
|
<action name="actionReportBug">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="bug">
|
<iconset theme="bug"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Report a Bug or Suggest a Feature</string>
|
<string>Report a Bug or Suggest a Feature</string>
|
||||||
@ -635,8 +606,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionDISCORD">
|
<action name="actionDISCORD">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="discord">
|
<iconset theme="discord"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Discord Guild</string>
|
<string>&Discord Guild</string>
|
||||||
@ -647,8 +617,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionMATRIX">
|
<action name="actionMATRIX">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="matrix">
|
<iconset theme="matrix"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Matrix Space</string>
|
<string>&Matrix Space</string>
|
||||||
@ -659,8 +628,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionREDDIT">
|
<action name="actionREDDIT">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="reddit-alien">
|
<iconset theme="reddit-alien"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Sub&reddit</string>
|
<string>Sub&reddit</string>
|
||||||
@ -671,8 +639,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionAbout">
|
<action name="actionAbout">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="about">
|
<iconset theme="about"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&About %1</string>
|
<string>&About %1</string>
|
||||||
@ -686,8 +653,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionClearMetadata">
|
<action name="actionClearMetadata">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="refresh">
|
<iconset theme="refresh"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Clear Metadata Cache</string>
|
<string>&Clear Metadata Cache</string>
|
||||||
@ -698,8 +664,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionAddToPATH">
|
<action name="actionAddToPATH">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="custom-commands">
|
<iconset theme="custom-commands"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Install to &PATH</string>
|
<string>Install to &PATH</string>
|
||||||
@ -710,8 +675,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionFoldersButton">
|
<action name="actionFoldersButton">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="viewfolder">
|
<iconset theme="viewfolder"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Folders</string>
|
<string>Folders</string>
|
||||||
@ -722,8 +686,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionHelpButton">
|
<action name="actionHelpButton">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="help">
|
<iconset theme="help"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Help</string>
|
<string>Help</string>
|
||||||
@ -734,8 +697,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionAccountsButton">
|
<action name="actionAccountsButton">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="noaccount">
|
<iconset theme="noaccount"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Accounts</string>
|
<string>Accounts</string>
|
||||||
@ -743,8 +705,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionOpenWiki">
|
<action name="actionOpenWiki">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="help">
|
<iconset theme="help"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>%1 &Help</string>
|
<string>%1 &Help</string>
|
||||||
@ -755,8 +716,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionViewWidgetThemeFolder">
|
<action name="actionViewWidgetThemeFolder">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="viewfolder">
|
<iconset theme="viewfolder"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Widget Themes</string>
|
<string>&Widget Themes</string>
|
||||||
@ -767,8 +727,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionViewIconThemeFolder">
|
<action name="actionViewIconThemeFolder">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="viewfolder">
|
<iconset theme="viewfolder"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>I&con Theme</string>
|
<string>I&con Theme</string>
|
||||||
@ -779,8 +738,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionViewCatPackFolder">
|
<action name="actionViewCatPackFolder">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="viewfolder">
|
<iconset theme="viewfolder"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Cat Packs</string>
|
<string>Cat Packs</string>
|
||||||
@ -791,8 +749,7 @@
|
|||||||
</action>
|
</action>
|
||||||
<action name="actionViewJavaFolder">
|
<action name="actionViewJavaFolder">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="viewfolder">
|
<iconset theme="viewfolder"/>
|
||||||
<normaloff>.</normaloff>.</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Java</string>
|
<string>Java</string>
|
||||||
@ -801,6 +758,39 @@
|
|||||||
<string>Open the Java folder in a file browser. Only available if the built-in Java downloader is used.</string>
|
<string>Open the Java folder in a file browser. Only available if the built-in Java downloader is used.</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="actionCreateInstanceShortcutDesktop">
|
||||||
|
<property name="text">
|
||||||
|
<string>Desktop</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Creates an shortcut to this instance on your desktop</string>
|
||||||
|
</property>
|
||||||
|
<property name="menuRole">
|
||||||
|
<enum>QAction::TextHeuristicRole</enum>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="actionCreateInstanceShortcutApplications">
|
||||||
|
<property name="text">
|
||||||
|
<string>Applications</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Create a shortcut of this instance on your start menu</string>
|
||||||
|
</property>
|
||||||
|
<property name="menuRole">
|
||||||
|
<enum>QAction::TextHeuristicRole</enum>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="actionCreateInstanceShortcutOther">
|
||||||
|
<property name="text">
|
||||||
|
<string>Other...</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Creates a shortcut in a folder selected by you</string>
|
||||||
|
</property>
|
||||||
|
<property name="menuRole">
|
||||||
|
<enum>QAction::TextHeuristicRole</enum>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user