kateconfig.h
00001 /* This file is part of the KDE libraries 00002 Copyright (C) 2003 Christoph Cullmann <cullmann@kde.org> 00003 00004 This library is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU Library General Public 00006 License version 2 as published by the Free Software Foundation. 00007 00008 This library is distributed in the hope that it will be useful, 00009 but WITHOUT ANY WARRANTY; without even the implied warranty of 00010 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00011 Library General Public License for more details. 00012 00013 You should have received a copy of the GNU Library General Public License 00014 along with this library; see the file COPYING.LIB. If not, write to 00015 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00016 Boston, MA 02110-1301, USA. 00017 */ 00018 00019 #ifndef __KATE_CONFIG_H__ 00020 #define __KATE_CONFIG_H__ 00021 00022 #include <tdetexteditor/markinterface.h> 00023 00024 #include <tqbitarray.h> 00025 #include <tqcolor.h> 00026 #include <tqobject.h> 00027 #include <tqvaluevector.h> 00028 00029 class KateView; 00030 class KateDocument; 00031 class KateRenderer; 00032 class KateFontStruct; 00033 class KateFontMetrics; 00034 00035 class TDEConfig; 00036 00037 class TQFont; 00038 class TQTextCodec; 00039 00043 class KateConfig 00044 { 00045 public: 00049 KateConfig (); 00050 00054 virtual ~KateConfig (); 00055 00056 public: 00063 void configStart (); 00064 00069 void configEnd (); 00070 00071 protected: 00075 virtual void updateConfig () = 0; 00076 00077 private: 00081 uint configSessionNumber; 00082 00086 bool configIsRunning; 00087 }; 00088 00089 class KateDocumentConfig : public KateConfig 00090 { 00091 private: 00092 friend class KateFactory; 00093 00097 KateDocumentConfig (); 00098 00099 public: 00103 KateDocumentConfig (KateDocument *doc); 00104 00108 ~KateDocumentConfig (); 00109 00110 inline static KateDocumentConfig *global () { return s_global; } 00111 00112 inline bool isGlobal () const { return (this == global()); } 00113 00114 public: 00118 void readConfig (TDEConfig *config); 00119 00123 void writeConfig (TDEConfig *config); 00124 00125 protected: 00126 void updateConfig (); 00127 00128 public: 00129 int tabWidth () const; 00130 void setTabWidth (int tabWidth); 00131 00132 int indentationWidth () const; 00133 void setIndentationWidth (int indentationWidth); 00134 00135 enum IndentationMode 00136 { 00137 imNone = 0, 00138 imNormal = 1, 00139 imCStyle = 2, 00140 imPythonStyle = 3, 00141 imXmlStyle = 4, 00142 imCSAndS = 5, 00143 imVarIndent = 6, 00144 imScriptIndent = 7 00145 }; 00146 00147 uint indentationMode () const; 00148 void setIndentationMode (uint identationMode); 00149 00150 bool wordWrap () const; 00151 void setWordWrap (bool on); 00152 00153 unsigned int wordWrapAt () const; 00154 void setWordWrapAt (unsigned int col); 00155 00156 uint undoSteps () const; 00157 void setUndoSteps ( uint undoSteps ); 00158 00159 bool pageUpDownMovesCursor () const; 00160 void setPageUpDownMovesCursor (bool on); 00161 00162 enum ConfigFlags 00163 { 00164 cfBackspaceIndents= 0x2, 00165 cfWordWrap= 0x4, 00166 cfRemoveSpaces = 0x10, 00167 cfWrapCursor= 0x20, 00168 cfAutoBrackets= 0x40, 00169 cfTabIndentsMode = 0x200, 00170 cfOvr= 0x1000, 00171 cfKeepIndentProfile= 0x8000, 00172 cfKeepExtraSpaces= 0x10000, 00173 cfTabIndents= 0x80000, 00174 cfShowTabs= 0x200000, 00175 cfSpaceIndent= 0x400000, 00176 cfSmartHome = 0x800000, 00177 cfTabInsertsTab = 0x1000000, 00178 cfReplaceTabsDyn= 0x2000000, 00179 cfRemoveTrailingDyn=0x4000000, 00180 cfDoxygenAutoTyping=0x8000000 , // Remove for KDE 4.0 (put in indenters) 00181 cfMixedIndent = 0x10000000, 00182 cfIndentPastedText = 0x20000000 00183 }; 00184 00185 uint configFlags () const; 00186 void setConfigFlags (KateDocumentConfig::ConfigFlags flag, bool enable); 00187 void setConfigFlags (uint fullFlags); 00188 00189 const TQString &encoding () const; 00190 TQTextCodec *codec (); 00191 00192 void setEncoding (const TQString &encoding); 00193 00194 bool isSetEncoding () const; 00195 00196 enum Eol 00197 { 00198 eolUnix = 0, 00199 eolDos = 1, 00200 eolMac = 2 00201 }; 00202 00203 int eol () const; 00204 TQString eolString (); 00205 00206 void setEol (int mode); 00207 00208 bool allowEolDetection () const; 00209 void setAllowEolDetection (bool on); 00210 00211 enum BackupFlags 00212 { 00213 LocalFiles=1, 00214 RemoteFiles=2 00215 }; 00216 00217 uint backupFlags () const; 00218 void setBackupFlags (uint flags); 00219 00220 const TQString &backupPrefix () const; 00221 void setBackupPrefix (const TQString &prefix); 00222 00223 const TQString &backupSuffix () const; 00224 void setBackupSuffix (const TQString &suffix); 00225 00226 bool plugin (uint index) const; 00227 void setPlugin (uint index, bool load); 00228 00234 int searchDirConfigDepth () const; 00235 00236 void setSearchDirConfigDepth (int depth); 00237 00238 private: 00239 int m_tabWidth; 00240 int m_indentationWidth; 00241 uint m_indentationMode; 00242 bool m_wordWrap; 00243 int m_wordWrapAt; 00244 uint m_undoSteps; 00245 bool m_pageUpDownMovesCursor; 00246 uint m_configFlags; 00247 TQString m_encoding; 00248 int m_eol; 00249 bool m_allowEolDetection; 00250 uint m_backupFlags; 00251 int m_searchDirConfigDepth; 00252 TQString m_backupPrefix; 00253 TQString m_backupSuffix; 00254 TQBitArray m_plugins; 00255 00256 bool m_tabWidthSet : 1; 00257 bool m_indentationWidthSet : 1; 00258 bool m_indentationModeSet : 1; 00259 bool m_wordWrapSet : 1; 00260 bool m_wordWrapAtSet : 1; 00261 bool m_pageUpDownMovesCursorSet : 1; 00262 bool m_undoStepsSet : 1; 00263 uint m_configFlagsSet; 00264 bool m_encodingSet : 1; 00265 bool m_eolSet : 1; 00266 bool m_allowEolDetectionSet : 1; 00267 bool m_backupFlagsSet : 1; 00268 bool m_searchDirConfigDepthSet : 1; 00269 bool m_backupPrefixSet : 1; 00270 bool m_backupSuffixSet : 1; 00271 TQBitArray m_pluginsSet; 00272 00273 private: 00274 static KateDocumentConfig *s_global; 00275 KateDocument *m_doc; 00276 }; 00277 00278 class KateViewConfig : public KateConfig 00279 { 00280 private: 00281 friend class KateFactory; 00282 00286 KateViewConfig (); 00287 00288 public: 00292 KateViewConfig (KateView *view); 00293 00297 ~KateViewConfig (); 00298 00299 inline static KateViewConfig *global () { return s_global; } 00300 00301 inline bool isGlobal () const { return (this == global()); } 00302 00303 public: 00307 void readConfig (TDEConfig *config); 00308 00312 void writeConfig (TDEConfig *config); 00313 00314 protected: 00315 void updateConfig (); 00316 00317 public: 00318 bool dynWordWrap () const; 00319 void setDynWordWrap (bool wrap); 00320 00321 int dynWordWrapIndicators () const; 00322 void setDynWordWrapIndicators (int mode); 00323 00324 int dynWordWrapAlignIndent () const; 00325 void setDynWordWrapAlignIndent (int indent); 00326 00327 bool lineNumbers () const; 00328 void setLineNumbers (bool on); 00329 00330 bool scrollBarMarks () const; 00331 void setScrollBarMarks (bool on); 00332 00333 bool iconBar () const; 00334 void setIconBar (bool on); 00335 00336 bool foldingBar () const; 00337 void setFoldingBar (bool on); 00338 00339 int bookmarkSort () const; 00340 void setBookmarkSort (int mode); 00341 00342 int autoCenterLines() const; 00343 void setAutoCenterLines (int lines); 00344 00345 long searchFlags () const; 00346 void setSearchFlags (long flags); 00347 00348 bool cmdLine () const; 00349 void setCmdLine (bool on); 00350 00351 uint defaultMarkType () const; 00352 void setDefaultMarkType (uint type); 00353 00354 bool persistentSelection () const; 00355 void setPersistentSelection (bool on); 00356 00357 enum TextToSearch 00358 { 00359 Nowhere = 0, 00360 SelectionOnly = 1, 00361 SelectionWord = 2, 00362 WordOnly = 3, 00363 WordSelection = 4 00364 }; 00365 00366 int textToSearchMode () const; 00367 void setTextToSearchMode (int mode); 00368 00369 private: 00370 bool m_dynWordWrap; 00371 int m_dynWordWrapIndicators; 00372 int m_dynWordWrapAlignIndent; 00373 bool m_lineNumbers; 00374 bool m_scrollBarMarks; 00375 bool m_iconBar; 00376 bool m_foldingBar; 00377 int m_bookmarkSort; 00378 int m_autoCenterLines; 00379 long m_searchFlags; 00380 bool m_cmdLine; 00381 uint m_defaultMarkType; 00382 bool m_persistentSelection; 00383 int m_textToSearchMode; 00384 00385 bool m_dynWordWrapSet : 1; 00386 bool m_dynWordWrapIndicatorsSet : 1; 00387 bool m_dynWordWrapAlignIndentSet : 1; 00388 bool m_lineNumbersSet : 1; 00389 bool m_scrollBarMarksSet : 1; 00390 bool m_iconBarSet : 1; 00391 bool m_foldingBarSet : 1; 00392 bool m_bookmarkSortSet : 1; 00393 bool m_autoCenterLinesSet : 1; 00394 bool m_searchFlagsSet : 1; 00395 bool m_cmdLineSet : 1; 00396 bool m_defaultMarkTypeSet : 1; 00397 bool m_persistentSelectionSet : 1; 00398 bool m_textToSearchModeSet : 1; 00399 00400 private: 00401 static KateViewConfig *s_global; 00402 KateView *m_view; 00403 }; 00404 00405 class KateRendererConfig : public KateConfig 00406 { 00407 private: 00408 friend class KateFactory; 00409 00413 KateRendererConfig (); 00414 00415 00416 public: 00420 KateRendererConfig (KateRenderer *renderer); 00421 00425 ~KateRendererConfig (); 00426 00427 inline static KateRendererConfig *global () { return s_global; } 00428 00429 inline bool isGlobal () const { return (this == global()); } 00430 00431 public: 00435 void readConfig (TDEConfig *config); 00436 00440 void writeConfig (TDEConfig *config); 00441 00442 protected: 00443 void updateConfig (); 00444 00445 public: 00446 uint schema () const; 00447 void setSchema (uint schema); 00453 void reloadSchema(); 00454 00455 KateFontStruct *fontStruct (); 00456 TQFont *font(); 00457 KateFontMetrics *fontMetrics(); 00458 00459 void setFont(const TQFont &font); 00460 00461 bool wordWrapMarker () const; 00462 void setWordWrapMarker (bool on); 00463 00464 const TQColor& backgroundColor() const; 00465 void setBackgroundColor (const TQColor &col); 00466 00467 const TQColor& selectionColor() const; 00468 void setSelectionColor (const TQColor &col); 00469 00470 const TQColor& highlightedLineColor() const; 00471 void setHighlightedLineColor (const TQColor &col); 00472 00473 const TQColor& lineMarkerColor(KTextEditor::MarkInterface::MarkTypes type = KTextEditor::MarkInterface::markType01) const; // markType01 == Bookmark 00474 void setLineMarkerColor (const TQColor &col, KTextEditor::MarkInterface::MarkTypes type = KTextEditor::MarkInterface::markType01); 00475 00476 const TQColor& highlightedBracketColor() const; 00477 void setHighlightedBracketColor (const TQColor &col); 00478 00479 const TQColor& wordWrapMarkerColor() const; 00480 void setWordWrapMarkerColor (const TQColor &col); 00481 00482 const TQColor& tabMarkerColor() const; 00483 void setTabMarkerColor (const TQColor &col); 00484 00485 const TQColor& iconBarColor() const; 00486 void setIconBarColor (const TQColor &col); 00487 00488 // the line number color is used for the line numbers on the left bar and 00489 // for vertical separator lines and for code folding lines. 00490 const TQColor& lineNumberColor() const; 00491 void setLineNumberColor (const TQColor &col); 00492 00493 bool showIndentationLines () const; 00494 void setShowIndentationLines (bool on); 00495 00496 private: 00500 void setSchemaInternal(int schema); 00501 00502 uint m_schema; 00503 KateFontStruct *m_font; 00504 bool m_wordWrapMarker; 00505 bool m_showIndentationLines; 00506 TQColor m_backgroundColor; 00507 TQColor m_selectionColor; 00508 TQColor m_highlightedLineColor; 00509 TQColor m_highlightedBracketColor; 00510 TQColor m_wordWrapMarkerColor; 00511 TQColor m_tabMarkerColor; 00512 TQColor m_iconBarColor; 00513 TQColor m_lineNumberColor; 00514 TQValueVector<TQColor> m_lineMarkerColor; 00515 00516 bool m_schemaSet : 1; 00517 bool m_fontSet : 1; 00518 bool m_wordWrapMarkerSet : 1; 00519 bool m_showIndentationLinesSet : 1; 00520 bool m_backgroundColorSet : 1; 00521 bool m_selectionColorSet : 1; 00522 bool m_highlightedLineColorSet : 1; 00523 bool m_highlightedBracketColorSet : 1; 00524 bool m_wordWrapMarkerColorSet : 1; 00525 bool m_tabMarkerColorSet : 1; 00526 bool m_iconBarColorSet : 1; 00527 bool m_lineNumberColorSet : 1; 00528 TQBitArray m_lineMarkerColorSet; 00529 00530 private: 00531 static KateRendererConfig *s_global; 00532 KateRenderer *m_renderer; 00533 }; 00534 00535 #endif 00536 00537 // kate: space-indent on; indent-width 2; replace-tabs on;