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/toplevel.h

281 lines
7.5 KiB

/*
* khexedit - Versatile hex editor
* Copyright (C) 1999-2000 Espen Sand, espensa@online.no
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
#ifndef _TOPLEVEL_H_
#define _TOPLEVEL_H_
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <tqptrlist.h>
#include <kapplication.h>
#include <kstdaccel.h>
#include <kmainwindow.h>
#include "hexbuffer.h"
#include "hexmanagerwidget.h"
#include "statusbarprogress.h"
class TQSignalMapper;
class KAction;
class KRecentFilesAction;
class KRadioAction;
class KSelectAction;
class KToggleAction;
class KToolBarButton;
class KURL;
class CDragLabel;
class KHexEdit : public KMainWindow
{
Q_OBJECT
TQ_OBJECT
enum StatusBarId
{
status_WriteProtect = 0,
status_Layout = 1,
status_Offset = 2,
status_Size = 3,
status_Ovr = 4,
status_Modified = 5,
status_Selection = 6,
status_Progress = 7
};
struct SActionList
{
KAction *insert;
KRecentFilesAction *openRecent;
KAction *save;
KAction *saveAs;
KAction *revert;
KAction *close;
KAction *print;
KAction *exportData;
KAction *cancel;
KToggleAction *readOnly;
KToggleAction *resizeLock;
KAction *newWindow;
KAction *closeWindow;
KAction *quit;
KAction *undo;
KAction *redo;
KAction *cut;
KAction *copy;
KAction *paste;
KAction *selectAll;
KAction *unselect;
KAction *find;
KAction *findNext;
KAction *findPrev;
KAction *replace;
KAction *gotoOffset;
KAction *insertPattern;
KAction *copyAsText;
KAction *pasteToNewFile;
KAction *pasteToNewWindow;
KRadioAction *hexadecimal;
KRadioAction *decimal;
KRadioAction *octal;
KRadioAction *binary;
KRadioAction *textOnly;
KToggleAction *showOffsetColumn;
KToggleAction *showTextColumn;
KToggleAction *offsetAsDecimal;
KToggleAction *dataUppercase;
KToggleAction *offsetUppercase;
KRadioAction *defaultEncoding;
KRadioAction *usAsciiEncoding;
KRadioAction *ebcdicEncoding;
// KAction *customEncoding;
KAction *strings;
// KAction *recordViewer;
KAction *filter;
KAction *characterTable;
KAction *converter;
KAction *statistics;
KAction *addBookmark;
KAction *replaceBookmark;
KAction *removeBookmark;
KAction *removeAllBookmark;
KAction *nextBookmark;
KAction *prevBookmark;
KToggleAction *showFullPath;
KRadioAction *tabHide;
KRadioAction *tabShowBelowEditor;
KRadioAction *tabShowAboveEditor;
KRadioAction *conversionHide;
KRadioAction *conversionFloat;
KRadioAction *conversionEmbed;
KRadioAction *searchHide;
KRadioAction *searchShowAboveEditor;
KRadioAction *searchShowBelowEditor;
// KAction *favorites;
TQPtrList< KAction > bookmarkList;
TQSignalMapper *bookmarkMapper;
};
public:
KHexEdit( void );
~KHexEdit( void );
inline void addStartupFile( const TQString &fileName );
inline void setStartupOffset( uint offset );
public slots:
KHexEdit *newWindow( void );
void pasteNewWindow( void );
void closeWindow( void );
void closeProgram( void );
void statusBarPressed( int id );
void operationChanged( bool state );
void cursorChanged( SCursorState &state );
void fileState( SFileState &state );
void layoutChanged( const SDisplayLayout &tqlayout );
void inputModeChanged( const SDisplayInputMode &mode );
void bookmarkChanged( TQPtrList<SCursorOffset> &list );
void removeRecentFile( const TQString &fileName );
void renameRecentFile( const TQString &curName, const TQString &newName );
void setupCaption( const TQString &url );
void fileActive( const TQString &url, bool onDisk );
void fileRename( const TQString &curName, const TQString &newName );
void fileClosed( const TQString &url );
void readConfiguration( void );
void writeConfiguration( void );
void editMode( CHexBuffer::EEditMode editMode );
void encodingChanged( const SEncodeState &state );
void textWidth( uint width );
void setDisplayMode( void );
void showFullPath( void );
void showDocumentTabs( void );
void showConversionField( void );
void showSearchBar( void );
void setEncoding( void );
void documentMenuCB( int id );
/**
* Slot for opening a file among the recently opened files.
*/
void slotFileOpenRecent( const KURL & );
protected:
virtual bool queryExit( void );
virtual bool queryClose( void );
private slots:
void delayedStartupOpen( void );
void removeRecentFiles( void );
void conversionClosed( void );
void searchBarClosed( void );
void resizeTest();
private:
void setupActions( void );
void setupStatusBar( void );
void open( TQStringList &fileList, TQStringList &offsetList );
void initialize( bool openFiles );
void addRecentFile( const TQString &fileName );
bool closeAllWindow( void );
void setUndoState( uint undoState );
void setSelectionState( uint selectionOffset, uint selectionSize );
void setSelectionText( uint selectionOffset, uint selectionSize );
void addDocument( const TQString &fileName );
void removeDocument( const TQString &fileName );
void renameDocument( const TQString &curName, const TQString &newName );
void setTickedDocument( const TQString &fileName );
void writeConfiguration( KConfig &config );
void readConfiguration( KConfig &config );
bool eventFilter( TQObject *obj, TQEvent *event );
int acceleratorNumKey( uint index );
inline CHexEditorWidget *editor( void );
inline CHexToolWidget *converter( void );
inline CHexViewWidget *hexView( void );
private:
static TQPtrList<KHexEdit> mWindowList;
CHexManagerWidget *mManager;
TQStringList mDocumentList;
TQStringList mStartupFileList; ///< Files to automatically open on startup
TQStringList mStartupOffsetList; ///< Start offset for those files.
uint mStartupOffset; ///< Value read from the command line
SActionList mAction;
CDragLabel *mDragLabel;
KToolBarButton *mWriteProtectButton;
bool mIsModified;
bool mShowFullPath;
bool mSelectionAsHexadecimal;
uint mSelectionOffset;
uint mSelectionSize;
uint mUndoState;
int mRecentFileId;
};
inline void KHexEdit::addStartupFile( const TQString &fileName )
{
mStartupFileList.prepend( fileName );
mStartupOffsetList.prepend( TQString("%1").tqarg(mStartupOffset,0,16) );
mStartupOffset = 0;
}
inline void KHexEdit::setStartupOffset( uint offset )
{
mStartupOffset = offset;
}
inline CHexEditorWidget *KHexEdit::editor( void )
{
return( mManager->editor() );
}
inline CHexViewWidget *KHexEdit::hexView( void )
{
return( mManager->editor()->view() );
}
inline CHexToolWidget *KHexEdit::converter( void )
{
return( mManager->converter() );
}
#endif