Commit c0f2af8a authored by Marco Mattila's avatar Marco Mattila
Browse files

Tune pcbnew zone properties dialog layout.

parent 640a0685
Loading
Loading
Loading
Loading
+66 −24
Original line number Diff line number Diff line
@@ -6,6 +6,8 @@
/// Licence:     GNU License
/////////////////////////////////////////////////////////////////////////////

#include <wx/wx.h>
#include <wx/imaglist.h>
#include "fctsys.h"
#include "appl_wxstruct.h"
#include "common.h"
@@ -18,6 +20,9 @@

#include "dialog_copper_zones.h"

#define LAYER_BITMAP_SIZE_X 20
#define LAYER_BITMAP_SIZE_Y 10

/* the filter to show nets (default * "*").
 *  static to keep this pattern for an entire pcbnew session
 */
@@ -38,6 +43,16 @@ dialog_copper_zone::dialog_copper_zone( WinEDA_PcbFrame* parent, ZONE_SETTING* z

    SetReturnCode( ZONE_ABORT ); // Will be changed on buttons click

    m_LayerSelectionCtrl = new wxListView( this, wxID_ANY,
                                           wxDefaultPosition, wxDefaultSize,
                                           wxLC_NO_HEADER | wxLC_REPORT
                                           | wxLC_SINGLE_SEL | wxRAISED_BORDER );
    wxListItem col0;
    col0.SetId( 0 );
    m_LayerSelectionCtrl->InsertColumn( 0, col0 );
    m_layerSizer->Add( m_LayerSelectionCtrl, 1,
                       wxGROW | wxLEFT | wxRIGHT | wxBOTTOM, 5 );

    initDialog();

    GetSizer()->SetSizeHints( this );
@@ -89,7 +104,6 @@ void dialog_copper_zone::initDialog()
        break;
    }


    if( m_Zone_Setting->m_Zone_Pad_Options != THERMAL_PAD )
    {
        m_AntipadSizeValue->Enable( false );
@@ -128,26 +142,34 @@ void dialog_copper_zone::initDialog()
    m_ArcApproximationOpt->SetSelection(
        m_Zone_Setting->m_ArcToSegmentsCount == ARC_APPROX_SEGMENTS_COUNT_HIGHT_DEF ? 1 : 0 );

    /* build copper layers list */
    int layer_cnt = board->GetCopperLayerCount();
    for( int ii = 0; ii < board->GetCopperLayerCount(); ii++ )
    // Build copper layer list and append to layer widget
    int layerCount = board->GetCopperLayerCount();
    int layerNumber, itemIndex, layerColor;
    wxImageList* imageList = new wxImageList( LAYER_BITMAP_SIZE_X, LAYER_BITMAP_SIZE_Y );
    m_LayerSelectionCtrl->AssignImageList( imageList, wxIMAGE_LIST_SMALL );
    for( int ii = 0; ii < layerCount; ii++ )
    {
        int layer_number = LAYER_N_BACK;
        layerNumber = LAYER_N_BACK;

        if( layer_cnt <= 1 || ii < layer_cnt - 1 )
            layer_number = ii;
        else if( ii == layer_cnt - 1 )
            layer_number = LAYER_N_FRONT;
        if( layerCount <= 1 || ii < layerCount - 1 )
            layerNumber = ii;
        else if( ii == layerCount - 1 )
            layerNumber = LAYER_N_FRONT;

        m_LayerId[ii] = layer_number;
        m_LayerId.insert( m_LayerId.begin(), layerNumber );

        msg = board->GetLayerName( layer_number ).Trim();
        m_LayerSelectionCtrl->InsertItems( 1, &msg, ii );
        msg = board->GetLayerName( layerNumber ).Trim();
        layerColor = board->GetLayerColor( layerNumber );
        imageList->Add( makeLayerBitmap( layerColor ) );
        itemIndex = m_LayerSelectionCtrl->InsertItem( 0, msg, ii );

        if( m_Zone_Setting->m_CurrentZone_Layer == layer_number )
            m_LayerSelectionCtrl->SetSelection( ii );
        if( m_Zone_Setting->m_CurrentZone_Layer == layerNumber )
            m_LayerSelectionCtrl->Select( itemIndex );
    }

    // Set layer list column width to widget width
    m_LayerSelectionCtrl->SetColumnWidth( 0, m_LayerSelectionCtrl->GetSize().x );

    wxString netNameDoNotShowFilter = wxT( "N-*" );
    if( m_Config )
    {
@@ -170,6 +192,12 @@ void dialog_copper_zone::initDialog()
/********************************************************************/
void dialog_copper_zone::OnButtonCancelClick( wxCommandEvent& event )
/********************************************************************/
{
    Close( true );
}


void dialog_copper_zone::OnClose( wxCloseEvent& event )
{
    EndModal( m_OnExitCode );
}
@@ -240,7 +268,7 @@ bool dialog_copper_zone::AcceptOptions( bool aPromptForErrors, bool aUseExportab
    #define CLEARANCE_MAX_VALUE 5000    // in 1/10000 inch
    if( m_Zone_Setting->m_ZoneClearance > CLEARANCE_MAX_VALUE )
    {
        DisplayError( this, _( "Error : Zone clearance is set to an unreasonnable value" ) );
        DisplayError( this, _( "Clearance must be smaller than 0.5\" / 12.7 mm." ) );
        return false;
    }

@@ -250,8 +278,7 @@ bool dialog_copper_zone::AcceptOptions( bool aPromptForErrors, bool aUseExportab
    if( m_Zone_Setting->m_ZoneMinThickness < 10 )
    {
        DisplayError( this,
                     _(
                         "Error :\nyou must choose a copper min thickness value bigger than 0.001 inch (or 0.0254 mm)" ) );
                     _( "Minimum width must be larger than 0.001\" / 0.0254 mm." ) );
        return false;
    }

@@ -275,8 +302,7 @@ bool dialog_copper_zone::AcceptOptions( bool aPromptForErrors, bool aUseExportab
    if( m_Zone_Setting->m_ThermalReliefCopperBridgeValue <= m_Zone_Setting->m_ZoneMinThickness )
    {
        DisplayError( this,
                     _(
                         "Error :\nyou must choose a copper bridge value for thermal reliefs bigger than the min zone thickness" ) );
                     _( "Thermal relief spoke width is larger than the minimum width." ) );
        return false;
    }

@@ -285,22 +311,20 @@ bool dialog_copper_zone::AcceptOptions( bool aPromptForErrors, bool aUseExportab
        return true;

    /* Get the layer selection for this zone */
    int ii = m_LayerSelectionCtrl->GetSelection();
    int ii = m_LayerSelectionCtrl->GetFirstSelected();
    if( ii < 0 && aPromptForErrors )
    {
        DisplayError( this, _( "Error : you must choose a layer" ) );
        DisplayError( this, _( "No layer selected." ) );
        return false;
    }


    m_Zone_Setting->m_CurrentZone_Layer = m_LayerId[ii];


    /* Get the net name selection for this zone */
    ii = m_ListNetNameSelection->GetSelection();
    if( ii < 0 && aPromptForErrors )
    {
        DisplayError( this, _( "Error : you must choose a net name" ) );
        DisplayError( this, _( "No net selected." ) );
        return false;
    }

@@ -489,3 +513,21 @@ void dialog_copper_zone::buildAvailableListOfNets()
        }
    }
}


wxBitmap dialog_copper_zone::makeLayerBitmap( int aColor )
{
    wxBitmap    bitmap( LAYER_BITMAP_SIZE_X, LAYER_BITMAP_SIZE_Y );
    wxBrush     brush;
    wxMemoryDC  iconDC;

    iconDC.SelectObject( bitmap );

    brush.SetColour( MakeColour( aColor ) );
    brush.SetStyle( wxSOLID );
    iconDC.SetBrush( brush );

    iconDC.DrawRectangle( 0, 0, LAYER_BITMAP_SIZE_X, LAYER_BITMAP_SIZE_Y );

    return bitmap;
}
+6 −1
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
#ifndef DIALOG_COPPER_ZONES
#define DIALOG_COPPER_ZONES

#include <wx/wx.h>
#include "dialog_copper_zones_base.h"

/* here is the derivated class from dialog_copper_zone_frame created by wxFormBuilder
@@ -22,10 +23,12 @@ private:
                                               *  true = pad count sort.
                                               */
    long            m_NetFiltering;
    int             m_LayerId[LAYER_COUNT]; // Handle the real layer number from layer name position in m_LayerSelectionCtrl
    std::vector<int> m_LayerId;               // Handle the real layer number from layer
                                              // name position in m_LayerSelectionCtrl
    static wxString m_netNameShowFilter;    /* the filter to show nets (default * "*").
                                             *  static to keep this pattern for an entire pcbnew session
                                             */
    wxListView*     m_LayerSelectionCtrl;

public:
    dialog_copper_zone( WinEDA_PcbFrame* parent, ZONE_SETTING* zone_setting );
@@ -33,6 +36,7 @@ private:
    void initDialog();
    void OnButtonOkClick( wxCommandEvent& event );
    void OnButtonCancelClick( wxCommandEvent& event );
    void OnClose( wxCloseEvent& event );
    bool AcceptOptions( bool aPromptForErrors, bool aUseExportableSetupOnly = false );
    void OnNetSortingOptionSelected( wxCommandEvent& event );
    void ExportSetupToOtherCopperZones( wxCommandEvent& event );
@@ -40,5 +44,6 @@ private:
    void OnRunFiltersButtonClick( wxCommandEvent& event );
    void buildAvailableListOfNets();
    void initListNetsParams();
    wxBitmap makeLayerBitmap( int aColor );
};
#endif      // #ifndef DIALOG_COPPER_ZONES
+254 −240

File changed.

Preview size limit exceeded, changes collapsed.

+3222 −1657

File changed.

Preview size limit exceeded, changes collapsed.

+118 −107
Original line number Diff line number Diff line
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Apr 16 2008)
// C++ code generated with wxFormBuilder (version Nov 18 2010)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
@@ -11,17 +11,17 @@
#include <wx/intl.h>

#include <wx/string.h>
#include <wx/radiobox.h>
#include <wx/stattext.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/stattext.h>
#include <wx/textctrl.h>
#include <wx/sizer.h>
#include <wx/statbox.h>
#include <wx/button.h>
#include <wx/listbox.h>
#include <wx/choice.h>
#include <wx/textctrl.h>
#include <wx/button.h>
#include <wx/statbox.h>
#include <wx/dialog.h>

///////////////////////////////////////////////////////////////////////////
@@ -35,71 +35,82 @@ class dialog_copper_zone_base : public wxDialog
	private:
		
		// Private event handlers
		void _wxFB_OnClose( wxCloseEvent& event ){ OnClose( event ); }
		void _wxFB_OnNetSortingOptionSelected( wxCommandEvent& event ){ OnNetSortingOptionSelected( event ); }
		void _wxFB_OnRunFiltersButtonClick( wxCommandEvent& event ){ OnRunFiltersButtonClick( event ); }
		void _wxFB_OnPadsInZoneClick( wxCommandEvent& event ){ OnPadsInZoneClick( event ); }
		void _wxFB_ExportSetupToOtherCopperZones( wxCommandEvent& event ){ ExportSetupToOtherCopperZones( event ); }
		void _wxFB_OnButtonOkClick( wxCommandEvent& event ){ OnButtonOkClick( event ); }
		void _wxFB_OnButtonCancelClick( wxCommandEvent& event ){ OnButtonCancelClick( event ); }
		void _wxFB_OnNetSortingOptionSelected( wxCommandEvent& event ){ OnNetSortingOptionSelected( event ); }
		void _wxFB_OnRunFiltersButtonClick( wxCommandEvent& event ){ OnRunFiltersButtonClick( event ); }
		
	
	protected:
		enum
		{
			 ID_RADIOBOX_FILL_MODE_SELECTION = 1000,
			wxID_ARC_APPROX,
			wxID_PADS_IN_ZONE_OPTIONS,
			ID_NETNAME_SELECTION = 1000,
			ID_M_NETDISPLAYOPTION,
			ID_TEXTCTRL_NETNAMES_FILTER,
			wxID_APPLY_FILTERS,
			ID_M_PADINZONEOPT,
			wxID_ANTIPAD_SIZE,
			wxID_COPPER_BRIDGE_VALUE,
			ID_RADIOBOX_OUTLINES_OPTION,
			ID_M_FILLMODECTRL,
			ID_M_ARCAPPROXIMATIONOPT,
			ID_M_ORIENTEDGESOPT,
			ID_M_OUTLINEAPPEARANCECTRL,
			wxID_BUTTON_EXPORT,
			ID_NET_SORTING_OPTION,
			ID_TEXTCTRL_NETNAMES_FILTER,
			ID_NETNAME_SELECTION,
			ID_LAYER_CHOICE,
		};
		
		wxRadioBox* m_FillModeCtrl;
		wxRadioBox* m_ArcApproximationOpt;
		wxRadioBox* m_PadInZoneOpt;
		wxStaticText* m_AntipadSizeText;
		wxTextCtrl* m_AntipadSizeValue;
		wxStaticText* m_CopperBridgeWidthText;
		wxTextCtrl* m_CopperWidthValue;
		
		wxRadioBox* m_OrientEdgesOpt;
		wxRadioBox* m_OutlineAppearanceCtrl;
		wxBoxSizer* m_layerSizer;
		wxStaticText* m_staticText17;
		wxStaticText* m_staticText2;
		wxListBox* m_ListNetNameSelection;
		wxStaticText* m_staticText16;
		wxChoice* m_NetDisplayOption;
		wxStaticText* m_staticText5;
		wxTextCtrl* m_DoNotShowNetNameFilter;
		wxStaticText* m_staticText51;
		wxTextCtrl* m_ShowNetNameFilter;
		wxButton* m_buttonRunFilter;
		wxStaticText* m_ClearanceValueTitle;
		wxTextCtrl* m_ZoneClearanceCtrl;
		wxStaticText* m_MinThicknessValueTitle;
		wxTextCtrl* m_ZoneMinThicknessCtrl;
		
		wxStaticText* m_staticText151;
		wxChoice* m_choice7;
		wxStaticText* m_staticText161;
		wxTextCtrl* m_textCtrl7;
		wxStaticText* m_staticText13;
		wxChoice* m_PadInZoneOpt;
		wxStaticText* m_AntipadSizeText;
		wxTextCtrl* m_AntipadSizeValue;
		wxStaticText* m_CopperBridgeWidthText;
		wxTextCtrl* m_CopperWidthValue;
		wxStaticText* m_staticText11;
		wxChoice* m_FillModeCtrl;
		wxStaticText* m_staticText12;
		wxChoice* m_ArcApproximationOpt;
		wxStaticText* m_staticText14;
		wxChoice* m_OrientEdgesOpt;
		wxStaticText* m_staticText15;
		wxChoice* m_OutlineAppearanceCtrl;
		wxButton* m_ExportSetupButton;
		wxButton* m_OkButton;
		wxButton* m_ButtonCancel;
		
		wxRadioBox* m_NetDisplayOption;
		wxStaticText* m_staticText5;
		wxTextCtrl* m_DoNotShowNetNameFilter;
		wxStaticText* m_staticText51;
		wxTextCtrl* m_ShowNetNameFilter;
		wxButton* m_buttonRunFilter;
		wxStaticText* m_staticText2;
		wxListBox* m_ListNetNameSelection;
		wxStaticText* m_staticText3;
		wxListBox* m_LayerSelectionCtrl;
		
		// Virtual event handlers, overide them in your derived class
		virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
		virtual void OnNetSortingOptionSelected( wxCommandEvent& event ) { event.Skip(); }
		virtual void OnRunFiltersButtonClick( wxCommandEvent& event ) { event.Skip(); }
		virtual void OnPadsInZoneClick( wxCommandEvent& event ) { event.Skip(); }
		virtual void ExportSetupToOtherCopperZones( wxCommandEvent& event ) { event.Skip(); }
		virtual void OnButtonOkClick( wxCommandEvent& event ) { event.Skip(); }
		virtual void OnButtonCancelClick( wxCommandEvent& event ) { event.Skip(); }
		virtual void OnNetSortingOptionSelected( wxCommandEvent& event ){ event.Skip(); }
		virtual void OnRunFiltersButtonClick( wxCommandEvent& event ){ event.Skip(); }
		
	
	public:
		dialog_copper_zone_base( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Fill Zones Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 566,582 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
		
		dialog_copper_zone_base( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Zone Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 550,500 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); 
		~dialog_copper_zone_base();
	
};