mirror of
https://bitbucket.org/smil3y/kdelibs.git
synced 2025-02-24 02:42:48 +00:00
173 lines
5.5 KiB
C++
173 lines
5.5 KiB
C++
/* This file is part of the KDE libraries
|
|
* Copyright (C) 2005 Joseph Wenninger <jowenn@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.
|
|
*/
|
|
#ifndef _EDITOR_CHOOSER_H_
|
|
#define _EDITOR_CHOOSER_H_
|
|
|
|
#include <ktexteditor/ktexteditor_export.h>
|
|
#include <ktexteditor/document.h>
|
|
#include <ktexteditor/editor.h>
|
|
|
|
#include <QtGui/QWidget>
|
|
|
|
class KConfig;
|
|
class QString;
|
|
|
|
namespace KTextEditor
|
|
{
|
|
|
|
/**
|
|
* \brief Editor Component Chooser.
|
|
*
|
|
* Topics:
|
|
* - \ref chooser_intro
|
|
* - \ref chooser_gui
|
|
* - \ref chooser_editor
|
|
*
|
|
* \section chooser_intro Introduction
|
|
*
|
|
* The EditorChooser is responsible for two different tasks: It provides
|
|
* - a GUI, with which the user can choose the preferred editor part
|
|
* - a static accessor, with which the current selected editor part can be
|
|
* obtained.
|
|
*
|
|
* \section chooser_gui The GUI Editor Chooser
|
|
* The EditorChooser is a simple widget with a group box containing an
|
|
* information label and a combo box which lists all available KTextEditor
|
|
* implementations. To give the user the possibility to choose a text editor
|
|
* implementation, create an instance of this class and put it into the GUI:
|
|
* \code
|
|
* KTextEditor::EditorChooser* ec = new KTextEditor::EditorChooser(parent);
|
|
* // read the settings from the application's KConfig object
|
|
* ec->readAppSetting();
|
|
* // optionally connect the signal changed()
|
|
* // plug the widget into a layout
|
|
* layout->addWidget(ec);
|
|
* \endcode
|
|
* Later, for example when the user clicks the Apply-button:
|
|
* \code
|
|
* // save the user's choice
|
|
* ec->writeAppSetting();
|
|
* \endcode
|
|
* After this, the static accessor editor() will return the new editor part
|
|
* object. Now, either the application has to be restarted, or you need code
|
|
* that closes all current documents so that you can safely switch and use the
|
|
* new editor part. Restarting is probably much easier.
|
|
*
|
|
* \note If you do not put the EditorChooser into the GUI, the default editor
|
|
* component will be used. The default editor is configurable in KDE's
|
|
* control center in
|
|
* "KDE Components > Component Chooser > Embedded Text Editor".
|
|
*
|
|
* \section chooser_editor Accessing the Editor Part
|
|
* The call of editor() will return the currently used editor part, either the
|
|
* KDE default or the one configured with the EditorChooser's GUI
|
|
* (see \ref chooser_gui). Example:
|
|
* \code
|
|
* KTextEditor::Editor* editor = KTextEditor::EditorChooser::editor();
|
|
* \endcode
|
|
*
|
|
* \see KTextEditor::Editor
|
|
* \author Joseph Wenninger \<jowenn@kde.org\>
|
|
*/
|
|
class KTEXTEDITOR_EXPORT EditorChooser: public QWidget
|
|
{
|
|
friend class PrivateEditorChooser;
|
|
|
|
Q_OBJECT
|
|
|
|
public:
|
|
/**
|
|
* Constructor.
|
|
*
|
|
* Create an editor chooser widget.
|
|
* \param parent the parent widget
|
|
*/
|
|
EditorChooser(QWidget *parent=0);
|
|
/**
|
|
* Destructor.
|
|
*/
|
|
virtual ~EditorChooser();
|
|
|
|
/* void writeSysDefault();*/
|
|
|
|
/**
|
|
* Read the configuration from the application's config file. The group
|
|
* is handeled internally (it is called "KTEXTEDITOR:", but it is possible
|
|
* to add a string to extend the group name with \p postfix.
|
|
* \param postfix config group postfix string
|
|
* \see writeAppSetting()
|
|
*/
|
|
void readAppSetting(const QString& postfix=QString());
|
|
/**
|
|
* Write the configuration to the application's config file.
|
|
* \param postfix config group postfix string
|
|
* \see readAppSetting()
|
|
*/
|
|
void writeAppSetting(const QString& postfix=QString());
|
|
|
|
/**
|
|
* Static accessor to get the Editor instance of the currently used
|
|
* KTextEditor component.
|
|
*
|
|
* That Editor instance can be qobject-cast to specific extensions.
|
|
* If the result of the cast is not NULL, that extension is supported:
|
|
*
|
|
* \param postfix config group postfix string
|
|
* \param fallBackToKatePart if \e true, the returned Editor component
|
|
* will be a katepart if no other implementation can be found
|
|
* \return Editor controller or NULL, if no editor component could be
|
|
* found
|
|
*/
|
|
static KTextEditor::Editor *editor (const QString& postfix=QString(), bool fallBackToKatePart = true);
|
|
|
|
Q_SIGNALS:
|
|
/**
|
|
* This signal is emitted whenever the selected item in the combo box
|
|
* changed.
|
|
*/
|
|
void changed();
|
|
private:
|
|
class PrivateEditorChooser *d;
|
|
};
|
|
|
|
/*
|
|
class EditorChooserBackEnd: public ComponentChooserPlugin {
|
|
|
|
Q_OBJECT
|
|
public:
|
|
EditorChooserBackEnd(QObject *parent=0, const char *name=0);
|
|
virtual ~EditorChooserBackEnd();
|
|
|
|
virtual QWidget *widget(QWidget *);
|
|
virtual const QStringList &choices();
|
|
virtual void saveSettings();
|
|
|
|
void readAppSetting(KConfig *cfg,const QString& postfix);
|
|
void writeAppSetting(KConfig *cfg,const QString& postfix);
|
|
|
|
public Q_SLOTS:
|
|
virtual void madeChoice(int pos,const QString &choice);
|
|
|
|
};
|
|
*/
|
|
|
|
}
|
|
#endif
|
|
|
|
// kate: space-indent on; indent-width 2; replace-tabs on;
|