Re: Freeze exception request: kde4libs 4.1.0-3
> Diff for that update?
It's pkg-kde svn commt r11881:
http://lists.alioth.debian.org/pipermail/pkg-kde-commits/2008-
August/011483.html
the patch 01_kross_version_11_r838337.diff is attached.
Modified: branches/kde4/packages/kdelibs/debian/changelog
===================================================================
--- branches/kde4/packages/kdelibs/debian/changelog 2008-08-08 20:40:48 UTC (rev 11880)
+++ branches/kde4/packages/kdelibs/debian/changelog 2008-08-08 20:52:08 UTC (rev 11881)
@@ -1,3 +1,12 @@
+kde4libs (4:4.1.0-3) UNRELEASED; urgency=low
+
+ +++ Changes by Fathi Boudra:
+
+ * Update kross to version 11 (r838337). Fix build of latest kdevplatform
+ and kdevelop4 (Closes: #491272).
+
+ -- Debian Qt/KDE Maintainers <debian-qt-kde at lists.debian.org> Fri, 08 Aug 2008 17:31:45 +0200
+
kde4libs (4:4.1.0-2) unstable; urgency=low
+++ Changes by Modestas Vainius:
Added: branches/kde4/packages/kdelibs/debian/patches/01_kross_version_11_r838337.diff
===================================================================
Modified: branches/kde4/packages/kdelibs/debian/patches/series
===================================================================
--- branches/kde4/packages/kdelibs/debian/patches/series 2008-08-08 20:40:48 UTC (rev 11880)
+++ branches/kde4/packages/kdelibs/debian/patches/series 2008-08-08 20:52:08 UTC (rev 11881)
@@ -1,3 +1,4 @@
+01_kross_version_11_r838337.diff
01_r840377_840379_unload_on_close.diff
02_41branch_link_interface_libraries.diff
08_add_debian_build_type.diff
> -2 isn't even unblocked and contains some more massive changes
> (dropping all symbol files!?)
most important changes on -2 can be found below. They aren't really massive
and not related to symbol files dropped.
> * Add 01_r840377_840379_unload_on_close.diff patch.
> Fixes a nasty bug which makes some KDE4 apps stay in memory when closed
> resulting into excessive memory usage after some time.
> * Replace unofficial 90 patch with the one taken from KDE 4.1 branch.
> (02_41branch_link_interface_libraries.diff). It is the version
> "supported" by upstream with some extra features. It does not seem to be
> much different from the previous 90_ patch.
> * Add 99_conservative_link_interface_libraries.diff which *adds* some
> more LINK_INTERFACE_LIBRARIES to reduce linking failures of third party
> applications. This patch surely does not break anything, it only adds more
> libraries which are eliminated by --as-needed in Debian packaging. However,
> it might help to link a random KDE4 3rd party application against our
> kde4libs.
--- a/kross/console/CMakeLists.txt
+++ b/kross/console/CMakeLists.txt
@@ -7,5 +7,5 @@
set(kross_SRCS main.cpp )
kde4_add_executable(kross ${kross_SRCS})
-target_link_libraries(kross ${KDE4_KDECORE_LIBS} krosscore )
+target_link_libraries(kross ${KDE4_KDEUI_LIBS} krosscore )
install(TARGETS kross DESTINATION ${BIN_INSTALL_DIR})
--- a/kross/core/CMakeLists.txt
+++ b/kross/core/CMakeLists.txt
@@ -15,6 +15,7 @@
set_target_properties(krosscore PROPERTIES VERSION ${GENERIC_LIB_VERSION}
SOVERSION ${GENERIC_LIB_SOVERSION} )
+
install(TARGETS krosscore ${INSTALL_TARGETS_DEFAULT_ARGS})
install(FILES
@@ -22,6 +23,7 @@
krossconfig.h
errorinterface.h
childreninterface.h
+ wrapperinterface.h
metatype.h
metafunction.h
interpreter.h
--- a/kross/core/krossconfig.h
+++ b/kross/core/krossconfig.h
@@ -58,7 +58,7 @@
// The version number of Kross. For example the interpreters use
// it do be sure there are linked against the correct core version
// and if the numbers don't match, the interpreter is not loaded.
- #define KROSS_VERSION 10
+ #define KROSS_VERSION 11
// The export macro for interpreter plugins.
#define KROSS_EXPORT_INTERPRETER( InterpreterImpl ) \
@@ -83,6 +83,7 @@
#define KROSS_JAVA_LIBRARY "libkrossjava"
#define KROSS_FALCON_LIBRARY "krossfalcon"
#define KROSS_QTSCRIPT_LIBRARY "krossqts"
+ #define KROSS_LUA_LIBRARY "kloss"
}
--- a/kross/core/manager.cpp
+++ b/kross/core/manager.cpp
@@ -58,6 +58,12 @@
/// The collection of \a Action instances.
ActionCollection* collection;
+
+ /// List with custom handlers for metatypes.
+ QHash<QByteArray, MetaTypeHandler*> wrappers;
+
+ /// Strict type handling enabled or disabled.
+ bool strictTypesEnabled;
};
}
@@ -118,6 +124,7 @@
, ChildrenInterface()
, d( new Private() )
{
+ d->strictTypesEnabled = true;
setObjectName("Kross");
d->collection = new ActionCollection("main");
@@ -198,6 +205,18 @@
}
#endif
+#ifdef KROSS_LUA_LIBRARY
+ if( void* funcPtr = loadLibrary(KROSS_LUA_LIBRARY, "krossinterpreter") ) {
+ d->interpreterinfos.insert("lua",
+ new InterpreterInfo("lua",
+ funcPtr, // library
+ "*.lua *.luac", // file filter-wildcard
+ QStringList() << "application/x-lua" // mimetypes
+ )
+ );
+ }
+#endif
+
// fill the list of supported interpreternames.
QHash<QString, InterpreterInfo*>::Iterator it( d->interpreterinfos.begin() );
for(; it != d->interpreterinfos.end(); ++it)
@@ -211,6 +230,7 @@
Manager::~Manager()
{
+ qDeleteAll(d->wrappers.values());
qDeleteAll(d->interpreterinfos.values());
qDeleteAll(d->modules.values());
delete d->collection;
@@ -366,4 +386,34 @@
return this->objects().keys();
}
+MetaTypeHandler* Manager::metaTypeHandler(const QByteArray& typeName) const
+{
+ return d->wrappers.contains(typeName) ? d->wrappers[typeName] : 0;
+}
+
+void Manager::registerMetaTypeHandler(const QByteArray& typeName, MetaTypeHandler::FunctionPtr* handler)
+{
+ d->wrappers.insert(typeName, new MetaTypeHandler(handler));
+}
+
+void Manager::registerMetaTypeHandler(const QByteArray& typeName, MetaTypeHandler::FunctionPtr2* handler)
+{
+ d->wrappers.insert(typeName, new MetaTypeHandler(handler));
+}
+
+void Manager::registerMetaTypeHandler(const QByteArray& typeName, MetaTypeHandler* handler)
+{
+ d->wrappers.insert(typeName, handler);
+}
+
+bool Manager::strictTypesEnabled() const
+{
+ return d->strictTypesEnabled;
+}
+
+void Manager::setStrictTypesEnabled(bool enabled)
+{
+ d->strictTypesEnabled = enabled;
+}
+
#include "manager.moc"
--- a/kross/core/manager.h
+++ b/kross/core/manager.h
@@ -28,6 +28,7 @@
#include "krossconfig.h"
#include "childreninterface.h"
+#include "metatype.h"
namespace Kross {
@@ -109,6 +110,72 @@
*/
ActionCollection* actionCollection() const;
+ /**
+ * \return the \a MetaTypeHandler instance for custom types
+ * of type \p typeName .
+ *
+ * \since 4.2
+ */
+ MetaTypeHandler* metaTypeHandler(const QByteArray& typeName) const;
+
+ /**
+ * Register a handler for custom types.
+ *
+ * See also the \a WrapperInterface class.
+ *
+ * \param typeName The custom type the handler should handle.
+ * \param handler Function that should be called to handle
+ * a custom type.
+ *
+ * \since 4.2
+ */
+ void registerMetaTypeHandler(const QByteArray& typeName, MetaTypeHandler::FunctionPtr* handler);
+
+ /**
+ * Register a handler for custom types.
+ *
+ * See also the \a WrapperInterface class.
+ *
+ * \param typeName The custom type the handler should handle.
+ * \param handler Function that should be called to handle
+ * a custom type.
+ *
+ * \since 4.2
+ */
+ void registerMetaTypeHandler(const QByteArray& typeName, MetaTypeHandler::FunctionPtr2* handler);
+
+ /**
+ * Register a handler for custom types.
+ *
+ * See also the \a WrapperInterface class.
+ *
+ * \param typeName The custom type the handler should handle.
+ * \param handler Function that should be called to handle
+ * a custom type.
+ *
+ * \since 4.2
+ */
+ void registerMetaTypeHandler(const QByteArray& typeName, MetaTypeHandler* handler);
+
+ /**
+ * Returns true if strict type handling is enabled.
+ *
+ * \since 4.2
+ */
+ bool strictTypesEnabled() const;
+
+ /**
+ * Enable more strict type handling. If enabled then scripting-backends don't
+ * handle unknown pointer-types where no MetaTypeHandler was registered for.
+ * If disabled, such unknown types will be reinterpret_cast to QObject* what
+ * allows to also handle unknown QObject's but will also result in a crash
+ * if the unknown type isn't a QObject. Per default strict type handling is
+ * enabled.
+ *
+ * \since 4.2
+ */
+ void setStrictTypesEnabled(bool enabled);
+
public Q_SLOTS:
/**
--- a/kross/core/metatype.h
+++ b/kross/core/metatype.h
@@ -129,6 +129,35 @@
bool m_owner;
};
+ /**
+ * Base class for metatype-handlers as used returned by
+ * the Kross::Manager::metaTypeHandler() method.
+ *
+ * \since 4.2
+ */
+ class KROSSCORE_EXPORT MetaTypeHandler
+ {
+ public:
+ typedef QVariant (FunctionPtr) (void*);
+ typedef QVariant (FunctionPtr2) (MetaTypeHandler* handler, void*);
+
+ explicit MetaTypeHandler() : m_func1(0), m_func2(0) {}
+ explicit MetaTypeHandler(FunctionPtr *func) : m_func1(func), m_func2(0) {}
+ explicit MetaTypeHandler(FunctionPtr2 *func) : m_func1(0), m_func2(func) {}
+ virtual ~MetaTypeHandler() {}
+
+ /**
+ * This got called by the scripting-backend if the type-handler
+ * is called to translate a void-star pointer to a QVariant.
+ */
+ virtual QVariant callHandler(void* ptr) {
+ return m_func1 ? m_func1(ptr) : m_func2 ? m_func2(this, ptr) : QVariant();
+ }
+
+ private:
+ FunctionPtr *m_func1;
+ FunctionPtr2 *m_func2;
+ };
}
#endif
--- /dev/null
+++ b/kross/core/wrapperinterface.h
@@ -0,0 +1,95 @@
+/***************************************************************************
+ * wrapperinterface.h
+ * This file is part of the KDE project
+ * copyright (C)2008 by Sebastian Sauer <mail@dipe.org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library 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
+ * Library General Public License for more details.
+ * You should have received a copy of the GNU Library General Public License
+ * along with this program; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ ***************************************************************************/
+
+#ifndef KROSS_WRAPPERINTERFACE_H
+#define KROSS_WRAPPERINTERFACE_H
+
+#include "krossconfig.h"
+
+namespace Kross {
+
+ /**
+ * Wrapper-class used to provide handlers for custom types.
+ *
+ * Custom types are types other then QObject*, QWidget* or one
+ * of the base types supported by QVariant. By using the
+ * Kross::registerMetaTypeHandler() method such custom handlers
+ * can be registered and used to either translate various
+ * types to a by QVariant supported type or by providing on
+ * the fly an own wrapper class that inherits from QObject
+ * and does provide access to the functionality of the
+ * wrapped custom type.
+ *
+ * Following sample demonstrates the usage by registering
+ * a handler for the type "TestObject*". Once such a type
+ * got returned by a C++ class, the handler got called. If
+ * we return a QObject that implements the WrapperInterface,
+ * what is not needed, then the wrappedObject() method will
+ * be used to translate the wrapper back to the wrapped
+ * object if a C++ function got called and the wrapper is
+ * passed as argument.
+ *
+ * \code
+ * // This is our wrapper class we are using to e.g. provide
+ * // additional functionality on the fly or to provide access
+ * // to a C++ type that does not inherit from QObject.
+ * class MyWrapper : public QObject, public Kross::WrapperInterface {
+ * public:
+ * MyWrapper(QObject* obj) : QObject(obj) {}
+ * void* wrappedObject() const { return parent(); }
+ * };
+ * // This function will be called by Kross if a type named
+ * // "TestObject*" got returned by a C++ method.
+ * QVariant TestObjectHandler(void* ptr)
+ * {
+ * TestObject* obj = static_cast<TestObject*>(ptr);
+ * MyWrapper* w = new MyWrapper(obj);
+ * QVariant r;
+ * r.setValue( (QObject*)w );
+ * return r;
+ * }
+ * // and somewhere else we finally register our function.
+ * Kross::Manager::self().registerMetaTypeHandler("TestObject*", TestObjectHandler);
+ * \endcode
+ *
+ * \since 4.2
+ */
+ class KROSSCORE_EXPORT WrapperInterface
+ {
+ public:
+
+ /**
+ * Destructor.
+ */
+ virtual ~WrapperInterface() {}
+
+ /**
+ * This method got called by Kross if the wrapper-instance
+ * got passed to a C++ slot. It is recommed to return here
+ * the wrapped instance, but you don't need to.
+ */
+ virtual void* wrappedObject() const = 0;
+
+ //void wrapperConstructed() {}
+ //void wrapperDestroyed() {}
+ };
+
+}
+
+#endif
--- a/kross/modules/form.cpp
+++ b/kross/modules/form.cpp
@@ -73,6 +73,23 @@
using namespace Kross;
/*********************************************************************************
+ * FormList
+ */
+
+FormListView::FormListView(QWidget* parent) : QListWidget(parent) {}
+FormListView::~FormListView() {}
+void FormListView::clear() { QListWidget::clear(); }
+void FormListView::remove(int index) { delete QListWidget::item(index); }
+void FormListView::addItem(const QString& text) { QListWidget::addItem(text); }
+int FormListView::count() { return QListWidget::count(); }
+int FormListView::current() { return QListWidget::currentRow(); }
+void FormListView::setCurrent(int row) { QListWidget::setCurrentRow(row); }
+QString FormListView::text(int row) {
+ QListWidgetItem *item = QListWidget::item(row);
+ return item ? item->text() : QString();
+}
+
+/*********************************************************************************
* FormDialog
*/
@@ -599,6 +616,14 @@
return widget;
}
+QWidget* FormModule::createListView(QWidget* parent)
+{
+ FormListView* widget = new FormListView(parent);
+ if( parent && parent->layout() )
+ parent->layout()->addWidget(widget);
+ return widget;
+}
+
QObject* FormModule::loadPart(QWidget* parent, const QString& name, const QUrl& url)
{
//name e.g. "libkghostview"
--- a/kross/modules/form.h
+++ b/kross/modules/form.h
@@ -22,6 +22,7 @@
#include <QtGui/QWidget>
#include <QtCore/QUrl>
+#include <QtGui/QListWidget>
#include <kpagedialog.h>
//#include <kfilewidget.h>
@@ -29,6 +30,25 @@
namespace Kross {
/**
+ * The FormListView class provides access to a ListView.
+ */
+ class FormListView : public QListWidget
+ {
+ Q_OBJECT
+ public:
+ explicit FormListView(QWidget* parent);
+ virtual ~FormListView();
+ public Q_SLOTS:
+ void clear();
+ void remove(int index);
+ void addItem(const QString& text);
+ int count();
+ int current();
+ void setCurrent(int row);
+ QString text(int row);
+ };
+
+ /**
* The FormFileWidget class provides access to a KFileWidget.
*/
class FormFileWidget : public QWidget
@@ -463,6 +483,15 @@
QWidget* createFileWidget(QWidget* parent, const QString& startDirOrVariable = QString());
/**
+ * Create and return a new \a FormListView instance.
+ *
+ * \param parent the parent QWidget the new \a FormListView instance
+ * is a child of.
+ * \return the new \a FormFileWidget instance or NULL.
+ */
+ QWidget* createListView(QWidget* parent);
+
+ /**
* Load and return a KPart component.
* \param parent The parent QWidget the KPart's widget will be child of.
* \param name The name of the KPart library like e.g. "libkhtmlpart".
--- a/kross/test/main.cpp
+++ b/kross/test/main.cpp
@@ -23,6 +23,7 @@
#include "../core/action.h"
#include "../core/interpreter.h"
#include "../core/manager.h"
+#include "../core/wrapperinterface.h"
// Qt
@@ -121,6 +122,16 @@
return ERROR_OK;
}
+QVariant OtherObjectHandler(void* ptr)
+{
+ OtherObject* obj = static_cast<OtherObject*>(ptr);
+ kDebug()<<"OtherObjectHandler objectName="<<(obj ? obj->objectName() : "NULL");
+ OtherObjectWrapper* wrapper = new OtherObjectWrapper(obj);
+ QVariant r;
+ r.setValue( (QObject*) wrapper );
+ return r;
+}
+
int main(int argc, char **argv)
{
int result = 0;
@@ -163,6 +174,8 @@
Kross::Manager::self().addObject( testobj1 );
Kross::Manager::self().addObject( testobj2 );
+ Kross::Manager::self().registerMetaTypeHandler("OtherObject*", OtherObjectHandler);
+
foreach(const QString &file, scriptfiles) {
result = runScriptFile(file);
if(result != ERROR_OK)
--- a/kross/test/testobject.cpp
+++ b/kross/test/testobject.cpp
@@ -34,6 +34,7 @@
setObjectName(name);
qRegisterMetaType<TestObject*>("TestObject");
+ //qRegisterMetaType< QList<TestObject*> >("QList<TestObject*>");
QTimer* timer = new QTimer(this);
timer->setObjectName("TestTimer");
@@ -245,10 +246,47 @@
TestObject* TestObject::func_testobject_qobject(QObject* obj)
{
TestObject* tobj = dynamic_cast<TestObject*>(obj);
- Q_ASSERT(tobj);
return tobj;
}
+void TestObject::func_void_testobjectlist(QList<TestObject*> l)
+{
+ kDebug() << "TestObject::func_void_testobjectlist " << l.count();
+ foreach(TestObject* obj, l)
+ kDebug() << " " << (obj ? obj->objectName() : "NULL");
+}
+
+QList<TestObject*> TestObject::func_testobjectlist_testobjectlist(QList<TestObject*> l)
+{
+ kDebug() << "TestObject::func_testobjectlist_testobjectlist " << l.count();
+ return l;
+}
+
+/*****************************************************************************************
+ * OtherObject
+ */
+
+OtherObject* TestObject::func_otherobject(const QByteArray& name)
+{
+ if( OtherObject* obj = findChild<OtherObject*>(name) )
+ return obj;
+ return new OtherObject(this, name);
+}
+
+OtherObject* TestObject::func_otherobject_otherobject(OtherObject* obj)
+{
+ return obj;
+}
+
+QList<OtherObject*> TestObject::func_otherobjectlist_otherobjectlist(QList<OtherObject*> l)
+{
+ return l;
+}
+
+/*****************************************************************************************
+ * TestThread
+ */
+
TestThread::TestThread(TestObject* parent, int steps, int msecs)
: QThread(parent)
, m_testobject(parent)
--- a/kross/test/testobject.h
+++ b/kross/test/testobject.h
@@ -47,8 +47,11 @@
#include "../core/action.h"
#include "../core/object.h"
+#include "../core/wrapperinterface.h"
-/// \internal
+class OtherObject;
+
+/// \internal class to test functionality within krosstest
class TestObject : public QObject
{
Q_OBJECT
@@ -105,6 +108,8 @@
public Q_SLOTS:
QObject* myself() { return this; }
+ TestObject* myself2() { return this; }
+ QList<TestObject*> myself3() { return QList<TestObject*>() << this; }
// return a TestThread instance.
QObject* createThread(int steps, int msecs, bool start = false);
@@ -186,12 +191,41 @@
void func_void_testobject(TestObject*);
TestObject* func_testobject_testobject(TestObject*);
TestObject* func_testobject_qobject(QObject*);
+ void func_void_testobjectlist(QList<TestObject*>);
+ QList<TestObject*> func_testobjectlist_testobjectlist(QList<TestObject*>);
+
+ // OtherObject
+ OtherObject* func_otherobject(const QByteArray& name);
+ OtherObject* func_otherobject_otherobject(OtherObject*);
+ QList<OtherObject*> func_otherobjectlist_otherobjectlist(QList<OtherObject*>);
+};
- //QObject* self() { return this; }
+/// \internal class used in TestObject to test functionality within krosstest
+class OtherObject : public QObject
+{
+ Q_OBJECT
+ public:
+ explicit OtherObject(TestObject* testobj, const QByteArray& name) : QObject(testobj) { setObjectName(name); }
+ public Q_SLOTS:
+ QObject* testObject() const { return parent(); }
+};
+
+/// \internal class used in a handler within krosstest to provide a OtherObject wrapper on demand
+class OtherObjectWrapper : public QObject, public Kross::WrapperInterface
+{
+ Q_OBJECT
+ public:
+ OtherObjectWrapper(QObject* obj) : QObject(obj) {
+ Q_ASSERT(obj);
+ setObjectName(QString("%1_wrapper").arg(obj->objectName()).toLatin1());
+ }
+ void* wrappedObject() const { return parent(); }
+ public Q_SLOTS:
+ QObject* parentObject() const { return parent(); }
};
/**
-* \internal class to test threading functionality.
+* \internal class to test threading functionality within krosstest.
*
* Following python code does provide a sample how this class
* may used to test the threading functionality.
--- a/kross/test/unittest.py
+++ b/kross/test/unittest.py
@@ -277,6 +277,22 @@
myclass = MyClass(s)
self.assert_( self.object1.call_krossobject_method(myclass, "myMethod") == s )
+ def testOtherObject(self):
+ otherobj1 = self.object1.func_otherobject("OtherObject1")
+ otherobj2 = self.object1.func_otherobject("OtherObject2")
+ #print "otherobj1=%s otherobj1.objectName=%s dir(otherobj1)=%s" % (otherobj1, otherobj1.objectName, dir(otherobj1))
+
+ self.assert_( otherobj1.objectName == "OtherObject1_wrapper" )
+ self.assert_( otherobj2.objectName == "OtherObject2_wrapper" )
+ self.assert_( otherobj1.parentObject().objectName == "OtherObject1" )
+ self.assert_( otherobj2.parentObject().objectName == "OtherObject2" )
+ self.assert_( self.object1.func_otherobject_otherobject(otherobj1).objectName == otherobj1.objectName )
+
+ l = self.object1.func_otherobjectlist_otherobjectlist( [otherobj1,otherobj2] )
+ self.assert_( len(l) == 2 )
+ self.assert_( l[0].objectName == "OtherObject1_wrapper" )
+ self.assert_( l[1].parentObject().objectName == "OtherObject2" )
+
print "__name__ = %s" % __name__
#print "__main__ = %s %s" % (__main__,dir(__main__))
#print "TestObject3.name = %s" % TestObject3.name()
--- a/kross/ui/model.cpp
+++ b/kross/ui/model.cpp
@@ -208,7 +208,7 @@
return item->action->icon();
} break;
case Qt::DisplayRole:
- return item->action->text().remove("&");
+ return item->action->text().remove('&');
case Qt::ToolTipRole: // fall through
case Qt::WhatsThisRole: {
if( d->mode & ToolTips ) {
--- a/kross/ui/view.cpp
+++ b/kross/ui/view.cpp
@@ -32,8 +32,6 @@
#include <QtGui/QHeaderView>
#include <QtGui/QTreeView>
#include <QtGui/QLabel>
-#include <QtGui/QLineEdit>
-#include <QtGui/QComboBox>
#include <kapplication.h>
//#include <kdeversion.h>
@@ -46,9 +44,11 @@
#include <kpagedialog.h>
#include <kaction.h>
#include <kactioncollection.h>
-#include <kurlrequester.h>
+#include <kcombobox.h>
#include <kicondialog.h>
#include <klocale.h>
+#include <klineedit.h>
+#include <kurlrequester.h>
//#include <ktar.h>
//#include <kio/netaccess.h>
@@ -88,11 +88,11 @@
return type == ActionType ? action->isEnabled() : collection->isEnabled();
}
- QLineEdit* nameedit;
- QLineEdit* textedit;
- QLineEdit* commentedit;
- QLineEdit* iconedit;
- QComboBox* interpreteredit;
+ KLineEdit* nameedit;
+ KLineEdit* textedit;
+ KLineEdit* commentedit;
+ KLineEdit* iconedit;
+ KComboBox* interpreteredit;
KUrlRequester* fileedit;
//QCheckBox* enabledcheckbox;
@@ -150,7 +150,7 @@
QLabel* namelabel = new QLabel(i18n("Name:"), w);
gridlayout->addWidget(namelabel, 0, 0);
- d->nameedit = new QLineEdit(w);
+ d->nameedit = new KLineEdit(w);
namelabel->setBuddy(d->nameedit);
d->nameedit->setText( d->name() );
d->nameedit->setEnabled(false);
@@ -158,14 +158,14 @@
QLabel* textlabel = new QLabel(i18n("Text:"), w);
gridlayout->addWidget(textlabel, 1, 0);
- d->textedit = new QLineEdit(w);
+ d->textedit = new KLineEdit(w);
textlabel->setBuddy(d->textedit);
d->textedit->setText( d->text() );
gridlayout->addWidget(d->textedit, 1, 1);
QLabel* commentlabel = new QLabel(i18n("Comment:"), w);
gridlayout->addWidget(commentlabel, 2, 0);
- d->commentedit = new QLineEdit(w);
+ d->commentedit = new KLineEdit(w);
commentlabel->setBuddy(d->commentedit);
d->commentedit->setText( d->description() );
gridlayout->addWidget(d->commentedit, 2, 1);
@@ -176,7 +176,7 @@
QHBoxLayout* iconlayout = new QHBoxLayout();
iconlayout->setMargin(0);
iconbox->setLayout(iconlayout);
- d->iconedit = new QLineEdit(iconbox);
+ d->iconedit = new KLineEdit(iconbox);
iconlabel->setBuddy(d->iconedit);
d->iconedit->setText( d->iconName() );
iconlayout->addWidget(d->iconedit, 1);
@@ -193,7 +193,7 @@
if( d->type == Private::ActionType ) {
QLabel* interpreterlabel = new QLabel(i18n("Interpreter:"), w);
gridlayout->addWidget(interpreterlabel, 4, 0);
- d->interpreteredit = new QComboBox(w);
+ d->interpreteredit = new KComboBox(w);
interpreterlabel->setBuddy(d->interpreteredit);
d->interpreteredit->setMaxVisibleItems(10);
d->interpreteredit->insertItems(0, Manager::self().interpreters());
--- a/kross/ui/view.h
+++ b/kross/ui/view.h
@@ -31,7 +31,7 @@
#include <kdialog.h>
-class QLineEdit;
+class KLineEdit;
class QComboBox;
class QItemSelection;
class KActionCollection;
Reply to: