diff options
Diffstat (limited to 'src/modules')
| -rw-r--r-- | src/modules/objects/class_file.cpp | 8 | ||||
| -rw-r--r-- | src/modules/objects/class_http.cpp | 2 | ||||
| -rw-r--r-- | src/modules/objects/class_list.cpp | 2 | ||||
| -rw-r--r-- | src/modules/objects/class_painter.cpp | 120 | ||||
| -rw-r--r-- | src/modules/objects/class_sql.cpp | 10 | ||||
| -rw-r--r-- | src/modules/objects/class_tablewidget.cpp | 135 | ||||
| -rw-r--r-- | src/modules/objects/class_tablewidget.h | 16 | ||||
| -rw-r--r-- | src/modules/objects/class_widget.cpp | 14 | ||||
| -rw-r--r-- | src/modules/objects/class_workspace.cpp | 183 | ||||
| -rw-r--r-- | src/modules/objects/class_workspace.h | 28 |
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(),¶ms); *((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,¶ms); +} +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_ |
