From 81cbbb9880b66b7d3691e72e10dce97ac796bfae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Lemaire?= Date: Wed, 11 Apr 2012 19:59:50 +0000 Subject: [PATCH] paysages: Icons and UI polishing. git-svn-id: https://subversion.assembla.com/svn/thunderk/paysages@291 b1fd45b6-86a6-48da-8261-f70d1f35bdcc --- TODO | 2 + gui_qt/baseform.cpp | 61 ++++++++++---------- gui_qt/dialogrender.cpp | 5 +- gui_qt/inputcolorgradation.cpp | 14 ++--- gui_qt/mainwindow.cpp | 35 ++++++------ i18n/paysages_fr.ts | 101 ++++++++++++++++++++------------- images/about.png | Bin 0 -> 4311 bytes images/explore.png | Bin 0 -> 4738 bytes images/load.png | Bin 0 -> 4061 bytes images/new.png | Bin 0 -> 3506 bytes images/render.png | Bin 0 -> 4810 bytes images/save.png | Bin 0 -> 4046 bytes 12 files changed, 125 insertions(+), 93 deletions(-) create mode 100644 images/about.png create mode 100644 images/explore.png create mode 100644 images/load.png create mode 100644 images/new.png create mode 100644 images/render.png create mode 100644 images/save.png diff --git a/TODO b/TODO index c06f22d..d8b14aa 100644 --- a/TODO +++ b/TODO @@ -1,3 +1,5 @@ +- Make colorgradation dialog sizable (and reduce minimum size). +- Make all UI more sizable. - Implement scaling and scrolling on previews. - Add a material editor dialog. - Replace FILE* by a custom type for Save and Load. diff --git a/gui_qt/baseform.cpp b/gui_qt/baseform.cpp index 81276f1..3c220f9 100644 --- a/gui_qt/baseform.cpp +++ b/gui_qt/baseform.cpp @@ -14,61 +14,62 @@ BaseForm::BaseForm(QWidget* parent, bool auto_apply, bool with_layers) : QWidget(parent) { - QWidget* hwidget; - QVBoxLayout* vlayout; - QHBoxLayout* hlayout; + QWidget* control; + QWidget* layers; + QLabel* label; this->auto_apply = auto_apply; this->with_layers = with_layers; - vlayout = new QVBoxLayout(); - hlayout = new QHBoxLayout(); + setLayout(new QHBoxLayout()); + setObjectName("_base_form_"); + + control = new QWidget(this); + control->setLayout(new QVBoxLayout()); + layout()->addWidget(control); if (with_layers) { - hwidget = new QWidget(this); - hwidget->setLayout(new QHBoxLayout()); + layers = new QWidget(this); + layers->setLayout(new QHBoxLayout()); + layers->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); - hwidget->layout()->addWidget(new QLabel(tr("Layers : "), hwidget)); + label = new QLabel(tr("Layers : "), layers); + label->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + layers->layout()->addWidget(label); - layer_list = new QComboBox(hwidget); - hwidget->layout()->addWidget(layer_list); + layer_list = new QComboBox(layers); + layers->layout()->addWidget(layer_list); QObject::connect(layer_list, SIGNAL(currentIndexChanged(int)), this, SLOT(layerListChanged())); - layer_new = new QPushButton(tr("Add layer"), hwidget); - hwidget->layout()->addWidget(layer_new); + layer_new = new QPushButton(tr("Add layer"), layers); + layers->layout()->addWidget(layer_new); QObject::connect(layer_new, SIGNAL(clicked()), this, SLOT(layerAddClicked())); - layer_del = new QPushButton(tr("Delete layer"), hwidget); - hwidget->layout()->addWidget(layer_del); + layer_del = new QPushButton(tr("Delete layer"), layers); + layers->layout()->addWidget(layer_del); QObject::connect(layer_del, SIGNAL(clicked()), this, SLOT(layerDelClicked())); - vlayout->addWidget(hwidget); + control->layout()->addWidget(layers); + control->layout()->setAlignment(buttons, Qt::AlignTop); } - hwidget = new QWidget(this); - previews = new QWidget(this); previews->setLayout(new QVBoxLayout()); previews->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - + layout()->addWidget(previews); + layout()->setAlignment(previews, Qt::AlignTop); + form = new QWidget(this); form->setLayout(new QGridLayout()); - form->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); + form->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + control->layout()->addWidget(form); + control->layout()->setAlignment(form, Qt::AlignTop | Qt::AlignLeft); buttons = new QWidget(this); buttons->setLayout(new QHBoxLayout()); - - hlayout->addWidget(previews); - hlayout->addWidget(form); - hlayout->setAlignment(form, Qt::AlignTop); - - vlayout->addWidget(hwidget); - vlayout->addWidget(buttons); - - hwidget->setLayout(hlayout); - this->setLayout(vlayout); - this->setObjectName("_base_form_"); + control->layout()->addWidget(buttons); + control->layout()->setAlignment(buttons, Qt::AlignBottom); button_apply = addButton(tr("Apply")); button_apply->setEnabled(false); diff --git a/gui_qt/dialogrender.cpp b/gui_qt/dialogrender.cpp index 4b7a035..f5b26e1 100644 --- a/gui_qt/dialogrender.cpp +++ b/gui_qt/dialogrender.cpp @@ -92,6 +92,9 @@ DialogRender::DialogRender(QWidget *parent, Renderer* renderer): progress->setValue(0); layout()->addWidget(progress); progress_value = 0; + + // TEMP + progress->hide(); } DialogRender::~DialogRender() @@ -131,5 +134,5 @@ void DialogRender::applyRenderSize(int width, int height) area->setMinimumSize(width, height); area->setMaximumSize(width, height); area->resize(width, height); - scroll->setMinimumSize(width > 800 ? 850 : width + 50, height > 600 ? 650 : height + 50); + scroll->setMinimumSize(width > 800 ? 820 : width + 20, height > 600 ? 620 : height + 20); } diff --git a/gui_qt/inputcolorgradation.cpp b/gui_qt/inputcolorgradation.cpp index 2480f3e..6c7d7e3 100644 --- a/gui_qt/inputcolorgradation.cpp +++ b/gui_qt/inputcolorgradation.cpp @@ -12,18 +12,18 @@ InputColorGradation::InputColorGradation(QWidget* form, QString label, ColorGrad { _value = value; - _preview = new PreviewColorGradation(form, value, COLORGRADATIONBAND_FINAL); - _preview->setMinimumSize(200, 20); + _control = new PreviewColorGradation(form, value, COLORGRADATIONBAND_FINAL); + _control->setMinimumSize(200, 20); - _control = new QPushButton(tr("Edit"), form); - _control->setMaximumWidth(150); + _preview = new QPushButton(tr("Edit"), form); + _preview->setMaximumWidth(150); - connect((QPushButton*)_control, SIGNAL(clicked()), this, SLOT(editGradation())); + connect((QPushButton*)_preview, SIGNAL(clicked()), this, SLOT(editGradation())); } void InputColorGradation::updatePreview() { - _preview->update(); + _control->update(); BaseInput::updatePreview(); } @@ -43,7 +43,7 @@ void InputColorGradation::editGradation() gradation = colorGradationCreate(); colorGradationCopy(_value, gradation); - if (DialogColorGradation::getGradation(_preview, gradation)) + if (DialogColorGradation::getGradation(_control, gradation)) { colorGradationCopy(gradation, _value); applyValue(); diff --git a/gui_qt/mainwindow.cpp b/gui_qt/mainwindow.cpp index b820bdb..61973ec 100644 --- a/gui_qt/mainwindow.cpp +++ b/gui_qt/mainwindow.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -67,8 +68,8 @@ MainWindow::MainWindow(QWidget *parent) : { BaseForm* form; QTabWidget* tabs; - QMenu* menu; - + QToolBar* toolbar; + tabs = new QTabWidget(this); form = new FormTerrain(tabs); @@ -102,20 +103,22 @@ MainWindow::MainWindow(QWidget *parent) : _form_render = new FormRender(tabs); tabs->addTab(_form_render, tr("Render")); - menu = menuBar()->addMenu(tr("&Scene")); - menu->addAction(tr("&New"), this, SLOT(fileNew()), QKeySequence(tr("Crtl+N"))); - menu->addSeparator(); - menu->addAction(tr("&Save"), this, SLOT(fileSave()), QKeySequence(tr("Crtl+S"))); - menu->addAction(tr("&Open"), this, SLOT(fileLoad()), QKeySequence(tr("Crtl+O"))); - menu->addSeparator(); - menu->addAction(tr("&Quit"), this, SLOT(close()), QKeySequence(tr("Crtl+Q"))); - - menu = menuBar()->addMenu(tr("&Actions")); - menu->addAction(tr("&Explore in 3D"), this, SLOT(explore3D()), QKeySequence("F2")); - menu->addAction(tr("&Quick render"), this, SLOT(quickPreview()), QKeySequence("F5")); - - menu = menuBar()->addMenu(tr("&Help")); - menu->addAction(tr("&About"), this, SLOT(showAboutDialog())); + toolbar = new QToolBar(this); + toolbar->setOrientation(Qt::Vertical); + toolbar->setAllowedAreas(Qt::LeftToolBarArea); + toolbar->setMovable(false); + toolbar->setFloatable(false); + toolbar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); + toolbar->toggleViewAction()->setEnabled(false); + toolbar->setIconSize(QSize(32, 32)); + addToolBar(Qt::LeftToolBarArea, toolbar); + + toolbar->addAction(QIcon("images/new.png"), tr("&New"), this, SLOT(fileNew()))->setShortcut(QKeySequence(tr("Crtl+N"))); + toolbar->addAction(QIcon("images/save.png"), tr("&Save"), this, SLOT(fileSave()))->setShortcut(QKeySequence(tr("Crtl+S"))); + toolbar->addAction(QIcon("images/load.png"), tr("&Load"), this, SLOT(fileLoad()))->setShortcut(QKeySequence(tr("Crtl+L"))); + toolbar->addAction(QIcon("images/explore.png"), tr("&Explore (F2)"), this, SLOT(explore3D()))->setShortcut(QKeySequence(tr("F2"))); + toolbar->addAction(QIcon("images/render.png"), tr("&Quick\nrender (F5)"), this, SLOT(quickPreview()))->setShortcut(QKeySequence(tr("F5"))); + toolbar->addAction(QIcon("images/about.png"), tr("&About"), this, SLOT(showAboutDialog())); setCentralWidget(tabs); diff --git a/i18n/paysages_fr.ts b/i18n/paysages_fr.ts index d15965a..296ce78 100644 --- a/i18n/paysages_fr.ts +++ b/i18n/paysages_fr.ts @@ -4,32 +4,32 @@ BaseForm - + Layers : Niveaux : - + Add layer Ajouter un niveau - + Delete layer Supprimer un niveau - + Apply Appliquer - + Revert Annuler les modifications - + Layer %1 Niveau %1 @@ -682,32 +682,64 @@ Maintenir Ctrl : Plus rapide MainWindow - + Terrain Terrain - + Textures Textures - + Water Eau - + Atmosphere Atmosphère - + + &Load + &Ouvrir + + + + Crtl+L + Ctrl+O + + + + &Explore (F2) + &Explorer (F2) + + + + F2 + F2 + + + + &Quick +render (F5) + &Rendu +rapide (F5) + + + + F5 + F5 + + + Sky Ciel - + Clouds Nuages @@ -716,87 +748,78 @@ Maintenir Ctrl : Plus rapide Eclairage - + Render Rendu - &Scene - &Scène + &Scène - + &New - &Nouvelle + &Nouveau - + Crtl+N Ctrl+N - + &Save &Sauvegarder - + Crtl+S Ctrl+S - &Open - &Ouvrir + &Ouvrir - Crtl+O - Ctrl+O + Ctrl+O - &Quit - &Quitter + &Quitter - Crtl+Q - Ctrl+Q + Ctrl+Q - &Actions - &Actions + &Actions - &Explore in 3D - &Explorer en 3D + &Explorer en 3D - &Quick render - Rendu r&apide + Rendu r&apide - &Help - Ai&de + Ai&de - + &About &A propos - + Paysages 3D Paysages 3D - + A 3D landscape editing and rendering software. Credits : diff --git a/images/about.png b/images/about.png new file mode 100644 index 0000000000000000000000000000000000000000..24eeec7f1035990c826121407ec5e69825d07e41 GIT binary patch literal 4311 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 QZ2$lO07*qoM6N<$g8b43bN~PV literal 0 HcmV?d00001 diff --git a/images/load.png b/images/load.png new file mode 100644 index 0000000000000000000000000000000000000000..72beedad7bc226af66de5d51f377f772992d711f GIT binary patch literal 4061 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 P00000NkvXXu0mjf=Fq0i literal 0 HcmV?d00001 diff --git a/images/new.png b/images/new.png new file mode 100644 index 0000000000000000000000000000000000000000..6a6d201fafe644355f097066bca3eb4818099fce GIT binary patch literal 3506 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 literal 0 HcmV?d00001 diff --git a/images/save.png b/images/save.png new file mode 100644 index 0000000000000000000000000000000000000000..df239778179d6c62edd31385b429fb65415307a8 GIT binary patch literal 4046 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 AuK)l5 literal 0 HcmV?d00001