Adding flatten/blur secondary toolbar

This commit is contained in:
EIntemporel
2022-08-08 23:13:40 +02:00
parent dd334fce3e
commit 7dae103e15
6 changed files with 54 additions and 44 deletions

View File

@@ -2202,7 +2202,7 @@ void MapView::setupHotkeys()
, MOD_space , MOD_space
, [&] , [&]
{ {
flattenTool->nextFlattenMode(); _left_sec_toolbar->nextFlattenMode(this);
} }
, [&] { return terrainMode == editing_mode::flatten_blur && !NOGGIT_CUR_ACTION; } , [&] { return terrainMode == editing_mode::flatten_blur && !NOGGIT_CUR_ACTION; }
); );

View File

@@ -284,6 +284,9 @@ public:
[[nodiscard]] [[nodiscard]]
QWidget* getActiveStampModeItem(); QWidget* getActiveStampModeItem();
[[nodiscard]]
Noggit::Ui::flatten_blur_tool* getFlattenTool() { return flattenTool; };
[[nodiscard]] [[nodiscard]]
Noggit::NoggitRenderContext getRenderContext() { return _context; }; Noggit::NoggitRenderContext getRenderContext() { return _context; };

View File

@@ -70,22 +70,6 @@ namespace Noggit
layout->addWidget(settings_group); layout->addWidget(settings_group);
QGroupBox* flatten_blur_group = new QGroupBox("Flatten/Blur", this);
flatten_blur_group->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
auto flatten_blur_layout = new QGridLayout(flatten_blur_group);
flatten_blur_layout->addWidget(_lock_up_checkbox = new QCheckBox(this), 0, 0);
flatten_blur_layout->addWidget(_lock_down_checkbox = new QCheckBox(this), 0, 1);
_lock_up_checkbox->setChecked(_flatten_mode.raise);
_lock_up_checkbox->setText("Raise");
_lock_up_checkbox->setToolTip("Raise the terrain when using the tool");
_lock_down_checkbox->setChecked(_flatten_mode.lower);
_lock_down_checkbox->setText("Lower");
_lock_down_checkbox->setToolTip("Lower the terrain when using the tool");
layout->addWidget(flatten_blur_group);
QGroupBox* flatten_only_group = new QGroupBox("Flatten only", this); QGroupBox* flatten_only_group = new QGroupBox("Flatten only", this);
auto flatten_only_layout = new QVBoxLayout(flatten_only_group); auto flatten_only_layout = new QVBoxLayout(flatten_only_group);
@@ -150,20 +134,6 @@ namespace Noggit
} }
); );
connect( _lock_up_checkbox, &QCheckBox::stateChanged
, [&] (int state)
{
_flatten_mode.raise = state;
}
);
connect( _lock_down_checkbox, &QCheckBox::stateChanged
, [&] (int state)
{
_flatten_mode.lower = state;
}
);
connect ( _angle_slider, &QSlider::valueChanged connect ( _angle_slider, &QSlider::valueChanged
, [&] (int v) , [&] (int v)
{ {
@@ -231,16 +201,6 @@ namespace Noggit
_type_button_box->button (_flatten_type)->toggle(); _type_button_box->button (_flatten_type)->toggle();
} }
void flatten_blur_tool::nextFlattenMode()
{
_flatten_mode.next();
QSignalBlocker const up_lock(_lock_up_checkbox);
QSignalBlocker const down_lock(_lock_down_checkbox);
_lock_up_checkbox->setChecked(_flatten_mode.raise);
_lock_down_checkbox->setChecked(_flatten_mode.lower);
}
void flatten_blur_tool::toggleFlattenAngle() void flatten_blur_tool::toggleFlattenAngle()
{ {
_angle_group->setChecked(!angled_mode()); _angle_group->setChecked(!angled_mode());

View File

@@ -27,7 +27,6 @@ namespace Noggit
void blur (World* world, glm::vec3 const& cursor_pos, float dt); void blur (World* world, glm::vec3 const& cursor_pos, float dt);
void nextFlattenType(); void nextFlattenType();
void nextFlattenMode();
void toggleFlattenAngle(); void toggleFlattenAngle();
void toggleFlattenLock(); void toggleFlattenLock();
void lockPos (glm::vec3 const& cursor_pos); void lockPos (glm::vec3 const& cursor_pos);
@@ -53,6 +52,7 @@ namespace Noggit
Noggit::Ui::Tools::UiCommon::ExtendedSlider* getSpeedSlider() { return _speed_slider; }; Noggit::Ui::Tools::UiCommon::ExtendedSlider* getSpeedSlider() { return _speed_slider; };
QSize sizeHint() const override; QSize sizeHint() const override;
flatten_mode _flatten_mode;
QJsonObject toJSON(); QJsonObject toJSON();
void fromJSON(QJsonObject const& json); void fromJSON(QJsonObject const& json);
@@ -64,7 +64,6 @@ namespace Noggit
glm::vec3 _lock_pos; glm::vec3 _lock_pos;
int _flatten_type; int _flatten_type;
flatten_mode _flatten_mode;
private: private:
QButtonGroup* _type_button_box; QButtonGroup* _type_button_box;

View File

@@ -139,12 +139,38 @@ ViewToolbar::ViewToolbar(MapView* mapView, editing_mode mode)
setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum); setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
mapView->getLeftSecondaryToolbar()->hide(); mapView->getLeftSecondaryToolbar()->hide();
{
/*
* FLATTEN/BLUE SECONDARY TOOL
*/
IconAction* _icon = new IconAction(FontNoggitIcon{ FontNoggit::TOOL_FLATTEN_BLUR });
CheckBoxAction* _raise = new CheckBoxAction(tr("Raise"));
_raise->setChecked(true);
connect(_raise->checkbox(), &QCheckBox::stateChanged, [mapView](int state)
{
mapView->getFlattenTool()->_flatten_mode.raise = state;
});
CheckBoxAction* _lower = new CheckBoxAction(tr("Lower"));
_lower->setChecked(true);
connect(_lower->checkbox(), &QCheckBox::stateChanged, [mapView](int state)
{
mapView->getFlattenTool()->_flatten_mode.lower = state;
});
_flatten_secondary_tool.push_back(_icon);
_flatten_secondary_tool.push_back(_raise); raise_index = 1;
_flatten_secondary_tool.push_back(_lower); lower_index = 2;
}
{ {
/* /*
* TEXTURE PAINTER SECONDARY TOOL * TEXTURE PAINTER SECONDARY TOOL
*/ */
IconAction* _icon = new IconAction(FontNoggitIcon{FontNoggit::TOOL_TEXTURE_PAINT}); IconAction* _icon = new IconAction(FontNoggitIcon{ FontNoggit::TOOL_TEXTURE_PAINT });
CheckBoxAction* _unpaintable_chunk = new CheckBoxAction(tr("Unpaintable chunk")); CheckBoxAction* _unpaintable_chunk = new CheckBoxAction(tr("Unpaintable chunk"));
_unpaintable_chunk->setChecked(false); _unpaintable_chunk->setChecked(false);
@@ -169,6 +195,11 @@ void ViewToolbar::setCurrentMode(MapView* mapView, editing_mode mode)
case editing_mode::ground: case editing_mode::ground:
break; break;
case editing_mode::flatten_blur: case editing_mode::flatten_blur:
if (_flatten_secondary_tool.size() > 0)
{
setupWidget(_flatten_secondary_tool);
mapView->getLeftSecondaryToolbar()->show();
}
break; break;
case editing_mode::paint: case editing_mode::paint:
if (_texture_secondary_tool.size() > 0) if (_texture_secondary_tool.size() > 0)
@@ -233,3 +264,14 @@ bool ViewToolbar::showUnpaintableChunk()
return _texture_secondary_tool[unpaintable_chunk_index]; return _texture_secondary_tool[unpaintable_chunk_index];
} }
void ViewToolbar::nextFlattenMode(MapView* mapView)
{
mapView->getFlattenTool()->_flatten_mode.next();
QSignalBlocker const raise_lock(_flatten_secondary_tool[raise_index]);
QSignalBlocker const lower_lock(_flatten_secondary_tool[lower_index]);
_flatten_secondary_tool[raise_index]->setChecked(true);
_flatten_secondary_tool[lower_index]->setChecked(true);
}

View File

@@ -11,6 +11,7 @@
#include <noggit/MapView.h> #include <noggit/MapView.h>
#include <noggit/ui/FontNoggit.hpp> #include <noggit/ui/FontNoggit.hpp>
#include <noggit/BoolToggleProperty.hpp> #include <noggit/BoolToggleProperty.hpp>
#include <noggit/ui/FlattenTool.hpp>
namespace Noggit namespace Noggit
{ {
@@ -31,12 +32,17 @@ namespace Noggit
/*secondary left tool*/ /*secondary left tool*/
bool showUnpaintableChunk(); bool showUnpaintableChunk();
void nextFlattenMode(MapView* mapView);
QVector<QWidgetAction*> _flatten_secondary_tool;
QVector<QWidgetAction*> _texture_secondary_tool; QVector<QWidgetAction*> _texture_secondary_tool;
private: private:
QActionGroup _tool_group; QActionGroup _tool_group;
editing_mode current_mode; editing_mode current_mode;
int raise_index = -1;
int lower_index = -1;
int unpaintable_chunk_index = -1; int unpaintable_chunk_index = -1;
void add_tool_icon(MapView* mapView, void add_tool_icon(MapView* mapView,