1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 04:17:35 +00:00

PixelPaint: Make the ImageEditor known throughout the Filter Gallery

This commit is contained in:
Tobias Christiansen 2022-01-01 00:42:28 +01:00 committed by Andreas Kling
parent f47026b1d6
commit ddaf496aa0
5 changed files with 16 additions and 8 deletions

View file

@ -13,7 +13,7 @@
namespace PixelPaint {
FilterGallery::FilterGallery(GUI::Window* parent_window)
FilterGallery::FilterGallery(GUI::Window* parent_window, ImageEditor* editor)
: GUI::Dialog(parent_window)
{
set_title("Filter Gallery");
@ -33,7 +33,7 @@ FilterGallery::FilterGallery(GUI::Window* parent_window)
VERIFY(apply_button);
VERIFY(cancel_button);
auto filter_model = FilterModel::create();
auto filter_model = FilterModel::create(editor);
filter_tree->set_model(filter_model);
filter_tree->expand_tree();

View file

@ -6,6 +6,7 @@
#pragma once
#include "ImageEditor.h"
#include <LibGUI/Dialog.h>
namespace PixelPaint {
@ -14,7 +15,7 @@ class FilterGallery final : public GUI::Dialog {
C_OBJECT(FilterGallery);
private:
FilterGallery(GUI::Window* parent_window);
FilterGallery(GUI::Window* parent_window, ImageEditor*);
};
}

View file

@ -6,10 +6,13 @@
*/
#include "FilterModel.h"
#include "FilterParams.h"
#include "Layer.h"
#include <LibGUI/FileIconProvider.h>
#include <LibGfx/Filters/LaplacianFilter.h>
namespace PixelPaint {
FilterModel::FilterModel()
FilterModel::FilterModel(ImageEditor* editor)
{
auto filter_bitmap = Gfx::Bitmap::try_load_from_file("/res/icons/pixelpaint/filter.png").release_value_but_fixme_should_propagate_errors();

View file

@ -6,6 +6,7 @@
#pragma once
#include "ImageEditor.h"
#include <AK/NonnullRefPtr.h>
#include <LibGUI/Model.h>
@ -53,9 +54,9 @@ public:
}
};
static NonnullRefPtr<FilterModel> create()
static NonnullRefPtr<FilterModel> create(ImageEditor* editor)
{
return adopt_ref(*new FilterModel());
return adopt_ref(*new FilterModel(editor));
}
virtual ~FilterModel() override {};
@ -67,7 +68,7 @@ public:
virtual GUI::ModelIndex index(int row, int column = 0, const GUI::ModelIndex& = GUI::ModelIndex()) const override;
private:
FilterModel();
FilterModel(ImageEditor* editor);
NonnullRefPtrVector<FilterInfo> m_filters;
GUI::Icon m_filter_icon;

View file

@ -590,7 +590,10 @@ void MainWidget::initialize_menubar(GUI::Window& window)
auto& filter_menu = window.add_menu("&Filter");
filter_menu.add_action(GUI::Action::create("Filter &Gallery", [&](auto&) {
auto dialog = PixelPaint::FilterGallery::construct(&window);
auto* editor = current_image_editor();
if (!editor)
return;
auto dialog = PixelPaint::FilterGallery::construct(&window, editor);
if (dialog->exec() != GUI::Dialog::ExecOK)
return;
}));