diff options
Diffstat (limited to 'quanta/utility/quantacommon.h')
-rw-r--r-- | quanta/utility/quantacommon.h | 225 |
1 files changed, 225 insertions, 0 deletions
diff --git a/quanta/utility/quantacommon.h b/quanta/utility/quantacommon.h new file mode 100644 index 00000000..a88276b7 --- /dev/null +++ b/quanta/utility/quantacommon.h @@ -0,0 +1,225 @@ +/*************************************************************************** + quantacommon.h - description + ------------------- + begin : Sat Jul 27 2002 + copyright : (C) 2002, 2003 by Andras Mantia <amantia@kde.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; version 2 of the License. * + * * + ***************************************************************************/ + +#ifndef QUANTACOMMON_H +#define QUANTACOMMON_H + +#include <kdeversion.h> + +#include "qtag.h" +#include "node.h" +#include "parser.h" + +/**Some common, mostly static functions. + *@author Andras Mantia + */ + +#define DEFAULT_DTD QString("-//W3C//DTD HTML 4.01 Transitional//EN") + +class QString; +class DCOPReply; +class KURL; +class KStandardDirs; +class QWidget; +class Tag; + +class KConfig; +class KPopupMenu; + +/** Describes one abbreviation group */ +class Abbreviation{ +public: +/*A list with abbreviations in the for of: <template templatename, code> */ + QMap<QString, QString> abbreviations; + QStringList dteps; +}; + + +//Quanta main configuration structure +class QConfig{ +public: + //Tag style options + uint tagCase; + uint attrCase; + QChar attrValueQuotation; + bool closeOptionalTags; + bool closeTags; + bool updateClosingTags; + + //editor settings + bool useAutoCompletion; + bool enableDTDToolbar; + QString defaultEncoding; + + //parser options + bool instantUpdate; + bool showEmptyNodes; + bool showClosingTags; + uint refreshFrequency; + QString defaultDocType; + uint expandLevel; + bool showDTDSelectDialog; + QString showCloseButtons; ///< can be Disabled, ShowAlways or ShowDelayed + uint toolviewTabs; ///< how does the toolview tabs look like + + //kafka sync options + bool quantaRefreshOnFocus; + int quantaRefreshDelay; + bool kafkaRefreshOnFocus; + int kafkaRefreshDelay; + + //kafka indentation options + bool inlineNodeIndentation; + + //environment options + QString globalDataDir; //not stored, initialized on app startup + QStringList pluginSearchPaths; //global but read from plugins.rc + QString markupMimeTypes; + QString scriptMimeTypes; + QString imageMimeTypes; + QString textMimeTypes; + QString previewPosition; + QString docPosition; + QString windowLayout; + uint autosaveInterval; + QString backupDirPath; + QString quantaPID; + bool showHiddenFiles; ///< show hidden files in files treeview? + bool saveTrees; ///< save tree status for local trees? + QMap<QString, Abbreviation> abbreviations; ///< the abbreviation groups + bool replaceAccented; ///< replace or not the accented characters + bool replaceNotInEncoding; ///< replace characters with their entity number if they cannot be saved in the current encoding of the document. + bool smartTagInsertion; //enable/disable smartTagInsertion + }; + +typedef struct DirInfo{ + QString mimeType; + QString preText; + QString postText; + bool usePrePostText; + }; + +/**Some common, mostly static functions. + *@author Andras Mantia + */ + +class QuantaCommon { +public: + QuantaCommon(); + ~QuantaCommon(); + + /** convert tag to upper or lower case */ + static QString tagCase( const QString& tag); + /** convert tag to upper or lower case */ + static QString attrCase( const QString& attr); +/** returns the attribute value in quoted form, by taking care of the +quotation setting*/ + static QString quoteAttributeValue(const QString& value); + /** Set's up the url correctly from urlString. */ + static void setUrl(KURL &url, const QString& urlString); + /** No descriptions */ + static bool isSingleTag(const QString& dtdName, const QString& tag); + /** No descriptions */ + static bool isOptionalTag(const QString& dtdName, const QString& tag); + /** No descriptions */ + static bool isKnownTag(const QString& dtdName, const QString& tag); + /** No descriptions */ + static AttributeList* tagAttributes(const QString& dtdName, const QString& tag); + /** Returns the QTag object for the tag "tag" from the DTD named "dtdname". */ + static QTag* tagFromDTD(const QString& dtdName, const QString& tag); + /** Returns the QTag object for the tag "tag" from the DTD. */ + static QTag* tagFromDTD(const DTDStruct* dtd, const QString& tag); + /** Returns the QTag object for the node "node" from node's DTD. */ + static QTag* tagFromDTD(Node *node); + /** Returns an XML style string containing the GUI for attributes. */ + static QString xmlFromAttributes(AttributeList* attributes); + /** Returns 0 if the (line,col) is inside the area specified by the other arguments, + -1 if it is before the area and 1 if it is after. */ + static int isBetween(int line, int col, int bLine, int bCol, int eLine, int eCol); + /** Returns a pointer to a KStandardDirs object usable for plugin searchup. type is the plugin binary type (exe or lib). The returned +pointer must be deleted by the caller!! */ + static KStandardDirs* pluginDirs(const char *type); + + /** Return true, if the url has the mimetype starting with type. */ + static bool checkMimeGroup(const KURL& url, const QString& type); + /** Return true, if the url has the mimetype type. */ + static bool checkMimeType(const KURL& url, const QString& type); + /** Return true, if the url has exactly the mimetype type. */ + static bool checkExactMimeType(const KURL& url, const QString& type); + /** Returns the url without the filename. */ + static KURL convertToPath(const KURL& url); + /** Return a string to be used when an url is saved to the project file. + Returns url.url() if it's an absolute url and + url.path() if the url is relative */ + static QString qUrl(const KURL& url); + /** No descriptions */ + static void dirCreationError(QWidget *widget, const KURL& url); + /** + Adds the backslash before the special chars (like ?, *, . ) so the returned string can be used in regular expressions. + */ + static QString makeRxCompatible(const QString& s); + /** Returns the translated a_str in English. A "back-translation" useful e.g in case of CSS elements selected from a listbox. */ + static QString i18n2normal(const QString& a_str); + +/** No descriptions */ + static void normalizeStructure(QString f,QStringList& l); + /**Returns true if tag2 is the closing pair of tag1. It's namespace aware.*/ + static bool closesTag(Tag *tag1, Tag *tag2); + static bool closesTag(QString namespaceName, QString tagName, bool caseSensitive, + QString namespaceName2, QString tagName2, bool caseSensitive2); + static int denyBinaryInsert(QWidget *window); + static void removeCommentsAndQuotes(QString& str, const DTDStruct* dtd); + static bool insideCommentsOrQuotes(int position, const QString &string, const DTDStruct *dtd); + /** Calls a Quanta DCOP method. + * @param interface the DCOP interface the method belongs to + * @param method the DCOP method name (with the argument types) + * @param arguments comma separated list of argument + * @return the return value of the DCOP caller + */ + static DCOPReply callDCOPMethod(const QString& interface, const QString& method, const QString& arguments); + /** Checks if url exists and shows a question about overwriting it. + * @param url the url to check + * @return true if the user answered yes, false otherwise. + */ + static bool checkOverwrite(const KURL& url, QWidget *window); + + /** + * Same as KConfigBase::readPathListEntry, but resolves symlinks + * @param config + * @param pKey + * @return + */ + static QStringList readPathListEntry(KConfig *config, const QString &pKey); + + /** + * Same as KConfigBase::readPathEntry, but resolves symlinks + * @param config + * @param pKey + * @return + */ + static QString readPathEntry(KConfig *config, const QString &pKey); + + /** + * Returns the HTML encoding string for character with the specified code. + * If no such literal encoding is known (like ä), the numeric encoding + * is returned: &#code; + * @param code the numeric code of the character + * @return the encoded string + */ + static QString encodedChar(uint code); + +}; + +#endif |