TARGET_PROPERTIES_DIALOG_EDITOR::TARGET_PROPERTIES_DIALOG_EDITOR( PCB_EDIT_FRAME* parent, PCB_TARGET* aTarget, wxDC* DC ) : TARGET_PROPERTIES_DIALOG_EDITOR_BASE( parent ) { m_Parent = parent; m_DC = DC; m_Target = aTarget; // Size: m_staticTextSizeUnits->SetLabel( GetUnitsLabel( g_UserUnit ) ); m_TargetSizeCtrl->SetValue( StringFromValue( g_UserUnit, m_Target->GetSize() ) ); // Thickness: m_staticTextThicknessUnits->SetLabel( GetUnitsLabel( g_UserUnit ) ); m_TargetThicknessCtrl->SetValue( StringFromValue( g_UserUnit, m_Target->GetWidth() ) ); // Shape m_TargetShape->SetSelection( m_Target->GetShape() ? 1 : 0 ); // OK button on return key. SetDefaultItem( m_sdbSizerButtsOK ); FixOSXCancelButtonIssue(); // Now all widgets have the size fixed, call FinishDialogSettings FinishDialogSettings(); }
DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES( PCB_BASE_FRAME* aParent, D_PAD* aPad ) : DIALOG_PAD_PROPERTIES_BASE( aParent ), m_OrientValidator( 1, &m_OrientValue ) { m_canUpdate = false; m_parent = aParent; m_currentPad = aPad; // aPad can be NULL, if the dialog is called // from the footprint editor to set default pad setup m_board = m_parent->GetBoard(); m_OrientValidator.SetRange( -360.0, 360.0 ); m_PadOrientCtrl->SetValidator( m_OrientValidator ); m_OrientValidator.SetWindow( m_PadOrientCtrl ); m_padMaster = &m_parent->GetDesignSettings().m_Pad_Master; m_dummyPad = new D_PAD( (MODULE*) NULL ); if( aPad ) *m_dummyPad = *aPad; else // We are editing a "master" pad, i.e. a template to create new pads *m_dummyPad = *m_padMaster; // Show the X and Y axis. It is usefull because pad shape can have an offset // or be a complex shape. m_axisOrigin = new KIGFX::ORIGIN_VIEWITEM( KIGFX::COLOR4D(0.0, 0.0, 0.8, 1.0), KIGFX::ORIGIN_VIEWITEM::CROSS, Millimeter2iu( 0.2 ), VECTOR2D( m_dummyPad->GetPosition() ) ); m_axisOrigin->SetDrawAtZero( true ); if( m_parent->IsGalCanvasActive() ) { m_panelShowPadGal->UseColorScheme( m_board->GetColorsSettings() ); m_panelShowPadGal->SwitchBackend( m_parent->GetGalCanvas()->GetBackend() ); m_panelShowPadGal->Show(); m_panelShowPad->Hide(); m_panelShowPadGal->GetView()->Add( m_dummyPad ); m_panelShowPadGal->GetView()->Add( m_axisOrigin ); m_panelShowPadGal->StartDrawing(); Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_PAD_PROPERTIES::OnResize ) ); } else { m_panelShowPad->Show(); m_panelShowPadGal->Hide(); } initValues(); TransferDataToWindow(); m_sdbSizerOK->SetDefault(); m_PadNumCtrl->SetFocus(); m_canUpdate = true; FixOSXCancelButtonIssue(); // Now all widgets have the size fixed, call FinishDialogSettings FinishDialogSettings(); }
DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR( SCH_EDIT_FRAME* aParent, SCH_TEXT* aTextItem ) : DIALOG_LABEL_EDITOR_BASE( aParent ) { m_Parent = aParent; m_CurrentText = aTextItem; InitDialog(); FixOSXCancelButtonIssue(); // Now all widgets have the size fixed, call FinishDialogSettings FinishDialogSettings(); }
DIALOG_EXPORT_STEP( PCB_EDIT_FRAME* parent ) : DIALOG_EXPORT_STEP_BASE( parent ) { m_parent = parent; m_config = Kiface().KifaceSettings(); SetFocus(); m_useDrillOrg = false; m_config->Read( OPTKEY_STEP_USE_DRILL_ORG, &m_useDrillOrg ); m_cbDrillOrigin->SetValue( m_useDrillOrg ); m_useAuxOrg = false; m_config->Read( OPTKEY_STEP_USE_AUX_ORG, &m_useAuxOrg ); m_cbAuxOrigin->SetValue( m_useAuxOrg ); m_useUserOrg = false; m_config->Read( OPTKEY_STEP_USE_USER_ORG, &m_useUserOrg ); m_cbUserOrigin->SetValue( m_useUserOrg ); m_cbUserOrigin->Bind( wxEVT_CHECKBOX, &DIALOG_EXPORT_STEP::OnUserOriginSelect, this ); m_config->Read( OPTKEY_STEP_UORG_UNITS, &m_OrgUnits, 0 ); m_config->Read( OPTKEY_STEP_UORG_X, &m_XOrg, 0.0 ); m_config->Read( OPTKEY_STEP_UORG_Y, &m_YOrg, 0.0 ); m_config->Read( OPTKEY_STEP_NOVIRT, &m_noVirtual ); m_cbRemoveVirtual->SetValue( m_noVirtual ); m_STEP_OrgUnitChoice->SetSelection( m_OrgUnits ); wxString tmpStr; tmpStr << m_XOrg; m_STEP_Xorg->SetValue( tmpStr ); tmpStr = ""; tmpStr << m_YOrg; m_STEP_Yorg->SetValue( tmpStr ); if( m_useUserOrg ) { m_STEP_OrgUnitChoice->Enable( true ); m_STEP_Xorg->Enable( true ); m_STEP_Yorg->Enable( true ); } else { m_STEP_OrgUnitChoice->Enable( false ); m_STEP_Xorg->Enable( false ); m_STEP_Yorg->Enable( false ); } m_sdbSizerOK->SetDefault(); FixOSXCancelButtonIssue(); // Now all widgets have the size fixed, call FinishDialogSettings FinishDialogSettings(); }
void DIALOG_EDIT_ONE_FIELD::init() { wxString msg; m_TextValue->SetFocus(); SCH_BASE_FRAME* parent = static_cast<SCH_BASE_FRAME*>( GetParent() ); m_TextValue->SetValidator( SCH_FIELD_VALIDATOR( parent->IsType( FRAME_SCH_LIB_EDITOR ), m_fieldId, &m_text ) ); // Disable options for graphic text editing which are not needed for fields. m_CommonConvert->Show( false ); m_CommonUnit->Show( false ); // Show the footprint selection dialog if this is the footprint field. if( m_fieldId == FOOTPRINT ) { m_TextValueSelectButton->Show(); m_TextValueSelectButton->Enable(); } else { m_TextValueSelectButton->Hide(); m_TextValueSelectButton->Disable(); } msg = m_TextSizeText->GetLabel() + ReturnUnitSymbol(); m_TextSizeText->SetLabel( msg ); // Value fields of power components cannot be modified. This will grey out // the text box and display an explanation. if( m_fieldId == VALUE && m_isPower ) { m_PowerComponentValues->Show( true ); m_TextValue->Enable( false ); } else { m_PowerComponentValues->Show( false ); m_TextValue->Enable( true ); } m_sdbSizerButtonsOK->SetDefault(); FixOSXCancelButtonIssue(); // Now all widgets have the size fixed, call FinishDialogSettings FinishDialogSettings(); }
DIALOG_EDIT_COMPONENT_IN_LIBRARY::DIALOG_EDIT_COMPONENT_IN_LIBRARY( LIB_EDIT_FRAME* aParent ): DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE( aParent ) { m_Parent = aParent; m_RecreateToolbar = false; initDlg(); FixOSXCancelButtonIssue(); // Now all widgets have the size fixed, call FinishDialogSettings FinishDialogSettings(); }
DIALOG_LIBEDIT_OPTIONS::DIALOG_LIBEDIT_OPTIONS( LIB_EDIT_FRAME* parent ) : DIALOG_LIBEDIT_OPTIONS_BASE( parent ) { m_sdbSizerOK->SetDefault(); SetRepeatLabelInc( Parent()->GetRepeatDeltaLabel() ); SetItemRepeatStep( Parent()->GetRepeatStep() ); SetPinRepeatStep( Parent()->GetRepeatPinStep() ); FixOSXCancelButtonIssue(); // Now all widgets have the size fixed, call FinishDialogSettings FinishDialogSettings(); }
DIALOG_DRC_CONTROL::DIALOG_DRC_CONTROL( DRC* aTester, PCB_EDIT_FRAME* aEditorFrame, wxWindow* aParent ) : DIALOG_DRC_CONTROL_BASE( aParent ) { m_tester = aTester; m_brdEditor = aEditorFrame; m_currentBoard = m_brdEditor->GetBoard(); m_BrdSettings = m_brdEditor->GetBoard()->GetDesignSettings(); InitValues(); FixOSXCancelButtonIssue(); // Now all widgets have the size fixed, call FinishDialogSettings FinishDialogSettings(); }
DIALOG_GRAPHIC_ITEM_PROPERTIES::DIALOG_GRAPHIC_ITEM_PROPERTIES( PCB_EDIT_FRAME* aParent, DRAWSEGMENT* aItem, wxDC* aDC ): DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE( aParent ), m_AngleValidator( 1, &m_AngleValue ), m_AngleValue( 0.0 ) { m_parent = aParent; m_DC = aDC; m_item = aItem; m_brdSettings = m_parent->GetDesignSettings(); m_AngleValidator.SetRange( -360.0, 360.0 ); m_AngleCtrl->SetValidator( m_AngleValidator ); m_AngleValidator.SetWindow( m_AngleCtrl ); m_StandardButtonsSizerOK->SetDefault(); FixOSXCancelButtonIssue(); }
DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES( PCB_BASE_FRAME* aParent, const SELECTION& aItems ) : DIALOG_TRACK_VIA_PROPERTIES_BASE( aParent ), m_items( aItems ), m_trackStartX( aParent, m_TrackStartXCtrl, m_TrackStartXUnit ), m_trackStartY( aParent, m_TrackStartYCtrl, m_TrackStartYUnit ), m_trackEndX( aParent, m_TrackEndXCtrl, m_TrackEndXUnit ), m_trackEndY( aParent, m_TrackEndYCtrl, m_TrackEndYUnit ), m_trackWidth( aParent, m_TrackWidthCtrl, m_TrackWidthUnit ), m_viaX( aParent, m_ViaXCtrl, m_ViaXUnit ), m_viaY( aParent, m_ViaYCtrl, m_ViaYUnit ), m_viaDiameter( aParent, m_ViaDiameterCtrl, m_ViaDiameterUnit ), m_viaDrill( aParent, m_ViaDrillCtrl, m_ViaDrillUnit ), m_tracks( false ), m_vias( false ) { assert( !m_items.Empty() ); // This is a way to trick gcc into considering these variables as initialized boost::optional<int> trackStartX = boost::make_optional<int>( false, 0 ); boost::optional<int> trackStartY = boost::make_optional<int>( false, 0 ); boost::optional<int> trackEndX = boost::make_optional<int>( false, 0 ); boost::optional<int> trackEndY = boost::make_optional<int>( false, 0 ); boost::optional<int> trackWidth = boost::make_optional<int>( false, 0 ); boost::optional<LAYER_ID> trackLayer = boost::make_optional<LAYER_ID>( false, (LAYER_ID) 0 ); boost::optional<int> viaX, viaY, viaDiameter; boost::optional<int> viaDrill = boost::make_optional<int>( false, 0 ); bool hasLocked = false; bool hasUnlocked = false; // Look for values that are common for every item that is selected for( auto& item : m_items ) { switch( item->Type() ) { case PCB_TRACE_T: { const TRACK* t = static_cast<const TRACK*>( item ); if( !m_tracks ) // first track in the list { trackStartX = t->GetStart().x; trackStartY = t->GetStart().y; trackEndX = t->GetEnd().x; trackEndY = t->GetEnd().y; trackWidth = t->GetWidth(); trackLayer = t->GetLayer(); m_tracks = true; } else // check if values are the same for every selected track { if( trackStartX && ( *trackStartX != t->GetStart().x ) ) trackStartX = boost::none; if( trackStartY && ( *trackStartY != t->GetStart().y ) ) trackStartY = boost::none; if( trackEndX && ( *trackEndX != t->GetEnd().x ) ) trackEndX = boost::none; if( trackEndY && ( *trackEndY != t->GetEnd().y ) ) trackEndY = boost::none; if( trackWidth && ( *trackWidth != t->GetWidth() ) ) trackWidth = boost::none; if( trackLayer && ( *trackLayer != t->GetLayer() ) ) trackLayer = boost::none; } if( t->IsLocked() ) hasLocked = true; else hasUnlocked = true; break; } case PCB_VIA_T: { const VIA* v = static_cast<const VIA*>( item ); if( !m_vias ) // first via in the list { viaX = v->GetPosition().x; viaY = v->GetPosition().y; viaDiameter = v->GetWidth(); viaDrill = v->GetDrillValue(); m_vias = true; } else // check if values are the same for every selected via { if( viaX && ( *viaX != v->GetPosition().x ) ) viaX = boost::none; if( viaY && ( *viaY != v->GetPosition().y ) ) viaY = boost::none; if( viaDiameter && ( *viaDiameter != v->GetWidth() ) ) viaDiameter = boost::none; if( viaDrill && ( *viaDrill != v->GetDrillValue() ) ) viaDrill = boost::none; } if( v->IsLocked() ) hasLocked = true; else hasUnlocked = true; break; } default: assert( false ); break; } } assert( m_tracks || m_vias ); if( m_vias ) { setCommonVal( viaX, m_ViaXCtrl, m_viaX ); setCommonVal( viaY, m_ViaYCtrl, m_viaY ); setCommonVal( viaDiameter, m_ViaDiameterCtrl, m_viaDiameter ); setCommonVal( viaDrill, m_ViaDrillCtrl, m_viaDrill ); m_ViaDiameterCtrl->SetFocus(); } else { m_MainSizer->Hide( m_sbViaSizer, true ); } if( m_tracks ) { setCommonVal( trackStartX, m_TrackStartXCtrl, m_trackStartX ); setCommonVal( trackStartY, m_TrackStartYCtrl, m_trackStartY ); setCommonVal( trackEndX, m_TrackEndXCtrl, m_trackEndX ); setCommonVal( trackEndY, m_TrackEndYCtrl, m_trackEndY ); setCommonVal( trackWidth, m_TrackWidthCtrl, m_trackWidth ); m_TrackLayerCtrl->SetLayersHotkeys( false ); m_TrackLayerCtrl->SetLayerSet( LSET::AllNonCuMask() ); m_TrackLayerCtrl->SetBoardFrame( aParent ); m_TrackLayerCtrl->Resync(); if( trackLayer ) m_TrackLayerCtrl->SetLayerSelection( *trackLayer ); m_TrackWidthCtrl->SetFocus(); } else { m_MainSizer->Hide( m_sbTrackSizer, true ); } if( hasLocked && hasUnlocked ) { m_lockedCbox->Set3StateValue( wxCHK_UNDETERMINED ); } else if( hasLocked ) { m_lockedCbox->Set3StateValue( wxCHK_CHECKED ); } else { m_lockedCbox->Set3StateValue( wxCHK_UNCHECKED ); } m_StdButtonsOK->SetDefault(); FixOSXCancelButtonIssue(); // Pressing ENTER when any of the text input fields is active applies changes Connect( wxEVT_TEXT_ENTER, wxCommandEventHandler( DIALOG_TRACK_VIA_PROPERTIES::onOkClick ), NULL, this ); }
DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES( PCB_BASE_FRAME* aParent, const SELECTION& aItems ) : DIALOG_TRACK_VIA_PROPERTIES_BASE( aParent ), m_items( aItems ), m_trackStartX( aParent, m_TrackStartXCtrl, m_TrackStartXUnit ), m_trackStartY( aParent, m_TrackStartYCtrl, m_TrackStartYUnit ), m_trackEndX( aParent, m_TrackEndXCtrl, m_TrackEndXUnit ), m_trackEndY( aParent, m_TrackEndYCtrl, m_TrackEndYUnit ), m_trackWidth( aParent, m_TrackWidthCtrl, m_TrackWidthUnit ), m_viaX( aParent, m_ViaXCtrl, m_ViaXUnit ), m_viaY( aParent, m_ViaYCtrl, m_ViaYUnit ), m_viaDiameter( aParent, m_ViaDiameterCtrl, m_ViaDiameterUnit ), m_viaDrill( aParent, m_ViaDrillCtrl, m_ViaDrillUnit ), m_tracks( false ), m_vias( false ) { assert( !m_items.Empty() ); boost::optional<int> trackStartX, trackStartY, trackEndX, trackEndY, trackWidth; boost::optional<LAYER_ID> trackLayer; boost::optional<int> viaX, viaY, viaDiameter, viaDrill; // Look for values that are common for every item that is selected for( int i = 0; i < m_items.Size(); ++i ) { const BOARD_ITEM* item = m_items.Item<BOARD_ITEM>( i ); switch( item->Type() ) { case PCB_TRACE_T: { const TRACK* t = static_cast<const TRACK*>( item ); if( !m_tracks ) // first track in the list { trackStartX = t->GetStart().x; trackStartY = t->GetStart().y; trackEndX = t->GetEnd().x; trackEndY = t->GetEnd().y; trackWidth = t->GetWidth(); trackLayer = t->GetLayer(); m_tracks = true; } else // check if values are the same for every selected track { if( trackStartX && *trackStartX != t->GetStart().x ) trackStartX = boost::none; if( trackStartY && *trackStartY != t->GetStart().y ) trackStartY = boost::none; if( trackEndX && *trackEndX != t->GetEnd().x ) trackEndX = boost::none; if( trackEndY && *trackEndY != t->GetEnd().y ) trackEndY = boost::none; if( trackWidth && *trackWidth != t->GetWidth() ) trackWidth = boost::none; if( trackLayer && *trackLayer != t->GetLayer() ) trackLayer = boost::none; } break; } case PCB_VIA_T: { const VIA* v = static_cast<const VIA*>( item ); if( !m_vias ) // first via in the list { viaX = v->GetPosition().x; viaY = v->GetPosition().y; viaDiameter = v->GetWidth(); viaDrill = v->GetDrillValue(); m_vias = true; } else // check if values are the same for every selected via { if( viaX && *viaX != v->GetPosition().x ) viaX = boost::none; if( viaY && *viaY != v->GetPosition().y ) viaY = boost::none; if( viaDiameter && *viaDiameter != v->GetWidth() ) viaDiameter = boost::none; if( viaDrill && *viaDrill != v->GetDrillValue() ) viaDrill = boost::none; } break; } default: assert( false ); break; } } assert( m_tracks || m_vias ); if( m_vias ) { setCommonVal( viaX, m_ViaXCtrl, m_viaX ); setCommonVal( viaY, m_ViaYCtrl, m_viaY ); setCommonVal( viaDiameter, m_ViaDiameterCtrl, m_viaDiameter ); setCommonVal( viaDrill, m_ViaDrillCtrl, m_viaDrill ); m_ViaDiameterCtrl->SetFocus(); } else { m_MainSizer->Hide( m_sbViaSizer, true ); } if( m_tracks ) { setCommonVal( trackStartX, m_TrackStartXCtrl, m_trackStartX ); setCommonVal( trackStartY, m_TrackStartYCtrl, m_trackStartY ); setCommonVal( trackEndX, m_TrackEndXCtrl, m_trackEndX ); setCommonVal( trackEndY, m_TrackEndYCtrl, m_trackEndY ); setCommonVal( trackWidth, m_TrackWidthCtrl, m_trackWidth ); m_TrackLayerCtrl->SetLayersHotkeys( false ); m_TrackLayerCtrl->SetLayerSet( LSET::AllNonCuMask() ); m_TrackLayerCtrl->SetBoardFrame( aParent ); m_TrackLayerCtrl->Resync(); if( trackLayer ) m_TrackLayerCtrl->SetLayerSelection( *trackLayer ); m_TrackWidthCtrl->SetFocus(); } else { m_MainSizer->Hide( m_sbTrackSizer, true ); } m_StdButtonsOK->SetDefault(); FixOSXCancelButtonIssue(); // Now all widgets have the size fixed, call FinishDialogSettings FinishDialogSettings(); // Pressing ENTER when any of the text input fields is active applies changes Connect( wxEVT_TEXT_ENTER, wxCommandEventHandler( DIALOG_TRACK_VIA_PROPERTIES::onOkClick ), NULL, this ); }