You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeutils/khexedit/lib/kbytesedit.h

165 lines
5.7 KiB

/***************************************************************************
kbytesedit.h - description
-------------------
begin : Die Jul 9 2003
copyright : (C) 2003 by Friedrich W. H. Kossebau
email : Friedrich.W.H@Kossebau.de
***************************************************************************/
/***************************************************************************
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License version 2 as published by the Free Software Foundation. *
* *
***************************************************************************/
#ifndef KHE_KBYTESEDIT_H
#define KHE_KBYTESEDIT_H
#include "khexedit.h"
#include <khexedit_export.h>
namespace KHE
{
class KDataBuffer;
class KBytesEditPrivate;
/** the beginner's hex edit widget ;)
*
* It hides the concept of the KDataBuffer and accepts a pure pointer
* to a reasonable large array of bytes
*
* 1. used as viewer
* a) static data ranges -> no changes for data pointer and length
* possible changes are told to the widget by repaintRange
* b) changing data ranges -> data pointer and length might change
* changes told by
* * resetData( char *, int size, bool repaint );
* *
* 2. used as editor
* a) static data ranges
* data pointer stays the same
* b) changing data ranges
* pointer to the data changes in charge of the widget:
* given pointer and intermediate pointer are possibly invalid
* problem: who cares about the array if the data is deleted?
* -> solved by setAutoDelete()
*
*
*@author Friedrich W. H. Kossebau
*/
//TODO: give the bytes edit widget an empty buffer as default
class KHEXEDIT_EXPORT KBytesEdit : public KHexEdit
{
TQ_OBJECT
//_PROPERTY( char * Data READ data )
TQ_PROPERTY( int DataSize READ dataSize )
TQ_PROPERTY( int MaxDataSize READ maxDataSize WRITE setMaxDataSize )
TQ_PROPERTY( bool AutoDelete READ isAutoDelete WRITE setAutoDelete DESIGNABLE false )
public:
/** creates a new widget to view/edit data
* @param D pointer to memory
* @param S size of used memory
* @param RS_ real size of the memory
* @param KM keep the memory on resize (RS_ is then the maximum size)
* @param Parent parent widget
* @param Name name for this widget
* @param F flags
*/
KBytesEdit( char *D, int DS_, int RS_, bool KM, TQWidget *Parent = 0, const char *Name = 0, WFlags F = 0 );
/** hands over to the editor a new byte array.
* If there exists an old one and autodelete is set the old one gets deleted.
* @param D pointer to memory
* @param S size of used memory
* @param RS_ real size of the memory
* @param KM keep the memory on resize (RS_ is the maximum size)
*/
KBytesEdit( char *D, int DS_, TQWidget *Parent = 0, const char *Name = 0, WFlags F = 0 );
/** hands over to the editor a new byte array.
* If there exists an old one and autodelete is set the old one gets deleted.
* @param D pointer to memory
* @param S size of used memory
* @param RS_ real size of the memory
* @param KM keep the memory on resize (RS_ is the maximum size)
*/
KBytesEdit( TQWidget *Parent = 0, const char *Name = 0, WFlags F = 0 );
virtual ~KBytesEdit();
public: // value access
/** returns the pointer to the actual byte array. This can be but must not be the one
* that was given in the constructor.
*/
char *data() const;
/** returns the size of the actual byte array */
int dataSize() const;
/** returns the maximal allowed size for the byte array */
int maxDataSize () const;
/** returns whether autodelete is set for the byte array */
bool isAutoDelete() const;
/** returns whether the memory of the byte array is kept */
bool keepsMemory() const;
public: // logic value service
public: // modification access
public slots:
/** hands over to the editor a new byte array.
* If there exists an old one and autodelete is set the old one gets deleted.
* @param D pointer to memory
* @param S size of used memory
* @param RS_ real size of the memory
* @param KM keep the memory on resize (RS_ is the maximum size)
*/
void setData( char *D, int S, int RS_ = -1, bool KM = true );
/** sets whether the given array should be handled read only or not */
virtual void setReadOnly( bool RO = true );
/** sets the maximal size of the actual byte array. If the actual array is already larger
* it will not be modified but there can be only done non-inserting actions
* until the array's is below the limit
*/
void setMaxDataSize( int MS );
/** sets whether the array should be deleted on the widget's end or if a new array is set.
* Default is false
*/
void setAutoDelete( bool AD = true );
/** sets whether the memory given by setData or in the constructor should be kept on resize
*/
void setKeepsMemory( bool KM = true );
/** repaint the indizes from i1 to i2 */
void repaintRange( int i1, int i2 );
protected:
/** deletes the databuffer */
void clean();
protected slots:
protected:
/** */
bool AutoDelete:1;
/** */
KBytesEditPrivate *d;
private: // Disabling copy constructor and operator= - not useful
KBytesEdit( const KBytesEdit & );
KBytesEdit &operator=( const KBytesEdit & );
};
}
#endif