Line data Source code
1 : /****************************************************************************/ 2 : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo 3 : // Copyright (C) 2001-2024 German Aerospace Center (DLR) and others. 4 : // This program and the accompanying materials are made available under the 5 : // terms of the Eclipse Public License 2.0 which is available at 6 : // https://www.eclipse.org/legal/epl-2.0/ 7 : // This Source Code may also be made available under the following Secondary 8 : // Licenses when the conditions for such availability set forth in the Eclipse 9 : // Public License 2.0 are satisfied: GNU General Public License, version 2 10 : // or later which is available at 11 : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html 12 : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later 13 : /****************************************************************************/ 14 : /// @file Command_Hotkey_InductionLoop.cpp 15 : /// @author Jakob Erdmann 16 : /// @date 31 Jan 2022 17 : /// 18 : // Registers custom hotkey for overriding detector value 19 : /****************************************************************************/ 20 : #include <config.h> 21 : 22 : #include <fxkeys.h> 23 : #include <microsim/output/MSInductLoop.h> 24 : #include <guisim/GUINet.h> 25 : #include "Command_Hotkey_InductionLoop.h" 26 : 27 : 28 : // =========================================================================== 29 : // method definitions 30 : // =========================================================================== 31 0 : Command_Hotkey_InductionLoop::Command_Hotkey_InductionLoop(MSInductLoop* det, bool set) : 32 0 : myDetector(det), mySet(set) 33 0 : { } 34 : 35 : 36 0 : Command_Hotkey_InductionLoop::~Command_Hotkey_InductionLoop() { } 37 : 38 : 39 : SUMOTime 40 0 : Command_Hotkey_InductionLoop::execute(SUMOTime /*currentTime*/) { 41 0 : myDetector->overrideTimeSinceDetection(mySet ? 0 : -1); 42 0 : return 1; 43 : } 44 : 45 : 46 : bool 47 0 : Command_Hotkey_InductionLoop::registerHotkey(const std::string& key, MSInductLoop* det) { 48 : int hotkey = -1; 49 0 : if (key.size() == 1) { 50 0 : char c = key[0]; 51 0 : if ('a' <= c && c <= 'z') { 52 : // see FXAccelTable::parseAccel 53 0 : hotkey = c + FX::KEY_space - ' '; 54 : } else { 55 0 : WRITE_WARNINGF(TL("Hotkey '%' is not supported"), key); 56 0 : return false; 57 : } 58 : } else { 59 0 : WRITE_WARNINGF(TL("Hotkey '%' is not supported"), key); 60 0 : return false; 61 : } 62 0 : GUINet* gn = dynamic_cast<GUINet*>(MSNet::getInstance()); 63 0 : if (gn != nullptr) { 64 0 : gn->addHotkey(hotkey, 65 0 : new Command_Hotkey_InductionLoop(det, true), 66 0 : new Command_Hotkey_InductionLoop(det, false)); 67 : } 68 : return true; 69 : } 70 : 71 : /****************************************************************************/