summaryrefslogtreecommitdiffstats
path: root/khexedit/toplevel.h
diff options
context:
space:
mode:
Diffstat (limited to 'khexedit/toplevel.h')
-rw-r--r--khexedit/toplevel.h279
1 files changed, 279 insertions, 0 deletions
diff --git a/khexedit/toplevel.h b/khexedit/toplevel.h
new file mode 100644
index 0000000..fbacca1
--- /dev/null
+++ b/khexedit/toplevel.h
@@ -0,0 +1,279 @@
+/*
+ * 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 <qptrlist.h>
+#include <kapplication.h>
+#include <kstdaccel.h>
+#include <kmainwindow.h>
+
+#include "hexbuffer.h"
+#include "hexmanagerwidget.h"
+#include "statusbarprogress.h"
+
+class QSignalMapper;
+class KAction;
+class KRecentFilesAction;
+class KRadioAction;
+class KSelectAction;
+class KToggleAction;
+class KToolBarButton;
+class KURL;
+class CDragLabel;
+
+
+class KHexEdit : public KMainWindow
+{
+ Q_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;
+
+ QPtrList< KAction > bookmarkList;
+ QSignalMapper *bookmarkMapper;
+ };
+
+ public:
+ KHexEdit( void );
+ ~KHexEdit( void );
+
+ inline void addStartupFile( const QString &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 &layout );
+ void inputModeChanged( const SDisplayInputMode &mode );
+ void bookmarkChanged( QPtrList<SCursorOffset> &list );
+ void removeRecentFile( const QString &fileName );
+ void renameRecentFile( const QString &curName, const QString &newName );
+
+ void setupCaption( const QString &url );
+ void fileActive( const QString &url, bool onDisk );
+ void fileRename( const QString &curName, const QString &newName );
+ void fileClosed( const QString &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( QStringList &fileList, QStringList &offsetList );
+ void initialize( bool openFiles );
+ void addRecentFile( const QString &fileName );
+ bool closeAllWindow( void );
+ void setUndoState( uint undoState );
+ void setSelectionState( uint selectionOffset, uint selectionSize );
+ void setSelectionText( uint selectionOffset, uint selectionSize );
+ void addDocument( const QString &fileName );
+ void removeDocument( const QString &fileName );
+ void renameDocument( const QString &curName, const QString &newName );
+ void setTickedDocument( const QString &fileName );
+
+ void writeConfiguration( KConfig &config );
+ void readConfiguration( KConfig &config );
+ bool eventFilter( QObject *obj, QEvent *event );
+
+ int acceleratorNumKey( uint index );
+ inline CHexEditorWidget *editor( void );
+ inline CHexToolWidget *converter( void );
+ inline CHexViewWidget *hexView( void );
+
+ private:
+ static QPtrList<KHexEdit> mWindowList;
+ CHexManagerWidget *mManager;
+ QStringList mDocumentList;
+
+ QStringList mStartupFileList; ///< Files to automatically open on startup
+ QStringList 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 QString &fileName )
+{
+ mStartupFileList.prepend( fileName );
+ mStartupOffsetList.prepend( QString("%1").arg(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
+
+