ui: project wizzard design
* switched to QGridLayout for wizzard content layouting * distinguish scrollable windows based on content * content can define window size * removed QtApplicationSettingsScreen, now done via QtProjectWizzardWindow and QtProjectWizzardContentPreferences * added new project icon
@@ -47,11 +47,10 @@ endif ()
|
||||
project(${PROJECT_NAME})
|
||||
|
||||
#RPATH
|
||||
set(CMAKE_SKIP_BUILD_RPATH FALSE)
|
||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
||||
set(CMAKE_INSTALL_RPATH "$ORIGIN/lib/:$$ORIGIN/lib/")
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
set(CMAKE_SKIP_BUILD_RPATH FALSE)
|
||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
||||
set(CMAKE_INSTALL_RPATH "$ORIGIN/lib/:$$ORIGIN/lib/")
|
||||
include(cmake/external.cmake)
|
||||
endif()
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 9.3 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
@@ -0,0 +1,145 @@
|
||||
#title {
|
||||
color: black;
|
||||
font-size: 16pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#section, #projectTitle {
|
||||
color: black;
|
||||
font-size: 15pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#projectTitle {
|
||||
background: white;
|
||||
padding: 5px;
|
||||
margin-left: 40px;
|
||||
}
|
||||
|
||||
#label {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#formArea {
|
||||
background: white;
|
||||
border: none;
|
||||
border-top: 1px solid lightgrey;
|
||||
border-bottom: 1px solid lightgrey;
|
||||
}
|
||||
|
||||
#form {
|
||||
background: white;
|
||||
}
|
||||
|
||||
#helpButton, #dotsButton, #refreshButton {
|
||||
border: none;
|
||||
color: white;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
#helpButton {
|
||||
border-image: url(<setting:gui_path>setting_window/help.png);
|
||||
}
|
||||
|
||||
#helpButton:hover {
|
||||
border-image: url(<setting:gui_path>setting_window/help_hover.png);
|
||||
}
|
||||
|
||||
#dotsButton {
|
||||
border-image: url(<setting:gui_path>setting_window/dots.png);
|
||||
}
|
||||
|
||||
#dotsButton:hover {
|
||||
border-image: url(<setting:gui_path>setting_window/dots_hover.png);
|
||||
}
|
||||
|
||||
#refreshButton {
|
||||
border-image: url(<setting:gui_path>setting_window/refresh.png);
|
||||
}
|
||||
|
||||
#refreshButton:hover {
|
||||
border-image: url(<setting:gui_path>setting_window/refresh_hover.png);
|
||||
}
|
||||
|
||||
#name, #picker {
|
||||
border-radius: 10px;
|
||||
border: 1px solid lightgrey;
|
||||
height: 20px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
#locationField {
|
||||
background: white;
|
||||
border: none;
|
||||
border-radius: 5px;
|
||||
margin-left: 5px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
#dotsButton, #refreshButton {
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
#windowButton {
|
||||
background: white;
|
||||
border: 1px solid lightgray;
|
||||
border-radius: 8px;
|
||||
color: black;
|
||||
font-size: 14pt;
|
||||
height: 22px;
|
||||
width: 90px;
|
||||
}
|
||||
|
||||
#menuButton {
|
||||
background: white;
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
border-bottom-right-radius: 0px;
|
||||
border-top-right-radius: 0px;
|
||||
font-size: 15pt;
|
||||
margin-right: 0px;
|
||||
margin-bottom: 7px;
|
||||
height: 25px;
|
||||
width: 90px;
|
||||
}
|
||||
|
||||
#windowButton:hover {
|
||||
color: white;
|
||||
background: #2D3F85;
|
||||
}
|
||||
|
||||
#menuButton:hover, #menuButton:checked {
|
||||
background: #CFD2E0;
|
||||
}
|
||||
|
||||
#windowButton:disabled {
|
||||
color: lightgray;
|
||||
}
|
||||
|
||||
#projectContainer {
|
||||
background: white;
|
||||
border: 1px solid lightgray;
|
||||
border-radius: 8px;
|
||||
margin-top: 15px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
#projectButton {
|
||||
background: white;
|
||||
border-radius: 8px;
|
||||
font-size: 12pt;
|
||||
width: 110px;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
#projectButton:hover, #projectButton:checked {
|
||||
background: #CFD2E0;
|
||||
}
|
||||
|
||||
#files {
|
||||
border: 1px solid lightgray;
|
||||
border-radius: 12px;
|
||||
padding: 6px;
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
@@ -24,27 +24,14 @@ QtListItemWidget #field {
|
||||
border: none;
|
||||
font-size: 12px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
QtListItemWidget #button {
|
||||
border: 1px solid lightgray;
|
||||
border-radius: 7px;
|
||||
font-size: 12px;
|
||||
height: 14px;
|
||||
margin-right: 2px;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
QtListItemWidget #button:hover {
|
||||
color: white;
|
||||
background: #2D3F85;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
#bar {
|
||||
border-top: 1px solid lightgray;
|
||||
}
|
||||
|
||||
#roundedButton {
|
||||
#plusButton, #minusButton, #dotsButton {
|
||||
color: white;
|
||||
height: 16px;
|
||||
margin-right: 3px;
|
||||
@@ -52,6 +39,34 @@ QtListItemWidget #button:hover {
|
||||
border: none;
|
||||
}
|
||||
|
||||
#dotsButton {
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
#plusButton {
|
||||
border-image: url(<setting:gui_path>setting_window/plus.png);
|
||||
}
|
||||
|
||||
#plusButton:hover {
|
||||
border-image: url(<setting:gui_path>setting_window/plus_hover.png);
|
||||
}
|
||||
|
||||
#minusButton {
|
||||
border-image: url(<setting:gui_path>setting_window/minus.png);
|
||||
}
|
||||
|
||||
#minusButton:hover {
|
||||
border-image: url(<setting:gui_path>setting_window/minus_hover.png);
|
||||
}
|
||||
|
||||
#dotsButton {
|
||||
border-image: url(<setting:gui_path>setting_window/dots.png);
|
||||
}
|
||||
|
||||
#dotsButton:hover {
|
||||
border-image: url(<setting:gui_path>setting_window/dots_hover.png);
|
||||
}
|
||||
|
||||
#dropInfo {
|
||||
color: lightgray;
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
@@ -113,6 +113,8 @@ add_files(
|
||||
qt/window/project_wizzard/QtProjectWizzardContentData.h
|
||||
qt/window/project_wizzard/QtProjectWizzardContentPaths.cpp
|
||||
qt/window/project_wizzard/QtProjectWizzardContentPaths.h
|
||||
qt/window/project_wizzard/QtProjectWizzardContentPreferences.cpp
|
||||
qt/window/project_wizzard/QtProjectWizzardContentPreferences.h
|
||||
qt/window/project_wizzard/QtProjectWizzardContentSelect.cpp
|
||||
qt/window/project_wizzard/QtProjectWizzardContentSelect.h
|
||||
qt/window/project_wizzard/QtProjectWizzardContentSimple.cpp
|
||||
@@ -128,8 +130,6 @@ add_files(
|
||||
qt/window/QtAbout.h
|
||||
qt/window/QtAboutLicense.cpp
|
||||
qt/window/QtAboutLicense.h
|
||||
qt/window/QtApplicationSettingsScreen.cpp
|
||||
qt/window/QtApplicationSettingsScreen.h
|
||||
qt/window/QtLicense.cpp
|
||||
qt/window/QtLicense.h
|
||||
qt/window/QtMainWindow.cpp
|
||||
|
||||
@@ -25,9 +25,9 @@ QtListItemWidget::QtListItemWidget(QtDirectoryListBox* list, QListWidgetItem* it
|
||||
m_data->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
|
||||
m_data->setObjectName("field");
|
||||
|
||||
m_button = new QPushButton("...");
|
||||
m_button = new QPushButton("");
|
||||
m_button->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
|
||||
m_button->setObjectName("button");
|
||||
m_button->setObjectName("dotsButton");
|
||||
|
||||
layout->addWidget(m_data);
|
||||
layout->addWidget(m_button);
|
||||
@@ -115,18 +115,16 @@ QtDirectoryListBox::QtDirectoryListBox(QWidget *parent)
|
||||
innerLayout->setContentsMargins(8, 4, 8, 3);
|
||||
innerLayout->setSpacing(0);
|
||||
|
||||
std::string iconPath = ResourcePaths::getGuiPath() + "setting_window/plus.png";
|
||||
m_addButton = new QPushButton(QIcon(iconPath.c_str()), "", this);
|
||||
m_addButton = new QPushButton("", this);
|
||||
m_addButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||
m_addButton->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
|
||||
m_addButton->setObjectName("roundedButton");
|
||||
m_addButton->setObjectName("plusButton");
|
||||
innerLayout->addWidget(m_addButton);
|
||||
|
||||
iconPath = ResourcePaths::getGuiPath() + "setting_window/minus.png";
|
||||
m_removeButton = new QPushButton(QIcon(iconPath.c_str()), "", this);
|
||||
m_removeButton = new QPushButton("", this);
|
||||
m_removeButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||
m_removeButton->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
|
||||
m_removeButton->setObjectName("roundedButton");
|
||||
m_removeButton->setObjectName("minusButton");
|
||||
innerLayout->addWidget(m_removeButton);
|
||||
|
||||
QLabel* dropInfoText = new QLabel("Drop Files & Folders");
|
||||
|
||||
@@ -3,30 +3,41 @@
|
||||
#include <QFileDialog>
|
||||
#include <QHBoxLayout>
|
||||
#include <QLabel>
|
||||
#include <QPainter>
|
||||
#include <QStyleOption>
|
||||
|
||||
QtLocationPicker::QtLocationPicker(QWidget *parent)
|
||||
: QWidget(parent)
|
||||
, m_pickDirectory(false)
|
||||
{
|
||||
setObjectName("picker");
|
||||
|
||||
QBoxLayout* layout = new QHBoxLayout();
|
||||
layout->setSpacing(0);
|
||||
layout->setContentsMargins(1, 1, 1, 1);
|
||||
layout->setAlignment(Qt::AlignTop);
|
||||
|
||||
setLayout(layout);
|
||||
|
||||
m_data = new QtLineEdit(this);
|
||||
m_data->setAttribute(Qt::WA_MacShowFocusRect, 0);
|
||||
m_data->setObjectName("locationField");
|
||||
|
||||
m_button = new QPushButton("...");
|
||||
m_button->setObjectName("moreButton");
|
||||
m_button->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
|
||||
|
||||
layout->addWidget(m_data);
|
||||
|
||||
m_button = new QPushButton("");
|
||||
m_button->setObjectName("dotsButton");
|
||||
m_button->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
|
||||
connect(m_button, SIGNAL(clicked()), this, SLOT(handleButtonPress()));
|
||||
layout->addWidget(m_button);
|
||||
|
||||
connect(m_button, SIGNAL(clicked()), this, SLOT(handleButtonPress()));
|
||||
setLayout(layout);
|
||||
}
|
||||
|
||||
void QtLocationPicker::paintEvent(QPaintEvent*)
|
||||
{
|
||||
QStyleOption opt;
|
||||
opt.init(this);
|
||||
|
||||
QPainter p(this);
|
||||
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
|
||||
}
|
||||
|
||||
QString QtLocationPicker::getText()
|
||||
|
||||
@@ -13,6 +13,8 @@ class QtLocationPicker
|
||||
public:
|
||||
QtLocationPicker(QWidget *parent);
|
||||
|
||||
virtual void paintEvent(QPaintEvent*) override;
|
||||
|
||||
QString getText();
|
||||
void setText(QString text);
|
||||
void clearText();
|
||||
|
||||
@@ -1,84 +0,0 @@
|
||||
#include "qt/window/QtApplicationSettingsScreen.h"
|
||||
|
||||
#include <QComboBox>
|
||||
#include <QFormLayout>
|
||||
#include <QLineEdit>
|
||||
#include <QSysInfo>
|
||||
|
||||
#include "utility/messaging/type/MessageLoadProject.h"
|
||||
#include "utility/messaging/type/MessageRefresh.h"
|
||||
|
||||
#include "settings/ApplicationSettings.h"
|
||||
|
||||
QtApplicationSettingsScreen::QtApplicationSettingsScreen(QWidget *parent)
|
||||
: QtSettingsWindow(parent)
|
||||
, m_headerPaths(nullptr)
|
||||
, m_frameworkPaths(nullptr)
|
||||
{
|
||||
m_headerPaths = new QtProjectWizzardContentPathsHeaderSearchGlobal(nullptr, nullptr);
|
||||
|
||||
if (QSysInfo::macVersion() != QSysInfo::MV_None)
|
||||
{
|
||||
m_frameworkPaths = new QtProjectWizzardContentPathsFrameworkSearchGlobal(nullptr, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
QSize QtApplicationSettingsScreen::sizeHint() const
|
||||
{
|
||||
return QSize(600,600);
|
||||
}
|
||||
|
||||
void QtApplicationSettingsScreen::setup()
|
||||
{
|
||||
setupForm();
|
||||
|
||||
updateTitle("PREFERENCES");
|
||||
updateDoneButton("Save");
|
||||
}
|
||||
|
||||
void QtApplicationSettingsScreen::load()
|
||||
{
|
||||
m_headerPaths->load();
|
||||
|
||||
if (m_frameworkPaths)
|
||||
{
|
||||
m_frameworkPaths->load();
|
||||
}
|
||||
}
|
||||
|
||||
void QtApplicationSettingsScreen::populateWindow(QWidget* widget)
|
||||
{
|
||||
QFormLayout* layout = new QFormLayout();
|
||||
layout->setContentsMargins(10, 10, 10, 10);
|
||||
layout->setHorizontalSpacing(20);
|
||||
|
||||
m_headerPaths->populateForm(layout);
|
||||
|
||||
if (m_frameworkPaths)
|
||||
{
|
||||
m_frameworkPaths->populateForm(layout);
|
||||
}
|
||||
|
||||
widget->setLayout(layout);
|
||||
}
|
||||
|
||||
void QtApplicationSettingsScreen::handleCancelButtonPress()
|
||||
{
|
||||
emit canceled();
|
||||
}
|
||||
|
||||
void QtApplicationSettingsScreen::handleUpdateButtonPress()
|
||||
{
|
||||
m_headerPaths->save();
|
||||
|
||||
if (m_frameworkPaths)
|
||||
{
|
||||
m_frameworkPaths->save();
|
||||
}
|
||||
|
||||
ApplicationSettings* appSettings = ApplicationSettings::getInstance().get();
|
||||
appSettings->save();
|
||||
|
||||
MessageRefresh().dispatch();
|
||||
emit finished();
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
#ifndef QT_APPLICATION_SETTINGS_SCREEN_H
|
||||
#define QT_APPLICATION_SETTINGS_SCREEN_H
|
||||
|
||||
#include <QPushButton>
|
||||
#include <QWidget>
|
||||
|
||||
#include "utility/file/FilePath.h"
|
||||
|
||||
#include "qt/element/QtDirectoryListBox.h"
|
||||
#include "qt/window/project_wizzard/QtProjectWizzardContentPaths.h"
|
||||
#include "qt/window/QtSettingsWindow.h"
|
||||
|
||||
class QtApplicationSettingsScreen
|
||||
: public QtSettingsWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QtApplicationSettingsScreen(QWidget* parent = 0);
|
||||
QSize sizeHint() const Q_DECL_OVERRIDE;
|
||||
|
||||
virtual void setup() override;
|
||||
|
||||
void load();
|
||||
|
||||
protected:
|
||||
virtual void populateWindow(QWidget* widget) override;
|
||||
|
||||
private slots:
|
||||
void handleCancelButtonPress();
|
||||
void handleUpdateButtonPress();
|
||||
|
||||
private:
|
||||
QPushButton* m_cancelButton;
|
||||
QPushButton* m_updateButton;
|
||||
|
||||
QtProjectWizzardContentPathsHeaderSearchGlobal* m_headerPaths;
|
||||
QtProjectWizzardContentPathsFrameworkSearchGlobal* m_frameworkPaths;
|
||||
};
|
||||
|
||||
#endif //QT_APPLICATION_SETTINGS_SCREEN_H
|
||||
@@ -13,7 +13,6 @@
|
||||
#include "qt/utility/utilityQt.h"
|
||||
#include "qt/view/QtViewWidgetWrapper.h"
|
||||
#include "qt/window/project_wizzard/QtProjectWizzard.h"
|
||||
#include "qt/window/QtApplicationSettingsScreen.h"
|
||||
#include "qt/window/QtStartScreen.h"
|
||||
#include "qt/window/QtAboutLicense.h"
|
||||
#include "qt/window/QtAbout.h"
|
||||
@@ -303,18 +302,10 @@ QtSettingsWindow* QtMainWindow::about()
|
||||
return aboutWindow;
|
||||
}
|
||||
|
||||
QtSettingsWindow* QtMainWindow::openSettings()
|
||||
void QtMainWindow::openSettings()
|
||||
{
|
||||
QtApplicationSettingsScreen* applicationSettingsScreen = new QtApplicationSettingsScreen(this);
|
||||
applicationSettingsScreen->setup();
|
||||
|
||||
connect(applicationSettingsScreen, SIGNAL(finished()), &m_windowStack, SLOT(popWindow()));
|
||||
connect(applicationSettingsScreen, SIGNAL(canceled()), &m_windowStack, SLOT(popWindow()));
|
||||
|
||||
applicationSettingsScreen->load();
|
||||
m_windowStack.pushWindow(applicationSettingsScreen);
|
||||
|
||||
return applicationSettingsScreen;
|
||||
QtProjectWizzard* wizzard = createWindow<QtProjectWizzard>();
|
||||
wizzard->showPreferences();
|
||||
}
|
||||
|
||||
QtSettingsWindow* QtMainWindow::showLicenses()
|
||||
|
||||
@@ -97,7 +97,7 @@ public slots:
|
||||
void activateWindow();
|
||||
|
||||
QtSettingsWindow* about();
|
||||
QtSettingsWindow* openSettings();
|
||||
void openSettings();
|
||||
QtSettingsWindow* showLicenses();
|
||||
QtSettingsWindow* enterLicense();
|
||||
|
||||
|
||||
@@ -163,7 +163,7 @@ void QtSettingsWindow::addLogo()
|
||||
QLabel* coatiLogoLabel = new QLabel(this);
|
||||
coatiLogoLabel->setPixmap(coatiLogo.pixmap());
|
||||
coatiLogoLabel->resize(coatiLogo.width(), coatiLogo.height());
|
||||
coatiLogoLabel->move(30,10);
|
||||
coatiLogoLabel->move(30, 10);
|
||||
}
|
||||
|
||||
void QtSettingsWindow::showButtons(QVBoxLayout* layout)
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "qt/window/project_wizzard/QtProjectWizzardContent.h"
|
||||
#include "qt/window/project_wizzard/QtProjectWizzardContentData.h"
|
||||
#include "qt/window/project_wizzard/QtProjectWizzardContentPaths.h"
|
||||
#include "qt/window/project_wizzard/QtProjectWizzardContentPreferences.h"
|
||||
#include "qt/window/project_wizzard/QtProjectWizzardContentSimple.h"
|
||||
#include "qt/window/project_wizzard/QtProjectWizzardContentSourceList.h"
|
||||
#include "qt/window/project_wizzard/QtProjectWizzardContentSummary.h"
|
||||
@@ -89,6 +90,12 @@ void QtProjectWizzard::editProject(const ProjectSettings& settings)
|
||||
connect(window, SIGNAL(next()), this, SLOT(createProject()));
|
||||
}
|
||||
|
||||
void QtProjectWizzard::showPreferences()
|
||||
{
|
||||
QtProjectWizzardWindow* window = createWindowWithContent<QtProjectWizzardContentPreferences>();
|
||||
connect(window, SIGNAL(next()), this, SLOT(cancelWizzard()));
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
QtProjectWizzardWindow* QtProjectWizzard::createWindowWithContent()
|
||||
{
|
||||
@@ -252,8 +259,7 @@ void QtProjectWizzard::sourcePaths()
|
||||
connect(window, SIGNAL(next()), this, SLOT(headerSearchPaths()));
|
||||
|
||||
connect(dynamic_cast<QtProjectWizzardContentPathsSource*>(window->content()),
|
||||
SIGNAL(showSourceFiles(std::vector<FilePath>)),
|
||||
this, SLOT(showSourceFiles(std::vector<FilePath>)));
|
||||
SIGNAL(showSourceFiles()), this, SLOT(showSourceFiles()));
|
||||
}
|
||||
|
||||
void QtProjectWizzard::headerSearchPaths()
|
||||
@@ -268,8 +274,7 @@ void QtProjectWizzard::simpleSourcePaths()
|
||||
connect(window, SIGNAL(next()), this, SLOT(simpleHeaderSearchPaths()));
|
||||
|
||||
connect(dynamic_cast<QtProjectWizzardContentPathsSourceSimple*>(window->content()),
|
||||
SIGNAL(showSourceFiles(std::vector<FilePath>)),
|
||||
this, SLOT(showSourceFiles(std::vector<FilePath>)));
|
||||
SIGNAL(showSourceFiles()), this, SLOT(showSourceFiles()));
|
||||
}
|
||||
|
||||
void QtProjectWizzard::simpleHeaderSearchPaths()
|
||||
@@ -296,10 +301,16 @@ void QtProjectWizzard::frameworkSearchPaths()
|
||||
connect(window, SIGNAL(next()), this, SLOT(showSummary()));
|
||||
}
|
||||
|
||||
void QtProjectWizzard::showSourceFiles(std::vector<FilePath> sourcePaths)
|
||||
void QtProjectWizzard::showSourceFiles()
|
||||
{
|
||||
QWidget* topWindow = m_windowStack.getTopWindow();
|
||||
if (topWindow)
|
||||
{
|
||||
dynamic_cast<QtProjectWizzardWindow*>(topWindow)->content()->save();
|
||||
}
|
||||
|
||||
QtProjectWizzardWindow* window = createPopupWithContent<QtProjectWizzardContentSourceList>();
|
||||
dynamic_cast<QtProjectWizzardContentSourceList*>(window->content())->showFilesFromSourcePaths(sourcePaths);
|
||||
dynamic_cast<QtProjectWizzardContentSourceList*>(window->content())->showFilesFromSourcePaths();
|
||||
}
|
||||
|
||||
void QtProjectWizzard::showSummary()
|
||||
@@ -314,8 +325,7 @@ void QtProjectWizzard::showSummary()
|
||||
this, SLOT(refreshProjectFromVisualStudioSolution(const std::string&)));
|
||||
|
||||
connect(dynamic_cast<QtProjectWizzardContentPathsSource*>(summary->contentPathsSource()),
|
||||
SIGNAL(showSourceFiles(std::vector<FilePath>)),
|
||||
this, SLOT(showSourceFiles(std::vector<FilePath>)));
|
||||
SIGNAL(showSourceFiles()), this, SLOT(showSourceFiles()));
|
||||
}
|
||||
|
||||
void QtProjectWizzard::createProject()
|
||||
|
||||
@@ -26,6 +26,7 @@ public slots:
|
||||
void newProjectFromVisualStudioSolution(const std::string& visualStudioSolutionPath);
|
||||
void refreshProjectFromVisualStudioSolution(const std::string& visualStudioSolutionPath);
|
||||
void editProject(const ProjectSettings& settings);
|
||||
void showPreferences();
|
||||
|
||||
private:
|
||||
template<typename T>
|
||||
@@ -59,7 +60,7 @@ private slots:
|
||||
void headerSearchPathsDone();
|
||||
void frameworkSearchPaths();
|
||||
|
||||
void showSourceFiles(std::vector<FilePath> sourcePaths);
|
||||
void showSourceFiles();
|
||||
void showSummary();
|
||||
|
||||
void createProject();
|
||||
|
||||
@@ -1,5 +1,29 @@
|
||||
#include "qt/window/project_wizzard/QtProjectWizzardContent.h"
|
||||
|
||||
#include <QMessageBox>
|
||||
|
||||
QtHelpButton::QtHelpButton(const QString& helpText, QWidget* parent)
|
||||
: QPushButton("", parent)
|
||||
, m_helpText(helpText)
|
||||
{
|
||||
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||
setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
|
||||
setObjectName("helpButton");
|
||||
|
||||
connect(this, SIGNAL(clicked()), this, SLOT(handleHelpPress()));
|
||||
}
|
||||
|
||||
void QtHelpButton::handleHelpPress()
|
||||
{
|
||||
QMessageBox msgBox;
|
||||
msgBox.setText("Help");
|
||||
msgBox.setInformativeText(m_helpText);
|
||||
msgBox.setStandardButtons(QMessageBox::Ok);
|
||||
msgBox.setDefaultButton(QMessageBox::Ok);
|
||||
msgBox.exec();
|
||||
}
|
||||
|
||||
|
||||
QtProjectWizzardContent::QtProjectWizzardContent(ProjectSettings* settings, QtProjectWizzardWindow* window)
|
||||
: QWidget(window)
|
||||
, m_settings(settings)
|
||||
@@ -11,7 +35,11 @@ void QtProjectWizzardContent::populateWindow(QWidget* widget)
|
||||
{
|
||||
}
|
||||
|
||||
void QtProjectWizzardContent::populateForm(QFormLayout* layout)
|
||||
void QtProjectWizzardContent::populateWindow(QGridLayout* layout)
|
||||
{
|
||||
}
|
||||
|
||||
void QtProjectWizzardContent::populateForm(QGridLayout* layout, int& row)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -32,6 +60,16 @@ bool QtProjectWizzardContent::check()
|
||||
return true;
|
||||
}
|
||||
|
||||
bool QtProjectWizzardContent::isScrollAble() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
QSize QtProjectWizzardContent::preferredWindowSize() const
|
||||
{
|
||||
return QSize(600, 620);
|
||||
}
|
||||
|
||||
QLabel* QtProjectWizzardContent::createFormLabel(QString name) const
|
||||
{
|
||||
QLabel* label = new QLabel(name);
|
||||
@@ -40,3 +78,22 @@ QLabel* QtProjectWizzardContent::createFormLabel(QString name) const
|
||||
label->setWordWrap(true);
|
||||
return label;
|
||||
}
|
||||
|
||||
QToolButton* QtProjectWizzardContent::createProjectButton(QString name, QString iconPath) const
|
||||
{
|
||||
QToolButton* button = new QToolButton();
|
||||
button->setObjectName("projectButton");
|
||||
button->setText(name);
|
||||
button->setIcon(QPixmap(iconPath));
|
||||
button->setIconSize(QSize(64, 64));
|
||||
button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
|
||||
button->setCheckable(true);
|
||||
return button;
|
||||
}
|
||||
|
||||
QtHelpButton* QtProjectWizzardContent::addHelpButton(QString helpString, QGridLayout* layout, int row) const
|
||||
{
|
||||
QtHelpButton* button = new QtHelpButton(helpString);
|
||||
layout->addWidget(button, row, QtProjectWizzardWindow::HELP_COL, Qt::AlignTop);
|
||||
return button;
|
||||
}
|
||||
|
||||
@@ -1,14 +1,31 @@
|
||||
#ifndef QT_PROJECT_WIZZARD_CONTENT_H
|
||||
#define QT_PROJECT_WIZZARD_CONTENT_H
|
||||
|
||||
#include <QFormLayout>
|
||||
#include <QGridLayout>
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QToolButton>
|
||||
#include <QWidget>
|
||||
|
||||
#include "qt/window/project_wizzard/QtProjectWizzardWindow.h"
|
||||
#include "settings/ProjectSettings.h"
|
||||
|
||||
class QFormLayout;
|
||||
|
||||
class QtHelpButton
|
||||
: public QPushButton
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QtHelpButton(const QString& helpText, QWidget* parent = nullptr);
|
||||
|
||||
private slots:
|
||||
void handleHelpPress();
|
||||
|
||||
private:
|
||||
QString m_helpText;
|
||||
};
|
||||
|
||||
|
||||
class QtProjectWizzardContent
|
||||
: public QWidget
|
||||
@@ -19,15 +36,23 @@ public:
|
||||
QtProjectWizzardContent(ProjectSettings* settings, QtProjectWizzardWindow* window);
|
||||
|
||||
virtual void populateWindow(QWidget* widget);
|
||||
virtual void populateForm(QFormLayout* layout);
|
||||
virtual void populateWindow(QGridLayout* layout);
|
||||
virtual void populateForm(QGridLayout* layout, int& row);
|
||||
virtual void windowReady();
|
||||
|
||||
virtual void load();
|
||||
virtual void save();
|
||||
virtual bool check();
|
||||
|
||||
virtual bool isScrollAble() const;
|
||||
|
||||
virtual QSize preferredWindowSize() const;
|
||||
|
||||
protected:
|
||||
QLabel* createFormLabel(QString name) const;
|
||||
QToolButton* createProjectButton(QString name, QString iconPath) const;
|
||||
|
||||
QtHelpButton* addHelpButton(QString helpString, QGridLayout* layout, int row) const;
|
||||
|
||||
ProjectSettings* m_settings;
|
||||
QtProjectWizzardWindow* m_window;
|
||||
|
||||
@@ -21,7 +21,7 @@ QtProjectWizzardContentBuildFile::QtProjectWizzardContentBuildFile(
|
||||
}
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentBuildFile::populateForm(QFormLayout* layout)
|
||||
void QtProjectWizzardContentBuildFile::populateForm(QGridLayout* layout, int& row)
|
||||
{
|
||||
QString name;
|
||||
QString filter;
|
||||
@@ -29,10 +29,12 @@ void QtProjectWizzardContentBuildFile::populateForm(QFormLayout* layout)
|
||||
switch (m_type)
|
||||
{
|
||||
case QtProjectWizzardContentSelect::PROJECT_EMPTY:
|
||||
name = "Build Text";
|
||||
filter = "Text (*.txt)";
|
||||
return;
|
||||
case QtProjectWizzardContentSelect::PROJECT_VS:
|
||||
name = "Visual Studio Solution";
|
||||
filter = "Visual Studio Solution (*.txt)";
|
||||
filter = "Visual Studio Solution (*.sln)";
|
||||
break;
|
||||
case QtProjectWizzardContentSelect::PROJECT_CDB:
|
||||
name = "Compilation Database";
|
||||
@@ -40,21 +42,25 @@ void QtProjectWizzardContentBuildFile::populateForm(QFormLayout* layout)
|
||||
}
|
||||
|
||||
QLabel* label = createFormLabel(name);
|
||||
layout->addWidget(label, row, QtProjectWizzardWindow::FRONT_COL);
|
||||
|
||||
m_picker = new QtLocationPicker(this);
|
||||
m_picker->setFileFilter(filter);
|
||||
|
||||
int minimumWidthForSecondCol = 360;
|
||||
m_picker->setMinimumWidth(minimumWidthForSecondCol);
|
||||
|
||||
QPushButton* button = new QPushButton("r");
|
||||
button->setObjectName("moreButton");
|
||||
QPushButton* button = new QPushButton("", this);
|
||||
button->setObjectName("refreshButton");
|
||||
button->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
|
||||
button->setToolTip("refresh paths");
|
||||
connect(button, SIGNAL(clicked()), this, SLOT(refreshClicked()));
|
||||
|
||||
m_picker->layout()->addWidget(button);
|
||||
|
||||
layout->addRow(label, m_picker);
|
||||
layout->addWidget(m_picker, row, QtProjectWizzardWindow::BACK_COL);
|
||||
|
||||
row++;
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentBuildFile::load()
|
||||
|
||||
@@ -19,7 +19,7 @@ public:
|
||||
QtProjectWizzardContentBuildFile(ProjectSettings* settings, QtProjectWizzardWindow* window);
|
||||
|
||||
// QtProjectWizzardContent implementation
|
||||
virtual void populateForm(QFormLayout* layout) override;
|
||||
virtual void populateForm(QGridLayout* layout, int& row) override;
|
||||
|
||||
virtual void load() override;
|
||||
|
||||
|
||||
@@ -8,33 +8,44 @@ QtProjectWizzardContentData::QtProjectWizzardContentData(ProjectSettings* settin
|
||||
{
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentData::populateWindow(QWidget* widget)
|
||||
void QtProjectWizzardContentData::populateWindow(QGridLayout* layout)
|
||||
{
|
||||
QFormLayout* layout = new QFormLayout();
|
||||
layout->setContentsMargins(10, 10, 10, 10);
|
||||
layout->setHorizontalSpacing(20);
|
||||
int row = 0;
|
||||
layout->setRowMinimumHeight(0, 15);
|
||||
row++;
|
||||
|
||||
populateForm(layout);
|
||||
populateForm(layout, row);
|
||||
|
||||
widget->setLayout(layout);
|
||||
layout->setRowMinimumHeight(row, 15);
|
||||
layout->setRowStretch(row, 1);
|
||||
|
||||
layout->setColumnStretch(QtProjectWizzardWindow::FRONT_COL, 1);
|
||||
layout->setColumnStretch(QtProjectWizzardWindow::BACK_COL, 3);
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentData::populateForm(QFormLayout* layout)
|
||||
void QtProjectWizzardContentData::populateForm(QGridLayout* layout, int& row)
|
||||
{
|
||||
int minimumWidthForSecondCol = 360;
|
||||
|
||||
QLabel* nameLabel = createFormLabel("Name");
|
||||
m_projectName = new QLineEdit();
|
||||
m_projectName->setObjectName("name");
|
||||
m_projectName->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
|
||||
m_projectName->setMinimumWidth(minimumWidthForSecondCol);
|
||||
m_projectName->setAttribute(Qt::WA_MacShowFocusRect, 0);
|
||||
layout->addRow(nameLabel, m_projectName);
|
||||
|
||||
layout->addWidget(nameLabel, row, QtProjectWizzardWindow::FRONT_COL, Qt::AlignRight);
|
||||
layout->addWidget(m_projectName, row, QtProjectWizzardWindow::BACK_COL, Qt::AlignLeft);
|
||||
row++;
|
||||
|
||||
QLabel* locationLabel = createFormLabel("Location");
|
||||
m_projectFileLocation = new QtLocationPicker(this);
|
||||
m_projectFileLocation->setPickDirectory(true);
|
||||
m_projectFileLocation->setMinimumWidth(minimumWidthForSecondCol);
|
||||
layout->addRow(locationLabel, m_projectFileLocation);
|
||||
|
||||
layout->addWidget(locationLabel, row, QtProjectWizzardWindow::FRONT_COL, Qt::AlignRight);
|
||||
layout->addWidget(m_projectFileLocation, row, QtProjectWizzardWindow::BACK_COL, Qt::AlignLeft);
|
||||
row++;
|
||||
|
||||
QLabel* languageLabel = new QLabel("Language");
|
||||
languageLabel->setObjectName("label");
|
||||
@@ -42,9 +53,13 @@ void QtProjectWizzardContentData::populateForm(QFormLayout* layout)
|
||||
m_language->insertItem(0, "C++");
|
||||
m_language->insertItem(1, "C");
|
||||
connect(m_language, SIGNAL(currentIndexChanged(int)), this, SLOT(handleSelectionChanged(int)));
|
||||
layout->addRow(languageLabel, m_language);
|
||||
|
||||
m_cppStandardLabel = createFormLabel("Standard");
|
||||
layout->addWidget(languageLabel, row, QtProjectWizzardWindow::FRONT_COL, Qt::AlignRight);
|
||||
layout->addWidget(m_language, row, QtProjectWizzardWindow::BACK_COL, Qt::AlignLeft);
|
||||
row++;
|
||||
|
||||
|
||||
QLabel* cppStandardLabel = createFormLabel("Standard");
|
||||
|
||||
m_cppStandard = new QComboBox();
|
||||
m_cppStandard->insertItem(0, "1z");
|
||||
@@ -54,10 +69,12 @@ void QtProjectWizzardContentData::populateForm(QFormLayout* layout)
|
||||
m_cppStandard->insertItem(4, "0x");
|
||||
m_cppStandard->insertItem(5, "03");
|
||||
m_cppStandard->insertItem(6, "98");
|
||||
layout->addRow(m_cppStandardLabel, m_cppStandard);
|
||||
|
||||
layout->addWidget(cppStandardLabel, row, QtProjectWizzardWindow::FRONT_COL, Qt::AlignRight);
|
||||
layout->addWidget(m_cppStandard, row, QtProjectWizzardWindow::BACK_COL, Qt::AlignLeft);
|
||||
|
||||
|
||||
m_cStandardLabel = createFormLabel("Standard");
|
||||
QLabel* cStandardLabel = createFormLabel("Standard");
|
||||
|
||||
m_cStandard = new QComboBox();
|
||||
m_cStandard->insertItem(0, "1x");
|
||||
@@ -66,9 +83,11 @@ void QtProjectWizzardContentData::populateForm(QFormLayout* layout)
|
||||
m_cStandard->insertItem(3, "99");
|
||||
m_cStandard->insertItem(4, "90");
|
||||
m_cStandard->insertItem(5, "89");
|
||||
layout->addRow(m_cStandardLabel, m_cStandard);
|
||||
m_cStandardLabel->hide();
|
||||
m_cStandard->hide();
|
||||
|
||||
layout->addWidget(cStandardLabel, row, QtProjectWizzardWindow::FRONT_COL, Qt::AlignRight);
|
||||
layout->addWidget(m_cStandard, row, QtProjectWizzardWindow::BACK_COL, Qt::AlignLeft);
|
||||
|
||||
row++;
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentData::load()
|
||||
@@ -128,23 +147,32 @@ bool QtProjectWizzardContentData::check()
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!FilePath(m_projectFileLocation->getText().toStdString()).exists())
|
||||
{
|
||||
QMessageBox msgBox;
|
||||
msgBox.setText("The specified location does not exist.");
|
||||
msgBox.exec();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
QSize QtProjectWizzardContentData::preferredWindowSize() const
|
||||
{
|
||||
return QSize(580, 340);
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentData::handleSelectionChanged(int index)
|
||||
{
|
||||
if (index != 0)
|
||||
{
|
||||
m_cStandardLabel->show();
|
||||
m_cStandard->show();
|
||||
m_cppStandardLabel->hide();
|
||||
m_cppStandard->hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_cppStandardLabel->show();
|
||||
m_cppStandard->show();
|
||||
m_cStandardLabel->hide();
|
||||
m_cStandard->hide();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,12 +16,15 @@ public:
|
||||
QtProjectWizzardContentData(ProjectSettings* settings, QtProjectWizzardWindow* window);
|
||||
|
||||
// QtProjectWizzardContent implementation
|
||||
virtual void populateWindow(QWidget* widget) override;
|
||||
virtual void populateForm(QFormLayout* layout) override;
|
||||
virtual void populateWindow(QGridLayout* layout) override;
|
||||
virtual void populateForm(QGridLayout* layout, int& row) override;
|
||||
|
||||
virtual void load() override;
|
||||
virtual void save() override;
|
||||
virtual bool check() override;
|
||||
|
||||
virtual QSize preferredWindowSize() const override;
|
||||
|
||||
private:
|
||||
QLineEdit* m_projectName;
|
||||
QtLocationPicker* m_projectFileLocation;
|
||||
@@ -30,9 +33,6 @@ private:
|
||||
QComboBox* m_cppStandard;
|
||||
QComboBox* m_cStandard;
|
||||
|
||||
QLabel* m_cppStandardLabel;
|
||||
QLabel* m_cStandardLabel;
|
||||
|
||||
private slots:
|
||||
void handleSelectionChanged(int index);
|
||||
};
|
||||
|
||||
@@ -1,34 +1,12 @@
|
||||
#include "qt/window/project_wizzard/QtProjectWizzardContentPaths.h"
|
||||
|
||||
#include <QFormLayout>
|
||||
#include <QVBoxLayout>
|
||||
#include <QLabel>
|
||||
#include <QMessageBox>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
#include "qt/element/QtDirectoryListBox.h"
|
||||
#include "settings/ApplicationSettings.h"
|
||||
|
||||
QtHelpButton::QtHelpButton(const QString& helpText, QWidget* parent)
|
||||
: QPushButton("?", parent)
|
||||
, m_helpText(helpText)
|
||||
{
|
||||
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||
setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
|
||||
setObjectName("help");
|
||||
|
||||
connect(this, SIGNAL(clicked()), this, SLOT(handleHelpPress()));
|
||||
}
|
||||
|
||||
void QtHelpButton::handleHelpPress()
|
||||
{
|
||||
QMessageBox msgBox;
|
||||
msgBox.setText("Help");
|
||||
msgBox.setInformativeText(m_helpText);
|
||||
msgBox.setStandardButtons(QMessageBox::Ok);
|
||||
msgBox.setDefaultButton(QMessageBox::Ok);
|
||||
msgBox.exec();
|
||||
}
|
||||
|
||||
|
||||
QtProjectWizzardContentPaths::QtProjectWizzardContentPaths(ProjectSettings* settings, QtProjectWizzardWindow* window)
|
||||
: QtProjectWizzardContent(settings, window)
|
||||
@@ -37,78 +15,79 @@ QtProjectWizzardContentPaths::QtProjectWizzardContentPaths(ProjectSettings* sett
|
||||
{
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentPaths::populateWindow(QWidget* widget)
|
||||
void QtProjectWizzardContentPaths::populateWindow(QGridLayout* layout)
|
||||
{
|
||||
QVBoxLayout* layout = new QVBoxLayout(widget);
|
||||
int row = 0;
|
||||
|
||||
populateLayout(layout);
|
||||
layout->setRowMinimumHeight(row, 10);
|
||||
row++;
|
||||
|
||||
populateLayout(layout, row);
|
||||
|
||||
if (m_addShowSourcesButton)
|
||||
{
|
||||
layout->setRowStretch(row, 10);
|
||||
addSourcesButton(layout, row);
|
||||
}
|
||||
|
||||
if (m_subPaths)
|
||||
{
|
||||
layout->addSpacing(30);
|
||||
layout->setRowMinimumHeight(row, 30);
|
||||
row++;
|
||||
|
||||
m_subPaths->populateLayout(layout);
|
||||
m_subPaths->populateLayout(layout, row);
|
||||
|
||||
layout->setRowMinimumHeight(row, 10);
|
||||
row++;
|
||||
}
|
||||
|
||||
layout->addStretch();
|
||||
layout->setColumnStretch(QtProjectWizzardWindow::FRONT_COL, 1);
|
||||
layout->setColumnStretch(QtProjectWizzardWindow::BACK_COL, 2);
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentPaths::populateLayout(QVBoxLayout* layout)
|
||||
void QtProjectWizzardContentPaths::populateLayout(QGridLayout* layout, int& row)
|
||||
{
|
||||
QLabel* label = new QLabel(m_titleString);
|
||||
label->setObjectName("label");
|
||||
layout->addWidget(label);
|
||||
label->setObjectName("section");
|
||||
layout->addWidget(label, row, QtProjectWizzardWindow::FRONT_COL, Qt::AlignTop | Qt::AlignLeft);
|
||||
layout->setRowMinimumHeight(row, 20);
|
||||
|
||||
QLabel* text = new QLabel(m_descriptionString);
|
||||
text->setWordWrap(true);
|
||||
text->setOpenExternalLinks(true);
|
||||
layout->addWidget(text);
|
||||
layout->addWidget(text, row + 1, QtProjectWizzardWindow::FRONT_COL, Qt::AlignTop);
|
||||
layout->setRowStretch(row + 1, 1);
|
||||
|
||||
m_list = new QtDirectoryListBox(this);
|
||||
layout->addWidget(m_list);
|
||||
layout->addWidget(m_list, row, QtProjectWizzardWindow::BACK_COL, 2, 1, Qt::AlignTop);
|
||||
|
||||
if (m_addShowSourcesButton)
|
||||
{
|
||||
QPushButton* button = new QPushButton("show files");
|
||||
layout->addWidget(button);
|
||||
connect(button, SIGNAL(clicked()), this, SLOT(showSourcesClicked()));
|
||||
}
|
||||
row += 2;
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentPaths::populateForm(QFormLayout* layout)
|
||||
void QtProjectWizzardContentPaths::populateForm(QGridLayout* layout, int& row)
|
||||
{
|
||||
QWidget* widget = new QWidget();
|
||||
|
||||
QVBoxLayout* vlayout = new QVBoxLayout();
|
||||
vlayout->setContentsMargins(0, 5, 0, 5);
|
||||
vlayout->setSpacing(5);
|
||||
|
||||
QLabel* label = createFormLabel(m_titleString);
|
||||
vlayout->addWidget(label);
|
||||
layout->addWidget(label, row, QtProjectWizzardWindow::FRONT_COL, Qt::AlignTop);
|
||||
|
||||
QtHelpButton* button = new QtHelpButton(m_helpString);
|
||||
|
||||
vlayout->addWidget(button, 0, Qt::AlignRight);
|
||||
|
||||
if (m_addShowSourcesButton)
|
||||
if (m_helpString.size() > 0)
|
||||
{
|
||||
QPushButton* button = new QPushButton("files");
|
||||
vlayout->addWidget(button);
|
||||
connect(button, SIGNAL(clicked()), this, SLOT(showSourcesClicked()));
|
||||
addHelpButton(m_helpString, layout, row);
|
||||
}
|
||||
|
||||
vlayout->addStretch();
|
||||
|
||||
widget->setLayout(vlayout);
|
||||
|
||||
int minimumWidthForSecondCol = 360;
|
||||
m_list = new QtDirectoryListBox(this);
|
||||
m_list->setMinimumWidth(minimumWidthForSecondCol);
|
||||
layout->addRow(widget, m_list);
|
||||
layout->addWidget(m_list, row, QtProjectWizzardWindow::BACK_COL);
|
||||
row++;
|
||||
|
||||
if (m_addShowSourcesButton)
|
||||
{
|
||||
addSourcesButton(layout, row);
|
||||
}
|
||||
|
||||
if (m_subPaths)
|
||||
{
|
||||
m_subPaths->populateForm(layout);
|
||||
m_subPaths->populateForm(layout, row);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,6 +121,11 @@ bool QtProjectWizzardContentPaths::check()
|
||||
return checkPaths();
|
||||
}
|
||||
|
||||
QSize QtProjectWizzardContentPaths::preferredWindowSize() const
|
||||
{
|
||||
return QSize(700, 500);
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentPaths::loadPaths()
|
||||
{
|
||||
}
|
||||
@@ -179,9 +163,22 @@ void QtProjectWizzardContentPaths::setHelpString(const QString& help)
|
||||
|
||||
void QtProjectWizzardContentPaths::showSourcesClicked()
|
||||
{
|
||||
emit showSourceFiles(m_list->getList());
|
||||
emit showSourceFiles();
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentPaths::addSourcesButton(QGridLayout* layout, int& row)
|
||||
{
|
||||
if (!m_addShowSourcesButton)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
QPushButton* button = new QPushButton("show files");
|
||||
button->setObjectName("windowButton");
|
||||
layout->addWidget(button, row, QtProjectWizzardWindow::BACK_COL, Qt::AlignRight | Qt::AlignTop);
|
||||
connect(button, SIGNAL(clicked()), this, SLOT(showSourcesClicked()));
|
||||
row++;
|
||||
}
|
||||
|
||||
QtProjectWizzardContentPathsSource::QtProjectWizzardContentPathsSource(
|
||||
ProjectSettings* settings, QtProjectWizzardWindow* window
|
||||
@@ -199,6 +196,11 @@ QtProjectWizzardContentPathsSource::QtProjectWizzardContentPathsSource(
|
||||
);
|
||||
}
|
||||
|
||||
QSize QtProjectWizzardContentPathsSource::preferredWindowSize() const
|
||||
{
|
||||
return QSize(700, 370);
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentPathsSource::loadPaths()
|
||||
{
|
||||
m_list->setList(m_settings->getSourcePaths());
|
||||
@@ -263,6 +265,11 @@ void QtProjectWizzardContentPathsHeaderSearch::savePaths()
|
||||
m_settings->setHeaderSearchPaths(m_list->getList());
|
||||
}
|
||||
|
||||
bool QtProjectWizzardContentPathsHeaderSearch::isScrollAble() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
QtProjectWizzardContentPathsHeaderSearchSimple::QtProjectWizzardContentPathsHeaderSearchSimple(
|
||||
ProjectSettings* settings, QtProjectWizzardWindow* window
|
||||
)
|
||||
@@ -311,7 +318,8 @@ QtProjectWizzardContentPathsFrameworkSearch::QtProjectWizzardContentPathsFramewo
|
||||
setInfo(
|
||||
"Framework Search Paths",
|
||||
"Add search paths to Mac OS framework containers (.framework) that the project depends on.",
|
||||
"Framework Search Paths define where MacOS framework containers (.framework), that your project depends on, are found."
|
||||
"Framework Search Paths define where MacOS framework containers (.framework), that your project depends on, are "
|
||||
"found."
|
||||
);
|
||||
|
||||
m_subPaths = new QtProjectWizzardContentPathsFrameworkSearchGlobal(settings, window);
|
||||
@@ -327,6 +335,11 @@ void QtProjectWizzardContentPathsFrameworkSearch::savePaths()
|
||||
m_settings->setFrameworkSearchPaths(m_list->getList());
|
||||
}
|
||||
|
||||
bool QtProjectWizzardContentPathsFrameworkSearch::isScrollAble() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
QtProjectWizzardContentPathsFrameworkSearchGlobal::QtProjectWizzardContentPathsFrameworkSearchGlobal(
|
||||
ProjectSettings* settings, QtProjectWizzardWindow* window
|
||||
)
|
||||
@@ -337,7 +350,8 @@ QtProjectWizzardContentPathsFrameworkSearchGlobal::QtProjectWizzardContentPathsF
|
||||
"These framework search paths will be used in all your projects. Use it to add system frameworks "
|
||||
"(See <a href=\"https://staging.coati.io/documentation/#FindingSystemHeaderLocations\">"
|
||||
"Finding System Header Locations</a>).",
|
||||
"Framework Search Paths define where MacOS framework containers (.framework), that your project depends on, are found.\n\n"
|
||||
"Framework Search Paths define where MacOS framework containers (.framework), that your project depends on, are "
|
||||
"found.\n\n"
|
||||
"Framework Search Paths defined here will be used for all projects."
|
||||
);
|
||||
}
|
||||
|
||||
@@ -7,21 +7,6 @@
|
||||
|
||||
class QtDirectoryListBox;
|
||||
|
||||
class QtHelpButton
|
||||
: public QPushButton
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QtHelpButton(const QString& helpText, QWidget* parent = nullptr);
|
||||
|
||||
private slots:
|
||||
void handleHelpPress();
|
||||
|
||||
private:
|
||||
QString m_helpText;
|
||||
};
|
||||
|
||||
|
||||
class QtProjectWizzardContentPaths
|
||||
: public QtProjectWizzardContent
|
||||
@@ -29,20 +14,22 @@ class QtProjectWizzardContentPaths
|
||||
Q_OBJECT
|
||||
|
||||
signals:
|
||||
void showSourceFiles(std::vector<FilePath>);
|
||||
void showSourceFiles();
|
||||
|
||||
public:
|
||||
QtProjectWizzardContentPaths(ProjectSettings* settings, QtProjectWizzardWindow* window);
|
||||
|
||||
// QtSettingsWindow implementation
|
||||
virtual void populateWindow(QWidget* widget) override;
|
||||
void populateLayout(QVBoxLayout* layout);
|
||||
virtual void populateForm(QFormLayout* layout) override;
|
||||
virtual void populateWindow(QGridLayout* layout) override;
|
||||
void populateLayout(QGridLayout* layout, int& row);
|
||||
virtual void populateForm(QGridLayout* layout, int& row) override;
|
||||
|
||||
virtual void load() override;
|
||||
virtual void save() override;
|
||||
virtual bool check() override;
|
||||
|
||||
virtual QSize preferredWindowSize() const override;
|
||||
|
||||
virtual void loadPaths();
|
||||
virtual void savePaths();
|
||||
virtual bool checkPaths();
|
||||
@@ -62,6 +49,8 @@ private slots:
|
||||
void showSourcesClicked();
|
||||
|
||||
private:
|
||||
void addSourcesButton(QGridLayout* layout, int& row);
|
||||
|
||||
QString m_titleString;
|
||||
QString m_descriptionString;
|
||||
QString m_helpString;
|
||||
@@ -75,6 +64,9 @@ public:
|
||||
QtProjectWizzardContentPathsSource(ProjectSettings* settings, QtProjectWizzardWindow* window);
|
||||
|
||||
// QtProjectWizzardContent implementation
|
||||
virtual QSize preferredWindowSize() const override;
|
||||
|
||||
// QtProjectWizzardContentPaths implementation
|
||||
virtual void loadPaths() override;
|
||||
virtual void savePaths() override;
|
||||
virtual bool checkPaths() override;
|
||||
@@ -97,6 +89,8 @@ public:
|
||||
// QtProjectWizzardContent implementation
|
||||
virtual void loadPaths() override;
|
||||
virtual void savePaths() override;
|
||||
|
||||
virtual bool isScrollAble() const override;
|
||||
};
|
||||
|
||||
class QtProjectWizzardContentPathsHeaderSearchSimple
|
||||
@@ -127,6 +121,8 @@ public:
|
||||
// QtProjectWizzardContent implementation
|
||||
virtual void loadPaths() override;
|
||||
virtual void savePaths() override;
|
||||
|
||||
virtual bool isScrollAble() const override;
|
||||
};
|
||||
|
||||
class QtProjectWizzardContentPathsFrameworkSearchGlobal
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
#include "qt/window/project_wizzard/QtProjectWizzardContentPreferences.h"
|
||||
|
||||
#include <QSysInfo>
|
||||
|
||||
QtProjectWizzardContentPreferences::QtProjectWizzardContentPreferences(ProjectSettings* settings, QtProjectWizzardWindow* window)
|
||||
: QtProjectWizzardContent(settings, window)
|
||||
, m_headerSearch(nullptr)
|
||||
, m_frameworkSearch(nullptr)
|
||||
{
|
||||
m_headerSearch = new QtProjectWizzardContentPathsHeaderSearchGlobal(settings, window);
|
||||
|
||||
if (QSysInfo::macVersion() != QSysInfo::MV_None)
|
||||
{
|
||||
m_frameworkSearch = new QtProjectWizzardContentPathsFrameworkSearchGlobal(settings, window);
|
||||
}
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentPreferences::populateWindow(QGridLayout* layout)
|
||||
{
|
||||
int row = 0;
|
||||
|
||||
layout->setRowMinimumHeight(row, 10);
|
||||
row++;
|
||||
|
||||
m_headerSearch->populateForm(layout, row);
|
||||
|
||||
if (m_frameworkSearch)
|
||||
{
|
||||
m_frameworkSearch->populateForm(layout, row);
|
||||
}
|
||||
|
||||
layout->setRowMinimumHeight(row, 10);
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentPreferences::windowReady()
|
||||
{
|
||||
m_window->updateTitle("PREFERENCES");
|
||||
m_window->updateDoneButton("Save");
|
||||
m_window->hidePrevious();
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentPreferences::load()
|
||||
{
|
||||
m_headerSearch->load();
|
||||
|
||||
if (m_frameworkSearch)
|
||||
{
|
||||
m_frameworkSearch->load();
|
||||
}
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentPreferences::save()
|
||||
{
|
||||
m_headerSearch->save();
|
||||
|
||||
if (m_frameworkSearch)
|
||||
{
|
||||
m_frameworkSearch->save();
|
||||
}
|
||||
}
|
||||
|
||||
bool QtProjectWizzardContentPreferences::isScrollAble() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
#ifndef QT_PROJECT_WIZZARD_CONTENT_PREFERENCES_H
|
||||
#define QT_PROJECT_WIZZARD_CONTENT_PREFERENCES_H
|
||||
|
||||
#include "qt/window/project_wizzard/QtProjectWizzardContent.h"
|
||||
#include "qt/window/project_wizzard/QtProjectWizzardContentPaths.h"
|
||||
|
||||
class QtProjectWizzardContentPreferences
|
||||
: public QtProjectWizzardContent
|
||||
{
|
||||
public:
|
||||
QtProjectWizzardContentPreferences(ProjectSettings* settings, QtProjectWizzardWindow* window);
|
||||
|
||||
protected:
|
||||
// QtProjectContentWindow implementation
|
||||
virtual void populateWindow(QGridLayout* layout) override;
|
||||
virtual void windowReady() override;
|
||||
|
||||
virtual void load() override;
|
||||
virtual void save() override;
|
||||
|
||||
virtual bool isScrollAble() const override;
|
||||
|
||||
private:
|
||||
QtProjectWizzardContentPathsHeaderSearchGlobal* m_headerSearch;
|
||||
QtProjectWizzardContentPathsFrameworkSearchGlobal* m_frameworkSearch;
|
||||
};
|
||||
|
||||
#endif // QT_PROJECT_WIZZARD_CONTENT_PREFERENCES_H
|
||||
@@ -4,56 +4,23 @@
|
||||
#include <QMessageBox>
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QRadioButton>
|
||||
|
||||
#include "qt/window/project_wizzard/QtProjectWizzardWindow.h"
|
||||
#include "utility/ResourcePaths.h"
|
||||
|
||||
QtProjectWizzardContentSelect::QtProjectWizzardContentSelect(ProjectSettings* settings, QtProjectWizzardWindow* window)
|
||||
: QtProjectWizzardContent(settings, window)
|
||||
{
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentSelect::populateWindow(QWidget* widget)
|
||||
void QtProjectWizzardContentSelect::populateWindow(QGridLayout* layout)
|
||||
{
|
||||
QVBoxLayout* vlayout = new QVBoxLayout();
|
||||
|
||||
QLabel* title = new QLabel("Project Type");
|
||||
title->setObjectName("label");
|
||||
vlayout->addWidget(title);
|
||||
|
||||
QRadioButton* a = new QRadioButton("empty project");
|
||||
QRadioButton* b = new QRadioButton("from Visual Studio Solution");
|
||||
QRadioButton* c = new QRadioButton("from Compilation Database");
|
||||
|
||||
m_buttons = new QButtonGroup(this);
|
||||
m_buttons->addButton(a);
|
||||
m_buttons->addButton(b);
|
||||
m_buttons->addButton(c);
|
||||
|
||||
m_buttons->setId(a, PROJECT_EMPTY);
|
||||
m_buttons->setId(b, PROJECT_VS);
|
||||
m_buttons->setId(c, PROJECT_CDB);
|
||||
|
||||
connect(m_buttons, static_cast<void(QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked),
|
||||
[this](int id)
|
||||
{
|
||||
m_window->enableNext();
|
||||
}
|
||||
);
|
||||
|
||||
vlayout->addWidget(a);
|
||||
vlayout->addWidget(b);
|
||||
vlayout->addWidget(c);
|
||||
|
||||
vlayout->addStretch();
|
||||
|
||||
|
||||
QVBoxLayout* vlayout2 = new QVBoxLayout();
|
||||
|
||||
|
||||
QPushButton* d = new QPushButton("C++");
|
||||
QPushButton* e = new QPushButton("C");
|
||||
|
||||
d->setObjectName("menuButton");
|
||||
e->setObjectName("menuButton");
|
||||
|
||||
d->setCheckable(true);
|
||||
e->setCheckable(true);
|
||||
|
||||
@@ -80,16 +47,63 @@ void QtProjectWizzardContentSelect::populateWindow(QWidget* widget)
|
||||
}
|
||||
);
|
||||
|
||||
vlayout2->addWidget(d);
|
||||
vlayout2->addWidget(e);
|
||||
vlayout2->addStretch();
|
||||
QVBoxLayout* vlayout = new QVBoxLayout();
|
||||
vlayout->setContentsMargins(0, 30, 0, 0);
|
||||
|
||||
vlayout->addWidget(d);
|
||||
vlayout->addWidget(e);
|
||||
|
||||
vlayout->addStretch();
|
||||
|
||||
layout->addLayout(vlayout, 0, QtProjectWizzardWindow::FRONT_COL, Qt::AlignRight);
|
||||
|
||||
|
||||
QToolButton* a = createProjectButton(
|
||||
"empty project", (ResourcePaths::getGuiPath() + "icon/project_256_256.png").c_str());
|
||||
QToolButton* b = createProjectButton(
|
||||
"from Visual\nStudio Solution", (ResourcePaths::getGuiPath() + "icon/project_vs_256_256.png").c_str());
|
||||
QToolButton* c = createProjectButton(
|
||||
"from Compilation\nDatabase", (ResourcePaths::getGuiPath() + "icon/project_cdb_256_256.png").c_str());
|
||||
|
||||
m_buttons = new QButtonGroup(this);
|
||||
m_buttons->addButton(a);
|
||||
m_buttons->addButton(b);
|
||||
m_buttons->addButton(c);
|
||||
|
||||
m_buttons->setId(a, PROJECT_EMPTY);
|
||||
m_buttons->setId(b, PROJECT_VS);
|
||||
m_buttons->setId(c, PROJECT_CDB);
|
||||
|
||||
connect(m_buttons, static_cast<void(QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked),
|
||||
[this](int id)
|
||||
{
|
||||
m_window->enableNext();
|
||||
}
|
||||
);
|
||||
|
||||
QHBoxLayout* hlayout = new QHBoxLayout();
|
||||
|
||||
hlayout->addLayout(vlayout2);
|
||||
hlayout->addLayout(vlayout);
|
||||
hlayout->addWidget(a);
|
||||
hlayout->addWidget(b);
|
||||
hlayout->addWidget(c);
|
||||
|
||||
widget->setLayout(hlayout);
|
||||
QFrame* container = new QFrame();
|
||||
container->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
|
||||
container->setObjectName("projectContainer");
|
||||
container->setLayout(hlayout);
|
||||
|
||||
layout->addWidget(container, 0, QtProjectWizzardWindow::BACK_COL);
|
||||
|
||||
|
||||
QLabel* title = new QLabel("Project Type");
|
||||
title->setObjectName("projectTitle");
|
||||
|
||||
layout->addWidget(title, 0, QtProjectWizzardWindow::BACK_COL, Qt::AlignLeft | Qt::AlignTop);
|
||||
|
||||
|
||||
layout->setColumnStretch(QtProjectWizzardWindow::FRONT_COL, 0);
|
||||
layout->setColumnStretch(QtProjectWizzardWindow::BACK_COL, 1);
|
||||
layout->setHorizontalSpacing(0);
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentSelect::save()
|
||||
@@ -120,3 +134,8 @@ bool QtProjectWizzardContentSelect::check()
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
QSize QtProjectWizzardContentSelect::preferredWindowSize() const
|
||||
{
|
||||
return QSize(600, 340);
|
||||
}
|
||||
|
||||
@@ -20,15 +20,17 @@ public:
|
||||
|
||||
QtProjectWizzardContentSelect(ProjectSettings* settings, QtProjectWizzardWindow* window);
|
||||
|
||||
signals:
|
||||
void selected(QtProjectWizzardContentSelect::ProjectType);
|
||||
|
||||
protected:
|
||||
// QtProjectWizzardContent implementation
|
||||
virtual void populateWindow(QWidget* widget) override;
|
||||
virtual void populateWindow(QGridLayout* layout) override;
|
||||
|
||||
virtual void save() override;
|
||||
virtual bool check() override;
|
||||
|
||||
virtual QSize preferredWindowSize() const override;
|
||||
|
||||
signals:
|
||||
void selected(QtProjectWizzardContentSelect::ProjectType);
|
||||
|
||||
private:
|
||||
QButtonGroup* m_languages;
|
||||
QButtonGroup* m_buttons;
|
||||
|
||||
@@ -15,21 +15,21 @@ QtProjectWizzardContentSimple::QtProjectWizzardContentSimple(ProjectSettings* se
|
||||
{
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentSimple::populateWindow(QWidget* widget)
|
||||
void QtProjectWizzardContentSimple::populateWindow(QGridLayout* layout)
|
||||
{
|
||||
QVBoxLayout* layout = new QVBoxLayout(widget);
|
||||
layout->setRowMinimumHeight(0, 10);
|
||||
|
||||
QLabel* title = new QLabel("Simple Setup?");
|
||||
title->setObjectName("label");
|
||||
layout->addWidget(title);
|
||||
QLabel* title = new QLabel("Simple Setup");
|
||||
title->setObjectName("section");
|
||||
layout->addWidget(title, 1, QtProjectWizzardWindow::FRONT_COL, Qt::AlignTop | Qt::AlignRight);
|
||||
|
||||
QLabel* text = new QLabel(
|
||||
"In simple setup you just provide the directory of your project and Coati will find the source files and "
|
||||
"resolve header search paths within. Please note that simple setup makes Coati's analysis slower.\n\n"
|
||||
"In simple setup you just provide the directory of your project and Coati will find all source files and "
|
||||
"resolve header search paths within. Please note that simple setup slows down the analysis.\n\n"
|
||||
"In the advanced setup you define analyzed source files and the corresponding header search paths separately."
|
||||
);
|
||||
text->setWordWrap(true);
|
||||
layout->addWidget(text);
|
||||
layout->addWidget(text, 1, QtProjectWizzardWindow::BACK_COL);
|
||||
|
||||
QRadioButton* a = new QRadioButton("simple setup");
|
||||
QRadioButton* b = new QRadioButton("advanced setup");
|
||||
@@ -48,22 +48,29 @@ void QtProjectWizzardContentSimple::populateWindow(QWidget* widget)
|
||||
}
|
||||
);
|
||||
|
||||
layout->addWidget(a);
|
||||
layout->addWidget(b);
|
||||
QVBoxLayout* vlayout = new QVBoxLayout();
|
||||
|
||||
layout->addStretch();
|
||||
vlayout->addWidget(a);
|
||||
vlayout->addWidget(b);
|
||||
|
||||
widget->setLayout(layout);
|
||||
vlayout->addStretch();
|
||||
|
||||
layout->addLayout(vlayout, 2, QtProjectWizzardWindow::BACK_COL);
|
||||
|
||||
layout->setColumnStretch(QtProjectWizzardWindow::FRONT_COL, 1);
|
||||
layout->setColumnStretch(QtProjectWizzardWindow::BACK_COL, 3);
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentSimple::populateForm(QFormLayout* layout)
|
||||
void QtProjectWizzardContentSimple::populateForm(QGridLayout* layout, int& row)
|
||||
{
|
||||
QLabel* label = createFormLabel("search headers in project paths");
|
||||
m_checkBox = new QCheckBox();
|
||||
QLabel* label = createFormLabel("Search headers in project paths");
|
||||
layout->addWidget(label, row, QtProjectWizzardWindow::FRONT_COL);
|
||||
|
||||
layout->addRow(label, m_checkBox);
|
||||
m_checkBox = new QCheckBox();
|
||||
layout->addWidget(m_checkBox, row, QtProjectWizzardWindow::BACK_COL);
|
||||
|
||||
m_isForm = true;
|
||||
row++;
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentSimple::windowReady()
|
||||
@@ -101,6 +108,7 @@ void QtProjectWizzardContentSimple::save()
|
||||
{
|
||||
case 0: simpleSetup = true; break;
|
||||
case 1: simpleSetup = false; break;
|
||||
default: return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,3 +127,8 @@ bool QtProjectWizzardContentSimple::check()
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
QSize QtProjectWizzardContentSimple::preferredWindowSize() const
|
||||
{
|
||||
return QSize(580, 350);
|
||||
}
|
||||
|
||||
@@ -15,14 +15,16 @@ public:
|
||||
QtProjectWizzardContentSimple(ProjectSettings* settings, QtProjectWizzardWindow* window);
|
||||
|
||||
// QtProjectWizzardContent implementation
|
||||
virtual void populateWindow(QWidget* widget) override;
|
||||
virtual void populateForm(QFormLayout* layout) override;
|
||||
virtual void populateWindow(QGridLayout* layout) override;
|
||||
virtual void populateForm(QGridLayout* layout, int& row) override;
|
||||
virtual void windowReady() override;
|
||||
|
||||
virtual void load() override;
|
||||
virtual void save() override;
|
||||
virtual bool check() override;
|
||||
|
||||
virtual QSize preferredWindowSize() const override;
|
||||
|
||||
private:
|
||||
QButtonGroup* m_buttons;
|
||||
QCheckBox* m_checkBox;
|
||||
|
||||
@@ -16,24 +16,34 @@ QtProjectWizzardContentSourceList::QtProjectWizzardContentSourceList(
|
||||
void QtProjectWizzardContentSourceList::populateWindow(QWidget* widget)
|
||||
{
|
||||
QVBoxLayout* layout = new QVBoxLayout(widget);
|
||||
|
||||
QLabel* label = new QLabel("Analyzed Files");
|
||||
label->setObjectName("label");
|
||||
layout->addWidget(label);
|
||||
layout->setContentsMargins(0, 0, 0, 0);
|
||||
|
||||
m_text = new QLabel("0 files will be analyzed.");
|
||||
m_text->setWordWrap(true);
|
||||
layout->addWidget(m_text);
|
||||
|
||||
m_list = new QListView(this);
|
||||
m_list->setObjectName("files");
|
||||
m_list->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
||||
m_list->setSelectionMode(QAbstractItemView::NoSelection);
|
||||
m_list->setAttribute(Qt::WA_MacShowFocusRect, 0);
|
||||
layout->addWidget(m_list);
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentSourceList::showFilesFromSourcePaths(const std::vector<FilePath>& sourcePaths)
|
||||
void QtProjectWizzardContentSourceList::windowReady()
|
||||
{
|
||||
m_window->updateTitle("Analyzed Files");
|
||||
}
|
||||
|
||||
QSize QtProjectWizzardContentSourceList::preferredWindowSize() const
|
||||
{
|
||||
return QSize(500, 500);
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentSourceList::showFilesFromSourcePaths()
|
||||
{
|
||||
std::vector<FilePath> sourcePaths = m_settings->getSourcePaths();
|
||||
|
||||
std::vector<std::string> extensions;
|
||||
utility::append(extensions, m_settings->getSourceExtensions());
|
||||
utility::append(extensions, m_settings->getHeaderExtensions());
|
||||
|
||||
@@ -14,8 +14,11 @@ public:
|
||||
|
||||
// QtSettingsWindow implementation
|
||||
virtual void populateWindow(QWidget* widget) override;
|
||||
virtual void windowReady() override;
|
||||
|
||||
void showFilesFromSourcePaths(const std::vector<FilePath>& sourcePaths);
|
||||
virtual QSize preferredWindowSize() const override;
|
||||
|
||||
void showFilesFromSourcePaths();
|
||||
|
||||
private:
|
||||
QLabel* m_text;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#include "qt/window/project_wizzard/QtProjectWizzardContentSummary.h"
|
||||
|
||||
#include <QFormLayout>
|
||||
#include <QSysInfo>
|
||||
|
||||
QtProjectWizzardContentSummary::QtProjectWizzardContentSummary(ProjectSettings* settings, QtProjectWizzardWindow* window)
|
||||
@@ -34,24 +33,25 @@ QtProjectWizzardContentPathsSource* QtProjectWizzardContentSummary::contentPaths
|
||||
return m_source;
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentSummary::populateWindow(QWidget* widget)
|
||||
void QtProjectWizzardContentSummary::populateWindow(QGridLayout* layout)
|
||||
{
|
||||
QFormLayout* layout = new QFormLayout();
|
||||
layout->setContentsMargins(10, 10, 10, 10);
|
||||
layout->setHorizontalSpacing(20);
|
||||
int row = 0;
|
||||
|
||||
m_data->populateForm(layout);
|
||||
m_buildFile->populateForm(layout);
|
||||
m_source->populateForm(layout);
|
||||
m_simple->populateForm(layout);
|
||||
m_headerSearch->populateForm(layout);
|
||||
layout->setRowMinimumHeight(row, 10);
|
||||
row++;
|
||||
|
||||
m_data->populateForm(layout, row);
|
||||
m_buildFile->populateForm(layout, row);
|
||||
m_source->populateForm(layout, row);
|
||||
m_simple->populateForm(layout, row);
|
||||
m_headerSearch->populateForm(layout, row);
|
||||
|
||||
if (m_frameworkSearch)
|
||||
{
|
||||
m_frameworkSearch->populateForm(layout);
|
||||
m_frameworkSearch->populateForm(layout, row);
|
||||
}
|
||||
|
||||
widget->setLayout(layout);
|
||||
layout->setRowMinimumHeight(row, 10);
|
||||
}
|
||||
|
||||
void QtProjectWizzardContentSummary::windowReady()
|
||||
@@ -98,3 +98,8 @@ bool QtProjectWizzardContentSummary::check()
|
||||
m_headerSearch->check() &&
|
||||
(!m_frameworkSearch || m_frameworkSearch->check());
|
||||
}
|
||||
|
||||
bool QtProjectWizzardContentSummary::isScrollAble() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -18,11 +18,14 @@ public:
|
||||
|
||||
protected:
|
||||
// QtProjectContentWindow implementation
|
||||
virtual void populateWindow(QWidget* widget);
|
||||
virtual void windowReady();
|
||||
virtual void load();
|
||||
virtual void save();
|
||||
virtual bool check();
|
||||
virtual void populateWindow(QGridLayout* layout) override;
|
||||
virtual void windowReady() override;
|
||||
|
||||
virtual void load() override;
|
||||
virtual void save() override;
|
||||
virtual bool check() override;
|
||||
|
||||
virtual bool isScrollAble() const override;
|
||||
|
||||
private:
|
||||
QtProjectWizzardContentData* m_data;
|
||||
|
||||
@@ -1,14 +1,20 @@
|
||||
#include "qt/window/project_wizzard/QtProjectWizzardWindow.h"
|
||||
|
||||
#include <QGridLayout>
|
||||
#include <QFrame>
|
||||
#include <QPushButton>
|
||||
#include <QScrollArea>
|
||||
|
||||
#include "qt/utility/utilityQt.h"
|
||||
#include "qt/window/project_wizzard/QtProjectWizzardContent.h"
|
||||
#include "utility/ResourcePaths.h"
|
||||
|
||||
QtProjectWizzardWindow::QtProjectWizzardWindow(QWidget *parent)
|
||||
: QtSettingsWindow(parent)
|
||||
, m_content(nullptr)
|
||||
, m_previousButton(nullptr)
|
||||
, m_showAsPopup(false)
|
||||
, m_scrollAble(false)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -20,11 +26,47 @@ QtProjectWizzardContent* QtProjectWizzardWindow::content() const
|
||||
void QtProjectWizzardWindow::setContent(QtProjectWizzardContent* content)
|
||||
{
|
||||
m_content = content;
|
||||
m_scrollAble = content->isScrollAble();
|
||||
}
|
||||
|
||||
void QtProjectWizzardWindow::setup()
|
||||
{
|
||||
setupForm();
|
||||
setStyleSheet(utility::getStyleSheet(ResourcePaths::getGuiPath() + "project_wizzard/window.css").c_str());
|
||||
QVBoxLayout* windowLayout = new QVBoxLayout();
|
||||
windowLayout->setContentsMargins(25, 30, 25, 20);
|
||||
|
||||
m_title = new QLabel();
|
||||
m_title->setObjectName("title");
|
||||
windowLayout->addWidget(m_title);
|
||||
windowLayout->addSpacing(10);
|
||||
|
||||
QWidget* contentWidget = new QWidget();
|
||||
contentWidget->setObjectName("form");
|
||||
|
||||
populateWindow(contentWidget);
|
||||
|
||||
if (m_scrollAble)
|
||||
{
|
||||
QScrollArea* scrollArea = new QScrollArea();
|
||||
scrollArea->setObjectName("formArea");
|
||||
scrollArea->setFrameShadow(QFrame::Plain);
|
||||
scrollArea->setWidgetResizable(true);
|
||||
|
||||
scrollArea->setWidget(contentWidget);
|
||||
windowLayout->addWidget(scrollArea);
|
||||
}
|
||||
else
|
||||
{
|
||||
windowLayout->addWidget(contentWidget);
|
||||
windowLayout->setStretchFactor(contentWidget, 1);
|
||||
}
|
||||
|
||||
showButtons(windowLayout);
|
||||
|
||||
m_window->setLayout(windowLayout);
|
||||
|
||||
resize(content()->preferredWindowSize());
|
||||
|
||||
|
||||
updateTitle("NEW PROJECT");
|
||||
updateDoneButton("Next");
|
||||
@@ -41,9 +83,6 @@ void QtProjectWizzardWindow::setup()
|
||||
updateDoneButton("Ok");
|
||||
hideCancelButton(true);
|
||||
hidePrevious();
|
||||
m_title->hide();
|
||||
|
||||
setMaximumSize(QSize(500, 500));
|
||||
}
|
||||
|
||||
m_content->windowReady();
|
||||
@@ -51,7 +90,31 @@ void QtProjectWizzardWindow::setup()
|
||||
|
||||
void QtProjectWizzardWindow::populateWindow(QWidget* widget)
|
||||
{
|
||||
m_content->populateWindow(widget);
|
||||
QGridLayout* layout = new QGridLayout();
|
||||
layout->setContentsMargins(0, 0, 0, 0);
|
||||
|
||||
m_content->populateWindow(layout);
|
||||
|
||||
if (layout->columnCount() < 2)
|
||||
{
|
||||
m_content->populateWindow(widget);
|
||||
}
|
||||
else
|
||||
{
|
||||
QFrame* separator = new QFrame();
|
||||
separator->setFrameShape(QFrame::VLine);
|
||||
|
||||
QPalette palette = separator->palette();
|
||||
palette.setColor(QPalette::WindowText, Qt::lightGray);
|
||||
separator->setPalette(palette);
|
||||
|
||||
layout->addWidget(separator, 0, LINE_COL, -1, 1);
|
||||
|
||||
layout->setColumnStretch(HELP_COL, 0);
|
||||
layout->setColumnStretch(LINE_COL, 0);
|
||||
|
||||
widget->setLayout(layout);
|
||||
}
|
||||
}
|
||||
|
||||
void QtProjectWizzardWindow::enableNext()
|
||||
@@ -94,16 +157,16 @@ void QtProjectWizzardWindow::hidePrevious()
|
||||
}
|
||||
}
|
||||
|
||||
bool QtProjectWizzardWindow::getShowAsPopup() const
|
||||
{
|
||||
return m_showAsPopup;
|
||||
}
|
||||
|
||||
void QtProjectWizzardWindow::setShowAsPopup(bool showAsPopup)
|
||||
{
|
||||
m_showAsPopup = showAsPopup;
|
||||
}
|
||||
|
||||
void QtProjectWizzardWindow::setScrollAble(bool scrollAble)
|
||||
{
|
||||
m_scrollAble = scrollAble;
|
||||
}
|
||||
|
||||
void QtProjectWizzardWindow::handleCancelButtonPress()
|
||||
{
|
||||
emit canceled();
|
||||
|
||||
@@ -33,8 +33,13 @@ public:
|
||||
void disablePrevious();
|
||||
void hidePrevious();
|
||||
|
||||
bool getShowAsPopup() const;
|
||||
void setShowAsPopup(bool showAsPopup);
|
||||
void setScrollAble(bool scrollAble);
|
||||
|
||||
static const int FRONT_COL = 0;
|
||||
static const int HELP_COL = 1;
|
||||
static const int LINE_COL = 2;
|
||||
static const int BACK_COL = 3;
|
||||
|
||||
private slots:
|
||||
void handleCancelButtonPress();
|
||||
@@ -46,6 +51,7 @@ private:
|
||||
QPushButton* m_previousButton;
|
||||
|
||||
bool m_showAsPopup;
|
||||
bool m_scrollAble;
|
||||
};
|
||||
|
||||
#endif // QT_PROJECT_WIZZARD_WINDOW_H
|
||||
|
||||