diff --git a/src/calamares/CalamaresWindow.cpp b/src/calamares/CalamaresWindow.cpp index 46082747d..d21148eb6 100644 --- a/src/calamares/CalamaresWindow.cpp +++ b/src/calamares/CalamaresWindow.cpp @@ -23,6 +23,8 @@ #include "utils/CalamaresUtilsGui.h" #include "utils/CalamaresStyle.h" #include "utils/Logger.h" +#include "utils/DebugWindow.h" +#include "Settings.h" #include "Branding.h" #include @@ -33,6 +35,7 @@ CalamaresWindow::CalamaresWindow( QWidget* parent ) : QWidget( parent ) + , m_debugWindow( nullptr ) { // Hide close button setWindowFlags( Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint ); @@ -83,6 +86,37 @@ CalamaresWindow::CalamaresWindow( QWidget* parent ) ProgressTreeView* tv = new ProgressTreeView( sideBox ); sideLayout->addWidget( tv ); tv->setFocusPolicy( Qt::NoFocus ); + + if ( Calamares::Settings::instance()->debugMode() ) + { + QPushButton* debugWindowBtn = new QPushButton( tr( "Show diagnostics" ) ); + sideLayout->addWidget( debugWindowBtn ); + debugWindowBtn->setFlat( true ); + debugWindowBtn->setCheckable( true ); + connect( debugWindowBtn, &QPushButton::clicked, + [ this, debugWindowBtn ]( bool checked ) + { + if ( checked ) + { + m_debugWindow = new Calamares::DebugWindow(); + m_debugWindow->show(); + connect( m_debugWindow, &Calamares::DebugWindow::closed, + [ this, debugWindowBtn ] + { + m_debugWindow->deleteLater(); + debugWindowBtn->setChecked( false ); + } ); + } + else + { + if ( m_debugWindow ) + { + m_debugWindow->deleteLater(); + } + } + } ); + } + CalamaresUtils::unmarginLayout( sideLayout ); CalamaresUtils::unmarginLayout( mainLayout ); diff --git a/src/calamares/CalamaresWindow.h b/src/calamares/CalamaresWindow.h index 8fbc106aa..6ea9602a5 100644 --- a/src/calamares/CalamaresWindow.h +++ b/src/calamares/CalamaresWindow.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * Copyright 2014-2015, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,8 +19,14 @@ #ifndef CALAMARESWINDOW_H #define CALAMARESWINDOW_H +#include #include +namespace Calamares +{ +class DebugWindow; +} + class CalamaresWindow : public QWidget { Q_OBJECT @@ -28,6 +34,8 @@ public: CalamaresWindow( QWidget* parent = nullptr ); virtual ~CalamaresWindow() {} +private: + QPointer< Calamares::DebugWindow > m_debugWindow; }; #endif //CALAMARESWINDOW_H diff --git a/src/libcalamaresui/CMakeLists.txt b/src/libcalamaresui/CMakeLists.txt index 330e6511b..2eb7fd6d4 100644 --- a/src/libcalamaresui/CMakeLists.txt +++ b/src/libcalamaresui/CMakeLists.txt @@ -7,6 +7,7 @@ list( APPEND ${CALAMARESUI_LIBRARY_TARGET}_SOURCES modulesystem/ViewModule.cpp utils/CalamaresUtilsGui.cpp + utils/DebugWindow.cpp utils/ImageRegistry.cpp utils/YamlUtils.cpp @@ -24,7 +25,7 @@ list( APPEND ${CALAMARESUI_LIBRARY_TARGET}_SOURCES ) list( APPEND ${CALAMARESUI_LIBRARY_TARGET}_UI - + utils/DebugWindow.ui ) if( WITH_PYTHON ) diff --git a/src/libcalamaresui/utils/DebugWindow.cpp b/src/libcalamaresui/utils/DebugWindow.cpp new file mode 100644 index 000000000..da418df63 --- /dev/null +++ b/src/libcalamaresui/utils/DebugWindow.cpp @@ -0,0 +1,41 @@ +/* === This file is part of Calamares - === + * + * Copyright 2015, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "DebugWindow.h" +#include "utils/Retranslator.h" + +namespace Calamares { + +DebugWindow::DebugWindow() + : QWidget( nullptr ) +{ + + setupUi( this ); + + CALAMARES_RETRANSLATE( retranslateUi( this ); ) +} + + +void +DebugWindow::closeEvent( QCloseEvent* e ) +{ + Q_UNUSED( e ) + emit closed(); +} + +} // namespace Calamares diff --git a/src/libcalamaresui/utils/DebugWindow.h b/src/libcalamaresui/utils/DebugWindow.h new file mode 100644 index 000000000..ee061991e --- /dev/null +++ b/src/libcalamaresui/utils/DebugWindow.h @@ -0,0 +1,45 @@ +/* === This file is part of Calamares - === + * + * Copyright 2015, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef CALAMARES_DEBUGWINDOW_H +#define CALAMARES_DEBUGWINDOW_H + +#include "ui_DebugWindow.h" + +#include + +namespace Calamares { + +class DebugWindow : public QWidget, private Ui::DebugWindow +{ + Q_OBJECT + +public: + explicit DebugWindow(); + +signals: + void closed(); + +protected: + void closeEvent( QCloseEvent* e ) override; + +}; + + +} // namespace Calamares +#endif // CALAMARES_DEBUGWINDOW_H diff --git a/src/libcalamaresui/utils/DebugWindow.ui b/src/libcalamaresui/utils/DebugWindow.ui new file mode 100644 index 000000000..4184816a7 --- /dev/null +++ b/src/libcalamaresui/utils/DebugWindow.ui @@ -0,0 +1,21 @@ + + + + + Calamares::DebugWindow + + + + 0 + 0 + 400 + 300 + + + + Form + + + + +