Assorted changes; see change_log.txt

This commit is contained in:
g_harland 2007-10-07 03:08:24 +00:00
parent ee68d20e58
commit 9e32b2abdb
26 changed files with 840 additions and 591 deletions

View File

@ -4,6 +4,54 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with
email address. email address.
2007-Oct-07 UPDATE Geoff Harland <gharlandau@yahoo.com.au>
================================================================================
+ all
* Various dialog boxes can now (otherwise) be cancelled by pressing the "Esc" key.
(Some dialog boxes still require attention in that regard though, so that task
is not yet complete.) And the captions of the "OK" button within various dialog
boxes have been fully capitalised (meaning that an icon is now provided within
each of those buttons within the Linux version of KiCad).
* DIALOG_STYLE (defined within include/wxstruct.h) now includes MAYBE_RESIZE_BORDER
field. (Refer to 2007-Oct-2 UPDATE notes for the relevance of this.)
* Beautification and house keeping.
+ eeschema
* The editpart.cpp and editpart.cpp files (which are no longer used) have been
removed, and replaced with editpart.cpp.notused and editpart.cpp.notused
+ cvpcb
* Additional "OK", "Cancel", and "Apply" buttons have now been provided for the
"Options" dialog box which lists various display options for footprints.
+ pcbnew
* Invoking the "Select Layer Pair:" dialog box is no longer possible whenever only
one (copper) layer is currently enabled. And it is no longer possible to select
the same layer to be both the Top Layer and Bottom Layer (for any Layer Pair).
* Deselecting layers during the "Swap layers" command is now more user-friendly,
due to the provision of an additional "(Deselect)" radiobutton within the (child)
"Select Layer:" dialog box (which is always invoked whenever a different
radiobutton within the "Swap Layers:" dialog box is clicked on). (It had
previously been necessary to cancel the "Select Layer:" dialog box before being
able to click on the "Deselect" button within the "Swap Layers:" dialog box.)
* Definition for NB_LAYERS changed from (EDGE_N + 1) to (LAST_NO_COPPER_LAYER + 1)
(Although EDGE_N is currently the "last" layer, that wouldn't necessarily still
be true if any additional layers are ever defined in the future.) And comparisons
to 29 (or 28) have been replaced with comparisons to NB_LAYERS (when appropriate).
+ gerbview
* The previously provided "Exit" button within the "GerbView Layer Colors" dialog
box has been replaced with "OK", "Cancel", and "Apply" buttons; and both the
visibility and color of the Grid layer can now be edited from the same dialog.
* Deselecting (Gerber) layers during the "Export to Pcbnew" command is now more
user-friendly, due to the provision of an additional "(Deselect)" radiobutton
within the (child) "Select Layer:" dialog box (which is always invoked whenever
a different radiobutton within the "Layer selection:" dialog box is clicked on).
(It had previously been necessary to cancel the "Select Layer:" dialog box before
being able to click on the "Deselect" button within the "Layer selection:" dialog
box.)
* The "Export to Pcbnew" command now requires at least one Gerber file to have been
already loaded. And Gerber files can now be loaded into any of the 32 (Gerber)
layers provided. (It had previously been necessary to avoid having any gaps within
the sequence of used Gerber layers.)
2007-Oct-6 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> 2007-Oct-6 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================ ================================================================================
+ pcbnew + pcbnew
@ -11,7 +59,6 @@ email address.
move RemoteCommand() and SendMessageToEESCHEMA() to cross-probing.cpp move RemoteCommand() and SendMessageToEESCHEMA() to cross-probing.cpp
2007-Oct-3 UPDATE Dick Hollenbeck <dick@softplc.com> 2007-Oct-3 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================ ================================================================================
+ pcbnew + pcbnew

View File

@ -16,14 +16,12 @@
/***********************/ /***********************/
enum listbox { enum listbox {
ID_LISTBOX_CANCEL = 8000, ID_LISTBOX_LIST = 8000
ID_LISTBOX_LIST,
ID_LISTBOX_OK
}; };
BEGIN_EVENT_TABLE(WinEDAListBox, wxDialog) BEGIN_EVENT_TABLE(WinEDAListBox, wxDialog)
EVT_BUTTON(ID_LISTBOX_OK, WinEDAListBox::Ok) EVT_BUTTON(wxID_OK, WinEDAListBox::OnOkClick)
EVT_BUTTON(ID_LISTBOX_CANCEL, WinEDAListBox::Cancel) EVT_BUTTON(wxID_CANCEL, WinEDAListBox::OnCancelClick)
EVT_LISTBOX(ID_LISTBOX_LIST, WinEDAListBox::ClickOnList) EVT_LISTBOX(ID_LISTBOX_LIST, WinEDAListBox::ClickOnList)
EVT_LISTBOX_DCLICK(ID_LISTBOX_LIST, WinEDAListBox::D_ClickOnList) EVT_LISTBOX_DCLICK(ID_LISTBOX_LIST, WinEDAListBox::D_ClickOnList)
EVT_CHAR(WinEDAListBox::OnKeyEvent) EVT_CHAR(WinEDAListBox::OnKeyEvent)
@ -98,11 +96,11 @@ int ii;
m_List->Append(*names); m_List->Append(*names);
} }
wxButton * butt = new wxButton(this, ID_LISTBOX_OK, _("Ok")); wxButton * butt = new wxButton(this, wxID_OK, _("OK"));
RightBoxSizer->Add(butt, 0, wxGROW|wxALL, 5); RightBoxSizer->Add(butt, 0, wxGROW|wxALL, 5);
butt->SetDefault(); butt->SetDefault();
butt = new wxButton(this, ID_LISTBOX_CANCEL, _("Cancel")); butt = new wxButton(this, wxID_CANCEL, _("Cancel"));
RightBoxSizer->Add(butt, 0, wxGROW|wxALL, 5); RightBoxSizer->Add(butt, 0, wxGROW|wxALL, 5);
if (m_MoveFct ) if (m_MoveFct )
@ -174,7 +172,7 @@ void WinEDAListBox::InsertItems(const wxArrayString & itemlist, int position)
} }
/************************************************/ /************************************************/
void WinEDAListBox::Cancel(wxCommandEvent& event) void WinEDAListBox::OnCancelClick(wxCommandEvent& event)
/************************************************/ /************************************************/
{ {
EndModal(-1); EndModal(-1);
@ -205,7 +203,7 @@ int ii = m_List->GetSelection();
/***********************************************/ /***********************************************/
void WinEDAListBox::Ok(wxCommandEvent& event) void WinEDAListBox::OnOkClick(wxCommandEvent& event)
/***********************************************/ /***********************************************/
{ {
int ii = m_List->GetSelection(); int ii = m_List->GetSelection();
@ -224,7 +222,7 @@ void WinEDAListBox::OnClose(wxCloseEvent& event)
static int SortItems( const wxString ** ptr1, const wxString ** ptr2 ) static int SortItems( const wxString ** ptr1, const wxString ** ptr2 )
/********************************************************************/ /********************************************************************/
/* Routines de comparaison pour le tri tri alphabetique, /* Routines de comparaison pour le tri tri alphabetique,
avec traitement des nombres en tant que valeur numerique * avec traitement des nombres en tant que valeur numerique
*/ */
{ {
return StrNumICmp( (*ptr1)->GetData(), (*ptr2)->GetData() ); return StrNumICmp( (*ptr1)->GetData(), (*ptr2)->GetData() );

View File

@ -47,7 +47,8 @@ void WinEDA_DisplayFrame::InstallOptionsDisplay(wxCommandEvent& event)
/* Creation de la fenetre d'options de la fenetre de visu */ /* Creation de la fenetre d'options de la fenetre de visu */
{ {
KiDisplayOptionsFrame * OptionWindow = new KiDisplayOptionsFrame(this); KiDisplayOptionsFrame * OptionWindow = new KiDisplayOptionsFrame(this);
OptionWindow->ShowModal(); OptionWindow->Destroy(); OptionWindow->ShowModal();
OptionWindow->Destroy();
} }
@ -65,15 +66,13 @@ IMPLEMENT_DYNAMIC_CLASS( KiDisplayOptionsFrame, wxDialog )
BEGIN_EVENT_TABLE( KiDisplayOptionsFrame, wxDialog ) BEGIN_EVENT_TABLE( KiDisplayOptionsFrame, wxDialog )
////@begin KiDisplayOptionsFrame event table entries ////@begin KiDisplayOptionsFrame event table entries
EVT_CHECKBOX( PADNUM_OPT, KiDisplayOptionsFrame::OnPadnumOptClick )
EVT_BUTTON( ID_SAVE_CONFIG, KiDisplayOptionsFrame::OnSaveConfigClick ) EVT_BUTTON( ID_SAVE_CONFIG, KiDisplayOptionsFrame::OnSaveConfigClick )
EVT_CHECKBOX( PADFILL_OPT, KiDisplayOptionsFrame::OnPadfillOptClick ) EVT_BUTTON( wxID_OK, KiDisplayOptionsFrame::OnOkClick )
EVT_RADIOBOX( EDGE_SELECT, KiDisplayOptionsFrame::OnEdgeSelectSelected ) EVT_BUTTON( wxID_CANCEL, KiDisplayOptionsFrame::OnCancelClick )
EVT_RADIOBOX( TEXT_SELECT, KiDisplayOptionsFrame::OnTextSelectSelected ) EVT_BUTTON( wxID_APPLY, KiDisplayOptionsFrame::OnApplyClick )
////@end KiDisplayOptionsFrame event table entries ////@end KiDisplayOptionsFrame event table entries
@ -101,10 +100,10 @@ KiDisplayOptionsFrame::KiDisplayOptionsFrame( WinEDA_BasePcbFrame* parent, wxWin
bool KiDisplayOptionsFrame::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) bool KiDisplayOptionsFrame::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
{ {
////@begin KiDisplayOptionsFrame member initialisation ////@begin KiDisplayOptionsFrame member initialisation
m_IsShowPadNum = NULL;
m_IsShowPadFill = NULL;
m_EdgesDisplayOption = NULL; m_EdgesDisplayOption = NULL;
m_TextDisplayOption = NULL; m_TextDisplayOption = NULL;
m_IsShowPadNum = NULL;
m_IsShowPadFill = NULL;
////@end KiDisplayOptionsFrame member initialisation ////@end KiDisplayOptionsFrame member initialisation
////@begin KiDisplayOptionsFrame creation ////@begin KiDisplayOptionsFrame creation
@ -132,24 +131,16 @@ void KiDisplayOptionsFrame::CreateControls()
KiDisplayOptionsFrame* itemDialog1 = this; KiDisplayOptionsFrame* itemDialog1 = this;
wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
itemDialog1->SetSizer(itemBoxSizer2); itemDialog1->SetSizer(itemBoxSizer2);
wxFlexGridSizer* itemFlexGridSizer3 = new wxFlexGridSizer(3, 2, 0, 0); wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxHORIZONTAL);
itemBoxSizer2->Add(itemFlexGridSizer3, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); // itemBoxSizer2->Add(itemBoxSizer3, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
itemBoxSizer2->Add(itemBoxSizer3, 0, wxALIGN_TOP|wxALL, 5);
m_IsShowPadNum = new wxCheckBox( itemDialog1, PADNUM_OPT, _("Pad &Num"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
m_IsShowPadNum->SetValue(false); // itemBoxSizer2->Add(itemBoxSizer4, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
itemFlexGridSizer3->Add(m_IsShowPadNum, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5); itemBoxSizer2->Add(itemBoxSizer4, 0, wxGROW|wxALIGN_TOP|wxALL, 5);
wxButton* itemButton5 = new wxButton( itemDialog1, ID_SAVE_CONFIG, _("Save Cfg"), wxDefaultPosition, wxDefaultSize, 0 );
itemFlexGridSizer3->Add(itemButton5, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5);
m_IsShowPadFill = new wxCheckBox( itemDialog1, PADFILL_OPT, _("&Pad Fill"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
m_IsShowPadFill->SetValue(false);
itemFlexGridSizer3->Add(m_IsShowPadFill, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
itemFlexGridSizer3->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
wxString m_EdgesDisplayOptionStrings[] = { wxString m_EdgesDisplayOptionStrings[] = {
_("&Filaire"), _("&Filaire"),
@ -157,7 +148,8 @@ void KiDisplayOptionsFrame::CreateControls()
_("&Sketch") _("&Sketch")
}; };
m_EdgesDisplayOption = new wxRadioBox( itemDialog1, EDGE_SELECT, _("Edges:"), wxDefaultPosition, wxDefaultSize, 3, m_EdgesDisplayOptionStrings, 1, wxRA_SPECIFY_COLS ); m_EdgesDisplayOption = new wxRadioBox( itemDialog1, EDGE_SELECT, _("Edges:"), wxDefaultPosition, wxDefaultSize, 3, m_EdgesDisplayOptionStrings, 1, wxRA_SPECIFY_COLS );
itemFlexGridSizer3->Add(m_EdgesDisplayOption, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5); // itemBoxSizer3->Add(m_EdgesDisplayOption, 0, wxGROW|wxALL, 5);
itemBoxSizer3->Add(m_EdgesDisplayOption, 0, wxALIGN_LEFT|wxALL, 5);
wxString m_TextDisplayOptionStrings[] = { wxString m_TextDisplayOptionStrings[] = {
_("&Filaire"), _("&Filaire"),
@ -165,13 +157,54 @@ void KiDisplayOptionsFrame::CreateControls()
_("&Sketch") _("&Sketch")
}; };
m_TextDisplayOption = new wxRadioBox( itemDialog1, TEXT_SELECT, _("Texts:"), wxDefaultPosition, wxDefaultSize, 3, m_TextDisplayOptionStrings, 1, wxRA_SPECIFY_COLS ); m_TextDisplayOption = new wxRadioBox( itemDialog1, TEXT_SELECT, _("Texts:"), wxDefaultPosition, wxDefaultSize, 3, m_TextDisplayOptionStrings, 1, wxRA_SPECIFY_COLS );
itemFlexGridSizer3->Add(m_TextDisplayOption, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5); // itemBoxSizer3->Add(m_TextDisplayOption, 0, wxGROW|wxALL, 5);
itemBoxSizer3->Add(m_TextDisplayOption, 0, wxALIGN_LEFT|wxALL, 5);
wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
// itemBoxSizer3->Add(itemBoxSizer5, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5);
itemBoxSizer3->Add(itemBoxSizer5, 0, wxGROW|wxALL, 0);
// Provide a spacer to improve appearance of dialog box
itemBoxSizer5->AddSpacer(5);
m_IsShowPadNum = new wxCheckBox( itemDialog1, PADNUM_OPT, _("Pad &Num"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
m_IsShowPadNum->SetValue(false);
// itemBoxSizer5->Add(m_IsShowPadNum, 0, wxGROW|wxALL, 5);
itemBoxSizer5->Add(m_IsShowPadNum, 0, wxALIGN_TOP|wxALL, 5);
m_IsShowPadFill = new wxCheckBox( itemDialog1, PADFILL_OPT, _("&Pad Fill"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
m_IsShowPadFill->SetValue(false);
// itemBoxSizer5->Add(m_IsShowPadFill, 0, wxGROW|wxALL, 5);
itemBoxSizer5->Add(m_IsShowPadFill, 0, wxALIGN_TOP|wxALL, 5);
// Provide a stretch spacer to improve appearance of dialog box
itemBoxSizer5->AddStretchSpacer();
wxButton* itemButton6 = new wxButton( itemDialog1, ID_SAVE_CONFIG, _("Save Cfg..."), wxDefaultPosition, wxDefaultSize, 0 );
// itemBoxSizer5->Add(itemButton6, 0, wxGROW|wxALL, 5);
itemBoxSizer5->Add(itemButton6, 0, wxALIGN_BOTTOM|wxALL, 5);
// itemBoxSizer4->AddStretchSpacer();
wxButton* itemButton7 = new wxButton( itemDialog1, wxID_OK, _("OK"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton7->SetForegroundColour(*wxRED);
// itemBoxSizer4->Add(itemButton7, 0, wxGROW|wxALL, 5);
itemBoxSizer4->Add(itemButton7, 0, wxALIGN_RIGHT|wxALL, 5);
wxButton* itemButton8 = new wxButton( itemDialog1, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton8->SetForegroundColour(*wxBLUE);
// itemBoxSizer4->Add(itemButton8, 0, wxGROW|wxALL, 5);
itemBoxSizer4->Add(itemButton8, 0, wxALIGN_RIGHT|wxALL, 5);
wxButton* itemButton9 = new wxButton( itemDialog1, wxID_APPLY, _("Apply"), wxDefaultPosition, wxDefaultSize, 0 );
// itemBoxSizer4->Add(itemButton9, 0, wxGROW|wxALL, 5);
itemBoxSizer4->Add(itemButton9, 0, wxALIGN_RIGHT|wxALL, 5);
// Set validators // Set validators
m_IsShowPadNum->SetValidator( wxGenericValidator(& DisplayOpt.DisplayPadNum) );
m_IsShowPadFill->SetValidator( wxGenericValidator(& DisplayOpt.DisplayPadFill) );
m_EdgesDisplayOption->SetValidator( wxGenericValidator(& DisplayOpt.DisplayModEdge) ); m_EdgesDisplayOption->SetValidator( wxGenericValidator(& DisplayOpt.DisplayModEdge) );
m_TextDisplayOption->SetValidator( wxGenericValidator(& DisplayOpt.DisplayModText) ); m_TextDisplayOption->SetValidator( wxGenericValidator(& DisplayOpt.DisplayModText) );
m_IsShowPadNum->SetValidator( wxGenericValidator(& DisplayOpt.DisplayPadNum) );
m_IsShowPadFill->SetValidator( wxGenericValidator(& DisplayOpt.DisplayPadFill) );
////@end KiDisplayOptionsFrame content construction ////@end KiDisplayOptionsFrame content construction
} }
@ -210,37 +243,28 @@ wxIcon KiDisplayOptionsFrame::GetIconResource( const wxString& name )
////@end KiDisplayOptionsFrame icon retrieval ////@end KiDisplayOptionsFrame icon retrieval
} }
/*! /*!
* wxEVT_COMMAND_CHECKBOX_CLICKED event handler for PADFILL_OPT * Update settings related to edges, text strings, and pads
*/ */
void KiDisplayOptionsFrame::OnPadfillOptClick( wxCommandEvent& event ) void KiDisplayOptionsFrame::UpdateObjectSettings()
{
DisplayOpt.DisplayPadFill = m_Parent->m_DisplayPadFill =
m_IsShowPadFill->GetValue();
m_Parent->ReDrawPanel();
}
/*!
* wxEVT_COMMAND_CHECKBOX_CLICKED event handler for PADNUM_OPT
*/
void KiDisplayOptionsFrame::OnPadnumOptClick( wxCommandEvent& event )
{
DisplayOpt.DisplayPadNum = m_Parent->m_DisplayPadNum = m_IsShowPadNum->GetValue();
m_Parent->ReDrawPanel();
}
/*!
* wxEVT_COMMAND_RADIOBOX_SELECTED event handler for EDGE_SELECT
*/
void KiDisplayOptionsFrame::OnEdgeSelectSelected( wxCommandEvent& event )
{ {
// Update settings
////@begin KiDisplayOptionsFrame update settings
DisplayOpt.DisplayModEdge = m_Parent->m_DisplayModEdge = DisplayOpt.DisplayModEdge = m_Parent->m_DisplayModEdge =
m_EdgesDisplayOption->GetSelection(); m_EdgesDisplayOption->GetSelection();
DisplayOpt.DisplayModText = m_Parent->m_DisplayModText =
m_TextDisplayOption->GetSelection();
DisplayOpt.DisplayPadNum = m_Parent->m_DisplayPadNum =
m_IsShowPadNum->GetValue();
DisplayOpt.DisplayPadFill = m_Parent->m_DisplayPadFill =
m_IsShowPadFill->GetValue();
m_Parent->ReDrawPanel(); m_Parent->ReDrawPanel();
////@end KiDisplayOptionsFrame update settings
} }
/*! /*!
@ -253,14 +277,31 @@ void KiDisplayOptionsFrame::OnSaveConfigClick( wxCommandEvent& event )
} }
/*! /*!
* wxEVT_COMMAND_RADIOBOX_SELECTED event handler for TEXT_SELECT * wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK
*/ */
void KiDisplayOptionsFrame::OnTextSelectSelected( wxCommandEvent& event ) void KiDisplayOptionsFrame::OnOkClick( wxCommandEvent& event )
{ {
DisplayOpt.DisplayModText = m_Parent->m_DisplayModText = UpdateObjectSettings();
m_TextDisplayOption->GetSelection(); EndModal( 1 );
m_Parent->ReDrawPanel(); }
/*!
* wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL
*/
void KiDisplayOptionsFrame::OnCancelClick( wxCommandEvent& event )
{
EndModal( -1 );
}
/*!
* wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_APPLY
*/
void KiDisplayOptionsFrame::OnApplyClick( wxCommandEvent& event )
{
UpdateObjectSettings();
} }

View File

@ -81,20 +81,17 @@ public:
////@begin KiDisplayOptionsFrame event handler declarations ////@begin KiDisplayOptionsFrame event handler declarations
/// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for PADNUM_OPT
void OnPadnumOptClick( wxCommandEvent& event );
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_SAVE_CONFIG /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_SAVE_CONFIG
void OnSaveConfigClick( wxCommandEvent& event ); void OnSaveConfigClick( wxCommandEvent& event );
/// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for PADFILL_OPT /// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK
void OnPadfillOptClick( wxCommandEvent& event ); void OnOkClick( wxCommandEvent& event );
/// wxEVT_COMMAND_RADIOBOX_SELECTED event handler for EDGE_SELECT /// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL
void OnEdgeSelectSelected( wxCommandEvent& event ); void OnCancelClick( wxCommandEvent& event );
/// wxEVT_COMMAND_RADIOBOX_SELECTED event handler for TEXT_SELECT /// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_APPLY
void OnTextSelectSelected( wxCommandEvent& event ); void OnApplyClick( wxCommandEvent& event );
////@end KiDisplayOptionsFrame event handler declarations ////@end KiDisplayOptionsFrame event handler declarations
@ -105,16 +102,19 @@ public:
/// Retrieves icon resources /// Retrieves icon resources
wxIcon GetIconResource( const wxString& name ); wxIcon GetIconResource( const wxString& name );
/// Updates settings related to edges, text strings, and pads
void UpdateObjectSettings();
////@end KiDisplayOptionsFrame member function declarations ////@end KiDisplayOptionsFrame member function declarations
/// Should we show tooltips? /// Should we show tooltips?
static bool ShowToolTips(); static bool ShowToolTips();
////@begin KiDisplayOptionsFrame member variables ////@begin KiDisplayOptionsFrame member variables
wxCheckBox* m_IsShowPadNum;
wxCheckBox* m_IsShowPadFill;
wxRadioBox* m_EdgesDisplayOption; wxRadioBox* m_EdgesDisplayOption;
wxRadioBox* m_TextDisplayOption; wxRadioBox* m_TextDisplayOption;
wxCheckBox* m_IsShowPadNum;
wxCheckBox* m_IsShowPadFill;
////@end KiDisplayOptionsFrame member variables ////@end KiDisplayOptionsFrame member variables
WinEDA_BasePcbFrame * m_Parent; WinEDA_BasePcbFrame * m_Parent;

View File

@ -194,7 +194,7 @@ WinEDA_ComponentPropertiesFrame::WinEDA_ComponentPropertiesFrame(
pos.x += MButton->GetDefaultSize().x + 10; pos.x += MButton->GetDefaultSize().x + 10;
wxButton* Button = new wxButton( this, ID_ACCEPT_CMP_PROPERTIES, wxButton* Button = new wxButton( this, ID_ACCEPT_CMP_PROPERTIES,
_( "Ok" ), pos ); _( "OK" ), pos );
Button->SetForegroundColour( *wxBLUE ); Button->SetForegroundColour( *wxBLUE );
c = new wxLayoutConstraints; c = new wxLayoutConstraints;
c->left.SameAs( MButton, wxRight, 20 ); c->left.SameAs( MButton, wxRight, 20 );

View File

@ -232,7 +232,7 @@ WinEDA_PartPropertiesFrame::WinEDA_PartPropertiesFrame( WinEDA_LibeditFrame* par
pos.x += Button->GetDefaultSize().x + 70; pos.x += Button->GetDefaultSize().x + 70;
Button = new wxButton( this, ID_ACCEPT_PART_PROPERTIES, Button = new wxButton( this, ID_ACCEPT_PART_PROPERTIES,
_( "Ok" ), pos ); _( "OK" ), pos );
Button->SetForegroundColour( *wxRED ); Button->SetForegroundColour( *wxRED );
c = new wxLayoutConstraints; c = new wxLayoutConstraints;

View File

@ -30,11 +30,6 @@ static wxString shape_list[NBSHAPES] =
wxT( "Input" ), wxT( "Output" ), wxT( "Bidi" ), wxT( "TriState" ), wxT( "Passive" ) wxT( "Input" ), wxT( "Output" ), wxT( "Bidi" ), wxT( "TriState" ), wxT( "Passive" )
}; };
enum id_Textdit {
ID_ACCEPT_PINSHEET_PROPERTIES = 1970,
ID_CANCEL_PINSHEET_PROPERTIES
};
/*****************************************************/ /*****************************************************/
class WinEDA_PinSheetPropertiesFrame : public wxDialog class WinEDA_PinSheetPropertiesFrame : public wxDialog
@ -57,16 +52,15 @@ public:
~WinEDA_PinSheetPropertiesFrame() { }; ~WinEDA_PinSheetPropertiesFrame() { };
private: private:
void PinSheetPropertiesAccept( wxCommandEvent& event ); void OnOkClick( wxCommandEvent& event );
void OnQuit( wxCommandEvent& event ); void OnCancelClick( wxCommandEvent& event );
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
}; };
BEGIN_EVENT_TABLE( WinEDA_PinSheetPropertiesFrame, wxDialog ) BEGIN_EVENT_TABLE( WinEDA_PinSheetPropertiesFrame, wxDialog )
EVT_BUTTON( ID_ACCEPT_PINSHEET_PROPERTIES, EVT_BUTTON( wxID_OK, WinEDA_PinSheetPropertiesFrame::OnOkClick )
WinEDA_PinSheetPropertiesFrame::PinSheetPropertiesAccept ) EVT_BUTTON( wxID_CANCEL, WinEDA_PinSheetPropertiesFrame::OnCancelClick )
EVT_BUTTON( ID_CANCEL_PINSHEET_PROPERTIES, WinEDA_PinSheetPropertiesFrame::OnQuit )
END_EVENT_TABLE() END_EVENT_TABLE()
@ -96,13 +90,11 @@ WinEDA_PinSheetPropertiesFrame::WinEDA_PinSheetPropertiesFrame(
m_CurrentPinSheet = curr_pinsheet; m_CurrentPinSheet = curr_pinsheet;
/* Creation des boutons de commande */ /* Creation des boutons de commande */
Button = new wxButton( this, ID_ACCEPT_PINSHEET_PROPERTIES, Button = new wxButton( this, wxID_OK, _( "OK" ) );
_( "Ok" ) );
Button->SetForegroundColour( *wxRED ); Button->SetForegroundColour( *wxRED );
RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 ); RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 );
Button = new wxButton( this, ID_CANCEL_PINSHEET_PROPERTIES, Button = new wxButton( this, wxID_CANCEL, _( "Cancel" ) );
_( "Cancel" ) );
Button->SetForegroundColour( *wxBLUE ); Button->SetForegroundColour( *wxBLUE );
RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 ); RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 );
@ -123,23 +115,22 @@ WinEDA_PinSheetPropertiesFrame::WinEDA_PinSheetPropertiesFrame(
/************************************************************************/ /************************************************************************/
void WinEDA_PinSheetPropertiesFrame::OnQuit( wxCommandEvent& WXUNUSED (event) ) void WinEDA_PinSheetPropertiesFrame::OnCancelClick( wxCommandEvent& WXUNUSED (event) )
/************************************************************************/ /************************************************************************/
{ {
// true is to force the frame to close EndModal( -1 );
Close( true );
} }
/***********************************************************************************/ /***********************************************************************************/
void WinEDA_PinSheetPropertiesFrame::PinSheetPropertiesAccept( wxCommandEvent& event ) void WinEDA_PinSheetPropertiesFrame::OnOkClick( wxCommandEvent& event )
/***********************************************************************************/ /***********************************************************************************/
{ {
m_CurrentPinSheet->m_Text = m_TextWin->GetText(); m_CurrentPinSheet->m_Text = m_TextWin->GetText();
m_CurrentPinSheet->m_Size.x = m_CurrentPinSheet->m_Size.y = m_TextWin->GetTextSize(); m_CurrentPinSheet->m_Size.x = m_CurrentPinSheet->m_Size.y = m_TextWin->GetTextSize();
m_CurrentPinSheet->m_Shape = m_PinSheetShape->GetSelection(); m_CurrentPinSheet->m_Shape = m_PinSheetShape->GetSelection();
Close( TRUE ); EndModal( 0 );
} }

View File

@ -25,6 +25,23 @@ void WinEDA_GerberFrame::ExportDataInPcbnewFormat( wxCommandEvent& event )
/* Export data in pcbnew format /* Export data in pcbnew format
*/ */
{ {
int ii = 0;
bool no_used_layers = true; // Changed to false if any used layer found
// Check whether any of the Gerber layers are actually currently used
while( no_used_layers && ii < 32 )
{
if( g_GERBER_Descr_List[ii] != NULL )
no_used_layers = false;
ii++;
}
if( no_used_layers )
{
DisplayInfo( this, _( "None of the Gerber layers contain any data" ) );
return;
}
wxString FullFileName, msg; wxString FullFileName, msg;
wxString PcbExt( wxT( ".brd" ) ); wxString PcbExt( wxT( ".brd" ) );

View File

@ -211,7 +211,7 @@ wxString list_scales[2] = { _("format: 2.3"), _("format 3.4") };
void WinEDA_GerberGeneralOptionsFrame::OnCancelClick(wxCommandEvent& WXUNUSED(event)) void WinEDA_GerberGeneralOptionsFrame::OnCancelClick(wxCommandEvent& WXUNUSED(event))
/************************************************************************/ /************************************************************************/
{ {
EndModal(0); EndModal( -1 );
} }
@ -334,7 +334,7 @@ wxString list_opt3[3] = { _("Sketch"), _("Filled"), _("Line") };
void WinEDA_LookFrame::OnCancelClick(wxCommandEvent& WXUNUSED(event)) void WinEDA_LookFrame::OnCancelClick(wxCommandEvent& WXUNUSED(event))
/**************************************************************/ /**************************************************************/
{ {
EndModal(0); EndModal( -1 );
} }
@ -395,4 +395,3 @@ void WinEDA_GerberFrame::InstallPcbOptionsFrame(const wxPoint & pos, int id)
break; break;
} }
} }

View File

@ -162,7 +162,7 @@ void WinEDA_ConfigFrame::OnOkClick(wxCommandEvent& WXUNUSED(event))
void WinEDA_ConfigFrame::OnCancelClick(wxCommandEvent& WXUNUSED(event)) void WinEDA_ConfigFrame::OnCancelClick(wxCommandEvent& WXUNUSED(event))
/******************************************************************/ /******************************************************************/
{ {
EndModal(0); EndModal( -1 );
} }
@ -172,4 +172,3 @@ void WinEDA_ConfigFrame::SaveCfg(wxCommandEvent& event)
{ {
m_Parent->Update_config(); m_Parent->Update_config();
} }

View File

@ -12,12 +12,11 @@
/* Variables locales */ /* Variables locales */
static int LayerLookUpTable[32]; static int RadioButtonTable[32]; // Indexes radiobuttons to Gerber layers
static int LayerLookUpTable[32]; // Indexes Gerber layers to PCB file layers
enum swap_layer_id { enum swap_layer_id {
ID_SWAP_LAYER_EXECUTE = 1800, ID_SWAP_LAYER_BUTTON_SELECT = 1800,
ID_SWAP_LAYER_CANCEL,
ID_SWAP_LAYER_BUTTON_SELECT,
ID_SWAP_LAYER_DESELECT, ID_SWAP_LAYER_DESELECT,
ID_SWAP_LAYER_SELECT ID_SWAP_LAYER_SELECT
}; };
@ -41,15 +40,17 @@ public:
private: private:
void Sel_Layer(wxCommandEvent& event); void Sel_Layer(wxCommandEvent& event);
void Cancel(wxCommandEvent& event); void OnOkClick(wxCommandEvent& event);
void Execute(wxCommandEvent& event); void OnCancelClick(wxCommandEvent& event);
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
}; };
/* Table des evenements pour WinEDA_SwapLayerFrame */ /* Table des evenements pour WinEDA_SwapLayerFrame */
BEGIN_EVENT_TABLE(WinEDA_SwapLayerFrame, wxDialog) BEGIN_EVENT_TABLE(WinEDA_SwapLayerFrame, wxDialog)
EVT_BUTTON(ID_SWAP_LAYER_EXECUTE, WinEDA_SwapLayerFrame::Execute) EVT_BUTTON(wxID_OK, WinEDA_SwapLayerFrame::OnOkClick)
EVT_BUTTON(ID_SWAP_LAYER_CANCEL, WinEDA_SwapLayerFrame::Cancel) EVT_BUTTON(wxID_CANCEL, WinEDA_SwapLayerFrame::OnCancelClick)
EVT_BUTTON(ID_SWAP_LAYER_DESELECT, WinEDA_SwapLayerFrame::Sel_Layer) EVT_BUTTON(ID_SWAP_LAYER_DESELECT, WinEDA_SwapLayerFrame::Sel_Layer)
EVT_BUTTON(ID_SWAP_LAYER_BUTTON_SELECT, WinEDA_SwapLayerFrame::Sel_Layer) EVT_BUTTON(ID_SWAP_LAYER_BUTTON_SELECT, WinEDA_SwapLayerFrame::Sel_Layer)
EVT_RADIOBOX(ID_SWAP_LAYER_SELECT, WinEDA_SwapLayerFrame::Sel_Layer) EVT_RADIOBOX(ID_SWAP_LAYER_SELECT, WinEDA_SwapLayerFrame::Sel_Layer)
@ -60,16 +61,20 @@ END_EVENT_TABLE()
int * InstallDialogLayerPairChoice(WinEDA_GerberFrame * parent) int * InstallDialogLayerPairChoice(WinEDA_GerberFrame * parent)
/*************************************************************/ /*************************************************************/
/* Install a dialog frame to choose the equivalence /* Install a dialog frame to choose the equivalence
between gerber layers and pcbnew layers * between gerber layers and pcbnew layers
return the "lookup table" if ok, or NULL * return the "lookup table" if ok, or NULL
*/ */
{ {
WinEDA_SwapLayerFrame * frame = new WinEDA_SwapLayerFrame(parent); WinEDA_SwapLayerFrame * frame = new WinEDA_SwapLayerFrame(parent);
int ii = frame->ShowModal(); frame->Destroy(); int ii = frame->ShowModal();
if ( ii >= 0 ) return LayerLookUpTable; frame->Destroy();
else return NULL; if( ii >= 0 )
return LayerLookUpTable;
else
return NULL;
} }
/*************************************************************************/ /*************************************************************************/
WinEDA_SwapLayerFrame::WinEDA_SwapLayerFrame(WinEDA_GerberFrame *parent): WinEDA_SwapLayerFrame::WinEDA_SwapLayerFrame(WinEDA_GerberFrame *parent):
wxDialog( parent, -1, _("Layer selection:"), wxPoint(-1, -1), wxDialog( parent, -1, _("Layer selection:"), wxPoint(-1, -1),
@ -83,67 +88,106 @@ wxString g_Layer_Name_Pair[32];
m_Parent = parent; m_Parent = parent;
SetFont(*g_DialogFont); SetFont(*g_DialogFont);
/* Compute a resonnable number of copper layers */ // Compute a reasonable number of copper layers
g_DesignSettings.m_CopperLayerCount = 0; g_DesignSettings.m_CopperLayerCount = 0;
for ( ii = 0; ii < NB_LAYERS; ii++ ) for( ii = 0; ii < 32; ii++ )
{ {
if( g_GERBER_Descr_List[ii] != NULL ) if( g_GERBER_Descr_List[ii] != NULL )
g_DesignSettings.m_CopperLayerCount++; g_DesignSettings.m_CopperLayerCount++;
// Specify the default value for each member of these arrays.
RadioButtonTable[ii] = -1;
LayerLookUpTable[ii] = NB_LAYERS; // Value associated with deselected Gerber layer
} }
int pcb_layer_number = 0; int pcb_layer_number = 0;
for ( nb_items = 0, ii = 0; ii < NB_LAYERS; ii++ ) for( nb_items = 0, ii = 0; ii < 32; ii++ )
{ {
if( g_GERBER_Descr_List[ii] == NULL ) if( g_GERBER_Descr_List[ii] == NULL )
{
LayerLookUpTable[ii] = -1;
continue; continue;
}
if( (pcb_layer_number == g_DesignSettings.m_CopperLayerCount - 1) if( (pcb_layer_number == g_DesignSettings.m_CopperLayerCount - 1)
&& (g_DesignSettings.m_CopperLayerCount > 1) ) && (g_DesignSettings.m_CopperLayerCount > 1) )
pcb_layer_number = CMP_N; pcb_layer_number = CMP_N;
RadioButtonTable[nb_items] = ii;
LayerLookUpTable[ii] = pcb_layer_number; LayerLookUpTable[ii] = pcb_layer_number;
g_Layer_Name_Pair[ii] = _("Gerber layer ");
g_Layer_Name_Pair[ii] << ii+1 // Specify initial (temporary) caption for associated radiobutton,
<< wxT(" -> ") << ReturnPcbLayerName(pcb_layer_number); // which will be appropriately updated after dialog box has been sized.
// (If the radiobuttons' captions are not changed in this way, some of
// each radiobutton's caption could be truncated if the associated
// (Gerber) layer is ever subsequently deselected by the user.)
g_Layer_Name_Pair[nb_items] = _("Gerber layer ");
g_Layer_Name_Pair[nb_items] << ii + 1 << wxT(" -> ") << _("Do not export");
nb_items++; nb_items++;
pcb_layer_number++; pcb_layer_number++;
} }
wxBoxSizer* FrameBoxSizer = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer* FrameBoxSizer = new wxBoxSizer(wxVERTICAL);
SetSizer(FrameBoxSizer); SetSizer(FrameBoxSizer);
wxBoxSizer* LeftBoxSizer = new wxBoxSizer(wxVERTICAL);
FrameBoxSizer->Add(LeftBoxSizer, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); wxBoxSizer* MainBoxSizer = new wxBoxSizer(wxHORIZONTAL);
wxBoxSizer* RightBoxSizer = new wxBoxSizer(wxVERTICAL); FrameBoxSizer->Add(MainBoxSizer, 0, wxGROW|wxALIGN_LEFT|wxALL, 5);
FrameBoxSizer->Add(RightBoxSizer, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
m_LayerList = new wxRadioBox(this, ID_SWAP_LAYER_SELECT, _("Layers"), m_LayerList = new wxRadioBox(this, ID_SWAP_LAYER_SELECT, _("Layers"),
wxDefaultPosition, wxDefaultSize, wxDefaultPosition, wxDefaultSize,
nb_items, g_Layer_Name_Pair, nb_items, g_Layer_Name_Pair,
nb_items < 16 ? nb_items : 16, nb_items < 16 ? nb_items : 16,
wxRA_SPECIFY_ROWS); wxRA_SPECIFY_ROWS);
LeftBoxSizer->Add(m_LayerList, 0, wxGROW|wxALL, 5);
Button = new wxButton(this,ID_SWAP_LAYER_CANCEL, _("Cancel")); // Specify a minimum size for this radiobox (with the objective
Button->SetForegroundColour(*wxRED); // of attempting to prevent any radiobutton's caption from being
RightBoxSizer->Add(Button, 0, wxGROW|wxALL, 5); // truncated if any of the layers are subsequently deselected)
m_LayerList->SetMinSize( m_LayerList->GetSize() );
Button = new wxButton(this,ID_SWAP_LAYER_EXECUTE, _("OK")); MainBoxSizer->Add(m_LayerList, 0, wxALIGN_TOP|wxALL, 5);
Button->SetForegroundColour(*wxBLUE);
wxBoxSizer* RightBoxSizer = new wxBoxSizer(wxVERTICAL);
MainBoxSizer->Add(RightBoxSizer, 0, wxALIGN_TOP|wxALL, 0);
RightBoxSizer->AddSpacer(10);
Button = new wxButton(this, ID_SWAP_LAYER_BUTTON_SELECT, _("Select..."));
Button->SetForegroundColour(wxColour(0,100,100));
RightBoxSizer->Add(Button, 0, wxGROW|wxALL, 5); RightBoxSizer->Add(Button, 0, wxGROW|wxALL, 5);
Button = new wxButton(this, ID_SWAP_LAYER_DESELECT, _("Deselect")); Button = new wxButton(this, ID_SWAP_LAYER_DESELECT, _("Deselect"));
Button->SetForegroundColour(wxColour(0,100,0)); Button->SetForegroundColour(wxColour(0,100,0));
RightBoxSizer->Add(Button, 0, wxGROW|wxALL, 5); RightBoxSizer->Add(Button, 0, wxGROW|wxALL, 5);
Button = new wxButton(this,ID_SWAP_LAYER_BUTTON_SELECT, _("Select")); wxBoxSizer* BottomBoxSizer = new wxBoxSizer(wxHORIZONTAL);
Button->SetForegroundColour(wxColour(0,100,100)); FrameBoxSizer->Add(BottomBoxSizer, 0, wxGROW|wxALIGN_RIGHT|wxALL, 5);
RightBoxSizer->Add(Button, 0, wxGROW|wxALL, 5);
// The following stretch spacer ensures that the "OK" and "Cancel" buttons
// will be positioned at the lower right corner of the dialog box.
BottomBoxSizer->AddStretchSpacer();
Button = new wxButton(this, wxID_OK, _("OK"));
Button->SetForegroundColour(*wxRED);
BottomBoxSizer->Add(Button, 0, wxGROW|wxALL, 5);
Button = new wxButton(this, wxID_CANCEL, _("Cancel"));
Button->SetForegroundColour(*wxBLUE);
BottomBoxSizer->Add(Button, 0, wxGROW|wxALL, 5);
if( GetSizer() ) if( GetSizer() )
{ {
GetSizer()->SetSizeHints(this); GetSizer()->SetSizeHints(this);
} }
// Now specify the correct caption for each radiobutton.
// (Regrettably though there are still problems with the Windows
// version; captions for each radiobutton can still be truncated.) :-(
for( ii = 0; ii < nb_items; ii++ )
{
g_Layer_Name_Pair[ii] = _("Gerber layer ");
g_Layer_Name_Pair[ii] << RadioButtonTable[ii] + 1 << wxT(" -> ")
<< ReturnPcbLayerName(LayerLookUpTable[RadioButtonTable[ii]]);
m_LayerList->SetString( ii, g_Layer_Name_Pair[ii] );
}
} }
@ -152,82 +196,87 @@ void WinEDA_SwapLayerFrame::Sel_Layer(wxCommandEvent& event)
/***************************************************************/ /***************************************************************/
{ {
int ii, jj; int ii, jj;
int gerber_layer_number; // int gerber_layer_number;
wxString msg; wxString msg;
ii = m_LayerList->GetSelection(); ii = m_LayerList->GetSelection();
if ( ii < 0 ) return; if( ii < 0 )
/* Search the gerber layer number correspondint to the selection */ return;
for ( jj = 0, gerber_layer_number = 0; gerber_layer_number < 32; gerber_layer_number++ )
{
if ( g_GERBER_Descr_List[gerber_layer_number] == NULL) continue;
if (jj == ii ) break;
jj++;
}
switch ( event.GetId() ) switch ( event.GetId() )
{ {
case ID_SWAP_LAYER_DESELECT: case ID_SWAP_LAYER_DESELECT:
if ( LayerLookUpTable[gerber_layer_number] != -1 ) if( LayerLookUpTable[RadioButtonTable[ii]] != NB_LAYERS )
{ {
LayerLookUpTable[gerber_layer_number] = -1; LayerLookUpTable[RadioButtonTable[ii]] = NB_LAYERS;
msg = _("Gerber layer "); msg = _("Gerber layer ");
msg << gerber_layer_number+1 << wxT(" -> ") << _("Do not export"); msg << RadioButtonTable[ii] + 1
<< wxT(" -> ") << _("Do not export");
m_LayerList->SetString( ii, msg ); m_LayerList->SetString( ii, msg );
} }
break; break;
case ID_SWAP_LAYER_BUTTON_SELECT: case ID_SWAP_LAYER_BUTTON_SELECT:
case ID_SWAP_LAYER_SELECT: case ID_SWAP_LAYER_SELECT:
jj = m_Parent->SelectLayer(ii, -1, -1); jj = LayerLookUpTable[RadioButtonTable[ii]];
if ( (jj < 0) || (jj >= 29) ) return; if( (jj < 0) || (jj > NB_LAYERS) )
jj = 0; // (Defaults to "Copper" layer.)
jj = m_Parent->SelectLayer(jj, -1, -1, true);
if( (jj < 0) || (jj > NB_LAYERS) )
return;
if ( ii != jj ) if( jj != LayerLookUpTable[RadioButtonTable[ii]] )
{ {
LayerLookUpTable[gerber_layer_number] = jj; LayerLookUpTable[RadioButtonTable[ii]] = jj;
msg = _("Gerber layer "); msg = _("Gerber layer ");
msg << gerber_layer_number+1 << wxT(" -> ") << ReturnPcbLayerName(jj); msg << RadioButtonTable[ii] + 1 << wxT(" -> ");
if( jj == NB_LAYERS )
msg << _("Do not export");
else
msg << ReturnPcbLayerName(jj);
m_LayerList->SetString( ii, msg ); m_LayerList->SetString( ii, msg );
} }
break; break;
} }
} }
/*********************************************************/ /*********************************************************/
void WinEDA_SwapLayerFrame::Cancel(wxCommandEvent& event) void WinEDA_SwapLayerFrame::OnCancelClick(wxCommandEvent& event)
/*********************************************************/ /*********************************************************/
{ {
EndModal( -1 ); EndModal( -1 );
} }
/*********************************************************/ /*********************************************************/
void WinEDA_SwapLayerFrame::Execute(wxCommandEvent& event) void WinEDA_SwapLayerFrame::OnOkClick(wxCommandEvent& event)
/*********************************************************/ /*********************************************************/
{ {
int ii; int ii;
bool AsCmpLayer = false; bool AsCmpLayer = false;
/* Compute the number of copper layers /* Compute the number of copper layers
this is the max layer number + 1 (if some internal layers exists) * this is the max layer number + 1 (if some internal layers exist)
*/ */
g_DesignSettings.m_CopperLayerCount = 1; g_DesignSettings.m_CopperLayerCount = 1;
for( ii = 0; ii < 32; ii++ ) for( ii = 0; ii < 32; ii++ )
{ {
if ( LayerLookUpTable[ii] == CMP_N ) AsCmpLayer = true; if( LayerLookUpTable[ii] == CMP_N )
AsCmpLayer = true;
else else
{ {
if ( LayerLookUpTable[ii] >= CMP_N ) continue; // not a copper layer if( LayerLookUpTable[ii] >= CMP_N )
continue; // not a copper layer
if( LayerLookUpTable[ii] >= g_DesignSettings.m_CopperLayerCount ) if( LayerLookUpTable[ii] >= g_DesignSettings.m_CopperLayerCount )
g_DesignSettings.m_CopperLayerCount++; g_DesignSettings.m_CopperLayerCount++;
} }
} }
if ( AsCmpLayer ) g_DesignSettings.m_CopperLayerCount++; if( AsCmpLayer )
g_DesignSettings.m_CopperLayerCount++;
if( g_DesignSettings.m_CopperLayerCount > CMP_N + 1 ) // should not occur. if( g_DesignSettings.m_CopperLayerCount > CMP_N + 1 ) // should not occur.
g_DesignSettings.m_CopperLayerCount = CMP_N + 1; g_DesignSettings.m_CopperLayerCount = CMP_N + 1;
EndModal( 1 ); EndModal( 1 );
} }

View File

@ -9,11 +9,13 @@
#include "protos.h" #include "protos.h"
#define BUTT_SIZE_X 20
#define BUTT_SIZE_Y 16
/* Variables locales */ /* Variables locales */
int CurrentColor; const int BUTT_SIZE_X = 20;
const int BUTT_SIZE_Y = 16;
const int COLOR_COUNT = 37; // 37 = 32 (layers) + 2 (others) + 3 (headings)
// Is there a better way to determine how many elements CurrentColor requires?
int CurrentColor[COLOR_COUNT]; // Holds color for each layer while dialog box open
/* Fonctions locales: */ /* Fonctions locales: */
@ -23,7 +25,6 @@ int CurrentColor;
enum col_sel_id { enum col_sel_id {
ID_COLOR_RESET_SHOW_LAYER_ON = 1800, ID_COLOR_RESET_SHOW_LAYER_ON = 1800,
ID_COLOR_RESET_SHOW_LAYER_OFF, ID_COLOR_RESET_SHOW_LAYER_OFF,
ID_COLOR_EXIT,
ID_COLOR_CHECKBOX_ONOFF, ID_COLOR_CHECKBOX_ONOFF,
ID_COLOR_SETUP ID_COLOR_SETUP
}; };
@ -37,10 +38,10 @@ struct ColorButton
wxString m_Name; wxString m_Name;
int * m_Color; // Pointeur sur la variable couleur int * m_Color; // Pointeur sur la variable couleur
bool m_NoDisplayIsColor; // TRUE si bit ITEM_NON_VISIBLE de la variable Color bool m_NoDisplayIsColor; // TRUE si bit ITEM_NON_VISIBLE de la variable Color
bool * m_NoDisplay; // Pointeur sur la variable Display on/off si ce n'est pas la var bool * m_NoDisplay; // Pointeur sur la variable Display on/off si ce
// Color // n'est pas la var Color
int m_Id; int m_Id;
wxBitmapButton * m_Button; wxBitmapButton * m_Button; // Button to display/change color assigned to this layer
int m_State; int m_State;
wxCheckBox * m_CheckBox; // Option Display ON/OFF wxCheckBox * m_CheckBox; // Option Display ON/OFF
}; };
@ -65,8 +66,10 @@ public:
private: private:
void SetColor(wxCommandEvent& event); void SetColor(wxCommandEvent& event);
void OnQuit(wxCommandEvent& event); void OnOkClick(wxCommandEvent& event);
void SetDisplayOnOff(wxCommandEvent& event); void OnCancelClick(wxCommandEvent& event);
void OnApplyClick(wxCommandEvent& event);
void UpdateLayerSettings();
void ResetDisplayLayersCu(wxCommandEvent& event); void ResetDisplayLayersCu(wxCommandEvent& event);
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
@ -75,8 +78,9 @@ private:
BEGIN_EVENT_TABLE(WinEDA_SetColorsFrame, wxDialog) BEGIN_EVENT_TABLE(WinEDA_SetColorsFrame, wxDialog)
EVT_BUTTON(ID_COLOR_RESET_SHOW_LAYER_OFF, WinEDA_SetColorsFrame::ResetDisplayLayersCu) EVT_BUTTON(ID_COLOR_RESET_SHOW_LAYER_OFF, WinEDA_SetColorsFrame::ResetDisplayLayersCu)
EVT_BUTTON(ID_COLOR_RESET_SHOW_LAYER_ON, WinEDA_SetColorsFrame::ResetDisplayLayersCu) EVT_BUTTON(ID_COLOR_RESET_SHOW_LAYER_ON, WinEDA_SetColorsFrame::ResetDisplayLayersCu)
EVT_BUTTON(ID_COLOR_EXIT, WinEDA_SetColorsFrame::OnQuit) EVT_BUTTON(wxID_OK, WinEDA_SetColorsFrame::OnOkClick)
EVT_CHECKBOX(ID_COLOR_CHECKBOX_ONOFF, WinEDA_SetColorsFrame::SetDisplayOnOff) EVT_BUTTON(wxID_CANCEL, WinEDA_SetColorsFrame::OnCancelClick)
EVT_BUTTON(wxID_APPLY, WinEDA_SetColorsFrame::OnApplyClick)
EVT_BUTTON(ID_COLOR_SETUP, WinEDA_SetColorsFrame::SetColor) EVT_BUTTON(ID_COLOR_SETUP, WinEDA_SetColorsFrame::SetColor)
EVT_BUTTON(ID_COLOR_SETUP+1, WinEDA_SetColorsFrame::SetColor) EVT_BUTTON(ID_COLOR_SETUP+1, WinEDA_SetColorsFrame::SetColor)
EVT_BUTTON(ID_COLOR_SETUP+2, WinEDA_SetColorsFrame::SetColor) EVT_BUTTON(ID_COLOR_SETUP+2, WinEDA_SetColorsFrame::SetColor)
@ -114,14 +118,14 @@ BEGIN_EVENT_TABLE(WinEDA_SetColorsFrame, wxDialog)
EVT_BUTTON(ID_COLOR_SETUP+34, WinEDA_SetColorsFrame::SetColor) EVT_BUTTON(ID_COLOR_SETUP+34, WinEDA_SetColorsFrame::SetColor)
EVT_BUTTON(ID_COLOR_SETUP+35, WinEDA_SetColorsFrame::SetColor) EVT_BUTTON(ID_COLOR_SETUP+35, WinEDA_SetColorsFrame::SetColor)
EVT_BUTTON(ID_COLOR_SETUP+36, WinEDA_SetColorsFrame::SetColor) EVT_BUTTON(ID_COLOR_SETUP+36, WinEDA_SetColorsFrame::SetColor)
EVT_BUTTON(ID_COLOR_SETUP+37, WinEDA_SetColorsFrame::SetColor) // EVT_BUTTON(ID_COLOR_SETUP+37, WinEDA_SetColorsFrame::SetColor)
EVT_BUTTON(ID_COLOR_SETUP+38, WinEDA_SetColorsFrame::SetColor) // EVT_BUTTON(ID_COLOR_SETUP+38, WinEDA_SetColorsFrame::SetColor)
EVT_BUTTON(ID_COLOR_SETUP+39, WinEDA_SetColorsFrame::SetColor) // EVT_BUTTON(ID_COLOR_SETUP+39, WinEDA_SetColorsFrame::SetColor)
EVT_BUTTON(ID_COLOR_SETUP+40, WinEDA_SetColorsFrame::SetColor) // EVT_BUTTON(ID_COLOR_SETUP+40, WinEDA_SetColorsFrame::SetColor)
EVT_BUTTON(ID_COLOR_SETUP+41, WinEDA_SetColorsFrame::SetColor) // EVT_BUTTON(ID_COLOR_SETUP+41, WinEDA_SetColorsFrame::SetColor)
EVT_BUTTON(ID_COLOR_SETUP+42, WinEDA_SetColorsFrame::SetColor) // EVT_BUTTON(ID_COLOR_SETUP+42, WinEDA_SetColorsFrame::SetColor)
EVT_BUTTON(ID_COLOR_SETUP+43, WinEDA_SetColorsFrame::SetColor) // EVT_BUTTON(ID_COLOR_SETUP+43, WinEDA_SetColorsFrame::SetColor)
EVT_BUTTON(ID_COLOR_SETUP+44, WinEDA_SetColorsFrame::SetColor) // EVT_BUTTON(ID_COLOR_SETUP+44, WinEDA_SetColorsFrame::SetColor)
END_EVENT_TABLE() END_EVENT_TABLE()
/**************************************************************/ /**************************************************************/
@ -142,9 +146,10 @@ void DisplayColorSetupFrame(WinEDA_DrawFrame * parent,
/**********************************************************************/ /**********************************************************************/
WinEDA_SetColorsFrame::WinEDA_SetColorsFrame(WinEDA_DrawFrame *parent, WinEDA_SetColorsFrame::WinEDA_SetColorsFrame(WinEDA_DrawFrame *parent,
const wxPoint& framepos): const wxPoint& framepos):
wxDialog(parent, -1, _("Gerbview Layer Colors:"), framepos, wxDialog(parent, -1, _("GerbView Layer Colors:"), framepos,
wxSize(390, 380), wxSize(390, 380),
wxDEFAULT_DIALOG_STYLE|wxFRAME_FLOAT_ON_PARENT ) wxDEFAULT_DIALOG_STYLE|wxFRAME_FLOAT_ON_PARENT|
MAYBE_RESIZE_BORDER )
/**********************************************************************/ /**********************************************************************/
{ {
wxBitmapButton * ButtonB; wxBitmapButton * ButtonB;
@ -189,16 +194,16 @@ wxBoxSizer * CurrBoxSizer = NULL;
else else
laytool_list[ii]->m_CheckBox->SetValue(TRUE); laytool_list[ii]->m_CheckBox->SetValue(TRUE);
} }
else if ( laytool_list[ii]->m_NoDisplay ) else if ( laytool_list[ii]->m_NoDisplay )
laytool_list[ii]->m_CheckBox->SetValue(*laytool_list[ii]->m_NoDisplay); laytool_list[ii]->m_CheckBox->SetValue(*laytool_list[ii]->m_NoDisplay);
if( laytool_list[ii]->m_Color ) if( laytool_list[ii]->m_Color )
{ {
wxMemoryDC iconDC; int w = BUTT_SIZE_X, h = BUTT_SIZE_Y; wxMemoryDC iconDC;
wxBitmap ButtBitmap(w,h); wxBitmap ButtBitmap( BUTT_SIZE_X, BUTT_SIZE_Y );
iconDC.SelectObject( ButtBitmap ); iconDC.SelectObject( ButtBitmap );
buttcolor = *laytool_list[ii]->m_Color & MASKCOLOR; buttcolor = *laytool_list[ii]->m_Color & MASKCOLOR;
CurrentColor[ii] = buttcolor;
wxBrush Brush; wxBrush Brush;
iconDC.SelectObject( ButtBitmap ); iconDC.SelectObject( ButtBitmap );
iconDC.SetPen(*wxBLACK_PEN); iconDC.SetPen(*wxBLACK_PEN);
@ -210,11 +215,11 @@ wxBoxSizer * CurrBoxSizer = NULL;
Brush.SetStyle(wxSOLID); Brush.SetStyle(wxSOLID);
iconDC.SetBrush(Brush); iconDC.SetBrush(Brush);
iconDC.DrawRectangle(0,0, w, h); iconDC.DrawRectangle(0, 0, BUTT_SIZE_X, BUTT_SIZE_Y);
ButtonB = new wxBitmapButton( this, butt_ID, ButtonB = new wxBitmapButton( this, butt_ID,
ButtBitmap, wxDefaultPosition, ButtBitmap, wxDefaultPosition,
wxSize(w,h) ); wxSize(BUTT_SIZE_X, BUTT_SIZE_Y) );
laytool_list[ii]->m_Button = ButtonB; laytool_list[ii]->m_Button = ButtonB;
LineBoxSizer->Add(ButtonB, 0, wxALIGN_CENTER_VERTICAL|wxALL, 1); LineBoxSizer->Add(ButtonB, 0, wxALIGN_CENTER_VERTICAL|wxALL, 1);
} }
@ -228,17 +233,27 @@ wxBoxSizer * CurrBoxSizer = NULL;
wxButton * Button = new wxButton( this, ID_COLOR_RESET_SHOW_LAYER_ON, wxButton * Button = new wxButton( this, ID_COLOR_RESET_SHOW_LAYER_ON,
_("Show All") ); _("Show All") );
Button->SetForegroundColour(*wxBLUE); Button->SetForegroundColour(*wxBLUE);
CurrBoxSizer->Add(Button, 0, wxGROW|wxALL, 5); CurrBoxSizer->Add(Button, 0, wxALIGN_TOP|wxGROW|wxALL, 5);
Button = new wxButton( this, ID_COLOR_RESET_SHOW_LAYER_OFF, Button = new wxButton( this, ID_COLOR_RESET_SHOW_LAYER_OFF,
_("Show None") ); _("Show None") );
Button->SetForegroundColour(*wxRED); Button->SetForegroundColour(*wxRED);
CurrBoxSizer->Add(Button, 0, wxGROW|wxALL, 5); CurrBoxSizer->Add(Button, 0, wxALIGN_TOP|wxGROW|wxALL, 5);
Button = new wxButton(this,ID_COLOR_EXIT, // Following stretch spacer ensures "OK", "Cancel", and "Apply"
_("Exit")); // buttons will be located at lower right corner of dialog box
Button->SetForegroundColour(*wxBLACK); CurrBoxSizer->AddStretchSpacer();
CurrBoxSizer->Add(Button, 0, wxGROW|wxALL, 5);
Button = new wxButton( this, wxID_OK, _("OK") );
Button->SetForegroundColour(*wxRED);
CurrBoxSizer->Add(Button, 0, wxALIGN_BOTTOM|wxALIGN_RIGHT|wxALL, 5);
Button = new wxButton( this, wxID_CANCEL, _("Cancel") );
Button->SetForegroundColour(*wxBLUE);
CurrBoxSizer->Add(Button, 0, wxALIGN_BOTTOM|wxALIGN_RIGHT|wxALL, 5);
Button = new wxButton( this, wxID_APPLY, _("Apply") );
CurrBoxSizer->Add(Button, 0, wxALIGN_BOTTOM|wxALIGN_RIGHT|wxALL, 5);
GetSizer()->Fit(this); GetSizer()->Fit(this);
GetSizer()->SetSizeHints(this); GetSizer()->SetSizeHints(this);
@ -246,11 +261,29 @@ wxBoxSizer * CurrBoxSizer = NULL;
/*******************************************************************/ /*******************************************************************/
void WinEDA_SetColorsFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) void WinEDA_SetColorsFrame::OnOkClick(wxCommandEvent& WXUNUSED(event))
/*******************************************************************/ /*******************************************************************/
{ {
// true is to force the frame to close UpdateLayerSettings();
Close(true); m_Parent->GetScreen()->SetRefreshReq();
EndModal( 1 );
}
/*******************************************************************/
void WinEDA_SetColorsFrame::OnCancelClick(wxCommandEvent& WXUNUSED(event))
/*******************************************************************/
{
EndModal( -1 );
}
/*******************************************************************/
void WinEDA_SetColorsFrame::OnApplyClick(wxCommandEvent& WXUNUSED(event))
/*******************************************************************/
{
UpdateLayerSettings();
m_Parent->ReDrawPanel();
} }
@ -261,10 +294,9 @@ void WinEDA_SetColorsFrame::SetColor(wxCommandEvent& event)
int ii; int ii;
int id = event.GetId(); int id = event.GetId();
int color; int color;
int w = BUTT_SIZE_X, h = BUTT_SIZE_Y;
color = DisplayColorFrame( this, color = DisplayColorFrame( this,
*laytool_list[id - ID_COLOR_SETUP]->m_Color ); CurrentColor[id - ID_COLOR_SETUP] );
if ( color < 0 ) if ( color < 0 )
return; return;
@ -276,17 +308,17 @@ int w = BUTT_SIZE_X, h = BUTT_SIZE_Y;
if( laytool_list[ii]->m_Color == NULL ) if( laytool_list[ii]->m_Color == NULL )
continue; continue;
if( *laytool_list[ii]->m_Color == color ) if( CurrentColor[ii] == color )
break; break;
*laytool_list[ii]->m_Color = color; CurrentColor[ii] = color;
wxMemoryDC iconDC; wxMemoryDC iconDC;
wxBitmapButton * Button = laytool_list[ii]->m_Button; wxBitmapButton * Button = laytool_list[ii]->m_Button;
wxBitmap ButtBitmap = Button->GetBitmapLabel(); wxBitmap ButtBitmap = Button->GetBitmapLabel();
iconDC.SelectObject( ButtBitmap ); iconDC.SelectObject( ButtBitmap );
int buttcolor = *laytool_list[ii]->m_Color; int buttcolor = CurrentColor[ii];
wxBrush Brush; wxBrush Brush;
iconDC.SelectObject( ButtBitmap ); iconDC.SelectObject( ButtBitmap );
iconDC.SetPen(*wxBLACK_PEN); iconDC.SetPen(*wxBLACK_PEN);
@ -298,23 +330,19 @@ int w = BUTT_SIZE_X, h = BUTT_SIZE_Y;
Brush.SetStyle(wxSOLID); Brush.SetStyle(wxSOLID);
iconDC.SetBrush(Brush); iconDC.SetBrush(Brush);
iconDC.DrawRectangle(0,0, w, h); iconDC.DrawRectangle(0, 0, BUTT_SIZE_X, BUTT_SIZE_Y);
Button->SetBitmapLabel(ButtBitmap); Button->SetBitmapLabel(ButtBitmap);
SetDisplayOnOff(event);
m_Parent->GetScreen()->SetRefreshReq();
} }
Refresh( FALSE ); Refresh( FALSE );
} }
/******************************************************************/ /******************************************************************/
void WinEDA_SetColorsFrame::SetDisplayOnOff(wxCommandEvent& event) void WinEDA_SetColorsFrame::UpdateLayerSettings()
/******************************************************************/ /******************************************************************/
{ {
for( int ii = 0; laytool_list[ii] != NULL; ii++ ) for( int ii = 0; laytool_list[ii] != NULL; ii++ )
{ {
if ( laytool_list[ii]->m_CheckBox == NULL )
continue;
if ( ! laytool_list[ii]->m_NoDisplayIsColor && if ( ! laytool_list[ii]->m_NoDisplayIsColor &&
(laytool_list[ii]->m_NoDisplay == NULL) ) (laytool_list[ii]->m_NoDisplay == NULL) )
continue; continue;
@ -322,16 +350,21 @@ void WinEDA_SetColorsFrame::SetDisplayOnOff(wxCommandEvent& event)
if ( laytool_list[ii]->m_NoDisplayIsColor ) if ( laytool_list[ii]->m_NoDisplayIsColor )
{ {
if ( laytool_list[ii]->m_CheckBox->GetValue() ) if ( laytool_list[ii]->m_CheckBox->GetValue() )
*laytool_list[ii]->m_Color &= ~ITEM_NOT_SHOW; *laytool_list[ii]->m_Color = CurrentColor[ii] & ~ITEM_NOT_SHOW;
else else
*laytool_list[ii]->m_Color |= ITEM_NOT_SHOW; *laytool_list[ii]->m_Color = CurrentColor[ii] | ITEM_NOT_SHOW;
} }
else else
{ {
*laytool_list[ii]->m_Color = CurrentColor[ii];
*laytool_list[ii]->m_NoDisplay = laytool_list[ii]->m_CheckBox->GetValue(); *laytool_list[ii]->m_NoDisplay = laytool_list[ii]->m_CheckBox->GetValue();
// A hack, we have both g_DrawGrid and m_Parent->m_Draw_Grid.
// A better way preferred, please.
if( laytool_list[ii]->m_NoDisplay == &g_ShowGrid )
m_Parent->m_Draw_Grid = g_ShowGrid;
} }
} }
m_Parent->GetScreen()->SetRefreshReq();
} }
@ -347,7 +380,4 @@ bool NewState = (event.GetId() == ID_COLOR_RESET_SHOW_LAYER_ON) ? TRUE : FALSE;
continue; continue;
laytool_list[ii]->m_CheckBox->SetValue(NewState); laytool_list[ii]->m_CheckBox->SetValue(NewState);
} }
SetDisplayOnOff(event);
} }

View File

@ -5,11 +5,6 @@ static ColorButton Msg_Layers_Cu=
_("Layers 1-16") /* Title */ _("Layers 1-16") /* Title */
}; };
static ColorButton Msg_Layers_Tech=
{
_("Layers 17-32") /* Title */
};
static ColorButton Layer_1_Butt= static ColorButton Layer_1_Butt=
{ {
_("Layer 1"), /* Title */ _("Layer 1"), /* Title */
@ -122,6 +117,11 @@ static ColorButton Layer_16_Butt=
TRUE /* parametre display on/off = bit ITEM_NON_VISIBLE */ TRUE /* parametre display on/off = bit ITEM_NON_VISIBLE */
}; };
static ColorButton Msg_Layers_Tech=
{
_("Layers 17-32") /* Title */
};
static ColorButton Layer_17_Butt= static ColorButton Layer_17_Butt=
{ {
_("Layer 17"), /* Title */ _("Layer 17"), /* Title */
@ -244,7 +244,7 @@ static ColorButton Msg_Others_Items=
static ColorButton Grid_Butt= static ColorButton Grid_Butt=
{ {
_("Grid"), /* Title */ _("Grid"), /* Title */
&g_DesignSettings.m_PcbGridColor, /* adr du parametre optionnel */ &g_GridColor, /* adr du parametre optionnel */
FALSE, FALSE,
&g_ShowGrid /* parametre display on/off = bool */ &g_ShowGrid /* parametre display on/off = bool */
}; };

View File

@ -71,7 +71,7 @@
#define ECO2_N 27 #define ECO2_N 27
#define EDGE_N 28 #define EDGE_N 28
#define LAST_NO_COPPER_LAYER 28 #define LAST_NO_COPPER_LAYER 28
#define NB_LAYERS (EDGE_N + 1) #define NB_LAYERS (LAST_NO_COPPER_LAYER + 1)
#define LAYER_COUNT 32 #define LAYER_COUNT 32

View File

@ -31,7 +31,7 @@
// Option d'affichage des fenetres de dialogue // Option d'affichage des fenetres de dialogue
// #define DIALOG_STYLE wxDEFAULT_DIALOG_STYLE|wxFRAME_FLOAT_ON_PARENT|wxSTAY_ON_TOP // #define DIALOG_STYLE wxDEFAULT_DIALOG_STYLE|wxFRAME_FLOAT_ON_PARENT|wxSTAY_ON_TOP
#define DIALOG_STYLE wxDEFAULT_DIALOG_STYLE | wxFRAME_FLOAT_ON_PARENT #define DIALOG_STYLE wxDEFAULT_DIALOG_STYLE | wxFRAME_FLOAT_ON_PARENT | MAYBE_RESIZE_BORDER
#define EDA_DRAW_PANEL wxScrolledWindow #define EDA_DRAW_PANEL wxScrolledWindow
@ -539,7 +539,9 @@ public:
void DelLimitesZone( wxDC* DC, bool Redraw ); void DelLimitesZone( wxDC* DC, bool Redraw );
// Gestion des layers: // Gestion des layers:
int SelectLayer( int default_layer, int min_layer, int max_layer ); // (See pcbnew/sel_layer.cpp for description of why null_layer parameter is provided)
int SelectLayer( int default_layer, int min_layer, int max_layer,
bool null_layer = false );
void SelectLayerPair(); void SelectLayerPair();
virtual void SwitchLayer( wxDC* DC, int layer ); virtual void SwitchLayer( wxDC* DC, int layer );
@ -1620,8 +1622,8 @@ public:
private: private:
void OnClose( wxCloseEvent& event ); void OnClose( wxCloseEvent& event );
void Cancel( wxCommandEvent& event ); void OnCancelClick( wxCommandEvent& event );
void Ok( wxCommandEvent& event ); void OnOkClick( wxCommandEvent& event );
void ClickOnList( wxCommandEvent& event ); void ClickOnList( wxCommandEvent& event );
void D_ClickOnList( wxCommandEvent& event ); void D_ClickOnList( wxCommandEvent& event );
void OnKeyEvent( wxKeyEvent& event ); void OnKeyEvent( wxKeyEvent& event );

View File

@ -153,7 +153,7 @@ WinEDA_ExecBlockCmdFrame::WinEDA_ExecBlockCmdFrame( WinEDA_BasePcbFrame* parent,
m_button2 = new wxButton( this, wxID_CANCEL, _( "Cancel" ), wxDefaultPosition, wxDefaultSize, 0 ); m_button2 = new wxButton( this, wxID_CANCEL, _( "Cancel" ), wxDefaultPosition, wxDefaultSize, 0 );
m_button2->SetForegroundColour( *wxBLUE ); m_button2->SetForegroundColour( *wxBLUE );
fgSizer2->Add( m_button2, 0, wxALL, 5 ); fgSizer2->Add( m_button2, 0, wxALL, 5 );
m_button1 = new wxButton( this, wxID_OK, _( "Ok" ), wxDefaultPosition, wxDefaultSize, 0 ); m_button1 = new wxButton( this, wxID_OK, _( "OK" ), wxDefaultPosition, wxDefaultSize, 0 );
m_button1->SetForegroundColour( *wxRED ); m_button1->SetForegroundColour( *wxRED );
m_button1->SetDefault(); m_button1->SetDefault();
fgSizer2->Add( m_button1, 0, wxALL, 5 ); fgSizer2->Add( m_button1, 0, wxALL, 5 );
@ -169,7 +169,7 @@ WinEDA_ExecBlockCmdFrame::WinEDA_ExecBlockCmdFrame( WinEDA_BasePcbFrame* parent,
void WinEDA_ExecBlockCmdFrame::Cancel( wxCommandEvent& WXUNUSED (event) ) void WinEDA_ExecBlockCmdFrame::Cancel( wxCommandEvent& WXUNUSED (event) )
/**********************************************************************/ /**********************************************************************/
{ {
EndModal( 1 ); EndModal( -1 );
} }

View File

@ -343,7 +343,7 @@ void TEXTE_MODULE::Display_Infos( WinEDA_DrawFrame* frame )
Affiche_1_Parametre( frame, -1, wxEmptyString, _( "Yes" ), DARKGREEN ); Affiche_1_Parametre( frame, -1, wxEmptyString, _( "Yes" ), DARKGREEN );
ii = m_Layer; ii = m_Layer;
if( ii <= 28 ) if( ii < NB_LAYERS )
Affiche_1_Parametre( frame, 28, _( "Layer" ), ReturnPcbLayerName( ii ), DARKGREEN ); Affiche_1_Parametre( frame, 28, _( "Layer" ), ReturnPcbLayerName( ii ), DARKGREEN );
else else
{ {

View File

@ -36,9 +36,7 @@ static int status_cotation; /* = 0 : pas de cotation en cours
enum id_Cotation_properties { enum id_Cotation_properties {
ID_ACCEPT_COTATION_PROPERTIES = 1900, ID_TEXTPCB_SELECT_LAYER = 1900
ID_CLOSE_COTATION_PROPERTIES,
ID_TEXTPCB_SELECT_LAYER
}; };
/************************************/ /************************************/
@ -69,17 +67,15 @@ public:
private: private:
void OnQuit( wxCommandEvent& event ); void OnCancelClick( wxCommandEvent& event );
void CotationPropertiesAccept( wxCommandEvent& event ); void OnOkClick( wxCommandEvent& event );
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
}; };
BEGIN_EVENT_TABLE( WinEDA_CotationPropertiesFrame, wxDialog ) BEGIN_EVENT_TABLE( WinEDA_CotationPropertiesFrame, wxDialog )
EVT_BUTTON( ID_ACCEPT_COTATION_PROPERTIES, EVT_BUTTON( wxID_OK, WinEDA_CotationPropertiesFrame::OnOkClick )
WinEDA_CotationPropertiesFrame::CotationPropertiesAccept ) EVT_BUTTON( wxID_CANCEL, WinEDA_CotationPropertiesFrame::OnCancelClick )
EVT_BUTTON( ID_CLOSE_COTATION_PROPERTIES,
WinEDA_CotationPropertiesFrame::OnQuit )
END_EVENT_TABLE() END_EVENT_TABLE()
@ -106,13 +102,11 @@ WinEDA_CotationPropertiesFrame::WinEDA_CotationPropertiesFrame( WinEDA_PcbFrame*
MainBoxSizer->Add( RightBoxSizer, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); MainBoxSizer->Add( RightBoxSizer, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
/* Creation des boutons de commande */ /* Creation des boutons de commande */
Button = new wxButton( this, ID_ACCEPT_COTATION_PROPERTIES, Button = new wxButton( this, wxID_OK, _( "OK" ) );
_( "Ok" ) );
Button->SetForegroundColour( *wxRED ); Button->SetForegroundColour( *wxRED );
RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 ); RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 );
Button = new wxButton( this, ID_CLOSE_COTATION_PROPERTIES, Button = new wxButton( this, wxID_CANCEL, _( "Cancel" ) );
_( "Cancel" ) );
Button->SetForegroundColour( *wxBLUE ); Button->SetForegroundColour( *wxBLUE );
RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 ); RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 );
@ -142,7 +136,7 @@ WinEDA_CotationPropertiesFrame::WinEDA_CotationPropertiesFrame( WinEDA_PcbFrame*
wxDefaultPosition, wxDefaultSize ); wxDefaultPosition, wxDefaultSize );
LeftBoxSizer->Add( m_SelLayerBox, 0, wxGROW | wxLEFT | wxRIGHT | wxBOTTOM, 5 ); LeftBoxSizer->Add( m_SelLayerBox, 0, wxGROW | wxLEFT | wxRIGHT | wxBOTTOM, 5 );
int ii; int ii;
for( ii = CMP_N + 1; ii < 29; ii++ ) for( ii = CMP_N + 1; ii < NB_LAYERS; ii++ )
{ {
m_SelLayerBox->Append( ReturnPcbLayerName( ii ) ); m_SelLayerBox->Append( ReturnPcbLayerName( ii ) );
} }
@ -155,15 +149,15 @@ WinEDA_CotationPropertiesFrame::WinEDA_CotationPropertiesFrame( WinEDA_PcbFrame*
/**********************************************************************/ /**********************************************************************/
void WinEDA_CotationPropertiesFrame::OnQuit( wxCommandEvent& WXUNUSED (event) ) void WinEDA_CotationPropertiesFrame::OnCancelClick( wxCommandEvent& WXUNUSED (event) )
/**********************************************************************/ /**********************************************************************/
{ {
Close( true ); // true is to force the frame to close EndModal( -1 );
} }
/***********************************************************************************/ /***********************************************************************************/
void WinEDA_CotationPropertiesFrame::CotationPropertiesAccept( wxCommandEvent& event ) void WinEDA_CotationPropertiesFrame::OnOkClick( wxCommandEvent& event )
/***********************************************************************************/ /***********************************************************************************/
{ {
if( m_DC ) // Effacement ancien texte if( m_DC ) // Effacement ancien texte
@ -193,7 +187,7 @@ void WinEDA_CotationPropertiesFrame::CotationPropertiesAccept( wxCommandEvent& e
} }
m_Parent->m_CurrentScreen->SetModify(); m_Parent->m_CurrentScreen->SetModify();
Close( TRUE ); EndModal( 1 );
} }
@ -365,7 +359,8 @@ void WinEDA_PcbFrame::Install_Edit_Cotation( COTATION* Cotation,
WinEDA_CotationPropertiesFrame* frame = new WinEDA_CotationPropertiesFrame( this, WinEDA_CotationPropertiesFrame* frame = new WinEDA_CotationPropertiesFrame( this,
Cotation, DC, pos ); Cotation, DC, pos );
frame->ShowModal(); frame->Destroy(); frame->ShowModal();
frame->Destroy();
} }

View File

@ -11,9 +11,8 @@
/**************************************/ /**************************************/
BEGIN_EVENT_TABLE( WinEDA_ModulePropertiesFrame, wxDialog ) BEGIN_EVENT_TABLE( WinEDA_ModulePropertiesFrame, wxDialog )
EVT_BUTTON( ID_ACCEPT_MODULE_PROPERTIES, EVT_BUTTON( wxID_OK, WinEDA_ModulePropertiesFrame::OnOkClick )
WinEDA_ModulePropertiesFrame::ModulePropertiesAccept ) EVT_BUTTON( wxID_CANCEL, WinEDA_ModulePropertiesFrame::OnCancelClick )
EVT_BUTTON( ID_CLOSE_MODULE_PROPERTIES, WinEDA_ModulePropertiesFrame::OnQuit )
EVT_BUTTON( ID_MODULE_EDIT_ADD_TEXT, WinEDA_ModulePropertiesFrame::CreateTextModule ) EVT_BUTTON( ID_MODULE_EDIT_ADD_TEXT, WinEDA_ModulePropertiesFrame::CreateTextModule )
EVT_BUTTON( ID_MODULE_EDIT_EDIT_TEXT, WinEDA_ModulePropertiesFrame::EditOrDelTextModule ) EVT_BUTTON( ID_MODULE_EDIT_EDIT_TEXT, WinEDA_ModulePropertiesFrame::EditOrDelTextModule )
EVT_BUTTON( ID_MODULE_EDIT_DELETE_TEXT, WinEDA_ModulePropertiesFrame::EditOrDelTextModule ) EVT_BUTTON( ID_MODULE_EDIT_DELETE_TEXT, WinEDA_ModulePropertiesFrame::EditOrDelTextModule )
@ -115,13 +114,11 @@ void WinEDA_ModulePropertiesFrame::CreateControls()
wxBoxSizer* ButtonsBoxSizer = new wxBoxSizer( wxHORIZONTAL ); wxBoxSizer* ButtonsBoxSizer = new wxBoxSizer( wxHORIZONTAL );
m_GeneralBoxSizer->Add( ButtonsBoxSizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5 ); m_GeneralBoxSizer->Add( ButtonsBoxSizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5 );
Button = new wxButton( this, ID_ACCEPT_MODULE_PROPERTIES, Button = new wxButton( this, wxID_OK, _( "OK" ) );
_( "Ok" ) );
Button->SetForegroundColour( *wxRED ); Button->SetForegroundColour( *wxRED );
ButtonsBoxSizer->Add( Button, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); ButtonsBoxSizer->Add( Button, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
Button = new wxButton( this, ID_CLOSE_MODULE_PROPERTIES, Button = new wxButton( this, wxID_CANCEL, _( "Cancel" ) );
_( "Cancel" ) );
Button->SetForegroundColour( *wxBLUE ); Button->SetForegroundColour( *wxBLUE );
ButtonsBoxSizer->Add( Button, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); ButtonsBoxSizer->Add( Button, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
} }
@ -486,15 +483,15 @@ void Panel3D_Ctrl::Browse3DLib( wxCommandEvent& event )
/**********************************************************************/ /**********************************************************************/
void WinEDA_ModulePropertiesFrame::OnQuit( wxCommandEvent& WXUNUSED (event) ) void WinEDA_ModulePropertiesFrame::OnCancelClick( wxCommandEvent& WXUNUSED (event) )
/**********************************************************************/ /**********************************************************************/
{ {
Close( true ); // true is to force the frame to close EndModal( -1 );
} }
/******************************************************************************/ /******************************************************************************/
void WinEDA_ModulePropertiesFrame::ModulePropertiesAccept( wxCommandEvent& event ) void WinEDA_ModulePropertiesFrame::OnOkClick( wxCommandEvent& event )
/******************************************************************************/ /******************************************************************************/
{ {
bool change_layer = FALSE; bool change_layer = FALSE;
@ -590,7 +587,7 @@ void WinEDA_ModulePropertiesFrame::ModulePropertiesAccept( wxCommandEvent& event
m_Parent->GetScreen()->SetModify(); m_Parent->GetScreen()->SetModify();
Close( TRUE ); EndModal( 1 );
if( m_DC ) if( m_DC )
m_CurrentModule->Draw( m_Parent->DrawPanel, m_DC, wxPoint( 0, 0 ), GR_OR ); m_CurrentModule->Draw( m_Parent->DrawPanel, m_DC, wxPoint( 0, 0 ), GR_OR );

View File

@ -5,9 +5,7 @@
enum id_Module_properties enum id_Module_properties
{ {
ID_ACCEPT_MODULE_PROPERTIES = 1900, ID_GOTO_MODULE_EDITOR =1900,
ID_CLOSE_MODULE_PROPERTIES,
ID_GOTO_MODULE_EDITOR,
ID_MODULE_PROPERTIES_EXCHANGE, ID_MODULE_PROPERTIES_EXCHANGE,
ID_MODULE_EDIT_ADD_TEXT, ID_MODULE_EDIT_ADD_TEXT,
ID_MODULE_EDIT_EDIT_TEXT, ID_MODULE_EDIT_EDIT_TEXT,
@ -59,8 +57,8 @@ public:
private: private:
void CreateControls(); void CreateControls();
void OnQuit(wxCommandEvent& event); void OnCancelClick(wxCommandEvent& event);
void ModulePropertiesAccept(wxCommandEvent& event); void OnOkClick(wxCommandEvent& event);
void CreateTextModule(wxCommandEvent& event); void CreateTextModule(wxCommandEvent& event);
void EditOrDelTextModule(wxCommandEvent& event); void EditOrDelTextModule(wxCommandEvent& event);
void SelectTextListBox(wxCommandEvent& event); void SelectTextListBox(wxCommandEvent& event);

View File

@ -284,10 +284,7 @@ MODULE* WinEDA_PcbFrame::Create_MuWaveComponent( wxDC* DC, int shape_type )
/**************** Polygon Shapes ***********************/ /**************** Polygon Shapes ***********************/
enum id_mw_cmd { enum id_mw_cmd {
ID_ACCEPT_OPT = 1000, ID_READ_SHAPE_FILE = 1000
ID_CANCEL_OPT,
ID_READ_SHAPE_FILE
}; };
/*************************************************/ /*************************************************/
@ -309,8 +306,8 @@ public:
~WinEDA_SetParamShapeFrame() { }; ~WinEDA_SetParamShapeFrame() { };
private: private:
void OnCloseWindow( wxCloseEvent& event ); void OnOkClick( wxCommandEvent& event );
void OnCancel( wxCommandEvent& event ); void OnCancelClick( wxCommandEvent& event );
void ReadDataShapeDescr( wxCommandEvent& event ); void ReadDataShapeDescr( wxCommandEvent& event );
void AcceptOptions( wxCommandEvent& event ); void AcceptOptions( wxCommandEvent& event );
@ -318,8 +315,8 @@ private:
}; };
/* Construction de la table des evenements pour WinEDA_SetParamShapeFrame */ /* Construction de la table des evenements pour WinEDA_SetParamShapeFrame */
BEGIN_EVENT_TABLE( WinEDA_SetParamShapeFrame, wxDialog ) BEGIN_EVENT_TABLE( WinEDA_SetParamShapeFrame, wxDialog )
EVT_BUTTON( ID_ACCEPT_OPT, WinEDA_SetParamShapeFrame::AcceptOptions ) EVT_BUTTON( wxID_OK, WinEDA_SetParamShapeFrame::OnOkClick )
EVT_BUTTON( ID_CANCEL_OPT, WinEDA_SetParamShapeFrame::OnCancel ) EVT_BUTTON( wxID_CANCEL, WinEDA_SetParamShapeFrame::OnCancelClick )
EVT_BUTTON( ID_READ_SHAPE_FILE, WinEDA_SetParamShapeFrame::ReadDataShapeDescr ) EVT_BUTTON( ID_READ_SHAPE_FILE, WinEDA_SetParamShapeFrame::ReadDataShapeDescr )
END_EVENT_TABLE() END_EVENT_TABLE()
@ -348,19 +345,19 @@ WinEDA_SetParamShapeFrame::WinEDA_SetParamShapeFrame( WinEDA_PcbFrame* parent,
MainBoxSizer->Add( LeftBoxSizer, 0, wxGROW | wxALL, 5 ); MainBoxSizer->Add( LeftBoxSizer, 0, wxGROW | wxALL, 5 );
MainBoxSizer->Add( RightBoxSizer, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); MainBoxSizer->Add( RightBoxSizer, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
wxButton* Button = new wxButton( this, ID_ACCEPT_OPT, _( "Ok" ) ); wxButton* Button = new wxButton( this, wxID_OK, _( "OK" ) );
Button->SetForegroundColour( *wxRED ); Button->SetForegroundColour( *wxRED );
RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 ); RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 );
Button = new wxButton( this, ID_CANCEL_OPT, _( "Cancel" ) ); Button = new wxButton( this, wxID_CANCEL, _( "Cancel" ) );
Button->SetForegroundColour( *wxBLUE ); Button->SetForegroundColour( *wxBLUE );
RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 ); RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 );
Button = new wxButton( this, ID_READ_SHAPE_FILE, _( "Read Shape Descr File" ) ); Button = new wxButton( this, ID_READ_SHAPE_FILE, _( "Read Shape Descr File..." ) );
Button->SetForegroundColour( wxColor( 0, 100, 0 ) ); Button->SetForegroundColour( wxColor( 0, 100, 0 ) );
RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 ); RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 );
wxString shapelist[3] = { _( "Normal" ), _( "Symmetrical" ), _( "mirrored" ) }; wxString shapelist[3] = { _( "Normal" ), _( "Symmetrical" ), _( "Mirrored" ) };
m_ShapeOptionCtrl = new wxRadioBox( this, -1, _( m_ShapeOptionCtrl = new wxRadioBox( this, -1, _(
"Shape Option" ), "Shape Option" ),
wxDefaultPosition, wxDefaultSize, 3, shapelist, 1, wxDefaultPosition, wxDefaultSize, 3, shapelist, 1,
@ -371,26 +368,25 @@ WinEDA_SetParamShapeFrame::WinEDA_SetParamShapeFrame( WinEDA_PcbFrame* parent,
ShapeSize, ShapeSize,
g_UnitMetric, LeftBoxSizer, PCB_INTERNAL_UNIT ); g_UnitMetric, LeftBoxSizer, PCB_INTERNAL_UNIT );
GetSizer()->Fit( this ); GetSizer()->Fit( this );
GetSizer()->SetSizeHints( this ); GetSizer()->SetSizeHints( this );
} }
/**********************************************************************/ /**********************************************************************/
void WinEDA_SetParamShapeFrame::OnCancel( wxCommandEvent& WXUNUSED (event) ) void WinEDA_SetParamShapeFrame::OnCancelClick( wxCommandEvent& WXUNUSED (event) )
/**********************************************************************/ /**********************************************************************/
{ {
if( PolyEdges ) if( PolyEdges )
free( PolyEdges ); free( PolyEdges );
PolyEdges = NULL; PolyEdges = NULL;
PolyEdgesCount = 0; PolyEdgesCount = 0;
EndModal( 0 ); EndModal( -1 );
} }
/*******************************************************************/ /*******************************************************************/
void WinEDA_SetParamShapeFrame::AcceptOptions( wxCommandEvent& event ) void WinEDA_SetParamShapeFrame::OnOkClick( wxCommandEvent& event )
/*******************************************************************/ /*******************************************************************/
{ {
ShapeSize = m_SizeCtrl->GetValue(); ShapeSize = m_SizeCtrl->GetValue();

View File

@ -577,7 +577,7 @@ wxString ext;
int mask = 1; int mask = 1;
s_SelectedLayers = 0; s_SelectedLayers = 0;
for( layer_to_plot = 0; layer_to_plot < 29; layer_to_plot++, mask <<= 1 ) for( layer_to_plot = 0; layer_to_plot < NB_LAYERS; layer_to_plot++, mask <<= 1 )
{ {
if( m_BoxSelecLayer[layer_to_plot]->GetValue() ) if( m_BoxSelecLayer[layer_to_plot]->GetValue() )
{ {

View File

@ -21,9 +21,7 @@ static wxPoint old_pos; // position originelle du texte selecte
enum id_TextPCB_properties { enum id_TextPCB_properties {
ID_ACCEPT_TEXTE_PCB_PROPERTIES = 1900, ID_TEXTPCB_SELECT_LAYER = 1900
ID_CLOSE_TEXTE_PCB_PROPERTIES,
ID_TEXTPCB_SELECT_LAYER
}; };
/************************************/ /************************************/
@ -56,17 +54,15 @@ public:
private: private:
void TextPCBPropertiesAccept( wxCommandEvent& event ); void OnOkClick( wxCommandEvent& event );
void OnQuit( wxCommandEvent& event ); void OnCancelClick( wxCommandEvent& event );
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
}; };
BEGIN_EVENT_TABLE( WinEDA_TextPCBPropertiesFrame, wxDialog ) BEGIN_EVENT_TABLE( WinEDA_TextPCBPropertiesFrame, wxDialog )
EVT_BUTTON( ID_ACCEPT_TEXTE_PCB_PROPERTIES, EVT_BUTTON( wxID_OK, WinEDA_TextPCBPropertiesFrame::OnOkClick )
WinEDA_TextPCBPropertiesFrame::TextPCBPropertiesAccept ) EVT_BUTTON( wxID_CANCEL, WinEDA_TextPCBPropertiesFrame::OnCancelClick )
EVT_BUTTON( ID_CLOSE_TEXTE_PCB_PROPERTIES,
WinEDA_TextPCBPropertiesFrame::OnQuit )
END_EVENT_TABLE() END_EVENT_TABLE()
@ -78,7 +74,8 @@ void WinEDA_PcbFrame::InstallTextPCBOptionsFrame( TEXTE_PCB* TextPCB,
DrawPanel->m_IgnoreMouseEvents = TRUE; DrawPanel->m_IgnoreMouseEvents = TRUE;
WinEDA_TextPCBPropertiesFrame* frame = new WinEDA_TextPCBPropertiesFrame( this, WinEDA_TextPCBPropertiesFrame* frame = new WinEDA_TextPCBPropertiesFrame( this,
TextPCB, DC, pos ); TextPCB, DC, pos );
frame->ShowModal(); frame->Destroy(); frame->ShowModal();
frame->Destroy();
DrawPanel->MouseToCursorSchema(); DrawPanel->MouseToCursorSchema();
DrawPanel->m_IgnoreMouseEvents = FALSE; DrawPanel->m_IgnoreMouseEvents = FALSE;
} }
@ -111,12 +108,12 @@ WinEDA_TextPCBPropertiesFrame::WinEDA_TextPCBPropertiesFrame( WinEDA_PcbFrame* p
MainBoxSizer->Add( RightBoxSizer, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); MainBoxSizer->Add( RightBoxSizer, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
/* Creation des boutons de commande */ /* Creation des boutons de commande */
Button = new wxButton( this, ID_ACCEPT_TEXTE_PCB_PROPERTIES, _( "Ok" ) ); Button = new wxButton( this, wxID_OK, _( "OK" ) );
Button->SetForegroundColour( *wxRED ); Button->SetForegroundColour( *wxRED );
RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 ); RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 );
Button->SetDefault(); Button->SetDefault();
Button = new wxButton( this, ID_CLOSE_TEXTE_PCB_PROPERTIES, _( "Cancel" ) ); Button = new wxButton( this, wxID_CANCEL, _( "Cancel" ) );
Button->SetForegroundColour( *wxBLUE ); Button->SetForegroundColour( *wxBLUE );
RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 ); RightBoxSizer->Add( Button, 0, wxGROW | wxALL, 5 );
@ -143,7 +140,7 @@ WinEDA_TextPCBPropertiesFrame::WinEDA_TextPCBPropertiesFrame( WinEDA_PcbFrame* p
MiddleBoxSizer->Add( m_SelLayerBox, 0, wxGROW | wxALL, 5 ); MiddleBoxSizer->Add( m_SelLayerBox, 0, wxGROW | wxALL, 5 );
int ii; int ii;
for( ii = 0; ii < 29; ii++ ) for( ii = 0; ii < NB_LAYERS; ii++ )
{ {
m_SelLayerBox->Append( ReturnPcbLayerName( ii ) ); m_SelLayerBox->Append( ReturnPcbLayerName( ii ) );
} }
@ -181,7 +178,7 @@ WinEDA_TextPCBPropertiesFrame::WinEDA_TextPCBPropertiesFrame( WinEDA_PcbFrame* p
wxDefaultPosition, wxSize( -1, -1 ), 2, display_msg, wxDefaultPosition, wxSize( -1, -1 ), 2, display_msg,
1, wxRA_SPECIFY_COLS ); 1, wxRA_SPECIFY_COLS );
if( !TextPCB->m_Miroir ) if( !TextPCB->m_Miroir )
m_Mirror->SetSelection( 1 );; m_Mirror->SetSelection( 1 );
MiddleBoxSizer->Add( m_Mirror, 0, wxGROW | wxALL, 5 ); MiddleBoxSizer->Add( m_Mirror, 0, wxGROW | wxALL, 5 );
GetSizer()->Fit( this ); GetSizer()->Fit( this );
@ -190,16 +187,15 @@ WinEDA_TextPCBPropertiesFrame::WinEDA_TextPCBPropertiesFrame( WinEDA_PcbFrame* p
/**********************************************************************/ /**********************************************************************/
void WinEDA_TextPCBPropertiesFrame::OnQuit( wxCommandEvent& WXUNUSED (event) ) void WinEDA_TextPCBPropertiesFrame::OnCancelClick( wxCommandEvent& WXUNUSED (event) )
/**********************************************************************/ /**********************************************************************/
{ {
// true is to force the frame to close EndModal( -1 );
Close( true );
} }
/**************************************************************************************/ /**************************************************************************************/
void WinEDA_TextPCBPropertiesFrame::TextPCBPropertiesAccept( wxCommandEvent& event ) void WinEDA_TextPCBPropertiesFrame::OnOkClick( wxCommandEvent& event )
/**************************************************************************************/ /**************************************************************************************/
{ {
if( m_DC ) // Effacement ancien texte if( m_DC ) // Effacement ancien texte
@ -224,7 +220,7 @@ void WinEDA_TextPCBPropertiesFrame::TextPCBPropertiesAccept( wxCommandEvent& eve
CurrentTextPCB->Draw( m_Parent->DrawPanel, m_DC, wxPoint( 0, 0 ), GR_OR ); CurrentTextPCB->Draw( m_Parent->DrawPanel, m_DC, wxPoint( 0, 0 ), GR_OR );
} }
m_Parent->m_CurrentScreen->SetModify(); m_Parent->m_CurrentScreen->SetModify();
Close( TRUE ); EndModal( 1 );
} }

View File

@ -14,12 +14,9 @@
/* Fonctions locales: */ /* Fonctions locales: */
enum layer_sel_id { enum layer_sel_id {
ID_LAYER_OK = 1800, ID_LAYER_SELECT_TOP = 1800,
ID_LAYER_CANCEL,
ID_LAYER_SELECT_TOP,
ID_LAYER_SELECT_BOTTOM, ID_LAYER_SELECT_BOTTOM,
ID_LAYER_SELECT ID_LAYER_SELECT
}; };
@ -32,64 +29,82 @@ class WinEDA_SelLayerFrame : public wxDialog
private: private:
WinEDA_BasePcbFrame* m_Parent; WinEDA_BasePcbFrame* m_Parent;
wxRadioBox* m_LayerList; wxRadioBox* m_LayerList;
int m_LayerId[NB_LAYERS]; int m_LayerId[NB_LAYERS + 1]; // One extra element for "(Deselect)" radiobutton
public: public:
// Constructor and destructor // Constructor and destructor
WinEDA_SelLayerFrame( WinEDA_BasePcbFrame* parent, int default_layer, WinEDA_SelLayerFrame( WinEDA_BasePcbFrame* parent, int default_layer,
int min_layer, int max_layer ); int min_layer, int max_layer, bool null_layer );
~WinEDA_SelLayerFrame() { }; ~WinEDA_SelLayerFrame() { };
private: private:
void Sel_Layer( wxCommandEvent& event ); void Sel_Layer( wxCommandEvent& event );
void Cancel( wxCommandEvent& event ); void OnCancelClick( wxCommandEvent& event );
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
}; };
/* Table des evenements pour WinEDA_SelLayerFrame */ /* Table des evenements pour WinEDA_SelLayerFrame */
BEGIN_EVENT_TABLE( WinEDA_SelLayerFrame, wxDialog ) BEGIN_EVENT_TABLE( WinEDA_SelLayerFrame, wxDialog )
EVT_BUTTON( ID_LAYER_OK, WinEDA_SelLayerFrame::Sel_Layer ) EVT_BUTTON( wxID_OK, WinEDA_SelLayerFrame::Sel_Layer )
EVT_BUTTON( ID_LAYER_CANCEL, WinEDA_SelLayerFrame::Cancel ) EVT_BUTTON( wxID_CANCEL, WinEDA_SelLayerFrame::OnCancelClick )
EVT_RADIOBOX( ID_LAYER_SELECT, WinEDA_SelLayerFrame::Sel_Layer ) EVT_RADIOBOX( ID_LAYER_SELECT, WinEDA_SelLayerFrame::Sel_Layer )
END_EVENT_TABLE() END_EVENT_TABLE()
/****************************************************************************************/ /****************************************************************************************/
int WinEDA_BasePcbFrame::SelectLayer( int default_layer, int min_layer, int max_layer ) int WinEDA_BasePcbFrame::SelectLayer( int default_layer, int min_layer, int max_layer,
bool null_layer )
/****************************************************************************************/ /****************************************************************************************/
/* Install the dialog box for layer selection /* Install the dialog box for layer selection
* @param default_layer = Preselection * @param default_layer = Preselection (NB_LAYERS for "(Deselect)" layer)
* @param min_layer = min layer value (-1 if no min value) * @param min_layer = min layer value (-1 if no min value)
* @param max_layer = max layer value (-1 si no max value) * @param max_layer = max layer value (-1 if no max value)
* @return new layer value, or <0 if aborted * @param null_layer = display a "(Deselect)" radiobutton (when set to true)
* @return new layer value (NB_LAYERS when "(Deselect)" radiobutton selected),
* or -1 if cancelled
*
* Providing the option to also display a "(Deselect)" radiobutton makes the
* "Swap Layers" command (and GerbView's "Export to Pcbnew" command) more "user
* friendly", by permitting any layer to be "deselected" immediately after its
* corresponding radiobutton has been clicked on. (It would otherwise be
* necessary to first cancel the "Select Layer:" dialog box (invoked after a
* different radiobutton is clicked on) prior to then clicking on the "Deselect"
* button provided within the "Swap Layers:" or "Layer selection:" dialog box).
*/ */
{ {
int layer; int layer;
WinEDA_SelLayerFrame* frame = WinEDA_SelLayerFrame* frame =
new WinEDA_SelLayerFrame( this, default_layer, min_layer, max_layer ); new WinEDA_SelLayerFrame( this, default_layer, min_layer, max_layer, null_layer );
layer = frame->ShowModal(); frame->Destroy(); layer = frame->ShowModal();
frame->Destroy();
return layer; return layer;
} }
/***********************************************************************/ /***********************************************************************/
WinEDA_SelLayerFrame::WinEDA_SelLayerFrame( WinEDA_BasePcbFrame* parent, WinEDA_SelLayerFrame::WinEDA_SelLayerFrame( WinEDA_BasePcbFrame* parent,
int default_layer, int min_layer, int max_layer ) : int default_layer, int min_layer,
int max_layer, bool null_layer ) :
wxDialog( parent, -1, _("Select Layer:"), wxPoint( -1, -1 ), wxDialog( parent, -1, _("Select Layer:"), wxPoint( -1, -1 ),
wxSize( 470, 250 ), wxSize( 470, 250 ),
DIALOG_STYLE ) DIALOG_STYLE )
/***********************************************************************/ /***********************************************************************/
/*
* The "OK" and "Cancel" buttons are positioned (in a horizontal line)
* beneath the "Layer" radiobox, unless that contains only one column of
* radiobuttons, in which case they are positioned (in a vertical line)
* to the right of that radiobox.
*/
{ {
wxButton* Button; wxButton* Button;
int ii, yy, xx; int ii;
wxPoint pos; wxString LayerList[NB_LAYERS + 1]; // One extra element for "(Deselect)" radiobutton
wxString LayerList[NB_LAYERS];
int LayerCount, LayerSelect = -1; int LayerCount, LayerSelect = -1;
m_Parent = parent; m_Parent = parent;
SetFont( *g_DialogFont ); SetFont( *g_DialogFont );
@ -116,30 +131,42 @@ WinEDA_SelLayerFrame::WinEDA_SelLayerFrame( WinEDA_BasePcbFrame* parent,
LayerCount++; LayerCount++;
} }
} }
// When appropriate, also provide a "(Deselect)" radiobutton
if( null_layer )
{
LayerList[LayerCount] = _( "(Deselect)" );
if( NB_LAYERS == default_layer )
LayerSelect = LayerCount;
pos.x = 5; pos.y = 5; m_LayerId[LayerCount] = NB_LAYERS;
LayerCount++;
}
m_LayerList = new wxRadioBox( this, ID_LAYER_SELECT, _("Layer"), m_LayerList = new wxRadioBox( this, ID_LAYER_SELECT, _("Layer"),
pos, wxSize( -1, -1 ), LayerCount, LayerList, wxPoint( -1, -1 ), wxSize( -1, -1 ), LayerCount, LayerList,
(LayerCount < 8) ? LayerCount : 8, wxRA_SPECIFY_ROWS ); (LayerCount < 8) ? LayerCount : 8, wxRA_SPECIFY_ROWS );
if( LayerSelect >= 0 ) if( LayerSelect >= 0 )
m_LayerList->SetSelection( LayerSelect ); m_LayerList->SetSelection( LayerSelect );
m_LayerList->GetSize( &xx, &yy ); wxBoxSizer* FrameBoxSizer = new wxBoxSizer(wxHORIZONTAL);
pos.x += xx + 12; SetSizer(FrameBoxSizer);
Button = new wxButton( this, ID_LAYER_OK, FrameBoxSizer->Add(m_LayerList, 0, wxALIGN_TOP|wxALL, 5);
_( "OK" ), pos ); wxBoxSizer* ButtonBoxSizer = new wxBoxSizer(wxVERTICAL);
Button->SetForegroundColour( *wxBLUE ); FrameBoxSizer->Add(ButtonBoxSizer, 0, wxALIGN_BOTTOM|wxALL, 0);
pos.y += Button->GetSize().y + 5; Button = new wxButton( this, wxID_OK, _("OK") );
Button = new wxButton( this, ID_LAYER_CANCEL,
_( "Cancel" ), pos );
Button->SetForegroundColour( *wxRED ); Button->SetForegroundColour( *wxRED );
ButtonBoxSizer->Add(Button, 0, wxGROW|wxALL, 5);
/* Redimensionnement de la boite de dialogue: */ Button = new wxButton( this, wxID_CANCEL, _("Cancel") );
pos.x += Button->GetSize().x + 10; Button->SetForegroundColour( *wxBLUE );
SetSize( -1, -1, pos.x, yy + 35 ); ButtonBoxSizer->Add(Button, 0, wxGROW|wxALL, 5);
if( GetSizer() )
{
GetSizer()->SetSizeHints(this);
}
} }
@ -154,7 +181,7 @@ void WinEDA_SelLayerFrame::Sel_Layer( wxCommandEvent& event )
/***************************************************************/ /***************************************************************/
void WinEDA_SelLayerFrame::Cancel( wxCommandEvent& event ) void WinEDA_SelLayerFrame::OnCancelClick( wxCommandEvent& event )
/***************************************************************/ /***************************************************************/
{ {
EndModal( -1 ); EndModal( -1 );
@ -180,8 +207,8 @@ public:
~WinEDA_SelLayerPairFrame() { }; ~WinEDA_SelLayerPairFrame() { };
private: private:
void Sel_Layer( wxCommandEvent& event ); void OnOkClick( wxCommandEvent& event );
void Cancel( wxCommandEvent& event ); void OnCancelClick( wxCommandEvent& event );
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
}; };
@ -189,11 +216,11 @@ private:
/* Table des evenements pour WinEDA_SelLayerPairFrame */ /* Table des evenements pour WinEDA_SelLayerPairFrame */
BEGIN_EVENT_TABLE( WinEDA_SelLayerPairFrame, wxDialog ) BEGIN_EVENT_TABLE( WinEDA_SelLayerPairFrame, wxDialog )
EVT_BUTTON( ID_LAYER_OK, WinEDA_SelLayerPairFrame::Sel_Layer ) EVT_BUTTON( wxID_OK, WinEDA_SelLayerPairFrame::OnOkClick )
EVT_BUTTON( ID_LAYER_CANCEL, WinEDA_SelLayerPairFrame::Cancel ) EVT_BUTTON( wxID_CANCEL, WinEDA_SelLayerPairFrame::OnCancelClick )
EVT_RADIOBOX( ID_LAYER_SELECT, WinEDA_SelLayerPairFrame::Sel_Layer )
END_EVENT_TABLE() END_EVENT_TABLE()
/***********************************************/ /***********************************************/
void WinEDA_BasePcbFrame::SelectLayerPair() void WinEDA_BasePcbFrame::SelectLayerPair()
/***********************************************/ /***********************************************/
@ -202,10 +229,23 @@ void WinEDA_BasePcbFrame::SelectLayerPair()
* pour autorutage, vias... * pour autorutage, vias...
*/ */
{ {
// Check whether more than one copper layer has been enabled for the
// current PCB file, as Layer Pairs can only meaningfully be defined
// within PCB files which contain at least two copper layers.
if( m_Pcb->m_BoardSettings->m_CopperLayerCount < 2 )
{
wxString InfoMsg;
InfoMsg = _( "Less than two copper layers are being used." );
InfoMsg << wxT( "\n" ) << _( "Hence Layer Pairs cannot be specified." );
DisplayInfo( this, InfoMsg );
return;
}
WinEDA_SelLayerPairFrame* frame = WinEDA_SelLayerPairFrame* frame =
new WinEDA_SelLayerPairFrame( this ); new WinEDA_SelLayerPairFrame( this );
frame->ShowModal(); frame->Destroy(); frame->ShowModal();
frame->Destroy();
DrawPanel->MouseToCursorSchema(); DrawPanel->MouseToCursorSchema();
SetToolbars(); SetToolbars();
} }
@ -219,8 +259,6 @@ WinEDA_SelLayerPairFrame::WinEDA_SelLayerPairFrame( WinEDA_BasePcbFrame* parent
{ {
wxButton* Button; wxButton* Button;
int ii, LayerCount; int ii, LayerCount;
int yy, xx;
wxPoint pos;
wxString LayerList[NB_COPPER_LAYERS]; wxString LayerList[NB_COPPER_LAYERS];
int LayerTopSelect = 0, LayerBottomSelect = 0; int LayerTopSelect = 0, LayerBottomSelect = 0;
@ -246,48 +284,85 @@ WinEDA_SelLayerPairFrame::WinEDA_SelLayerPairFrame( WinEDA_BasePcbFrame* parent
} }
} }
pos.x = 5; pos.y = 5;
m_LayerListTOP = new wxRadioBox( this, ID_LAYER_SELECT_TOP, _("Top Layer"), m_LayerListTOP = new wxRadioBox( this, ID_LAYER_SELECT_TOP, _("Top Layer"),
pos, wxSize( -1, -1 ), LayerCount, LayerList, wxPoint( -1, -1 ), wxSize( -1, -1 ), LayerCount, LayerList,
(LayerCount < 8) ? LayerCount : 8, wxRA_SPECIFY_ROWS ); (LayerCount < 8) ? LayerCount : 8, wxRA_SPECIFY_ROWS );
m_LayerListTOP->SetSelection( LayerTopSelect ); m_LayerListTOP->SetSelection( LayerTopSelect );
m_LayerListTOP->GetSize( &xx, &yy );
pos.x += xx + 12;
m_LayerListBOTTOM = new wxRadioBox( this, ID_LAYER_SELECT_BOTTOM, _("Bottom Layer"), m_LayerListBOTTOM = new wxRadioBox( this, ID_LAYER_SELECT_BOTTOM, _("Bottom Layer"),
pos, wxSize( -1, -1 ), LayerCount, LayerList, wxPoint( -1, -1 ), wxSize( -1, -1 ), LayerCount, LayerList,
(LayerCount < 8) ? LayerCount : 8, wxRA_SPECIFY_ROWS ); (LayerCount < 8) ? LayerCount : 8, wxRA_SPECIFY_ROWS );
m_LayerListBOTTOM->SetSelection( LayerBottomSelect ); m_LayerListBOTTOM->SetSelection( LayerBottomSelect );
m_LayerListBOTTOM->GetSize( &xx, &yy ); wxBoxSizer* FrameBoxSizer = new wxBoxSizer(wxVERTICAL);
pos.x += xx + 12; SetSizer(FrameBoxSizer);
Button = new wxButton( this, ID_LAYER_OK, _( "OK" ), pos );
Button->SetForegroundColour( *wxBLUE );
pos.y += Button->GetSize().y + 5; wxBoxSizer* RadioBoxSizer = new wxBoxSizer(wxHORIZONTAL);
Button = new wxButton( this, ID_LAYER_CANCEL, _( "Cancel" ), pos ); FrameBoxSizer->Add(RadioBoxSizer, 0, wxALIGN_LEFT|wxALL, 0);
wxBoxSizer* ButtonBoxSizer = new wxBoxSizer(wxHORIZONTAL);
FrameBoxSizer->Add(ButtonBoxSizer, 0, wxALIGN_RIGHT|wxALL, 0);
RadioBoxSizer->Add(m_LayerListTOP, 0, wxALIGN_TOP|wxALL, 5);
RadioBoxSizer->Add(m_LayerListBOTTOM, 0, wxALIGN_TOP|wxALL, 5);
Button = new wxButton( this, wxID_OK, _("OK") );
Button->SetForegroundColour( *wxRED ); Button->SetForegroundColour( *wxRED );
ButtonBoxSizer->Add(Button, 0, wxGROW|wxALL, 5);
/* Redimensionnement de la boite de dialogue: */ Button = new wxButton( this, wxID_CANCEL, _("Cancel") );
pos.x += Button->GetSize().x + 10; Button->SetForegroundColour( *wxBLUE );
SetSize( -1, -1, pos.x, yy + 35 ); ButtonBoxSizer->Add(Button, 0, wxGROW|wxALL, 5);
if( GetSizer() )
{
GetSizer()->SetSizeHints(this);
}
} }
/***************************************************************/ /***************************************************************/
void WinEDA_SelLayerPairFrame::Sel_Layer( wxCommandEvent& event ) void WinEDA_SelLayerPairFrame::OnOkClick( wxCommandEvent& event )
/***************************************************************/ /***************************************************************/
{ {
// Check whether whichever layer has been specified as the "Top"
// layer is really "above" whichever layer has been specified as
// the "Bottom" layer; those values will only be updated (and the
// dialog box subsequently closed) when that condition is met.
// if( m_LayerId[m_LayerListTOP->GetSelection()]
// <= m_LayerId[m_LayerListBOTTOM->GetSelection()] )
// {
// DisplayError( this, _( "The Top Layer must be above the Bottom Layer" ) );
// return;
// }
// Code for previous test commented out because other code now
// transposes the assignment of the Top and Bottom layers if
// the former layer is actually "below" the latter. However,
// it is still desirable to check that those layers differ.
// Check whether whichever layer has been specified as the "Top"
// layer differs from whichever layer has been specified as the
// "Bottom" layer; those values will only be updated (and the
// dialog box subsequently closed) when that condition is met.
if( m_LayerId[m_LayerListTOP->GetSelection()]
== m_LayerId[m_LayerListBOTTOM->GetSelection()] )
{
DisplayError( this, _( "The Top Layer and Bottom Layer must differ" ) );
return;
}
PCB_SCREEN* screen = (PCB_SCREEN*) m_Parent->m_CurrentScreen; PCB_SCREEN* screen = (PCB_SCREEN*) m_Parent->m_CurrentScreen;
screen->m_Route_Layer_TOP = m_LayerId[m_LayerListTOP->GetSelection()]; screen->m_Route_Layer_TOP = m_LayerId[m_LayerListTOP->GetSelection()];
screen->m_Route_Layer_BOTTOM = m_LayerId[m_LayerListBOTTOM->GetSelection()]; screen->m_Route_Layer_BOTTOM = m_LayerId[m_LayerListBOTTOM->GetSelection()];
EndModal( 0 ); EndModal( 0 );
} }
/***************************************************************/ /***************************************************************/
void WinEDA_SelLayerPairFrame::Cancel( wxCommandEvent& event ) void WinEDA_SelLayerPairFrame::OnCancelClick( wxCommandEvent& event )
/***************************************************************/ /***************************************************************/
{ {
EndModal( -1 ); EndModal( -1 );

View File

@ -11,12 +11,10 @@
#include "protos.h" #include "protos.h"
/* Variables locales */ /* Variables locales */
static int New_Layer[32]; static int New_Layer[NB_LAYERS];
enum swap_layer_id { enum swap_layer_id {
ID_SWAP_LAYER_EXECUTE = 1800, ID_SWAP_LAYER_BUTTON_SELECT = 1800,
ID_SWAP_LAYER_CANCEL,
ID_SWAP_LAYER_BUTTON_SELECT,
ID_SWAP_LAYER_DESELECT, ID_SWAP_LAYER_DESELECT,
ID_SWAP_LAYER_SELECT ID_SWAP_LAYER_SELECT
}; };
@ -40,15 +38,16 @@ public:
private: private:
void Sel_Layer( wxCommandEvent& event ); void Sel_Layer( wxCommandEvent& event );
void Cancel( wxCommandEvent& event ); void OnOkClick( wxCommandEvent& event );
void Execute( wxCommandEvent& event ); void OnCancelClick( wxCommandEvent& event );
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
}; };
/* Table des evenements pour WinEDA_SwapLayerFrame */ /* Table des evenements pour WinEDA_SwapLayerFrame */
BEGIN_EVENT_TABLE( WinEDA_SwapLayerFrame, wxDialog ) BEGIN_EVENT_TABLE( WinEDA_SwapLayerFrame, wxDialog )
EVT_BUTTON( ID_SWAP_LAYER_EXECUTE, WinEDA_SwapLayerFrame::Execute ) EVT_BUTTON( wxID_OK, WinEDA_SwapLayerFrame::OnOkClick )
EVT_BUTTON( ID_SWAP_LAYER_CANCEL, WinEDA_SwapLayerFrame::Cancel ) EVT_BUTTON( wxID_CANCEL, WinEDA_SwapLayerFrame::OnCancelClick )
EVT_BUTTON( ID_SWAP_LAYER_DESELECT, WinEDA_SwapLayerFrame::Sel_Layer ) EVT_BUTTON( ID_SWAP_LAYER_DESELECT, WinEDA_SwapLayerFrame::Sel_Layer )
EVT_BUTTON( ID_SWAP_LAYER_BUTTON_SELECT, WinEDA_SwapLayerFrame::Sel_Layer ) EVT_BUTTON( ID_SWAP_LAYER_BUTTON_SELECT, WinEDA_SwapLayerFrame::Sel_Layer )
EVT_RADIOBOX( ID_SWAP_LAYER_SELECT, WinEDA_SwapLayerFrame::Sel_Layer ) EVT_RADIOBOX( ID_SWAP_LAYER_SELECT, WinEDA_SwapLayerFrame::Sel_Layer )
@ -65,7 +64,7 @@ WinEDA_SwapLayerFrame::WinEDA_SwapLayerFrame( WinEDA_BasePcbFrame* parent ) :
wxButton* Button; wxButton* Button;
int ii; int ii;
wxPoint pos; wxPoint pos;
wxString g_Layer_Name_Pair[32]; wxString g_Layer_Name_Pair[NB_LAYERS];
wxSize winsize; wxSize winsize;
m_Parent = parent; m_Parent = parent;
@ -76,42 +75,38 @@ WinEDA_SwapLayerFrame::WinEDA_SwapLayerFrame( WinEDA_BasePcbFrame* parent ) :
g_Layer_Name_Pair[ii] = ReturnPcbLayerName( ii ) + wxT( " -> " ) + _( "No Change" ); g_Layer_Name_Pair[ii] = ReturnPcbLayerName( ii ) + wxT( " -> " ) + _( "No Change" );
} }
pos.x = 5; pos.y = START_Y; pos.x = 5;
pos.y = START_Y;
m_LayerList = new wxRadioBox( this, ID_SWAP_LAYER_SELECT, _( "Layers" ), m_LayerList = new wxRadioBox( this, ID_SWAP_LAYER_SELECT, _( "Layers" ),
pos, pos, wxSize( -1, -1 ),
wxSize( -1, -1 ), 29, g_Layer_Name_Pair, 16, wxRA_SPECIFY_ROWS ); NB_LAYERS, g_Layer_Name_Pair, 16, wxRA_SPECIFY_ROWS );
winsize.y = m_LayerList->GetRect().GetBottom(); winsize.y = m_LayerList->GetRect().GetBottom();
pos.x = m_LayerList->GetRect().GetRight() + 12; pos.x = m_LayerList->GetRect().GetRight() + 12;
Button = new wxButton( this, ID_SWAP_LAYER_CANCEL,
_( "Cancel" ), pos );
Button->SetForegroundColour( *wxRED );
winsize.x = MAX( winsize.x, Button->GetRect().GetRight() );
pos.y += Button->GetSize().y + 5;
Button = new wxButton( this, ID_SWAP_LAYER_EXECUTE,
_( "OK" ), pos );
Button->SetForegroundColour( *wxBLUE );
winsize.x = MAX( winsize.x, Button->GetRect().GetRight() );
pos.y += Button->GetSize().y + 15;
Button = new wxButton( this, ID_SWAP_LAYER_DESELECT,
_( "Deselect" ), pos );
Button->SetForegroundColour( wxColour( 0, 100, 0 ) );
winsize.x = MAX( winsize.x, Button->GetRect().GetRight() );
pos.y += Button->GetSize().y + 5;
Button = new wxButton( this, ID_SWAP_LAYER_BUTTON_SELECT,
_( "Select" ), pos );
Button = new wxButton(this, ID_SWAP_LAYER_BUTTON_SELECT, _("Select..."), pos );
Button->SetForegroundColour(wxColour(0,100,100)); Button->SetForegroundColour(wxColour(0,100,100));
winsize.x = MAX( winsize.x, Button->GetRect().GetRight() );
winsize.x += 10; winsize.y += 10; pos.y += Button->GetSize().y + 10;
Button = new wxButton(this, ID_SWAP_LAYER_DESELECT, _("Deselect"), pos );
Button->SetForegroundColour(wxColour(0,100,0));
pos.y = winsize.y - 2 * Button->GetSize().y - 10;
Button = new wxButton(this, wxID_OK, _("OK"), pos );
Button->SetForegroundColour(*wxRED);
pos.y += Button->GetSize().y + 10;
Button = new wxButton(this, wxID_CANCEL, _("Cancel"), pos );
Button->SetForegroundColour(*wxBLUE);
winsize.x = MAX( winsize.x, Button->GetRect().GetRight() );
winsize.y = MAX( winsize.y, Button->GetRect().GetBottom() );
winsize.x += 10;
winsize.y += 10;
SetClientSize( winsize ); SetClientSize( winsize );
} }
@ -127,26 +122,49 @@ void WinEDA_SwapLayerFrame::Sel_Layer( wxCommandEvent& event )
switch( event.GetId() ) switch( event.GetId() )
{ {
case ID_SWAP_LAYER_DESELECT: case ID_SWAP_LAYER_DESELECT:
if( New_Layer[ii] != -1 ) if( New_Layer[ii] != NB_LAYERS )
{ {
New_Layer[ii] = -1; New_Layer[ii] = NB_LAYERS;
m_LayerList->SetString( ii, ReturnPcbLayerName( ii ) + m_LayerList->SetString( ii, ReturnPcbLayerName( ii )
+ wxT( " -> " ) + _( "No Change" ) ); + wxT( " -> " ) + _( "No Change" ) );
} }
break; break;
case ID_SWAP_LAYER_BUTTON_SELECT: case ID_SWAP_LAYER_BUTTON_SELECT:
case ID_SWAP_LAYER_SELECT: case ID_SWAP_LAYER_SELECT:
jj = m_Parent->SelectLayer( ii, -1, -1 ); jj = New_Layer[ii];
if( (jj < 0) || (jj >= 29) ) if( (jj < 0) || (jj > NB_LAYERS) )
jj = NB_LAYERS; // (Defaults to "No Change".)
jj = m_Parent->SelectLayer( jj, -1, -1, true );
if( (jj < 0) || (jj > NB_LAYERS) )
return; return;
if( ii != jj ) // No change if the selected layer matches the layer being edited.
// (Hence the only way to restore a layer to the "No Change"
// state is by specifically deselecting it; any attempt
// to select the same layer (instead) will be ignored.)
if( jj == ii )
{
wxString msg;
msg = _( "Deselect this layer to restore its No Change state" );
DisplayInfo( this, msg );
return;
}
if( jj != New_Layer[ii] )
{ {
New_Layer[ii] = jj; New_Layer[ii] = jj;
if( jj == NB_LAYERS )
m_LayerList->SetString( ii, m_LayerList->SetString( ii,
ReturnPcbLayerName( ii ) + wxT( " -> " ) + ReturnPcbLayerName( ii )
ReturnPcbLayerName( jj ) ); + wxT( " -> " )
+ _( "No Change" ) );
else
m_LayerList->SetString( ii,
ReturnPcbLayerName( ii )
+ wxT( " -> " )
+ ReturnPcbLayerName( jj ) );
} }
break; break;
} }
@ -154,7 +172,7 @@ void WinEDA_SwapLayerFrame::Sel_Layer( wxCommandEvent& event )
/*********************************************************/ /*********************************************************/
void WinEDA_SwapLayerFrame::Cancel( wxCommandEvent& event ) void WinEDA_SwapLayerFrame::OnCancelClick( wxCommandEvent& event )
/*********************************************************/ /*********************************************************/
{ {
EndModal( -1 ); EndModal( -1 );
@ -162,7 +180,7 @@ void WinEDA_SwapLayerFrame::Cancel( wxCommandEvent& event )
/*********************************************************/ /*********************************************************/
void WinEDA_SwapLayerFrame::Execute( wxCommandEvent& event ) void WinEDA_SwapLayerFrame::OnOkClick( wxCommandEvent& event )
/*********************************************************/ /*********************************************************/
{ {
EndModal( 1 ); EndModal( 1 );
@ -181,15 +199,16 @@ void WinEDA_PcbFrame::Swap_Layers( wxCommandEvent& event )
/* Init default values */ /* Init default values */
for( ii = 0; ii < 32; ii++ ) for( ii = 0; ii < NB_LAYERS; ii++ )
New_Layer[ii] = -1; New_Layer[ii] = NB_LAYERS;
WinEDA_SwapLayerFrame* frame = new WinEDA_SwapLayerFrame( this ); WinEDA_SwapLayerFrame* frame = new WinEDA_SwapLayerFrame( this );
ii = frame->ShowModal(); frame->Destroy(); ii = frame->ShowModal();
frame->Destroy();
if( ii != 1 ) if( ii != 1 )
return; return; // (Cancelled dialog box returns -1 instead)
/* Modifications des pistes */ /* Modifications des pistes */
pt_segm = (TRACK*) m_Pcb->m_Track; pt_segm = (TRACK*) m_Pcb->m_Track;

View File

@ -1,5 +1,5 @@
/*****************************************************************/ /*****************************************************************/
/* too_modeit.cpp: construction du menu de l'editeur de modules */ /* tool_modeit.cpp: construction du menu de l'editeur de modules */
/*****************************************************************/ /*****************************************************************/
#include "fctsys.h" #include "fctsys.h"