void PCB_POLYGON::FormPolygon( XNODE* aNode, VERTICES_ARRAY* aPolygon, const wxString& aDefaultMeasurementUnit, const wxString& aActualConversion ) { XNODE* lNode; double x, y; lNode = FindNode( aNode, wxT( "pt" ) ); while( lNode ) { if( lNode->GetName() == wxT( "pt" ) ) { SetDoublePrecisionPosition( lNode->GetNodeContent(), aDefaultMeasurementUnit, &x, &y, aActualConversion ); aPolygon->Add( new wxRealPoint( x, y ) ); } lNode = lNode->GetNext(); } }
void PCB_EDIT_FRAME::ReadMacros() { wxString str; wxFileName fn; fn = GetBoard()->GetFileName(); fn.SetExt( MacrosFileExtension ); wxFileDialog dlg( this, _( "Read Macros File" ), fn.GetPath(), fn.GetFullName(), MacrosFileWildcard, wxFD_OPEN | wxFD_FILE_MUST_EXIST | wxFD_CHANGE_DIR ); if( dlg.ShowModal() == wxID_CANCEL ) return; if( !wxFileExists( dlg.GetPath() ) ) { wxString msg; msg.Printf( _( "File %s not found" ), GetChars( dlg.GetPath() ) ); DisplayError( this, msg ); return; } wxXmlDocument xml; xml.SetFileEncoding( wxT( "UTF-8" ) ); if( !xml.Load( dlg.GetFilename() ) ) return; XNODE *macrosNode = (XNODE*) xml.GetRoot()->GetChildren(); while( macrosNode ) { int number = -1; if( macrosNode->GetName() == wxT( "macros" ) ) { number = wxAtoi( macrosNode->GetAttribute( wxT( "number" ), wxT( "-1" ) ) ); if( number >= 0 && number < 10 ) { m_Macros[number].m_Record.clear(); XNODE *hotkeyNode = (XNODE*) macrosNode->GetChildren(); while( hotkeyNode ) { if( hotkeyNode->GetName() == wxT( "hotkey" ) ) { int x = wxAtoi( hotkeyNode->GetAttribute( wxT( "x" ), wxT( "0" ) ) ); int y = wxAtoi( hotkeyNode->GetAttribute( wxT( "y" ), wxT( "0" ) ) ); int hk = wxAtoi( hotkeyNode->GetAttribute( wxT( "hkcode" ), wxT( "0" ) ) ); MACROS_RECORD macros_record; macros_record.m_HotkeyCode = hk; macros_record.m_Position.x = x; macros_record.m_Position.y = y; m_Macros[number].m_Record.push_back( macros_record ); } hotkeyNode = (XNODE*) hotkeyNode->GetNext(); } } } macrosNode = (XNODE*) macrosNode->GetNext(); } }