diff options
| author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 | 
|---|---|---|
| committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 | 
| commit | 8362bf63dea22bbf6736609b0f49c152f975eb63 (patch) | |
| tree | 0eea3928e39e50fae91d4e68b21b1e6cbae25604 /kchart/kchartFontConfigPage.cc | |
| download | koffice-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 'kchart/kchartFontConfigPage.cc')
| -rw-r--r-- | kchart/kchartFontConfigPage.cc | 308 | 
1 files changed, 308 insertions, 0 deletions
| diff --git a/kchart/kchartFontConfigPage.cc b/kchart/kchartFontConfigPage.cc new file mode 100644 index 000000000..8bce024e0 --- /dev/null +++ b/kchart/kchartFontConfigPage.cc @@ -0,0 +1,308 @@ +/* This file is part of the KDE project +   Copyright (C) 2001,2002,2003,2004 Laurent Montel <montel@kde.org> + +   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 "kchartFontConfigPage.h" + +#include "kchartFontConfigPage.moc" + +#include <kapplication.h> +#include <klocale.h> +#include <kcolorbutton.h> +#include <kdebug.h> + +#include <qlayout.h> +#include <qlabel.h> +#include <qlineedit.h> +#include <qlistbox.h> +#include <qpushbutton.h> +#include <qpainter.h> +#include <qwhatsthis.h> + +#include <kfontdialog.h> + +// For IRIX +namespace std {} + +using namespace std; + +#include "kchart_params.h" + + +class KChartFontListBoxItem : public QListBoxText +{ +public: +    KChartFontListBoxItem( QListBox* lb,  const QString& text = QString::null ) : +        QListBoxText( lb,  text )  {} +    KChartFontListBoxItem( const QString& text = QString::null ) : +        QListBoxText( text )  {} + +    void setFont( const QFont& font )  { +        _font = font; +        listBox()->repaint(); +    } +    QFont font() const { +        return _font; +    } + +protected: +    void paint( QPainter* painter )   +    { +        painter->save(); +        painter->setFont( _font ); +        QListBoxText::paint( painter ); +        painter->restore(); +    } + +private: +    QFont _font; +}; + + +// ---------------------------------------------------------------- + + +namespace KChart +{ + +KChartFontConfigPage::KChartFontConfigPage( KChartParams* params, +                                            QWidget* parent,  +					    KDChartTableData *dat) : +    QWidget( parent ), m_params( params ), data(dat) +{ +    QGridLayout *grid = new QGridLayout(this,4,3,KDialog::marginHint(), KDialog::spacingHint()); + +    // The listbox +    m_list = new QListBox(this); +    m_list->resize( m_list->sizeHint() ); +    grid->addWidget(m_list, 0, 0); // Row 0-0, col 0-1 + +    // The font button. +    m_fontButton = new QPushButton( this); +    m_fontButton->setText(i18n("Font...")); +    QWhatsThis::add(m_fontButton, i18n("Select an item in the list above and click on this button to display the KDE font dialog in order to choose a new font for this item.")); +    m_fontButton->resize( m_fontButton->sizeHint() ); +    grid->addWidget( m_fontButton, 1, 0); + +#if 0 +    // FIXME: Integrate the font chooser instead?  Well, maybe later. +    KFontChooser  *fontChooser = new KFontChooser(this, "fontChooser"); +    grid->addMultiCellWidget(fontChooser, 0, 2, 1, 1); +#endif + +    grid->setColStretch(2, 1); +    grid->setRowStretch(3, 1); + +    connect( m_fontButton, SIGNAL(clicked()), +	     this,         SLOT(changeLabelFont())); +    connect( m_list,       SIGNAL(doubleClicked ( QListBoxItem * )), +	     this,         SLOT(changeLabelFont())); + +    // Enter the items into the list. +    initList(); +} + + +void KChartFontConfigPage::initList() +{ +    if ( m_params->chartType() != KChartParams::Pie +	 && m_params->chartType() != KChartParams::Ring ) { +        m_list->insertItem(new KChartFontListBoxItem( i18n("X-Title"))); +        m_list->insertItem(new KChartFontListBoxItem( i18n("Y-Title"))); +        m_list->insertItem(new KChartFontListBoxItem( i18n("X-Axis"))); +        m_list->insertItem(new KChartFontListBoxItem( i18n("Y-Axis"))); +        m_list->insertItem(new KChartFontListBoxItem( i18n("All Axes"))); +    } + +    m_list->insertItem(i18n("Label")); +    m_list->setCurrentItem(0); +} + + + +void KChartFontConfigPage::changeLabelFont() +{ +    QFont                 *font = 0; +    QButton::ToggleState  *state = 0; +    bool                   diffAxes = false; + +    if (m_list->currentText()==i18n("X-Title")) { +        font  = &xTitle; +        state = &xTitleIsRelative; +    } else if(m_list->currentText()==i18n("Y-Title")) { +        font  = &yTitle; +        state = &yTitleIsRelative; +    } else if(m_list->currentText()==i18n("X-Axis")) { +        font  = &xAxis; +        state = &xAxisIsRelative; +    } else if(m_list->currentText()==i18n("Y-Axis")) { +        font  = &yAxis; +        state = &yAxisIsRelative; +    } else if(m_list->currentText()==i18n("All Axes")) { +        diffAxes = true; +    } else if(m_list->currentText()==i18n("Label")) { +        font  = &label; +        state = &labelIsRelative; +    } +    else +        kdDebug( 35001 ) << "Pb in listBox" << endl; + +    if ( diffAxes ) { +        QFont newFont; +        int flags = 0; +        QButton::ToggleState newState +            = (xAxisIsRelative == yAxisIsRelative) +            ? (xAxisIsRelative ? QButton::On : QButton::Off) +            : QButton::NoChange; +        if (KFontDialog::getFontDiff( newFont, +                                      flags, +                                      false, +                                      this, +                                      true, +                                      &newState ) != QDialog::Rejected) { +            if ( KFontChooser::FamilyList & flags ) { +                xAxis.setFamily( newFont.family() ); +                yAxis.setFamily( newFont.family() ); +            } + +            if ( KFontChooser::StyleList & flags ) { +                xAxis.setWeight( newFont.weight() ); +                xAxis.setItalic( newFont.italic() ); +                xAxis.setUnderline( newFont.underline() ); +                xAxis.setStrikeOut( newFont.strikeOut() ); + +                yAxis.setWeight( newFont.weight() ); +                yAxis.setItalic( newFont.italic() ); +                yAxis.setUnderline( newFont.underline() ); +                yAxis.setStrikeOut( newFont.strikeOut() ); +            } + +            if ( KFontChooser::SizeList & flags ) { +                xAxis.setPointSize( newFont.pointSize() ); +                yAxis.setPointSize( newFont.pointSize() ); +            } + +            // CharSet settings are ignored since we are not Qt 2.x compatible +            // if( KFontChooser::CharsetList & flags ) { +            // } + +            if ( QButton::NoChange != newState ) { +                xAxisIsRelative = newState; +                yAxisIsRelative = newState; +            } +        } +    } +    else if ( font && state ) { +        QFont newFont( *font ); +        QButton::ToggleState newState = *state; +        if (KFontDialog::getFont( newFont, +                                  false, +                                  this, +                                  true, +                                  &newState ) != QDialog::Rejected) { +            *font = newFont; +            if ( QButton::NoChange != newState ) +                *state = newState; +        } +    } +} + + +void KChartFontConfigPage::init() +{ +    KDChartAxisParams  leftparms; +    leftparms   = m_params->axisParams( KDChartAxisParams::AxisPosLeft ); +    KDChartAxisParams  rightparms; +    rightparms  = m_params->axisParams( KDChartAxisParams::AxisPosRight ); +    KDChartAxisParams  bottomparms; +    bottomparms = m_params->axisParams( KDChartAxisParams::AxisPosBottom ); + +    xAxis           = bottomparms.axisLabelsFont(); +    xAxisIsRelative = bottomparms.axisLabelsFontUseRelSize()  +	? QButton::On : QButton::Off; + +    if ( QButton::On == xAxisIsRelative ) +        xAxis.setPointSize( bottomparms.axisLabelsFontRelSize() ); + +    yAxis = leftparms.axisLabelsFont(); +    yAxisIsRelative = leftparms.axisLabelsFontUseRelSize() +	? QButton::On : QButton::Off; + +    if ( QButton::On == yAxisIsRelative ) +        yAxis.setPointSize( leftparms.axisLabelsFontRelSize() ); +    // PENDING(khz) Add support for the other 6 possible axes + +    // PENDING(khz) Add support for the other 16 possible hd/ft areas + + +   xTitle = m_params->axisTitleFont( KDChartAxisParams::AxisPosBottom ); +   yTitle = m_params->axisTitleFont( KDChartAxisParams::AxisPosLeft ); +   xTitle.setPointSize( m_params->axisTitleFontRelSize( KDChartAxisParams::AxisPosBottom ) ); +   yTitle.setPointSize( m_params->axisTitleFontRelSize( KDChartAxisParams::AxisPosLeft ) ); +//   label = _params->labelFont(); + +    // PENDING(kalle) Adapt +//   for(int i=0;i<12;i++) +//     extColor.setColor(i,_params->ExtColor.color(i)); +//   index = 0; +//   colorButton->setColor(extColor.color(index)); +} + + +void KChartFontConfigPage::apply() +{ +    // PENDING(kalle) Adapt +    KDChartAxisParams  leftparms; +    leftparms   = m_params->axisParams( KDChartAxisParams::AxisPosLeft ); +    KDChartAxisParams  rightparms; +    rightparms  = m_params->axisParams( KDChartAxisParams::AxisPosRight ); +    KDChartAxisParams  bottomparms; +    bottomparms = m_params->axisParams( KDChartAxisParams::AxisPosBottom ); + +    leftparms.setAxisLabelsFont( yAxis, QButton::Off == yAxisIsRelative ); +    if ( QButton::On == yAxisIsRelative ) +        leftparms.setAxisLabelsFontRelSize( yAxis.pointSize() ); + +    // PENDING(khz) change right axis handling +    // use left axis settings for the right axis as well +    //   (this must be changed, khz 14.12.2001) +    rightparms.setAxisLabelsFont( yAxis, QButton::Off == yAxisIsRelative ); +    if ( QButton::On == yAxisIsRelative ) +        rightparms.setAxisLabelsFontRelSize( yAxis.pointSize() ); + +    bottomparms.setAxisLabelsFont( xAxis, QButton::Off == xAxisIsRelative ); +    if ( QButton::On == xAxisIsRelative ) +        bottomparms.setAxisLabelsFontRelSize( xAxis.pointSize() ); +    // PENDING(khz) Add support for the other 6 possible axes + +    m_params->setAxisParams( KDChartAxisParams::AxisPosLeft, leftparms ); +    m_params->setAxisParams( KDChartAxisParams::AxisPosRight, rightparms ); +    m_params->setAxisParams( KDChartAxisParams::AxisPosBottom, bottomparms ); +    // PENDING(khz) change hd2 and ft handling +    // use header settings for header 2 and footer as well +    //   (this must be changed, khz 14.12.2001) +    // PENDING(khz) Add support for the other 16 possible hd/ft areas + +    m_params->setAxisTitleFont( KDChartAxisParams::AxisPosLeft, yTitle ); +    m_params->setAxisTitleFont( KDChartAxisParams::AxisPosBottom, xTitle ); +    m_params->setAxisTitleFontRelSize( KDChartAxisParams::AxisPosLeft, yTitle.pointSize() ); +    m_params->setAxisTitleFontRelSize( KDChartAxisParams::AxisPosBottom, xTitle.pointSize() ); +} + +}  //KChart namespace | 
