Revision: 7206
http://postbooks.svn.sourceforge.net/postbooks/?rev=7206&view=rev
Author: gilmoskowitz
Date: 2009-10-15 17:48:06 +0000 (Thu, 15 Oct 2009)
Log Message:
-----------
issue #8333 - expose more layout classes to scripting,
tweak wocluster to get warehouse id for scripting,
tweak usernamecluster script exposure, and disable some debugging code
Modified Paths:
--------------
xtuple/trunk/scriptapi/qactionproto.cpp
xtuple/trunk/scriptapi/qboxlayoutproto.cpp
xtuple/trunk/scriptapi/qgridlayoutproto.cpp
xtuple/trunk/scriptapi/qtexteditproto.cpp
xtuple/trunk/scriptapi/scriptapi.pro
xtuple/trunk/scriptapi/setupscriptapi.cpp
xtuple/trunk/widgets/usernameCluster.cpp
xtuple/trunk/widgets/usernamecluster.h
xtuple/trunk/widgets/woCluster.cpp
xtuple/trunk/widgets/wocluster.h
Added Paths:
-----------
xtuple/trunk/scriptapi/qlayoutitemproto.cpp
xtuple/trunk/scriptapi/qlayoutitemproto.h
xtuple/trunk/scriptapi/qsizepolicyproto.cpp
xtuple/trunk/scriptapi/qsizepolicyproto.h
xtuple/trunk/scriptapi/qspaceritemproto.cpp
xtuple/trunk/scriptapi/qspaceritemproto.h
Removed Paths:
-------------
xtuple/trunk/scriptapi/usernamelineeditsetup.cpp
xtuple/trunk/scriptapi/usernamelineeditsetup.h
Modified: xtuple/trunk/scriptapi/qactionproto.cpp
===================================================================
--- xtuple/trunk/scriptapi/qactionproto.cpp 2009-10-15 16:56:25 UTC (rev 7205)
+++ xtuple/trunk/scriptapi/qactionproto.cpp 2009-10-15 17:48:06 UTC (rev 7206)
@@ -15,7 +15,7 @@
#include <QIcon>
#include <QString>
-#define DEBUG true
+#define DEBUG false
QScriptValue QActiontoScriptValue(QScriptEngine *engine, QAction* const &item)
{
Modified: xtuple/trunk/scriptapi/qboxlayoutproto.cpp
===================================================================
--- xtuple/trunk/scriptapi/qboxlayoutproto.cpp 2009-10-15 16:56:25 UTC (rev 7205)
+++ xtuple/trunk/scriptapi/qboxlayoutproto.cpp 2009-10-15 17:48:06 UTC (rev 7206)
@@ -14,7 +14,7 @@
#include <QWidget>
#include <QtScript>
-#define DEBUG true
+#define DEBUG false
QScriptValue QBoxLayouttoScriptValue(QScriptEngine *engine, QBoxLayout* const &item)
{
Modified: xtuple/trunk/scriptapi/qgridlayoutproto.cpp
===================================================================
--- xtuple/trunk/scriptapi/qgridlayoutproto.cpp 2009-10-15 16:56:25 UTC (rev 7205)
+++ xtuple/trunk/scriptapi/qgridlayoutproto.cpp 2009-10-15 17:48:06 UTC (rev 7206)
@@ -13,7 +13,7 @@
#include <QString>
#include <QWidget>
-#define DEBUG true
+#define DEBUG false
QScriptValue QGridLayouttoScriptValue(QScriptEngine *engine, QGridLayout* const &item)
{
@@ -66,6 +66,9 @@
void QGridLayoutProto::addItem(QLayoutItem *item, int row, int column, int rowspan, int columnSpan, Qt::Alignment alignment)
{
QGridLayout *griditem = qscriptvalue_cast<QGridLayout*>(thisObject());
+ if (DEBUG)
+ qDebug("QGridLayoutProto(%p, %d, %d, %d, %d, %d) called",
+ item, row, column, rowspan, columnSpan, (int)alignment);
if (griditem)
griditem->addItem(item, row, column, rowspan, columnSpan, alignment);
}
Added: xtuple/trunk/scriptapi/qlayoutitemproto.cpp
===================================================================
--- xtuple/trunk/scriptapi/qlayoutitemproto.cpp (rev 0)
+++ xtuple/trunk/scriptapi/qlayoutitemproto.cpp 2009-10-15 17:48:06 UTC (rev 7206)
@@ -0,0 +1,173 @@
+/*
+ * This file is part of the xTuple ERP: PostBooks Edition, a free and
+ * open source Enterprise Resource Planning software suite,
+ * Copyright (c) 1999-2009 by OpenMFG LLC, d/b/a xTuple.
+ * It is licensed to you under the Common Public Attribution License
+ * version 1.0, the full text of which (including xTuple-specific Exhibits)
+ * is available at http://www.xtuple.com/CPAL. By using this software, you agree
+ * to be bound by its terms.
+ */
+
+#include "qlayoutitemproto.h"
+#include "qspaceritemproto.h"
+
+#define DEBUG false
+
+QScriptValue QLayoutItemtoScriptValue(QScriptEngine *engine, QLayoutItem* const &item)
+{
+ if (DEBUG) qDebug("QLayoutItemtoScriptValue(%p, %p) called", engine, item);
+ QScriptValue result = engine->newObject();
+ result.setData(engine->newVariant(qVariantFromValue(item)));
+ return result;
+}
+
+// TODO: why must we check for all possible value<> castings? this is fragile
+void QLayoutItemfromScriptValue(const QScriptValue &obj, QLayoutItem* &item)
+{
+ if (DEBUG) qDebug("QLayoutItemfromScriptValue(obj, %p) called", item);
+ item = obj.data().toVariant().value<QLayoutItem*>();
+ if (! item)
+ item = obj.data().toVariant().value<QSpacerItem*>();
+ if (DEBUG) qDebug("QLayoutItemfromScriptValue set %p", item);
+}
+
+void setupQLayoutItemProto(QScriptEngine *engine)
+{
+ qScriptRegisterMetaType(engine, QLayoutItemtoScriptValue, QLayoutItemfromScriptValue);
+
+ QScriptValue proto = engine->newQObject(new QLayoutItemProto(engine));
+ engine->setDefaultPrototype(qMetaTypeId<QLayoutItem*>(), proto);
+ if (DEBUG)
+ qDebug("setupQLayoutItemProto() returning");
+}
+
+QLayoutItemProto::QLayoutItemProto(QObject *parent)
+ : QObject(parent)
+{
+}
+
+Qt::Alignment QLayoutItemProto::alignment() const
+{
+ QLayoutItem *item = qscriptvalue_cast<QLayoutItem*>(thisObject());
+ if (item)
+ return item->alignment();
+ return (Qt::Alignment)0;
+}
+
+Qt::Orientations QLayoutItemProto::expandingDirections() const
+{
+ QLayoutItem *item = qscriptvalue_cast<QLayoutItem*>(thisObject());
+ if (item)
+ return item->expandingDirections();
+ return (Qt::Orientations)0;
+}
+
+QRect QLayoutItemProto::geometry() const
+{
+ QLayoutItem *item = qscriptvalue_cast<QLayoutItem*>(thisObject());
+ if (item)
+ return item->geometry();
+ return QRect();
+}
+
+bool QLayoutItemProto::hasHeightForWidth() const
+{
+ QLayoutItem *item = qscriptvalue_cast<QLayoutItem*>(thisObject());
+ if (item)
+ return item->hasHeightForWidth();
+ return false;
+}
+
+int QLayoutItemProto::heightForWidth(int w) const
+{
+ QLayoutItem *item = qscriptvalue_cast<QLayoutItem*>(thisObject());
+ if (item)
+ return item->heightForWidth(w);
+ return 0;
+}
+
+void QLayoutItemProto::invalidate()
+{
+ QLayoutItem *item = qscriptvalue_cast<QLayoutItem*>(thisObject());
+ if (item)
+ item->invalidate();
+}
+
+bool QLayoutItemProto::isEmpty() const
+{
+ QLayoutItem *item = qscriptvalue_cast<QLayoutItem*>(thisObject());
+ if (item)
+ return item->isEmpty();
+ return false;
+}
+
+QLayout *QLayoutItemProto::layout()
+{
+ QLayoutItem *item = qscriptvalue_cast<QLayoutItem*>(thisObject());
+ if (item)
+ return item->layout();
+ return 0;
+}
+
+QSize QLayoutItemProto::maximumSize() const
+{
+ QLayoutItem *item = qscriptvalue_cast<QLayoutItem*>(thisObject());
+ if (item)
+ return item->maximumSize();
+ return QSize();
+}
+
+int QLayoutItemProto::minimumHeightForWidth(int w) const
+{
+ QLayoutItem *item = qscriptvalue_cast<QLayoutItem*>(thisObject());
+ if (item)
+ return item->minimumHeightForWidth(w);
+ return 0;
+}
+
+QSize QLayoutItemProto::minimumSize() const
+{
+ QLayoutItem *item = qscriptvalue_cast<QLayoutItem*>(thisObject());
+ if (item)
+ return item->minimumSize();
+ return QSize();
+}
+
+void QLayoutItemProto::setAlignment(Qt::Alignment alignment)
+{
+ if (DEBUG) qDebug("QLayoutItemProto::setAlignment(%d)", (int)alignment);
+ QLayoutItem *item = qscriptvalue_cast<QLayoutItem*>(thisObject());
+ if (item)
+ item->setAlignment(alignment);
+}
+
+void QLayoutItemProto::setGeometry(const QRect &r)
+{
+ QLayoutItem *item = qscriptvalue_cast<QLayoutItem*>(thisObject());
+ if (item)
+ item->setGeometry(r);
+}
+
+QSize QLayoutItemProto::sizeHint() const
+{
+ QLayoutItem *item = qscriptvalue_cast<QLayoutItem*>(thisObject());
+ if (item)
+ return item->sizeHint();
+ return QSize();
+}
+
+QSpacerItem *QLayoutItemProto::spacerItem()
+{
+ QLayoutItem *item = qscriptvalue_cast<QLayoutItem*>(thisObject());
+ if (item)
+ return item->spacerItem();
+ return 0;
+}
+
+QWidget *QLayoutItemProto::widget()
+{
+ QLayoutItem *item = qscriptvalue_cast<QLayoutItem*>(thisObject());
+ if (item)
+ return item->widget();
+ return 0;
+}
Added: xtuple/trunk/scriptapi/qlayoutitemproto.h
===================================================================
--- xtuple/trunk/scriptapi/qlayoutitemproto.h (rev 0)
+++ xtuple/trunk/scriptapi/qlayoutitemproto.h 2009-10-15 17:48:06 UTC (rev 7206)
@@ -0,0 +1,51 @@
+/*
+ * This file is part of the xTuple ERP: PostBooks Edition, a free and
+ * open source Enterprise Resource Planning software suite,
+ * Copyright (c) 1999-2009 by OpenMFG LLC, d/b/a xTuple.
+ * It is licensed to you under the Common Public Attribution License
+ * version 1.0, the full text of which (including xTuple-specific Exhibits)
+ * is available at http://www.xtuple.com/CPAL. By using this software, you agree
+ * to be bound by its terms.
+ */
+
+#ifndef __QLAYOUTITEMPROTO_H__
+#define __QLAYOUTITEMPROTO_H__
+
+#include <QLayoutItem>
+#include <QObject>
+#include <QtScript>
+
+class QString;
+
+Q_DECLARE_METATYPE(QLayoutItem*)
+
+void setupQLayoutItemProto(QScriptEngine *engine);
+QScriptValue constructQLayoutItem(QScriptContext *context, QScriptEngine *engine);
+
+class QLayoutItemProto : public QObject, public QScriptable
+{
+ Q_OBJECT
+
+ public:
+ QLayoutItemProto(QObject *parent);
+
+ Q_INVOKABLE Qt::Alignment alignment() const;
+ QSizePolicy::ControlTypes controlTypes () const;
+ Q_INVOKABLE Qt::Orientations expandingDirections() const;
+ Q_INVOKABLE QRect geometry() const;
+ Q_INVOKABLE bool hasHeightForWidth() const;
+ Q_INVOKABLE int heightForWidth(int w) const;
+ Q_INVOKABLE void invalidate();
+ Q_INVOKABLE bool isEmpty() const;
+ Q_INVOKABLE QLayout *layout();
+ Q_INVOKABLE QSize maximumSize() const;
+ Q_INVOKABLE int minimumHeightForWidth(int w) const;
+ Q_INVOKABLE QSize minimumSize() const;
+ Q_INVOKABLE void setAlignment(Qt::Alignment alignment);
+ Q_INVOKABLE void setGeometry(const QRect &r);
+ Q_INVOKABLE QSize sizeHint() const;
+ Q_INVOKABLE QSpacerItem *spacerItem();
+ Q_INVOKABLE QWidget *widget();
+};
+
+#endif
Added: xtuple/trunk/scriptapi/qsizepolicyproto.cpp
===================================================================
--- xtuple/trunk/scriptapi/qsizepolicyproto.cpp (rev 0)
+++ xtuple/trunk/scriptapi/qsizepolicyproto.cpp 2009-10-15 17:48:06 UTC (rev 7206)
@@ -0,0 +1,68 @@
+/*
+ * This file is part of the xTuple ERP: PostBooks Edition, a free and
+ * open source Enterprise Resource Planning software suite,
+ * Copyright (c) 1999-2009 by OpenMFG LLC, d/b/a xTuple.
+ * It is licensed to you under the Common Public Attribution License
+ * version 1.0, the full text of which (including xTuple-specific Exhibits)
+ * is available at http://www.xtuple.com/CPAL. By using this software, you agree
+ * to be bound by its terms.
+ */
+
+#include "qsizepolicyproto.h"
+
+QScriptValue QSizePolicyControlTypetoScriptValue(QScriptEngine *engine, const enum QSizePolicy::ControlType &p)
+{ return QScriptValue(engine, (int)p); }
+
+void QSizePolicyControlTypefromScriptValue(const QScriptValue &obj, enum QSizePolicy::ControlType &p)
+{ p = (enum QSizePolicy::ControlType)obj.toInt32(); }
+
+QScriptValue QSizePolicyPolicytoScriptValue(QScriptEngine *engine, const enum QSizePolicy::Policy &p)
+{ return QScriptValue(engine, (int)p); }
+
+void QSizePolicyPolicyfromScriptValue(const QScriptValue &obj, enum QSizePolicy::Policy &p)
+{ p = (enum QSizePolicy::Policy)obj.toInt32(); }
+
+QScriptValue QSizePolicyPolicyFlagtoScriptValue(QScriptEngine *engine, const enum QSizePolicy::PolicyFlag &p)
+{ return QScriptValue(engine, (int)p); }
+
+void QSizePolicyPolicyFlagfromScriptValue(const QScriptValue &obj, enum QSizePolicy::PolicyFlag &p)
+{ p = (enum QSizePolicy::PolicyFlag)obj.toInt32(); }
+
+void setupQSizePolicy(QScriptEngine *engine)
+{
+ QScriptValue proto = engine->newObject();
+
+ //enum ControlType
+ proto.setProperty("DefaultType", QSizePolicy::DefaultType);
+ proto.setProperty("ButtonBox", QSizePolicy::ButtonBox);
+ proto.setProperty("CheckBox", QSizePolicy::CheckBox);
+ proto.setProperty("ComboBox", QSizePolicy::ComboBox);
+ proto.setProperty("Frame", QSizePolicy::Frame);
+ proto.setProperty("GroupBox", QSizePolicy::GroupBox);
+ proto.setProperty("Label", QSizePolicy::Label);
+ proto.setProperty("Line", QSizePolicy::Line);
+ proto.setProperty("LineEdit", QSizePolicy::LineEdit);
+ proto.setProperty("PushButton", QSizePolicy::PushButton);
+ proto.setProperty("RadioButton", QSizePolicy::RadioButton);
+ proto.setProperty("Slider", QSizePolicy::Slider);
+ proto.setProperty("SpinBox", QSizePolicy::SpinBox);
+ proto.setProperty("TabWidget", QSizePolicy::TabWidget);
+ proto.setProperty("ToolButton", QSizePolicy::ToolButton);
+
+ //enum Policy
+ proto.setProperty("Fixed", QSizePolicy::Fixed);
+ proto.setProperty("Minimum", QSizePolicy::Minimum);
+ proto.setProperty("Maximum", QSizePolicy::Maximum);
+ proto.setProperty("Preferred", QSizePolicy::Preferred);
+ proto.setProperty("Expanding", QSizePolicy::Expanding);
+ proto.setProperty("MinimumExpanding",QSizePolicy::MinimumExpanding);
+ proto.setProperty("Ignored", QSizePolicy::Ignored);
+
+ // enum PolicyFlag
+ proto.setProperty("GrowFlag", QSizePolicy::GrowFlag);
+ proto.setProperty("ExpandFlag", QSizePolicy::ExpandFlag);
+ proto.setProperty("ShrinkFlag", QSizePolicy::ShrinkFlag);
+ proto.setProperty("IgnoreFlag", QSizePolicy::IgnoreFlag);
+
+ engine->globalObject().setProperty("QSizePolicy", proto);
+}
Added: xtuple/trunk/scriptapi/qsizepolicyproto.h
===================================================================
--- xtuple/trunk/scriptapi/qsizepolicyproto.h (rev 0)
+++ xtuple/trunk/scriptapi/qsizepolicyproto.h 2009-10-15 17:48:06 UTC (rev 7206)
@@ -0,0 +1,24 @@
+/*
+ * This file is part of the xTuple ERP: PostBooks Edition, a free and
+ * open source Enterprise Resource Planning software suite,
+ * Copyright (c) 1999-2009 by OpenMFG LLC, d/b/a xTuple.
+ * It is licensed to you under the Common Public Attribution License
+ * version 1.0, the full text of which (including xTuple-specific Exhibits)
+ * is available at http://www.xtuple.com/CPAL. By using this software, you agree
+ * to be bound by its terms.
+ */
+
+#ifndef __QSIZEPOLICYPROTO_H__
+#define __QSIZEPOLICYPROTO_H__
+
+#include <QSizePolicy>
+#include <QObject>
+#include <QtScript>
+
+Q_DECLARE_METATYPE(enum QSizePolicy::ControlType)
+Q_DECLARE_METATYPE(enum QSizePolicy::Policy)
+Q_DECLARE_METATYPE(enum QSizePolicy::PolicyFlag)
+
+void setupQSizePolicy(QScriptEngine *engine);
+
+#endif
Added: xtuple/trunk/scriptapi/qspaceritemproto.cpp
===================================================================
--- xtuple/trunk/scriptapi/qspaceritemproto.cpp (rev 0)
+++ xtuple/trunk/scriptapi/qspaceritemproto.cpp 2009-10-15 17:48:06 UTC (rev 7206)
@@ -0,0 +1,220 @@
+/*
+ * This file is part of the xTuple ERP: PostBooks Edition, a free and
+ * open source Enterprise Resource Planning software suite,
+ * Copyright (c) 1999-2009 by OpenMFG LLC, d/b/a xTuple.
+ * It is licensed to you under the Common Public Attribution License
+ * version 1.0, the full text of which (including xTuple-specific Exhibits)
+ * is available at http://www.xtuple.com/CPAL. By using this software, you agree
+ * to be bound by its terms.
+ */
+
+#include "qspaceritemproto.h"
+
+#include "qsizepolicyproto.h"
+
+#define DEBUG false
+
+QScriptValue QSpacerItemtoScriptValue(QScriptEngine *engine, QSpacerItem* const &item)
+{
+ if (DEBUG) qDebug("QSpacerItemtoScriptValue(%p, %p) called", engine, item);
+ QScriptValue result = engine->newObject();
+ result.setData(engine->newVariant(qVariantFromValue(item)));
+ return result;
+}
+
+void QSpacerItemfromScriptValue(const QScriptValue &obj, QSpacerItem* &item)
+{
+ if (DEBUG) qDebug("QSpacerItemfromScriptValue(obj, %p) called", item);
+ item = obj.data().toVariant().value<QSpacerItem*>();
+ if (DEBUG) qDebug("QSpacerItemfromScriptValue set %p", item);
+}
+
+void setupQSpacerItem(QScriptEngine *engine)
+{
+ qScriptRegisterMetaType(engine, QSpacerItemtoScriptValue, QSpacerItemfromScriptValue);
+
+ QScriptValue proto = engine->newQObject(new QSpacerItemProto(engine));
+ engine->setDefaultPrototype(qMetaTypeId<QSpacerItem*>(), proto);
+
+ QScriptValue constructor = engine->newFunction(constructQSpacerItem, proto);
+ engine->globalObject().setProperty("QSpacerItem", constructor);
+}
+
+QScriptValue constructQSpacerItem(QScriptContext *context,
+ QScriptEngine *engine)
+{
+ if (DEBUG)
+ qDebug("constructQSpacerItem() called with %d args",
+ context->argumentCount());
+ QSpacerItem *obj = 0;
+
+ if (context->argumentCount() == 2 &&
+ context->argument(0).isNumber() &&
+ context->argument(1).isNumber())
+ obj = new QSpacerItem(context->argument(0).toInt32(),
+ context->argument(1).toInt32());
+
+ else if (context->argumentCount() == 3 &&
+ context->argument(0).isNumber() &&
+ context->argument(1).isNumber() &&
+ context->argument(2).isNumber())
+ obj = new QSpacerItem(context->argument(0).toInt32(),
+ context->argument(1).toInt32(),
+ qscriptvalue_cast<QSizePolicy::Policy>(context->argument(2)));
+
+ else if (context->argumentCount() == 4 &&
+ context->argument(0).isNumber() &&
+ context->argument(1).isNumber() &&
+ context->argument(2).isNumber() &&
+ context->argument(3).isNumber())
+ obj = new QSpacerItem(context->argument(0).toInt32(),
+ context->argument(1).toInt32(),
+ qscriptvalue_cast<QSizePolicy::Policy>(context->argument(2)),
+ qscriptvalue_cast<QSizePolicy::Policy>(context->argument(3)));
+
+ else
+ context->throwError(QScriptContext::UnknownError,
+ "could not find appropriate QSpacerItem constructor");
+
+ if (DEBUG)
+ qDebug("constructQSpacerItem() returning %p", obj);
+ return engine->toScriptValue(obj);
+}
+
+QSpacerItemProto::QSpacerItemProto(QObject *parent)
+ : QObject(parent)
+{
+}
+
+Qt::Alignment QSpacerItemProto::alignment() const
+{
+ QSpacerItem *item = qscriptvalue_cast<QSpacerItem*>(thisObject());
+ if (item)
+ return item->alignment();
+ return (Qt::Alignment)0;
+}
+
+void QSpacerItemProto::changeSize(int w, int h, QSizePolicy::Policy hPolicy, QSizePolicy::Policy vPolicy)
+{
+ QSpacerItem *item = qscriptvalue_cast<QSpacerItem*>(thisObject());
+ if (item)
+ item->changeSize(w, h, hPolicy, vPolicy);
+}
+
+Qt::Orientations QSpacerItemProto::expandingDirections() const
+{
+ QSpacerItem *item = qscriptvalue_cast<QSpacerItem*>(thisObject());
+ if (item)
+ return item->expandingDirections();
+ return (Qt::Orientations)0;
+}
+
+QRect QSpacerItemProto::geometry() const
+{
+ QSpacerItem *item = qscriptvalue_cast<QSpacerItem*>(thisObject());
+ if (item)
+ return item->geometry();
+ return QRect();
+}
+
+bool QSpacerItemProto::hasHeightForWidth() const
+{
+ QSpacerItem *item = qscriptvalue_cast<QSpacerItem*>(thisObject());
+ if (item)
+ return item->hasHeightForWidth();
+ return false;
+}
+
+int QSpacerItemProto::heightForWidth(int w) const
+{
+ QSpacerItem *item = qscriptvalue_cast<QSpacerItem*>(thisObject());
+ if (item)
+ return item->heightForWidth(w);
+ return 0;
+}
+
+void QSpacerItemProto::invalidate()
+{
+ QSpacerItem *item = qscriptvalue_cast<QSpacerItem*>(thisObject());
+ if (item)
+ item->invalidate();
+}
+
+bool QSpacerItemProto::isEmpty() const
+{
+ QSpacerItem *item = qscriptvalue_cast<QSpacerItem*>(thisObject());
+ if (item)
+ return item->isEmpty();
+ return false;
+}
+
+QLayout *QSpacerItemProto::layout()
+{
+ QSpacerItem *item = qscriptvalue_cast<QSpacerItem*>(thisObject());
+ if (item)
+ return item->layout();
+ return 0;
+}
+
+QSize QSpacerItemProto::maximumSize() const
+{
+ QSpacerItem *item = qscriptvalue_cast<QSpacerItem*>(thisObject());
+ if (item)
+ return item->maximumSize();
+ return QSize();
+}
+
+int QSpacerItemProto::minimumHeightForWidth(int w) const
+{
+ QSpacerItem *item = qscriptvalue_cast<QSpacerItem*>(thisObject());
+ if (item)
+ return item->minimumHeightForWidth(w);
+ return 0;
+}
+
+QSize QSpacerItemProto::minimumSize() const
+{
+ QSpacerItem *item = qscriptvalue_cast<QSpacerItem*>(thisObject());
+ if (item)
+ return item->minimumSize();
+ return QSize();
+}
+
+void QSpacerItemProto::setAlignment(Qt::Alignment alignment)
+{
+ if (DEBUG) qDebug("QSpacerItemProto::setAlignment(%d)", (int)alignment);
+ QSpacerItem *item = qscriptvalue_cast<QSpacerItem*>(thisObject());
+ if (item)
+ item->setAlignment(alignment);
+}
+
+void QSpacerItemProto::setGeometry(const QRect &r)
+{
+ QSpacerItem *item = qscriptvalue_cast<QSpacerItem*>(thisObject());
+ if (item)
+ item->setGeometry(r);
+}
+
+QSize QSpacerItemProto::sizeHint() const
+{
+ QSpacerItem *item = qscriptvalue_cast<QSpacerItem*>(thisObject());
+ if (item)
+ return item->sizeHint();
+ return QSize();
+}
+
+QSpacerItem *QSpacerItemProto::spacerItem()
+{
+ QSpacerItem *item = qscriptvalue_cast<QSpacerItem*>(thisObject());
+ if (item)
+ return item->spacerItem();
+ return 0;
+}
+
+QWidget *QSpacerItemProto::widget()
+{
+ QSpacerItem *item = qscriptvalue_cast<QSpacerItem*>(thisObject());
+ if (item)
+ return item->widget();
+ return 0;
+}
Added: xtuple/trunk/scriptapi/qspaceritemproto.h
===================================================================
--- xtuple/trunk/scriptapi/qspaceritemproto.h (rev 0)
+++ xtuple/trunk/scriptapi/qspaceritemproto.h 2009-10-15 17:48:06 UTC (rev 7206)
@@ -0,0 +1,52 @@
+/*
+ * This file is part of the xTuple ERP: PostBooks Edition, a free and
+ * open source Enterprise Resource Planning software suite,
+ * Copyright (c) 1999-2009 by OpenMFG LLC, d/b/a xTuple.
+ * It is licensed to you under the Common Public Attribution License
+ * version 1.0, the full text of which (including xTuple-specific Exhibits)
+ * is available at http://www.xtuple.com/CPAL. By using this software, you agree
+ * to be bound by its terms.
+ */
+
+#ifndef __QSPACERITEMPROTO_H__
+#define __QSPACERITEMPROTO_H__
+
+#include <QSpacerItem>
+#include <QObject>
+#include <QtScript>
+
+class QString;
+
+Q_DECLARE_METATYPE(QSpacerItem*)
+
+void setupQSpacerItem(QScriptEngine *engine);
+QScriptValue constructQSpacerItem(QScriptContext *context, QScriptEngine *engine);
+
+class QSpacerItemProto : public QObject, public QScriptable
+{
+ Q_OBJECT
+
+ public:
+ QSpacerItemProto(QObject *parent);
+
+ Q_INVOKABLE Qt::Alignment alignment() const;
+ Q_INVOKABLE void changeSize(int w, int h, QSizePolicy::Policy hPolicy = QSizePolicy::Minimum, QSizePolicy::Policy vPolicy = QSizePolicy::Minimum);
+ QSizePolicy::ControlTypes controlTypes () const;
+ Q_INVOKABLE Qt::Orientations expandingDirections() const;
+ Q_INVOKABLE QRect geometry() const;
+ Q_INVOKABLE bool hasHeightForWidth() const;
+ Q_INVOKABLE int heightForWidth(int w) const;
+ Q_INVOKABLE void invalidate();
+ Q_INVOKABLE bool isEmpty() const;
+ Q_INVOKABLE QLayout *layout();
+ Q_INVOKABLE QSize maximumSize() const;
+ Q_INVOKABLE int minimumHeightForWidth(int w) const;
+ Q_INVOKABLE QSize minimumSize() const;
+ Q_INVOKABLE void setAlignment(Qt::Alignment alignment);
+ Q_INVOKABLE void setGeometry(const QRect &r);
+ Q_INVOKABLE QSize sizeHint() const;
+ Q_INVOKABLE QSpacerItem *spacerItem();
+ Q_INVOKABLE QWidget *widget();
+};
+
+#endif
Modified: xtuple/trunk/scriptapi/qtexteditproto.cpp
===================================================================
--- xtuple/trunk/scriptapi/qtexteditproto.cpp 2009-10-15 16:56:25 UTC (rev 7205)
+++ xtuple/trunk/scriptapi/qtexteditproto.cpp 2009-10-15 17:48:06 UTC (rev 7206)
@@ -12,7 +12,7 @@
#include <QString>
-#define DEBUG true
+#define DEBUG false
void setupQTextEditProto(QScriptEngine *engine)
{
Modified: xtuple/trunk/scriptapi/scriptapi.pro
===================================================================
--- xtuple/trunk/scriptapi/scriptapi.pro 2009-10-15 16:56:25 UTC (rev 7205)
+++ xtuple/trunk/scriptapi/scriptapi.pro 2009-10-15 17:48:06 UTC (rev 7206)
@@ -47,11 +47,14 @@
qgridlayoutproto.h \
qiconproto.h \
qlayoutproto.h \
+ qlayoutitemproto.h \
qmenuproto.h \
qmessageboxsetup.h \
qnetworkreplyproto.h \
qnetworkrequestproto.h \
qprinterproto.h \
+ qsizepolicyproto.h \
+ qspaceritemproto.h \
qsqldatabaseproto.h \
qsqlerrorproto.h \
qsqlrecordproto.h \
@@ -90,7 +93,6 @@
shipmentclusterlineeditsetup.h \
solineeditsetup.h \
tolineeditsetup.h \
- usernamelineeditsetup.h \
vendorgroupsetup.h \
wcomboboxsetup.h \
womatlclustersetup.h \
@@ -126,12 +128,15 @@
qfontproto.cpp \
qgridlayoutproto.cpp \
qiconproto.cpp \
+ qlayoutitemproto.cpp \
qlayoutproto.cpp \
qmenuproto.cpp \
qmessageboxsetup.cpp \
qnetworkreplyproto.cpp \
qnetworkrequestproto.cpp \
qprinterproto.cpp \
+ qsizepolicyproto.cpp \
+ qspaceritemproto.cpp \
qsqldatabaseproto.cpp \
qsqlerrorproto.cpp \
qsqlrecordproto.cpp \
@@ -170,7 +175,6 @@
shipmentclusterlineeditsetup.cpp \
solineeditsetup.cpp \
tolineeditsetup.cpp \
- usernamelineeditsetup.cpp \
vendorgroupsetup.cpp \
wcomboboxsetup.cpp \
womatlclustersetup.cpp \
Modified: xtuple/trunk/scriptapi/setupscriptapi.cpp
===================================================================
--- xtuple/trunk/scriptapi/setupscriptapi.cpp 2009-10-15 16:56:25 UTC (rev 7205)
+++ xtuple/trunk/scriptapi/setupscriptapi.cpp 2009-10-15 17:48:06 UTC (rev 7206)
@@ -52,12 +52,15 @@
#include "qfontproto.h"
#include "qgridlayoutproto.h"
#include "qiconproto.h"
+#include "qlayoutitemproto.h"
#include "qlayoutproto.h"
#include "qmenuproto.h"
#include "qmessageboxsetup.h"
#include "qnetworkreplyproto.h"
#include "qnetworkrequestproto.h"
#include "qprinterproto.h"
+#include "qsizepolicyproto.h"
+#include "qspaceritemproto.h"
#include "qsqldatabaseproto.h"
#include "qsqlerrorproto.h"
#include "qsqlrecordproto.h"
@@ -79,7 +82,7 @@
#include "shipmentclusterlineeditsetup.h"
#include "solineeditsetup.h"
#include "tolineeditsetup.h"
-#include "usernamelineeditsetup.h"
+#include "usernamecluster.h"
#include "vendorgroupsetup.h"
#include "wcomboboxsetup.h"
#include "wocluster.h"
@@ -139,6 +142,7 @@
setupQFontProto(engine);
setupQGridLayoutProto(engine);
setupQIconProto(engine);
+ setupQLayoutItemProto(engine);
setupQLayoutProto(engine);
setupQMenuProto(engine);
setupQMessageBox(engine);
@@ -146,6 +150,8 @@
setupQNetworkReplyProto(engine);
setupQNetworkRequestProto(engine);
setupQPrinterProto(engine);
+ setupQSizePolicy(engine);
+ setupQSpacerItem(engine);
setupQSqlDatabaseProto(engine);
setupQSqlErrorProto(engine);
setupQSqlRecordProto(engine);
@@ -166,6 +172,7 @@
setupShipmentClusterLineEdit(engine);
setupSoLineEdit(engine);
setupToLineEdit(engine);
+ setupUsernameCluster(engine);
setupUsernameLineEdit(engine);
setupVendorGroup(engine);
setupWComboBox(engine);
Deleted: xtuple/trunk/scriptapi/usernamelineeditsetup.cpp
===================================================================
--- xtuple/trunk/scriptapi/usernamelineeditsetup.cpp 2009-10-15 16:56:25 UTC (rev 7205)
+++ xtuple/trunk/scriptapi/usernamelineeditsetup.cpp 2009-10-15 17:48:06 UTC (rev 7206)
@@ -1,23 +0,0 @@
-/*
- * This file is part of the xTuple ERP: PostBooks Edition, a free and
- * open source Enterprise Resource Planning software suite,
- * Copyright (c) 1999-2009 by OpenMFG LLC, d/b/a xTuple.
- * It is licensed to you under the Common Public Attribution License
- * version 1.0, the full text of which (including xTuple-specific Exhibits)
- * is available at http://www.xtuple.com/CPAL. By using this software, you agree
- * to be bound by its terms.
- */
-
-#include "usernamecluster.h"
-#include <QtScript>
-
-void setupUsernameLineEdit(QScriptEngine *engine)
-{
- QScriptValue widget = engine->newObject();
-
- widget.setProperty("UsersAll", QScriptValue(engine, UsernameLineEdit::UsersAll), QScriptValue::ReadOnly | QScriptValue::Undeletable);
- widget.setProperty("UsersActive", QScriptValue(engine, UsernameLineEdit::UsersActive), QScriptValue::ReadOnly | QScriptValue::Undeletable);
- widget.setProperty("UsersInactive",QScriptValue(engine, UsernameLineEdit::UsersInactive),QScriptValue::ReadOnly | QScriptValue::Undeletable);
-
- engine->globalObject().setProperty("UsernameLineEdit", widget, QScriptValue::ReadOnly | QScriptValue::Undeletable);
-}
Deleted: xtuple/trunk/scriptapi/usernamelineeditsetup.h
===================================================================
--- xtuple/trunk/scriptapi/usernamelineeditsetup.h 2009-10-15 16:56:25 UTC (rev 7205)
+++ xtuple/trunk/scriptapi/usernamelineeditsetup.h 2009-10-15 17:48:06 UTC (rev 7206)
@@ -1,16 +0,0 @@
-/*
- * This file is part of the xTuple ERP: PostBooks Edition, a free and
- * open source Enterprise Resource Planning software suite,
- * Copyright (c) 1999-2009 by OpenMFG LLC, d/b/a xTuple.
- * It is licensed to you under the Common Public Attribution License
- * version 1.0, the full text of which (including xTuple-specific Exhibits)
- * is available at http://www.xtuple.com/CPAL. By using this software, you agree
- * to be bound by its terms.
- */
-
-#ifndef __USERNAMELINEEDITSETUP_H__
-#define __USERNAMELINEEDITSETUP_H__
-
-void setupUsernameLineEdit(QScriptEngine *engine);
-
-#endif
Modified: xtuple/trunk/widgets/usernameCluster.cpp
===================================================================
--- xtuple/trunk/widgets/usernameCluster.cpp 2009-10-15 16:56:25 UTC (rev 7205)
+++ xtuple/trunk/widgets/usernameCluster.cpp 2009-10-15 17:48:06 UTC (rev 7206)
@@ -10,8 +10,8 @@
#include <QPushButton>
#include <QLabel>
-#include <QValidator>
#include <QHBoxLayout>
+#include <QtScript>
#include <parameter.h>
#include <xsqlquery.h>
@@ -184,3 +184,88 @@
_username->setUsername(pUsername);
}
+// script exposure ////////////////////////////////////////////////////////////
+
+QScriptValue UsernameLineEdittoScriptValue(QScriptEngine *engine, UsernameLineEdit* const &item)
+{
+ return engine->newQObject(item);
+}
+
+void UsernameLineEditfromScriptValue(const QScriptValue &obj, UsernameLineEdit* &item)
+{
+ item = qobject_cast<UsernameLineEdit*>(obj.toQObject());
+}
+
+QScriptValue constructUsernameLineEdit(QScriptContext *context,
+ QScriptEngine *engine)
+{
+ UsernameLineEdit *obj = 0;
+
+ if (context->argumentCount() == 1 &&
+ qscriptvalue_cast<QWidget*>(context->argument(0)))
+ obj = new UsernameLineEdit(qscriptvalue_cast<QWidget*>(context->argument(0)));
+
+ else if (context->argumentCount() >= 2 &&
+ qscriptvalue_cast<QWidget*>(context->argument(0)))
+ obj = new UsernameLineEdit(qscriptvalue_cast<QWidget*>(context->argument(0)),
+ qPrintable(context->argument(1).toString()));
+
+ else
+ context->throwError(QScriptContext::UnknownError,
+ "could not find an appropriate UsernameLineEdit constructor");
+
+ return engine->toScriptValue(obj);
+}
+
+void setupUsernameLineEdit(QScriptEngine *engine)
+{
+ qScriptRegisterMetaType(engine, UsernameLineEdittoScriptValue, UsernameLineEditfromScriptValue);
+
+ QScriptValue widget = engine->newFunction(constructUsernameLineEdit);
+
+ widget.setProperty("UsersAll", QScriptValue(engine, UsernameLineEdit::UsersAll), QScriptValue::ReadOnly | QScriptValue::Undeletable);
+ widget.setProperty("UsersActive", QScriptValue(engine, UsernameLineEdit::UsersActive), QScriptValue::ReadOnly | QScriptValue::Undeletable);
+ widget.setProperty("UsersInactive",QScriptValue(engine, UsernameLineEdit::UsersInactive),QScriptValue::ReadOnly | QScriptValue::Undeletable);
+
+ engine->globalObject().setProperty("UsernameLineEdit", widget, QScriptValue::ReadOnly | QScriptValue::Undeletable);
+}
+
+QScriptValue UsernameClustertoScriptValue(QScriptEngine *engine, UsernameCluster* const &item)
+{
+ return engine->newQObject(item);
+}
+
+void UsernameClusterfromScriptValue(const QScriptValue &obj, UsernameCluster* &item)
+{
+ item = qobject_cast<UsernameCluster*>(obj.toQObject());
+}
+
+QScriptValue constructUsernameCluster(QScriptContext *context,
+ QScriptEngine *engine)
+{
+ UsernameCluster *obj = 0;
+
+ if (context->argumentCount() == 1 &&
+ qscriptvalue_cast<QWidget*>(context->argument(0)))
+ obj = new UsernameCluster(qscriptvalue_cast<QWidget*>(context->argument(0)));
+
+ else if (context->argumentCount() >= 2 &&
+ qscriptvalue_cast<QWidget*>(context->argument(0)))
+ obj = new UsernameCluster(qscriptvalue_cast<QWidget*>(context->argument(0)),
+ qPrintable(context->argument(1).toString()));
+
+ else
+ context->throwError(QScriptContext::UnknownError,
+ "could not find an appropriate UsernameCluster constructor");
+
+ return engine->toScriptValue(obj);
+}
+
+void setupUsernameCluster(QScriptEngine *engine)
+{
+ qScriptRegisterMetaType(engine, UsernameClustertoScriptValue, UsernameClusterfromScriptValue);
+
+ QScriptValue widget = engine->newFunction(constructUsernameCluster);
+
+ engine->globalObject().setProperty("UsernameCluster", widget, QScriptValue::ReadOnly | QScriptValue::Undeletable);
+}
Modified: xtuple/trunk/widgets/usernamecluster.h
===================================================================
--- xtuple/trunk/widgets/usernamecluster.h 2009-10-15 16:56:25 UTC (rev 7205)
+++ xtuple/trunk/widgets/usernamecluster.h 2009-10-15 17:48:06 UTC (rev 7206)
@@ -17,9 +17,13 @@
class QLabel;
class QPushButton;
+class QScriptEngine;
class UsernameCluster;
+void setupUsernameLineEdit(QScriptEngine *engine);
+void setupUsernameCluster(QScriptEngine *engine);
+
class XTUPLEWIDGETS_EXPORT UsernameLineEdit : public XLineEdit
{
Q_OBJECT
@@ -35,11 +39,11 @@
UsersInactive
};
- inline enum Type type() const { return _type; }
- inline void setType(enum Type pType) { _type = pType; }
+ Q_INVOKABLE inline enum Type type() const { return _type; }
+ Q_INVOKABLE inline void setType(enum Type pType) { _type = pType; }
- int id();
- const QString & username();
+ Q_INVOKABLE int id();
+ Q_INVOKABLE const QString & username();
public slots:
void setId(int);
@@ -94,5 +98,7 @@
QLabel * _label;
};
+Q_DECLARE_METATYPE(UsernameLineEdit*)
+Q_DECLARE_METATYPE(UsernameCluster*)
+
#endif
-
Modified: xtuple/trunk/widgets/woCluster.cpp
===================================================================
--- xtuple/trunk/widgets/woCluster.cpp 2009-10-15 16:56:25 UTC (rev 7205)
+++ xtuple/trunk/widgets/woCluster.cpp 2009-10-15 17:48:06 UTC (rev 7206)
@@ -45,6 +45,7 @@
{
_woType = 0;
_warehouseid = -1;
+ _currentWarehouseid = -1;
_parsed = TRUE;
_useQuery = FALSE;
@@ -86,6 +87,7 @@
else
{
wo.prepare( "SELECT formatWONumber(wo_id) AS wonumber,"
+ " warehous_id,"
" warehous_code, item_id, item_number, uom_name,"
" item_descrip1, item_descrip2,"
" abs(wo_qtyord) AS wo_qtyord,"
@@ -109,7 +111,7 @@
" ELSE "
" 'D' "
" END AS method "
- "FROM wo, itemsite, item, warehous, uom "
+ "FROM wo, itemsite, item, whsinfo, uom "
"WHERE ((wo_itemsite_id=itemsite_id)"
" AND (itemsite_item_id=item_id)"
" AND (item_inv_uom_id=uom_id)"
@@ -136,6 +138,8 @@
_qtyOrdered = wo.value("wo_qtyord").toDouble();
_qtyReceived = wo.value("wo_qtyrcv").toDouble();
_method = wo.value("method").toString();
+ _currentWarehouseid = (wo.value("warehous_id").isNull())
+ ? -1 : wo.value("warehous_id").toInt();
emit newId(_id);
emit newItemid(wo.value("item_id").toInt());
@@ -158,6 +162,7 @@
{
_id = -1;
_valid = FALSE;
+ _currentWarehouseid = -1;
setText("");
@@ -895,4 +900,3 @@
{
m->addMapping(_itemNumber, _fieldName, "code", "currentDefault");
}
-
Modified: xtuple/trunk/widgets/wocluster.h
===================================================================
--- xtuple/trunk/widgets/wocluster.h 2009-10-15 16:56:25 UTC (rev 7205)
+++ xtuple/trunk/widgets/wocluster.h 2009-10-15 17:48:06 UTC (rev 7206)
@@ -57,17 +57,20 @@
Closed = 0x10
};
- inline void setQuery(const QString &pSql) { _sql = pSql; _useQuery = TRUE; }
- inline int type() const { return _woType; }
- inline void setType(int pWoType) { _woType = pWoType; }
- inline void setWarehouse(int pWarehouseid) { _warehouseid = pWarehouseid; }
- inline QString method() const { return _method; }
+ Q_INVOKABLE inline int currentWarehouse() const { return _currentWarehouseid; }
+ Q_INVOKABLE inline QString method() const { return _method; }
+ Q_INVOKABLE inline void setQuery(const QString &pSql) { _sql = pSql; _useQuery = TRUE; }
+ Q_INVOKABLE inline void setType(int pWoType) { _woType = pWoType; }
+ Q_INVOKABLE inline void setWarehouse(int pWarehouseid) { _warehouseid = pWarehouseid; }
+ Q_INVOKABLE inline int type() const { return _woType; }
+ Q_INVOKABLE inline int warehouse() const { return _warehouseid; }
public slots:
void setId(int);
void sParse();
private:
+ int _currentWarehouseid;
bool _useQuery;
QString _sql;
int _woType;
@@ -116,10 +119,11 @@
inline void setType(int pWoType) { _woNumber->_woType = pWoType; }
inline int type() const { return _woNumber->_woType; }
inline void setWarehouse(int pWarehouseid) { _woNumber->_warehouseid = pWarehouseid; }
+ Q_INVOKABLE inline int currentWarehouse() const { return _woNumber->currentWarehouse(); }
Q_INVOKABLE inline int id() const { return _woNumber->_id; }
Q_INVOKABLE inline bool isValid() const { return _woNumber->_valid; }
Q_INVOKABLE inline char status() const { return _woNumber->_status.toAscii(); }
- Q_INVOKABLE inline QString method() const { return _woNumber->method(); }
+ Q_INVOKABLE inline QString method() const { return _woNumber->method(); }
Q_INVOKABLE inline double qtyOrdered() const { return _woNumber->_qtyOrdered; }
Q_INVOKABLE inline double qtyReceived() const { return _woNumber->_qtyReceived; }
Q_INVOKABLE inline double qtyBalance() const
@@ -129,6 +133,7 @@
else
return (_woNumber->_qtyOrdered - _woNumber->_qtyReceived);
}
+ Q_INVOKABLE inline int warehouse() const { return _woNumber->warehouse(); }
public slots:
void setDataWidgetMap(XDataWidgetMapper* m);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|