1 /*
2  * KiRouter - a push-and-(sometimes-)shove PCB router
3  *
4  * Copyright (C) 2013-2017 CERN
5  * Copyright (C) 2016 KiCad Developers, see AUTHORS.txt for contributors.
6  * Author: Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
7  * Author: Maciej Suminski <maciej.suminski@cern.ch>
8  *
9  * This program is free software: you can redistribute it and/or modify it
10  * under the terms of the GNU General Public License as published by the
11  * Free Software Foundation, either version 3 of the License, or (at your
12  * option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful, but
15  * WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17  * General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License along
20  * with this program.  If not, see <http://www.gnu.org/licenses/>.
21  */
22 
23 #ifndef __LENGTH_TUNER_TOOL_H
24 #define __LENGTH_TUNER_TOOL_H
25 
26 #include "pns_tool_base.h"
27 #include "pns_meander.h"
28 
29 class PNS_TUNE_STATUS_POPUP;
30 
31 class APIEXPORT LENGTH_TUNER_TOOL : public PNS::TOOL_BASE
32 {
33 public:
34     LENGTH_TUNER_TOOL();
35     ~LENGTH_TUNER_TOOL();
36 
37     /// @copydoc TOOL_BASE::Init()
38     bool Init() override;
39 
40     void Reset( RESET_REASON aReason ) override;
41 
42     int MainLoop( const TOOL_EVENT& aEvent );
43 
44     void setTransitions() override;
45 
46 private:
47     void performTuning();
48     void updateStatusPopup( PNS_TUNE_STATUS_POPUP& aPopup );
49 
50     int meanderSettingsDialog( const TOOL_EVENT& aEvent );
51 
52     PNS::MEANDER_SETTINGS m_savedMeanderSettings;
53     PNS::ROUTER_MODE      m_lastTuneMode;
54 };
55 
56 #endif
57