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:
parent
6126edcd75
commit
deb31645aa
Notes:
sideshowbarker
2024-07-19 12:19:03 +09:00
Author: https://github.com/RyanGrieb Commit: https://github.com/SerenityOS/serenity/commit/deb31645aa2 Pull-request: https://github.com/SerenityOS/serenity/pull/508
2 changed files with 45 additions and 3 deletions
|
@ -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)
|
||||
|
|
|
@ -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(); }
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue