1 /** 2 * File name: RkAction.h 3 * Project: Redkite (A small GUI toolkit) 4 * 5 * Copyright (C) 2020 Iurie Nistor 6 * 7 * This file is part of Redkite. 8 * 9 * Redkite is free software; you can redistribute it and/or modify 10 * it under the terms of the GNU General Public License as published by 11 * the Free Software Foundation; either version 3 of the License, or 12 * (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * You should have received a copy of the GNU General Public License 20 * along with this program; if not, write to the Free Software 21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 */ 23 24 #ifndef RK_ACTION_H 25 #define RK_ACTION_H 26 27 #include "Rk.h" 28 #include "RkObject.h" 29 30 class RK_EXPORT RkAction { 31 public: 32 explicit RkAction(RkObject *obj = nullptr) 33 : actionObject{obj} {} 34 35 virtual ~RkAction() = default; 36 setCallback(const std::function<void (void)> & cb)37 void setCallback(const std::function<void(void)> &cb) 38 { 39 actionCallback = cb; 40 } 41 call()42 void call() 43 { 44 if (actionCallback) 45 actionCallback(); 46 } 47 object()48 RkObject *object() { return actionObject; } 49 50 private: 51 RkObject *actionObject; 52 std::function<void(void)> actionCallback; 53 }; 54 55 #endif // RK_ACTION_H 56 57