diff --git a/bin/app/data/gui/startscreen/startscreen.css b/bin/app/data/gui/startscreen/startscreen.css
index ce7e1984..934450bd 100644
--- a/bin/app/data/gui/startscreen/startscreen.css
+++ b/bin/app/data/gui/startscreen/startscreen.css
@@ -36,6 +36,7 @@
color: black;
font-size: 16pt;
font-weight: bold;
+ margin-left: 6px;
}
#versionLabel {
diff --git a/src/lib_gui/qt/window/QtAbout.cpp b/src/lib_gui/qt/window/QtAbout.cpp
index 3f4149aa..cc83c425 100644
--- a/src/lib_gui/qt/window/QtAbout.cpp
+++ b/src/lib_gui/qt/window/QtAbout.cpp
@@ -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("Developed by:", this);
@@ -104,9 +113,9 @@ void QtAbout::setupAbout()
QLabel* companyLabel = new QLabel(
"Coati Software OG
"
- "Schlossallee 7/1
"
- "5412 Puch bei Hallein
"
- "Austria
"
+ "Schlossallee 7/1
"
+ "5412 Puch bei Hallein
"
+ "Austria
"
"support@coati.io
"
"coati.io",
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()
diff --git a/src/lib_gui/qt/window/QtStartScreen.cpp b/src/lib_gui/qt/window/QtStartScreen.cpp
index 8547ee1f..37f7ddf9 100644
--- a/src/lib_gui/qt/window/QtStartScreen.cpp
+++ b/src/lib_gui/qt/window/QtStartScreen.cpp
@@ -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 Coati trial!
"
- "Explore our preindexed projects to experience Coati's unique user interface.
"
- "If you want to use Coati on your own source code please "
- "purchase a license, "
- "or ask us for a temporary test license by writing to support@coati.io.", 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 Coati trial!
"
+ "Explore our preindexed projects to experience Coati's unique user interface.
"
+ "If you want to use Coati on your own source code please "
+ "purchase a license, "
+ "or ask us for a temporary test license by writing to support@coati.io.", this);
+ welcomeLabel->setOpenExternalLinks(true);
+ welcomeLabel->setObjectName("welcomeLabel");
+ welcomeLabel->setWordWrap(true);
+ welcomeLabel->setAlignment(Qt::AlignTop);
- QLabel* updateLabel = new QLabel(
- "check for new version", 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(
+ "check for new version", 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()
diff --git a/src/lib_gui/qt/window/QtStartScreen.h b/src/lib_gui/qt/window/QtStartScreen.h
index 654e87af..56d67a32 100644
--- a/src/lib_gui/qt/window/QtStartScreen.h
+++ b/src/lib_gui/qt/window/QtStartScreen.h
@@ -47,8 +47,6 @@ private slots:
void updateButtons();
private:
- QPushButton* m_openProjectButton;
- QPushButton* m_newProjectButton;
std::vector m_recentProjectsButtons;
};
diff --git a/src/lib_gui/qt/window/QtWindow.cpp b/src/lib_gui/qt/window/QtWindow.cpp
index 7bd931ff..dde61adf 100644
--- a/src/lib_gui/qt/window/QtWindow.cpp
+++ b/src/lib_gui/qt/window/QtWindow.cpp
@@ -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()
diff --git a/src/lib_gui/qt/window/QtWindow.h b/src/lib_gui/qt/window/QtWindow.h
index b5304d9f..5f7d8166 100644
--- a/src/lib_gui/qt/window/QtWindow.h
+++ b/src/lib_gui/qt/window/QtWindow.h
@@ -3,6 +3,7 @@
#include
#include
+#include
#include
#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
diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPaths.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPaths.cpp
index f1334b13..b23dcba3 100644
--- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPaths.cpp
+++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPaths.cpp
@@ -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;
}