summaryrefslogtreecommitdiffstats
path: root/src/misc
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-03-01 18:37:05 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-03-01 18:37:05 +0000
commit145364a8af6a1fec06556221e66d4b724a62fc9a (patch)
tree53bd71a544008c518034f208d64c932dc2883f50 /src/misc
downloadrosegarden-145364a8af6a1fec06556221e66d4b724a62fc9a.tar.gz
rosegarden-145364a8af6a1fec06556221e66d4b724a62fc9a.zip
Added old abandoned KDE3 version of the RoseGarden MIDI tool
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/rosegarden@1097595 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'src/misc')
-rw-r--r--src/misc/Debug.cpp396
-rw-r--r--src/misc/Debug.h166
-rw-r--r--src/misc/Strings.cpp110
-rw-r--r--src/misc/Strings.h38
-rw-r--r--src/misc/stableheaders.h208
5 files changed, 918 insertions, 0 deletions
diff --git a/src/misc/Debug.cpp b/src/misc/Debug.cpp
new file mode 100644
index 0000000..33d5464
--- /dev/null
+++ b/src/misc/Debug.cpp
@@ -0,0 +1,396 @@
+// -*- c-basic-offset: 4 -*-
+
+/*
+ Rosegarden
+ A sequencer and musical notation editor.
+
+ This program is Copyright 2000-2008
+ Guillaume Laurent <glaurent@telegraph-road.org>,
+ Chris Cannam <cannam@all-day-breakfast.com>,
+ Richard Bown <bownie@bownie.com>
+
+ The moral right of the authors to claim authorship of this work
+ has been asserted.
+
+ 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. See the file
+ COPYING included with this distribution for more information.
+*/
+
+#include "Strings.h"
+#include "misc/Debug.h"
+#include "Debug.h"
+
+#if KDE_VERSION < KDE_MAKE_VERSION(3,2,0)
+#include <qdatetime.h>
+#include <qpoint.h>
+#include <qrect.h>
+#include <qregion.h>
+#include <qstringlist.h>
+#include <qpen.h>
+#include <qbrush.h>
+#include <qsize.h>
+#include <kurl.h>
+#endif
+
+#include "base/Event.h"
+#include "base/Segment.h"
+#include "base/RealTime.h"
+#include "base/Colour.h"
+#include "gui/editors/guitar/Chord.h"
+#include "gui/editors/guitar/Fingering.h"
+
+#ifndef NDEBUG
+
+kdbgstream&
+operator<<(kdbgstream &dbg, const std::string &s)
+{
+ dbg << strtoqstr(s);
+ return dbg;
+}
+
+kdbgstream&
+operator<<(kdbgstream &dbg, const Rosegarden::Event &e)
+{
+ dbg << "Event type : " << e.getType() << endl;
+
+ dbg << "\tDuration : " << e.getDuration()
+ << "\n\tAbsolute Time : " << e.getAbsoluteTime()
+ << endl;
+
+ // for (Event::PropertyMap::const_iterator i = e.properties().begin();
+ // i != e.properties().end(); ++i) {
+ // dbg << "\t\t" << (*i).first << " : "
+ // << ((*i).second)->unparse() << '\n';
+ // }
+
+ // e.dump(std::cerr);
+
+ return dbg;
+}
+
+kdbgstream&
+operator<<(kdbgstream &dbg, const Rosegarden::Segment &t)
+{
+ dbg << "Segment for instrument " << t.getTrack()
+ << " starting at " << t.getStartTime() << endl;
+
+ for (Rosegarden::Segment::const_iterator i = t.begin();
+ i != t.end(); ++i) {
+ if (!(*i)) {
+ dbg << "WARNING : skipping null event ptr\n";
+ continue;
+ }
+
+ dbg << "Dumping Event : \n";
+ dbg << *(*i) << endl;
+ }
+
+ return dbg;
+}
+
+kdbgstream&
+operator<<(kdbgstream &dbg, const Rosegarden::RealTime &t)
+{
+ dbg << t.toString();
+ return dbg;
+}
+
+kdbgstream&
+operator<<(kdbgstream &dbg, const Rosegarden::Colour &c)
+{
+ dbg << "Colour : rgb = " << c.getRed() << "," << c.getGreen() << "," << c.getBlue();
+ return dbg;
+}
+
+kdbgstream&
+operator<<(kdbgstream &dbg, const Rosegarden::Guitar::Chord &c)
+{
+ dbg << "Chord root = " << c.getRoot() << ", ext = '" << c.getExt() << "'";
+
+// for(unsigned int i = 0; i < c.getNbFingerings(); ++i) {
+// dbg << "\nFingering " << i << " : " << c.getFingering(i).toString().c_str();
+// }
+
+ Rosegarden::Guitar::Fingering f = c.getFingering();
+
+ dbg << ", fingering : ";
+
+ for(unsigned int j = 0; j < 6; ++j) {
+ int pos = f[j];
+ if (pos >= 0)
+ dbg << pos << ' ';
+ else
+ dbg << "x ";
+ }
+ return dbg;
+}
+
+#ifdef NOT_DEFINED
+
+ostream&
+kdbgostreamAdapter::operator<<(bool i)
+{
+ m_kdbgStream << i;
+ return *this;
+}
+
+ostream&
+kdbgostreamAdapter::operator<<(short i)
+{
+ m_kdbgStream << i;
+ return *this;
+}
+
+ostream&
+kdbgostreamAdapter::operator<<(unsigned short i)
+{
+ m_kdbgStream << i;
+ return *this;
+}
+
+ostream&
+kdbgostreamAdapter::operator<<(char i)
+{
+ m_kdbgStream << i;
+ return *this;
+}
+
+ostream&
+kdbgostreamAdapter::operator<<(unsigned char i)
+{
+ m_kdbgStream << i;
+ return *this;
+}
+
+ostream&
+kdbgostreamAdapter::operator<<(int i)
+{
+ m_kdbgStream << i;
+ return *this;
+}
+
+ostream&
+kdbgostreamAdapter::operator<<(unsigned int i)
+{
+ m_kdbgStream << i;
+ return *this;
+}
+
+ostream&
+kdbgostreamAdapter::operator<<(long i)
+{
+ m_kdbgStream << i;
+ return *this;
+}
+
+ostream&
+kdbgostreamAdapter::operator<<(unsigned long i)
+{
+ m_kdbgStream << i;
+ return *this;
+}
+
+ostream&
+kdbgostreamAdapter::operator<<(const QString& string)
+{
+ m_kdbgStream << string;
+ return *this;
+}
+
+ostream&
+kdbgostreamAdapter::operator<<(const char *string)
+{
+ m_kdbgStream << string;
+ return *this;
+}
+
+ostream&
+kdbgostreamAdapter::operator<<(const QCString& string)
+{
+ m_kdbgStream << string;
+ return *this;
+}
+
+ostream&
+kdbgostreamAdapter::operator<<(void * p)
+{
+ m_kdbgStream << p;
+ return *this;
+}
+
+ostream&
+kdbgostreamAdapter::operator<<(KDBGFUNC f)
+{
+ (*f)(m_kdbgStream);
+ return *this;
+}
+
+ostream&
+kdbgostreamAdapter::operator<<(double d)
+{
+ m_kdbgStream << d;
+ return *this;
+}
+
+#endif
+
+// ostream& endl( ostream &s)
+// {
+// s << "\n"; return s;
+// }
+
+// void DBCheckThrow()
+// {
+// using Rosegarden::Int;
+
+// Rosegarden::Event ev;
+
+// try {
+// int pitch = ev.get<Int>("BLAH");
+
+// } catch (Rosegarden::Event::NoData) {
+// RG_DEBUG << "DBCheckThrow()" << endl;
+// }
+// }
+
+#if KDE_VERSION < KDE_MAKE_VERSION(3,2,0)
+kdbgstream&
+operator<<(kdbgstream &dbg, const QDateTime& time)
+{
+ dbg << time.toString();
+ return dbg;
+}
+
+kdbgstream&
+operator<<(kdbgstream &dbg, const QDate& date)
+{
+ dbg << date.toString();
+ return dbg;
+}
+
+kdbgstream&
+operator<<(kdbgstream &dbg, const QTime& time )
+{
+ dbg << time.toString();
+ return dbg;
+}
+
+kdbgstream&
+operator<<(kdbgstream &dbg, const QPoint& p )
+{
+ dbg << "(" << p.x() << ", " << p.y() << ")";
+ return dbg;
+}
+
+kdbgstream&
+operator<<(kdbgstream &dbg, const QSize& s )
+{
+ dbg << "[" << s.width() << "x" << s.height() << "]";
+ return dbg;
+}
+
+kdbgstream&
+operator<<(kdbgstream &dbg, const QRect& r )
+{
+ dbg << "[" << r.x() << "," << r.y() << " - "
+ << r.width() << "x" << r.height() << "]";
+ return dbg;
+}
+
+kdbgstream&
+operator<<(kdbgstream &dbg, const QRegion& reg )
+{
+ dbg << "[ ";
+
+ QMemArray<QRect>rs = reg.rects();
+ for (uint i = 0;i < rs.size();++i)
+ dbg << QString("[%1,%2 - %3x%4] ").arg(rs[i].x()).arg(rs[i].y())
+ .arg(rs[i].width()).arg(rs[i].height() ) ;
+
+ dbg << "]";
+ return dbg;
+}
+
+kdbgstream&
+operator<<(kdbgstream &dbg, const KURL& u )
+{
+ dbg << u.prettyURL();
+ return dbg;
+}
+
+kdbgstream&
+operator<<(kdbgstream &dbg, const QStringList& l )
+{
+ dbg << "(";
+ dbg << l.join(",");
+ dbg << ")";
+
+ return dbg;
+}
+
+kdbgstream&
+operator<<(kdbgstream &dbg, const QColor& c )
+{
+ if ( c.isValid() )
+ dbg << c.name();
+ else
+ dbg << "(invalid/default)";
+ return dbg;
+}
+
+kdbgstream&
+operator<<(kdbgstream &dbg, const QPen& p )
+{
+ static const char* const s_penStyles[] = {
+ "NoPen", "SolidLine", "DashLine", "DotLine", "DashDotLine",
+ "DashDotDotLine"
+ };
+ static const char* const s_capStyles[] = {
+ "FlatCap", "SquareCap", "RoundCap"
+ };
+ dbg << "[ style:";
+ dbg << s_penStyles[ p.style() ];
+ dbg << " width:";
+ dbg << p.width();
+ dbg << " color:";
+ if ( p.color().isValid() )
+ dbg << p.color().name();
+ else
+ dbg << "(invalid/default)";
+ if ( p.width() > 0 ) {
+ dbg << " capstyle:";
+ dbg << s_capStyles[ p.capStyle() >> 4 ];
+ }
+ dbg << " ]";
+ return dbg;
+}
+
+kdbgstream&
+operator<<(kdbgstream &dbg, const QBrush& b)
+{
+ static const char* const s_brushStyles[] = {
+ "NoBrush", "SolidPattern", "Dense1Pattern", "Dense2Pattern", "Dense3Pattern",
+ "Dense4Pattern", "Dense5Pattern", "Dense6Pattern", "Dense7Pattern",
+ "HorPattern", "VerPattern", "CrossPattern", "BDiagPattern", "FDiagPattern",
+ "DiagCrossPattern"
+ };
+
+ dbg << "[ style: ";
+ dbg << s_brushStyles[ b.style() ];
+ dbg << " color: ";
+ if ( b.color().isValid() )
+ dbg << b.color().name() ;
+ else
+ dbg << "(invalid/default)";
+ if ( b.pixmap() )
+ dbg << " has a pixmap";
+ dbg << " ]";
+ return dbg;
+}
+#endif
+
+#endif
+
diff --git a/src/misc/Debug.h b/src/misc/Debug.h
new file mode 100644
index 0000000..8f8f4dd
--- /dev/null
+++ b/src/misc/Debug.h
@@ -0,0 +1,166 @@
+// -*- c-basic-offset: 4 -*-
+
+/*
+ Rosegarden
+ A sequencer and musical notation editor.
+
+ This program is Copyright 2000-2008
+ Guillaume Laurent <glaurent@telegraph-road.org>,
+ Chris Cannam <cannam@all-day-breakfast.com>,
+ Richard Bown <bownie@bownie.com>
+
+ The moral right of the authors to claim authorship of this work
+ has been asserted.
+
+ 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. See the file
+ COPYING included with this distribution for more information.
+*/
+
+#ifndef ROSEDEBUG_H
+#define ROSEDEBUG_H
+
+#include <string>
+#include <iostream>
+#include <kdebug.h>
+#include <kdeversion.h>
+
+#if KDE_VERSION < KDE_MAKE_VERSION(3,2,0)
+class QDateTime;
+class QDate;
+class QTime;
+class QPoint;
+class QSize;
+class QRect;
+class QRegion;
+class KURL;
+class QStringList;
+class QColor;
+class QPen;
+class QBrush;
+#endif
+
+namespace Rosegarden { class Event; class Segment; class RealTime; class Colour; namespace Guitar { class Chord; } }
+
+#define KDEBUG_AREA 200000
+#define KDEBUG_AREA_NOTATION 200001
+#define KDEBUG_AREA_MATRIX 200002
+#define KDEBUG_AREA_SEQUENCER 200003
+#define KDEBUG_AREA_SEQUENCEMANAGER 200004
+
+#define RG_DEBUG kdDebug(KDEBUG_AREA)
+#define NOTATION_DEBUG kdDebug(KDEBUG_AREA_NOTATION)
+#define MATRIX_DEBUG kdDebug(KDEBUG_AREA_MATRIX)
+#define SEQUENCER_DEBUG kdDebug(KDEBUG_AREA_SEQUENCER)
+#define SEQMAN_DEBUG kdDebug(KDEBUG_AREA_SEQUENCEMANAGER)
+
+#ifndef NDEBUG
+
+kdbgstream&
+operator<<(kdbgstream&, const std::string&);
+
+kdbgstream&
+operator<<(kdbgstream&, const Rosegarden::Event&);
+
+kdbgstream&
+operator<<(kdbgstream&, const Rosegarden::Segment&);
+
+kdbgstream&
+operator<<(kdbgstream&, const Rosegarden::RealTime&);
+
+kdbgstream&
+operator<<(kdbgstream&, const Rosegarden::Colour&);
+
+kdbgstream&
+operator<<(kdbgstream&, const Rosegarden::Guitar::Chord&);
+
+#else
+
+inline kndbgstream&
+operator<<(kndbgstream &s, const std::string&) { return s; }
+
+inline kndbgstream&
+operator<<(kndbgstream &s, const Rosegarden::Event&) { return s; }
+
+inline kndbgstream&
+operator<<(kndbgstream &s, const Rosegarden::Segment&) { return s; }
+
+inline kndbgstream&
+operator<<(kndbgstream &s, const Rosegarden::RealTime&) { return s; }
+
+inline kndbgstream&
+operator<<(kndbgstream &s, const Rosegarden::Colour&) { return s; }
+
+inline kndbgstream&
+operator<<(kndbgstream &s, const Rosegarden::Guitar::Chord&) { return s; }
+
+#endif
+
+#ifndef NO_TIMING
+
+#include <iostream>
+#include <ctime>
+
+#define START_TIMING \
+ clock_t dbgStart = clock();
+#define ELAPSED_TIME \
+ ((clock() - dbgStart) * 1000 / CLOCKS_PER_SEC)
+#define PRINT_ELAPSED(n) \
+ RG_DEBUG << n << ": " << ELAPSED_TIME << "ms elapsed" << endl;
+
+#else
+
+#define START_TIMING
+#define ELAPSED_TIME 0
+#define PRINT_ELAPSED(n)
+
+#endif
+
+
+
+
+// This doesn't work - keeping it just in case I somehow get it
+// working someday
+
+#ifdef NOT_DEFINED
+
+// can't be bothered to even get this to compile with gcc-3.0 at the
+// moment
+
+class kdbgostreamAdapter : public std::ostream
+{
+public:
+ kdbgostreamAdapter(kdbgstream &e) : m_kdbgStream(e) {}
+
+ std::ostream& operator<<(bool i);
+ std::ostream& operator<<(short i);
+ std::ostream& operator<<(unsigned short i);
+ std::ostream& operator<<(char i);
+ std::ostream& operator<<(unsigned char i);
+ std::ostream& operator<<(int i);
+ std::ostream& operator<<(unsigned int i);
+ std::ostream& operator<<(long i);
+ std::ostream& operator<<(unsigned long i);
+ std::ostream& operator<<(const QString& str);
+ std::ostream& operator<<(const char *str);
+ std::ostream& operator<<(const QCString& str);
+ std::ostream& operator<<(void * p);
+ std::ostream& operator<<(KDBGFUNC f);
+ std::ostream& operator<<(double d);
+
+ kdbgstream& dbgStream() { return m_kdbgStream; }
+
+protected:
+ kdbgstream &m_kdbgStream;
+};
+
+#endif
+
+// std::ostream& endl(std::ostream& s);
+
+void DBCheckThrow();
+
+
+#endif
diff --git a/src/misc/Strings.cpp b/src/misc/Strings.cpp
new file mode 100644
index 0000000..3c139dc
--- /dev/null
+++ b/src/misc/Strings.cpp
@@ -0,0 +1,110 @@
+// -*- c-basic-offset: 4 -*-
+/*
+ Rosegarden
+ A sequencer and musical notation editor.
+
+ This program is Copyright 2000-2008
+ Guillaume Laurent <glaurent@telegraph-road.org>,
+ Chris Cannam <cannam@all-day-breakfast.com>,
+ Richard Bown <bownie@bownie.com>
+
+ The moral right of the authors to claim authorship of this work
+ has been asserted.
+
+ 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. See the file
+ COPYING included with this distribution for more information.
+*/
+
+#include "Strings.h"
+#include "Strings.h"
+
+#include "base/Composition.h"
+#include "base/Segment.h"
+#include "base/Event.h"
+
+#include <qtextcodec.h>
+
+
+
+QString strtoqstr(const std::string &str)
+{
+ return QString::fromUtf8(str.c_str());
+}
+
+QString strtoqstr(const Rosegarden::PropertyName &p)
+{
+ return QString::fromUtf8(p.c_str());
+}
+
+std::string qstrtostr(const QString &qstr)
+{
+ return std::string(qstr.utf8().data());
+}
+
+/**
+ * Unlike strtod(3) or QString::toDouble(), this is locale-independent
+ * and always uses '.' as a decimal point. We use it when reading
+ * things like configuration values from XML files where we want to
+ * guarantee the same value is used regardless of surrounding locale.
+ */
+double strtodouble(const std::string &s)
+{
+ int dp = 0;
+ int sign = 1;
+ int i = 0;
+ double result = 0.0;
+ size_t len = s.length();
+
+ result = 0.0;
+
+ while (i < len && isspace(s[i]))
+ ++i;
+
+ if (i < len && s[i] == '-')
+ sign = -1;
+
+ while (i < len) {
+
+ char c = s[i];
+
+ if (isdigit(c)) {
+
+ double d = c - '0';
+
+ if (dp > 0) {
+ for (int p = dp; p > 0; --p)
+ d /= 10.0;
+ ++dp;
+ } else {
+ result *= 10.0;
+ }
+
+ result += d;
+
+ } else if (c == '.') {
+ dp = 1;
+ }
+
+ ++i;
+ }
+
+ return result * sign;
+}
+
+double qstrtodouble(const QString &s)
+{
+ return strtodouble(qstrtostr(s));
+}
+
+std::string
+convertFromCodec(std::string text, QTextCodec *codec)
+{
+ if (codec)
+ return qstrtostr(codec->toUnicode(text.c_str(), text.length()));
+ else
+ return text;
+}
+
diff --git a/src/misc/Strings.h b/src/misc/Strings.h
new file mode 100644
index 0000000..898a775
--- /dev/null
+++ b/src/misc/Strings.h
@@ -0,0 +1,38 @@
+// -*- c-basic-offset: 4 -*-
+/*
+ Rosegarden
+ A sequencer and musical notation editor.
+
+ This program is Copyright 2000-2008
+ Guillaume Laurent <glaurent@telegraph-road.org>,
+ Chris Cannam <cannam@all-day-breakfast.com>,
+ Richard Bown <bownie@bownie.com>
+
+ The moral right of the authors to claim authorship of this work
+ has been asserted.
+
+ 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. See the file
+ COPYING included with this distribution for more information.
+*/
+
+#ifndef _ROSE_STRINGS_H_
+#define _ROSE_STRINGS_H_
+
+#include <string>
+#include <qstring.h>
+#include "PropertyName.h"
+#include "Exception.h"
+
+extern QString strtoqstr(const std::string &);
+extern QString strtoqstr(const Rosegarden::PropertyName &);
+extern std::string qstrtostr(const QString &);
+extern double strtodouble(const std::string &);
+extern double qstrtodouble(const QString &);
+
+class QTextCodec;
+extern std::string convertFromCodec(std::string, QTextCodec *);
+
+#endif
diff --git a/src/misc/stableheaders.h b/src/misc/stableheaders.h
new file mode 100644
index 0000000..db6b86e
--- /dev/null
+++ b/src/misc/stableheaders.h
@@ -0,0 +1,208 @@
+#ifndef STABLEHEADERS_H_
+#define STABLEHEADERS_H_
+
+// Standard C++ library
+#include <algorithm>
+#include <cassert>
+#include <cctype>
+#include <cmath>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <ctime>
+#include <deque>
+#include <exception>
+#include <fstream>
+#include <iomanip>
+#include <ios>
+#include <iostream>
+#include <iterator>
+#include <list>
+#include <map>
+#include <set>
+#include <sstream>
+#include <stack>
+#include <string>
+#include <strstream>
+#include <utility>
+#include <vector>
+
+// QT3 headers
+
+// Common headers, or used by sources generated by moc
+#include <qmap.h>
+#include <qglobal.h>
+#include <private/qucomextra_p.h>
+#include <qmetaobject.h>
+#include <qobjectdefs.h>
+#include <qsignalslotimp.h>
+#include <qstyle.h>
+
+// Headers used by Rosegarden or KDE3
+#include <qaccel.h>
+#include <qapplication.h>
+#include <qbitmap.h>
+#include <qbrush.h>
+#include <qbuffer.h>
+#include <qbuttongroup.h>
+#include <qbutton.h>
+#include <qcanvas.h>
+#include <qcheckbox.h>
+#include <qcolor.h>
+#include <qcombobox.h>
+#include <qcstring.h>
+#include <qcursor.h>
+#include <qdatastream.h>
+#include <qdatetime.h>
+#include <qdialog.h>
+#include <qdict.h>
+#include <qdir.h>
+#include <qdom.h>
+#include <qdragobject.h>
+#include <qdrawutil.h>
+#include <qevent.h>
+#include <qeventloop.h>
+#include <qfile.h>
+#include <qfileinfo.h>
+#include <qfont.h>
+#include <qfontinfo.h>
+#include <qfontmetrics.h>
+#include <qframe.h>
+#include <qgarray.h>
+#include <qgrid.h>
+#include <qgroupbox.h>
+#include <qguardedptr.h>
+#include <qhbox.h>
+#include <qheader.h>
+#include <qiconset.h>
+#include <qimage.h>
+#include <qinputdialog.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qlistbox.h>
+#include <qlistview.h>
+#include <qmemarray.h>
+#include <qmutex.h>
+#include <qobject.h>
+#include <qobjectlist.h>
+#include <qpaintdevicemetrics.h>
+#include <qpainter.h>
+#include <qpalette.h>
+#include <qpen.h>
+#include <qpixmap.h>
+#include <qpointarray.h>
+#include <qpoint.h>
+#include <qpopupmenu.h>
+#include <qprinter.h>
+#include <qprogressdialog.h>
+#include <qptrdict.h>
+#include <qptrlist.h>
+#include <qpushbutton.h>
+#include <qradiobutton.h>
+#include <qrect.h>
+#include <qregexp.h>
+#include <qregion.h>
+#include <qscrollbar.h>
+#include <qscrollview.h>
+#include <qsessionmanager.h>
+#include <qsignalmapper.h>
+#include <qsize.h>
+#include <qsizepolicy.h>
+#include <qslider.h>
+#include <qsocketnotifier.h>
+#include <qspinbox.h>
+#include <qsplitter.h>
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qstrlist.h>
+#include <qtable.h>
+#include <qtabwidget.h>
+#include <qtextcodec.h>
+#include <qtextedit.h>
+#include <qtextstream.h>
+#include <qthread.h>
+#include <qtimer.h>
+#include <qtoolbutton.h>
+#include <qtooltip.h>
+#include <qvalidator.h>
+#include <qvaluelist.h>
+#include <qvaluevector.h>
+#include <qvariant.h>
+#include <qvbox.h>
+#include <qvgroupbox.h>
+#include <qwhatsthis.h>
+#include <qwidget.h>
+#include <qwidgetstack.h>
+#include <qwmatrix.h>
+#include <qxml.h>
+
+// KDE3 headers
+#include <dcopclient.h>
+#include <dcopobject.h>
+#include <dcopref.h>
+#include <kaboutdata.h>
+#include <kaccel.h>
+#include <kactioncollection.h>
+#include <kaction.h>
+#include <kapp.h>
+#include <kapplication.h>
+#include <karrowbutton.h>
+#include <kcmdlineargs.h>
+#include <kcolordialog.h>
+#include <kcombobox.h>
+#include <kcommand.h>
+#include <kcompletion.h>
+#include <kconfig.h>
+#include <kcursor.h>
+#include <kdcopactionproxy.h>
+#include <kdebug.h>
+#include <kdeversion.h>
+#include <kdialogbase.h>
+#include <kdialog.h>
+#include <kdiskfreesp.h>
+#include <kdockwidget.h>
+#include <kedittoolbar.h>
+#include <kfiledialog.h>
+#include <kfile.h>
+#include <kfilterdev.h>
+#include <kfontrequester.h>
+#include <kglobal.h>
+#include <kglobalsettings.h>
+#include <kiconloader.h>
+#include <kinputdialog.h>
+#include <kio/netaccess.h>
+#include <kkeydialog.h>
+#include <kled.h>
+#include <klineeditdlg.h>
+#include <klineedit.h>
+#include <klistview.h>
+#include <klocale.h>
+#include <kmainwindow.h>
+#include <kmessagebox.h>
+#include <kmimetype.h>
+#include <kpixmapeffect.h>
+#include <kpopupmenu.h>
+#include <kprinter.h>
+#include <kprocess.h>
+#include <kpushbutton.h>
+#include <ksqueezedtextlabel.h>
+#include <kstandarddirs.h>
+#include <kstatusbar.h>
+#include <kstdaccel.h>
+#include <kstdaction.h>
+#include <kstddirs.h>
+#include <ktabwidget.h>
+#include <ktempfile.h>
+#include <ktip.h>
+#include <ktoolbar.h>
+#include <kuniqueapplication.h>
+#include <kurl.h>
+#include <kxmlguiclient.h>
+#include <kxmlguifactory.h>
+
+#define private protected // fugly
+#include <kprogress.h>
+#undef private
+
+#endif /*STABLEHEADERS_H_*/