ui: Made QtWindow resizeable with resize grip
* added size grip to bottom right corner of QtWindow * use layouts on start screen * added close button in about window to layout bug id = 102
This commit is contained in:
@@ -36,6 +36,7 @@
|
||||
color: black;
|
||||
font-size: 16pt;
|
||||
font-weight: bold;
|
||||
margin-left: 6px;
|
||||
}
|
||||
|
||||
#versionLabel {
|
||||
|
||||
@@ -33,10 +33,9 @@ void QtAbout::setupAbout()
|
||||
setStyleSheet(utility::getStyleSheet(ResourcePaths::getGuiPath() + "about/about.css").c_str());
|
||||
|
||||
QVBoxLayout* windowLayout = new QVBoxLayout();
|
||||
windowLayout->setContentsMargins(30, 30, 30, 20);
|
||||
m_window->setLayout(windowLayout);
|
||||
|
||||
windowLayout->addStretch();
|
||||
windowLayout->setContentsMargins(10, 10, 10, 0);
|
||||
windowLayout->setSpacing(1);
|
||||
m_content->setLayout(windowLayout);
|
||||
|
||||
{
|
||||
QHBoxLayout* row = new QHBoxLayout();
|
||||
@@ -56,6 +55,16 @@ void QtAbout::setupAbout()
|
||||
QVBoxLayout* column = new QVBoxLayout();
|
||||
row->addLayout(column);
|
||||
|
||||
QtDeviceScaledPixmap closePixmap((ResourcePaths::getGuiPath() + "about/icon_close.png").c_str());
|
||||
closePixmap.scaleToHeight(20);
|
||||
QPushButton* closeButton = new QPushButton(this);
|
||||
closeButton->setIcon(QIcon(closePixmap.pixmap()));
|
||||
closeButton->setObjectName("closeButton");
|
||||
closeButton->show();
|
||||
connect(closeButton, SIGNAL(clicked()), this, SLOT(handleCloseButtonPress()));
|
||||
|
||||
column->addWidget(closeButton, 0, Qt::AlignTop | Qt::AlignRight);
|
||||
|
||||
column->addStretch();
|
||||
|
||||
QLabel* developerTitle = new QLabel("<b>Developed by:</b>", this);
|
||||
@@ -104,9 +113,9 @@ void QtAbout::setupAbout()
|
||||
|
||||
QLabel* companyLabel = new QLabel(
|
||||
"<b>Coati Software OG</b><br />"
|
||||
"<b>Schlossallee 7/1</b><br />"
|
||||
"<b>5412 Puch bei Hallein</b><br />"
|
||||
"<b>Austria</b><br />"
|
||||
"Schlossallee 7/1<br />"
|
||||
"5412 Puch bei Hallein<br />"
|
||||
"Austria<br />"
|
||||
"<b>support@coati.io</b><br />"
|
||||
"<b><a href=\"https://coati.io\" style=\"color: white;\">coati.io</a></b>",
|
||||
this);
|
||||
@@ -139,19 +148,6 @@ void QtAbout::setupAbout()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
windowLayout->addStretch();
|
||||
|
||||
|
||||
QtDeviceScaledPixmap closePixmap((ResourcePaths::getGuiPath() + "about/icon_close.png").c_str());
|
||||
closePixmap.scaleToHeight(20);
|
||||
QPushButton* closeButton = new QPushButton(this);
|
||||
closeButton->setIcon(QIcon(closePixmap.pixmap()));
|
||||
closeButton->setObjectName("closeButton");
|
||||
closeButton->move(455, 25);
|
||||
closeButton->show();
|
||||
|
||||
connect(closeButton, SIGNAL(clicked()), this, SLOT(handleCloseButtonPress()));
|
||||
}
|
||||
|
||||
void QtAbout::handleCloseButtonPress()
|
||||
|
||||
@@ -126,77 +126,111 @@ void QtStartScreen::setupStartScreen()
|
||||
setStyleSheet(utility::getStyleSheet(ResourcePaths::getGuiPath() + "startscreen/startscreen.css").c_str());
|
||||
addLogo();
|
||||
|
||||
if (isTrial())
|
||||
QHBoxLayout* layout = new QHBoxLayout();
|
||||
layout->setContentsMargins(15, 170, 15, 10);
|
||||
layout->setSpacing(1);
|
||||
m_content->setLayout(layout);
|
||||
|
||||
{
|
||||
QLabel* welcomeLabel = new QLabel(
|
||||
"Welcome to the <b>Coati trial</b>!<br /><br />"
|
||||
"Explore our preindexed projects to experience Coati's unique user interface.<br /><br />"
|
||||
"If you want to use Coati on your own source code please "
|
||||
"<a href=\"http://coati.io/buy-license\" style=\"color: #007AC2;\">purchase a license</a>, "
|
||||
"or ask us for a temporary test license by writing to <b>support@coati.io</b>.", this);
|
||||
welcomeLabel->setOpenExternalLinks(true);
|
||||
welcomeLabel->setGeometry(30, 303, 200, 500);
|
||||
welcomeLabel->setObjectName("welcomeLabel");
|
||||
welcomeLabel->show();
|
||||
welcomeLabel->setWordWrap(true);
|
||||
welcomeLabel->setAlignment(Qt::AlignTop);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_newProjectButton = new QPushButton("New Project", this);
|
||||
m_newProjectButton->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
|
||||
m_newProjectButton->move(30, 505);
|
||||
m_newProjectButton->setObjectName("projectButton");
|
||||
m_newProjectButton->show();
|
||||
connect(m_newProjectButton, SIGNAL(clicked()), this, SLOT(handleNewProjectButton()));
|
||||
QVBoxLayout* col = new QVBoxLayout();
|
||||
layout->addLayout(col, 2);
|
||||
|
||||
m_openProjectButton = new QPushButton("Open Project", this);
|
||||
m_openProjectButton->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
|
||||
m_openProjectButton->move(30, 540);
|
||||
m_openProjectButton->setObjectName("projectButton");
|
||||
m_openProjectButton->show();
|
||||
connect(m_openProjectButton, SIGNAL(clicked()), this, SLOT(handleOpenProjectButton()));
|
||||
if (isTrial())
|
||||
{
|
||||
col->addSpacing(50);
|
||||
|
||||
QLabel* versionLabel = new QLabel(("Version " + Version::getApplicationVersion().toDisplayString()).c_str(), this);
|
||||
versionLabel->setGeometry(30, 234, 300, 50);
|
||||
versionLabel->setObjectName("versionLabel");
|
||||
versionLabel->show();
|
||||
QLabel* welcomeLabel = new QLabel(
|
||||
"Welcome to the <b>Coati trial</b>!<br /><br />"
|
||||
"Explore our preindexed projects to experience Coati's unique user interface.<br /><br />"
|
||||
"If you want to use Coati on your own source code please "
|
||||
"<a href=\"http://coati.io/buy-license\" style=\"color: #007AC2;\">purchase a license</a>, "
|
||||
"or ask us for a temporary test license by writing to <b>support@coati.io</b>.", this);
|
||||
welcomeLabel->setOpenExternalLinks(true);
|
||||
welcomeLabel->setObjectName("welcomeLabel");
|
||||
welcomeLabel->setWordWrap(true);
|
||||
welcomeLabel->setAlignment(Qt::AlignTop);
|
||||
|
||||
QLabel* updateLabel = new QLabel(
|
||||
"<a href=\"https://coati.io/downloads\" style=\"color: #007AC2;\">check for new version</a>", this);
|
||||
updateLabel->setOpenExternalLinks(true);
|
||||
updateLabel->setGeometry(30, 255, 300, 50);
|
||||
updateLabel->setObjectName("updateLabel");
|
||||
updateLabel->show();
|
||||
col->addWidget(welcomeLabel, 0, Qt::AlignHCenter | Qt::AlignTop);
|
||||
col->addStretch();
|
||||
|
||||
layout->addStretch(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
QLabel* versionLabel = new QLabel(("Version " + Version::getApplicationVersion().toDisplayString()).c_str(), this);
|
||||
versionLabel->setObjectName("versionLabel");
|
||||
col->addWidget(versionLabel);
|
||||
|
||||
QLabel* updateLabel = new QLabel(
|
||||
"<a href=\"https://coati.io/downloads\" style=\"color: #007AC2;\">check for new version</a>", this);
|
||||
updateLabel->setOpenExternalLinks(true);
|
||||
updateLabel->setObjectName("updateLabel");
|
||||
col->addWidget(updateLabel);
|
||||
|
||||
col->addStretch();
|
||||
|
||||
QPushButton* newProjectButton = new QPushButton("New Project", this);
|
||||
newProjectButton->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
|
||||
newProjectButton->setObjectName("projectButton");
|
||||
newProjectButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||
connect(newProjectButton, SIGNAL(clicked()), this, SLOT(handleNewProjectButton()));
|
||||
col->addWidget(newProjectButton);
|
||||
|
||||
col->addSpacing(8);
|
||||
|
||||
QPushButton* openProjectButton = new QPushButton("Open Project", this);
|
||||
openProjectButton->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
|
||||
openProjectButton->setObjectName("projectButton");
|
||||
openProjectButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||
connect(openProjectButton, SIGNAL(clicked()), this, SLOT(handleOpenProjectButton()));
|
||||
col->addWidget(openProjectButton);
|
||||
|
||||
layout->addStretch(2);
|
||||
}
|
||||
}
|
||||
|
||||
QLabel* recentProjectsLabel = new QLabel("Recent Projects: ", this);
|
||||
if (isTrial())
|
||||
{
|
||||
recentProjectsLabel->setText("Projects:");
|
||||
}
|
||||
recentProjectsLabel->setGeometry(300, 234, 300, 50);
|
||||
recentProjectsLabel->setObjectName("recentLabel");
|
||||
recentProjectsLabel->show();
|
||||
QVBoxLayout* col = new QVBoxLayout();
|
||||
layout->addLayout(col, 1);
|
||||
|
||||
int position = 290;
|
||||
QIcon cpp_icon((ResourcePaths::getGuiPath() + "icon/project_256_256.png").c_str());
|
||||
for (int i = 0
|
||||
; i < ApplicationSettings::getInstance()->getMaxRecentProjectsCount()
|
||||
; i++)
|
||||
{
|
||||
QtRecentProjectButton* button = new QtRecentProjectButton(this);
|
||||
button->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
|
||||
button->setIcon(cpp_icon);
|
||||
button->setIconSize(QSize(25, 25));
|
||||
button->setObjectName("recentButtonMissing");
|
||||
button->setGeometry(292, position, button->fontMetrics().width(button->text()) + 45, 40);
|
||||
button->minimumSizeHint(); // force font loading
|
||||
button->show();
|
||||
position += 40;
|
||||
m_recentProjectsButtons.push_back(button);
|
||||
QLabel* recentProjectsLabel = new QLabel("Recent Projects: ", this);
|
||||
if (isTrial())
|
||||
{
|
||||
recentProjectsLabel->setText("Projects:");
|
||||
}
|
||||
recentProjectsLabel->setObjectName("recentLabel");
|
||||
col->addWidget(recentProjectsLabel);
|
||||
|
||||
col->addSpacing(20);
|
||||
|
||||
QIcon cpp_icon((ResourcePaths::getGuiPath() + "icon/project_256_256.png").c_str());
|
||||
for (int i = 0
|
||||
; i < ApplicationSettings::getInstance()->getMaxRecentProjectsCount()
|
||||
; i++)
|
||||
{
|
||||
QtRecentProjectButton* button = new QtRecentProjectButton(this);
|
||||
button->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
|
||||
button->setIcon(cpp_icon);
|
||||
button->setIconSize(QSize(25, 25));
|
||||
button->setMinimumSize(button->fontMetrics().width(button->text()) + 45, 40);
|
||||
button->setObjectName("recentButtonMissing");
|
||||
button->minimumSizeHint(); // force font loading
|
||||
m_recentProjectsButtons.push_back(button);
|
||||
col->addWidget(button);
|
||||
}
|
||||
|
||||
col->addStretch();
|
||||
}
|
||||
|
||||
layout->addStretch(1);
|
||||
|
||||
updateButtons();
|
||||
|
||||
QSize size = sizeHint();
|
||||
move(
|
||||
parentWidget()->pos().x() + parentWidget()->width() / 2 - size.width() / 2,
|
||||
parentWidget()->pos().y() + parentWidget()->height() / 2 - size.height() / 2
|
||||
);
|
||||
}
|
||||
|
||||
void QtStartScreen::handleNewProjectButton()
|
||||
|
||||
@@ -47,8 +47,6 @@ private slots:
|
||||
void updateButtons();
|
||||
|
||||
private:
|
||||
QPushButton* m_openProjectButton;
|
||||
QPushButton* m_newProjectButton;
|
||||
std::vector<QtRecentProjectButton*> m_recentProjectsButtons;
|
||||
};
|
||||
|
||||
|
||||
@@ -50,6 +50,18 @@ QtWindow::QtWindow(QWidget* parent)
|
||||
m_window->setGraphicsEffect(effect);
|
||||
}
|
||||
|
||||
QVBoxLayout* layout = new QVBoxLayout(m_window);
|
||||
layout->setSpacing(1);
|
||||
|
||||
m_content = new QWidget();
|
||||
layout->addWidget(m_content);
|
||||
|
||||
QHBoxLayout* gripLayout = new QHBoxLayout();
|
||||
QSizeGrip* sizeGrip = new QSizeGrip(m_window);
|
||||
gripLayout->addWidget(new QWidget());
|
||||
gripLayout->addWidget(sizeGrip);
|
||||
layout->addLayout(gripLayout);
|
||||
|
||||
resize(sizeHint());
|
||||
|
||||
this->raise();
|
||||
@@ -67,7 +79,7 @@ void QtWindow::setup()
|
||||
{
|
||||
setStyleSheet(utility::getStyleSheet(ResourcePaths::getGuiPath() + "window/window.css").c_str());
|
||||
QVBoxLayout* layout = new QVBoxLayout();
|
||||
layout->setContentsMargins(25, 30, 25, 20);
|
||||
layout->setContentsMargins(25, 30, 25, 0);
|
||||
|
||||
m_title = new QLabel();
|
||||
m_title->setObjectName("title");
|
||||
@@ -120,7 +132,7 @@ void QtWindow::setup()
|
||||
layout->addLayout(buttons);
|
||||
}
|
||||
|
||||
m_window->setLayout(layout);
|
||||
m_content->setLayout(layout);
|
||||
|
||||
if (m_showAsPopup)
|
||||
{
|
||||
@@ -243,20 +255,32 @@ void QtWindow::hideWindow()
|
||||
|
||||
void QtWindow::resizeEvent(QResizeEvent *event)
|
||||
{
|
||||
QSize size = event->size();
|
||||
|
||||
if (size.width() < 300)
|
||||
{
|
||||
size.setWidth(300);
|
||||
resize(size);
|
||||
return;
|
||||
}
|
||||
|
||||
if (size.height() < 200)
|
||||
{
|
||||
size.setHeight(200);
|
||||
resize(size);
|
||||
return;
|
||||
}
|
||||
|
||||
int displacement = 0;
|
||||
if (m_hasLogo)
|
||||
{
|
||||
displacement = 58;
|
||||
}
|
||||
|
||||
QSize windowSize = event->size() - QSize(10, 10 + displacement);
|
||||
QSize windowSize = size - QSize(10, 10 + displacement);
|
||||
|
||||
m_window->resize(windowSize);
|
||||
m_window->move(5, displacement + 10);
|
||||
|
||||
move(
|
||||
parentWidget()->pos().x() + parentWidget()->width() / 2 - event->size().width() / 2,
|
||||
parentWidget()->pos().y() + parentWidget()->height() / 2 - event->size().height() / 2
|
||||
);
|
||||
}
|
||||
|
||||
void QtWindow::keyPressEvent(QKeyEvent *event)
|
||||
@@ -331,6 +355,11 @@ void QtWindow::setupDone()
|
||||
|
||||
QSize size(qMax(actualSize.width(), preferredSize.width()), qMax(actualSize.height(), preferredSize.height()));
|
||||
resize(size);
|
||||
|
||||
move(
|
||||
parentWidget()->pos().x() + parentWidget()->width() / 2 - size.width() / 2,
|
||||
parentWidget()->pos().y() + parentWidget()->height() / 2 - size.height() / 2
|
||||
);
|
||||
}
|
||||
|
||||
void QtWindow::addLogo()
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include <QHBoxLayout>
|
||||
#include <QResizeEvent>
|
||||
#include <QSizeGrip>
|
||||
#include <QWidget>
|
||||
|
||||
#include "qt/window/QtWindowStack.h"
|
||||
@@ -71,6 +72,7 @@ protected:
|
||||
void addLogo();
|
||||
|
||||
QWidget* m_window;
|
||||
QWidget* m_content;
|
||||
|
||||
QLabel* m_title;
|
||||
|
||||
@@ -92,6 +94,8 @@ private:
|
||||
|
||||
QPoint m_dragPosition;
|
||||
bool m_mousePressedInWindow;
|
||||
|
||||
QSizeGrip* m_sizeGrip;
|
||||
};
|
||||
|
||||
#endif // QT_WINDOW_H
|
||||
|
||||
@@ -105,15 +105,16 @@ bool QtProjectWizzardContentPaths::check()
|
||||
|
||||
if (!fi.exists())
|
||||
{
|
||||
missingPaths.append("\n");
|
||||
missingPaths.append(f.str().c_str());
|
||||
missingPaths.append("\n");
|
||||
}
|
||||
}
|
||||
|
||||
if (!missingPaths.isEmpty())
|
||||
{
|
||||
QMessageBox msgBox;
|
||||
msgBox.setText("These paths do not exist:" + missingPaths);
|
||||
msgBox.setText("Some project paths do not exist.");
|
||||
msgBox.setDetailedText(missingPaths);
|
||||
msgBox.exec();
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user