diff --git a/common/page_layout/page_layout_reader.cpp b/common/page_layout/page_layout_reader.cpp index a282989a48..21e4026b18 100644 --- a/common/page_layout/page_layout_reader.cpp +++ b/common/page_layout/page_layout_reader.cpp @@ -438,8 +438,9 @@ void PAGE_LAYOUT_READER_PARSER::readPngdata( WORKSHEET_DATAITEM_BITMAP * aItem ) tmp += "EndData"; wxString msg; - STRING_LINE_READER reader( tmp, wxT("Png kicad_wks data") ); - if( ! aItem->m_ImageBitmap->LoadData( reader, msg ) ) + STRING_LINE_READER str_reader( tmp, wxT("Png kicad_wks data") ); + + if( ! aItem->m_ImageBitmap->LoadData( str_reader, msg ) ) { wxLogMessage(msg); } diff --git a/common/selcolor.cpp b/common/selcolor.cpp index f24ad1baae..c9574b45a5 100644 --- a/common/selcolor.cpp +++ b/common/selcolor.cpp @@ -34,146 +34,84 @@ enum colors_id { - ID_COLOR_BLACK = 2000 // ID_COLOR_ = ID_COLOR_BLACK a ID_COLOR_BLACK + 31 + ID_COLOR_BLACK = 2000 // colors_id = ID_COLOR_BLACK a ID_COLOR_BLACK + NBCOLORS-1 }; -class WinEDA_SelColorFrame : public wxDialog +class CHOOSE_COLOR_DLG : public wxDialog { public: - WinEDA_SelColorFrame( wxWindow* parent, - const wxPoint& framepos, int OldColor ); - ~WinEDA_SelColorFrame() {}; + CHOOSE_COLOR_DLG( wxWindow* aParent, EDA_COLOR_T aOldColor ); + ~CHOOSE_COLOR_DLG() {}; + + EDA_COLOR_T GetSelectedColor() { return m_color; } private: - void Init_Dialog( int aOldColor ); - void OnCancel( wxCommandEvent& event ); - void SelColor( wxCommandEvent& event ); + void init_Dialog(); + void selColor( wxCommandEvent& event ); + + EDA_COLOR_T m_color; DECLARE_EVENT_TABLE() }; -BEGIN_EVENT_TABLE( WinEDA_SelColorFrame, wxDialog ) - EVT_BUTTON( wxID_CANCEL, WinEDA_SelColorFrame::OnCancel ) - EVT_COMMAND_RANGE( ID_COLOR_BLACK, ID_COLOR_BLACK + 31, +BEGIN_EVENT_TABLE( CHOOSE_COLOR_DLG, wxDialog ) + EVT_COMMAND_RANGE( ID_COLOR_BLACK, ID_COLOR_BLACK + NBCOLORS, wxEVT_COMMAND_BUTTON_CLICKED, - WinEDA_SelColorFrame::SelColor ) + CHOOSE_COLOR_DLG::selColor ) END_EVENT_TABLE() -EDA_COLOR_T DisplayColorFrame( wxWindow* parent, int OldColor ) +EDA_COLOR_T DisplayColorFrame( wxWindow* aParent, EDA_COLOR_T aOldColor ) { - wxPoint framepos; - EDA_COLOR_T color; + CHOOSE_COLOR_DLG dlg( aParent, aOldColor ); - wxGetMousePosition( &framepos.x, &framepos.y ); + if( dlg.ShowModal() == wxID_OK ) + { + return dlg.GetSelectedColor(); + } - WinEDA_SelColorFrame* frame = new WinEDA_SelColorFrame( parent, - framepos, OldColor ); - color = static_cast( frame->ShowModal() ); - frame->Destroy(); - if( color > NBCOLORS ) - color = UNSPECIFIED_COLOR; - return color; + return UNSPECIFIED_COLOR; } -WinEDA_SelColorFrame::WinEDA_SelColorFrame( wxWindow* parent, - const wxPoint& framepos, - int OldColor ) : - wxDialog( parent, -1, _( "Colors" ), framepos, wxDefaultSize, +CHOOSE_COLOR_DLG::CHOOSE_COLOR_DLG( wxWindow* aParent, EDA_COLOR_T aOldColor ) : + wxDialog( aParent, -1, _( "Colors" ), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER ) { + m_color = aOldColor; - Init_Dialog( OldColor ); + init_Dialog(); // Resize the dialog GetSizer()->SetSizeHints( this ); - - // Ensure the whole frame is visible, whenever the asked position. - // Moreover with a work station having dual monitors, the asked position can be relative to a monitor - // and this frame can be displayed on the other monitor, with an "out of screen" position. - // Give also a small margin. - int margin = 10; - wxPoint windowPosition = GetPosition(); - if( framepos != wxDefaultPosition ) - { - if( windowPosition.x < margin ) - windowPosition.x = margin; - // Under MACOS, a vertical margin >= 20 is needed by the system menubar - int v_margin = std::max(20, margin); - if( windowPosition.y < v_margin ) - windowPosition.y = v_margin; - if( windowPosition != framepos ) - SetPosition(windowPosition); - } - wxPoint endCornerPosition = GetPosition(); - endCornerPosition.x += GetSize().x + margin; - endCornerPosition.y += GetSize().y + margin; - - windowPosition = GetPosition(); - wxRect freeScreenArea( wxGetClientDisplayRect( ) ); - - if( freeScreenArea.GetRight() < endCornerPosition.x ) - { - windowPosition.x += freeScreenArea.GetRight() - endCornerPosition.x; - - if( windowPosition.x < freeScreenArea.x ) - windowPosition.x = freeScreenArea.x; - - // Sligly modify the vertical position to avoid the mouse to be - // exactly on the upper side of the window - windowPosition.y +=5; - endCornerPosition.y += 5; - } - - if( freeScreenArea.GetBottom() < endCornerPosition.y ) - { - windowPosition.y += freeScreenArea.GetBottom() - endCornerPosition.y; - - if( windowPosition.y < freeScreenArea.y ) - windowPosition.y = freeScreenArea.y; - } - - SetPosition(windowPosition); } -void WinEDA_SelColorFrame::Init_Dialog( int aOldColor ) +void CHOOSE_COLOR_DLG::init_Dialog() { - wxBoxSizer* OuterBoxSizer = NULL; - wxBoxSizer* MainBoxSizer = NULL; wxFlexGridSizer* FlexColumnBoxSizer = NULL; - wxBitmapButton* BitmapButton = NULL; - wxStaticText* Label = NULL; - wxStaticLine* Line = NULL; - wxStdDialogButtonSizer* StdDialogButtonSizer = NULL; - wxButton* Button = NULL; + wxBitmapButton* focusedButton = NULL; + const int w = 20, h = 20; - int ii, butt_ID; - int w = 20, h = 20; - bool ColorFound = false; - - SetReturnCode( -1 ); - - OuterBoxSizer = new wxBoxSizer( wxVERTICAL ); + wxBoxSizer* OuterBoxSizer = new wxBoxSizer( wxVERTICAL ); SetSizer( OuterBoxSizer ); - MainBoxSizer = new wxBoxSizer( wxHORIZONTAL ); + wxBoxSizer*MainBoxSizer = new wxBoxSizer( wxHORIZONTAL ); OuterBoxSizer->Add( MainBoxSizer, 1, wxGROW | wxLEFT | wxRIGHT | wxTOP, 5 ); - for( ii = 0; ii < NBCOLORS; ++ii ) + for( int ii = 0; ii < NBCOLORS; ++ii ) { // Provide a separate column for every six buttons (and their // associated text strings), so provide a FlexGrid Sizer with - // eight rows and two columns. + // six rows and two columns. if( ii % 6 == 0 ) { FlexColumnBoxSizer = new wxFlexGridSizer( 6, 2, 0, 0 ); // Specify that all of the rows can be expanded. - for( int ii = 0; ii < 6; ii++ ) + for( int kk = 0; kk < 6; kk++ ) { - FlexColumnBoxSizer->AddGrowableRow( ii ); + FlexColumnBoxSizer->AddGrowableRow( kk ); } // Specify that the second column can also be expanded. @@ -182,7 +120,7 @@ void WinEDA_SelColorFrame::Init_Dialog( int aOldColor ) MainBoxSizer->Add( FlexColumnBoxSizer, 1, wxGROW | wxTOP, 5 ); } - butt_ID = ID_COLOR_BLACK + ii; + int butt_ID = ID_COLOR_BLACK + ii; wxMemoryDC iconDC; wxBitmap ButtBitmap( w, h ); wxBrush brush; @@ -200,24 +138,21 @@ void WinEDA_SelColorFrame::Init_Dialog( int aOldColor ) iconDC.Clear(); iconDC.DrawRoundedRectangle( 0, 0, w, h, (double) h / 3 ); - BitmapButton = new wxBitmapButton( this, butt_ID, ButtBitmap, + wxBitmapButton* bitmapButton = new wxBitmapButton( this, butt_ID, ButtBitmap, wxDefaultPosition, wxSize( w+8, h+6 ) ); - FlexColumnBoxSizer->Add( BitmapButton, 0, + FlexColumnBoxSizer->Add( bitmapButton, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxLEFT | wxBOTTOM, 5 ); // Set focus to this button if its color matches the // color which had been selected previously (for // whichever layer's color is currently being edited). - if( aOldColor == buttcolor ) - { - ColorFound = true; - BitmapButton->SetFocus(); - } + if( m_color == buttcolor ) + focusedButton = bitmapButton; - Label = new wxStaticText( this, -1, ColorGetName( buttcolor ), - wxDefaultPosition, wxDefaultSize, 0 ); - FlexColumnBoxSizer->Add( Label, 1, + wxStaticText* label = new wxStaticText( this, -1, ColorGetName( buttcolor ), + wxDefaultPosition, wxDefaultSize, 0 ); + FlexColumnBoxSizer->Add( label, 1, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT | wxBOTTOM, 5 ); } @@ -227,38 +162,35 @@ void WinEDA_SelColorFrame::Init_Dialog( int aOldColor ) // (and also provide a horizontal static line to separate // that button from all of the other buttons). - Line = new wxStaticLine( this, -1, wxDefaultPosition, + wxStaticLine* sline = new wxStaticLine( this, -1, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - OuterBoxSizer->Add( Line, 0, wxGROW | wxLEFT | wxRIGHT | wxTOP, 5 ); + OuterBoxSizer->Add( sline, 0, wxGROW | wxLEFT | wxRIGHT | wxTOP, 5 ); - StdDialogButtonSizer = new wxStdDialogButtonSizer; - OuterBoxSizer->Add( StdDialogButtonSizer, 0, wxGROW | wxALL, 10 ); + wxStdDialogButtonSizer* stdDialogButtonSizer = new wxStdDialogButtonSizer; + OuterBoxSizer->Add( stdDialogButtonSizer, 0, wxGROW | wxALL, 10 ); - Button = new wxButton( this, wxID_CANCEL, _( "Cancel" ), wxDefaultPosition, - wxDefaultSize, 0 ); - StdDialogButtonSizer->AddButton( Button ); + wxButton* cancelButton = new wxButton( this, wxID_CANCEL, _( "Cancel" ), + wxDefaultPosition, wxDefaultSize, 0 ); + stdDialogButtonSizer->AddButton( cancelButton ); - StdDialogButtonSizer->Realize(); + stdDialogButtonSizer->Realize(); // Set focus to the Cancel button if the currently selected color // does not match any of the colors provided by this dialog box. // (That shouldn't ever happen in practice though.) - if( !ColorFound ) - Button->SetFocus(); -} - -void WinEDA_SelColorFrame::OnCancel( wxCommandEvent& WXUNUSED( event ) ) -{ - // Setting the return value to -1 indicates that the - // dialog box has been canceled (and thus that the - // previously selected color is to be retained). - EndModal( -1 ); + if( focusedButton ) + focusedButton->SetFocus(); + else + cancelButton->SetFocus(); } -void WinEDA_SelColorFrame::SelColor( wxCommandEvent& event ) +void CHOOSE_COLOR_DLG::selColor( wxCommandEvent& event ) { int id = event.GetId(); + m_color = EDA_COLOR_T( id - ID_COLOR_BLACK ); - EndModal( id - ID_COLOR_BLACK ); + // Close the dialog by calling the default dialog handler for a wxID_OK event + event.SetId( wxID_OK ); + event.Skip(); } diff --git a/common/widgets/widget_hotkey_list.cpp b/common/widgets/widget_hotkey_list.cpp index 001fbb3aa8..43d508f67f 100644 --- a/common/widgets/widget_hotkey_list.cpp +++ b/common/widgets/widget_hotkey_list.cpp @@ -437,9 +437,9 @@ void WIDGET_HOTKEY_LIST::OnSize( wxSizeEvent& aEvent ) #ifdef wxHAS_GENERIC_DATAVIEWCTRL { - wxWindow* view = GetView(); - view->Refresh(); - view->Update(); + wxWindow* win_view = GetView(); + win_view->Refresh(); + win_view->Update(); } #endif diff --git a/eeschema/files-io.cpp b/eeschema/files-io.cpp index 81b6d692b0..255b55ee19 100644 --- a/eeschema/files-io.cpp +++ b/eeschema/files-io.cpp @@ -429,9 +429,9 @@ bool SCH_EDIT_FRAME::AppendOneEEProject() sheet->SetName( tmp ); sheet->SetFileName( wxString::Format( wxT( "file%8.8lX.sch" ), (long) newtimestamp ) ); - SCH_SCREEN* screen = new SCH_SCREEN( &Kiway() ); - screen->SetMaxUndoItems( m_UndoRedoCountMax ); - sheet->SetScreen( screen ); + SCH_SCREEN* new_screen = new SCH_SCREEN( &Kiway() ); + new_screen->SetMaxUndoItems( m_UndoRedoCountMax ); + sheet->SetScreen( new_screen ); sheet->GetScreen()->SetFileName( sheet->GetFileName() ); } // clear annotation and init new time stamp for the new components @@ -447,7 +447,7 @@ bool SCH_EDIT_FRAME::AppendOneEEProject() bs = nextbs; } } - + OnModify(); // redraw base screen (ROOT) if necessary diff --git a/eeschema/widgets/widget_eeschema_color_config.cpp b/eeschema/widgets/widget_eeschema_color_config.cpp index f23c2e9dcf..d3d0c80061 100644 --- a/eeschema/widgets/widget_eeschema_color_config.cpp +++ b/eeschema/widgets/widget_eeschema_color_config.cpp @@ -33,6 +33,9 @@ #include "widget_eeschema_color_config.h" +// See selcolor.cpp: +extern EDA_COLOR_T DisplayColorFrame( wxWindow* aParent, EDA_COLOR_T aOldColor ); + // Specify the width and height of every (color-displaying / bitmap) button const int BUTT_SIZE_X = 16; const int BUTT_SIZE_Y = 16; @@ -215,7 +218,7 @@ void WIDGET_EESCHEMA_COLOR_CONFIG::SetColor( wxCommandEvent& event ) wxCHECK_RET( colorButton != NULL, wxT( "Client data not set for color button." ) ); - EDA_COLOR_T color = DisplayColorFrame( this, colorButton->m_Layer ); + EDA_COLOR_T color = DisplayColorFrame( this, currentColors[colorButton->m_Layer] ); if( color < 0 || currentColors[ colorButton->m_Layer ] == color ) return; diff --git a/include/common.h b/include/common.h index 169c0c267e..b449a5ebaa 100644 --- a/include/common.h +++ b/include/common.h @@ -295,7 +295,6 @@ int ProcessExecute( const wxString& aCommandLine, int aFlags = wxEXEC_ASYNC, */ time_t GetNewTimeStamp(); -EDA_COLOR_T DisplayColorFrame( wxWindow* parent, int OldColor ); int GetCommandOptions( const int argc, const char** argv, const char* stringtst, const char** optarg, int* optind ); diff --git a/pcbnew/layer_widget.cpp b/pcbnew/layer_widget.cpp index 275da91ddf..b3a1cd846a 100644 --- a/pcbnew/layer_widget.cpp +++ b/pcbnew/layer_widget.cpp @@ -44,6 +44,9 @@ #define BUTT_SIZE_Y 18 #define BUTT_VOID 4 +// See selcolor.cpp: +extern EDA_COLOR_T DisplayColorFrame( wxWindow* aParent, EDA_COLOR_T aOldColor ); + const wxEventType LAYER_WIDGET::EVT_LAYER_COLOR_CHANGE = wxNewEventType(); /* XPM