diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index f053ee5b6b..30dca5cc76 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -182,6 +182,7 @@ set( COMMON_WIDGET_SRCS widgets/two_column_tree_list.cpp widgets/unit_binder.cpp widgets/widget_hotkey_list.cpp + widgets/stepped_slider.cpp ) set( COMMON_PAGE_LAYOUT_SRCS diff --git a/common/bitmap.cpp b/common/bitmap.cpp index d0af48c7c7..2fcde4b7d4 100644 --- a/common/bitmap.cpp +++ b/common/bitmap.cpp @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2011 SoftPLC Corporation, Dick Hollenbeck - * Copyright (C) 2017 KiCad Developers, see change_log.txt for contributors. + * Copyright (C) 2017-2018 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -28,10 +28,52 @@ #include #include #include +#include + +#include +#include +#include #include #include #include +#include + + +struct SCALED_BITMAP_ID { + BITMAP_DEF bitmap; + int scale; + + bool operator==( SCALED_BITMAP_ID const& other ) const noexcept + { + return bitmap == other.bitmap && scale == other.scale; + } +}; + + +namespace std { + template<> struct hash + { + typedef SCALED_BITMAP_ID argument_type; + typedef std::size_t result_type; + + result_type operator()( argument_type const& id ) const noexcept + { + static const bool sz64 = sizeof( uintptr_t ) == 8; + static const size_t mask = sz64 ? 0xF000000000000000uLL : 0xF0000000uL; + static const size_t offset = sz64 ? 28 : 60; + + // The hash only needs to be fast and simple, not necessarily accurate - a collision + // only makes things slower, not broken. BITMAP_DEF is a pointer, so the most + // significant several bits are generally going to be the same for all. Just convert + // it to an integer and stuff the scale factor into those bits. + return + ( (uintptr_t)( id.bitmap ) & ~mask ) | + ( ( (uintptr_t)( id.scale ) & 0xF ) << offset ); + } + }; +} + wxBitmap KiBitmap( BITMAP_DEF aBitmap ) { @@ -43,6 +85,82 @@ wxBitmap KiBitmap( BITMAP_DEF aBitmap ) } +int KiIconScale( wxWindow* aWindow ) +{ + const int vert_size = aWindow->ConvertDialogToPixels( wxSize( 0, 8 ) ).y; + + // Autoscale won't exceed unity until the system has quite high resolution, + // because we don't want the icons to look obviously scaled on a system + // where it's easy to see it. + + if( vert_size > 34 ) return 8; + else if( vert_size > 29 ) return 7; + else if( vert_size > 24 ) return 6; + else return 4; +} + + +static int get_scale_factor( EDA_BASE_FRAME* aWindow ) +{ + const int requested_scale = aWindow->GetIconScale(); + + if( requested_scale > 0 ) + return requested_scale; + else + return KiIconScale( aWindow ); +} + + +wxBitmap KiScaledBitmap( BITMAP_DEF aBitmap, EDA_BASE_FRAME* aWindow ) +{ + // Bitmap conversions are cached because they can be slow. + static std::unordered_map bitmap_cache; + static std::mutex bitmap_cache_mutex; + const int scale = get_scale_factor( aWindow ); + + SCALED_BITMAP_ID id = { aBitmap, scale }; + + std::lock_guard guard( bitmap_cache_mutex ); + auto it = bitmap_cache.find( id ); + + if( it != bitmap_cache.end() ) + { + return it->second; + } + else + { + wxMemoryInputStream is( aBitmap->png, aBitmap->byteCount ); + wxImage image( is, wxBITMAP_TYPE_PNG ); + + // Bilinear seems to genuinely look better for these line-drawing icons + // than bicubic, despite claims in the wx documentation that bicubic is + // "highest quality". I don't recommend changing this. Bicubic looks + // blurry and makes me want an eye exam. + image.Rescale( scale * image.GetWidth() / 4, scale * image.GetHeight() / 4, + wxIMAGE_QUALITY_BILINEAR ); + return bitmap_cache.emplace( id, wxBitmap( image ) ).first->second; + } +} + + +void KiScaledSeparator( wxAuiToolBar* aToolbar, EDA_BASE_FRAME* aWindow ) +{ + const int scale = get_scale_factor( aWindow ); + + if( scale > 4 ) + { + aToolbar->AddSpacer( 16 * ( scale - 4 ) / 4 ); + } + + aToolbar->AddSeparator(); + + if( scale > 4 ) + { + aToolbar->AddSpacer( 16 * ( scale - 4 ) / 4 ); + } +} + + wxBitmap* KiBitmapNew( BITMAP_DEF aBitmap ) { wxMemoryInputStream is( aBitmap->png, aBitmap->byteCount ); diff --git a/common/widgets/stepped_slider.cpp b/common/widgets/stepped_slider.cpp new file mode 100644 index 0000000000..c3cc97cdad --- /dev/null +++ b/common/widgets/stepped_slider.cpp @@ -0,0 +1,77 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2018 KiCad Developers, see AUTHORS.txt for contributors. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include +#include + + +BEGIN_EVENT_TABLE( STEPPED_SLIDER, wxSlider ) + EVT_SCROLL( STEPPED_SLIDER::OnScroll ) +END_EVENT_TABLE() + + +STEPPED_SLIDER::STEPPED_SLIDER( + wxWindow* aParent, + wxWindowID aId, + int aValue, + int aMinValue, + int aMaxValue, + const wxPoint& aPos, + const wxSize& aSize, + long aStyle, + const wxValidator& aValidator, + const wxString& aName ) + :wxSlider( aParent, aId, aValue, aMinValue, aMaxValue, + aPos, aSize, aStyle, aValidator, aName ), + m_step( 1 ) +{} + + +STEPPED_SLIDER::~STEPPED_SLIDER() +{} + + +void STEPPED_SLIDER::SetStep( int aSize ) +{ + wxASSERT( aSize > 0 ); + m_step = ( aSize > 0 ) ? aSize : 1; + +#ifdef __WXMSW__ + ClearTicks(); + + if( aSize > 1 ) + SetTickFreq( aSize ); +#endif // __WXMSW__ +} + + +int STEPPED_SLIDER::GetStep() const +{ + return m_step; +} + + +void STEPPED_SLIDER::OnScroll( wxScrollEvent& aEvent ) +{ + const int value = GetValue(); + const int rounded = value - value % m_step; + + SetValue( rounded ); + aEvent.Skip(); +} diff --git a/cvpcb/tool_cvpcb.cpp b/cvpcb/tool_cvpcb.cpp index 321b3cef59..f5ee1360de 100644 --- a/cvpcb/tool_cvpcb.cpp +++ b/cvpcb/tool_cvpcb.cpp @@ -3,24 +3,20 @@ * * Copyright (C) 2016 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2011 Wayne Stambaugh - * Copyright (C) 2007-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2007-2018 KiCad Developers, see AUTHORS.txt for contributors. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ /** @@ -41,66 +37,66 @@ void CVPCB_MAINFRAME::ReCreateHToolbar() { - if( m_mainToolBar != NULL ) - return; + if( m_mainToolBar ) + m_mainToolBar->Clear(); + else + m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); - m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); + m_mainToolBar->AddTool( wxID_SAVE, wxEmptyString, KiScaledBitmap( save_xpm, this ), SAVE_HLP_MSG ); - m_mainToolBar->AddTool( wxID_SAVE, wxEmptyString, KiBitmap( save_xpm ), SAVE_HLP_MSG ); - - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_mainToolBar->AddTool( ID_CVPCB_LIB_TABLE_EDIT, wxEmptyString, - KiBitmap( config_xpm ), + KiScaledBitmap( config_xpm, this ), _( "Edit footprint library table" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_mainToolBar->AddTool( ID_CVPCB_CREATE_SCREENCMP, wxEmptyString, - KiBitmap( show_footprint_xpm ), + KiScaledBitmap( show_footprint_xpm, this ), _( "View selected footprint" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_mainToolBar->AddTool( ID_CVPCB_GOTO_PREVIOUSNA, wxEmptyString, - KiBitmap( left_xpm ), + KiScaledBitmap( left_xpm, this ), _( "Select previous unlinked symbol" ) ); m_mainToolBar->AddTool( ID_CVPCB_GOTO_FIRSTNA, wxEmptyString, - KiBitmap( right_xpm ), + KiScaledBitmap( right_xpm, this ), _( "Select next unlinked symbol" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_mainToolBar->AddTool( ID_CVPCB_AUTO_ASSOCIE, wxEmptyString, - KiBitmap( auto_associe_xpm ), + KiScaledBitmap( auto_associe_xpm, this ), _( "Perform automatic footprint association" ) ); m_mainToolBar->AddTool( ID_CVPCB_DEL_ASSOCIATIONS, wxEmptyString, - KiBitmap( delete_association_xpm ), + KiScaledBitmap( delete_association_xpm, this ), _( "Delete all footprint associations" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_mainToolBar->AddTool( ID_CVPCB_FOOTPRINT_DISPLAY_FILTERED_LIST, - KiBitmap( module_filtered_list_xpm ), + KiScaledBitmap( module_filtered_list_xpm, this ), wxNullBitmap, true, NULL, _( "Filter footprint list by schematic symbol keywords" ), wxEmptyString ); m_mainToolBar->AddTool( ID_CVPCB_FOOTPRINT_DISPLAY_PIN_FILTERED_LIST, - KiBitmap( module_pin_filtered_list_xpm ), + KiScaledBitmap( module_pin_filtered_list_xpm, this ), wxNullBitmap, true, NULL, _( "Filter footprint list by pin count" ), wxEmptyString ); m_mainToolBar->AddTool( ID_CVPCB_FOOTPRINT_DISPLAY_BY_LIBRARY_LIST, - KiBitmap( module_library_list_xpm ), + KiScaledBitmap( module_library_list_xpm, this ), wxNullBitmap, true, NULL, _( "Filter footprint list by library" ), wxEmptyString ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_mainToolBar->AddTool( ID_CVPCB_FOOTPRINT_DISPLAY_BY_NAME, - KiBitmap( module_name_filtered_list_xpm ), + KiScaledBitmap( module_name_filtered_list_xpm, this ), wxNullBitmap, true, NULL, _( "Filter footprint list using a partial name or a pattern" ), wxEmptyString ); diff --git a/eeschema/dialogs/dialog_eeschema_options.cpp b/eeschema/dialogs/dialog_eeschema_options.cpp index 4a8c3cb751..6b57e68ffa 100644 --- a/eeschema/dialogs/dialog_eeschema_options.cpp +++ b/eeschema/dialogs/dialog_eeschema_options.cpp @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2009 Wayne Stambaugh - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -34,13 +34,15 @@ #include "../widgets/widget_eeschema_color_config.h" #include #include +#include #include int DIALOG_EESCHEMA_OPTIONS::m_lastPageSelected = 0; DIALOG_EESCHEMA_OPTIONS::DIALOG_EESCHEMA_OPTIONS( SCH_EDIT_FRAME* parent ) : - DIALOG_EESCHEMA_OPTIONS_BASE( parent ) + DIALOG_EESCHEMA_OPTIONS_BASE( parent ), + m_last_scale( -1 ) { m_choiceUnits->SetFocus(); m_sdbSizerOK->SetDefault(); @@ -53,6 +55,8 @@ DIALOG_EESCHEMA_OPTIONS::DIALOG_EESCHEMA_OPTIONS( SCH_EDIT_FRAME* parent ) : m_fieldGrid->AutoSizeColLabelSize( i ); } + m_scaleSlider->SetStep( 25 ); + // Embed the hotkeys list HOTKEY_SECTIONS sections = WIDGET_HOTKEY_LIST::GenSections( g_Eeschema_Hokeys_Descr ); m_hotkeyListCtrl = new WIDGET_HOTKEY_LIST( m_panelHotkeys, sections ); @@ -128,6 +132,7 @@ void DIALOG_EESCHEMA_OPTIONS::SetRefIdSeparator( wxChar aSep, wxChar aFirstId) m_choiceSeparatorRefId->SetSelection( sel ); } + void DIALOG_EESCHEMA_OPTIONS::GetRefIdSeparator( int& aSep, int& aFirstId) { // m_choiceSeparatorRefId displays one of @@ -191,7 +196,7 @@ void DIALOG_EESCHEMA_OPTIONS::OnAddButtonClick( wxCommandEvent& event ) } } - TransferDataFromWindow(); + TransferDataFromFieldGrid(); TEMPLATE_FIELDNAMES::iterator pos; @@ -205,7 +210,7 @@ void DIALOG_EESCHEMA_OPTIONS::OnAddButtonClick( wxCommandEvent& event ) newFieldname.m_Value = wxT( "Value" ); newFieldname.m_Visible = false; templateFields.insert( pos, newFieldname ); - TransferDataToWindow(); + TransferDataToFieldGrid(); event.Skip(); } @@ -227,7 +232,7 @@ void DIALOG_EESCHEMA_OPTIONS::OnDeleteButtonClick( wxCommandEvent& event ) } } - TransferDataFromWindow(); + TransferDataFromFieldGrid(); int n_rows = m_fieldGrid->GetNumberRows(); @@ -242,7 +247,28 @@ void DIALOG_EESCHEMA_OPTIONS::OnDeleteButtonClick( wxCommandEvent& event ) } } - TransferDataToWindow(); + TransferDataToFieldGrid(); +} + + +void DIALOG_EESCHEMA_OPTIONS::OnScaleSlider( wxScrollEvent& aEvent ) +{ + m_scaleAuto->SetValue( false ); +} + + +void DIALOG_EESCHEMA_OPTIONS::OnScaleAuto( wxCommandEvent& aEvent ) +{ + if( m_scaleAuto->GetValue() ) + { + m_last_scale = m_scaleSlider->GetValue(); + m_scaleSlider->SetValue( 25 * KiIconScale( GetParent() ) ); + } + else + { + if( m_last_scale >= 0 ) + m_scaleSlider->SetValue( m_last_scale ); + } } @@ -254,6 +280,66 @@ bool DIALOG_EESCHEMA_OPTIONS::TransferDataToWindow() if( !m_hotkeyListCtrl->TransferDataToControl() ) return false; + if( !TransferDataToFieldGrid() ) + return false; + + int scale_fourths = GetParent()->GetIconScale(); + + if( scale_fourths <= 0 ) + { + m_scaleAuto->SetValue( true ); + m_scaleSlider->SetValue( 25 * KiIconScale( GetParent() ) ); + } + else + { + m_scaleAuto->SetValue( false ); + m_scaleSlider->SetValue( scale_fourths * 25 ); + } + + m_stIconScale->SetLabel( + _( "Icon scale:" ) + + wxString::Format( " (diag: %d)", + GetParent()->ConvertDialogToPixels( wxSize( 0, 8 ) ).y ) ); + + Layout(); + return true; +} + + +bool DIALOG_EESCHEMA_OPTIONS::TransferDataFromWindow() +{ + m_lastPageSelected = m_notebook->GetSelection(); + + if( !wxDialog::TransferDataFromWindow() ) + return false; + + if( !m_hotkeyListCtrl->TransferDataFromControl() ) + return false; + + GetParent()->WriteHotkeyConfig( g_Eeschema_Hokeys_Descr ); + + if( !m_colorConfigCtrl->TransferDataFromControl() ) + return false; + + if( !TransferDataFromFieldGrid() ) + return false; + + const int scale_fourths = m_scaleAuto->GetValue() ? -1 : m_scaleSlider->GetValue() / 25; + + if( GetParent()->GetIconScale() != scale_fourths ) + GetParent()->SetIconScale( scale_fourths ); + + // Refresh hotkeys + GetParent()->ReCreateMenuBar(); + GetParent()->Refresh(); + + + return true; +} + + +bool DIALOG_EESCHEMA_OPTIONS::TransferDataToFieldGrid() +{ m_fieldGrid->Freeze(); if( m_fieldGrid->GetNumberRows() ) @@ -281,30 +367,12 @@ bool DIALOG_EESCHEMA_OPTIONS::TransferDataToWindow() m_fieldGrid->AutoSizeRows(); m_fieldGrid->Thaw(); - Layout(); return true; } -bool DIALOG_EESCHEMA_OPTIONS::TransferDataFromWindow() +bool DIALOG_EESCHEMA_OPTIONS::TransferDataFromFieldGrid() { - m_lastPageSelected = m_notebook->GetSelection(); - - if( !wxDialog::TransferDataFromWindow() ) - return false; - - if( !m_hotkeyListCtrl->TransferDataFromControl() ) - return false; - - GetParent()->WriteHotkeyConfig( g_Eeschema_Hokeys_Descr ); - - if( !m_colorConfigCtrl->TransferDataFromControl() ) - return false; - - // Refresh hotkeys - GetParent()->ReCreateMenuBar(); - GetParent()->Refresh(); - for( int row = 0; row < m_fieldGrid->GetNumberRows(); ++row ) { templateFields[row].m_Name = m_fieldGrid->GetCellValue( row, 0 ); @@ -315,14 +383,13 @@ bool DIALOG_EESCHEMA_OPTIONS::TransferDataFromWindow() return true; } - void DIALOG_EESCHEMA_OPTIONS::SetTemplateFields( const TEMPLATE_FIELDNAMES& aFields ) { // Set the template fields object templateFields = aFields; // Build and refresh the view - TransferDataToWindow(); + TransferDataToFieldGrid(); } diff --git a/eeschema/dialogs/dialog_eeschema_options.h b/eeschema/dialogs/dialog_eeschema_options.h index 6206dffcc4..65978ccb0c 100644 --- a/eeschema/dialogs/dialog_eeschema_options.h +++ b/eeschema/dialogs/dialog_eeschema_options.h @@ -43,6 +43,9 @@ class DIALOG_EESCHEMA_OPTIONS : public DIALOG_EESCHEMA_OPTIONS_BASE private: static int m_lastPageSelected; ///< the active notebook page when closing this dialog ///< strored to keep selection during a session + + int m_last_scale; ///< saved icon scale when Auto selected + protected: WIDGET_HOTKEY_LIST* m_hotkeyListCtrl; WIDGET_EESCHEMA_COLOR_CONFIG* m_colorConfigCtrl; @@ -72,6 +75,9 @@ protected: */ void OnDeleteButtonClick( wxCommandEvent& event ) override; + void OnScaleSlider( wxScrollEvent& aEvent ) override; + void OnScaleAuto( wxCommandEvent& aEvent ) override; + /** * Function TransferDataToWindow * Transfer data into the GUI. @@ -84,6 +90,9 @@ protected: */ bool TransferDataFromWindow() override; + bool TransferDataToFieldGrid(); + bool TransferDataFromFieldGrid(); + public: /** * Public constructor diff --git a/eeschema/dialogs/dialog_eeschema_options_base.cpp b/eeschema/dialogs/dialog_eeschema_options_base.cpp index ecc5769946..e85ba241a6 100644 --- a/eeschema/dialogs/dialog_eeschema_options_base.cpp +++ b/eeschema/dialogs/dialog_eeschema_options_base.cpp @@ -11,6 +11,8 @@ BEGIN_EVENT_TABLE( DIALOG_EESCHEMA_OPTIONS_BASE, DIALOG_SHIM ) EVT_SIZE( DIALOG_EESCHEMA_OPTIONS_BASE::_wxFB_OnSize ) + EVT_SCROLL( DIALOG_EESCHEMA_OPTIONS_BASE::_wxFB_OnScaleSlider ) + EVT_CHECKBOX( wxID_ANY, DIALOG_EESCHEMA_OPTIONS_BASE::_wxFB_OnScaleAuto ) EVT_CHOICE( wxID_ANY, DIALOG_EESCHEMA_OPTIONS_BASE::_wxFB_OnChooseUnits ) EVT_BUTTON( wxID_ADD_FIELD, DIALOG_EESCHEMA_OPTIONS_BASE::_wxFB_OnAddButtonClick ) EVT_BUTTON( wxID_DELETE_FIELD, DIALOG_EESCHEMA_OPTIONS_BASE::_wxFB_OnDeleteButtonClick ) @@ -85,6 +87,26 @@ DIALOG_EESCHEMA_OPTIONS_BASE::DIALOG_EESCHEMA_OPTIONS_BASE( wxWindow* parent, wx fgSizer32->Add( m_choiceSeparatorRefId, 0, wxALL|wxEXPAND, 3 ); + fgSizer32->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_stIconScale = new wxStaticText( m_panel5, wxID_ANY, _("Icon scale:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_stIconScale->Wrap( -1 ); + fgSizer32->Add( m_stIconScale, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 3 ); + + m_scaleSlider = new STEPPED_SLIDER( m_panel5, wxID_ANY, 50, 50, 275, wxDefaultPosition, wxDefaultSize, wxSL_AUTOTICKS|wxSL_HORIZONTAL|wxSL_LABELS ); + fgSizer32->Add( m_scaleSlider, 0, wxALL|wxEXPAND, 3 ); + + m_staticText211 = new wxStaticText( m_panel5, wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText211->Wrap( -1 ); + fgSizer32->Add( m_staticText211, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 3 ); + + + fgSizer32->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_scaleAuto = new wxCheckBox( m_panel5, wxID_ANY, _("Auto"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer32->Add( m_scaleAuto, 0, wxALL|wxEXPAND, 3 ); + + fgSizer32->Add( 0, 0, 1, wxEXPAND, 5 ); @@ -119,7 +141,7 @@ DIALOG_EESCHEMA_OPTIONS_BASE::DIALOG_EESCHEMA_OPTIONS_BASE( wxWindow* parent, wx m_panel5->SetSizer( bSizer82 ); m_panel5->Layout(); bSizer82->Fit( m_panel5 ); - m_notebook->AddPage( m_panel5, _("Display"), false ); + m_notebook->AddPage( m_panel5, _("Display"), true ); m_panel3 = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); wxBoxSizer* bSizer8; bSizer8 = new wxBoxSizer( wxVERTICAL ); @@ -358,7 +380,7 @@ DIALOG_EESCHEMA_OPTIONS_BASE::DIALOG_EESCHEMA_OPTIONS_BASE( wxWindow* parent, wx m_panel2->SetSizer( bSizer6 ); m_panel2->Layout(); bSizer6->Fit( m_panel2 ); - m_notebook->AddPage( m_panel2, _("Default Fields"), true ); + m_notebook->AddPage( m_panel2, _("Default Fields"), false ); bOptionsSizer->Add( m_notebook, 1, wxALL|wxEXPAND, 5 ); diff --git a/eeschema/dialogs/dialog_eeschema_options_base.fbp b/eeschema/dialogs/dialog_eeschema_options_base.fbp index ecbbd827eb..a9a671d281 100644 --- a/eeschema/dialogs/dialog_eeschema_options_base.fbp +++ b/eeschema/dialogs/dialog_eeschema_options_base.fbp @@ -187,7 +187,7 @@ Display - 0 + 1 1 1 @@ -1226,6 +1226,388 @@ 0 + + 3 + wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Icon scale: + + 0 + + + 0 + + 1 + m_stIconScale + 1 + + + protected + 1 + + Resizable + 1 + + + ; forward_declare + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + 275 + + 0 + + 50 + + 0 + + 1 + m_scaleSlider + 1 + + + protected + 1 + + Resizable + 1 + + wxSL_AUTOTICKS|wxSL_HORIZONTAL|wxSL_LABELS + STEPPED_SLIDER; widgets/stepped_slider.h; Not forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + 50 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OnScaleSlider + + + + + + + + + + + + + + + + 3 + wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + % + + 0 + + + 0 + + 1 + m_staticText211 + 1 + + + protected + 1 + + Resizable + 1 + + + ; forward_declare + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 3 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Auto + + 0 + + + 0 + + 1 + m_scaleAuto + 1 + + + protected + 1 + + Resizable + 1 + + + ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnScaleAuto + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + @@ -4406,7 +4788,7 @@ Default Fields - 1 + 0 1 1 diff --git a/eeschema/dialogs/dialog_eeschema_options_base.h b/eeschema/dialogs/dialog_eeschema_options_base.h index 04e8691a14..73f1a39176 100644 --- a/eeschema/dialogs/dialog_eeschema_options_base.h +++ b/eeschema/dialogs/dialog_eeschema_options_base.h @@ -11,6 +11,7 @@ #include #include #include +#include "widgets/stepped_slider.h" #include "dialog_shim.h" #include #include @@ -20,9 +21,10 @@ #include #include #include +#include +#include #include #include -#include #include #include #include @@ -44,6 +46,8 @@ class DIALOG_EESCHEMA_OPTIONS_BASE : public DIALOG_SHIM // Private event handlers void _wxFB_OnSize( wxSizeEvent& event ){ OnSize( event ); } + void _wxFB_OnScaleSlider( wxScrollEvent& event ){ OnScaleSlider( event ); } + void _wxFB_OnScaleAuto( wxCommandEvent& event ){ OnScaleAuto( event ); } void _wxFB_OnChooseUnits( wxCommandEvent& event ){ OnChooseUnits( event ); } void _wxFB_OnAddButtonClick( wxCommandEvent& event ){ OnAddButtonClick( event ); } void _wxFB_OnDeleteButtonClick( wxCommandEvent& event ){ OnDeleteButtonClick( event ); } @@ -71,6 +75,10 @@ class DIALOG_EESCHEMA_OPTIONS_BASE : public DIALOG_SHIM wxStaticText* m_staticLineWidthUnits; wxStaticText* m_staticText26; wxChoice* m_choiceSeparatorRefId; + wxStaticText* m_stIconScale; + STEPPED_SLIDER* m_scaleSlider; + wxStaticText* m_staticText211; + wxCheckBox* m_scaleAuto; wxStaticLine* m_staticline3; wxCheckBox* m_checkShowGrid; wxCheckBox* m_checkHVOrientation; @@ -118,6 +126,8 @@ class DIALOG_EESCHEMA_OPTIONS_BASE : public DIALOG_SHIM // Virtual event handlers, overide them in your derived class virtual void OnSize( wxSizeEvent& event ) { event.Skip(); } + virtual void OnScaleSlider( wxScrollEvent& event ) { event.Skip(); } + virtual void OnScaleAuto( wxCommandEvent& event ) { event.Skip(); } virtual void OnChooseUnits( wxCommandEvent& event ) { event.Skip(); } virtual void OnAddButtonClick( wxCommandEvent& event ) { event.Skip(); } virtual void OnDeleteButtonClick( wxCommandEvent& event ) { event.Skip(); } diff --git a/eeschema/dialogs/dialog_libedit_options.cpp b/eeschema/dialogs/dialog_libedit_options.cpp index f5ba118d80..b6e31bf504 100644 --- a/eeschema/dialogs/dialog_libedit_options.cpp +++ b/eeschema/dialogs/dialog_libedit_options.cpp @@ -3,7 +3,7 @@ * * Copyright (C) 2009 Wayne Stambaugh * Copyright (C) 2014 Jean-Pierre Charras, jp.charras at wanadoo.fr - * Copyright (C) 1992-2011 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -35,7 +35,8 @@ DIALOG_LIBEDIT_OPTIONS::DIALOG_LIBEDIT_OPTIONS( LIB_EDIT_FRAME* parent ) : - DIALOG_LIBEDIT_OPTIONS_BASE( parent ) + DIALOG_LIBEDIT_OPTIONS_BASE( parent ), + m_last_scale( -1 ) { m_sdbSizerOK->SetDefault(); @@ -43,10 +44,72 @@ DIALOG_LIBEDIT_OPTIONS::DIALOG_LIBEDIT_OPTIONS( LIB_EDIT_FRAME* parent ) : SetItemRepeatStep( Parent()->GetRepeatStep() ); SetPinRepeatStep( Parent()->GetRepeatPinStep() ); + m_scaleSlider->SetStep( 25 ); + // Now all widgets have the size fixed, call FinishDialogSettings FinishDialogSettings(); } + +void DIALOG_LIBEDIT_OPTIONS::OnScaleSlider( wxScrollEvent& aEvent ) +{ + m_scaleAuto->SetValue( false ); +} + + +void DIALOG_LIBEDIT_OPTIONS::OnScaleAuto( wxCommandEvent& aEvent ) +{ + if( m_scaleAuto->GetValue() ) + { + m_last_scale = m_scaleSlider->GetValue(); + m_scaleSlider->SetValue( 25 * KiIconScale( GetParent() ) ); + } + else + { + if( m_last_scale >= 0 ) + m_scaleSlider->SetValue( m_last_scale ); + } +} + + +bool DIALOG_LIBEDIT_OPTIONS::TransferDataToWindow() +{ + if( !wxDialog::TransferDataToWindow() ) + return false; + + const auto parent = static_cast( GetParent() ); + const int scale_fourths = parent->GetIconScale(); + + if( scale_fourths <= 0 ) + { + m_scaleAuto->SetValue( true ); + m_scaleSlider->SetValue( 25 * KiIconScale( GetParent() ) ); + } + else + { + m_scaleAuto->SetValue( false ); + m_scaleSlider->SetValue( scale_fourths * 25 ); + } + + return true; +} + + +bool DIALOG_LIBEDIT_OPTIONS::TransferDataFromWindow() +{ + if( !wxDialog::TransferDataFromWindow() ) + return false; + + const int scale_fourths = m_scaleAuto->GetValue() ? -1 : m_scaleSlider->GetValue() / 25; + const auto parent = static_cast( GetParent() ); + + if( parent->GetIconScale() != scale_fourths ) + parent->SetIconScale( scale_fourths ); + + return true; +} + + void DIALOG_LIBEDIT_OPTIONS::SetGridSizes( const GRIDS& grid_sizes, int grid_id ) { wxASSERT( grid_sizes.size() > 0 ); diff --git a/eeschema/dialogs/dialog_libedit_options.h b/eeschema/dialogs/dialog_libedit_options.h index 792f44ccf4..2d02903a70 100644 --- a/eeschema/dialogs/dialog_libedit_options.h +++ b/eeschema/dialogs/dialog_libedit_options.h @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2009 Wayne Stambaugh - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -92,6 +92,14 @@ public: return m_checkShowPinElectricalType->GetValue(); } +protected: + void OnScaleSlider( wxScrollEvent& aEvent ) override; + void OnScaleAuto( wxCommandEvent& aEvent ) override; + bool TransferDataToWindow() override; + bool TransferDataFromWindow() override; + +private: + int m_last_scale; }; #endif // __DIALOG_LIBEDIT_OPTIONS__ diff --git a/eeschema/dialogs/dialog_libedit_options_base.cpp b/eeschema/dialogs/dialog_libedit_options_base.cpp index 02d59b63c1..2f4ccaf0b6 100644 --- a/eeschema/dialogs/dialog_libedit_options_base.cpp +++ b/eeschema/dialogs/dialog_libedit_options_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Nov 22 2017) +// C++ code generated with wxFormBuilder (version Jan 2 2018) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -9,6 +9,11 @@ /////////////////////////////////////////////////////////////////////////// +BEGIN_EVENT_TABLE( DIALOG_LIBEDIT_OPTIONS_BASE, DIALOG_SHIM ) + EVT_SCROLL( DIALOG_LIBEDIT_OPTIONS_BASE::_wxFB_OnScaleSlider ) + EVT_CHECKBOX( wxID_ANY, DIALOG_LIBEDIT_OPTIONS_BASE::_wxFB_OnScaleAuto ) +END_EVENT_TABLE() + DIALOG_LIBEDIT_OPTIONS_BASE::DIALOG_LIBEDIT_OPTIONS_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style ) { this->SetSizeHints( wxDefaultSize, wxDefaultSize ); @@ -136,6 +141,26 @@ DIALOG_LIBEDIT_OPTIONS_BASE::DIALOG_LIBEDIT_OPTIONS_BASE( wxWindow* parent, wxWi fgSizer->Add( 0, 0, 0, 0, 5 ); + m_staticText18 = new wxStaticText( this, wxID_ANY, _("Icon scale:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText18->Wrap( -1 ); + fgSizer->Add( m_staticText18, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_scaleSlider = new STEPPED_SLIDER( this, wxID_ANY, 50, 50, 275, wxDefaultPosition, wxDefaultSize, wxSL_AUTOTICKS|wxSL_HORIZONTAL|wxSL_LABELS ); + fgSizer->Add( m_scaleSlider, 0, wxALL|wxEXPAND, 5 ); + + m_staticText19 = new wxStaticText( this, wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText19->Wrap( -1 ); + fgSizer->Add( m_staticText19, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + + fgSizer->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_scaleAuto = new wxCheckBox( this, wxID_ANY, _("Auto"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer->Add( m_scaleAuto, 0, wxALL, 5 ); + + + fgSizer->Add( 0, 0, 1, wxEXPAND, 5 ); + bSizer3->Add( fgSizer, 0, wxEXPAND, 0 ); diff --git a/eeschema/dialogs/dialog_libedit_options_base.fbp b/eeschema/dialogs/dialog_libedit_options_base.fbp index 403cf4bbd0..bc677c71a6 100644 --- a/eeschema/dialogs/dialog_libedit_options_base.fbp +++ b/eeschema/dialogs/dialog_libedit_options_base.fbp @@ -2349,6 +2349,388 @@ 0 + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Icon scale: + + 0 + + + 0 + + 1 + m_staticText18 + 1 + + + protected + 1 + + Resizable + 1 + + + ; forward_declare + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + 275 + + 0 + + 50 + + 0 + + 1 + m_scaleSlider + 1 + + + protected + 1 + + Resizable + 1 + + wxSL_AUTOTICKS|wxSL_HORIZONTAL|wxSL_LABELS + STEPPED_SLIDER; widgets/stepped_slider.h; Not forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + 50 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OnScaleSlider + + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + % + + 0 + + + 0 + + 1 + m_staticText19 + 1 + + + protected + 1 + + Resizable + 1 + + + ; forward_declare + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Auto + + 0 + + + 0 + + 1 + m_scaleAuto + 1 + + + protected + 1 + + Resizable + 1 + + + ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnScaleAuto + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + diff --git a/eeschema/dialogs/dialog_libedit_options_base.h b/eeschema/dialogs/dialog_libedit_options_base.h index 1f8422adb0..2f18b6b29d 100644 --- a/eeschema/dialogs/dialog_libedit_options_base.h +++ b/eeschema/dialogs/dialog_libedit_options_base.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Nov 22 2017) +// C++ code generated with wxFormBuilder (version Jan 2 2018) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -11,6 +11,7 @@ #include #include #include +#include "widgets/stepped_slider.h" #include "dialog_shim.h" #include #include @@ -20,9 +21,10 @@ #include #include #include +#include +#include #include #include -#include #include #include @@ -34,7 +36,13 @@ /////////////////////////////////////////////////////////////////////////////// class DIALOG_LIBEDIT_OPTIONS_BASE : public DIALOG_SHIM { + DECLARE_EVENT_TABLE() private: + + // Private event handlers + void _wxFB_OnScaleSlider( wxScrollEvent& event ){ OnScaleSlider( event ); } + void _wxFB_OnScaleAuto( wxCommandEvent& event ){ OnScaleAuto( event ); } + protected: wxStaticText* m_staticText3; @@ -63,6 +71,10 @@ class DIALOG_LIBEDIT_OPTIONS_BASE : public DIALOG_SHIM wxStaticText* m_staticText16; wxStaticText* m_staticText17; wxSpinCtrl* m_spinRepeatLabel; + wxStaticText* m_staticText18; + STEPPED_SLIDER* m_scaleSlider; + wxStaticText* m_staticText19; + wxCheckBox* m_scaleAuto; wxStaticLine* m_staticline3; wxCheckBox* m_checkShowGrid; wxCheckBox* m_checkShowPinElectricalType; @@ -70,6 +82,11 @@ class DIALOG_LIBEDIT_OPTIONS_BASE : public DIALOG_SHIM wxStdDialogButtonSizer* m_sdbSizer; wxButton* m_sdbSizerOK; wxButton* m_sdbSizerCancel; + + // Virtual event handlers, overide them in your derived class + virtual void OnScaleSlider( wxScrollEvent& event ) { event.Skip(); } + virtual void OnScaleAuto( wxCommandEvent& event ) { event.Skip(); } + public: diff --git a/eeschema/eeschema_config.cpp b/eeschema/eeschema_config.cpp index be2de0c731..6a6b6db713 100644 --- a/eeschema/eeschema_config.cpp +++ b/eeschema/eeschema_config.cpp @@ -430,6 +430,8 @@ const wxChar RescueNeverShowEntry[] = wxT( "RescueNeverShow" ); const wxChar AutoplaceFieldsEntry[] = wxT( "AutoplaceFields" ); const wxChar AutoplaceJustifyEntry[] = wxT( "AutoplaceJustify" ); const wxChar AutoplaceAlignEntry[] = wxT( "AutoplaceAlign" ); +const wxChar SchIconScaleEntry[] = wxT( "SchIconScale" ); +const wxChar LibIconScaleEntry[] = wxT( "LibIconScale" ); static const wxChar FootprintPreviewEntry[] = wxT( "FootprintPreview" ); static const wxChar DefaultBusWidthEntry[] = wxT( "DefaultBusWidth" ); static const wxChar DefaultDrawLineWidthEntry[] = wxT( "DefaultDrawLineWidth" ); diff --git a/eeschema/eeschema_config.h b/eeschema/eeschema_config.h index cfeb2f34c6..31090f353a 100644 --- a/eeschema/eeschema_config.h +++ b/eeschema/eeschema_config.h @@ -1,3 +1,22 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2009-2018 KiCad Developers, see AUTHORS.txt for contributors. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + /** * @file eeschema_config.h */ @@ -11,5 +30,7 @@ extern const wxChar RescueNeverShowEntry[]; extern const wxChar AutoplaceFieldsEntry[]; extern const wxChar AutoplaceJustifyEntry[]; extern const wxChar AutoplaceAlignEntry[]; +extern const wxChar LibIconScaleEntry[]; +extern const wxChar SchIconScaleEntry[]; #endif // EESCHEMA_CONFIG_H diff --git a/eeschema/libeditframe.cpp b/eeschema/libeditframe.cpp index afec810e84..66c7ed7c84 100644 --- a/eeschema/libeditframe.cpp +++ b/eeschema/libeditframe.cpp @@ -54,6 +54,7 @@ #include #include +#include #include #include @@ -280,7 +281,7 @@ LIB_EDIT_FRAME::LIB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) : m_aliasName = part->GetName(); } - CreateOptionToolbar(); + ReCreateOptToolbar(); DisplayLibInfos(); DisplayCmpDoc(); UpdateAliasSelectList(); @@ -1747,3 +1748,23 @@ void LIB_EDIT_FRAME::emptyScreen() Zoom_Automatique( false ); Refresh(); } + + +int LIB_EDIT_FRAME::GetIconScale() +{ + int scale = 0; + Kiface().KifaceSettings()->Read( LibIconScaleEntry, &scale, 0 ); + return scale; +} + + +void LIB_EDIT_FRAME::SetIconScale( int aScale ) +{ + Kiface().KifaceSettings()->Write( LibIconScaleEntry, aScale ); + ReCreateMenuBar(); + ReCreateVToolbar(); + ReCreateHToolbar(); + ReCreateOptToolbar(); + Layout(); + SendSizeEvent(); +} diff --git a/eeschema/libeditframe.h b/eeschema/libeditframe.h index 43d8584feb..da349e052b 100644 --- a/eeschema/libeditframe.h +++ b/eeschema/libeditframe.h @@ -3,7 +3,7 @@ * * Copyright (C) 2014 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2008 Wayne Stambaugh - * Copyright (C) 2004-2017 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2004-2018 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 2017 CERN * @author Maciej Suminski * @@ -377,7 +377,7 @@ public: void OnCloseWindow( wxCloseEvent& Event ); void ReCreateHToolbar() override; void ReCreateVToolbar() override; - void CreateOptionToolbar(); + void ReCreateOptToolbar(); void OnLeftClick( wxDC* DC, const wxPoint& MousePos ) override; bool OnRightClick( const wxPoint& MousePos, wxMenu* PopMenu ) override; double BestZoom() override; // Returns the best zoom @@ -697,6 +697,9 @@ public: */ void SyncLibraries( bool aLoad ); + int GetIconScale() override; + void SetIconScale( int aScale ) override; + private: ///> Helper screen used when no part is loaded SCH_SCREEN* m_dummyScreen; diff --git a/eeschema/schframe.cpp b/eeschema/schframe.cpp index 60419bf981..fb7bdb673c 100644 --- a/eeschema/schframe.cpp +++ b/eeschema/schframe.cpp @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2017 Jean-Pierre Charras, jp.charras at wanadoo.fr - * Copyright (C) 1992-2017 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -1498,3 +1498,23 @@ void SCH_EDIT_FRAME::OnConfigurePaths( wxCommandEvent& aEvent ) { Pgm().ConfigurePaths( this ); } + + +int SCH_EDIT_FRAME::GetIconScale() +{ + int scale = 0; + Kiface().KifaceSettings()->Read( SchIconScaleEntry, &scale, 0 ); + return scale; +} + + +void SCH_EDIT_FRAME::SetIconScale( int aScale ) +{ + Kiface().KifaceSettings()->Write( SchIconScaleEntry, aScale ); + ReCreateMenuBar(); + ReCreateHToolbar(); + ReCreateVToolbar(); + ReCreateOptToolbar(); + Layout(); + SendSizeEvent(); +} diff --git a/eeschema/schframe.h b/eeschema/schframe.h index bee8da0f11..eba05d35a7 100644 --- a/eeschema/schframe.h +++ b/eeschema/schframe.h @@ -1475,6 +1475,9 @@ public: wxString GetNetListerCommand() const { return m_netListerCommand; } + int GetIconScale() override; + void SetIconScale( int aScale ) override; + ///> Probe cursor, used by circuit simulator const static wxCursor CURSOR_PROBE; diff --git a/eeschema/tool_lib.cpp b/eeschema/tool_lib.cpp index 95deb8c4fd..98649b722a 100644 --- a/eeschema/tool_lib.cpp +++ b/eeschema/tool_lib.cpp @@ -3,7 +3,7 @@ * * Copyright (C) 2004 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com * Copyright (C) 2008 Wayne Stambaugh - * Copyright (C) 2004-2017 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2004-2018 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -47,44 +47,44 @@ void LIB_EDIT_FRAME::ReCreateVToolbar() { - if( m_drawToolBar != NULL ) - return; - - m_drawToolBar = new wxAuiToolBar( this, ID_V_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); + if( m_drawToolBar ) + m_drawToolBar->Clear(); + else + m_drawToolBar = new wxAuiToolBar( this, ID_V_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); // Set up toolbar - m_drawToolBar->AddTool( ID_NO_TOOL_SELECTED, wxEmptyString, KiBitmap( cursor_xpm ), + m_drawToolBar->AddTool( ID_NO_TOOL_SELECTED, wxEmptyString, KiScaledBitmap( cursor_xpm, this ), _( "Deselect current tool" ), wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_LIBEDIT_PIN_BUTT, wxEmptyString, KiBitmap( pin_xpm ), + m_drawToolBar->AddTool( ID_LIBEDIT_PIN_BUTT, wxEmptyString, KiScaledBitmap( pin_xpm, this ), HELP_ADD_PIN, wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_LIBEDIT_BODY_TEXT_BUTT, wxEmptyString, KiBitmap( text_xpm ), + m_drawToolBar->AddTool( ID_LIBEDIT_BODY_TEXT_BUTT, wxEmptyString, KiScaledBitmap( text_xpm, this ), HELP_ADD_BODYTEXT, wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_LIBEDIT_BODY_RECT_BUTT, wxEmptyString, KiBitmap( add_rectangle_xpm ), + m_drawToolBar->AddTool( ID_LIBEDIT_BODY_RECT_BUTT, wxEmptyString, KiScaledBitmap( add_rectangle_xpm, this ), HELP_ADD_BODYRECT, wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_LIBEDIT_BODY_CIRCLE_BUTT, wxEmptyString, KiBitmap( add_circle_xpm ), + m_drawToolBar->AddTool( ID_LIBEDIT_BODY_CIRCLE_BUTT, wxEmptyString, KiScaledBitmap( add_circle_xpm, this ), HELP_ADD_BODYCIRCLE, wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_LIBEDIT_BODY_ARC_BUTT, wxEmptyString, KiBitmap( add_arc_xpm ), + m_drawToolBar->AddTool( ID_LIBEDIT_BODY_ARC_BUTT, wxEmptyString, KiScaledBitmap( add_arc_xpm, this ), HELP_ADD_BODYARC, wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_LIBEDIT_BODY_LINE_BUTT, wxEmptyString, KiBitmap( add_polygon_xpm ), + m_drawToolBar->AddTool( ID_LIBEDIT_BODY_LINE_BUTT, wxEmptyString, KiScaledBitmap( add_polygon_xpm, this ), HELP_ADD_BODYPOLYGON, wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_LIBEDIT_ANCHOR_ITEM_BUTT, wxEmptyString, KiBitmap( anchor_xpm ), + m_drawToolBar->AddTool( ID_LIBEDIT_ANCHOR_ITEM_BUTT, wxEmptyString, KiScaledBitmap( anchor_xpm, this ), _( "Move symbol anchor" ), wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_LIBEDIT_IMPORT_BODY_BUTT, wxEmptyString, KiBitmap( import_xpm ), + m_drawToolBar->AddTool( ID_LIBEDIT_IMPORT_BODY_BUTT, wxEmptyString, KiScaledBitmap( import_xpm, this ), _( "Import existing drawings" ), wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_LIBEDIT_EXPORT_BODY_BUTT, wxEmptyString, KiBitmap( export_xpm ), + m_drawToolBar->AddTool( ID_LIBEDIT_EXPORT_BODY_BUTT, wxEmptyString, KiScaledBitmap( export_xpm, this ), _( "Export current drawing" ), wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_LIBEDIT_DELETE_ITEM_BUTT, wxEmptyString, KiBitmap( delete_xpm ), + m_drawToolBar->AddTool( ID_LIBEDIT_DELETE_ITEM_BUTT, wxEmptyString, KiScaledBitmap( delete_xpm, this ), HELP_DELETE_ITEMS, wxITEM_CHECK ); m_drawToolBar->Realize(); @@ -95,99 +95,104 @@ void LIB_EDIT_FRAME::ReCreateHToolbar() { wxString msg; - // Create the toolbar if not exists - if( m_mainToolBar != NULL ) - return; - - m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); + if( m_mainToolBar ) + m_mainToolBar->Clear(); + else + m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); // Set up toolbar m_mainToolBar->AddTool( ID_LIBEDIT_NEW_LIBRARY, wxEmptyString, - KiBitmap( new_library_xpm ), + KiScaledBitmap( new_library_xpm, this ), _( "Create a new library" ) ); m_mainToolBar->AddTool( ID_LIBEDIT_ADD_LIBRARY, wxEmptyString, - KiBitmap( add_library_xpm ), + KiScaledBitmap( add_library_xpm, this ), _( "Add an existing library" ) ); m_mainToolBar->AddTool( ID_LIBEDIT_SAVE_LIBRARY, wxEmptyString, - KiBitmap( save_library_xpm ), + KiScaledBitmap( save_library_xpm, this ), _( "Save current library" ) ); - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_LIBEDIT_NEW_PART, wxEmptyString, KiBitmap( new_component_xpm ), + KiScaledSeparator( m_mainToolBar, this ); + + m_mainToolBar->AddTool( ID_LIBEDIT_NEW_PART, wxEmptyString, KiScaledBitmap( new_component_xpm, this ), _( "Create new symbol" ) ); m_mainToolBar->AddTool( ID_LIBEDIT_SAVE_PART, wxEmptyString, - KiBitmap( save_part_xpm ), + KiScaledBitmap( save_part_xpm, this ), _( "Save current symbol" ) ); - m_mainToolBar->AddTool( ID_LIBEDIT_IMPORT_PART, wxEmptyString, KiBitmap( import_part_xpm ), + m_mainToolBar->AddTool( ID_LIBEDIT_IMPORT_PART, wxEmptyString, KiScaledBitmap( import_part_xpm, this ), _( "Import symbol" ) ); - m_mainToolBar->AddTool( ID_LIBEDIT_EXPORT_PART, wxEmptyString, KiBitmap( export_part_xpm ), + m_mainToolBar->AddTool( ID_LIBEDIT_EXPORT_PART, wxEmptyString, KiScaledBitmap( export_part_xpm, this ), _( "Export symbol" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); - m_mainToolBar->AddTool( wxID_PASTE, wxEmptyString, KiBitmap( paste_xpm ), + m_mainToolBar->AddTool( wxID_PASTE, wxEmptyString, KiScaledBitmap( paste_xpm, this ), _( "Paste" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); msg = AddHotkeyName( HELP_UNDO, g_Libedit_Hokeys_Descr, HK_UNDO, IS_COMMENT ); - m_mainToolBar->AddTool( wxID_UNDO, wxEmptyString, KiBitmap( undo_xpm ), msg ); + m_mainToolBar->AddTool( wxID_UNDO, wxEmptyString, KiScaledBitmap( undo_xpm, this ), msg ); msg = AddHotkeyName( HELP_REDO, g_Libedit_Hokeys_Descr, HK_REDO, IS_COMMENT ); - m_mainToolBar->AddTool( wxID_REDO, wxEmptyString, KiBitmap( redo_xpm ), msg ); + m_mainToolBar->AddTool( wxID_REDO, wxEmptyString, KiScaledBitmap( redo_xpm, this ), msg ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_mainToolBar->AddTool( ID_LIBEDIT_GET_FRAME_EDIT_PART, wxEmptyString, - KiBitmap( part_properties_xpm ), _( "Edit symbol properties" ) ); + KiScaledBitmap( part_properties_xpm, this ), _( "Edit symbol properties" ) ); m_mainToolBar->AddTool( ID_LIBEDIT_GET_FRAME_EDIT_FIELDS, wxEmptyString, - KiBitmap( text_xpm ), + KiScaledBitmap( text_xpm, this ), _( "Edit field properties" ) ); - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_LIBEDIT_CHECK_PART, wxEmptyString, KiBitmap( erc_xpm ), + KiScaledSeparator( m_mainToolBar, this ); + + m_mainToolBar->AddTool( ID_LIBEDIT_CHECK_PART, wxEmptyString, KiScaledBitmap( erc_xpm, this ), _( "Check duplicate and off grid pins" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); + msg = AddHotkeyName( HELP_ZOOM_REDRAW, g_Libedit_Hokeys_Descr, HK_ZOOM_REDRAW, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, KiBitmap( zoom_redraw_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, KiScaledBitmap( zoom_redraw_xpm, this ), msg ); msg = AddHotkeyName( HELP_ZOOM_IN, g_Libedit_Hokeys_Descr, HK_ZOOM_IN, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, KiBitmap( zoom_in_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, KiScaledBitmap( zoom_in_xpm, this ), msg ); msg = AddHotkeyName( HELP_ZOOM_OUT, g_Libedit_Hokeys_Descr, HK_ZOOM_OUT, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, KiBitmap( zoom_out_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, KiScaledBitmap( zoom_out_xpm, this ), msg ); msg = AddHotkeyName( HELP_ZOOM_FIT, g_Libedit_Hokeys_Descr, HK_ZOOM_AUTO, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, KiBitmap( zoom_fit_in_page_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, KiScaledBitmap( zoom_fit_in_page_xpm, this ), msg ); - m_mainToolBar->AddTool( ID_ZOOM_SELECTION, wxEmptyString, KiBitmap( zoom_area_xpm ), + m_mainToolBar->AddTool( ID_ZOOM_SELECTION, wxEmptyString, KiScaledBitmap( zoom_area_xpm, this ), _( "Zoom to selection" ), wxITEM_CHECK ); - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_DE_MORGAN_NORMAL_BUTT, wxEmptyString, KiBitmap( morgan1_xpm ), + KiScaledSeparator( m_mainToolBar, this ); + + m_mainToolBar->AddTool( ID_DE_MORGAN_NORMAL_BUTT, wxEmptyString, KiScaledBitmap( morgan1_xpm, this ), _( "Show as \"De Morgan\" normal symbol" ), wxITEM_CHECK ); - m_mainToolBar->AddTool( ID_DE_MORGAN_CONVERT_BUTT, wxEmptyString, KiBitmap( morgan2_xpm ), + m_mainToolBar->AddTool( ID_DE_MORGAN_CONVERT_BUTT, wxEmptyString, KiScaledBitmap( morgan2_xpm, this ), _( "Show as \"De Morgan\" convert symbol" ), wxITEM_CHECK ); - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_LIBEDIT_VIEW_DOC, wxEmptyString, KiBitmap( datasheet_xpm ), + KiScaledSeparator( m_mainToolBar, this ); + + m_mainToolBar->AddTool( ID_LIBEDIT_VIEW_DOC, wxEmptyString, KiScaledBitmap( datasheet_xpm, this ), _( "Show associated datasheet or document" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); + m_partSelectBox = new wxComboBox( m_mainToolBar, ID_LIBEDIT_SELECT_PART_NUMBER, wxEmptyString, wxDefaultPosition, wxSize( LISTBOX_WIDTH, -1 ), - 0, NULL, wxCB_READONLY ); + 0, nullptr, wxCB_READONLY ); m_mainToolBar->AddControl( m_partSelectBox ); m_aliasSelectBox = new wxComboBox( m_mainToolBar, @@ -195,19 +200,20 @@ void LIB_EDIT_FRAME::ReCreateHToolbar() wxEmptyString, wxDefaultPosition, wxSize( LISTBOX_WIDTH, -1 ), - 0, NULL, wxCB_READONLY ); + 0, nullptr, wxCB_READONLY ); m_mainToolBar->AddControl( m_aliasSelectBox ); m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); msg = _( "Allows disabling pin edition coupling between units.\n" "When not disabled, adding, deleting and moving pins are synchronized\n" "between units for pins at the same location.\n" "For instance, adding a pin to a unit also add a similar pin to other units at the same location.\n" "However, pins can have a different number or size because they are specific to a unit.\n" "Usually synchronization is enabled when units are interchangeable and disabled if not." ); - m_mainToolBar->AddTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, wxEmptyString, KiBitmap( pin2pin_xpm ), + m_mainToolBar->AddTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, wxEmptyString, KiScaledBitmap( pin2pin_xpm, this ), msg, wxITEM_CHECK ); - m_mainToolBar->AddTool( ID_LIBEDIT_EDIT_PIN_BY_TABLE, wxEmptyString, KiBitmap( pin_table_xpm ), + m_mainToolBar->AddTool( ID_LIBEDIT_EDIT_PIN_BY_TABLE, wxEmptyString, KiScaledBitmap( pin_table_xpm, this ), _( "Show pin table" ) ); // after adding the buttons to the toolbar, must call Realize() to reflect the changes @@ -215,37 +221,37 @@ void LIB_EDIT_FRAME::ReCreateHToolbar() } -void LIB_EDIT_FRAME::CreateOptionToolbar() +void LIB_EDIT_FRAME::ReCreateOptToolbar() { if( m_optionsToolBar ) - return; + m_optionsToolBar->Clear(); + else + m_optionsToolBar = new wxAuiToolBar( this, ID_OPT_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); - m_optionsToolBar = new wxAuiToolBar( this, ID_OPT_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); - - m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GRID, wxEmptyString, KiBitmap( grid_xpm ), + m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GRID, wxEmptyString, KiScaledBitmap( grid_xpm, this ), _( "Turn grid off" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_INCH, wxEmptyString, - KiBitmap( unit_inch_xpm ), _( "Set units to inches" ), + KiScaledBitmap( unit_inch_xpm, this ), _( "Set units to inches" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_MM, wxEmptyString, - KiBitmap( unit_mm_xpm ), + KiScaledBitmap( unit_mm_xpm, this ), _( "Set units to millimeters" ), wxITEM_CHECK ); #ifndef __APPLE__ m_optionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_CURSOR, wxEmptyString, - KiBitmap( cursor_shape_xpm ), + KiScaledBitmap( cursor_shape_xpm, this ), _( "Change cursor shape" ), wxITEM_CHECK ); #endif // !__APPLE__ m_optionsToolBar->AddTool( ID_LIBEDIT_SHOW_ELECTRICAL_TYPE, wxEmptyString, - KiBitmap( pin_show_etype_xpm ), + KiScaledBitmap( pin_show_etype_xpm, this ), _( "Show pins electrical type" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_LIBEDIT_SHOW_HIDE_SEARCH_TREE, wxEmptyString, - KiBitmap( search_tree_xpm ), + KiScaledBitmap( search_tree_xpm, this ), _( "Toggles the search tree" ), wxITEM_CHECK ); m_optionsToolBar->Realize(); diff --git a/eeschema/tool_sch.cpp b/eeschema/tool_sch.cpp index b40238424c..6e5b545df7 100644 --- a/eeschema/tool_sch.cpp +++ b/eeschema/tool_sch.cpp @@ -3,7 +3,7 @@ * * Copyright (C) 2013 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2008-2017 Wayne Stambaugh - * Copyright (C) 2004-2017 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2004-2018 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -44,133 +44,140 @@ */ void SCH_EDIT_FRAME::ReCreateHToolbar() { - if( m_mainToolBar != NULL ) - return; + if( m_mainToolBar ) + m_mainToolBar->Clear(); + else + m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); wxString msg; - m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); // Set up toolbar if( Kiface().IsSingle() ) // not when under a project mgr { // These 2 menus have meaning only outside a project, i.e. not under a project manager: - m_mainToolBar->AddTool( ID_NEW_PROJECT, wxEmptyString, KiBitmap( new_generic_xpm ), + m_mainToolBar->AddTool( ID_NEW_PROJECT, wxEmptyString, + KiScaledBitmap( new_generic_xpm, this ), _( "New schematic project" ) ); - m_mainToolBar->AddTool( ID_LOAD_PROJECT, wxEmptyString, KiBitmap( open_document_xpm ), + m_mainToolBar->AddTool( ID_LOAD_PROJECT, wxEmptyString, + KiScaledBitmap( open_document_xpm, this ), _( "Open schematic project" ) ); } - m_mainToolBar->AddTool( ID_SAVE_PROJECT, wxEmptyString, KiBitmap( save_project_xpm ), + m_mainToolBar->AddTool( ID_SAVE_PROJECT, wxEmptyString, + KiScaledBitmap( save_project_xpm, this ), _( "Save schematic project" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); - m_mainToolBar->AddTool( ID_SHEET_SET, wxEmptyString, KiBitmap( sheetset_xpm ), + m_mainToolBar->AddTool( ID_SHEET_SET, wxEmptyString, KiScaledBitmap( sheetset_xpm, this ), _( "Edit Page settings" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); - m_mainToolBar->AddTool( wxID_PRINT, wxEmptyString, KiBitmap( print_button_xpm ), + m_mainToolBar->AddTool( wxID_PRINT, wxEmptyString, KiScaledBitmap( print_button_xpm, this ), _( "Print schematic" ) ); - m_mainToolBar->AddTool( ID_GEN_PLOT_SCHEMATIC, wxEmptyString, KiBitmap( plot_xpm ), + m_mainToolBar->AddTool( ID_GEN_PLOT_SCHEMATIC, wxEmptyString, KiScaledBitmap( plot_xpm, this ), _( "Plot schematic" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); - m_mainToolBar->AddTool( wxID_PASTE, wxEmptyString, KiBitmap( paste_xpm ), + m_mainToolBar->AddTool( wxID_PASTE, wxEmptyString, KiScaledBitmap( paste_xpm, this ), _( "Paste" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); msg = AddHotkeyName( HELP_UNDO, g_Schematic_Hokeys_Descr, HK_UNDO, IS_COMMENT ); - m_mainToolBar->AddTool( wxID_UNDO, wxEmptyString, KiBitmap( undo_xpm ), msg ); + m_mainToolBar->AddTool( wxID_UNDO, wxEmptyString, KiScaledBitmap( undo_xpm, this ), msg ); msg = AddHotkeyName( HELP_REDO, g_Schematic_Hokeys_Descr, HK_REDO, IS_COMMENT ); - m_mainToolBar->AddTool( wxID_REDO, wxEmptyString, KiBitmap( redo_xpm ), msg ); + m_mainToolBar->AddTool( wxID_REDO, wxEmptyString, KiScaledBitmap( redo_xpm, this ), msg ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); msg = AddHotkeyName( HELP_FIND, g_Schematic_Hokeys_Descr, HK_FIND_ITEM, IS_COMMENT ); - m_mainToolBar->AddTool( ID_FIND_ITEMS, wxEmptyString, KiBitmap( find_xpm ), msg ); + m_mainToolBar->AddTool( ID_FIND_ITEMS, wxEmptyString, KiScaledBitmap( find_xpm, this ), msg ); - m_mainToolBar->AddTool( wxID_REPLACE, wxEmptyString, KiBitmap( find_replace_xpm ), + m_mainToolBar->AddTool( wxID_REPLACE, wxEmptyString, KiScaledBitmap( find_replace_xpm, this ), wxNullBitmap, wxITEM_NORMAL, _( "Find and replace text" ), - HELP_REPLACE, NULL ); + HELP_REPLACE, nullptr ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); msg = AddHotkeyName( HELP_ZOOM_REDRAW, g_Schematic_Hokeys_Descr, HK_ZOOM_REDRAW, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, KiBitmap( zoom_redraw_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, + KiScaledBitmap( zoom_redraw_xpm, this ), msg ); msg = AddHotkeyName( HELP_ZOOM_IN, g_Schematic_Hokeys_Descr, HK_ZOOM_IN, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, KiBitmap( zoom_in_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, KiScaledBitmap( zoom_in_xpm, this ), msg ); msg = AddHotkeyName( HELP_ZOOM_OUT, g_Schematic_Hokeys_Descr, HK_ZOOM_OUT, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, KiBitmap( zoom_out_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, KiScaledBitmap( zoom_out_xpm, this ), msg ); msg = AddHotkeyName( HELP_ZOOM_FIT, g_Schematic_Hokeys_Descr, HK_ZOOM_AUTO, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, KiBitmap( zoom_fit_in_page_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, + KiScaledBitmap( zoom_fit_in_page_xpm, this ), msg ); - m_mainToolBar->AddTool( ID_ZOOM_SELECTION, wxEmptyString, KiBitmap( zoom_area_xpm ), + m_mainToolBar->AddTool( ID_ZOOM_SELECTION, wxEmptyString, KiScaledBitmap( zoom_area_xpm, this ), _( "Zoom to selection" ), wxITEM_CHECK ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); - m_mainToolBar->AddTool( ID_HIERARCHY, wxEmptyString, KiBitmap( hierarchy_nav_xpm ), + m_mainToolBar->AddTool( ID_HIERARCHY, wxEmptyString, KiScaledBitmap( hierarchy_nav_xpm, this ), _( "Navigate schematic hierarchy" ) ); - m_mainToolBar->AddTool( ID_POPUP_SCH_LEAVE_SHEET, wxEmptyString, KiBitmap( leave_sheet_xpm ), - _( "Leave sheet" ) ); + m_mainToolBar->AddTool( ID_POPUP_SCH_LEAVE_SHEET, wxEmptyString, + KiScaledBitmap( leave_sheet_xpm, this ), _( "Leave sheet" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); - m_mainToolBar->AddTool( ID_RUN_LIBRARY, wxEmptyString, KiBitmap( libedit_xpm ), + m_mainToolBar->AddTool( ID_RUN_LIBRARY, wxEmptyString, KiScaledBitmap( libedit_xpm, this ), HELP_RUN_LIB_EDITOR ); - m_mainToolBar->AddTool( ID_TO_LIBVIEW, wxEmptyString, KiBitmap( library_browse_xpm ), - HELP_RUN_LIB_VIEWER ); + m_mainToolBar->AddTool( ID_TO_LIBVIEW, wxEmptyString, + KiScaledBitmap( library_browse_xpm, this ), HELP_RUN_LIB_VIEWER ); // modedit is with libedit in a "library section" because the user must have footprints before // they can be assigned. - m_mainToolBar->AddTool( ID_RUN_PCB_MODULE_EDITOR, wxEmptyString, KiBitmap( module_editor_xpm ), + m_mainToolBar->AddTool( ID_RUN_PCB_MODULE_EDITOR, wxEmptyString, + KiScaledBitmap( module_editor_xpm, this ), _( "Footprint Editor - Create/edit footprints" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); - m_mainToolBar->AddTool( ID_GET_ANNOTATE, wxEmptyString, KiBitmap( annotate_xpm ), + m_mainToolBar->AddTool( ID_GET_ANNOTATE, wxEmptyString, KiScaledBitmap( annotate_xpm, this ), HELP_ANNOTATE ); - m_mainToolBar->AddTool( ID_GET_ERC, wxEmptyString, KiBitmap( erc_xpm ), + m_mainToolBar->AddTool( ID_GET_ERC, wxEmptyString, KiScaledBitmap( erc_xpm, this ), _( "Perform electrical rules check" ) ); - m_mainToolBar->AddTool( ID_RUN_CVPCB, wxEmptyString, KiBitmap( cvpcb_xpm ), + m_mainToolBar->AddTool( ID_RUN_CVPCB, wxEmptyString, KiScaledBitmap( cvpcb_xpm, this ), _( "Run CvPcb to associate footprints to symbols" ) ); - m_mainToolBar->AddTool( ID_GET_NETLIST, wxEmptyString, KiBitmap( netlist_xpm ), + m_mainToolBar->AddTool( ID_GET_NETLIST, wxEmptyString, KiScaledBitmap( netlist_xpm, this ), _( "Generate netlist" ) ); - m_mainToolBar->AddTool( ID_OPEN_CMP_TABLE, wxEmptyString, KiBitmap( spreadsheet_xpm ), - _( "Edit symbol fields" ) ); + m_mainToolBar->AddTool( ID_OPEN_CMP_TABLE, wxEmptyString, + KiScaledBitmap( spreadsheet_xpm, this ), _( "Edit symbol fields" ) ); - m_mainToolBar->AddTool( ID_GET_TOOLS, wxEmptyString, KiBitmap( bom_xpm ), + m_mainToolBar->AddTool( ID_GET_TOOLS, wxEmptyString, KiScaledBitmap( bom_xpm, this ), HELP_GENERATE_BOM ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); - m_mainToolBar->AddTool( ID_RUN_PCB, wxEmptyString, KiBitmap( pcbnew_xpm ), + m_mainToolBar->AddTool( ID_RUN_PCB, wxEmptyString, KiScaledBitmap( pcbnew_xpm, this ), _( "Run Pcbnew to layout printed circuit board" ) ); m_mainToolBar->AddTool( ID_BACKANNO_ITEMS, wxEmptyString, - KiBitmap( import_footprint_names_xpm ), + KiScaledBitmap( import_footprint_names_xpm, this ), HELP_IMPORT_FOOTPRINTS ); // after adding the tools to the toolbar, must call Realize() to reflect the changes @@ -183,76 +190,83 @@ void SCH_EDIT_FRAME::ReCreateHToolbar() void SCH_EDIT_FRAME::ReCreateVToolbar() { if( m_drawToolBar ) - return; - - m_drawToolBar = new wxAuiToolBar( this, ID_V_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); + m_drawToolBar->Clear(); + else + m_drawToolBar = new wxAuiToolBar( this, ID_V_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); // Set up toolbar - m_drawToolBar->AddTool( ID_NO_TOOL_SELECTED, wxEmptyString, KiBitmap( cursor_xpm ), + m_drawToolBar->AddTool( ID_NO_TOOL_SELECTED, wxEmptyString, KiScaledBitmap( cursor_xpm, this ), wxEmptyString, wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_HIGHLIGHT, wxEmptyString, KiBitmap( net_highlight_schematic_xpm ), + m_drawToolBar->AddTool( ID_HIGHLIGHT, wxEmptyString, + KiScaledBitmap( net_highlight_schematic_xpm, this ), _( "Highlight net" ), wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_SCH_PLACE_COMPONENT, wxEmptyString, KiBitmap( add_component_xpm ), - HELP_PLACE_COMPONENTS, wxITEM_CHECK ); + m_drawToolBar->AddTool( ID_SCH_PLACE_COMPONENT, wxEmptyString, + KiScaledBitmap( add_component_xpm, this ), HELP_PLACE_COMPONENTS, + wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_PLACE_POWER_BUTT, wxEmptyString, KiBitmap( add_power_xpm ), + m_drawToolBar->AddTool( ID_PLACE_POWER_BUTT, wxEmptyString, + KiScaledBitmap( add_power_xpm, this ), HELP_PLACE_POWERPORT, wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_WIRE_BUTT, wxEmptyString, KiBitmap( add_line_xpm ), + m_drawToolBar->AddTool( ID_WIRE_BUTT, wxEmptyString, KiScaledBitmap( add_line_xpm, this ), HELP_PLACE_WIRE, wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_BUS_BUTT, wxEmptyString, KiBitmap( add_bus_xpm ), + m_drawToolBar->AddTool( ID_BUS_BUTT, wxEmptyString, KiScaledBitmap( add_bus_xpm, this ), HELP_PLACE_BUS, wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_WIRETOBUS_ENTRY_BUTT, wxEmptyString, KiBitmap( add_line2bus_xpm ), + m_drawToolBar->AddTool( ID_WIRETOBUS_ENTRY_BUTT, wxEmptyString, + KiScaledBitmap( add_line2bus_xpm, this ), HELP_PLACE_WIRE2BUS_ENTRY, wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_BUSTOBUS_ENTRY_BUTT, wxEmptyString, KiBitmap( add_bus2bus_xpm ), + m_drawToolBar->AddTool( ID_BUSTOBUS_ENTRY_BUTT, wxEmptyString, + KiScaledBitmap( add_bus2bus_xpm, this ), HELP_PLACE_BUS2BUS_ENTRY, wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_NOCONN_BUTT, wxEmptyString, KiBitmap( noconn_xpm ), + m_drawToolBar->AddTool( ID_NOCONN_BUTT, wxEmptyString, KiScaledBitmap( noconn_xpm, this ), HELP_PLACE_NC_FLAG, wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_JUNCTION_BUTT, wxEmptyString, KiBitmap( add_junction_xpm ), + m_drawToolBar->AddTool( ID_JUNCTION_BUTT, wxEmptyString, + KiScaledBitmap( add_junction_xpm, this ), HELP_PLACE_JUNCTION, wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_LABEL_BUTT, wxEmptyString, KiBitmap( add_line_label_xpm ), + m_drawToolBar->AddTool( ID_LABEL_BUTT, wxEmptyString, + KiScaledBitmap( add_line_label_xpm, this ), HELP_PLACE_NETLABEL, wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_GLABEL_BUTT, wxEmptyString, KiBitmap( add_glabel_xpm ), + m_drawToolBar->AddTool( ID_GLABEL_BUTT, wxEmptyString, KiScaledBitmap( add_glabel_xpm, this ), HELP_PLACE_GLOBALLABEL, wxITEM_CHECK ); m_drawToolBar->AddTool( ID_HIERLABEL_BUTT, wxEmptyString, - KiBitmap( add_hierarchical_label_xpm ), + KiScaledBitmap( add_hierarchical_label_xpm, this ), HELP_PLACE_HIER_LABEL, wxITEM_CHECK ); m_drawToolBar->AddTool( ID_SHEET_SYMBOL_BUTT, wxEmptyString, - KiBitmap( add_hierarchical_subsheet_xpm ), + KiScaledBitmap( add_hierarchical_subsheet_xpm, this ), HELP_PLACE_SHEET, wxITEM_CHECK ); m_drawToolBar->AddTool( ID_IMPORT_HLABEL_BUTT, wxEmptyString, - KiBitmap( import_hierarchical_label_xpm ), + KiScaledBitmap( import_hierarchical_label_xpm, this ), HELP_IMPORT_SHEETPIN, wxITEM_CHECK ); m_drawToolBar->AddTool( ID_SHEET_PIN_BUTT, wxEmptyString, - KiBitmap( add_hierar_pin_xpm ), + KiScaledBitmap( add_hierar_pin_xpm, this ), HELP_PLACE_SHEETPIN, wxITEM_CHECK ); m_drawToolBar->AddTool( ID_LINE_COMMENT_BUTT, wxEmptyString, - KiBitmap( add_dashed_line_xpm ), + KiScaledBitmap( add_dashed_line_xpm, this ), HELP_PLACE_GRAPHICLINES, wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_TEXT_COMMENT_BUTT, wxEmptyString, KiBitmap( text_xpm ), + m_drawToolBar->AddTool( ID_TEXT_COMMENT_BUTT, wxEmptyString, KiScaledBitmap( text_xpm, this ), HELP_PLACE_GRAPHICTEXTS, wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_ADD_IMAGE_BUTT, wxEmptyString, KiBitmap( image_xpm ), + m_drawToolBar->AddTool( ID_ADD_IMAGE_BUTT, wxEmptyString, KiScaledBitmap( image_xpm, this ), _("Add bitmap image"), wxITEM_CHECK ); m_drawToolBar->AddTool( ID_SCHEMATIC_DELETE_ITEM_BUTT, wxEmptyString, - KiBitmap( delete_xpm ), + KiScaledBitmap( delete_xpm, this ), HELP_DELETE_ITEMS, wxITEM_CHECK ); m_drawToolBar->Realize(); @@ -264,37 +278,37 @@ void SCH_EDIT_FRAME::ReCreateVToolbar() void SCH_EDIT_FRAME::ReCreateOptToolbar() { if( m_optionsToolBar ) - return; - - m_optionsToolBar = new wxAuiToolBar( this, ID_OPT_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); + m_optionsToolBar->Clear(); + else + m_optionsToolBar = new wxAuiToolBar( this, ID_OPT_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GRID, wxEmptyString, - KiBitmap( grid_xpm ), + KiScaledBitmap( grid_xpm, this ), _( "Turn grid off" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_INCH, wxEmptyString, - KiBitmap( unit_inch_xpm ), + KiScaledBitmap( unit_inch_xpm, this ), _( "Set unit to inch" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_MM, wxEmptyString, - KiBitmap( unit_mm_xpm ), + KiScaledBitmap( unit_mm_xpm, this ), _( "Set unit to mm" ), wxITEM_CHECK ); #ifndef __APPLE__ m_optionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_CURSOR, wxEmptyString, - KiBitmap( cursor_shape_xpm ), + KiScaledBitmap( cursor_shape_xpm, this ), _( "Change cursor shape" ), wxITEM_CHECK ); #endif // !__APPLE__ - //m_optionsToolBar->AddSeparator(); + //KiScaledSeparator( m_optionsToolBar, this ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_HIDDEN_PINS, wxEmptyString, - KiBitmap( hidden_pin_xpm ), + KiScaledBitmap( hidden_pin_xpm, this ), _( "Show hidden pins" ), wxITEM_CHECK ); - //m_optionsToolBar->AddSeparator(); + //KiScaledSeparator( m_optionsToolBar, this ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_BUS_WIRES_ORIENT, wxEmptyString, - KiBitmap( lines90_xpm ), + KiScaledBitmap( lines90_xpm, this ), _( "HV orientation for wires and bus" ), wxITEM_CHECK ); @@ -304,7 +318,7 @@ void SCH_EDIT_FRAME::ReCreateOptToolbar() void SCH_EDIT_FRAME::OnSelectOptionToolbar( wxCommandEvent& event ) { - if( m_canvas == NULL ) + if( m_canvas ) return; int id = event.GetId(); diff --git a/eeschema/tool_viewlib.cpp b/eeschema/tool_viewlib.cpp index 0f2da062f8..a43a371872 100644 --- a/eeschema/tool_viewlib.cpp +++ b/eeschema/tool_viewlib.cpp @@ -3,24 +3,20 @@ * * Copyright (C) 2016 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2008 Wayne Stambaugh - * Copyright (C) 2004-2018 KiCad Developers, see change_log.txt for contributors. + * Copyright (C) 2004-2018 KiCad Developers, see AUTHORS.txt for contributors. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ /** @@ -47,82 +43,82 @@ void LIB_VIEW_FRAME::ReCreateHToolbar() wxString msg; LIB_PART* part = NULL; - if( m_mainToolBar == NULL ) - { + if( m_mainToolBar ) + m_mainToolBar->Clear(); + else m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); - m_mainToolBar->AddTool( ID_LIBVIEW_SELECT_PART, wxEmptyString, - KiBitmap( add_component_xpm ), - _( "Select symbol to browse" ) ); + m_mainToolBar->AddTool( ID_LIBVIEW_SELECT_PART, wxEmptyString, + KiScaledBitmap( add_component_xpm, this ), + _( "Select symbol to browse" ) ); + m_mainToolBar->AddSeparator(); + m_mainToolBar->AddTool( ID_LIBVIEW_PREVIOUS, wxEmptyString, + KiScaledBitmap( lib_previous_xpm, this ), + _( "Display previous symbol" ) ); + + m_mainToolBar->AddTool( ID_LIBVIEW_NEXT, wxEmptyString, + KiScaledBitmap( lib_next_xpm, this ), + _( "Display next symbol" ) ); + + m_mainToolBar->AddSeparator(); + msg = AddHotkeyName( _( "Zoom in" ), g_Viewlib_Hokeys_Descr, + HK_ZOOM_IN, IS_COMMENT ); + m_mainToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, + KiScaledBitmap( zoom_in_xpm, this ), msg ); + + msg = AddHotkeyName( _( "Zoom out" ), g_Viewlib_Hokeys_Descr, + HK_ZOOM_OUT, IS_COMMENT ); + m_mainToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, + KiScaledBitmap( zoom_out_xpm, this ), msg ); + + msg = AddHotkeyName( _( "Redraw view" ), g_Viewlib_Hokeys_Descr, + HK_ZOOM_REDRAW, IS_COMMENT ); + m_mainToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, + KiScaledBitmap( zoom_redraw_xpm, this ), msg ); + + msg = AddHotkeyName( _( "Zoom auto" ), g_Viewlib_Hokeys_Descr, + HK_ZOOM_AUTO, IS_COMMENT ); + m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, + KiScaledBitmap( zoom_fit_in_page_xpm, this ), msg ); + + m_mainToolBar->AddSeparator(); + m_mainToolBar->AddTool( ID_LIBVIEW_DE_MORGAN_NORMAL_BUTT, wxEmptyString, + KiScaledBitmap( morgan1_xpm, this ), + _( "Show as \"De Morgan\" normal symbol" ), + wxITEM_CHECK ); + + m_mainToolBar->AddTool( ID_LIBVIEW_DE_MORGAN_CONVERT_BUTT, wxEmptyString, + KiScaledBitmap( morgan2_xpm, this ), + _( "Show as \"De Morgan\" convert symbol" ), + wxITEM_CHECK ); + + m_mainToolBar->AddSeparator(); + + m_selpartBox = new wxComboBox( m_mainToolBar, ID_LIBVIEW_SELECT_PART_NUMBER, + wxEmptyString, wxDefaultPosition, + wxSize( 150, -1 ), 0, NULL, wxCB_READONLY ); + m_mainToolBar->AddControl( m_selpartBox ); + + m_mainToolBar->AddSeparator(); + m_mainToolBar->AddTool( ID_LIBVIEW_VIEWDOC, wxEmptyString, + KiScaledBitmap( datasheet_xpm, this ), + _( "View symbol documents" ) ); + m_mainToolBar->EnableTool( ID_LIBVIEW_VIEWDOC, false ); + + if( IsModal() ) + { m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_LIBVIEW_PREVIOUS, wxEmptyString, - KiBitmap( lib_previous_xpm ), - _( "Display previous symbol" ) ); - - m_mainToolBar->AddTool( ID_LIBVIEW_NEXT, wxEmptyString, - KiBitmap( lib_next_xpm ), - _( "Display next symbol" ) ); - - m_mainToolBar->AddSeparator(); - msg = AddHotkeyName( _( "Zoom in" ), g_Viewlib_Hokeys_Descr, - HK_ZOOM_IN, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, - KiBitmap( zoom_in_xpm ), msg ); - - msg = AddHotkeyName( _( "Zoom out" ), g_Viewlib_Hokeys_Descr, - HK_ZOOM_OUT, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, - KiBitmap( zoom_out_xpm ), msg ); - - msg = AddHotkeyName( _( "Redraw view" ), g_Viewlib_Hokeys_Descr, - HK_ZOOM_REDRAW, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, - KiBitmap( zoom_redraw_xpm ), msg ); - - msg = AddHotkeyName( _( "Zoom auto" ), g_Viewlib_Hokeys_Descr, - HK_ZOOM_AUTO, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, - KiBitmap( zoom_fit_in_page_xpm ), msg ); - - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_LIBVIEW_DE_MORGAN_NORMAL_BUTT, wxEmptyString, - KiBitmap( morgan1_xpm ), - _( "Show as \"De Morgan\" normal symbol" ), - wxITEM_CHECK ); - - m_mainToolBar->AddTool( ID_LIBVIEW_DE_MORGAN_CONVERT_BUTT, wxEmptyString, - KiBitmap( morgan2_xpm ), - _( "Show as \"De Morgan\" convert symbol" ), - wxITEM_CHECK ); - - m_mainToolBar->AddSeparator(); - - m_selpartBox = new wxComboBox( m_mainToolBar, ID_LIBVIEW_SELECT_PART_NUMBER, - wxEmptyString, wxDefaultPosition, - wxSize( 150, -1 ), 0, NULL, wxCB_READONLY ); - m_mainToolBar->AddControl( m_selpartBox ); - - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_LIBVIEW_VIEWDOC, wxEmptyString, - KiBitmap( datasheet_xpm ), - _( "View symbol documents" ) ); - m_mainToolBar->EnableTool( ID_LIBVIEW_VIEWDOC, false ); - - if( IsModal() ) - { - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_LIBVIEW_CMP_EXPORT_TO_SCHEMATIC, - wxEmptyString, KiBitmap( export_xpm ), - _( "Insert symbol in schematic" ) ); - } - - // after adding the buttons to the toolbar, must call Realize() to - // reflect the changes - m_mainToolBar->Realize(); + m_mainToolBar->AddTool( ID_LIBVIEW_CMP_EXPORT_TO_SCHEMATIC, + wxEmptyString, KiScaledBitmap( export_xpm, this ), + _( "Insert symbol in schematic" ) ); } + // after adding the buttons to the toolbar, must call Realize() to + // reflect the changes + m_mainToolBar->Realize(); + if( m_libraryName.size() && m_entryName.size() ) { if( Prj().SchSymbolLibTable()->HasLibrary( m_libraryName ) ) diff --git a/gerbview/dialogs/gerbview_dialog_display_options_frame.cpp b/gerbview/dialogs/gerbview_dialog_display_options_frame.cpp index 132347752d..70da7469e8 100644 --- a/gerbview/dialogs/gerbview_dialog_display_options_frame.cpp +++ b/gerbview/dialogs/gerbview_dialog_display_options_frame.cpp @@ -2,24 +2,20 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2010-2014 Jean-Pierre Charras jp.charras at wanadoo.fr - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ /** @@ -53,12 +49,19 @@ class DIALOG_DISPLAY_OPTIONS : public DIALOG_DISPLAY_OPTIONS_BASE private: GERBVIEW_FRAME* m_Parent; GAL_OPTIONS_PANEL* m_galOptsPanel; + int m_last_scale; public: DIALOG_DISPLAY_OPTIONS( GERBVIEW_FRAME* parent ); ~DIALOG_DISPLAY_OPTIONS() {}; +protected: + void OnScaleSlider( wxScrollEvent& aEvent ) override; + void OnScaleAuto( wxCommandEvent& aEvent ) override; + bool TransferDataToWindow() override; + bool TransferDataFromWindow() override; + private: void OnOKBUttonClick( wxCommandEvent& event ) override; void OnCancelButtonClick( wxCommandEvent& event ) override; @@ -77,9 +80,11 @@ void GERBVIEW_FRAME::InstallGerberOptionsDialog( wxCommandEvent& event ) DIALOG_DISPLAY_OPTIONS::DIALOG_DISPLAY_OPTIONS( GERBVIEW_FRAME *parent) : - DIALOG_DISPLAY_OPTIONS_BASE( parent, wxID_ANY ) + DIALOG_DISPLAY_OPTIONS_BASE( parent, wxID_ANY ), + m_last_scale( -1 ) { m_Parent = parent; + m_scaleSlider->SetStep( 25 ); SetFocus(); initOptDialog( ); @@ -139,6 +144,7 @@ void DIALOG_DISPLAY_OPTIONS::initOptDialog( ) void DIALOG_DISPLAY_OPTIONS::OnOKBUttonClick( wxCommandEvent& event ) { + TransferDataFromWindow(); auto displayOptions = (GBR_DISPLAY_OPTIONS*) m_Parent->GetDisplayOptions(); m_Parent->m_DisplayOptions.m_DisplayPolarCood = @@ -192,3 +198,56 @@ void DIALOG_DISPLAY_OPTIONS::OnOKBUttonClick( wxCommandEvent& event ) EndModal( 1 ); } + +bool DIALOG_DISPLAY_OPTIONS::TransferDataToWindow() +{ + const auto parent = static_cast( GetParent() ); + const int scale_fourths = parent->GetIconScale(); + + if( scale_fourths <= 0 ) + { + m_scaleAuto->SetValue( true ); + m_scaleSlider->SetValue( 25 * KiIconScale( parent ) ); + } + else + { + m_scaleAuto->SetValue( false ); + m_scaleSlider->SetValue( scale_fourths * 25 ); + } + + return true; +} + + +bool DIALOG_DISPLAY_OPTIONS::TransferDataFromWindow() +{ + const auto parent = static_cast( GetParent() ); + const int scale_fourths = m_scaleAuto->GetValue() ? -1 : m_scaleSlider->GetValue() / 25; + + if( parent->GetIconScale() != scale_fourths ) + parent->SetIconScale( scale_fourths ); + + return true; +} + + +void DIALOG_DISPLAY_OPTIONS::OnScaleSlider( wxScrollEvent& aEvent ) +{ + m_scaleAuto->SetValue( false ); + aEvent.Skip(); +} + + +void DIALOG_DISPLAY_OPTIONS::OnScaleAuto( wxCommandEvent& aEvent ) +{ + if( m_scaleAuto->GetValue() ) + { + m_last_scale = m_scaleSlider->GetValue(); + m_scaleSlider->SetValue( 25 * KiIconScale( GetParent() ) ); + } + else + { + if( m_last_scale >= 0 ) + m_scaleSlider->SetValue( m_last_scale ); + } +} diff --git a/gerbview/dialogs/gerbview_dialog_display_options_frame_base.cpp b/gerbview/dialogs/gerbview_dialog_display_options_frame_base.cpp index 4af29e9a0a..6256bce4d7 100644 --- a/gerbview/dialogs/gerbview_dialog_display_options_frame_base.cpp +++ b/gerbview/dialogs/gerbview_dialog_display_options_frame_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Nov 22 2017) +// C++ code generated with wxFormBuilder (version Jan 2 2018) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -56,7 +56,7 @@ DIALOG_DISPLAY_OPTIONS_BASE::DIALOG_DISPLAY_OPTIONS_BASE( wxWindow* parent, wxWi bLeftSizer->Add( m_OptDisplayDCodes, 0, wxALL, 5 ); - m_UpperSizer->Add( bLeftSizer, 0, wxALL|wxEXPAND, 5 ); + m_UpperSizer->Add( bLeftSizer, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 ); wxBoxSizer* bRightSizer; bRightSizer = new wxBoxSizer( wxVERTICAL ); @@ -83,8 +83,43 @@ DIALOG_DISPLAY_OPTIONS_BASE::DIALOG_DISPLAY_OPTIONS_BASE( wxWindow* parent, wxWi bRightSizer->Add( bLeftBottomSizer, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 ); + wxStaticBoxSizer* sbSizer2; + sbSizer2 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("User Interface:") ), wxVERTICAL ); - m_UpperSizer->Add( bRightSizer, 0, wxALL|wxEXPAND, 5 ); + wxFlexGridSizer* fgSizer1; + fgSizer1 = new wxFlexGridSizer( 0, 3, 0, 0 ); + fgSizer1->AddGrowableCol( 1 ); + fgSizer1->SetFlexibleDirection( wxBOTH ); + fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_staticText1 = new wxStaticText( sbSizer2->GetStaticBox(), wxID_ANY, _("Icon scale:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText1->Wrap( -1 ); + fgSizer1->Add( m_staticText1, 0, wxALIGN_CENTER_VERTICAL|wxALL, 3 ); + + m_scaleSlider = new STEPPED_SLIDER( sbSizer2->GetStaticBox(), wxID_ANY, 50, 50, 275, wxDefaultPosition, wxDefaultSize, wxSL_AUTOTICKS|wxSL_HORIZONTAL|wxSL_LABELS ); + fgSizer1->Add( m_scaleSlider, 0, wxALL|wxEXPAND, 3 ); + + m_staticText2 = new wxStaticText( sbSizer2->GetStaticBox(), wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText2->Wrap( -1 ); + fgSizer1->Add( m_staticText2, 0, wxALIGN_CENTER_VERTICAL|wxALL, 3 ); + + + fgSizer1->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_scaleAuto = new wxCheckBox( sbSizer2->GetStaticBox(), wxID_ANY, _("Auto"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer1->Add( m_scaleAuto, 0, wxALL, 5 ); + + + fgSizer1->Add( 0, 0, 1, wxEXPAND, 5 ); + + + sbSizer2->Add( fgSizer1, 1, wxALL|wxEXPAND, 5 ); + + + bRightSizer->Add( sbSizer2, 1, wxALL|wxEXPAND, 5 ); + + + m_UpperSizer->Add( bRightSizer, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 ); bDialogSizer->Add( m_UpperSizer, 1, wxEXPAND, 5 ); @@ -107,6 +142,16 @@ DIALOG_DISPLAY_OPTIONS_BASE::DIALOG_DISPLAY_OPTIONS_BASE( wxWindow* parent, wxWi bDialogSizer->Fit( this ); // Connect Events + m_scaleSlider->Connect( wxEVT_SCROLL_TOP, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Connect( wxEVT_SCROLL_BOTTOM, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Connect( wxEVT_SCROLL_LINEUP, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Connect( wxEVT_SCROLL_LINEDOWN, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Connect( wxEVT_SCROLL_PAGEUP, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Connect( wxEVT_SCROLL_PAGEDOWN, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Connect( wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Connect( wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Connect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleAuto->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleAuto ), NULL, this ); m_sdbSizer1Cancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnCancelButtonClick ), NULL, this ); m_sdbSizer1OK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnOKBUttonClick ), NULL, this ); } @@ -114,6 +159,16 @@ DIALOG_DISPLAY_OPTIONS_BASE::DIALOG_DISPLAY_OPTIONS_BASE( wxWindow* parent, wxWi DIALOG_DISPLAY_OPTIONS_BASE::~DIALOG_DISPLAY_OPTIONS_BASE() { // Disconnect Events + m_scaleSlider->Disconnect( wxEVT_SCROLL_TOP, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Disconnect( wxEVT_SCROLL_BOTTOM, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Disconnect( wxEVT_SCROLL_LINEUP, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Disconnect( wxEVT_SCROLL_LINEDOWN, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Disconnect( wxEVT_SCROLL_PAGEUP, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Disconnect( wxEVT_SCROLL_PAGEDOWN, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Disconnect( wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Disconnect( wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Disconnect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleAuto->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleAuto ), NULL, this ); m_sdbSizer1Cancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnCancelButtonClick ), NULL, this ); m_sdbSizer1OK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnOKBUttonClick ), NULL, this ); diff --git a/gerbview/dialogs/gerbview_dialog_display_options_frame_base.fbp b/gerbview/dialogs/gerbview_dialog_display_options_frame_base.fbp index ca957af75b..a27a3e3105 100644 --- a/gerbview/dialogs/gerbview_dialog_display_options_frame_base.fbp +++ b/gerbview/dialogs/gerbview_dialog_display_options_frame_base.fbp @@ -104,7 +104,7 @@ protected 5 - wxALL|wxEXPAND + wxEXPAND|wxLEFT|wxRIGHT 0 @@ -653,7 +653,7 @@ 5 - wxALL|wxEXPAND + wxEXPAND|wxLEFT|wxRIGHT 0 @@ -941,6 +941,421 @@ + + 5 + wxALL|wxEXPAND + 1 + + wxID_ANY + User Interface: + + sbSizer2 + wxVERTICAL + 1 + none + + + 5 + wxALL|wxEXPAND + 1 + + 3 + wxBOTH + 1 + + 0 + + fgSizer1 + wxFLEX_GROWMODE_SPECIFIED + none + 0 + 0 + + 3 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Icon scale: + + 0 + + + 0 + + 1 + m_staticText1 + 1 + + + protected + 1 + + Resizable + 1 + + + ; forward_declare + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + 275 + + 0 + + 50 + + 0 + + 1 + m_scaleSlider + 1 + + + protected + 1 + + Resizable + 1 + + wxSL_AUTOTICKS|wxSL_HORIZONTAL|wxSL_LABELS + STEPPED_SLIDER; widgets/stepped_slider.h; Not forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + 50 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OnScaleSlider + + + + + + + + + + + + + + + + 3 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + % + + 0 + + + 0 + + 1 + m_staticText2 + 1 + + + protected + 1 + + Resizable + 1 + + + ; forward_declare + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Auto + + 0 + + + 0 + + 1 + m_scaleAuto + 1 + + + protected + 1 + + Resizable + 1 + + + ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnScaleAuto + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + + + diff --git a/gerbview/dialogs/gerbview_dialog_display_options_frame_base.h b/gerbview/dialogs/gerbview_dialog_display_options_frame_base.h index c14e164e69..834346c44e 100644 --- a/gerbview/dialogs/gerbview_dialog_display_options_frame_base.h +++ b/gerbview/dialogs/gerbview_dialog_display_options_frame_base.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Nov 22 2017) +// C++ code generated with wxFormBuilder (version Jan 2 2018) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -11,6 +11,7 @@ #include #include #include +#include "widgets/stepped_slider.h" #include "dialog_shim.h" #include #include @@ -21,6 +22,8 @@ #include #include #include +#include +#include #include #include #include @@ -46,12 +49,18 @@ class DIALOG_DISPLAY_OPTIONS_BASE : public DIALOG_SHIM wxRadioBox* m_ShowPageLimits; wxCheckBox* m_OptZoomNoCenter; wxCheckBox* m_OptMousewheelPan; + wxStaticText* m_staticText1; + STEPPED_SLIDER* m_scaleSlider; + wxStaticText* m_staticText2; + wxCheckBox* m_scaleAuto; wxStaticLine* m_staticline1; wxStdDialogButtonSizer* m_sdbSizer1; wxButton* m_sdbSizer1OK; wxButton* m_sdbSizer1Cancel; // Virtual event handlers, overide them in your derived class + virtual void OnScaleSlider( wxScrollEvent& event ) { event.Skip(); } + virtual void OnScaleAuto( wxCommandEvent& event ) { event.Skip(); } virtual void OnCancelButtonClick( wxCommandEvent& event ) { event.Skip(); } virtual void OnOKBUttonClick( wxCommandEvent& event ) { event.Skip(); } diff --git a/gerbview/gerbview_frame.cpp b/gerbview/gerbview_frame.cpp index fe89877a40..6e142557bf 100644 --- a/gerbview/gerbview_frame.cpp +++ b/gerbview/gerbview_frame.cpp @@ -2,24 +2,20 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2016 Jean-Pierre Charras, jp.charras at wanadoo.fr - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ /** @@ -63,7 +59,7 @@ static const wxString cfgShowPageSizeOption( wxT( "PageSizeOpt" ) ); static const wxString cfgShowDCodes( wxT( "ShowDCodesOpt" ) ); static const wxString cfgShowNegativeObjects( wxT( "ShowNegativeObjectsOpt" ) ); static const wxString cfgShowBorderAndTitleBlock( wxT( "ShowBorderAndTitleBlock" ) ); - +static const wxString IconScaleEntry = "GvIconScale"; // Colors for layers and items COLORS_DESIGN_SETTINGS g_ColorsSettings( FRAME_GERBER ); @@ -1147,3 +1143,22 @@ void GERBVIEW_FRAME::setupTools() m_toolManager->InvokeTool( "gerbview.InteractiveSelection" ); } + +int GERBVIEW_FRAME::GetIconScale() +{ + int scale = 0; + Kiface().KifaceSettings()->Read( IconScaleEntry, &scale, 0 ); + return scale; +} + + +void GERBVIEW_FRAME::SetIconScale( int aScale ) +{ + Kiface().KifaceSettings()->Write( IconScaleEntry, aScale ); + ReCreateMenuBar(); + ReCreateHToolbar(); + ReCreateOptToolbar(); + ReCreateAuxiliaryToolbar(); + Layout(); + SendSizeEvent(); +} diff --git a/gerbview/gerbview_frame.h b/gerbview/gerbview_frame.h index c0d8ecd0f6..5c10d4ef44 100644 --- a/gerbview/gerbview_frame.h +++ b/gerbview/gerbview_frame.h @@ -3,24 +3,20 @@ * * Copyright (C) 2016 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2013 Wayne Stambaugh - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ /** @@ -745,6 +741,9 @@ public: */ void OnUpdateSwitchCanvas( wxUpdateUIEvent& aEvent ); + int GetIconScale() override; + void SetIconScale( int aScale ) override; + DECLARE_EVENT_TABLE() }; diff --git a/gerbview/toolbars_gerber.cpp b/gerbview/toolbars_gerber.cpp index 59e932c34b..b195de6a16 100644 --- a/gerbview/toolbars_gerber.cpp +++ b/gerbview/toolbars_gerber.cpp @@ -3,24 +3,20 @@ * * Copyright (C) 2013 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2013 Wayne Stambaugh - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ /** @@ -49,49 +45,49 @@ void GERBVIEW_FRAME::ReCreateHToolbar( void ) { wxString msg; - if( m_mainToolBar != NULL ) - return; - - m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); + if( m_mainToolBar ) + m_mainToolBar->Clear(); + else + m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); // Set up toolbar m_mainToolBar->AddTool( ID_GERBVIEW_ERASE_ALL, wxEmptyString, - KiBitmap( gerbview_clear_layers_xpm ), + KiScaledBitmap( gerbview_clear_layers_xpm, this ), _( "Erase all layers" ) ); - m_mainToolBar->AddTool( wxID_FILE, wxEmptyString, KiBitmap( gerber_file_xpm ), + m_mainToolBar->AddTool( wxID_FILE, wxEmptyString, KiScaledBitmap( gerber_file_xpm, this ), _( "Load a new Gerber file on the current layer. Previous data will be deleted" ) ); m_mainToolBar->AddTool( ID_GERBVIEW_LOAD_DRILL_FILE, wxEmptyString, - KiBitmap( gerbview_drill_file_xpm ), + KiScaledBitmap( gerbview_drill_file_xpm, this ), _( "Load an excellon drill file on the current layer. Previous data will be deleted" ) ); - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_GERBVIEW_SET_PAGE_BORDER, wxEmptyString, KiBitmap( sheetset_xpm ), + KiScaledSeparator( m_mainToolBar, this ); + m_mainToolBar->AddTool( ID_GERBVIEW_SET_PAGE_BORDER, wxEmptyString, KiScaledBitmap( sheetset_xpm, this ), _( "Show/hide frame reference and select paper size for printing" ) ); m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( wxID_PRINT, wxEmptyString, KiBitmap( print_button_xpm ), + m_mainToolBar->AddTool( wxID_PRINT, wxEmptyString, KiScaledBitmap( print_button_xpm, this ), _( "Print layers" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); msg = AddHotkeyName( _( "Redraw view" ), GerbviewHokeysDescr, HK_ZOOM_REDRAW, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, KiBitmap( zoom_redraw_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, KiScaledBitmap( zoom_redraw_xpm, this ), msg ); msg = AddHotkeyName( _( "Zoom in" ), GerbviewHokeysDescr, HK_ZOOM_IN, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, KiBitmap( zoom_in_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, KiScaledBitmap( zoom_in_xpm, this ), msg ); msg = AddHotkeyName( _( "Zoom out" ), GerbviewHokeysDescr, HK_ZOOM_OUT, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, KiBitmap( zoom_out_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, KiScaledBitmap( zoom_out_xpm, this ), msg ); msg = AddHotkeyName( _( "Zoom auto" ), GerbviewHokeysDescr, HK_ZOOM_AUTO, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, KiBitmap( zoom_fit_in_page_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, KiScaledBitmap( zoom_fit_in_page_xpm, this ), msg ); - m_mainToolBar->AddTool( ID_ZOOM_SELECTION, wxEmptyString, KiBitmap( zoom_area_xpm ), + m_mainToolBar->AddTool( ID_ZOOM_SELECTION, wxEmptyString, KiScaledBitmap( zoom_area_xpm, this ), _( "Zoom to selection" ), wxITEM_CHECK ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_SelLayerBox = new GBR_LAYER_BOX_SELECTOR( m_mainToolBar, ID_TOOLBARH_GERBVIEW_SELECT_ACTIVE_LAYER, @@ -108,10 +104,12 @@ void GERBVIEW_FRAME::ReCreateHToolbar( void ) m_mainToolBar->Realize(); } + void GERBVIEW_FRAME::ReCreateAuxiliaryToolbar() { wxWindowUpdateLocker dummy( this ); +#if 0 if( m_auxiliaryToolBar ) { updateComponentListSelectBox(); @@ -140,9 +138,13 @@ void GERBVIEW_FRAME::ReCreateAuxiliaryToolbar() m_auimgr.Update(); return; } +#endif - m_auxiliaryToolBar = new wxAuiToolBar( this, ID_AUX_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); + if( m_auxiliaryToolBar ) + m_auxiliaryToolBar->Clear(); + else + m_auxiliaryToolBar = new wxAuiToolBar( this, ID_AUX_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); // Creates box to display and choose components: wxStaticText* text = new wxStaticText( m_auxiliaryToolBar, wxID_ANY, _("Cmp:") ); @@ -152,7 +154,7 @@ void GERBVIEW_FRAME::ReCreateAuxiliaryToolbar() m_SelComponentBox->SetToolTip( _("Select a component and highlight items belonging to this component") ); updateComponentListSelectBox(); m_auxiliaryToolBar->AddControl( m_SelComponentBox ); - m_auxiliaryToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); // Creates choice box to display net names and highlight selected: text = new wxStaticText( m_auxiliaryToolBar, wxID_ANY, _("Net:") ); @@ -162,7 +164,7 @@ void GERBVIEW_FRAME::ReCreateAuxiliaryToolbar() m_SelNetnameBox->SetToolTip( _("Select a net name and highlight graphic items belonging to this net") ); m_auxiliaryToolBar->AddControl( m_SelNetnameBox ); updateNetnameListSelectBox(); - m_auxiliaryToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); // Creates choice box to display aperture attributes and highlight selected: text = new wxStaticText( m_auxiliaryToolBar, wxID_ANY, _("Attr:") ); @@ -173,7 +175,7 @@ void GERBVIEW_FRAME::ReCreateAuxiliaryToolbar() m_auxiliaryToolBar->AddControl( m_SelAperAttributesBox ); updateAperAttributesSelectBox(); - m_auxiliaryToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); text = new wxStaticText( m_auxiliaryToolBar, wxID_ANY, _("DCode:") ); m_auxiliaryToolBar->AddControl( text ); m_DCodeSelector = new DCODE_SELECTION_BOX( m_auxiliaryToolBar, @@ -196,8 +198,8 @@ void GERBVIEW_FRAME::ReCreateVToolbar( void ) KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); // Set up toolbar - m_drawToolBar->AddTool( ID_NO_TOOL_SELECTED, wxEmptyString, KiBitmap( cursor_xpm ) ); - m_drawToolBar->AddSeparator(); + m_drawToolBar->AddTool( ID_NO_TOOL_SELECTED, wxEmptyString, KiScaledBitmap( cursor_xpm, this ) ); + KiScaledSeparator( m_mainToolBar, this ); m_drawToolBar->Realize(); } @@ -214,79 +216,79 @@ void GERBVIEW_FRAME::ReCreateOptToolbar( void ) // TODO: these can be moved to the 'proper' vertical toolbar if and when there are // actual tools to put there. That, or I'll get around to implementing configurable // toolbars. - m_optionsToolBar->AddTool( ID_NO_TOOL_SELECTED, wxEmptyString, KiBitmap( cursor_xpm ), + m_optionsToolBar->AddTool( ID_NO_TOOL_SELECTED, wxEmptyString, KiScaledBitmap( cursor_xpm, this ), wxEmptyString, wxITEM_CHECK ); if( IsGalCanvasActive() ) { m_optionsToolBar->AddTool( ID_TB_MEASUREMENT_TOOL, wxEmptyString, - KiBitmap( measurement_xpm ), + KiScaledBitmap( measurement_xpm, this ), _( "Measure distance between two points" ), wxITEM_CHECK ); } - m_optionsToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); - m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GRID, wxEmptyString, KiBitmap( grid_xpm ), + m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GRID, wxEmptyString, KiScaledBitmap( grid_xpm, this ), _( "Turn grid off" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_POLAR_COORD, wxEmptyString, - KiBitmap( polar_coord_xpm ), + KiScaledBitmap( polar_coord_xpm, this ), _( "Turn polar coordinate on" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_INCH, wxEmptyString, - KiBitmap( unit_inch_xpm ), + KiScaledBitmap( unit_inch_xpm, this ), _( "Set units to inches" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_MM, wxEmptyString, - KiBitmap( unit_mm_xpm ), + KiScaledBitmap( unit_mm_xpm, this ), _( "Set units to millimeters" ), wxITEM_CHECK ); #ifndef __APPLE__ m_optionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_CURSOR, wxEmptyString, - KiBitmap( cursor_shape_xpm ), + KiScaledBitmap( cursor_shape_xpm, this ), _( "Change cursor shape" ), wxITEM_CHECK ); #endif // !__APPLE__ - m_optionsToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_FLASHED_ITEMS_SKETCH, wxEmptyString, - KiBitmap( pad_sketch_xpm ), + KiScaledBitmap( pad_sketch_xpm, this ), _( "Show spots in sketch mode" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_LINES_SKETCH, wxEmptyString, - KiBitmap( showtrack_xpm ), + KiScaledBitmap( showtrack_xpm, this ), _( "Show lines in sketch mode" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_POLYGONS_SKETCH, wxEmptyString, - KiBitmap( opt_show_polygon_xpm ), + KiScaledBitmap( opt_show_polygon_xpm, this ), _( "Show polygons in sketch mode" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_NEGATIVE_ITEMS, wxEmptyString, - KiBitmap( gerbview_show_negative_objects_xpm ), + KiScaledBitmap( gerbview_show_negative_objects_xpm, this ), _( "Show negatives objects in ghost color" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_DCODES, wxEmptyString, - KiBitmap( show_dcodenumber_xpm ), + KiScaledBitmap( show_dcodenumber_xpm, this ), _( "Show dcode number" ), wxITEM_CHECK ); // tools to select draw mode in GerbView, unused in GAL if( !IsGalCanvasActive() ) { - m_optionsToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GBR_MODE_0, wxEmptyString, - KiBitmap( gbr_select_mode0_xpm ), + KiScaledBitmap( gbr_select_mode0_xpm, this ), _( "Show layers in raw mode\n" "(could have problems with negative items when more than one gerber file is shown)" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GBR_MODE_1, wxEmptyString, - KiBitmap( gbr_select_mode1_xpm ), + KiScaledBitmap( gbr_select_mode1_xpm, this ), _( "Show layers in stacked mode\n" "(show negative items without artifacts)" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GBR_MODE_2, wxEmptyString, - KiBitmap( gbr_select_mode2_xpm ), + KiScaledBitmap( gbr_select_mode2_xpm, this ), _( "Show layers in transparency mode\n" "(show negative items without artifacts)" ), wxITEM_CHECK ); @@ -294,22 +296,22 @@ void GERBVIEW_FRAME::ReCreateOptToolbar( void ) else { m_optionsToolBar->AddTool( ID_TB_OPTIONS_DIFF_MODE, wxEmptyString, - KiBitmap( gbr_select_mode2_xpm ), + KiScaledBitmap( gbr_select_mode2_xpm, this ), _( "Show layers in diff (compare) mode" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_HIGH_CONTRAST_MODE, wxEmptyString, - KiBitmap( contrast_mode_xpm ), + KiScaledBitmap( contrast_mode_xpm, this ), _( "Enable high contrast display mode" ), wxITEM_CHECK ); } // Tools to show/hide toolbars: - m_optionsToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR, wxEmptyString, - KiBitmap( layers_manager_xpm ), + KiScaledBitmap( layers_manager_xpm, this ), _( "Show/hide the layers manager toolbar" ), wxITEM_CHECK ); diff --git a/include/bitmap_types.h b/include/bitmap_types.h index 81f5fd36d0..8657df4969 100644 --- a/include/bitmap_types.h +++ b/include/bitmap_types.h @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2007-2017 Jean-Pierre Charras, jp.charras at wanadoo.fr - * Copyright (C) 1992-2017 KiCad Developers, see CHANGELOG.TXT for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -30,6 +30,9 @@ // test if it works under stable release // #include // only to define wxBitmap class wxBitmap; // only to define wxBitmap +class EDA_BASE_FRAME; +class wxWindow; +class wxAuiToolBar; #include @@ -59,6 +62,32 @@ typedef const BITMAP_OPAQUE *BITMAP_DEF; wxBitmap KiBitmap( BITMAP_DEF aBitmap ); +/** + * Function KiScaledBitmap + * Constructs a wxBitmap from a memory record, scaling it if device DPI demands it. + * Internally this may use caching to avoid scaling the same image twice. If caching + * is used, it's guaranteed threadsafe. + * + * @param aBitmap bitmap definition + * @param aWindow target window for scaling context + */ +wxBitmap KiScaledBitmap( BITMAP_DEF aBitmap, EDA_BASE_FRAME* aWindow ); + + +/** + * Function KiScaledSeparator + * Adds a separator to the given toolbar scaled the same way as KiScaledBitmap. + */ +void KiScaledSeparator( wxAuiToolBar* aToolbar, EDA_BASE_FRAME* aWindow ); + +/** + * Function KiIconScale + * Returns the automatic scale factor that would be used for a given window by + * KiScaledBitmap and KiScaledSeparator. + */ +int KiIconScale( wxWindow* aWindow ); + + /** * Function KiBitmapNew * allocates a wxBitmap on heap from a memory record, held in a diff --git a/include/widgets/stepped_slider.h b/include/widgets/stepped_slider.h new file mode 100644 index 0000000000..c4602edf13 --- /dev/null +++ b/include/widgets/stepped_slider.h @@ -0,0 +1,65 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2018 KiCad Developers, see AUTHORS.txt for contributors. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#ifndef STEPPED_SLIDER_H +#define STEPPED_SLIDER_H + +#include + +/** + * Customized wxSlider with forced stepping. + */ +class STEPPED_SLIDER : public wxSlider +{ +public: + STEPPED_SLIDER( + wxWindow* aParent, + wxWindowID aId, + int aValue, + int aMinValue, + int aMaxValue, + const wxPoint& aPos = wxDefaultPosition, + const wxSize& aSize = wxDefaultSize, + long aStyle = wxSL_HORIZONTAL, + const wxValidator& aValidator = wxDefaultValidator, + const wxString& aName = wxSliderNameStr ); + + virtual ~STEPPED_SLIDER(); + + /** + * Set the step size. + */ + void SetStep( int aSize ); + + /** + * Get the step size. + */ + int GetStep() const; + +protected: + DECLARE_EVENT_TABLE() + +private: + int m_step; + + void OnScroll( wxScrollEvent& aEvent ); +}; + + +#endif // STEPPED_SLIDER_H diff --git a/include/wxstruct.h b/include/wxstruct.h index 33be81210d..4acc1fa8c4 100644 --- a/include/wxstruct.h +++ b/include/wxstruct.h @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2015 Jean-Pierre Charras, jp.charras wanadoo.fr * Copyright (C) 2011 Wayne Stambaugh - * Copyright (C) 1992-2017 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -449,6 +449,21 @@ public: * bound to menu items. */ bool PostCommandMenuEvent( int evt_type ); + + /** + * Function GetIconScale + * + * Return the desired scaling for toolbar/menubar icons in fourths (e.g. 4 is unity). + * A negative number indicates autoscale based on font size. + */ + virtual int GetIconScale() { return -1; } + + /** + * Function SetIconScale + * + * Modify the scale of icons in the window; should refresh them and save the setting. + */ + virtual void SetIconScale( int aScale ) {} }; diff --git a/kicad/menubar.cpp b/kicad/menubar.cpp index 5bbc603561..153c1228a5 100644 --- a/kicad/menubar.cpp +++ b/kicad/menubar.cpp @@ -3,7 +3,7 @@ * * Copyright (C) 2017 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2009 Wayne Stambaugh - * Copyright (C) 1992-2017 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -505,26 +505,24 @@ void KICAD_MANAGER_FRAME::ReCreateMenuBar() */ void KICAD_MANAGER_FRAME::RecreateBaseHToolbar() { - // Check if toolbar is not already created - if( m_mainToolBar != NULL ) - return; - - // Allocate memory for m_mainToolBar - m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); + if( m_mainToolBar ) + m_mainToolBar->Clear(); + else + m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); // New m_mainToolBar->AddTool( ID_NEW_PROJECT, wxEmptyString, - KiBitmap( new_project_xpm ), + KiScaledBitmap( new_project_xpm, this ), _( "Create new project" ) ); m_mainToolBar->AddTool( ID_NEW_PROJECT_FROM_TEMPLATE, wxEmptyString, - KiBitmap( new_project_with_template_xpm ), + KiScaledBitmap( new_project_with_template_xpm, this ), _( "Create new project from template" ) ); // Load m_mainToolBar->AddTool( ID_LOAD_PROJECT, wxEmptyString, - KiBitmap( open_project_xpm ), + KiScaledBitmap( open_project_xpm, this ), _( "Open existing project" ) ); // Currently there is nothing to save @@ -532,29 +530,27 @@ void KICAD_MANAGER_FRAME::RecreateBaseHToolbar() #if 0 // Save m_mainToolBar->AddTool( ID_SAVE_PROJECT, wxEmptyString, - KiBitmap( save_project_xpm ), + KiScaledBitmap( save_project_xpm, this ), _( "Save current project" ) ); #endif - // Separator - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); // Archive m_mainToolBar->AddTool( ID_SAVE_AND_ZIP_FILES, wxEmptyString, - KiBitmap( zip_xpm ), + KiScaledBitmap( zip_xpm, this ), _( "Archive all project files" ) ); // Unarchive m_mainToolBar->AddTool( ID_READ_ZIP_ARCHIVE, wxEmptyString, - KiBitmap( unzip_xpm ), + KiScaledBitmap( unzip_xpm, this ), _( "Unarchive project files from zip archive" ) ); - // Separator - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); // Refresh project tree m_mainToolBar->AddTool( ID_PROJECT_TREE_REFRESH, wxEmptyString, - KiBitmap( reload_xpm ), + KiScaledBitmap( reload_xpm, this ), _( "Refresh project tree" ) ); // Create m_mainToolBar diff --git a/pagelayout_editor/toolbars_pl_editor.cpp b/pagelayout_editor/toolbars_pl_editor.cpp index e960a5f1bf..f8ad468d12 100644 --- a/pagelayout_editor/toolbars_pl_editor.cpp +++ b/pagelayout_editor/toolbars_pl_editor.cpp @@ -1,26 +1,22 @@ /* * This program source code file is part of KiCad, a free EDA CAD application. * - * Copyright (C) 2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2016-2018 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 2013 CERN * @author Jean-Pierre Charras, jp.charras at wanadoo.fr * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ /** @@ -39,77 +35,77 @@ void PL_EDITOR_FRAME::ReCreateHToolbar( void ) { - if( m_mainToolBar != NULL ) - return; + if( m_mainToolBar ) + m_mainToolBar->Clear(); + else + m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); wxString msg; // Standard file commands - m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); - - m_mainToolBar->AddTool( wxID_NEW, wxEmptyString, KiBitmap( new_generic_xpm ), + m_mainToolBar->AddTool( wxID_NEW, wxEmptyString, KiScaledBitmap( new_generic_xpm, this ), _( "New page layout design" ) ); - m_mainToolBar->AddTool( wxID_OPEN, wxEmptyString, KiBitmap( pagelayout_load_xpm ), + m_mainToolBar->AddTool( wxID_OPEN, wxEmptyString, KiScaledBitmap( pagelayout_load_xpm, this ), _( "Open an existing page layout design file" ) ); - m_mainToolBar->AddTool( wxID_SAVE, wxEmptyString, KiBitmap( save_project_xpm ), + m_mainToolBar->AddTool( wxID_SAVE, wxEmptyString, KiScaledBitmap( save_project_xpm, this ), _( "Save page layout design" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); - m_mainToolBar->AddTool( ID_SHEET_SET, wxEmptyString, KiBitmap( sheetset_xpm ), + m_mainToolBar->AddTool( ID_SHEET_SET, wxEmptyString, KiScaledBitmap( sheetset_xpm, this ), _( "Page settings" ) ); - m_mainToolBar->AddTool( wxID_PRINT, wxEmptyString, KiBitmap( print_button_xpm ), + m_mainToolBar->AddTool( wxID_PRINT, wxEmptyString, KiScaledBitmap( print_button_xpm, this ), _( "Print page layout" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); - m_mainToolBar->AddTool( wxID_CUT, wxEmptyString, KiBitmap( delete_xpm ), + m_mainToolBar->AddTool( wxID_CUT, wxEmptyString, KiScaledBitmap( delete_xpm, this ), _( "Delete selected item" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_mainToolBar->AddTool( wxID_UNDO, wxEmptyString, - KiBitmap( undo_xpm ), _( "Undo" ) ); + KiScaledBitmap( undo_xpm, this ), _( "Undo" ) ); m_mainToolBar->AddTool( wxID_REDO, wxEmptyString, - KiBitmap( redo_xpm ), _( "Redo" ) ); + KiScaledBitmap( redo_xpm, this ), _( "Redo" ) ); // Standard Zoom controls: m_mainToolBar->AddSeparator(); msg = AddHotkeyName( _( "Redraw view" ), PlEditorHokeysDescr, HK_ZOOM_REDRAW, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, KiBitmap( zoom_redraw_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, KiScaledBitmap( zoom_redraw_xpm, this ), msg ); msg = AddHotkeyName( _( "Zoom in" ), PlEditorHokeysDescr, HK_ZOOM_IN, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, KiBitmap( zoom_in_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, KiScaledBitmap( zoom_in_xpm, this ), msg ); msg = AddHotkeyName( _( "Zoom out" ), PlEditorHokeysDescr, HK_ZOOM_OUT, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, KiBitmap( zoom_out_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, KiScaledBitmap( zoom_out_xpm, this ), msg ); msg = AddHotkeyName( _( "Zoom auto" ), PlEditorHokeysDescr, HK_ZOOM_AUTO, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, KiBitmap( zoom_fit_in_page_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, KiScaledBitmap( zoom_fit_in_page_xpm, this ), msg ); // Zoom-to-selection - m_mainToolBar->AddTool( ID_ZOOM_SELECTION, wxEmptyString, KiBitmap( zoom_area_xpm ), + m_mainToolBar->AddTool( ID_ZOOM_SELECTION, wxEmptyString, KiScaledBitmap( zoom_area_xpm, this ), _( "Zoom to selection" ), wxITEM_CHECK ); // Display mode switch - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_mainToolBar->AddTool( ID_SHOW_REAL_MODE, wxEmptyString, - KiBitmap( pagelayout_normal_view_mode_xpm ), + KiScaledBitmap( pagelayout_normal_view_mode_xpm, this ), _( "Show title block like it will be displayed in applications\n" "texts with format are replaced by the full text"), wxITEM_CHECK ); m_mainToolBar->AddTool( ID_SHOW_PL_EDITOR_MODE, - wxEmptyString, KiBitmap( pagelayout_special_view_mode_xpm ), + wxEmptyString, KiScaledBitmap( pagelayout_special_view_mode_xpm, this ), _( "Show title block in edit mode: texts are shown as is:\n" "texts with format are displayed with no change"), wxITEM_CHECK ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); wxString choiceList[5] = { @@ -158,14 +154,14 @@ void PL_EDITOR_FRAME::ReCreateHToolbar( void ) void PL_EDITOR_FRAME::ReCreateVToolbar( void ) { if( m_drawToolBar ) - return; - - m_drawToolBar = new wxAuiToolBar( this, ID_V_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); + m_drawToolBar->Clear(); + else + m_drawToolBar = new wxAuiToolBar( this, ID_V_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); // Set up toolbar - m_drawToolBar->AddTool( ID_NO_TOOL_SELECTED, wxEmptyString, KiBitmap( cursor_xpm ) ); - m_drawToolBar->AddSeparator(); + m_drawToolBar->AddTool( ID_NO_TOOL_SELECTED, wxEmptyString, KiScaledBitmap( cursor_xpm, this ) ); + KiScaledSeparator( m_drawToolBar, this ); m_drawToolBar->Realize(); } diff --git a/pcbnew/class_pcb_layer_box_selector.cpp b/pcbnew/class_pcb_layer_box_selector.cpp index fdd4f8ce2e..08ebd9490d 100644 --- a/pcbnew/class_pcb_layer_box_selector.cpp +++ b/pcbnew/class_pcb_layer_box_selector.cpp @@ -9,7 +9,7 @@ * * Copyright (C) 1992-2015 Jean-Pierre Charras * Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck - * Copyright (C) 1992-2015 KiCad Developers, see change_log.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -118,7 +118,8 @@ void PCB_LAYER_BOX_SELECTOR::Resync() minwidth = std::max( minwidth, w ); } - minwidth += BM_SIZE + 35; // Take in account the bitmap size and margins + // Approximate bitmap size and margins + minwidth += BM_SIZE + 32 + ConvertDialogToPixels( wxSize( 8, 0 ) ).x; SetMinSize( wxSize( minwidth, -1 ) ); } diff --git a/pcbnew/dialogs/dialog_display_options.cpp b/pcbnew/dialogs/dialog_display_options.cpp index 8f0fefca9f..45274dcecc 100644 --- a/pcbnew/dialogs/dialog_display_options.cpp +++ b/pcbnew/dialogs/dialog_display_options.cpp @@ -2,24 +2,20 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2015 Jean-Pierre Charras, jean-pierre.charras at wanadoo.fr - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ /* functions relatives to the dialog opened from the main menu : @@ -65,13 +61,16 @@ void PCB_EDIT_FRAME::InstallDisplayOptionsDialog( wxCommandEvent& aEvent ) DIALOG_DISPLAY_OPTIONS::DIALOG_DISPLAY_OPTIONS( PCB_EDIT_FRAME* parent ) : DIALOG_DISPLAY_OPTIONS_BASE( parent ), - m_parent( parent ) + m_parent( parent ), + m_last_scale( -1 ) { KIGFX::GAL_DISPLAY_OPTIONS& galOptions = m_parent->GetGalDisplayOptions(); m_galOptsPanel = new GAL_OPTIONS_PANEL( this, galOptions ); sLeftSizer->Add( m_galOptsPanel, 1, wxEXPAND, 0 ); + m_scaleSlider->SetStep( 25 ); + SetFocus(); m_sdbSizerOK->SetDefault(); @@ -103,6 +102,19 @@ bool DIALOG_DISPLAY_OPTIONS::TransferDataToWindow() m_OptDisplayDrawings->SetValue( displ_opts->m_DisplayDrawItemsFill == SKETCH ); m_ShowNetNamesOption->SetSelection( displ_opts->m_DisplayNetNamesMode ); + const int scale_fourths = m_parent->GetIconScale(); + + if( scale_fourths <= 0 ) + { + m_scaleAuto->SetValue( true ); + m_scaleSlider->SetValue( 25 * KiIconScale( m_parent ) ); + } + else + { + m_scaleAuto->SetValue( false ); + m_scaleSlider->SetValue( scale_fourths * 25 ); + } + m_galOptsPanel->TransferDataToWindow(); return true; @@ -150,7 +162,34 @@ bool DIALOG_DISPLAY_OPTIONS::TransferDataFromWindow() view->RecacheAllItems(); view->MarkTargetDirty( KIGFX::TARGET_NONCACHED ); + const int scale_fourths = m_scaleAuto->GetValue() ? -1 : m_scaleSlider->GetValue() / 25; + + if( m_parent->GetIconScale() != scale_fourths ) + m_parent->SetIconScale( scale_fourths ); + m_parent->GetCanvas()->Refresh(); return true; } + + +void DIALOG_DISPLAY_OPTIONS::OnScaleSlider( wxScrollEvent& aEvent ) +{ + m_scaleAuto->SetValue( false ); + aEvent.Skip(); +} + + +void DIALOG_DISPLAY_OPTIONS::OnScaleAuto( wxCommandEvent& aEvent ) +{ + if( m_scaleAuto->GetValue() ) + { + m_last_scale = m_scaleSlider->GetValue(); + m_scaleSlider->SetValue( 25 * KiIconScale( GetParent() ) ); + } + else + { + if( m_last_scale >= 0 ) + m_scaleSlider->SetValue( m_last_scale ); + } +} diff --git a/pcbnew/dialogs/dialog_display_options.h b/pcbnew/dialogs/dialog_display_options.h index b31f2561b2..e2d8cb1f99 100644 --- a/pcbnew/dialogs/dialog_display_options.h +++ b/pcbnew/dialogs/dialog_display_options.h @@ -2,24 +2,20 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2010-2014 Jean-Pierre Charras, jean-pierre.charras at wanadoo.fr - * Copyright (C) 1992-2017 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ /** @@ -38,8 +34,13 @@ public: bool TransferDataFromWindow() override; bool TransferDataToWindow() override; +protected: + void OnScaleSlider( wxScrollEvent& aEvent ) override; + void OnScaleAuto( wxCommandEvent& aEvent ) override; + private: PCB_EDIT_FRAME* m_parent; + int m_last_scale; GAL_OPTIONS_PANEL* m_galOptsPanel; }; diff --git a/pcbnew/dialogs/dialog_display_options_base.cpp b/pcbnew/dialogs/dialog_display_options_base.cpp index 17c94d865e..a479dd0329 100644 --- a/pcbnew/dialogs/dialog_display_options_base.cpp +++ b/pcbnew/dialogs/dialog_display_options_base.cpp @@ -1,8 +1,8 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Feb 6 2017) +// C++ code generated with wxFormBuilder (version Jan 2 2018) // http://www.wxformbuilder.org/ // -// PLEASE DO "NOT" EDIT THIS FILE! +// PLEASE DO *NOT* EDIT THIS FILE! /////////////////////////////////////////////////////////////////////////// #include "dialog_display_options_base.h" @@ -24,27 +24,62 @@ DIALOG_DISPLAY_OPTIONS_BASE::DIALOG_DISPLAY_OPTIONS_BASE( wxWindow* parent, wxWi bupperSizer->Add( sLeftSizer, 1, wxEXPAND, 5 ); - wxStaticBoxSizer* sMiddleSizer; - sMiddleSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Routing Help:") ), wxVERTICAL ); + wxBoxSizer* bSizer5; + bSizer5 = new wxBoxSizer( wxVERTICAL ); wxString m_ShowNetNamesOptionChoices[] = { _("Do not show"), _("On pads"), _("On tracks"), _("On pads and tracks") }; int m_ShowNetNamesOptionNChoices = sizeof( m_ShowNetNamesOptionChoices ) / sizeof( wxString ); - m_ShowNetNamesOption = new wxRadioBox( sMiddleSizer->GetStaticBox(), wxID_ANY, _("Show Net Names:"), wxDefaultPosition, wxDefaultSize, m_ShowNetNamesOptionNChoices, m_ShowNetNamesOptionChoices, 1, wxRA_SPECIFY_COLS ); + m_ShowNetNamesOption = new wxRadioBox( this, wxID_ANY, _("Show Net Names:"), wxDefaultPosition, wxDefaultSize, m_ShowNetNamesOptionNChoices, m_ShowNetNamesOptionChoices, 1, wxRA_SPECIFY_COLS ); m_ShowNetNamesOption->SetSelection( 0 ); m_ShowNetNamesOption->SetToolTip( _("Show or hide net names on pads and/or tracks.") ); - sMiddleSizer->Add( m_ShowNetNamesOption, 0, wxALL|wxEXPAND, 5 ); + bSizer5->Add( m_ShowNetNamesOption, 1, wxALL|wxEXPAND, 5 ); wxString m_OptDisplayTracksClearanceChoices[] = { _("Never"), _("New track"), _("New track with via area"), _("New and edited tracks with via area"), _("Always") }; int m_OptDisplayTracksClearanceNChoices = sizeof( m_OptDisplayTracksClearanceChoices ) / sizeof( wxString ); - m_OptDisplayTracksClearance = new wxRadioBox( sMiddleSizer->GetStaticBox(), ID_SHOW_CLEARANCE, _("Show Track Clearance:"), wxDefaultPosition, wxDefaultSize, m_OptDisplayTracksClearanceNChoices, m_OptDisplayTracksClearanceChoices, 1, wxRA_SPECIFY_COLS ); + m_OptDisplayTracksClearance = new wxRadioBox( this, ID_SHOW_CLEARANCE, _("Show Track Clearance:"), wxDefaultPosition, wxDefaultSize, m_OptDisplayTracksClearanceNChoices, m_OptDisplayTracksClearanceChoices, 1, wxRA_SPECIFY_COLS ); m_OptDisplayTracksClearance->SetSelection( 0 ); m_OptDisplayTracksClearance->SetToolTip( _("Show or hide the track and via clearance area. If \"New track\" is selected, track clearance area is shown only when creating the track.") ); - sMiddleSizer->Add( m_OptDisplayTracksClearance, 1, wxALL|wxEXPAND, 5 ); + bSizer5->Add( m_OptDisplayTracksClearance, 1, wxALL|wxEXPAND, 5 ); + + wxStaticBoxSizer* sbSizer5; + sbSizer5 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("User Interface:") ), wxVERTICAL ); + + wxFlexGridSizer* fgSizer1; + fgSizer1 = new wxFlexGridSizer( 0, 3, 0, 0 ); + fgSizer1->AddGrowableCol( 1 ); + fgSizer1->SetFlexibleDirection( wxBOTH ); + fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_staticText1 = new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, _("Icon scale:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText1->Wrap( -1 ); + fgSizer1->Add( m_staticText1, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 3 ); + + m_scaleSlider = new STEPPED_SLIDER( sbSizer5->GetStaticBox(), wxID_ANY, 50, 50, 275, wxDefaultPosition, wxDefaultSize, wxSL_AUTOTICKS|wxSL_HORIZONTAL|wxSL_LABELS ); + fgSizer1->Add( m_scaleSlider, 0, wxEXPAND|wxLEFT|wxRIGHT, 3 ); + + m_staticText2 = new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText2->Wrap( -1 ); + fgSizer1->Add( m_staticText2, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 3 ); - bupperSizer->Add( sMiddleSizer, 0, wxALL|wxEXPAND, 5 ); + fgSizer1->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_scaleAuto = new wxCheckBox( sbSizer5->GetStaticBox(), wxID_ANY, _("Auto"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer1->Add( m_scaleAuto, 0, wxALL, 5 ); + + + fgSizer1->Add( 0, 0, 1, wxEXPAND, 5 ); + + + sbSizer5->Add( fgSizer1, 1, wxALL|wxEXPAND, 5 ); + + + bSizer5->Add( sbSizer5, 1, wxALL|wxEXPAND, 5 ); + + + bupperSizer->Add( bSizer5, 1, wxEXPAND, 5 ); wxBoxSizer* sRightSizer; sRightSizer = new wxBoxSizer( wxVERTICAL ); @@ -122,8 +157,32 @@ DIALOG_DISPLAY_OPTIONS_BASE::DIALOG_DISPLAY_OPTIONS_BASE( wxWindow* parent, wxWi this->SetSizer( bMainSizer ); this->Layout(); bMainSizer->Fit( this ); + + // Connect Events + m_scaleSlider->Connect( wxEVT_SCROLL_TOP, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Connect( wxEVT_SCROLL_BOTTOM, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Connect( wxEVT_SCROLL_LINEUP, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Connect( wxEVT_SCROLL_LINEDOWN, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Connect( wxEVT_SCROLL_PAGEUP, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Connect( wxEVT_SCROLL_PAGEDOWN, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Connect( wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Connect( wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Connect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleAuto->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleAuto ), NULL, this ); } DIALOG_DISPLAY_OPTIONS_BASE::~DIALOG_DISPLAY_OPTIONS_BASE() { + // Disconnect Events + m_scaleSlider->Disconnect( wxEVT_SCROLL_TOP, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Disconnect( wxEVT_SCROLL_BOTTOM, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Disconnect( wxEVT_SCROLL_LINEUP, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Disconnect( wxEVT_SCROLL_LINEDOWN, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Disconnect( wxEVT_SCROLL_PAGEUP, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Disconnect( wxEVT_SCROLL_PAGEDOWN, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Disconnect( wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Disconnect( wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleSlider->Disconnect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleSlider ), NULL, this ); + m_scaleAuto->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_DISPLAY_OPTIONS_BASE::OnScaleAuto ), NULL, this ); + } diff --git a/pcbnew/dialogs/dialog_display_options_base.fbp b/pcbnew/dialogs/dialog_display_options_base.fbp index 9f11c91670..9a1e4d3aef 100644 --- a/pcbnew/dialogs/dialog_display_options_base.fbp +++ b/pcbnew/dialogs/dialog_display_options_base.fbp @@ -115,21 +115,17 @@ 5 - wxALL|wxEXPAND - 0 - - wxID_ANY - Routing Help: + wxEXPAND + 1 + - sMiddleSizer + bSizer5 wxVERTICAL - 1 none - 5 wxALL|wxEXPAND - 0 + 1 1 1 @@ -306,6 +302,421 @@ + + 5 + wxALL|wxEXPAND + 1 + + wxID_ANY + User Interface: + + sbSizer5 + wxVERTICAL + 1 + none + + + 5 + wxALL|wxEXPAND + 1 + + 3 + wxBOTH + 1 + + 0 + + fgSizer1 + wxFLEX_GROWMODE_SPECIFIED + none + 0 + 0 + + 3 + wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Icon scale: + + 0 + + + 0 + + 1 + m_staticText1 + 1 + + + protected + 1 + + Resizable + 1 + + + ; forward_declare + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + wxEXPAND|wxLEFT|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + 275 + + 0 + + 50 + + 0 + + 1 + m_scaleSlider + 1 + + + protected + 1 + + Resizable + 1 + + wxSL_AUTOTICKS|wxSL_HORIZONTAL|wxSL_LABELS + STEPPED_SLIDER; widgets/stepped_slider.h; Not forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + 50 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OnScaleSlider + + + + + + + + + + + + + + + + 3 + wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + % + + 0 + + + 0 + + 1 + m_staticText2 + 1 + + + protected + 1 + + Resizable + 1 + + + ; forward_declare + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Auto + + 0 + + + 0 + + 1 + m_scaleAuto + 1 + + + protected + 1 + + Resizable + 1 + + + ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnScaleAuto + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + + + diff --git a/pcbnew/dialogs/dialog_display_options_base.h b/pcbnew/dialogs/dialog_display_options_base.h index 7255ab5075..7326899b07 100644 --- a/pcbnew/dialogs/dialog_display_options_base.h +++ b/pcbnew/dialogs/dialog_display_options_base.h @@ -1,8 +1,8 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Feb 6 2017) +// C++ code generated with wxFormBuilder (version Jan 2 2018) // http://www.wxformbuilder.org/ // -// PLEASE DO "NOT" EDIT THIS FILE! +// PLEASE DO *NOT* EDIT THIS FILE! /////////////////////////////////////////////////////////////////////////// #ifndef __DIALOG_DISPLAY_OPTIONS_BASE_H__ @@ -11,8 +11,7 @@ #include #include #include -class DIALOG_SHIM; - +#include "widgets/stepped_slider.h" #include "dialog_shim.h" #include #include @@ -21,8 +20,10 @@ class DIALOG_SHIM; #include #include #include -#include +#include +#include #include +#include #include #include @@ -44,6 +45,10 @@ class DIALOG_DISPLAY_OPTIONS_BASE : public DIALOG_SHIM wxBoxSizer* sLeftSizer; wxRadioBox* m_ShowNetNamesOption; wxRadioBox* m_OptDisplayTracksClearance; + wxStaticText* m_staticText1; + STEPPED_SLIDER* m_scaleSlider; + wxStaticText* m_staticText2; + wxCheckBox* m_scaleAuto; wxCheckBox* m_OptDisplayTracks; wxCheckBox* m_OptDisplayVias; wxCheckBox* m_OptDisplayModOutlines; @@ -58,6 +63,11 @@ class DIALOG_DISPLAY_OPTIONS_BASE : public DIALOG_SHIM wxStdDialogButtonSizer* m_sdbSizer; wxButton* m_sdbSizerOK; wxButton* m_sdbSizerCancel; + + // Virtual event handlers, overide them in your derived class + virtual void OnScaleSlider( wxScrollEvent& event ) { event.Skip(); } + virtual void OnScaleAuto( wxCommandEvent& event ) { event.Skip(); } + public: diff --git a/pcbnew/dialogs/dialog_modedit_display_options.cpp b/pcbnew/dialogs/dialog_modedit_display_options.cpp index 808eab7056..dc85a45ad2 100644 --- a/pcbnew/dialogs/dialog_modedit_display_options.cpp +++ b/pcbnew/dialogs/dialog_modedit_display_options.cpp @@ -1,24 +1,20 @@ /* * This program source code file is part of KiCad, a free EDA CAD application. * - * Copyright (C) 2017 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2017-2018 KiCad Developers, see AUTHORS.txt for contributors. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ #include @@ -29,6 +25,9 @@ #include #include +#include +#include +#include bool DIALOG_MODEDIT_DISPLAY_OPTIONS::Invoke( FOOTPRINT_EDIT_FRAME& aCaller ) @@ -43,7 +42,8 @@ bool DIALOG_MODEDIT_DISPLAY_OPTIONS::Invoke( FOOTPRINT_EDIT_FRAME& aCaller ) DIALOG_MODEDIT_DISPLAY_OPTIONS::DIALOG_MODEDIT_DISPLAY_OPTIONS( FOOTPRINT_EDIT_FRAME& aParent ) : DIALOG_SHIM( &aParent, wxID_ANY, _( "Display Options" ) ), - m_parent( aParent ) + m_parent( aParent ), + m_last_scale( -1 ) { auto mainSizer = new wxBoxSizer( wxVERTICAL ); SetSizer( mainSizer ); @@ -54,6 +54,28 @@ DIALOG_MODEDIT_DISPLAY_OPTIONS::DIALOG_MODEDIT_DISPLAY_OPTIONS( FOOTPRINT_EDIT_F m_galOptsPanel = new GAL_OPTIONS_PANEL( this, galOptions ); mainSizer->Add( m_galOptsPanel, 1, wxEXPAND, 0 ); + auto fgsizer = new wxFlexGridSizer( 3 ); + fgsizer->AddGrowableCol( 1 ); + fgsizer->SetFlexibleDirection( wxBOTH ); + fgsizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + fgsizer->Add( + new wxStaticText( this, wxID_ANY, _( "Icon scale:" ) ), + 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, 3 ); + m_scaleSlider = new STEPPED_SLIDER( this, wxID_ANY, 50, 50, 275, + wxDefaultPosition, wxDefaultSize, + wxSL_AUTOTICKS | wxSL_HORIZONTAL | wxSL_LABELS ); + m_scaleSlider->SetStep( 25 ); + fgsizer->Add( m_scaleSlider, 1, wxLEFT | wxRIGHT | wxEXPAND, 3 ); + fgsizer->Add( + new wxStaticText( this, wxID_ANY, "%" ), + 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, 3 ); + fgsizer->AddSpacer( 0 ); + m_scaleAuto = new wxCheckBox( this, wxID_ANY, _( "Auto" ) ); + fgsizer->Add( m_scaleAuto, wxLEFT | wxRIGHT | wxEXPAND, 3 ); + fgsizer->AddSpacer( 0 ); + + mainSizer->Add( fgsizer, 0, wxEXPAND | wxBOTTOM | wxLEFT | wxRIGHT, 5 ); + auto btnSizer = new wxStdDialogButtonSizer(); mainSizer->Add( btnSizer, 0, wxEXPAND | wxBOTTOM | wxLEFT | wxRIGHT, 5 ); @@ -62,6 +84,21 @@ DIALOG_MODEDIT_DISPLAY_OPTIONS::DIALOG_MODEDIT_DISPLAY_OPTIONS( FOOTPRINT_EDIT_F btnSizer->Realize(); + std::vector> scroll_events = { + wxEVT_SCROLL_TOP, wxEVT_SCROLL_BOTTOM, wxEVT_SCROLL_LINEUP, wxEVT_SCROLL_LINEDOWN, + wxEVT_SCROLL_PAGEUP, wxEVT_SCROLL_PAGEDOWN, wxEVT_SCROLL_THUMBTRACK, + wxEVT_SCROLL_THUMBRELEASE }; + + for( auto evt : scroll_events ) + m_scaleSlider->Connect( + evt, wxScrollEventHandler( DIALOG_MODEDIT_DISPLAY_OPTIONS::OnScaleSlider ), + NULL, this ); + + m_scaleAuto->Connect( + wxEVT_COMMAND_CHECKBOX_CLICKED, + wxCommandEventHandler( DIALOG_MODEDIT_DISPLAY_OPTIONS::OnScaleAuto ), + NULL, this ); + GetSizer()->SetSizeHints( this ); Centre(); } @@ -70,7 +107,22 @@ DIALOG_MODEDIT_DISPLAY_OPTIONS::DIALOG_MODEDIT_DISPLAY_OPTIONS( FOOTPRINT_EDIT_F bool DIALOG_MODEDIT_DISPLAY_OPTIONS::TransferDataToWindow() { // update GAL options - return m_galOptsPanel->TransferDataToWindow(); + m_galOptsPanel->TransferDataToWindow(); + + const int scale_fourths = m_parent.GetIconScale(); + + if( scale_fourths <= 0 ) + { + m_scaleAuto->SetValue( true ); + m_scaleSlider->SetValue( 25 * KiIconScale( &m_parent ) ); + } + else + { + m_scaleAuto->SetValue( false ); + m_scaleSlider->SetValue( scale_fourths * 25 ); + } + + return true; } @@ -79,6 +131,11 @@ bool DIALOG_MODEDIT_DISPLAY_OPTIONS::TransferDataFromWindow() // update GAL options m_galOptsPanel->TransferDataFromWindow(); + const int scale_fourths = m_scaleAuto->GetValue() ? -1 : m_scaleSlider->GetValue() / 25; + + if( m_parent.GetIconScale() != scale_fourths ) + m_parent.SetIconScale( scale_fourths ); + // refresh view KIGFX::VIEW* view = m_parent.GetGalCanvas()->GetView(); view->RecacheAllItems(); @@ -87,3 +144,25 @@ bool DIALOG_MODEDIT_DISPLAY_OPTIONS::TransferDataFromWindow() return true; } + + +void DIALOG_MODEDIT_DISPLAY_OPTIONS::OnScaleSlider( wxScrollEvent& aEvent ) +{ + m_scaleAuto->SetValue( false ); + aEvent.Skip(); +} + + +void DIALOG_MODEDIT_DISPLAY_OPTIONS::OnScaleAuto( wxCommandEvent& aEvent ) +{ + if( m_scaleAuto->GetValue() ) + { + m_last_scale = m_scaleSlider->GetValue(); + m_scaleSlider->SetValue( 25 * KiIconScale( GetParent() ) ); + } + else + { + if( m_last_scale >= 0 ) + m_scaleSlider->SetValue( m_last_scale ); + } +} diff --git a/pcbnew/dialogs/dialog_modedit_display_options.h b/pcbnew/dialogs/dialog_modedit_display_options.h index 4bab8abac4..73aca949b9 100644 --- a/pcbnew/dialogs/dialog_modedit_display_options.h +++ b/pcbnew/dialogs/dialog_modedit_display_options.h @@ -1,30 +1,28 @@ /* * This program source code file is part of KiCad, a free EDA CAD application. * - * Copyright (C) 2017 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2017-2018 KiCad Developers, see AUTHORS.txt for contributors. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ #include class GAL_OPTIONS_PANEL; class FOOTPRINT_EDIT_FRAME; +class STEPPED_SLIDER; +class wxCheckBox; class DIALOG_MODEDIT_DISPLAY_OPTIONS : public DIALOG_SHIM { @@ -33,6 +31,10 @@ public: static bool Invoke( FOOTPRINT_EDIT_FRAME& aCaller ); +protected: + void OnScaleSlider( wxScrollEvent& aEvent ); + void OnScaleAuto( wxCommandEvent& aEvent ); + private: bool TransferDataToWindow() override; @@ -42,4 +44,8 @@ private: // subpanel GAL_OPTIONS_PANEL* m_galOptsPanel; + + int m_last_scale; + wxCheckBox* m_scaleAuto; + STEPPED_SLIDER* m_scaleSlider; }; diff --git a/pcbnew/module_editor_frame.h b/pcbnew/module_editor_frame.h index 741a1465dd..ad325669a0 100644 --- a/pcbnew/module_editor_frame.h +++ b/pcbnew/module_editor_frame.h @@ -1,24 +1,20 @@ /* * This program source code file is part of KiCad, a free EDA CAD application. * - * Copyright (C) 1992-2015 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ /** @@ -484,6 +480,8 @@ public: */ bool OpenProjectFiles( const std::vector& aFileSet, int aCtl = 0 ) override; + int GetIconScale() override; + void SetIconScale( int aScale ) override; DECLARE_EVENT_TABLE() diff --git a/pcbnew/moduleframe.cpp b/pcbnew/moduleframe.cpp index 903813c10f..8e38861123 100644 --- a/pcbnew/moduleframe.cpp +++ b/pcbnew/moduleframe.cpp @@ -4,24 +4,20 @@ * Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2015 SoftPLC Corporation, Dick Hollenbeck * Copyright (C) 2015-2016 Wayne Stambaugh - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ /** @@ -31,6 +27,7 @@ #include #include +#include #include #include #include @@ -75,6 +72,12 @@ #include "tools/pad_tool.h" #include "tools/pcb_actions.h" +///@{ +/// \ingroup config + +static const wxString IconScaleEntry = "ModIconScale"; + +///@} BEGIN_EVENT_TABLE( FOOTPRINT_EDIT_FRAME, PCB_BASE_FRAME ) EVT_MENU_RANGE( ID_POPUP_PCB_ITEM_SELECTION_START, ID_POPUP_PCB_ITEM_SELECTION_END, @@ -1016,3 +1019,24 @@ void FOOTPRINT_EDIT_FRAME::UseGalCanvas( bool aEnable ) ReCreateMenuBar(); } + + +int FOOTPRINT_EDIT_FRAME::GetIconScale() +{ + int scale = 0; + Kiface().KifaceSettings()->Read( IconScaleEntry, &scale, 0 ); + return scale; +} + + +void FOOTPRINT_EDIT_FRAME::SetIconScale( int aScale ) +{ + Kiface().KifaceSettings()->Write( IconScaleEntry, aScale ); + ReCreateMenuBar(); + ReCreateHToolbar(); + ReCreateAuxiliaryToolbar(); + ReCreateVToolbar(); + ReCreateOptToolbar(); + Layout(); + SendSizeEvent(); +} diff --git a/pcbnew/pcbframe.cpp b/pcbnew/pcbframe.cpp index 38029d150a..36c76a66f1 100644 --- a/pcbnew/pcbframe.cpp +++ b/pcbnew/pcbframe.cpp @@ -4,24 +4,20 @@ * Copyright (C) 2017 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2013 SoftPLC Corporation, Dick Hollenbeck * Copyright (C) 2013 Wayne Stambaugh - * Copyright (C) 2013-2017 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2013-2018 KiCad Developers, see AUTHORS.txt for contributors. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ /** @@ -93,6 +89,7 @@ static const wxString MagneticTracksEntry = "PcbMagTrackOpt"; static const wxString ShowMicrowaveEntry = "ShowMicrowaveTools"; static const wxString ShowLayerManagerEntry = "ShowLayerManagerTools"; static const wxString ShowPageLimitsEntry = "ShowPageLimits"; +static const wxString IconScaleEntry = "PcbIconScale"; ///@} @@ -1278,3 +1275,25 @@ int PCB_EDIT_FRAME::InstallExchangeModuleFrame( MODULE* Module ) return dialog.ShowQuasiModal(); } + + +int PCB_EDIT_FRAME::GetIconScale() +{ + int scale = 0; + Kiface().KifaceSettings()->Read( IconScaleEntry, &scale, 0 ); + return scale; +} + + +void PCB_EDIT_FRAME::SetIconScale( int aScale ) +{ + Kiface().KifaceSettings()->Write( IconScaleEntry, aScale ); + ReCreateMenuBar(); + ReCreateHToolbar(); + ReCreateAuxiliaryToolbar(); + ReCreateVToolbar(); + ReCreateOptToolbar(); + ReCreateMicrowaveVToolbar(); + Layout(); + SendSizeEvent(); +} diff --git a/pcbnew/tool_modedit.cpp b/pcbnew/tool_modedit.cpp index 7cea7beb41..05178bba81 100644 --- a/pcbnew/tool_modedit.cpp +++ b/pcbnew/tool_modedit.cpp @@ -4,24 +4,20 @@ * Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck * Copyright (C) 2012 Wayne Stambaugh - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ /** @@ -42,109 +38,109 @@ void FOOTPRINT_EDIT_FRAME::ReCreateHToolbar() { - if( m_mainToolBar != NULL ) - return; + if( m_mainToolBar ) + m_mainToolBar->Clear(); + else + m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); wxString msg; - m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); - // Set up toolbar m_mainToolBar->AddTool( ID_MODEDIT_SELECT_CURRENT_LIB, wxEmptyString, - KiBitmap( open_library_xpm ), + KiScaledBitmap( open_library_xpm, this ), _( "Select active library" ) ); - m_mainToolBar->AddTool( ID_MODEDIT_SAVE_LIBMODULE, wxEmptyString, KiBitmap( save_library_xpm ), + m_mainToolBar->AddTool( ID_MODEDIT_SAVE_LIBMODULE, wxEmptyString, KiScaledBitmap( save_library_xpm, this ), _( "Save footprint in active library" ) ); m_mainToolBar->AddTool( ID_MODEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART, wxEmptyString, - KiBitmap( new_library_xpm ), + KiScaledBitmap( new_library_xpm, this ), _( "Create new library and save current footprint" ) ); - m_mainToolBar->AddTool( ID_OPEN_MODULE_VIEWER, wxEmptyString, KiBitmap( modview_icon_xpm ), + m_mainToolBar->AddTool( ID_OPEN_MODULE_VIEWER, wxEmptyString, KiScaledBitmap( modview_icon_xpm, this ), _( "Open footprint viewer" ) ); - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_MODEDIT_DELETE_PART, wxEmptyString, KiBitmap( delete_xpm ), + KiScaledSeparator( m_mainToolBar, this ); + m_mainToolBar->AddTool( ID_MODEDIT_DELETE_PART, wxEmptyString, KiScaledBitmap( delete_xpm, this ), _( "Delete part from active library" ) ); - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_MODEDIT_NEW_MODULE, wxEmptyString, KiBitmap( new_footprint_xpm ), + KiScaledSeparator( m_mainToolBar, this ); + m_mainToolBar->AddTool( ID_MODEDIT_NEW_MODULE, wxEmptyString, KiScaledBitmap( new_footprint_xpm, this ), _( "New footprint" ) ); #ifdef KICAD_SCRIPTING m_mainToolBar->AddTool( ID_MODEDIT_NEW_MODULE_FROM_WIZARD, wxEmptyString, - KiBitmap( module_wizard_xpm ), + KiScaledBitmap( module_wizard_xpm, this ), _( "New footprint using footprint wizard" ) ); #endif m_mainToolBar->AddTool( ID_MODEDIT_LOAD_MODULE, wxEmptyString, - KiBitmap( load_module_lib_xpm ), + KiScaledBitmap( load_module_lib_xpm, this ), _( "Load footprint from library" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_mainToolBar->AddTool( ID_MODEDIT_LOAD_MODULE_FROM_BOARD, wxEmptyString, - KiBitmap( load_module_board_xpm ), + KiScaledBitmap( load_module_board_xpm, this ), _( "Load footprint from current board" ) ); m_mainToolBar->AddTool( ID_MODEDIT_UPDATE_MODULE_IN_BOARD, wxEmptyString, - KiBitmap( update_module_board_xpm ), + KiScaledBitmap( update_module_board_xpm, this ), _( "Update footprint into current board" ) ); m_mainToolBar->AddTool( ID_MODEDIT_INSERT_MODULE_IN_BOARD, wxEmptyString, - KiBitmap( insert_module_board_xpm ), + KiScaledBitmap( insert_module_board_xpm, this ), _( "Insert footprint into current board" ) ); - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_MODEDIT_IMPORT_PART, wxEmptyString, KiBitmap( import_module_xpm ), + KiScaledSeparator( m_mainToolBar, this ); + m_mainToolBar->AddTool( ID_MODEDIT_IMPORT_PART, wxEmptyString, KiScaledBitmap( import_module_xpm, this ), _( "Import footprint" ) ); - m_mainToolBar->AddTool( ID_MODEDIT_EXPORT_PART, wxEmptyString, KiBitmap( export_module_xpm ), + m_mainToolBar->AddTool( ID_MODEDIT_EXPORT_PART, wxEmptyString, KiScaledBitmap( export_module_xpm, this ), _( "Export footprint" ) ); - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( wxID_UNDO, wxEmptyString, KiBitmap( undo_xpm ), + KiScaledSeparator( m_mainToolBar, this ); + m_mainToolBar->AddTool( wxID_UNDO, wxEmptyString, KiScaledBitmap( undo_xpm, this ), _( "Undo last edition" ) ); - m_mainToolBar->AddTool( wxID_REDO, wxEmptyString, KiBitmap( redo_xpm ), + m_mainToolBar->AddTool( wxID_REDO, wxEmptyString, KiScaledBitmap( redo_xpm, this ), _( "Redo last undo command" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_mainToolBar->AddTool( ID_MODEDIT_EDIT_MODULE_PROPERTIES, wxEmptyString, - KiBitmap( module_options_xpm ), + KiScaledBitmap( module_options_xpm, this ), _( "Footprint properties" ) ); - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( wxID_PRINT, wxEmptyString, KiBitmap( print_button_xpm ), + KiScaledSeparator( m_mainToolBar, this ); + m_mainToolBar->AddTool( wxID_PRINT, wxEmptyString, KiScaledBitmap( print_button_xpm, this ), _( "Print footprint" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); msg = AddHotkeyName( _( "Redraw view" ), g_Module_Editor_Hokeys_Descr, HK_ZOOM_REDRAW, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, KiBitmap( zoom_redraw_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, KiScaledBitmap( zoom_redraw_xpm, this ), msg ); msg = AddHotkeyName( _( "Zoom in" ), g_Module_Editor_Hokeys_Descr, HK_ZOOM_IN, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, KiBitmap( zoom_in_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, KiScaledBitmap( zoom_in_xpm, this ), msg ); msg = AddHotkeyName( _( "Zoom out" ), g_Module_Editor_Hokeys_Descr, HK_ZOOM_OUT, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, KiBitmap( zoom_out_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, KiScaledBitmap( zoom_out_xpm, this ), msg ); msg = AddHotkeyName( _( "Zoom auto" ), g_Module_Editor_Hokeys_Descr, HK_ZOOM_AUTO, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, KiBitmap( zoom_fit_in_page_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, KiScaledBitmap( zoom_fit_in_page_xpm, this ), msg ); - m_mainToolBar->AddTool( ID_ZOOM_SELECTION, wxEmptyString, KiBitmap( zoom_area_xpm ), + m_mainToolBar->AddTool( ID_ZOOM_SELECTION, wxEmptyString, KiScaledBitmap( zoom_area_xpm, this ), _( "Zoom to selection" ), wxITEM_CHECK ); - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_MODEDIT_PAD_SETTINGS, wxEmptyString, KiBitmap( options_pad_xpm ), + KiScaledSeparator( m_mainToolBar, this ); + m_mainToolBar->AddTool( ID_MODEDIT_PAD_SETTINGS, wxEmptyString, KiScaledBitmap( options_pad_xpm, this ), _( "Pad properties" ) ); #if 0 // Currently there is no check footprint function defined, so do not show this tool - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_mainToolBar->AddTool( ID_MODEDIT_CHECK, wxEmptyString, - KiBitmap( module_check_xpm ), + KiScaledBitmap( module_check_xpm, this ), _( "Check footprint" ) ); #endif @@ -156,51 +152,51 @@ void FOOTPRINT_EDIT_FRAME::ReCreateHToolbar() void FOOTPRINT_EDIT_FRAME::ReCreateVToolbar() { if( m_drawToolBar ) - return; - - m_drawToolBar = new wxAuiToolBar( this, ID_V_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); + m_drawToolBar->Clear(); + else + m_drawToolBar = new wxAuiToolBar( this, ID_V_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); // Set up toolbar - m_drawToolBar->AddTool( ID_NO_TOOL_SELECTED, wxEmptyString, KiBitmap( cursor_xpm ), + m_drawToolBar->AddTool( ID_NO_TOOL_SELECTED, wxEmptyString, KiScaledBitmap( cursor_xpm, this ), wxEmptyString, wxITEM_CHECK ); - m_drawToolBar->AddSeparator(); - m_drawToolBar->AddTool( ID_MODEDIT_PAD_TOOL, wxEmptyString, KiBitmap( pad_xpm ), + KiScaledSeparator( m_drawToolBar, this ); + m_drawToolBar->AddTool( ID_MODEDIT_PAD_TOOL, wxEmptyString, KiScaledBitmap( pad_xpm, this ), _( "Add pad" ), wxITEM_CHECK ); - m_drawToolBar->AddSeparator(); - m_drawToolBar->AddTool( ID_MODEDIT_LINE_TOOL, wxEmptyString, KiBitmap( add_graphical_segments_xpm ), + KiScaledSeparator( m_drawToolBar, this ); + m_drawToolBar->AddTool( ID_MODEDIT_LINE_TOOL, wxEmptyString, KiScaledBitmap( add_graphical_segments_xpm, this ), _( "Add graphic line" ), wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_MODEDIT_CIRCLE_TOOL, wxEmptyString, KiBitmap( add_circle_xpm ), + m_drawToolBar->AddTool( ID_MODEDIT_CIRCLE_TOOL, wxEmptyString, KiScaledBitmap( add_circle_xpm, this ), _( "Add graphic circle" ), wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_MODEDIT_ARC_TOOL, wxEmptyString, KiBitmap( add_arc_xpm ), + m_drawToolBar->AddTool( ID_MODEDIT_ARC_TOOL, wxEmptyString, KiScaledBitmap( add_arc_xpm, this ), _( "Add graphic arc" ), wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_MODEDIT_POLYGON_TOOL, wxEmptyString, KiBitmap( add_graphical_polygon_xpm ), + m_drawToolBar->AddTool( ID_MODEDIT_POLYGON_TOOL, wxEmptyString, KiScaledBitmap( add_graphical_polygon_xpm, this ), _( "Add graphic polygon" ), wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_MODEDIT_TEXT_TOOL, wxEmptyString, KiBitmap( text_xpm ), + m_drawToolBar->AddTool( ID_MODEDIT_TEXT_TOOL, wxEmptyString, KiScaledBitmap( text_xpm, this ), _( "Add Text" ), wxITEM_CHECK ); - m_drawToolBar->AddSeparator(); - m_drawToolBar->AddTool( ID_MODEDIT_ANCHOR_TOOL, wxEmptyString, KiBitmap( anchor_xpm ), + KiScaledSeparator( m_drawToolBar, this ); + m_drawToolBar->AddTool( ID_MODEDIT_ANCHOR_TOOL, wxEmptyString, KiScaledBitmap( anchor_xpm, this ), _( "Place footprint reference anchor" ), wxITEM_CHECK ); - m_drawToolBar->AddSeparator(); - m_drawToolBar->AddTool( ID_MODEDIT_DELETE_TOOL, wxEmptyString, KiBitmap( delete_xpm ), + KiScaledSeparator( m_drawToolBar, this ); + m_drawToolBar->AddTool( ID_MODEDIT_DELETE_TOOL, wxEmptyString, KiScaledBitmap( delete_xpm, this ), _( "Delete item" ), wxITEM_CHECK ); m_drawToolBar->AddTool( ID_MODEDIT_PLACE_GRID_COORD, wxEmptyString, - KiBitmap( grid_select_axis_xpm ), + KiScaledBitmap( grid_select_axis_xpm, this ), _( "Set grid origin" ), wxITEM_CHECK ); m_drawToolBar->AddTool( ID_MODEDIT_MEASUREMENT_TOOL, wxEmptyString, - KiBitmap( measurement_xpm ), + KiScaledBitmap( measurement_xpm, this ), _( "Measure distance" ), wxITEM_CHECK ); @@ -211,47 +207,47 @@ void FOOTPRINT_EDIT_FRAME::ReCreateVToolbar() void FOOTPRINT_EDIT_FRAME::ReCreateOptToolbar() { if( m_optionsToolBar ) - return; + m_optionsToolBar->Clear(); + else + m_optionsToolBar = new wxAuiToolBar( this, ID_OPT_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); - // Create options tool bar. - m_optionsToolBar = new wxAuiToolBar( this, ID_OPT_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); - m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GRID, wxEmptyString, KiBitmap( grid_xpm ), + m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GRID, wxEmptyString, KiScaledBitmap( grid_xpm, this ), _( "Hide grid" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_POLAR_COORD, wxEmptyString, - KiBitmap( polar_coord_xpm ), + KiScaledBitmap( polar_coord_xpm, this ), _( "Display Polar Coord ON" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_INCH, wxEmptyString, - KiBitmap( unit_inch_xpm ), + KiScaledBitmap( unit_inch_xpm, this ), _( "Set units to inches" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_MM, wxEmptyString, - KiBitmap( unit_mm_xpm ), + KiScaledBitmap( unit_mm_xpm, this ), _( "Set units to millimeters" ), wxITEM_CHECK ); #ifndef __APPLE__ m_optionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_CURSOR, wxEmptyString, - KiBitmap( cursor_shape_xpm ), + KiScaledBitmap( cursor_shape_xpm, this ), _( "Change Cursor Shape" ), wxITEM_CHECK ); #endif // !__APPLE__ - m_optionsToolBar->AddSeparator(); + KiScaledSeparator( m_optionsToolBar, this ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_PADS_SKETCH, wxEmptyString, - KiBitmap( pad_sketch_xpm ), + KiScaledBitmap( pad_sketch_xpm, this ), _( "Show Pads Sketch" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_MODULE_TEXT_SKETCH, wxEmptyString, - KiBitmap( text_sketch_xpm ), + KiScaledBitmap( text_sketch_xpm, this ), _( "Show Texts Sketch" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_MODULE_EDGE_SKETCH, wxEmptyString, - KiBitmap( show_mod_edge_xpm ), + KiScaledBitmap( show_mod_edge_xpm, this ), _( "Show Edges Sketch" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_HIGH_CONTRAST_MODE, wxEmptyString, - KiBitmap( contrast_mode_xpm ), + KiScaledBitmap( contrast_mode_xpm, this ), _( "Enable high contrast display mode" ), wxITEM_CHECK ); @@ -262,13 +258,13 @@ void FOOTPRINT_EDIT_FRAME::ReCreateOptToolbar() void FOOTPRINT_EDIT_FRAME::ReCreateAuxiliaryToolbar() { if( m_auxiliaryToolBar ) - return; - - m_auxiliaryToolBar = new wxAuiToolBar( this, ID_AUX_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); + m_auxiliaryToolBar->Clear(); + else + m_auxiliaryToolBar = new wxAuiToolBar( this, ID_AUX_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); // Set up toolbar - m_auxiliaryToolBar->AddSeparator(); + KiScaledSeparator( m_auxiliaryToolBar, this ); // Grid selection choice box. m_gridSelectBox = new wxChoice( m_auxiliaryToolBar, @@ -280,7 +276,7 @@ void FOOTPRINT_EDIT_FRAME::ReCreateAuxiliaryToolbar() m_auxiliaryToolBar->AddControl( m_gridSelectBox ); // Zoom selection choice box. - m_auxiliaryToolBar->AddSeparator(); + KiScaledSeparator( m_auxiliaryToolBar, this ); m_zoomSelectBox = new wxChoice( m_auxiliaryToolBar, ID_ON_ZOOM_SELECT, wxDefaultPosition, wxDefaultSize, diff --git a/pcbnew/tool_modview.cpp b/pcbnew/tool_modview.cpp index 0b2aba76a6..2441cbbb19 100644 --- a/pcbnew/tool_modview.cpp +++ b/pcbnew/tool_modview.cpp @@ -4,24 +4,20 @@ * Copyright (C) 2014 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck * Copyright (C) 2012-2015 Wayne Stambaugh - * Copyright (C) 1992-2015 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ /** @@ -46,69 +42,71 @@ void FOOTPRINT_VIEWER_FRAME::ReCreateHToolbar() { wxString msg; - if( m_mainToolBar == NULL ) - { + if( m_mainToolBar ) + m_mainToolBar->Clear(); + else m_mainToolBar = new wxAuiToolBar( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT | wxAUI_TB_OVERFLOW ); - // Set up toolbar - m_mainToolBar->AddTool( ID_MODVIEW_SELECT_LIB, wxEmptyString, - KiBitmap( library_xpm ), - _( "Select library to browse" ) ); + // Set up toolbar + m_mainToolBar->AddTool( ID_MODVIEW_SELECT_LIB, wxEmptyString, + KiScaledBitmap( library_xpm, this ), + _( "Select library to browse" ) ); - m_mainToolBar->AddTool( ID_MODVIEW_SELECT_PART, wxEmptyString, - KiBitmap( module_xpm ), - _( "Select footprint to browse" ) ); + m_mainToolBar->AddTool( ID_MODVIEW_SELECT_PART, wxEmptyString, + KiScaledBitmap( module_xpm, this ), + _( "Select footprint to browse" ) ); - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_MODVIEW_PREVIOUS, wxEmptyString, - KiBitmap( lib_previous_xpm ), - _( "Display previous footprint" ) ); + KiScaledSeparator( m_mainToolBar, this ); - m_mainToolBar->AddTool( ID_MODVIEW_NEXT, wxEmptyString, - KiBitmap( lib_next_xpm ), - _( "Display next footprint" ) ); + m_mainToolBar->AddTool( ID_MODVIEW_PREVIOUS, wxEmptyString, + KiScaledBitmap( lib_previous_xpm, this ), + _( "Display previous footprint" ) ); - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_MODVIEW_SHOW_3D_VIEW, wxEmptyString, - KiBitmap( three_d_xpm ), - _( "Show footprint in 3D viewer" ) ); + m_mainToolBar->AddTool( ID_MODVIEW_NEXT, wxEmptyString, + KiScaledBitmap( lib_next_xpm, this ), + _( "Display next footprint" ) ); - m_mainToolBar->AddSeparator(); - msg = AddHotkeyName( _( "Zoom in" ), g_Module_Viewer_Hokeys_Descr, - HK_ZOOM_IN, IS_COMMENT ); - m_mainToolBar->AddTool( ID_VIEWER_ZOOM_IN, wxEmptyString, - KiBitmap( zoom_in_xpm ), msg ); + KiScaledSeparator( m_mainToolBar, this ); - msg = AddHotkeyName( _( "Zoom out" ), g_Module_Viewer_Hokeys_Descr, - HK_ZOOM_OUT, IS_COMMENT ); - m_mainToolBar->AddTool( ID_VIEWER_ZOOM_OUT, wxEmptyString, - KiBitmap( zoom_out_xpm ), msg ); + m_mainToolBar->AddTool( ID_MODVIEW_SHOW_3D_VIEW, wxEmptyString, + KiScaledBitmap( three_d_xpm, this ), + _( "Show footprint in 3D viewer" ) ); - msg = AddHotkeyName( _( "Redraw view" ), g_Module_Viewer_Hokeys_Descr, - HK_ZOOM_REDRAW ); - m_mainToolBar->AddTool( ID_VIEWER_ZOOM_REDRAW, wxEmptyString, - KiBitmap( zoom_redraw_xpm ), msg ); + KiScaledSeparator( m_mainToolBar, this ); - msg = AddHotkeyName( _( "Zoom auto" ), g_Module_Viewer_Hokeys_Descr, - HK_ZOOM_AUTO ); - m_mainToolBar->AddTool( ID_VIEWER_ZOOM_PAGE, wxEmptyString, - KiBitmap( zoom_fit_in_page_xpm ), msg ); + msg = AddHotkeyName( _( "Zoom in" ), g_Module_Viewer_Hokeys_Descr, + HK_ZOOM_IN, IS_COMMENT ); + m_mainToolBar->AddTool( ID_VIEWER_ZOOM_IN, wxEmptyString, + KiScaledBitmap( zoom_in_xpm, this ), msg ); - if( IsModal() ) - { - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_MODVIEW_FOOTPRINT_EXPORT_TO_BOARD, wxEmptyString, - KiBitmap( export_footprint_names_xpm ), - _( "Insert footprint in board" ) ); - } + msg = AddHotkeyName( _( "Zoom out" ), g_Module_Viewer_Hokeys_Descr, + HK_ZOOM_OUT, IS_COMMENT ); + m_mainToolBar->AddTool( ID_VIEWER_ZOOM_OUT, wxEmptyString, + KiScaledBitmap( zoom_out_xpm, this ), msg ); - // after adding the buttons to the toolbar, must call Realize() to - // reflect the changes - m_mainToolBar->Realize(); + msg = AddHotkeyName( _( "Redraw view" ), g_Module_Viewer_Hokeys_Descr, + HK_ZOOM_REDRAW ); + m_mainToolBar->AddTool( ID_VIEWER_ZOOM_REDRAW, wxEmptyString, + KiScaledBitmap( zoom_redraw_xpm, this ), msg ); + + msg = AddHotkeyName( _( "Zoom auto" ), g_Module_Viewer_Hokeys_Descr, + HK_ZOOM_AUTO ); + m_mainToolBar->AddTool( ID_VIEWER_ZOOM_PAGE, wxEmptyString, + KiScaledBitmap( zoom_fit_in_page_xpm, this ), msg ); + + if( IsModal() ) + { + KiScaledSeparator( m_mainToolBar, this ); + m_mainToolBar->AddTool( ID_MODVIEW_FOOTPRINT_EXPORT_TO_BOARD, wxEmptyString, + KiScaledBitmap( export_footprint_names_xpm, this ), + _( "Insert footprint in board" ) ); } + // after adding the buttons to the toolbar, must call Realize() to + // reflect the changes + m_mainToolBar->Realize(); m_mainToolBar->Refresh(); } diff --git a/pcbnew/tool_pcb.cpp b/pcbnew/tool_pcb.cpp index c6d8e12964..248c243c37 100644 --- a/pcbnew/tool_pcb.cpp +++ b/pcbnew/tool_pcb.cpp @@ -4,7 +4,7 @@ * Copyright (C) 2012 Jean-Pierre Charras, jean-pierre.charras@ujf-grenoble.fr * Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck * Copyright (C) 2012=2015 Wayne Stambaugh - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -47,6 +47,7 @@ #include #include +#include extern bool IsWxPythonLoaded(); @@ -55,7 +56,7 @@ extern bool IsWxPythonLoaded(); /* Data to build the layer pair indicator button */ -static wxBitmap* LayerPairBitmap = NULL; +static std::unique_ptr LayerPairBitmap; #define BM_LAYERICON_SIZE 24 static const char s_BitmapLayerIcon[BM_LAYERICON_SIZE][BM_LAYERICON_SIZE] = @@ -95,12 +96,19 @@ void PCB_EDIT_FRAME::PrepareLayerIndicator() COLOR4D active_layer_color, Route_Layer_TOP_color, Route_Layer_BOTTOM_color, via_color; bool change = false; - bool first_call = LayerPairBitmap == NULL; + static int previous_requested_scale; static COLOR4D previous_active_layer_color, previous_Route_Layer_TOP_color, previous_Route_Layer_BOTTOM_color, previous_via_color; - /* get colors, and redraw bitmap button only on changes */ + const int requested_scale = GetIconScale(); + + if( requested_scale != previous_requested_scale ) + { + previous_requested_scale = requested_scale; + change = true; + } + active_layer_color = Settings().Colors().GetLayerColor(GetActiveLayer()); if( previous_active_layer_color != active_layer_color ) @@ -136,14 +144,10 @@ void PCB_EDIT_FRAME::PrepareLayerIndicator() change = true; } - if( !change && (LayerPairBitmap != NULL) ) + if( !change && LayerPairBitmap ) return; - /* Create the bitmap and its Memory DC, if not already made */ - if( LayerPairBitmap == NULL ) - { - LayerPairBitmap = new wxBitmap( 24, 24 ); - } + LayerPairBitmap = std::make_unique( 24, 24 ); /* Draw the icon, with colors according to the active layer and layer * pairs for via command (change layer) @@ -191,7 +195,17 @@ void PCB_EDIT_FRAME::PrepareLayerIndicator() * in order to delete the MemoryDC safely without deleting the bitmap */ iconDC.SelectObject( wxNullBitmap ); - if( m_mainToolBar && ! first_call ) + // Scale the bitmap + const int scale = ( requested_scale <= 0 ) ? KiIconScale( this ) : requested_scale; + wxImage image = LayerPairBitmap->ConvertToImage(); + + // "NEAREST" causes less mixing of colors + image.Rescale( scale * image.GetWidth() / 4, scale * image.GetHeight() / 4, + wxIMAGE_QUALITY_NEAREST ); + + LayerPairBitmap = std::make_unique( image ); + + if( m_mainToolBar ) { m_mainToolBar->SetToolBitmap( ID_AUX_TOOLBAR_PCB_SELECT_LAYER_PAIR, *LayerPairBitmap ); m_mainToolBar->Refresh(); @@ -203,79 +217,79 @@ void PCB_EDIT_FRAME::ReCreateHToolbar() { wxString msg; - if( m_mainToolBar ) - return; - wxWindowUpdateLocker dummy( this ); - m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); + if( m_mainToolBar ) + m_mainToolBar->Clear(); + else + m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); // Set up toolbar if( Kiface().IsSingle() ) { - m_mainToolBar->AddTool( ID_NEW_BOARD, wxEmptyString, KiBitmap( new_generic_xpm ), + m_mainToolBar->AddTool( ID_NEW_BOARD, wxEmptyString, KiScaledBitmap( new_generic_xpm, this ), _( "New board" ) ); - m_mainToolBar->AddTool( ID_LOAD_FILE, wxEmptyString, KiBitmap( open_brd_file_xpm ), + m_mainToolBar->AddTool( ID_LOAD_FILE, wxEmptyString, KiScaledBitmap( open_brd_file_xpm, this ), _( "Open existing board" ) ); } - m_mainToolBar->AddTool( ID_SAVE_BOARD, wxEmptyString, KiBitmap( save_xpm ), + m_mainToolBar->AddTool( ID_SAVE_BOARD, wxEmptyString, KiScaledBitmap( save_xpm, this ), _( "Save board" ) ); - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_SHEET_SET, wxEmptyString, KiBitmap( sheetset_xpm ), + KiScaledSeparator( m_mainToolBar, this ); + m_mainToolBar->AddTool( ID_SHEET_SET, wxEmptyString, KiScaledBitmap( sheetset_xpm, this ), _( "Page settings for paper size and texts" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_mainToolBar->AddTool( ID_OPEN_MODULE_EDITOR, wxEmptyString, - KiBitmap( module_editor_xpm ), + KiScaledBitmap( module_editor_xpm, this ), _( "Open footprint editor" ) ); m_mainToolBar->AddTool( ID_OPEN_MODULE_VIEWER, wxEmptyString, - KiBitmap( modview_icon_xpm ), + KiScaledBitmap( modview_icon_xpm, this ), _( "Open footprint viewer" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); msg = AddHotkeyName( HELP_UNDO, g_Board_Editor_Hokeys_Descr, HK_UNDO, IS_COMMENT ); - m_mainToolBar->AddTool( wxID_UNDO, wxEmptyString, KiBitmap( undo_xpm ), msg ); + m_mainToolBar->AddTool( wxID_UNDO, wxEmptyString, KiScaledBitmap( undo_xpm, this ), msg ); msg = AddHotkeyName( HELP_REDO, g_Board_Editor_Hokeys_Descr, HK_REDO, IS_COMMENT ); - m_mainToolBar->AddTool( wxID_REDO, wxEmptyString, KiBitmap( redo_xpm ), msg ); + m_mainToolBar->AddTool( wxID_REDO, wxEmptyString, KiScaledBitmap( redo_xpm, this ), msg ); - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( wxID_PRINT, wxEmptyString, KiBitmap( print_button_xpm ), + KiScaledSeparator( m_mainToolBar, this ); + m_mainToolBar->AddTool( wxID_PRINT, wxEmptyString, KiScaledBitmap( print_button_xpm, this ), _( "Print board" ) ); - m_mainToolBar->AddTool( ID_GEN_PLOT, wxEmptyString, KiBitmap( plot_xpm ), + m_mainToolBar->AddTool( ID_GEN_PLOT, wxEmptyString, KiScaledBitmap( plot_xpm, this ), _( "Plot (HPGL, PostScript, or GERBER format)" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); msg = AddHotkeyName( HELP_ZOOM_REDRAW, g_Board_Editor_Hokeys_Descr, HK_ZOOM_REDRAW, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, KiBitmap( zoom_redraw_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, KiScaledBitmap( zoom_redraw_xpm, this ), msg ); msg = AddHotkeyName( HELP_ZOOM_IN, g_Board_Editor_Hokeys_Descr, HK_ZOOM_IN, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, KiBitmap( zoom_in_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, KiScaledBitmap( zoom_in_xpm, this ), msg ); msg = AddHotkeyName( HELP_ZOOM_OUT, g_Board_Editor_Hokeys_Descr, HK_ZOOM_OUT, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, KiBitmap( zoom_out_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, KiScaledBitmap( zoom_out_xpm, this ), msg ); msg = AddHotkeyName( HELP_ZOOM_FIT, g_Board_Editor_Hokeys_Descr, HK_ZOOM_AUTO, IS_COMMENT ); - m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, KiBitmap( zoom_fit_in_page_xpm ), msg ); + m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, KiScaledBitmap( zoom_fit_in_page_xpm, this ), msg ); - m_mainToolBar->AddTool( ID_ZOOM_SELECTION, wxEmptyString, KiBitmap( zoom_area_xpm ), + m_mainToolBar->AddTool( ID_ZOOM_SELECTION, wxEmptyString, KiScaledBitmap( zoom_area_xpm, this ), _( "Zoom to selection" ), wxITEM_CHECK ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); msg = AddHotkeyName( HELP_FIND, g_Board_Editor_Hokeys_Descr, HK_FIND_ITEM, IS_COMMENT ); - m_mainToolBar->AddTool( ID_FIND_ITEMS, wxEmptyString, KiBitmap( find_xpm ), msg ); + m_mainToolBar->AddTool( ID_FIND_ITEMS, wxEmptyString, KiScaledBitmap( find_xpm, this ), msg ); - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_GET_NETLIST, wxEmptyString, KiBitmap( netlist_xpm ), + KiScaledSeparator( m_mainToolBar, this ); + m_mainToolBar->AddTool( ID_GET_NETLIST, wxEmptyString, KiScaledBitmap( netlist_xpm, this ), _( "Read netlist" ) ); - m_mainToolBar->AddTool( ID_DRC_CONTROL, wxEmptyString, KiBitmap( erc_xpm ), + m_mainToolBar->AddTool( ID_DRC_CONTROL, wxEmptyString, KiScaledBitmap( erc_xpm, this ), _( "Perform design rules check" ) ); - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); if( m_SelLayerBox == NULL ) { @@ -291,27 +305,27 @@ void PCB_EDIT_FRAME::ReCreateHToolbar() m_mainToolBar->AddTool( ID_AUX_TOOLBAR_PCB_SELECT_LAYER_PAIR, wxEmptyString, *LayerPairBitmap, SEL_LAYER_HELP ); - m_mainToolBar->AddSeparator(); - m_mainToolBar->AddTool( ID_TOOLBARH_PCB_MODE_MODULE, wxEmptyString, KiBitmap( mode_module_xpm ), + KiScaledSeparator( m_mainToolBar, this ); + m_mainToolBar->AddTool( ID_TOOLBARH_PCB_MODE_MODULE, wxEmptyString, KiScaledBitmap( mode_module_xpm, this ), _( "Mode footprint: manual and automatic movement and placement" ), wxITEM_CHECK ); - m_mainToolBar->AddTool( ID_TOOLBARH_PCB_MODE_TRACKS, wxEmptyString, KiBitmap( mode_track_xpm ), + m_mainToolBar->AddTool( ID_TOOLBARH_PCB_MODE_TRACKS, wxEmptyString, KiScaledBitmap( mode_track_xpm, this ), _( "Mode track: autorouting" ), wxITEM_CHECK ); // Fast call to FreeROUTE Web Bases router - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_mainToolBar->AddTool( ID_TOOLBARH_PCB_FREEROUTE_ACCESS, wxEmptyString, - KiBitmap( web_support_xpm ), + KiScaledBitmap( web_support_xpm, this ), _( "Fast access to the FreeROUTE external advanced router" ) ); // Access to the scripting console #if defined(KICAD_SCRIPTING_WXPYTHON) if( IsWxPythonLoaded() ) { - m_mainToolBar->AddSeparator(); + KiScaledSeparator( m_mainToolBar, this ); m_mainToolBar->AddTool( ID_TOOLBARH_PCB_SCRIPTING_CONSOLE, wxEmptyString, - KiBitmap( py_script_xpm ), + KiScaledBitmap( py_script_xpm, this ), _( "Show/Hide the Python Scripting console" ), wxITEM_CHECK ); } @@ -324,174 +338,174 @@ void PCB_EDIT_FRAME::ReCreateHToolbar() void PCB_EDIT_FRAME::ReCreateOptToolbar() { - if( m_optionsToolBar ) - return; - wxWindowUpdateLocker dummy( this ); - m_optionsToolBar = new wxAuiToolBar( this, ID_OPT_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); + if( m_optionsToolBar ) + m_optionsToolBar->Clear(); + else + m_optionsToolBar = new wxAuiToolBar( this, ID_OPT_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); - m_optionsToolBar->AddTool( ID_TB_OPTIONS_DRC_OFF, wxEmptyString, KiBitmap( drc_off_xpm ), + m_optionsToolBar->AddTool( ID_TB_OPTIONS_DRC_OFF, wxEmptyString, KiScaledBitmap( drc_off_xpm, this ), _( "Enable design rule checking" ), wxITEM_CHECK ); - m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GRID, wxEmptyString, KiBitmap( grid_xpm ), + m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GRID, wxEmptyString, KiScaledBitmap( grid_xpm, this ), _( "Hide grid" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_POLAR_COORD, wxEmptyString, - KiBitmap( polar_coord_xpm ), + KiScaledBitmap( polar_coord_xpm, this ), _( "Display polar coordinates" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_INCH, wxEmptyString, - KiBitmap( unit_inch_xpm ), + KiScaledBitmap( unit_inch_xpm, this ), _( "Set units to inches" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_MM, wxEmptyString, - KiBitmap( unit_mm_xpm ), + KiScaledBitmap( unit_mm_xpm, this ), _( "Set units to millimeters" ), wxITEM_CHECK ); #ifndef __APPLE__ m_optionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_CURSOR, wxEmptyString, - KiBitmap( cursor_shape_xpm ), + KiScaledBitmap( cursor_shape_xpm, this ), _( "Change cursor shape" ), wxITEM_CHECK ); #endif // !__APPLE__ - m_optionsToolBar->AddSeparator(); + KiScaledSeparator( m_optionsToolBar, this ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_RATSNEST, wxEmptyString, - KiBitmap( general_ratsnest_xpm ), + KiScaledBitmap( general_ratsnest_xpm, this ), _( "Show board ratsnest" ), wxITEM_CHECK ); - m_optionsToolBar->AddSeparator(); + KiScaledSeparator( m_optionsToolBar, this ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_AUTO_DEL_TRACK, wxEmptyString, - KiBitmap( auto_delete_track_xpm ), + KiScaledBitmap( auto_delete_track_xpm, this ), _( "Enable automatic track deletion" ), wxITEM_CHECK ); - m_optionsToolBar->AddSeparator(); - m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_ZONES, wxEmptyString, KiBitmap( show_zone_xpm ), + KiScaledSeparator( m_optionsToolBar, this ); + m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_ZONES, wxEmptyString, KiScaledBitmap( show_zone_xpm, this ), _( "Show filled areas in zones" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_ZONES_DISABLE, wxEmptyString, - KiBitmap( show_zone_disable_xpm ), + KiScaledBitmap( show_zone_disable_xpm, this ), _( "Do not show filled areas in zones" ) , wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_ZONES_OUTLINES_ONLY, wxEmptyString, - KiBitmap( show_zone_outline_only_xpm ), + KiScaledBitmap( show_zone_outline_only_xpm, this ), _( "Show outlines of filled areas only in zones" ), wxITEM_CHECK ); - m_optionsToolBar->AddSeparator(); + KiScaledSeparator( m_optionsToolBar, this ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_PADS_SKETCH, wxEmptyString, - KiBitmap( pad_sketch_xpm ), + KiScaledBitmap( pad_sketch_xpm, this ), _( "Show pads in outline mode" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_VIAS_SKETCH, wxEmptyString, - KiBitmap( via_sketch_xpm ), + KiScaledBitmap( via_sketch_xpm, this ), _( "Show vias in outline mode" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_TRACKS_SKETCH, wxEmptyString, - KiBitmap( showtrack_xpm ), + KiScaledBitmap( showtrack_xpm, this ), _( "Show tracks in outline mode" ), wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_HIGH_CONTRAST_MODE, wxEmptyString, - KiBitmap( contrast_mode_xpm ), + KiScaledBitmap( contrast_mode_xpm, this ), _( "Enable high contrast display mode" ), wxITEM_CHECK ); // Tools to show/hide toolbars: - m_optionsToolBar->AddSeparator(); + KiScaledSeparator( m_optionsToolBar, this ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_MANAGE_LAYERS_VERTICAL_TOOLBAR, wxEmptyString, - KiBitmap( layers_manager_xpm ), + KiScaledBitmap( layers_manager_xpm, this ), HELP_SHOW_HIDE_LAYERMANAGER, wxITEM_CHECK ); m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_EXTRA_VERTICAL_TOOLBAR_MICROWAVE, wxEmptyString, - KiBitmap( mw_toolbar_xpm ), + KiScaledBitmap( mw_toolbar_xpm, this ), HELP_SHOW_HIDE_MICROWAVE_TOOLS, wxITEM_CHECK ); - m_optionsToolBar->AddSeparator(); + KiScaledSeparator( m_optionsToolBar, this ); m_optionsToolBar->Realize(); } void PCB_EDIT_FRAME::ReCreateVToolbar() { - if( m_drawToolBar ) - return; - wxWindowUpdateLocker dummy( this ); - m_drawToolBar = new wxAuiToolBar( this, ID_V_TOOLBAR, wxDefaultPosition, wxDefaultSize, - KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); + if( m_drawToolBar ) + m_drawToolBar->Clear(); + else + m_drawToolBar = new wxAuiToolBar( this, ID_V_TOOLBAR, wxDefaultPosition, wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); // Set up toolbar - m_drawToolBar->AddTool( ID_NO_TOOL_SELECTED, wxEmptyString, KiBitmap( cursor_xpm ), + m_drawToolBar->AddTool( ID_NO_TOOL_SELECTED, wxEmptyString, KiScaledBitmap( cursor_xpm, this ), wxEmptyString, wxITEM_CHECK ); - m_drawToolBar->AddSeparator(); + KiScaledSeparator( m_drawToolBar, this ); - m_drawToolBar->AddTool( ID_PCB_HIGHLIGHT_BUTT, wxEmptyString, KiBitmap( net_highlight_xpm ), + m_drawToolBar->AddTool( ID_PCB_HIGHLIGHT_BUTT, wxEmptyString, KiScaledBitmap( net_highlight_xpm, this ), _( "Highlight net" ), wxITEM_CHECK ); m_drawToolBar->AddTool( ID_PCB_SHOW_1_RATSNEST_BUTT, wxEmptyString, - KiBitmap( tool_ratsnest_xpm ), + KiScaledBitmap( tool_ratsnest_xpm, this ), _( "Display local ratsnest" ), wxITEM_CHECK ); - m_drawToolBar->AddSeparator(); - m_drawToolBar->AddTool( ID_PCB_MODULE_BUTT, wxEmptyString, KiBitmap( module_xpm ), + KiScaledSeparator( m_drawToolBar, this ); + m_drawToolBar->AddTool( ID_PCB_MODULE_BUTT, wxEmptyString, KiScaledBitmap( module_xpm, this ), _( "Add footprints" ), wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_TRACK_BUTT, wxEmptyString, KiBitmap( add_tracks_xpm ), + m_drawToolBar->AddTool( ID_TRACK_BUTT, wxEmptyString, KiScaledBitmap( add_tracks_xpm, this ), _( "Route tracks" ), wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_PCB_DRAW_VIA_BUTT, wxEmptyString, KiBitmap( add_via_xpm ), + m_drawToolBar->AddTool( ID_PCB_DRAW_VIA_BUTT, wxEmptyString, KiScaledBitmap( add_via_xpm, this ), _( "Add vias" ), wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_PCB_ZONES_BUTT, wxEmptyString, KiBitmap( add_zone_xpm ), + m_drawToolBar->AddTool( ID_PCB_ZONES_BUTT, wxEmptyString, KiScaledBitmap( add_zone_xpm, this ), _( "Add filled zones" ), wxITEM_CHECK ); m_drawToolBar->AddTool( ID_PCB_KEEPOUT_AREA_BUTT, wxEmptyString, - KiBitmap( add_keepout_area_xpm ), + KiScaledBitmap( add_keepout_area_xpm, this ), _( "Add keepout areas" ), wxITEM_CHECK ); - m_drawToolBar->AddSeparator(); + KiScaledSeparator( m_drawToolBar, this ); - m_drawToolBar->AddTool( ID_PCB_ADD_LINE_BUTT, wxEmptyString, KiBitmap( add_graphical_segments_xpm ), + m_drawToolBar->AddTool( ID_PCB_ADD_LINE_BUTT, wxEmptyString, KiScaledBitmap( add_graphical_segments_xpm, this ), _( "Add graphic lines" ), wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_PCB_CIRCLE_BUTT, wxEmptyString, KiBitmap( add_circle_xpm ), + m_drawToolBar->AddTool( ID_PCB_CIRCLE_BUTT, wxEmptyString, KiScaledBitmap( add_circle_xpm, this ), _( "Add graphic circle" ), wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_PCB_ARC_BUTT, wxEmptyString, KiBitmap( add_arc_xpm ), + m_drawToolBar->AddTool( ID_PCB_ARC_BUTT, wxEmptyString, KiScaledBitmap( add_arc_xpm, this ), _( "Add graphic arc" ), wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_PCB_ADD_POLYGON_BUTT, wxEmptyString, KiBitmap( add_graphical_polygon_xpm ), + m_drawToolBar->AddTool( ID_PCB_ADD_POLYGON_BUTT, wxEmptyString, KiScaledBitmap( add_graphical_polygon_xpm, this ), _( "Add graphic polygon" ), wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_PCB_ADD_TEXT_BUTT, wxEmptyString, KiBitmap( text_xpm ), + m_drawToolBar->AddTool( ID_PCB_ADD_TEXT_BUTT, wxEmptyString, KiScaledBitmap( text_xpm, this ), _( "Add text on copper layers or graphic text" ), wxITEM_CHECK ); - m_drawToolBar->AddSeparator(); - m_drawToolBar->AddTool( ID_PCB_DIMENSION_BUTT, wxEmptyString, KiBitmap( add_dimension_xpm ), + KiScaledSeparator( m_drawToolBar, this ); + m_drawToolBar->AddTool( ID_PCB_DIMENSION_BUTT, wxEmptyString, KiScaledBitmap( add_dimension_xpm, this ), _( "Add dimension" ), wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_PCB_TARGET_BUTT, wxEmptyString, KiBitmap( add_pcb_target_xpm ), + m_drawToolBar->AddTool( ID_PCB_TARGET_BUTT, wxEmptyString, KiScaledBitmap( add_pcb_target_xpm, this ), _( "Add layer alignment target" ), wxITEM_CHECK ); - m_drawToolBar->AddSeparator(); - m_drawToolBar->AddTool( ID_PCB_DELETE_ITEM_BUTT, wxEmptyString, KiBitmap( delete_xpm ), + KiScaledSeparator( m_drawToolBar, this ); + m_drawToolBar->AddTool( ID_PCB_DELETE_ITEM_BUTT, wxEmptyString, KiScaledBitmap( delete_xpm, this ), _( "Delete items" ), wxITEM_CHECK ); - m_drawToolBar->AddSeparator(); + KiScaledSeparator( m_drawToolBar, this ); m_drawToolBar->AddTool( ID_PCB_PLACE_OFFSET_COORD_BUTT, wxEmptyString, - KiBitmap( pcb_offset_xpm ), + KiScaledBitmap( pcb_offset_xpm, this ), _( "Place the origin point for drill and place files" ), wxITEM_CHECK ); m_drawToolBar->AddTool( ID_PCB_PLACE_GRID_COORD_BUTT, wxEmptyString, - KiBitmap( grid_select_axis_xpm ), + KiScaledBitmap( grid_select_axis_xpm, this ), _( "Set the origin point for the grid" ), wxITEM_CHECK ); m_drawToolBar->AddTool( ID_PCB_MEASUREMENT_TOOL, wxEmptyString, - KiBitmap( measurement_xpm ), + KiScaledBitmap( measurement_xpm, this ), _( "Measure distance" ), wxITEM_CHECK ); @@ -503,39 +517,40 @@ void PCB_EDIT_FRAME::ReCreateVToolbar() */ void PCB_EDIT_FRAME::ReCreateMicrowaveVToolbar() { - if( m_microWaveToolBar ) - return; - wxWindowUpdateLocker dummy(this); - m_microWaveToolBar = new wxAuiToolBar( this, ID_MICROWAVE_V_TOOLBAR, wxDefaultPosition, - wxDefaultSize, KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); + if( m_microWaveToolBar ) + m_microWaveToolBar->Clear(); + else + m_microWaveToolBar = new wxAuiToolBar( this, ID_MICROWAVE_V_TOOLBAR, wxDefaultPosition, + wxDefaultSize, + KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL ); // Set up toolbar m_microWaveToolBar->AddTool( ID_PCB_MUWAVE_TOOL_SELF_CMD, wxEmptyString, - KiBitmap( mw_add_line_xpm ), + KiScaledBitmap( mw_add_line_xpm, this ), _( "Create line of specified length for microwave applications" ), wxITEM_CHECK ); m_microWaveToolBar->AddTool( ID_PCB_MUWAVE_TOOL_GAP_CMD, wxEmptyString, - KiBitmap( mw_add_gap_xpm ), + KiScaledBitmap( mw_add_gap_xpm, this ), _( "Create gap of specified length for microwave applications" ), wxITEM_CHECK ); - m_microWaveToolBar->AddSeparator(); + KiScaledSeparator( m_microWaveToolBar, this ); m_microWaveToolBar->AddTool( ID_PCB_MUWAVE_TOOL_STUB_CMD, wxEmptyString, - KiBitmap( mw_add_stub_xpm ), + KiScaledBitmap( mw_add_stub_xpm, this ), _( "Create stub of specified length for microwave applications" ), wxITEM_CHECK ); m_microWaveToolBar->AddTool( ID_PCB_MUWAVE_TOOL_STUB_ARC_CMD, wxEmptyString, - KiBitmap( mw_add_stub_arc_xpm ), + KiScaledBitmap( mw_add_stub_arc_xpm, this ), _( "Create stub (arc) of specified length for microwave applications" ), wxITEM_CHECK ); m_microWaveToolBar->AddTool( ID_PCB_MUWAVE_TOOL_FUNCTION_SHAPE_CMD, wxEmptyString, - KiBitmap( mw_add_shape_xpm ), + KiScaledBitmap( mw_add_shape_xpm, this ), _( "Create a polynomial shape for microwave applications" ), wxITEM_CHECK ); @@ -583,18 +598,18 @@ void PCB_EDIT_FRAME::ReCreateAuxiliaryToolbar() 0, NULL ); updateViaSizeSelectBox(); m_auxiliaryToolBar->AddControl( m_SelViaSizeBox ); - m_auxiliaryToolBar->AddSeparator(); + KiScaledSeparator( m_auxiliaryToolBar, this ); // Creates box to display and choose strategy to handle tracks an vias sizes: m_auxiliaryToolBar->AddTool( ID_AUX_TOOLBAR_PCB_SELECT_AUTO_WIDTH, wxEmptyString, - KiBitmap( auto_track_width_xpm ), + KiScaledBitmap( auto_track_width_xpm, this ), _( "Auto track width: when starting on an existing track " "use its width\notherwise, use current width setting" ), wxITEM_CHECK ); // Add the box to display and select the current grid size: - m_auxiliaryToolBar->AddSeparator(); + KiScaledSeparator( m_auxiliaryToolBar, this ); m_gridSelectBox = new wxChoice( m_auxiliaryToolBar, ID_ON_GRID_SELECT, wxDefaultPosition, wxDefaultSize, @@ -603,7 +618,7 @@ void PCB_EDIT_FRAME::ReCreateAuxiliaryToolbar() m_auxiliaryToolBar->AddControl( m_gridSelectBox ); // Add the box to display and select the current Zoom - m_auxiliaryToolBar->AddSeparator(); + KiScaledSeparator( m_auxiliaryToolBar, this ); m_zoomSelectBox = new wxChoice( m_auxiliaryToolBar, ID_ON_ZOOM_SELECT, wxDefaultPosition, wxDefaultSize, diff --git a/pcbnew/wxPcbStruct.h b/pcbnew/wxPcbStruct.h index 0ca3bcee0d..f34f7ed016 100644 --- a/pcbnew/wxPcbStruct.h +++ b/pcbnew/wxPcbStruct.h @@ -2,26 +2,21 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2010 Jean-Pierre Charras, jp.charras@wanadoo.fr - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ - /** * @file wxPcbStruct.h */ @@ -1719,6 +1714,9 @@ public: */ void UpdateTitle(); + int GetIconScale() override; + void SetIconScale( int aScale ) override; + DECLARE_EVENT_TABLE() };