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 XNODE::FormatContents( OUTPUTFORMATTER* out, int nestLevel ) { // output attributes first if they exist for( XATTR* attr = (XATTR*) GetAttributes(); attr; attr = (XATTR*) attr->GetNext() ) { out->Print( 0, " (%s %s)", TO_UTF8( attr->GetName() ), out->Quotew( attr->GetValue() ).c_str() ); } // we only expect to have used one of two types here: switch( GetType() ) { case wxXML_ELEMENT_NODE: // output children if they exist. for( XNODE* kid = (XNODE*) GetChildren(); kid; kid = (XNODE*) kid->GetNext() ) { if( kid->GetType() != wxXML_TEXT_NODE ) { if( kid == GetChildren() ) out->Print( 0, "\n" ); kid->Format( out, nestLevel+1 ); } else { kid->Format( out, 0 ); } } break; case wxXML_TEXT_NODE: out->Print( 0, " %s", out->Quotew( GetContent() ).c_str() ); break; default: ; // not supported } }
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(); } }