Implement About Dialog
Prepared XDG icon theme in :/icons/multimc. will only be usefull as soon as Qt decides to support custom fallback themes. use the resources directly for now.
This commit is contained in:
parent
519f66efee
commit
576e979df4
@ -113,6 +113,7 @@ gui/newinstancedialog.cpp
|
|||||||
gui/logindialog.cpp
|
gui/logindialog.cpp
|
||||||
gui/taskdialog.cpp
|
gui/taskdialog.cpp
|
||||||
gui/browserdialog.cpp
|
gui/browserdialog.cpp
|
||||||
|
gui/aboutdialog.cpp
|
||||||
|
|
||||||
util/pathutils.cpp
|
util/pathutils.cpp
|
||||||
util/osutils.cpp
|
util/osutils.cpp
|
||||||
@ -134,6 +135,7 @@ gui/newinstancedialog.h
|
|||||||
gui/logindialog.h
|
gui/logindialog.h
|
||||||
gui/taskdialog.h
|
gui/taskdialog.h
|
||||||
gui/browserdialog.h
|
gui/browserdialog.h
|
||||||
|
gui/aboutdialog.h
|
||||||
|
|
||||||
data/appsettings.h
|
data/appsettings.h
|
||||||
data/inifile.h
|
data/inifile.h
|
||||||
@ -174,6 +176,7 @@ gui/newinstancedialog.ui
|
|||||||
gui/logindialog.ui
|
gui/logindialog.ui
|
||||||
gui/taskdialog.ui
|
gui/taskdialog.ui
|
||||||
gui/browserdialog.ui
|
gui/browserdialog.ui
|
||||||
|
gui/aboutdialog.ui
|
||||||
)
|
)
|
||||||
|
|
||||||
################################ Install ################################
|
################################ Install ################################
|
||||||
|
23
gui/aboutdialog.cpp
Normal file
23
gui/aboutdialog.cpp
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#include "aboutdialog.h"
|
||||||
|
#include "ui_aboutdialog.h"
|
||||||
|
|
||||||
|
#include <QIcon>
|
||||||
|
#include <QApplication>
|
||||||
|
|
||||||
|
AboutDialog::AboutDialog(QWidget *parent) :
|
||||||
|
QDialog(parent),
|
||||||
|
ui(new Ui::AboutDialog)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
ui->icon->setPixmap(QIcon(":/icons/multimc/scalable/apps/multimc.svg").pixmap(64));
|
||||||
|
|
||||||
|
connect(ui->closeButton, SIGNAL(clicked()), SLOT(close()));
|
||||||
|
|
||||||
|
QApplication::instance()->connect(ui->aboutQt, SIGNAL(clicked()), SLOT(aboutQt()));
|
||||||
|
}
|
||||||
|
|
||||||
|
AboutDialog::~AboutDialog()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
22
gui/aboutdialog.h
Normal file
22
gui/aboutdialog.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#ifndef ABOUTDIALOG_H
|
||||||
|
#define ABOUTDIALOG_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class AboutDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AboutDialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit AboutDialog(QWidget *parent = 0);
|
||||||
|
~AboutDialog();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::AboutDialog *ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // ABOUTDIALOG_H
|
288
gui/aboutdialog.ui
Normal file
288
gui/aboutdialog.ui
Normal file
@ -0,0 +1,288 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>AboutDialog</class>
|
||||||
|
<widget class="QDialog" name="AboutDialog">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>450</width>
|
||||||
|
<height>400</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>450</width>
|
||||||
|
<height>400</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Dialog</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<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>
|
||||||
|
<widget class="QLabel" name="icon">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>64</width>
|
||||||
|
<height>64</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="baseSize">
|
||||||
|
<size>
|
||||||
|
<width>64</width>
|
||||||
|
<height>64</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<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>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="title">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>15</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>MultiMC</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolBox" name="toolBox">
|
||||||
|
<property name="currentIndex">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="aboutPage">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>432</width>
|
||||||
|
<height>153</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<attribute name="label">
|
||||||
|
<string>About</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="aboutLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>MultiMC is a custom launcher that makes managing Minecraft easier by allowing you to have multiple installations of Minecraft at once.</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="copyLabel">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>8</pointsize>
|
||||||
|
<kerning>true</kerning>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>© 2013 MultiMC Contributors</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="urlLabel">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>10</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><a href="http://github.com/Forkk/MultiMC5"><span style=" text-decoration: underline; color:#0000ff;">http://github.com/Forkk/MultiMC5</span></a></p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="creditsPage">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>432</width>
|
||||||
|
<height>153</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<attribute name="label">
|
||||||
|
<string>Credits</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QTextEdit" name="creditsText">
|
||||||
|
<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:'Ubuntu'; font-size:11pt; 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;">Andrew Okin &lt;<a href="mailto:forkk@forkk.net"><span style=" text-decoration: underline; color:#0000ff;">forkk@forkk.net</span></a>&gt;</p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Petr Mrázek &lt;<a href="mailto:peterix@gmail.com"><span style=" text-decoration: underline; color:#0000ff;">peterix@gmail.com</span></a>&gt;</p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Orochimarufan &lt;<a href="mailto:orochimarufan.x3@gmail.com"><span style=" text-decoration: underline; color:#0000ff;">orochimarufan.x3@gmail.com</span></a>&gt;</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="licensePage">
|
||||||
|
<attribute name="label">
|
||||||
|
<string>License</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||||
|
<item>
|
||||||
|
<widget class="QTextEdit" name="licenseText">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<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:'Ubuntu'; font-size:11pt; 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;"><span style=" font-size:10pt;">Copyright 2012 MultiMC Contributors</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">you may not use this file except in compliance with the License.</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">You may obtain a copy of the License at</span></p>
|
||||||
|
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"><br /></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"> http://www.apache.org/licenses/LICENSE-2.0</span></p>
|
||||||
|
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"><br /></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Unless required by applicable law or agreed to in writing, software</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">See the License for the specific language governing permissions and</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">limitations under the License.</span></p>
|
||||||
|
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"><br /></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">MultiMC uses bspatch, </span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Copyright 2003-2005 Colin Percival</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">All rights reserved</span></p>
|
||||||
|
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"><br /></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Redistribution and use in source and binary forms, with or without</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">modification, are permitted providing that the following conditions</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">are met: </span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">1. Redistributions of source code must retain the above copyright</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"> notice, this list of conditions and the following disclaimer.</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">2. Redistributions in binary form must reproduce the above copyright</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"> notice, this list of conditions and the following disclaimer in the</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"> documentation and/or other materials provided with the distribution.</span></p>
|
||||||
|
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"><br /></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">POSSIBILITY OF SUCH DAMAGE.</span></p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="aboutQt">
|
||||||
|
<property name="text">
|
||||||
|
<string>About Qt</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_3">
|
||||||
|
<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>
|
||||||
|
<widget class="QPushButton" name="closeButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Close</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
@ -37,6 +37,7 @@
|
|||||||
#include "gui/logindialog.h"
|
#include "gui/logindialog.h"
|
||||||
#include "gui/taskdialog.h"
|
#include "gui/taskdialog.h"
|
||||||
#include "gui/browserdialog.h"
|
#include "gui/browserdialog.h"
|
||||||
|
#include "gui/aboutdialog.h"
|
||||||
|
|
||||||
#include "data/appsettings.h"
|
#include "data/appsettings.h"
|
||||||
#include "data/version.h"
|
#include "data/version.h"
|
||||||
@ -109,7 +110,8 @@ void MainWindow::on_actionNews_triggered()
|
|||||||
|
|
||||||
void MainWindow::on_actionAbout_triggered()
|
void MainWindow::on_actionAbout_triggered()
|
||||||
{
|
{
|
||||||
|
AboutDialog dialog(this);
|
||||||
|
dialog.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_mainToolBar_visibilityChanged(bool)
|
void MainWindow::on_mainToolBar_visibilityChanged(bool)
|
||||||
|
17
main.cpp
17
main.cpp
@ -27,6 +27,8 @@
|
|||||||
|
|
||||||
#include "util/cmdutils.h"
|
#include "util/cmdutils.h"
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
using namespace Util::Commandline;
|
using namespace Util::Commandline;
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
@ -46,7 +48,11 @@ int main(int argc, char *argv[])
|
|||||||
// --help
|
// --help
|
||||||
parser.addSwitch("help");
|
parser.addSwitch("help");
|
||||||
parser.addShortOpt("help", 'h');
|
parser.addShortOpt("help", 'h');
|
||||||
parser.addDocumentation("help", "displays help on command line parameters");
|
parser.addDocumentation("help", "display this help and exit.");
|
||||||
|
// --version
|
||||||
|
parser.addSwitch("version");
|
||||||
|
parser.addShortOpt("version", 'V');
|
||||||
|
parser.addDocumentation("version", "display program version and exit.");
|
||||||
// --dir
|
// --dir
|
||||||
parser.addOption("dir", app.applicationDirPath());
|
parser.addOption("dir", app.applicationDirPath());
|
||||||
parser.addShortOpt("dir", 'd');
|
parser.addShortOpt("dir", 'd');
|
||||||
@ -70,6 +76,7 @@ int main(int argc, char *argv[])
|
|||||||
args = parser.parse(app.arguments());
|
args = parser.parse(app.arguments());
|
||||||
} catch(ParsingError e) {
|
} catch(ParsingError e) {
|
||||||
std::cerr << "CommandLineError: " << e.what() << std::endl;
|
std::cerr << "CommandLineError: " << e.what() << std::endl;
|
||||||
|
std::cerr << "Try '%1 -h' to get help on MultiMC's command line parameters." << std::endl;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,16 +86,24 @@ int main(int argc, char *argv[])
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// display version and exit
|
||||||
|
if (args["version"].toBool()) {
|
||||||
|
std::cout << VERSION_STR << " " << JENKINS_BUILD_TAG << " " << (ARCH==x64?"x86_64":"x86") << std::endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// update
|
// update
|
||||||
// Note: cwd is always the current executable path!
|
// Note: cwd is always the current executable path!
|
||||||
if (!args["update"].isNull())
|
if (!args["update"].isNull())
|
||||||
{
|
{
|
||||||
std::cout << "Performing MultiMC update: " << qPrintable(args["update"].toString()) << std::endl;
|
std::cout << "Performing MultiMC update: " << qPrintable(args["update"].toString()) << std::endl;
|
||||||
|
QString cwd = QDir::currentPath();
|
||||||
QDir::setCurrent(app.applicationDirPath());
|
QDir::setCurrent(app.applicationDirPath());
|
||||||
QFile file(app.applicationFilePath());
|
QFile file(app.applicationFilePath());
|
||||||
file.copy(args["update"].toString());
|
file.copy(args["update"].toString());
|
||||||
if(args["quietupdate"].toBool())
|
if(args["quietupdate"].toBool())
|
||||||
return 0;
|
return 0;
|
||||||
|
QDir::setCurrent(cwd);
|
||||||
}
|
}
|
||||||
|
|
||||||
// change directory
|
// change directory
|
||||||
|
@ -30,4 +30,8 @@
|
|||||||
<qresource prefix="/launcher">
|
<qresource prefix="/launcher">
|
||||||
<file alias="launcherjar">resources/MultiMCLauncher.jar</file>
|
<file alias="launcherjar">resources/MultiMCLauncher.jar</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
|
<qresource prefix="/icons/multimc">
|
||||||
|
<file alias="scalable/apps/multimc.svg">resources/icons/multimc.svg</file>
|
||||||
|
<file alias="index.theme">resources/XdgIcon.theme</file>
|
||||||
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
12
resources/XdgIcon.theme
Normal file
12
resources/XdgIcon.theme
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[Icon Theme]
|
||||||
|
Name=MultiMC
|
||||||
|
Comment=MultiMC Default Icons
|
||||||
|
Inherits=default
|
||||||
|
Directories=scalable/apps
|
||||||
|
|
||||||
|
[scalable/apps]
|
||||||
|
Size=48
|
||||||
|
Type=scalable
|
||||||
|
MinSize=1
|
||||||
|
MaxSize=512
|
||||||
|
Context=Applications
|
@ -50,7 +50,7 @@ FlagStyle Parser::flagStyle()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// setup methods
|
// setup methods
|
||||||
void Parser::addSwitch(QString name, bool def) throw (const char *)
|
void Parser::addSwitch(QString name, bool def)
|
||||||
{
|
{
|
||||||
if (m_params.contains(name))
|
if (m_params.contains(name))
|
||||||
throw "Name not unique";
|
throw "Name not unique";
|
||||||
@ -66,7 +66,7 @@ void Parser::addSwitch(QString name, bool def) throw (const char *)
|
|||||||
m_optionList.append(param);
|
m_optionList.append(param);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::addOption(QString name, QVariant def) throw (const char *)
|
void Parser::addOption(QString name, QVariant def)
|
||||||
{
|
{
|
||||||
if (m_params.contains(name))
|
if (m_params.contains(name))
|
||||||
throw "Name not unique";
|
throw "Name not unique";
|
||||||
@ -82,7 +82,7 @@ void Parser::addOption(QString name, QVariant def) throw (const char *)
|
|||||||
m_optionList.append(param);
|
m_optionList.append(param);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::addArgument(QString name, bool required, QVariant def) throw (const char *)
|
void Parser::addArgument(QString name, bool required, QVariant def)
|
||||||
{
|
{
|
||||||
if (m_params.contains(name))
|
if (m_params.contains(name))
|
||||||
throw "Name not unique";
|
throw "Name not unique";
|
||||||
@ -91,12 +91,13 @@ void Parser::addArgument(QString name, bool required, QVariant def) throw (const
|
|||||||
param->name = name;
|
param->name = name;
|
||||||
param->def = def;
|
param->def = def;
|
||||||
param->required = required;
|
param->required = required;
|
||||||
|
param->metavar = name;
|
||||||
|
|
||||||
m_positionals.append(param);
|
m_positionals.append(param);
|
||||||
m_params[name] = (CommonDef *)param;
|
m_params[name] = (CommonDef *)param;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::addDocumentation(QString name, QString doc, QString metavar) throw (const char *)
|
void Parser::addDocumentation(QString name, QString doc, QString metavar)
|
||||||
{
|
{
|
||||||
if (!m_params.contains(name))
|
if (!m_params.contains(name))
|
||||||
throw "Name does not exist";
|
throw "Name does not exist";
|
||||||
@ -107,7 +108,7 @@ void Parser::addDocumentation(QString name, QString doc, QString metavar) throw
|
|||||||
param->metavar = metavar;
|
param->metavar = metavar;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::addShortOpt(QString name, QChar flag) throw (const char *)
|
void Parser::addShortOpt(QString name, QChar flag)
|
||||||
{
|
{
|
||||||
if (!m_params.contains(name))
|
if (!m_params.contains(name))
|
||||||
throw "Name does not exist";
|
throw "Name does not exist";
|
||||||
@ -135,7 +136,7 @@ QString Parser::compileHelp(QString progName, int helpIndent, bool useFlags)
|
|||||||
{
|
{
|
||||||
PositionalDef *param = it2.next();
|
PositionalDef *param = it2.next();
|
||||||
help << " " << param->metavar;
|
help << " " << param->metavar;
|
||||||
help << " " << QString(helpIndent - param->name.length() - 1, ' ');
|
help << " " << QString(helpIndent - param->metavar.length() - 1, ' ');
|
||||||
help << param->doc << "\r\n";
|
help << param->doc << "\r\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -203,7 +204,7 @@ QString Parser::compileUsage(QString progName, bool useFlags)
|
|||||||
{
|
{
|
||||||
PositionalDef *param = it2.next();
|
PositionalDef *param = it2.next();
|
||||||
usage << " " << (param->required ? "<" : "[");
|
usage << " " << (param->required ? "<" : "[");
|
||||||
usage << param->name;
|
usage << param->metavar;
|
||||||
usage << (param->required ? ">" : "]");
|
usage << (param->required ? ">" : "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -211,7 +212,7 @@ QString Parser::compileUsage(QString progName, bool useFlags)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// parsing
|
// parsing
|
||||||
QHash<QString, QVariant> Parser::parse(QStringList argv) throw (ParsingError)
|
QHash<QString, QVariant> Parser::parse(QStringList argv)
|
||||||
{
|
{
|
||||||
QHash<QString, QVariant> map;
|
QHash<QString, QVariant> map;
|
||||||
|
|
||||||
@ -411,20 +412,20 @@ void Parser::getPrefix(QString &opt, QString &flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ParsingError
|
// ParsingError
|
||||||
ParsingError::ParsingError(const QString &what) throw()
|
ParsingError::ParsingError(const QString &what)
|
||||||
{
|
{
|
||||||
m_what = what;
|
m_what = what;
|
||||||
}
|
}
|
||||||
ParsingError::ParsingError(const ParsingError &e) throw()
|
ParsingError::ParsingError(const ParsingError &e)
|
||||||
{
|
{
|
||||||
m_what = e.m_what;
|
m_what = e.m_what;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *ParsingError::what() const throw()
|
const char *ParsingError::what() const throw()
|
||||||
{
|
{
|
||||||
return m_what.toLocal8Bit().data();
|
return m_what.toLocal8Bit().constData();
|
||||||
}
|
}
|
||||||
QString ParsingError::qwhat() const throw()
|
QString ParsingError::qwhat() const
|
||||||
{
|
{
|
||||||
return m_what;
|
return m_what;
|
||||||
}
|
}
|
||||||
|
@ -68,11 +68,11 @@ enum class ArgumentStyle {
|
|||||||
class ParsingError : public std::exception
|
class ParsingError : public std::exception
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ParsingError(const QString &what) throw();
|
ParsingError(const QString &what);
|
||||||
ParsingError(const ParsingError &e) throw();
|
ParsingError(const ParsingError &e);
|
||||||
~ParsingError() throw() {}
|
~ParsingError() throw() {}
|
||||||
char *what() const throw();
|
const char *what() const throw();
|
||||||
QString qwhat() const throw();
|
QString qwhat() const;
|
||||||
private:
|
private:
|
||||||
QString m_what;
|
QString m_what;
|
||||||
};
|
};
|
||||||
@ -119,14 +119,14 @@ public:
|
|||||||
* @param name the parameter name
|
* @param name the parameter name
|
||||||
* @param def the default value
|
* @param def the default value
|
||||||
*/
|
*/
|
||||||
void addSwitch(QString name, bool def=false) throw (const char *);
|
void addSwitch(QString name, bool def=false);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief define an option that takes an additional argument
|
* @brief define an option that takes an additional argument
|
||||||
* @param name the parameter name
|
* @param name the parameter name
|
||||||
* @param def the default value
|
* @param def the default value
|
||||||
*/
|
*/
|
||||||
void addOption(QString name, QVariant def=QVariant()) throw (const char *);
|
void addOption(QString name, QVariant def=QVariant());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief define a positional argument
|
* @brief define a positional argument
|
||||||
@ -134,7 +134,7 @@ public:
|
|||||||
* @param required wether this argument is required
|
* @param required wether this argument is required
|
||||||
* @param def the default value
|
* @param def the default value
|
||||||
*/
|
*/
|
||||||
void addArgument(QString name, bool required=true, QVariant def=QVariant()) throw (const char *);
|
void addArgument(QString name, bool required=true, QVariant def=QVariant());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief adds a flag to an existing parameter
|
* @brief adds a flag to an existing parameter
|
||||||
@ -143,15 +143,17 @@ public:
|
|||||||
* @see addSwitch addArgument addOption
|
* @see addSwitch addArgument addOption
|
||||||
* Note: any one parameter can only have one flag
|
* Note: any one parameter can only have one flag
|
||||||
*/
|
*/
|
||||||
void addShortOpt(QString name, QChar flag) throw (const char *);
|
void addShortOpt(QString name, QChar flag);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief adds documentation to a Parameter
|
* @brief adds documentation to a Parameter
|
||||||
* @param name the parameter name
|
* @param name the parameter name
|
||||||
* @param metavar a string to be displayed as placeholder for the value
|
* @param metavar a string to be displayed as placeholder for the value
|
||||||
* @param doc a QString containing the documentation
|
* @param doc a QString containing the documentation
|
||||||
|
* Note: on positional arguments, metavar replaces the name as displayed.
|
||||||
|
* on options , metavar replaces the value placeholder
|
||||||
*/
|
*/
|
||||||
void addDocumentation(QString name, QString doc, QString metavar=QString()) throw (const char *);
|
void addDocumentation(QString name, QString doc, QString metavar=QString());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief generate a help message
|
* @brief generate a help message
|
||||||
@ -175,7 +177,7 @@ public:
|
|||||||
* @param argv a QStringList containing the program ARGV
|
* @param argv a QStringList containing the program ARGV
|
||||||
* @return a QHash mapping argument names to their values
|
* @return a QHash mapping argument names to their values
|
||||||
*/
|
*/
|
||||||
QHash<QString, QVariant> parse(QStringList argv) throw (ParsingError);
|
QHash<QString, QVariant> parse(QStringList argv);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief clear all definitions
|
* @brief clear all definitions
|
||||||
|
Loading…
Reference in New Issue
Block a user