/*************************************************************************** * Copyright (C) 2002 by Bernd Gehrmann * * bernd@kdevelop.org * * Copyright (C) 2002 by Sebastian Kratzert * * skratzert@gmx.de * * Copyright (C) 2003-2004 by Alexander Dymo * * cloudtemple@mksat.net * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program 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 General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "docglobalconfigwidget.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include "kdevdocumentationplugin.h" #include "kdevpartcontroller.h" #include "docconfiglistview.h" #include "documentation_part.h" #include "documentation_widget.h" #include "editcatalogdlg.h" #include "addcatalogdlg.h" #include "contentsview.h" #include "indexview.h" #include "docutils.h" DocGlobalConfigWidget::DocGlobalConfigWidget(DocumentationPart *part, DocumentationWidget *widget, TQWidget *parent, const char *name, WFlags fl) :DocGlobalConfigWidgetBase(parent, name, fl), m_part(part), m_widget(widget) { m_View = new DocConfigListView( viewHolder ); viewHolder->addWidget( m_View ); viewHolder->raiseWidget( m_View ); for (TQValueList::const_iterator it = m_part->m_plugins.constBegin(); it != m_part->m_plugins.constEnd(); ++it) { (*it)->loadCatalogConfiguration( m_View ); } TDEConfig *config = m_part->config(); //read full text search settings config->setGroup("htdig"); TQString databaseDir = kapp->dirs()->saveLocation("data", "kdevdocumentation/search"); databaseDirEdit->setURL(config->readPathEntry("databaseDir", databaseDir)); htdigbinEdit->setURL(config->readPathEntry("htdigbin", kapp->dirs()->findExe("htdig"))); htmergebinEdit->setURL(config->readPathEntry("htmergebin", kapp->dirs()->findExe("htmerge"))); htsearchbinEdit->setURL(config->readPathEntry("htsearchbin", kapp->dirs()->findExe("htsearch"))); if (config->readBoolEntry("IsSetup", false) == false) { TQFileInfo fi(htsearchbinEdit->url()); if (!fi.exists()) { //try to guess htsearch location on Debian TQFileInfo fi("/usr/lib/cgi-bin/htsearch"); if (!fi.exists()) { //try to guess htsearch location on SuSE TQFileInfo fi("/srv/www/cgi-bin/htsearch"); if (fi.exists()) htsearchbinEdit->setURL("/srv/www/cgi-bin/htsearch"); } else htsearchbinEdit->setURL("/usr/lib/cgi-bin/htsearch"); } } find_box->setChecked(m_part->hasContextFeature(DocumentationPart::Finder)); index_box->setChecked(m_part->hasContextFeature(DocumentationPart::IndexLookup)); search_box->setChecked(m_part->hasContextFeature(DocumentationPart::FullTextSearch)); man_box->setChecked(m_part->hasContextFeature(DocumentationPart::GotoMan)); info_box->setChecked(m_part->hasContextFeature(DocumentationPart::GotoInfo)); useAssistant_box->setChecked(m_part->isAssistantUsed()); // Having app-specific settings isn't pretty, but this setting is nonsensical in kdevassistant if ( kapp->instanceName().find("kdevassistant") != -1 ) useAssistant_box->hide(); //font sizes and zoom levels TDEHTMLPart htmlpart; TDEConfig *appConfig = TDEGlobal::config(); appConfig->setGroup("TDEHTMLPart"); standardFont_combo->setCurrentText(appConfig->readEntry("StandardFont", htmlpart.settings()->stdFontName())); fixedFont_combo->setCurrentText(appConfig->readEntry("FixedFont", htmlpart.settings()->fixedFontName())); zoom_combo->setCurrentText(appConfig->readEntry("Zoom", "100")); } DocGlobalConfigWidget::~DocGlobalConfigWidget() { } /*$SPECIALIZATION$*/ void DocGlobalConfigWidget::collectionsBoxCurrentChanged(int // box ) { } void DocGlobalConfigWidget::removeCollectionButtonClicked() { ConfigurationItem *item = dynamic_cast(activeView()->currentItem()); if (!item) return; item->docPlugin()->deleteCatalogConfiguration(item); delete activeView()->currentItem(); } void DocGlobalConfigWidget::editCollectionButtonClicked() { ConfigurationItem *item = dynamic_cast(activeView()->currentItem()); if (!item) return; EditCatalogDlg dlg( item->docPlugin(), this, "edit collection dlg", true); dlg.setURL(item->url()); dlg.setTitle(item->title()); if (dlg.exec()) { item->docPlugin()->deleteCatalogConfiguration(item); // this removes the old entry by name item->docPlugin()->editCatalogConfiguration(item, dlg.title(), dlg.url()); } } void DocGlobalConfigWidget::addCollectionButtonClicked() { AddCatalogDlg dlg( m_part->m_plugins, this, "add collection dlg", true); if (dlg.exec()) { dlg.plugin()->addCatalogConfiguration(activeView(), dlg.title(), dlg.url()); } } TDEListView *DocGlobalConfigWidget::activeView() { return m_View; } void DocGlobalConfigWidget::accept() { //write catalog settings for (TQValueList::const_iterator it = m_part->m_plugins.constBegin(); it != m_part->m_plugins.constEnd(); ++it) { (*it)->saveCatalogConfiguration( m_View ); //@todo: take restrictions into account (*it)->reinit(m_widget->contents(), m_widget->index(), TQStringList()); } TDEConfig *config = m_part->config(); //write full text search settings config->setGroup("htdig"); config->writePathEntry("databaseDir", DocUtils::envURL(databaseDirEdit)); config->writePathEntry("htdigbin", DocUtils::envURL(htdigbinEdit)); config->writePathEntry("htmergebin", DocUtils::envURL(htmergebinEdit)); config->writePathEntry("htsearchbin", DocUtils::envURL(htsearchbinEdit)); //write full text search locations file TQString ftsLocationsFile = locateLocal("data", "kdevdocumentation/search/locations.txt"); TQFile f(ftsLocationsFile); TQStringList locs; if (f.open(IO_ReadWrite | IO_Truncate)) { TQTextStream str(&f); for (TQValueList::const_iterator it = m_part->m_plugins.constBegin(); it != m_part->m_plugins.constEnd(); ++ it) { TQStringList app = (*it)->fullTextSearchLocations(); for (TQStringList::const_iterator it2 = app.constBegin(); it2 != app.constEnd(); ++it2) { if (!locs.contains(*it2)) locs.append(*it2); } } str << locs.join("\n"); f.close(); } //write editor context menu configuration m_part->setContextFeature(DocumentationPart::Finder, find_box->isChecked()); m_part->setContextFeature(DocumentationPart::IndexLookup, index_box->isChecked()); m_part->setContextFeature(DocumentationPart::FullTextSearch, search_box->isChecked()); m_part->setContextFeature(DocumentationPart::GotoMan, man_box->isChecked()); m_part->setContextFeature(DocumentationPart::GotoInfo, info_box->isChecked()); m_part->setAssistantUsed(useAssistant_box->isChecked()); //font sizes and zoom levels TDEConfig *appConfig = TDEGlobal::config(); appConfig->setGroup("TDEHTMLPart"); appConfig->writeEntry("StandardFont", standardFont_combo->currentText()); appConfig->writeEntry("FixedFont", fixedFont_combo->currentText()); appConfig->writeEntry("Zoom", zoom_combo->currentText()); appConfig->sync(); updateConfigForHTMLParts(); config->sync(); //refill the index kdDebug() << "refill the index" << endl; if (m_part->m_hasIndex) { kdDebug() << "m_part->m_hasIndex" << endl; m_part->m_widget->index()->refill(); } } void DocGlobalConfigWidget::updateConfigForHTMLParts() { KURL::List urls = m_part->partController()->openURLs(); for (KURL::List::const_iterator it = urls.constBegin(); it != urls.constEnd(); ++it) { TDEHTMLPart *htmlPart = dynamic_cast(m_part->partController()->partForURL(*it)); if (htmlPart) { TDEConfig *appConfig = TDEGlobal::config(); appConfig->setGroup("TDEHTMLPart"); htmlPart->setStandardFont(appConfig->readEntry("StandardFont")); htmlPart->setFixedFont(appConfig->readEntry("FixedFont")); //hack to force reloading the page if (htmlPart->zoomFactor() == appConfig->readEntry("Zoom").toInt()) { htmlPart->setZoomFactor(htmlPart->zoomFactor()-1); htmlPart->setZoomFactor(htmlPart->zoomFactor()+1); } htmlPart->setZoomFactor(appConfig->readEntry("Zoom").toInt()); } } } #include "docglobalconfigwidget.moc"