1 /* 2 * This file is part of the Colobot: Gold Edition source code 3 * Copyright (C) 2001-2020, Daniel Roux, EPSITEC SA & TerranovaTeam 4 * http://epsitec.ch; http://colobot.info; http://github.com/colobot 5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 * See the GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program. If not, see http://gnu.org/licenses 18 */ 19 20 /** 21 * \file ui/controls/key.h 22 * \brief Key slot control 23 */ 24 25 #pragma once 26 27 #include "ui/controls/control.h" 28 29 #include "app/input.h" 30 31 #include "common/event.h" 32 #include "common/key.h" 33 #include "common/restext.h" 34 35 36 namespace Ui 37 { 38 39 class CKey : public CControl 40 { 41 public: 42 CKey(); 43 virtual ~CKey(); 44 45 //! Creates a new key slot button 46 bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventMsg) override; 47 //! Management of an event 48 bool EventProcess(const Event &event) override; 49 50 //! Draws button 51 void Draw() override; 52 53 //! Management of binding 54 //@{ 55 void SetBinding(InputBinding b); 56 InputBinding GetBinding(); 57 //@} 58 59 protected: 60 //! Checks if a key is already used 61 bool TestKey(unsigned int key); 62 63 protected: 64 CInput* m_input; 65 66 InputBinding m_binding; 67 bool m_catch; 68 }; 69 70 71 } // namespace Ui 72