KiCad PCB EDA Suite
Loading...
Searching...
No Matches
tool_interactive.cpp
Go to the documentation of this file.
1
/*
2
* This program source code file is part of KiCad, a free EDA CAD application.
3
*
4
* Copyright (C) 2013 CERN
5
* @author Tomasz Wlostowski <
[email protected]
>
6
*
7
* This program is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU General Public License
9
* as published by the Free Software Foundation; either version 2
10
* of the License, or (at your option) any later version.
11
*
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with this program; if not, you may find one here:
19
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20
* or you may search the http://www.gnu.org website for the version 2 license,
21
* or you may write to the Free Software Foundation, Inc.,
22
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23
*/
24
25
#include <string>
26
27
#include <
tool/tool_event.h
>
28
#include <
tool/tool_manager.h
>
29
#include <
tool/tool_interactive.h
>
30
#include <
tool/action_menu.h
>
31
32
TOOL_INTERACTIVE::TOOL_INTERACTIVE
(
TOOL_ID
aId,
const
std::string& aName ) :
33
TOOL_BASE
(
INTERACTIVE
, aId, aName ),
34
m_menu( *this )
35
{
36
}
37
38
39
TOOL_INTERACTIVE::TOOL_INTERACTIVE
(
const
std::string& aName ) :
40
TOOL_BASE
(
INTERACTIVE
,
TOOL_MANAGER
::MakeToolId( aName ), aName ),
41
m_menu( *this )
42
{
43
}
44
45
46
TOOL_INTERACTIVE::~TOOL_INTERACTIVE
()
47
{
48
}
49
50
51
void
TOOL_INTERACTIVE::Activate
()
52
{
53
m_toolMgr
->
InvokeTool
(
m_toolId
);
54
}
55
56
57
TOOL_EVENT
*
TOOL_INTERACTIVE::Wait
(
const
TOOL_EVENT_LIST
& aEventList )
58
{
59
return
m_toolMgr
->
ScheduleWait
(
this
, aEventList );
60
}
61
62
63
void
TOOL_INTERACTIVE::resetTransitions
()
64
{
65
m_toolMgr
->
ClearTransitions
(
this
);
66
setTransitions
();
67
}
68
69
70
void
TOOL_INTERACTIVE::goInternal
(
TOOL_STATE_FUNC
& aState,
const
TOOL_EVENT_LIST
& aConditions )
71
{
72
m_toolMgr
->
ScheduleNextState
(
this
, aState, aConditions );
73
}
74
75
76
void
TOOL_INTERACTIVE::SetContextMenu
(
ACTION_MENU
* aMenu,
CONTEXT_MENU_TRIGGER
aTrigger )
77
{
78
if
( aMenu )
79
aMenu->
SetTool
(
this
);
80
else
81
aTrigger =
CMENU_OFF
;
82
83
m_toolMgr
->
ScheduleContextMenu
(
this
, aMenu, aTrigger );
84
}
85
86
87
void
TOOL_INTERACTIVE::RunMainStack
( std::function<
void
()> aFunc )
88
{
89
m_toolMgr
->
RunMainStack
(
this
, std::move( aFunc ) );
90
}
91
action_menu.h
ACTION_MENU
Defines the structure of a menu based on ACTIONs.
Definition:
action_menu.h:49
ACTION_MENU::SetTool
void SetTool(TOOL_INTERACTIVE *aTool)
Set a tool that is the creator of the menu.
Definition:
action_menu.cpp:295
TOOL_BASE
Base abstract interface for all kinds of tools.
Definition:
tool_base.h:66
TOOL_BASE::m_toolMgr
TOOL_MANAGER * m_toolMgr
Definition:
tool_base.h:216
TOOL_BASE::m_toolId
TOOL_ID m_toolId
Name of the tool.
Definition:
tool_base.h:211
TOOL_EVENT_LIST
A list of TOOL_EVENTs, with overloaded || operators allowing for concatenating TOOL_EVENTs with littl...
Definition:
tool_event.h:564
TOOL_EVENT
Generic, UI-independent tool event.
Definition:
tool_event.h:156
TOOL_INTERACTIVE::SetContextMenu
void SetContextMenu(ACTION_MENU *aMenu, CONTEXT_MENU_TRIGGER aTrigger=CMENU_BUTTON)
Assign a context menu and tells when it should be activated.
Definition:
tool_interactive.cpp:76
TOOL_INTERACTIVE::RunMainStack
void RunMainStack(std::function< void()> aFunc)
Call a function using the main stack.
Definition:
tool_interactive.cpp:87
TOOL_INTERACTIVE::setTransitions
virtual void setTransitions()=0
This method is meant to be overridden in order to specify handlers for events.
TOOL_INTERACTIVE::goInternal
void goInternal(TOOL_STATE_FUNC &aState, const TOOL_EVENT_LIST &aConditions)
Definition:
tool_interactive.cpp:70
TOOL_INTERACTIVE::~TOOL_INTERACTIVE
virtual ~TOOL_INTERACTIVE()
Definition:
tool_interactive.cpp:46
TOOL_INTERACTIVE::TOOL_INTERACTIVE
TOOL_INTERACTIVE(TOOL_ID aId, const std::string &aName)
Create a tool with given id & name.
Definition:
tool_interactive.cpp:32
TOOL_INTERACTIVE::Wait
TOOL_EVENT * Wait(const TOOL_EVENT_LIST &aEventList=TOOL_EVENT(TC_ANY, TA_ANY))
Suspend execution of the tool until an event specified in aEventList arrives.
Definition:
tool_interactive.cpp:57
TOOL_INTERACTIVE::resetTransitions
void resetTransitions()
Clear the current transition map and restores the default one created by setTransitions().
Definition:
tool_interactive.cpp:63
TOOL_INTERACTIVE::Activate
void Activate()
Run the tool.
Definition:
tool_interactive.cpp:51
TOOL_MANAGER
Master controller class:
Definition:
tool_manager.h:55
TOOL_MANAGER::ScheduleNextState
void ScheduleNextState(TOOL_BASE *aTool, TOOL_STATE_FUNC &aHandler, const TOOL_EVENT_LIST &aConditions)
Define a state transition.
Definition:
tool_manager.cpp:641
TOOL_MANAGER::InvokeTool
bool InvokeTool(TOOL_ID aToolId)
Call a tool by sending a tool activation event to tool of given ID.
Definition:
tool_manager.cpp:260
TOOL_MANAGER::RunMainStack
void RunMainStack(TOOL_BASE *aTool, std::function< void()> aFunc)
Definition:
tool_manager.cpp:656
TOOL_MANAGER::ClearTransitions
void ClearTransitions(TOOL_BASE *aTool)
Clear the state transition map for a tool.
Definition:
tool_manager.cpp:650
TOOL_MANAGER::ScheduleContextMenu
void ScheduleContextMenu(TOOL_BASE *aTool, ACTION_MENU *aMenu, CONTEXT_MENU_TRIGGER aTrigger)
Set behavior of the tool's context popup menu.
Definition:
tool_manager.cpp:1003
TOOL_MANAGER::ScheduleWait
TOOL_EVENT * ScheduleWait(TOOL_BASE *aTool, const TOOL_EVENT_LIST &aConditions)
Pause execution of a given tool until one or more events matching aConditions arrives.
Definition:
tool_manager.cpp:664
TOOL_STATE_FUNC
std::function< int(const TOOL_EVENT &)> TOOL_STATE_FUNC
Definition:
tool_base.h:58
TOOL_ID
int TOOL_ID
Unique identifier for tools.
Definition:
tool_base.h:56
INTERACTIVE
@ INTERACTIVE
Tool that interacts with the user.
Definition:
tool_base.h:49
tool_event.h
CONTEXT_MENU_TRIGGER
CONTEXT_MENU_TRIGGER
Defines when a context menu is opened.
Definition:
tool_event.h:146
CMENU_OFF
@ CMENU_OFF
Definition:
tool_event.h:149
tool_interactive.h
tool_manager.h
src
common
tool
tool_interactive.cpp
Generated on Thu Jun 1 2023 00:03:59 for KiCad PCB EDA Suite by
1.9.5