mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-05-02 07:05:38 +08:00
refs #507, launcher (new GUI)
This commit is contained in:
committed by
Mathew Sutcliffe
parent
54cb61db19
commit
30e6831bf8
@@ -1,113 +0,0 @@
|
|||||||
/* Copyright (C) 2014
|
|
||||||
* swift project Community / Contributors
|
|
||||||
*
|
|
||||||
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
|
|
||||||
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
|
|
||||||
* including this file, may be copied, modified, propagated, or distributed except according to the terms
|
|
||||||
* contained in the LICENSE file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "introwindow.h"
|
|
||||||
#include "ui_introwindow.h"
|
|
||||||
#include "blackcore/dbus_server.h"
|
|
||||||
#include "blackcore/settingscache.h"
|
|
||||||
#include "blackmisc/network/networkutils.h"
|
|
||||||
#include "blackmisc/project.h"
|
|
||||||
#include <QDesktopServices>
|
|
||||||
#include <QUrl>
|
|
||||||
#include <QDir>
|
|
||||||
#include <QProcess>
|
|
||||||
#include <QFileInfo>
|
|
||||||
|
|
||||||
using namespace BlackMisc;
|
|
||||||
using namespace BlackMisc::Network;
|
|
||||||
using namespace BlackCore;
|
|
||||||
using namespace BlackGui;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
CIntroWindow::CIntroWindow(QWidget *parent) :
|
|
||||||
QDialog(parent, (Qt::WindowStaysOnTopHint)),
|
|
||||||
// (Qt::Tool | Qt::WindowStaysOnTopHint)),
|
|
||||||
ui(new Ui::CIntroWindow)
|
|
||||||
{
|
|
||||||
ui->setupUi(this);
|
|
||||||
this->setWindowTitle(CProject::versionStringDevBetaInfo());
|
|
||||||
this->layout()->setSizeConstraint(QLayout::SetFixedSize);
|
|
||||||
this->ui->cb_DBusServer->addItem(CDBusServer::sessionDBusServer());
|
|
||||||
this->ui->cb_DBusServer->addItem(CDBusServer::systemDBusServer());
|
|
||||||
this->ui->cb_DBusServer->addItems(CNetworkUtils::getKnownIpAddresses());
|
|
||||||
this->ui->cb_DBusServer->setCurrentIndex(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Destructor
|
|
||||||
*/
|
|
||||||
CIntroWindow::~CIntroWindow() { }
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Window mode
|
|
||||||
*/
|
|
||||||
BlackGui::CEnableForFramelessWindow::WindowMode CIntroWindow::getWindowMode() const
|
|
||||||
{
|
|
||||||
if (this->ui->rb_WindowFrameless->isChecked())
|
|
||||||
return CEnableForFramelessWindow::WindowFrameless;
|
|
||||||
else
|
|
||||||
return CEnableForFramelessWindow::WindowTool;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Core mode
|
|
||||||
*/
|
|
||||||
GuiModes::CoreMode CIntroWindow::getCoreMode() const
|
|
||||||
{
|
|
||||||
if (this->ui->rb_CoreExternalVoiceLocal->isChecked())
|
|
||||||
{
|
|
||||||
return GuiModes::CoreExternalAudioLocal;
|
|
||||||
}
|
|
||||||
else if (this->ui->rb_CoreInGuiProcess->isChecked())
|
|
||||||
{
|
|
||||||
return GuiModes::CoreInGuiProcess;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return GuiModes::CoreExternal;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* DBus server address
|
|
||||||
*/
|
|
||||||
QString CIntroWindow::getDBusAddress() const
|
|
||||||
{
|
|
||||||
return this->ui->cb_DBusServer->currentText();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Button clicked
|
|
||||||
*/
|
|
||||||
void CIntroWindow::buttonClicked() const
|
|
||||||
{
|
|
||||||
QObject *sender = QObject::sender();
|
|
||||||
if (sender == this->ui->pb_ModelDb)
|
|
||||||
{
|
|
||||||
QDesktopServices::openUrl(QUrl("http://vatrep.vatsim-germany.org/page/index.php", QUrl::TolerantMode));
|
|
||||||
}
|
|
||||||
else if (sender == this->ui->pb_WebSite)
|
|
||||||
{
|
|
||||||
QDesktopServices::openUrl(QUrl("https://dev.vatsim-germany.org/", QUrl::TolerantMode));
|
|
||||||
}
|
|
||||||
else if (sender == this->ui->pb_SettingsDir)
|
|
||||||
{
|
|
||||||
QString path(QDir::toNativeSeparators(CSettingsCache::persistentStore()));
|
|
||||||
QDesktopServices::openUrl(QUrl("file:///" + path));
|
|
||||||
}
|
|
||||||
else if (sender == this->ui->pb_CoreStart)
|
|
||||||
{
|
|
||||||
//! \todo make fully OS independent
|
|
||||||
QString sfx = QFileInfo(QCoreApplication::applicationFilePath()).suffix();
|
|
||||||
QString core = QDir(QApplication::applicationDirPath()).filePath("swiftcore." + sfx);
|
|
||||||
QProcess::startDetached(core);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
/* Copyright (C) 2013
|
|
||||||
* swift project Community / Contributors
|
|
||||||
*
|
|
||||||
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
|
|
||||||
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
|
|
||||||
* including this file, may be copied, modified, propagated, or distributed except according to the terms
|
|
||||||
* contained in the LICENSE file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//! \file
|
|
||||||
|
|
||||||
#ifndef STDGUI_INTROWINDOW_H
|
|
||||||
#define STDGUI_INTROWINDOW_H
|
|
||||||
|
|
||||||
#include "swiftguistandard/guimodeenums.h"
|
|
||||||
#include "blackgui/enableforframelesswindow.h"
|
|
||||||
#include <QDialog>
|
|
||||||
#include <QScopedPointer>
|
|
||||||
|
|
||||||
namespace Ui { class CIntroWindow; }
|
|
||||||
|
|
||||||
//! Intro screen
|
|
||||||
class CIntroWindow : public QDialog
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
//! Constructor
|
|
||||||
explicit CIntroWindow(QWidget *parent = nullptr);
|
|
||||||
|
|
||||||
//! Destructor
|
|
||||||
~CIntroWindow();
|
|
||||||
|
|
||||||
//! Selected window mode
|
|
||||||
BlackGui::CEnableForFramelessWindow::WindowMode getWindowMode() const;
|
|
||||||
|
|
||||||
//! Get core mode
|
|
||||||
GuiModes::CoreMode getCoreMode() const;
|
|
||||||
|
|
||||||
//! select DBus address/mode
|
|
||||||
QString getDBusAddress() const;
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
//! Button has been clicked
|
|
||||||
void buttonClicked() const;
|
|
||||||
|
|
||||||
private:
|
|
||||||
QScopedPointer<Ui::CIntroWindow> ui;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // guard
|
|
||||||
@@ -1,357 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>CIntroWindow</class>
|
|
||||||
<widget class="QDialog" name="CIntroWindow">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>250</width>
|
|
||||||
<height>300</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>swift intro screen</string>
|
|
||||||
</property>
|
|
||||||
<property name="windowIcon">
|
|
||||||
<iconset>
|
|
||||||
<normaloff>:/blackgui/icons/aircraftdeparture.png</normaloff>:/blackgui/icons/aircraftdeparture.png</iconset>
|
|
||||||
</property>
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">QWidget {
|
|
||||||
font-family: arial-rounded;
|
|
||||||
font: bold 10px;
|
|
||||||
color: yellow; /** font **/
|
|
||||||
background-color: black;
|
|
||||||
}
|
|
||||||
|
|
||||||
QPushButton {
|
|
||||||
background-color: rgba(255, 255, 0, 175);
|
|
||||||
color: black;
|
|
||||||
border-style: solid;
|
|
||||||
border-width:1px;
|
|
||||||
border-radius: 5px;
|
|
||||||
border-color: green;
|
|
||||||
margin: 3px;
|
|
||||||
padding: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
QRadioButton {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
QGroupBox {
|
|
||||||
border: 2px solid yellow;
|
|
||||||
border-radius: 5px;
|
|
||||||
margin-top: 2ex; /* leave space at the top for the title */
|
|
||||||
}
|
|
||||||
|
|
||||||
QComboBox {
|
|
||||||
background-color: black;
|
|
||||||
border: 1px solid yellow;
|
|
||||||
}
|
|
||||||
|
|
||||||
QGroupBox::title {
|
|
||||||
subcontrol-origin: margin;
|
|
||||||
subcontrol-position: top left; /* position at the top center */
|
|
||||||
padding: 0 0px;
|
|
||||||
margin: 0px;
|
|
||||||
background-color: black;
|
|
||||||
}
|
|
||||||
|
|
||||||
#lbl_Icon {
|
|
||||||
max-height: 128;
|
|
||||||
max-width: 128;
|
|
||||||
}</string>
|
|
||||||
</property>
|
|
||||||
<property name="sizeGripEnabled">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="modal">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
|
||||||
<item>
|
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
|
||||||
<property name="leftMargin">
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing">
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QGroupBox" name="gb_Window">
|
|
||||||
<property name="title">
|
|
||||||
<string>Window</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
|
||||||
<item>
|
|
||||||
<widget class="QRadioButton" name="rb_WindowNormal">
|
|
||||||
<property name="text">
|
|
||||||
<string>Normal</string>
|
|
||||||
</property>
|
|
||||||
<property name="checked">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QRadioButton" name="rb_WindowFrameless">
|
|
||||||
<property name="text">
|
|
||||||
<string>Frameless</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QGroupBox" name="gb_Core">
|
|
||||||
<property name="title">
|
|
||||||
<string>Core</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
|
||||||
<item>
|
|
||||||
<widget class="QRadioButton" name="rb_CoreInGuiProcess">
|
|
||||||
<property name="text">
|
|
||||||
<string>Included in GUI
|
|
||||||
process</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QRadioButton" name="rb_CoreExternal">
|
|
||||||
<property name="text">
|
|
||||||
<string>External (DBus)</string>
|
|
||||||
</property>
|
|
||||||
<property name="checked">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QRadioButton" name="rb_CoreExternalVoiceLocal">
|
|
||||||
<property name="text">
|
|
||||||
<string>External,
|
|
||||||
voice included</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="pb_CoreStart">
|
|
||||||
<property name="text">
|
|
||||||
<string>start core</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1" rowspan="2">
|
|
||||||
<widget class="QFrame" name="fr_Info">
|
|
||||||
<property name="frameShape">
|
|
||||||
<enum>QFrame::StyledPanel</enum>
|
|
||||||
</property>
|
|
||||||
<property name="frameShadow">
|
|
||||||
<enum>QFrame::Raised</enum>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="vl_FrameInfo">
|
|
||||||
<property name="spacing">
|
|
||||||
<number>3</number>
|
|
||||||
</property>
|
|
||||||
<property name="leftMargin">
|
|
||||||
<number>2</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>2</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>2</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="pb_ModelDb">
|
|
||||||
<property name="text">
|
|
||||||
<string>Model DB</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="pb_WebSite">
|
|
||||||
<property name="text">
|
|
||||||
<string>Web site</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="pb_SettingsDir">
|
|
||||||
<property name="text">
|
|
||||||
<string>settings dir.</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="vs_InfoSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>20</width>
|
|
||||||
<height>40</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0" colspan="2">
|
|
||||||
<layout class="QFormLayout" name="formLayout">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="lbl_DBusServer">
|
|
||||||
<property name="text">
|
|
||||||
<string>DBus server</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QComboBox" name="cb_DBusServer">
|
|
||||||
<property name="editable">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="insertPolicy">
|
|
||||||
<enum>QComboBox::InsertAtTop</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QDialogButtonBox" name="bb_OkCancel">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="standardButtons">
|
|
||||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<resources/>
|
|
||||||
<connections>
|
|
||||||
<connection>
|
|
||||||
<sender>bb_OkCancel</sender>
|
|
||||||
<signal>accepted()</signal>
|
|
||||||
<receiver>CIntroWindow</receiver>
|
|
||||||
<slot>accept()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>240</x>
|
|
||||||
<y>290</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>157</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<sender>bb_OkCancel</sender>
|
|
||||||
<signal>rejected()</signal>
|
|
||||||
<receiver>CIntroWindow</receiver>
|
|
||||||
<slot>reject()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>240</x>
|
|
||||||
<y>290</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>286</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<sender>pb_ModelDb</sender>
|
|
||||||
<signal>clicked()</signal>
|
|
||||||
<receiver>CIntroWindow</receiver>
|
|
||||||
<slot>buttonClicked()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>217</x>
|
|
||||||
<y>34</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>319</x>
|
|
||||||
<y>37</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<sender>pb_WebSite</sender>
|
|
||||||
<signal>clicked()</signal>
|
|
||||||
<receiver>CIntroWindow</receiver>
|
|
||||||
<slot>buttonClicked()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>238</x>
|
|
||||||
<y>75</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>322</x>
|
|
||||||
<y>73</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<sender>pb_SettingsDir</sender>
|
|
||||||
<signal>clicked()</signal>
|
|
||||||
<receiver>CIntroWindow</receiver>
|
|
||||||
<slot>buttonClicked()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>197</x>
|
|
||||||
<y>97</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>86</x>
|
|
||||||
<y>250</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<sender>pb_CoreStart</sender>
|
|
||||||
<signal>clicked()</signal>
|
|
||||||
<receiver>CIntroWindow</receiver>
|
|
||||||
<slot>buttonClicked()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>90</x>
|
|
||||||
<y>194</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>0</x>
|
|
||||||
<y>218</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
</connections>
|
|
||||||
<slots>
|
|
||||||
<slot>buttonClicked()</slot>
|
|
||||||
</slots>
|
|
||||||
</ui>
|
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "swiftguistandard/guimodeenums.h"
|
#include "swiftguistandard/guimodeenums.h"
|
||||||
#include "introwindow.h"
|
#include "swiftlauncher.h"
|
||||||
#include "blackcore/blackcorefreefunctions.h"
|
#include "blackcore/blackcorefreefunctions.h"
|
||||||
#include "blackgui/guiutility.h"
|
#include "blackgui/guiutility.h"
|
||||||
#include "blackmisc/blackmiscfreefunctions.h"
|
#include "blackmisc/blackmiscfreefunctions.h"
|
||||||
@@ -27,28 +27,75 @@ using namespace BlackGui;
|
|||||||
using namespace BlackMisc;
|
using namespace BlackMisc;
|
||||||
using namespace BlackCore;
|
using namespace BlackCore;
|
||||||
|
|
||||||
|
enum CommandLineParseResult
|
||||||
|
{
|
||||||
|
CommandLineOk,
|
||||||
|
CommandLineError,
|
||||||
|
CommandLineVersionRequested,
|
||||||
|
CommandLineHelpRequested
|
||||||
|
};
|
||||||
|
|
||||||
|
CommandLineParseResult parseCommandLine(QCommandLineParser &parser, bool &installer, QString &errorMessage)
|
||||||
|
{
|
||||||
|
parser.setSingleDashWordOptionMode(QCommandLineParser::ParseAsLongOptions);
|
||||||
|
parser.addOption({{"i", "installer"}, QCoreApplication::translate("main", "Installer setup.")});
|
||||||
|
|
||||||
|
QCommandLineOption helpOption = parser.addHelpOption();
|
||||||
|
QCommandLineOption versionOption = parser.addVersionOption();
|
||||||
|
|
||||||
|
if (!parser.parse(QCoreApplication::arguments()))
|
||||||
|
{
|
||||||
|
errorMessage = parser.errorText();
|
||||||
|
return CommandLineError;
|
||||||
|
}
|
||||||
|
|
||||||
|
// help/version
|
||||||
|
if (parser.isSet(helpOption)) { return CommandLineHelpRequested; }
|
||||||
|
if (parser.isSet(versionOption)) { return CommandLineVersionRequested; }
|
||||||
|
|
||||||
|
installer = parser.isSet("installer");
|
||||||
|
return CommandLineOk;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
QApplication a(argc, argv);
|
QApplication a(argc, argv);
|
||||||
CGuiUtility::initSwiftGuiApplication(a, "swiftgui", CIcons::swift24());
|
const QString appName("swift launcher");
|
||||||
|
a.setApplicationVersion(CProject::version());
|
||||||
|
a.setApplicationName(appName);
|
||||||
|
CGuiUtility::initSwiftGuiApplication(a, appName, CIcons::swift24());
|
||||||
|
|
||||||
|
// Process the actual command line arguments given by the user
|
||||||
|
QCommandLineParser parser;
|
||||||
|
parser.setApplicationDescription(appName);
|
||||||
|
QString errorMessage;
|
||||||
|
bool installer = false;
|
||||||
|
switch (parseCommandLine(parser, installer, errorMessage))
|
||||||
|
{
|
||||||
|
case CommandLineOk:
|
||||||
|
break;
|
||||||
|
case CommandLineError:
|
||||||
|
CGuiUtility::commandLineErrorMessage(errorMessage, parser);
|
||||||
|
return 1;
|
||||||
|
case CommandLineVersionRequested:
|
||||||
|
CGuiUtility::commandLineVersionRequested();
|
||||||
|
return 0;
|
||||||
|
case CommandLineHelpRequested:
|
||||||
|
CGuiUtility::commandLineHelpRequested(parser);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// Dialog to decide external or internal core
|
// Dialog to decide external or internal core
|
||||||
CIntroWindow intro;
|
CSwiftLauncher launcher;
|
||||||
intro.setWindowIcon(CIcons::swift24());
|
launcher.setWindowIcon(CIcons::swift24());
|
||||||
if (intro.exec() == QDialog::Rejected) { return 0; }
|
if (launcher.exec() == QDialog::Rejected) { return 0; }
|
||||||
|
launcher.close();
|
||||||
|
|
||||||
GuiModes::CoreMode coreMode = intro.getCoreMode();
|
QString exe(launcher.getExecutable());
|
||||||
CEnableForFramelessWindow::WindowMode windowMode = intro.getWindowMode();
|
QStringList exeArgs(launcher.getExecutableArgs());
|
||||||
QString dBusAddress(intro.getDBusAddress());
|
Q_ASSERT_X(!exe.isEmpty(), Q_FUNC_INFO, "Missing executable");
|
||||||
intro.close();
|
CLogMessage(QCoreApplication::instance()).debug() << launcher.getCmdLine();
|
||||||
|
QProcess::startDetached(exe, exeArgs);
|
||||||
QString args(" --core %1 --dbus %2 --window %3");
|
|
||||||
QString exe = QDir::currentPath() + "/swiftguistd.exe" +
|
|
||||||
args.arg(GuiModes::coreModeToString(coreMode)).arg(dBusAddress).arg(CEnableForFramelessWindow::windowModeToString(windowMode));
|
|
||||||
QProcess *process = new QProcess(QCoreApplication::instance());
|
|
||||||
Q_ASSERT_X(process, Q_FUNC_INFO, "Cannot start process");
|
|
||||||
Q_UNUSED(process);
|
|
||||||
process->startDetached(exe);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
342
src/swiftlauncher/swiftlauncher.cpp
Normal file
342
src/swiftlauncher/swiftlauncher.cpp
Normal file
@@ -0,0 +1,342 @@
|
|||||||
|
/* Copyright (C) 2015
|
||||||
|
* swift project Community / Contributors
|
||||||
|
*
|
||||||
|
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
|
||||||
|
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
|
||||||
|
* including this file, may be copied, modified, propagated, or distributed except according to the terms
|
||||||
|
* contained in the LICENSE file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "swiftlauncher.h"
|
||||||
|
#include "ui_swiftlauncher.h"
|
||||||
|
#include "blackgui/stylesheetutility.h"
|
||||||
|
#include "blackcore/dbus_server.h"
|
||||||
|
#include "blackcore/data/download.h"
|
||||||
|
#include "blackmisc/network/networkutils.h"
|
||||||
|
#include "blackmisc/icons.h"
|
||||||
|
#include "blackmisc/project.h"
|
||||||
|
#include "blackmisc/logmessage.h"
|
||||||
|
#include "blackmisc/loghandler.h"
|
||||||
|
#include <QPixmap>
|
||||||
|
#include <QBitmap>
|
||||||
|
#include <QTimer>
|
||||||
|
#include <QProcess>
|
||||||
|
#include <QDesktopServices>
|
||||||
|
#include <QShortcut>
|
||||||
|
#include <QtWebEngineWidgets/QWebEngineView>
|
||||||
|
|
||||||
|
using namespace BlackGui;
|
||||||
|
using namespace BlackCore;
|
||||||
|
using namespace BlackCore::Data;
|
||||||
|
using namespace BlackMisc;
|
||||||
|
using namespace BlackMisc::Network;
|
||||||
|
|
||||||
|
CSwiftLauncher::CSwiftLauncher(QWidget *parent) :
|
||||||
|
QDialog(parent, CEnableForFramelessWindow::modeToWindowFlags(CEnableForFramelessWindow::WindowNormal)),
|
||||||
|
CEnableForFramelessWindow(CEnableForFramelessWindow::WindowFrameless, true, "framelessMainWindow", this),
|
||||||
|
ui(new Ui::CSwiftLauncher)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
this->setWindowTitle(QCoreApplication::instance()->applicationName() + " " + CProject::versionStringDevBetaInfo());
|
||||||
|
this->init();
|
||||||
|
connect(ui->pb_CheckForUpdates, &QPushButton::pressed, this, &CSwiftLauncher::ps_loadSetup);
|
||||||
|
connect(ui->tb_SwiftCore, &QPushButton::pressed, this, &CSwiftLauncher::ps_startButtonPressed);
|
||||||
|
connect(ui->tb_SwiftData, &QPushButton::pressed, this, &CSwiftLauncher::ps_startButtonPressed);
|
||||||
|
connect(ui->tb_SwiftGui, &QPushButton::pressed, this, &CSwiftLauncher::ps_startButtonPressed);
|
||||||
|
connect(ui->tb_Database, &QPushButton::pressed, this, &CSwiftLauncher::ps_startButtonPressed);
|
||||||
|
connect(ui->tb_BackToMain, &QToolButton::pressed, this, &CSwiftLauncher::ps_showMainPage);
|
||||||
|
|
||||||
|
new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_L), this, SLOT(ps_showLogPage()));
|
||||||
|
this->ui->le_DBusServerPort->setValidator(new QIntValidator(0, 65535, this));
|
||||||
|
QTimer::singleShot(5000, this, &CSwiftLauncher::ps_loadedSetup); //deferred init of setup
|
||||||
|
}
|
||||||
|
|
||||||
|
CSwiftLauncher::~CSwiftLauncher()
|
||||||
|
{ }
|
||||||
|
|
||||||
|
QString CSwiftLauncher::getCmdLine() const
|
||||||
|
{
|
||||||
|
return toCmdLine(this->m_executable, this->m_executableArgs);
|
||||||
|
}
|
||||||
|
|
||||||
|
CEnableForFramelessWindow::WindowMode CSwiftLauncher::getWindowMode() const
|
||||||
|
{
|
||||||
|
if (ui->rb_WindowFrameless->isChecked()) { return CEnableForFramelessWindow::WindowFrameless; }
|
||||||
|
return CEnableForFramelessWindow::WindowNormal;
|
||||||
|
}
|
||||||
|
|
||||||
|
GuiModes::CoreMode CSwiftLauncher::getCoreMode() const
|
||||||
|
{
|
||||||
|
if (ui->rb_SwiftStandalone->isChecked()) { return GuiModes::CoreInGuiProcess; }
|
||||||
|
if (ui->rb_SwiftCoreAudio->isChecked()) { return GuiModes::CoreExternalCoreAudio; }
|
||||||
|
if (ui->rb_SwiftCoreGuiAudio->isChecked()) { return GuiModes::CoreExternalAudioGui; }
|
||||||
|
|
||||||
|
Q_ASSERT_X(false, Q_FUNC_INFO, "wrong mode");
|
||||||
|
return GuiModes::CoreInGuiProcess;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CSwiftLauncher::getDBusAddress() const
|
||||||
|
{
|
||||||
|
if (this->ui->rb_DBusSession->isChecked()) { return CDBusServer::sessionDBusServer(); }
|
||||||
|
if (this->ui->rb_DBusSystem->isChecked()) { return CDBusServer::systemDBusServer(); }
|
||||||
|
return CDBusServer::fixAddressToDBusAddress(
|
||||||
|
this->ui->cb_DBusServerAddress->currentText() + ":" +
|
||||||
|
this->ui->le_DBusServerPort->text());
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::mouseMoveEvent(QMouseEvent *event)
|
||||||
|
{
|
||||||
|
if (!handleMouseMoveEvent(event)) { QDialog::mouseMoveEvent(event); }
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::mousePressEvent(QMouseEvent *event)
|
||||||
|
{
|
||||||
|
if (!handleMousePressEvent(event)) { QDialog::mousePressEvent(event); }
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::init()
|
||||||
|
{
|
||||||
|
this->ui->lbl_NewVersionUrl->setTextFormat(Qt::RichText);
|
||||||
|
this->ui->lbl_NewVersionUrl->setTextInteractionFlags(Qt::TextBrowserInteraction);
|
||||||
|
this->ui->lbl_NewVersionUrl->setOpenExternalLinks(true);
|
||||||
|
|
||||||
|
this->ui->wi_NewVersionAvailable->setVisible(false);
|
||||||
|
this->ui->wi_NoNewVersion->setVisible(true);
|
||||||
|
|
||||||
|
this->initStyleSheet();
|
||||||
|
this->initLogDisplay();
|
||||||
|
this->initDBusGui();
|
||||||
|
this->initVersion();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::initStyleSheet()
|
||||||
|
{
|
||||||
|
const QString s = CStyleSheetUtility::instance().styles(
|
||||||
|
{
|
||||||
|
CStyleSheetUtility::fileNameFonts(),
|
||||||
|
CStyleSheetUtility::fileNameStandardWidget(),
|
||||||
|
CStyleSheetUtility::fileNameSwiftLauncher()
|
||||||
|
}
|
||||||
|
);
|
||||||
|
this->setStyleSheet(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::displayLatestNews()
|
||||||
|
{
|
||||||
|
CUrlList newsUrls(this->m_setup.get().swiftLatestNewsUrls());
|
||||||
|
QUrl newUrl(newsUrls.getNextUrl());
|
||||||
|
|
||||||
|
Q_UNUSED(newUrl);
|
||||||
|
/** Qt bug
|
||||||
|
QWebEngineView *view = new QWebEngineView(this->ui->pg_LatestNews);
|
||||||
|
if (view->url() != newUrl)
|
||||||
|
{
|
||||||
|
view->load(newUrl));
|
||||||
|
}
|
||||||
|
view->show();
|
||||||
|
**/
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::initDBusGui()
|
||||||
|
{
|
||||||
|
this->ui->cb_DBusServerAddress->addItem("127.0.0.1");
|
||||||
|
this->ui->cb_DBusServerAddress->addItems(CNetworkUtils::getKnownIpAddresses());
|
||||||
|
this->ui->cb_DBusServerAddress->setCurrentIndex(0);
|
||||||
|
|
||||||
|
connect(ui->cb_DBusServerAddress, &QComboBox::currentTextChanged, this, &CSwiftLauncher::ps_dbusServerAddressSelectionChanged);
|
||||||
|
connect(ui->rb_DBusP2P, &QRadioButton::clicked, this, &CSwiftLauncher::ps_dbusServerModeSelected);
|
||||||
|
connect(ui->rb_DBusSession, &QRadioButton::clicked, this, &CSwiftLauncher::ps_dbusServerModeSelected);
|
||||||
|
connect(ui->rb_DBusSystem, &QRadioButton::clicked, this, &CSwiftLauncher::ps_dbusServerModeSelected);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::initVersion()
|
||||||
|
{
|
||||||
|
this->ui->le_CurrentVersion->setText(CProject::versionStringDevBetaInfo());
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::initLogDisplay()
|
||||||
|
{
|
||||||
|
CLogHandler::instance()->install(true);
|
||||||
|
CLogHandler::instance()->enableConsoleOutput(false); // default disable
|
||||||
|
auto logHandler = CLogHandler::instance()->handlerForPattern(
|
||||||
|
CLogPattern().withSeverityAtOrAbove(CStatusMessage::SeverityInfo)
|
||||||
|
);
|
||||||
|
logHandler->subscribe(this, &CSwiftLauncher::ps_appendLogMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::startSwiftCore()
|
||||||
|
{
|
||||||
|
QStringList args(
|
||||||
|
{
|
||||||
|
"--start",
|
||||||
|
"--dbus", this->getDBusAddress()
|
||||||
|
});
|
||||||
|
|
||||||
|
if (this->ui->rb_SwiftCoreAudio->isChecked())
|
||||||
|
{
|
||||||
|
args.append("--coreaudio");
|
||||||
|
}
|
||||||
|
|
||||||
|
// I set this for debug purpose only
|
||||||
|
this->m_executableArgs = args;
|
||||||
|
this->m_executable = CProject::swiftCoreExecutableName();
|
||||||
|
CLogMessage(this).debug() << this->getCmdLine();
|
||||||
|
|
||||||
|
// start
|
||||||
|
QProcess::startDetached(this->m_executable, this->m_executableArgs);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::setSwiftDataExecutable()
|
||||||
|
{
|
||||||
|
m_executable = CProject::swiftDataExecutableName();
|
||||||
|
m_executableArgs.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CSwiftLauncher::setSwiftGuiExecutable()
|
||||||
|
{
|
||||||
|
QString msg;
|
||||||
|
if (this->isStandaloneGuiSelected() || this->canConnectDBusServer(msg))
|
||||||
|
{
|
||||||
|
|
||||||
|
m_executable = CProject::swiftGuiExecutableName();
|
||||||
|
QStringList args
|
||||||
|
{
|
||||||
|
"--core", GuiModes::coreModeToString(getCoreMode()),
|
||||||
|
"--window", CEnableForFramelessWindow::windowModeToString(getWindowMode())
|
||||||
|
};
|
||||||
|
if (!this->isStandaloneGuiSelected())
|
||||||
|
{
|
||||||
|
args.append("--dbus");
|
||||||
|
args.append(getDBusAddress()); // already converted
|
||||||
|
}
|
||||||
|
m_executableArgs = args;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_executable = CProject::swiftGuiExecutableName();
|
||||||
|
m_executableArgs.clear();
|
||||||
|
static const CLogCategoryList cats(CLogCategoryList(this).join({ CLogCategory::validation() }));
|
||||||
|
CStatusMessage m(cats, CStatusMessage::SeverityError,
|
||||||
|
"DBus server for " + getDBusAddress() + " can not be connected: " + msg);
|
||||||
|
this->ps_showStatusMessage(m);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CSwiftLauncher::canConnectDBusServer(QString &msg) const
|
||||||
|
{
|
||||||
|
if (this->isStandaloneGuiSelected()) { return true; } // do not mind here
|
||||||
|
return CDBusServer::isDBusAvailable(getDBusAddress(), msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CSwiftLauncher::isStandaloneGuiSelected() const
|
||||||
|
{
|
||||||
|
return this->ui->rb_SwiftStandalone->isChecked();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CSwiftLauncher::toCmdLine(const QString &exe, const QStringList &exeArgs)
|
||||||
|
{
|
||||||
|
if (exeArgs.isEmpty()) { return exe; }
|
||||||
|
QString cmd(exe);
|
||||||
|
for (const QString &a : exeArgs)
|
||||||
|
{
|
||||||
|
cmd = cmd.append(" ").append(a);
|
||||||
|
}
|
||||||
|
return cmd;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::ps_loadSetup()
|
||||||
|
{
|
||||||
|
CSetupReader::instance().requestReload();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::ps_loadedSetup()
|
||||||
|
{
|
||||||
|
CDownload download(this->m_download.get());
|
||||||
|
QString latestVersion(download.getLatestVersion()) ; // need to get this from somewhere
|
||||||
|
CUrlList downloadUrls(download.getDownloadUrls());
|
||||||
|
bool newVersionAvailable = CProject::isNewerVersion(latestVersion) && !downloadUrls.isEmpty();
|
||||||
|
this->ui->wi_NewVersionAvailable->setVisible(newVersionAvailable);
|
||||||
|
this->ui->wi_NoNewVersion->setVisible(!newVersionAvailable);
|
||||||
|
this->ui->le_LatestVersion->setText(latestVersion);
|
||||||
|
|
||||||
|
if (!downloadUrls.isEmpty())
|
||||||
|
{
|
||||||
|
CUrl downloadUrl(downloadUrls.getNextUrl());
|
||||||
|
QString urlStr(downloadUrl.toQString());
|
||||||
|
QString hl("<a href=\"%1\">%2 %3</a>");
|
||||||
|
this->ui->lbl_NewVersionUrl->setText(hl.arg(urlStr).arg(urlStr).arg(latestVersion));
|
||||||
|
}
|
||||||
|
|
||||||
|
this->displayLatestNews();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::ps_startButtonPressed()
|
||||||
|
{
|
||||||
|
QObject *sender = QObject::sender();
|
||||||
|
if (sender == this->ui->tb_SwiftGui)
|
||||||
|
{
|
||||||
|
if (this->setSwiftGuiExecutable())
|
||||||
|
{
|
||||||
|
this->accept();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (sender == this->ui->tb_SwiftData)
|
||||||
|
{
|
||||||
|
this->setSwiftDataExecutable();
|
||||||
|
this->accept();
|
||||||
|
}
|
||||||
|
else if (sender == this->ui->tb_SwiftCore)
|
||||||
|
{
|
||||||
|
if (this->isStandaloneGuiSelected()) { this->ui->rb_SwiftCoreGuiAudio->setChecked(true); }
|
||||||
|
this->startSwiftCore();
|
||||||
|
}
|
||||||
|
else if (sender == this->ui->tb_Database)
|
||||||
|
{
|
||||||
|
CUrl homePage(this->m_setup.get().dbHomePageUrl());
|
||||||
|
QDesktopServices::openUrl(homePage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::ps_dbusServerAddressSelectionChanged(const QString ¤tText)
|
||||||
|
{
|
||||||
|
Q_UNUSED(currentText);
|
||||||
|
if (this->isStandaloneGuiSelected())
|
||||||
|
{
|
||||||
|
this->ui->rb_SwiftCoreGuiAudio->setChecked(true);
|
||||||
|
}
|
||||||
|
this->ui->rb_DBusP2P->setChecked(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::ps_dbusServerModeSelected(bool selected)
|
||||||
|
{
|
||||||
|
if (!selected) { return; }
|
||||||
|
if (!this->isStandaloneGuiSelected()) { return; }
|
||||||
|
this->ui->rb_SwiftCoreGuiAudio->setChecked(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::ps_showStatusMessage(const CStatusMessage &msg)
|
||||||
|
{
|
||||||
|
this->ui->fr_SwiftLauncherMain->showMessage(msg, 5000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::ps_appendLogMessage(const CStatusMessage &message)
|
||||||
|
{
|
||||||
|
ui->fr_SwiftLauncherLog->appendStatusMessageToList(message);
|
||||||
|
if (message.getSeverity() == CStatusMessage::SeverityError)
|
||||||
|
{
|
||||||
|
this->ps_showStatusMessage(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::ps_showMainPage()
|
||||||
|
{
|
||||||
|
this->ui->sw_SwiftLauncher->setCurrentWidget(this->ui->pg_SwiftLauncherMain);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSwiftLauncher::ps_showLogPage()
|
||||||
|
{
|
||||||
|
this->ui->sw_SwiftLauncher->setCurrentWidget(this->ui->pg_SwiftLauncherLog);
|
||||||
|
}
|
||||||
140
src/swiftlauncher/swiftlauncher.h
Normal file
140
src/swiftlauncher/swiftlauncher.h
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
/* Copyright (C) 2015
|
||||||
|
* swift project Community / Contributors
|
||||||
|
*
|
||||||
|
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
|
||||||
|
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
|
||||||
|
* including this file, may be copied, modified, propagated, or distributed except according to the terms
|
||||||
|
* contained in the LICENSE file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//! \file
|
||||||
|
|
||||||
|
#ifndef SWIFTLAUNCHER_H
|
||||||
|
#define SWIFTLAUNCHER_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QScopedPointer>
|
||||||
|
#include "blackcore/setupreader.h"
|
||||||
|
#include "blackgui/enableforframelesswindow.h"
|
||||||
|
#include "blackgui/overlaymessagesframe.h"
|
||||||
|
#include "swiftguistandard/guimodeenums.h"
|
||||||
|
|
||||||
|
namespace Ui { class CSwiftLauncher; }
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* swift launcher tool
|
||||||
|
* \note Besides the fact the launcher makes it easy to start our applications it also pre-fetches some
|
||||||
|
* cache files, hence reducing load times in the subsequent applications. Therefor starting via the launcher
|
||||||
|
* is preferable, but not mandatory.
|
||||||
|
*/
|
||||||
|
class CSwiftLauncher :
|
||||||
|
public QDialog,
|
||||||
|
public BlackGui::CEnableForFramelessWindow
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
//! Constructor
|
||||||
|
explicit CSwiftLauncher(QWidget *parent = nullptr);
|
||||||
|
|
||||||
|
//! Destructor
|
||||||
|
~CSwiftLauncher();
|
||||||
|
|
||||||
|
//! Executable
|
||||||
|
const QString &getExecutable() const { return m_executable; }
|
||||||
|
|
||||||
|
//! Arguments
|
||||||
|
const QStringList &getExecutableArgs() const { return m_executableArgs; }
|
||||||
|
|
||||||
|
//! Current command line
|
||||||
|
QString getCmdLine() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
//! \copydoc QDialog::mousePressEvent
|
||||||
|
virtual void mousePressEvent(QMouseEvent *event) override;
|
||||||
|
|
||||||
|
//! \copydoc QDialog::mouseMoveEvent
|
||||||
|
void mouseMoveEvent(QMouseEvent *event);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QScopedPointer<Ui::CSwiftLauncher> ui;
|
||||||
|
BlackCore::CData<BlackCore::Data::GlobalSetup> m_setup { this, &CSwiftLauncher::ps_loadedSetup }; //!< setup cache
|
||||||
|
BlackCore::CData<BlackCore::Data::Download> m_download { this, &CSwiftLauncher::ps_loadedSetup };
|
||||||
|
QString m_executable;
|
||||||
|
QStringList m_executableArgs;
|
||||||
|
|
||||||
|
//! Get core mode
|
||||||
|
GuiModes::CoreMode getCoreMode() const;
|
||||||
|
|
||||||
|
//! select DBus address/mode
|
||||||
|
QString getDBusAddress() const;
|
||||||
|
|
||||||
|
//! Selected window mode
|
||||||
|
BlackGui::CEnableForFramelessWindow::WindowMode getWindowMode() const;
|
||||||
|
|
||||||
|
//! Init
|
||||||
|
void init();
|
||||||
|
|
||||||
|
//! style sheets
|
||||||
|
void initStyleSheet();
|
||||||
|
|
||||||
|
//! combobox for DBus
|
||||||
|
void initDBusGui();
|
||||||
|
|
||||||
|
//! Version string
|
||||||
|
void initVersion();
|
||||||
|
|
||||||
|
//! Log display
|
||||||
|
void initLogDisplay();
|
||||||
|
|
||||||
|
//! latest news
|
||||||
|
void displayLatestNews();
|
||||||
|
|
||||||
|
//! Start the core
|
||||||
|
void startSwiftCore();
|
||||||
|
|
||||||
|
//! Set executable for swift data
|
||||||
|
void setSwiftDataExecutable();
|
||||||
|
|
||||||
|
//! Set executable for swift GUI
|
||||||
|
bool setSwiftGuiExecutable();
|
||||||
|
|
||||||
|
//! Can DBus server be connected
|
||||||
|
bool canConnectDBusServer(QString &msg) const;
|
||||||
|
|
||||||
|
//! Standalone GUI selected
|
||||||
|
bool isStandaloneGuiSelected() const;
|
||||||
|
|
||||||
|
//! Command line
|
||||||
|
static QString toCmdLine(const QString &exe, const QStringList &exeArgs);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
//! Load latest version
|
||||||
|
void ps_loadSetup();
|
||||||
|
|
||||||
|
//! Loaded latest version
|
||||||
|
void ps_loadedSetup();
|
||||||
|
|
||||||
|
//! Start button pressed
|
||||||
|
void ps_startButtonPressed();
|
||||||
|
|
||||||
|
//! Changed selection
|
||||||
|
void ps_dbusServerAddressSelectionChanged(const QString ¤tText);
|
||||||
|
|
||||||
|
//! DBus server mode selected
|
||||||
|
void ps_dbusServerModeSelected(bool selected);
|
||||||
|
|
||||||
|
//! Display status message as overlay
|
||||||
|
void ps_showStatusMessage(const BlackMisc::CStatusMessage &msg);
|
||||||
|
|
||||||
|
//! Append status message
|
||||||
|
void ps_appendLogMessage(const BlackMisc::CStatusMessage &message);
|
||||||
|
|
||||||
|
//! Show set main page
|
||||||
|
void ps_showMainPage();
|
||||||
|
|
||||||
|
//! Show the log page
|
||||||
|
void ps_showLogPage();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // guard
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
load(common_pre)
|
load(common_pre)
|
||||||
|
|
||||||
QT += core dbus gui svg network xml multimedia
|
QT += core dbus gui svg network xml multimedia webenginewidgets
|
||||||
|
|
||||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||||
|
|
||||||
@@ -29,6 +29,7 @@ DEPENDPATH += . $$SourceRoot/src/blackmisc \
|
|||||||
INCLUDEPATH += . $$SourceRoot/src
|
INCLUDEPATH += . $$SourceRoot/src
|
||||||
|
|
||||||
OTHER_FILES += *.qss *.ico *.rc
|
OTHER_FILES += *.qss *.ico *.rc
|
||||||
|
RESOURCES += swiftlauncher.qrc
|
||||||
RC_FILE = swift.rc
|
RC_FILE = swift.rc
|
||||||
DISTFILES += swift.rc
|
DISTFILES += swift.rc
|
||||||
|
|
||||||
|
|||||||
21
src/swiftlauncher/swiftlauncher.qrc
Normal file
21
src/swiftlauncher/swiftlauncher.qrc
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource prefix="/launcher">
|
||||||
|
<file>icons/swift256Launcher.png</file>
|
||||||
|
<file>icons/swift256Launcher.xcf</file>
|
||||||
|
<file>icons/swiftFrameless.png</file>
|
||||||
|
<file>icons/swiftNormal.png</file>
|
||||||
|
<file>icons/swiftFrameless100x162.png</file>
|
||||||
|
<file>icons/swiftFrameless125x203.png</file>
|
||||||
|
<file>icons/swiftFrameless200x325.png</file>
|
||||||
|
<file>icons/swiftNormal100x165.png</file>
|
||||||
|
<file>icons/swiftNormal125x206.png</file>
|
||||||
|
<file>icons/swiftNormal200x329.png</file>
|
||||||
|
<file>icons/swiftHeader325x65.png</file>
|
||||||
|
<file>icons/swiftGUIandCore130x100.png</file>
|
||||||
|
<file>icons/swiftGUIandCore215x165.png</file>
|
||||||
|
<file>icons/swiftCore110x100.png</file>
|
||||||
|
<file>icons/swiftGUIandCore115x85.png</file>
|
||||||
|
<file>icons/swiftNormal61x100.png</file>
|
||||||
|
<file>icons/swiftNormal115x189.png</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
||||||
734
src/swiftlauncher/swiftlauncher.ui
Normal file
734
src/swiftlauncher/swiftlauncher.ui
Normal file
@@ -0,0 +1,734 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>CSwiftLauncher</class>
|
||||||
|
<widget class="QDialog" name="CSwiftLauncher">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>365</width>
|
||||||
|
<height>625</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>swift launcher</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="vl_SwiftLauncher">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QStackedWidget" name="sw_SwiftLauncher">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="pg_SwiftLauncherMain">
|
||||||
|
<layout class="QVBoxLayout" name="wl_SwiftLauncherMainPage">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="BlackGui::COverlayMessagesFrame" name="fr_SwiftLauncherMain">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="vl_SwiftLauncherMain">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>25</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolBox" name="tb_Launcher">
|
||||||
|
<property name="currentIndex">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="tabSpacing">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="pg_LatestNews">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>355</width>
|
||||||
|
<height>306</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<attribute name="label">
|
||||||
|
<string>Latest news</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QVBoxLayout" name="vl_LatestNews"/>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="pg_WindowType">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>355</width>
|
||||||
|
<height>306</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<attribute name="label">
|
||||||
|
<string>Window type</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QGridLayout" name="gl_WindowType">
|
||||||
|
<item row="1" column="1" alignment="Qt::AlignHCenter">
|
||||||
|
<widget class="QRadioButton" name="rb_WindowFrameless">
|
||||||
|
<property name="text">
|
||||||
|
<string>Frameless</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0" alignment="Qt::AlignHCenter">
|
||||||
|
<widget class="QRadioButton" name="rb_WindowNormal">
|
||||||
|
<property name="text">
|
||||||
|
<string>Normal window</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0" colspan="2">
|
||||||
|
<spacer name="vs_WindowType">
|
||||||
|
<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" alignment="Qt::AlignHCenter">
|
||||||
|
<widget class="QLabel" name="lbl_WindowFrameless">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap resource="swiftlauncher.qrc">:/launcher/icons/swiftFrameless125x203.png</pixmap>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0" alignment="Qt::AlignHCenter">
|
||||||
|
<widget class="QLabel" name="lbl_WindowNormal">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap resource="swiftlauncher.qrc">:/launcher/icons/swiftNormal125x206.png</pixmap>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="pg_CoreMode">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>355</width>
|
||||||
|
<height>306</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<attribute name="label">
|
||||||
|
<string>Core mode</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QGridLayout" name="gl_CoreMode" columnstretch="10,14,14">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<property name="spacing">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<item row="3" column="1" colspan="2">
|
||||||
|
<widget class="QGroupBox" name="gb_DBusServer">
|
||||||
|
<property name="title">
|
||||||
|
<string>DBus</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="vl_DBusGroupBox">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="rb_DBusSession">
|
||||||
|
<property name="text">
|
||||||
|
<string>DBus session server</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="rb_DBusSystem">
|
||||||
|
<property name="text">
|
||||||
|
<string>DBus system server</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="rb_DBusP2P">
|
||||||
|
<property name="text">
|
||||||
|
<string>DBus peer to peer server (P2P)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QFrame" name="fr_DBusServerAddress">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gl_DBusServerAddressDetails">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>20</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>20</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<widget class="QComboBox" name="cb_DBusServerAddress">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="editable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="lbl_DBusServerAddress">
|
||||||
|
<property name="text">
|
||||||
|
<string>Address:</string>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="lbl_DBusServerPort">
|
||||||
|
<property name="text">
|
||||||
|
<string>Port:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="QLineEdit" name="le_DBusServerPort">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>80</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>45000</string>
|
||||||
|
</property>
|
||||||
|
<property name="maxLength">
|
||||||
|
<number>5</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1" alignment="Qt::AlignHCenter">
|
||||||
|
<widget class="QRadioButton" name="rb_SwiftCoreGuiAudio">
|
||||||
|
<property name="text">
|
||||||
|
<string>GUI and core</string>
|
||||||
|
</property>
|
||||||
|
<attribute name="buttonGroup">
|
||||||
|
<string notr="true">bg_CoreMode</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QLabel" name="lbl_SwiftCoreIcon">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap resource="swiftlauncher.qrc">:/launcher/icons/swiftGUIandCore115x85.png</pixmap>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2" alignment="Qt::AlignHCenter">
|
||||||
|
<widget class="QRadioButton" name="rb_SwiftCoreAudio">
|
||||||
|
<property name="text">
|
||||||
|
<string>GUI and core</string>
|
||||||
|
</property>
|
||||||
|
<attribute name="buttonGroup">
|
||||||
|
<string notr="true">bg_CoreMode</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="2">
|
||||||
|
<widget class="QLabel" name="lbl_SwiftCoreAudioIcon">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap resource="swiftlauncher.qrc">:/launcher/icons/swiftGUIandCore115x85.png</pixmap>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0" alignment="Qt::AlignHCenter">
|
||||||
|
<widget class="QRadioButton" name="rb_SwiftStandalone">
|
||||||
|
<property name="text">
|
||||||
|
<string>standalone</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<attribute name="buttonGroup">
|
||||||
|
<string notr="true">bg_CoreMode</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1" alignment="Qt::AlignHCenter">
|
||||||
|
<widget class="QLabel" name="lbl_AudioGui">
|
||||||
|
<property name="text">
|
||||||
|
<string>Audio on GUI side</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0" alignment="Qt::AlignHCenter">
|
||||||
|
<widget class="QLabel" name="lbl_SwiftStandaloneIcon">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap resource="swiftlauncher.qrc">:/launcher/icons/swiftNormal61x100.png</pixmap>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2" alignment="Qt::AlignHCenter">
|
||||||
|
<widget class="QLabel" name="lbl_AudioCore">
|
||||||
|
<property name="text">
|
||||||
|
<string>Audio on core side</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="pg_Updates">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>355</width>
|
||||||
|
<height>306</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<attribute name="label">
|
||||||
|
<string>Check for updates</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QGridLayout" name="gl_Updates">
|
||||||
|
<item row="5" column="1">
|
||||||
|
<widget class="QWidget" name="wi_NoNewVersion" native="true">
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="blb_NoNewVersion">
|
||||||
|
<property name="text">
|
||||||
|
<string>You are running the latest version!</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QWidget" name="wi_NewVersionAvailable" native="true">
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="lbl_NewVersionText">
|
||||||
|
<property name="text">
|
||||||
|
<string>A new version is available here:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="lbl_NewVersionUrl">
|
||||||
|
<property name="text">
|
||||||
|
<string>http://www.foobar.com</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLineEdit" name="le_CurrentVersion">
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="lbl_LatestVersion">
|
||||||
|
<property name="text">
|
||||||
|
<string>Latest version:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="lbl_CurrentVersion">
|
||||||
|
<property name="text">
|
||||||
|
<string>This version:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QPushButton" name="pb_CheckForUpdates">
|
||||||
|
<property name="text">
|
||||||
|
<string>check for updates</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLineEdit" name="le_LatestVersion">
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="7" column="1">
|
||||||
|
<spacer name="vs_Updates">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="pg_CreditsLicense">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>355</width>
|
||||||
|
<height>306</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<attribute name="label">
|
||||||
|
<string>Credits and License</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QVBoxLayout" name="vl_Credits">
|
||||||
|
<item>
|
||||||
|
<widget class="QTextEdit" name="te_CreditsLicense">
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="html">
|
||||||
|
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||||
|
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||||
|
p, li { white-space: pre-wrap; }
|
||||||
|
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Credits will go here</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolBox" name="tb_Start">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>140</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="currentIndex">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="pg_Start">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>355</width>
|
||||||
|
<height>113</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<attribute name="label">
|
||||||
|
<string>Start application</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="1" column="2" alignment="Qt::AlignHCenter">
|
||||||
|
<widget class="QLabel" name="lbl_SwiftData">
|
||||||
|
<property name="text">
|
||||||
|
<string>mapping tool</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="4" alignment="Qt::AlignHCenter">
|
||||||
|
<widget class="QLabel" name="lbl_Database">
|
||||||
|
<property name="text">
|
||||||
|
<string>goto swift DB</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QToolButton" name="tb_SwiftCore">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>start swift core</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>swift core</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../blackmisc/blackmisc.qrc">
|
||||||
|
<normaloff>:/own/icons/own/swift/swiftNova64.png</normaloff>:/own/icons/own/swift/swiftNova64.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>64</width>
|
||||||
|
<height>64</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QToolButton" name="tb_SwiftGui">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>start swift GUI</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>swift GUI</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../blackmisc/blackmisc.qrc">
|
||||||
|
<normaloff>:/own/icons/own/swift/swift64.png</normaloff>:/own/icons/own/swift/swift64.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>64</width>
|
||||||
|
<height>64</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="4">
|
||||||
|
<widget class="QToolButton" name="tb_Database">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>open browser for swift database</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>goto swift database</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../blackmisc/blackmisc.qrc">
|
||||||
|
<normaloff>:/own/icons/own/swift/swift64Database.png</normaloff>:/own/icons/own/swift/swift64Database.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>64</width>
|
||||||
|
<height>64</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<widget class="QToolButton" name="tb_SwiftData">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>start swift data (the mapping tool)</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>mapping tool</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../blackmisc/blackmisc.qrc">
|
||||||
|
<normaloff>:/own/icons/own/swift/swift64Database.png</normaloff>:/own/icons/own/swift/swift64Database.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>64</width>
|
||||||
|
<height>64</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0" alignment="Qt::AlignHCenter">
|
||||||
|
<widget class="QLabel" name="lbl_SwiftGui">
|
||||||
|
<property name="text">
|
||||||
|
<string>GUI</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1" alignment="Qt::AlignHCenter">
|
||||||
|
<widget class="QLabel" name="lbl_SwiftCore">
|
||||||
|
<property name="text">
|
||||||
|
<string>core</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="3">
|
||||||
|
<spacer name="hs_Start">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>25</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="pg_SwiftLauncherLog">
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="BlackGui::Components::CLogComponent" name="fr_SwiftLauncherLog">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Raised</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="tb_BackToMain">
|
||||||
|
<property name="text">
|
||||||
|
<string>back to main</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../blackmisc/blackmisc.qrc">
|
||||||
|
<normaloff>:/diagona/icons/diagona/icons/arrow-180.png</normaloff>:/diagona/icons/diagona/icons/arrow-180.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="shortcut">
|
||||||
|
<string>Ctrl+M</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>BlackGui::COverlayMessagesFrame</class>
|
||||||
|
<extends>QFrame</extends>
|
||||||
|
<header>blackgui/overlaymessagesframe.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>BlackGui::Components::CLogComponent</class>
|
||||||
|
<extends>QFrame</extends>
|
||||||
|
<header>blackgui/components/logcomponent.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
|
<resources>
|
||||||
|
<include location="swiftlauncher.qrc"/>
|
||||||
|
<include location="../blackmisc/blackmisc.qrc"/>
|
||||||
|
</resources>
|
||||||
|
<connections/>
|
||||||
|
<buttongroups>
|
||||||
|
<buttongroup name="bg_CoreMode"/>
|
||||||
|
</buttongroups>
|
||||||
|
</ui>
|
||||||
Reference in New Issue
Block a user