You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
418 lines
13 KiB
418 lines
13 KiB
|
|
#include <tqfontdatabase.h>
|
|
#include <tqlabel.h>
|
|
#include <tqlayout.h>
|
|
#include <tqvgroupbox.h>
|
|
#include <tqwhatsthis.h>
|
|
|
|
#include <dcopclient.h>
|
|
|
|
#include <kapplication.h>
|
|
#include <kcharsets.h>
|
|
#include <kconfig.h>
|
|
#include <kdebug.h>
|
|
#include <kdialog.h>
|
|
#include <kfontcombo.h>
|
|
#include <kglobal.h>
|
|
#include <khtmldefaults.h>
|
|
#include <klocale.h>
|
|
#include <knuminput.h>
|
|
|
|
#if defined Q_WS_X11 && !defined K_WS_QTONLY
|
|
#include <X11/Xlib.h>
|
|
#endif
|
|
|
|
|
|
#include "appearance.moc"
|
|
|
|
KAppearanceOptions::KAppearanceOptions(KConfig *config, TQString group, TQWidget *parent, const char *)
|
|
: KCModule( parent, "kcmkonqhtml" ), m_pConfig(config), m_groupname(group),
|
|
fSize( 10 ), fMinSize( HTML_DEFAULT_MIN_FONT_SIZE )
|
|
|
|
{
|
|
setQuickHelp( i18n("<h1>Konqueror Fonts</h1>On this page, you can configure "
|
|
"which fonts Konqueror should use to display the web "
|
|
"pages you view."));
|
|
|
|
TQString wtstr;
|
|
|
|
TQGridLayout *lay = new TQGridLayout(this, 1 ,1 , 0, KDialog::spacingHint());
|
|
int r = 0;
|
|
int E = 0, M = 1, W = 3; //CT 3 (instead 2) allows smaller color buttons
|
|
|
|
TQGroupBox* gb = new TQGroupBox( 1, TQGroupBox::Horizontal, i18n("Font Si&ze"), this );
|
|
lay->addMultiCellWidget(gb, r, r, E, W);
|
|
|
|
TQWhatsThis::add( gb, i18n("This is the relative font size Konqueror uses to display web sites.") );
|
|
|
|
m_minSize = new KIntNumInput( fMinSize, gb );
|
|
m_minSize->setLabel( i18n( "M&inimum font size:" ) );
|
|
m_minSize->setRange( 2, 30 );
|
|
connect( m_minSize, TQT_SIGNAL( valueChanged( int ) ), this, TQT_SLOT( slotMinimumFontSize( int ) ) );
|
|
connect( m_minSize, TQT_SIGNAL( valueChanged( int ) ), this, TQT_SLOT( changed() ) );
|
|
TQWhatsThis::add( m_minSize, i18n( "Konqueror will never display text smaller than "
|
|
"this size,<br>overriding any other settings" ) );
|
|
|
|
m_MedSize = new KIntNumInput( m_minSize, fSize, gb );
|
|
m_MedSize->setLabel( i18n( "&Medium font size:" ) );
|
|
m_MedSize->setRange( 2, 30 );
|
|
connect( m_MedSize, TQT_SIGNAL( valueChanged( int ) ), this, TQT_SLOT( slotFontSize( int ) ) );
|
|
connect( m_MedSize, TQT_SIGNAL( valueChanged( int ) ), this, TQT_SLOT( changed() ) );
|
|
TQWhatsThis::add( m_MedSize,
|
|
i18n("This is the relative font size Konqueror uses "
|
|
"to display web sites.") );
|
|
|
|
TQStringList emptyList;
|
|
|
|
TQLabel* label = new TQLabel( i18n("S&tandard font:"), this );
|
|
lay->addWidget( label , ++r, E);
|
|
|
|
m_pFonts[0] = new KFontCombo( emptyList, this );
|
|
|
|
label->setBuddy( m_pFonts[0] );
|
|
lay->addMultiCellWidget(m_pFonts[0], r, r, M, W);
|
|
|
|
wtstr = i18n("This is the font used to display normal text in a web page.");
|
|
TQWhatsThis::add( label, wtstr );
|
|
TQWhatsThis::add( m_pFonts[0], wtstr );
|
|
|
|
connect( m_pFonts[0], TQT_SIGNAL( activated(const TQString&) ),
|
|
TQT_SLOT( slotStandardFont(const TQString&) ) );
|
|
connect( m_pFonts[0], TQT_SIGNAL( activated(const TQString&) ),
|
|
TQT_SLOT(changed() ) );
|
|
connect( m_pFonts[0]->lineEdit(), TQT_SIGNAL( textChanged(const TQString&) ),
|
|
TQT_SLOT( slotStandardFont(const TQString&) ) );
|
|
connect( m_pFonts[0], TQT_SIGNAL( textChanged(const TQString&) ),
|
|
TQT_SLOT(changed() ) );
|
|
|
|
label = new TQLabel( i18n( "&Fixed font:"), this );
|
|
lay->addWidget( label, ++r, E );
|
|
|
|
m_pFonts[1] = new KFontCombo( emptyList, this );
|
|
|
|
label->setBuddy( m_pFonts[1] );
|
|
lay->addMultiCellWidget(m_pFonts[1], r, r, M, W);
|
|
|
|
wtstr = i18n("This is the font used to display fixed-width (i.e. non-proportional) text.");
|
|
TQWhatsThis::add( label, wtstr );
|
|
TQWhatsThis::add( m_pFonts[1], wtstr );
|
|
|
|
connect( m_pFonts[1], TQT_SIGNAL( activated(const TQString&) ),
|
|
TQT_SLOT( slotFixedFont(const TQString&) ) );
|
|
connect( m_pFonts[1], TQT_SIGNAL( activated(const TQString&) ),
|
|
TQT_SLOT(changed() ) );
|
|
connect( m_pFonts[1]->lineEdit(), TQT_SIGNAL( textChanged(const TQString&) ),
|
|
TQT_SLOT( slotFixedFont(const TQString&) ) );
|
|
connect( m_pFonts[1], TQT_SIGNAL( textChanged(const TQString&) ),
|
|
TQT_SLOT(changed() ) );
|
|
|
|
label = new TQLabel( i18n( "S&erif font:" ), this );
|
|
lay->addWidget( label, ++r, E );
|
|
|
|
m_pFonts[2] = new KFontCombo( emptyList, this );
|
|
|
|
label->setBuddy( m_pFonts[2] );
|
|
lay->addMultiCellWidget( m_pFonts[2], r, r, M, W );
|
|
|
|
wtstr= i18n( "This is the font used to display text that is marked up as serif." );
|
|
TQWhatsThis::add( label, wtstr );
|
|
TQWhatsThis::add( m_pFonts[2], wtstr );
|
|
|
|
connect( m_pFonts[2], TQT_SIGNAL( activated( const TQString& ) ),
|
|
TQT_SLOT( slotSerifFont( const TQString& ) ) );
|
|
connect( m_pFonts[2], TQT_SIGNAL( activated( const TQString& ) ),
|
|
TQT_SLOT( changed() ) );
|
|
connect( m_pFonts[2]->lineEdit(), TQT_SIGNAL( textChanged(const TQString&) ),
|
|
TQT_SLOT( slotSerifFont(const TQString&) ) );
|
|
connect( m_pFonts[2], TQT_SIGNAL( textChanged(const TQString&) ),
|
|
TQT_SLOT(changed() ) );
|
|
|
|
label = new TQLabel( i18n( "Sa&ns serif font:" ), this );
|
|
lay->addWidget( label, ++r, E );
|
|
|
|
m_pFonts[3] = new KFontCombo( emptyList, this );
|
|
|
|
label->setBuddy( m_pFonts[3] );
|
|
lay->addMultiCellWidget( m_pFonts[3], r, r, M, W );
|
|
|
|
wtstr= i18n( "This is the font used to display text that is marked up as sans-serif." );
|
|
TQWhatsThis::add( label, wtstr );
|
|
TQWhatsThis::add( m_pFonts[3], wtstr );
|
|
|
|
connect( m_pFonts[3], TQT_SIGNAL( activated( const TQString& ) ),
|
|
TQT_SLOT( slotSansSerifFont( const TQString& ) ) );
|
|
connect( m_pFonts[3], TQT_SIGNAL( activated( const TQString& ) ),
|
|
TQT_SLOT( changed() ) );
|
|
connect( m_pFonts[3]->lineEdit(), TQT_SIGNAL( textChanged(const TQString&) ),
|
|
TQT_SLOT( slotSansSerifFont(const TQString&) ) );
|
|
connect( m_pFonts[3], TQT_SIGNAL( textChanged(const TQString&) ),
|
|
TQT_SLOT(changed() ) );
|
|
|
|
|
|
label = new TQLabel( i18n( "C&ursive font:" ), this );
|
|
lay->addWidget( label, ++r, E );
|
|
|
|
m_pFonts[4] = new KFontCombo( emptyList, this );
|
|
|
|
label->setBuddy( m_pFonts[4] );
|
|
lay->addMultiCellWidget( m_pFonts[4], r, r, M, W );
|
|
|
|
wtstr= i18n( "This is the font used to display text that is marked up as italic." );
|
|
TQWhatsThis::add( label, wtstr );
|
|
TQWhatsThis::add( m_pFonts[4], wtstr );
|
|
|
|
connect( m_pFonts[4], TQT_SIGNAL( activated( const TQString& ) ),
|
|
TQT_SLOT( slotCursiveFont( const TQString& ) ) );
|
|
connect( m_pFonts[4], TQT_SIGNAL( activated( const TQString& ) ),
|
|
TQT_SLOT( changed() ) );
|
|
connect( m_pFonts[4]->lineEdit(), TQT_SIGNAL( textChanged(const TQString&) ),
|
|
TQT_SLOT( slotCursiveFont(const TQString&) ) );
|
|
connect( m_pFonts[4], TQT_SIGNAL( textChanged(const TQString&) ),
|
|
TQT_SLOT(changed() ) );
|
|
|
|
|
|
label = new TQLabel( i18n( "Fantas&y font:" ), this );
|
|
lay->addWidget( label, ++r, E );
|
|
|
|
m_pFonts[5] = new KFontCombo( emptyList, this );
|
|
|
|
label->setBuddy( m_pFonts[5] );
|
|
lay->addMultiCellWidget( m_pFonts[5], r, r, M, W );
|
|
|
|
wtstr= i18n( "This is the font used to display text that is marked up as a fantasy font." );
|
|
TQWhatsThis::add( label, wtstr );
|
|
TQWhatsThis::add( m_pFonts[5], wtstr );
|
|
|
|
connect( m_pFonts[5], TQT_SIGNAL( activated( const TQString& ) ),
|
|
TQT_SLOT( slotFantasyFont( const TQString& ) ) );
|
|
connect( m_pFonts[5], TQT_SIGNAL( activated( const TQString& ) ),
|
|
TQT_SLOT( changed() ) );
|
|
connect( m_pFonts[5]->lineEdit(), TQT_SIGNAL( textChanged(const TQString&) ),
|
|
TQT_SLOT( slotFantasyFont(const TQString&) ) );
|
|
connect( m_pFonts[5], TQT_SIGNAL( textChanged(const TQString&) ),
|
|
TQT_SLOT(changed() ) );
|
|
|
|
|
|
label = new TQLabel( i18n( "Font &size adjustment for this encoding:" ), this );
|
|
lay->addWidget( label, ++r, M );
|
|
|
|
m_pFontSizeAdjust = new TQSpinBox( -5, 5, 1, this );
|
|
label->setBuddy( m_pFontSizeAdjust );
|
|
lay->addMultiCellWidget( m_pFontSizeAdjust, r, r, M+1, W );
|
|
|
|
connect( m_pFontSizeAdjust, TQT_SIGNAL( valueChanged( int ) ),
|
|
TQT_SLOT( slotFontSizeAdjust( int ) ) );
|
|
connect( m_pFontSizeAdjust, TQT_SIGNAL( valueChanged( int ) ),
|
|
TQT_SLOT( changed() ) );
|
|
|
|
label = new TQLabel( i18n( "Default encoding:"), this );
|
|
//++r;
|
|
//lay->addMultiCellWidget( label, r, r, E, E+1);
|
|
lay->addWidget( label, ++r, E);
|
|
|
|
m_pEncoding = new TQComboBox( false, this );
|
|
label->setBuddy( m_pEncoding );
|
|
encodings = KGlobal::charsets()->availableEncodingNames();
|
|
encodings.prepend(i18n("Use Language Encoding"));
|
|
m_pEncoding->insertStringList( encodings );
|
|
lay->addMultiCellWidget(m_pEncoding,r, r, M, W);
|
|
|
|
wtstr = i18n( "Select the default encoding to be used; normally, you will be fine with 'Use language encoding' "
|
|
"and should not have to change this.");
|
|
TQWhatsThis::add( label, wtstr );
|
|
TQWhatsThis::add( m_pEncoding, wtstr );
|
|
|
|
connect( m_pEncoding, TQT_SIGNAL( activated(const TQString& ) ),
|
|
TQT_SLOT( slotEncoding(const TQString&) ) );
|
|
connect( m_pEncoding, TQT_SIGNAL( activated(const TQString& ) ),
|
|
TQT_SLOT( changed() ) );
|
|
|
|
++r; lay->setRowStretch(r, 8);
|
|
|
|
TQFontDatabase db;
|
|
|
|
m_families = db.families();
|
|
|
|
m_pFonts[0]->setFonts( m_families );
|
|
m_pFonts[1]->setFonts( m_families );
|
|
m_pFonts[2]->setFonts( m_families );
|
|
m_pFonts[3]->setFonts( m_families );
|
|
m_pFonts[4]->setFonts( m_families );
|
|
m_pFonts[5]->setFonts( m_families );
|
|
|
|
load();
|
|
}
|
|
|
|
KAppearanceOptions::~KAppearanceOptions()
|
|
{
|
|
delete m_pConfig;
|
|
}
|
|
|
|
void KAppearanceOptions::slotFontSize( int i )
|
|
{
|
|
fSize = i;
|
|
if ( fSize < fMinSize ) {
|
|
m_minSize->setValue( fSize );
|
|
fMinSize = fSize;
|
|
}
|
|
}
|
|
|
|
|
|
void KAppearanceOptions::slotMinimumFontSize( int i )
|
|
{
|
|
fMinSize = i;
|
|
if ( fMinSize > fSize ) {
|
|
m_MedSize->setValue( fMinSize );
|
|
fSize = fMinSize;
|
|
}
|
|
}
|
|
|
|
|
|
void KAppearanceOptions::slotStandardFont(const TQString& n )
|
|
{
|
|
fonts[0] = n;
|
|
}
|
|
|
|
|
|
void KAppearanceOptions::slotFixedFont(const TQString& n )
|
|
{
|
|
fonts[1] = n;
|
|
}
|
|
|
|
|
|
void KAppearanceOptions::slotSerifFont( const TQString& n )
|
|
{
|
|
fonts[2] = n;
|
|
}
|
|
|
|
|
|
void KAppearanceOptions::slotSansSerifFont( const TQString& n )
|
|
{
|
|
fonts[3] = n;
|
|
}
|
|
|
|
|
|
void KAppearanceOptions::slotCursiveFont( const TQString& n )
|
|
{
|
|
fonts[4] = n;
|
|
}
|
|
|
|
|
|
void KAppearanceOptions::slotFantasyFont( const TQString& n )
|
|
{
|
|
fonts[5] = n;
|
|
}
|
|
|
|
void KAppearanceOptions::slotFontSizeAdjust( int value )
|
|
{
|
|
fonts[6] = TQString::number( value );
|
|
}
|
|
|
|
void KAppearanceOptions::slotEncoding(const TQString& n)
|
|
{
|
|
encodingName = n;
|
|
}
|
|
|
|
void KAppearanceOptions::load()
|
|
{
|
|
load( false );
|
|
}
|
|
|
|
void KAppearanceOptions::load( bool useDefaults )
|
|
{
|
|
KConfig khtmlrc("khtmlrc", true, false);
|
|
m_pConfig->setReadDefaults( useDefaults );
|
|
|
|
khtmlrc.setReadDefaults( useDefaults );
|
|
|
|
#define SET_GROUP(x) m_pConfig->setGroup(x); khtmlrc.setGroup(x)
|
|
#define READ_NUM(x,y) m_pConfig->readNumEntry(x, khtmlrc.readNumEntry(x, y))
|
|
#define READ_ENTRY(x,y) m_pConfig->readEntry(x, khtmlrc.readEntry(x, y))
|
|
#define READ_LIST(x) m_pConfig->readListEntry(x, khtmlrc.readListEntry(x))
|
|
|
|
SET_GROUP(m_groupname);
|
|
fSize = READ_NUM( "MediumFontSize", 12 );
|
|
fMinSize = READ_NUM( "MinimumFontSize", HTML_DEFAULT_MIN_FONT_SIZE );
|
|
if (fSize < fMinSize)
|
|
fSize = fMinSize;
|
|
|
|
defaultFonts = TQStringList();
|
|
defaultFonts.append( READ_ENTRY( "StandardFont", KGlobalSettings::generalFont().family() ) );
|
|
defaultFonts.append( READ_ENTRY( "FixedFont", KGlobalSettings::fixedFont().family() ) );
|
|
defaultFonts.append( READ_ENTRY( "SerifFont", HTML_DEFAULT_VIEW_SERIF_FONT ) );
|
|
defaultFonts.append( READ_ENTRY( "SansSerifFont", HTML_DEFAULT_VIEW_SANSSERIF_FONT ) );
|
|
defaultFonts.append( READ_ENTRY( "CursiveFont", HTML_DEFAULT_VIEW_CURSIVE_FONT ) );
|
|
defaultFonts.append( READ_ENTRY( "FantasyFont", HTML_DEFAULT_VIEW_FANTASY_FONT ) );
|
|
defaultFonts.append( TQString("0") ); // default font size adjustment
|
|
|
|
if (m_pConfig->hasKey("Fonts"))
|
|
fonts = m_pConfig->readListEntry( "Fonts" );
|
|
else
|
|
fonts = khtmlrc.readListEntry( "Fonts" );
|
|
while (fonts.count() < 7)
|
|
fonts.append(TQString::null);
|
|
|
|
encodingName = READ_ENTRY( "DefaultEncoding", TQString::null );
|
|
//kdDebug(0) << "encoding = " << encodingName << endl;
|
|
|
|
updateGUI();
|
|
emit changed( useDefaults );
|
|
|
|
#undef SET_GROUP
|
|
#undef READ_NUM
|
|
#undef READ_ENTRY
|
|
#undef READ_LIST
|
|
}
|
|
|
|
void KAppearanceOptions::defaults()
|
|
{
|
|
load( true );
|
|
}
|
|
|
|
void KAppearanceOptions::updateGUI()
|
|
{
|
|
//kdDebug() << "KAppearanceOptions::updateGUI " << charset << endl;
|
|
for ( int f = 0; f < 6; f++ ) {
|
|
TQString ff = fonts[f];
|
|
if (ff.isEmpty())
|
|
ff = defaultFonts[f];
|
|
m_pFonts[f]->setCurrentFont(ff);
|
|
}
|
|
|
|
int i = 0;
|
|
for ( TQStringList::Iterator it = encodings.begin(); it != encodings.end(); ++it, ++i )
|
|
if ( encodingName == *it )
|
|
m_pEncoding->setCurrentItem( i );
|
|
if(encodingName.isEmpty())
|
|
m_pEncoding->setCurrentItem( 0 );
|
|
m_pFontSizeAdjust->setValue( fonts[6].toInt() );
|
|
m_MedSize->blockSignals(true);
|
|
m_MedSize->setValue( fSize );
|
|
m_MedSize->blockSignals(false);
|
|
m_minSize->blockSignals(true);
|
|
m_minSize->setValue( fMinSize );
|
|
m_minSize->blockSignals(false);
|
|
}
|
|
|
|
void KAppearanceOptions::save()
|
|
{
|
|
m_pConfig->setGroup(m_groupname);
|
|
m_pConfig->writeEntry( "MediumFontSize", fSize );
|
|
m_pConfig->writeEntry( "MinimumFontSize", fMinSize );
|
|
m_pConfig->writeEntry( "Fonts", fonts );
|
|
|
|
// If the user chose "Use language encoding", write an empty string
|
|
if (encodingName == i18n("Use Language Encoding"))
|
|
encodingName = "";
|
|
m_pConfig->writeEntry( "DefaultEncoding", encodingName );
|
|
m_pConfig->sync();
|
|
|
|
TQByteArray data;
|
|
if ( !kapp->dcopClient()->isAttached() )
|
|
kapp->dcopClient()->attach();
|
|
kapp->dcopClient()->send( "konqueror*", "KonquerorIface", "reparseConfiguration()", data );
|
|
|
|
emit changed(false);
|
|
}
|
|
|