diff options
Diffstat (limited to 'tdevdesigner/designer/tableeditorimpl.cpp')
-rw-r--r-- | tdevdesigner/designer/tableeditorimpl.cpp | 494 |
1 files changed, 0 insertions, 494 deletions
diff --git a/tdevdesigner/designer/tableeditorimpl.cpp b/tdevdesigner/designer/tableeditorimpl.cpp deleted file mode 100644 index 060611f6..00000000 --- a/tdevdesigner/designer/tableeditorimpl.cpp +++ /dev/null @@ -1,494 +0,0 @@ -/********************************************************************** -** Copyright (C) 2000-2001 Trolltech AS. All rights reserved. -** -** This file is part of TQt Designer. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** Licensees holding valid TQt Enterprise Edition or TQt Professional Edition -** licenses may use this file in accordance with the TQt Commercial License -** Agreement provided with the Software. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for -** information about TQt Commercial License Agreements. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ - -#include "tableeditorimpl.h" -#ifndef TQT_NO_TABLE -#include <tqtable.h> -#endif -#include "formwindow.h" -#include <tqlabel.h> -#include <tqcombobox.h> -#include <tqheader.h> -#include <tqlistbox.h> -#include <klineedit.h> -#include <tqpushbutton.h> -#include "pixmapchooser.h" -#include "command.h" -#include <tqvaluelist.h> -#include <tqtabwidget.h> -#include <tqdatatable.h> -#include "project.h" -#include "metadatabase.h" -#include "mainwindow.h" - -#include <tdelocale.h> - -TableEditor::TableEditor( TQWidget* parent, TQWidget *editWidget, FormWindow *fw, const char* name, bool modal, WFlags fl ) - : TableEditorBase( parent, name, modal, fl ), -#ifndef TQT_NO_TABLE - editTable( (TQTable*)editWidget ), -#endif - formWindow( fw ) -{ - connect( buttonHelp, TQT_SIGNAL( clicked() ), MainWindow::self, TQT_SLOT( showDialogHelp() ) ); -#ifndef TQT_NO_TABLE - labelColumnPixmap->setText( "" ); - labelRowPixmap->setText( "" ); - -#ifndef TQT_NO_SQL - if ( !::tqqt_cast<TQDataTable*>(editTable) ) -#endif - { - labelFields->hide(); - comboFields->hide(); - labelTable->hide(); - labelTableValue->hide(); - } -#ifndef TQT_NO_SQL - if ( ::tqqt_cast<TQDataTable*>(editTable) ) { - // ## why does this behave weird? - // TabWidget->removePage( rows_tab ); - // rows_tab->hide(); - // ## do this in the meantime... - TabWidget->setTabEnabled( rows_tab, FALSE ); - } - - if ( formWindow->project() && ::tqqt_cast<TQDataTable*>(editTable) ) { - TQStringList lst = MetaDataBase::fakeProperty( TQT_TQOBJECT(editTable), "database" ).toStringList(); - if ( lst.count() == 2 && !lst[ 0 ].isEmpty() && !lst[ 1 ].isEmpty() ) { - TQStringList fields; - fields << "<no field>"; - fields += formWindow->project()->databaseFieldList( lst[ 0 ], lst[ 1 ] ); - comboFields->insertStringList( fields ); - } - if ( !lst[ 1 ].isEmpty() ) - labelTableValue->setText( lst[ 1 ] ); - } -#endif - - readFromTable(); -#endif -} - -TableEditor::~TableEditor() -{ -} - -void TableEditor::columnDownClicked() -{ - if ( listColumns->currentItem() == -1 || - listColumns->currentItem() == (int)listColumns->count() - 1 || - listColumns->count() < 2 ) - return; - saveFieldMap(); - int index = listColumns->currentItem() + 1; - TQListBoxItem *i = listColumns->item( listColumns->currentItem() ); - listColumns->takeItem( i ); - listColumns->insertItem( i, index ); - listColumns->setCurrentItem( i ); - readColumns(); - restoreFieldMap(); - currentColumnChanged( i ); -} - -void TableEditor::columnTextChanged( const TQString &s ) -{ - if ( listColumns->currentItem() == -1 ) - return; - listColumns->blockSignals( TRUE ); - listColumns->changeItem( s, listColumns->currentItem() ); - listColumns->blockSignals( FALSE ); -#ifndef TQT_NO_TABLE - if ( table->horizontalHeader()->iconSet( listColumns->currentItem() ) ) - table->horizontalHeader()->setLabel( listColumns->currentItem(), - *table->horizontalHeader()->iconSet( listColumns->currentItem() ), s ); - else - table->horizontalHeader()->setLabel( listColumns->currentItem(), s ); -#endif -} - -void TableEditor::columnUpClicked() -{ - if ( listColumns->currentItem() <= 0 || - listColumns->count() < 2 ) - return; - saveFieldMap(); - int index = listColumns->currentItem() - 1; - TQListBoxItem *i = listColumns->item( listColumns->currentItem() ); - listColumns->takeItem( i ); - listColumns->insertItem( i, index ); - listColumns->setCurrentItem( i ); - readColumns(); - restoreFieldMap(); - currentColumnChanged( i ); -} - -void TableEditor::currentColumnChanged( TQListBoxItem *i ) -{ - if ( !i ) - return; - editColumnText->blockSignals( TRUE ); - editColumnText->setText( i->text() ); - if ( i->pixmap() ) - labelColumnPixmap->setPixmap( *i->pixmap() ); - else - labelColumnPixmap->setText( "" ); - editColumnText->blockSignals( FALSE ); - -#ifndef TQT_NO_SQL - if ( ::tqqt_cast<TQDataTable*>(editTable) ) { - TQString s = *fieldMap.find( listColumns->index( i ) ); - if ( s.isEmpty() ) - comboFields->setCurrentItem( 0 ); - else if ( comboFields->listBox()->findItem( s ) ) - comboFields->setCurrentItem( comboFields->listBox()->index( comboFields->listBox()->findItem( s ) ) ); - else - comboFields->lineEdit()->setText( s ); - } -#endif -} - -void TableEditor::currentFieldChanged( const TQString &s ) -{ - if ( listColumns->currentItem() == -1 ) - return; - fieldMap.remove( listColumns->currentItem() ); - fieldMap.insert( listColumns->currentItem(), s ); - editColumnText->blockSignals( TRUE ); //## necessary - TQString newColText = s.mid(0,1).upper() + s.mid(1); - editColumnText->setText( newColText ); - columnTextChanged( newColText ); - editColumnText->blockSignals( FALSE ); -} - -void TableEditor::currentRowChanged( TQListBoxItem *i ) -{ - if ( !i ) - return; - editRowText->blockSignals( TRUE ); - editRowText->setText( i->text() ); - if ( i->pixmap() ) - labelRowPixmap->setPixmap( *i->pixmap() ); - else - labelRowPixmap->setText( "" ); - editRowText->blockSignals( FALSE ); -} - -void TableEditor::deleteColumnClicked() -{ - if ( listColumns->currentItem() == -1 ) - return; -#ifndef TQT_NO_TABLE - table->setNumCols( table->numCols() - 1 ); - delete listColumns->item( listColumns->currentItem() ); - readColumns(); - if ( listColumns->firstItem() ) { - listColumns->setCurrentItem( listColumns->firstItem() ); - listColumns->setSelected( listColumns->firstItem(), TRUE ); - } -#endif -} - -void TableEditor::deleteRowClicked() -{ - if ( listRows->currentItem() == -1 ) - return; -#ifndef TQT_NO_TABLE - table->setNumRows( table->numRows() - 1 ); - delete listRows->item( listRows->currentItem() ); - readRows(); - if ( listRows->firstItem() ) { - listRows->setCurrentItem( listRows->firstItem() ); - listRows->setSelected( listRows->firstItem(), TRUE ); - } -#endif -} - -void TableEditor::newColumnClicked() -{ -#ifndef TQT_NO_TABLE - table->setNumCols( table->numCols() + 1 ); - TQMap<TQString, bool> m; - for ( int i = 0; i < table->numCols() - 1; ++i ) - m.insert( table->horizontalHeader()->label( i ), TRUE ); - int n = table->numCols() - 1; - TQString t = TQString::number( n ); - while ( m.find( t ) != m.end() ) - t = TQString::number( ++n ); - table->horizontalHeader()->setLabel( table->numCols() - 1, t ); - listColumns->insertItem( t ); - TQListBoxItem *item = listColumns->item( listColumns->count() - 1 ); - listColumns->setCurrentItem( item ); - listColumns->setSelected( item, TRUE ); -#ifndef TQT_NO_SQL - if ( ::tqqt_cast<TQDataTable*>(editTable) ) { - comboFields->setFocus(); - } else -#endif - { - editColumnText->setFocus(); - editColumnText->selectAll(); - } -#endif -} - -void TableEditor::newRowClicked() -{ -#ifndef TQT_NO_TABLE - table->setNumRows( table->numRows() + 1 ); - TQMap<TQString, bool> m; - for ( int i = 0; i < table->numRows() - 1; ++i ) - m.insert( table->verticalHeader()->label( i ), TRUE ); - int n = table->numRows() - 1; - TQString t = TQString::number( n ); - while ( m.find( t ) != m.end() ) - t = TQString::number( ++n ); - table->verticalHeader()->setLabel( table->numRows() - 1, t ); - listRows->insertItem( t ); - TQListBoxItem *item = listRows->item( listRows->count() - 1 ); - listRows->setCurrentItem( item ); - listRows->setSelected( item, TRUE ); -#endif -} - -void TableEditor::okClicked() -{ - applyClicked(); - accept(); -} - -void TableEditor::rowDownClicked() -{ - if ( listRows->currentItem() == -1 || - listRows->currentItem() == (int)listRows->count() - 1 || - listRows->count() < 2 ) - return; - int index = listRows->currentItem() + 1; - TQListBoxItem *i = listRows->item( listRows->currentItem() ); - listRows->takeItem( i ); - listRows->insertItem( i, index ); - listRows->setCurrentItem( i ); - readRows(); -} - -void TableEditor::rowTextChanged( const TQString &s ) -{ - if ( listRows->currentItem() == -1 ) - return; -#ifndef TQT_NO_TABLE - listRows->changeItem( s, listRows->currentItem() ); - if ( table->verticalHeader()->iconSet( listRows->currentItem() ) ) - table->verticalHeader()->setLabel( listRows->currentItem(), - *table->verticalHeader()->iconSet( listRows->currentItem() ), s ); - else - table->verticalHeader()->setLabel( listRows->currentItem(), s ); -#endif -} - -void TableEditor::rowUpClicked() -{ - if ( listRows->currentItem() <= 0 || - listRows->count() < 2 ) - return; - int index = listRows->currentItem() - 1; - TQListBoxItem *i = listRows->item( listRows->currentItem() ); - listRows->takeItem( i ); - listRows->insertItem( i, index ); - listRows->setCurrentItem( i ); - readRows(); -} - -void TableEditor::applyClicked() -{ - TQValueList<PopulateTableCommand::Row> rows; - TQValueList<PopulateTableCommand::Column> cols; - - int i = 0; -#ifndef TQT_NO_TABLE - for ( i = 0; i < table->horizontalHeader()->count(); ++i ) { - PopulateTableCommand::Column col; - col.text = table->horizontalHeader()->label( i ); - if ( table->horizontalHeader()->iconSet( i ) ) - col.pix = table->horizontalHeader()->iconSet( i )->pixmap(); - col.field = *fieldMap.find( i ); - cols.append( col ); - } - for ( i = 0; i < table->verticalHeader()->count(); ++i ) { - PopulateTableCommand::Row row; - row.text = table->verticalHeader()->label( i ); - if ( table->verticalHeader()->iconSet( i ) ) - row.pix = table->verticalHeader()->iconSet( i )->pixmap(); - rows.append( row ); - } - PopulateTableCommand *cmd = new PopulateTableCommand( i18n( "Edit the Rows and Columns of '%1' " ).arg( editTable->name() ), - formWindow, editTable, rows, cols ); - cmd->execute(); - formWindow->commandHistory()->addCommand( cmd ); -#endif -} - -void TableEditor::chooseRowPixmapClicked() -{ - if ( listRows->currentItem() == -1 ) - return; - TQPixmap pix; - if ( listRows->item( listRows->currentItem() )->pixmap() ) - pix = qChoosePixmap( this, formWindow, *listRows->item( listRows->currentItem() )->pixmap() ); - else - pix = qChoosePixmap( this, formWindow, TQPixmap() ); - - if ( pix.isNull() ) - return; - -#ifndef TQT_NO_TABLE - table->verticalHeader()->setLabel( listRows->currentItem(), pix, table->verticalHeader()->label( listRows->currentItem() ) ); - listRows->changeItem( pix, listRows->currentText(), listRows->currentItem() ); -#endif -} - -void TableEditor::deleteRowPixmapClicked() -{ - if ( listRows->currentItem() == -1 ) - return; -#ifndef TQT_NO_TABLE - table->verticalHeader()->setLabel( listRows->currentItem(), TQPixmap(), table->verticalHeader()->label( listRows->currentItem() ) ); - listRows->changeItem( listRows->currentText(), listRows->currentItem() ); -#endif -} - -void TableEditor::chooseColPixmapClicked() -{ - if ( listColumns->currentItem() == -1 ) - return; - TQPixmap pix; - if ( listColumns->item( listColumns->currentItem() )->pixmap() ) - pix = qChoosePixmap( this, formWindow, *listColumns->item( listColumns->currentItem() )->pixmap() ); - else - pix = qChoosePixmap( this, formWindow, TQPixmap() ); - - if ( pix.isNull() ) - return; -#ifndef TQT_NO_TABLE - table->horizontalHeader()->setLabel( listColumns->currentItem(), pix, table->horizontalHeader()->label( listColumns->currentItem() ) ); - listColumns->changeItem( pix, listColumns->currentText(), listColumns->currentItem() ); -#endif -} - -void TableEditor::deleteColPixmapClicked() -{ - if ( listColumns->currentItem() == -1 ) - return; -#ifndef TQT_NO_TABLE - table->horizontalHeader()->setLabel( listColumns->currentItem(), TQPixmap(), table->horizontalHeader()->label( listColumns->currentItem() ) ); - listColumns->changeItem( listColumns->currentText(), listColumns->currentItem() ); -#endif -} - -void TableEditor::readFromTable() -{ -#ifndef TQT_NO_TABLE - TQHeader *cols = editTable->horizontalHeader(); - table->setNumCols( cols->count() ); - TQMap<TQString, TQString> columnFields = MetaDataBase::columnFields( TQT_TQOBJECT(editTable) ); - for ( int i = 0; i < cols->count(); ++i ) { - if ( editTable->horizontalHeader()->iconSet( i ) ) { - table->horizontalHeader()->setLabel( i, *editTable->horizontalHeader()->iconSet( i ), - editTable->horizontalHeader()->label( i ) ); - listColumns->insertItem( editTable->horizontalHeader()->iconSet( i )->pixmap(), - editTable->horizontalHeader()->label( i ) ); - } else { - table->horizontalHeader()->setLabel( i, editTable->horizontalHeader()->label( i ) ); - listColumns->insertItem( editTable->horizontalHeader()->label( i ) ); - } - TQString cf = *columnFields.find( editTable->horizontalHeader()->label( i ) ); - fieldMap.insert( i, cf ); - } - - if ( listColumns->firstItem() ) { - listColumns->setCurrentItem( listColumns->firstItem() ); - listColumns->setSelected( listColumns->firstItem(), TRUE ); - } - - TQHeader *rows = editTable->verticalHeader(); - table->setNumRows( rows->count() ); - for ( int j = 0; j < rows->count(); ++j ) { - if ( editTable->verticalHeader()->iconSet( j ) ) { - table->verticalHeader()->setLabel( j, *editTable->verticalHeader()->iconSet( j ), - editTable->verticalHeader()->label( j ) ); - listRows->insertItem( editTable->verticalHeader()->iconSet( j )->pixmap(), - editTable->verticalHeader()->label( j ) ); - } else { - table->verticalHeader()->setLabel( j, editTable->verticalHeader()->label( j ) ); - listRows->insertItem( editTable->verticalHeader()->label( j ) ); - } - } - - if ( listRows->firstItem() ) { - listRows->setCurrentItem( listRows->firstItem() ); - listRows->setSelected( listRows->firstItem(), TRUE ); - } -#endif -} - -void TableEditor::readColumns() -{ - int j = 0; -#ifndef TQT_NO_TABLE - for ( TQListBoxItem *i = listColumns->firstItem(); i; i = i->next(), ++j ) { - if ( i->pixmap() ) - table->horizontalHeader()->setLabel( j, *i->pixmap(), i->text() ); - else - table->horizontalHeader()->setLabel( j, i->text() ); - } -#endif -} - -void TableEditor::readRows() -{ - int j = 0; -#ifndef TQT_NO_TABLE - for ( TQListBoxItem *i = listRows->firstItem(); i; i = i->next(), ++j ) { - if ( i->pixmap() ) - table->verticalHeader()->setLabel( j, *i->pixmap(), i->text() ); - else - table->verticalHeader()->setLabel( j, i->text() ); - } -#endif -} - -void TableEditor::saveFieldMap() -{ - tmpFieldMap.clear(); - for ( TQMap<int, TQString>::Iterator it = fieldMap.begin(); it != fieldMap.end(); ++it ) - tmpFieldMap.insert( listColumns->item( it.key() ), *it ); -} - -void TableEditor::restoreFieldMap() -{ - fieldMap.clear(); - for ( TQMap<TQListBoxItem*, TQString>::Iterator it = tmpFieldMap.begin(); it != tmpFieldMap.end(); ++it ) - fieldMap.insert( listColumns->index( it.key() ), *it ); -} |