summaryrefslogtreecommitdiffstats
path: root/lib/kformula/kformulaconfigpage.cc
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
commit8362bf63dea22bbf6736609b0f49c152f975eb63 (patch)
tree0eea3928e39e50fae91d4e68b21b1e6cbae25604 /lib/kformula/kformulaconfigpage.cc
downloadkoffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz
koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'lib/kformula/kformulaconfigpage.cc')
-rw-r--r--lib/kformula/kformulaconfigpage.cc543
1 files changed, 543 insertions, 0 deletions
diff --git a/lib/kformula/kformulaconfigpage.cc b/lib/kformula/kformulaconfigpage.cc
new file mode 100644
index 00000000..8037192f
--- /dev/null
+++ b/lib/kformula/kformulaconfigpage.cc
@@ -0,0 +1,543 @@
+/* This file is part of the KDE project
+ Copyright (C) 2001 Andrea Rizzi <[email protected]>
+ Ulrich Kuettler <[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, or (at your option) any later version.
+
+ 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 <qvariant.h> // first for gcc 2.7.2
+#include <qbuttongroup.h>
+#include <qcheckbox.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qmap.h>
+#include <qradiobutton.h>
+#include <qspinbox.h>
+#include <qstringlist.h>
+#include <qvbox.h>
+#include <qwidget.h>
+
+//#include <algorithm>
+
+#include <kcolorbutton.h>
+#include <kconfig.h>
+#include <kdebug.h>
+#include <kdialog.h>
+#include <kfontdialog.h>
+#include <klistview.h>
+#include <klocale.h>
+#include <kmessagebox.h>
+#include <knuminput.h>
+#include <kpushbutton.h>
+
+#include "contextstyle.h"
+#include "kformulaconfigpage.h"
+#include "kformuladocument.h"
+#include "symboltable.h"
+
+
+KFORMULA_NAMESPACE_BEGIN
+
+
+ConfigurePage::ConfigurePage( Document* document, QWidget* view, KConfig* config, QVBox* box, char* name )
+ : QObject( box->parent(), name ), m_document( document ), m_view( view ), m_config( config ), m_changed( false )
+{
+ const ContextStyle& contextStyle = document->getContextStyle( true );
+
+ // fonts
+
+ QGroupBox *gbox = new QGroupBox( i18n( "Fonts" ), box );
+ gbox->setColumnLayout( 0, Qt::Horizontal );
+
+ QGridLayout* grid = new QGridLayout( gbox->layout(), 5, 3 );
+ grid->setSpacing( KDialog::spacingHint() );
+
+ grid->setColStretch(1, 1);
+
+ defaultFont = contextStyle.getDefaultFont();
+ nameFont = contextStyle.getNameFont();
+ numberFont = contextStyle.getNumberFont();
+ operatorFont = contextStyle.getOperatorFont();
+
+ connect( buildFontLine( gbox, grid, 0, defaultFont,
+ i18n( "Default font:" ), defaultFontName ),
+ SIGNAL( clicked() ), SLOT( selectNewDefaultFont() ) );
+
+ connect( buildFontLine( gbox, grid, 1, nameFont,
+ i18n( "Name font:" ), nameFontName ),
+ SIGNAL( clicked() ), SLOT( selectNewNameFont() ) );
+
+ connect( buildFontLine( gbox, grid, 2, numberFont,
+ i18n( "Number font:" ), numberFontName ),
+ SIGNAL( clicked() ), SLOT( selectNewNumberFont() ) );
+
+ connect( buildFontLine( gbox, grid, 3, operatorFont,
+ i18n( "Operator font:" ), operatorFontName ),
+ SIGNAL( clicked() ), SLOT( selectNewOperatorFont() ) );
+
+ QLabel* sizeTitle = new QLabel( i18n( "Default base size:" ), gbox );
+ grid->addWidget( sizeTitle, 4, 0 );
+
+ sizeSpin = new KIntNumInput( contextStyle.baseSize(), gbox );
+ sizeSpin->setRange( 8, 72, 1, true );
+
+ grid->addMultiCellWidget( sizeSpin, 4, 4, 1, 2 );
+
+ connect( sizeSpin, SIGNAL( valueChanged( int ) ),
+ SLOT( baseSizeChanged( int ) ) );
+
+ // syntax highlighting
+
+ syntaxHighlighting = new QCheckBox( i18n( "Use syntax highlighting" ),box );
+ syntaxHighlighting->setChecked( contextStyle.syntaxHighlighting() );
+
+// hlBox = new QGroupBox( i18n( "Highlight Colors" ), box );
+// hlBox->setColumnLayout( 0, Qt::Horizontal );
+
+// grid = new QGridLayout( hlBox->layout(), 5, 2 );
+// grid->setSpacing( KDialog::spacingHint() );
+
+// QLabel* defaultLabel = new QLabel( hlBox, "defaultLabel" );
+// defaultLabel->setText( i18n( "Default color:" ) );
+// grid->addWidget( defaultLabel, 0, 0 );
+
+// defaultColorBtn = new KColorButton( hlBox, "defaultColor" );
+// defaultColorBtn->setColor( contextStyle.getDefaultColor() );
+// grid->addWidget( defaultColorBtn, 0, 1 );
+
+
+// QLabel* numberLabel = new QLabel( hlBox, "numberLabel" );
+// numberLabel->setText( i18n( "Number color:" ) );
+// grid->addWidget( numberLabel, 1, 0 );
+
+// numberColorBtn = new KColorButton( hlBox, "numberColor" );
+// numberColorBtn->setColor( contextStyle.getNumberColorPlain() );
+// grid->addWidget( numberColorBtn, 1, 1 );
+
+
+// QLabel* operatorLabel = new QLabel( hlBox, "operatorLabel" );
+// operatorLabel->setText( i18n( "Operator color:" ) );
+// grid->addWidget( operatorLabel, 2, 0 );
+
+// operatorColorBtn = new KColorButton( hlBox, "operatorColor" );
+// operatorColorBtn->setColor( contextStyle.getOperatorColorPlain() );
+// grid->addWidget( operatorColorBtn, 2, 1 );
+
+
+// QLabel* emptyLabel = new QLabel( hlBox, "emptyLabel" );
+// emptyLabel->setText( i18n( "Empty color:" ) );
+// grid->addWidget( emptyLabel, 3, 0 );
+
+// emptyColorBtn = new KColorButton( hlBox, "emptyColor" );
+// emptyColorBtn->setColor( contextStyle.getEmptyColorPlain() );
+// grid->addWidget( emptyColorBtn, 3, 1 );
+
+
+// QLabel* errorLabel = new QLabel( hlBox, "errorLabel" );
+// errorLabel->setText( i18n( "Error color:" ) );
+// grid->addWidget( errorLabel, 4, 0 );
+
+// errorColorBtn = new KColorButton( hlBox, "errorColor" );
+// errorColorBtn->setColor( contextStyle.getErrorColorPlain() );
+// grid->addWidget( errorColorBtn, 4, 1 );
+
+ connect( syntaxHighlighting, SIGNAL( clicked() ),
+ SLOT( syntaxHighlightingClicked() ) );
+
+ syntaxHighlightingClicked();
+
+ connect( syntaxHighlighting, SIGNAL( clicked() ), this, SLOT( slotChanged() ) );
+ connect( sizeSpin, SIGNAL( valueChanged( int ) ), this, SLOT( slotChanged() ) );
+
+ Q_ASSERT( !m_changed );
+}
+
+
+QPushButton* ConfigurePage::buildFontLine( QWidget* parent,
+ QGridLayout* layout, int number, QFont font, QString name,
+ QLabel*& fontName )
+{
+ QLabel* fontTitle = new QLabel( name, parent );
+
+ QString labelName = font.family() + ' ' + QString::number( font.pointSize() );
+ fontName = new QLabel( labelName, parent );
+ fontName->setFont( font );
+ fontName->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
+
+ QPushButton* chooseButton = new QPushButton( i18n( "Choose..." ), parent );
+
+ layout->addWidget( fontTitle, number, 0 );
+ layout->addWidget( fontName, number, 1 );
+ layout->addWidget( chooseButton, number, 2 );
+
+ return chooseButton;
+}
+
+
+void ConfigurePage::apply()
+{
+ if ( !m_changed )
+ return;
+
+ ContextStyle& contextStyle = m_document->getContextStyle( true );
+
+ contextStyle.setDefaultFont( defaultFont );
+ contextStyle.setNameFont( nameFont );
+ contextStyle.setNumberFont( numberFont );
+ contextStyle.setOperatorFont( operatorFont );
+ contextStyle.setBaseSize( sizeSpin->value() );
+
+ contextStyle.setSyntaxHighlighting( syntaxHighlighting->isChecked() );
+// contextStyle.setDefaultColor( defaultColorBtn->color() );
+// contextStyle.setNumberColor( numberColorBtn->color() );
+// contextStyle.setOperatorColor( operatorColorBtn->color() );
+// contextStyle.setEmptyColor( emptyColorBtn->color() );
+// contextStyle.setErrorColor( errorColorBtn->color() );
+
+ m_config->setGroup( "kformula Font" );
+ m_config->writeEntry( "defaultFont", defaultFont.toString() );
+ m_config->writeEntry( "nameFont", nameFont.toString() );
+ m_config->writeEntry( "numberFont", numberFont.toString() );
+ m_config->writeEntry( "operatorFont", operatorFont.toString() );
+ m_config->writeEntry( "baseSize", QString::number( sizeSpin->value() ) );
+
+// m_config->setGroup( "kformula Color" );
+// m_config->writeEntry( "syntaxHighlighting", syntaxHighlighting->isChecked() );
+// m_config->writeEntry( "defaultColor", defaultColorBtn->color() );
+// m_config->writeEntry( "numberColor", numberColorBtn->color() );
+// m_config->writeEntry( "operatorColor", operatorColorBtn->color() );
+// m_config->writeEntry( "emptyColor", emptyColorBtn->color() );
+// m_config->writeEntry( "errorColor", errorColorBtn->color() );
+
+ // notify!!!
+ m_document->updateConfig();
+ m_changed = false;
+}
+
+void ConfigurePage::slotDefault()
+{
+ defaultFont = QFont( "Times", 12, QFont::Normal, true );
+ nameFont = QFont( "Times" );
+ numberFont = nameFont;
+ operatorFont = nameFont;
+
+ sizeSpin->setValue( 20 );
+
+ updateFontLabel( defaultFont, defaultFontName );
+ updateFontLabel( nameFont, nameFontName );
+ updateFontLabel( numberFont, numberFontName );
+ updateFontLabel( operatorFont, operatorFontName );
+
+ syntaxHighlighting->setChecked( true );
+ syntaxHighlightingClicked();
+
+// defaultColorBtn->setColor( Qt::black );
+// numberColorBtn->setColor( Qt::blue );
+// operatorColorBtn->setColor( Qt::darkGreen );
+// emptyColorBtn->setColor( Qt::blue );
+// errorColorBtn->setColor( Qt::darkRed );
+ slotChanged();
+}
+
+void ConfigurePage::syntaxHighlightingClicked()
+{
+// bool checked = syntaxHighlighting->isChecked();
+// hlBox->setEnabled( checked );
+}
+
+void ConfigurePage::selectNewDefaultFont()
+{
+ if ( selectFont( defaultFont ) )
+ updateFontLabel( defaultFont, defaultFontName );
+}
+
+void ConfigurePage::selectNewNameFont()
+{
+ if ( selectFont( nameFont ) )
+ updateFontLabel( nameFont, nameFontName );
+}
+
+void ConfigurePage::selectNewNumberFont()
+{
+ if ( selectFont( numberFont ) )
+ updateFontLabel( numberFont, numberFontName );
+}
+
+void ConfigurePage::selectNewOperatorFont()
+{
+ if ( selectFont( operatorFont ) )
+ updateFontLabel( operatorFont, operatorFontName );
+}
+
+bool ConfigurePage::selectFont( QFont & font )
+{
+ QStringList list;
+
+ KFontChooser::getFontList( list, KFontChooser::SmoothScalableFonts );
+
+ KFontDialog dlg( m_view, 0, false, true, list );
+ dlg.setFont( font );
+
+ int result = dlg.exec();
+ if ( KDialog::Accepted == result ) {
+ font = dlg.font();
+ slotChanged();
+ return true;
+ }
+
+ return false;
+}
+
+void ConfigurePage::baseSizeChanged( int /*value*/ )
+{
+}
+
+void ConfigurePage::updateFontLabel( QFont font, QLabel* label )
+{
+ label->setText( font.family() + ' ' + QString::number( font.pointSize() ) );
+ label->setFont( font );
+}
+
+void ConfigurePage::slotChanged()
+{
+ m_changed = true;
+}
+
+// class UsedFontItem : public KListViewItem {
+// public:
+// UsedFontItem( MathFontsConfigurePage* page, QListView* parent, QString font )
+// : KListViewItem( parent, font ), m_page( page ) {}
+
+// int compare( QListViewItem* i, int col, bool ascending ) const;
+
+// private:
+// MathFontsConfigurePage* m_page;
+// };
+
+// int UsedFontItem::compare( QListViewItem* i, int, bool ) const
+// {
+// QValueVector<QString>::iterator lhsIt = m_page->findUsedFont( text( 0 ) );
+// QValueVector<QString>::iterator rhsIt = m_page->findUsedFont( i->text( 0 ) );
+// if ( lhsIt < rhsIt ) {
+// return -1;
+// }
+// else if ( lhsIt > rhsIt ) {
+// return 1;
+// }
+// return 0;
+// }
+
+// MathFontsConfigurePage::MathFontsConfigurePage( Document* document, QWidget* view,
+// KConfig* config, QVBox* box, char* name )
+// : QObject( box->parent(), name ), m_document( document ), m_view( view ), m_config( config )
+// {
+// QWidget* fontWidget = new QWidget( box );
+// QGridLayout* fontLayout = new QGridLayout( fontWidget, 1, 1, KDialog::marginHint(), KDialog::spacingHint() );
+
+// QHBoxLayout* hLayout = new QHBoxLayout( 0, 0, 6 );
+
+// availableFonts = new KListView( fontWidget );
+// availableFonts->addColumn( i18n( "Available Fonts" ) );
+// hLayout->addWidget( availableFonts );
+
+// QVBoxLayout* vLayout = new QVBoxLayout( 0, 0, 6 );
+// QSpacerItem* spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+// vLayout->addItem( spacer1 );
+
+// addFont = new KPushButton( fontWidget );
+// addFont->setText( "->" );
+// vLayout->addWidget( addFont );
+
+// removeFont = new KPushButton( fontWidget );
+// removeFont->setText( "<-" );
+// vLayout->addWidget( removeFont );
+
+// QSpacerItem* spacer2 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+// vLayout->addItem( spacer2 );
+
+// hLayout->addLayout( vLayout );
+
+// vLayout = new QVBoxLayout( 0, 0, 6 );
+
+// moveUp = new KPushButton( fontWidget );
+// moveUp->setText( i18n( "Up" ) );
+// vLayout->addWidget( moveUp );
+
+// requestedFonts = new KListView( fontWidget );
+// requestedFonts->addColumn( i18n( "Used Fonts" ) );
+// vLayout->addWidget( requestedFonts );
+
+// moveDown = new KPushButton( fontWidget );
+// moveDown->setText( i18n( "Down" ) );
+// vLayout->addWidget( moveDown );
+
+// hLayout->addLayout( vLayout );
+
+// fontLayout->addLayout( hLayout, 0, 0 );
+
+// // connect( availableFonts, SIGNAL( executed( QListViewItem* ) ),
+// // this, SLOT( slotAddFont() ) );
+// // connect( requestedFonts, SIGNAL( executed( QListViewItem* ) ),
+// // this, SLOT( slotRemoveFont() ) );
+// connect( addFont, SIGNAL( clicked() ), this, SLOT( slotAddFont() ) );
+// connect( removeFont, SIGNAL( clicked() ), this, SLOT( slotRemoveFont() ) );
+// connect( moveUp, SIGNAL( clicked() ), this, SLOT( slotMoveUp() ) );
+// connect( moveDown, SIGNAL( clicked() ), this, SLOT( slotMoveDown() ) );
+
+// const ContextStyle& contextStyle = document->getContextStyle( true );
+// const SymbolTable& symbolTable = contextStyle.symbolTable();
+// const QStringList& usedFonts = contextStyle.requestedFonts();
+
+// QMap<QString, QString> fontMap;
+// // symbolTable.findAvailableFonts( &fontMap );
+
+// setupLists( usedFonts );
+// }
+
+// void MathFontsConfigurePage::apply()
+// {
+// QStringList strings;
+// std::copy( usedFontList.begin(), usedFontList.end(), std::back_inserter( strings ) );
+
+// m_config->setGroup( "kformula Font" );
+// m_config->writeEntry( "usedMathFonts", strings );
+
+// ContextStyle& contextStyle = m_document->getContextStyle( true );
+// contextStyle.setRequestedFonts( strings );
+// }
+
+// void MathFontsConfigurePage::slotDefault()
+// {
+// QStringList usedFonts;
+
+// usedFonts.push_back( "esstixone" );
+// usedFonts.push_back( "esstixtwo" );
+// usedFonts.push_back( "esstixthree" );
+// usedFonts.push_back( "esstixfour" );
+// usedFonts.push_back( "esstixfive" );
+// usedFonts.push_back( "esstixsix" );
+// usedFonts.push_back( "esstixseven" );
+// usedFonts.push_back( "esstixeight" );
+// usedFonts.push_back( "esstixnine" );
+// usedFonts.push_back( "esstixten" );
+// usedFonts.push_back( "esstixeleven" );
+// usedFonts.push_back( "esstixtwelve" );
+// usedFonts.push_back( "esstixthirteen" );
+// usedFonts.push_back( "esstixfourteen" );
+// usedFonts.push_back( "esstixfifteen" );
+// usedFonts.push_back( "esstixsixteen" );
+// usedFonts.push_back( "esstixseventeen" );
+
+// usedFontList.clear();
+// requestedFonts->clear();
+// availableFonts->clear();
+
+// setupLists( usedFonts );
+// }
+
+// QValueVector<QString>::iterator MathFontsConfigurePage::findUsedFont( QString name )
+// {
+// return std::find( usedFontList.begin(), usedFontList.end(), name );
+// }
+
+// void MathFontsConfigurePage::setupLists( const QStringList& usedFonts )
+// {
+// const ContextStyle& contextStyle = m_document->getContextStyle( true );
+// const SymbolTable& symbolTable = contextStyle.symbolTable();
+
+// QMap<QString, QString> fontMap;
+// // symbolTable.findAvailableFonts( &fontMap );
+
+// for ( QStringList::const_iterator it = usedFonts.begin(); it != usedFonts.end(); ++it ) {
+// QMap<QString, QString>::iterator font = fontMap.find( *it );
+// if ( font != fontMap.end() ) {
+// fontMap.erase( font );
+// new UsedFontItem( this, requestedFonts, *it );
+// usedFontList.push_back( *it );
+// }
+// }
+// for ( QMap<QString, QString>::iterator it = fontMap.begin(); it != fontMap.end(); ++it ) {
+// new KListViewItem( availableFonts, it.key() );
+// }
+// }
+
+// void MathFontsConfigurePage::slotAddFont()
+// {
+// QListViewItem* fontItem = availableFonts->selectedItem();
+// if ( fontItem ) {
+// QString fontName = fontItem->text( 0 );
+// //availableFonts->takeItem( fontItem );
+// delete fontItem;
+
+// new UsedFontItem( this, requestedFonts, fontName );
+// usedFontList.push_back( fontName );
+// }
+// }
+
+// void MathFontsConfigurePage::slotRemoveFont()
+// {
+// QListViewItem* fontItem = requestedFonts->selectedItem();
+// if ( fontItem ) {
+// QString fontName = fontItem->text( 0 );
+// QValueVector<QString>::iterator it = std::find( usedFontList.begin(), usedFontList.end(), fontName );
+// if ( it != usedFontList.end() ) {
+// usedFontList.erase( it );
+// }
+// //requestedFonts->takeItem( fontItem );
+// delete fontItem;
+// new KListViewItem( availableFonts, fontName );
+// }
+// }
+
+// void MathFontsConfigurePage::slotMoveUp()
+// {
+// QListViewItem* fontItem = requestedFonts->selectedItem();
+// if ( fontItem ) {
+// QString fontName = fontItem->text( 0 );
+// QValueVector<QString>::iterator it = std::find( usedFontList.begin(), usedFontList.end(), fontName );
+// if ( it != usedFontList.end() ) {
+// uint pos = it - usedFontList.begin();
+// if ( pos > 0 ) {
+// QValueVector<QString>::iterator before = it-1;
+// std::swap( *it, *before );
+// requestedFonts->sort();
+// }
+// }
+// }
+// }
+
+// void MathFontsConfigurePage::slotMoveDown()
+// {
+// QListViewItem* fontItem = requestedFonts->selectedItem();
+// if ( fontItem ) {
+// QString fontName = fontItem->text( 0 );
+// QValueVector<QString>::iterator it = std::find( usedFontList.begin(), usedFontList.end(), fontName );
+// if ( it != usedFontList.end() ) {
+// uint pos = it - usedFontList.begin();
+// if ( pos < usedFontList.size()-1 ) {
+// QValueVector<QString>::iterator after = it+1;
+// std::swap( *it, *after );
+// requestedFonts->sort();
+// }
+// }
+// }
+// }
+
+KFORMULA_NAMESPACE_END
+
+using namespace KFormula;
+#include "kformulaconfigpage.moc"