Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kicad-source-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
kicad-source-mirror
Commits
9b77f2a4
Commit
9b77f2a4
authored
Nov 13, 2010
by
jean-pierre charras
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Formatting, code cleaning and fix erroneous or inconsistent comments in block functions
parent
bc9d5217
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
450 additions
and
442 deletions
+450
-442
drawframe.cpp
common/drawframe.cpp
+2
-2
block.cpp
eeschema/block.cpp
+36
-34
block_libedit.cpp
eeschema/block_libedit.cpp
+6
-6
libeditframe.h
eeschema/libeditframe.h
+78
-76
block.cpp
gerbview/block.cpp
+25
-21
wxGerberFrame.h
gerbview/wxGerberFrame.h
+2
-2
wxEeschemaStruct.h
include/wxEeschemaStruct.h
+31
-3
wxPcbStruct.h
include/wxPcbStruct.h
+30
-3
wxstruct.h
include/wxstruct.h
+32
-5
block.cpp
pcbnew/block.cpp
+158
-245
block_module_editor.cpp
pcbnew/block_module_editor.cpp
+48
-43
module_editor_frame.h
pcbnew/module_editor_frame.h
+2
-2
No files found.
common/drawframe.cpp
View file @
9b77f2a4
...
...
@@ -462,9 +462,9 @@ void WinEDA_DrawFrame::HandleBlockPlace( wxDC* DC )
}
int
WinEDA_DrawFrame
::
HandleBlockEnd
(
wxDC
*
DC
)
bool
WinEDA_DrawFrame
::
HandleBlockEnd
(
wxDC
*
DC
)
{
return
0
;
return
false
;
}
...
...
eeschema/block.cpp
View file @
9b77f2a4
...
...
@@ -101,19 +101,19 @@ void WinEDA_SchematicFrame::InitBlockPasteInfos()
*/
void
WinEDA_SchematicFrame
::
HandleBlockPlace
(
wxDC
*
DC
)
{
bool
err
=
FALSE
;
bool
err
=
false
;
BLOCK_SELECTOR
*
block
=
&
GetScreen
()
->
m_BlockLocate
;
if
(
DrawPanel
->
ManageCurseur
==
NULL
)
{
err
=
TRUE
;
err
=
true
;
DisplayError
(
this
,
wxT
(
"HandleBlockPLace() : ManageCurseur = NULL"
)
);
}
if
(
block
->
GetCount
()
==
0
)
{
wxString
msg
;
err
=
TRUE
;
err
=
true
;
msg
.
Printf
(
wxT
(
"HandleBlockPLace() error : no items to place (cmd %d, state %d)"
),
block
->
m_Command
,
block
->
m_State
);
DisplayError
(
this
,
msg
);
...
...
@@ -124,7 +124,7 @@ void WinEDA_SchematicFrame::HandleBlockPlace( wxDC* DC )
switch
(
block
->
m_Command
)
{
case
BLOCK_IDLE
:
err
=
TRUE
;
err
=
true
;
break
;
case
BLOCK_ROTATE
:
...
...
@@ -133,7 +133,7 @@ void WinEDA_SchematicFrame::HandleBlockPlace( wxDC* DC )
case
BLOCK_DRAG
:
/* Drag */
case
BLOCK_MOVE
:
/* Move */
if
(
DrawPanel
->
ManageCurseur
)
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
SaveCopyInUndoList
(
block
->
m_ItemsSelection
,
UR_MOVED
,
block
->
m_MoveVector
);
MoveItemsInList
(
block
->
m_ItemsSelection
,
block
->
m_MoveVector
);
...
...
@@ -143,7 +143,7 @@ void WinEDA_SchematicFrame::HandleBlockPlace( wxDC* DC )
case
BLOCK_COPY
:
/* Copy */
case
BLOCK_PRESELECT_MOVE
:
/* Move with preselection list*/
if
(
DrawPanel
->
ManageCurseur
)
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
DuplicateItemsInList
(
GetScreen
(),
block
->
m_ItemsSelection
,
block
->
m_MoveVector
);
...
...
@@ -155,7 +155,7 @@ void WinEDA_SchematicFrame::HandleBlockPlace( wxDC* DC )
case
BLOCK_PASTE
:
if
(
DrawPanel
->
ManageCurseur
)
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
PasteListOfItems
(
DC
);
block
->
ClearItemsList
();
break
;
...
...
@@ -194,16 +194,20 @@ void WinEDA_SchematicFrame::HandleBlockPlace( wxDC* DC )
}
/* Manage end block command
* Returns:
* 0 if no features selected
* 1 otherwise
* -1 If control ended and components selection (block delete, block save)
/**
* Function HandleBlockEnd( )
* Handle the "end" of a block command,
* i.e. is called at the end of the definition of the area of a block.
* depending on the current block command, this command is executed
* or parameters are initialized to prepare a call to HandleBlockPlace
* in GetScreen()->m_BlockLocate
* @return false if no item selected, or command finished,
* true if some items found and HandleBlockPlace must be called later
*/
int
WinEDA_SchematicFrame
::
HandleBlockEnd
(
wxDC
*
DC
)
bool
WinEDA_SchematicFrame
::
HandleBlockEnd
(
wxDC
*
DC
)
{
int
ii
=
0
;
bool
zoom_command
=
FALSE
;
bool
nextcmd
=
false
;
bool
zoom_command
=
false
;
BLOCK_SELECTOR
*
block
=
&
GetScreen
()
->
m_BlockLocate
;
if
(
block
->
GetCount
()
)
...
...
@@ -241,16 +245,16 @@ int WinEDA_SchematicFrame::HandleBlockEnd( wxDC* DC )
case
BLOCK_PRESELECT_MOVE
:
/* Move with preselection list*/
if
(
block
->
GetCount
()
)
{
ii
=
1
;
nextcmd
=
true
;
CollectStructsToDrag
(
GetScreen
()
);
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
DrawPanel
->
ManageCurseur
=
DrawMovingBlockOutlines
;
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
block
->
m_State
=
STATE_BLOCK_MOVE
;
}
else
{
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
DrawPanel
->
ManageCurseur
=
NULL
;
DrawPanel
->
ForceCloseManageCurseur
=
NULL
;
}
...
...
@@ -258,10 +262,9 @@ int WinEDA_SchematicFrame::HandleBlockEnd( wxDC* DC )
case
BLOCK_DELETE
:
/* Delete */
PickItemsInBlock
(
GetScreen
()
->
m_BlockLocate
,
GetScreen
()
);
DrawAndSizingBlockOutlines
(
DrawPanel
,
DC
,
FALSE
);
DrawAndSizingBlockOutlines
(
DrawPanel
,
DC
,
false
);
if
(
block
->
GetCount
()
)
{
ii
=
-
1
;
DeleteItemsInList
(
DrawPanel
,
block
->
m_ItemsSelection
);
OnModify
();
}
...
...
@@ -272,14 +275,13 @@ int WinEDA_SchematicFrame::HandleBlockEnd( wxDC* DC )
case
BLOCK_SAVE
:
/* Save */
PickItemsInBlock
(
GetScreen
()
->
m_BlockLocate
,
GetScreen
()
);
DrawAndSizingBlockOutlines
(
DrawPanel
,
DC
,
FALSE
);
DrawAndSizingBlockOutlines
(
DrawPanel
,
DC
,
false
);
if
(
block
->
GetCount
()
)
{
wxPoint
move_vector
=
-
GetScreen
()
->
m_BlockLocate
.
m_BlockLastCursorPosition
;
SaveStructListForPaste
(
block
->
m_ItemsSelection
);
MoveItemsInList
(
g_BlockSaveDataList
.
m_ItemsSelection
,
move_vector
);
ii
=
-
1
;
}
}
block
->
ClearItemsList
();
break
;
...
...
@@ -292,7 +294,7 @@ int WinEDA_SchematicFrame::HandleBlockEnd( wxDC* DC )
case
BLOCK_ZOOM
:
/* Window Zoom */
zoom_command
=
TRUE
;
zoom_command
=
true
;
break
;
case
BLOCK_SELECT_ITEMS_ONLY
:
/* Not used */
...
...
@@ -305,7 +307,7 @@ int WinEDA_SchematicFrame::HandleBlockEnd( wxDC* DC )
GetScreen
()
->
ClearDrawingState
();
}
if
(
ii
<=
0
)
if
(
!
nextcmd
)
{
block
->
m_Flags
=
0
;
block
->
m_State
=
STATE_NO_BLOCK
;
...
...
@@ -319,7 +321,7 @@ int WinEDA_SchematicFrame::HandleBlockEnd( wxDC* DC )
if
(
zoom_command
)
Window_Zoom
(
GetScreen
()
->
m_BlockLocate
);
return
ii
;
return
nextcmd
;
}
...
...
@@ -359,7 +361,7 @@ void WinEDA_SchematicFrame::HandleBlockEndByPopUp( int Command, wxDC* DC )
case
BLOCK_DRAG
:
/* move to Drag */
if
(
DrawPanel
->
ManageCurseur
)
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
// Clear list of items to move, and rebuild it with items to drag:
block
->
ClearItemsList
();
...
...
@@ -371,14 +373,14 @@ void WinEDA_SchematicFrame::HandleBlockEndByPopUp( int Command, wxDC* DC )
blockCmdFinished
=
false
;
CollectStructsToDrag
(
(
SCH_SCREEN
*
)
GetScreen
()
);
if
(
DrawPanel
->
ManageCurseur
)
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
block
->
m_State
=
STATE_BLOCK_MOVE
;
}
break
;
case
BLOCK_DELETE
:
/* move to Delete */
if
(
DrawPanel
->
ManageCurseur
)
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
if
(
block
->
GetCount
()
)
{
DeleteItemsInList
(
DrawPanel
,
block
->
m_ItemsSelection
);
...
...
@@ -390,7 +392,7 @@ void WinEDA_SchematicFrame::HandleBlockEndByPopUp( int Command, wxDC* DC )
case
BLOCK_SAVE
:
/* Save list in paste buffer*/
if
(
DrawPanel
->
ManageCurseur
)
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
if
(
block
->
GetCount
()
)
{
wxPoint
move_vector
=
-
GetScreen
()
->
m_BlockLocate
.
m_BlockLastCursorPosition
;
...
...
@@ -408,7 +410,7 @@ void WinEDA_SchematicFrame::HandleBlockEndByPopUp( int Command, wxDC* DC )
case
BLOCK_ROTATE
:
if
(
DrawPanel
->
ManageCurseur
)
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
if
(
block
->
GetCount
()
)
{
// blockCmdFinished = true;
...
...
@@ -427,7 +429,7 @@ void WinEDA_SchematicFrame::HandleBlockEndByPopUp( int Command, wxDC* DC )
case
BLOCK_MIRROR_X
:
if
(
DrawPanel
->
ManageCurseur
)
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
if
(
block
->
GetCount
()
)
{
// blockCmdFinished = true;
...
...
@@ -446,7 +448,7 @@ void WinEDA_SchematicFrame::HandleBlockEndByPopUp( int Command, wxDC* DC )
case
BLOCK_MIRROR_Y
:
if
(
DrawPanel
->
ManageCurseur
)
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
if
(
block
->
GetCount
()
)
{
// blockCmdFinished = true;
...
...
eeschema/block_libedit.cpp
View file @
9b77f2a4
...
...
@@ -69,10 +69,10 @@ int WinEDA_LibeditFrame::ReturnBlockCommand( int key )
* 1 if HandleBlockPlace must follow (items found, and a block place
* command must follow)
*/
int
WinEDA_LibeditFrame
::
HandleBlockEnd
(
wxDC
*
DC
)
bool
WinEDA_LibeditFrame
::
HandleBlockEnd
(
wxDC
*
DC
)
{
int
ItemCount
=
0
;
int
MustDoPlace
=
0
;
int
nextCmd
=
false
;
wxPoint
pt
;
if
(
GetScreen
()
->
m_BlockLocate
.
GetCount
()
)
...
...
@@ -104,7 +104,7 @@ int WinEDA_LibeditFrame::HandleBlockEnd( wxDC* DC )
g_EditPinByPinIsOn
);
if
(
ItemCount
)
{
MustDoPlace
=
1
;
nextCmd
=
true
;
if
(
DrawPanel
->
ManageCurseur
!=
NULL
)
{
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
...
...
@@ -117,7 +117,7 @@ int WinEDA_LibeditFrame::HandleBlockEnd( wxDC* DC )
break
;
case
BLOCK_PRESELECT_MOVE
:
/* Move with preselection list*/
MustDoPlace
=
1
;
nextCmd
=
true
;
DrawPanel
->
ManageCurseur
=
DrawMovingBlockOutlines
;
GetScreen
()
->
m_BlockLocate
.
m_State
=
STATE_BLOCK_MOVE
;
break
;
...
...
@@ -165,7 +165,7 @@ int WinEDA_LibeditFrame::HandleBlockEnd( wxDC* DC )
break
;
}
if
(
MustDoPlace
<=
0
)
if
(
!
nextCmd
)
{
if
(
GetScreen
()
->
m_BlockLocate
.
m_Command
!=
BLOCK_SELECT_ITEMS_ONLY
)
if
(
m_component
)
...
...
@@ -182,7 +182,7 @@ int WinEDA_LibeditFrame::HandleBlockEnd( wxDC* DC )
}
return
MustDoPlace
;
return
nextCmd
;
}
...
...
eeschema/libeditframe.h
View file @
9b77f2a4
...
...
@@ -25,10 +25,10 @@ class Dialog_BodyGraphicText_Properties;
*/
class
WinEDA_LibeditFrame
:
public
WinEDA_DrawFrame
{
LIB_COMPONENT
*
m_tempCopyComponent
;
///< Temporary copy of current component during edit.
wxString
m_oldRootName
;
///< The actual pointer of the component loaded from
///< a library. Do not do anything with this pointer.
///< It is to be used for reference purposes only.
LIB_COMPONENT
*
m_tempCopyComponent
;
///< Temporary copy of current component during edit.
wxString
m_oldRootName
;
///< The actual pointer of the component loaded from
///< a library. Do not do anything with this pointer.
///< It is to be used for reference purposes only.
public
:
WinEDAChoiceBox
*
m_SelpartBox
;
// a Box to select a part to edit (if any)
...
...
@@ -42,7 +42,7 @@ public:
~
WinEDA_LibeditFrame
();
void
ReCreateMenuBar
();
void
ReCreateMenuBar
();
/**
* Function EnsureActiveLibExists
...
...
@@ -55,59 +55,59 @@ public:
* Function SetLanguage
* is called on a language menu selection
*/
void
SetLanguage
(
wxCommandEvent
&
event
);
void
InstallConfigFrame
(
wxCommandEvent
&
event
);
void
InstallDimensionsDialog
(
wxCommandEvent
&
event
);
void
Process_Config
(
wxCommandEvent
&
event
);
void
OnPlotCurrentComponent
(
wxCommandEvent
&
event
);
void
Process_Special_Functions
(
wxCommandEvent
&
event
);
void
OnImportPart
(
wxCommandEvent
&
event
);
void
OnExportPart
(
wxCommandEvent
&
event
);
void
OnSelectAlias
(
wxCommandEvent
&
event
);
void
OnSelectPart
(
wxCommandEvent
&
event
);
void
DeleteOnePart
(
wxCommandEvent
&
event
);
void
CreateNewLibraryPart
(
wxCommandEvent
&
event
);
void
OnEditComponentProperties
(
wxCommandEvent
&
event
);
void
InstallFieldsEditorDialog
(
wxCommandEvent
&
event
);
void
LoadOneLibraryPart
(
wxCommandEvent
&
event
);
void
OnViewEntryDoc
(
wxCommandEvent
&
event
);
void
OnCheckComponent
(
wxCommandEvent
&
event
);
void
OnSelectBodyStyle
(
wxCommandEvent
&
event
);
void
OnEditPin
(
wxCommandEvent
&
event
);
void
OnRotatePin
(
wxCommandEvent
&
event
);
void
OnUpdateEditingPart
(
wxUpdateUIEvent
&
event
);
void
OnUpdateNotEditingPart
(
wxUpdateUIEvent
&
event
);
void
OnUpdateUndo
(
wxUpdateUIEvent
&
event
);
void
OnUpdateRedo
(
wxUpdateUIEvent
&
event
);
void
OnUpdateSaveCurrentLib
(
wxUpdateUIEvent
&
event
);
void
OnUpdateViewDoc
(
wxUpdateUIEvent
&
event
);
void
OnUpdatePinByPin
(
wxUpdateUIEvent
&
event
);
void
OnUpdatePartNumber
(
wxUpdateUIEvent
&
event
);
void
OnUpdateDeMorganNormal
(
wxUpdateUIEvent
&
event
);
void
OnUpdateDeMorganConvert
(
wxUpdateUIEvent
&
event
);
void
OnUpdateSelectAlias
(
wxUpdateUIEvent
&
event
);
void
UpdateAliasSelectList
();
void
UpdatePartSelectList
();
void
DisplayLibInfos
();
void
RedrawActiveWindow
(
wxDC
*
DC
,
bool
EraseBg
);
void
OnCloseWindow
(
wxCloseEvent
&
Event
);
void
ReCreateHToolbar
();
void
ReCreateVToolbar
();
void
OnLeftClick
(
wxDC
*
DC
,
const
wxPoint
&
MousePos
);
bool
OnRightClick
(
const
wxPoint
&
MousePos
,
wxMenu
*
PopMenu
);
int
BestZoom
();
// Returns the best zoom
void
OnLeftDClick
(
wxDC
*
DC
,
const
wxPoint
&
MousePos
);
void
SetLanguage
(
wxCommandEvent
&
event
);
void
InstallConfigFrame
(
wxCommandEvent
&
event
);
void
InstallDimensionsDialog
(
wxCommandEvent
&
event
);
void
Process_Config
(
wxCommandEvent
&
event
);
void
OnPlotCurrentComponent
(
wxCommandEvent
&
event
);
void
Process_Special_Functions
(
wxCommandEvent
&
event
);
void
OnImportPart
(
wxCommandEvent
&
event
);
void
OnExportPart
(
wxCommandEvent
&
event
);
void
OnSelectAlias
(
wxCommandEvent
&
event
);
void
OnSelectPart
(
wxCommandEvent
&
event
);
void
DeleteOnePart
(
wxCommandEvent
&
event
);
void
CreateNewLibraryPart
(
wxCommandEvent
&
event
);
void
OnEditComponentProperties
(
wxCommandEvent
&
event
);
void
InstallFieldsEditorDialog
(
wxCommandEvent
&
event
);
void
LoadOneLibraryPart
(
wxCommandEvent
&
event
);
void
OnViewEntryDoc
(
wxCommandEvent
&
event
);
void
OnCheckComponent
(
wxCommandEvent
&
event
);
void
OnSelectBodyStyle
(
wxCommandEvent
&
event
);
void
OnEditPin
(
wxCommandEvent
&
event
);
void
OnRotatePin
(
wxCommandEvent
&
event
);
void
OnUpdateEditingPart
(
wxUpdateUIEvent
&
event
);
void
OnUpdateNotEditingPart
(
wxUpdateUIEvent
&
event
);
void
OnUpdateUndo
(
wxUpdateUIEvent
&
event
);
void
OnUpdateRedo
(
wxUpdateUIEvent
&
event
);
void
OnUpdateSaveCurrentLib
(
wxUpdateUIEvent
&
event
);
void
OnUpdateViewDoc
(
wxUpdateUIEvent
&
event
);
void
OnUpdatePinByPin
(
wxUpdateUIEvent
&
event
);
void
OnUpdatePartNumber
(
wxUpdateUIEvent
&
event
);
void
OnUpdateDeMorganNormal
(
wxUpdateUIEvent
&
event
);
void
OnUpdateDeMorganConvert
(
wxUpdateUIEvent
&
event
);
void
OnUpdateSelectAlias
(
wxUpdateUIEvent
&
event
);
void
UpdateAliasSelectList
();
void
UpdatePartSelectList
();
void
DisplayLibInfos
();
void
RedrawActiveWindow
(
wxDC
*
DC
,
bool
EraseBg
);
void
OnCloseWindow
(
wxCloseEvent
&
Event
);
void
ReCreateHToolbar
();
void
ReCreateVToolbar
();
void
OnLeftClick
(
wxDC
*
DC
,
const
wxPoint
&
MousePos
);
bool
OnRightClick
(
const
wxPoint
&
MousePos
,
wxMenu
*
PopMenu
);
int
BestZoom
();
// Returns the best zoom
void
OnLeftDClick
(
wxDC
*
DC
,
const
wxPoint
&
MousePos
);
SCH_SCREEN
*
GetScreen
()
{
return
(
SCH_SCREEN
*
)
GetBaseScreen
();
}
void
OnHotKey
(
wxDC
*
DC
,
int
hotkey
,
EDA_BaseStruct
*
DrawStruct
);
void
OnHotKey
(
wxDC
*
DC
,
int
hotkey
,
EDA_BaseStruct
*
DrawStruct
);
void
GeneralControle
(
wxDC
*
DC
,
wxPoint
MousePositionInPixels
);
void
GeneralControle
(
wxDC
*
DC
,
wxPoint
MousePositionInPixels
);
void
LoadSettings
();
void
SaveSettings
();
void
LoadSettings
();
void
SaveSettings
();
/**
* Function CloseWindow
...
...
@@ -122,16 +122,18 @@ public:
Close
(
false
);
}
/**
* Function OnModify
* Must be called after a schematic change
* in order to set the "modify" flag of the current screen
*/
void
OnModify
(
)
void
OnModify
()
{
GetScreen
()
->
SetModify
();
}
LIB_COMPONENT
*
GetComponent
(
void
)
{
return
m_component
;
}
CMP_LIBRARY
*
GetLibrary
(
void
)
{
return
m_library
;
}
...
...
@@ -166,7 +168,7 @@ public:
LIB_DRAW_ITEM
*
GetDrawItem
(
void
)
{
return
m_drawItem
;
}
void
SetDrawItem
(
LIB_DRAW_ITEM
*
drawItem
);
void
SetDrawItem
(
LIB_DRAW_ITEM
*
drawItem
);
bool
GetShowDeMorgan
(
void
)
{
return
m_showDeMorgan
;
}
...
...
@@ -179,14 +181,14 @@ public:
* create a temporary copy of the current edited component
* Used to prepare an Undo ant/or abort command before editing the component
*/
void
TempCopyComponent
();
void
TempCopyComponent
();
/**
* Function RestoreComponent
* Restore the current edited component from its temporary copy.
* Used to abort a command
*/
void
RestoreComponent
();
void
RestoreComponent
();
/**
* Function GetTempCopyComponent
...
...
@@ -210,7 +212,7 @@ private:
* The library list can be changed by the schematic editor after reloading a new schematic
* and the current m_library can point a non existent lib.
*/
virtual
void
OnActivate
(
wxActivateEvent
&
event
);
virtual
void
OnActivate
(
wxActivateEvent
&
event
);
// General:
void
SaveOnePartInMemory
();
...
...
@@ -241,7 +243,7 @@ private:
LIB_DRAW_ITEM
*
CreateGraphicItem
(
LIB_COMPONENT
*
LibEntry
,
wxDC
*
DC
);
void
GraphicItemBeginDraw
(
wxDC
*
DC
);
void
StartMoveDrawSymbol
(
wxDC
*
DC
);
void
StartModifyDrawSymbol
(
wxDC
*
DC
);
//<! Modify the item, adjust size etc.
void
StartModifyDrawSymbol
(
wxDC
*
DC
);
//<! Modify the item, adjust size etc.
void
EndDrawGraphicItem
(
wxDC
*
DC
);
void
LoadOneSymbol
();
void
SaveOneSymbol
();
...
...
@@ -252,9 +254,9 @@ private:
public
:
/* Block commands: */
int
ReturnBlockCommand
(
int
key
);
v
oid
HandleBlockPlace
(
wxDC
*
DC
);
int
HandleBlockEnd
(
wxDC
*
DC
);
virtual
int
ReturnBlockCommand
(
int
key
);
v
irtual
void
HandleBlockPlace
(
wxDC
*
DC
);
virtual
bool
HandleBlockEnd
(
wxDC
*
DC
);
void
PlacePin
(
wxDC
*
DC
);
void
GlobalSetPins
(
wxDC
*
DC
,
LIB_PIN
*
MasterPin
,
int
id
);
...
...
@@ -263,12 +265,12 @@ public:
void
RepeatPinItem
(
wxDC
*
DC
,
LIB_PIN
*
Pin
);
protected
:
wxString
m_ConfigPath
;
wxString
m_LastLibImportPath
;
wxString
m_LastLibExportPath
;
wxString
m_ConfigPath
;
wxString
m_LastLibImportPath
;
wxString
m_LastLibExportPath
;
/** Convert of the item currently being drawn. */
bool
m_drawSpecificConvert
;
bool
m_drawSpecificConvert
;
/**
* Specify which component parts the current draw item applies to.
...
...
@@ -298,22 +300,22 @@ protected:
// Show the normal shape ( m_convert <= 1 ) or the converted shape
// ( m_convert > 1 )
static
int
m_convert
;
static
int
m_convert
;
// true to force DeMorgan/normal tools selection enabled.
// They are enabled when the loaded component has
// Graphic items for converted shape
// But under some circumstances (New component created)
// these tools must left enable
static
bool
m_showDeMorgan
;
static
bool
m_showDeMorgan
;
/// The current text size setting.
static
int
m_textSize
;
static
int
m_textSize
;
/// Current text orientation setting.
static
int
m_textOrientation
;
static
int
m_textOrientation
;
static
wxSize
m_clientSize
;
static
wxSize
m_clientSize
;
friend
class
Dialog_BodyGraphicText_Properties
;
...
...
@@ -324,7 +326,7 @@ protected:
* @param aFileName = the full filename
* @param aFmt_jpeg = true to use JPEG ffile format, false to use PNG file format
*/
void
CreatePNGorJPEGFile
(
const
wxString
&
aFileName
,
bool
aFmt_jpeg
);
void
CreatePNGorJPEGFile
(
const
wxString
&
aFileName
,
bool
aFmt_jpeg
);
/** Virtual function PrintPage
...
...
@@ -337,14 +339,14 @@ protected:
* @param aData = a pointer on an auxiliary data (not always used, NULL if not used)
*/
virtual
void
PrintPage
(
wxDC
*
aDC
,
bool
aPrint_Sheet_Ref
,
int
aPrintMask
,
bool
aPrintMirrorMode
,
void
*
aData
=
NULL
);
bool
aPrintMirrorMode
,
void
*
aData
=
NULL
);
/**
* Function SVG_Print_component
* Creates the SVG print file for the current edited component.
* @param aFullFileName = the full filename of the file
*/
void
SVG_Print_Component
(
const
wxString
&
aFullFileName
);
*/
void
SVG_Print_Component
(
const
wxString
&
aFullFileName
);
DECLARE_EVENT_TABLE
()
...
...
gerbview/block.cpp
View file @
9b77f2a4
...
...
@@ -88,11 +88,11 @@ int WinEDA_GerberFrame::ReturnBlockCommand( int key )
/* Routine to handle the BLOCK PLACE command */
void
WinEDA_GerberFrame
::
HandleBlockPlace
(
wxDC
*
DC
)
{
bool
err
=
FALSE
;
bool
err
=
false
;
if
(
DrawPanel
->
ManageCurseur
==
NULL
)
{
err
=
TRUE
;
err
=
true
;
DisplayError
(
this
,
wxT
(
"Error in HandleBlockPLace : ManageCurseur = NULL"
)
);
}
...
...
@@ -101,21 +101,21 @@ void WinEDA_GerberFrame::HandleBlockPlace( wxDC* DC )
switch
(
GetScreen
()
->
m_BlockLocate
.
m_Command
)
{
case
BLOCK_IDLE
:
err
=
TRUE
;
err
=
true
;
break
;
case
BLOCK_DRAG
:
/* Drag */
case
BLOCK_MOVE
:
/* Move */
case
BLOCK_PRESELECT_MOVE
:
/* Move with preselection list*/
if
(
DrawPanel
->
ManageCurseur
)
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
Block_Move
(
DC
);
GetScreen
()
->
m_BlockLocate
.
ClearItemsList
();
break
;
case
BLOCK_COPY
:
/* Copy */
if
(
DrawPanel
->
ManageCurseur
)
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
Block_Duplicate
(
DC
);
GetScreen
()
->
m_BlockLocate
.
ClearItemsList
();
break
;
...
...
@@ -152,16 +152,20 @@ void WinEDA_GerberFrame::HandleBlockPlace( wxDC* DC )
}
/* Routine management command END BLOCK
* Returns:
* 0 if no and selects compounds
* 1 otherwise
* -1 If order is completed and components found (block delete, block save)
/**
* Function HandleBlockEnd( )
* Handle the "end" of a block command,
* i.e. is called at the end of the definition of the area of a block.
* depending on the current block command, this command is executed
* or parameters are initialized to prepare a call to HandleBlockPlace
* in GetScreen()->m_BlockLocate
* @return false if no item selected, or command finished,
* true if some items found and HandleBlockPlace must be called later
*/
int
WinEDA_GerberFrame
::
HandleBlockEnd
(
wxDC
*
DC
)
bool
WinEDA_GerberFrame
::
HandleBlockEnd
(
wxDC
*
DC
)
{
int
endcommande
=
TRUE
;
bool
zoom_command
=
FALSE
;
bool
nextcmd
=
false
;
bool
zoom_command
=
false
;
if
(
DrawPanel
->
ManageCurseur
)
...
...
@@ -177,15 +181,15 @@ int WinEDA_GerberFrame::HandleBlockEnd( wxDC* DC )
case
BLOCK_COPY
:
/* Copy */
case
BLOCK_PRESELECT_MOVE
:
/* Move with preselection list */
GetScreen
()
->
m_BlockLocate
.
m_State
=
STATE_BLOCK_MOVE
;
endcommande
=
FALSE
;
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
nextcmd
=
true
;
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
DrawPanel
->
ManageCurseur
=
DrawMovingBlockOutlines
;
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
break
;
case
BLOCK_DELETE
:
/* Delete */
GetScreen
()
->
m_BlockLocate
.
m_State
=
STATE_BLOCK_STOP
;
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
Block_Delete
(
DC
);
break
;
...
...
@@ -197,7 +201,7 @@ int WinEDA_GerberFrame::HandleBlockEnd( wxDC* DC )
break
;
case
BLOCK_ZOOM
:
/* Window Zoom */
zoom_command
=
TRUE
;
zoom_command
=
true
;
break
;
case
BLOCK_ABORT
:
...
...
@@ -206,7 +210,7 @@ int WinEDA_GerberFrame::HandleBlockEnd( wxDC* DC )
break
;
}
if
(
endcommande
==
TRUE
)
if
(
!
nextcmd
)
{
GetScreen
()
->
m_BlockLocate
.
m_Flags
=
0
;
GetScreen
()
->
m_BlockLocate
.
m_State
=
STATE_NO_BLOCK
;
...
...
@@ -220,7 +224,7 @@ int WinEDA_GerberFrame::HandleBlockEnd( wxDC* DC )
if
(
zoom_command
)
Window_Zoom
(
GetScreen
()
->
m_BlockLocate
);
return
endcommande
;
return
nextcmd
;
}
...
...
@@ -325,7 +329,7 @@ void WinEDA_GerberFrame::Block_Move( wxDC* DC )
gerb_item
->
MoveAB
(
delta
);
}
DrawPanel
->
Refresh
(
TRUE
);
DrawPanel
->
Refresh
(
true
);
}
...
...
gerbview/wxGerberFrame.h
View file @
9b77f2a4
...
...
@@ -248,9 +248,9 @@ public:
void
InstallPcbGlobalDeleteFrame
(
const
wxPoint
&
pos
);
/* handlers for block commands */
int
ReturnBlockCommand
(
int
key
);
virtual
int
ReturnBlockCommand
(
int
key
);
virtual
void
HandleBlockPlace
(
wxDC
*
DC
);
virtual
int
HandleBlockEnd
(
wxDC
*
DC
);
virtual
bool
HandleBlockEnd
(
wxDC
*
DC
);
/* Block operations: */
/**
...
...
include/wxEeschemaStruct.h
View file @
9b77f2a4
...
...
@@ -581,12 +581,40 @@ public:
void
Key
(
wxDC
*
DC
,
int
hotkey
,
EDA_BaseStruct
*
DrawStruct
);
/* Block operations. */
int
ReturnBlockCommand
(
int
key
);
void
InitBlockPasteInfos
();
void
HandleBlockPlace
(
wxDC
*
DC
);
int
HandleBlockEnd
(
wxDC
*
DC
);
void
HandleBlockEndByPopUp
(
int
Command
,
wxDC
*
DC
);
/**
* Function ReturnBlockCommand
* Returns the block command internat code (BLOCK_MOVE, BLOCK_COPY...)
* corresponding to the keys pressed (ALT, SHIFT, SHIFT ALT ..) when
* block command is started by dragging the mouse.
* @param aKey = the key modifiers (Alt, Shift ...)
* @return the block command id (BLOCK_MOVE, BLOCK_COPY...)
*/
virtual
int
ReturnBlockCommand
(
int
key
);
/**
* Function HandleBlockPlace( )
* Called after HandleBlockEnd, when a block command needs to be
* executed after the block is moved to its new place
* (bloc move, drag, copy .. )
* Parameters must be initialized in GetScreen()->m_BlockLocate
*/
virtual
void
HandleBlockPlace
(
wxDC
*
DC
);
/**
* Function HandleBlockEnd( )
* Handle the "end" of a block command,
* i.e. is called at the end of the definition of the area of a block.
* depending on the current block command, this command is executed
* or parameters are initialized to prepare a call to HandleBlockPlace
* in GetScreen()->m_BlockLocate
* @return false if no item selected, or command finished,
* true if some items found and HandleBlockPlace must be called later
*/
virtual
bool
HandleBlockEnd
(
wxDC
*
DC
);
void
RepeatDrawItem
(
wxDC
*
DC
);
void
TestDanglingEnds
(
SCH_ITEM
*
DrawList
,
wxDC
*
DC
);
...
...
include/wxPcbStruct.h
View file @
9b77f2a4
...
...
@@ -473,9 +473,36 @@ public:
/* Block operations: */
int
ReturnBlockCommand
(
int
key
);
void
HandleBlockPlace
(
wxDC
*
DC
);
int
HandleBlockEnd
(
wxDC
*
DC
);
/**
* Function ReturnBlockCommand
* Returns the block command internat code (BLOCK_MOVE, BLOCK_COPY...)
* corresponding to the keys pressed (ALT, SHIFT, SHIFT ALT ..) when
* block command is started by dragging the mouse.
* @param aKey = the key modifiers (Alt, Shift ...)
* @return the block command id (BLOCK_MOVE, BLOCK_COPY...)
*/
virtual
int
ReturnBlockCommand
(
int
key
);
/**
* Function HandleBlockPlace( )
* Called after HandleBlockEnd, when a block command needs to be
* executed after the block is moved to its new place
* (bloc move, drag, copy .. )
* Parameters must be initialized in GetScreen()->m_BlockLocate
*/
virtual
void
HandleBlockPlace
(
wxDC
*
DC
);
/**
* Function HandleBlockEnd( )
* Handle the "end" of a block command,
* i.e. is called at the end of the definition of the area of a block.
* depending on the current block command, this command is executed
* or parameters are initialized to prepare a call to HandleBlockPlace
* in GetScreen()->m_BlockLocate
* @return false if no item selected, or command finished,
* true if some items found and HandleBlockPlace must be called later
*/
virtual
bool
HandleBlockEnd
(
wxDC
*
DC
);
/**
* Function Block_SelectItems
...
...
include/wxstruct.h
View file @
9b77f2a4
...
...
@@ -445,12 +445,39 @@ public:
void
DisplayUnitsMsg
();
/* Handlers for block commands */
virtual
int
ReturnBlockCommand
(
int
key
);
virtual
void
InitBlockPasteInfos
();
virtual
bool
HandleBlockBegin
(
wxDC
*
DC
,
int
cmd_type
,
const
wxPoint
&
startpos
);
virtual
void
HandleBlockPlace
(
wxDC
*
DC
);
virtual
int
HandleBlockEnd
(
wxDC
*
DC
);
virtual
bool
HandleBlockBegin
(
wxDC
*
DC
,
int
cmd_type
,
const
wxPoint
&
startpos
);
/**
* Function ReturnBlockCommand
* Returns the block command internat code (BLOCK_MOVE, BLOCK_COPY...)
* corresponding to the keys pressed (ALT, SHIFT, SHIFT ALT ..) when
* block command is started by dragging the mouse.
* @param aKey = the key modifiers (Alt, Shift ...)
* @return the block command id (BLOCK_MOVE, BLOCK_COPY...)
*/
virtual
int
ReturnBlockCommand
(
int
key
);
/**
* Function HandleBlockPlace( )
* Called after HandleBlockEnd, when a block command needs to be
* executed after the block is moved to its new place
* (bloc move, drag, copy .. )
* Parameters must be initialized in GetScreen()->m_BlockLocate
*/
virtual
void
HandleBlockPlace
(
wxDC
*
DC
);
/**
* Function HandleBlockEnd( )
* Handle the "end" of a block command,
* i.e. is called at the end of the definition of the area of a block.
* depending on the current block command, this command is executed
* or parameters are initialized to prepare a call to HandleBlockPlace
* in GetScreen()->m_BlockLocate
* @return false if no item selected, or command finished,
* true if some items found and HandleBlockPlace must be called later
*/
virtual
bool
HandleBlockEnd
(
wxDC
*
DC
);
void
CopyToClipboard
(
wxCommandEvent
&
event
);
...
...
pcbnew/block.cpp
View file @
9b77f2a4
...
...
@@ -43,14 +43,14 @@ static void drawMovingBlock( WinEDA_DrawPanel* aPanel, wxDC* aDC,
bool
aErase
);
static
bool
Block_Include_
Modules
=
true
;
static
bool
B
lockIncludeLockedModules
=
true
;
static
bool
Block_Include_
Tracks
=
true
;
static
bool
Block_Include_
Zones
=
true
;
static
bool
Block_Include_Draw_Item
s
=
true
;
static
bool
Block_Include_Edges_Items
=
true
;
static
bool
Block_Include_PcbTexte
s
=
true
;
static
bool
B
lockDrawItems
=
true
;
static
bool
blockInclude
Modules
=
true
;
static
bool
b
lockIncludeLockedModules
=
true
;
static
bool
blockInclude
Tracks
=
true
;
static
bool
blockInclude
Zones
=
true
;
static
bool
blockIncludeItemsOnTechLayer
s
=
true
;
static
bool
blockIncludeBoardOutlineLayer
=
true
;
static
bool
blockIncludePcbText
s
=
true
;
static
bool
b
lockDrawItems
=
true
;
/************************************/
/* class DIALOG_BLOCK_OPTIONS */
...
...
@@ -72,8 +72,14 @@ public:
private
:
void
ExecuteCommand
(
wxCommandEvent
&
event
);
void
OnCancel
(
wxCommandEvent
&
event
);
void
checkBoxClicked
(
wxCommandEvent
&
aEvent
);
void
OnCancel
(
wxCommandEvent
&
event
)
{
EndModal
(
-
1
);
}
void
checkBoxClicked
(
wxCommandEvent
&
aEvent
)
{
if
(
m_Include_Modules
->
GetValue
()
)
m_IncludeLockedModules
->
Enable
();
else
m_IncludeLockedModules
->
Disable
();
}
};
...
...
@@ -99,67 +105,57 @@ static bool InstallBlockCmdFrame( WinEDA_BasePcbFrame* parent, const wxString& t
}
DIALOG_BLOCK_OPTIONS
::
DIALOG_BLOCK_OPTIONS
(
WinEDA_BasePcbFrame
*
p
arent
,
const
wxString
&
t
itle
)
:
DIALOG_BLOCK_OPTIONS_BASE
(
parent
,
-
1
,
t
itle
)
DIALOG_BLOCK_OPTIONS
::
DIALOG_BLOCK_OPTIONS
(
WinEDA_BasePcbFrame
*
aP
arent
,
const
wxString
&
aT
itle
)
:
DIALOG_BLOCK_OPTIONS_BASE
(
aParent
,
-
1
,
aT
itle
)
{
m_Parent
=
p
arent
;
m_Include_Modules
->
SetValue
(
Block_Include_
Modules
);
m_IncludeLockedModules
->
SetValue
(
B
lockIncludeLockedModules
);
m_Include_Tracks
->
SetValue
(
Block_Include_
Tracks
);
m_Include_Zones
->
SetValue
(
Block_Include_
Zones
);
m_Include_Draw_Items
->
SetValue
(
Block_Include_Draw_Item
s
);
m_Include_Edges_Items
->
SetValue
(
Block_Include_Edges_Items
);
m_Include_PcbTextes
->
SetValue
(
Block_Include_PcbTexte
s
);
m_DrawBlockItems
->
SetValue
(
B
lockDrawItems
);
m_Parent
=
aP
arent
;
m_Include_Modules
->
SetValue
(
blockInclude
Modules
);
m_IncludeLockedModules
->
SetValue
(
b
lockIncludeLockedModules
);
m_Include_Tracks
->
SetValue
(
blockInclude
Tracks
);
m_Include_Zones
->
SetValue
(
blockInclude
Zones
);
m_Include_Draw_Items
->
SetValue
(
blockIncludeItemsOnTechLayer
s
);
m_Include_Edges_Items
->
SetValue
(
blockIncludeBoardOutlineLayer
);
m_Include_PcbTextes
->
SetValue
(
blockIncludePcbText
s
);
m_DrawBlockItems
->
SetValue
(
b
lockDrawItems
);
SetFocus
();
GetSizer
()
->
SetSizeHints
(
this
);
Centre
();
}
void
DIALOG_BLOCK_OPTIONS
::
OnCancel
(
wxCommandEvent
&
WXUNUSED
(
event
)
)
{
EndModal
(
-
1
);
}
void
DIALOG_BLOCK_OPTIONS
::
checkBoxClicked
(
wxCommandEvent
&
WXUNUSED
(
aEvent
)
)
{
if
(
m_Include_Modules
->
GetValue
()
)
m_IncludeLockedModules
->
Enable
();
else
m_IncludeLockedModules
->
Disable
();
}
void
DIALOG_BLOCK_OPTIONS
::
ExecuteCommand
(
wxCommandEvent
&
event
)
{
Block_Include_
Modules
=
m_Include_Modules
->
GetValue
();
B
lockIncludeLockedModules
=
m_IncludeLockedModules
->
GetValue
();
Block_Include_
Tracks
=
m_Include_Tracks
->
GetValue
();
Block_Include_
Zones
=
m_Include_Zones
->
GetValue
();
Block_Include_Draw_Item
s
=
m_Include_Draw_Items
->
GetValue
();
Block_Include_Edges_Items
=
m_Include_Edges_Items
->
GetValue
();
Block_Include_PcbTexte
s
=
m_Include_PcbTextes
->
GetValue
();
B
lockDrawItems
=
m_DrawBlockItems
->
GetValue
();
blockInclude
Modules
=
m_Include_Modules
->
GetValue
();
b
lockIncludeLockedModules
=
m_IncludeLockedModules
->
GetValue
();
blockInclude
Tracks
=
m_Include_Tracks
->
GetValue
();
blockInclude
Zones
=
m_Include_Zones
->
GetValue
();
blockIncludeItemsOnTechLayer
s
=
m_Include_Draw_Items
->
GetValue
();
blockIncludeBoardOutlineLayer
=
m_Include_Edges_Items
->
GetValue
();
blockIncludePcbText
s
=
m_Include_PcbTextes
->
GetValue
();
b
lockDrawItems
=
m_DrawBlockItems
->
GetValue
();
EndModal
(
0
);
}
/* Return the block command (BLOCK_MOVE, BLOCK_COPY...) corresponding to
* the key (ALT, SHIFT ALT ..)
/**
* Function ReturnBlockCommand
* Returns the block command internat code (BLOCK_MOVE, BLOCK_COPY...)
* corresponding to the keys pressed (ALT, SHIFT, SHIFT ALT ..) when
* block command is started by dragging the mouse.
* @param aKey = the key modifiers (Alt, Shift ...)
* @return the block command id (BLOCK_MOVE, BLOCK_COPY...)
*/
int
WinEDA_PcbFrame
::
ReturnBlockCommand
(
int
k
ey
)
int
WinEDA_PcbFrame
::
ReturnBlockCommand
(
int
aK
ey
)
{
int
cmd
=
0
;
switch
(
k
ey
)
switch
(
aK
ey
)
{
default
:
cmd
=
k
ey
&
0x255
;
cmd
=
aK
ey
&
0x255
;
break
;
case
0
:
...
...
@@ -191,7 +187,13 @@ int WinEDA_PcbFrame::ReturnBlockCommand( int key )
}
/* Routine to handle the BLOCK PLACE command */
/**
* Function HandleBlockPlace( )
* Called after HandleBlockEnd, when a block command needs to be
* executed after the block is moved to its new place
* (bloc move, drag, copy .. )
* Parameters must be initialized in GetScreen()->m_BlockLocate
*/
void
WinEDA_PcbFrame
::
HandleBlockPlace
(
wxDC
*
DC
)
{
bool
err
=
false
;
...
...
@@ -250,15 +252,20 @@ void WinEDA_PcbFrame::HandleBlockPlace( wxDC* DC )
}
/* Handle END BLOCK command.
* Returns:
* 0 if no features selected
* 1 otherwise
* -1 If order is completed and components found (block delete, block save)
/**
* Function HandleBlockEnd( )
* Handle the "end" of a block command,
* i.e. is called at the end of the definition of the area of a block.
* depending on the current block command, this command is executed
* or parameters are initialized to prepare a call to HandleBlockPlace
* in GetScreen()->m_BlockLocate
* @return false if no item selected, or command finished,
* true if some items found and HandleBlockPlace must be called later
*/
int
WinEDA_PcbFrame
::
HandleBlockEnd
(
wxDC
*
DC
)
bool
WinEDA_PcbFrame
::
HandleBlockEnd
(
wxDC
*
DC
)
{
int
endcommande
=
true
;
bool
nextcmd
=
false
;
bool
cancelCmd
=
false
;
// If coming here after cancel block, clean up and exit
if
(
GetScreen
()
->
m_BlockLocate
.
m_State
==
STATE_NO_BLOCK
)
...
...
@@ -269,7 +276,7 @@ int WinEDA_PcbFrame::HandleBlockEnd( wxDC* DC )
GetScreen
()
->
m_BlockLocate
.
m_Command
=
BLOCK_IDLE
;
GetScreen
()
->
m_BlockLocate
.
ClearItemsList
();
DisplayToolMsg
(
wxEmptyString
);
return
0
;
return
false
;
}
// Show dialog if there are no selected items and
...
...
@@ -279,79 +286,24 @@ int WinEDA_PcbFrame::HandleBlockEnd( wxDC* DC )
{
if
(
!
InstallBlockCmdFrame
(
this
,
_
(
"Block Operation"
)
)
)
{
DrawPanel
->
ManageCurseur
=
NULL
;
DrawPanel
->
ForceCloseManageCurseur
=
NULL
;
GetScreen
()
->
m_BlockLocate
.
m_Flags
=
0
;
GetScreen
()
->
m_BlockLocate
.
m_State
=
STATE_NO_BLOCK
;
GetScreen
()
->
m_BlockLocate
.
m_Command
=
BLOCK_IDLE
;
GetScreen
()
->
m_BlockLocate
.
ClearItemsList
();
DisplayToolMsg
(
wxEmptyString
);
DrawAndSizingBlockOutlines
(
DrawPanel
,
DC
,
false
);
return
0
;
cancelCmd
=
true
;
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
// undraw block outline
}
DrawAndSizingBlockOutlines
(
DrawPanel
,
DC
,
false
);
Block_SelectItems
();
// Exit if no items found
if
(
!
GetScreen
()
->
m_BlockLocate
.
GetCount
()
)
else
{
DrawPanel
->
ManageCurseur
=
NULL
;
DrawPanel
->
ForceCloseManageCurseur
=
NULL
;
GetScreen
()
->
m_BlockLocate
.
m_Flags
=
0
;
GetScreen
()
->
m_BlockLocate
.
m_State
=
STATE_NO_BLOCK
;
GetScreen
()
->
m_BlockLocate
.
m_Command
=
BLOCK_IDLE
;
GetScreen
()
->
m_BlockLocate
.
ClearItemsList
();
DisplayToolMsg
(
wxEmptyString
);
return
0
;
}
DrawAndSizingBlockOutlines
(
DrawPanel
,
DC
,
false
);
Block_SelectItems
();
wxPoint
blockCenter
;
// Move cursor to the best position in selected rect:
// can be the block locate rect or the the smallest rectangle
// containing the centers of all selected items.
// Unfortunately, this option gives unpredicatble results when flipping or mirroring blocks
#if 0 // set to 1 to use smallest rectangle center
// Move cursor to the center of
// Also set m_BlockLocate to the size of the rectangle.
PICKED_ITEMS_LIST* itemsList = &DrawPanel->GetScreen()->m_BlockLocate.m_ItemsSelection;
int minX, minY, maxX, maxY;
int tempX, tempY;
BOARD_ITEM* item = (BOARD_ITEM*) itemsList->GetPickedItem( 0 );
minX = item->GetPosition().x;
minY = item->GetPosition().y;
maxX = minX;
maxY = minY;
for( unsigned ii = 1; ii < itemsList->GetCount(); ii++ )
{
item = (BOARD_ITEM*) itemsList->GetPickedItem( ii );
tempX = item->GetPosition().x;
tempY = item->GetPosition().y;
if( tempX > maxX )
maxX = tempX;
if( tempX < minX )
minX = tempX;
if( tempY > maxY )
maxY = tempY;
if( tempY < minY )
minY = tempY;
// Exit if no items found
if
(
!
GetScreen
()
->
m_BlockLocate
.
GetCount
()
)
cancelCmd
=
true
;
else
nextcmd
=
true
;
}
blockCenter.x = ( minX + maxX ) / 2;
blockCenter.y = ( minY + maxY ) / 2;
GetScreen()->m_BlockLocate.SetOrigin( minX, minY );
GetScreen()->m_BlockLocate.SetEnd( maxX, maxY );
#else
blockCenter
=
GetScreen
()
->
m_BlockLocate
.
Centre
();
#endif
DrawPanel
->
CursorOff
(
DC
);
GetScreen
()
->
m_Curseur
=
blockCenter
;
GetScreen
()
->
m_BlockLocate
.
SetLastCursorPosition
(
blockCenter
);
DrawPanel
->
MouseToCursorSchema
();
DrawPanel
->
CursorOn
(
DC
);
}
if
(
DrawPanel
->
ManageCurseur
)
if
(
!
cancelCmd
&&
DrawPanel
->
ManageCurseur
)
{
switch
(
GetScreen
()
->
m_BlockLocate
.
m_Command
)
{
case
BLOCK_IDLE
:
...
...
@@ -363,7 +315,7 @@ int WinEDA_PcbFrame::HandleBlockEnd( wxDC* DC )
case
BLOCK_COPY
:
/* Copy */
case
BLOCK_PRESELECT_MOVE
:
/* Move with preselection list*/
GetScreen
()
->
m_BlockLocate
.
m_State
=
STATE_BLOCK_MOVE
;
endcommande
=
fals
e
;
nextcmd
=
tru
e
;
DrawPanel
->
ManageCurseur
=
drawMovingBlock
;
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
false
);
break
;
...
...
@@ -408,8 +360,9 @@ int WinEDA_PcbFrame::HandleBlockEnd( wxDC* DC )
default
:
break
;
}
}
if
(
endcommande
==
true
)
if
(
!
nextcmd
)
{
GetScreen
()
->
m_BlockLocate
.
m_Flags
=
0
;
GetScreen
()
->
m_BlockLocate
.
m_State
=
STATE_NO_BLOCK
;
...
...
@@ -420,7 +373,7 @@ int WinEDA_PcbFrame::HandleBlockEnd( wxDC* DC )
DisplayToolMsg
(
wxEmptyString
);
}
return
endcommande
;
return
nextcmd
;
}
...
...
@@ -428,7 +381,7 @@ int WinEDA_PcbFrame::HandleBlockEnd( wxDC* DC )
/**
* Function Block_SelectItems
* Uses
GetScreen()->m_BlockLocate
* Uses GetScreen()->m_BlockLocate
* select items within the selected block.
* selected items are put in the pick list
* @param none
...
...
@@ -442,13 +395,13 @@ void WinEDA_PcbFrame::Block_SelectItems()
PICKED_ITEMS_LIST
*
itemsList
=
&
GetScreen
()
->
m_BlockLocate
.
m_ItemsSelection
;
ITEM_PICKER
picker
(
NULL
,
UR_UNSPECIFIED
);
if
(
Block_Include_
Modules
)
if
(
blockInclude
Modules
)
{
for
(
MODULE
*
module
=
m_Pcb
->
m_Modules
;
module
!=
NULL
;
module
=
module
->
Next
()
)
{
if
(
module
->
HitTest
(
GetScreen
()
->
m_BlockLocate
)
&&
(
!
module
->
IsLocked
()
||
B
lockIncludeLockedModules
)
)
&&
(
!
module
->
IsLocked
()
||
b
lockIncludeLockedModules
)
)
{
picker
.
m_PickedItem
=
module
;
picker
.
m_PickedItemType
=
module
->
Type
();
...
...
@@ -458,7 +411,7 @@ void WinEDA_PcbFrame::Block_SelectItems()
}
/* Remove tracks and vias */
if
(
Block_Include_
Tracks
)
if
(
blockInclude
Tracks
)
{
for
(
TRACK
*
pt_segm
=
m_Pcb
->
m_Track
;
pt_segm
!=
NULL
;
pt_segm
=
pt_segm
->
Next
()
)
...
...
@@ -475,10 +428,10 @@ void WinEDA_PcbFrame::Block_SelectItems()
/* Select graphic items */
masque_layer
=
EDGE_LAYER
;
if
(
Block_Include_Draw_Item
s
)
if
(
blockIncludeItemsOnTechLayer
s
)
masque_layer
=
ALL_LAYERS
;
if
(
!
Block_Include_Edges_Items
)
if
(
!
blockIncludeBoardOutlineLayer
)
masque_layer
&=
~
EDGE_LAYER
;
for
(
BOARD_ITEM
*
PtStruct
=
m_Pcb
->
m_Drawings
;
PtStruct
!=
NULL
;
...
...
@@ -496,7 +449,7 @@ void WinEDA_PcbFrame::Block_SelectItems()
break
;
case
TYPE_TEXTE
:
if
(
!
Block_Include_PcbTexte
s
)
if
(
!
blockIncludePcbText
s
)
break
;
if
(
!
PtStruct
->
HitTest
(
GetScreen
()
->
m_BlockLocate
)
)
break
;
...
...
@@ -532,7 +485,7 @@ void WinEDA_PcbFrame::Block_SelectItems()
}
/* Zone selection */
if
(
Block_Include_
Zones
)
if
(
blockInclude
Zones
)
{
#if 0
...
...
@@ -581,64 +534,24 @@ static void drawPickedItems( WinEDA_DrawPanel* aPanel, wxDC* aDC,
switch
(
item
->
Type
()
)
{
case
TYPE_MODULE
:
{
MODULE
*
module
=
(
MODULE
*
)
item
;
frame
->
GetBoard
()
->
m_Status_Pcb
&=
~
RATSNEST_ITEM_LOCAL_OK
;
DrawModuleOutlines
(
aPanel
,
aDC
,
module
);
DrawModuleOutlines
(
aPanel
,
aDC
,
(
MODULE
*
)
item
);
break
;
}
case
TYPE_DRAWSEGMENT
:
{
DRAWSEGMENT
*
segment
=
(
DRAWSEGMENT
*
)
item
;
segment
->
Draw
(
aPanel
,
aDC
,
GR_XOR
,
aOffset
);
break
;
}
case
TYPE_TEXTE
:
{
TEXTE_PCB
*
text
=
(
TEXTE_PCB
*
)
item
;
text
->
Draw
(
aPanel
,
aDC
,
GR_XOR
,
aOffset
);
break
;
}
case
TYPE_TRACK
:
case
TYPE_VIA
:
{
TRACK
*
track
=
(
TRACK
*
)
item
;
track
->
Draw
(
aPanel
,
aDC
,
GR_XOR
,
aOffset
);
break
;
}
case
TYPE_MIRE
:
{
MIREPCB
*
mire
=
(
MIREPCB
*
)
item
;
mire
->
Draw
(
aPanel
,
aDC
,
GR_XOR
,
aOffset
);
break
;
}
case
TYPE_DIMENSION
:
{
DIMENSION
*
dimension
=
(
DIMENSION
*
)
item
;
dimension
->
Draw
(
aPanel
,
aDC
,
GR_XOR
,
aOffset
);
case
TYPE_DIMENSION
:
// Currently markers are not affected by block commands
case
TYPE_MARKER_PCB
:
item
->
Draw
(
aPanel
,
aDC
,
GR_XOR
,
aOffset
);
break
;
}
case
TYPE_ZONE_CONTAINER
:
{
ZONE_CONTAINER
*
zoneContainer
=
(
ZONE_CONTAINER
*
)
item
;
zoneContainer
->
Draw
(
aPanel
,
aDC
,
GR_XOR
,
aOffset
);
zoneContainer
->
DrawFilledArea
(
aPanel
,
aDC
,
GR_XOR
,
aOffset
);
item
->
Draw
(
aPanel
,
aDC
,
GR_XOR
,
aOffset
);
((
ZONE_CONTAINER
*
)
item
)
->
DrawFilledArea
(
aPanel
,
aDC
,
GR_XOR
,
aOffset
);
break
;
}
// Currently markers are not affected by block commands
case
TYPE_MARKER_PCB
:
{
MARKER_PCB
*
pcbMarker
=
(
MARKER_PCB
*
)
item
;
pcbMarker
->
Draw
(
aPanel
,
aDC
,
GR_XOR
,
aOffset
);
break
;
}
default
:
break
;
...
...
@@ -661,7 +574,7 @@ static void drawMovingBlock( WinEDA_DrawPanel* aPanel, wxDC* aDC,
{
screen
->
m_BlockLocate
.
Draw
(
aPanel
,
aDC
,
screen
->
m_BlockLocate
.
m_MoveVector
,
GR_XOR
,
BLOCK_OUTLINE_COLOR
);
if
(
B
lockDrawItems
)
if
(
b
lockDrawItems
)
drawPickedItems
(
aPanel
,
aDC
,
screen
->
m_BlockLocate
.
m_MoveVector
);
}
}
...
...
@@ -677,7 +590,7 @@ static void drawMovingBlock( WinEDA_DrawPanel* aPanel, wxDC* aDC,
{
screen
->
m_BlockLocate
.
Draw
(
aPanel
,
aDC
,
screen
->
m_BlockLocate
.
m_MoveVector
,
GR_XOR
,
BLOCK_OUTLINE_COLOR
);
if
(
B
lockDrawItems
)
if
(
b
lockDrawItems
)
drawPickedItems
(
aPanel
,
aDC
,
screen
->
m_BlockLocate
.
m_MoveVector
);
}
}
...
...
@@ -812,7 +725,7 @@ void WinEDA_PcbFrame::Block_Rotate()
/**
* Function Block_Flip
*
Flip
items within the selected block.
*
flips
items within the selected block.
* The flip center is the center of the block
* @param none
*/
...
...
@@ -840,7 +753,7 @@ void WinEDA_PcbFrame::Block_Flip()
switch
(
item
->
Type
()
)
{
case
TYPE_MODULE
:
(
(
MODULE
*
)
item
)
->
m_Flags
=
0
;
item
->
m_Flags
=
0
;
m_Pcb
->
m_Status_Pcb
=
0
;
break
;
...
...
@@ -902,7 +815,7 @@ void WinEDA_PcbFrame::Block_Move()
{
case
TYPE_MODULE
:
m_Pcb
->
m_Status_Pcb
=
0
;
(
(
MODULE
*
)
item
)
->
m_Flags
=
0
;
item
->
m_Flags
=
0
;
break
;
/* Move track segments */
...
...
@@ -939,7 +852,7 @@ void WinEDA_PcbFrame::Block_Move()
/**
* Function Block_Duplicate
*
Duplicate
all items within the selected block.
*
duplicates
all items within the selected block.
* New location is determined by the current offset from the selected block's
* original location.
* @param none
...
...
@@ -965,51 +878,51 @@ void WinEDA_PcbFrame::Block_Duplicate()
switch
(
item
->
Type
()
)
{
case
TYPE_MODULE
:
{
MODULE
*
module
=
(
MODULE
*
)
item
;
MODULE
*
new_module
;
m_Pcb
->
m_Status_Pcb
=
0
;
module
->
m_Flags
=
0
;
newitem
=
new_module
=
new
MODULE
(
m_Pcb
);
new_module
->
Copy
(
module
);
new_module
->
m_TimeStamp
=
GetTimeStamp
();
m_Pcb
->
m_Modules
.
PushFront
(
new_module
);
}
break
;
{
MODULE
*
module
=
(
MODULE
*
)
item
;
MODULE
*
new_module
;
m_Pcb
->
m_Status_Pcb
=
0
;
module
->
m_Flags
=
0
;
newitem
=
new_module
=
new
MODULE
(
m_Pcb
);
new_module
->
Copy
(
module
);
new_module
->
m_TimeStamp
=
GetTimeStamp
();
m_Pcb
->
m_Modules
.
PushFront
(
new_module
);
}
break
;
case
TYPE_TRACK
:
case
TYPE_VIA
:
{
TRACK
*
track
=
(
TRACK
*
)
item
;
m_Pcb
->
m_Status_Pcb
=
0
;
TRACK
*
new_track
=
track
->
Copy
();
newitem
=
new_track
;
m_Pcb
->
m_Track
.
PushFront
(
new_track
);
}
break
;
{
TRACK
*
track
=
(
TRACK
*
)
item
;
m_Pcb
->
m_Status_Pcb
=
0
;
TRACK
*
new_track
=
track
->
Copy
();
newitem
=
new_track
;
m_Pcb
->
m_Track
.
PushFront
(
new_track
);
}
break
;
case
TYPE_ZONE
:
// SEG_ZONE items are now deprecated
break
;
case
TYPE_ZONE_CONTAINER
:
{
ZONE_CONTAINER
*
new_zone
=
new
ZONE_CONTAINER
(
(
BOARD
*
)
item
->
GetParent
()
);
new_zone
->
Copy
(
(
ZONE_CONTAINER
*
)
item
);
new_zone
->
m_TimeStamp
=
GetTimeStamp
();
newitem
=
new_zone
;
m_Pcb
->
Add
(
new_zone
);
}
break
;
{
ZONE_CONTAINER
*
new_zone
=
new
ZONE_CONTAINER
(
(
BOARD
*
)
item
->
GetParent
()
);
new_zone
->
Copy
(
(
ZONE_CONTAINER
*
)
item
);
new_zone
->
m_TimeStamp
=
GetTimeStamp
();
newitem
=
new_zone
;
m_Pcb
->
Add
(
new_zone
);
}
break
;
case
TYPE_DRAWSEGMENT
:
{
DRAWSEGMENT
*
new_drawsegment
=
new
DRAWSEGMENT
(
m_Pcb
);
new_drawsegment
->
Copy
(
(
DRAWSEGMENT
*
)
item
);
m_Pcb
->
Add
(
new_drawsegment
);
newitem
=
new_drawsegment
;
}
break
;
{
DRAWSEGMENT
*
new_drawsegment
=
new
DRAWSEGMENT
(
m_Pcb
);
new_drawsegment
->
Copy
(
(
DRAWSEGMENT
*
)
item
);
m_Pcb
->
Add
(
new_drawsegment
);
newitem
=
new_drawsegment
;
}
break
;
case
TYPE_TEXTE
:
{
...
...
@@ -1021,22 +934,22 @@ void WinEDA_PcbFrame::Block_Duplicate()
break
;
case
TYPE_MIRE
:
{
MIREPCB
*
new_mire
=
new
MIREPCB
(
m_Pcb
);
new_mire
->
Copy
(
(
MIREPCB
*
)
item
);
m_Pcb
->
Add
(
new_mire
);
newitem
=
new_mire
;
}
break
;
{
MIREPCB
*
new_mire
=
new
MIREPCB
(
m_Pcb
);
new_mire
->
Copy
(
(
MIREPCB
*
)
item
);
m_Pcb
->
Add
(
new_mire
);
newitem
=
new_mire
;
}
break
;
case
TYPE_DIMENSION
:
{
DIMENSION
*
new_cotation
=
new
DIMENSION
(
m_Pcb
);
new_cotation
->
Copy
(
(
DIMENSION
*
)
item
);
m_Pcb
->
Add
(
new_cotation
);
newitem
=
new_cotation
;
}
break
;
{
DIMENSION
*
new_cotation
=
new
DIMENSION
(
m_Pcb
);
new_cotation
->
Copy
(
(
DIMENSION
*
)
item
);
m_Pcb
->
Add
(
new_cotation
);
newitem
=
new_cotation
;
}
break
;
default
:
wxMessageBox
(
wxT
(
"WinEDA_PcbFrame::Block_Duplicate( ) error: unexpected type"
)
);
...
...
@@ -1044,12 +957,12 @@ void WinEDA_PcbFrame::Block_Duplicate()
}
if
(
newitem
)
{
newitem
->
Move
(
MoveVector
);
picker
.
m_PickedItem
=
newitem
;
picker
.
m_PickedItemType
=
newitem
->
Type
();
newList
.
PushItem
(
picker
);
}
{
newitem
->
Move
(
MoveVector
);
picker
.
m_PickedItem
=
newitem
;
picker
.
m_PickedItemType
=
newitem
->
Type
();
newList
.
PushItem
(
picker
);
}
}
if
(
newList
.
GetCount
()
)
...
...
pcbnew/block_module_editor.cpp
View file @
9b77f2a4
...
...
@@ -86,16 +86,21 @@ int WinEDA_ModuleEditFrame::ReturnBlockCommand( int key )
}
/* Command BLOCK END (end of block sizing)
* return :
* 0 if command finished (zoom, delete ...)
* 1 if HandleBlockPlace must follow (items found, and a block place command
* must follow)
/**
* Function HandleBlockEnd( )
* Handle the "end" of a block command,
* i.e. is called at the end of the definition of the area of a block.
* depending on the current block command, this command is executed
* or parameters are initialized to prepare a call to HandleBlockPlace
* in GetScreen()->m_BlockLocate
* @return false if no item selected, or command finished,
* true if some items found and HandleBlockPlace must be called later
*/
int
WinEDA_ModuleEditFrame
::
HandleBlockEnd
(
wxDC
*
DC
)
bool
WinEDA_ModuleEditFrame
::
HandleBlockEnd
(
wxDC
*
DC
)
{
int
ItemsCount
=
0
,
MustDoPlace
=
0
;
MODULE
*
Currentmodule
=
GetBoard
()
->
m_Modules
;
int
itemsCount
=
0
;
bool
nextcmd
=
false
;
MODULE
*
currentModule
=
GetBoard
()
->
m_Modules
;
if
(
GetScreen
()
->
m_BlockLocate
.
GetCount
()
)
{
...
...
@@ -120,11 +125,11 @@ int WinEDA_ModuleEditFrame::HandleBlockEnd( wxDC* DC )
case
BLOCK_DRAG
:
/* Drag */
case
BLOCK_MOVE
:
/* Move */
case
BLOCK_COPY
:
/* Copy */
ItemsCount
=
MarkItemsInBloc
(
Currentm
odule
,
itemsCount
=
MarkItemsInBloc
(
currentM
odule
,
GetScreen
()
->
m_BlockLocate
);
if
(
I
temsCount
)
if
(
i
temsCount
)
{
MustDoPlace
=
1
;
nextcmd
=
true
;
if
(
DrawPanel
->
ManageCurseur
!=
NULL
)
{
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
FALSE
);
...
...
@@ -137,16 +142,16 @@ int WinEDA_ModuleEditFrame::HandleBlockEnd( wxDC* DC )
break
;
case
BLOCK_PRESELECT_MOVE
:
/* Move with preselection list*/
MustDoPlace
=
1
;
nextcmd
=
true
;
DrawPanel
->
ManageCurseur
=
DrawMovingBlockOutlines
;
GetScreen
()
->
m_BlockLocate
.
m_State
=
STATE_BLOCK_MOVE
;
break
;
case
BLOCK_DELETE
:
/* Delete */
ItemsCount
=
MarkItemsInBloc
(
Currentm
odule
,
GetScreen
()
->
m_BlockLocate
);
if
(
I
temsCount
)
SaveCopyInUndoList
(
Currentm
odule
,
UR_MODEDIT
);
DeleteMarkedItems
(
Currentm
odule
);
itemsCount
=
MarkItemsInBloc
(
currentM
odule
,
GetScreen
()
->
m_BlockLocate
);
if
(
i
temsCount
)
SaveCopyInUndoList
(
currentM
odule
,
UR_MODEDIT
);
DeleteMarkedItems
(
currentM
odule
);
break
;
case
BLOCK_SAVE
:
/* Save */
...
...
@@ -154,20 +159,20 @@ int WinEDA_ModuleEditFrame::HandleBlockEnd( wxDC* DC )
break
;
case
BLOCK_ROTATE
:
ItemsCount
=
MarkItemsInBloc
(
Currentm
odule
,
GetScreen
()
->
m_BlockLocate
);
if
(
I
temsCount
)
SaveCopyInUndoList
(
Currentm
odule
,
UR_MODEDIT
);
RotateMarkedItems
(
Currentm
odule
,
GetScreen
()
->
m_BlockLocate
.
Centre
()
);
itemsCount
=
MarkItemsInBloc
(
currentM
odule
,
GetScreen
()
->
m_BlockLocate
);
if
(
i
temsCount
)
SaveCopyInUndoList
(
currentM
odule
,
UR_MODEDIT
);
RotateMarkedItems
(
currentM
odule
,
GetScreen
()
->
m_BlockLocate
.
Centre
()
);
break
;
case
BLOCK_MIRROR_X
:
case
BLOCK_MIRROR_Y
:
case
BLOCK_FLIP
:
/* mirror */
ItemsCount
=
MarkItemsInBloc
(
Currentm
odule
,
GetScreen
()
->
m_BlockLocate
);
if
(
I
temsCount
)
SaveCopyInUndoList
(
Currentm
odule
,
UR_MODEDIT
);
MirrorMarkedItems
(
Currentm
odule
,
GetScreen
()
->
m_BlockLocate
.
Centre
()
);
itemsCount
=
MarkItemsInBloc
(
currentM
odule
,
GetScreen
()
->
m_BlockLocate
);
if
(
i
temsCount
)
SaveCopyInUndoList
(
currentM
odule
,
UR_MODEDIT
);
MirrorMarkedItems
(
currentM
odule
,
GetScreen
()
->
m_BlockLocate
.
Centre
()
);
break
;
case
BLOCK_ZOOM
:
/* Window Zoom */
...
...
@@ -181,11 +186,11 @@ int WinEDA_ModuleEditFrame::HandleBlockEnd( wxDC* DC )
break
;
}
if
(
MustDoPlace
<=
0
)
if
(
!
nextcmd
)
{
if
(
GetScreen
()
->
m_BlockLocate
.
m_Command
!=
BLOCK_SELECT_ITEMS_ONLY
)
{
ClearMarkItems
(
Currentm
odule
);
ClearMarkItems
(
currentM
odule
);
}
GetScreen
()
->
m_BlockLocate
.
m_Flags
=
0
;
GetScreen
()
->
m_BlockLocate
.
m_State
=
STATE_NO_BLOCK
;
...
...
@@ -199,7 +204,7 @@ int WinEDA_ModuleEditFrame::HandleBlockEnd( wxDC* DC )
}
return
MustDoPlace
;
return
nextcmd
;
}
...
...
@@ -214,7 +219,7 @@ void WinEDA_ModuleEditFrame::HandleBlockPlace( wxDC* DC )
*/
{
bool
err
=
FALSE
;
MODULE
*
Currentm
odule
=
GetBoard
()
->
m_Modules
;
MODULE
*
currentM
odule
=
GetBoard
()
->
m_Modules
;
if
(
DrawPanel
->
ManageCurseur
==
NULL
)
{
...
...
@@ -234,15 +239,15 @@ void WinEDA_ModuleEditFrame::HandleBlockPlace( wxDC* DC )
case
BLOCK_MOVE
:
/* Move */
case
BLOCK_PRESELECT_MOVE
:
/* Move with preselection list*/
GetScreen
()
->
m_BlockLocate
.
ClearItemsList
();
SaveCopyInUndoList
(
Currentm
odule
,
UR_MODEDIT
);
MoveMarkedItems
(
Currentm
odule
,
GetScreen
()
->
m_BlockLocate
.
m_MoveVector
);
SaveCopyInUndoList
(
currentM
odule
,
UR_MODEDIT
);
MoveMarkedItems
(
currentM
odule
,
GetScreen
()
->
m_BlockLocate
.
m_MoveVector
);
DrawPanel
->
Refresh
(
TRUE
);
break
;
case
BLOCK_COPY
:
/* Copy */
GetScreen
()
->
m_BlockLocate
.
ClearItemsList
();
SaveCopyInUndoList
(
Currentm
odule
,
UR_MODEDIT
);
CopyMarkedItems
(
Currentm
odule
,
GetScreen
()
->
m_BlockLocate
.
m_MoveVector
);
SaveCopyInUndoList
(
currentM
odule
,
UR_MODEDIT
);
CopyMarkedItems
(
currentM
odule
,
GetScreen
()
->
m_BlockLocate
.
m_MoveVector
);
break
;
case
BLOCK_PASTE
:
/* Paste */
...
...
@@ -252,13 +257,13 @@ void WinEDA_ModuleEditFrame::HandleBlockPlace( wxDC* DC )
case
BLOCK_MIRROR_X
:
case
BLOCK_MIRROR_Y
:
case
BLOCK_FLIP
:
/* Mirror by popup menu, from block move */
SaveCopyInUndoList
(
Currentm
odule
,
UR_MODEDIT
);
MirrorMarkedItems
(
Currentm
odule
,
GetScreen
()
->
m_BlockLocate
.
Centre
()
);
SaveCopyInUndoList
(
currentM
odule
,
UR_MODEDIT
);
MirrorMarkedItems
(
currentM
odule
,
GetScreen
()
->
m_BlockLocate
.
Centre
()
);
break
;
case
BLOCK_ROTATE
:
SaveCopyInUndoList
(
Currentm
odule
,
UR_MODEDIT
);
RotateMarkedItems
(
Currentm
odule
,
GetScreen
()
->
m_BlockLocate
.
Centre
()
);
SaveCopyInUndoList
(
currentM
odule
,
UR_MODEDIT
);
RotateMarkedItems
(
currentM
odule
,
GetScreen
()
->
m_BlockLocate
.
Centre
()
);
break
;
case
BLOCK_ZOOM
:
// Handled by HandleBlockEnd
...
...
@@ -295,7 +300,7 @@ static void DrawMovingBlockOutlines( WinEDA_DrawPanel* panel, wxDC* DC,
BASE_SCREEN
*
screen
=
panel
->
GetScreen
();
BOARD_ITEM
*
item
;
wxPoint
move_offset
;
MODULE
*
Currentm
odule
=
MODULE
*
currentM
odule
=
(
(
WinEDA_BasePcbFrame
*
)
wxGetApp
().
GetTopWindow
()
)
->
m_ModuleEditFrame
->
GetBoard
()
->
m_Modules
;
PtBlock
=
&
screen
->
m_BlockLocate
;
...
...
@@ -306,11 +311,11 @@ static void DrawMovingBlockOutlines( WinEDA_DrawPanel* panel, wxDC* DC,
PtBlock
->
Draw
(
panel
,
DC
,
PtBlock
->
m_MoveVector
,
g_XorMode
,
PtBlock
->
m_Color
);
if
(
Currentm
odule
)
if
(
currentM
odule
)
{
move_offset
.
x
=
-
PtBlock
->
m_MoveVector
.
x
;
move_offset
.
y
=
-
PtBlock
->
m_MoveVector
.
y
;
item
=
Currentm
odule
->
m_Drawings
;
item
=
currentM
odule
->
m_Drawings
;
for
(
;
item
!=
NULL
;
item
=
item
->
Next
()
)
{
if
(
item
->
m_Selected
==
0
)
...
...
@@ -328,7 +333,7 @@ static void DrawMovingBlockOutlines( WinEDA_DrawPanel* panel, wxDC* DC,
}
}
D_PAD
*
pad
=
Currentm
odule
->
m_Pads
;
D_PAD
*
pad
=
currentM
odule
->
m_Pads
;
for
(
;
pad
!=
NULL
;
pad
=
pad
->
Next
()
)
{
if
(
pad
->
m_Selected
==
0
)
...
...
@@ -346,9 +351,9 @@ static void DrawMovingBlockOutlines( WinEDA_DrawPanel* panel, wxDC* DC,
PtBlock
->
m_Color
);
if
(
Currentm
odule
)
if
(
currentM
odule
)
{
item
=
Currentm
odule
->
m_Drawings
;
item
=
currentM
odule
->
m_Drawings
;
move_offset
=
-
PtBlock
->
m_MoveVector
;
for
(
;
item
!=
NULL
;
item
=
item
->
Next
()
)
{
...
...
@@ -367,7 +372,7 @@ static void DrawMovingBlockOutlines( WinEDA_DrawPanel* panel, wxDC* DC,
}
}
D_PAD
*
pad
=
Currentm
odule
->
m_Pads
;
D_PAD
*
pad
=
currentM
odule
->
m_Pads
;
for
(
;
pad
!=
NULL
;
pad
=
pad
->
Next
()
)
{
if
(
pad
->
m_Selected
==
0
)
...
...
pcbnew/module_editor_frame.h
View file @
9b77f2a4
...
...
@@ -93,9 +93,9 @@ public:
bool
Clear_Pcb
(
bool
aQuery
);
/* handlers for block commands */
int
ReturnBlockCommand
(
int
key
);
virtual
int
ReturnBlockCommand
(
int
key
);
virtual
void
HandleBlockPlace
(
wxDC
*
DC
);
virtual
int
HandleBlockEnd
(
wxDC
*
DC
);
virtual
bool
HandleBlockEnd
(
wxDC
*
DC
);
BOARD_ITEM
*
ModeditLocateAndDisplay
(
int
aHotKeyCode
=
0
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment