diff options
Diffstat (limited to 'kspread/tests/inspector.cpp')
-rw-r--r-- | kspread/tests/inspector.cpp | 261 |
1 files changed, 261 insertions, 0 deletions
diff --git a/kspread/tests/inspector.cpp b/kspread/tests/inspector.cpp new file mode 100644 index 00000000..d44b7bf3 --- /dev/null +++ b/kspread/tests/inspector.cpp @@ -0,0 +1,261 @@ +/* This file is part of the KDE project + Copyright 2005 Ariya Hidayat <[email protected]> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. +*/ + +#include "inspector.h" + +#include <tqlayout.h> +#include <tqlistview.h> +#include <tqtextstream.h> + +#include <kdialogbase.h> + +#include "kspread_cell.h" +#include "kspread_style.h" +#include "kspread_sheet.h" +#include "dependencies.h" + +namespace KSpread +{ + +class Inspector::Private +{ +public: + Cell* cell; + Format* format; + Sheet* sheet; + + TQListView *cellView; + TQListView *formatView; + TQListView *sheetView; + TQListView *styleView; + TQListView* depView; + + void handleCell(); + void handleFormat(); + void handleSheet(); + void handleStyle(); + void handleDep(); +}; + +} + +using namespace KSpread; + +static TQString boolAsString( bool b ) +{ + if( b ) return TQString( "True" ); + else return TQString( "False" ); +} + +static TQString longAsHexstring( long l ) +{ + return TQString("%1").arg(l, 8, 16); +} + +static TQString dirAsString( Sheet::LayoutDirection dir ) +{ + TQString str; + switch( dir ) + { + case Sheet::LeftToRight: str = "Left to Right"; break; + case Sheet::RightToLeft: str = "Right to Left"; break; + default: str = "Unknown"; break; + } + return str; +} + +void Inspector::Private::handleCell() +{ + TQString str; + + cellView->clear(); + + new TQListViewItem( cellView, "Column", TQString::number( cell->column() ) ); + new TQListViewItem( cellView, "Row", TQString::number( cell->row() ) ); + new TQListViewItem( cellView, "Name", cell->name() ); + new TQListViewItem( cellView, "Full Name", cell->fullName() ); + + new TQListViewItem( cellView, "Default", boolAsString( cell->isDefault() ) ); + new TQListViewItem( cellView, "Empty", boolAsString( cell->isEmpty() ) ); + new TQListViewItem( cellView, "Formula", boolAsString( cell->isFormula() ) ); + new TQListViewItem( cellView, "Format Properties", longAsHexstring( static_cast<long>( cell->format()->propertiesMask() ) ) ); + new TQListViewItem( cellView, "Style Properties", longAsHexstring( static_cast<long>( cell->format()->style()->features() ) ) ); + new TQListViewItem( cellView, "Text", cell->text() ); + new TQListViewItem( cellView, "Text (Displayed)", + cell->strOutText().replace( TQChar('\n'), "\\n" ) ); + + TQTextStream ts( &str, IO_WriteOnly ); + ts << cell->value(); + new TQListViewItem( cellView, "Value", str ); + + new TQListViewItem( cellView, "Link", cell->link() ); + + new TQListViewItem( cellView, "Width", TQString::number( cell->dblWidth() ) ); + new TQListViewItem( cellView, "Height", TQString::number( cell->dblHeight() ) ); +} + +void Inspector::Private::handleFormat() +{ + formatView->clear(); + int col = cell->column(); + int row = cell->row(); + + new TQListViewItem( formatView, "Angle", TQString::number( format->getAngle(col, row) ) ); + new TQListViewItem( formatView, "Multirow", boolAsString( format->multiRow(col, row) ) ); + new TQListViewItem( formatView, "Protected", format->hasProperty( Format::PVerticalText ) + ? "Not specified" : boolAsString( format->isProtected(col, row) ) ); + new TQListViewItem( formatView, "Vertical Text", boolAsString( format->verticalText(col, row ) ) ); + + Format::Currency currrency; + bool valid = format->currencyInfo(currrency); + new TQListViewItem( formatView, "Currency symbol", valid ? currrency.symbol : "Invalid" ); + bool ok = false; + TQString currencyType; + if (valid) + currencyType = Currency::getChooseString(currrency.type, ok); + new TQListViewItem( formatView, "Currency type", valid && ok ? currencyType : "Invalid" ); + + TQListViewItem* flags = new TQListViewItem( formatView, "Flags" ); + new TQListViewItem( flags, "Border (left)", + boolAsString( format->hasProperty(Format::PLeftBorder, true) ) ); + new TQListViewItem( flags, "Border (right)", + boolAsString( format->hasProperty(Format::PRightBorder, true) ) ); + new TQListViewItem( flags, "Border (top)", + boolAsString( format->hasProperty(Format::PTopBorder, true) ) ); + new TQListViewItem( flags, "Border (bottom)", + boolAsString( format->hasProperty(Format::PBottomBorder, true) ) ); + + new TQListViewItem( formatView, "Border pen width (bottom)", + TQString::number( format->bottomBorderPen(col,row).width() ) ); +} + +void Inspector::Private::handleStyle() // direct style access +{ + styleView->clear(); + const Style* style = cell->format()->style(); + + TQListViewItem* flags = new TQListViewItem( styleView, "Flags" ); + new TQListViewItem( flags, "Border (left)", + boolAsString( style->hasFeature(Style::SLeftBorder, true) ) ); + new TQListViewItem( flags, "Border (right)", + boolAsString( style->hasFeature(Style::SRightBorder, true) ) ); + new TQListViewItem( flags, "Border (top)", + boolAsString( style->hasFeature(Style::STopBorder, true) ) ); + new TQListViewItem( flags, "Border (bottom)", + boolAsString( style->hasFeature(Style::SBottomBorder, true) ) ); + + new TQListViewItem( styleView, "Border pen width (bottom)", + TQString::number( style->bottomBorderPen().width() ) ); +} + +void Inspector::Private::handleSheet() +{ + sheetView->clear(); + + new TQListViewItem( sheetView, "Name", sheet->sheetName() ) ; + new TQListViewItem( sheetView, "Layout Direction", dirAsString( sheet->layoutDirection() ) ); +} + +void Inspector::Private::handleDep() +{ + Point cellPoint; + cellPoint.setSheet(sheet); + cellPoint.setRow( cell->row() ); + cellPoint.setColumn( cell->column() ); + + DependencyManager* manager = sheet->dependencies(); + TQValueList<Point> deps = manager->getDependants( cellPoint ); + + depView->clear(); + for( unsigned i = 0; i < deps.count(); i++ ) + { + TQString k1, k2; + + Point point = deps[i]; + int row = point.row(); + int column = point.column(); + k1 = Cell::fullName( point.sheet(), column, row ); + + new TQListViewItem( depView, k1, k2 ); + } + +} + +Inspector::Inspector( Cell* cell ): + KDialogBase( KDialogBase::Tabbed, "Inspector", KDialogBase::Close, + KDialogBase::Close ) +{ + d = new Private; + + d->cell = cell; + d->format = cell->format(); + d->sheet = cell->sheet(); + + TQFrame* cellPage = addPage( TQString("Cell") ); + TQVBoxLayout* cellLayout = new TQVBoxLayout( cellPage, 0 ); + d->cellView = new TQListView( cellPage ); + cellLayout->addWidget( d->cellView ); + d->cellView->addColumn( "Key", 150 ); + d->cellView->addColumn( "Value" ); + + TQFrame* formatPage = addPage( TQString("Format") ); + TQVBoxLayout* formatLayout = new TQVBoxLayout( formatPage, 0 ); + d->formatView = new TQListView( formatPage ); + formatLayout->addWidget( d->formatView ); + d->formatView->addColumn( "Key", 150 ); + d->formatView->addColumn( "Value" ); + + TQFrame* stylePage = addPage( TQString("Style") ); + TQVBoxLayout* styleLayout = new TQVBoxLayout( stylePage, 0 ); + d->styleView = new TQListView( stylePage ); + styleLayout->addWidget( d->styleView ); + d->styleView->addColumn( "Key", 150 ); + d->styleView->addColumn( "Value" ); + + TQFrame* sheetPage = addPage( TQString("Sheet") ); + TQVBoxLayout* sheetLayout = new TQVBoxLayout( sheetPage, 0 ); + d->sheetView = new TQListView( sheetPage ); + sheetLayout->addWidget( d->sheetView ); + d->sheetView->addColumn( "Key", 150 ); + d->sheetView->addColumn( "Value" ); + + TQFrame* depPage = addPage( TQString("Dependencies") ); + TQVBoxLayout* depLayout = new TQVBoxLayout( depPage, 0 ); + d->depView = new TQListView( depPage ); + depLayout->addWidget( d->depView ); + d->depView->addColumn( "Cell", 150 ); + d->depView->addColumn( "Content" ); + + d->handleCell(); + d->handleFormat(); + d->handleSheet(); + d->handleStyle(); + d->handleDep(); + + resize( 350, 400 ); +} + +Inspector::~Inspector() +{ + delete d; +} + +#include "inspector.moc" + + |