summaryrefslogtreecommitdiffstats
path: root/tdeprint/management/kmconfigfonts.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tdeprint/management/kmconfigfonts.cpp')
-rw-r--r--tdeprint/management/kmconfigfonts.cpp182
1 files changed, 182 insertions, 0 deletions
diff --git a/tdeprint/management/kmconfigfonts.cpp b/tdeprint/management/kmconfigfonts.cpp
new file mode 100644
index 000000000..183d0b621
--- /dev/null
+++ b/tdeprint/management/kmconfigfonts.cpp
@@ -0,0 +1,182 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (c) 2001 Michael Goffioul <tdeprint@swing.be>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation.
+ *
+ * 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 "kmconfigfonts.h"
+
+#include <tqgroupbox.h>
+#include <kpushbutton.h>
+#include <tqlayout.h>
+#include <tqheader.h>
+#include <tqlabel.h>
+#include <tqcheckbox.h>
+#include <tqsettings.h>
+#include <tqwhatsthis.h>
+
+#include <klocale.h>
+#include <kconfig.h>
+#include <kiconloader.h>
+#include <kurlrequester.h>
+#include <kfile.h>
+#include <klistview.h>
+#include <kdialog.h>
+
+KMConfigFonts::KMConfigFonts(TQWidget *parent, const char *name)
+: KMConfigPage(parent, name)
+{
+ setPageName(i18n("Fonts"));
+ setPageHeader(i18n("Font Settings"));
+ setPagePixmap("fonts");
+
+ TQGroupBox *box = new TQGroupBox(0, Qt::Vertical, i18n("Fonts Embedding"), this);
+ TQGroupBox *box2 = new TQGroupBox(0, Qt::Vertical, i18n("Fonts Path"), this);
+
+ m_embedfonts = new TQCheckBox(i18n("&Embed fonts in PostScript data when printing"), box);
+ m_fontpath = new KListView(box2);
+ m_fontpath->addColumn("");
+ m_fontpath->header()->setStretchEnabled(true, 0);
+ m_fontpath->header()->hide();
+ m_fontpath->setSorting(-1);
+ m_addpath = new KURLRequester(box2);
+ m_addpath->setMode(KFile::Directory|KFile::ExistingOnly|KFile::LocalOnly);
+ m_up = new KPushButton(KGuiItem(i18n("&Up"), "up"), box2);
+ m_down = new KPushButton(KGuiItem(i18n("&Down"), "down"), box2);
+ m_add = new KPushButton(KGuiItem(i18n("&Add"), "add"), box2);
+ m_remove = new KPushButton(KGuiItem(i18n("&Remove"), "editdelete"), box2);
+ TQLabel *lab0 = new TQLabel(i18n("Additional director&y:"), box2);
+ lab0->setBuddy(m_addpath);
+
+ TQVBoxLayout *l0 = new TQVBoxLayout(TQT_TQLAYOUT(box->layout()), KDialog::spacingHint());
+ l0->addWidget(m_embedfonts);
+ TQVBoxLayout *l1 = new TQVBoxLayout(TQT_TQLAYOUT(box2->layout()), KDialog::spacingHint());
+ l1->addWidget(m_fontpath);
+ TQHBoxLayout *l2 = new TQHBoxLayout(0, 0, KDialog::spacingHint());
+ l1->addLayout(l2);
+ l2->addWidget(m_up);
+ l2->addWidget(m_down);
+ l2->addWidget(m_remove);
+ l1->addSpacing(10);
+ l1->addWidget(lab0);
+ l1->addWidget(m_addpath);
+ TQHBoxLayout *l3 = new TQHBoxLayout(0, 0, KDialog::spacingHint());
+ l1->addLayout(l3);
+ l3->addStretch(1);
+ l3->addWidget(m_add);
+ TQVBoxLayout *l4 = new TQVBoxLayout(this, 0, KDialog::spacingHint());
+ l4->addWidget(box);
+ l4->addWidget(box2);
+
+ TQWhatsThis::add(m_embedfonts,
+ i18n("These options will automatically put fonts in the PostScript file "
+ "which are not present on the printer. Font embedding usually produces better print results "
+ "(closer to what you see on the screen), but larger print data as well."));
+ TQWhatsThis::add(m_fontpath,
+ i18n("When using font embedding you can select additional directories where "
+ "KDE should search for embeddable font files. By default, the X server "
+ "font path is used, so adding those directories is not needed. The default "
+ "search path should be sufficient in most cases."));
+
+ connect(m_remove, TQT_SIGNAL(clicked()), TQT_SLOT(slotRemove()));
+ connect(m_add, TQT_SIGNAL(clicked()), TQT_SLOT(slotAdd()));
+ connect(m_up, TQT_SIGNAL(clicked()), TQT_SLOT(slotUp()));
+ connect(m_down, TQT_SIGNAL(clicked()), TQT_SLOT(slotDown()));
+ connect(m_fontpath, TQT_SIGNAL(selectionChanged()), TQT_SLOT(slotSelected()));
+ connect(m_addpath, TQT_SIGNAL(textChanged(const TQString&)), TQT_SLOT(slotTextChanged(const TQString&)));
+ m_add->setEnabled(false);
+ m_remove->setEnabled(false);
+ m_up->setEnabled(false);
+ m_down->setEnabled(false);
+}
+
+void KMConfigFonts::loadConfig(KConfig *)
+{
+ TQSettings settings;
+ m_embedfonts->setChecked(settings.readBoolEntry("/qt/embedFonts", true));
+ TQStringList paths = settings.readListEntry("/qt/fontPath", ':');
+ TQListViewItem *item(0);
+ for (TQStringList::ConstIterator it=paths.begin(); it!=paths.end(); ++it)
+ item = new TQListViewItem(m_fontpath, item, *it);
+}
+
+void KMConfigFonts::saveConfig(KConfig *)
+{
+ TQSettings settings;
+ settings.writeEntry("/qt/embedFonts", m_embedfonts->isChecked());
+ TQStringList l;
+ TQListViewItem *item = m_fontpath->firstChild();
+ while (item)
+ {
+ l << item->text(0);
+ item = item->nextSibling();
+ }
+ settings.writeEntry("/qt/fontPath", l, ':');
+}
+
+void KMConfigFonts::slotSelected()
+{
+ TQListViewItem *item = m_fontpath->selectedItem();
+ m_remove->setEnabled(item);
+ m_up->setEnabled(item && item->itemAbove());
+ m_down->setEnabled(item && item->itemBelow());
+}
+
+void KMConfigFonts::slotAdd()
+{
+ if (m_addpath->url().isEmpty())
+ return;
+ TQListViewItem *lastItem(m_fontpath->firstChild());
+ while (lastItem && lastItem->nextSibling())
+ lastItem = lastItem->nextSibling();
+ TQListViewItem *item = new TQListViewItem(m_fontpath, lastItem, m_addpath->url());
+ m_fontpath->setSelected(item, true);
+}
+
+void KMConfigFonts::slotRemove()
+{
+ delete m_fontpath->selectedItem();
+ if (m_fontpath->currentItem())
+ m_fontpath->setSelected(m_fontpath->currentItem(), true);
+ slotSelected();
+}
+
+void KMConfigFonts::slotUp()
+{
+ TQListViewItem *citem = m_fontpath->selectedItem(), *nitem = 0;
+ if (!citem || !citem->itemAbove())
+ return;
+ nitem = new TQListViewItem(m_fontpath, citem->itemAbove()->itemAbove(), citem->text(0));
+ delete citem;
+ m_fontpath->setSelected(nitem, true);
+}
+
+void KMConfigFonts::slotDown()
+{
+ TQListViewItem *citem = m_fontpath->selectedItem(), *nitem = 0;
+ if (!citem || !citem->itemBelow())
+ return;
+ nitem = new TQListViewItem(m_fontpath, citem->itemBelow(), citem->text(0));
+ delete citem;
+ m_fontpath->setSelected(nitem, true);
+}
+
+void KMConfigFonts::slotTextChanged(const TQString& t)
+{
+ m_add->setEnabled(!t.isEmpty());
+}
+
+#include "kmconfigfonts.moc"