diff --git a/3d-viewer/3d_canvas.cpp b/3d-viewer/3d_canvas.cpp index 2f39244659..05019ed0f6 100644 --- a/3d-viewer/3d_canvas.cpp +++ b/3d-viewer/3d_canvas.cpp @@ -639,7 +639,8 @@ void Pcb3D_GLCanvas::TakeScreenshot( wxCommandEvent& event ) if( wxTheClipboard->Open() ) { if( !wxTheClipboard->SetData( dobjBmp ) ) - wxLogError( _T( "Failed to copy image to clipboard" ) ); + wxMessageBox( _( "Failed to copy image to clipboard" ) ); + wxTheClipboard->Flush(); /* the data in clipboard will stay * available after the * application exits */ @@ -653,7 +654,7 @@ void Pcb3D_GLCanvas::TakeScreenshot( wxCommandEvent& event ) if( !image.SaveFile( FullFileName, fmt_is_jpeg ? wxBITMAP_TYPE_JPEG : wxBITMAP_TYPE_PNG ) ) - wxLogError( wxT( "Can't save file" ) ); + wxMessageBox( _( "Can't save file" ) ); image.Destroy(); } diff --git a/common/confirm.cpp b/common/confirm.cpp index 7d00da24e5..7d78bb5599 100644 --- a/common/confirm.cpp +++ b/common/confirm.cpp @@ -114,32 +114,3 @@ bool IsOK( wxWindow* parent, const wxString& text ) return FALSE; } - -/* Get a text from user - * Title = title to display - * Buffer: enter text by user - * Leading and trailing spaces are removed - * Buffer is the initial text displayed, anr the returned text - * Return: - * 0 if OK - * 1 if CANCEL - */ -int Get_Message( const wxString& title, // The question - const wxString& frame_caption, // The frame caption - wxString& buffer, // String input/return buffer - wxWindow* frame ) -{ - wxString message; - - message = wxGetTextFromUser( title, frame_caption, - buffer, frame ); - if( !message.IsEmpty() ) - { - message.Trim( FALSE ); // Remove blanks at beginning - message.Trim( TRUE ); // Remove blanks at end - buffer = message; - return 0; - } - - return 1; -} diff --git a/eeschema/dialog_eeschema_config.cpp b/eeschema/dialog_eeschema_config.cpp index d0218756e5..ba8be14bc7 100644 --- a/eeschema/dialog_eeschema_config.cpp +++ b/eeschema/dialog_eeschema_config.cpp @@ -277,7 +277,7 @@ void DIALOG_EESCHEMA_CONFIG::OnRemoveLibClick( wxCommandEvent& event ) if( m_ListLibr->GetCount() > 0 && selections.GetCount() > 0 ) { int pos = selections[selections.GetCount()-1]; - if( pos == m_ListLibr->GetCount() ) + if( pos == (int)m_ListLibr->GetCount() ) pos = m_ListLibr->GetCount() - 1; m_ListLibr->SetSelection( pos ); } diff --git a/eeschema/edit_component_in_lib.cpp b/eeschema/edit_component_in_lib.cpp index 76c4dffd1b..3f36b49262 100644 --- a/eeschema/edit_component_in_lib.cpp +++ b/eeschema/edit_component_in_lib.cpp @@ -228,7 +228,6 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::AddAliasOfPart( wxCommandEvent& WXUNUSED * New name cannot be the root name, and must not exists */ { - wxString Line; wxString aliasname; LIB_COMPONENT* component = m_Parent->GetComponent(); CMP_LIBRARY* library = m_Parent->GetLibrary(); @@ -236,12 +235,15 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::AddAliasOfPart( wxCommandEvent& WXUNUSED if( component == NULL ) return; - if( Get_Message( _( "New alias:" ), - _( "Component Alias" ), Line, this ) != 0 ) - return; + wxTextEntryDialog dlg( this, _( "New alias:" ), _( "Component Alias" ), aliasname ); + if( dlg.ShowModal() != wxID_OK ) + return; // cancelled by user - Line.Replace( wxT( " " ), wxT( "_" ) ); - aliasname = Line; + aliasname = dlg.GetValue( ); + + aliasname.Replace( wxT( " " ), wxT( "_" ) ); + if( aliasname.IsEmpty() ) + return; if( m_PartAliasListCtrl->FindString( aliasname ) != wxNOT_FOUND || library->FindEntry( aliasname ) != NULL ) @@ -405,8 +407,8 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::DeleteAllFootprintFilter( void DIALOG_EDIT_COMPONENT_IN_LIBRARY::AddFootprintFilter( wxCommandEvent& WXUNUSED (event) ) /*******************************************************************************/ -/* Add a new name to the alias list box - * New name cannot be the root name, and must not exists +/* Add a new name to the footprint filter list box + * Obvioulsy, cannot be void */ { wxString Line; @@ -415,12 +417,16 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::AddFootprintFilter( wxCommandEvent& WXUNU if( component == NULL ) return; - if( Get_Message( _( "Add Footprint Filter" ), _( "Footprint Filter" ), - Line, this ) != 0 ) - return; + wxTextEntryDialog dlg( this, _( "Add Footprint Filter" ), _( "Footprint Filter" ), Line ); + if( dlg.ShowModal() != wxID_OK ) + return; // cancelled by user + Line = dlg.GetValue( ); Line.Replace( wxT( " " ), wxT( "_" ) ); + if( Line.IsEmpty() ) + return; + /* test for an existing name: */ int index = m_FootprintFilterListBox->FindString( Line ); diff --git a/eeschema/edit_component_in_schematic.cpp b/eeschema/edit_component_in_schematic.cpp index 1b935ea972..668ea30930 100644 --- a/eeschema/edit_component_in_schematic.cpp +++ b/eeschema/edit_component_in_schematic.cpp @@ -128,9 +128,17 @@ modified!\nYou must create a new power" ) ); wxString newtext = Field->m_Text; DrawPanel->m_IgnoreMouseEvents = TRUE; - Get_Message( Field->m_Name, _( "Component field text" ), newtext, this ); + + wxTextEntryDialog dlg( this, Field->m_Name, _( "Component field text" ), newtext ); + int diag = dlg.ShowModal(); + newtext = dlg.GetValue( ); + newtext.Trim( true ); + newtext.Trim( false ); + DrawPanel->MouseToCursorSchema(); DrawPanel->m_IgnoreMouseEvents = FALSE; + if ( diag != wxID_OK ) + return; // cancelled by user Field->m_AddExtraText = flag; Field->Draw( DrawPanel, DC, wxPoint( 0, 0 ), g_XorMode ); @@ -295,7 +303,13 @@ void WinEDA_SchematicFrame::EditComponentReference( SCH_COMPONENT* Cmp, wxDC* DC flag = 1; wxString ref = Cmp->GetRef( GetSheet() ); - Get_Message( _( "Reference" ), _( "Component reference" ), ref, this ); + wxTextEntryDialog dlg( this, _( "Reference" ), _( "Component reference" ), ref ); + if( dlg.ShowModal() != wxID_OK ) + return; // cancelled by user + + ref = dlg.GetValue( ); + ref.Trim( true ); + ref.Trim( false ); if( !ref.IsEmpty() ) // New text entered { @@ -335,8 +349,14 @@ void WinEDA_SchematicFrame::EditComponentValue( SCH_COMPONENT* Cmp, wxDC* DC ) SCH_FIELD* TextField = Cmp->GetField( VALUE ); message = TextField->m_Text; - if( Get_Message( _( "Value" ), _( "Component value" ), message, this ) ) - message.Empty(); //allow the user to remove the value. + + wxTextEntryDialog dlg( this, _( "Value" ), _( "Component value" ), message ); + if( dlg.ShowModal() != wxID_OK ) + return; // cancelled by user + + message = dlg.GetValue( ); + message.Trim( true ); + message.Trim( false ); if( !message.IsEmpty() ) { @@ -371,8 +391,13 @@ void WinEDA_SchematicFrame::EditComponentFootprint( SCH_COMPONENT* Cmp, wxDC* DC SCH_FIELD* TextField = Cmp->GetField( FOOTPRINT ); message = TextField->m_Text; - if( Get_Message( _( "Footprint" ), _( "Component footprint" ), message, this ) ) - return; // edition cancelled by user. + wxTextEntryDialog dlg( this, _( "Footprint" ), _( "Component footprint" ), message ); + if( dlg.ShowModal() != wxID_OK ) + return; // cancelled by user + + message = dlg.GetValue( ); + message.Trim( true ); + message.Trim( false ); bool wasEmpty = false; if( TextField->m_Text.IsEmpty() ) diff --git a/eeschema/libedit.cpp b/eeschema/libedit.cpp index 6e639c002a..fa6715b5d1 100644 --- a/eeschema/libedit.cpp +++ b/eeschema/libedit.cpp @@ -211,8 +211,18 @@ void WinEDA_LibeditFrame::RedrawActiveWindow( wxDC* DC, bool EraseBg ) DrawPanel->DrawBackGround( DC ); if( m_component ) + { + // display reference like in schematic (a reference U is shown U? or U?A) + // although it is stored without ? and part id. + // So temporary change the reference by a schematic like reference + LIB_FIELD* Field = m_component->GetField( REFERENCE ); + wxString fieldText = Field->m_Text; + wxString fieldfullText = Field->GetFullText( m_unit ); + Field->m_Text = fieldfullText; m_component->Draw( DrawPanel, DC, wxPoint( 0, 0 ), m_unit, m_convert, GR_DEFAULT_DRAWMODE ); + Field->m_Text = fieldText; + } GetScreen()->ClrRefreshReq(); diff --git a/eeschema/libfield.cpp b/eeschema/libfield.cpp index b256174cf4..846f511767 100644 --- a/eeschema/libfield.cpp +++ b/eeschema/libfield.cpp @@ -27,7 +27,7 @@ static void AbortMoveField( WinEDA_DrawPanel* Panel, wxDC* DC ) Panel->ManageCurseur = NULL; Panel->ForceCloseManageCurseur = NULL; - WinEDA_LibeditFrame* parent = ( WinEDA_LibeditFrame* ) Panel->GetParent(); + WinEDA_LibeditFrame* parent = (WinEDA_LibeditFrame*) Panel->GetParent(); if( parent == NULL ) return; @@ -37,7 +37,7 @@ static void AbortMoveField( WinEDA_DrawPanel* Panel, wxDC* DC ) if( item == NULL ) return; - wxPoint curpos = Panel->GetScreen()->m_Curseur; + wxPoint curpos = Panel->GetScreen()->m_Curseur; Panel->GetScreen()->m_Curseur = s_InitialPosition; ShowMoveField( Panel, DC, true ); @@ -54,9 +54,9 @@ void WinEDA_LibeditFrame::StartMoveField( wxDC* DC, LIB_FIELD* field ) if( ( m_component == NULL ) || ( field == NULL ) ) return; - m_drawItem = field; + m_drawItem = field; s_InitialPosition = field->m_Pos; - NEGATE(s_InitialPosition.y); + NEGATE( s_InitialPosition.y ); m_drawItem->m_Flags |= IS_MOVED; DrawPanel->CursorOff( DC ); @@ -90,7 +90,7 @@ static void ShowMoveField( WinEDA_DrawPanel* panel, wxDC* DC, bool erase ) return; wxString text = Field->GetFullText( parent->GetUnit() ); - wxPoint offset ; + wxPoint offset; offset.x = s_LastPosition.x - Field->m_Pos.x; offset.y = s_LastPosition.y + Field->m_Pos.y; @@ -123,7 +123,7 @@ void WinEDA_LibeditFrame::PlaceField( wxDC* DC, LIB_FIELD* Field ) &fieldText, DefaultTransformMatrix ); DrawPanel->CursorOn( DC ); - OnModify( ); + OnModify(); DrawPanel->ManageCurseur = NULL; DrawPanel->ForceCloseManageCurseur = NULL; m_drawItem = NULL; @@ -132,8 +132,9 @@ void WinEDA_LibeditFrame::PlaceField( wxDC* DC, LIB_FIELD* Field ) void WinEDA_LibeditFrame::EditField( wxDC* DC, LIB_FIELD* Field ) { - wxString Text; - wxString title; + wxString Text; + wxString title; + bool save = true; if( Field == NULL ) return; @@ -141,11 +142,11 @@ void WinEDA_LibeditFrame::EditField( wxDC* DC, LIB_FIELD* Field ) switch( Field->m_FieldId ) { case REFERENCE: - title = wxT( "Reference:" ); + title = _( "Reference:" ); break; case VALUE: - title = wxT( "Component Name / Value:" ); + title = _( "Component Name / Value:" ); break; default: @@ -154,10 +155,25 @@ void WinEDA_LibeditFrame::EditField( wxDC* DC, LIB_FIELD* Field ) Text = Field->m_Text; - /* FIXME: Use wxTextEntry dialog here and check for cancel button. */ - Get_Message( title, _( "Edit field" ), Text, this ); + { + wxTextEntryDialog dlg( this, title, _( "Edit field" ), Text ); + if( dlg.ShowModal() != wxID_OK ) + return; // cancelled by user + Text = dlg.GetValue( ); + } + Text.Replace( wxT( " " ), wxT( "_" ) ); + if( Field->m_FieldId == REFERENCE || Field->m_FieldId == VALUE ) + { + if( Text.IsEmpty ( ) ) + { + DisplayError( this, _( "Value or Reference cannot be void. Aborted" ) ); + return; + } + } + + wxString fieldText = Field->GetFullText( m_unit ); /* If the value field is changed, this is equivalent to creating a new @@ -172,11 +188,12 @@ void WinEDA_LibeditFrame::EditField( wxDC* DC, LIB_FIELD* Field ) /* Test for an existing name in the current components alias list. */ if( Field->GetParent()->m_AliasList.Index( Text, false ) != wxNOT_FOUND ) { - msg.Printf( _( "The field name <%s> is an existing alias of the \ + msg.Printf( _( + "The field name <%s> is an existing alias of the \ component <%s>.\nPlease choose another name that does not conflict with any \ names in the alias list." ), - GetChars( Text ), - GetChars( Field->GetParent()->GetName() ) ); + GetChars( Text ), + GetChars( Field->GetParent()->GetName() ) ); DisplayError( this, msg ); return; } @@ -186,15 +203,18 @@ names in the alias list." ), */ if( m_library && m_library->FindEntry( Text ) != NULL ) { - msg.Printf( _( "The field name <%s> conflicts with an existing \ + msg.Printf( _( + "The field name <%s> conflicts with an existing \ entry in the component library <%s>.\nPlease choose another name that does \ -not conflict with any library entries." ), - GetChars( Text ), - GetChars( m_library->GetName() ) ); +not conflict with any library entries." ), + GetChars( Text ), + GetChars( m_library->GetName() ) ); DisplayError( this, msg ); return; } + SaveCopyInUndoList( Field->GetParent() ); + save = false; Field->GetParent()->SetName( Text ); } @@ -203,7 +223,8 @@ not conflict with any library entries." ), if( !Text.IsEmpty() ) { - SaveCopyInUndoList( Field->GetParent() ); + if( save ) + SaveCopyInUndoList( Field->GetParent() ); Field->m_Text = Text; } else @@ -220,7 +241,7 @@ not conflict with any library entries." ), Field->Draw( DrawPanel, DC, wxPoint( 0, 0 ), -1, drawMode, &fieldText, DefaultTransformMatrix ); - OnModify( ); + OnModify(); UpdateAliasSelectList(); } @@ -233,11 +254,10 @@ not conflict with any library entries." ), */ void WinEDA_LibeditFrame::RotateField( wxDC* DC, LIB_FIELD* Field ) { - if( Field == NULL ) return; - OnModify( ); + OnModify(); DrawPanel->CursorOff( DC ); GRSetDrawMode( DC, g_XorMode ); @@ -247,9 +267,9 @@ void WinEDA_LibeditFrame::RotateField( wxDC* DC, LIB_FIELD* Field ) ShowMoveField( DrawPanel, DC, false ); else Field->Draw( DrawPanel, DC, wxPoint( 0, 0 ), -1, g_XorMode, &fieldText, - DefaultTransformMatrix ); + DefaultTransformMatrix ); - if( Field->m_Orient == TEXT_ORIENT_VERT) + if( Field->m_Orient == TEXT_ORIENT_VERT ) Field->m_Orient = TEXT_ORIENT_HORIZ; else Field->m_Orient = TEXT_ORIENT_VERT; @@ -263,7 +283,7 @@ void WinEDA_LibeditFrame::RotateField( wxDC* DC, LIB_FIELD* Field ) ShowMoveField( DrawPanel, DC, false ); else Field->Draw( DrawPanel, DC, wxPoint( 0, 0 ), -1, drawMode, &fieldText, - DefaultTransformMatrix ); + DefaultTransformMatrix ); DrawPanel->CursorOn( DC ); } diff --git a/include/confirm.h b/include/confirm.h index 3a2f4c162b..942d45e012 100644 --- a/include/confirm.h +++ b/include/confirm.h @@ -16,10 +16,4 @@ void DisplayInfoMessage( wxWindow* parent, const wxString& msg, bool IsOK( wxWindow* parent, const wxString& msg ); -int Get_Message( const wxString& title, - const wxString& frame_caption, - wxString& buffer, - wxWindow* frame ); - - #endif /* __INCLUDE__CONFIRM_H__ */ diff --git a/include/wxBasePcbFrame.h b/include/wxBasePcbFrame.h index 4e487f6d99..b5482df36d 100644 --- a/include/wxBasePcbFrame.h +++ b/include/wxBasePcbFrame.h @@ -226,8 +226,16 @@ public: virtual void OnModify( ); // Modules (footprints) - MODULE* Create_1_Module( wxDC* DC, - const wxString& module_name ); + /** Function Create_1_Module + * Creates a new module or footprint : A new module contains 2 texts : + * First = REFERENCE + * Second = VALUE: "VAL**" + * the new module is added to the board module list + * @param aModuleName = name of the new footprint + * (will the component reference in board) + * @return a pointer to the new module + */ + MODULE* Create_1_Module( const wxString& module_name ); void Edit_Module( MODULE* module, wxDC* DC ); void Rotate_Module( wxDC* DC, MODULE* module, diff --git a/include/wxPcbStruct.h b/include/wxPcbStruct.h index 7fe27b2bfd..4f7c0e672f 100644 --- a/include/wxPcbStruct.h +++ b/include/wxPcbStruct.h @@ -1178,9 +1178,20 @@ public: void RemoveStruct( EDA_BaseStruct* Item ); void Transform( MODULE* module, int transform ); - // loading/exporting Footprint - MODULE* Import_Module( wxDC* DC ); + // importing / exporting Footprint void Export_Module( MODULE* ptmod, bool createlib ); + /** + * Function Import_Module + * Read a file containing only one footprint. + * Used to import (after exporting) a footprint + * Exported files have the standard ext .emp + * This is the same format as .mod files but restricted to only one footprint + * The import function can also read gpcb footprint file, in Newlib format + * (One footprint per file, Newlib files have no special ext.) + * @param DC = Current Device Context (can be NULL) + */ + MODULE* Import_Module( ); + /** function Load_Module_From_BOARD * load in Modedit a footfrint from the main board @@ -1198,22 +1209,27 @@ public: // functions to edit footprint edges - /** - * Function Edit_Edge_Width + /** Function Edit_Edge_Width * changes the width of module perimeter lines, EDGE_MODULEs. - * @param ModuleSegmentWidth (global) = new width - * @param Edge = edge to edit, or NULL. If Edge == NULL change - * the width of all the footprint's edges - * @param DC = current Device Context + * param ModuleSegmentWidth (global) = new width + * @param aEdge = edge to edit, or NULL. If aEdge == NULL change + * the width of all footprint's edges */ - void Edit_Edge_Width( EDGE_MODULE* Edge ); + void Edit_Edge_Width( EDGE_MODULE* aEdge ); void Edit_Edge_Layer( EDGE_MODULE* Edge ); void Delete_Edge_Module( EDGE_MODULE* Edge ); EDGE_MODULE* Begin_Edge_Module( EDGE_MODULE* Edge, wxDC* DC, int type_edge ); - void End_Edge_Module( EDGE_MODULE* Edge, wxDC* DC ); - void Enter_Edge_Width( EDGE_MODULE* Edge, wxDC* DC ); + void End_Edge_Module( EDGE_MODULE* Edge ); + /** function Enter_Edge_Width + * Edition of the edge items width + * Ask for a new width. + * Change the width of EDGE_MODULE Edge if aEdge != NULL + * @param aEdge = edge to edit, or NULL + * @output ModuleSegmentWidth (global) = new width + */ + void Enter_Edge_Width( EDGE_MODULE* aEdge ); void Start_Move_EdgeMod( EDGE_MODULE* drawitem, wxDC* DC ); - void Place_EdgeMod( EDGE_MODULE* drawitem, wxDC* DC ); + void Place_EdgeMod( EDGE_MODULE* drawitem ); // handlers for libraries: void Delete_Module_In_Library( const wxString& libname ); diff --git a/kicad/tree_project_frame.cpp b/kicad/tree_project_frame.cpp index 044f6e0a1e..98b48b7a1d 100644 --- a/kicad/tree_project_frame.cpp +++ b/kicad/tree_project_frame.cpp @@ -853,8 +853,15 @@ void TREE_PROJECT_FRAME::OnRenameFile( wxCommandEvent& ) wxString buffer = m_TreeProject->GetItemText( curr_item ); wxString msg = _( "Change filename: " ) + tree_data->m_FileName; - if( Get_Message( msg, _( "Change filename" ), buffer, this ) != 0 ) - return; //Abort command + wxTextEntryDialog dlg( this, msg, _( "Change filename" ), buffer ); + if( dlg.ShowModal() != wxID_OK ) + return; // cancelled by user + + buffer = dlg.GetValue( ); + buffer.Trim( true ); + buffer.Trim( false ); + if( buffer.IsEmpty() ) + return; // empty file name not allowed if( tree_data->Rename( buffer, true ) ) m_TreeProject->SetItemText( curr_item, buffer ); diff --git a/pcbnew/class_board_connected_item.cpp b/pcbnew/class_board_connected_item.cpp index ae89f5f9cd..b9315ed2c6 100644 --- a/pcbnew/class_board_connected_item.cpp +++ b/pcbnew/class_board_connected_item.cpp @@ -128,7 +128,9 @@ NETCLASS* BOARD_CONNECTED_ITEM::GetNetClass() const netclass = net->GetNetClass(); #ifdef __WXDEBUG__ if( netclass == NULL ) + { wxLogWarning(wxT("BOARD_CONNECTED_ITEM::GetNetClass(): NULL netclass") ); + } #endif } diff --git a/pcbnew/class_module.cpp b/pcbnew/class_module.cpp index 133004a27e..d7ae2d2eaa 100644 --- a/pcbnew/class_module.cpp +++ b/pcbnew/class_module.cpp @@ -38,7 +38,7 @@ MODULE::MODULE( BOARD* parent ) : m_CntRot90 = m_CntRot180 = 0; m_Surface = 0.0; m_Link = 0; - m_LastEdit_Time = time( NULL ); + m_LastEdit_Time = time( NULL ); m_LocalClearance = 0; m_LocalSolderMaskMargin = 0; m_LocalSolderPasteMargin = 0; @@ -59,6 +59,7 @@ MODULE::~MODULE() delete m_Value; } + /* Draw the anchor cross (vertical) * Must be done after the pads, because drawing the hole will erase overwrite * every thing already drawn. @@ -76,7 +77,7 @@ void MODULE::DrawAncre( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset if( GetBoard()->IsElementVisible( ANCHOR_VISIBLE ) ) { - int color = g_ColorsSettings.GetItemColor(ANCHOR_VISIBLE); + int color = g_ColorsSettings.GetItemColor( ANCHOR_VISIBLE ); GRLine( &panel->m_ClipBox, DC, m_Pos.x - offset.x - anchor_size, m_Pos.y - offset.y, m_Pos.x - offset.x + anchor_size, m_Pos.y - offset.y, @@ -158,9 +159,9 @@ void MODULE::Copy( MODULE* aModule ) if( item->m_Shape3DName.IsEmpty() ) // do not copy empty shapes. continue; S3D_MASTER* t3d = m_3D_Drawings; - if( t3d && t3d->m_Shape3DName.IsEmpty() ) // The first entry can - // exist, but is empty : - // use it. + if( t3d && t3d->m_Shape3DName.IsEmpty() ) // The first entry can + // exist, but is empty : + // use it. t3d->Copy( item ); else { @@ -196,7 +197,7 @@ void MODULE::Draw( WinEDA_DrawPanel* panel, wxDC* DC, pad->Draw( panel, DC, draw_mode, offset ); } - BOARD * brd = GetBoard(); + BOARD* brd = GetBoard(); // Draws footprint anchor DrawAncre( panel, DC, offset, DIM_ANCRE_MODULE, draw_mode ); @@ -302,13 +303,13 @@ bool MODULE::Save( FILE* aFile ) const fprintf( aFile, "AR %s\n", CONV_TO_UTF8( m_Path ) ); fprintf( aFile, "Op %X %X 0\n", m_CntRot90, m_CntRot180 ); if( m_LocalSolderMaskMargin != 0 ) - fprintf( aFile, ".SolderMask %d\n",m_LocalSolderMaskMargin ); + fprintf( aFile, ".SolderMask %d\n", m_LocalSolderMaskMargin ); if( m_LocalSolderPasteMargin != 0 ) - fprintf( aFile, ".SolderPaste %d\n",m_LocalSolderPasteMargin); - if( m_LocalSolderPasteMarginRatio != 0) - fprintf( aFile, ".SolderPasteRatio %g\n",m_LocalSolderPasteMarginRatio); + fprintf( aFile, ".SolderPaste %d\n", m_LocalSolderPasteMargin ); + if( m_LocalSolderPasteMarginRatio != 0 ) + fprintf( aFile, ".SolderPasteRatio %g\n", m_LocalSolderPasteMarginRatio ); if( m_LocalClearance != 0 ) - fprintf( aFile, ".LocalClearance %d\n",m_LocalClearance ); + fprintf( aFile, ".LocalClearance %d\n", m_LocalClearance ); // attributes if( m_Attributs != MOD_DEFAULT ) @@ -489,7 +490,7 @@ int MODULE::ReadDescr( FILE* File, int* LineNum ) { D_PAD* pad = new D_PAD( this ); pad->ReadDescr( File, LineNum ); - RotatePoint( &pad->m_Pos.x, &pad->m_Pos.y, m_Orient ); + RotatePoint( &pad->m_Pos, m_Orient ); pad->m_Pos.x += m_Pos.x; pad->m_Pos.y += m_Pos.y; @@ -507,7 +508,7 @@ int MODULE::ReadDescr( FILE* File, int* LineNum ) /* Decode the first code of the current line and read the * corresponding data - */ + */ switch( Line[0] ) { case 'P': @@ -602,20 +603,21 @@ int MODULE::ReadDescr( FILE* File, int* LineNum ) break; case '.': /* Read specific data */ - if( strnicmp(Line, ".SolderMask ", 12 ) == 0 ) - m_LocalSolderMaskMargin = atoi(Line+12); - else if( strnicmp(Line, ".SolderPaste ", 13) == 0 ) - m_LocalSolderPasteMargin = atoi(Line+13); - else if( strnicmp(Line, ".SolderPasteRatio ", 18) == 0 ) - m_LocalSolderPasteMarginRatio = atof(Line+18); - else if( strnicmp(Line, ".LocalClearance ", 16 ) == 0 ) - m_LocalClearance = atoi(Line+16); - break; + if( strnicmp( Line, ".SolderMask ", 12 ) == 0 ) + m_LocalSolderMaskMargin = atoi( Line + 12 ); + else if( strnicmp( Line, ".SolderPaste ", 13 ) == 0 ) + m_LocalSolderPasteMargin = atoi( Line + 13 ); + else if( strnicmp( Line, ".SolderPasteRatio ", 18 ) == 0 ) + m_LocalSolderPasteMarginRatio = atof( Line + 18 ); + else if( strnicmp( Line, ".LocalClearance ", 16 ) == 0 ) + m_LocalClearance = atoi( Line + 16 ); + break; default: break; } } + /* Recalculate the bounding box */ Set_Rectangle_Encadrement(); return 0; @@ -640,51 +642,53 @@ void MODULE::Set_Rectangle_Encadrement() xmin = ymin = -250; xmax = ymax = 250; - for( EDGE_MODULE* pt_edge_mod = (EDGE_MODULE*) m_Drawings.GetFirst(); - pt_edge_mod; pt_edge_mod = pt_edge_mod->Next() ) + for( EDGE_MODULE* edge = (EDGE_MODULE*) m_Drawings.GetFirst(); + edge; edge = edge->Next() ) { - if( pt_edge_mod->Type() != TYPE_EDGE_MODULE ) + if( edge->Type() != TYPE_EDGE_MODULE ) continue; - width = pt_edge_mod->m_Width / 2; + width = edge->m_Width / 2; - switch( pt_edge_mod->m_Shape ) + switch( edge->m_Shape ) { case S_ARC: case S_CIRCLE: { - cx = pt_edge_mod->m_Start0.x; - cy = pt_edge_mod->m_Start0.y; // center - uxf = pt_edge_mod->m_End0.x; uyf = pt_edge_mod->m_End0.y; - rayon = (int) hypot( (double) (cx - uxf), (double) (cy - uyf) ); + cx = edge->m_Start0.x; + cy = edge->m_Start0.y; // center + uxf = edge->m_End0.x; + uyf = edge->m_End0.y; + rayon = (int) hypot( (double) ( cx - uxf ), (double) ( cy - uyf ) ); rayon += width; - xmin = MIN( xmin, cx - rayon ); - ymin = MIN( ymin, cy - rayon ); - xmax = MAX( xmax, cx + rayon ); - ymax = MAX( ymax, cy + rayon ); + xmin = MIN( xmin, cx - rayon ); + ymin = MIN( ymin, cy - rayon ); + xmax = MAX( xmax, cx + rayon ); + ymax = MAX( ymax, cy + rayon ); break; } case S_SEGMENT: - xmin = MIN( xmin, pt_edge_mod->m_Start0.x - width ); - xmin = MIN( xmin, pt_edge_mod->m_End0.x - width ); - ymin = MIN( ymin, pt_edge_mod->m_Start0.y - width ); - ymin = MIN( ymin, pt_edge_mod->m_End0.y - width ); - xmax = MAX( xmax, pt_edge_mod->m_Start0.x + width ); - xmax = MAX( xmax, pt_edge_mod->m_End0.x + width ); - ymax = MAX( ymax, pt_edge_mod->m_Start0.y + width ); - ymax = MAX( ymax, pt_edge_mod->m_End0.y + width ); + xmin = MIN( xmin, edge->m_Start0.x - width ); + xmin = MIN( xmin, edge->m_End0.x - width ); + ymin = MIN( ymin, edge->m_Start0.y - width ); + ymin = MIN( ymin, edge->m_End0.y - width ); + xmax = MAX( xmax, edge->m_Start0.x + width ); + xmax = MAX( xmax, edge->m_End0.x + width ); + ymax = MAX( ymax, edge->m_Start0.y + width ); + ymax = MAX( ymax, edge->m_End0.y + width ); break; case S_POLYGON: - for( unsigned ii = 0; ii < pt_edge_mod->m_PolyPoints.size(); ii++ ) + for( unsigned ii = 0; ii < edge->m_PolyPoints.size(); ii++ ) { - wxPoint pt = pt_edge_mod->m_PolyPoints[ii]; + wxPoint pt = edge->m_PolyPoints[ii]; xmin = MIN( xmin, (pt.x - width) ); ymin = MIN( ymin, (pt.y - width) ); - xmax = MAX( xmax, (pt.x + width) ); - ymax = MAX( ymax, (pt.y + width) ); + xmax = MAX( xmax, (pt.x + width) ); + ymax = MAX( ymax, (pt.y + width) ); } + break; } } @@ -696,10 +700,10 @@ void MODULE::Set_Rectangle_Encadrement() rayon = pad->m_Rayon; cx = pad->m_Pos0.x; cy = pad->m_Pos0.y; - xmin = MIN( xmin, cx - rayon ); - ymin = MIN( ymin, cy - rayon ); - xmax = MAX( xmax, cx + rayon ); - ymax = MAX( ymax, cy + rayon ); + xmin = MIN( xmin, cx - rayon ); + ymin = MIN( ymin, cy - rayon ); + xmax = MAX( xmax, cx + rayon ); + ymax = MAX( ymax, cy + rayon ); } m_BoundaryBox.m_Pos.x = xmin; @@ -721,24 +725,24 @@ void MODULE::SetRectangleExinscrit() m_RealBoundaryBox.Inflate( 500 ); // Give a min size for( EDGE_MODULE* edge = (EDGE_MODULE*) m_Drawings.GetFirst(); - edge; edge = edge->Next() ) + edge; edge = edge->Next() ) { if( edge->Type() != TYPE_EDGE_MODULE ) // Shoud not occur continue; EDA_Rect rect = edge->GetBoundingBox(); - m_RealBoundaryBox.Merge(rect); + m_RealBoundaryBox.Merge( rect ); } for( D_PAD* pad = m_Pads; pad; pad = pad->Next() ) { EDA_Rect rect = pad->GetBoundingBox(); - m_RealBoundaryBox.Merge(rect); + m_RealBoundaryBox.Merge( rect ); } m_Surface = ABS( (double) m_RealBoundaryBox.GetWidth() - * m_RealBoundaryBox.GetHeight() ); + * m_RealBoundaryBox.GetHeight() ); } @@ -762,7 +766,7 @@ EDA_Rect MODULE::GetBoundingBox() area.Merge( text_area ); for( EDGE_MODULE* edge = (EDGE_MODULE*) m_Drawings.GetFirst(); edge; - edge = edge->Next() ) + edge = edge->Next() ) { if( edge->Type() != TYPE_TEXTE_MODULE ) continue; @@ -914,6 +918,7 @@ D_PAD* MODULE::FindPadByName( const wxString& aPadName ) const #endif + return pad; } diff --git a/pcbnew/dialog_design_rules.cpp b/pcbnew/dialog_design_rules.cpp index 5ab17df323..f86982db67 100644 --- a/pcbnew/dialog_design_rules.cpp +++ b/pcbnew/dialog_design_rules.cpp @@ -656,11 +656,15 @@ void DIALOG_DESIGN_RULES::OnAddNetclassClick( wxCommandEvent& event ) { wxString class_name; - if( Get_Message( _( "New Net Class Name:" ), - wxEmptyString, - class_name, - this ) ) - return; + wxTextEntryDialog dlg( this, _( "New Net Class Name:" ), wxEmptyString, class_name ); + if( dlg.ShowModal() != wxID_OK ) + return; // cancelled by user + + class_name = dlg.GetValue( ); + class_name.Trim( true ); + class_name.Trim( false ); + if( class_name.IsEmpty() ) + return; // empty name not allowed // The name must dot exists: for( int ii = 0; ii < m_grid->GetNumberRows(); ii++ ) diff --git a/pcbnew/dialog_graphic_items_options.cpp b/pcbnew/dialog_graphic_items_options.cpp index c90f17a9f0..158b6e1cd9 100644 --- a/pcbnew/dialog_graphic_items_options.cpp +++ b/pcbnew/dialog_graphic_items_options.cpp @@ -84,20 +84,20 @@ void DIALOG_GRAPHIC_ITEMS_OPTIONS::initValues() /* Modules: Edges width */ AddUnitSymbol( *m_EdgeModWidthTitle ); PutValueInLocalUnits( *m_OptModuleEdgesWidth, - ModuleSegmentWidth, PCB_INTERNAL_UNIT ); + g_ModuleSegmentWidth, PCB_INTERNAL_UNIT ); /* Modules: Texts: Size & width */ AddUnitSymbol( *m_TextModWidthTitle ); PutValueInLocalUnits( *m_OptModuleTextWidth, - ModuleTextWidth, PCB_INTERNAL_UNIT ); + g_ModuleTextWidth, PCB_INTERNAL_UNIT ); AddUnitSymbol( *m_TextModSizeVTitle ); PutValueInLocalUnits( *m_OptModuleTextVSize, - ModuleTextSize.y, PCB_INTERNAL_UNIT ); + g_ModuleTextSize.y, PCB_INTERNAL_UNIT ); AddUnitSymbol( *m_TextModSizeHTitle ); PutValueInLocalUnits( *m_OptModuleTextHSize, - ModuleTextSize.x, PCB_INTERNAL_UNIT ); + g_ModuleTextSize.x, PCB_INTERNAL_UNIT ); AddUnitSymbol( *m_DefaultPenSizeTitle ); PutValueInLocalUnits( *m_DefaultPenSizeCtrl, @@ -118,13 +118,13 @@ void DIALOG_GRAPHIC_ITEMS_OPTIONS::OnOkClick( wxCommandEvent& event ) m_BrdSettings->m_PcbTextSize.x = ReturnValueFromTextCtrl( *m_OptPcbTextHSize, PCB_INTERNAL_UNIT ); - ModuleSegmentWidth = + g_ModuleSegmentWidth = ReturnValueFromTextCtrl( *m_OptModuleEdgesWidth, PCB_INTERNAL_UNIT ); - ModuleTextWidth = + g_ModuleTextWidth = ReturnValueFromTextCtrl( *m_OptModuleTextWidth, PCB_INTERNAL_UNIT ); - ModuleTextSize.y = + g_ModuleTextSize.y = ReturnValueFromTextCtrl( *m_OptModuleTextVSize, PCB_INTERNAL_UNIT ); - ModuleTextSize.x = + g_ModuleTextSize.x = ReturnValueFromTextCtrl( *m_OptModuleTextHSize, PCB_INTERNAL_UNIT ); g_DrawDefaultLineThickness = diff --git a/pcbnew/edgemod.cpp b/pcbnew/edgemod.cpp index e50848321c..4e2ddecc6f 100644 --- a/pcbnew/edgemod.cpp +++ b/pcbnew/edgemod.cpp @@ -49,7 +49,7 @@ void WinEDA_ModuleEditFrame::Start_Move_EdgeMod( EDGE_MODULE* Edge, wxDC* DC ) /* * Function to place a graphic item type EDGE_MODULE currently moved */ -void WinEDA_ModuleEditFrame::Place_EdgeMod( EDGE_MODULE* Edge, wxDC* DC ) +void WinEDA_ModuleEditFrame::Place_EdgeMod( EDGE_MODULE* Edge ) { if( Edge == NULL ) return; @@ -59,7 +59,6 @@ void WinEDA_ModuleEditFrame::Place_EdgeMod( EDGE_MODULE* Edge, wxDC* DC ) Edge->m_Start0 -= MoveVector; Edge->m_End0 -= MoveVector; - Edge->Draw( DrawPanel, DC, GR_OR ); Edge->m_Flags = 0; DrawPanel->ManageCurseur = NULL; DrawPanel->ForceCloseManageCurseur = NULL; @@ -67,6 +66,7 @@ void WinEDA_ModuleEditFrame::Place_EdgeMod( EDGE_MODULE* Edge, wxDC* DC ) OnModify(); MODULE* Module = (MODULE*) Edge->GetParent(); Module->Set_Rectangle_Encadrement(); + DrawPanel->Refresh( ); } @@ -86,8 +86,7 @@ static void Move_Segment( WinEDA_DrawPanel* panel, wxDC* DC, bool erase ) Edge->Draw( panel, DC, GR_XOR, MoveVector ); } - MoveVector.x = -(screen->m_Curseur.x - CursorInitialPosition.x); - MoveVector.y = -(screen->m_Curseur.y - CursorInitialPosition.y); + MoveVector = -(screen->m_Curseur - CursorInitialPosition); Edge->Draw( panel, DC, GR_XOR, MoveVector ); @@ -124,27 +123,32 @@ static void ShowEdgeModule( WinEDA_DrawPanel* panel, wxDC* DC, bool erase ) } -void WinEDA_ModuleEditFrame::Edit_Edge_Width( EDGE_MODULE* Edge ) +/** Function Edit_Edge_Width + * changes the width of module perimeter lines, EDGE_MODULEs. + * param ModuleSegmentWidth (global) = new width + * @param aEdge = edge to edit, or NULL. If aEdge == NULL change + * the width of all footprint's edges + */ +void WinEDA_ModuleEditFrame::Edit_Edge_Width( EDGE_MODULE* aEdge ) { MODULE* Module = GetBoard()->m_Modules; SaveCopyInUndoList( Module, UR_MODEDIT ); - if( Edge == NULL ) + if( aEdge == NULL ) { - Edge = (EDGE_MODULE*) (BOARD_ITEM*) Module->m_Drawings; - for( ; Edge != NULL; Edge = Edge->Next() ) + aEdge = (EDGE_MODULE*) (BOARD_ITEM*) Module->m_Drawings; + for( ; aEdge != NULL; aEdge = aEdge->Next() ) { - if( Edge->Type() != TYPE_EDGE_MODULE ) + if( aEdge->Type() != TYPE_EDGE_MODULE ) continue; - Edge->m_Width = ModuleSegmentWidth; + aEdge->m_Width = g_ModuleSegmentWidth; } } else - Edge->m_Width = ModuleSegmentWidth; + aEdge->m_Width = g_ModuleSegmentWidth; OnModify(); - DrawPanel->Refresh( TRUE ); Module->Set_Rectangle_Encadrement(); Module->m_LastEdit_Time = time( NULL ); } @@ -199,40 +203,32 @@ void WinEDA_ModuleEditFrame::Edit_Edge_Layer( EDGE_MODULE* Edge ) OnModify(); Module->Set_Rectangle_Encadrement(); Module->m_LastEdit_Time = time( NULL ); - DrawPanel->Refresh( TRUE ); } -/* Edition of the edge items width - * Ask for a new width and init ModuleSegmentWidth. - * Change the width of EDGE_MODULE Edge if Edge != NULL - * @param Edge = edge to edit, or NULL - * @param DC = current Device Context +/** function Enter_Edge_Width + * Edition of the edge items width + * Ask for a new width. + * Change the width of EDGE_MODULE Edge if aEdge != NULL + * @param aEdge = edge to edit, or NULL * @output ModuleSegmentWidth (global) = new width */ -void WinEDA_ModuleEditFrame::Enter_Edge_Width( EDGE_MODULE* Edge, wxDC* DC ) +void WinEDA_ModuleEditFrame::Enter_Edge_Width( EDGE_MODULE* aEdge ) { wxString buffer; - long ll; - buffer << ModuleSegmentWidth; - if( Get_Message( _( "New Width (1/10000\"):" ), _( "Edge Width" ), buffer, - this ) ) - return; + buffer = ReturnStringFromValue( g_UserUnit, g_ModuleSegmentWidth, GetScreen()->GetInternalUnits() ); + wxTextEntryDialog dlg( this, _( "New Width:" ), _( "Edge Width" ), buffer ); + if( dlg.ShowModal() != wxID_OK ) + return; // cancelled by user - if( buffer.ToLong( &ll ) ) - ModuleSegmentWidth = ll; - else - { - DisplayError( this, _( "Incorrect number, no change" ) ); - return; - } - if( Edge ) + buffer = dlg.GetValue( ); + g_ModuleSegmentWidth = ReturnValueFromString( g_UserUnit, buffer, GetScreen()->GetInternalUnits() ); + + if( aEdge ) { MODULE* Module = GetBoard()->m_Modules; - Module->DrawEdgesOnly( DrawPanel, DC, wxPoint( 0, 0 ), GR_XOR ); - Edge->m_Width = ModuleSegmentWidth; - Module->DrawEdgesOnly( DrawPanel, DC, wxPoint( 0, 0 ), GR_XOR ); + aEdge->m_Width = g_ModuleSegmentWidth; Module->Set_Rectangle_Encadrement(); OnModify(); } @@ -327,7 +323,7 @@ EDGE_MODULE* WinEDA_ModuleEditFrame::Begin_Edge_Module( EDGE_MODULE* Edge, if( Edge->m_Shape == S_ARC ) Edge->m_Angle = ArcValue; - Edge->m_Width = ModuleSegmentWidth; + Edge->m_Width = g_ModuleSegmentWidth; Edge->SetLayer( module->GetLayer() ); if( module->GetLayer() == LAYER_N_FRONT ) @@ -376,7 +372,7 @@ EDGE_MODULE* WinEDA_ModuleEditFrame::Begin_Edge_Module( EDGE_MODULE* Edge, Edge = newedge; // point now new item Edge->m_Flags = IS_NEW; - Edge->m_Width = ModuleSegmentWidth; + Edge->m_Width = g_ModuleSegmentWidth; Edge->m_Start = GetScreen()->m_Curseur; Edge->m_End = Edge->m_Start; @@ -401,7 +397,7 @@ EDGE_MODULE* WinEDA_ModuleEditFrame::Begin_Edge_Module( EDGE_MODULE* Edge, /* Terminate a move or create edge function */ -void WinEDA_ModuleEditFrame::End_Edge_Module( EDGE_MODULE* Edge, wxDC* DC ) +void WinEDA_ModuleEditFrame::End_Edge_Module( EDGE_MODULE* Edge ) { MODULE* Module = GetBoard()->m_Modules; diff --git a/pcbnew/edtxtmod.cpp b/pcbnew/edtxtmod.cpp index 95cd0095da..6316b6f874 100644 --- a/pcbnew/edtxtmod.cpp +++ b/pcbnew/edtxtmod.cpp @@ -45,11 +45,11 @@ TEXTE_MODULE* WinEDA_BasePcbFrame::CreateTextModule( MODULE* Module, wxDC* DC ) Text->m_Text = wxT( "text" ); - ModuleTextWidth = Clamp_Text_PenSize( ModuleTextWidth, - MIN( ModuleTextSize.x, - ModuleTextSize.y ), true ); - Text->m_Size = ModuleTextSize; - Text->m_Width = ModuleTextWidth; + g_ModuleTextWidth = Clamp_Text_PenSize( g_ModuleTextWidth, + MIN( g_ModuleTextSize.x, + g_ModuleTextSize.y ), true ); + Text->m_Size = g_ModuleTextSize; + Text->m_Width = g_ModuleTextWidth; Text->m_Pos = GetScreen()->m_Curseur; Text->SetLocalCoord(); diff --git a/pcbnew/ioascii.cpp b/pcbnew/ioascii.cpp index d9f252cdc3..80e0f81f36 100644 --- a/pcbnew/ioascii.cpp +++ b/pcbnew/ioascii.cpp @@ -502,21 +502,21 @@ int WinEDA_BasePcbFrame::ReadSetup( FILE* File, int* LineNum ) if( stricmp( Line, "EdgeModWidth" ) == 0 ) { - ModuleSegmentWidth = atoi( data ); + g_ModuleSegmentWidth = atoi( data ); continue; } if( stricmp( Line, "TextModWidth" ) == 0 ) { - ModuleTextWidth = atoi( data ); + g_ModuleTextWidth = atoi( data ); continue; } if( stricmp( Line, "TextModSize" ) == 0 ) { - ModuleTextSize.x = atoi( data ); + g_ModuleTextSize.x = atoi( data ); data = strtok( NULL, " =\n\r" ); - ModuleTextSize.y = atoi( data ); + g_ModuleTextSize.y = atoi( data ); continue; } @@ -668,9 +668,9 @@ static int WriteSetup( FILE* aFile, WinEDA_BasePcbFrame* aFrame, BOARD* aBoard ) aBoard->GetBoardDesignSettings()->m_PcbTextSize.x, aBoard->GetBoardDesignSettings()->m_PcbTextSize.y ); - fprintf( aFile, "EdgeModWidth %d\n", ModuleSegmentWidth ); - fprintf( aFile, "TextModSize %d %d\n", ModuleTextSize.x, ModuleTextSize.y ); - fprintf( aFile, "TextModWidth %d\n", ModuleTextWidth ); + fprintf( aFile, "EdgeModWidth %d\n", g_ModuleSegmentWidth ); + fprintf( aFile, "TextModSize %d %d\n", g_ModuleTextSize.x, g_ModuleTextSize.y ); + fprintf( aFile, "TextModWidth %d\n", g_ModuleTextWidth ); fprintf( aFile, "PadSize %d %d\n", g_Pad_Master.m_Size.x, diff --git a/pcbnew/librairi.cpp b/pcbnew/librairi.cpp index 67e9bacf04..d82ddc6b97 100644 --- a/pcbnew/librairi.cpp +++ b/pcbnew/librairi.cpp @@ -45,7 +45,7 @@ static bool CreateDocLibrary( const wxString& LibName ); * (One footprint per file, Newlib files have no special ext.) * @param DC = Current Device Context (can be NULL) */ -MODULE* WinEDA_ModuleEditFrame::Import_Module( wxDC* DC ) +MODULE* WinEDA_ModuleEditFrame::Import_Module( ) { int NbLine = 0; char Line[1024]; @@ -129,7 +129,7 @@ MODULE* WinEDA_ModuleEditFrame::Import_Module( wxDC* DC ) /* Display info : */ module->DisplayInfo( this ); - Place_Module( module, DC ); + Place_Module( module, NULL ); GetBoard()->m_Status_Pcb = 0; GetBoard()->m_NetInfo->BuildListOfNets(); @@ -394,7 +394,7 @@ void WinEDA_ModuleEditFrame::Delete_Module_In_Library( /** function Archive_Modules * Save in the library: * All new modules (ie modules not found in this lib) (if NewModulesOnly == true) - * all modules (if NewModulesOnly == FALSE) + * all modules (if NewModulesOnly == false) */ void WinEDA_BasePcbFrame::Archive_Modules( const wxString& LibName, bool NewModulesOnly ) @@ -436,7 +436,7 @@ void WinEDA_BasePcbFrame::Archive_Modules( const wxString& LibName, return; } - DrawPanel->m_AbortRequest = FALSE; + DrawPanel->m_AbortRequest = false; // Create a new, empty library if no old lib, or if archive all modules if( !NewModulesOnly || !file_exists ) @@ -468,8 +468,8 @@ void WinEDA_BasePcbFrame::Archive_Modules( const wxString& LibName, for( ii = 1; Module != NULL; ii++, Module = (MODULE*) Module->Next() ) { if( Save_Module_In_Library( fileName, Module, - NewModulesOnly ? FALSE : true, - FALSE, false ) == 0 ) + NewModulesOnly ? false : true, + false, false ) == 0 ) break; DisplayActivity( (int) ( ii * Pas ), wxEmptyString ); /* Check for request to stop backup (ESCAPE key actuated) */ @@ -522,11 +522,14 @@ int WinEDA_BasePcbFrame::Save_Module_In_Library( const wxString& aLibName, if( aDisplayDialog ) { - int cancel = Get_Message( _( "Name:" ), _( "Save module" ), Name_Cmp, this ); - if( Name_Cmp.IsEmpty() || cancel ) - return 0; + wxTextEntryDialog dlg( this, _( "Name:" ), _( "Save module" ), Name_Cmp ); + if( dlg.ShowModal() != wxID_OK ) + return 0; // cancelled by user + Name_Cmp = dlg.GetValue(); Name_Cmp.Trim( true ); - Name_Cmp.Trim( FALSE ); + Name_Cmp.Trim( false ); + if( Name_Cmp.IsEmpty() ) + return 0; aModule->m_LibRef = Name_Cmp; } @@ -569,7 +572,7 @@ int WinEDA_BasePcbFrame::Save_Module_In_Library( const wxString& aLibName, if( Name_Cmp.CmpNoCase( msg ) == 0 ) /* an existing footprint is * found */ { - added = FALSE; + added = false; newmodule = 0; if( aDisplayDialog ) { @@ -711,32 +714,39 @@ int WinEDA_BasePcbFrame::Save_Module_In_Library( const wxString& aLibName, } -/* Create a new module or footprint : A new module contains 2 texts : - * First = REFERENCE - * Second = VALUE: "VAL**" - * the new module is added on beginning of the linked list of modules +/** Function Create_1_Module + * Creates a new module or footprint : A new module contains 2 texts : + * First = REFERENCE + * Second = VALUE: "VAL**" + * the new module is added to the board module list + * @param aModuleName = name of the new footprint + * (will the component reference in board) + * @return a pointer to the new module */ -MODULE* WinEDA_BasePcbFrame::Create_1_Module( wxDC* DC, - const wxString& module_name ) +MODULE* WinEDA_BasePcbFrame::Create_1_Module( const wxString& aModuleName ) { MODULE* Module; - wxString Line; + wxString moduleName; wxPoint newpos; + moduleName = aModuleName; + /* Ask for the new module reference */ - if( module_name.IsEmpty() ) + if( moduleName.IsEmpty() ) { - if( Get_Message( _( "Module Reference:" ), - _( "Module Creation" ), Line, this ) != 0 ) - { - DisplayInfoMessage( this, _( "No reference, aborted" ) ); - return NULL; - } + wxTextEntryDialog dlg( this, _( "Module Reference:" ), + _( "Module Creation" ), moduleName ); + if( dlg.ShowModal() != wxID_OK ) + return NULL; //Aborted by user + moduleName = dlg.GetValue(); + } + moduleName.Trim( true ); + moduleName.Trim( false ); + if( moduleName.IsEmpty( ) ) + { + DisplayInfoMessage( this, _( "No reference, aborted" ) ); + return NULL; } - else - Line = module_name; - Line.Trim( true ); - Line.Trim( FALSE ); // Creates the new module and add it to the head of the linked list of // modules @@ -750,17 +760,17 @@ MODULE* WinEDA_BasePcbFrame::Create_1_Module( wxDC* DC, Module->m_LastEdit_Time = time( NULL ); /* Update its name in lib */ - Module->m_LibRef = Line; + Module->m_LibRef = moduleName; /* Update reference: */ - Module->m_Reference->m_Text = Line; - Module->m_Reference->SetWidth( ModuleTextWidth ); - Module->m_Reference->m_Size = ModuleTextSize; + Module->m_Reference->m_Text = moduleName; + Module->m_Reference->SetWidth( g_ModuleTextWidth ); + Module->m_Reference->m_Size = g_ModuleTextSize; /* Set the value field to a default value */ Module->m_Value->m_Text = wxT( "VAL**" ); - Module->m_Value->SetWidth( ModuleTextWidth ); - Module->m_Value->m_Size = ModuleTextSize; + Module->m_Value->SetWidth( g_ModuleTextWidth ); + Module->m_Value->m_Size = g_ModuleTextSize; Module->SetPosition( wxPoint( 0, 0 ) ); @@ -844,21 +854,21 @@ static bool CreateDocLibrary( const wxString& LibName ) LibMod = wxFopen( LibName, wxT( "rt" ) ); if( LibMod == NULL ) - return FALSE; + return false; /* Read library header. */ GetLine( LibMod, Line, NULL, sizeof(Line) - 1 ); if( strnicmp( Line, ENTETE_LIBRAIRIE, L_ENTETE_LIB ) != 0 ) { fclose( LibMod ); - return FALSE; + return false; } LibDoc = wxFopen( fn.GetFullPath(), wxT( "wt" ) ); if( LibDoc == NULL ) { fclose( LibMod ); - return FALSE; + return false; } fprintf( LibDoc, ENTETE_LIBDOC ); fprintf( LibDoc, " %s\n", DateAndTime( cbuf ) ); diff --git a/pcbnew/modedit.cpp b/pcbnew/modedit.cpp index 47ab2925ca..ae42dab119 100644 --- a/pcbnew/modedit.cpp +++ b/pcbnew/modedit.cpp @@ -237,7 +237,7 @@ void WinEDA_ModuleEditFrame::Process_Special_Functions( wxCommandEvent& event ) SetCurItem( NULL ); GetScreen()->m_Curseur = wxPoint( 0, 0 ); - MODULE* module = Create_1_Module( NULL, wxEmptyString ); + MODULE* module = Create_1_Module( wxEmptyString ); if( module ) // i.e. if create module command not aborted { // Initialize data relative to nets and netclasses (for a new @@ -350,7 +350,7 @@ void WinEDA_ModuleEditFrame::Process_Special_Functions( wxCommandEvent& event ) GetScreen()->ClearUndoRedoList(); SetCurItem( NULL ); GetScreen()->m_Curseur = wxPoint( 0, 0 ); - Import_Module( NULL ); + Import_Module( ); redraw = true; if( GetBoard()->m_Modules ) GetBoard()->m_Modules->m_Flags = 0; @@ -579,7 +579,7 @@ void WinEDA_ModuleEditFrame::Process_Special_Functions( wxCommandEvent& event ) DrawPanel->MouseToCursorSchema(); if( (GetScreen()->GetCurItem()->m_Flags & IS_NEW) ) { - End_Edge_Module( (EDGE_MODULE*) GetScreen()->GetCurItem(), &dc ); + End_Edge_Module( (EDGE_MODULE*) GetScreen()->GetCurItem() ); SetCurItem( NULL ); } break; @@ -588,34 +588,40 @@ void WinEDA_ModuleEditFrame::Process_Special_Functions( wxCommandEvent& event ) { EDGE_MODULE* edge = NULL; if( GetScreen()->GetCurItem() - && ( GetScreen()->GetCurItem()->m_Flags & IS_NEW ) && ( GetScreen()->GetCurItem()->Type() == TYPE_EDGE_MODULE ) ) { edge = (EDGE_MODULE*) GetScreen()->GetCurItem(); } - Enter_Edge_Width( edge, &dc ); + Enter_Edge_Width( edge ); DrawPanel->MouseToCursorSchema(); + if( edge ) + DrawPanel->Refresh(); + } break; case ID_POPUP_PCB_EDIT_WIDTH_CURRENT_EDGE: DrawPanel->MouseToCursorSchema(); Edit_Edge_Width( (EDGE_MODULE*) GetScreen()->GetCurItem() ); + DrawPanel->Refresh( ); break; case ID_POPUP_PCB_EDIT_WIDTH_ALL_EDGE: DrawPanel->MouseToCursorSchema(); Edit_Edge_Width( NULL ); + DrawPanel->Refresh( ); break; case ID_POPUP_PCB_EDIT_LAYER_CURRENT_EDGE: DrawPanel->MouseToCursorSchema(); Edit_Edge_Layer( (EDGE_MODULE*) GetScreen()->GetCurItem() ); + DrawPanel->Refresh( ); break; case ID_POPUP_PCB_EDIT_LAYER_ALL_EDGE: DrawPanel->MouseToCursorSchema(); Edit_Edge_Layer( NULL ); + DrawPanel->Refresh( ); break; case ID_POPUP_PCB_DELETE_EDGE: diff --git a/pcbnew/modedit_onclick.cpp b/pcbnew/modedit_onclick.cpp index a8ac024930..d74a91ea74 100644 --- a/pcbnew/modedit_onclick.cpp +++ b/pcbnew/modedit_onclick.cpp @@ -36,7 +36,7 @@ void WinEDA_ModuleEditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) case TYPE_EDGE_MODULE: SaveCopyInUndoList( GetBoard()->m_Modules, UR_MODEDIT ); - Place_EdgeMod( (EDGE_MODULE*) DrawStruct, DC ); + Place_EdgeMod( (EDGE_MODULE*) DrawStruct ); break; case TYPE_PAD: @@ -93,13 +93,15 @@ m_Flags != 0\nStruct @%p, type %d m_Flag %X" ), { if( ( (EDGE_MODULE*) DrawStruct )->m_Shape == S_CIRCLE ) { - End_Edge_Module( (EDGE_MODULE*) DrawStruct, DC ); + End_Edge_Module( (EDGE_MODULE*) DrawStruct ); SetCurItem( NULL ); + DrawPanel->Refresh(); } else if( ( (EDGE_MODULE*) DrawStruct )->m_Shape == S_ARC ) { - End_Edge_Module( (EDGE_MODULE*) DrawStruct, DC ); + End_Edge_Module( (EDGE_MODULE*) DrawStruct ); SetCurItem( NULL ); + DrawPanel->Refresh(); } else if( ( (EDGE_MODULE*) DrawStruct )->m_Shape == S_SEGMENT ) { @@ -437,8 +439,9 @@ void WinEDA_ModuleEditFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos ) { if( DrawStruct && ( DrawStruct->m_Flags & IS_NEW ) ) { - End_Edge_Module( (EDGE_MODULE*) DrawStruct, DC ); + End_Edge_Module( (EDGE_MODULE*) DrawStruct ); SetCurItem( NULL ); + DrawPanel->Refresh(); } break; } diff --git a/pcbnew/modules.cpp b/pcbnew/modules.cpp index 9d1fea96d9..1dbddfea22 100644 --- a/pcbnew/modules.cpp +++ b/pcbnew/modules.cpp @@ -20,11 +20,13 @@ static void Abort_MoveOrCopyModule( WinEDA_DrawPanel* Panel, wxDC* DC ); -static MODULE* s_ModuleInitialCopy = NULL; // Copy of module for - // abort/undo command -static PICKED_ITEMS_LIST s_PickedList; // a picked list to - // save initial module - // and dragged tracks +static MODULE* s_ModuleInitialCopy = NULL; /* Copy of module for + * abort/undo command + */ +static PICKED_ITEMS_LIST s_PickedList; /* a picked list to + * save initial module + * and dragged tracks + */ /* Show or hide module pads. @@ -64,16 +66,22 @@ void Rastnest_On_Off( WinEDA_DrawPanel* panel, wxDC* DC, MODULE* module ) */ MODULE* WinEDA_BasePcbFrame::GetModuleByName() { - wxString modulename; - MODULE* module = NULL; + wxString moduleName; + MODULE* module = NULL; - Get_Message( _( "Name:" ), _( "Search footprint" ), modulename, this ); - if( !modulename.IsEmpty() ) + wxTextEntryDialog dlg( this, _( "Name:" ), _( "Search footprint" ), moduleName ); + if( dlg.ShowModal() != wxID_OK ) + return NULL; //Aborted by user + + moduleName = dlg.GetValue(); + moduleName.Trim( true ); + moduleName.Trim( false ); + if( !moduleName.IsEmpty() ) { module = GetBoard()->m_Modules; while( module ) { - if( module->m_Reference->m_Text.CmpNoCase( modulename ) == 0 ) + if( module->m_Reference->m_Text.CmpNoCase( moduleName ) == 0 ) break; module = module->Next(); } @@ -101,7 +109,7 @@ void WinEDA_PcbFrame::StartMove_Module( MODULE* module, wxDC* DC ) module->m_Flags |= IS_MOVED; /* Show ratsnest. */ - if( GetBoard()->IsElementVisible(RATSNEST_VISIBLE) ) + if( GetBoard()->IsElementVisible( RATSNEST_VISIBLE ) ) DrawGeneralRatsnest( DC ); if( g_DragSegmentList ) /* Should not occur ! */ @@ -221,7 +229,7 @@ void Abort_MoveOrCopyModule( WinEDA_DrawPanel* Panel, wxDC* DC ) // Display ratsnest is allowed pcbframe->GetBoard()->m_Status_Pcb &= ~DO_NOT_SHOW_GENERAL_RASTNEST; - if( pcbframe->GetBoard()->IsElementVisible(RATSNEST_VISIBLE) ) + if( pcbframe->GetBoard()->IsElementVisible( RATSNEST_VISIBLE ) ) pcbframe->DrawGeneralRatsnest( DC ); } @@ -304,9 +312,9 @@ bool WinEDA_PcbFrame::Delete_Module( MODULE* module, /* Confirm module delete. */ if( aAskBeforeDeleting ) { - msg.Printf( _( "Delete Module %s (value %s) ?"), - GetChars(module->m_Reference->m_Text), - GetChars(module->m_Value->m_Text) ); + msg.Printf( _( "Delete Module %s (value %s) ?" ), + GetChars( module->m_Reference->m_Text ), + GetChars( module->m_Value->m_Text ) ); if( !IsOK( this, msg ) ) { return FALSE; @@ -324,7 +332,7 @@ bool WinEDA_PcbFrame::Delete_Module( MODULE* module, // Redraw the full screen to ensure perfect display of board and ratsnest. if( DC ) - DrawPanel->Refresh( ); + DrawPanel->Refresh(); return true; } @@ -344,13 +352,13 @@ void WinEDA_PcbFrame::Change_Side_Module( MODULE* Module, wxDC* DC ) if( Module == NULL ) return; if( ( Module->GetLayer() != LAYER_N_FRONT ) - && ( Module->GetLayer() != LAYER_N_BACK ) ) + && ( Module->GetLayer() != LAYER_N_BACK ) ) return; OnModify(); if( !( Module->m_Flags & IS_MOVED ) ) /* This is a simple flip, no other - *edition in progress */ + *edition in progress */ { GetBoard()->m_Status_Pcb &= ~( LISTE_RATSNEST_ITEM_OK | CONNEXION_OK ); if( DC ) @@ -362,7 +370,7 @@ void WinEDA_PcbFrame::Change_Side_Module( MODULE* Module, wxDC* DC ) } /* Show ratsnest if necessary. */ - if( DC && GetBoard()->IsElementVisible(RATSNEST_VISIBLE) ) + if( DC && GetBoard()->IsElementVisible( RATSNEST_VISIBLE ) ) DrawGeneralRatsnest( DC ); g_Offset_Module.x = 0; @@ -450,7 +458,7 @@ void WinEDA_BasePcbFrame::Place_Module( MODULE* module, newpos = GetScreen()->m_Curseur; module->SetPosition( newpos ); - module->m_Flags = 0; + module->m_Flags = 0; delete s_ModuleInitialCopy; s_ModuleInitialCopy = NULL; @@ -483,10 +491,9 @@ void WinEDA_BasePcbFrame::Place_Module( MODULE* module, Compile_Ratsnest( DC, true ); if( DC ) - DrawPanel->Refresh( ); + DrawPanel->Refresh(); module->DisplayInfo( this ); - } @@ -515,7 +522,7 @@ void WinEDA_BasePcbFrame::Rotate_Module( wxDC* DC, MODULE* module, DrawPanel->PostDirtyRect( module->GetBoundingBox() ); module->m_Flags = tmp; - if( GetBoard()->IsElementVisible(RATSNEST_VISIBLE) ) + if( GetBoard()->IsElementVisible( RATSNEST_VISIBLE ) ) DrawGeneralRatsnest( DC ); } } @@ -540,18 +547,20 @@ void WinEDA_BasePcbFrame::Rotate_Module( wxDC* DC, MODULE* module, if( DC ) { if( !( module->m_Flags & IS_MOVED ) ) - { // not beiing moved: redraw the module and update ratsnest + { + // not beiing moved: redraw the module and update ratsnest module->Draw( DrawPanel, DC, GR_OR ); Compile_Ratsnest( DC, true ); } else - { // Beiing moved: just redraw it + { + // Beiing moved: just redraw it DrawModuleOutlines( DrawPanel, DC, module ); Dessine_Segments_Dragges( DrawPanel, DC ); } if( module->m_Flags == 0 ) // module not in edit: redraw full screen - DrawPanel->Refresh( ); + DrawPanel->Refresh(); } } diff --git a/pcbnew/muonde.cpp b/pcbnew/muonde.cpp index d4d8d62677..10773ed894 100644 --- a/pcbnew/muonde.cpp +++ b/pcbnew/muonde.cpp @@ -177,8 +177,6 @@ MODULE* WinEDA_PcbFrame::Genere_Self( wxDC* DC ) { D_PAD* PtPad; int ll; - double fcoeff; - bool abort = FALSE; wxString msg; DrawPanel->ManageCurseur( DrawPanel, DC, FALSE ); @@ -200,28 +198,13 @@ MODULE* WinEDA_PcbFrame::Genere_Self( wxDC* DC ) Mself.lng = min_len; /* Enter the desired length. */ - if( !g_UserUnit ) - { - fcoeff = 10000.0; - msg.Printf( wxT( "%1.4f" ), Mself.lng / fcoeff ); - abort = Get_Message( _( "Length(inch):" ), _( "Length" ), msg, this ); - } - else - { - fcoeff = 10000.0 / 25.4; - msg.Printf( wxT( "%2.3f" ), Mself.lng / fcoeff ); - abort = Get_Message( _( "Length(mm):" ), _( "Length" ), msg, this ); - } - if( abort ) - return NULL; + msg = ReturnStringFromValue( g_UserUnit, Mself.lng, GetScreen()->GetInternalUnits() ); + wxTextEntryDialog dlg( this, _( "Length:" ), _( "Length" ), msg ); + if( dlg.ShowModal() != wxID_OK ) + return NULL; // cancelled by user - double fval; - if( !msg.ToDouble( &fval ) ) - { - DisplayError( this, _( "Incorrect number, abort" ) ); - return NULL; - } - Mself.lng = wxRound( fval * fcoeff ); + msg = dlg.GetValue(); + Mself.lng = ReturnValueFromString( g_UserUnit, msg, GetScreen()->GetInternalUnits() ); /* Control values (ii = minimum length) */ if( Mself.lng < min_len ) @@ -245,7 +228,7 @@ MODULE* WinEDA_PcbFrame::Genere_Self( wxDC* DC ) /* Generate module. */ MODULE* Module; - Module = Create_1_Module( NULL, wxEmptyString ); + Module = Create_1_Module( wxEmptyString ); if( Module == NULL ) return NULL; @@ -330,7 +313,7 @@ static void gen_arc( std::vector & aBuffer, { #define SEGM_COUNT_PER_360DEG 16 wxPoint first_point = aStartPoint - aCenter; - int seg_count = ( (abs( a_ArcAngle ) ) * SEGM_COUNT_PER_360DEG) / 3600; + int seg_count = ( ( abs( a_ArcAngle ) ) * SEGM_COUNT_PER_360DEG ) / 3600; if( seg_count == 0 ) seg_count = 1; @@ -395,7 +378,7 @@ int BuildCornersList_S_Shape( std::vector & aBuffer, * Increasing the number of segments to the desired length * (radius decreases if necessary) */ - wxSize size; + wxSize size; // This scale factor adjust the arc lenght to handle // the arc to segment approximation. @@ -445,11 +428,11 @@ int BuildCornersList_S_Shape( std::vector & aBuffer, } } segm_len = size.x - ( radius * 2 ); - full_len = 2 * stubs_len; // Length of coil connections. - full_len += segm_len * segm_count; // Length of full length segments. - full_len += wxRound( ( segm_count + 2 ) * M_PI * ADJUST_SIZE * radius ); // Ard arcs len - full_len += segm_len - (2 * radius); // Length of first and last segments - // (half size segments len = segm_len/2 - radius). + full_len = 2 * stubs_len; // Length of coil connections. + full_len += segm_len * segm_count; // Length of full length segments. + full_len += wxRound( ( segm_count + 2 ) * M_PI * ADJUST_SIZE * radius ); // Ard arcs len + full_len += segm_len - (2 * radius); // Length of first and last segments + // (half size segments len = segm_len/2 - radius). if( full_len >= aLength ) break; @@ -457,8 +440,9 @@ int BuildCornersList_S_Shape( std::vector & aBuffer, // Adjust len by adjusting segm_len: int delta_size = full_len - aLength; + // reduce len of the segm_count segments + 2 half size segments (= 1 full size segment) - segm_len -= delta_size / (segm_count+1); + segm_len -= delta_size / (segm_count + 1); // Generate first line (the first stub) and first arc (90 deg arc) pt = aStartPoint; @@ -537,19 +521,25 @@ MODULE* WinEDA_PcbFrame::Create_MuWaveBasicShape( const wxString& name, int pad_num = 1; wxString Line; - Module = Create_1_Module( NULL, name ); + Module = Create_1_Module( name ); if( Module == NULL ) return NULL; + #define DEFAULT_SIZE 30 Module->m_TimeStamp = GetTimeStamp(); - Module->m_Value->m_Size = wxSize( 30, 30 ); - Module->m_Value->m_Pos0.y = -30; + Module->m_Value->m_Size = wxSize( DEFAULT_SIZE, DEFAULT_SIZE ); + Module->m_Value->m_Pos0.y = -DEFAULT_SIZE; Module->m_Value->m_Pos.y += Module->m_Value->m_Pos0.y; - Module->m_Reference->m_Size = wxSize( 30, 30 ); - Module->m_Reference->m_Pos0.y = 30; + Module->m_Value->m_Width = DEFAULT_SIZE / 4; + Module->m_Reference->m_Size = wxSize( DEFAULT_SIZE, DEFAULT_SIZE ); + Module->m_Reference->m_Pos0.y = DEFAULT_SIZE; Module->m_Reference->m_Pos.y += Module->m_Reference->m_Pos0.y; + Module->m_Reference->m_Width = DEFAULT_SIZE / 4; - /* Create dots forming the gap. */ + /* Create 2 pads used in gaps and stubs. + * The gap is between these 2 pads + * the stub is the pad 2 + */ while( pad_count-- ) { D_PAD* pad = new D_PAD( Module ); @@ -570,33 +560,6 @@ MODULE* WinEDA_PcbFrame::Create_MuWaveBasicShape( const wxString& name, } -#if 0 -static void Exit_Muonde( WinEDA_DrawFrame* frame, wxDC* DC ) -{ - MODULE* Module = (MODULE*) frame->GetScreen()->GetCurItem(); - - if( Module ) - { - if( Module->m_Flags & IS_NEW ) - { - Module->Draw( frame->DrawPanel, DC, GR_XOR ); - Module->DeleteStructure(); - } - else - { - Module->Draw( frame->DrawPanel, DC, GR_XOR ); - } - } - - frame->DrawPanel->ManageCurseur = NULL; - frame->DrawPanel->ForceCloseManageCurseur = NULL; - frame->SetCurItem( NULL ); -} - - -#endif - - /* Create a module "GAP" or "STUB" * This a "gap" or "stub" used in micro wave designs * This module has 2 pads: @@ -606,13 +569,11 @@ static void Exit_Muonde( WinEDA_DrawFrame* frame, wxDC* DC ) MODULE* WinEDA_PcbFrame::Create_MuWaveComponent( int shape_type ) { int oX; - float fcoeff; D_PAD* pad; MODULE* Module; wxString msg, cmp_name; int pad_count = 2; int angle = 0; - bool abort; /* Enter the size of the gap or stub*/ int gap_size = GetBoard()->GetCurrentTrackWidth(); @@ -641,36 +602,32 @@ MODULE* WinEDA_PcbFrame::Create_MuWaveComponent( int shape_type ) break; } - wxString value; - if( g_UserUnit ) + wxString value = ReturnStringFromValue( g_UserUnit, gap_size, + GetScreen()->GetInternalUnits() ); + wxTextEntryDialog dlg( this, msg, _( "Create microwave module" ), value ); + if( dlg.ShowModal() != wxID_OK ) { - fcoeff = 10000.0f / 25.4f; - value.Printf( wxT( "%2.4f" ), gap_size / fcoeff ); - msg += _( " (mm):" ); + DrawPanel->MouseToCursorSchema(); + return NULL; // cancelled by user } - else - { - fcoeff = 10000.0; - value.Printf( wxT( "%2.3f" ), gap_size / fcoeff ); - msg += _( " (inch):" ); - } - abort = Get_Message( msg, _( "Create microwave module" ), value, this ); - double fval; - if( !value.ToDouble( &fval ) ) - { - DisplayError( this, _( "Incorrect number, abort" ) ); - abort = TRUE; - } - gap_size = ABS( wxRound( fval * fcoeff ) ); + value = dlg.GetValue(); + gap_size = ReturnValueFromString( g_UserUnit, value, GetScreen()->GetInternalUnits() ); - if( !abort && ( shape_type == 2 ) ) + bool abort = false; + if( shape_type == 2 ) { - fcoeff = 10.0; - value.Printf( wxT( "%3.1f" ), angle / fcoeff ); - msg = _( "Angle (0.1deg):" ); - abort = Get_Message( msg, _( "Create microwave module" ), value, this ); - if( !value.ToDouble( &fval ) ) + double fcoeff = 10.0, fval; + msg.Printf( wxT( "%3.1f" ), angle / fcoeff ); + wxTextEntryDialog angledlg( this, _( "Angle (0.1deg):" ), _( + "Create microwave module" ), msg ); + if( angledlg.ShowModal() != wxID_OK ) + { + DrawPanel->MouseToCursorSchema(); + return NULL; // cancelled by user + } + msg = angledlg.GetValue(); + if( !msg.ToDouble( &fval ) ) { DisplayError( this, _( "Incorrect number, abort" ) ); abort = TRUE; @@ -1100,7 +1057,6 @@ MODULE* WinEDA_PcbFrame::Create_MuWavePolygonShape() void WinEDA_PcbFrame::Edit_Gap( wxDC* DC, MODULE* Module ) { int gap_size, oX; - float fcoeff; D_PAD* pad, * next_pad; wxString msg; @@ -1130,27 +1086,14 @@ void WinEDA_PcbFrame::Edit_Gap( wxDC* DC, MODULE* Module ) /* Calculate the current dimension. */ gap_size = next_pad->m_Pos0.x - pad->m_Pos0.x - pad->m_Size.x; - /* Entrance to the desired length of the gap. */ - if( g_UserUnit ) - { - fcoeff = 10000.0f / 25.4f; - msg.Printf( wxT( "%2.3f" ), gap_size / fcoeff ); - Get_Message( _( "Gap (mm):" ), _( "Create Microwave Gap" ), msg, this ); - } - else - { - fcoeff = 10000.0; - msg.Printf( wxT( "%2.4f" ), gap_size / fcoeff ); - Get_Message( _( "Gap (inch):" ), _( "Create Microwave Gap" ), msg, - this ); - } + /* Entrer the desired length of the gap. */ + msg = ReturnStringFromValue( g_UserUnit, gap_size, GetScreen()->GetInternalUnits() ); + wxTextEntryDialog dlg( this, _( "Gap:" ), _( "Create Microwave Gap" ), msg ); + if( dlg.ShowModal() != wxID_OK ) + return; // cancelled by user - if( !msg.IsEmpty() ) - { - double fval; - if( msg.ToDouble( &fval ) ) - gap_size = (int) ( fval * fcoeff ); - } + msg = dlg.GetValue(); + gap_size = ReturnValueFromString( g_UserUnit, msg, GetScreen()->GetInternalUnits() ); /* Updating sizes of pads forming the gap. */ pad->m_Size.x = pad->m_Size.y = GetBoard()->GetCurrentTrackWidth(); diff --git a/pcbnew/pcbnew.cpp b/pcbnew/pcbnew.cpp index bfebc1af6f..f815980afe 100644 --- a/pcbnew/pcbnew.cpp +++ b/pcbnew/pcbnew.cpp @@ -49,8 +49,9 @@ bool Segments_45_Only; // True to allow horiz, vert. an bool g_TwoSegmentTrackBuild = true; bool g_HighLight_Status; -int ModuleSegmentWidth; -int ModuleTextWidth; +wxSize g_ModuleTextSize; /* Default footprint texts size */ +int g_ModuleSegmentWidth; +int g_ModuleTextWidth; int Route_Layer_TOP; int Route_Layer_BOTTOM; int g_MaxLinksShowed; @@ -58,7 +59,6 @@ int g_MagneticPadOption = capture_cursor_in_track_tool; int g_MagneticTrackOption = capture_cursor_in_track_tool; int g_HighLight_NetCode = -1; -wxSize ModuleTextSize; /* Default footprint texts size */ wxPoint g_Offset_Module; /* Offset de trace du modul en depl */ wxString g_Current_PadName; // Last used pad name (pad num) diff --git a/pcbnew/pcbnew.h b/pcbnew/pcbnew.h index c58f0aa615..9c09ef4a3a 100644 --- a/pcbnew/pcbnew.h +++ b/pcbnew/pcbnew.h @@ -67,9 +67,9 @@ extern wxString g_Shapes3DExtBuffer; extern wxString g_DocModulesFileName; /* Variables used in footprint handling */ -extern wxSize ModuleTextSize; /* Default footprint texts size */ -extern int ModuleTextWidth; -extern int ModuleSegmentWidth; +extern wxSize g_ModuleTextSize; /* Default footprint texts size */ +extern int g_ModuleTextWidth; +extern int g_ModuleSegmentWidth; /* Layer pair for auto routing and switch layers by hotkey */ extern int Route_Layer_TOP; diff --git a/pcbnew/pcbnew_config.cpp b/pcbnew/pcbnew_config.cpp index 24de8c2fff..803eb85e31 100644 --- a/pcbnew/pcbnew_config.cpp +++ b/pcbnew/pcbnew_config.cpp @@ -248,11 +248,11 @@ PARAM_CFG_ARRAY& WinEDA_PcbFrame::GetProjectFileParameters() m_projectFileParams.push_back( new PARAM_CFG_INT( wxT( "TxtPcbH" ), &boardDesignSettings.m_PcbTextSize.x, 600, TEXTS_MIN_SIZE, TEXTS_MAX_SIZE ) ); - m_projectFileParams.push_back( new PARAM_CFG_INT( wxT( "TxtModV" ), &ModuleTextSize.y, + m_projectFileParams.push_back( new PARAM_CFG_INT( wxT( "TxtModV" ), &g_ModuleTextSize.y, 500, TEXTS_MIN_SIZE, TEXTS_MAX_SIZE ) ); - m_projectFileParams.push_back( new PARAM_CFG_INT( wxT( "TxtModH" ), &ModuleTextSize.x, + m_projectFileParams.push_back( new PARAM_CFG_INT( wxT( "TxtModH" ), &g_ModuleTextSize.x, 500, TEXTS_MIN_SIZE, TEXTS_MAX_SIZE ) ); - m_projectFileParams.push_back( new PARAM_CFG_INT( wxT( "TxtModW" ), &ModuleTextWidth, + m_projectFileParams.push_back( new PARAM_CFG_INT( wxT( "TxtModW" ), &g_ModuleTextWidth, 100, 1, TEXTS_MAX_WIDTH ) ); m_projectFileParams.push_back( new PARAM_CFG_INT( wxT( "VEgarde" ), &boardDesignSettings.m_SolderMaskMargin, @@ -266,7 +266,7 @@ PARAM_CFG_ARRAY& WinEDA_PcbFrame::GetProjectFileParameters() m_projectFileParams.push_back( new PARAM_CFG_INT( wxT( "TxtLar" ), &boardDesignSettings.m_PcbTextWidth, 120, 0, 0xFFFF ) ); - m_projectFileParams.push_back( new PARAM_CFG_INT( wxT( "MSegLar" ), &ModuleSegmentWidth, + m_projectFileParams.push_back( new PARAM_CFG_INT( wxT( "MSegLar" ), &g_ModuleSegmentWidth, 120, 0, 0xFFFF ) ); m_projectFileParams.push_back( new PARAM_CFG_WXSTRING( wxT( "LastNetListRead" ), &m_lastNetListRead ) ); diff --git a/pcbnew/surbrill.cpp b/pcbnew/surbrill.cpp index 09ce611bfd..c3c782c40b 100644 --- a/pcbnew/surbrill.cpp +++ b/pcbnew/surbrill.cpp @@ -30,8 +30,11 @@ void WinEDA_PcbFrame::ListNetsAndSelect( wxCommandEvent& event ) int selection; netFilter = wxT( "*" ); - Get_Message( _( "Filter for net names:" ), _( "Net Filter" ), - netFilter, this ); + wxTextEntryDialog dlg( this, _( "Filter for net names:" ), _( "Net Filter" ), netFilter ); + if( dlg.ShowModal() != wxID_OK ) + return; // cancelled by user + + netFilter = dlg.GetValue( ); if( netFilter.IsEmpty() ) return;