/***************************************************** ** ** AtlasImportWorker --- readZipFile ** ******************************************************/ int readZipFile() { wxString buf; wxFFileInputStream instream( sharedSection->sqlfile ); wxZipInputStream zipstream( instream ); wxTextInputStream textstream( zipstream ); wxZipEntry *zipentry = zipstream.GetNextEntry(); sharedSection->totalSize = (long)zipstream.GetSize(); if ( zipentry ) { printf( "Entry: %s\n", str2char( zipentry->GetName())); bool b = zipstream.OpenEntry( *zipentry ); printf( "Open flag_ %d\n", b ); while( zipstream.GetLastError() == wxSTREAM_NO_ERROR ) { sharedSection->currentLine++; buf = textstream.ReadLine(); if ( checkCancelOrExit() ) break; addQueryPart( buf ); if ( checkCancelOrExit() ) break; } zipstream.CloseEntry(); } else { printf( "Entry NULL\n" ); } if ( qb.size() > 0 ) execQueryBundle(); return 0; }
void KICAD_MANAGER_FRAME::OnArchiveFiles( wxCommandEvent& event ) { /* List of file extensions to save. */ static const wxChar* extentionList[] = { wxT( "*.sch" ), wxT( "*.lib" ), wxT( "*.cmp" ), wxT( "*.brd" ), wxT( "*.net" ), wxT( "*.pro" ), wxT( "*.pho" ), wxT( "*.py" ), wxT( "*.pdf" ), wxT( "*.txt" ), wxT( "*.dcm" ), NULL }; wxString msg; size_t i; wxFileName fileName = m_ProjectFileName; wxString oldPath = wxGetCwd(); fileName.SetExt( wxT( "zip" ) ); wxFileDialog dlg( this, _( "Archive Project Files" ), fileName.GetPath(), fileName.GetFullName(), ZipFileWildcard, wxFD_SAVE | wxFD_OVERWRITE_PROMPT ); if( dlg.ShowModal() == wxID_CANCEL ) return; wxFileName zip = dlg.GetPath(); wxString currdirname = wxT( "." ); currdirname += zip.GetPathSeparator(); wxDir dir( currdirname ); if( !dir.IsOpened() ) return; // Prepare the zip file wxString zipfilename = zip.GetFullPath(); wxFFileOutputStream ostream(zipfilename); wxZipOutputStream zipstream( ostream ); // Build list of filenames to put in zip archive wxString currFilename; int zipBytesCnt = 0; // Size of the zip file for( i = 0; extentionList[i] != 0; i++ ) { bool cont = dir.GetFirst( &currFilename, extentionList[i] ); while( cont ) { wxFileSystem fsfile; PrintMsg( _( "Archive file " ) + currFilename ); // Read input file and put it in zip file: wxFSFile * infile = fsfile.OpenFile(currFilename); if( infile ) { zipstream.PutNextEntry( currFilename, infile->GetModificationTime() ); infile->GetStream()->Read( zipstream ); zipstream.CloseEntry(); int zippedsize = zipstream.GetSize() - zipBytesCnt; zipBytesCnt = zipstream.GetSize(); PrintMsg( wxT(" ") ); msg.Printf( _( "(%d bytes, compressed %d bytes)\n"), infile->GetStream()->GetSize(), zippedsize ); PrintMsg( msg ); delete infile; } else { PrintMsg( _(" >>Error\n") ); } cont = dir.GetNext( &currFilename ); } } zipBytesCnt = ostream.GetSize(); if( zipstream.Close() ) { msg.Printf( _("\nZip archive <%s> created (%d bytes)" ), GetChars( zipfilename ), zipBytesCnt ); PrintMsg( msg ); PrintMsg( wxT( "\n** end **\n" ) ); } else { msg.Printf( wxT( "Unable to create archive <%s>, abort\n" ), GetChars( zipfilename ) ); PrintMsg( msg ); } wxSetWorkingDirectory( oldPath ); }
void KICAD_MANAGER_FRAME::OnArchiveFiles( wxCommandEvent& event ) { // List of file extensions to save. static const wxChar* extentionList[] = { wxT( "*.pro" ), wxT( "*.sch" ), wxT( "*.lib" ), wxT( "*.dcm" ), // Schematic related files wxT( "*.cmp" ), wxT( "*.brd" ), wxT( "*.kicad_pcb" ), // Brd files wxT( "*.mod" ), wxT( "*.kicad_mod" ), // fp files wxT( "*.gb?" ), wxT( "*.gbrjob" ), // Gerber files wxT( "*.gko" ), wxT( "*.gm1" ), wxT( "*.gm2" ), wxT( "*.g?" ), wxT( "*.gp1" ), wxT( "*.gp2" ), wxT( "*.gpb" ), wxT( "*.gpt" ), wxT( "*.gt?" ), wxT( "*.pos" ), wxT( "*.drl" ), // Fab files wxT( "*.d356" ), wxT( "*.rpt" ), wxT( "*.stp" ), wxT( "*.step" ), // 3d files wxT( "*.wrl" ), wxT( "*.net" ), wxT( "*.py" ), wxT( "*.pdf" ), wxT( "*.txt" ), wxT( "*.kicad_wks" ), wxT( "fp-lib-table" ), wxT( "sym-lib-table" ) }; wxString msg; wxFileName fileName = GetProjectFileName(); wxString oldCwd = wxGetCwd(); fileName.SetExt( wxT( "zip" ) ); wxFileDialog dlg( this, _( "Archive Project Files" ), fileName.GetPath(), fileName.GetFullName(), ZipFileWildcard(), wxFD_SAVE | wxFD_OVERWRITE_PROMPT ); if( dlg.ShowModal() == wxID_CANCEL ) return; wxFileName zip = dlg.GetPath(); wxString currdirname = fileName.GetPathWithSep(); wxDir dir( currdirname ); if( !dir.IsOpened() ) // wxWidgets display a error message on issue. return; wxSetWorkingDirectory( currdirname ); // Prepare the zip file wxString zipfilename = zip.GetFullPath(); wxFFileOutputStream ostream( zipfilename ); if( !ostream.IsOk() ) // issue to create the file. Perhaps not writable dir { wxMessageBox( wxString::Format( _( "Unable to create zip archive file \"%s\"" ), zipfilename ) ); return; } wxZipOutputStream zipstream( ostream ); // Build list of filenames to put in zip archive wxString currFilename; wxArrayString files; for( unsigned ii = 0; ii < arrayDim( extentionList ); ii++ ) wxDir::GetAllFiles( currdirname, &files, extentionList[ii] ); files.Sort(); int zipBytesCnt = 0; for( unsigned ii = 0; ii < files.GetCount(); ii++ ) { wxFileSystem fsfile; wxFileName curr_fn( files[ii] ); curr_fn.MakeRelativeTo( currdirname ); currFilename = curr_fn.GetFullPath(); msg.Printf( _( "Archive file \"%s\"" ), GetChars( currFilename ) ); PrintMsg( msg ); // Read input file and add it to the zip file: wxFSFile* infile = fsfile.OpenFile( currFilename ); if( infile ) { zipstream.PutNextEntry( currFilename, infile->GetModificationTime() ); infile->GetStream()->Read( zipstream ); zipstream.CloseEntry(); int zippedsize = zipstream.GetSize() - zipBytesCnt; zipBytesCnt = zipstream.GetSize(); PrintMsg( wxT(" ") ); msg.Printf( _( "(%lu bytes, compressed %d bytes)\n" ), (unsigned long)infile->GetStream()->GetSize(), zippedsize ); PrintMsg( msg ); delete infile; } else PrintMsg( _( " >>Error\n" ) ); } zipBytesCnt = ostream.GetSize(); if( zipstream.Close() ) { msg.Printf( _( "\nZip archive \"%s\" created (%d bytes)" ), GetChars( zipfilename ), zipBytesCnt ); PrintMsg( msg ); PrintMsg( wxT( "\n** end **\n" ) ); } else { msg.Printf( wxT( "Unable to create archive \"%s\", abort\n" ), GetChars( zipfilename ) ); PrintMsg( msg ); } wxSetWorkingDirectory( oldCwd ); }
void KICAD_MANAGER_FRAME::OnArchiveFiles( wxCommandEvent& event ) { // List of file extensions to save. static const wxChar* extentionList[] = { wxT( "*.sch" ), wxT( "*.lib" ), wxT( "*.mod" ), wxT( "*.cmp" ), wxT( "*.brd" ), wxT( "*.kicad_pcb" ), wxT( "*.gbr" ), wxT( "*.pos" ), wxT( "*.net" ), wxT( "*.pro" ), wxT( "*.drl" ), wxT( "*.py" ), wxT( "*.pdf" ), wxT( "*.txt" ), wxT( "*.dcm" ), wxT( "*.kicad_wks" ), }; wxString msg; wxFileName fileName = GetProjectFileName(); wxString oldCwd = wxGetCwd(); fileName.SetExt( wxT( "zip" ) ); wxFileDialog dlg( this, _( "Archive Project Files" ), fileName.GetPath(), fileName.GetFullName(), ZipFileWildcard, wxFD_SAVE | wxFD_OVERWRITE_PROMPT ); if( dlg.ShowModal() == wxID_CANCEL ) return; wxFileName zip = dlg.GetPath(); wxString currdirname = fileName.GetPathWithSep(); wxDir dir( currdirname ); if( !dir.IsOpened() ) return; wxSetWorkingDirectory( currdirname ); // Prepare the zip file wxString zipfilename = zip.GetFullPath(); wxFFileOutputStream ostream(zipfilename); wxZipOutputStream zipstream( ostream ); // Build list of filenames to put in zip archive wxString currFilename; wxArrayString files; for( unsigned ii = 0; ii < DIM( extentionList ); ii++ ) wxDir::GetAllFiles( currdirname, &files, extentionList[ii] ); files.Sort(); int zipBytesCnt = 0; for( unsigned ii = 0; ii < files.GetCount(); ii++ ) { wxFileSystem fsfile; wxFileName curr_fn( files[ii] ); curr_fn.MakeRelativeTo( currdirname ); currFilename = curr_fn.GetFullPath(); msg.Printf(_( "Archive file <%s>" ), GetChars( currFilename ) ); PrintMsg( msg ); // Read input file and add it to the zip file: wxFSFile* infile = fsfile.OpenFile(currFilename); if( infile ) { zipstream.PutNextEntry( currFilename, infile->GetModificationTime() ); infile->GetStream()->Read( zipstream ); zipstream.CloseEntry(); int zippedsize = zipstream.GetSize() - zipBytesCnt; zipBytesCnt = zipstream.GetSize(); PrintMsg( wxT(" ") ); msg.Printf( _( "(%d bytes, compressed %d bytes)\n"), infile->GetStream()->GetSize(), zippedsize ); PrintMsg( msg ); delete infile; } else PrintMsg( _(" >>Error\n") ); } zipBytesCnt = ostream.GetSize(); if( zipstream.Close() ) { msg.Printf( _("\nZip archive <%s> created (%d bytes)" ), GetChars( zipfilename ), zipBytesCnt ); PrintMsg( msg ); PrintMsg( wxT( "\n** end **\n" ) ); } else { msg.Printf( wxT( "Unable to create archive <%s>, abort\n" ), GetChars( zipfilename ) ); PrintMsg( msg ); } wxSetWorkingDirectory( oldCwd ); }