\doxysection{UIActions Class Reference}
\hypertarget{classUIActions}{}\label{classUIActions}\index{UIActions@{UIActions}}


WARNING\+: The non-\/async \doxylink{classUIActions}{UIActions} functions are expected to be non-\/concurrent.  




{\ttfamily \#include $<$Actions.\+hpp$>$}

\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classUIActions_afbb189d63aca85989347e4930127c632}\label{classUIActions_afbb189d63aca85989347e4930127c632} 
{\bfseries UIActions} (\mbox{\hyperlink{classUIApplication}{UIApplication}} \&)
\item 
\Hypertarget{classUIActions_a25213380101f031e765a49d8909010dd}\label{classUIActions_a25213380101f031e765a49d8909010dd} 
void {\bfseries set\+UIElement} (\mbox{\hyperlink{classActionTab}{Action\+Tab}} \texorpdfstring{$\ast$}{*})
\item 
\Hypertarget{classUIActions_afe550ae44c0d71087e1e644ee2bdb8b3}\label{classUIActions_afe550ae44c0d71087e1e644ee2bdb8b3} 
void {\bfseries reset} ()
\item 
\Hypertarget{classUIActions_ac78e7b795dce35f025d807c6b39c7be9}\label{classUIActions_ac78e7b795dce35f025d807c6b39c7be9} 
\mbox{\hyperlink{classConnection}{Connection}} \texorpdfstring{$\ast$}{*} {\bfseries get\+Connection} () const
\item 
\Hypertarget{classUIActions_a82dee5ba2439054a77cfd845391327aa}\label{classUIActions_a82dee5ba2439054a77cfd845391327aa} 
const auto \& {\bfseries get\+Selection\+SetC} () const
\item 
\Hypertarget{classUIActions_acf9bdf1dcdc21a4da9c9b804ff1b7684}\label{classUIActions_acf9bdf1dcdc21a4da9c9b804ff1b7684} 
const auto \& {\bfseries get\+Selection\+SetP} () const
\item 
\Hypertarget{classUIActions_aa79b2150550ffe679e3e8b2994920b41}\label{classUIActions_aa79b2150550ffe679e3e8b2994920b41} 
const std\+::vector$<$ \mbox{\hyperlink{classConnection}{Connection}} \texorpdfstring{$\ast$}{*} $>$ \texorpdfstring{$\ast$}{*} {\bfseries get\+Active\+Connections} () const
\item 
\Hypertarget{classUIActions_a7d2b8102a69e7d5ca310c0ffe9228ed1}\label{classUIActions_a7d2b8102a69e7d5ca310c0ffe9228ed1} 
void {\bfseries deselect\+All} ()
\item 
\Hypertarget{classUIActions_a503957480b7d1e65f3a6c509b4ed9b91}\label{classUIActions_a503957480b7d1e65f3a6c509b4ed9b91} 
void {\bfseries deselect} (const \mbox{\hyperlink{classComponent}{Component}} \texorpdfstring{$\ast$}{*})
\item 
\Hypertarget{classUIActions_af6ada5b5b426dd6f1402853c01550eea}\label{classUIActions_af6ada5b5b426dd6f1402853c01550eea} 
void {\bfseries deselect} (const \mbox{\hyperlink{classPin}{Pin}} \texorpdfstring{$\ast$}{*})
\item 
\Hypertarget{classUIActions_ac523ceaccf6666b7f1dc96b394c64926}\label{classUIActions_ac523ceaccf6666b7f1dc96b394c64926} 
void {\bfseries set\+Selection} (\mbox{\hyperlink{classObject}{Object}} \texorpdfstring{$\ast$}{*})
\item 
\Hypertarget{classUIActions_a17e3bbac7bf9ea0743d55699d4e118f8}\label{classUIActions_a17e3bbac7bf9ea0743d55699d4e118f8} 
void {\bfseries set\+Selection} (\mbox{\hyperlink{classComponent}{Component}} \texorpdfstring{$\ast$}{*})
\item 
\Hypertarget{classUIActions_a75c7a482ef02f89fd284044414e76696}\label{classUIActions_a75c7a482ef02f89fd284044414e76696} 
void {\bfseries set\+Selection} (\mbox{\hyperlink{classPin}{Pin}} \texorpdfstring{$\ast$}{*})
\item 
\Hypertarget{classUIActions_aaf17da46b5f2e1a3661c00d63197e97a}\label{classUIActions_aaf17da46b5f2e1a3661c00d63197e97a} 
void {\bfseries set\+Selection} (const std\+::set$<$ \mbox{\hyperlink{classObject}{Object}} \texorpdfstring{$\ast$}{*} $>$ \&)
\item 
\Hypertarget{classUIActions_ab0cb047dedb9349ea6d4430a3b441dc0}\label{classUIActions_ab0cb047dedb9349ea6d4430a3b441dc0} 
void {\bfseries set\+Selection\+Layer} (char)
\item 
\Hypertarget{classUIActions_a77ca56b36bf8c755d7f63e8d193fa3dc}\label{classUIActions_a77ca56b36bf8c755d7f63e8d193fa3dc} 
char {\bfseries get\+Selection\+Layer} () const
\item 
\Hypertarget{classUIActions_a021a6eaa3f9a0b50747891b0e7c4fa90}\label{classUIActions_a021a6eaa3f9a0b50747891b0e7c4fa90} 
void {\bfseries set\+Preview} (bool)
\item 
\Hypertarget{classUIActions_aa987b6ec64e125e08f23feff04f72be2}\label{classUIActions_aa987b6ec64e125e08f23feff04f72be2} 
void {\bfseries set\+Preview\+Track} (const \mbox{\hyperlink{classTrack}{Track}} \&, bool legal)
\item 
\Hypertarget{classUIActions_a48195f41b30d73927c449053acd2788a}\label{classUIActions_a48195f41b30d73927c449053acd2788a} 
bool {\bfseries is\+Previewing} () const
\item 
\Hypertarget{classUIActions_a889f05ecb3df0b487914f6973c43f5fc}\label{classUIActions_a889f05ecb3df0b487914f6973c43f5fc} 
bool {\bfseries is\+Preview\+Ready} () const
\item 
\Hypertarget{classUIActions_a5dcc3ada0ebf5e0fa81e683eaaeb3cbc}\label{classUIActions_a5dcc3ada0ebf5e0fa81e683eaaeb3cbc} 
bool {\bfseries is\+Preview\+Stale} () const
\item 
\Hypertarget{classUIActions_a3228f8a9eecb933bafa7db9c4be1f2f6}\label{classUIActions_a3228f8a9eecb933bafa7db9c4be1f2f6} 
bool {\bfseries is\+Preview\+Track\+Legal} () const
\item 
\Hypertarget{classUIActions_aff0e77aff0048a3db019543b6ebbcbe3}\label{classUIActions_aff0e77aff0048a3db019543b6ebbcbe3} 
const \mbox{\hyperlink{classTrack}{Track}} \& {\bfseries get\+Route\+Preview} () const
\item 
\Hypertarget{classUIActions_aeb448a8d2cd9e5947194a3bd3ed170ce}\label{classUIActions_aeb448a8d2cd9e5947194a3bd3ed170ce} 
void {\bfseries discard\+Preview} ()
\item 
\Hypertarget{classUIActions_a0b92647e313b6f133d050dae46b2b9b8}\label{classUIActions_a0b92647e313b6f133d050dae46b2b9b8} 
void {\bfseries set\+Timeout\+MS} (uint64\+\_\+t)
\item 
\Hypertarget{classUIActions_afcb4a87948467502c76fadf73f5279ba}\label{classUIActions_afcb4a87948467502c76fadf73f5279ba} 
void {\bfseries set\+Active\+Layer} (uint)
\item 
\Hypertarget{classUIActions_a39224f1238dcb449813e677b1b094fb7}\label{classUIActions_a39224f1238dcb449813e677b1b094fb7} 
uint {\bfseries get\+Active\+Layer} () const
\item 
\Hypertarget{classUIActions_a49f68994b4f5d7c3d8e296b9398f35c4}\label{classUIActions_a49f68994b4f5d7c3d8e296b9398f35c4} 
void {\bfseries set\+Via\+Cost} (float)
\item 
\Hypertarget{classUIActions_ad01ae724ea77e42c40144551f09685bf}\label{classUIActions_ad01ae724ea77e42c40144551f09685bf} 
bool {\bfseries autoroute} (uint64\+\_\+t timeout\+MS)
\item 
\Hypertarget{classUIActions_a398bf74cc218aabd065629908b9f9684}\label{classUIActions_a398bf74cc218aabd065629908b9f9684} 
bool {\bfseries connect} ()
\item 
\Hypertarget{classUIActions_ae0f51ac81e2679eea88474bb6bdfb52a}\label{classUIActions_ae0f51ac81e2679eea88474bb6bdfb52a} 
bool {\bfseries route\+To\+Point} (const \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} \&)
\item 
\Hypertarget{classUIActions_a31ee10d3d96739dacb4449360d766418}\label{classUIActions_a31ee10d3d96739dacb4449360d766418} 
bool {\bfseries add\+Segment\+To} (const \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} \&)
\item 
\Hypertarget{classUIActions_a43f17f244a6f8380500fe43890058977}\label{classUIActions_a43f17f244a6f8380500fe43890058977} 
bool {\bfseries route\+To} (const Point\+\_\+2 \&)
\item 
\Hypertarget{classUIActions_a2fdeff24688274765cd1d85a0eae3288}\label{classUIActions_a2fdeff24688274765cd1d85a0eae3288} 
void {\bfseries set\+Route\+Mode} (char mode)
\item 
\Hypertarget{classUIActions_aee181908bae54361780c48b0a79d40eb}\label{classUIActions_aee181908bae54361780c48b0a79d40eb} 
char {\bfseries get\+Route\+Mode} () const
\item 
\Hypertarget{classUIActions_a15eb6f6f74441fafacce9ab15bd77a42}\label{classUIActions_a15eb6f6f74441fafacce9ab15bd77a42} 
char {\bfseries get\+Last\+Route\+Mode} () const
\item 
\Hypertarget{classUIActions_aa4bf8d678eed23227d40c44bff25a235}\label{classUIActions_aa4bf8d678eed23227d40c44bff25a235} 
bool {\bfseries route\+Preview} (const Point\+\_\+2 \&)
\item 
\Hypertarget{classUIActions_a58398a99cb3a5074ba775ad366d19596}\label{classUIActions_a58398a99cb3a5074ba775ad366d19596} 
bool {\bfseries route\+To\+Point\+Preview} (const \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} \&)
\item 
\Hypertarget{classUIActions_a32c6424d2cf27c0aa92db4fe3a5fd94e}\label{classUIActions_a32c6424d2cf27c0aa92db4fe3a5fd94e} 
bool {\bfseries add\+Segment\+To\+Preview} (const \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} \&)
\item 
\Hypertarget{classUIActions_a3faf3a99bcab391a62742f7f9a4985fc}\label{classUIActions_a3faf3a99bcab391a62742f7f9a4985fc} 
bool {\bfseries unroute\+Connection} ()
\item 
\Hypertarget{classUIActions_a8ae81501eee4b98bf467a7f3953457c3}\label{classUIActions_a8ae81501eee4b98bf467a7f3953457c3} 
bool {\bfseries unroute\+Segment} ()
\item 
\Hypertarget{classUIActions_a30f03bcd4d93bef135c37e8c368ffdea}\label{classUIActions_a30f03bcd4d93bef135c37e8c368ffdea} 
bool {\bfseries unroute\+Selection} ()
\item 
\Hypertarget{classUIActions_a6b48002570c209f4d45ed2b82ab53cf8}\label{classUIActions_a6b48002570c209f4d45ed2b82ab53cf8} 
void {\bfseries update\+Indicators} ()
\item 
\Hypertarget{classUIActions_a89559ec1c6a60d98c30625ec7d19f514}\label{classUIActions_a89559ec1c6a60d98c30625ec7d19f514} 
void {\bfseries interrupt} ()
\item 
\Hypertarget{classUIActions_a85d1d5a45edac97ddea8866d23822e93}\label{classUIActions_a85d1d5a45edac97ddea8866d23822e93} 
void {\bfseries set\+Lock\+Stepping} (uint granularity)
\item 
\Hypertarget{classUIActions_aeefa214cdcc55f804fd77c107948d7b7}\label{classUIActions_aeefa214cdcc55f804fd77c107948d7b7} 
void {\bfseries next\+Step} ()
\item 
\Hypertarget{classUIActions_af1e8cecf4248c27a6a43c758daa15138}\label{classUIActions_af1e8cecf4248c27a6a43c758daa15138} 
void {\bfseries set\+Selection\+Type} (char c)
\item 
\Hypertarget{classUIActions_a530970526ef4be4aaa6a8e67b73f570a}\label{classUIActions_a530970526ef4be4aaa6a8e67b73f570a} 
char {\bfseries get\+Selection\+Type} () const
\end{DoxyCompactItemize}
\doxysubsubsection*{Static Public Attributes}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classUIActions_acdb341bb90cb23d5462791cc42407166}\label{classUIActions_acdb341bb90cb23d5462791cc42407166} 
static constexpr const Real {\bfseries Min\+Segment\+Len\+Sq} = 1.\+0
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
WARNING\+: The non-\/async \doxylink{classUIActions}{UIActions} functions are expected to be non-\/concurrent. 

This class implements actions on the board that can be triggered by the user and contains related state. The \+\_\+ functions are run in threads via std\+::async. FIXME\+: In principle, Python code could delete objects that we are referencing without notifying us. Just don\textquotesingle{}t mix UI actions and scripted ones like that! Otherwise we have to add more locking, shared\+\_\+ptr, and discard flags. Typically you won\textquotesingle{}t want to delete components and pins on the fly anyway. 

The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
/home/chr/devel/\+Ph\+D/\+Environment/pub/\+PCBEnv/pcbenv/cxx/\+UI/Actions.\+hpp\end{DoxyCompactItemize}
