see change_log.txt for 2007-Sep-11 UPDATE
This commit is contained in:
parent
07f2dd72ff
commit
cb49ea8989
|
@ -5,13 +5,32 @@ Please add newer entries at the top, list the date and your name with
|
||||||
email address.
|
email address.
|
||||||
|
|
||||||
|
|
||||||
|
2007-Sep-11 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||||
|
================================================================================
|
||||||
|
+ pcbnew
|
||||||
|
* Changed PcbLocateAndDisplay() to be tool specific in its search and to present
|
||||||
|
a popup menu when there are multiple items under the mouse. It is also
|
||||||
|
a framework for future enhancements.
|
||||||
|
@todo: grep for @todo and finish off those tasks.
|
||||||
|
* Introduced a formal notion of "selected item". This is done with the addition
|
||||||
|
of the WinEDA_BasePcbFrame::SetCurItem() function. So now you have to first
|
||||||
|
select an item with the left mouse button before you attempt to use the
|
||||||
|
right button popup menu. Right button no longer has an effect on the
|
||||||
|
currently selected item. The currently selected item is shown in the MsgPanel.
|
||||||
|
When none is selected, the m_Pcb is shown.
|
||||||
|
* Tweaked the OnRightClick() popup menus so that the most likely choices are
|
||||||
|
at the top.
|
||||||
|
* Added wxString BOARD_ITEM::MenuText() const and BOARD_ITEM::MenuIcon() and
|
||||||
|
both need more work, work which I will not have time to do.
|
||||||
|
|
||||||
|
|
||||||
2007-Sep-10 UPDATE Dick Hollenbeck <dick@softplc.com>
|
2007-Sep-10 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||||
================================================================================
|
================================================================================
|
||||||
+ pcbnew
|
+ pcbnew
|
||||||
* Searched and did not see any usage of TRACK::Copy(int), where int was other
|
* Searched and did not see any usage of TRACK::Copy(int), where int was other
|
||||||
than '1', so renamed it to TRACK::CopyList(int) and commented it out because
|
than '1', so renamed it to TRACK::CopyList(int) and commented it out because
|
||||||
with int==1, this makes Copy(1) equivalent to the new Copy(void).
|
with int==1, this makes Copy(1) equivalent to the new Copy(void).
|
||||||
* Made TRACK::Copy() capable or copying SEGZONE too.
|
* Made TRACK::Copy() capable of copying SEGZONE too.
|
||||||
|
|
||||||
|
|
||||||
2007-sept-10 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
2007-sept-10 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
||||||
|
|
|
@ -555,13 +555,3 @@ EDA_BaseStruct* BASE_SCREEN::GetItemFromRedoList()
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void BASE_SCREEN::SetCurItem( EDA_BaseStruct* aCurItem )
|
|
||||||
{
|
|
||||||
|
|
||||||
#if 0 && defined(DEBUG)
|
|
||||||
printf( "SetCurItem(%p)\n", aCurItem );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
m_CurrentItem = aCurItem;
|
|
||||||
}
|
|
||||||
|
|
|
@ -477,6 +477,21 @@ public:
|
||||||
return false; // only MODULEs can be locked at this time.
|
return false; // only MODULEs can be locked at this time.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function MenuText
|
||||||
|
* @return wxString - The text to use in any menu type UI control which
|
||||||
|
* must identify this item.
|
||||||
|
* @todo: make this virtual and split into each derived class
|
||||||
|
*/
|
||||||
|
wxString MenuText() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function MenuIcon
|
||||||
|
* @return const char** - The XPM to use in any UI control which can help
|
||||||
|
* identify this item.
|
||||||
|
* @todo: make this virtual and split into each derived class
|
||||||
|
*/
|
||||||
|
const char** MenuIcon() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -215,7 +215,7 @@ private:
|
||||||
char m_FlagRefreshReq; /* indique que l'ecran doit redessine */
|
char m_FlagRefreshReq; /* indique que l'ecran doit redessine */
|
||||||
char m_FlagModified; // indique modif du PCB,utilise pour eviter une sortie sans sauvegarde
|
char m_FlagModified; // indique modif du PCB,utilise pour eviter une sortie sans sauvegarde
|
||||||
char m_FlagSave; // indique sauvegarde auto faite
|
char m_FlagSave; // indique sauvegarde auto faite
|
||||||
EDA_BaseStruct* m_CurrentItem; /* Current selected object */
|
EDA_BaseStruct* m_CurrentItem; ///< Current selected object
|
||||||
|
|
||||||
/* Valeurs du pas de grille et du zoom */
|
/* Valeurs du pas de grille et du zoom */
|
||||||
public:
|
public:
|
||||||
|
@ -232,7 +232,7 @@ public:
|
||||||
BASE_SCREEN( int idscreen, KICAD_T aType = SCREEN_STRUCT_TYPE );
|
BASE_SCREEN( int idscreen, KICAD_T aType = SCREEN_STRUCT_TYPE );
|
||||||
~BASE_SCREEN();
|
~BASE_SCREEN();
|
||||||
|
|
||||||
void InitDatas();/* Inits completes des variables */
|
void InitDatas(); /* Inits completes des variables */
|
||||||
wxSize ReturnPageSize();
|
wxSize ReturnPageSize();
|
||||||
int GetInternalUnits();
|
int GetInternalUnits();
|
||||||
|
|
||||||
|
@ -264,7 +264,11 @@ public:
|
||||||
* activity easier in base_screen.cpp.
|
* activity easier in base_screen.cpp.
|
||||||
* @param current Any object derived from EDA_BaseStruct
|
* @param current Any object derived from EDA_BaseStruct
|
||||||
*/
|
*/
|
||||||
void SetCurItem( EDA_BaseStruct* current );
|
void SetCurItem( EDA_BaseStruct* current )
|
||||||
|
{
|
||||||
|
m_CurrentItem = current;
|
||||||
|
}
|
||||||
|
|
||||||
EDA_BaseStruct* GetCurItem() const { return m_CurrentItem; }
|
EDA_BaseStruct* GetCurItem() const { return m_CurrentItem; }
|
||||||
|
|
||||||
/* fonctions relatives au zoom */
|
/* fonctions relatives au zoom */
|
||||||
|
@ -290,7 +294,7 @@ public:
|
||||||
* Function RefPos
|
* Function RefPos
|
||||||
* returns the reference position, coming from either the mouse position or the
|
* returns the reference position, coming from either the mouse position or the
|
||||||
* the cursor position.
|
* the cursor position.
|
||||||
* @param useMouse If true, return mouse posistion, else cursor's.
|
* @param useMouse If true, return mouse position, else cursor's.
|
||||||
* @return wxPoint - The reference point, either the mouse position or
|
* @return wxPoint - The reference point, either the mouse position or
|
||||||
* the cursor position.
|
* the cursor position.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
#ifndef ID_H
|
#ifndef ID_H
|
||||||
#define ID_H
|
#define ID_H
|
||||||
|
|
||||||
|
#define MAX_ITEMS_IN_PICKER 15 ///< max no. items in the popup menu for item selection
|
||||||
|
|
||||||
enum main_id {
|
enum main_id {
|
||||||
ID_MAIN_FRAME = 100,
|
ID_MAIN_FRAME = 100,
|
||||||
ID_LEFT_FRAME,
|
ID_LEFT_FRAME,
|
||||||
|
@ -635,6 +637,10 @@ enum main_id {
|
||||||
|
|
||||||
ID_POPUP_PCB_END_RANGE,
|
ID_POPUP_PCB_END_RANGE,
|
||||||
|
|
||||||
|
// reserve a block of MAX_ITEMS_IN_PICKER ids for the item selection popup
|
||||||
|
ID_POPUP_PCB_ITEM_SELECTION_START,
|
||||||
|
ID_POPUP_PCB_ITEM_SELECTION_END = MAX_ITEMS_IN_PICKER + ID_POPUP_PCB_ITEM_SELECTION_START,
|
||||||
|
|
||||||
ID_POPUP_PCB_AUTOPLACE_START_RANGE,
|
ID_POPUP_PCB_AUTOPLACE_START_RANGE,
|
||||||
|
|
||||||
ID_POPUP_PCB_AUTOPLACE_FIXE_MODULE,
|
ID_POPUP_PCB_AUTOPLACE_FIXE_MODULE,
|
||||||
|
@ -858,7 +864,6 @@ enum main_id {
|
||||||
ID_PCB_MUWAVE_END_CMD,
|
ID_PCB_MUWAVE_END_CMD,
|
||||||
|
|
||||||
ID_END_LIST
|
ID_END_LIST
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* define ID_H */
|
#endif /* define ID_H */
|
||||||
|
|
|
@ -276,9 +276,9 @@ public:
|
||||||
* returned, otherwise any visible Pad or Module on any other layer.
|
* returned, otherwise any visible Pad or Module on any other layer.
|
||||||
* The provided layer must be visible.
|
* The provided layer must be visible.
|
||||||
* @param refPos The wxPoint to hit-test.
|
* @param refPos The wxPoint to hit-test.
|
||||||
* @return EDA_BaseStruct* - if a direct hit, else NULL.
|
* @return BOARD_ITEM* - if a direct hit, else NULL.
|
||||||
*/
|
*/
|
||||||
EDA_BaseStruct* FindPadOrModule( const wxPoint& refPos, int layer );
|
// BOARD_ITEM* FindPadOrModule( const wxPoint& refPos, int layer );
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -340,9 +340,7 @@ public:
|
||||||
WinEDA3D_DrawFrame* m_Draw3DFrame;
|
WinEDA3D_DrawFrame* m_Draw3DFrame;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
#if defined(DEBUG)
|
|
||||||
GENERAL_COLLECTOR* m_Collector;
|
GENERAL_COLLECTOR* m_Collector;
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -392,17 +390,39 @@ public:
|
||||||
|
|
||||||
// Gestion du PCB
|
// Gestion du PCB
|
||||||
bool Clear_Pcb( wxDC* DC, bool query );
|
bool Clear_Pcb( wxDC* DC, bool query );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function PcbGeneralLocateAndDisplay
|
||||||
|
* searches for an item under the mouse cursor.
|
||||||
|
* Items are searched first on the current working layer.
|
||||||
|
* If nothing found, an item will be searched without layer restriction. If
|
||||||
|
* more than one item is found meeting the current working layer criterion, then
|
||||||
|
* a popup menu is shown which allows the user to pick which item he/she is
|
||||||
|
* interested in. Once an item is chosen, then it is make the "current item"
|
||||||
|
* and the status window is updated to reflect this.
|
||||||
|
*/
|
||||||
BOARD_ITEM* PcbGeneralLocateAndDisplay();
|
BOARD_ITEM* PcbGeneralLocateAndDisplay();
|
||||||
|
|
||||||
BOARD_ITEM* Locate( int typeloc, int LayerSearch );
|
BOARD_ITEM* Locate( int typeloc, int LayerSearch );
|
||||||
|
void ProcessItemSelection( wxCommandEvent& event );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function SetCurItem
|
||||||
|
* sets the currently selected item and displays it in the MsgPanel.
|
||||||
|
* If the given item is NULL then the MsgPanel is erased and there is no
|
||||||
|
* currently selected item. This function is intended to make the process
|
||||||
|
* of "selecting" an item more formal, and to indivisibly tie the operation
|
||||||
|
* of selecting an item to displaying it using BOARD_ITEM::Display_Infos().
|
||||||
|
* @param aItem The BOARD_ITEM to make the selected item or NULL if none.
|
||||||
|
*/
|
||||||
|
void SetCurItem( BOARD_ITEM* aItem );
|
||||||
|
BOARD_ITEM* GetCurItem();
|
||||||
|
|
||||||
#if defined(DEBUG)
|
|
||||||
/**
|
/**
|
||||||
* Function GetCollectorsGuide
|
* Function GetCollectorsGuide
|
||||||
* @return GENERAL_COLLECTORS_GUIDE - that considers the global configuration options.
|
* @return GENERAL_COLLECTORS_GUIDE - that considers the global configuration options.
|
||||||
*/
|
*/
|
||||||
GENERAL_COLLECTORS_GUIDE GetCollectorsGuide();
|
GENERAL_COLLECTORS_GUIDE GetCollectorsGuide();
|
||||||
#endif
|
|
||||||
|
|
||||||
// Gestion du curseur
|
// Gestion du curseur
|
||||||
void place_marqueur( wxDC* DC, const wxPoint& pos, char* pt_bitmap,
|
void place_marqueur( wxDC* DC, const wxPoint& pos, char* pt_bitmap,
|
||||||
|
@ -456,9 +476,11 @@ public:
|
||||||
// Chargement de modules
|
// Chargement de modules
|
||||||
MODULE* Get_Librairie_Module( wxWindow* winaff, const wxString& library,
|
MODULE* Get_Librairie_Module( wxWindow* winaff, const wxString& library,
|
||||||
const wxString& ModuleName, bool show_msg_err );
|
const wxString& ModuleName, bool show_msg_err );
|
||||||
|
|
||||||
wxString Select_1_Module_From_List(
|
wxString Select_1_Module_From_List(
|
||||||
WinEDA_DrawFrame* active_window, const wxString& Library,
|
WinEDA_DrawFrame* active_window, const wxString& Library,
|
||||||
const wxString& Mask, const wxString& KeyWord );
|
const wxString& Mask, const wxString& KeyWord );
|
||||||
|
|
||||||
MODULE* Load_Module_From_Library( const wxString& library, wxDC* DC );
|
MODULE* Load_Module_From_Library( const wxString& library, wxDC* DC );
|
||||||
|
|
||||||
// Gestion des chevelus (ratsnest)
|
// Gestion des chevelus (ratsnest)
|
||||||
|
@ -514,6 +536,8 @@ public:
|
||||||
// divers
|
// divers
|
||||||
void AddHistory( int value, KICAD_T type ); // Add value in data list history
|
void AddHistory( int value, KICAD_T type ); // Add value in data list history
|
||||||
void InstallGridFrame( const wxPoint& pos );
|
void InstallGridFrame( const wxPoint& pos );
|
||||||
|
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -533,6 +557,27 @@ private:
|
||||||
bool m_SelViaSizeBox_Changed;
|
bool m_SelViaSizeBox_Changed;
|
||||||
wxMenu* m_FilesMenu;
|
wxMenu* m_FilesMenu;
|
||||||
|
|
||||||
|
#if 0 && defined(DEBUG)
|
||||||
|
/**
|
||||||
|
* Function onRightClickBuilder
|
||||||
|
* is a helper function for private use by OnRightClick(). It helps build
|
||||||
|
* the hierarchical menu.
|
||||||
|
* @param collectorNdx The index into the COLLECTOR that \a aItem represents.
|
||||||
|
* @param aItem The BOARD_ITEM to provide menu support for, or NULL if
|
||||||
|
* nothing was under the mouse.
|
||||||
|
* @param pPopMenu What to populate with choices.
|
||||||
|
*/
|
||||||
|
void onRightClickBuilder( int collectorNdx, BOARD_ITEM* aItem, wxMenu* aPopMenu );
|
||||||
|
|
||||||
|
void popUpMenuForFootprints( int collectorNdx, MODULE* aModule, wxMenu* aPopMenu );
|
||||||
|
|
||||||
|
void popUpMenuForFpTexts( int collectorNdx, TEXTE_MODULE* aText, wxMenu* aPopMenu );
|
||||||
|
|
||||||
|
void popUpMenuForFpPads( int collectorNdx, D_PAD* aPad, wxMenu* aPopMenu );
|
||||||
|
|
||||||
|
void popupMenuForTracks( int collectorNdx, TRACK* aTrack, wxMenu* aPopMenu );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
WinEDA_PcbFrame( wxWindow* father, WinEDA_App* parent, const wxString& title,
|
WinEDA_PcbFrame( wxWindow* father, WinEDA_App* parent, const wxString& title,
|
||||||
|
@ -549,6 +594,7 @@ public:
|
||||||
|
|
||||||
void OnCloseWindow( wxCloseEvent& Event );
|
void OnCloseWindow( wxCloseEvent& Event );
|
||||||
void Process_Special_Functions( wxCommandEvent& event );
|
void Process_Special_Functions( wxCommandEvent& event );
|
||||||
|
|
||||||
void ProcessMuWaveFunctions( wxCommandEvent& event );
|
void ProcessMuWaveFunctions( wxCommandEvent& event );
|
||||||
void MuWaveCommand( wxDC* DC, const wxPoint& MousePos );
|
void MuWaveCommand( wxDC* DC, const wxPoint& MousePos );
|
||||||
|
|
||||||
|
@ -898,7 +944,7 @@ public:
|
||||||
virtual void HandleBlockPlace( wxDC* DC );
|
virtual void HandleBlockPlace( wxDC* DC );
|
||||||
virtual int HandleBlockEnd( wxDC* DC );
|
virtual int HandleBlockEnd( wxDC* DC );
|
||||||
|
|
||||||
EDA_BaseStruct* ModeditLocateAndDisplay();
|
BOARD_ITEM* ModeditLocateAndDisplay();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void SaveCopyInUndoList( EDA_BaseStruct* ItemToCopy, int flag_type_command = 0 );
|
void SaveCopyInUndoList( EDA_BaseStruct* ItemToCopy, int flag_type_command = 0 );
|
||||||
|
|
|
@ -15,15 +15,24 @@
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
#include "id.h"
|
#include "id.h"
|
||||||
|
|
||||||
#if defined(DEBUG)
|
|
||||||
#include "collectors.h"
|
#include "collectors.h"
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************/
|
/*******************************/
|
||||||
/* class WinEDA_BasePcbFrame */
|
/* class WinEDA_BasePcbFrame */
|
||||||
/*******************************/
|
/*******************************/
|
||||||
|
|
||||||
|
BEGIN_EVENT_TABLE( WinEDA_BasePcbFrame, WinEDA_DrawFrame )
|
||||||
|
|
||||||
|
COMMON_EVENTS_DRAWFRAME
|
||||||
|
|
||||||
|
EVT_MENU_RANGE( ID_POPUP_PCB_ITEM_SELECTION_START, ID_POPUP_PCB_ITEM_SELECTION_END,
|
||||||
|
WinEDA_BasePcbFrame::ProcessItemSelection )
|
||||||
|
|
||||||
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/****************/
|
/****************/
|
||||||
/* Constructeur */
|
/* Constructeur */
|
||||||
/****************/
|
/****************/
|
||||||
|
@ -48,18 +57,13 @@ WinEDA_BasePcbFrame::WinEDA_BasePcbFrame( wxWindow* father,
|
||||||
m_DisplayPcbTrackFill = TRUE; /* FALSE = sketch , TRUE = filled */
|
m_DisplayPcbTrackFill = TRUE; /* FALSE = sketch , TRUE = filled */
|
||||||
m_Draw3DFrame = NULL; // Display Window in 3D mode (OpenGL)
|
m_Draw3DFrame = NULL; // Display Window in 3D mode (OpenGL)
|
||||||
|
|
||||||
#if defined(DEBUG)
|
|
||||||
m_Collector = new GENERAL_COLLECTOR();
|
m_Collector = new GENERAL_COLLECTOR();
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
WinEDA_BasePcbFrame::~WinEDA_BasePcbFrame( void )
|
WinEDA_BasePcbFrame::~WinEDA_BasePcbFrame( void )
|
||||||
{
|
{
|
||||||
#if defined(DEBUG)
|
|
||||||
delete m_Collector;
|
delete m_Collector;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -168,7 +172,51 @@ void WinEDA_BasePcbFrame::SwitchLayer( wxDC* DC, int layer )
|
||||||
GetScreen()->SetRefreshReq();
|
GetScreen()->SetRefreshReq();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************/
|
||||||
|
void WinEDA_BasePcbFrame::ProcessItemSelection( wxCommandEvent& event )
|
||||||
|
/*****************************************************************/
|
||||||
|
{
|
||||||
|
int id = event.GetId();
|
||||||
|
|
||||||
|
// index into the collector list:
|
||||||
|
int itemNdx = id - ID_POPUP_PCB_ITEM_SELECTION_START;
|
||||||
|
|
||||||
|
BOARD_ITEM* item = (*m_Collector)[itemNdx];
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if defined(DEBUG)
|
||||||
|
item->Show( 0, std::cout );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
SetCurItem( item );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************/
|
||||||
|
void WinEDA_BasePcbFrame::SetCurItem( BOARD_ITEM* aItem )
|
||||||
|
/*****************************************************************/
|
||||||
|
{
|
||||||
|
m_CurrentScreen->SetCurItem( aItem );
|
||||||
|
if( aItem )
|
||||||
|
aItem->Display_Infos(this);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// we can use either of these:
|
||||||
|
//MsgPanel->EraseMsgBox();
|
||||||
|
m_Pcb->Display_Infos(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************/
|
||||||
|
BOARD_ITEM* WinEDA_BasePcbFrame::GetCurItem()
|
||||||
|
/*****************************************************************/
|
||||||
|
{
|
||||||
|
return (BOARD_ITEM*) m_CurrentScreen->GetCurItem();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************/
|
/****************************************************************/
|
||||||
GENERAL_COLLECTORS_GUIDE WinEDA_BasePcbFrame::GetCollectorsGuide()
|
GENERAL_COLLECTORS_GUIDE WinEDA_BasePcbFrame::GetCollectorsGuide()
|
||||||
/****************************************************************/
|
/****************************************************************/
|
||||||
|
@ -185,6 +233,3 @@ GENERAL_COLLECTORS_GUIDE WinEDA_BasePcbFrame::GetCollectorsGuide()
|
||||||
|
|
||||||
return guide;
|
return guide;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* XPM */
|
/* XPM */
|
||||||
char * footprint_text_xpm[] = {
|
static char * footprint_text_xpm[] = {
|
||||||
"16 16 4 1",
|
"16 16 4 1",
|
||||||
" c None",
|
" c None",
|
||||||
". c #009B9B",
|
". c #009B9B",
|
||||||
|
@ -21,4 +21,3 @@ char * footprint_text_xpm[] = {
|
||||||
" .....+ ",
|
" .....+ ",
|
||||||
" ........ ",
|
" ........ ",
|
||||||
" "};
|
" "};
|
||||||
|
|
||||||
|
|
|
@ -439,7 +439,7 @@ void WinEDA_BasePcbFrame::Block_Delete( wxDC* DC )
|
||||||
|
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
GetScreen()->BlockLocate.Normalize();
|
GetScreen()->BlockLocate.Normalize();
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
|
|
||||||
/* Effacement des modules */
|
/* Effacement des modules */
|
||||||
if( Block_Include_Modules )
|
if( Block_Include_Modules )
|
||||||
|
|
|
@ -192,7 +192,7 @@ int WinEDA_ModuleEditFrame::HandleBlockEnd( wxDC* DC )
|
||||||
GetScreen()->BlockLocate.m_Command = BLOCK_IDLE;
|
GetScreen()->BlockLocate.m_Command = BLOCK_IDLE;
|
||||||
DrawPanel->ManageCurseur = NULL;
|
DrawPanel->ManageCurseur = NULL;
|
||||||
DrawPanel->ForceCloseManageCurseur = NULL;
|
DrawPanel->ForceCloseManageCurseur = NULL;
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
SetToolID( m_ID_current_state, DrawPanel->m_PanelDefaultCursor, wxEmptyString );
|
SetToolID( m_ID_current_state, DrawPanel->m_PanelDefaultCursor, wxEmptyString );
|
||||||
DrawPanel->Refresh( TRUE );
|
DrawPanel->Refresh( TRUE );
|
||||||
}
|
}
|
||||||
|
@ -275,7 +275,7 @@ void WinEDA_ModuleEditFrame::HandleBlockPlace( wxDC* DC )
|
||||||
GetScreen()->BlockLocate.m_Flags = 0;
|
GetScreen()->BlockLocate.m_Flags = 0;
|
||||||
GetScreen()->BlockLocate.m_State = STATE_NO_BLOCK;
|
GetScreen()->BlockLocate.m_State = STATE_NO_BLOCK;
|
||||||
GetScreen()->BlockLocate.m_Command = BLOCK_IDLE;
|
GetScreen()->BlockLocate.m_Command = BLOCK_IDLE;
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
DrawPanel->Refresh( TRUE );
|
DrawPanel->Refresh( TRUE );
|
||||||
|
|
||||||
SetToolID( m_ID_current_state, DrawPanel->m_PanelDefaultCursor, wxEmptyString );
|
SetToolID( m_ID_current_state, DrawPanel->m_PanelDefaultCursor, wxEmptyString );
|
||||||
|
|
|
@ -440,8 +440,9 @@ SEARCH_RESULT BOARD::Visit( INSPECTOR* inspector, const void* testData,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
// see pcbstruct.h
|
// see pcbstruct.h
|
||||||
EDA_BaseStruct* BOARD::FindPadOrModule( const wxPoint& refPos, int layer )
|
BOARD_ITEM* BOARD::FindPadOrModule( const wxPoint& refPos, int layer )
|
||||||
{
|
{
|
||||||
class PadOrModule : public INSPECTOR
|
class PadOrModule : public INSPECTOR
|
||||||
{
|
{
|
||||||
|
@ -514,6 +515,7 @@ EDA_BaseStruct* BOARD::FindPadOrModule( const wxPoint& refPos, int layer )
|
||||||
|
|
||||||
return inspector.found;
|
return inspector.found;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1170,6 +1170,7 @@ bool MODULE::HitTest( const wxPoint& refPos )
|
||||||
if( m_BoundaryBox.Inside( spot_cX, spot_cY ) )
|
if( m_BoundaryBox.Inside( spot_cX, spot_cY ) )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
/* no
|
||||||
// The GENERAL_COLLECTOR needs these two tests in order to find a MODULE
|
// The GENERAL_COLLECTOR needs these two tests in order to find a MODULE
|
||||||
// when the user clicks on its text. Keep these 2, needed in OnRightClick().
|
// when the user clicks on its text. Keep these 2, needed in OnRightClick().
|
||||||
if( m_Reference->HitTest( refPos ) )
|
if( m_Reference->HitTest( refPos ) )
|
||||||
|
@ -1177,7 +1178,7 @@ bool MODULE::HitTest( const wxPoint& refPos )
|
||||||
|
|
||||||
if( m_Value->HitTest( refPos ) )
|
if( m_Value->HitTest( refPos ) )
|
||||||
return true;
|
return true;
|
||||||
|
*/
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,8 +22,6 @@
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined(DEBUG)
|
|
||||||
|
|
||||||
#include "collectors.h"
|
#include "collectors.h"
|
||||||
#include "pcbnew.h" // class BOARD
|
#include "pcbnew.h" // class BOARD
|
||||||
|
|
||||||
|
@ -60,6 +58,26 @@ const KICAD_T GENERAL_COLLECTOR::PrimaryItems[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const KICAD_T GENERAL_COLLECTOR::ModuleItems[] = {
|
||||||
|
TYPEMODULE,
|
||||||
|
EOT
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const KICAD_T GENERAL_COLLECTOR::PadsOrModules[] = {
|
||||||
|
TYPEPAD,
|
||||||
|
TYPEMODULE,
|
||||||
|
EOT
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const KICAD_T GENERAL_COLLECTOR::Tracks[] = {
|
||||||
|
TYPETRACK,
|
||||||
|
TYPEVIA,
|
||||||
|
EOT
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Inspect
|
* Function Inspect
|
||||||
* is the examining function within the INSPECTOR which is passed to the
|
* is the examining function within the INSPECTOR which is passed to the
|
||||||
|
@ -77,7 +95,7 @@ SEARCH_RESULT GENERAL_COLLECTOR::Inspect( EDA_BaseStruct* testItem, const void*
|
||||||
BOARD_ITEM* item = (BOARD_ITEM*) testItem;
|
BOARD_ITEM* item = (BOARD_ITEM*) testItem;
|
||||||
MODULE* module = NULL;
|
MODULE* module = NULL;
|
||||||
|
|
||||||
#if 1 // debugging
|
#if 0 // debugging
|
||||||
static int breakhere = 0;
|
static int breakhere = 0;
|
||||||
switch( item->Type() )
|
switch( item->Type() )
|
||||||
{
|
{
|
||||||
|
@ -259,6 +277,9 @@ void GENERAL_COLLECTOR::Collect( BOARD_ITEM* aItem, const KICAD_T aScanList[],
|
||||||
|
|
||||||
SetTimeNow(); // when snapshot was taken
|
SetTimeNow(); // when snapshot was taken
|
||||||
|
|
||||||
|
// record the length of the primary list before concatonating on to it.
|
||||||
|
m_PrimaryLength = m_List.size();
|
||||||
|
|
||||||
// append 2nd list onto end of the first list
|
// append 2nd list onto end of the first list
|
||||||
for( unsigned i=0; i<m_List2nd.size(); ++i )
|
for( unsigned i=0; i<m_List2nd.size(); ++i )
|
||||||
Append( m_List2nd[i] );
|
Append( m_List2nd[i] );
|
||||||
|
@ -267,6 +288,4 @@ void GENERAL_COLLECTOR::Collect( BOARD_ITEM* aItem, const KICAD_T aScanList[],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif // DEBUG
|
|
||||||
|
|
||||||
//EOF
|
//EOF
|
||||||
|
|
|
@ -186,6 +186,13 @@ protected:
|
||||||
const COLLECTORS_GUIDE* m_Guide;
|
const COLLECTORS_GUIDE* m_Guide;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of items that were originally in the primary list before the
|
||||||
|
* m_List2nd was concatonated onto the end of it.
|
||||||
|
*/
|
||||||
|
int m_PrimaryLength;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -201,6 +208,24 @@ public:
|
||||||
static const KICAD_T PrimaryItems[];
|
static const KICAD_T PrimaryItems[];
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A scan list for only MODULEs
|
||||||
|
*/
|
||||||
|
static const KICAD_T ModuleItems[];
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A scan list for PADs or MODULEs
|
||||||
|
*/
|
||||||
|
static const KICAD_T PadsOrModules[];
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A scan list for only TRACKS
|
||||||
|
*/
|
||||||
|
static const KICAD_T Tracks[];
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor GENERALCOLLECTOR
|
* Constructor GENERALCOLLECTOR
|
||||||
*/
|
*/
|
||||||
|
@ -243,6 +268,13 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetPrimaryCount
|
||||||
|
* @return int - The number if items which met the primary search criteria
|
||||||
|
*/
|
||||||
|
int GetPrimaryCount() { return m_PrimaryLength; }
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Inspect
|
* Function Inspect
|
||||||
* is the examining function within the INSPECTOR which is passed to the
|
* is the examining function within the INSPECTOR which is passed to the
|
||||||
|
|
|
@ -18,6 +18,13 @@
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
#include "collectors.h"
|
#include "collectors.h"
|
||||||
|
|
||||||
|
#include "bitmaps.h"
|
||||||
|
#include "Footprint_Text.xpm"
|
||||||
|
#include "add_cotation.xpm"
|
||||||
|
#include "Add_Mires.xpm"
|
||||||
|
#include "Add_Zone.xpm"
|
||||||
|
|
||||||
|
|
||||||
/* Routines Locales : */
|
/* Routines Locales : */
|
||||||
|
|
||||||
/* Variables Locales */
|
/* Variables Locales */
|
||||||
|
@ -117,48 +124,282 @@ void RemoteCommand( const char* cmdline )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @todo: move this to proper source file.
|
||||||
|
wxString BOARD_ITEM::MenuText() const
|
||||||
|
{
|
||||||
|
wxString text;
|
||||||
|
const BOARD_ITEM* item = this;
|
||||||
|
|
||||||
|
switch( item->Type() )
|
||||||
|
{
|
||||||
|
case PCB_EQUIPOT_STRUCT_TYPE:
|
||||||
|
text << _("Net") << ((EQUIPOT*)item)->m_Netname << wxT(" ") << ((EQUIPOT*)item)->m_NetCode;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPEMODULE:
|
||||||
|
text << _("Footprint") << wxT(" ") << ((MODULE*)item)->GetReference();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPEPAD:
|
||||||
|
text << _("Pad") << wxT(" ") << ((D_PAD*)item)->ReturnStringPadName() << _(" of ") << GetParent()->MenuText();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPEDRAWSEGMENT:
|
||||||
|
text << _("PGraphic");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPETEXTE:
|
||||||
|
text << _("Pcb Text") << wxT(" ");;
|
||||||
|
if( ((TEXTE_PCB*)item)->m_Text.Len() < 12 )
|
||||||
|
text << ((TEXTE_PCB*)item)->m_Text;
|
||||||
|
else
|
||||||
|
text += ((TEXTE_PCB*)item)->m_Text.Left( 10 ) + wxT( ".." );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPETEXTEMODULE:
|
||||||
|
switch( ((TEXTE_MODULE*)item)->m_Type )
|
||||||
|
{
|
||||||
|
case TEXT_is_REFERENCE:
|
||||||
|
text << _( "Reference" ) << wxT( " " ) << ((TEXTE_MODULE*)item)->m_Text;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TEXT_is_VALUE:
|
||||||
|
text << _( "Value" ) << wxT( " " ) << ((TEXTE_MODULE*)item)->m_Text << _(" of ") << GetParent()->MenuText();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
text << _( "Text" ) << wxT( " " ) << ((TEXTE_MODULE*)item)->m_Text << _(" of ") << GetParent()->MenuText();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPEEDGEMODULE:
|
||||||
|
text << _("MGraphic"); // @todo: expand on the text
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPETRACK:
|
||||||
|
text << _("Track"); // @todo: expand on the text
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPEZONE:
|
||||||
|
text << _("Zone"); // @todo: expand on the text
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPEVIA:
|
||||||
|
text << _("Via"); // @todo: expand on text
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPEMARQUEUR:
|
||||||
|
text << _("Marker");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPECOTATION:
|
||||||
|
text << _("Dimension"); // @todo: extend text
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPEMIRE:
|
||||||
|
text << _("Mire"); // @todo: extend text, Mire is not an english word!
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPEEDGEZONE:
|
||||||
|
text << _("Graphic"); // @todo: extend text
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
text << item->ReturnClassName() << wxT(" BUG!!");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @todo: move this to proper source file.
|
||||||
|
const char** BOARD_ITEM::MenuIcon() const
|
||||||
|
{
|
||||||
|
char** xpm;
|
||||||
|
const BOARD_ITEM* item = this;
|
||||||
|
|
||||||
|
switch( item->Type() )
|
||||||
|
{
|
||||||
|
case PCB_EQUIPOT_STRUCT_TYPE:
|
||||||
|
xpm = module_xpm; // @todo: use net icon
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPEMODULE:
|
||||||
|
xpm = module_xpm;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPEPAD:
|
||||||
|
xpm = pad_xpm;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPEDRAWSEGMENT:
|
||||||
|
xpm = module_xpm; // @todo: use draw segment icon & expand on text
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPETEXTE:
|
||||||
|
xpm = add_text_xpm;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPETEXTEMODULE:
|
||||||
|
xpm = footprint_text_xpm;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPEEDGEMODULE:
|
||||||
|
xpm = show_mod_edge_xpm;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPETRACK:
|
||||||
|
xpm = showtrack_xpm;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPEZONE:
|
||||||
|
xpm = add_zone_xpm;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPEVIA:
|
||||||
|
xpm = showtrack_xpm; // @todo: use via specific xpm
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPEMARQUEUR:
|
||||||
|
xpm = pad_xpm; // @todo: create and use marker xpm
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPECOTATION:
|
||||||
|
xpm = add_cotation_xpm;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPEMIRE:
|
||||||
|
xpm = add_mires_xpm;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPEEDGEZONE:
|
||||||
|
xpm = show_mod_edge_xpm; // @todo: pcb edge xpm
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
xpm = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (const char**) xpm;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************/
|
/***********************************************************************/
|
||||||
BOARD_ITEM* WinEDA_BasePcbFrame::PcbGeneralLocateAndDisplay()
|
BOARD_ITEM* WinEDA_BasePcbFrame::PcbGeneralLocateAndDisplay()
|
||||||
/***********************************************************************/
|
/***********************************************************************/
|
||||||
|
|
||||||
/* Search an item under the mouse cursor.
|
|
||||||
* items are searched first on the current working layer.
|
|
||||||
* if nothing found, an item will be searched without layer restriction
|
|
||||||
*/
|
|
||||||
{
|
{
|
||||||
BOARD_ITEM* item;
|
BOARD_ITEM* item;
|
||||||
|
|
||||||
#if defined(DEBUG)
|
|
||||||
|
|
||||||
// test scaffolding for Collect():
|
|
||||||
GENERAL_COLLECTORS_GUIDE guide = GetCollectorsGuide();
|
GENERAL_COLLECTORS_GUIDE guide = GetCollectorsGuide();
|
||||||
|
|
||||||
m_Collector->Collect( m_Pcb,
|
// Assign to scanList the proper item types desired based on tool type.
|
||||||
GetScreen()->RefPos(true),
|
// May need to pass a hot key code to this function to support hot keys too.
|
||||||
&guide );
|
|
||||||
|
|
||||||
// use only the first one collected for now.
|
const KICAD_T* scanList;
|
||||||
item = (*m_Collector)[0]; // grab first one, may be NULL
|
|
||||||
|
|
||||||
std::cout << "collected " << m_Collector->GetCount() << '\n'; // debugging only
|
if( m_ID_current_state == 0 )
|
||||||
|
|
||||||
if( item )
|
|
||||||
{
|
{
|
||||||
item->Display_Infos( this );
|
switch( m_HTOOL_current_state )
|
||||||
|
{
|
||||||
|
case ID_TOOLBARH_PCB_AUTOPLACE:
|
||||||
|
scanList = GENERAL_COLLECTOR::ModuleItems;
|
||||||
|
break;
|
||||||
|
|
||||||
// debugging: print out the collected items, showing their priority order too.
|
default:
|
||||||
|
scanList = GENERAL_COLLECTOR::AllBoardItems;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch( m_ID_current_state )
|
||||||
|
{
|
||||||
|
case ID_PCB_SHOW_1_RATSNEST_BUTT:
|
||||||
|
scanList = GENERAL_COLLECTOR::PadsOrModules;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ID_TRACK_BUTT:
|
||||||
|
scanList = GENERAL_COLLECTOR::Tracks;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ID_COMPONENT_BUTT:
|
||||||
|
scanList = GENERAL_COLLECTOR::ModuleItems;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
scanList = GENERAL_COLLECTOR::AllBoardItems;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_Collector->Collect( m_Pcb, scanList, GetScreen()->RefPos(true), guide );
|
||||||
|
|
||||||
|
/* debugging: print out the collected items, showing their priority order too.
|
||||||
for( unsigned i=0; i<m_Collector->GetCount(); ++i )
|
for( unsigned i=0; i<m_Collector->GetCount(); ++i )
|
||||||
(*m_Collector)[i]->Show( 0, std::cout );
|
(*m_Collector)[i]->Show( 0, std::cout );
|
||||||
|
*/
|
||||||
|
|
||||||
|
if( m_Collector->GetCount() <= 1 )
|
||||||
|
{
|
||||||
|
item = (*m_Collector)[0];
|
||||||
|
SetCurItem( item );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the first item is a pad or moduletext, and the 2nd item is its parent module:
|
||||||
|
else if( m_Collector->GetCount() == 2 &&
|
||||||
|
( (*m_Collector)[0]->Type() == TYPEPAD || (*m_Collector)[0]->Type() == TYPETEXTEMODULE) &&
|
||||||
|
(*m_Collector)[1]->Type() == TYPEMODULE && (*m_Collector)[0]->GetParent()==(*m_Collector)[1] )
|
||||||
|
{
|
||||||
|
item = (*m_Collector)[0];
|
||||||
|
SetCurItem( item );
|
||||||
|
}
|
||||||
|
else // show a popup menu
|
||||||
|
{
|
||||||
|
wxMenu itemMenu;
|
||||||
|
|
||||||
|
int limit = MIN( MAX_ITEMS_IN_PICKER, m_Collector->GetCount() );
|
||||||
|
|
||||||
|
itemMenu.SetTitle( _("Selection Clarification") ); // does this work? not under Linux!
|
||||||
|
|
||||||
|
for( int i=0; i<limit; ++i )
|
||||||
|
{
|
||||||
|
wxString text;
|
||||||
|
const char** xpm;
|
||||||
|
|
||||||
|
item = (*m_Collector)[i];
|
||||||
|
|
||||||
|
text = item->MenuText();
|
||||||
|
xpm = item->MenuIcon();
|
||||||
|
|
||||||
|
ADD_MENUITEM( &itemMenu, ID_POPUP_PCB_ITEM_SELECTION_START+i, text, xpm );
|
||||||
|
}
|
||||||
|
|
||||||
|
DrawPanel->m_IgnoreMouseEvents = TRUE;
|
||||||
|
|
||||||
|
// this menu's handler is void WinEDA_BasePcbFrame::ProcessItemSelection()
|
||||||
|
// and it calls SetCurItem() which in turn calls Display_Infos() on the item.
|
||||||
|
PopupMenu( &itemMenu );
|
||||||
|
|
||||||
|
DrawPanel->MouseToCursorSchema();
|
||||||
|
|
||||||
|
DrawPanel->m_IgnoreMouseEvents = FALSE;
|
||||||
|
|
||||||
|
// The function ProcessItemSelection() has set the current item, return it.
|
||||||
|
item = GetCurItem();
|
||||||
|
}
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
|
|
||||||
#else
|
/* old way:
|
||||||
|
|
||||||
item = Locate( CURSEUR_OFF_GRILLE, GetScreen()->m_Active_Layer );
|
item = Locate( CURSEUR_OFF_GRILLE, GetScreen()->m_Active_Layer );
|
||||||
if( item == NULL )
|
if( item == NULL )
|
||||||
item = Locate( CURSEUR_OFF_GRILLE, -1 );
|
item = Locate( CURSEUR_OFF_GRILLE, -1 );
|
||||||
return item;
|
return item;
|
||||||
#endif
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -219,7 +219,7 @@ static void Exit_EditCotation( WinEDA_DrawPanel* Panel, wxDC* DC )
|
||||||
status_cotation = 0;
|
status_cotation = 0;
|
||||||
Panel->ManageCurseur = NULL;
|
Panel->ManageCurseur = NULL;
|
||||||
Panel->ForceCloseManageCurseur = NULL;
|
Panel->ForceCloseManageCurseur = NULL;
|
||||||
Panel->GetScreen()->SetCurItem( NULL );
|
((WinEDA_PcbFrame*)Panel->m_Parent)->SetCurItem(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -96,7 +96,7 @@ TRACK* WinEDA_PcbFrame::Delete_Segment( wxDC* DC, TRACK* Track )
|
||||||
Hight_Light( DC );
|
Hight_Light( DC );
|
||||||
g_CurrentTrackSegment = NULL;
|
g_CurrentTrackSegment = NULL;
|
||||||
g_FirstTrackSegment = NULL;
|
g_FirstTrackSegment = NULL;
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -622,7 +622,7 @@ void WinEDA_ModulePropertiesFrame::ExchangeModule( wxCommandEvent& event )
|
||||||
m_DC, wxPoint( -1, -1 ) );
|
m_DC, wxPoint( -1, -1 ) );
|
||||||
|
|
||||||
// Attention: si il y a eu echange, m_CurrentModule a été delete!
|
// Attention: si il y a eu echange, m_CurrentModule a été delete!
|
||||||
m_Parent->GetScreen()->SetCurItem( NULL );
|
m_Parent->SetCurItem( NULL );
|
||||||
Close( TRUE );
|
Close( TRUE );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ void WinEDA_ModuleEditFrame::Start_Move_EdgeMod( EDGE_MODULE* Edge, wxDC* DC )
|
||||||
CursorInitialPosition = GetScreen()->m_Curseur;
|
CursorInitialPosition = GetScreen()->m_Curseur;
|
||||||
DrawPanel->ManageCurseur = Move_Segment;
|
DrawPanel->ManageCurseur = Move_Segment;
|
||||||
DrawPanel->ForceCloseManageCurseur = Exit_EditEdge_Module;
|
DrawPanel->ForceCloseManageCurseur = Exit_EditEdge_Module;
|
||||||
GetScreen()->SetCurItem( Edge );
|
SetCurItem( Edge );
|
||||||
DrawPanel->ManageCurseur( DrawPanel, DC, FALSE );
|
DrawPanel->ManageCurseur( DrawPanel, DC, FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ void WinEDA_ModuleEditFrame::Place_EdgeMod( EDGE_MODULE* Edge, wxDC* DC )
|
||||||
Edge->m_Flags = 0;
|
Edge->m_Flags = 0;
|
||||||
DrawPanel->ManageCurseur = NULL;
|
DrawPanel->ManageCurseur = NULL;
|
||||||
DrawPanel->ForceCloseManageCurseur = NULL;
|
DrawPanel->ForceCloseManageCurseur = NULL;
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
MODULE* Module = (MODULE*) Edge->m_Parent;
|
MODULE* Module = (MODULE*) Edge->m_Parent;
|
||||||
Module->Set_Rectangle_Encadrement();
|
Module->Set_Rectangle_Encadrement();
|
||||||
|
|
230
pcbnew/edit.cpp
230
pcbnew/edit.cpp
|
@ -15,8 +15,6 @@
|
||||||
#include "eda_dde.h"
|
#include "eda_dde.h"
|
||||||
|
|
||||||
|
|
||||||
#define CURRENT_ITEM (GetScreen()->GetCurItem())
|
|
||||||
|
|
||||||
|
|
||||||
static void Process_Move_Item( WinEDA_PcbFrame* frame,
|
static void Process_Move_Item( WinEDA_PcbFrame* frame,
|
||||||
EDA_BaseStruct* DrawStruct, wxDC* DC );
|
EDA_BaseStruct* DrawStruct, wxDC* DC );
|
||||||
|
@ -29,7 +27,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
* quand un outil est deja selectionn<EFBFBD>
|
* quand un outil est deja selectionn<EFBFBD>
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
EDA_BaseStruct* DrawStruct = CURRENT_ITEM;
|
BOARD_ITEM* DrawStruct = GetCurItem();
|
||||||
|
|
||||||
DrawPanel->m_IgnoreMouseEvents = TRUE;
|
DrawPanel->m_IgnoreMouseEvents = TRUE;
|
||||||
DrawPanel->CursorOff( DC );
|
DrawPanel->CursorOff( DC );
|
||||||
|
@ -128,8 +126,12 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_PCB_SHOW_1_RATSNEST_BUTT:
|
case ID_PCB_SHOW_1_RATSNEST_BUTT:
|
||||||
|
#if 0
|
||||||
DrawStruct = m_Pcb->FindPadOrModule( GetScreen()->RefPos(true),
|
DrawStruct = m_Pcb->FindPadOrModule( GetScreen()->RefPos(true),
|
||||||
GetScreen()->m_Active_Layer );
|
GetScreen()->m_Active_Layer );
|
||||||
|
#else
|
||||||
|
DrawStruct = PcbGeneralLocateAndDisplay();
|
||||||
|
#endif
|
||||||
Show_1_Ratsnest( DrawStruct, DC );
|
Show_1_Ratsnest( DrawStruct, DC );
|
||||||
|
|
||||||
if( DrawStruct )
|
if( DrawStruct )
|
||||||
|
@ -139,7 +141,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
case ID_PCB_MIRE_BUTT:
|
case ID_PCB_MIRE_BUTT:
|
||||||
if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) )
|
if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) )
|
||||||
{
|
{
|
||||||
GetScreen()->SetCurItem( Create_Mire( DC ) );
|
SetCurItem( Create_Mire( DC ) );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
}
|
}
|
||||||
else if( DrawStruct->Type() == TYPEMIRE )
|
else if( DrawStruct->Type() == TYPEMIRE )
|
||||||
|
@ -168,7 +170,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) )
|
if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) )
|
||||||
{
|
{
|
||||||
DrawStruct = Begin_DrawSegment( NULL, shape, DC );
|
DrawStruct = Begin_DrawSegment( NULL, shape, DC );
|
||||||
GetScreen()->SetCurItem( DrawStruct );
|
SetCurItem( DrawStruct );
|
||||||
DrawPanel->m_AutoPAN_Request = TRUE;
|
DrawPanel->m_AutoPAN_Request = TRUE;
|
||||||
}
|
}
|
||||||
else if( DrawStruct
|
else if( DrawStruct
|
||||||
|
@ -176,7 +178,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
&& (DrawStruct->m_Flags & IS_NEW) )
|
&& (DrawStruct->m_Flags & IS_NEW) )
|
||||||
{
|
{
|
||||||
DrawStruct = Begin_DrawSegment( (DRAWSEGMENT*) DrawStruct, shape, DC );
|
DrawStruct = Begin_DrawSegment( (DRAWSEGMENT*) DrawStruct, shape, DC );
|
||||||
GetScreen()->SetCurItem( DrawStruct );
|
SetCurItem( DrawStruct );
|
||||||
DrawPanel->m_AutoPAN_Request = TRUE;
|
DrawPanel->m_AutoPAN_Request = TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -192,7 +194,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) )
|
if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) )
|
||||||
{
|
{
|
||||||
DrawStruct = Begin_Route( NULL, DC );
|
DrawStruct = Begin_Route( NULL, DC );
|
||||||
GetScreen()->SetCurItem( DrawStruct );
|
SetCurItem( DrawStruct );
|
||||||
if( DrawStruct )
|
if( DrawStruct )
|
||||||
DrawPanel->m_AutoPAN_Request = TRUE;
|
DrawPanel->m_AutoPAN_Request = TRUE;
|
||||||
}
|
}
|
||||||
|
@ -203,7 +205,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
{
|
{
|
||||||
TRACK* track = Begin_Route( (TRACK*) DrawStruct, DC );
|
TRACK* track = Begin_Route( (TRACK*) DrawStruct, DC );
|
||||||
if( track ) // c'est a dire si OK
|
if( track ) // c'est a dire si OK
|
||||||
GetScreen()->SetCurItem( DrawStruct = track );
|
SetCurItem( DrawStruct = track );
|
||||||
DrawPanel->m_AutoPAN_Request = TRUE;
|
DrawPanel->m_AutoPAN_Request = TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -212,13 +214,13 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
case ID_PCB_ZONES_BUTT:
|
case ID_PCB_ZONES_BUTT:
|
||||||
if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) )
|
if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) )
|
||||||
{
|
{
|
||||||
GetScreen()->SetCurItem( DrawStruct = Begin_Zone() );
|
SetCurItem( DrawStruct = Begin_Zone() );
|
||||||
}
|
}
|
||||||
else if( DrawStruct
|
else if( DrawStruct
|
||||||
&& (DrawStruct->Type() == TYPEEDGEZONE)
|
&& (DrawStruct->Type() == TYPEEDGEZONE)
|
||||||
&& (DrawStruct->m_Flags & IS_NEW) )
|
&& (DrawStruct->m_Flags & IS_NEW) )
|
||||||
{
|
{
|
||||||
GetScreen()->SetCurItem( DrawStruct = Begin_Zone() );
|
SetCurItem( DrawStruct = Begin_Zone() );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
DisplayError( this, wxT( "Edit: zone internal error" ) );
|
DisplayError( this, wxT( "Edit: zone internal error" ) );
|
||||||
|
@ -227,7 +229,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
case ID_TEXT_COMMENT_BUTT:
|
case ID_TEXT_COMMENT_BUTT:
|
||||||
if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) )
|
if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) )
|
||||||
{
|
{
|
||||||
GetScreen()->SetCurItem( Create_Texte_Pcb( DC ) );
|
SetCurItem( Create_Texte_Pcb( DC ) );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
DrawPanel->m_AutoPAN_Request = TRUE;
|
DrawPanel->m_AutoPAN_Request = TRUE;
|
||||||
}
|
}
|
||||||
|
@ -245,7 +247,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
{
|
{
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
DrawStruct = Load_Module_From_Library( wxEmptyString, DC );
|
DrawStruct = Load_Module_From_Library( wxEmptyString, DC );
|
||||||
GetScreen()->SetCurItem( DrawStruct );
|
SetCurItem( DrawStruct );
|
||||||
if( DrawStruct )
|
if( DrawStruct )
|
||||||
StartMove_Module( (MODULE*) DrawStruct, DC );
|
StartMove_Module( (MODULE*) DrawStruct, DC );
|
||||||
}
|
}
|
||||||
|
@ -267,7 +269,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) )
|
if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) )
|
||||||
{
|
{
|
||||||
DrawStruct = Begin_Cotation( NULL, DC );
|
DrawStruct = Begin_Cotation( NULL, DC );
|
||||||
GetScreen()->SetCurItem( DrawStruct );
|
SetCurItem( DrawStruct );
|
||||||
DrawPanel->m_AutoPAN_Request = TRUE;
|
DrawPanel->m_AutoPAN_Request = TRUE;
|
||||||
}
|
}
|
||||||
else if( DrawStruct
|
else if( DrawStruct
|
||||||
|
@ -275,7 +277,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
&& (DrawStruct->m_Flags & IS_NEW) )
|
&& (DrawStruct->m_Flags & IS_NEW) )
|
||||||
{
|
{
|
||||||
DrawStruct = Begin_Cotation( (COTATION*) DrawStruct, DC );
|
DrawStruct = Begin_Cotation( (COTATION*) DrawStruct, DC );
|
||||||
GetScreen()->SetCurItem( DrawStruct );
|
SetCurItem( DrawStruct );
|
||||||
DrawPanel->m_AutoPAN_Request = TRUE;
|
DrawPanel->m_AutoPAN_Request = TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -289,7 +291,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
if( DrawStruct && (DrawStruct->m_Flags == 0) )
|
if( DrawStruct && (DrawStruct->m_Flags == 0) )
|
||||||
{
|
{
|
||||||
RemoveStruct( DrawStruct, DC );
|
RemoveStruct( DrawStruct, DC );
|
||||||
GetScreen()->SetCurItem( DrawStruct = NULL );
|
SetCurItem( DrawStruct = NULL );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -632,25 +634,25 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_EDIT_TRACK:
|
case ID_POPUP_PCB_EDIT_TRACK:
|
||||||
if( CURRENT_ITEM == NULL )
|
if( GetCurItem() == NULL )
|
||||||
break;
|
break;
|
||||||
Edit_Track_Width( &dc, (TRACK*) CURRENT_ITEM );
|
Edit_Track_Width( &dc, (TRACK*) GetCurItem() );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_EDIT_TRACKSEG:
|
case ID_POPUP_PCB_EDIT_TRACKSEG:
|
||||||
if( CURRENT_ITEM == NULL )
|
if( GetCurItem() == NULL )
|
||||||
break;
|
break;
|
||||||
Edit_TrackSegm_Width( &dc, (TRACK*) CURRENT_ITEM );
|
Edit_TrackSegm_Width( &dc, (TRACK*) GetCurItem() );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_EDIT_NET:
|
case ID_POPUP_PCB_EDIT_NET:
|
||||||
if( CURRENT_ITEM == NULL )
|
if( GetCurItem() == NULL )
|
||||||
break;
|
break;
|
||||||
Edit_Net_Width( &dc, ( (TRACK*) CURRENT_ITEM )->m_NetCode );
|
Edit_Net_Width( &dc, ( (TRACK*) GetCurItem() )->m_NetCode );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
break;
|
break;
|
||||||
|
@ -658,7 +660,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
case ID_POPUP_PCB_EDIT_ALL_VIAS_AND_TRACK_SIZE:
|
case ID_POPUP_PCB_EDIT_ALL_VIAS_AND_TRACK_SIZE:
|
||||||
case ID_POPUP_PCB_EDIT_ALL_VIAS_SIZE:
|
case ID_POPUP_PCB_EDIT_ALL_VIAS_SIZE:
|
||||||
case ID_POPUP_PCB_EDIT_ALL_TRACK_SIZE:
|
case ID_POPUP_PCB_EDIT_ALL_TRACK_SIZE:
|
||||||
if( CURRENT_ITEM == NULL )
|
if( GetCurItem() == NULL )
|
||||||
break;
|
break;
|
||||||
{
|
{
|
||||||
bool resize_vias = TRUE, resize_track = TRUE;
|
bool resize_vias = TRUE, resize_track = TRUE;
|
||||||
|
@ -674,77 +676,77 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
|
|
||||||
case ID_POPUP_PCB_END_TRACK:
|
case ID_POPUP_PCB_END_TRACK:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
End_Route( (TRACK*) CURRENT_ITEM, &dc );
|
End_Route( (TRACK*) GetCurItem(), &dc );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_PLACE_MOVED_TRACK_NODE:
|
case ID_POPUP_PCB_PLACE_MOVED_TRACK_NODE:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
if( CURRENT_ITEM->m_Flags & IS_DRAGGED )
|
if( GetCurItem()->m_Flags & IS_DRAGGED )
|
||||||
{
|
{
|
||||||
PlaceDraggedTrackSegment( (TRACK*) CURRENT_ITEM, &dc );
|
PlaceDraggedTrackSegment( (TRACK*) GetCurItem(), &dc );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_PLACE_VIA:
|
case ID_POPUP_PCB_PLACE_VIA:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
if( CURRENT_ITEM->m_Flags & IS_DRAGGED )
|
if( GetCurItem()->m_Flags & IS_DRAGGED )
|
||||||
{
|
{
|
||||||
PlaceDraggedTrackSegment( (TRACK*) CURRENT_ITEM, &dc );
|
PlaceDraggedTrackSegment( (TRACK*) GetCurItem(), &dc );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Other_Layer_Route( (TRACK*) CURRENT_ITEM, &dc );
|
Other_Layer_Route( (TRACK*) GetCurItem(), &dc );
|
||||||
if( DisplayOpt.ContrastModeDisplay )
|
if( DisplayOpt.ContrastModeDisplay )
|
||||||
GetScreen()->SetRefreshReq();
|
GetScreen()->SetRefreshReq();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_DELETE_TRACKSEG:
|
case ID_POPUP_PCB_DELETE_TRACKSEG:
|
||||||
if( CURRENT_ITEM == NULL )
|
if( GetCurItem() == NULL )
|
||||||
break;
|
break;
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
GetScreen()->SetCurItem( Delete_Segment( &dc, (TRACK*) CURRENT_ITEM ) );
|
SetCurItem( Delete_Segment( &dc, (TRACK*) GetCurItem() ) );
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_DELETE_TRACK:
|
case ID_POPUP_PCB_DELETE_TRACK:
|
||||||
if( CURRENT_ITEM == NULL )
|
if( GetCurItem() == NULL )
|
||||||
break;
|
break;
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
Delete_Track( &dc, (TRACK*) CURRENT_ITEM );
|
Delete_Track( &dc, (TRACK*) GetCurItem() );
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_DELETE_TRACKNET:
|
case ID_POPUP_PCB_DELETE_TRACKNET:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
Delete_net( &dc, (TRACK*) CURRENT_ITEM );
|
Delete_net( &dc, (TRACK*) GetCurItem() );
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_LOCK_ON_TRACKSEG:
|
case ID_POPUP_PCB_LOCK_ON_TRACKSEG:
|
||||||
Attribut_Segment( (TRACK*) CURRENT_ITEM, &dc, TRUE );
|
Attribut_Segment( (TRACK*) GetCurItem(), &dc, TRUE );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_LOCK_OFF_TRACKSEG:
|
case ID_POPUP_PCB_LOCK_OFF_TRACKSEG:
|
||||||
Attribut_Segment( (TRACK*) CURRENT_ITEM, &dc, FALSE );
|
Attribut_Segment( (TRACK*) GetCurItem(), &dc, FALSE );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_LOCK_ON_TRACK:
|
case ID_POPUP_PCB_LOCK_ON_TRACK:
|
||||||
Attribut_Track( (TRACK*) CURRENT_ITEM, &dc, TRUE );
|
Attribut_Track( (TRACK*) GetCurItem(), &dc, TRUE );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_LOCK_OFF_TRACK:
|
case ID_POPUP_PCB_LOCK_OFF_TRACK:
|
||||||
Attribut_Track( (TRACK*) CURRENT_ITEM, &dc, FALSE );
|
Attribut_Track( (TRACK*) GetCurItem(), &dc, FALSE );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_LOCK_ON_NET:
|
case ID_POPUP_PCB_LOCK_ON_NET:
|
||||||
Attribut_net( &dc, ( (TRACK*) CURRENT_ITEM )->m_NetCode, TRUE );
|
Attribut_net( &dc, ( (TRACK*) GetCurItem() )->m_NetCode, TRUE );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_LOCK_OFF_NET:
|
case ID_POPUP_PCB_LOCK_OFF_NET:
|
||||||
Attribut_net( &dc, ( (TRACK*) CURRENT_ITEM )->m_NetCode, FALSE );
|
Attribut_net( &dc, ( (TRACK*) GetCurItem() )->m_NetCode, FALSE );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_SETFLAGS_TRACK_MNU:
|
case ID_POPUP_PCB_SETFLAGS_TRACK_MNU:
|
||||||
|
@ -752,17 +754,17 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
|
|
||||||
case ID_POPUP_PCB_DELETE_ZONE:
|
case ID_POPUP_PCB_DELETE_ZONE:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
if( CURRENT_ITEM == NULL )
|
if( GetCurItem() == NULL )
|
||||||
break;
|
break;
|
||||||
Delete_Zone( &dc, (SEGZONE*) CURRENT_ITEM );
|
Delete_Zone( &dc, (SEGZONE*) GetCurItem() );
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_EDIT_ZONE:
|
case ID_POPUP_PCB_EDIT_ZONE:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
if( CURRENT_ITEM == NULL )
|
if( GetCurItem() == NULL )
|
||||||
break;
|
break;
|
||||||
Edit_Zone_Width( &dc, (SEGZONE*) CURRENT_ITEM );
|
Edit_Zone_Width( &dc, (SEGZONE*) GetCurItem() );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_DELETE_ZONE_LIMIT:
|
case ID_POPUP_PCB_DELETE_ZONE_LIMIT:
|
||||||
|
@ -775,7 +777,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_MOVE_TEXTEPCB_REQUEST:
|
case ID_POPUP_PCB_MOVE_TEXTEPCB_REQUEST:
|
||||||
Process_Move_Item( this, CURRENT_ITEM, &dc );
|
Process_Move_Item( this, GetCurItem(), &dc );
|
||||||
DrawPanel->m_AutoPAN_Request = TRUE;
|
DrawPanel->m_AutoPAN_Request = TRUE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -785,23 +787,23 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
case ID_POPUP_PCB_MOVE_MODULE_REQUEST:
|
case ID_POPUP_PCB_MOVE_MODULE_REQUEST:
|
||||||
|
|
||||||
// If the current Item is a pad, text module ...: Get the parent
|
// If the current Item is a pad, text module ...: Get the parent
|
||||||
if( CURRENT_ITEM->Type() != TYPEMODULE )
|
if( GetCurItem()->Type() != TYPEMODULE )
|
||||||
GetScreen()->SetCurItem( CURRENT_ITEM->m_Parent );
|
SetCurItem( GetCurItem()->GetParent() );
|
||||||
if( !CURRENT_ITEM || CURRENT_ITEM->Type() != TYPEMODULE )
|
if( !GetCurItem() || GetCurItem()->Type() != TYPEMODULE )
|
||||||
{
|
{
|
||||||
g_Drag_Pistes_On = FALSE;
|
g_Drag_Pistes_On = FALSE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
StartMove_Module( (MODULE*) CURRENT_ITEM, &dc );
|
StartMove_Module( (MODULE*) GetCurItem(), &dc );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_GET_AND_MOVE_MODULE_REQUEST: /* get module by name and move it */
|
case ID_POPUP_PCB_GET_AND_MOVE_MODULE_REQUEST: /* get module by name and move it */
|
||||||
GetScreen()->SetCurItem( GetModuleByName() );
|
SetCurItem( GetModuleByName() );
|
||||||
if( CURRENT_ITEM )
|
if( GetCurItem() )
|
||||||
{
|
{
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
StartMove_Module( (MODULE*) CURRENT_ITEM, &dc );
|
StartMove_Module( (MODULE*) GetCurItem(), &dc );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -809,14 +811,14 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
|
|
||||||
// If the current Item is a pad, text module ...: Get the parent
|
// If the current Item is a pad, text module ...: Get the parent
|
||||||
if( CURRENT_ITEM->Type() != TYPEMODULE )
|
if( GetCurItem()->Type() != TYPEMODULE )
|
||||||
GetScreen()->SetCurItem( CURRENT_ITEM->m_Parent );
|
SetCurItem( GetCurItem()->GetParent() );
|
||||||
|
|
||||||
if( !CURRENT_ITEM || CURRENT_ITEM->Type() != TYPEMODULE )
|
if( !GetCurItem() || GetCurItem()->Type() != TYPEMODULE )
|
||||||
break;
|
break;
|
||||||
if( Delete_Module( (MODULE*) CURRENT_ITEM, &dc ) )
|
if( Delete_Module( (MODULE*) GetCurItem(), &dc ) )
|
||||||
{
|
{
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -824,44 +826,44 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
|
|
||||||
// If the current Item is a pad, text module ...: Get the parent
|
// If the current Item is a pad, text module ...: Get the parent
|
||||||
if( CURRENT_ITEM->Type() != TYPEMODULE )
|
if( GetCurItem()->Type() != TYPEMODULE )
|
||||||
GetScreen()->SetCurItem( CURRENT_ITEM->m_Parent );
|
SetCurItem( GetCurItem()->GetParent() );
|
||||||
|
|
||||||
if( !CURRENT_ITEM || CURRENT_ITEM->Type() != TYPEMODULE )
|
if( !GetCurItem() || GetCurItem()->Type() != TYPEMODULE )
|
||||||
break;
|
break;
|
||||||
Rotate_Module( &dc, (MODULE*) CURRENT_ITEM, -900, TRUE );
|
Rotate_Module( &dc, (MODULE*) GetCurItem(), -900, TRUE );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_ROTATE_MODULE_CLOCKWISE:
|
case ID_POPUP_PCB_ROTATE_MODULE_CLOCKWISE:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
|
|
||||||
// If the current Item is a pad, text module ...: Get the parent
|
// If the current Item is a pad, text module ...: Get the parent
|
||||||
if( CURRENT_ITEM->Type() != TYPEMODULE )
|
if( GetCurItem()->Type() != TYPEMODULE )
|
||||||
GetScreen()->SetCurItem( CURRENT_ITEM->m_Parent );
|
SetCurItem( GetCurItem()->GetParent() );
|
||||||
|
|
||||||
if( !CURRENT_ITEM || CURRENT_ITEM->Type() != TYPEMODULE )
|
if( !GetCurItem() || GetCurItem()->Type() != TYPEMODULE )
|
||||||
break;
|
break;
|
||||||
Rotate_Module( &dc, (MODULE*) CURRENT_ITEM, 900, TRUE );
|
Rotate_Module( &dc, (MODULE*) GetCurItem(), 900, TRUE );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_CHANGE_SIDE_MODULE:
|
case ID_POPUP_PCB_CHANGE_SIDE_MODULE:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
|
|
||||||
// If the current Item is a pad, text module ...: Get the parent
|
// If the current Item is a pad, text module ...: Get the parent
|
||||||
if( CURRENT_ITEM->Type() != TYPEMODULE )
|
if( GetCurItem()->Type() != TYPEMODULE )
|
||||||
GetScreen()->SetCurItem( CURRENT_ITEM->m_Parent );
|
SetCurItem( GetCurItem()->GetParent() );
|
||||||
if( !CURRENT_ITEM || CURRENT_ITEM->Type() != TYPEMODULE )
|
if( !GetCurItem() || GetCurItem()->Type() != TYPEMODULE )
|
||||||
break;
|
break;
|
||||||
Change_Side_Module( (MODULE*) CURRENT_ITEM, &dc );
|
Change_Side_Module( (MODULE*) GetCurItem(), &dc );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_EDIT_MODULE:
|
case ID_POPUP_PCB_EDIT_MODULE:
|
||||||
// If the current Item is a pad, text module ...: Get the parent
|
// If the current Item is a pad, text module ...: Get the parent
|
||||||
if( CURRENT_ITEM->Type() != TYPEMODULE )
|
if( GetCurItem()->Type() != TYPEMODULE )
|
||||||
GetScreen()->SetCurItem( CURRENT_ITEM->m_Parent );
|
SetCurItem( GetCurItem()->GetParent() );
|
||||||
if( !CURRENT_ITEM || CURRENT_ITEM->Type() != TYPEMODULE )
|
if( !GetCurItem() || GetCurItem()->Type() != TYPEMODULE )
|
||||||
break;
|
break;
|
||||||
InstallModuleOptionsFrame( (MODULE*) CURRENT_ITEM, &dc, pos );
|
InstallModuleOptionsFrame( (MODULE*) GetCurItem(), &dc, pos );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -870,54 +872,54 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
|
|
||||||
case ID_POPUP_PCB_MOVE_PAD_REQUEST:
|
case ID_POPUP_PCB_MOVE_PAD_REQUEST:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
StartMovePad( (D_PAD*) CURRENT_ITEM, &dc );
|
StartMovePad( (D_PAD*) GetCurItem(), &dc );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_EDIT_PAD:
|
case ID_POPUP_PCB_EDIT_PAD:
|
||||||
InstallPadOptionsFrame( (D_PAD*) CURRENT_ITEM, &dc, pos );
|
InstallPadOptionsFrame( (D_PAD*) GetCurItem(), &dc, pos );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_IMPORT_PAD_SETTINGS:
|
case ID_POPUP_PCB_IMPORT_PAD_SETTINGS:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
Import_Pad_Settings( (D_PAD*) CURRENT_ITEM, &dc );
|
Import_Pad_Settings( (D_PAD*) GetCurItem(), &dc );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_GLOBAL_IMPORT_PAD_SETTINGS:
|
case ID_POPUP_PCB_GLOBAL_IMPORT_PAD_SETTINGS:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
Global_Import_Pad_Settings( (D_PAD*) CURRENT_ITEM, &dc );
|
Global_Import_Pad_Settings( (D_PAD*) GetCurItem(), &dc );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_EXPORT_PAD_SETTINGS:
|
case ID_POPUP_PCB_EXPORT_PAD_SETTINGS:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
Export_Pad_Settings( (D_PAD*) CURRENT_ITEM );
|
Export_Pad_Settings( (D_PAD*) GetCurItem() );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_DELETE_PAD:
|
case ID_POPUP_PCB_DELETE_PAD:
|
||||||
DeletePad( (D_PAD*) CURRENT_ITEM, &dc );
|
DeletePad( (D_PAD*) GetCurItem(), &dc );
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_EDIT_TEXTMODULE:
|
case ID_POPUP_PCB_EDIT_TEXTMODULE:
|
||||||
InstallTextModOptionsFrame( (TEXTE_MODULE*) CURRENT_ITEM, &dc, pos );
|
InstallTextModOptionsFrame( (TEXTE_MODULE*) GetCurItem(), &dc, pos );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_MOVE_TEXTMODULE_REQUEST:
|
case ID_POPUP_PCB_MOVE_TEXTMODULE_REQUEST:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
StartMoveTexteModule( (TEXTE_MODULE*) CURRENT_ITEM, &dc );
|
StartMoveTexteModule( (TEXTE_MODULE*) GetCurItem(), &dc );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_ROTATE_TEXTMODULE:
|
case ID_POPUP_PCB_ROTATE_TEXTMODULE:
|
||||||
RotateTextModule( (TEXTE_MODULE*) CURRENT_ITEM,
|
RotateTextModule( (TEXTE_MODULE*) GetCurItem(),
|
||||||
&dc );
|
&dc );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_DELETE_TEXTMODULE:
|
case ID_POPUP_PCB_DELETE_TEXTMODULE:
|
||||||
DeleteTextModule( (TEXTE_MODULE*) CURRENT_ITEM, &dc );
|
DeleteTextModule( (TEXTE_MODULE*) GetCurItem(), &dc );
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -958,93 +960,93 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_EDIT_TEXTEPCB:
|
case ID_POPUP_PCB_EDIT_TEXTEPCB:
|
||||||
InstallTextPCBOptionsFrame( (TEXTE_PCB*) CURRENT_ITEM,
|
InstallTextPCBOptionsFrame( (TEXTE_PCB*) GetCurItem(),
|
||||||
&dc, pos );
|
&dc, pos );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_ROTATE_TEXTEPCB:
|
case ID_POPUP_PCB_ROTATE_TEXTEPCB:
|
||||||
Rotate_Texte_Pcb( (TEXTE_PCB*) CURRENT_ITEM, &dc );
|
Rotate_Texte_Pcb( (TEXTE_PCB*) GetCurItem(), &dc );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_DELETE_TEXTEPCB:
|
case ID_POPUP_PCB_DELETE_TEXTEPCB:
|
||||||
Delete_Texte_Pcb( (TEXTE_PCB*) CURRENT_ITEM, &dc );
|
Delete_Texte_Pcb( (TEXTE_PCB*) GetCurItem(), &dc );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_MOVE_MIRE_REQUEST:
|
case ID_POPUP_PCB_MOVE_MIRE_REQUEST:
|
||||||
StartMove_Mire( (MIREPCB*) CURRENT_ITEM, &dc );
|
StartMove_Mire( (MIREPCB*) GetCurItem(), &dc );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_EDIT_MIRE:
|
case ID_POPUP_PCB_EDIT_MIRE:
|
||||||
InstallMireOptionsFrame( (MIREPCB*) CURRENT_ITEM, &dc, pos );
|
InstallMireOptionsFrame( (MIREPCB*) GetCurItem(), &dc, pos );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_DELETE_MIRE:
|
case ID_POPUP_PCB_DELETE_MIRE:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
Delete_Mire( (MIREPCB*) CURRENT_ITEM, &dc );
|
Delete_Mire( (MIREPCB*) GetCurItem(), &dc );
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_DELETE_COTATION:
|
case ID_POPUP_PCB_DELETE_COTATION:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
Delete_Cotation( (COTATION*) CURRENT_ITEM, &dc );
|
Delete_Cotation( (COTATION*) GetCurItem(), &dc );
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_EDIT_COTATION:
|
case ID_POPUP_PCB_EDIT_COTATION:
|
||||||
Install_Edit_Cotation( (COTATION*) CURRENT_ITEM, &dc, pos );
|
Install_Edit_Cotation( (COTATION*) GetCurItem(), &dc, pos );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_DELETE_DRAWING:
|
case ID_POPUP_PCB_DELETE_DRAWING:
|
||||||
Delete_Segment_Edge( (DRAWSEGMENT*) CURRENT_ITEM, &dc );
|
Delete_Segment_Edge( (DRAWSEGMENT*) GetCurItem(), &dc );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_DELETE_DRAWING_LAYER:
|
case ID_POPUP_PCB_DELETE_DRAWING_LAYER:
|
||||||
Delete_Drawings_All_Layer( (DRAWSEGMENT*) CURRENT_ITEM, &dc );
|
Delete_Drawings_All_Layer( (DRAWSEGMENT*) GetCurItem(), &dc );
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_EDIT_DRAWING:
|
case ID_POPUP_PCB_EDIT_DRAWING:
|
||||||
Drawing_SetNewWidth( (DRAWSEGMENT*) CURRENT_ITEM, &dc );
|
Drawing_SetNewWidth( (DRAWSEGMENT*) GetCurItem(), &dc );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_MOVE_DRAWING_REQUEST:
|
case ID_POPUP_PCB_MOVE_DRAWING_REQUEST:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
Start_Move_DrawItem( (DRAWSEGMENT*) CURRENT_ITEM, &dc );
|
Start_Move_DrawItem( (DRAWSEGMENT*) GetCurItem(), &dc );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_STOP_CURRENT_DRAWING:
|
case ID_POPUP_PCB_STOP_CURRENT_DRAWING:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
if( CURRENT_ITEM && (CURRENT_ITEM->m_Flags & IS_NEW) )
|
if( GetCurItem() && (GetCurItem()->m_Flags & IS_NEW) )
|
||||||
{
|
{
|
||||||
End_Edge( (DRAWSEGMENT*) CURRENT_ITEM, &dc );
|
End_Edge( (DRAWSEGMENT*) GetCurItem(), &dc );
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_STOP_CURRENT_EDGE_ZONE:
|
case ID_POPUP_PCB_STOP_CURRENT_EDGE_ZONE:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
if( CURRENT_ITEM && (CURRENT_ITEM->m_Flags & IS_NEW) )
|
if( GetCurItem() && (GetCurItem()->m_Flags & IS_NEW) )
|
||||||
{
|
{
|
||||||
End_Zone( &dc );
|
End_Zone( &dc );
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_PCB_DELETE_EDGE_ZONE:
|
case ID_POPUP_PCB_DELETE_EDGE_ZONE:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
if( CURRENT_ITEM && (CURRENT_ITEM->m_Flags & IS_NEW) )
|
if( GetCurItem() && (GetCurItem()->m_Flags & IS_NEW) )
|
||||||
{
|
{
|
||||||
GetScreen()->SetCurItem( Del_SegmEdgeZone( &dc,
|
SetCurItem( Del_SegmEdgeZone( &dc,
|
||||||
(EDGE_ZONE*) CURRENT_ITEM ) );
|
(EDGE_ZONE*) GetCurItem() ) );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1235,7 +1237,7 @@ void WinEDA_PcbFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
* termine la connexion
|
* termine la connexion
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
EDA_BaseStruct* DrawStruct = CURRENT_ITEM;
|
BOARD_ITEM* DrawStruct = GetCurItem();
|
||||||
wxPoint pos = GetPosition();
|
wxPoint pos = GetPosition();
|
||||||
wxClientDC dc( DrawPanel );
|
wxClientDC dc( DrawPanel );
|
||||||
|
|
||||||
|
@ -1253,7 +1255,7 @@ void WinEDA_PcbFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Element localis<69>
|
// Element localis<69>
|
||||||
GetScreen()->SetCurItem( DrawStruct );
|
SetCurItem( DrawStruct );
|
||||||
|
|
||||||
switch( DrawStruct->Type() )
|
switch( DrawStruct->Type() )
|
||||||
{
|
{
|
||||||
|
@ -1320,7 +1322,7 @@ void WinEDA_PcbFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
case ID_PCB_ZONES_BUTT:
|
case ID_PCB_ZONES_BUTT:
|
||||||
End_Zone( DC );
|
End_Zone( DC );
|
||||||
DrawPanel->m_AutoPAN_Request = FALSE;
|
DrawPanel->m_AutoPAN_Request = FALSE;
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_LINE_COMMENT_BUTT:
|
case ID_LINE_COMMENT_BUTT:
|
||||||
|
@ -1338,7 +1340,7 @@ void WinEDA_PcbFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
{
|
{
|
||||||
End_Edge( (DRAWSEGMENT*) DrawStruct, &dc );
|
End_Edge( (DRAWSEGMENT*) DrawStruct, &dc );
|
||||||
DrawPanel->m_AutoPAN_Request = FALSE;
|
DrawPanel->m_AutoPAN_Request = FALSE;
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ void WinEDA_PcbFrame::Start_Move_DrawItem( DRAWSEGMENT* drawitem, wxDC* DC )
|
||||||
drawitem->Display_Infos( this );
|
drawitem->Display_Infos( this );
|
||||||
DrawPanel->ManageCurseur = Move_Segment;
|
DrawPanel->ManageCurseur = Move_Segment;
|
||||||
DrawPanel->ForceCloseManageCurseur = Exit_EditEdge;
|
DrawPanel->ForceCloseManageCurseur = Exit_EditEdge;
|
||||||
GetScreen()->SetCurItem( drawitem );
|
SetCurItem( drawitem );
|
||||||
DrawPanel->ManageCurseur( DrawPanel, DC, FALSE );
|
DrawPanel->ManageCurseur( DrawPanel, DC, FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ void WinEDA_PcbFrame::Place_DrawItem( DRAWSEGMENT* drawitem, wxDC* DC )
|
||||||
Trace_DrawSegmentPcb( DrawPanel, DC, drawitem, GR_OR );
|
Trace_DrawSegmentPcb( DrawPanel, DC, drawitem, GR_OR );
|
||||||
DrawPanel->ManageCurseur = NULL;
|
DrawPanel->ManageCurseur = NULL;
|
||||||
DrawPanel->ForceCloseManageCurseur = NULL;
|
DrawPanel->ForceCloseManageCurseur = NULL;
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
drawitem->m_Flags = 0;
|
drawitem->m_Flags = 0;
|
||||||
}
|
}
|
||||||
|
@ -113,14 +113,14 @@ void WinEDA_PcbFrame::Delete_Segment_Edge( DRAWSEGMENT* Segment, wxDC* DC )
|
||||||
if( PtStruct && (PtStruct->Type() == TYPEDRAWSEGMENT ) )
|
if( PtStruct && (PtStruct->Type() == TYPEDRAWSEGMENT ) )
|
||||||
Segment = (DRAWSEGMENT*) PtStruct;
|
Segment = (DRAWSEGMENT*) PtStruct;
|
||||||
DisplayOpt.DisplayDrawItems = track_fill_copy;
|
DisplayOpt.DisplayDrawItems = track_fill_copy;
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Trace_DrawSegmentPcb( DrawPanel, DC, (DRAWSEGMENT*) Segment, GR_XOR );
|
Trace_DrawSegmentPcb( DrawPanel, DC, (DRAWSEGMENT*) Segment, GR_XOR );
|
||||||
Segment->m_Flags = 0;
|
Segment->m_Flags = 0;
|
||||||
DeleteStructure( Segment );
|
DeleteStructure( Segment );
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -248,7 +248,7 @@ static void Exit_EditEdge( WinEDA_DrawPanel* Panel, wxDC* DC )
|
||||||
}
|
}
|
||||||
Panel->ManageCurseur = NULL;
|
Panel->ManageCurseur = NULL;
|
||||||
Panel->ForceCloseManageCurseur = NULL;
|
Panel->ForceCloseManageCurseur = NULL;
|
||||||
Panel->GetScreen()->SetCurItem( NULL );
|
((WinEDA_PcbFrame*)Panel->m_Parent)->SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -275,7 +275,7 @@ DRAWSEGMENT* WinEDA_PcbFrame::Begin_DrawSegment( DRAWSEGMENT* Segment,
|
||||||
|
|
||||||
if( Segment == NULL ) /* debut reel du trace */
|
if( Segment == NULL ) /* debut reel du trace */
|
||||||
{
|
{
|
||||||
GetScreen()->SetCurItem( Segment = new DRAWSEGMENT( m_Pcb ) );
|
SetCurItem( Segment = new DRAWSEGMENT( m_Pcb ) );
|
||||||
Segment->m_Flags = IS_NEW;
|
Segment->m_Flags = IS_NEW;
|
||||||
Segment->SetLayer( GetScreen()->m_Active_Layer );
|
Segment->SetLayer( GetScreen()->m_Active_Layer );
|
||||||
Segment->m_Width = s_large;
|
Segment->m_Width = s_large;
|
||||||
|
@ -305,7 +305,7 @@ DRAWSEGMENT* WinEDA_PcbFrame::Begin_DrawSegment( DRAWSEGMENT* Segment,
|
||||||
|
|
||||||
DrawItem = Segment;
|
DrawItem = Segment;
|
||||||
|
|
||||||
GetScreen()->SetCurItem( Segment = new DRAWSEGMENT( m_Pcb ) );
|
SetCurItem( Segment = new DRAWSEGMENT( m_Pcb ) );
|
||||||
|
|
||||||
Segment->m_Flags = IS_NEW;
|
Segment->m_Flags = IS_NEW;
|
||||||
Segment->SetLayer( DrawItem->GetLayer() );
|
Segment->SetLayer( DrawItem->GetLayer() );
|
||||||
|
@ -353,7 +353,7 @@ void WinEDA_PcbFrame::End_Edge( DRAWSEGMENT* Segment, wxDC* DC )
|
||||||
|
|
||||||
DrawPanel->ManageCurseur = NULL;
|
DrawPanel->ManageCurseur = NULL;
|
||||||
DrawPanel->ForceCloseManageCurseur = NULL;
|
DrawPanel->ForceCloseManageCurseur = NULL;
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ void WinEDA_BasePcbFrame::InstallModuleOptionsFrame( MODULE* Module,
|
||||||
|
|
||||||
m_Parent->m_ModuleEditFrame->Load_Module_Module_From_BOARD(
|
m_Parent->m_ModuleEditFrame->Load_Module_Module_From_BOARD(
|
||||||
(MODULE*) GetScreen()->GetCurItem() );
|
(MODULE*) GetScreen()->GetCurItem() );
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
|
|
||||||
GoToEditor = FALSE;
|
GoToEditor = FALSE;
|
||||||
m_Parent->m_ModuleEditFrame->Show( TRUE );
|
m_Parent->m_ModuleEditFrame->Show( TRUE );
|
||||||
|
|
|
@ -61,7 +61,7 @@ static void Exit_Editrack( WinEDA_DrawPanel* Panel, wxDC* DC )
|
||||||
}
|
}
|
||||||
Panel->ManageCurseur = NULL;
|
Panel->ManageCurseur = NULL;
|
||||||
Panel->ForceCloseManageCurseur = NULL;
|
Panel->ForceCloseManageCurseur = NULL;
|
||||||
frame->GetScreen()->SetCurItem( NULL );
|
frame->SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -156,7 +156,7 @@ TRACK* WinEDA_PcbFrame::Begin_Route( TRACK* track, wxDC* DC )
|
||||||
g_FirstTrackSegment->SetState( BEGIN_ONPAD | END_ONPAD, OFF );
|
g_FirstTrackSegment->SetState( BEGIN_ONPAD | END_ONPAD, OFF );
|
||||||
}
|
}
|
||||||
g_CurrentTrackSegment->Display_Infos( this );
|
g_CurrentTrackSegment->Display_Infos( this );
|
||||||
GetScreen()->SetCurItem( g_CurrentTrackSegment );
|
SetCurItem( g_CurrentTrackSegment );
|
||||||
DrawPanel->ManageCurseur( DrawPanel, DC, FALSE );
|
DrawPanel->ManageCurseur( DrawPanel, DC, FALSE );
|
||||||
if( Drc_On && (Drc( this, DC, g_CurrentTrackSegment, m_Pcb->m_Track, 1 ) == BAD_DRC) )
|
if( Drc_On && (Drc( this, DC, g_CurrentTrackSegment, m_Pcb->m_Track, 1 ) == BAD_DRC) )
|
||||||
{
|
{
|
||||||
|
@ -221,7 +221,7 @@ TRACK* WinEDA_PcbFrame::Begin_Route( TRACK* track, wxDC* DC )
|
||||||
g_CurrentTrackSegment->Display_Infos( this );
|
g_CurrentTrackSegment->Display_Infos( this );
|
||||||
}
|
}
|
||||||
|
|
||||||
GetScreen()->SetCurItem( g_CurrentTrackSegment );
|
SetCurItem( g_CurrentTrackSegment );
|
||||||
return g_CurrentTrackSegment;
|
return g_CurrentTrackSegment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -472,7 +472,7 @@ void WinEDA_PcbFrame::End_Route( TRACK* track, wxDC* DC )
|
||||||
|
|
||||||
DrawPanel->ManageCurseur = NULL;
|
DrawPanel->ManageCurseur = NULL;
|
||||||
DrawPanel->ForceCloseManageCurseur = NULL;
|
DrawPanel->ForceCloseManageCurseur = NULL;
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -171,7 +171,7 @@ void WinEDA_BasePcbFrame::StartMoveTexteModule( TEXTE_MODULE* Text, wxDC* DC )
|
||||||
|
|
||||||
Text->Display_Infos( this );
|
Text->Display_Infos( this );
|
||||||
|
|
||||||
GetScreen()->SetCurItem( Text );
|
SetCurItem( Text );
|
||||||
DrawPanel->ManageCurseur = Show_MoveTexte_Module;
|
DrawPanel->ManageCurseur = Show_MoveTexte_Module;
|
||||||
DrawPanel->ForceCloseManageCurseur = ExitTextModule;
|
DrawPanel->ForceCloseManageCurseur = ExitTextModule;
|
||||||
|
|
||||||
|
|
|
@ -235,7 +235,7 @@ int WinEDA_PcbFrame::LoadOnePcbFile( const wxString& FullFileName, wxDC* DC, boo
|
||||||
g_SaveTime = time( NULL );
|
g_SaveTime = time( NULL );
|
||||||
|
|
||||||
|
|
||||||
#if 1 && defined(DEBUG)
|
#if 0 && defined(DEBUG)
|
||||||
// note this seems to freeze up pcbnew when run under the kicad project
|
// note this seems to freeze up pcbnew when run under the kicad project
|
||||||
// manager. runs fine from command prompt.
|
// manager. runs fine from command prompt.
|
||||||
// output the board object tree to stdout:
|
// output the board object tree to stdout:
|
||||||
|
|
|
@ -165,11 +165,9 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
{
|
{
|
||||||
bool PopupOn = GetScreen()->GetCurItem()
|
bool PopupOn = (GetCurItem() && GetCurItem()->m_Flags);
|
||||||
&& GetScreen()->GetCurItem()->m_Flags;
|
|
||||||
|
|
||||||
bool ItemFree = (GetScreen()->GetCurItem() == 0 )
|
bool ItemFree = (GetCurItem()==0 || GetCurItem()->m_Flags==0);
|
||||||
|| (GetScreen()->GetCurItem()->m_Flags == 0);
|
|
||||||
|
|
||||||
if( hotkey == 0 )
|
if( hotkey == 0 )
|
||||||
return;
|
return;
|
||||||
|
@ -296,11 +294,15 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey,
|
||||||
case HK_BACK_SPACE:
|
case HK_BACK_SPACE:
|
||||||
if( m_ID_current_state == ID_TRACK_BUTT && GetScreen()->m_Active_Layer <= CMP_N )
|
if( m_ID_current_state == ID_TRACK_BUTT && GetScreen()->m_Active_Layer <= CMP_N )
|
||||||
{
|
{
|
||||||
bool ItemFree = (GetScreen()->GetCurItem() == NULL )
|
bool ItemFree = GetCurItem()==NULL || GetCurItem()->m_Flags==0;
|
||||||
|| (GetScreen()->GetCurItem()->m_Flags == 0);
|
|
||||||
if( ItemFree )
|
if( ItemFree )
|
||||||
{
|
{
|
||||||
// no track is currently being edited - select a segment and remove it.
|
// no track is currently being edited - select a segment and remove it.
|
||||||
|
|
||||||
|
// @todo: possibly? pass the HK command code to PcbGeneralLocateAndDisplay() so it can restrict its search to specific item types.
|
||||||
|
|
||||||
|
// @todo: use PcbGeneralLocateAndDisplay() everywhere in this source file.
|
||||||
|
|
||||||
DrawStruct = PcbGeneralLocateAndDisplay();
|
DrawStruct = PcbGeneralLocateAndDisplay();
|
||||||
|
|
||||||
// don't let backspace delete modules!!
|
// don't let backspace delete modules!!
|
||||||
|
@ -309,10 +311,10 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey,
|
||||||
Delete_Segment( DC, (TRACK*) DrawStruct );
|
Delete_Segment( DC, (TRACK*) DrawStruct );
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
}
|
}
|
||||||
else if( GetScreen()->GetCurItem()->Type() == TYPETRACK )
|
else if( GetCurItem()->Type() == TYPETRACK )
|
||||||
{
|
{
|
||||||
// then an element is being edited - remove the last segment.
|
// then an element is being edited - remove the last segment.
|
||||||
GetScreen()->SetCurItem( Delete_Segment( DC, (TRACK*) GetScreen()->GetCurItem() ) );
|
SetCurItem( Delete_Segment( DC, (TRACK*) GetCurItem() ) );
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -320,7 +322,7 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey,
|
||||||
|
|
||||||
case HK_END_TRACK:
|
case HK_END_TRACK:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
End_Route( (TRACK*) ( GetScreen()->GetCurItem() ), DC );
|
End_Route( (TRACK*) ( GetCurItem() ), DC );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HK_FIND_ITEM:
|
case HK_FIND_ITEM:
|
||||||
|
@ -357,11 +359,11 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey,
|
||||||
Other_Layer_Route( NULL, DC );
|
Other_Layer_Route( NULL, DC );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if( GetScreen()->GetCurItem()->Type() != TYPETRACK )
|
if( GetCurItem()->Type() != TYPETRACK )
|
||||||
return;
|
return;
|
||||||
if( (GetScreen()->GetCurItem()->m_Flags & IS_NEW) == 0 )
|
if( (GetCurItem()->m_Flags & IS_NEW) == 0 )
|
||||||
return;
|
return;
|
||||||
Other_Layer_Route( (TRACK*) GetScreen()->GetCurItem(), DC );
|
Other_Layer_Route( (TRACK*) GetCurItem(), DC );
|
||||||
if( DisplayOpt.ContrastModeDisplay )
|
if( DisplayOpt.ContrastModeDisplay )
|
||||||
GetScreen()->SetRefreshReq();
|
GetScreen()->SetRefreshReq();
|
||||||
break;
|
break;
|
||||||
|
@ -371,11 +373,11 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey,
|
||||||
// get any module, locked or not locked and toggle its locked status
|
// get any module, locked or not locked and toggle its locked status
|
||||||
if( ItemFree )
|
if( ItemFree )
|
||||||
module = Locate_Prefered_Module( m_Pcb, CURSEUR_OFF_GRILLE | VISIBLE_ONLY );
|
module = Locate_Prefered_Module( m_Pcb, CURSEUR_OFF_GRILLE | VISIBLE_ONLY );
|
||||||
else if( GetScreen()->GetCurItem()->Type() == TYPEMODULE )
|
else if( GetCurItem()->Type() == TYPEMODULE )
|
||||||
module = (MODULE*) GetScreen()->GetCurItem();
|
module = (MODULE*) GetCurItem();
|
||||||
if( module )
|
if( module )
|
||||||
{
|
{
|
||||||
GetScreen()->SetCurItem( module );
|
SetCurItem( module );
|
||||||
module->SetLocked( !module->IsLocked() );
|
module->SetLocked( !module->IsLocked() );
|
||||||
module->Display_Infos( this );
|
module->Display_Infos( this );
|
||||||
}
|
}
|
||||||
|
@ -415,12 +417,12 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( GetScreen()->GetCurItem()->Type() == TYPEMODULE )
|
else if( GetCurItem()->Type() == TYPEMODULE )
|
||||||
{
|
{
|
||||||
module = (MODULE*) GetScreen()->GetCurItem();
|
module = (MODULE*) GetCurItem();
|
||||||
|
|
||||||
// @todo: might need to add a layer check in if() below
|
// @todo: might need to add a layer check in if() below
|
||||||
if( (GetScreen()->GetCurItem()->m_Flags == 0)
|
if( (GetCurItem()->m_Flags == 0)
|
||||||
&& module->IsLocked() )
|
&& module->IsLocked() )
|
||||||
module = NULL; // do not move, rotate ... it.
|
module = NULL; // do not move, rotate ... it.
|
||||||
}
|
}
|
||||||
|
@ -432,13 +434,13 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey,
|
||||||
* does not set GetCurItem() at this time, nor does a mouse click
|
* does not set GetCurItem() at this time, nor does a mouse click
|
||||||
* when the local ratsnest icon is in play set GetCurItem(), and these
|
* when the local ratsnest icon is in play set GetCurItem(), and these
|
||||||
* actions also call SendMessageToEESCHEMA().
|
* actions also call SendMessageToEESCHEMA().
|
||||||
* if( GetScreen()->GetCurItem() != module )
|
* if( GetCurItem() != module )
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
// Send the module via socket to EESCHEMA's search facility.
|
// Send the module via socket to EESCHEMA's search facility.
|
||||||
SendMessageToEESCHEMA( module );
|
SendMessageToEESCHEMA( module );
|
||||||
|
|
||||||
GetScreen()->SetCurItem( module );
|
SetCurItem( module );
|
||||||
}
|
}
|
||||||
|
|
||||||
switch( CommandCode )
|
switch( CommandCode )
|
||||||
|
@ -538,8 +540,8 @@ bool WinEDA_PcbFrame::OnHotkeyDeleteItem( wxDC* DC, EDA_BaseStruct* DrawStruct )
|
||||||
* Delete the module.
|
* Delete the module.
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
bool ItemFree = (GetScreen()->GetCurItem() == NULL )
|
bool ItemFree = (GetCurItem() == NULL )
|
||||||
|| (GetScreen()->GetCurItem()->m_Flags == 0);
|
|| (GetCurItem()->m_Flags == 0);
|
||||||
|
|
||||||
switch( m_ID_current_state )
|
switch( m_ID_current_state )
|
||||||
{
|
{
|
||||||
|
@ -553,10 +555,10 @@ bool WinEDA_PcbFrame::OnHotkeyDeleteItem( wxDC* DC, EDA_BaseStruct* DrawStruct )
|
||||||
return FALSE;
|
return FALSE;
|
||||||
Delete_Track( DC, (TRACK*) DrawStruct );
|
Delete_Track( DC, (TRACK*) DrawStruct );
|
||||||
}
|
}
|
||||||
else if( GetScreen()->GetCurItem()->Type() == TYPETRACK )
|
else if( GetCurItem()->Type() == TYPETRACK )
|
||||||
{
|
{
|
||||||
GetScreen()->SetCurItem(
|
SetCurItem(
|
||||||
Delete_Segment( DC, (TRACK*) GetScreen()->GetCurItem() ) );
|
Delete_Segment( DC, (TRACK*) GetCurItem() ) );
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -581,6 +583,6 @@ bool WinEDA_PcbFrame::OnHotkeyDeleteItem( wxDC* DC, EDA_BaseStruct* DrawStruct )
|
||||||
}
|
}
|
||||||
|
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,7 +99,7 @@ void WinEDA_PcbGlobalDeleteFrame::AcceptPcbDelete( wxCommandEvent& event )
|
||||||
|
|
||||||
if( redraw )
|
if( redraw )
|
||||||
{
|
{
|
||||||
m_Parent->GetScreen()->SetCurItem( NULL );
|
m_Parent->SetCurItem( NULL );
|
||||||
m_Parent->ReDrawPanel();
|
m_Parent->ReDrawPanel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,7 +182,7 @@ bool WinEDA_BasePcbFrame::Clear_Pcb( wxDC* DC, bool query )
|
||||||
m_Pcb->m_NbNoconnect = 0;
|
m_Pcb->m_NbNoconnect = 0;
|
||||||
m_Pcb->m_NbSegmTrack = 0;
|
m_Pcb->m_NbSegmTrack = 0;
|
||||||
m_Pcb->m_NbSegmZone = 0;
|
m_Pcb->m_NbSegmZone = 0;
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
|
|
||||||
/* Init parametres de gestion */
|
/* Init parametres de gestion */
|
||||||
GetScreen()->Init();
|
GetScreen()->Init();
|
||||||
|
|
|
@ -59,7 +59,7 @@ void WinEDA_ModuleEditFrame::Load_Module_Module_From_BOARD( MODULE* Module )
|
||||||
if( Module == NULL )
|
if( Module == NULL )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_CurrentScreen->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
|
|
||||||
Clear_Pcb( NULL, TRUE );
|
Clear_Pcb( NULL, TRUE );
|
||||||
|
|
||||||
|
|
|
@ -243,7 +243,7 @@ void WinEDA_PcbFrame::StartMove_Mire( MIREPCB* MirePcb, wxDC* DC )
|
||||||
MirePcb->m_Flags |= IS_MOVED;
|
MirePcb->m_Flags |= IS_MOVED;
|
||||||
DrawPanel->ManageCurseur = Montre_Position_Mire;
|
DrawPanel->ManageCurseur = Montre_Position_Mire;
|
||||||
DrawPanel->ForceCloseManageCurseur = Exit_EditMire;
|
DrawPanel->ForceCloseManageCurseur = Exit_EditMire;
|
||||||
GetScreen()->SetCurItem( MirePcb );
|
SetCurItem( MirePcb );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -259,7 +259,7 @@ void WinEDA_PcbFrame::Place_Mire( MIREPCB* MirePcb, wxDC* DC )
|
||||||
MirePcb->m_Flags = 0;
|
MirePcb->m_Flags = 0;
|
||||||
DrawPanel->ManageCurseur = NULL;
|
DrawPanel->ManageCurseur = NULL;
|
||||||
DrawPanel->ForceCloseManageCurseur = NULL;
|
DrawPanel->ForceCloseManageCurseur = NULL;
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,10 +19,10 @@
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
EDA_BaseStruct* WinEDA_ModuleEditFrame::ModeditLocateAndDisplay()
|
BOARD_ITEM* WinEDA_ModuleEditFrame::ModeditLocateAndDisplay()
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
{
|
{
|
||||||
EDA_BaseStruct* DrawStruct = GetScreen()->GetCurItem();
|
BOARD_ITEM* DrawStruct = GetCurItem();
|
||||||
MODULE* Module = m_Pcb->m_Modules;
|
MODULE* Module = m_Pcb->m_Modules;
|
||||||
|
|
||||||
if( Module == NULL )
|
if( Module == NULL )
|
||||||
|
@ -129,7 +129,7 @@ void WinEDA_ModuleEditFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
case ID_MODEDIT_NEW_MODULE:
|
case ID_MODEDIT_NEW_MODULE:
|
||||||
Clear_Pcb( &dc, TRUE );
|
Clear_Pcb( &dc, TRUE );
|
||||||
GetScreen()->ClearUndoRedoList();
|
GetScreen()->ClearUndoRedoList();
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
GetScreen()->m_Curseur = wxPoint( 0, 0 );
|
GetScreen()->m_Curseur = wxPoint( 0, 0 );
|
||||||
Create_1_Module( &dc, wxEmptyString );
|
Create_1_Module( &dc, wxEmptyString );
|
||||||
if( m_Pcb->m_Modules )
|
if( m_Pcb->m_Modules )
|
||||||
|
@ -224,14 +224,14 @@ void WinEDA_ModuleEditFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
|
|
||||||
newmodule->m_Flags = 0;
|
newmodule->m_Flags = 0;
|
||||||
GetScreen()->ClrModify();
|
GetScreen()->ClrModify();
|
||||||
pcbframe->GetScreen()->SetCurItem( NULL );
|
pcbframe->SetCurItem( NULL );
|
||||||
mainpcb->m_Status_Pcb = 0;
|
mainpcb->m_Status_Pcb = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_LIBEDIT_IMPORT_PART:
|
case ID_LIBEDIT_IMPORT_PART:
|
||||||
GetScreen()->ClearUndoRedoList();
|
GetScreen()->ClearUndoRedoList();
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
Clear_Pcb( &dc, TRUE );
|
Clear_Pcb( &dc, TRUE );
|
||||||
GetScreen()->m_Curseur = wxPoint( 0, 0 );
|
GetScreen()->m_Curseur = wxPoint( 0, 0 );
|
||||||
Import_Module( &dc );
|
Import_Module( &dc );
|
||||||
|
@ -259,7 +259,7 @@ void WinEDA_ModuleEditFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
case ID_MODEDIT_LOAD_MODULE:
|
case ID_MODEDIT_LOAD_MODULE:
|
||||||
{
|
{
|
||||||
GetScreen()->ClearUndoRedoList();
|
GetScreen()->ClearUndoRedoList();
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
Clear_Pcb( &dc, TRUE );
|
Clear_Pcb( &dc, TRUE );
|
||||||
GetScreen()->m_Curseur = wxPoint( 0, 0 );
|
GetScreen()->m_Curseur = wxPoint( 0, 0 );
|
||||||
Load_Module_From_Library( m_CurrentLib, &dc );
|
Load_Module_From_Library( m_CurrentLib, &dc );
|
||||||
|
@ -301,7 +301,7 @@ void WinEDA_ModuleEditFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
case ID_MODEDIT_EDIT_MODULE_PROPERTIES:
|
case ID_MODEDIT_EDIT_MODULE_PROPERTIES:
|
||||||
if( m_Pcb->m_Modules )
|
if( m_Pcb->m_Modules )
|
||||||
{
|
{
|
||||||
GetScreen()->SetCurItem( m_Pcb->m_Modules );
|
SetCurItem( m_Pcb->m_Modules );
|
||||||
InstallModuleOptionsFrame( (MODULE*) GetScreen()->GetCurItem(),
|
InstallModuleOptionsFrame( (MODULE*) GetScreen()->GetCurItem(),
|
||||||
&dc, pos );
|
&dc, pos );
|
||||||
GetScreen()->GetCurItem()->m_Flags = 0;
|
GetScreen()->GetCurItem()->m_Flags = 0;
|
||||||
|
@ -375,7 +375,7 @@ void WinEDA_ModuleEditFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
case ID_POPUP_PCB_DELETE_PAD:
|
case ID_POPUP_PCB_DELETE_PAD:
|
||||||
SaveCopyInUndoList( m_Pcb->m_Modules );
|
SaveCopyInUndoList( m_Pcb->m_Modules );
|
||||||
DeletePad( (D_PAD*) GetScreen()->GetCurItem(), &dc );
|
DeletePad( (D_PAD*) GetScreen()->GetCurItem(), &dc );
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -418,7 +418,7 @@ void WinEDA_ModuleEditFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
SaveCopyInUndoList( m_Pcb->m_Modules );
|
SaveCopyInUndoList( m_Pcb->m_Modules );
|
||||||
DeleteTextModule( (TEXTE_MODULE*) GetScreen()->GetCurItem(),
|
DeleteTextModule( (TEXTE_MODULE*) GetScreen()->GetCurItem(),
|
||||||
&dc );
|
&dc );
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -432,7 +432,7 @@ void WinEDA_ModuleEditFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
if( (GetScreen()->GetCurItem()->m_Flags & IS_NEW) )
|
if( (GetScreen()->GetCurItem()->m_Flags & IS_NEW) )
|
||||||
{
|
{
|
||||||
End_Edge_Module( (EDGE_MODULE*) GetScreen()->GetCurItem(), &dc );
|
End_Edge_Module( (EDGE_MODULE*) GetScreen()->GetCurItem(), &dc );
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -474,7 +474,7 @@ void WinEDA_ModuleEditFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
SaveCopyInUndoList( m_Pcb->m_Modules );
|
SaveCopyInUndoList( m_Pcb->m_Modules );
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
RemoveStruct( GetScreen()->GetCurItem(), &dc );
|
RemoveStruct( GetScreen()->GetCurItem(), &dc );
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_MODEDIT_MODULE_ROTATE:
|
case ID_MODEDIT_MODULE_ROTATE:
|
||||||
|
|
|
@ -34,7 +34,7 @@ void WinEDA_ModuleEditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
* quand un outil est deja selectionné
|
* quand un outil est deja selectionné
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
EDA_BaseStruct* DrawStruct = m_CurrentScreen->GetCurItem();
|
BOARD_ITEM* DrawStruct = GetCurItem();
|
||||||
|
|
||||||
DrawPanel->CursorOff( DC );
|
DrawPanel->CursorOff( DC );
|
||||||
if( m_ID_current_state == 0 )
|
if( m_ID_current_state == 0 )
|
||||||
|
@ -72,10 +72,11 @@ void WinEDA_ModuleEditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DrawStruct = m_CurrentScreen->GetCurItem();
|
DrawStruct = GetCurItem();
|
||||||
if( !DrawStruct || (DrawStruct->m_Flags == 0) )
|
if( !DrawStruct || (DrawStruct->m_Flags == 0) )
|
||||||
{
|
{
|
||||||
m_CurrentScreen->SetCurItem( DrawStruct = ModeditLocateAndDisplay() );
|
DrawStruct = (BOARD_ITEM*) ModeditLocateAndDisplay();
|
||||||
|
SetCurItem( DrawStruct );
|
||||||
}
|
}
|
||||||
|
|
||||||
switch( m_ID_current_state )
|
switch( m_ID_current_state )
|
||||||
|
@ -97,7 +98,7 @@ void WinEDA_ModuleEditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
if( m_ID_current_state == ID_PCB_ARC_BUTT )
|
if( m_ID_current_state == ID_PCB_ARC_BUTT )
|
||||||
shape = S_ARC;
|
shape = S_ARC;
|
||||||
|
|
||||||
m_CurrentScreen->SetCurItem(
|
SetCurItem(
|
||||||
Begin_Edge_Module( (EDGE_MODULE*) NULL, DC, shape ) );
|
Begin_Edge_Module( (EDGE_MODULE*) NULL, DC, shape ) );
|
||||||
}
|
}
|
||||||
else if( (DrawStruct->m_Flags & IS_NEW) )
|
else if( (DrawStruct->m_Flags & IS_NEW) )
|
||||||
|
@ -105,16 +106,16 @@ void WinEDA_ModuleEditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
if( ( (EDGE_MODULE*) DrawStruct )->m_Shape == S_CIRCLE )
|
if( ( (EDGE_MODULE*) DrawStruct )->m_Shape == S_CIRCLE )
|
||||||
{
|
{
|
||||||
End_Edge_Module( (EDGE_MODULE*) DrawStruct, DC );
|
End_Edge_Module( (EDGE_MODULE*) DrawStruct, DC );
|
||||||
m_CurrentScreen->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
else if( ( (EDGE_MODULE*) DrawStruct )->m_Shape == S_ARC )
|
else if( ( (EDGE_MODULE*) DrawStruct )->m_Shape == S_ARC )
|
||||||
{
|
{
|
||||||
End_Edge_Module( (EDGE_MODULE*) DrawStruct, DC );
|
End_Edge_Module( (EDGE_MODULE*) DrawStruct, DC );
|
||||||
m_CurrentScreen->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
else if( ( (EDGE_MODULE*) DrawStruct )->m_Shape == S_SEGMENT )
|
else if( ( (EDGE_MODULE*) DrawStruct )->m_Shape == S_SEGMENT )
|
||||||
{
|
{
|
||||||
m_CurrentScreen->SetCurItem(
|
SetCurItem(
|
||||||
Begin_Edge_Module( (EDGE_MODULE*) DrawStruct, DC, 0 ) );
|
Begin_Edge_Module( (EDGE_MODULE*) DrawStruct, DC, 0 ) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -130,7 +131,7 @@ void WinEDA_ModuleEditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
{
|
{
|
||||||
SaveCopyInUndoList( m_Pcb->m_Modules );
|
SaveCopyInUndoList( m_Pcb->m_Modules );
|
||||||
RemoveStruct( DrawStruct, DC );
|
RemoveStruct( DrawStruct, DC );
|
||||||
m_CurrentScreen->SetCurItem( DrawStruct = NULL );
|
SetCurItem( DrawStruct = NULL );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -144,7 +145,7 @@ void WinEDA_ModuleEditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
Place_Module( m_Pcb->m_Modules, DC );
|
Place_Module( m_Pcb->m_Modules, DC );
|
||||||
RedrawActiveWindow( DC, TRUE );
|
RedrawActiveWindow( DC, TRUE );
|
||||||
SetToolID( 0, wxCURSOR_ARROW, wxEmptyString );
|
SetToolID( 0, wxCURSOR_ARROW, wxEmptyString );
|
||||||
m_CurrentScreen->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_TEXT_COMMENT_BUTT:
|
case ID_TEXT_COMMENT_BUTT:
|
||||||
|
@ -181,7 +182,7 @@ void WinEDA_ModuleEditFrame::OnRightClick( const wxPoint& MousePos,
|
||||||
* Ce menu est ensuite complété par la liste des commandes de ZOOM
|
* Ce menu est ensuite complété par la liste des commandes de ZOOM
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
EDA_BaseStruct* DrawStruct = m_CurrentScreen->GetCurItem();
|
BOARD_ITEM* DrawStruct = GetCurItem();
|
||||||
wxString msg;
|
wxString msg;
|
||||||
bool append_set_width = FALSE;
|
bool append_set_width = FALSE;
|
||||||
bool BlockActive = (m_CurrentScreen->BlockLocate.m_Command != BLOCK_IDLE);
|
bool BlockActive = (m_CurrentScreen->BlockLocate.m_Command != BLOCK_IDLE);
|
||||||
|
@ -189,7 +190,7 @@ void WinEDA_ModuleEditFrame::OnRightClick( const wxPoint& MousePos,
|
||||||
// Simple localisation des elements si possible
|
// Simple localisation des elements si possible
|
||||||
if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) )
|
if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) )
|
||||||
{
|
{
|
||||||
m_CurrentScreen->SetCurItem( DrawStruct = ModeditLocateAndDisplay() );
|
SetCurItem( DrawStruct = ModeditLocateAndDisplay() );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Si commande en cours: affichage fin de commande
|
// Si commande en cours: affichage fin de commande
|
||||||
|
@ -378,7 +379,7 @@ void WinEDA_ModuleEditFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
* appel de l'editeur correspondant.
|
* appel de l'editeur correspondant.
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
EDA_BaseStruct* DrawStruct = m_CurrentScreen->GetCurItem();
|
BOARD_ITEM* DrawStruct = GetCurItem();
|
||||||
wxPoint pos = GetPosition();
|
wxPoint pos = GetPosition();
|
||||||
wxClientDC dc( DrawPanel );
|
wxClientDC dc( DrawPanel );
|
||||||
|
|
||||||
|
@ -396,7 +397,7 @@ void WinEDA_ModuleEditFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Element localisé
|
// Element localisé
|
||||||
m_CurrentScreen->SetCurItem( DrawStruct );
|
SetCurItem( DrawStruct );
|
||||||
|
|
||||||
switch( DrawStruct->Type() )
|
switch( DrawStruct->Type() )
|
||||||
{
|
{
|
||||||
|
@ -429,7 +430,7 @@ void WinEDA_ModuleEditFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
if( DrawStruct && (DrawStruct->m_Flags & IS_NEW) )
|
if( DrawStruct && (DrawStruct->m_Flags & IS_NEW) )
|
||||||
{
|
{
|
||||||
End_Edge_Module( (EDGE_MODULE*) DrawStruct, DC );
|
End_Edge_Module( (EDGE_MODULE*) DrawStruct, DC );
|
||||||
m_CurrentScreen->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,7 +56,7 @@ void WinEDA_ModuleEditFrame::GetComponentFromRedoList()
|
||||||
(MODULE*) GetScreen()->GetItemFromRedoList();
|
(MODULE*) GetScreen()->GetItemFromRedoList();
|
||||||
if( m_Pcb->m_Modules )
|
if( m_Pcb->m_Modules )
|
||||||
m_Pcb->m_Modules->Pnext = NULL;
|
m_Pcb->m_Modules->Pnext = NULL;
|
||||||
GetScreen()->SetCurItem( NULL );;
|
SetCurItem( NULL );;
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
ReCreateHToolbar();
|
ReCreateHToolbar();
|
||||||
SetToolbars();
|
SetToolbars();
|
||||||
|
@ -82,7 +82,7 @@ void WinEDA_ModuleEditFrame::GetComponentFromUndoList()
|
||||||
if( m_Pcb->m_Modules )
|
if( m_Pcb->m_Modules )
|
||||||
m_Pcb->m_Modules->Pnext = NULL;
|
m_Pcb->m_Modules->Pnext = NULL;
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
GetScreen()->SetCurItem( NULL );;
|
SetCurItem( NULL );;
|
||||||
ReCreateHToolbar();
|
ReCreateHToolbar();
|
||||||
SetToolbars();
|
SetToolbars();
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,7 +131,7 @@ WinEDA_ModuleEditFrame::WinEDA_ModuleEditFrame( wxWindow* father, WinEDA_App* pa
|
||||||
|
|
||||||
m_Pcb->m_PcbFrame = this;
|
m_Pcb->m_PcbFrame = this;
|
||||||
m_CurrentScreen = ScreenModule;
|
m_CurrentScreen = ScreenModule;
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
GetSettings();
|
GetSettings();
|
||||||
|
|
||||||
wxSize GridSize( 500, 500 );
|
wxSize GridSize( 500, 500 );
|
||||||
|
|
|
@ -100,7 +100,7 @@ void WinEDA_PcbFrame::StartMove_Module( MODULE* module, wxDC* DC )
|
||||||
if( module == NULL )
|
if( module == NULL )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_CurrentScreen->SetCurItem( module );
|
SetCurItem( module );
|
||||||
m_Pcb->m_Status_Pcb &= ~CHEVELU_LOCAL_OK;
|
m_Pcb->m_Status_Pcb &= ~CHEVELU_LOCAL_OK;
|
||||||
module->m_Flags |= IS_MOVED;
|
module->m_Flags |= IS_MOVED;
|
||||||
ModuleInitOrient = module->m_Orient;
|
ModuleInitOrient = module->m_Orient;
|
||||||
|
@ -199,7 +199,7 @@ void Exit_Module( WinEDA_DrawPanel* Panel, wxDC* DC )
|
||||||
g_Drag_Pistes_On = FALSE;
|
g_Drag_Pistes_On = FALSE;
|
||||||
Panel->ManageCurseur = NULL;
|
Panel->ManageCurseur = NULL;
|
||||||
Panel->ForceCloseManageCurseur = NULL;
|
Panel->ForceCloseManageCurseur = NULL;
|
||||||
pcbframe->m_CurrentScreen->SetCurItem( NULL );
|
pcbframe->SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -93,8 +93,8 @@ static void Exit_MoveTrack( WinEDA_DrawPanel* Panel, wxDC* DC )
|
||||||
|
|
||||||
Panel->ManageCurseur = NULL;
|
Panel->ManageCurseur = NULL;
|
||||||
Panel->ForceCloseManageCurseur = NULL;
|
Panel->ForceCloseManageCurseur = NULL;
|
||||||
Panel->GetScreen()->SetCurItem( NULL );
|
Panel->SetCurItem( NULL );
|
||||||
Panel->m_Parent->EraseMsgBox();
|
// Panel->m_Parent->EraseMsgBox(); SeCurItem() does this
|
||||||
|
|
||||||
/* Annulation deplacement et Redessin des segments dragges */
|
/* Annulation deplacement et Redessin des segments dragges */
|
||||||
DRAG_SEGM* pt_drag = g_DragSegmentList;
|
DRAG_SEGM* pt_drag = g_DragSegmentList;
|
||||||
|
|
|
@ -95,8 +95,7 @@ static void Abort_MoveTrack( WinEDA_DrawPanel* Panel, wxDC* DC )
|
||||||
|
|
||||||
Panel->ManageCurseur = NULL;
|
Panel->ManageCurseur = NULL;
|
||||||
Panel->ForceCloseManageCurseur = NULL;
|
Panel->ForceCloseManageCurseur = NULL;
|
||||||
Panel->GetScreen()->SetCurItem( NULL );
|
((WinEDA_PcbFrame*)Panel->m_Parent)->SetCurItem(NULL);
|
||||||
Panel->m_Parent->EraseMsgBox();
|
|
||||||
|
|
||||||
/* Annulation deplacement et Redessin des segments dragges */
|
/* Annulation deplacement et Redessin des segments dragges */
|
||||||
DRAG_SEGM* pt_drag = g_DragSegmentList;
|
DRAG_SEGM* pt_drag = g_DragSegmentList;
|
||||||
|
|
|
@ -113,7 +113,7 @@ static void Exit_Muonde( WinEDA_DrawFrame* frame, wxDC* DC )
|
||||||
|
|
||||||
frame->DrawPanel->ManageCurseur = NULL;
|
frame->DrawPanel->ManageCurseur = NULL;
|
||||||
frame->DrawPanel->ForceCloseManageCurseur = NULL;
|
frame->DrawPanel->ForceCloseManageCurseur = NULL;
|
||||||
frame->m_CurrentScreen->SetCurItem( NULL );
|
frame->SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -131,25 +131,23 @@ void WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
||||||
bool BlockActive = (m_CurrentScreen->BlockLocate.m_Command != BLOCK_IDLE);
|
bool BlockActive = (m_CurrentScreen->BlockLocate.m_Command != BLOCK_IDLE);
|
||||||
wxClientDC dc( DrawPanel );
|
wxClientDC dc( DrawPanel );
|
||||||
|
|
||||||
BOARD_ITEM* item = GetScreen()->GetCurItem();
|
BOARD_ITEM* item = GetCurItem();
|
||||||
|
|
||||||
DrawPanel->CursorOff( &dc );
|
DrawPanel->CursorOff( &dc );
|
||||||
DrawPanel->m_CanStartBlock = -1; // Ne pas engager un debut de bloc sur validation menu
|
DrawPanel->m_CanStartBlock = -1; // Ne pas engager un debut de bloc sur validation menu
|
||||||
|
|
||||||
// Simple localisation des elements si possible
|
|
||||||
if( item == NULL || item->m_Flags == 0 )
|
/* The user must now left click to first make the selection. OnRightClick()
|
||||||
|
is now only an action mechanism, not a selection mechanism. The selection
|
||||||
|
mechanism sometimes involves a popup menu, so it is too complex to try
|
||||||
|
and do that here.
|
||||||
|
|
||||||
|
// Only offer user a new selection if there is currently none.
|
||||||
|
if( item == NULL )
|
||||||
{
|
{
|
||||||
if( m_HTOOL_current_state == ID_TOOLBARH_PCB_AUTOPLACE )
|
|
||||||
{
|
|
||||||
item = Locate_Prefered_Module( m_Pcb, CURSEUR_OFF_GRILLE | VISIBLE_ONLY );
|
|
||||||
if( item )
|
|
||||||
item->Display_Infos( this );
|
|
||||||
else
|
|
||||||
item = PcbGeneralLocateAndDisplay();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
item = PcbGeneralLocateAndDisplay();
|
item = PcbGeneralLocateAndDisplay();
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
// If command in progress: Put the Cancel command (if needed) and End command
|
// If command in progress: Put the Cancel command (if needed) and End command
|
||||||
if( m_ID_current_state )
|
if( m_ID_current_state )
|
||||||
|
@ -187,19 +185,11 @@ void WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_CurrentScreen->SetCurItem( item );
|
|
||||||
|
|
||||||
if( item )
|
if( item )
|
||||||
flags = item->m_Flags;
|
flags = item->m_Flags;
|
||||||
else
|
else
|
||||||
flags = 0;
|
flags = 0;
|
||||||
|
|
||||||
if( !flags )
|
|
||||||
{
|
|
||||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_GET_AND_MOVE_MODULE_REQUEST,
|
|
||||||
_( "Get and Move Footprint" ), Move_Module_xpm );
|
|
||||||
}
|
|
||||||
|
|
||||||
if( item )
|
if( item )
|
||||||
{
|
{
|
||||||
switch( item->Type() )
|
switch( item->Type() )
|
||||||
|
@ -230,15 +220,6 @@ void WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TYPEPAD:
|
case TYPEPAD:
|
||||||
if( !flags )
|
|
||||||
{
|
|
||||||
MODULE* module = (MODULE*) item->m_Parent;
|
|
||||||
if( module )
|
|
||||||
{
|
|
||||||
CreatePopUpMenuForFootprints( module, aPopMenu, TRUE );
|
|
||||||
aPopMenu->AppendSeparator();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
CreatePopUpMenuForPads( (D_PAD*) item, aPopMenu );
|
CreatePopUpMenuForPads( (D_PAD*) item, aPopMenu );
|
||||||
if( m_HTOOL_current_state == ID_TOOLBARH_PCB_AUTOROUTE )
|
if( m_HTOOL_current_state == ID_TOOLBARH_PCB_AUTOROUTE )
|
||||||
{
|
{
|
||||||
|
@ -248,19 +229,28 @@ void WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
||||||
aPopMenu->Append( ID_POPUP_PCB_AUTOROUTE_NET, _( "Autoroute Net" ) );
|
aPopMenu->Append( ID_POPUP_PCB_AUTOROUTE_NET, _( "Autoroute Net" ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
|
|
||||||
case TYPETEXTEMODULE:
|
|
||||||
if( !flags )
|
if( !flags )
|
||||||
{
|
{
|
||||||
MODULE* module = (MODULE*) item->m_Parent;
|
MODULE* module = (MODULE*) item->m_Parent;
|
||||||
if( module )
|
if( module )
|
||||||
{
|
{
|
||||||
CreatePopUpMenuForFootprints( module, aPopMenu, TRUE );
|
|
||||||
aPopMenu->AppendSeparator();
|
aPopMenu->AppendSeparator();
|
||||||
|
CreatePopUpMenuForFootprints( module, aPopMenu, TRUE );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TYPETEXTEMODULE:
|
||||||
CreatePopUpMenuForFpTexts( (TEXTE_MODULE*) item, aPopMenu );
|
CreatePopUpMenuForFpTexts( (TEXTE_MODULE*) item, aPopMenu );
|
||||||
|
if( !flags )
|
||||||
|
{
|
||||||
|
MODULE* module = (MODULE*) item->m_Parent;
|
||||||
|
if( module )
|
||||||
|
{
|
||||||
|
aPopMenu->AppendSeparator();
|
||||||
|
CreatePopUpMenuForFootprints( module, aPopMenu, TRUE );
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TYPEDRAWSEGMENT:
|
case TYPEDRAWSEGMENT:
|
||||||
|
@ -355,6 +345,12 @@ void WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
||||||
aPopMenu->AppendSeparator();
|
aPopMenu->AppendSeparator();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( !flags )
|
||||||
|
{
|
||||||
|
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_GET_AND_MOVE_MODULE_REQUEST,
|
||||||
|
_( "Get and Move Footprint" ), Move_Module_xpm );
|
||||||
|
}
|
||||||
|
|
||||||
/* Traitement des fonctions specifiques */
|
/* Traitement des fonctions specifiques */
|
||||||
switch( m_ID_current_state )
|
switch( m_ID_current_state )
|
||||||
{
|
{
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "pcbnew.h"
|
#include "pcbnew.h"
|
||||||
|
#include "collectors.h"
|
||||||
|
|
||||||
#include "bitmaps.h"
|
#include "bitmaps.h"
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
|
@ -16,7 +17,7 @@
|
||||||
/* class WinEDA_PcbFrame */
|
/* class WinEDA_PcbFrame */
|
||||||
/*******************************/
|
/*******************************/
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE( WinEDA_PcbFrame, wxFrame )
|
BEGIN_EVENT_TABLE( WinEDA_PcbFrame, WinEDA_BasePcbFrame )
|
||||||
|
|
||||||
COMMON_EVENTS_DRAWFRAME
|
COMMON_EVENTS_DRAWFRAME
|
||||||
EVT_SOCKET( ID_EDA_SOCKET_EVENT_SERV, WinEDA_PcbFrame::OnSockRequestServer )
|
EVT_SOCKET( ID_EDA_SOCKET_EVENT_SERV, WinEDA_PcbFrame::OnSockRequestServer )
|
||||||
|
|
|
@ -251,7 +251,7 @@ void Exit_Texte_Pcb( WinEDA_DrawPanel* Panel, wxDC* DC )
|
||||||
|
|
||||||
Panel->ManageCurseur = NULL;
|
Panel->ManageCurseur = NULL;
|
||||||
Panel->ForceCloseManageCurseur = NULL;
|
Panel->ForceCloseManageCurseur = NULL;
|
||||||
Panel->GetScreen()->SetCurItem( NULL );
|
((WinEDA_PcbFrame*)Panel->m_Parent)->SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -270,7 +270,7 @@ void WinEDA_PcbFrame::Place_Texte_Pcb( TEXTE_PCB* TextePcb, wxDC* DC )
|
||||||
TextePcb->Draw( DrawPanel, DC, wxPoint( 0, 0 ), GR_OR );
|
TextePcb->Draw( DrawPanel, DC, wxPoint( 0, 0 ), GR_OR );
|
||||||
DrawPanel->ManageCurseur = NULL;
|
DrawPanel->ManageCurseur = NULL;
|
||||||
DrawPanel->ForceCloseManageCurseur = NULL;
|
DrawPanel->ForceCloseManageCurseur = NULL;
|
||||||
m_CurrentScreen->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
m_CurrentScreen->SetModify();
|
m_CurrentScreen->SetModify();
|
||||||
TextePcb->m_Flags = 0;
|
TextePcb->m_Flags = 0;
|
||||||
}
|
}
|
||||||
|
@ -291,7 +291,7 @@ void WinEDA_PcbFrame::StartMoveTextePcb( TEXTE_PCB* TextePcb, wxDC* DC )
|
||||||
TextePcb->Display_Infos( this );
|
TextePcb->Display_Infos( this );
|
||||||
DrawPanel->ManageCurseur = Move_Texte_Pcb;
|
DrawPanel->ManageCurseur = Move_Texte_Pcb;
|
||||||
DrawPanel->ForceCloseManageCurseur = Exit_Texte_Pcb;
|
DrawPanel->ForceCloseManageCurseur = Exit_Texte_Pcb;
|
||||||
m_CurrentScreen->SetCurItem( TextePcb );
|
SetCurItem( TextePcb );
|
||||||
DrawPanel->ManageCurseur( DrawPanel, DC, FALSE );
|
DrawPanel->ManageCurseur( DrawPanel, DC, FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -332,7 +332,7 @@ void WinEDA_PcbFrame::Delete_Texte_Pcb( TEXTE_PCB* TextePcb, wxDC* DC )
|
||||||
DeleteStructure( TextePcb );
|
DeleteStructure( TextePcb );
|
||||||
DrawPanel->ManageCurseur = NULL;
|
DrawPanel->ManageCurseur = NULL;
|
||||||
DrawPanel->ForceCloseManageCurseur = NULL;
|
DrawPanel->ForceCloseManageCurseur = NULL;
|
||||||
m_CurrentScreen->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -495,7 +495,7 @@ EDGE_ZONE* WinEDA_PcbFrame::Del_SegmEdgeZone( wxDC* DC, EDGE_ZONE* edge_zone )
|
||||||
|
|
||||||
Segm = previous_segm;
|
Segm = previous_segm;
|
||||||
m_Pcb->m_CurrentLimitZone = Segm;
|
m_Pcb->m_CurrentLimitZone = Segm;
|
||||||
GetScreen()->SetCurItem( Segm );
|
SetCurItem( Segm );
|
||||||
|
|
||||||
if( Segm )
|
if( Segm )
|
||||||
{
|
{
|
||||||
|
@ -507,7 +507,7 @@ EDGE_ZONE* WinEDA_PcbFrame::Del_SegmEdgeZone( wxDC* DC, EDGE_ZONE* edge_zone )
|
||||||
{
|
{
|
||||||
DrawPanel->ManageCurseur = NULL;
|
DrawPanel->ManageCurseur = NULL;
|
||||||
DrawPanel->ForceCloseManageCurseur = NULL;
|
DrawPanel->ForceCloseManageCurseur = NULL;
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
return Segm;
|
return Segm;
|
||||||
}
|
}
|
||||||
|
@ -626,7 +626,7 @@ static void Exit_Zones( WinEDA_DrawPanel* Panel, wxDC* DC )
|
||||||
|
|
||||||
Panel->ManageCurseur = NULL;
|
Panel->ManageCurseur = NULL;
|
||||||
Panel->ForceCloseManageCurseur = NULL;
|
Panel->ForceCloseManageCurseur = NULL;
|
||||||
pcbframe->GetScreen()->SetCurItem( NULL );
|
pcbframe->SetCurItem( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -656,7 +656,7 @@ void WinEDA_BasePcbFrame::DelLimitesZone( wxDC* DC, bool Redraw )
|
||||||
segment->Pnext = NULL; delete segment;
|
segment->Pnext = NULL; delete segment;
|
||||||
}
|
}
|
||||||
|
|
||||||
GetScreen()->SetCurItem( NULL );
|
SetCurItem( NULL );
|
||||||
m_Pcb->m_CurrentLimitZone = NULL;
|
m_Pcb->m_CurrentLimitZone = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
8
todo.txt
8
todo.txt
|
@ -7,6 +7,10 @@ folks will see these items and volunteer to do them.
|
||||||
// @todo: bug? memory leak at this point: about line 418
|
// @todo: bug? memory leak at this point: about line 418
|
||||||
this definitely looks like a memory leak.
|
this definitely looks like a memory leak.
|
||||||
|
|
||||||
|
*** footprint_text_xpm is included more than once into the link image of pcbnew.
|
||||||
|
|
||||||
|
*** @todo: grep for @todo and finish off those tasks.
|
||||||
|
|
||||||
|
|
||||||
*** make the ADD_MENUITEM macros in include/macros.h be static inline functions instead
|
*** make the ADD_MENUITEM macros in include/macros.h be static inline functions instead
|
||||||
of macros. e.g. w/o argument types:
|
of macros. e.g. w/o argument types:
|
||||||
|
@ -18,10 +22,6 @@ static inline void ADD_MENUITEM(menu, id, text, icon)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
*** Add hierarchical menu to right mouse click in PCBNEW for the case when
|
|
||||||
multiple items are under the mouse cursor.
|
|
||||||
|
|
||||||
|
|
||||||
*** Set up a DOXYGEN environment starting with a configuration file that:
|
*** Set up a DOXYGEN environment starting with a configuration file that:
|
||||||
- understands the JavaDoc style comments that we have started using
|
- understands the JavaDoc style comments that we have started using
|
||||||
- gives preference to comments in header files over *.cpp files
|
- gives preference to comments in header files over *.cpp files
|
||||||
|
|
Loading…
Reference in New Issue