From: Rafi Y. <ya...@us...> - 2005-09-12 20:23:47
|
Update of /cvsroot/krusader/krusader_kde3/krusader/KViewer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3476/krusader/KViewer Modified Files: panelviewer.cpp panelviewer.h Log Message: fallback to the old style hex viewer Index: panelviewer.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/KViewer/panelviewer.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** panelviewer.cpp 9 Aug 2005 15:01:42 -0000 1.5 --- panelviewer.cpp 12 Sep 2005 20:23:39 -0000 1.6 *************** *** 9,12 **** --- 9,13 ---- #include <qlabel.h> #include <kmimetype.h> + #include <ktempfile.h> #include <klocale.h> #include <klibloader.h> *************** *** 14,17 **** --- 15,21 ---- #include <kdebug.h> #include <kfileitem.h> + #include <kio/netaccess.h> + #include <qfile.h> + #include <kde_file.h> #include "panelviewer.h" *************** *** 59,68 **** if ( !cpart ){ cpart = getPart( cmimetype ); ! mimes->insert( cmimetype, cpart ); } } if( mode == Hex ){ if ( !cpart ) cpart = getHexPart(); } --- 63,75 ---- if ( !cpart ){ cpart = getPart( cmimetype ); ! mimes->insert( cmimetype, cpart ); } } + KTempFile tmpFile; + if( mode == Hex ){ if ( !cpart ) cpart = getHexPart(); + if ( !cpart ) oldHexViewer(tmpFile); } *************** *** 126,136 **** part = ( KParts::ReadOnlyPart * ) factory->create( this, "hexedit2part","KParts::ReadOnlyPart" ); } - else { - KMessageBox::information(this,i18n("Can't find KHexEdit, reverting to text mode"),i18n("Sorry"),"KHexEditNotFound"); - } return part; } /* ----==={ PanelEditor }===---- */ --- 133,191 ---- part = ( KParts::ReadOnlyPart * ) factory->create( this, "hexedit2part","KParts::ReadOnlyPart" ); } return part; } + void PanelViewer::oldHexViewer(KTempFile& tmpFile) { + QString file; + // files that are not local must first be downloaded + if ( !curl.isLocalFile() ) { + if ( !KIO::NetAccess::download( curl, file,this ) ) { + KMessageBox::sorry( this, i18n( "KrViewer is unable to download: " ) + curl.url() ); + return ; + } + } else file = curl.path(); + + + // create a hex file + QFile f_in( file ); + f_in.open( IO_ReadOnly ); + QDataStream in( &f_in ); + + FILE *out = KDE_fopen( tmpFile.name().local8Bit(), "w" ); + + KIO::filesize_t fileSize = f_in.size(); + KIO::filesize_t address = 0; + char buf[ 16 ]; + unsigned int* pBuff = ( unsigned int* ) buf; + + while ( address < fileSize ) { + memset( buf, 0, 16 ); + int bufSize = ( ( fileSize - address ) > 16 ) ? 16 : ( fileSize - address ); + in.readRawBytes( buf, bufSize ); + fprintf( out, "0x%8.8llx: ", address ); + for ( int i = 0; i < 4; ++i ) { + if ( i < ( bufSize / 4 ) ) fprintf( out, "%8.8x ", pBuff[ i ] ); + else fprintf( out, " " ); + } + fprintf( out, "| " ); + + for ( int i = 0; i < bufSize; ++i ) { + if ( buf[ i ] > ' ' && buf[ i ] < '~' ) fputc( buf[ i ], out ); + else fputc( '.', out ); + } + fputc( '\n', out ); + + address += 16; + } + // clean up + f_in.close(); + fclose( out ); + if ( !curl.isLocalFile() ) + KIO::NetAccess::removeTempFile( file ); + + curl = tmpFile.name(); + } + /* ----==={ PanelEditor }===---- */ Index: panelviewer.h =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/KViewer/panelviewer.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** panelviewer.h 8 Aug 2005 22:23:49 -0000 1.5 --- panelviewer.h 12 Sep 2005 20:23:39 -0000 1.6 *************** *** 7,13 **** --- 7,15 ---- #include <kparts/part.h> #include <kio/job.h> + #include <ktempfile.h> #include <qdict.h> #include <qlabel.h> + class PanelViewerBase: public QWidgetStack { Q_OBJECT *************** *** 50,53 **** --- 52,56 ---- KParts::ReadOnlyPart *getPart( QString mimetype ); KParts::ReadOnlyPart* getHexPart(); + void oldHexViewer(KTempFile& tmpFile); }; |