diff options
Diffstat (limited to 'src/modules/objects/class_tablewidget.cpp')
| -rw-r--r-- | src/modules/objects/class_tablewidget.cpp | 53 |
1 files changed, 49 insertions, 4 deletions
diff --git a/src/modules/objects/class_tablewidget.cpp b/src/modules/objects/class_tablewidget.cpp index 48bd9252d..357884373 100644 --- a/src/modules/objects/class_tablewidget.cpp +++ b/src/modules/objects/class_tablewidget.cpp @@ -146,9 +146,11 @@ KVSO_BEGIN_REGISTERCLASS(KviKvsObject_tablewidget,"tablewidget","widget") KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_tablewidget,setItemFlags); KVSO_REGISTER_HANDLER(KviKvsObject_tablewidget,"itemEnteredEvent",itemEnteredEvent); - - + KVSO_REGISTER_HANDLER(KviKvsObject_tablewidget,"cellActivatedEvent",cellActivatedEvent); + KVSO_REGISTER_HANDLER(KviKvsObject_tablewidget,"cellDoubleClickedEvent",cellDoubleClickedEvent); KVSO_REGISTER_STANDARD_TRUERETURN_HANDLER(KviKvsObject_tablewidget,"paintCellEvent") + KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_tablewidget,"sizeHintCellRequestEvent") + KVSO_END_REGISTERCLASS(KviKvsObject_tablewidget) @@ -167,9 +169,15 @@ bool KviKvsObject_tablewidget::init(KviKvsRunTimeContext *c,KviKvsVariantList *) SET_OBJECT(QTableWidget) m_pCellItemDelegate=new KviCellItemDelegate(((QTableWidget *)widget()),this); + m_pContext=c; ((QTableWidget *)widget())->setItemDelegate(m_pCellItemDelegate); + ((QTableWidget *)widget())->verticalHeader()->resizeSections(QHeaderView::Custom ); + ((QTableWidget *)widget())->horizontalHeader()->resizeSections(QHeaderView::Custom ); + connect(widget(),SIGNAL(itemEntered(QTableWidgetItem *)),this,SLOT(slotItemEntered(QTableWidgetItem *))); + connect(widget(),SIGNAL(cellActivated(int,int)),this,SLOT(cellActivated(int,int))); + connect(widget(),SIGNAL(cellDoubleClicked(int,int)),this,SLOT(cellDoubleClicked(int,int))); return true; } KVSO_CLASS_FUNCTION(tablewidget,clear) @@ -535,6 +543,31 @@ KVSO_CLASS_FUNCTION(tablewidget,itemEnteredEvent) emitSignal("itemEntered",c,c->params()); return true; } +void KviKvsObject_tablewidget::cellActivated(int iRow,int iCol) + +{ + KviKvsVariantList params(new KviKvsVariant((kvs_int_t)iRow),new KviKvsVariant((kvs_int_t)iCol)); + callFunction(this,"cellActivatedEvent",0,¶ms); +} +KVSO_CLASS_FUNCTION(tablewidget,cellActivatedEvent) +{ + + emitSignal("cellActivated",c,c->params()); + return true; +} +void KviKvsObject_tablewidget::cellDoubleClicked(int iRow,int iCol) + +{ + KviKvsVariantList params(new KviKvsVariant((kvs_int_t)iRow),new KviKvsVariant((kvs_int_t)iCol)); + callFunction(this,"cellDoubleClickedEvent",0,¶ms); +} +KVSO_CLASS_FUNCTION(tablewidget,cellDoubleClickedEvent) +{ + + emitSignal("cellDoubleClicked",c,c->params()); + return true; +} + bool KviKvsObject_tablewidget::paint(QPainter * p, const QStyleOptionViewItem & option, const QModelIndex & index) { p->save(); @@ -568,12 +601,24 @@ KviCellItemDelegate::~KviCellItemDelegate() void KviCellItemDelegate::paint(QPainter * pPainter, const QStyleOptionViewItem & option, const QModelIndex & index) const { - if (m_pParentScript->paint(pPainter,option,index)) QItemDelegate::paint(pPainter,option,index); + if (m_pParentScript->paint(pPainter,option,index)) QItemDelegate::paint(pPainter,option,index); } QSize KviCellItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex & index) const { - return QItemDelegate::sizeHint(option,index); + KviKvsVariant *sizeret=new KviKvsVariant(); + debug("sizehint cell"); + KviKvsVariantList parameters(new KviKvsVariant((kvs_int_t) index.row()),new KviKvsVariant((kvs_int_t) index.column())); + m_pParentScript->callFunction(m_pParentScript,"sizeHintCellRequestEvent",sizeret,¶meters); + if (sizeret->isArray()) + { + if (sizeret->array()->size()==2) + { + kvs_int_t w,h; + if (sizeret->array()->at(0)->asInteger(w) && sizeret->array()->at(1)->asInteger(h))return QSize(w,h); + } + } + return QItemDelegate::sizeHint(option,index); } |
