summaryrefslogtreecommitdiffstats
path: root/kchart/kchartFontConfigPage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kchart/kchartFontConfigPage.cpp')
-rw-r--r--kchart/kchartFontConfigPage.cpp308
1 files changed, 308 insertions, 0 deletions
diff --git a/kchart/kchartFontConfigPage.cpp b/kchart/kchartFontConfigPage.cpp
new file mode 100644
index 000000000..27f91581d
--- /dev/null
+++ b/kchart/kchartFontConfigPage.cpp
@@ -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 <tdeapplication.h>
+#include <tdelocale.h>
+#include <kcolorbutton.h>
+#include <kdebug.h>
+
+#include <tqlayout.h>
+#include <tqlabel.h>
+#include <tqlineedit.h>
+#include <tqlistbox.h>
+#include <tqpushbutton.h>
+#include <tqpainter.h>
+#include <tqwhatsthis.h>
+
+#include <tdefontdialog.h>
+
+// For IRIX
+namespace std {}
+
+using namespace std;
+
+#include "kchart_params.h"
+
+
+class KChartFontListBoxItem : public TQListBoxText
+{
+public:
+ KChartFontListBoxItem( TQListBox* lb, const TQString& text = TQString() ) :
+ TQListBoxText( lb, text ) {}
+ KChartFontListBoxItem( const TQString& text = TQString() ) :
+ TQListBoxText( text ) {}
+
+ void setFont( const TQFont& font ) {
+ _font = font;
+ listBox()->repaint();
+ }
+ TQFont font() const {
+ return _font;
+ }
+
+protected:
+ void paint( TQPainter* painter )
+ {
+ painter->save();
+ painter->setFont( _font );
+ TQListBoxText::paint( painter );
+ painter->restore();
+ }
+
+private:
+ TQFont _font;
+};
+
+
+// ----------------------------------------------------------------
+
+
+namespace KChart
+{
+
+KChartFontConfigPage::KChartFontConfigPage( KChartParams* params,
+ TQWidget* parent,
+ KDChartTableData *dat) :
+ TQWidget( parent ), m_params( params ), data(dat)
+{
+ TQGridLayout *grid = new TQGridLayout(this,4,3,KDialog::marginHint(), KDialog::spacingHint());
+
+ // The listbox
+ m_list = new TQListBox(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 TQPushButton( this);
+ m_fontButton->setText(i18n("Font..."));
+ TQWhatsThis::add(m_fontButton, i18n("Select an item in the list above and click on this button to display the TDE 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.
+ TDEFontChooser *fontChooser = new TDEFontChooser(this, "fontChooser");
+ grid->addMultiCellWidget(fontChooser, 0, 2, 1, 1);
+#endif
+
+ grid->setColStretch(2, 1);
+ grid->setRowStretch(3, 1);
+
+ connect( m_fontButton, TQT_SIGNAL(clicked()),
+ this, TQT_SLOT(changeLabelFont()));
+ connect( m_list, TQT_SIGNAL(doubleClicked ( TQListBoxItem * )),
+ this, TQT_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()
+{
+ TQFont *font = 0;
+ TQButton::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 ) {
+ TQFont newFont;
+ int flags = 0;
+ TQButton::ToggleState newState
+ = (xAxisIsRelative == yAxisIsRelative)
+ ? (xAxisIsRelative ? TQButton::On : TQButton::Off)
+ : TQButton::NoChange;
+ if (TDEFontDialog::getFontDiff( newFont,
+ flags,
+ false,
+ this,
+ true,
+ &newState ) != TQDialog::Rejected) {
+ if ( TDEFontChooser::FamilyList & flags ) {
+ xAxis.setFamily( newFont.family() );
+ yAxis.setFamily( newFont.family() );
+ }
+
+ if ( TDEFontChooser::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 ( TDEFontChooser::SizeList & flags ) {
+ xAxis.setPointSize( newFont.pointSize() );
+ yAxis.setPointSize( newFont.pointSize() );
+ }
+
+ // CharSet settings are ignored since we are not TQt 2.x compatible
+ // if( TDEFontChooser::CharsetList & flags ) {
+ // }
+
+ if ( TQButton::NoChange != newState ) {
+ xAxisIsRelative = newState;
+ yAxisIsRelative = newState;
+ }
+ }
+ }
+ else if ( font && state ) {
+ TQFont newFont( *font );
+ TQButton::ToggleState newState = *state;
+ if (TDEFontDialog::getFont( newFont,
+ false,
+ this,
+ true,
+ &newState ) != TQDialog::Rejected) {
+ *font = newFont;
+ if ( TQButton::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()
+ ? TQButton::On : TQButton::Off;
+
+ if ( TQButton::On == xAxisIsRelative )
+ xAxis.setPointSize( bottomparms.axisLabelsFontRelSize() );
+
+ yAxis = leftparms.axisLabelsFont();
+ yAxisIsRelative = leftparms.axisLabelsFontUseRelSize()
+ ? TQButton::On : TQButton::Off;
+
+ if ( TQButton::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, TQButton::Off == yAxisIsRelative );
+ if ( TQButton::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, TQButton::Off == yAxisIsRelative );
+ if ( TQButton::On == yAxisIsRelative )
+ rightparms.setAxisLabelsFontRelSize( yAxis.pointSize() );
+
+ bottomparms.setAxisLabelsFont( xAxis, TQButton::Off == xAxisIsRelative );
+ if ( TQButton::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