Merge branch 'tools_rewrite' into 'ground_effects_editor'
Tools can now be added and placed in any order See merge request T1ti/noggit-red!8
This commit is contained in:
@@ -283,7 +283,7 @@ void MapView::set_editing_mode(editing_mode mode)
|
||||
|
||||
void MapView::setToolPropertyWidgetVisibility(editing_mode mode)
|
||||
{
|
||||
_tool_panel_dock->setCurrentIndex(static_cast<int>(mode));
|
||||
_tool_panel_dock->setCurrentTool(mode);
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace Noggit
|
||||
void AreaTool::setupUi(Ui::Tools::ToolPanel* toolPanel)
|
||||
{
|
||||
_areaTool = new Noggit::Ui::zone_id_browser(mapView());
|
||||
toolPanel->registerTool(name(), _areaTool);
|
||||
toolPanel->registerTool(this, _areaTool);
|
||||
|
||||
_areaTool->setMapID(mapView()->getWorld()->getMapID());
|
||||
QObject::connect(_areaTool, &Noggit::Ui::zone_id_browser::selected
|
||||
@@ -119,4 +119,4 @@ namespace Noggit
|
||||
_areaTool->changeRadius(params.relative_movement.dx() / XSENS);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,6 @@ namespace Noggit
|
||||
void ChunkTool::setupUi(Ui::Tools::ToolPanel* toolPanel)
|
||||
{
|
||||
_chunkManipulator = new Noggit::Ui::Tools::ChunkManipulator::ChunkManipulatorPanel(mapView(), mapView());
|
||||
toolPanel->registerTool(name(), _chunkManipulator);
|
||||
toolPanel->registerTool(this, _chunkManipulator);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ namespace Noggit
|
||||
void FlattenBlurTool::setupUi(Ui::Tools::ToolPanel* toolPanel)
|
||||
{
|
||||
_flattenTool = new Noggit::Ui::flatten_blur_tool(mapView());
|
||||
toolPanel->registerTool(name(), _flattenTool);
|
||||
toolPanel->registerTool(this, _flattenTool);
|
||||
}
|
||||
|
||||
void FlattenBlurTool::postUiSetup()
|
||||
|
||||
@@ -55,7 +55,7 @@ namespace Noggit
|
||||
void HoleTool::setupUi(Ui::Tools::ToolPanel* toolPanel)
|
||||
{
|
||||
_holeTool = new Noggit::Ui::hole_tool(mapView());
|
||||
toolPanel->registerTool(name(), _holeTool);
|
||||
toolPanel->registerTool(this, _holeTool);
|
||||
}
|
||||
|
||||
ToolDrawParameters HoleTool::drawParameters() const
|
||||
@@ -110,4 +110,4 @@ namespace Noggit
|
||||
_holeTool->changeRadius(params.relative_movement.dx() / XSENS);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace Noggit
|
||||
void ImpassTool::setupUi(Ui::Tools::ToolPanel* toolPanel)
|
||||
{
|
||||
// Dummy, because the toolbar requires a widget for every tool
|
||||
toolPanel->registerTool(name(), new QWidget{mapView()});
|
||||
toolPanel->registerTool(this, new QWidget{mapView()});
|
||||
}
|
||||
|
||||
void ImpassTool::onSelected()
|
||||
@@ -68,4 +68,4 @@ namespace Noggit
|
||||
mapView()->getWorld()->mapIndex.setFlag(false, mapView()->cursorPosition(), 0x2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace Noggit
|
||||
void LightTool::setupUi(Ui::Tools::ToolPanel* toolPanel)
|
||||
{
|
||||
_lightEditor = new Noggit::Ui::Tools::LightEditor(mapView(), mapView());
|
||||
toolPanel->registerTool(name(), _lightEditor);
|
||||
toolPanel->registerTool(this, _lightEditor);
|
||||
}
|
||||
|
||||
void LightTool::onTick(float deltaTime, TickParameters const& params)
|
||||
@@ -46,4 +46,4 @@ namespace Noggit
|
||||
if (mapView()->timeSpeed() > 0.0f)
|
||||
_lightEditor->UpdateWorldTime();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ namespace Noggit
|
||||
{
|
||||
auto mv = mapView();
|
||||
_minimapTool = new Noggit::Ui::MinimapCreator(mv, mv->getWorld(), mv);
|
||||
toolPanel->registerTool(name(), _minimapTool);
|
||||
toolPanel->registerTool(this, _minimapTool);
|
||||
|
||||
QObject::connect(_minimapTool, &Ui::MinimapCreator::onSave, [=] {
|
||||
saving_minimap = true;
|
||||
@@ -296,4 +296,4 @@ namespace Noggit
|
||||
// Save minimap creator model filters
|
||||
_minimapTool->saveFiltersToJSON();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ namespace Noggit
|
||||
, &_move_model_snap_to_objects
|
||||
, mv
|
||||
);
|
||||
toolPanel->registerTool(name(), _objectEditor);
|
||||
toolPanel->registerTool(this, _objectEditor);
|
||||
|
||||
/* Additional tools */
|
||||
|
||||
@@ -965,4 +965,4 @@ namespace Noggit
|
||||
{
|
||||
_objectEditor->rotationEditor->updateValues(mapView()->getWorld());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ namespace Noggit
|
||||
void RaiseLowerTool::setupUi(Ui::Tools::ToolPanel* toolPanel)
|
||||
{
|
||||
_terrainTool = new Noggit::Ui::TerrainTool{ mapView(), mapView() };
|
||||
toolPanel->registerTool(name(), _terrainTool);
|
||||
toolPanel->registerTool(this, _terrainTool);
|
||||
|
||||
QObject::connect(_terrainTool
|
||||
, &Noggit::Ui::TerrainTool::updateVertices
|
||||
@@ -251,4 +251,4 @@ namespace Noggit
|
||||
|
||||
image_mask_selector->setRotation(uid(gen));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace Noggit
|
||||
void ScriptingTool::setupUi(Ui::Tools::ToolPanel* toolPanel)
|
||||
{
|
||||
_scriptingTool = new Noggit::Scripting::scripting_tool(mapView(), mapView(), mapView()->settings());
|
||||
toolPanel->registerTool(name(), _scriptingTool);
|
||||
toolPanel->registerTool(this, _scriptingTool);
|
||||
}
|
||||
|
||||
ToolDrawParameters ScriptingTool::drawParameters() const
|
||||
@@ -67,4 +67,4 @@ namespace Noggit
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace Noggit
|
||||
void StampTool::setupUi(Ui::Tools::ToolPanel* toolPanel)
|
||||
{
|
||||
_stampTool = new Noggit::Ui::Tools::BrushStack(mapView(), mapView());
|
||||
toolPanel->registerTool(name(), _stampTool);
|
||||
toolPanel->registerTool(this, _stampTool);
|
||||
|
||||
QObject::connect(mapView(), &MapView::trySetBrushTexture, [=](QImage* brush, QWidget* sender) {
|
||||
auto mv = mapView();
|
||||
@@ -174,4 +174,4 @@ namespace Noggit
|
||||
|
||||
_stampTool->changeRotation(uid(gen));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ namespace Noggit
|
||||
auto mv = mapView();
|
||||
/* Tool */
|
||||
_texturingTool = new Ui::texturing_tool(&mv->getCamera()->position, mv, &_show_texture_palette_small_window, mv);
|
||||
toolPanel->registerTool(name(), _texturingTool);
|
||||
toolPanel->registerTool(this, _texturingTool);
|
||||
|
||||
// Connects
|
||||
QObject::connect(_texturingTool->texture_swap_tool()->texture_display()
|
||||
@@ -581,4 +581,4 @@ namespace Noggit
|
||||
|
||||
image_mask_selector->setRotation(uid(gen));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ namespace Noggit
|
||||
void VertexPainterTool::setupUi(Ui::Tools::ToolPanel* toolPanel)
|
||||
{
|
||||
_shaderTool = new Noggit::Ui::ShaderTool(mapView(), mapView());
|
||||
toolPanel->registerTool(name(), _shaderTool);
|
||||
toolPanel->registerTool(this, _shaderTool);
|
||||
}
|
||||
|
||||
ToolDrawParameters VertexPainterTool::drawParameters() const
|
||||
@@ -159,4 +159,4 @@ namespace Noggit
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ namespace Noggit
|
||||
void WaterTool::setupUi(Ui::Tools::ToolPanel* toolPanel)
|
||||
{
|
||||
_guiWater = new Noggit::Ui::water(&_displayedWaterLayer, &_displayAllWaterLayers, mapView());
|
||||
toolPanel->registerTool(name(), _guiWater);
|
||||
toolPanel->registerTool(this, _guiWater);
|
||||
|
||||
auto mv = mapView();
|
||||
|
||||
@@ -162,4 +162,4 @@ namespace Noggit
|
||||
_guiWater->change_height(delta_for_range(40.f));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,11 +29,16 @@ namespace Noggit
|
||||
});
|
||||
action->setActionGroup(&_tool_group);
|
||||
action->setCheckable(true);
|
||||
|
||||
_tool_actions[mode] = action;
|
||||
}
|
||||
|
||||
void toolbar::check_tool(editing_mode mode)
|
||||
{
|
||||
_tool_group.actions()[static_cast<std::size_t> (mode)]->setChecked(true);
|
||||
if (auto itr = _tool_actions.find(mode); itr != _tool_actions.end())
|
||||
{
|
||||
itr->second->setChecked(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
#include <noggit/tool_enums.hpp>
|
||||
#include <noggit/ui/FontNoggit.hpp>
|
||||
|
||||
#include <unordered_map>
|
||||
|
||||
namespace Noggit
|
||||
{
|
||||
class Tool;
|
||||
@@ -27,6 +29,8 @@ namespace Noggit
|
||||
std::function<void (editing_mode)> _set_editing_mode;
|
||||
QActionGroup _tool_group;
|
||||
|
||||
std::unordered_map<editing_mode, QAction*> _tool_actions;
|
||||
|
||||
void add_tool_icon(editing_mode mode, const QString& name, const FontNoggit::Icons& icon);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
// This file is part of Noggit3, licensed under GNU General Public License (version 3).
|
||||
|
||||
#include <noggit/Tool.hpp>
|
||||
|
||||
#include "ToolPanel.hpp"
|
||||
#include <QScrollBar>
|
||||
|
||||
using namespace Noggit::Ui::Tools;
|
||||
|
||||
ToolPanel::ToolPanel(QWidget* parent)
|
||||
: QDockWidget(parent)
|
||||
: QDockWidget(parent)
|
||||
{
|
||||
auto body = new QWidget(this);
|
||||
_ui.setupUi(body);
|
||||
@@ -16,18 +18,25 @@ ToolPanel::ToolPanel(QWidget* parent)
|
||||
setFixedWidth(250 + 15);
|
||||
}
|
||||
|
||||
void ToolPanel::setCurrentIndex(int index)
|
||||
void ToolPanel::setCurrentTool(editing_mode mode)
|
||||
{
|
||||
for (auto& widget : _widgets)
|
||||
widget->setVisible(false);
|
||||
for (auto&& [tool, widget] : _tools)
|
||||
{
|
||||
if (tool->editingMode() == mode)
|
||||
{
|
||||
widget->setVisible(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
widget->setVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
_widgets.at(index)->setVisible(true);
|
||||
_ui.scrollAreaWidgetContents->adjustSize();
|
||||
}
|
||||
|
||||
void ToolPanel::registerTool(QString const& title, QWidget* widget)
|
||||
void ToolPanel::registerTool(Tool* tool, QWidget* widget)
|
||||
{
|
||||
_widgets.push_back(widget);
|
||||
_ui.scrollAreaWidgetContents->layout()->addWidget(widget);
|
||||
_titles.emplace_back(title);
|
||||
}
|
||||
_tools.emplace_back(std::make_pair(tool, widget));
|
||||
}
|
||||
|
||||
@@ -3,14 +3,19 @@
|
||||
#ifndef NOGGIT_TOOLPANEL_HPP
|
||||
#define NOGGIT_TOOLPANEL_HPP
|
||||
|
||||
#include <noggit/tool_enums.hpp>
|
||||
|
||||
#include <QWidget>
|
||||
#include <QDockWidget>
|
||||
#include <ui_ToolPanelScroll.h>
|
||||
|
||||
#include <vector>
|
||||
#include <utility>
|
||||
|
||||
namespace Noggit
|
||||
{
|
||||
class Tool;
|
||||
|
||||
namespace Ui::Tools
|
||||
{
|
||||
class ToolPanel : public QDockWidget
|
||||
@@ -20,13 +25,12 @@ namespace Noggit
|
||||
public:
|
||||
explicit ToolPanel(QWidget* parent = nullptr);
|
||||
|
||||
void setCurrentIndex(int index);
|
||||
void registerTool(QString const& title, QWidget* widget);
|
||||
void setCurrentTool(editing_mode mode);
|
||||
void registerTool(Tool* tool, QWidget* widget);
|
||||
|
||||
private:
|
||||
::Ui::toolPanel _ui;
|
||||
std::vector<QString> _titles;
|
||||
std::vector<QWidget*> _widgets;
|
||||
std::vector<std::pair<Tool*, QWidget*>> _tools;
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user