aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar Noldor2009-08-26 15:32:22 +0000
committerGravatar Noldor2009-08-26 15:32:22 +0000
commit5cc6199846f7e797df52a9dad916f27bf3d6265d (patch)
treef60f116c7850408bb4eff0972e6ff0f103fdee79 /src/modules
parentRemoved old references to kvi_run_netscape.sh, we'll stick with freedesktop's... (diff)
downloadKVIrc-5cc6199846f7e797df52a9dad916f27bf3d6265d.tar.gz
KVIrc-5cc6199846f7e797df52a9dad916f27bf3d6265d.tar.bz2
KVIrc-5cc6199846f7e797df52a9dad916f27bf3d6265d.zip
Fixed kvs widgets on statusbar and some doc fixes
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@3428 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/objects/class_file.cpp8
-rw-r--r--src/modules/objects/class_http.cpp2
-rw-r--r--src/modules/objects/class_list.cpp2
-rw-r--r--src/modules/objects/class_painter.cpp120
-rw-r--r--src/modules/objects/class_sql.cpp10
-rw-r--r--src/modules/objects/class_tablewidget.cpp135
-rw-r--r--src/modules/objects/class_tablewidget.h16
-rw-r--r--src/modules/objects/class_widget.cpp14
-rw-r--r--src/modules/objects/class_workspace.cpp183
-rw-r--r--src/modules/objects/class_workspace.h28
10 files changed, 355 insertions, 163 deletions
diff --git a/src/modules/objects/class_file.cpp b/src/modules/objects/class_file.cpp
index 2b21e64a2..b1b383f5c 100644
--- a/src/modules/objects/class_file.cpp
+++ b/src/modules/objects/class_file.cpp
@@ -40,6 +40,7 @@
{c->warning(__tr2qs_ctx("File is not open!","objects"));return true;}
// needed for $open()
+
const char * const mod_tbl[] = {
"Raw",
"ReadOnly",
@@ -250,7 +251,7 @@ KVSO_CLASS_FUNCTION(file,open)
}
}
- m_pFile->open(sum);
+ m_pFile->open(QIODevice::ReadOnly);
return true;
}
@@ -532,8 +533,9 @@ KVSO_CLASS_FUNCTION(file,readLine)
CHECK_INTERNAL_POINTER(m_pFile)
CHECK_FILE_IS_OPEN
QString buffer;
- KviFileUtils::readLine(m_pFile,buffer);
- c->returnValue()->setString(buffer);
+ bool ok=KviFileUtils::readLine(m_pFile,buffer);
+ debug("ok %d",ok);
+ c->returnValue()->setString(buffer);
return true;
}
diff --git a/src/modules/objects/class_http.cpp b/src/modules/objects/class_http.cpp
index fd32351e7..19eab2336 100644
--- a/src/modules/objects/class_http.cpp
+++ b/src/modules/objects/class_http.cpp
@@ -83,7 +83,7 @@ const char * const ssl_errors_tbl[] = {
!fn: <id:integer>$setHost(<host:string>,<remote_port:unsigned_integer>)
!fn: <id:integer>$currentId()
- !fn: $setProxy(<host:string>,[<user:string>,<password:string>])
+ !fn: $setProxy(<host:string>,<port:integer>,[<user:string>,<password:string>])
!fn: $setUser(<user:string>,<password:string>)
!fn: $readAll()
!fn: <error:string> $errorString()
diff --git a/src/modules/objects/class_list.cpp b/src/modules/objects/class_list.cpp
index 1f62f8728..93283e50f 100644
--- a/src/modules/objects/class_list.cpp
+++ b/src/modules/objects/class_list.cpp
@@ -42,8 +42,6 @@
@inherits:
[class]object[/class]
@description:
-
-
This object class abstracts a double linked list of strings.
You can insert/remove items by zero based position, at the end (tail) or at the
beginning (head). The list incorporates an efficient iteration
diff --git a/src/modules/objects/class_painter.cpp b/src/modules/objects/class_painter.cpp
index 54884b428..8bdbae9fd 100644
--- a/src/modules/objects/class_painter.cpp
+++ b/src/modules/objects/class_painter.cpp
@@ -238,16 +238,16 @@ const char * const brushstyles_tbl[] = {
Sets the background mode of the painter to <bgMode>: valid values are:[br]
- Transparent (that is the default value);[br]
- Opaque.[br]
- !fn: $setOpacity(<opacity_factor:real>) [QT4 ONLY]
+ !fn: $setOpacity(<opacity_factor:real>)
Sets the painter opacity that affects all painter operations (drawpixmap, drawtext...). Valid values range are from 0 (total transparency) to 1 (total opacity)[br]
You must invoke the [classfnc]$begin[/classfnc] before using it.
- !fn: $setTextAntialiasing(<boolean>) [QT4 ONLY]
+ !fn: $setTextAntialiasing(<boolean>)
Enable/disable antialias in text if possible.
You must call the [classfnc]$begin[/classfnc] before using it.
- !fn: $setAntialiasing(<boolean>) [QT4 ONLY]
+ !fn: $setAntialiasing(<boolean>)
Enable/disable antialias in edges of primitives if possible.
You must call the [classfnc]$begin[/classfnc] before using it.
- !fn: $setSmoothPixmapTransform(<boolean>) [QT4 ONLY]
+ !fn: $setSmoothPixmapTransform(<boolean>)
Enable/disable smooth bilinear pixmap transformation algorithm (such as bilinear).
You must call the [classfnc]$begin[/classfnc] before using it.
Example:[br]
@@ -1028,83 +1028,83 @@ 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)
+ KviKvsVariant *v;
+ QString szFileName;
+ KVSO_PARAMETERS_BEGIN(c)
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)
- 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);
+ 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{
+ else
+ {
c->warning(__tr2qs_ctx("No valid paint device","objects"));
return true;
}
m_pPainter->begin(m_pPrinter);
return true;
- }
- else if (v->isHObject())
- {
+ }
+ 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;
+ c->warning(__tr2qs_ctx("Pixmap or Widget parameter is not an object","objects"));
+ return true;
}
-
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"));
+ c->warning(__tr2qs_ctx("Widget or Pixmap required ","objects"));
return true;
}
- attachDevice(pObject,pd);
+ }
+ 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;
+ return true;
}
void KviKvsObject_painter::attachDevice(KviKvsObject * o,QPaintDevice * p)
diff --git a/src/modules/objects/class_sql.cpp b/src/modules/objects/class_sql.cpp
index cfaa7ebe0..b6a29b8cb 100644
--- a/src/modules/objects/class_sql.cpp
+++ b/src/modules/objects/class_sql.cpp
@@ -218,13 +218,10 @@ KVSO_CLASS_FUNCTION(sql,setConnection)
KVSO_CLASS_FUNCTION(sql,queryLastInsertId)
{
CHECK_QUERY_IS_INIT
- KviKvsHash *pHash=new KviKvsHash();
- KviKvsVariant *pValue=0;
QVariant value=m_pCurrentSQlQuery->lastInsertId();
if (value.type()==QVariant::LongLong){
c->returnValue()->setInteger((kvs_int_t) value.toLongLong());
}
-
return true;
}
KVSO_CLASS_FUNCTION(sql,features)
@@ -526,18 +523,17 @@ KVSO_CLASS_FUNCTION(sql,queryRecord)
{
KviKvsVariant *pValue=0;
QVariant value=record.value(i);
- if (value.type()==QVariant::LongLong){debug ("set long"); pValue=new KviKvsVariant((kvs_int_t) value.toLongLong());}
- else if (value.type()==QVariant::String) {debug ("set string");pValue=new KviKvsVariant(value.toString());}
+ if (value.type()==QVariant::LongLong) pValue=new KviKvsVariant((kvs_int_t) value.toLongLong());
+ else if (value.type()==QVariant::String) pValue=new KviKvsVariant(value.toString());
else if (value.type()==QVariant::ByteArray)
{
- debug("qbyte array");
KviKvsObjectClass * pClass = KviKvsKernel::instance()->objectController()->lookupClass("memoryBuffer");
KviKvsVariantList params(new KviKvsVariant(QString()));
KviKvsObject * pObject = pClass->allocateInstance(0,"",c->context(),&params);
*((KviKvsObject_memorybuffer *)pObject)->pBuffer()=value.toByteArray();
pValue=new KviKvsVariant(pObject->handle());
}
- else {debug("empty value in name %s",record.fieldName(i).toUtf8().data());pValue=new KviKvsVariant(QString());}
+ else pValue=new KviKvsVariant(QString());
pHash->set(record.fieldName(i),pValue);
KviKvsVariant *value2=pHash->get(record.fieldName(i));
value2->type();
diff --git a/src/modules/objects/class_tablewidget.cpp b/src/modules/objects/class_tablewidget.cpp
index 19b8ca40f..f8c5d1852 100644
--- a/src/modules/objects/class_tablewidget.cpp
+++ b/src/modules/objects/class_tablewidget.cpp
@@ -40,26 +40,35 @@
#include <QApplication>
#include <QPoint>
#include <QPaintEvent>
+#include <QTableWidgetItem>
/*
@doc:tablewidget
@title:
- tablewidget class
+ tablewidget class
@type:
class
@short:
- Tablewidget widget.
+ Tablewidget widget.
@inherits:
[class]object[/class]
- [class]widget[/class]
+ [class]widget[/class]
@description:
- This widget provides a table widget.
+ This widget provides a table.
@functions:
- !fn: $setText([<text:string>])
- !fn: $text()
- !fn: $setHorizontalHeaderLabels()
- !fn: $hideHorizontalHeaderLabels()
- !fn: $setVerticalHeaderLabels()
- !fn: $hideVerticalHeaderLabels()
+ !fn: $setText(<row:integer>,<col:integer>,[<text:string>])
+ !fn: <string> $text(<row:integer>,<col:integer>)
+ !fn: $setHorizontalHeaderLabels(<string array>)
+ !fn: $showHorizontalHeader()
+ !fn: $hideHorizontalHeader()
+ !fn: $setVerticalHeaderLabels(<string array>)
+ !fn: $showVerticalHeader()
+ !fn: $hideVerticalHeader()
+ !fn: $setRowCount(<integer>)
+ !fn: <integer> $rowCount()
+ !fn: $setColumnCount(<integer>)
+ !fn: <integer> $columnCount()
+ !fn: $setCellWidget(<hobject>)
+ !fn: $setIcon()
!fn: $clear()
@signals:
!sg: $clicked()
@@ -83,16 +92,28 @@ KVSO_BEGIN_REGISTERCLASS(KviKvsObject_tablewidget,"tablewidget","widget")
// Rows-Columns
KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_tablewidget,setRowCount)
KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_tablewidget,rowCount)
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_tablewidget,currentRow)
KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_tablewidget,setColumnCount)
KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_tablewidget,columnCount)
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_tablewidget,currentColumn)
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_tablewidget,itemRowColAt)
+
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_tablewidget,hideRow)
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_tablewidget,showRow)
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_tablewidget,hideColumn)
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_tablewidget,showColumn)
// Item (text. icon, widget)
KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_tablewidget,setText)
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_tablewidget,setToolTip)
KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_tablewidget,text)
KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_tablewidget,setCellWidget)
KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_tablewidget,setIcon)
KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_tablewidget,clear)
+ KVSO_REGISTER_HANDLER(KviKvsObject_tablewidget,"itemEnteredEvent",itemEnteredEvent);
+
+
KVSO_END_REGISTERCLASS(KviKvsObject_tablewidget)
KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_tablewidget,KviKvsObject_widget)
@@ -106,7 +127,9 @@ KVSO_END_DESTRUCTOR(KviKvsObject_tablewidget)
bool KviKvsObject_tablewidget::init(KviKvsRunTimeContext *,KviKvsVariantList *)
{
+
SET_OBJECT(QTableWidget)
+ connect(widget(),SIGNAL(itemEntered(QTableWidgetItem *)),this,SLOT(slotItemEntered(QTableWidgetItem *)));
return true;
}
KVSO_CLASS_FUNCTION(tablewidget,clear)
@@ -206,13 +229,53 @@ KVSO_CLASS_FUNCTION(tablewidget,rowCount)
c->returnValue()->setInteger(((QTableWidget *)widget())->rowCount());
return true;
}
+KVSO_CLASS_FUNCTION(tablewidget,currentRow)
+{
+ CHECK_INTERNAL_POINTER(widget())
+ c->returnValue()->setInteger(((QTableWidget *)widget())->currentRow());
+ return true;
+}
+KVSO_CLASS_FUNCTION(tablewidget,currentColumn)
+{
+ CHECK_INTERNAL_POINTER(widget())
+ c->returnValue()->setInteger(((QTableWidget *)widget())->currentColumn());
+ return true;
+}
KVSO_CLASS_FUNCTION(tablewidget,columnCount)
{
CHECK_INTERNAL_POINTER(widget())
c->returnValue()->setInteger(((QTableWidget *)widget())->columnCount());
return true;
}
-
+KVSO_CLASS_FUNCTION(tablewidget,itemRowColAt)
+{
+ CHECK_INTERNAL_POINTER(widget())
+ kvs_uint_t uX,uY;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("uX",KVS_PT_UNSIGNEDINTEGER,0,uX)
+ KVSO_PARAMETER("uY",KVS_PT_UNSIGNEDINTEGER,0,uY)
+ KVSO_PARAMETERS_END(c)
+ KviKvsArray *pArray;
+ QTableWidgetItem *pItem=((QTableWidget *)widget())->itemAt(QPoint(uX,uY));
+ pArray=new KviKvsArray;
+ pArray->set(0,new KviKvsVariant((kvs_int_t)pItem->row()));
+ pArray->set(1,new KviKvsVariant((kvs_int_t)pItem->column()));
+ c->returnValue()->setArray(pArray);
+ return true;
+}
+KVSO_CLASS_FUNCTION(tablewidget,setToolTip)
+{
+ CHECK_INTERNAL_POINTER(widget())
+ QString szTooltip;
+ kvs_uint_t uX,uY;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("uX",KVS_PT_UNSIGNEDINTEGER,0,uX)
+ KVSO_PARAMETER("uY",KVS_PT_UNSIGNEDINTEGER,0,uY)
+ KVSO_PARAMETER("tooltip",KVS_PT_STRING,0,szTooltip)
+ KVSO_PARAMETERS_END(c)
+ ((QTableWidget *)widget())->itemAt(uX,uY)->setToolTip(szTooltip);
+ return true;
+}
KVSO_CLASS_FUNCTION(tablewidget,setColumnCount)
{
CHECK_INTERNAL_POINTER(widget())
@@ -224,6 +287,44 @@ KVSO_CLASS_FUNCTION(tablewidget,setColumnCount)
return true;
}
+KVSO_CLASS_FUNCTION(tablewidget,hideColumn)
+{
+ CHECK_INTERNAL_POINTER(widget())
+ kvs_int_t iCol;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("col",KVS_PT_UNSIGNEDINTEGER,0,iCol)
+ KVSO_PARAMETERS_END(c)
+ ((QTableWidget *)widget())->hideColumn(iCol);
+ return true;
+}
+KVSO_CLASS_FUNCTION(tablewidget,showColumn)
+{
+ CHECK_INTERNAL_POINTER(widget())
+ kvs_int_t iCol;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("col",KVS_PT_UNSIGNEDINTEGER,0,iCol)
+ KVSO_PARAMETERS_END(c)
+ ((QTableWidget *)widget())->showColumn(iCol);
+ return true;
+}KVSO_CLASS_FUNCTION(tablewidget,hideRow)
+{
+ CHECK_INTERNAL_POINTER(widget())
+ kvs_int_t iRow;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("col",KVS_PT_UNSIGNEDINTEGER,0,iRow)
+ KVSO_PARAMETERS_END(c)
+ ((QTableWidget *)widget())->hideRow(iRow);
+ return true;
+}KVSO_CLASS_FUNCTION(tablewidget,showRow)
+{
+ CHECK_INTERNAL_POINTER(widget())
+ kvs_int_t iRow;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("col",KVS_PT_UNSIGNEDINTEGER,0,iRow)
+ KVSO_PARAMETERS_END(c)
+ ((QTableWidget *)widget())->showRow(iRow);
+ return true;
+}
KVSO_CLASS_FUNCTION(tablewidget,setHorizontalHeaderLabels)
{
CHECK_INTERNAL_POINTER(widget())
@@ -320,8 +421,20 @@ KVSO_CLASS_FUNCTION(tablewidget,showVerticalHeader)
((QTableWidget *)widget())->verticalHeader()->show();
return true;
}
+void KviKvsObject_tablewidget::slotItemEntered(QTableWidgetItem * i)
+{
+ // if (!i) callFunction(this,"itecurrentItemChangeEvent",0,0);
+ debug("entered");
+ KviKvsVariantList params(new KviKvsVariant((kvs_int_t)i->row()),new KviKvsVariant((kvs_int_t)i->column()));
+ callFunction(this,"itemEnteredEvent",0,&params);
+}
+KVSO_CLASS_FUNCTION(tablewidget,itemEnteredEvent)
+{
+ emitSignal("itemEntered",c,c->params());
+ return true;
+}
#ifndef COMPILE_USE_STANDALONE_MOC_SOURCES
#include "m_class_tablewidget.moc"
#endif //COMPILE_USE_STANDALONE_MOC_SOURCES
diff --git a/src/modules/objects/class_tablewidget.h b/src/modules/objects/class_tablewidget.h
index af32c0f86..89ba41116 100644
--- a/src/modules/objects/class_tablewidget.h
+++ b/src/modules/objects/class_tablewidget.h
@@ -30,7 +30,7 @@
#include "class_widget.h"
#include "object_macros.h"
#include <QtSql>
-
+#include <QTableWidgetItem>
class KviKvsObject_tablewidget : public KviKvsObject_widget
{
Q_OBJECT
@@ -44,12 +44,17 @@ protected:
virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
bool setText(KviKvsObjectFunctionCall *c);
+ bool setToolTip(KviKvsObjectFunctionCall *c);
bool text(KviKvsObjectFunctionCall *c);
bool setIcon(KviKvsObjectFunctionCall *c);
bool setColumnCount(KviKvsObjectFunctionCall *c);
bool columnCount(KviKvsObjectFunctionCall *c);
bool setRowCount(KviKvsObjectFunctionCall *c);
+ bool currentRow(KviKvsObjectFunctionCall *c);
+ bool currentColumn(KviKvsObjectFunctionCall *c);
+ bool itemRowColAt(KviKvsObjectFunctionCall *c);
+
bool rowCount(KviKvsObjectFunctionCall *c);
bool setHorizontalHeaderLabels(KviKvsObjectFunctionCall *c);
bool setVerticalHeaderLabels(KviKvsObjectFunctionCall *c);
@@ -60,9 +65,16 @@ protected:
bool hideVerticalHeader(KviKvsObjectFunctionCall *c);
bool showVerticalHeader(KviKvsObjectFunctionCall *c);
bool clear(KviKvsObjectFunctionCall *c);
- //bool clickEvent(KviKvsObjectFunctionCall *c);
+ bool itemEnteredEvent(KviKvsObjectFunctionCall *c);
+
+ bool hideColumn(KviKvsObjectFunctionCall *c);
+ bool showColumn(KviKvsObjectFunctionCall *c);
+ bool hideRow(KviKvsObjectFunctionCall *c);
+ bool showRow(KviKvsObjectFunctionCall *c);
protected slots:
+ void slotItemEntered(QTableWidgetItem *);
+
//void slotClicked();
};
diff --git a/src/modules/objects/class_widget.cpp b/src/modules/objects/class_widget.cpp
index 459d44bdb..e3e842312 100644
--- a/src/modules/objects/class_widget.cpp
+++ b/src/modules/objects/class_widget.cpp
@@ -34,6 +34,8 @@
#include "kvi_window.h"
#include "kvi_app.h"
#include "kvi_frame.h"
+#include "kvi_statusbar.h"
+
#include <QKeyEvent>
#include <QDesktopWidget>
@@ -496,7 +498,7 @@ const Qt::WindowType widgettypes_cod[] = {
NoSystemBackground - Indicates that the widget has no background, i.e. when the widget receives paint events, the background is not automatically repainted.
PaintOnScreen - Indicates that the widget wants to draw directly onto the screen.
NoMousePropagation - Prohibits mouse events from being propagated to the widget's parent.
- !fn: $setStyleSheet(<string>)[QT4 only]
+ !fn: $setStyleSheet(<string>)
!fn: $array(<red:integer,green:integer,blue:integer) $colorPalette(<color_role:string><color_group:string>)
Returns the color in color_group(disabled, active or inactive), used for color_role.
@@ -512,7 +514,7 @@ const Qt::WindowType widgettypes_cod[] = {
!fn: <short_cut_id:integer> $setKeyShortCut(<key:char>)
Adds a shortcut whith key. A [classfnc]$shortCutEvent[/classfnc] will be triggered when the user will press alt+key.
- !fn: $shortCutEvent(<shortcut_id:integer>)[QT4 only]
+ !fn: $shortCutEvent(<shortcut_id:integer>)
This function will be called when a shortcut key has been triggered.
You must reimplement this event to manage a shortcut system in a custom widget.
The default implementation does nothing.
@@ -718,7 +720,6 @@ KVSO_END_REGISTERCLASS(KviKvsObject_widget)
KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_widget,KviKvsObject)
KVSO_END_CONSTRUCTOR(KviKvsObject_widget)
KVSO_BEGIN_DESTRUCTOR(KviKvsObject_widget)
-
emit aboutToDie();
// if (webview) delete webview;
KVSO_END_CONSTRUCTOR(KviKvsObject_widget)
@@ -1956,11 +1957,8 @@ KVSO_CLASS_FUNCTION(widget,setKeyShortcut)
KVSO_CLASS_FUNCTION(widget,insertIntoStatusBar)
{
CHECK_INTERNAL_POINTER(widget())
- kvs_int_t iIndex;
- KVSO_PARAMETERS_BEGIN(c)
- KVSO_PARAMETER("index",KVS_PT_UNSIGNEDINTEGER,0,iIndex)
- KVSO_PARAMETERS_END(c)
- g_pFrame->statusBar()->insertPermanentWidget(iIndex,widget());
+ if (g_pFrame->mainStatusBar())
+ g_pFrame->mainStatusBar()->insertPermanentWidgetAtTheEnd(widget(),0);
return true;
}
diff --git a/src/modules/objects/class_workspace.cpp b/src/modules/objects/class_workspace.cpp
index 5afe3b7ce..3eacf610b 100644
--- a/src/modules/objects/class_workspace.cpp
+++ b/src/modules/objects/class_workspace.cpp
@@ -30,8 +30,9 @@
#include "kvi_locale.h"
#include "kvi_iconmanager.h"
-#include <QWorkspace>
-
+#include <QMdiArea>
+#include <QMdiSubWindow>
+#include <QHash>
/*
@doc: workspace
@keyterms:
@@ -77,7 +78,7 @@
{[br]
constructor[br]
{[br]
- $$->$setGeometry(%X,%Y,100,100)[br]
+ $$->$setGeometry(%X,%Y,100,100)[br](KviKvsObjectFunctionCall *c
$$->%label=$new(label,$$)[br]
$$->%label->$settext("Another class by N\&G")[br]
$$->%label->$setautoresize(1)[br]
@@ -162,96 +163,162 @@
*/
KVSO_BEGIN_REGISTERCLASS(KviKvsObject_workspace,"workspace","widget")
- KVSO_REGISTER_HANDLER(KviKvsObject_workspace,"activeWindow", functionactiveWindow);
- KVSO_REGISTER_HANDLER(KviKvsObject_workspace,"scrollBarsEnabled", functionscrollBarsEnabled);
- KVSO_REGISTER_HANDLER(KviKvsObject_workspace,"setscrollBarsEnabled", functionsetscrollBarsEnabled);
- KVSO_REGISTER_HANDLER(KviKvsObject_workspace,"cascade", functioncascade);
- KVSO_REGISTER_HANDLER(KviKvsObject_workspace,"tile", functiontile);
- KVSO_REGISTER_HANDLER(KviKvsObject_workspace,"closeActiveWindow", functioncloseActiveWindow);
- KVSO_REGISTER_HANDLER(KviKvsObject_workspace,"closeAllWindows", functioncloseAllWindows);
- KVSO_REGISTER_HANDLER(KviKvsObject_workspace,"activateNextWindow", functionactivateNextWindow);
- KVSO_REGISTER_HANDLER(KviKvsObject_workspace,"activatePrevWindow", functionactivatePrevWindow);
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_workspace,addSubWindow);
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_workspace,removeSubWindow);
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_workspace,activeWindow);
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_workspace,scrollBarsEnabled);
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_workspace,setscrollBarsEnabled);
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_workspace,cascade);
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_workspace,tile);
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_workspace,closeActiveWindow);
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_workspace,closeAllWindows);
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_workspace,activateNextWindow);
+ KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_workspace,activatePrevWindow);
KVSO_END_REGISTERCLASS(KviKvsObject_workspace)
KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_workspace,KviKvsObject_widget)
-
+pWidgetDict=new QHash<kvs_hobject_t,QMdiSubWindow *>;
KVSO_END_CONSTRUCTOR(KviKvsObject_workspace)
-
KVSO_BEGIN_DESTRUCTOR(KviKvsObject_workspace)
-
+if (pWidgetDict)
+{
+ pWidgetDict->clear();
+ delete pWidgetDict;
+ pWidgetDict=0;
+}
KVSO_END_CONSTRUCTOR(KviKvsObject_workspace)
bool KviKvsObject_workspace::init(KviKvsRunTimeContext * ,KviKvsVariantList *)
{
- SET_OBJECT(QWorkspace);
+ SET_OBJECT(QMdiArea);
return true;
}
-bool KviKvsObject_workspace::functionactiveWindow(KviKvsObjectFunctionCall *c)
+KVSO_CLASS_FUNCTION(workspace,addSubWindow)
{
- //if(widget()) c->returnValue()->setHObject((unsigned long)(((QWorkspace *)widget())->activeWindow()));
- // FIXME!
- c->returnValue()->setHObject(0);
- return true; //?pFIX ME?
+ CHECK_INTERNAL_POINTER(widget())
+ KviKvsObject * pObject;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETERS_END(c)
+ pObject=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ CHECK_HOBJECT_IS_WIDGET(pObject)
+ QMdiSubWindow *pMdi=((QMdiArea *)object())->addSubWindow(((QWidget *)(pObject->object())));
+ pWidgetDict->insert(hObject,pMdi);
+ ((QMdiArea *)object())->setActiveSubWindow(pMdi);
+ return true;
}
-
-bool KviKvsObject_workspace::functionscrollBarsEnabled(KviKvsObjectFunctionCall *c)
+KVSO_CLASS_FUNCTION(workspace,removeSubWindow)
{
- if(widget())
- c->returnValue()->setBoolean(((QWorkspace *)widget())->scrollBarsEnabled());
- return true;
+ CHECK_INTERNAL_POINTER(widget())
+ KviKvsObject * pObject;
+ kvs_hobject_t hObject;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hObject)
+ KVSO_PARAMETERS_END(c)
+ pObject=KviKvsKernel::instance()->objectController()->lookupObject(hObject);
+ CHECK_HOBJECT_IS_WIDGET(pObject)
+ QMdiSubWindow *pMdiSubWindow=pWidgetDict->value(hObject);
+ if(pMdiSubWindow)
+ {
+ ((QMdiArea *)object())->removeSubWindow(pMdiSubWindow);
+ pWidgetDict->remove(hObject);
+ }
+ else c->warning(__tr2qs_ctx("The widget must be a subwindow of this workspace","objects"));
+ return true;
}
-bool KviKvsObject_workspace::functionsetscrollBarsEnabled(KviKvsObjectFunctionCall *c)
+KVSO_CLASS_FUNCTION(workspace,cascade)
{
- bool bEnabled;
- KVSO_PARAMETERS_BEGIN(c)
- KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
- KVSO_PARAMETERS_END(c)
- if(widget())
- ((QWorkspace *)widget())->setScrollBarsEnabled(bEnabled);
- return true;
+ CHECK_INTERNAL_POINTER(widget())
+ ((QMdiArea *)widget())->cascadeSubWindows();
+ return true;
}
-
-bool KviKvsObject_workspace::functioncascade(KviKvsObjectFunctionCall *)
+KVSO_CLASS_FUNCTION(workspace,tile)
{
- if(widget())
- ((QWorkspace *)widget())->cascade();
- return true;
+ CHECK_INTERNAL_POINTER(widget())
+ ((QMdiArea *)widget())->tileSubWindows();
+ return true;
+}
+KVSO_CLASS_FUNCTION(workspace,closeActiveWindow)
+{
+ CHECK_INTERNAL_POINTER(widget())
+ ((QMdiArea *)widget())->closeActiveSubWindow();
+ return true;
}
-bool KviKvsObject_workspace::functiontile(KviKvsObjectFunctionCall *)
+KVSO_CLASS_FUNCTION(workspace,closeAllWindows)
{
- if(widget())
- ((QWorkspace *)widget())->tile();
- return true;
+ CHECK_INTERNAL_POINTER(widget())
+ ((QMdiArea *)widget())->closeAllSubWindows();
+ return true;
}
-bool KviKvsObject_workspace::functioncloseActiveWindow(KviKvsObjectFunctionCall *)
+KVSO_CLASS_FUNCTION(workspace,activateNextWindow)
{
- if(widget())
- ((QWorkspace *)widget())->closeActiveWindow();
- return true;
+ CHECK_INTERNAL_POINTER(widget())
+ ((QMdiArea *)widget())->activateNextSubWindow();
+ return true;
}
-bool KviKvsObject_workspace::functioncloseAllWindows(KviKvsObjectFunctionCall *)
+KVSO_CLASS_FUNCTION(workspace,activatePrevWindow)
{
- if(widget())
- ((QWorkspace *)widget())->closeAllWindows();
- return true;
+ CHECK_INTERNAL_POINTER(widget())
+ ((QMdiArea *)widget())->activatePreviousSubWindow();
+ return true;
}
-bool KviKvsObject_workspace::functionactivateNextWindow(KviKvsObjectFunctionCall *)
+KVSO_CLASS_FUNCTION(workspace,activeWindow)
{
- if(widget())
- ((QWorkspace *)widget())->activateNextWindow();
+ CHECK_INTERNAL_POINTER(widget())
+ QMdiSubWindow *pActiveMdi=((QMdiArea *)widget())->activeSubWindow();
+ if (pActiveMdi)
+ {
+ QHashIterator<kvs_hobject_t,QMdiSubWindow *> t(*pWidgetDict);
+ while (t.hasNext())
+ {
+ t.next();
+ kvs_hobject_t hObject=t.key();
+ QMdiSubWindow *pMdi=t.value();
+ if (pMdi==pActiveMdi)
+ {
+ c->returnValue()->setHObject(hObject);
+ break;
+ }
+ }
+ }
+ else c->returnValue()->setHObject((kvs_hobject_t)0);
+ return true;
+}
+KVSO_CLASS_FUNCTION(workspace,scrollBarsEnabled)
+{
+ CHECK_INTERNAL_POINTER(widget())
+ bool bEnabled;
+ if(((QMdiArea *)widget())->verticalScrollBarPolicy()!=Qt::ScrollBarAlwaysOff) bEnabled=true;
+ else bEnabled=false;
+ c->returnValue()->setBoolean(bEnabled);
return true;
}
-bool KviKvsObject_workspace::functionactivatePrevWindow(KviKvsObjectFunctionCall *)
+KVSO_CLASS_FUNCTION(workspace,setscrollBarsEnabled)
{
- if(widget())
- ((QWorkspace *)widget())->activatePreviousWindow();
- return true;
+ CHECK_INTERNAL_POINTER(widget())
+ bool bEnabled;
+ KVSO_PARAMETERS_BEGIN(c)
+ KVSO_PARAMETER("bEnabled",KVS_PT_BOOL,0,bEnabled)
+ KVSO_PARAMETERS_END(c)
+ if(bEnabled)
+ {
+ ((QMdiArea *)widget())->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
+ ((QMdiArea *)widget())->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
+ }
+ else
+ {
+ ((QMdiArea *)widget())->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ ((QMdiArea *)widget())->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ }
+ return true;
}
+
diff --git a/src/modules/objects/class_workspace.h b/src/modules/objects/class_workspace.h
index 6eac95c9e..65369388a 100644
--- a/src/modules/objects/class_workspace.h
+++ b/src/modules/objects/class_workspace.h
@@ -26,7 +26,8 @@
//=============================================================================
#include "class_widget.h"
-
+#include <QHash>
+#include <QMdiSubWindow>
class KviKvsObject_workspace : public KviKvsObject_widget
{
public:
@@ -34,18 +35,23 @@ public:
public:
QWidget * widget() { return (QWidget *)object(); };
protected:
-
+ QHash<kvs_hobject_t, QMdiSubWindow*> *pWidgetDict;
virtual bool init(KviKvsRunTimeContext * pContext,KviKvsVariantList *pParams);
- bool functionactiveWindow(KviKvsObjectFunctionCall *c);
- bool functionscrollBarsEnabled(KviKvsObjectFunctionCall *c);
- bool functionsetscrollBarsEnabled(KviKvsObjectFunctionCall *c);
- bool functioncascade(KviKvsObjectFunctionCall *c);
- bool functiontile(KviKvsObjectFunctionCall *c);
- bool functioncloseActiveWindow(KviKvsObjectFunctionCall *c);
- bool functioncloseAllWindows(KviKvsObjectFunctionCall *c);
- bool functionactivateNextWindow(KviKvsObjectFunctionCall *c);
- bool functionactivatePrevWindow(KviKvsObjectFunctionCall *c);
+ bool addSubWindow(KviKvsObjectFunctionCall *c);
+ bool removeSubWindow(KviKvsObjectFunctionCall *c);
+ bool cascade(KviKvsObjectFunctionCall *c);
+ bool tile(KviKvsObjectFunctionCall *c);
+ bool closeActiveWindow(KviKvsObjectFunctionCall *c);
+ bool closeAllWindows(KviKvsObjectFunctionCall *c);
+ bool activateNextWindow(KviKvsObjectFunctionCall *c);
+ bool activatePrevWindow(KviKvsObjectFunctionCall *c);
+ bool scrollBarsEnabled(KviKvsObjectFunctionCall *c);
+ bool setscrollBarsEnabled(KviKvsObjectFunctionCall *c);
+
+ bool activeWindow(KviKvsObjectFunctionCall *c);
+
+
};
#endif //!_CLASS_WORKSPACE_H_