/** * Pop an environment for the SysEndLocal() BIF. * * @param context The current activation context. * * @return Always returns FALSE. This is a NOP on Windows. */ RexxObject *SystemInterpreter::popEnvironment(RexxActivation *context) { BufferClass *Current = (BufferClass *)context->popEnvironment();/* block, if ixisted. */ if (TheNilObject == Current) /* nothing saved? */ { return TheFalseObject; /* return failure value */ } else { /* restore everything */ restoreEnvironment(Current->getData()); return TheTrueObject; /* this worked ok */ } }
void DIALOG_PLOT_SCHEMATIC::createPDFFile( bool aPlotAll, bool aPlotFrameRef ) { SCH_SCREEN* screen = m_parent->GetScreen(); SCH_SHEET_PATH oldsheetpath = m_parent->GetCurrentSheet(); // sheetpath is saved here /* When printing all pages, the printed page is not the current page. In * complex hierarchies, we must update component references and others * parameters in the given printed SCH_SCREEN, accordint to the sheet path * because in complex hierarchies a SCH_SCREEN (a drawing ) is shared * between many sheets and component references depend on the actual sheet * path used */ SCH_SHEET_LIST sheetList; if( aPlotAll ) sheetList.BuildSheetList( g_RootSheet ); else sheetList.push_back( m_parent->GetCurrentSheet() ); // Allocate the plotter and set the job level parameter PDF_PLOTTER* plotter = new PDF_PLOTTER(); plotter->SetDefaultLineWidth( GetDefaultLineThickness() ); plotter->SetColorMode( getModeColor() ); plotter->SetCreator( wxT( "Eeschema-PDF" ) ); wxString msg; wxFileName plotFileName; REPORTER& reporter = m_MessagesBox->Reporter(); LOCALE_IO toggle; // Switch the locale to standard C for( unsigned i = 0; i < sheetList.size(); i++ ) { m_parent->SetCurrentSheet( sheetList[i] ); m_parent->GetCurrentSheet().UpdateAllScreenReferences(); m_parent->SetSheetNumberAndCount(); screen = m_parent->GetCurrentSheet().LastScreen(); if( i == 0 ) { try { wxString fname = m_parent->GetUniqueFilenameForCurrentSheet(); wxString ext = PDF_PLOTTER::GetDefaultFileExtension(); plotFileName = createPlotFileName( m_outputDirectoryName, fname, ext, &reporter ); if( !plotter->OpenFile( plotFileName.GetFullPath() ) ) { msg.Printf( _( "Unable to create file '%s'.\n" ), GetChars( plotFileName.GetFullPath() ) ); reporter.Report( msg, REPORTER::RPT_ERROR ); delete plotter; return; } // Open the plotter and do the first page setupPlotPagePDF( plotter, screen ); plotter->StartPlot(); } catch( const IO_ERROR& e ) { // Cannot plot PDF file msg.Printf( wxT( "PDF Plotter exception: %s" ), GetChars( e.errorText ) ); reporter.Report( msg, REPORTER::RPT_ERROR ); restoreEnvironment( plotter, oldsheetpath ); return; } } else { /* For the following pages you need to close the (finished) page, * reconfigure, and then start a new one */ plotter->ClosePage(); setupPlotPagePDF( plotter, screen ); plotter->StartPage(); } plotOneSheetPDF( plotter, screen, aPlotFrameRef ); } // Everything done, close the plot and restore the environment msg.Printf( _( "Plot: '%s' OK.\n" ), GetChars( plotFileName.GetFullPath() ) ); reporter.Report( msg, REPORTER::RPT_ACTION ); restoreEnvironment( plotter, oldsheetpath ); }