aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/modules/objects/class_button.cpp1
-rw-r--r--src/modules/objects/class_datetimeedit.cpp93
-rw-r--r--src/modules/objects/class_datetimeedit.h8
-rw-r--r--src/modules/objects/class_lineedit.cpp91
-rw-r--r--src/modules/objects/class_lineedit.h9
-rw-r--r--src/modules/objects/class_painter.cpp103
6 files changed, 221 insertions, 84 deletions
diff --git a/src/modules/objects/class_button.cpp b/src/modules/objects/class_button.cpp
index b4f450fed..282e3521c 100644
--- a/src/modules/objects/class_button.cpp
+++ b/src/modules/objects/class_button.cpp
@@ -64,6 +64,7 @@
@properties:
!pr: $scaledContents()
This property holds whether the label will scale its contents to fill all available space.
+
*/
diff --git a/src/modules/objects/class_datetimeedit.cpp b/src/modules/objects/class_datetimeedit.cpp
index 12d84005e..037b8e474 100644
--- a/src/modules/objects/class_datetimeedit.cpp
+++ b/src/modules/objects/class_datetimeedit.cpp
@@ -59,10 +59,10 @@
KVSO_BEGIN_REGISTERCLASS(KviKvsObject_datetimeedit,"datetimeedit","widget")
KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_datetimeedit,date)
- /*KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_datetimeedit,text)
- KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_datetimeedit,clickEvent)
- KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_datetimeedit,setImage)
-*/
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_datetimeedit,setDate)
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_datetimeedit,setTime)
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_datetimeedit,time)
+
KVSO_END_REGISTERCLASS(KviKvsObject_datetimeedit)
KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_datetimeedit,KviKvsObject_widget)
@@ -79,7 +79,6 @@ bool KviKvsObject_datetimeedit::init(KviKvsRunTimeContext *,KviKvsVariantList *)
QDateTimeEdit *obj=new QDateTimeEdit(QDate::currentDate(),parentScriptWidget());
obj->setObjectName(getName());
setObject(obj,true);
-// connect(widget(),SIGNAL(clicked()),this,SLOT(slotClicked()));
return true;
}
@@ -96,63 +95,47 @@ KVSO_CLASS_FUNCTION(datetimeedit,date)
return true;
}
-/*
-KVSO_CLASS_FUNCTION(button,setText)
+KVSO_CLASS_FUNCTION(datetimeedit,setDate)
{
- CHECK_INTERNAL_POINTER(widget())
- QString szText;
- KVSO_PARAMETERS_BEGIN(c)
- KVSO_PARAMETER("text",KVS_PT_STRING,0,szText)
- KVSO_PARAMETERS_END(c)
- ((QPushButton *)widget())->setText(szText);
- return true;
-}
-KVSO_CLASS_FUNCTION(datetimeedit,setImage)
-{
- CHECK_INTERNAL_POINTER(widget())
- KviKvsVariant icon;
- KVSO_PARAMETERS_BEGIN(c)
- KVSO_PARAMETER("icon_or_hobject",KVS_PT_VARIANT,0,icon)
- KVSO_PARAMETERS_END(c)
- if(icon.isHObject())
- {
- kvs_hobject_t hObj;
- icon.asHObject(hObj);
- KviKvsObject *pObject=KviKvsKernel::instance()->objectController()->lookupObject(hObj);
- if (!pObject)
- {
- c->warning(__tr2qs_ctx("Pixmap parameter is not an object!","objects"));
- return true;
- }
- if(pObject->inheritsClass("pixmap"))
- ((QPushButton *)widget())->setIcon(QIcon(*((KviKvsObject_pixmap *)pObject)->getPixmap()));
- else{
- c->warning(__tr2qs_ctx("Object Pixmap required!","object"));
- }
- return true;
- }
- QString szIcon;
- icon.asString(szIcon);
- QPixmap * pix = g_pIconManager->getImage(szIcon);
- if(pix) ((QPushButton *)widget())->setIcon(*pix);
- else((QPushButton *)widget())->setIcon(QIcon());
- return true;
+ CHECK_INTERNAL_POINTER(widget())
+ QString szFormat,szDate;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("format",KVS_PT_STRING,0,szFormat)
+ KVSO_PARAMETER("date",KVS_PT_STRING,0,szDate)
+ KVSO_PARAMETERS_END(c)
+ QDate date;
+ date=date.fromString(szDate,szFormat);
+ ((QDateTimeEdit *)widget())->setDate(date);
+ return true;
}
-KVSO_CLASS_FUNCTION(button,clickEvent)
+KVSO_CLASS_FUNCTION(datetimeedit,time)
{
- emitSignal("clicked",c);
- return true;
-}
-// slots
-void KviKvsObject_datetimeedit::slotClicked()
-{
- KviKvsVariantList *params=0;
- callFunction(this,"clickEvent",params);
+ CHECK_INTERNAL_POINTER(widget())
+ QString szFormat;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("format",KVS_PT_STRING,0,szFormat)
+ KVSO_PARAMETERS_END(c)
+
+ c->returnValue()->setString(((QDateTimeEdit *)widget())->time().toString(szFormat));
+
+ return true;
}
-*/
+KVSO_CLASS_FUNCTION(datetimeedit,setTime)
+{
+ CHECK_INTERNAL_POINTER(widget())
+ QString szFormat,szTime;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("format",KVS_PT_STRING,0,szFormat)
+ KVSO_PARAMETER("date",KVS_PT_STRING,0,szTime)
+ KVSO_PARAMETERS_END(c)
+ QTime time;
+ time=time.fromString(szTime,szFormat);
+ ((QDateTimeEdit *)widget())->setTime(time);
+ return true;
+}
#ifndef COMPILE_USE_STANDALONE_MOC_SOURCES
#include "m_class_datetimeedit.moc"
#endif //COMPILE_USE_STANDALONE_MOC_SOURCES
diff --git a/src/modules/objects/class_datetimeedit.h b/src/modules/objects/class_datetimeedit.h
index 6d15beef8..9f8fbbeec 100644
--- a/src/modules/objects/class_datetimeedit.h
+++ b/src/modules/objects/class_datetimeedit.h
@@ -40,8 +40,12 @@ public:
protected:
virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
- bool date(KviKvsObjectFunctionCall *c);
-/* bool text(KviKvsObjectFunctionCall *c);
+ bool date(KviKvsObjectFunctionCall *c);
+ bool setDate(KviKvsObjectFunctionCall *c);
+ bool time(KviKvsObjectFunctionCall *c);
+ bool setTime(KviKvsObjectFunctionCall *c);
+
+ /* bool text(KviKvsObjectFunctionCall *c);
bool setImage(KviKvsObjectFunctionCall *c);
bool clickEvent(KviKvsObjectFunctionCall *c);
diff --git a/src/modules/objects/class_lineedit.cpp b/src/modules/objects/class_lineedit.cpp
index 16dc14a7f..4c9e65ea9 100644
--- a/src/modules/objects/class_lineedit.cpp
+++ b/src/modules/objects/class_lineedit.cpp
@@ -29,6 +29,7 @@
#include "class_lineedit.h"
#include <QRegExpValidator>
#include <QLineEdit>
+#include <QCompleter>
static const char * mode_tbl[] = {
"Normal",
"NoEcho",
@@ -133,10 +134,10 @@ static const int mode_cod[] = {
Sets the validation input mask to inputMask.[br]
Example:[br]
[br]
- %esempio->$setInputMask( "+99 99 99 99 99;_" );[br]
- %esempio->$setInputMask( "000.000.000.000;_" );[br]
- %esempio->Ip Number Mask.[br]
- %esempio->setInputMask( ">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#" );[br]
+ %ledit_example->$setInputMask( "+99 99 99 99 99;_" );[br]
+ %ledit_example->$setInputMask( "000.000.000.000;_" );[br]
+ %ledit_example->Ip Number Mask.[br]
+ %ledit_example->setInputMask( ">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#" );[br]
[br]
The mask format understands these mask characters:[br]
Character Meaning[br]
@@ -165,6 +166,18 @@ static const int mode_cod[] = {
Called when the lineedit lost focus.
!fn: $textChangedEvent(<new text:string>)
This event is called when the text changed, In $0 there is the new text.
+ !fn: $setCompleter(<completion_mode:string>,<items:stringlist>)
+ Provides completions based on an stringlist.
+ Valid completion_mode are:
+ PopupCompletion: Current completions are displayed in a popup below the lineedit.
+ UnfilteredPopupCompletion: All possible completions are displayed in a popup window with the most likely suggestion selected.
+ InlineCompletion: Completions appear as selected text.
+ !fn: $disableCompleter()
+ Disable temporally the completer.
+ !fn: $enableCompleter()
+ Enable the completer.
+ !fn: $removeCompleter()
+ Remove the completer.
@signals:
!sg: $returnPressed()
This signal is emitted by the default implementation of [classfnc]$returnPressedEvent[/classfnc]().
@@ -181,6 +194,13 @@ KVSO_BEGIN_REGISTERCLASS(KviKvsObject_lineedit,"lineedit","widget")
KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_lineedit,text)
KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_lineedit,setText)
+
+ // completer
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_lineedit,setCompleter)
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_lineedit,enableCompleter)
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_lineedit,disableCompleter)
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_lineedit,unsetCompleter)
+
KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_lineedit,maxLength)
KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_lineedit,setMaxLength)
KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_lineedit,frame)
@@ -208,18 +228,22 @@ KVSO_END_REGISTERCLASS(KviKvsObject_lineedit)
KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_lineedit,KviKvsObject_widget)
-
+m_pCompleter=0;
KVSO_END_CONSTRUCTOR(KviKvsObject_lineedit)
-
KVSO_BEGIN_DESTRUCTOR(KviKvsObject_lineedit)
-
+if (m_pCompleter)
+{
+ delete m_pCompleter;
+ m_pCompleter=0;
+}
KVSO_END_CONSTRUCTOR(KviKvsObject_lineedit)
bool KviKvsObject_lineedit::init(KviKvsRunTimeContext *,KviKvsVariantList *)
{
SET_OBJECT(QLineEdit)
+
connect(widget(),SIGNAL(returnPressed()),this,SLOT(slotreturnPressed()));
connect(widget(),SIGNAL(lostFocus()),this,SLOT(slotlostFocus()));
connect(widget(),SIGNAL(textChanged(const QString & )),this,SLOT(slottextChanged(const QString & )));
@@ -262,8 +286,8 @@ KVSO_CLASS_FUNCTION(lineedit,maxLength)
KVSO_CLASS_FUNCTION(lineedit,setMaxLength)
{
- CHECK_INTERNAL_POINTER(widget())
- kvs_uint_t iMaxlen;
+ CHECK_INTERNAL_POINTER(widget())
+ kvs_uint_t iMaxlen;
KVSO_PARAMETERS_BEGIN(c)
KVSO_PARAMETER("maxlen",KVS_PT_UNSIGNEDINTEGER,0,iMaxlen)
KVSO_PARAMETERS_END(c)
@@ -425,6 +449,54 @@ KVSO_CLASS_FUNCTION(lineedit,setInputMask)
return true;
}
+KVSO_CLASS_FUNCTION(lineedit,setCompleter)
+{
+ CHECK_INTERNAL_POINTER(widget())
+ QStringList szCompletionList;
+ QString szMode;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("mode",KVS_PT_STRING,KVS_PF_OPTIONAL,szMode)
+ KVSO_PARAMETER("completion_list",KVS_PT_STRINGLIST,0,szCompletionList)
+ KVSO_PARAMETERS_END(c)
+ if(m_pCompleter)
+ {
+ delete m_pCompleter;
+
+ }
+ m_pCompleter=new QCompleter(szCompletionList);
+ QCompleter::CompletionMode mode=QCompleter::PopupCompletion;
+ if(KviQString::equalCI(szMode,"InlineCompletion")) mode=QCompleter::InlineCompletion;
+ else if(KviQString::equalCI(szMode,"UnfilteredPopupCompletion")) mode=QCompleter::UnfilteredPopupCompletion;
+ else if(!KviQString::equalCI(szMode,"PopupCompletion"))
+ c->warning(__tr2qs_ctx("Unkonwn '%Q' completition mode, switching to default popupCompletition","objects"),&szMode);
+ m_pCompleter->setCompletionMode(mode);
+ ((QLineEdit *)widget())->setCompleter(m_pCompleter);
+ return true;
+}
+KVSO_CLASS_FUNCTION(lineedit,enableCompleter)
+{
+ CHECK_INTERNAL_POINTER(widget())
+ if (m_pCompleter) ((QLineEdit *)widget())->setCompleter(m_pCompleter);
+ return true;
+}
+KVSO_CLASS_FUNCTION(lineedit,disableCompleter)
+{
+ CHECK_INTERNAL_POINTER(widget())
+ ((QLineEdit *)widget())->setCompleter(0);
+ return true;
+}
+KVSO_CLASS_FUNCTION(lineedit,unsetCompleter)
+{
+ CHECK_INTERNAL_POINTER(widget())
+ if (m_pCompleter){
+ ((QLineEdit *)widget())->setCompleter(0);
+ delete m_pCompleter;
+ m_pCompleter=0;
+ }
+ return true;
+}
+
+
KVSO_CLASS_FUNCTION(lineedit,returnPressedEvent)
{
emitSignal("returnPressed",c);
@@ -464,6 +536,7 @@ void KviKvsObject_lineedit::slottextChanged(const QString &text)
}
+
#ifndef COMPILE_USE_STANDALONE_MOC_SOURCES
#include "m_class_lineedit.moc"
#endif //!COMPILE_USE_STANDALONE_MOC_SOURCES
diff --git a/src/modules/objects/class_lineedit.h b/src/modules/objects/class_lineedit.h
index ab19251f0..c59c31268 100644
--- a/src/modules/objects/class_lineedit.h
+++ b/src/modules/objects/class_lineedit.h
@@ -30,7 +30,7 @@
#include "class_widget.h"
//#warning "Signals !"
-
+#include <QCompleter>
#include "object_macros.h"
class KviKvsObject_lineedit : public KviKvsObject_widget
@@ -41,9 +41,14 @@ public:
public:
QWidget * widget() { return (QWidget *)object(); };
protected:
+ QCompleter * m_pCompleter;
+protected:
virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
-
+ bool setCompleter(KviKvsObjectFunctionCall *c);
+ bool enableCompleter(KviKvsObjectFunctionCall *c);
+ bool disableCompleter(KviKvsObjectFunctionCall *c);
+ bool unsetCompleter(KviKvsObjectFunctionCall *c);
bool text(KviKvsObjectFunctionCall *c);
bool setText(KviKvsObjectFunctionCall *c);
diff --git a/src/modules/objects/class_painter.cpp b/src/modules/objects/class_painter.cpp
index 5991585ee..df12d24a6 100644
--- a/src/modules/objects/class_painter.cpp
+++ b/src/modules/objects/class_painter.cpp
@@ -33,7 +33,7 @@
#include "kvi_error.h"
#include "kvi_iconmanager.h"
#include "kvi_malloc.h"
-
+ #include <QPrintDialog>
#include <QTextDocument>
#include <QIcon>
@@ -1028,24 +1028,81 @@ KVSO_CLASS_FUNCTION(painter,begin)
CHECK_INTERNAL_POINTER(m_pPainter)
KviKvsObject * pObject;
kvs_hobject_t hObject;
+ KviKvsVariant *v;
+ QString szFileName;
+ kvs_int_t i;
KVSO_PARAMETERS_BEGIN(c)
- KVSO_PARAMETER("paint_device",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETER("paint_device",KVS_PT_VARIANT,0,v)
+ KVSO_PARAMETER("y",KVS_PT_INT,KVS_PF_OPTIONAL,i)
+ KVSO_PARAMETER("file_name",KVS_PT_STRING,KVS_PF_OPTIONAL,szFileName)
KVSO_PARAMETERS_END(c)
- pObject=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
- if (!pObject)
- {
+ debug ("check device");
+ QPaintDevice * pd;
+ if(v->isString())
+ {
+ QString szDev;
+ v->asString(szDev);
+ if(KviQString::equalCI(szDev,"printer") || KviQString::equalCI(szDev,"pdf"))
+ {
+ if (m_pPrinter) delete m_pPrinter;
+ m_pPrinter=new QPrinter();
+ if ( KviQString::equalCI(szDev,"pdf"))
+ {
+ // m_pPrinter=new QPrinter();
+ if(szFileName.isEmpty())
+ {
+ c->warning(__tr2qs_ctx("Missing filename","objects"));
+ return true;
+ }
+ m_pPrinter->setOutputFormat(QPrinter::PdfFormat);
+ m_pPrinter->setOutputFileName(szFileName);
+
+ }
+ else{
+ QPrintDialog printDialog(m_pPrinter, 0);
+ if (printDialog.exec() == QDialog::Accepted) {
+ debug("papersize %d",m_pPrinter->paperSize());
+ m_pPainter->begin(m_pPrinter);
+ return true;
+ }
+ else {
+ m_pPrinter=0;
+ return true;
+ }
+ }
+ //if (i==3) m_pPrinter->setPaperSize(QPrinter::A3);
+ //if (i==4) m_pPrinter->setPaperSize(QPrinter::A4);
+ }
+ else{
+ c->warning(__tr2qs_ctx("No valid paint device","objects"));
+ return true;
+ }
+ m_pPainter->begin(m_pPrinter);
+ return true;
+ }
+ else if (v->isHObject())
+ {
+ v->asHObject(hObject);
+ pObject=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ if (!pObject)
+ {
c->warning(__tr2qs_ctx("Pixmap or Widget parameter is not an object","objects"));
return true;
- }
- QPaintDevice * pd;
- if(pObject->inheritsClass("pixmap"))pd=((KviKvsObject_pixmap *)pObject)->getPixmap();
+ }
- else if (pObject->inheritsClass("widget")) pd=((KviKvsObject_widget *)pObject)->widget();
- else{
- c->warning(__tr2qs_ctx("Widget or Pixmap required ","objects"));
- return true;
- }
- attachDevice(pObject,pd);
+ if(pObject->inheritsClass("pixmap"))pd=((KviKvsObject_pixmap *)pObject)->getPixmap();
+ else if (pObject->inheritsClass("widget")) pd=((KviKvsObject_widget *)pObject)->widget();
+ else
+ {
+ c->warning(__tr2qs_ctx("Widget or Pixmap required ","objects"));
+ return true;
+ }
+ }
+ else {
+ c->warning(__tr2qs_ctx("No valid paint device","objects"));
+ return true;
+ }
+ attachDevice(pObject,pd);
//if (pObject->inheritsClass("pixmap")) ((KviKvsObject_pixmap *)pObject)->pixmapChanged();
return true;
}
@@ -1067,12 +1124,26 @@ void KviKvsObject_painter::detachDevice()
if(!m_pDeviceObject)return;
disconnect(m_pDeviceObject,SIGNAL(aboutToDie()),this,SLOT(detachDevice()));
m_pPainter->end();
+ if (m_pPrinter)
+ {
+ delete m_pPrinter;
+ m_pPrinter=0;
+ }
m_pDeviceObject = 0;
}
KVSO_CLASS_FUNCTION(painter,end)
{
- detachDevice();
+ if(!m_pDeviceObject)
+ {
+ m_pPainter->end();
+ if (m_pPrinter)
+ {
+ delete m_pPrinter;
+ m_pPrinter=0;
+ }
+ }
+ else detachDevice();
return true;
}
KVSO_CLASS_FUNCTION(painter,beginPdf)
@@ -1084,7 +1155,7 @@ KVSO_CLASS_FUNCTION(painter,beginPdf)
KVSO_PARAMETERS_END(c)
if (m_pPrinter) delete m_pPrinter;
m_pPrinter=new QPrinter();//QPrinter::HighResolution);
- m_pPrinter->setOutputFormat(QPrinter::PdfFormat);
+ m_pPrinter->setOutputFormat(QPrinter::PdfFormat);
m_pPrinter->setOutputFileName(szFileName);
m_pPainter->begin(m_pPrinter);
return true;