KiCad PCB EDA Suite
block_commande.h File Reference

This file is part of the common library. More...

#include <base_struct.h>
#include <class_undoredo_container.h>
#include <gr_basic.h>
#include <class_eda_rect.h>

Go to the source code of this file.

Classes

class  BLOCK_SELECTOR
 

Enumerations

enum  BLOCK_STATE_T {
  STATE_NO_BLOCK, STATE_BLOCK_INIT, STATE_BLOCK_END, STATE_BLOCK_MOVE,
  STATE_BLOCK_STOP
}
 
enum  BLOCK_COMMAND_T {
  BLOCK_IDLE, BLOCK_MOVE, BLOCK_DUPLICATE, BLOCK_DUPLICATE_AND_INCREMENT,
  BLOCK_COPY, BLOCK_DELETE, BLOCK_PASTE, BLOCK_CUT,
  BLOCK_DRAG, BLOCK_DRAG_ITEM, BLOCK_ROTATE, BLOCK_FLIP,
  BLOCK_ZOOM, BLOCK_ABORT, BLOCK_PRESELECT_MOVE, BLOCK_MOVE_EXACT,
  BLOCK_SELECT_ITEMS_ONLY, BLOCK_MIRROR_X, BLOCK_MIRROR_Y
}
 

Functions

void AbortBlockCurrentCommand (EDA_DRAW_PANEL *aPanel, wxDC *aDC)
 Function AbortBlockCurrentCommand cancels the current block operation. More...
 
void DrawAndSizingBlockOutlines (EDA_DRAW_PANEL *aPanel, wxDC *aDC, const wxPoint &aPosition, bool aErase)
 Function DrawAndSizingBlockOutlines redraws the outlines of the block which shows the search area for block commands. More...
 

Detailed Description

This file is part of the common library.

See also
common.h

Definition in file block_commande.h.

Enumeration Type Documentation

Enumerator
BLOCK_IDLE 
BLOCK_MOVE 
BLOCK_DUPLICATE 
BLOCK_DUPLICATE_AND_INCREMENT 
BLOCK_COPY 
BLOCK_DELETE 
BLOCK_PASTE 
BLOCK_CUT 
BLOCK_DRAG 
BLOCK_DRAG_ITEM 
BLOCK_ROTATE 
BLOCK_FLIP 
BLOCK_ZOOM 
BLOCK_ABORT 
BLOCK_PRESELECT_MOVE 
BLOCK_MOVE_EXACT 
BLOCK_SELECT_ITEMS_ONLY 
BLOCK_MIRROR_X 
BLOCK_MIRROR_Y 

Definition at line 51 of file block_commande.h.

Enumerator
STATE_NO_BLOCK 
STATE_BLOCK_INIT 
STATE_BLOCK_END 
STATE_BLOCK_MOVE 
STATE_BLOCK_STOP 

Definition at line 41 of file block_commande.h.

Function Documentation

void AbortBlockCurrentCommand ( EDA_DRAW_PANEL aPanel,
wxDC *  aDC 
)

Function AbortBlockCurrentCommand cancels the current block operation.

Definition at line 211 of file block_commande.cpp.

References BLOCK_ABORT, BLOCK_IDLE, EDA_DRAW_PANEL::CallMouseCapture(), BLOCK_SELECTOR::ClearItemsList(), EDA_DRAW_FRAME::DisplayToolMsg(), EDA_DRAW_PANEL::GetCurrentCursor(), EDA_DRAW_PANEL::GetParent(), EDA_DRAW_PANEL::GetScreen(), EDA_DRAW_FRAME::HandleBlockEnd(), EDA_DRAW_PANEL::IsMouseCaptured(), BASE_SCREEN::m_BlockLocate, BLOCK_SELECTOR::SetCommand(), BASE_SCREEN::SetCurItem(), EDA_DRAW_PANEL::SetMouseCapture(), BLOCK_SELECTOR::SetState(), and STATE_NO_BLOCK.

Referenced by LIB_EDIT_FRAME::HandleBlockEnd(), SCH_EDIT_FRAME::HandleBlockEnd(), and BLOCK_SELECTOR::InitData().

212 {
213  BASE_SCREEN* screen = aPanel->GetScreen();
214 
215  if( aPanel->IsMouseCaptured() ) // Erase current drawing on screen
216  {
217  // Clear block outline.
218  aPanel->CallMouseCapture( aDC, wxDefaultPosition, false );
219  aPanel->SetMouseCapture( NULL, NULL );
220  screen->SetCurItem( NULL );
221 
222  // Delete the picked wrapper if this is a picked list.
223  screen->m_BlockLocate.ClearItemsList();
224  }
225 
228  aPanel->GetParent()->HandleBlockEnd( aDC );
229 
231  aPanel->GetParent()->DisplayToolMsg( wxEmptyString );
232  aPanel->SetCursor( (wxStockCursor) aPanel->GetCurrentCursor() );
233 }
void SetCurItem(EDA_ITEM *aItem)
Function SetCurItem sets the currently selected object, m_CurrentItem.
BLOCK_SELECTOR m_BlockLocate
Block description for block commands.
int GetCurrentCursor() const
Function GetCurrentCursor.
void ClearItemsList()
Function ClearItemsList clear only the list of EDA_ITEM pointers, it does NOT delete the EDA_ITEM obj...
void SetState(BLOCK_STATE_T aState)
bool IsMouseCaptured() const
Class BASE_SCREEN handles how to draw a screen (a board, a schematic ...)
void CallMouseCapture(wxDC *aDC, const wxPoint &aPosition, bool aErase)
Function CallMouseCapture calls the mouse capture callback.
EDA_DRAW_FRAME * GetParent() const
Definition: draw_panel.cpp:174
virtual bool HandleBlockEnd(wxDC *DC)
Function HandleBlockEnd( ) Handle the "end" of a block command, i.e.
Definition: draw_frame.cpp:663
void DisplayToolMsg(const wxString &msg)
Definition: draw_frame.cpp:497
BASE_SCREEN * GetScreen()
Definition: draw_panel.cpp:187
void SetMouseCapture(MOUSE_CAPTURE_CALLBACK aMouseCaptureCallback, END_MOUSE_CAPTURE_CALLBACK aEndMouseCaptureCallback)
Function SetMouseCapture sets the mouse capture and end mouse capture callbacks to aMouseCaptureCallb...
void SetCommand(BLOCK_COMMAND_T aCommand)
void DrawAndSizingBlockOutlines ( EDA_DRAW_PANEL aPanel,
wxDC *  aDC,
const wxPoint aPosition,
bool  aErase 
)

Function DrawAndSizingBlockOutlines redraws the outlines of the block which shows the search area for block commands.

The first point of the rectangle showing the area is initialized by InitBlockLocateDatas(). The other point of the rectangle is the mouse cursor position.

Definition at line 184 of file block_commande.cpp.

References BLOCK_SELECTOR::Draw(), g_XorMode, BLOCK_SELECTOR::GetColor(), EDA_DRAW_FRAME::GetCrossHairPosition(), EDA_RECT::GetHeight(), EDA_DRAW_PANEL::GetParent(), EDA_DRAW_PANEL::GetScreen(), BLOCK_SELECTOR::GetState(), EDA_RECT::GetWidth(), BASE_SCREEN::m_BlockLocate, EDA_RECT::SetEnd(), BLOCK_SELECTOR::SetLastCursorPosition(), BLOCK_SELECTOR::SetMoveVector(), BLOCK_SELECTOR::SetState(), STATE_BLOCK_END, and STATE_BLOCK_INIT.

Referenced by LIB_EDIT_FRAME::HandleBlockEnd(), PCB_EDIT_FRAME::HandleBlockEnd(), SCH_EDIT_FRAME::HandleBlockEnd(), and BLOCK_SELECTOR::InitData().

186 {
188 
189  block = &aPanel->GetScreen()->m_BlockLocate;
190 
191  block->SetMoveVector( wxPoint( 0, 0 ) );
192 
193  if( aErase && aDC )
194  block->Draw( aPanel, aDC, wxPoint( 0, 0 ), g_XorMode, block->GetColor() );
195 
197  block->SetEnd( aPanel->GetParent()->GetCrossHairPosition() );
198 
199  if( aDC )
200  block->Draw( aPanel, aDC, wxPoint( 0, 0 ), g_XorMode, block->GetColor() );
201 
202  if( block->GetState() == STATE_BLOCK_INIT )
203  {
204  if( block->GetWidth() || block->GetHeight() )
205  // 2nd point exists: the rectangle is not surface anywhere
206  block->SetState( STATE_BLOCK_END );
207  }
208 }
GR_DRAWMODE g_XorMode
Definition: gr_basic.cpp:51
BLOCK_SELECTOR m_BlockLocate
Block description for block commands.
void Draw(EDA_DRAW_PANEL *aPanel, wxDC *aDC, const wxPoint &aOffset, GR_DRAWMODE aDrawMode, COLOR4D aColor)
void SetMoveVector(const wxPoint &aMoveVector)
int GetHeight() const
void SetState(BLOCK_STATE_T aState)
COLOR4D GetColor() const
void SetEnd(int x, int y)
EDA_DRAW_FRAME * GetParent() const
Definition: draw_panel.cpp:174
Definition: solve.cpp:178
BLOCK_STATE_T GetState() const
BASE_SCREEN * GetScreen()
Definition: draw_panel.cpp:187
int GetWidth() const
void SetLastCursorPosition(const wxPoint &aPosition)
Function SetLastCursorPosition sets the last cursor position to aPosition.
wxPoint GetCrossHairPosition(bool aInvertY=false) const
Function GetCrossHairPosition return the current cross hair position in logical (drawing) coordinates...