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.
tdebase/konsole/konsole/schema.h

248 lines
7.5 KiB

/* schema.h
**
** Copyright (C) 1998-1999 by Lars Doelle <lars.doelle@on-line.de>
** Copyright (C) 2000 by Adriaan de Groot <groot@kde.org>
**
** A file that defines the objects for storing color schema's
** in konsole. This file is part of the KDE project, see
** http://www.kde.org/
** for more information.
*/
/*
** 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 2 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 in a file called COPYING; if not, write to
** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
** MA 02110-1301, USA.
*/
/*
** Lars' code has almost completely disappeared from this file.
** The new setup is more object-oriented and disposes of some
** nasty static deleters.
**
** Basically you want to create a ColorSchemaList and then call
** checkSchema's to get all the schema's available. Iterate through
** the items in the list (with a constiterator) and so whatever.
** The ColorSchemaList inherits protected from QList to prevent you
** from doing silly things to the elements of the list.
*/
#ifndef SCHEMA_include
#define SCHEMA_include
#include <tqstring.h>
#include <tqptrlist.h>
#include "TECommon.h"
#ifndef KONSOLEDEBUG
/*
** konsole has claimed debug area 1211. This isn't really the right place
** to define KONSOLEDEBUG but there is no "global.h" or central "konsole.h"
** file included by all parts of konsole, so this will have to do.
*/
#define KONSOLEDEBUG kdDebug(1211)
#endif
class TQDateTime;
class KConfig;
class ColorSchema
{
friend class ColorSchemaList; //only for resetting serial to one when deleting the list
public:
/**
* Create ColorSchema from the given pathname.
* If the given pathname does not exist, a ColorSchema
* with the same settings as the default schema is returned.
*/
ColorSchema(const TQString& pathname);
~ColorSchema();
/**
* Construct a color schema from the given config file.
* (This is different from the constructor with a pathname
* because that reads the hackneyed schema file syntax and
* this is a KDE config file)
*/
ColorSchema(KConfig&);
/**
* Constructor for the default schema (with no path).
*/
ColorSchema();
TQString relPath() const { return fRelPath; } ;
/**
* Check if the schema file whose pathname was given
* to the constructor has changed since it was last read.
*/
bool hasSchemaFileChanged() const;
/**
* Actually read a schema file (using the path given
* to the constructor of the ColorSchema).
*/
bool rereadSchemaFile();
/**
* Writes a ColorSchema to a config file with the
* given name.
*/
void writeConfig(const TQString& filename) const;
/**
* Returns the (non-i18n) name of the i'th color,
* or TQString::null if i is not a color name. This
* should be used as a group name to store the
* information about the i'th color.
*/
static TQString colorName(int i);
/**
* Update the timestamp in the color schema indicating
* when the schema's file whas last checked and read.
*/
void updateLastRead(const TQDateTime& dt);
protected:
/**
* Clear a schema. Used by constructors to clean up the
* data members before filling them.
*/
void clearSchema();
/**
* Set the data members' values to those of the
* default schema.
*/
void setDefaultSchema();
/**
* Write a single ColorEntry to the config file
* under the given name (ie. in the group name).
*/
void writeConfigColor(KConfig& c,
const TQString& name,
const ColorEntry& e) const;
/**
* Read a single ColorEntry from the config file.
*/
void readConfigColor(KConfig& c,
const TQString& name,
ColorEntry& e) ;
public:
int numb() {if (!m_fileRead) rereadSchemaFile();return m_numb;};
const TQString& title() {if (!m_fileRead) rereadSchemaFile();return m_title;};
const TQString& imagePath() {if (!m_fileRead) rereadSchemaFile();return m_imagePath;};
int alignment() {if (!m_fileRead) rereadSchemaFile();return m_alignment;};
const ColorEntry* table() {if (!m_fileRead) rereadSchemaFile();return m_table;};
bool useTransparency() {if (!m_fileRead) rereadSchemaFile();return m_useTransparency;};
double tr_x() {if (!m_fileRead) rereadSchemaFile();return m_tr_x;};
int tr_r() {if (!m_fileRead) rereadSchemaFile();return m_tr_r;};
int tr_g() {if (!m_fileRead) rereadSchemaFile();return m_tr_g;};
int tr_b() {if (!m_fileRead) rereadSchemaFile();return m_tr_b;};
TQDateTime* getLastRead() {return lastRead;}; // Time last checked for updates
private:
int m_numb;
int m_tr_r, m_tr_g, m_tr_b;
int m_alignment;
TQString m_title;
TQString m_imagePath;
ColorEntry m_table[TABLE_COLORS];
bool m_useTransparency:1;
bool m_fileRead:1;
double m_tr_x;
TQString fRelPath; // File name of schema file
TQDateTime *lastRead; // Time last checked for updates
static int serial; // Serial number so that every
// ColorSchema has a unique number.
};
class ColorSchemaList : protected TQPtrList<ColorSchema>
{
public:
/**
* The following functions are redeclared public since
* they're needed, but we still want to inherit protected
* from TQPtrList to prevent unsightly -- and perhaps dangerous --
* tampering with the ColorSchemaList.
*/
uint count() const { return TQPtrList<ColorSchema>::count(); } ;
const ColorSchema *at(unsigned int i)
{ return TQPtrList<ColorSchema>::at(i); } ;
#ifdef USE_QT4
const ColorSchema *at(unsigned int i)
{ return at(i); } ;
#endif // USE_QT4
void sort() {TQPtrList<ColorSchema>::sort();};
ColorSchemaList();
virtual ~ColorSchemaList();
/**
* Check if any new color schema files have been added since
* the last time checkSchemas() was called. Any new files
* are added to the list of schemas automatically.
*
* @return true if there were any changes to the list of schemas
* @return false otherwise
*/
bool checkSchemas();
/**
* Returns the color schema read from the given path,
* or NULL if no color schema with the given path is found.
*/
ColorSchema *find(const TQString & path);
/**
* Returns the serial number of the color schema
* with the given serial number, or NULL if there is none.
*/
ColorSchema *find(int);
ColorSchema *findAny(const TQString& path)
{
ColorSchema *p = find(path);
if (p) return p;
return defaultSchema;
} ;
protected:
virtual int compareItems(TQPtrCollection::Item item1, TQPtrCollection::Item item2);
private:
/**
* These next two functions are used internally by
* checkSchemas. updateAllSchemaTimes sets the timestamp
* on all the ColorSchema's whose config / schema file
* can still be found, and deleteOldSchema's does the
* actual removal of schema's without a config file.
*/
bool updateAllSchemaTimes(const TQDateTime&);
bool deleteOldSchemas(const TQDateTime&);
/**
* This isn't really used, but it could be. A newly
* constructed ColorSchemaList contains one element:
* the defaultSchema, with serial number 0.
*/
ColorSchema *defaultSchema;
} ;
#endif