• Skip to content
  • Skip to link menu
KDE 4.1 API Reference
  • KDE API Reference
  • kdelibs
  • Sitemap
  • Contact Us
 

KHexEdit

KHexEdit

4.1

Introduction

The KHexEdit interfaces - also called KHE interfaces - are a set of well-defined interfaces which a library can implement to provide byte level editing services. Programs which utilise these interfaces can thus allow the user to choose which implementation of the hex editor component to use. At the time of KDE 4.1 the only implementation known is the Okteta Component (found in kdeutils/okteta/parts/kbytesedit).

How to use the KHexEdit Interfaces

This HOWTO will explain step by step how to create a KHexEdit component and prepare it for usage.

The code lines

The following source code tries to create a hexedit component. If the component could not be created, a simple message label is created. Otherwise we set the data and configure it to our needs by using the different interfaces if available.

  // used interfaces
  #include <khexedit/byteseditinterface.h>
  #include <khexedit/valuecolumninterface.h>
  #include <khexedit/charcolumninterface.h>
  #include <khexedit/clipboardinterface.h>

  //
  const char *data = 0;
  int dataSize = 0;

  // create data field and set dataSize
  // ...

  QWidget *bytesEditWidget = KHE::createBytesEditWidget( parent );

  // no hexedit component installed?
  if( !bytesEditWidget )
  {
    bytesEditWidget = new QLabel( parent, i18n("Could not find a hexedit component.") );
  }
  // component found and widget created
  else
  {
    // fetch the editor interface
    KHE::BytesEditInterface *bytesEdit = KHE::bytesEditInterface( bytesEditWidget );
    Q_ASSERT( bytesEdit ); // This should not fail!

    // now use the editor.
    bytesEdit->setData( data, dataSize, -1 );
    bytesEdit->setMaxDataSize( dataSize );
    bytesEdit->setReadOnly( false );
    bytesEdit->setAutoDelete( true );

    KHE::ValueColumnInterface *valueColumn = KHE::valueColumnInterface( bytesEditWidget );
    if( valueColumn )
    {
      valueColumn->setCoding( KHE::ValueColumnInterface::BinaryCoding );
      valueColumn->setByteSpacingWidth( 2 );
      valueColumn->setNoOfGroupedBytes( 4 );
      valueColumn->setGroupSpacingWidth( 12 );
    }

    KHE::CharColumnInterface *charColumn = KHE::charColumnInterface( bytesEditWidget );
    if( charColumn )
    {
      charColumn->setShowUnprintable( false );
      charColumn->setSubstituteChar( '*' );
    }

    KHE::ClipboardInterface *clipboard = KHE::clipboardInterface( bytesEditWidget );
    if( clipboard )
    {
      // Yes, use bytesEditWidget, not clipboard, because that's the QObject, indeed hacky...
      connect( bytesEditWidget, SIGNAL(copyAvailable(bool)), this, SLOT(offerCopy(bool)) );
    }
  }

  // now you can use bytesEditWidget like any other widget object...

Notes

As the KHexEdit interfaces are header-only, you don't need to link against any additional libraries.

Author(s):
Friedrich W. H. Kossebau <kossebau@kde.org>
Maintainer(s):
Friedrich W. H. Kossebau <kossebau@kde.org>
License(s):
LGPLv2

KHexEdit

Skip menu "KHexEdit"
  • Main Page
  • Namespace List
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

kdelibs

Skip menu "kdelibs"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • Kate
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • KIO
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • Kross
  • KUtils
  • Nepomuk
  • Solid
  • Sonnet
  • ThreadWeaver
Generated for kdelibs by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal