interfaces Library: editorchooser.cpp Source File (interfaces Library)

| # interfaces Library API Documentation
Overview | Class Hierarchy | Classes | Classes (annotated) | Members | Namespaces | Source Files

# editorchooser.cpp

    00001 #include <editorchooser.h>
    00002 #include <editorchooser.moc>
    00003
    00004 #include <qcombobox.h>
    00005 #include <ktrader.h>
    00006 #include <kconfig.h>
    00007 #include <qstringlist.h>
    00008 #include <kservice.h>
    00009 #include <klocale.h>
    00010 #include <qlabel.h>
    00011 #include <kapplication.h>
    00012 #include <qlayout.h>
    00013
    00014 #include "editorchooser_ui.h"
    00015
    00016 using namespace KTextEditor;
    00017
    00018 namespace KTextEditor
    00019 {
    00020   class PrivateEditorChooser
    00021   {
    00022   public:
    00023     PrivateEditorChooser()
    00024     {
    00025     }
    00026     ~PrivateEditorChooser(){}
    00027   // Data Members
    00028   EditorChooser_UI *chooser;
    00029   QStringList ElementNames;
    00030   QStringList elements;
    00031   };
    00032
    00033 }
    00034
    00035 EditorChooser::EditorChooser(QWidget *parent,const char *name) :
    00036     QWidget (parent,name)
    00037   {
    00038   d = new PrivateEditorChooser ();
    00039
    00040   // sizemanagment
    00041   QGridLayout *grid = new QGridLayout( this, 1, 1 );
    00042
    00043
    00044   d->chooser = new EditorChooser_UI (this, name);
    00045
    00046   grid->addWidget( d->chooser, 0, 0);
    00047
    00048
    00049     KTrader::OfferList offers = KTrader::self()->query("text/plain", "'KTextEditor/Document' in ServiceTypes");
    00050     KConfig *config=new KConfig("default_components");
    00051     config->setGroup("KTextEditor");
    00052     QString editor = config->readPathEntry("embeddedEditor");
    00053
    00054         if (editor.isEmpty()) editor="katepart";
    00055
    00056     for (KTrader::OfferList::Iterator it = offers.begin(); it != offers.end(); ++it)
    00057     {
    00058             if ((*it)->desktopEntryName().contains(editor))
    00059         {
    00060             d->chooser->editorCombo->insertItem(i18n("System Default (%1)").arg((*it)->name()));
    00061             break;
    00062         }
    00063     }
    00064
    00065     for (KTrader::OfferList::Iterator it = offers.begin(); it != offers.end(); ++it)
    00066     {
    00067             d->chooser->editorCombo->insertItem((*it)->name());
    00068         d->elements.append((*it)->desktopEntryName());
    00069     }
    00070         d->chooser->editorCombo->setCurrentItem(0);
    00071 }
    00072
    00073 EditorChooser:: ~EditorChooser(){
    00074   delete d;
    00075 }
    00076
    00077 void EditorChooser::readAppSetting(const QString& postfix){
    00078     KConfig *cfg=kapp->config();
    00079     QString previousGroup=cfg->group();
    00080     cfg->setGroup("KTEXTEDITOR:"+postfix);
    00081     QString editor=cfg->readPathEntry("editor");
    00082     if (editor.isEmpty()) d->chooser->editorCombo->setCurrentItem(0);
    00083     else
    00084     {
    00085         int idx=d->elements.findIndex(editor);
    00086         idx=idx+1;
    00087         d->chooser->editorCombo->setCurrentItem(idx);
    00088     }
    00089     cfg->setGroup(previousGroup);
    00090 }
    00091
    00092 void EditorChooser::writeAppSetting(const QString& postfix){
    00093     KConfig *cfg=kapp->config();
    00094     QString previousGroup=cfg->group();
    00095     cfg->setGroup("KTEXTEDITOR:"+postfix);
    00096     cfg->writeEntry("DEVELOPER_INFO","NEVER TRY TO USE VALUES FROM THAT GROUP, THEY ARE SUBJECT TO CHANGES");
    00097     cfg->writePathEntry("editor", (d->chooser->editorCombo->currentItem()==0) ?
    00098         QString::null : (*d->elements.at(d->chooser->editorCombo->currentItem()-1)));
    00099     cfg->sync();
    00100     cfg->setGroup(previousGroup);
    00101
    00102 }
    00103
    00104 KTextEditor::Document *EditorChooser::createDocument(QObject *parent,const char* name, const QString& postfix,bool fallBackToKatePart){
    00105
    00106     KTextEditor::Document *tmpDoc=0;
    00107
    00108     KConfig *cfg=kapp->config();
    00109         QString previousGroup=cfg->group();
    00110         cfg->setGroup("KTEXTEDITOR:"+postfix);
    00111         QString editor=cfg->readPathEntry("editor");
    00112     cfg->setGroup(previousGroup);
    00113     if (editor.isEmpty())
    00114     {
    00115         KConfig *config=new KConfig("default_components");
    00116         config->setGroup("KTextEditor");
    00117         editor = config->readPathEntry("embeddedEditor", "katepart");
    00118         delete config;
    00119     }
    00120
    00121     KService::Ptr serv=KService::serviceByDesktopName(editor);
    00122     if (serv)
    00123     {
    00124         tmpDoc=KTextEditor::createDocument(serv->library().latin1(),parent,name);
    00125         if (tmpDoc) return tmpDoc;
    00126     }
    00127     if (fallBackToKatePart)
    00128         return KTextEditor::createDocument("libkatepart",parent,name);
    00129
    00130     return 0;
    00131 }
    00132
    00133 KTextEditor::Editor *EditorChooser::createEditor(QWidget *parentWidget,QObject *parent,const char* widgetName,
    00134     const char* name,const QString& postfix,bool fallBackToKatePart){
    00135
    00136         KTextEditor::Editor *tmpEd=0;
    00137
    00138         KConfig *cfg=kapp->config();
    00139         QString previousGroup=cfg->group();
    00140         cfg->setGroup("KTEXTEDITOR:"+postfix);
    00141         QString editor=cfg->readPathEntry("editor");
    00142         cfg->setGroup(previousGroup);
    00143         if (editor.isEmpty())
    00144         {
    00145                 KConfig *config=new KConfig("default_components");
    00146                 config->setGroup("KTextEditor");
    00147                 editor = config->readPathEntry("embeddedEditor", "katepart");
    00148                 delete config;
    00149         }
    00150
    00151         KService::Ptr serv=KService::serviceByDesktopName(editor);
    00152         if (serv)
    00153         {
    00154                 tmpEd=KTextEditor::createEditor(serv->library().latin1(),parentWidget,widgetName,parent,name);
    00155                 if (tmpEd) return tmpEd;
    00156         }
    00157         if (fallBackToKatePart)
    00158                 return KTextEditor::createEditor("libkatepart",parentWidget,widgetName,parent,name);
    00159
    00160         return 0;
    00161 }
    00162

This file is part of the documentation for interfaces Library Version 3.4.1.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat Jun 11 20:34:56 2005 by doxygen 1.4.1 written by Dimitri van Heesch, © 1997-2003