Commit e704c625 authored by CHARRAS's avatar CHARRAS

some minor enhancements

parent 0bcc4d34
......@@ -10,6 +10,11 @@ email address.
if we switch from a long list of footprints to a short list (a filtered footprint list),
and if the selected item is near the end of the long list,
the new list is not displayed from the top of the list box
+eeschema:
Implemented: graying in/out of "Edit/Undo", "Edit/Redo" menu items,
when Undo/Redo stack is empty/filled.
+pcbnew:
Implemented: action for ID_POPUP_PCB_DELETE_MARKER
2007-Oct-27 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
......
......@@ -112,7 +112,7 @@ END_EVENT_TABLE()
/****************/
/* Constructeur */
/* Constructor */
/****************/
WinEDA_SchematicFrame:: WinEDA_SchematicFrame(wxWindow * father, WinEDA_App *parent,
......@@ -120,9 +120,9 @@ WinEDA_SchematicFrame:: WinEDA_SchematicFrame(wxWindow * father, WinEDA_App *par
WinEDA_DrawFrame(father, SCHEMATIC_FRAME, parent, title, pos, size, style)
{
m_FrameName = wxT("SchematicFrame");
m_Draw_Axis = FALSE; // TRUE pour avoir les axes dessines
m_Draw_Grid = g_ShowGrid; // TRUE pour avoir la grille dessinee
m_Draw_Sheet_Ref = TRUE; // TRUE pour avoir le cartouche dessin
m_Draw_Axis = FALSE; // TRUE to show axis
m_Draw_Grid = g_ShowGrid; // TRUE to show a grid
m_Draw_Sheet_Ref = TRUE; // TRUE to show sheet references
// Give an icon
#ifdef __WINDOWS__
......@@ -149,7 +149,7 @@ WinEDA_SchematicFrame:: WinEDA_SchematicFrame(wxWindow * father, WinEDA_App *par
/***************/
/* Destructeur */
/* Destructor */
/***************/
WinEDA_SchematicFrame::~WinEDA_SchematicFrame()
......@@ -199,7 +199,7 @@ SCH_SCREEN * screen;
}
screen = ScreenSch ;
while( screen ) // suppression flag modify pour eviter d'autres message
while( screen ) // Clear "flag modify" to avoid alert messages when closing sub sheets
{
screen->ClrModify();
screen = (SCH_SCREEN*)screen->Pnext;
......@@ -210,8 +210,7 @@ SCH_SCREEN * screen;
ClearProjectDrawList(ScreenSch, TRUE);
/* Tous les autres SCREEN sont effaces, aussi reselection de
l'ecran de base, pour les evenements de refresh gnrs par wxWindows */
/* allof sub sheets are deleted, only the main sheet is useable */
m_CurrentScreen = ActiveScreen = ScreenSch;
SaveSettings();
......@@ -226,8 +225,7 @@ SCH_SCREEN * screen;
/********************************************/
void WinEDA_SchematicFrame::SetToolbars()
/********************************************/
/* Active ou desactive les tools du toolbar horizontal, en fonction des commandes
en cours
/* Enable or disable some tools according to current conditions
*/
{
if( m_HToolBar )
......@@ -246,12 +244,27 @@ en cours
if ( g_BlockSaveDataList ) m_HToolBar->EnableTool(wxID_PASTE,TRUE);
else m_HToolBar->EnableTool(wxID_PASTE,FALSE);
wxMenuBar * menuBar = GetMenuBar();
if ( GetScreen()->m_RedoList )
{
m_HToolBar->EnableTool(ID_SCHEMATIC_REDO,TRUE);
else m_HToolBar->EnableTool(ID_SCHEMATIC_REDO,FALSE);
menuBar->Enable(ID_SCHEMATIC_REDO,TRUE);
}
else
{
m_HToolBar->EnableTool(ID_SCHEMATIC_REDO,FALSE);
menuBar->Enable(ID_SCHEMATIC_REDO,FALSE);
}
if ( GetScreen()->m_UndoList )
{
m_HToolBar->EnableTool(ID_SCHEMATIC_UNDO,TRUE);
else m_HToolBar->EnableTool(ID_SCHEMATIC_UNDO,FALSE);
menuBar->Enable(ID_SCHEMATIC_UNDO,TRUE);
}
else
{
m_HToolBar->EnableTool(ID_SCHEMATIC_UNDO,FALSE);
menuBar->Enable(ID_SCHEMATIC_UNDO,FALSE);
}
}
if ( m_OptionsToolBar )
......
......@@ -5,7 +5,7 @@
COMMON_GLOBL wxString g_BuildVersion
#ifdef EDA_BASE
(wxT("(2007-10-21)"))
(wxT("(2007-10-29)"))
#endif
;
......
......@@ -681,7 +681,7 @@ public:
void Erase_Textes_Pcb( wxDC* DC, bool query );
void Erase_Marqueurs();
void UnDeleteItem( wxDC* DC );
void RemoveStruct( EDA_BaseStruct* Item, wxDC* DC );
void RemoveStruct( BOARD_ITEM* Item, wxDC* DC );
void Via_Edit_Control( wxDC* DC, int command_type, SEGVIA* via );
// Hightlight functions:
......
No preview for this file type
This diff is collapsed.
......@@ -25,7 +25,7 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const
* @param aPcb = the parent board
*/
{
wxString text;
wxString text, msg;
const BOARD_ITEM* item = this;
EQUIPOT* net;
D_PAD * pad;
......@@ -174,7 +174,7 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const
text << wxT(" ") << _( "Blind" );
else if( shape == VIA_BLIND )
text << wxT(" ") << _("Buried");
// else say nothing about normal vias
// else say nothing about normal (through) vias
net = aPcb->FindNet( via->GetNet() );
if( net )
......@@ -203,9 +203,9 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const
break;
case TYPEMIRE:
text << _( "Target" ) //<< wxT( " on " ) << ReturnPcbLayerName( item->GetLayer() ).Trim()
// could use if problem with decimal point and user units was fixed:
// << wxT( " " ) << wxT( "size" ) << wxT( " " ) << ((MIREPCB*)item)->m_Size
valeur_param( ((MIREPCB*)item)->m_Size, msg );
text << _( "Target" ) << _( " on " ) << ReturnPcbLayerName( item->GetLayer() ).Trim()
<< wxT( " " ) << _( "size" ) << wxT( " " ) << msg
;
break;
......
......@@ -221,11 +221,10 @@ void D_PAD::UnLink()
void D_PAD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int draw_mode )
/*******************************************************************************************/
/* Trac�a l'�ran d'un pad:
* Entree :
* ptr_pad = pointeur sur le pad du module
* offset = offset de trace
* draw_mode = mode de trace ( GR_OR, GR_XOR, GR_AND)
/** Draw a pad:
* @param DC = device context
* @param offset = draw offset
* @param draw_mode = mode: GR_OR, GR_XOR, GR_AND...
*/
{
int ii;
......@@ -239,20 +238,23 @@ void D_PAD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int
wxPoint coord[4];
int zoom;
int fillpad = 0;
WinEDA_BasePcbFrame* frame;
WinEDA_BasePcbFrame* frame = NULL;
wxPoint shape_pos;
PCB_SCREEN* screen = panel ?
(PCB_SCREEN*) panel->m_Parent->m_CurrentScreen :
(PCB_SCREEN*) ActiveScreen;
// @todo: if panel could have been NULL above, how can we dereference it here safely?
frame = (WinEDA_BasePcbFrame*) panel->m_Parent;
/* Calcul de l'aspect du pad */
if( frame->m_DisplayPadFill == FILLED )
fillpad = 1;
if ( panel ) // Use current frame setting
{
frame = (WinEDA_BasePcbFrame*) panel->m_Parent;
}
else // Use board frame setting
if( DisplayOpt.DisplayPadFill == FILLED )
fillpad = 1;
if( frame->m_DisplayPadFill == FILLED )
fillpad = 1;
zoom = screen->GetZoom();
#ifdef PCBNEW
......@@ -334,7 +336,7 @@ void D_PAD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int
if( m_Attribut==SMD && DisplayOpt.ContrastModeDisplay )
{
// when routing tracks
if( frame->m_ID_current_state == ID_TRACK_BUTT )
if( frame && frame->m_ID_current_state == ID_TRACK_BUTT )
{
int routeTop = screen->m_Route_Layer_TOP;
int routeBot = screen->m_Route_Layer_BOTTOM;
......@@ -592,8 +594,8 @@ void D_PAD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int
cx0 - dx0, cy0 + dx0, 0, nc_color );
}
/* Trace de la reference */
if( !frame->m_DisplayPadNum )
/* Draw the pad number */
if( frame && !frame->m_DisplayPadNum )
return;
dx = MIN( m_Size.x, m_Size.y ); /* dx = text size */
......
This diff is collapsed.
......@@ -39,11 +39,6 @@
////@begin control identifiers
#define ID_DIALOG 10000
#define SYMBOL_WINEDA_DISPLAYOPTIONSDIALOG_STYLE wxCAPTION|wxSYSTEM_MENU|wxCLOSE_BOX|MAYBE_RESIZE_BORDER
#define SYMBOL_WINEDA_DISPLAYOPTIONSDIALOG_TITLE _("Display Options")
#define SYMBOL_WINEDA_DISPLAYOPTIONSDIALOG_IDNAME ID_DIALOG
#define SYMBOL_WINEDA_DISPLAYOPTIONSDIALOG_SIZE wxSize(400, 300)
#define SYMBOL_WINEDA_DISPLAYOPTIONSDIALOG_POSITION wxDefaultPosition
#define ID_RADIOBOX_OPT_TRACK 10001
#define ID_RADIOBOX_SHOWCLR 10002
#define ID_RADIOBOX_SHOW_VIAS 10003
......@@ -55,6 +50,11 @@
#define ID_CHECKBOX_PADNC 10010
#define ID_RADIOBOX_SHOW_OTHERS 10011
#define ID_RADIOBOX_PAGE_LIMITS 10006
#define SYMBOL_WINEDA_DISPLAYOPTIONSDIALOG_STYLE wxCAPTION|wxSYSTEM_MENU|wxCLOSE_BOX|MAYBE_RESIZE_BORDER
#define SYMBOL_WINEDA_DISPLAYOPTIONSDIALOG_TITLE _("Display Options")
#define SYMBOL_WINEDA_DISPLAYOPTIONSDIALOG_IDNAME ID_DIALOG
#define SYMBOL_WINEDA_DISPLAYOPTIONSDIALOG_SIZE wxSize(400, 300)
#define SYMBOL_WINEDA_DISPLAYOPTIONSDIALOG_POSITION wxDefaultPosition
////@end control identifiers
/*!
......
This diff is collapsed.
......@@ -151,7 +151,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
{
DrawPanel->ForceCloseManageCurseur( DrawPanel, &dc );
}
if( m_ID_current_state != id )
SetToolID( 0, wxCURSOR_ARROW, wxEmptyString );
break;
......@@ -697,6 +697,11 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
DrawPanel->MouseToCursorSchema();
break;
case ID_POPUP_PCB_DELETE_MARKER:
RemoveStruct( GetCurItem(), &dc );
DrawPanel->MouseToCursorSchema();
break;
case ID_POPUP_PCB_DELETE_DRAWING_LAYER:
Delete_Drawings_All_Layer( (DRAWSEGMENT*) GetCurItem(), &dc );
SetCurItem( NULL );
......@@ -865,7 +870,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
{
wxString msg = FindKicadHelpPath();
msg += g_EDA_Appl->m_EDA_CommonConfig->Read( wxT( "module_doc_file" ),
wxT( "pcbnew/footprints.pdf" ) );
wxT( "pcbnew/footprints.pdf" ) );
GetAssociatedDocument( this, wxEmptyString, msg );
}
break;
......@@ -917,7 +922,7 @@ static void Process_Move_Item( WinEDA_PcbFrame* frame,
/***************************************************************/
void WinEDA_PcbFrame::RemoveStruct( EDA_BaseStruct* Item, wxDC* DC )
void WinEDA_PcbFrame::RemoveStruct( BOARD_ITEM* Item, wxDC* DC )
/***************************************************************/
{
if( Item == NULL )
......@@ -958,6 +963,14 @@ void WinEDA_PcbFrame::RemoveStruct( EDA_BaseStruct* Item, wxDC* DC )
break;
case TYPEMARQUEUR:
if( Item == GetCurItem() )
SetCurItem( NULL );
( (MARQUEUR*) Item )->Draw( DrawPanel, DC, GR_XOR );
/* unlikf item an free the memory
* (not put in undelete stack, because this seems unnecessary)
*/
Item->DeleteStructure();
break;
case TYPEPAD:
......@@ -1009,7 +1022,6 @@ void WinEDA_PcbFrame::SwitchLayer( wxDC* DC, int layer )
return;
}
}
// If more than one copper layer is enabled, the "Copper"
// and "Component" layers can be selected, but the total
// number of copper layers determines which internal
......@@ -1017,7 +1029,7 @@ void WinEDA_PcbFrame::SwitchLayer( wxDC* DC, int layer )
else
{
if( (layer != COPPER_LAYER_N) && (layer != LAYER_CMP_N)
&& (layer >= m_Pcb->m_BoardSettings->m_CopperLayerCount - 1) )
&& (layer >= m_Pcb->m_BoardSettings->m_CopperLayerCount - 1) )
{
// Uncomment following command (and line 17) to beep
// the speaker. (Doing that would provide feedback to
......
/**************************************/
/* PCBNEW.H : d�larations communes */
/* PCBNEW.H : headers */
/**************************************/
#ifndef PCBNEW_H
#define PCBNEW_H
......@@ -13,8 +13,8 @@
#define U_PCB (PCB_INTERNAL_UNIT / EESCHEMA_INTERNAL_UNIT)
/* valeur de flag indicant si le pointeur de reference pour une localisation
* est le curseur sur grille ou le curseur a deplacement fin hors grille */
/* Flag used in locate functions
* the locate ref point is the on grid cursor or the off grid mouse cursor */
#define CURSEUR_ON_GRILLE (0 << 0)
#define CURSEUR_OFF_GRILLE (1 << 0)
......@@ -23,30 +23,30 @@
#define VISIBLE_ONLY (1 << 3) ///< if module not on a visible layer, do not select
#define START 0 /* ctes parametre dans les routines de localisation */
#define START 0 /* Flag used in locale routines */
#define END 1
#define DIM_ANCRE_MODULE 3 /* dim du symbole de l'ancre (centre) des modules */
#define DIM_ANCRE_TEXTE 2 /* dim du symbole de l'ancre (centre) des textes */
#define DIM_ANCRE_MODULE 3 /* Anchor size (footprint centre) */
#define DIM_ANCRE_TEXTE 2 /* nchor size (Text centre) */
/* Gestion du Menu Zoom */
/* Used in Zoom menu */
#define ZOOM_PLUS -1
#define ZOOM_MOINS -2
#define ZOOM_AUTO -3
#define ZOOM_CENTER -4
#define ZOOM_REDRAW -5
/* Definition des cas ou l'on force l'affichage en SKETCH (membre .flags) */
/* Flag to force the SKETCH mode to display items (.flags member) */
#define FORCE_SKETCH (DRAG | EDIT )
/* Constantes pour options lecture fichier PCB */
#define APPEND_PCB 1 /* pour ajout d'un nouveau circuit */
#define NEWPCB 0 /* pour chargement normal */
/* Flags used in read board file */
#define APPEND_PCB 1 /* used to append the new board to the existing board */
#define NEWPCB 0 /* used for normal load file */
eda_global wxArrayString g_LibName_List; // library list to load
eda_global wxSize g_GridList[]
eda_global wxSize g_GridList[]
#ifdef MAIN
= {
wxSize( 1000, 1000 ), wxSize( 500, 500 ), wxSize( 250, 250 ), wxSize( 200, 200 ),
......@@ -60,10 +60,10 @@ eda_global wxSize g_GridList[]
;
#define UNDELETE_STACK_SIZE 10
eda_global BOARD_ITEM* g_UnDeleteStack[UNDELETE_STACK_SIZE]; // Liste des elements supprimes
eda_global int g_UnDeleteStackPtr;
eda_global BOARD_ITEM* g_UnDeleteStack[UNDELETE_STACK_SIZE]; // Linked list of deleted items
eda_global int g_UnDeleteStackPtr;
eda_global bool g_ShowGrid
eda_global bool g_ShowGrid
#ifdef MAIN
= TRUE
#endif
......@@ -82,6 +82,8 @@ eda_global int g_TabOneLayerMask[LAYER_COUNT]
0x01000000, 0x02000000, 0x04000000, 0x08000000,
0x10000000, 0x20000000, 0x40000000, 0x80000000
}
#endif
;
......@@ -106,8 +108,8 @@ eda_global bool Drc_On
= TRUE
#endif
;
eda_global bool g_AutoDeleteOldTrack /* autorise effacement automatique
* de l'ancienne piste lors des redessins de pistes */
eda_global bool g_AutoDeleteOldTrack /* Allows automatic deletion of the old track after
creation of a new track */
#ifdef MAIN
= TRUE
#endif
......@@ -126,12 +128,11 @@ eda_global bool g_Raccord_45_Auto
= TRUE
#endif
;
eda_global bool g_ShowIsolDuringCreateTrack; /* .State controle l'affichage
* de l'isolation en trace de piste */
eda_global bool g_ShowIsolDuringCreateTrack; /* Show clearance while track creation */
/**************************************************************/
/* Options d'affichages (remplissages des segments, textes..) */
/**************************************************************/
/*********************************/
/* Displa otions for board items */
/*********************************/
eda_global DISPLAY_OPTIONS DisplayOpt;
......@@ -142,8 +143,7 @@ eda_global DISPLAY_OPTIONS DisplayOpt;
* @param layer One of the two allowed layers for modules: CMP_N or COPPER_LAYER_N
* @return bool - true if the layer is visible, else false.
*/
bool inline IsModuleLayerVisible( int layer )
{
bool inline IsModuleLayerVisible( int layer ) {
if( layer==CMP_N )
return DisplayOpt.Show_Modules_Cmp;
......@@ -156,10 +156,10 @@ bool inline IsModuleLayerVisible( int layer )
eda_global bool Track_45_Only; /* Flag pour limiter l'inclinaison
* pistes a 45 degres seulement */
* pistes a 45 degres seulement */
eda_global bool Segments_45_Only;/* Flag pour limiter l'inclinaison
* edge pcb a 45 degres seulement */
eda_global wxString PcbExtBuffer
eda_global wxString PcbExtBuffer // Board file extension
#ifdef MAIN
( wxT( ".brd" ) )
#endif
......@@ -169,13 +169,13 @@ eda_global wxString g_SaveFileName // File Name for periodic saving
( wxT( "$savepcb" ) )
#endif
;
eda_global wxString NetNameBuffer;
eda_global wxString NetNameBuffer; // Netlist file extension
eda_global wxString NetExtBuffer
#ifdef MAIN
( wxT( ".net" ) )
#endif
;
eda_global wxString NetCmpExtBuffer
eda_global wxString NetCmpExtBuffer // cmp/footprint association file extension
#ifdef MAIN
( wxT( ".cmp" ) )
#endif
......@@ -187,7 +187,7 @@ eda_global wxString LibExtBuffer
( wxT( ".mod" ) )
#endif
;
eda_global wxString g_Shapes3DExtBuffer // extension des fichiers de formes 3D
eda_global wxString g_Shapes3DExtBuffer //3D shape file extension
#ifdef MAIN
( wxT( ".wrl" ) )
#endif
......@@ -201,7 +201,8 @@ eda_global int g_CurrentVersionPCB
#endif
;
#define BUFMEMSIZE 256000 /* taille du buffer de travail (en octets) */
/* A buffer used in some computations (will be removed in next cleanup code, do not use) */
#define BUFMEMSIZE 256000 /* buffer size (in bytes) */
eda_global char* buf_work; /* pointeur sur le buffer de travail */
eda_global char* adr_lowmem; /* adresse de base memoire de calcul disponible*/
eda_global char* adr_himem; /* adresse haute limite de la memoire disponible*/
......@@ -209,15 +210,16 @@ eda_global char* adr_max; /* adresse haute maxi utilisee pour la memoire *
/* variables g�erales */
eda_global char cbuf[1024]; /* buffer de formatage texte */
eda_global BOARD* g_ModuleEditor_Pcb; /* Pointeur de l'entete pcb de l'editeur de module*/
eda_global int g_TimeOut; // Duree entre 2 sauvegardes automatiques
eda_global int g_SaveTime; // heure de la prochaine sauvegarde
eda_global char cbuf[1024]; /* buffer for some text printing */
eda_global BOARD* g_ModuleEditor_Pcb; /* board used to edit footprints (used by modedit)*/
eda_global int g_TimeOut; // Timer for automatic saving
eda_global int g_SaveTime; // Time for next saving
/* Variables generales d'empreintes */
/* Variables used in footprint handling */
extern int Angle_Rot_Module;
eda_global wxSize ModuleTextSize; /* dim des textes sur Modules par defaut */
eda_global wxSize ModuleTextSize; /* Default footprint texts size */
eda_global int ModuleTextWidth;
eda_global int ModuleSegmentWidth;
eda_global int Texte_Module_Type;
......@@ -227,12 +229,12 @@ eda_global int Texte_Module_Type;
/* pistes , vias , pads*/
/***********************/
#define L_MIN_DESSIN 1 /* seuil de largeur des pistes pour trace autre que filaire */
#define L_MIN_DESSIN 1 /* Min width segments to allow draws with tickness */
// Current designe settings:
eda_global class EDA_BoardDesignSettings g_DesignSettings;
// valeurs par defaut des caract. des pads
// Default values for pad editions
#ifndef GERBVIEW
#ifdef MAIN
D_PAD g_Pad_Master( (MODULE*) NULL );
......@@ -243,18 +245,18 @@ extern D_PAD g_Pad_Master;
#endif
/* Layer pair for auto routing and switch layers by hotkey */
eda_global int Route_Layer_TOP;
eda_global int Route_Layer_BOTTOM; /* couches de routage actif */
eda_global int Route_Layer_BOTTOM;
eda_global int g_MaxLinksShowed; // determine le nombre max de links affich�
// en routage manuel
eda_global int g_MaxLinksShowed; // Mxa count links showed in routing
eda_global bool g_TwoSegmentTrackBuild // FALSE = 1 segment build, TRUE = 2 45 deg segm build
#ifdef MAIN
= TRUE
#endif
;
/* How to handle magentic pad: feature to move the pcb cursor on a pad center */
/* How to handle magnetic pads: feature to move the pcb cursor on a pad center */
enum MagneticPadOptionValues {
no_effect,
capture_cursor_in_track_tool,
......@@ -266,16 +268,18 @@ eda_global int g_MagneticPadOption
= capture_cursor_in_track_tool
#endif
;
/* Variables to handle hightlight nets */
eda_global bool g_HightLigt_Status;
eda_global int g_HightLigth_NetCode /* pour mise en surbrillance des pistes */
eda_global int g_HightLigth_NetCode
#ifdef MAIN
= -1
#endif
; /* net_code du net a mettre en surbrillance */
;
eda_global TRACK* g_CurrentTrackSegment; // pointeur sur le segment en cours de trace
eda_global TRACK* g_FirstTrackSegment; // pointeur sur le debut de la piste en cours
eda_global int g_TrackSegmentCount; // nombre de points deja traces
/* used in track creation : */
eda_global TRACK* g_CurrentTrackSegment; // current created segment
eda_global TRACK* g_FirstTrackSegment; // first segment created
eda_global int g_TrackSegmentCount; // New created segment count
eda_global wxString g_ViaType_Name[4]
......
......@@ -60,7 +60,7 @@ void WinEDA_DrawFrame::Recadre_Trace( bool ToMouse )
/************************************************/
void WinEDA_DrawFrame::PutOnGrid( wxPoint* coord )
/************************************************/
/** Adjust the coordinate to the nearest grig value
/** Adjust the coordinate to the nearest grid value
* @param coord = coordinate to adjust
*/
{
......
......@@ -48,15 +48,5 @@ compiler can help with this too.
understanding by new developers.
*** Implement the graying in/out of "Edit/Undo", "Edit/Redo" menu items,
when Undo/Redo stack is empty/filled.
*** Implement action for ID_POPUP_PCB_DELETE_MARKER, since onrightclick.cpp
can now identify a marker. To see where the user gets a menu to delete a marker:
void WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
*** Add tooltip text to all non-obvious controls in every dialog window.
Need to do this using DialogBlocks.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment