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.
112 lines
3.4 KiB
112 lines
3.4 KiB
/* |
|
XINX |
|
Copyright (C) 2007-2011 by Ulrich Van Den Hekke |
|
xinx@shadoware.org |
|
|
|
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 3 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, see <http://www.gnu.org/licenses/>. |
|
*/ |
|
|
|
#pragma once |
|
#ifndef XINXCONFIG_H |
|
#define XINXCONFIG_H |
|
|
|
// Xinx header |
|
#include <core/lib-config.h> |
|
#include <core/xinxcore.h> |
|
#include <core/appsettings.h> |
|
#include <core/exceptions.h> |
|
|
|
// Qt header |
|
#include <QPointer> |
|
|
|
class XinxFormatFactory; |
|
class XinxLanguageFactory; |
|
class XinxFormatScheme; |
|
class QWidget; |
|
|
|
class LIBEXPORT ToolsNotDefinedException : public XinxException |
|
{ |
|
public: |
|
ToolsNotDefinedException(const QString & tool); |
|
}; |
|
|
|
/*! |
|
* Represente the configuration of XINX. The configuration of unique for a |
|
* unique process. |
|
*/ |
|
class LIBEXPORT XINXConfig : public XinxLibSingleton<XINXConfig>, public AppSettings |
|
{ |
|
Q_OBJECT |
|
public: |
|
/*! Create a configuration by assignation */ |
|
XINXConfig(const XINXConfig & origine); |
|
/*! Create an empty configuration */ |
|
XINXConfig(); |
|
/*! Destroy the configuration object */ |
|
virtual ~XINXConfig(); |
|
|
|
//! Get a created format scheme |
|
XinxFormatScheme * scheme(const QString & highlighter); |
|
|
|
/*! |
|
* Add a new format scheme to XINX |
|
* \param id the id to use for the scheme |
|
* \param scheme the added scheme |
|
*/ |
|
void addFormatScheme(const QString & id, XinxFormatScheme * scheme); |
|
|
|
/*! Return the language factory (from QCodeEdit library) for the definition in config */ |
|
XinxLanguageFactory * languageFactory(); |
|
|
|
/*! Load the configuration from the QSettings (Registry, INI File, ...) */ |
|
virtual void load(); |
|
/*! Save the configuration to the QSettings (Registry, INI File, ...) */ |
|
virtual void save(); |
|
|
|
/*! |
|
* Get the tool name from the configuration, and if the tool doesn't exist or |
|
* is not defined a dialog box to ask the user to define the tool. |
|
* \param tool The tool to use (cvs, svn, diff, ...) |
|
* \param showDialog Show a dialog box if the tool is not defined (else throw an exception) |
|
* \param parentWindow The parent windows used to show the dialog. |
|
* \throw ToolsNotDefinedException |
|
*/ |
|
QString getTools(const QString & tool, bool showDialog = true, QWidget * parentWindow = 0); |
|
/*! |
|
* Add a new tool in the configuration with a default value. |
|
* \param tool The tool to add (cvs, svn, diff, ...). |
|
* \param defaultValue The default value to use, if not already defined. |
|
*/ |
|
void addDefaultTool(const QString & tool, const QString & defaultValue); |
|
|
|
/*! Assign a configuration to another */ |
|
XINXConfig & operator=(const XINXConfig& p); |
|
signals: |
|
/*! Signal emited when the configuration is changed */ |
|
void changed(); |
|
public slots: |
|
//! Update the list of format (can't delete existing format) |
|
void updateFormatsSchemeFromConfig(); |
|
//! Put format to config |
|
void putFormatsSchemeToConfig(); |
|
|
|
protected: |
|
virtual struct_globals getDefaultGlobals(); |
|
virtual struct_editor getDefaultEditor(); |
|
private: |
|
QPointer<XinxLanguageFactory> m_languages; |
|
QHash<QString,XinxFormatScheme*> m_formatScheme; |
|
}; |
|
|
|
#endif
|
|
|