summaryrefslogtreecommitdiffstats
path: root/kate/part/kateschema.h
diff options
context:
space:
mode:
Diffstat (limited to 'kate/part/kateschema.h')
-rw-r--r--kate/part/kateschema.h323
1 files changed, 323 insertions, 0 deletions
diff --git a/kate/part/kateschema.h b/kate/part/kateschema.h
new file mode 100644
index 000000000..917530fcc
--- /dev/null
+++ b/kate/part/kateschema.h
@@ -0,0 +1,323 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2001-2003 Christoph Cullmann <cullmann@kde.org>
+ Copyright (C) 2002, 2003 Anders Lund <anders.lund@lund.tdcadsl.dk>
+
+ 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_SCHEMA_H__
+#define __KATE_SCHEMA_H__
+
+#include "katehighlight.h"
+#include "katedialogs.h"
+
+#include <qstringlist.h>
+#include <qintdict.h>
+#include <qmap.h>
+#include <qlistview.h>
+#include <qfont.h>
+
+#include <kconfig.h>
+#include <kaction.h>
+
+class KateView;
+class KateStyleListItem;
+class KateStyleListCaption;
+
+class KColorButton;
+
+class QPopupMenu;
+class KComboBox;
+
+class KateSchemaManager
+{
+ public:
+ KateSchemaManager ();
+ ~KateSchemaManager ();
+
+ /**
+ * Schema Config changed, update all renderers
+ */
+ void update (bool readfromfile = true);
+
+ /**
+ * return kconfig with right group set or set to Normal if not there
+ */
+ KConfig *schema (uint number);
+
+ void addSchema (const QString &t);
+
+ void removeSchema (uint number);
+
+ /**
+ * is this schema valid ? (does it exist ?)
+ */
+ bool validSchema (uint number);
+
+ /**
+ * if not found, defaults to 0
+ */
+ uint number (const QString &name);
+
+ /**
+ * group names in the end, no i18n involved
+ */
+ QString name (uint number);
+
+ /**
+ * Don't modify, list with the names of the schemas (i18n name for the default ones)
+ */
+ const QStringList &list () { return m_schemas; }
+
+ static QString normalSchema ();
+ static QString printingSchema ();
+
+ private:
+ KConfig m_config;
+ QStringList m_schemas;
+};
+
+
+class KateViewSchemaAction : public KActionMenu
+{
+ Q_OBJECT
+
+ public:
+ KateViewSchemaAction(const QString& text, QObject* parent = 0, const char* name = 0)
+ : KActionMenu(text, parent, name) { init(); };
+
+ ~KateViewSchemaAction(){;};
+
+ void updateMenu (KateView *view);
+
+ private:
+ void init();
+
+ QGuardedPtr<KateView> m_view;
+ QStringList names;
+ int last;
+
+ public slots:
+ void slotAboutToShow();
+
+ private slots:
+ void setSchema (int mode);
+};
+
+//
+// DIALOGS
+//
+
+/*
+ QListView that automatically adds columns for KateStyleListItems and provides a
+ popup menu and a slot to edit a style using the keyboard.
+ Added by anders, jan 23 2002.
+*/
+class KateStyleListView : public QListView
+{
+ Q_OBJECT
+
+ friend class KateStyleListItem;
+
+ public:
+ KateStyleListView( QWidget *parent=0, bool showUseDefaults=false);
+ ~KateStyleListView() {};
+ /* Display a popupmenu for item i at the specified global position, eventually with a title,
+ promoting the context name of that item */
+ void showPopupMenu( KateStyleListItem *i, const QPoint &globalPos, bool showtitle=false );
+ void emitChanged() { emit changed(); };
+
+ void setBgCol( const QColor &c ) { bgcol = c; }
+ void setSelCol( const QColor &c ) { selcol = c; }
+ void setNormalCol( const QColor &c ) { normalcol = c; }
+
+ private slots:
+ /* Display a popupmenu for item i at item position */
+ void showPopupMenu( QListViewItem *i, const QPoint &globalPos );
+ /* call item to change a property, or display a menu */
+ void slotMousePressed( int, QListViewItem*, const QPoint&, int );
+ /* asks item to change the property in q */
+ void mSlotPopupHandler( int z );
+ void unsetColor( int );
+
+ signals:
+ void changed();
+
+ private:
+ QColor bgcol, selcol, normalcol;
+ QFont docfont;
+};
+
+class KateSchemaConfigColorTab : public QWidget
+{
+ Q_OBJECT
+
+ public:
+ KateSchemaConfigColorTab( QWidget *parent = 0, const char *name = 0 );
+ ~KateSchemaConfigColorTab();
+
+ private:
+ KColorButton *m_back;
+ KColorButton *m_selected;
+ KColorButton *m_current;
+ KColorButton *m_bracket;
+ KColorButton *m_wwmarker;
+ KColorButton *m_iconborder;
+ KColorButton *m_tmarker;
+ KColorButton *m_linenumber;
+
+ KColorButton *m_markers; // bg color for current selected marker
+ KComboBox* m_combobox; // switch marker type
+
+ // Class for storing the properties on 1 schema.
+ class SchemaColors {
+ public:
+ QColor back, selected, current, bracket, wwmarker, iconborder, tmarker, linenumber;
+ QMap<int, QColor> markerColors; // stores all markerColors
+ };
+
+ // schemaid=data, created when a schema is entered
+ QMap<int,SchemaColors> m_schemas;
+ // current schema
+ int m_schema;
+
+ public slots:
+ void apply();
+ void schemaChanged( int newSchema );
+
+ signals:
+ void changed(); // connected to parentWidget()->parentWidget() SLOT(slotChanged)
+
+ protected slots:
+ void slotMarkerColorChanged(const QColor&);
+ void slotComboBoxChanged(int index);
+};
+
+typedef QMap<int,QFont> FontMap; // ### remove it
+
+class KateSchemaConfigFontTab : public QWidget
+{
+ Q_OBJECT
+
+ public:
+ KateSchemaConfigFontTab( QWidget *parent = 0, const char *name = 0 );
+ ~KateSchemaConfigFontTab();
+
+ public:
+ void readConfig (KConfig *config);
+
+ public slots:
+ void apply();
+ void schemaChanged( int newSchema );
+
+ signals:
+ void changed(); // connected to parentWidget()->parentWidget() SLOT(slotChanged)
+
+ private:
+ class KFontChooser *m_fontchooser;
+ FontMap m_fonts;
+ int m_schema;
+
+ private slots:
+ void slotFontSelected( const QFont &font );
+};
+
+class KateSchemaConfigFontColorTab : public QWidget
+{
+ Q_OBJECT
+
+ public:
+ KateSchemaConfigFontColorTab( QWidget *parent = 0, const char *name = 0 );
+ ~KateSchemaConfigFontColorTab();
+
+ public:
+ void schemaChanged (uint schema);
+ void reload ();
+ void apply ();
+
+ KateAttributeList *attributeList (uint schema);
+
+ private:
+ KateStyleListView *m_defaultStyles;
+ QIntDict<KateAttributeList> m_defaultStyleLists;
+};
+
+class KateSchemaConfigHighlightTab : public QWidget
+{
+ Q_OBJECT
+
+ public:
+ KateSchemaConfigHighlightTab( QWidget *parent = 0, const char *name = 0, KateSchemaConfigFontColorTab *page = 0, uint hl = 0 );
+ ~KateSchemaConfigHighlightTab();
+
+ public:
+ void schemaChanged (uint schema);
+ void reload ();
+ void apply ();
+
+ protected slots:
+ void hlChanged(int z);
+
+ private:
+ KateSchemaConfigFontColorTab *m_defaults;
+
+ QComboBox *hlCombo;
+ KateStyleListView *m_styles;
+
+ uint m_schema;
+ int m_hl;
+
+ QIntDict< QIntDict<KateHlItemDataList> > m_hlDict;
+};
+
+class KateSchemaConfigPage : public KateConfigPage
+{
+ Q_OBJECT
+
+ public:
+ KateSchemaConfigPage ( QWidget *parent, class KateDocument *doc=0 );
+ ~KateSchemaConfigPage ();
+
+ public slots:
+ void apply();
+ void reload();
+ void reset();
+ void defaults();
+
+ private slots:
+ void update ();
+ void deleteSchema ();
+ void newSchema ();
+ void schemaChanged (int schema);
+
+ void newCurrentPage (QWidget *w);
+
+ private:
+ int m_lastSchema;
+ int m_defaultSchema;
+
+ class QTabWidget *m_tabWidget;
+ class QPushButton *btndel;
+ class QComboBox *defaultSchemaCombo;
+ class QComboBox *schemaCombo;
+ KateSchemaConfigColorTab *m_colorTab;
+ KateSchemaConfigFontTab *m_fontTab;
+ KateSchemaConfigFontColorTab *m_fontColorTab;
+ KateSchemaConfigHighlightTab *m_highlightTab;
+};
+
+#endif
+
+// kate: space-indent on; indent-width 2; replace-tabs on;