summaryrefslogtreecommitdiffstats
path: root/khexedit/hexmanagerwidget.cpp
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2020-12-08 12:30:30 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2020-12-08 12:30:30 +0900
commit7ec5a57fc3f04526f36477e22066199372beb0ee (patch)
treef46ff23820fcfbf612070cce46b7496bc766a9fd /khexedit/hexmanagerwidget.cpp
parent062ea53b46c9b76c78fcde2fb0df8b2411af3f39 (diff)
downloadtdeutils-7ec5a57fc3f04526f36477e22066199372beb0ee.tar.gz
tdeutils-7ec5a57fc3f04526f36477e22066199372beb0ee.zip
Renaming of files in preparation for code style tools.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'khexedit/hexmanagerwidget.cpp')
-rw-r--r--khexedit/hexmanagerwidget.cpp370
1 files changed, 370 insertions, 0 deletions
diff --git a/khexedit/hexmanagerwidget.cpp b/khexedit/hexmanagerwidget.cpp
new file mode 100644
index 0000000..a8d4bed
--- /dev/null
+++ b/khexedit/hexmanagerwidget.cpp
@@ -0,0 +1,370 @@
+/*
+ * 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.
+ *
+ */
+
+#include <tdelocale.h>
+#include <tqlayout.h>
+#include "hexmanagerwidget.h"
+#include "searchbar.h"
+
+CHexManagerWidget::CHexManagerWidget( TQWidget *parent, const char *name,
+ EConversionPosition conversionPosition,
+ EPosition tabBarPosition,
+ EPosition searchBarPosition )
+ : TQWidget( parent, name )
+{
+ mValid = false;
+
+ mEditor = new CHexEditorWidget( this );
+ mTabBar = new CTabBar( this );
+ mTabBar->hide();
+ mSearchBar = 0;
+
+ mConverter = new CHexToolWidget( this );
+
+ connect( mEditor->view(), TQT_SIGNAL(fileName(const TQString &, bool)),
+ this, TQT_SLOT( addName(const TQString &)));
+ connect( mEditor->view(), TQT_SIGNAL( fileClosed(const TQString &)),
+ this, TQT_SLOT( removeName(const TQString &)));
+ connect( mEditor->view(),TQT_SIGNAL(fileRename(const TQString &,const TQString &)),
+ this, TQT_SLOT(changeName(const TQString &,const TQString &)));
+ connect( mEditor->view(), TQT_SIGNAL( cursorChanged( SCursorState & ) ),
+ mConverter, TQT_SLOT( cursorChanged( SCursorState & ) ) );
+ connect( mConverter, TQT_SIGNAL( closed(void) ),
+ this, TQT_SIGNAL( conversionClosed(void) ) );
+ connect( mTabBar, TQT_SIGNAL(selected(const TQString &)),
+ this, TQT_SLOT(open(const TQString &)));
+
+ mValid = true;
+ setConversionVisibility( conversionPosition );
+ setTabBarPosition( tabBarPosition );
+ setSearchBarPosition( searchBarPosition );
+}
+
+
+CHexManagerWidget::~CHexManagerWidget( void )
+{
+ delete mEditor;
+ delete mTabBar;
+ delete mConverter;
+}
+
+
+void CHexManagerWidget::updateLayout( void )
+{
+ if( mValid == false ) { return; }
+
+ delete layout();
+ TQVBoxLayout *vlay = new TQVBoxLayout( this, 0, 0 );
+
+ if( mSearchBar && mSearchBarPosition == AboveEditor )
+ {
+ vlay->addWidget( mSearchBar );
+ }
+
+ if( mTabPosition == AboveEditor )
+ {
+ vlay->addWidget( mTabBar );
+ vlay->addWidget( mEditor, 1 );
+ }
+ else
+ {
+ vlay->addWidget( mEditor, 1 );
+ vlay->addWidget( mTabBar );
+ }
+
+ if( mSearchBar && mSearchBarPosition == BelowEditor )
+ {
+ vlay->addWidget( mSearchBar );
+ }
+
+ if( mConversionPosition == Embed )
+ {
+ vlay->addWidget( mConverter );
+ }
+ vlay->activate(); // Required in this case
+}
+
+
+void CHexManagerWidget::setConversionVisibility( EConversionPosition position )
+{
+ if( mValid == false )
+ {
+ return;
+ }
+
+ if( mConversionPosition == position )
+ {
+ if( mConversionPosition == Float )
+ {
+ mConverter->raise();
+ }
+ return;
+ }
+
+ mConversionPosition = position;
+ if( mConversionPosition == Hide )
+ {
+ mConverter->hide();
+ }
+ else if( mConversionPosition == Float )
+ {
+ TQPoint point = mapToGlobal( TQPoint(0,0) );
+ TQRect rect = geometry();
+ TQPoint p;
+
+ p.setX(point.x() + rect.width()/2 - mConverter->minimumSize().width()/2);
+ p.setY(point.y() + rect.height()/2 - mConverter->minimumSize().height()/2);
+ mConverter->resize( mConverter->minimumSize() );
+ mConverter->reparent( 0, WStyle_Customize | WStyle_DialogBorder, p, true );
+ mConverter->setCaption(kapp->makeStdCaption(i18n("Conversion")));
+ }
+ else
+ {
+ mConversionPosition = Embed;
+ uint utilHeight = mConverter->minimumSize().height();
+ TQPoint p( 0, height() - utilHeight );
+ mConverter->reparent( this, 0, p, true );
+ }
+
+ updateLayout();
+}
+
+
+void CHexManagerWidget::setTabBarPosition( EPosition position )
+{
+ mTabPosition = position;
+ if( mTabPosition != HideItem && mTabBar->count() > 0 )
+ {
+ if( mTabPosition == AboveEditor )
+ {
+ mTabBar->setShape( TQTabBar::RoundedAbove );
+ }
+ else
+ {
+ mTabBar->setShape( TQTabBar::RoundedBelow );
+ }
+ mTabBar->show();
+ }
+ else
+ {
+ mTabBar->hide();
+ }
+
+ updateLayout();
+}
+
+
+void CHexManagerWidget::setSearchBarPosition( EPosition position )
+{
+ mSearchBarPosition = position;
+ if( position != HideItem )
+ {
+ if( mSearchBar == 0 )
+ {
+ mSearchBar = new CSearchBar( this );
+ connect( mSearchBar, TQT_SIGNAL(hidden()), this, TQT_SLOT(searchBarHidden()) );
+ connect( mSearchBar, TQT_SIGNAL(findData(SSearchControl &, uint, bool)),
+ mEditor, TQT_SLOT(findData(SSearchControl &, uint, bool)) );
+ connect( editor()->view(), TQT_SIGNAL( cursorChanged( SCursorState & ) ),
+ mSearchBar, TQT_SLOT( cursorMoved() ) );
+ }
+ mSearchBar->show();
+ }
+ else
+ {
+ if( mSearchBar != 0 )
+ {
+ mSearchBar->hide();
+ }
+ }
+
+ updateLayout();
+}
+
+
+void CHexManagerWidget::searchBarHidden( void )
+{
+ updateLayout();
+ mSearchBarPosition = HideItem;
+ emit searchBarClosed();
+}
+
+
+void CHexManagerWidget::addName( const TQString &name )
+{
+ if( name.isEmpty() == true )
+ {
+ return;
+ }
+
+ mTabBar->addName( name );
+ if( mTabBar->isVisible() == false && mTabPosition != HideItem )
+ {
+ setTabBarPosition( mTabPosition );
+ }
+}
+
+
+void CHexManagerWidget::removeName( const TQString &name )
+{
+ mTabBar->removeName( name );
+ if( mTabBar->isVisible() == true && mTabBar->count() == 0 )
+ {
+ setTabBarPosition( mTabPosition );
+ }
+}
+
+
+void CHexManagerWidget::changeName( const TQString &curName,
+ const TQString &newName )
+{
+ mTabBar->changeName( curName, newName );
+}
+
+
+void CHexManagerWidget::open( const TQString &name )
+{
+ mEditor->open( name, false, 0 );
+}
+
+
+int CHexManagerWidget::preferredWidth( void )
+{
+ int w = mEditor->defaultTextWidth();
+ if( mConversionPosition == Embed )
+ {
+ int converterWidth = mConverter->sizeHint().width();
+ w = TQMAX( w, converterWidth );
+ }
+ return( w );
+}
+
+
+
+CTabBar::CTabBar( TQWidget *parent, char *name )
+ :TQTabBar( parent, name )
+{
+ connect( this, TQT_SIGNAL(selected(int)), this, TQT_SLOT(slotSelected(int)) );
+}
+
+
+void CTabBar::addName( const TQString &name )
+{
+ TQString n( name.right(name.length()-name.findRev('/')-1) );
+
+ TQTab *t = find( n );
+ if( t == 0 )
+ {
+ t = new TQTab();
+ t->setText( n);
+ int id = addTab( t );
+ mFileList.append( CFileKey(name,id) );
+ }
+ setCurrentTab(t);
+}
+
+
+void CTabBar::removeName( const TQString &name )
+{
+ TQString n( name.right(name.length()-name.findRev('/')-1) );
+ TQTab *t = find(n);
+ if( t == 0 )
+ {
+ return;
+ }
+
+ TQValueList<CFileKey>::Iterator it;
+ for( it = mFileList.begin(); it != mFileList.end(); ++it )
+ {
+ if( (*it).id() == t->identifier() )
+ {
+ mFileList.remove(it);
+ removeTab(t);
+ layoutTabs();
+ break;
+ }
+ }
+}
+
+
+void CTabBar::changeName( const TQString &curName, const TQString &newName )
+{
+ TQString n( curName.right(curName.length()-curName.findRev('/')-1) );
+ TQTab *t = find(n);
+ if( t == 0 )
+ {
+ return;
+ }
+
+ TQValueList<CFileKey>::Iterator it;
+ for( it = mFileList.begin(); it != mFileList.end(); ++it )
+ {
+ if( (*it).id() == t->identifier() )
+ {
+ TQString m( newName.right(newName.length()-newName.findRev('/')-1) );
+ t->setText(m);
+
+ mFileList.remove(it);
+ mFileList.append( CFileKey(newName,t->identifier()) );
+ layoutTabs();
+ update(); // Seems to be necessary
+ break;
+ }
+ }
+}
+
+
+TQTab *CTabBar::find( const TQString &name )
+{
+ TQPtrList<TQTab> &list = *tabList();
+ for( TQTab *t = list.first(); t != 0; t = list.next() )
+ {
+ if( t->text() == name )
+ {
+ return( t );
+ }
+ }
+
+ return( 0 );
+}
+
+
+int CTabBar::count( void )
+{
+ return( tabList()->count() );
+}
+
+
+void CTabBar::slotSelected( int id )
+{
+ TQValueList<CFileKey>::Iterator it;
+ for( it = mFileList.begin(); it != mFileList.end(); ++it )
+ {
+ if( (*it).id() == id )
+ {
+ emit selected( (*it).filename() );
+ }
+ }
+}
+
+
+
+
+#include "hexmanagerwidget.moc"