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.
538 lines
13 KiB
538 lines
13 KiB
/* This file is part of the KDE libraries
|
|
Copyright (C) 2003 Christoph Cullmann <cullmann@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 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.
|
|
*/
|
|
|
|
#ifndef __KATE_CONFIG_H__
|
|
#define __KATE_CONFIG_H__
|
|
|
|
#include <ktexteditor/markinterface.h>
|
|
|
|
#include <tqbitarray.h>
|
|
#include <tqcolor.h>
|
|
#include <tqobject.h>
|
|
#include <tqvaluevector.h>
|
|
|
|
class KateView;
|
|
class KateDocument;
|
|
class KateRenderer;
|
|
class KateFontStruct;
|
|
class KateFontMetrics;
|
|
|
|
class TDEConfig;
|
|
|
|
class TQFont;
|
|
class TQTextCodec;
|
|
|
|
/**
|
|
* Base Class for the Kate Config Classes
|
|
*/
|
|
class KateConfig
|
|
{
|
|
public:
|
|
/**
|
|
* Default Constructor
|
|
*/
|
|
KateConfig ();
|
|
|
|
/**
|
|
* Virtual Destructor
|
|
*/
|
|
virtual ~KateConfig ();
|
|
|
|
public:
|
|
/**
|
|
* start some config changes
|
|
* this method is needed to init some kind of transaction
|
|
* for config changes, update will only be done once, at
|
|
* configEnd() call
|
|
*/
|
|
void configStart ();
|
|
|
|
/**
|
|
* end a config change transaction, update the concerned
|
|
* documents/views/renderers
|
|
*/
|
|
void configEnd ();
|
|
|
|
protected:
|
|
/**
|
|
* do the real update
|
|
*/
|
|
virtual void updateConfig () = 0;
|
|
|
|
private:
|
|
/**
|
|
* recursion depth
|
|
*/
|
|
uint configSessionNumber;
|
|
|
|
/**
|
|
* is a config session running
|
|
*/
|
|
bool configIsRunning;
|
|
};
|
|
|
|
class KateDocumentConfig : public KateConfig
|
|
{
|
|
private:
|
|
friend class KateFactory;
|
|
|
|
/**
|
|
* only used in KateFactory for the static global fallback !!!
|
|
*/
|
|
KateDocumentConfig ();
|
|
|
|
public:
|
|
/**
|
|
* Construct a DocumentConfig
|
|
*/
|
|
KateDocumentConfig (KateDocument *doc);
|
|
|
|
/**
|
|
* Cu DocumentConfig
|
|
*/
|
|
~KateDocumentConfig ();
|
|
|
|
inline static KateDocumentConfig *global () { return s_global; }
|
|
|
|
inline bool isGlobal () const { return (this == global()); }
|
|
|
|
public:
|
|
/**
|
|
* Read config from object
|
|
*/
|
|
void readConfig (TDEConfig *config);
|
|
|
|
/**
|
|
* Write config to object
|
|
*/
|
|
void writeConfig (TDEConfig *config);
|
|
|
|
protected:
|
|
void updateConfig ();
|
|
|
|
public:
|
|
int tabWidth () const;
|
|
void setTabWidth (int tabWidth);
|
|
|
|
int indentationWidth () const;
|
|
void setIndentationWidth (int indentationWidth);
|
|
|
|
enum IndentationMode
|
|
{
|
|
imNone = 0,
|
|
imNormal = 1,
|
|
imCStyle = 2,
|
|
imPythonStyle = 3,
|
|
imXmlStyle = 4,
|
|
imCSAndS = 5,
|
|
imVarIndent = 6,
|
|
imScriptIndent = 7
|
|
};
|
|
|
|
uint indentationMode () const;
|
|
void setIndentationMode (uint identationMode);
|
|
|
|
bool wordWrap () const;
|
|
void setWordWrap (bool on);
|
|
|
|
unsigned int wordWrapAt () const;
|
|
void setWordWrapAt (unsigned int col);
|
|
|
|
uint undoSteps () const;
|
|
void setUndoSteps ( uint undoSteps );
|
|
|
|
bool pageUpDownMovesCursor () const;
|
|
void setPageUpDownMovesCursor (bool on);
|
|
|
|
enum ConfigFlags
|
|
{
|
|
cfBackspaceIndents= 0x2,
|
|
cfWordWrap= 0x4,
|
|
cfRemoveSpaces = 0x10,
|
|
cfWrapCursor= 0x20,
|
|
cfAutoBrackets= 0x40,
|
|
cfTabIndentsMode = 0x200,
|
|
cfOvr= 0x1000,
|
|
cfKeepIndentProfile= 0x8000,
|
|
cfKeepExtraSpaces= 0x10000,
|
|
cfTabIndents= 0x80000,
|
|
cfShowTabs= 0x200000,
|
|
cfSpaceIndent= 0x400000,
|
|
cfSmartHome = 0x800000,
|
|
cfTabInsertsTab = 0x1000000,
|
|
cfReplaceTabsDyn= 0x2000000,
|
|
cfRemoveTrailingDyn=0x4000000,
|
|
cfDoxygenAutoTyping=0x8000000 , // Remove for KDE 4.0 (put in indenters)
|
|
cfMixedIndent = 0x10000000,
|
|
cfIndentPastedText = 0x20000000
|
|
};
|
|
|
|
uint configFlags () const;
|
|
void setConfigFlags (KateDocumentConfig::ConfigFlags flag, bool enable);
|
|
void setConfigFlags (uint fullFlags);
|
|
|
|
const TQString &encoding () const;
|
|
TQTextCodec *codec ();
|
|
|
|
void setEncoding (const TQString &encoding);
|
|
|
|
bool isSetEncoding () const;
|
|
|
|
enum Eol
|
|
{
|
|
eolUnix = 0,
|
|
eolDos = 1,
|
|
eolMac = 2
|
|
};
|
|
|
|
int eol () const;
|
|
TQString eolString ();
|
|
|
|
void setEol (int mode);
|
|
|
|
bool allowEolDetection () const;
|
|
void setAllowEolDetection (bool on);
|
|
|
|
enum BackupFlags
|
|
{
|
|
LocalFiles=1,
|
|
RemoteFiles=2
|
|
};
|
|
|
|
uint backupFlags () const;
|
|
void setBackupFlags (uint flags);
|
|
|
|
const TQString &backupPrefix () const;
|
|
void setBackupPrefix (const TQString &prefix);
|
|
|
|
const TQString &backupSuffix () const;
|
|
void setBackupSuffix (const TQString &suffix);
|
|
|
|
bool plugin (uint index) const;
|
|
void setPlugin (uint index, bool load);
|
|
|
|
/**
|
|
* Should Kate Part search for dir wide config file
|
|
* and if, how depth?
|
|
* @return search depth (< 0 no search)
|
|
*/
|
|
int searchDirConfigDepth () const;
|
|
|
|
void setSearchDirConfigDepth (int depth);
|
|
|
|
private:
|
|
int m_tabWidth;
|
|
int m_indentationWidth;
|
|
uint m_indentationMode;
|
|
bool m_wordWrap;
|
|
int m_wordWrapAt;
|
|
uint m_undoSteps;
|
|
bool m_pageUpDownMovesCursor;
|
|
uint m_configFlags;
|
|
TQString m_encoding;
|
|
int m_eol;
|
|
bool m_allowEolDetection;
|
|
uint m_backupFlags;
|
|
int m_searchDirConfigDepth;
|
|
TQString m_backupPrefix;
|
|
TQString m_backupSuffix;
|
|
TQBitArray m_plugins;
|
|
|
|
bool m_tabWidthSet : 1;
|
|
bool m_indentationWidthSet : 1;
|
|
bool m_indentationModeSet : 1;
|
|
bool m_wordWrapSet : 1;
|
|
bool m_wordWrapAtSet : 1;
|
|
bool m_pageUpDownMovesCursorSet : 1;
|
|
bool m_undoStepsSet : 1;
|
|
uint m_configFlagsSet;
|
|
bool m_encodingSet : 1;
|
|
bool m_eolSet : 1;
|
|
bool m_allowEolDetectionSet : 1;
|
|
bool m_backupFlagsSet : 1;
|
|
bool m_searchDirConfigDepthSet : 1;
|
|
bool m_backupPrefixSet : 1;
|
|
bool m_backupSuffixSet : 1;
|
|
TQBitArray m_pluginsSet;
|
|
|
|
private:
|
|
static KateDocumentConfig *s_global;
|
|
KateDocument *m_doc;
|
|
};
|
|
|
|
class KateViewConfig : public KateConfig
|
|
{
|
|
private:
|
|
friend class KateFactory;
|
|
|
|
/**
|
|
* only used in KateFactory for the static global fallback !!!
|
|
*/
|
|
KateViewConfig ();
|
|
|
|
public:
|
|
/**
|
|
* Construct a DocumentConfig
|
|
*/
|
|
KateViewConfig (KateView *view);
|
|
|
|
/**
|
|
* Cu DocumentConfig
|
|
*/
|
|
~KateViewConfig ();
|
|
|
|
inline static KateViewConfig *global () { return s_global; }
|
|
|
|
inline bool isGlobal () const { return (this == global()); }
|
|
|
|
public:
|
|
/**
|
|
* Read config from object
|
|
*/
|
|
void readConfig (TDEConfig *config);
|
|
|
|
/**
|
|
* Write config to object
|
|
*/
|
|
void writeConfig (TDEConfig *config);
|
|
|
|
protected:
|
|
void updateConfig ();
|
|
|
|
public:
|
|
bool dynWordWrap () const;
|
|
void setDynWordWrap (bool wrap);
|
|
|
|
int dynWordWrapIndicators () const;
|
|
void setDynWordWrapIndicators (int mode);
|
|
|
|
int dynWordWrapAlignIndent () const;
|
|
void setDynWordWrapAlignIndent (int indent);
|
|
|
|
bool lineNumbers () const;
|
|
void setLineNumbers (bool on);
|
|
|
|
bool scrollBarMarks () const;
|
|
void setScrollBarMarks (bool on);
|
|
|
|
bool iconBar () const;
|
|
void setIconBar (bool on);
|
|
|
|
bool foldingBar () const;
|
|
void setFoldingBar (bool on);
|
|
|
|
int bookmarkSort () const;
|
|
void setBookmarkSort (int mode);
|
|
|
|
int autoCenterLines() const;
|
|
void setAutoCenterLines (int lines);
|
|
|
|
long searchFlags () const;
|
|
void setSearchFlags (long flags);
|
|
|
|
bool cmdLine () const;
|
|
void setCmdLine (bool on);
|
|
|
|
uint defaultMarkType () const;
|
|
void setDefaultMarkType (uint type);
|
|
|
|
bool persistentSelection () const;
|
|
void setPersistentSelection (bool on);
|
|
|
|
enum TextToSearch
|
|
{
|
|
Nowhere = 0,
|
|
SelectionOnly = 1,
|
|
SelectionWord = 2,
|
|
WordOnly = 3,
|
|
WordSelection = 4
|
|
};
|
|
|
|
int textToSearchMode () const;
|
|
void setTextToSearchMode (int mode);
|
|
|
|
private:
|
|
bool m_dynWordWrap;
|
|
int m_dynWordWrapIndicators;
|
|
int m_dynWordWrapAlignIndent;
|
|
bool m_lineNumbers;
|
|
bool m_scrollBarMarks;
|
|
bool m_iconBar;
|
|
bool m_foldingBar;
|
|
int m_bookmarkSort;
|
|
int m_autoCenterLines;
|
|
long m_searchFlags;
|
|
bool m_cmdLine;
|
|
uint m_defaultMarkType;
|
|
bool m_persistentSelection;
|
|
int m_textToSearchMode;
|
|
|
|
bool m_dynWordWrapSet : 1;
|
|
bool m_dynWordWrapIndicatorsSet : 1;
|
|
bool m_dynWordWrapAlignIndentSet : 1;
|
|
bool m_lineNumbersSet : 1;
|
|
bool m_scrollBarMarksSet : 1;
|
|
bool m_iconBarSet : 1;
|
|
bool m_foldingBarSet : 1;
|
|
bool m_bookmarkSortSet : 1;
|
|
bool m_autoCenterLinesSet : 1;
|
|
bool m_searchFlagsSet : 1;
|
|
bool m_cmdLineSet : 1;
|
|
bool m_defaultMarkTypeSet : 1;
|
|
bool m_persistentSelectionSet : 1;
|
|
bool m_textToSearchModeSet : 1;
|
|
|
|
private:
|
|
static KateViewConfig *s_global;
|
|
KateView *m_view;
|
|
};
|
|
|
|
class KateRendererConfig : public KateConfig
|
|
{
|
|
private:
|
|
friend class KateFactory;
|
|
|
|
/**
|
|
* only used in KateFactory for the static global fallback !!!
|
|
*/
|
|
KateRendererConfig ();
|
|
|
|
|
|
public:
|
|
/**
|
|
* Construct a DocumentConfig
|
|
*/
|
|
KateRendererConfig (KateRenderer *renderer);
|
|
|
|
/**
|
|
* Cu DocumentConfig
|
|
*/
|
|
~KateRendererConfig ();
|
|
|
|
inline static KateRendererConfig *global () { return s_global; }
|
|
|
|
inline bool isGlobal () const { return (this == global()); }
|
|
|
|
public:
|
|
/**
|
|
* Read config from object
|
|
*/
|
|
void readConfig (TDEConfig *config);
|
|
|
|
/**
|
|
* Write config to object
|
|
*/
|
|
void writeConfig (TDEConfig *config);
|
|
|
|
protected:
|
|
void updateConfig ();
|
|
|
|
public:
|
|
uint schema () const;
|
|
void setSchema (uint schema);
|
|
/**
|
|
* Reload the schema from the schema manager.
|
|
* For the global instance, have all other instances reload.
|
|
* Used by the schema config page to apply changes.
|
|
*/
|
|
void reloadSchema();
|
|
|
|
KateFontStruct *fontStruct ();
|
|
TQFont *font();
|
|
KateFontMetrics *fontMetrics();
|
|
|
|
void setFont(const TQFont &font);
|
|
|
|
bool wordWrapMarker () const;
|
|
void setWordWrapMarker (bool on);
|
|
|
|
const TQColor& backgroundColor() const;
|
|
void setBackgroundColor (const TQColor &col);
|
|
|
|
const TQColor& selectionColor() const;
|
|
void setSelectionColor (const TQColor &col);
|
|
|
|
const TQColor& highlightedLineColor() const;
|
|
void setHighlightedLineColor (const TQColor &col);
|
|
|
|
const TQColor& lineMarkerColor(KTextEditor::MarkInterface::MarkTypes type = KTextEditor::MarkInterface::markType01) const; // markType01 == Bookmark
|
|
void setLineMarkerColor (const TQColor &col, KTextEditor::MarkInterface::MarkTypes type = KTextEditor::MarkInterface::markType01);
|
|
|
|
const TQColor& highlightedBracketColor() const;
|
|
void setHighlightedBracketColor (const TQColor &col);
|
|
|
|
const TQColor& wordWrapMarkerColor() const;
|
|
void setWordWrapMarkerColor (const TQColor &col);
|
|
|
|
const TQColor& tabMarkerColor() const;
|
|
void setTabMarkerColor (const TQColor &col);
|
|
|
|
const TQColor& iconBarColor() const;
|
|
void setIconBarColor (const TQColor &col);
|
|
|
|
// the line number color is used for the line numbers on the left bar and
|
|
// for vertical separator lines and for code folding lines.
|
|
const TQColor& lineNumberColor() const;
|
|
void setLineNumberColor (const TQColor &col);
|
|
|
|
bool showIndentationLines () const;
|
|
void setShowIndentationLines (bool on);
|
|
|
|
private:
|
|
/**
|
|
* Read the schema properties from the config file.
|
|
*/
|
|
void setSchemaInternal(int schema);
|
|
|
|
uint m_schema;
|
|
KateFontStruct *m_font;
|
|
bool m_wordWrapMarker;
|
|
bool m_showIndentationLines;
|
|
TQColor m_backgroundColor;
|
|
TQColor m_selectionColor;
|
|
TQColor m_highlightedLineColor;
|
|
TQColor m_highlightedBracketColor;
|
|
TQColor m_wordWrapMarkerColor;
|
|
TQColor m_tabMarkerColor;
|
|
TQColor m_iconBarColor;
|
|
TQColor m_lineNumberColor;
|
|
TQValueVector<TQColor> m_lineMarkerColor;
|
|
|
|
bool m_schemaSet : 1;
|
|
bool m_fontSet : 1;
|
|
bool m_wordWrapMarkerSet : 1;
|
|
bool m_showIndentationLinesSet : 1;
|
|
bool m_backgroundColorSet : 1;
|
|
bool m_selectionColorSet : 1;
|
|
bool m_highlightedLineColorSet : 1;
|
|
bool m_highlightedBracketColorSet : 1;
|
|
bool m_wordWrapMarkerColorSet : 1;
|
|
bool m_tabMarkerColorSet : 1;
|
|
bool m_iconBarColorSet : 1;
|
|
bool m_lineNumberColorSet : 1;
|
|
TQBitArray m_lineMarkerColorSet;
|
|
|
|
private:
|
|
static KateRendererConfig *s_global;
|
|
KateRenderer *m_renderer;
|
|
};
|
|
|
|
#endif
|
|
|
|
// kate: space-indent on; indent-width 2; replace-tabs on;
|