Upload code.

This commit is contained in:
Mentalflow 2021-10-19 09:19:51 +08:00
parent 7ba7a98c10
commit 3ab76774f8
Signed by: Mentalflow
GPG Key ID: 5AE68D4401A2EE71
6 changed files with 301 additions and 1 deletions

View File

@ -1,3 +1,6 @@
# parallel_desktop_launcher # parallel_desktop_launcher
A full free pd launcher for the user of Parallels Desktop v17.0.1 and below. A full free pd launcher for the user of Parallels Desktop v17.0.1 and below.
I think it's no need for anyone to spend 30~50 yuan to buy a launcher, so I spent 10 minutes building a simple, free and open source program to replace the free technology that someone is selling at a premium.
Enjoy it.

11
main.cpp Normal file
View File

@ -0,0 +1,11 @@
#include "pdlauncher.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
PDLauncher w;
w.show();
return a.exec();
}

100
pdlauncher.cpp Normal file
View File

@ -0,0 +1,100 @@
#include "pdlauncher.h"
#include "ui_pdlauncher.h"
#include <QProcess>
#include <QDebug>
#include <QMessageBox>
PDLauncher::PDLauncher(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::PDLauncher)
{
ui->setupUi(this);
}
PDLauncher::~PDLauncher()
{
delete ui;
}
void PDLauncher::on_other_clicked(bool checked)
{
if (checked)
{
ui->windows10->setChecked(false);
ui->windows11->setChecked(false);
ui->ubuntu->setChecked(false);
ui->other_le->setEnabled(true);
}
}
void PDLauncher::on_quit_clicked()
{
close();
}
void PDLauncher::on_start_clicked()
{
QProcess process;
QString command = "/usr/local/bin/prlctl start ";
if (ui->windows10->isChecked())
{
process.start(command+"\"Windows 10\"");
}
else if (ui->windows11->isChecked())
{
process.start(command+"\"Windows 11\"");
}
else if (ui->ubuntu->isChecked())
{
process.start(command+"\"Ubuntu Linux\"");
}
else
{
process.start(command+"\""+ui->other_le->text()+"\"");
}
process.waitForFinished();
QMessageBox msgbox;
msgbox.setText(process.readAllStandardOutput());
msgbox.setButtonText(QMessageBox::Ok,"");
msgbox.exec();
}
void PDLauncher::on_windows10_clicked(bool checked)
{
if (checked)
{
ui->other->setChecked(false);
ui->windows11->setChecked(false);
ui->ubuntu->setChecked(false);
ui->other_le->setEnabled(false);
}
}
void PDLauncher::on_windows11_clicked(bool checked)
{
if (checked)
{
ui->other->setChecked(false);
ui->windows10->setChecked(false);
ui->ubuntu->setChecked(false);
ui->other_le->setEnabled(false);
}
}
void PDLauncher::on_ubuntu_clicked(bool checked)
{
if (checked)
{
ui->windows10->setChecked(false);
ui->windows11->setChecked(false);
ui->other->setChecked(false);
ui->other_le->setEnabled(false);
}
}

34
pdlauncher.h Normal file
View File

@ -0,0 +1,34 @@
#ifndef PDLAUNCHER_H
#define PDLAUNCHER_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class PDLauncher; }
QT_END_NAMESPACE
class PDLauncher : public QMainWindow
{
Q_OBJECT
public:
PDLauncher(QWidget *parent = nullptr);
~PDLauncher();
private slots:
void on_other_clicked(bool checked);
void on_quit_clicked();
void on_start_clicked();
void on_windows10_clicked(bool checked);
void on_windows11_clicked(bool checked);
void on_ubuntu_clicked(bool checked);
private:
Ui::PDLauncher *ui;
};
#endif // PDLAUNCHER_H

25
pdlauncher.pro Normal file
View File

@ -0,0 +1,25 @@
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
TARGET = PD启动器
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
pdlauncher.cpp
HEADERS += \
pdlauncher.h
FORMS += \
pdlauncher.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

127
pdlauncher.ui Normal file
View File

@ -0,0 +1,127 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>PDLauncher</class>
<widget class="QMainWindow" name="PDLauncher">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>306</width>
<height>191</height>
</rect>
</property>
<property name="windowTitle">
<string>PD启动器</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout" rowstretch="1,5,5,5,5,5,5" columnstretch="5,5,1,1,1,5">
<item row="0" column="0" rowspan="7">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="1">
<widget class="QRadioButton" name="ubuntu">
<property name="text">
<string>Ubuntu Linux</string>
</property>
</widget>
</item>
<item row="0" column="1" colspan="4">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="5" column="1" colspan="4">
<widget class="QLineEdit" name="other_le">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="1" column="1" colspan="2">
<widget class="QRadioButton" name="windows10">
<property name="text">
<string>Windows 10</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QRadioButton" name="other">
<property name="text">
<string>其他:</string>
</property>
</widget>
</item>
<item row="0" column="5" rowspan="7">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="6" column="1" colspan="4">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="1" colspan="2">
<widget class="QRadioButton" name="windows11">
<property name="text">
<string>Windows 11</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="3">
<widget class="QPushButton" name="quit">
<property name="text">
<string>退出</string>
</property>
</widget>
</item>
<item row="3" column="3">
<widget class="QPushButton" name="start">
<property name="text">
<string>启动</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>