1442 lines
48 KiB
Diff
1442 lines
48 KiB
Diff
|
|
From c56fc65fc13db133e4e7190d638cad608e3b7579 Mon Sep 17 00:00:00 2001
|
||
|
|
From: cui-gaoleng <562344211@qq.com>
|
||
|
|
Date: Fri, 8 Nov 2024 01:04:06 +0800
|
||
|
|
Subject: [PATCH 1/4] =?UTF-8?q?calamares=E6=96=87=E4=BB=B6=E5=A4=B9?=
|
||
|
|
MIME-Version: 1.0
|
||
|
|
Content-Type: text/plain; charset=UTF-8
|
||
|
|
Content-Transfer-Encoding: 8bit
|
||
|
|
|
||
|
|
---
|
||
|
|
src/calamares/CalamaresApplication.cpp | 605 ++++++++++---------
|
||
|
|
src/calamares/CalamaresApplication.h | 128 ++--
|
||
|
|
src/calamares/CalamaresWindow.cpp | 88 +--
|
||
|
|
src/calamares/CalamaresWindow.h | 100 +--
|
||
|
|
src/calamares/DebugWindow.cpp | 14 +-
|
||
|
|
src/calamares/DebugWindow.ui | 314 +++++-----
|
||
|
|
src/calamares/calamares-3.3.7.code-workspace | 11 +
|
||
|
|
7 files changed, 646 insertions(+), 614 deletions(-)
|
||
|
|
create mode 100644 src/calamares/calamares-3.3.7.code-workspace
|
||
|
|
|
||
|
|
diff --git a/src/calamares/CalamaresApplication.cpp b/src/calamares/CalamaresApplication.cpp
|
||
|
|
index 09d3bfc..a07edad 100644
|
||
|
|
--- a/src/calamares/CalamaresApplication.cpp
|
||
|
|
+++ b/src/calamares/CalamaresApplication.cpp
|
||
|
|
@@ -1,302 +1,303 @@
|
||
|
|
-/* === This file is part of Calamares - <https://calamares.io> ===
|
||
|
|
- *
|
||
|
|
- * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac <teo@kde.org>
|
||
|
|
- * SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
|
||
|
|
- * SPDX-License-Identifier: GPL-3.0-or-later
|
||
|
|
- *
|
||
|
|
- * Calamares is Free Software: see the License-Identifier above.
|
||
|
|
- *
|
||
|
|
- */
|
||
|
|
-#include "CalamaresApplication.h"
|
||
|
|
-
|
||
|
|
-#include "CalamaresConfig.h"
|
||
|
|
-#include "CalamaresVersionX.h"
|
||
|
|
-#include "CalamaresWindow.h"
|
||
|
|
-#include "progresstree/ProgressTreeView.h"
|
||
|
|
-
|
||
|
|
-#include "Branding.h"
|
||
|
|
-#include "JobQueue.h"
|
||
|
|
-#include "Settings.h"
|
||
|
|
-#include "ViewManager.h"
|
||
|
|
-#include "locale/TranslationsModel.h"
|
||
|
|
-#include "modulesystem/ModuleManager.h"
|
||
|
|
-#include "utils/Dirs.h"
|
||
|
|
-#include "utils/Gui.h"
|
||
|
|
-#include "utils/Logger.h"
|
||
|
|
-#include "utils/System.h"
|
||
|
|
-#ifdef WITH_QML
|
||
|
|
-#include "utils/Qml.h"
|
||
|
|
-#endif
|
||
|
|
-#include "utils/Retranslator.h"
|
||
|
|
-#include "viewpages/ViewStep.h"
|
||
|
|
-
|
||
|
|
-#include <QDir>
|
||
|
|
-#include <QFileInfo>
|
||
|
|
-#include <QScreen>
|
||
|
|
-#include <QTimer>
|
||
|
|
-
|
||
|
|
-/// @brief Convenience for "are the settings in debug mode"
|
||
|
|
-static bool
|
||
|
|
-isDebug()
|
||
|
|
-{
|
||
|
|
- return Calamares::Settings::instance() && Calamares::Settings::instance()->debugMode();
|
||
|
|
-}
|
||
|
|
-
|
||
|
|
-CalamaresApplication::CalamaresApplication( int& argc, char* argv[] )
|
||
|
|
- : QApplication( argc, argv )
|
||
|
|
- , m_mainwindow( nullptr )
|
||
|
|
- , m_moduleManager( nullptr )
|
||
|
|
-{
|
||
|
|
- // Setting the organization name makes the default cache
|
||
|
|
- // directory -- where Calamares stores logs, for instance --
|
||
|
|
- // <org>/<app>/, so we end up with ~/.cache/Calamares/calamares/
|
||
|
|
- // which is excessively squidly.
|
||
|
|
- //
|
||
|
|
- // setOrganizationName( QStringLiteral( CALAMARES_ORGANIZATION_NAME ) );
|
||
|
|
- setOrganizationDomain( QStringLiteral( CALAMARES_ORGANIZATION_DOMAIN ) );
|
||
|
|
- setApplicationName( QStringLiteral( CALAMARES_APPLICATION_NAME ) );
|
||
|
|
- setApplicationVersion( QStringLiteral( CALAMARES_VERSION ) );
|
||
|
|
-
|
||
|
|
- QFont f = font();
|
||
|
|
- Calamares::setDefaultFontSize( f.pointSize() );
|
||
|
|
-}
|
||
|
|
-
|
||
|
|
-void
|
||
|
|
-CalamaresApplication::init()
|
||
|
|
-{
|
||
|
|
- Logger::setupLogfile();
|
||
|
|
- cDebug() << "Calamares version:" << CALAMARES_VERSION;
|
||
|
|
- cDebug() << Logger::SubEntry << "Using Qt version:" << qVersion();
|
||
|
|
- cDebug() << Logger::SubEntry << "Build type:" << CMAKE_BUILD_TYPE;
|
||
|
|
-#ifdef WITH_PYBIND11
|
||
|
|
- cDebug() << Logger::SubEntry << "Using PyBind11";
|
||
|
|
-#endif
|
||
|
|
-#ifdef WITH_BOOST_PYTHON
|
||
|
|
- cDebug() << Logger::SubEntry << "Using Boost Python";
|
||
|
|
-#endif
|
||
|
|
- cDebug() << Logger::SubEntry << "Using settings:" << Calamares::Settings::instance()->path();
|
||
|
|
- cDebug() << Logger::SubEntry << "Using log file:" << Logger::logFile();
|
||
|
|
- cDebug() << Logger::SubEntry << "Languages:" << Calamares::Locale::availableLanguages();
|
||
|
|
-
|
||
|
|
- if ( !Calamares::Settings::instance() )
|
||
|
|
- {
|
||
|
|
- cError() << "Must create Calamares::Settings before the application.";
|
||
|
|
- ::exit( 1 );
|
||
|
|
- }
|
||
|
|
- initQmlPath();
|
||
|
|
- initBranding();
|
||
|
|
-
|
||
|
|
- Calamares::installTranslator();
|
||
|
|
-
|
||
|
|
- setQuitOnLastWindowClosed( false );
|
||
|
|
- setWindowIcon( QIcon( Calamares::Branding::instance()->imagePath( Calamares::Branding::ProductIcon ) ) );
|
||
|
|
-
|
||
|
|
- cDebug() << Logger::SubEntry << "STARTUP: initSettings, initQmlPath, initBranding done";
|
||
|
|
-
|
||
|
|
- initModuleManager(); //also shows main window
|
||
|
|
-
|
||
|
|
- cDebug() << Logger::SubEntry << "STARTUP: initModuleManager: module init started";
|
||
|
|
-}
|
||
|
|
-
|
||
|
|
-CalamaresApplication::~CalamaresApplication()
|
||
|
|
-{
|
||
|
|
- Logger::CDebug( Logger::LOGVERBOSE ) << "Shutting down Calamares...";
|
||
|
|
- Logger::CDebug( Logger::LOGVERBOSE ) << Logger::SubEntry << "Finished shutdown.";
|
||
|
|
-}
|
||
|
|
-
|
||
|
|
-CalamaresApplication*
|
||
|
|
-CalamaresApplication::instance()
|
||
|
|
-{
|
||
|
|
- return qobject_cast< CalamaresApplication* >( QApplication::instance() );
|
||
|
|
-}
|
||
|
|
-
|
||
|
|
-CalamaresWindow*
|
||
|
|
-CalamaresApplication::mainWindow()
|
||
|
|
-{
|
||
|
|
- return m_mainwindow;
|
||
|
|
-}
|
||
|
|
-
|
||
|
|
-static QStringList
|
||
|
|
-brandingFileCandidates( bool assumeBuilddir, const QString& brandingFilename )
|
||
|
|
-{
|
||
|
|
- QStringList brandingPaths;
|
||
|
|
- if ( Calamares::isAppDataDirOverridden() )
|
||
|
|
- {
|
||
|
|
- brandingPaths << Calamares::appDataDir().absoluteFilePath( brandingFilename );
|
||
|
|
- }
|
||
|
|
- else
|
||
|
|
- {
|
||
|
|
- if ( assumeBuilddir )
|
||
|
|
- {
|
||
|
|
- brandingPaths << ( QDir::currentPath() + QStringLiteral( "/src/" ) + brandingFilename );
|
||
|
|
- }
|
||
|
|
- if ( Calamares::haveExtraDirs() )
|
||
|
|
- {
|
||
|
|
- for ( auto s : Calamares::extraDataDirs() )
|
||
|
|
- {
|
||
|
|
- brandingPaths << ( s + brandingFilename );
|
||
|
|
- }
|
||
|
|
- }
|
||
|
|
- brandingPaths << QDir( CMAKE_INSTALL_FULL_SYSCONFDIR "/calamares/" ).absoluteFilePath( brandingFilename );
|
||
|
|
- brandingPaths << Calamares::appDataDir().absoluteFilePath( brandingFilename );
|
||
|
|
- }
|
||
|
|
-
|
||
|
|
- return brandingPaths;
|
||
|
|
-}
|
||
|
|
-
|
||
|
|
-void
|
||
|
|
-CalamaresApplication::initQmlPath()
|
||
|
|
-{
|
||
|
|
-#ifdef WITH_QML
|
||
|
|
- if ( !Calamares::initQmlModulesDir() )
|
||
|
|
- {
|
||
|
|
- ::exit( EXIT_FAILURE );
|
||
|
|
- }
|
||
|
|
-#endif
|
||
|
|
-}
|
||
|
|
-
|
||
|
|
-void
|
||
|
|
-CalamaresApplication::initBranding()
|
||
|
|
-{
|
||
|
|
- QString brandingComponentName = Calamares::Settings::instance()->brandingComponentName();
|
||
|
|
- if ( brandingComponentName.simplified().isEmpty() )
|
||
|
|
- {
|
||
|
|
- cError() << "FATAL: branding component not set in settings.conf";
|
||
|
|
- ::exit( EXIT_FAILURE );
|
||
|
|
- }
|
||
|
|
-
|
||
|
|
- QString brandingDescriptorSubpath = QString( "branding/%1/branding.desc" ).arg( brandingComponentName );
|
||
|
|
- QStringList brandingFileCandidatesByPriority = brandingFileCandidates( isDebug(), brandingDescriptorSubpath );
|
||
|
|
-
|
||
|
|
- QFileInfo brandingFile;
|
||
|
|
- bool found = false;
|
||
|
|
-
|
||
|
|
- foreach ( const QString& path, brandingFileCandidatesByPriority )
|
||
|
|
- {
|
||
|
|
- QFileInfo pathFi( path );
|
||
|
|
- if ( pathFi.exists() && pathFi.isReadable() )
|
||
|
|
- {
|
||
|
|
- brandingFile = pathFi;
|
||
|
|
- found = true;
|
||
|
|
- break;
|
||
|
|
- }
|
||
|
|
- }
|
||
|
|
-
|
||
|
|
- if ( !found || !brandingFile.exists() || !brandingFile.isReadable() )
|
||
|
|
- {
|
||
|
|
- cError() << "Cowardly refusing to continue startup without branding."
|
||
|
|
- << Logger::DebugList( brandingFileCandidatesByPriority );
|
||
|
|
- if ( Calamares::isAppDataDirOverridden() )
|
||
|
|
- {
|
||
|
|
- cError() << "FATAL: explicitly configured application data directory is missing" << brandingComponentName;
|
||
|
|
- }
|
||
|
|
- else
|
||
|
|
- {
|
||
|
|
- cError() << "FATAL: none of the expected branding descriptor file paths exist.";
|
||
|
|
- }
|
||
|
|
- ::exit( EXIT_FAILURE );
|
||
|
|
- }
|
||
|
|
-
|
||
|
|
- new Calamares::Branding( brandingFile.absoluteFilePath(), this, devicePixelRatio() );
|
||
|
|
-}
|
||
|
|
-
|
||
|
|
-void
|
||
|
|
-CalamaresApplication::initModuleManager()
|
||
|
|
-{
|
||
|
|
- m_moduleManager = new Calamares::ModuleManager( Calamares::Settings::instance()->modulesSearchPaths(), this );
|
||
|
|
- connect( m_moduleManager, &Calamares::ModuleManager::initDone, this, &CalamaresApplication::initView );
|
||
|
|
- m_moduleManager->init();
|
||
|
|
-}
|
||
|
|
-
|
||
|
|
-/** @brief centers the widget @p w on (a) screen
|
||
|
|
- *
|
||
|
|
- * This tries to duplicate the (deprecated) qApp->desktop()->availableGeometry()
|
||
|
|
- * placement by iterating over screens and putting Calamares in the first
|
||
|
|
- * one where it fits; this is *generally* the primary screen.
|
||
|
|
- *
|
||
|
|
- * With debugging, it would look something like this (2 screens attached,
|
||
|
|
- * primary at +1080+240 because I have a very strange X setup). Before
|
||
|
|
- * being mapped, the Calamares window is at +0+0 but does have a size.
|
||
|
|
- * The first screen's geometry includes the offset from the origin in
|
||
|
|
- * screen coordinates.
|
||
|
|
- *
|
||
|
|
- * Proposed window size: 1024 520
|
||
|
|
- * Window QRect(0,0 1024x520)
|
||
|
|
- * Screen QRect(1080,240 2560x1440)
|
||
|
|
- * Moving QPoint(1848,700)
|
||
|
|
- * Screen QRect(0,0 1080x1920)
|
||
|
|
- *
|
||
|
|
- */
|
||
|
|
-static void
|
||
|
|
-centerWindowOnScreen( QWidget* w )
|
||
|
|
-{
|
||
|
|
- QList< QScreen* > screens = qApp->screens();
|
||
|
|
- QPoint windowCenter = w->rect().center();
|
||
|
|
- QSize windowSize = w->rect().size();
|
||
|
|
-
|
||
|
|
- for ( const auto* screen : screens )
|
||
|
|
- {
|
||
|
|
- QSize screenSize = screen->availableGeometry().size();
|
||
|
|
- if ( ( screenSize.width() >= windowSize.width() ) && ( screenSize.height() >= windowSize.height() ) )
|
||
|
|
- {
|
||
|
|
- w->move( screen->availableGeometry().center() - windowCenter );
|
||
|
|
- break;
|
||
|
|
- }
|
||
|
|
- }
|
||
|
|
-}
|
||
|
|
-
|
||
|
|
-void
|
||
|
|
-CalamaresApplication::initView()
|
||
|
|
-{
|
||
|
|
- cDebug() << "STARTUP: initModuleManager: all modules init done";
|
||
|
|
- initJobQueue();
|
||
|
|
- cDebug() << "STARTUP: initJobQueue done";
|
||
|
|
-
|
||
|
|
- m_mainwindow = new CalamaresWindow(); //also creates ViewManager
|
||
|
|
-
|
||
|
|
- connect( m_moduleManager, &Calamares::ModuleManager::modulesLoaded, this, &CalamaresApplication::initViewSteps );
|
||
|
|
- connect( m_moduleManager, &Calamares::ModuleManager::modulesFailed, this, &CalamaresApplication::initFailed );
|
||
|
|
-
|
||
|
|
- QTimer::singleShot( 0, m_moduleManager, &Calamares::ModuleManager::loadModules );
|
||
|
|
-
|
||
|
|
- if ( Calamares::Branding::instance() && Calamares::Branding::instance()->windowPlacementCentered() )
|
||
|
|
- {
|
||
|
|
- centerWindowOnScreen( m_mainwindow );
|
||
|
|
- }
|
||
|
|
- cDebug() << "STARTUP: CalamaresWindow created; loadModules started";
|
||
|
|
-}
|
||
|
|
-
|
||
|
|
-void
|
||
|
|
-CalamaresApplication::initViewSteps()
|
||
|
|
-{
|
||
|
|
- cDebug() << "STARTUP: loadModules for all modules done";
|
||
|
|
- m_moduleManager->checkRequirements();
|
||
|
|
- if ( Calamares::Branding::instance()->windowMaximize() )
|
||
|
|
- {
|
||
|
|
- m_mainwindow->setWindowFlag( Qt::FramelessWindowHint );
|
||
|
|
- m_mainwindow->showMaximized();
|
||
|
|
- }
|
||
|
|
- else
|
||
|
|
- {
|
||
|
|
- m_mainwindow->show();
|
||
|
|
- }
|
||
|
|
-
|
||
|
|
- cDebug() << "STARTUP: Window now visible and ProgressTreeView populated";
|
||
|
|
- cDebug() << Logger::SubEntry << Calamares::ViewManager::instance()->viewSteps().count() << "view steps loaded.";
|
||
|
|
- Calamares::ViewManager::instance()->onInitComplete();
|
||
|
|
-}
|
||
|
|
-
|
||
|
|
-void
|
||
|
|
-CalamaresApplication::initFailed( const QStringList& l )
|
||
|
|
-{
|
||
|
|
- cError() << "STARTUP: failed modules are" << l;
|
||
|
|
- m_mainwindow->show();
|
||
|
|
-}
|
||
|
|
-
|
||
|
|
-void
|
||
|
|
-CalamaresApplication::initJobQueue()
|
||
|
|
-{
|
||
|
|
- Calamares::JobQueue* jobQueue = new Calamares::JobQueue( this );
|
||
|
|
- new Calamares::System( Calamares::Settings::instance()->doChroot(), this );
|
||
|
|
- Calamares::Branding::instance()->setGlobals( jobQueue->globalStorage() );
|
||
|
|
-}
|
||
|
|
+/* === This file is part of Calamares - <https://calamares.io> ===
|
||
|
|
+ *
|
||
|
|
+ * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac <teo@kde.org>
|
||
|
|
+ * SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
|
||
|
|
+ * SPDX-License-Identifier: GPL-3.0-or-later
|
||
|
|
+ *
|
||
|
|
+ * Calamares is Free Software: see the License-Identifier above.
|
||
|
|
+ *
|
||
|
|
+ */
|
||
|
|
+#include "CalamaresApplication.h"
|
||
|
|
+
|
||
|
|
+#include "CalamaresConfig.h"
|
||
|
|
+#include "CalamaresVersionX.h"
|
||
|
|
+#include "CalamaresWindow.h"
|
||
|
|
+#include "progresstree/ProgressTreeView.h"
|
||
|
|
+
|
||
|
|
+#include "Branding.h"
|
||
|
|
+#include "JobQueue.h"
|
||
|
|
+#include "Settings.h"
|
||
|
|
+#include "ViewManager.h"
|
||
|
|
+#include "locale/TranslationsModel.h"
|
||
|
|
+#include "modulesystem/ModuleManager.h"
|
||
|
|
+#include "utils/Dirs.h"
|
||
|
|
+#include "utils/Gui.h"
|
||
|
|
+#include "utils/Logger.h"
|
||
|
|
+#include "utils/System.h"
|
||
|
|
+#ifdef WITH_QML
|
||
|
|
+#include "utils/Qml.h"
|
||
|
|
+#endif
|
||
|
|
+#include "utils/Retranslator.h"
|
||
|
|
+#include "viewpages/ViewStep.h"
|
||
|
|
+
|
||
|
|
+#include <QDir>
|
||
|
|
+#include <QFileInfo>
|
||
|
|
+#include <QScreen>
|
||
|
|
+#include <QTimer>
|
||
|
|
+
|
||
|
|
+/// @brief Convenience for "are the settings in debug mode"
|
||
|
|
+static bool
|
||
|
|
+isDebug()
|
||
|
|
+{
|
||
|
|
+ return Calamares::Settings::instance() && Calamares::Settings::instance()->debugMode();
|
||
|
|
+}
|
||
|
|
+
|
||
|
|
+CalamaresApplication::CalamaresApplication( int& argc, char* argv[] )
|
||
|
|
+ : QApplication( argc, argv )
|
||
|
|
+ , m_mainwindow( nullptr )
|
||
|
|
+ , m_moduleManager( nullptr )
|
||
|
|
+{
|
||
|
|
+ // Setting the organization name makes the default cache
|
||
|
|
+ // directory -- where Calamares stores logs, for instance --
|
||
|
|
+ // <org>/<app>/, so we end up with ~/.cache/Calamares/calamares/
|
||
|
|
+ // which is excessively squidly.
|
||
|
|
+ //
|
||
|
|
+ // setOrganizationName( QStringLiteral( CALAMARES_ORGANIZATION_NAME ) );
|
||
|
|
+ setOrganizationDomain( QStringLiteral( CALAMARES_ORGANIZATION_DOMAIN ) );
|
||
|
|
+ setApplicationName( QStringLiteral( CALAMARES_APPLICATION_NAME ) );
|
||
|
|
+ setApplicationVersion( QStringLiteral( CALAMARES_VERSION ) );
|
||
|
|
+
|
||
|
|
+ QFont f = font();
|
||
|
|
+ Calamares::setDefaultFontSize( f.pointSize() );
|
||
|
|
+}
|
||
|
|
+
|
||
|
|
+void
|
||
|
|
+CalamaresApplication::init()
|
||
|
|
+{
|
||
|
|
+ Logger::setupLogfile();
|
||
|
|
+ cDebug() << "Calamares version:" << CALAMARES_VERSION;
|
||
|
|
+ cDebug() << Logger::SubEntry << "Using Qt version:" << qVersion();
|
||
|
|
+ cDebug() << Logger::SubEntry << "Build type:" << CMAKE_BUILD_TYPE;
|
||
|
|
+#ifdef WITH_PYBIND11
|
||
|
|
+ cDebug() << Logger::SubEntry << "Using PyBind11";
|
||
|
|
+#endif
|
||
|
|
+#ifdef WITH_BOOST_PYTHON
|
||
|
|
+ cDebug() << Logger::SubEntry << "Using Boost Python";
|
||
|
|
+#endif
|
||
|
|
+ cDebug() << Logger::SubEntry << "Using settings:" << Calamares::Settings::instance()->path();
|
||
|
|
+ cDebug() << Logger::SubEntry << "Using log file:" << Logger::logFile();
|
||
|
|
+ cDebug() << Logger::SubEntry << "Languages:" << Calamares::Locale::availableLanguages();
|
||
|
|
+
|
||
|
|
+ if ( !Calamares::Settings::instance() )
|
||
|
|
+ {
|
||
|
|
+ cError() << "Must create Calamares::Settings before the application.";
|
||
|
|
+ ::exit( 1 );
|
||
|
|
+ }
|
||
|
|
+ initQmlPath();
|
||
|
|
+ initBranding();
|
||
|
|
+
|
||
|
|
+ Calamares::installTranslator();
|
||
|
|
+
|
||
|
|
+ setQuitOnLastWindowClosed( false );
|
||
|
|
+ setWindowIcon( QIcon( Calamares::Branding::instance()->imagePath( Calamares::Branding::ProductIcon ) ) );
|
||
|
|
+
|
||
|
|
+ cDebug() << Logger::SubEntry << "STARTUP: initSettings, initQmlPath, initBranding done";
|
||
|
|
+
|
||
|
|
+ initModuleManager(); //also shows main window
|
||
|
|
+
|
||
|
|
+ cDebug() << Logger::SubEntry << "STARTUP: initModuleManager: module init started";
|
||
|
|
+}
|
||
|
|
+
|
||
|
|
+CalamaresApplication::~CalamaresApplication()
|
||
|
|
+{
|
||
|
|
+ Logger::CDebug( Logger::LOGVERBOSE ) << "Shutting down Calamares...";
|
||
|
|
+ Logger::CDebug( Logger::LOGVERBOSE ) << Logger::SubEntry << "Finished shutdown.";
|
||
|
|
+}
|
||
|
|
+
|
||
|
|
+CalamaresApplication*
|
||
|
|
+CalamaresApplication::instance()
|
||
|
|
+{
|
||
|
|
+ return qobject_cast< CalamaresApplication* >( QApplication::instance() );
|
||
|
|
+}
|
||
|
|
+
|
||
|
|
+CalamaresWindow*
|
||
|
|
+CalamaresApplication::mainWindow()
|
||
|
|
+{
|
||
|
|
+ return m_mainwindow;
|
||
|
|
+}
|
||
|
|
+
|
||
|
|
+static QStringList
|
||
|
|
+brandingFileCandidates( bool assumeBuilddir, const QString& brandingFilename )
|
||
|
|
+{
|
||
|
|
+ QStringList brandingPaths;
|
||
|
|
+ if ( Calamares::isAppDataDirOverridden() )
|
||
|
|
+ {
|
||
|
|
+ brandingPaths << Calamares::appDataDir().absoluteFilePath( brandingFilename );
|
||
|
|
+ }
|
||
|
|
+ else
|
||
|
|
+ {
|
||
|
|
+ if ( assumeBuilddir )
|
||
|
|
+ {
|
||
|
|
+ brandingPaths << ( QDir::currentPath() + QStringLiteral( "/src/" ) + brandingFilename );
|
||
|
|
+ }
|
||
|
|
+ if ( Calamares::haveExtraDirs() )
|
||
|
|
+ {
|
||
|
|
+ for ( auto s : Calamares::extraDataDirs() )
|
||
|
|
+ {
|
||
|
|
+ brandingPaths << ( s + brandingFilename );
|
||
|
|
+ }
|
||
|
|
+ }
|
||
|
|
+ brandingPaths << QDir( CMAKE_INSTALL_FULL_SYSCONFDIR "/calamares/" ).absoluteFilePath( brandingFilename );
|
||
|
|
+ brandingPaths << Calamares::appDataDir().absoluteFilePath( brandingFilename );
|
||
|
|
+ }
|
||
|
|
+
|
||
|
|
+ return brandingPaths;
|
||
|
|
+}
|
||
|
|
+
|
||
|
|
+void
|
||
|
|
+CalamaresApplication::initQmlPath()
|
||
|
|
+{
|
||
|
|
+#ifdef WITH_QML
|
||
|
|
+ if ( !Calamares::initQmlModulesDir() )
|
||
|
|
+ {
|
||
|
|
+ ::exit( EXIT_FAILURE );
|
||
|
|
+ }
|
||
|
|
+#endif
|
||
|
|
+}
|
||
|
|
+
|
||
|
|
+void
|
||
|
|
+CalamaresApplication::initBranding()
|
||
|
|
+{
|
||
|
|
+ QString brandingComponentName = Calamares::Settings::instance()->brandingComponentName();
|
||
|
|
+ if ( brandingComponentName.simplified().isEmpty() )
|
||
|
|
+ {
|
||
|
|
+ cError() << "FATAL: branding component not set in settings.conf";
|
||
|
|
+ ::exit( EXIT_FAILURE );
|
||
|
|
+ }
|
||
|
|
+
|
||
|
|
+ QString brandingDescriptorSubpath = QString( "branding/%1/branding.desc" ).arg( brandingComponentName );
|
||
|
|
+ QStringList brandingFileCandidatesByPriority = brandingFileCandidates( isDebug(), brandingDescriptorSubpath );
|
||
|
|
+ cDebug() << "brandingFileCandidatesByPriority" << brandingFileCandidatesByPriority;
|
||
|
|
+
|
||
|
|
+ QFileInfo brandingFile;
|
||
|
|
+ bool found = false;
|
||
|
|
+
|
||
|
|
+ foreach ( const QString& path, brandingFileCandidatesByPriority )
|
||
|
|
+ {
|
||
|
|
+ QFileInfo pathFi( path );
|
||
|
|
+ if ( pathFi.exists() && pathFi.isReadable() )
|
||
|
|
+ {
|
||
|
|
+ brandingFile = pathFi;
|
||
|
|
+ found = true;
|
||
|
|
+ break;
|
||
|
|
+ }
|
||
|
|
+ }
|
||
|
|
+
|
||
|
|
+ if ( !found || !brandingFile.exists() || !brandingFile.isReadable() )
|
||
|
|
+ {
|
||
|
|
+ cError() << "Cowardly refusing to continue startup without branding."
|
||
|
|
+ << Logger::DebugList( brandingFileCandidatesByPriority );
|
||
|
|
+ if ( Calamares::isAppDataDirOverridden() )
|
||
|
|
+ {
|
||
|
|
+ cError() << "FATAL: explicitly configured application data directory is missing" << brandingComponentName;
|
||
|
|
+ }
|
||
|
|
+ else
|
||
|
|
+ {
|
||
|
|
+ cError() << "FATAL: none of the expected branding descriptor file paths exist.";
|
||
|
|
+ }
|
||
|
|
+ ::exit( EXIT_FAILURE );
|
||
|
|
+ }
|
||
|
|
+
|
||
|
|
+ new Calamares::Branding( brandingFile.absoluteFilePath(), this, devicePixelRatio() );
|
||
|
|
+}
|
||
|
|
+
|
||
|
|
+void
|
||
|
|
+CalamaresApplication::initModuleManager()
|
||
|
|
+{
|
||
|
|
+ m_moduleManager = new Calamares::ModuleManager( Calamares::Settings::instance()->modulesSearchPaths(), this );
|
||
|
|
+ connect( m_moduleManager, &Calamares::ModuleManager::initDone, this, &CalamaresApplication::initView );
|
||
|
|
+ m_moduleManager->init();
|
||
|
|
+}
|
||
|
|
+
|
||
|
|
+/** @brief centers the widget @p w on (a) screen
|
||
|
|
+ *
|
||
|
|
+ * This tries to duplicate the (deprecated) qApp->desktop()->availableGeometry()
|
||
|
|
+ * placement by iterating over screens and putting Calamares in the first
|
||
|
|
+ * one where it fits; this is *generally* the primary screen.
|
||
|
|
+ *
|
||
|
|
+ * With debugging, it would look something like this (2 screens attached,
|
||
|
|
+ * primary at +1080+240 because I have a very strange X setup). Before
|
||
|
|
+ * being mapped, the Calamares window is at +0+0 but does have a size.
|
||
|
|
+ * The first screen's geometry includes the offset from the origin in
|
||
|
|
+ * screen coordinates.
|
||
|
|
+ *
|
||
|
|
+ * Proposed window size: 1024 520
|
||
|
|
+ * Window QRect(0,0 1024x520)
|
||
|
|
+ * Screen QRect(1080,240 2560x1440)
|
||
|
|
+ * Moving QPoint(1848,700)
|
||
|
|
+ * Screen QRect(0,0 1080x1920)
|
||
|
|
+ *
|
||
|
|
+ */
|
||
|
|
+static void
|
||
|
|
+centerWindowOnScreen( QWidget* w )
|
||
|
|
+{
|
||
|
|
+ QList< QScreen* > screens = qApp->screens();
|
||
|
|
+ QPoint windowCenter = w->rect().center();
|
||
|
|
+ QSize windowSize = w->rect().size();
|
||
|
|
+
|
||
|
|
+ for ( const auto* screen : screens )
|
||
|
|
+ {
|
||
|
|
+ QSize screenSize = screen->availableGeometry().size();
|
||
|
|
+ if ( ( screenSize.width() >= windowSize.width() ) && ( screenSize.height() >= windowSize.height() ) )
|
||
|
|
+ {
|
||
|
|
+ w->move( screen->availableGeometry().center() - windowCenter );
|
||
|
|
+ break;
|
||
|
|
+ }
|
||
|
|
+ }
|
||
|
|
+}
|
||
|
|
+
|
||
|
|
+void
|
||
|
|
+CalamaresApplication::initView()
|
||
|
|
+{
|
||
|
|
+ cDebug() << "STARTUP: initModuleManager: all modules init done";
|
||
|
|
+ initJobQueue();
|
||
|
|
+ cDebug() << "STARTUP: initJobQueue done";
|
||
|
|
+
|
||
|
|
+ m_mainwindow = new CalamaresWindow(); //also creates ViewManager
|
||
|
|
+
|
||
|
|
+ connect( m_moduleManager, &Calamares::ModuleManager::modulesLoaded, this, &CalamaresApplication::initViewSteps );
|
||
|
|
+ connect( m_moduleManager, &Calamares::ModuleManager::modulesFailed, this, &CalamaresApplication::initFailed );
|
||
|
|
+
|
||
|
|
+ QTimer::singleShot( 0, m_moduleManager, &Calamares::ModuleManager::loadModules );
|
||
|
|
+
|
||
|
|
+ if ( Calamares::Branding::instance() && Calamares::Branding::instance()->windowPlacementCentered() )
|
||
|
|
+ {
|
||
|
|
+ centerWindowOnScreen( m_mainwindow );
|
||
|
|
+ }
|
||
|
|
+ cDebug() << "STARTUP: CalamaresWindow created; loadModules started";
|
||
|
|
+}
|
||
|
|
+
|
||
|
|
+void
|
||
|
|
+CalamaresApplication::initViewSteps()
|
||
|
|
+{
|
||
|
|
+ cDebug() << "STARTUP: loadModules for all modules done";
|
||
|
|
+ m_moduleManager->checkRequirements();
|
||
|
|
+ if ( Calamares::Branding::instance()->windowMaximize() )
|
||
|
|
+ {
|
||
|
|
+ m_mainwindow->setWindowFlag( Qt::FramelessWindowHint );
|
||
|
|
+ m_mainwindow->showMaximized();
|
||
|
|
+ }
|
||
|
|
+ else
|
||
|
|
+ {
|
||
|
|
+ m_mainwindow->show();
|
||
|
|
+ }
|
||
|
|
+
|
||
|
|
+ cDebug() << "STARTUP: Window now visible and ProgressTreeView populated";
|
||
|
|
+ cDebug() << Logger::SubEntry << Calamares::ViewManager::instance()->viewSteps().count() << "view steps loaded.";
|
||
|
|
+ Calamares::ViewManager::instance()->onInitComplete();
|
||
|
|
+}
|
||
|
|
+
|
||
|
|
+void
|
||
|
|
+CalamaresApplication::initFailed( const QStringList& l )
|
||
|
|
+{
|
||
|
|
+ cError() << "STARTUP: failed modules are" << l;
|
||
|
|
+ m_mainwindow->show();
|
||
|
|
+}
|
||
|
|
+
|
||
|
|
+void
|
||
|
|
+CalamaresApplication::initJobQueue()
|
||
|
|
+{
|
||
|
|
+ Calamares::JobQueue* jobQueue = new Calamares::JobQueue( this );
|
||
|
|
+ new Calamares::System( Calamares::Settings::instance()->doChroot(), this );
|
||
|
|
+ Calamares::Branding::instance()->setGlobals( jobQueue->globalStorage() );
|
||
|
|
+}
|
||
|
|
diff --git a/src/calamares/CalamaresApplication.h b/src/calamares/CalamaresApplication.h
|
||
|
|
index 77cf3a0..0a99d26 100644
|
||
|
|
--- a/src/calamares/CalamaresApplication.h
|
||
|
|
+++ b/src/calamares/CalamaresApplication.h
|
||
|
|
@@ -1,64 +1,64 @@
|
||
|
|
-/* === This file is part of Calamares - <https://calamares.io> ===
|
||
|
|
- *
|
||
|
|
- * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac <teo@kde.org>
|
||
|
|
- * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot <groot@kde.org>
|
||
|
|
- * SPDX-License-Identifier: GPL-3.0-or-later
|
||
|
|
- *
|
||
|
|
- * Calamares is Free Software: see the License-Identifier above.
|
||
|
|
- *
|
||
|
|
- */
|
||
|
|
-
|
||
|
|
-#ifndef CALAMARESAPPLICATION_H
|
||
|
|
-#define CALAMARESAPPLICATION_H
|
||
|
|
-
|
||
|
|
-#include <QApplication>
|
||
|
|
-
|
||
|
|
-class CalamaresWindow;
|
||
|
|
-
|
||
|
|
-namespace Calamares
|
||
|
|
-{
|
||
|
|
-class ModuleManager;
|
||
|
|
-} // namespace Calamares
|
||
|
|
-
|
||
|
|
-
|
||
|
|
-/**
|
||
|
|
- * @brief The CalamaresApplication class extends QApplication to handle
|
||
|
|
- * Calamares startup and lifetime of main components.
|
||
|
|
- */
|
||
|
|
-class CalamaresApplication : public QApplication
|
||
|
|
-{
|
||
|
|
- Q_OBJECT
|
||
|
|
-public:
|
||
|
|
- CalamaresApplication( int& argc, char* argv[] );
|
||
|
|
- ~CalamaresApplication() override;
|
||
|
|
-
|
||
|
|
- /**
|
||
|
|
- * @brief init handles the first part of Calamares application startup.
|
||
|
|
- * After the main window shows up, the latter part of the startup sequence
|
||
|
|
- * (including modules loading) happens asynchronously.
|
||
|
|
- */
|
||
|
|
- void init();
|
||
|
|
- static CalamaresApplication* instance();
|
||
|
|
-
|
||
|
|
- /**
|
||
|
|
- * @brief mainWindow returns the Calamares application main window.
|
||
|
|
- */
|
||
|
|
- CalamaresWindow* mainWindow();
|
||
|
|
-
|
||
|
|
-private slots:
|
||
|
|
- void initView();
|
||
|
|
- void initViewSteps();
|
||
|
|
- void initFailed( const QStringList& l );
|
||
|
|
-
|
||
|
|
-private:
|
||
|
|
- // Initialization steps happen in this order
|
||
|
|
- void initQmlPath();
|
||
|
|
- void initBranding();
|
||
|
|
- void initModuleManager();
|
||
|
|
- void initJobQueue();
|
||
|
|
-
|
||
|
|
- CalamaresWindow* m_mainwindow;
|
||
|
|
- Calamares::ModuleManager* m_moduleManager;
|
||
|
|
-};
|
||
|
|
-
|
||
|
|
-#endif // CALAMARESAPPLICATION_H
|
||
|
|
+/* === This file is part of Calamares - <https://calamares.io> ===
|
||
|
|
+ *
|
||
|
|
+ * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac <teo@kde.org>
|
||
|
|
+ * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot <groot@kde.org>
|
||
|
|
+ * SPDX-License-Identifier: GPL-3.0-or-later
|
||
|
|
+ *
|
||
|
|
+ * Calamares is Free Software: see the License-Identifier above.
|
||
|
|
+ *
|
||
|
|
+ */
|
||
|
|
+
|
||
|
|
+#ifndef CALAMARESAPPLICATION_H
|
||
|
|
+#define CALAMARESAPPLICATION_H
|
||
|
|
+
|
||
|
|
+#include <QApplication>
|
||
|
|
+
|
||
|
|
+class CalamaresWindow;
|
||
|
|
+
|
||
|
|
+namespace Calamares
|
||
|
|
+{
|
||
|
|
+class ModuleManager;
|
||
|
|
+} // namespace Calamares
|
||
|
|
+
|
||
|
|
+
|
||
|
|
+/**
|
||
|
|
+ * @brief The CalamaresApplication class extends QApplication to handle
|
||
|
|
+ * Calamares startup and lifetime of main components.
|
||
|
|
+ */
|
||
|
|
+class CalamaresApplication : public QApplication
|
||
|
|
+{
|
||
|
|
+ Q_OBJECT
|
||
|
|
+public:
|
||
|
|
+ CalamaresApplication( int& argc, char* argv[] );
|
||
|
|
+ ~CalamaresApplication() override;
|
||
|
|
+
|
||
|
|
+ /**
|
||
|
|
+ * @brief init handles the first part of Calamares application startup.
|
||
|
|
+ * After the main window shows up, the latter part of the startup sequence
|
||
|
|
+ * (including modules loading) happens asynchronously.
|
||
|
|
+ */
|
||
|
|
+ void init();
|
||
|
|
+ static CalamaresApplication* instance();
|
||
|
|
+
|
||
|
|
+ /**
|
||
|
|
+ * @brief mainWindow returns the Calamares application main window.
|
||
|
|
+ */
|
||
|
|
+ CalamaresWindow* mainWindow();
|
||
|
|
+
|
||
|
|
+private slots:
|
||
|
|
+ void initView();
|
||
|
|
+ void initViewSteps();
|
||
|
|
+ void initFailed( const QStringList& l );
|
||
|
|
+
|
||
|
|
+private:
|
||
|
|
+ // Initialization steps happen in this order
|
||
|
|
+ void initQmlPath();
|
||
|
|
+ void initBranding();
|
||
|
|
+ void initModuleManager();
|
||
|
|
+ void initJobQueue();
|
||
|
|
+
|
||
|
|
+ CalamaresWindow* m_mainwindow;
|
||
|
|
+ Calamares::ModuleManager* m_moduleManager;
|
||
|
|
+};
|
||
|
|
+
|
||
|
|
+#endif // CALAMARESAPPLICATION_H
|
||
|
|
diff --git a/src/calamares/CalamaresWindow.cpp b/src/calamares/CalamaresWindow.cpp
|
||
|
|
index e1892e7..4721cb9 100644
|
||
|
|
--- a/src/calamares/CalamaresWindow.cpp
|
||
|
|
+++ b/src/calamares/CalamaresWindow.cpp
|
||
|
|
@@ -104,20 +104,23 @@ getWidgetSidebar( Calamares::DebugWindowManager* debug,
|
||
|
|
Calamares::ViewManager* viewManager,
|
||
|
|
QWidget* parent,
|
||
|
|
Qt::Orientation,
|
||
|
|
- int desiredWidth )
|
||
|
|
+ int desiredWidth
|
||
|
|
+ )
|
||
|
|
{
|
||
|
|
const Calamares::Branding* const branding = Calamares::Branding::instance();
|
||
|
|
-
|
||
|
|
+
|
||
|
|
QWidget* sideBox = new QWidget( parent );
|
||
|
|
sideBox->setObjectName( "sidebarApp" );
|
||
|
|
|
||
|
|
- QBoxLayout* sideLayout = new QVBoxLayout;
|
||
|
|
+ QBoxLayout* sideLayout = new QHBoxLayout;
|
||
|
|
+ sideLayout->addSpacing(10);
|
||
|
|
sideBox->setLayout( sideLayout );
|
||
|
|
// Set this attribute into qss file
|
||
|
|
sideBox->setFixedWidth( desiredWidth );
|
||
|
|
+ sideBox->setFixedHeight( parent->height()*0.13 );
|
||
|
|
sideBox->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
|
||
|
|
|
||
|
|
- QHBoxLayout* logoLayout = new QHBoxLayout;
|
||
|
|
+ QBoxLayout* logoLayout = new QVBoxLayout;
|
||
|
|
sideLayout->addLayout( logoLayout );
|
||
|
|
logoLayout->addStretch();
|
||
|
|
QLabel* logoLabel = new QLabel( sideBox );
|
||
|
|
@@ -132,19 +135,19 @@ getWidgetSidebar( Calamares::DebugWindowManager* debug,
|
||
|
|
logoLabel->setPalette( plt );
|
||
|
|
}
|
||
|
|
logoLabel->setAlignment( Qt::AlignCenter );
|
||
|
|
- logoLabel->setFixedSize( 80, 80 );
|
||
|
|
+ logoLabel->setFixedSize( 388*0.3, 96*0.3 );
|
||
|
|
logoLabel->setPixmap( branding->image( Calamares::Branding::ProductLogo, logoLabel->size() ) );
|
||
|
|
- logoLayout->addWidget( logoLabel );
|
||
|
|
+ logoLayout->addWidget( logoLabel ,2);
|
||
|
|
logoLayout->addStretch();
|
||
|
|
-
|
||
|
|
+ sideLayout->addSpacing(10);
|
||
|
|
ProgressTreeView* tv = new ProgressTreeView( sideBox );
|
||
|
|
tv->setModel( viewManager );
|
||
|
|
tv->setFocusPolicy( Qt::NoFocus );
|
||
|
|
- sideLayout->addWidget( tv );
|
||
|
|
-
|
||
|
|
- QHBoxLayout* extraButtons = new QHBoxLayout;
|
||
|
|
- sideLayout->addLayout( extraButtons );
|
||
|
|
+ sideLayout->addWidget( tv ,20);
|
||
|
|
|
||
|
|
+ QBoxLayout* extraButtons = new QVBoxLayout;
|
||
|
|
+ sideLayout->addLayout( extraButtons ,1);
|
||
|
|
+ sideLayout->addSpacing(15);
|
||
|
|
const int defaultFontHeight = Calamares::defaultFontHeight();
|
||
|
|
|
||
|
|
if ( /* About-Calamares Button enabled */ true )
|
||
|
|
@@ -154,13 +157,17 @@ getWidgetSidebar( Calamares::DebugWindowManager* debug,
|
||
|
|
aboutDialog->setIcon( Calamares::defaultPixmap(
|
||
|
|
Calamares::Information, Calamares::Original, 2 * QSize( defaultFontHeight, defaultFontHeight ) ) );
|
||
|
|
CALAMARES_RETRANSLATE_FOR(
|
||
|
|
- aboutDialog, aboutDialog->setText( QCoreApplication::translate( "calamares-sidebar", "About", "@button" ) );
|
||
|
|
+ aboutDialog, aboutDialog->setText( QCoreApplication::translate( "calamares-sidebar", "", "@button" ) );
|
||
|
|
aboutDialog->setToolTip(
|
||
|
|
- QCoreApplication::translate( "calamares-sidebar", "Show information about Calamares", "@tooltip" ) ); );
|
||
|
|
+ QCoreApplication::translate( "calamares-sidebar", "Show information about easysoftware", "@tooltip" ) ); );
|
||
|
|
extraButtons->addWidget( aboutDialog );
|
||
|
|
aboutDialog->setFlat( true );
|
||
|
|
aboutDialog->setCheckable( true );
|
||
|
|
- QObject::connect( aboutDialog, &QPushButton::clicked, debug, &Calamares::DebugWindowManager::about );
|
||
|
|
+ QObject::connect( aboutDialog, &QPushButton::clicked, [aboutDialog,debug](){
|
||
|
|
+ aboutDialog->setDown(false);
|
||
|
|
+ aboutDialog->setChecked(false);
|
||
|
|
+ debug->about();
|
||
|
|
+ } );
|
||
|
|
}
|
||
|
|
if ( debug && debug->enabled() )
|
||
|
|
{
|
||
|
|
@@ -182,6 +189,7 @@ getWidgetSidebar( Calamares::DebugWindowManager* debug,
|
||
|
|
}
|
||
|
|
|
||
|
|
Calamares::unmarginLayout( sideLayout );
|
||
|
|
+
|
||
|
|
return sideBox;
|
||
|
|
}
|
||
|
|
|
||
|
|
@@ -246,7 +254,8 @@ getWidgetNavigation( Calamares::DebugWindowManager*,
|
||
|
|
bottomLayout->addWidget( quit );
|
||
|
|
}
|
||
|
|
|
||
|
|
- bottomLayout->setContentsMargins( 0, 0, 6, 6 );
|
||
|
|
+
|
||
|
|
+ bottomLayout->setContentsMargins( 0, 0,40,40 );
|
||
|
|
navigation->setLayout( bottomLayout );
|
||
|
|
return navigation;
|
||
|
|
}
|
||
|
|
@@ -271,7 +280,7 @@ setDimension( QQuickWidget* w, Qt::Orientation o, int desiredWidth )
|
||
|
|
// Bound between (16, 64) with a default of 48.
|
||
|
|
qreal minimumHeight = qBound( qreal( 16 ), w->rootObject() ? w->rootObject()->height() : 48, qreal( 64 ) );
|
||
|
|
w->setMinimumHeight( int( minimumHeight ) );
|
||
|
|
- w->setFixedHeight( int( minimumHeight ) );
|
||
|
|
+ w->setFixedHeight( int( minimumHeight ));
|
||
|
|
}
|
||
|
|
w->setResizeMode( QQuickWidget::SizeRootObjectToView );
|
||
|
|
}
|
||
|
|
@@ -417,7 +426,7 @@ CalamaresWindow::CalamaresWindow( QWidget* parent )
|
||
|
|
|
||
|
|
// Needs to match what's checked in DebugWindow
|
||
|
|
this->setObjectName( "mainApp" );
|
||
|
|
-
|
||
|
|
+ this->setWindowFlags(Qt::FramelessWindowHint);
|
||
|
|
QSize availableSize = desktopSize( this );
|
||
|
|
QSize minimumSize( qBound( windowMinimumWidth, availableSize.width(), windowPreferredWidth ),
|
||
|
|
qBound( windowMinimumHeight, availableSize.height(), windowPreferredHeight ) );
|
||
|
|
@@ -429,26 +438,26 @@ CalamaresWindow::CalamaresWindow( QWidget* parent )
|
||
|
|
|
||
|
|
int w = qBound( minimumSize.width(), windowDimensionToPixels( brandingSizes.first ), availableSize.width() );
|
||
|
|
int h = qBound( minimumSize.height(), windowDimensionToPixels( brandingSizes.second ), availableSize.height() );
|
||
|
|
-
|
||
|
|
- cDebug() << Logger::SubEntry << "Proposed window size:" << w << h;
|
||
|
|
- resize( w, h );
|
||
|
|
-
|
||
|
|
- QWidget* baseWidget = this;
|
||
|
|
- if ( !( branding->imagePath( ImageEntry::ProductWallpaper ).isEmpty() ) )
|
||
|
|
- {
|
||
|
|
- QWidget* label = new QWidget( this );
|
||
|
|
- QVBoxLayout* l = new QVBoxLayout;
|
||
|
|
- Calamares::unmarginLayout( l );
|
||
|
|
- l->addWidget( label );
|
||
|
|
- setLayout( l );
|
||
|
|
- label->setObjectName( "backgroundWidget" );
|
||
|
|
- label->setStyleSheet(
|
||
|
|
- QStringLiteral( "#backgroundWidget { background-image: url(%1); background-repeat: repeat-xy; }" )
|
||
|
|
+
|
||
|
|
+ cDebug() << Logger::SubEntry << "Proposed window size:" << w << h;
|
||
|
|
+ //resize( availableSize.width(), availableSize.height() );//通用桌面大小作为窗口大小
|
||
|
|
+ resize( w, h );//通用桌面大小作为窗口大小
|
||
|
|
+ QWidget* baseWidget = this;
|
||
|
|
+ if ( !( branding->imagePath( ImageEntry::ProductWallpaper ).isEmpty() ) )
|
||
|
|
+ {
|
||
|
|
+ QWidget* label = new QWidget( this );
|
||
|
|
+ QVBoxLayout* l = new QVBoxLayout;
|
||
|
|
+ Calamares::unmarginLayout( l );
|
||
|
|
+ l->addWidget( label );
|
||
|
|
+ setLayout( l );
|
||
|
|
+ label->setObjectName( "backgroundWidget" );
|
||
|
|
+ label->setFixedSize(availableSize.width(),h);
|
||
|
|
+ label->setStyleSheet(
|
||
|
|
+ QStringLiteral( "#backgroundWidget { background-image: url(%1); background-repeat: No repeat; }" )
|
||
|
|
.arg( branding->imagePath( ImageEntry::ProductWallpaper ) ) );
|
||
|
|
-
|
||
|
|
+
|
||
|
|
baseWidget = label;
|
||
|
|
}
|
||
|
|
-
|
||
|
|
m_viewManager = Calamares::ViewManager::instance( baseWidget );
|
||
|
|
if ( branding->windowExpands() )
|
||
|
|
{
|
||
|
|
@@ -463,7 +472,7 @@ CalamaresWindow::CalamaresWindow( QWidget* parent )
|
||
|
|
// is too annoying. Instead, leave it up to ignoring-the-quit-
|
||
|
|
// event, which is also the ViewManager's responsibility.
|
||
|
|
|
||
|
|
- QBoxLayout* mainLayout = new QHBoxLayout;
|
||
|
|
+ QBoxLayout* mainLayout = new QVBoxLayout;
|
||
|
|
QBoxLayout* contentsLayout = new QVBoxLayout;
|
||
|
|
contentsLayout->setSpacing( 0 );
|
||
|
|
|
||
|
|
@@ -474,7 +483,7 @@ CalamaresWindow::CalamaresWindow( QWidget* parent )
|
||
|
|
baseWidget,
|
||
|
|
::getWidgetSidebar,
|
||
|
|
::getQmlSidebar,
|
||
|
|
- qBound( 100, Calamares::defaultFontHeight() * 12, w < windowPreferredWidth ? 100 : 190 ) );
|
||
|
|
+ qBound( w, Calamares::defaultFontHeight() * 12, w < windowPreferredWidth ? 200 : 290 ));
|
||
|
|
QWidget* navigation = flavoredWidget( branding->navigationFlavor(),
|
||
|
|
::orientation( branding->navigationSide() ),
|
||
|
|
m_debugManager,
|
||
|
|
@@ -482,9 +491,9 @@ CalamaresWindow::CalamaresWindow( QWidget* parent )
|
||
|
|
::getWidgetNavigation,
|
||
|
|
::getQmlNavigation,
|
||
|
|
64 );
|
||
|
|
-
|
||
|
|
// Build up the contentsLayout (a VBox) top-to-bottom
|
||
|
|
// .. note that the bottom is mirrored wrt. the top
|
||
|
|
+ sideBox->resize(availableSize.width(),300);
|
||
|
|
insertIf( contentsLayout, PanelSide::Top, sideBox, branding->sidebarSide() );
|
||
|
|
insertIf( contentsLayout, PanelSide::Top, navigation, branding->navigationSide() );
|
||
|
|
contentsLayout->addWidget( m_viewManager->centralWidget() );
|
||
|
|
@@ -497,7 +506,7 @@ CalamaresWindow::CalamaresWindow( QWidget* parent )
|
||
|
|
mainLayout->addLayout( contentsLayout );
|
||
|
|
insertIf( mainLayout, PanelSide::Right, navigation, branding->navigationSide() );
|
||
|
|
insertIf( mainLayout, PanelSide::Right, sideBox, branding->sidebarSide() );
|
||
|
|
-
|
||
|
|
+ connect(m_viewManager, &Calamares::ViewManager::currentStepChanged, [ = ]( int currentStep ) { sideBox->setVisible(currentStep > 0); } );
|
||
|
|
// layout->count() returns number of things in it; above we have put
|
||
|
|
// at **least** the central widget, which comes from the view manager,
|
||
|
|
// both vertically and horizontally -- so if there's a panel along
|
||
|
|
@@ -510,6 +519,9 @@ CalamaresWindow::CalamaresWindow( QWidget* parent )
|
||
|
|
Calamares::unmarginLayout( contentsLayout );
|
||
|
|
baseWidget->setLayout( mainLayout );
|
||
|
|
setStyleSheet( Calamares::Branding::instance()->stylesheet() );
|
||
|
|
+ cDebug()<<"<---------------------------WindowWindowSize-------------------------------------->"<<this->size();
|
||
|
|
+ cDebug()<< "<--------------------sideBox->size()-------------------->"<< sideBox->size();
|
||
|
|
+ this->setFixedSize(this->size());
|
||
|
|
}
|
||
|
|
|
||
|
|
void
|
||
|
|
diff --git a/src/calamares/CalamaresWindow.h b/src/calamares/CalamaresWindow.h
|
||
|
|
index f5dd7fe..e2a0fea 100644
|
||
|
|
--- a/src/calamares/CalamaresWindow.h
|
||
|
|
+++ b/src/calamares/CalamaresWindow.h
|
||
|
|
@@ -1,50 +1,50 @@
|
||
|
|
-/* === This file is part of Calamares - <https://calamares.io> ===
|
||
|
|
- *
|
||
|
|
- * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac <teo@kde.org>
|
||
|
|
- * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot <groot@kde.org>
|
||
|
|
- * SPDX-License-Identifier: GPL-3.0-or-later
|
||
|
|
- *
|
||
|
|
- * Calamares is Free Software: see the License-Identifier above.
|
||
|
|
- *
|
||
|
|
- */
|
||
|
|
-
|
||
|
|
-#ifndef CALAMARESWINDOW_H
|
||
|
|
-#define CALAMARESWINDOW_H
|
||
|
|
-
|
||
|
|
-#include <QWidget>
|
||
|
|
-
|
||
|
|
-#include <memory>
|
||
|
|
-
|
||
|
|
-namespace Calamares
|
||
|
|
-{
|
||
|
|
-class DebugWindowManager;
|
||
|
|
-class ViewManager;
|
||
|
|
-} // namespace Calamares
|
||
|
|
-
|
||
|
|
-/**
|
||
|
|
- * @brief The CalamaresWindow class represents the main window of the Calamares UI.
|
||
|
|
- */
|
||
|
|
-class CalamaresWindow : public QWidget
|
||
|
|
-{
|
||
|
|
- Q_OBJECT
|
||
|
|
-public:
|
||
|
|
- CalamaresWindow( QWidget* parent = nullptr );
|
||
|
|
- ~CalamaresWindow() override {}
|
||
|
|
-
|
||
|
|
-public Q_SLOTS:
|
||
|
|
- /**
|
||
|
|
- * This asks the main window to grow to accomodate @p size pixels, to accomodate
|
||
|
|
- * larger-than-expected window contents. The enlargement may be silently
|
||
|
|
- * ignored.
|
||
|
|
- */
|
||
|
|
- void ensureSize( QSize size );
|
||
|
|
-
|
||
|
|
-protected:
|
||
|
|
- virtual void closeEvent( QCloseEvent* e ) override;
|
||
|
|
-
|
||
|
|
-private:
|
||
|
|
- Calamares::DebugWindowManager* m_debugManager = nullptr;
|
||
|
|
- Calamares::ViewManager* m_viewManager = nullptr;
|
||
|
|
-};
|
||
|
|
-
|
||
|
|
-#endif // CALAMARESWINDOW_H
|
||
|
|
+/* === This file is part of Calamares - <https://calamares.io> ===
|
||
|
|
+ *
|
||
|
|
+ * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac <teo@kde.org>
|
||
|
|
+ * SPDX-FileCopyrightText: 2017-2018 Adriaan de Groot <groot@kde.org>
|
||
|
|
+ * SPDX-License-Identifier: GPL-3.0-or-later
|
||
|
|
+ *
|
||
|
|
+ * Calamares is Free Software: see the License-Identifier above.
|
||
|
|
+ *
|
||
|
|
+ */
|
||
|
|
+
|
||
|
|
+#ifndef CALAMARESWINDOW_H
|
||
|
|
+#define CALAMARESWINDOW_H
|
||
|
|
+
|
||
|
|
+#include <QWidget>
|
||
|
|
+
|
||
|
|
+#include <memory>
|
||
|
|
+
|
||
|
|
+namespace Calamares
|
||
|
|
+{
|
||
|
|
+class DebugWindowManager;
|
||
|
|
+class ViewManager;
|
||
|
|
+} // namespace Calamares
|
||
|
|
+
|
||
|
|
+/**
|
||
|
|
+ * @brief The CalamaresWindow class represents the main window of the Calamares UI.
|
||
|
|
+ */
|
||
|
|
+class CalamaresWindow : public QWidget
|
||
|
|
+{
|
||
|
|
+ Q_OBJECT
|
||
|
|
+public:
|
||
|
|
+ CalamaresWindow( QWidget* parent = nullptr );
|
||
|
|
+ ~CalamaresWindow() override {}
|
||
|
|
+
|
||
|
|
+public Q_SLOTS:
|
||
|
|
+ /**
|
||
|
|
+ * This asks the main window to grow to accomodate @p size pixels, to accomodate
|
||
|
|
+ * larger-than-expected window contents. The enlargement may be silently
|
||
|
|
+ * ignored.
|
||
|
|
+ */
|
||
|
|
+ void ensureSize( QSize size );
|
||
|
|
+
|
||
|
|
+protected:
|
||
|
|
+ virtual void closeEvent( QCloseEvent* e ) override;
|
||
|
|
+
|
||
|
|
+private:
|
||
|
|
+ Calamares::DebugWindowManager* m_debugManager = nullptr;
|
||
|
|
+ Calamares::ViewManager* m_viewManager = nullptr;
|
||
|
|
+};
|
||
|
|
+
|
||
|
|
+#endif // CALAMARESWINDOW_H
|
||
|
|
diff --git a/src/calamares/DebugWindow.cpp b/src/calamares/DebugWindow.cpp
|
||
|
|
index 51b3fca..b28661e 100644
|
||
|
|
--- a/src/calamares/DebugWindow.cpp
|
||
|
|
+++ b/src/calamares/DebugWindow.cpp
|
||
|
|
@@ -242,10 +242,18 @@ DebugWindowManager::about()
|
||
|
|
QMessageBox::Ok,
|
||
|
|
nullptr );
|
||
|
|
Calamares::fixButtonLabels( &mb );
|
||
|
|
+ mb.setStyleSheet(
|
||
|
|
+ "QMessageBox {"
|
||
|
|
+ "border: 1px solid hsl(240,2%,79%);"
|
||
|
|
+ "border-radius: 5px;"
|
||
|
|
+ "background-color: #FFFFFF;" // 设置对话框背景颜色
|
||
|
|
+ "}"
|
||
|
|
+ );
|
||
|
|
+ mb.setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog);
|
||
|
|
mb.setIconPixmap(
|
||
|
|
- Calamares::defaultPixmap( Calamares::Squid,
|
||
|
|
- Calamares::Original,
|
||
|
|
- QSize( Calamares::defaultFontHeight() * 6, Calamares::defaultFontHeight() * 6 ) ) );
|
||
|
|
+ Calamares::defaultPixmap( Calamares::BigLogo,//Biglogo.svg
|
||
|
|
+ Calamares::Original,
|
||
|
|
+ QSize( 321/1.9, 297/2 ) ) );
|
||
|
|
QGridLayout* layout = reinterpret_cast< QGridLayout* >( mb.layout() );
|
||
|
|
if ( layout )
|
||
|
|
{
|
||
|
|
diff --git a/src/calamares/DebugWindow.ui b/src/calamares/DebugWindow.ui
|
||
|
|
index 16cc4a4..649915e 100644
|
||
|
|
--- a/src/calamares/DebugWindow.ui
|
||
|
|
+++ b/src/calamares/DebugWindow.ui
|
||
|
|
@@ -1,157 +1,157 @@
|
||
|
|
-<?xml version="1.0" encoding="UTF-8"?>
|
||
|
|
-<ui version="4.0">
|
||
|
|
- <author>
|
||
|
|
-SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org>
|
||
|
|
-SPDX-License-Identifier: GPL-3.0-or-later
|
||
|
|
- </author>
|
||
|
|
- <class>Calamares::DebugWindow</class>
|
||
|
|
- <widget class="QWidget" name="DebugWindow">
|
||
|
|
- <property name="geometry">
|
||
|
|
- <rect>
|
||
|
|
- <x>0</x>
|
||
|
|
- <y>0</y>
|
||
|
|
- <width>962</width>
|
||
|
|
- <height>651</height>
|
||
|
|
- </rect>
|
||
|
|
- </property>
|
||
|
|
- <property name="windowTitle">
|
||
|
|
- <string notr="true">Form</string>
|
||
|
|
- </property>
|
||
|
|
- <layout class="QVBoxLayout" name="verticalLayout">
|
||
|
|
- <item>
|
||
|
|
- <widget class="QTabWidget" name="tabWidget">
|
||
|
|
- <property name="currentIndex">
|
||
|
|
- <number>0</number>
|
||
|
|
- </property>
|
||
|
|
- <widget class="QWidget" name="globalStorageTab">
|
||
|
|
- <attribute name="title">
|
||
|
|
- <string>GlobalStorage</string>
|
||
|
|
- </attribute>
|
||
|
|
- <layout class="QVBoxLayout" name="verticalLayout_2">
|
||
|
|
- <item>
|
||
|
|
- <widget class="QTreeView" name="globalStorageView"/>
|
||
|
|
- </item>
|
||
|
|
- </layout>
|
||
|
|
- </widget>
|
||
|
|
- <widget class="QWidget" name="jobQueueTab">
|
||
|
|
- <attribute name="title">
|
||
|
|
- <string>JobQueue</string>
|
||
|
|
- </attribute>
|
||
|
|
- <layout class="QVBoxLayout" name="verticalLayout_3">
|
||
|
|
- <item>
|
||
|
|
- <widget class="QTextEdit" name="jobQueueText"/>
|
||
|
|
- </item>
|
||
|
|
- </layout>
|
||
|
|
- </widget>
|
||
|
|
- <widget class="QWidget" name="modulesTab">
|
||
|
|
- <attribute name="title">
|
||
|
|
- <string>Modules</string>
|
||
|
|
- </attribute>
|
||
|
|
- <layout class="QHBoxLayout" name="horizontalLayout">
|
||
|
|
- <item>
|
||
|
|
- <widget class="QListView" name="modulesListView"/>
|
||
|
|
- </item>
|
||
|
|
- <item>
|
||
|
|
- <layout class="QVBoxLayout" name="modulesVerticalLayout">
|
||
|
|
- <item>
|
||
|
|
- <layout class="QFormLayout" name="formLayout">
|
||
|
|
- <item row="0" column="0">
|
||
|
|
- <widget class="QLabel" name="typeLabel">
|
||
|
|
- <property name="text">
|
||
|
|
- <string>Type:</string>
|
||
|
|
- </property>
|
||
|
|
- </widget>
|
||
|
|
- </item>
|
||
|
|
- <item row="0" column="1">
|
||
|
|
- <widget class="QLabel" name="moduleTypeLabel">
|
||
|
|
- <property name="text">
|
||
|
|
- <string>none</string>
|
||
|
|
- </property>
|
||
|
|
- </widget>
|
||
|
|
- </item>
|
||
|
|
- <item row="1" column="0">
|
||
|
|
- <widget class="QLabel" name="interfaceLabel">
|
||
|
|
- <property name="text">
|
||
|
|
- <string>Interface:</string>
|
||
|
|
- </property>
|
||
|
|
- </widget>
|
||
|
|
- </item>
|
||
|
|
- <item row="1" column="1">
|
||
|
|
- <widget class="QLabel" name="moduleInterfaceLabel">
|
||
|
|
- <property name="text">
|
||
|
|
- <string>none</string>
|
||
|
|
- </property>
|
||
|
|
- </widget>
|
||
|
|
- </item>
|
||
|
|
- </layout>
|
||
|
|
- </item>
|
||
|
|
- <item>
|
||
|
|
- <widget class="QTreeView" name="moduleConfigView"/>
|
||
|
|
- </item>
|
||
|
|
- </layout>
|
||
|
|
- </item>
|
||
|
|
- </layout>
|
||
|
|
- </widget>
|
||
|
|
- </widget>
|
||
|
|
- </item>
|
||
|
|
- <item>
|
||
|
|
- <layout class="QHBoxLayout" name="horizontalLayout_2">
|
||
|
|
- <item>
|
||
|
|
- <widget class="QPushButton" name="crashButton">
|
||
|
|
- <property name="toolTip">
|
||
|
|
- <string>Crashes Calamares, so that Dr. Konqi can look at it.</string>
|
||
|
|
- </property>
|
||
|
|
- <property name="text">
|
||
|
|
- <string notr="true">Crash now</string>
|
||
|
|
- </property>
|
||
|
|
- <property name="icon">
|
||
|
|
- <iconset theme="data-error"/>
|
||
|
|
- </property>
|
||
|
|
- </widget>
|
||
|
|
- </item>
|
||
|
|
- <item>
|
||
|
|
- <widget class="QPushButton" name="reloadStylesheetButton">
|
||
|
|
- <property name="toolTip">
|
||
|
|
- <string>Reloads the stylesheet from the branding directory.</string>
|
||
|
|
- </property>
|
||
|
|
- <property name="text">
|
||
|
|
- <string>Reload Stylesheet</string>
|
||
|
|
- </property>
|
||
|
|
- <property name="icon">
|
||
|
|
- <iconset theme="preferences-web-browser-stylesheets"/>
|
||
|
|
- </property>
|
||
|
|
- </widget>
|
||
|
|
- </item>
|
||
|
|
- <item>
|
||
|
|
- <widget class="QPushButton" name="widgetTreeButton">
|
||
|
|
- <property name="toolTip">
|
||
|
|
- <string>Displays the tree of widget names in the log (for stylesheet debugging).</string>
|
||
|
|
- </property>
|
||
|
|
- <property name="text">
|
||
|
|
- <string>Widget Tree</string>
|
||
|
|
- </property>
|
||
|
|
- <property name="icon">
|
||
|
|
- <iconset theme="view-list-tree"/>
|
||
|
|
- </property>
|
||
|
|
- </widget>
|
||
|
|
- </item>
|
||
|
|
- <item>
|
||
|
|
- <widget class="QPushButton" name="sendLogButton">
|
||
|
|
- <property name="toolTip">
|
||
|
|
- <string>Uploads the session log to the configured pastebin.</string>
|
||
|
|
- </property>
|
||
|
|
- <property name="text">
|
||
|
|
- <string>Send Session Log</string>
|
||
|
|
- </property>
|
||
|
|
- <property name="icon">
|
||
|
|
- <iconset theme="upload-media"/>
|
||
|
|
- </property>
|
||
|
|
- </widget>
|
||
|
|
- </item>
|
||
|
|
- </layout>
|
||
|
|
- </item>
|
||
|
|
- </layout>
|
||
|
|
- </widget>
|
||
|
|
- <resources/>
|
||
|
|
- <connections/>
|
||
|
|
-</ui>
|
||
|
|
+<?xml version="1.0" encoding="UTF-8"?>
|
||
|
|
+<ui version="4.0">
|
||
|
|
+ <author>
|
||
|
|
+SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org>
|
||
|
|
+SPDX-License-Identifier: GPL-3.0-or-later
|
||
|
|
+ </author>
|
||
|
|
+ <class>Calamares::DebugWindow</class>
|
||
|
|
+ <widget class="QWidget" name="DebugWindow">
|
||
|
|
+ <property name="geometry">
|
||
|
|
+ <rect>
|
||
|
|
+ <x>0</x>
|
||
|
|
+ <y>0</y>
|
||
|
|
+ <width>962</width>
|
||
|
|
+ <height>651</height>
|
||
|
|
+ </rect>
|
||
|
|
+ </property>
|
||
|
|
+ <property name="windowTitle">
|
||
|
|
+ <string notr="true">Form</string>
|
||
|
|
+ </property>
|
||
|
|
+ <layout class="QVBoxLayout" name="verticalLayout">
|
||
|
|
+ <item>
|
||
|
|
+ <widget class="QTabWidget" name="tabWidget">
|
||
|
|
+ <property name="currentIndex">
|
||
|
|
+ <number>0</number>
|
||
|
|
+ </property>
|
||
|
|
+ <widget class="QWidget" name="globalStorageTab">
|
||
|
|
+ <attribute name="title">
|
||
|
|
+ <string>GlobalStorage</string>
|
||
|
|
+ </attribute>
|
||
|
|
+ <layout class="QVBoxLayout" name="verticalLayout_2">
|
||
|
|
+ <item>
|
||
|
|
+ <widget class="QTreeView" name="globalStorageView"/>
|
||
|
|
+ </item>
|
||
|
|
+ </layout>
|
||
|
|
+ </widget>
|
||
|
|
+ <widget class="QWidget" name="jobQueueTab">
|
||
|
|
+ <attribute name="title">
|
||
|
|
+ <string>JobQueue</string>
|
||
|
|
+ </attribute>
|
||
|
|
+ <layout class="QVBoxLayout" name="verticalLayout_3">
|
||
|
|
+ <item>
|
||
|
|
+ <widget class="QTextEdit" name="jobQueueText"/>
|
||
|
|
+ </item>
|
||
|
|
+ </layout>
|
||
|
|
+ </widget>
|
||
|
|
+ <widget class="QWidget" name="modulesTab">
|
||
|
|
+ <attribute name="title">
|
||
|
|
+ <string>Modules</string>
|
||
|
|
+ </attribute>
|
||
|
|
+ <layout class="QHBoxLayout" name="horizontalLayout">
|
||
|
|
+ <item>
|
||
|
|
+ <widget class="QListView" name="modulesListView"/>
|
||
|
|
+ </item>
|
||
|
|
+ <item>
|
||
|
|
+ <layout class="QVBoxLayout" name="modulesVerticalLayout">
|
||
|
|
+ <item>
|
||
|
|
+ <layout class="QFormLayout" name="formLayout">
|
||
|
|
+ <item row="0" column="0">
|
||
|
|
+ <widget class="QLabel" name="typeLabel">
|
||
|
|
+ <property name="text">
|
||
|
|
+ <string>Type:</string>
|
||
|
|
+ </property>
|
||
|
|
+ </widget>
|
||
|
|
+ </item>
|
||
|
|
+ <item row="0" column="1">
|
||
|
|
+ <widget class="QLabel" name="moduleTypeLabel">
|
||
|
|
+ <property name="text">
|
||
|
|
+ <string>none</string>
|
||
|
|
+ </property>
|
||
|
|
+ </widget>
|
||
|
|
+ </item>
|
||
|
|
+ <item row="1" column="0">
|
||
|
|
+ <widget class="QLabel" name="interfaceLabel">
|
||
|
|
+ <property name="text">
|
||
|
|
+ <string>Interface:</string>
|
||
|
|
+ </property>
|
||
|
|
+ </widget>
|
||
|
|
+ </item>
|
||
|
|
+ <item row="1" column="1">
|
||
|
|
+ <widget class="QLabel" name="moduleInterfaceLabel">
|
||
|
|
+ <property name="text">
|
||
|
|
+ <string>none</string>
|
||
|
|
+ </property>
|
||
|
|
+ </widget>
|
||
|
|
+ </item>
|
||
|
|
+ </layout>
|
||
|
|
+ </item>
|
||
|
|
+ <item>
|
||
|
|
+ <widget class="QTreeView" name="moduleConfigView"/>
|
||
|
|
+ </item>
|
||
|
|
+ </layout>
|
||
|
|
+ </item>
|
||
|
|
+ </layout>
|
||
|
|
+ </widget>
|
||
|
|
+ </widget>
|
||
|
|
+ </item>
|
||
|
|
+ <item>
|
||
|
|
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
|
||
|
|
+ <item>
|
||
|
|
+ <widget class="QPushButton" name="crashButton">
|
||
|
|
+ <property name="toolTip">
|
||
|
|
+ <string>Crashes Calamares, so that Dr. Konqi can look at it.</string>
|
||
|
|
+ </property>
|
||
|
|
+ <property name="text">
|
||
|
|
+ <string notr="true">Crash now</string>
|
||
|
|
+ </property>
|
||
|
|
+ <property name="icon">
|
||
|
|
+ <iconset theme="data-error"/>
|
||
|
|
+ </property>
|
||
|
|
+ </widget>
|
||
|
|
+ </item>
|
||
|
|
+ <item>
|
||
|
|
+ <widget class="QPushButton" name="reloadStylesheetButton">
|
||
|
|
+ <property name="toolTip">
|
||
|
|
+ <string>Reloads the stylesheet from the branding directory.</string>
|
||
|
|
+ </property>
|
||
|
|
+ <property name="text">
|
||
|
|
+ <string>Reload Stylesheet</string>
|
||
|
|
+ </property>
|
||
|
|
+ <property name="icon">
|
||
|
|
+ <iconset theme="preferences-web-browser-stylesheets"/>
|
||
|
|
+ </property>
|
||
|
|
+ </widget>
|
||
|
|
+ </item>
|
||
|
|
+ <item>
|
||
|
|
+ <widget class="QPushButton" name="widgetTreeButton">
|
||
|
|
+ <property name="toolTip">
|
||
|
|
+ <string>Displays the tree of widget names in the log (for stylesheet debugging).</string>
|
||
|
|
+ </property>
|
||
|
|
+ <property name="text">
|
||
|
|
+ <string>Widget Tree</string>
|
||
|
|
+ </property>
|
||
|
|
+ <property name="icon">
|
||
|
|
+ <iconset theme="view-list-tree"/>
|
||
|
|
+ </property>
|
||
|
|
+ </widget>
|
||
|
|
+ </item>
|
||
|
|
+ <item>
|
||
|
|
+ <widget class="QPushButton" name="sendLogButton">
|
||
|
|
+ <property name="toolTip">
|
||
|
|
+ <string>Uploads the session log to the configured pastebin.</string>
|
||
|
|
+ </property>
|
||
|
|
+ <property name="text">
|
||
|
|
+ <string>Send Session Log</string>
|
||
|
|
+ </property>
|
||
|
|
+ <property name="icon">
|
||
|
|
+ <iconset theme="upload-media"/>
|
||
|
|
+ </property>
|
||
|
|
+ </widget>
|
||
|
|
+ </item>
|
||
|
|
+ </layout>
|
||
|
|
+ </item>
|
||
|
|
+ </layout>
|
||
|
|
+ </widget>
|
||
|
|
+ <resources/>
|
||
|
|
+ <connections/>
|
||
|
|
+</ui>
|
||
|
|
diff --git a/src/calamares/calamares-3.3.7.code-workspace b/src/calamares/calamares-3.3.7.code-workspace
|
||
|
|
new file mode 100644
|
||
|
|
index 0000000..100afc6
|
||
|
|
--- /dev/null
|
||
|
|
+++ b/src/calamares/calamares-3.3.7.code-workspace
|
||
|
|
@@ -0,0 +1,11 @@
|
||
|
|
+{
|
||
|
|
+ "folders": [
|
||
|
|
+ {
|
||
|
|
+ "path": "../../../calamares-3.3.7"
|
||
|
|
+ },
|
||
|
|
+ {
|
||
|
|
+ "path": "../.."
|
||
|
|
+ }
|
||
|
|
+ ],
|
||
|
|
+ "settings": {}
|
||
|
|
+}
|
||
|
|
\ No newline at end of file
|
||
|
|
--
|
||
|
|
2.43.0
|
||
|
|
|