GAction: Added GCommonActions as a template to create standard actions

Instead of creating actions from the ground up, GCommonActions contains
all related information to that common action. Such as the icon,
keybind, ect.
This commit is contained in:
rhin123 2019-09-01 15:28:07 -05:00 committed by Andreas Kling
parent 6126edcd75
commit deb31645aa
Notes: sideshowbarker 2024-07-19 12:19:03 +09:00
2 changed files with 45 additions and 3 deletions

View File

@ -4,6 +4,40 @@
#include <LibGUI/GButton.h>
#include <LibGUI/GMenuItem.h>
NonnullRefPtr<GAction> GCommonActions::make_cut_action(Function<void()> callback, GWidget* widget)
{
return GAction::create(
"Cut", { Mod_Ctrl, Key_X }, GraphicsBitmap::load_from_file("/res/icons/cut16.png"), [callback = move(callback)](const GAction&) {
callback();
},
widget);
}
NonnullRefPtr<GAction> GCommonActions::make_copy_action(Function<void()> callback, GWidget* widget)
{
return GAction::create(
"Copy", { Mod_Ctrl, Key_C }, GraphicsBitmap::load_from_file("/res/icons/16x16/edit-copy.png"), [callback = move(callback)](const GAction&) {
callback();
},
widget);
}
NonnullRefPtr<GAction> GCommonActions::make_paste_action(Function<void()> callback, GWidget* widget)
{
return GAction::create(
"Paste", { Mod_Ctrl, Key_V }, GraphicsBitmap::load_from_file("/res/icons/paste16.png"), [callback = move(callback)](const GAction&) {
callback();
},
widget);
}
NonnullRefPtr<GAction> GCommonActions::make_quit_action(Function<void()> callback)
{
return GAction::create("Quit", { Mod_Alt, Key_F4 }, [callback = move(callback)](const GAction&) {
callback();
});
}
GAction::GAction(const StringView& text, Function<void(GAction&)> on_activation_callback, GWidget* widget)
: on_activation(move(on_activation_callback))
, m_text(text)

View File

@ -4,18 +4,27 @@
#include <AK/Badge.h>
#include <AK/Function.h>
#include <AK/HashTable.h>
#include <AK/RefCounted.h>
#include <AK/NonnullRefPtr.h>
#include <AK/RefCounted.h>
#include <AK/WeakPtr.h>
#include <AK/Weakable.h>
#include <LibGUI/GShortcut.h>
#include <LibDraw/GraphicsBitmap.h>
#include <LibGUI/GShortcut.h>
#include <LibGUI/GWindow.h>
class GAction;
class GActionGroup;
class GButton;
class GMenuItem;
class GWidget;
namespace GCommonActions {
NonnullRefPtr<GAction> make_cut_action(Function<void()>, GWidget* widget);
NonnullRefPtr<GAction> make_copy_action(Function<void()>, GWidget* widget);
NonnullRefPtr<GAction> make_paste_action(Function<void()>, GWidget* widget);
NonnullRefPtr<GAction> make_quit_action(Function<void()>);
};
class GAction : public RefCounted<GAction>
, public Weakable<GAction> {
public:
@ -41,7 +50,6 @@ public:
return adopt(*new GAction(text, shortcut, move(icon), move(callback), widget));
}
~GAction();
GWidget* widget() { return m_widget.ptr(); }
const GWidget* widget() const { return m_widget.ptr(); }