void dmz::V8QtObject::_do_callback (const String &Signal, const QVariant &Value) { QVariantList args; args.append (Value); _do_callback (Signal, args); }
void dmz::V8QtListWidget::on_itemActivated (QListWidgetItem *item) { if (_state && _state->ui) { v8::Context::Scope cscope (_state->context); v8::HandleScope scope; QList<V8Value> args; args.append (_state->ui->create_v8_qlistwidgetitem (item)); _do_callback (LocalSignalItemActivated, args); } }
void dmz::JsExtV8Input::_do_all_callbacks ( const int Argc, V8Value argv[], HashTableHandleTemplate<CallbackTable> &table) { HandleContainer called; HandleContainerIterator it; Handle channel (0); while (_active.get_next (it, channel)) { CallbackTable *ct = table.lookup (channel); if (ct) { _do_callback (Argc, argv, *ct, called); } } }
void dmz::V8QtListWidget::on_currentItemChanged ( QListWidgetItem *current, QListWidgetItem *previous) { if (_state && _state->ui) { v8::Context::Scope cscope (_state->context); v8::HandleScope scope; QList<V8Value> args; args.append (_state->ui->create_v8_qlistwidgetitem (current)); args.append (_state->ui->create_v8_qlistwidgetitem (previous)); _do_callback (LocalSignalCurrentItemChanged, args); } }
void dmz::V8QtObject::_do_callback (const String &Signal, const QVariantList &ValueList) { if (_state) { v8::Context::Scope cscope (_state->context); v8::HandleScope scope; QList<V8Value> args; foreach (QVariant value, ValueList) { V8Value newValue = qvariant_to_v8 (value); if (!newValue.IsEmpty ()) { args.append (newValue); } } _do_callback (Signal, args); }
// Input Observer Interface void dmz::JsExtV8Input::update_channel_state (const Handle Channel, const Boolean State) { if (State) { _active.add (Channel); } else { _active.remove (Channel); } CallbackTable *ct = _stateTable.lookup (Channel); if (ct && (_v8Context.IsEmpty () == false)) { v8::Context::Scope cscope(_v8Context); v8::HandleScope scope; const int Argc (3); V8Value argv[Argc]; argv[0] = v8::Integer::NewFromUnsigned (Channel); argv[1] = v8::Boolean::New (State); HandleContainer called; _do_callback (Argc, argv, *ct, called); } }
void dmz::V8QtDockWidget::on_visibilityChanged (bool visible) { _do_callback (LocalSignalVisibilityChanged, visible); }
void dmz::V8QtDockWidget::on_topLevelChanged (bool topLevel) { _do_callback (LocalSignalTopLevelChanged, topLevel); }
void dmz::V8QtProgressBar::on_valueChanged (int val) { _do_callback (ValueChanged, val); }
// JsExtV8Input Interface dmz::V8Value dmz::JsExtV8Input::_register_callback (const v8::Arguments &Args, const Mask &Type) { v8::HandleScope scope; V8Value result = v8::Undefined (); const int Length = Args.Length (); V8Object src = v8_to_object (Args[0]); Handle channel (_defaultChannel); V8Function func; if (Length == 2) { func = v8_to_function (Args[1]); } else if (Length > 2) { channel = _to_handle (Args[1]); func = v8_to_function (Args[2]); } const Handle Obs = _core ? _core->get_instance_handle (src) : 0; ObsStruct *os = _obsTable.lookup (Obs); if (Obs && !os) { os = new ObsStruct; if (os && !_obsTable.store (Obs, os)) { delete os; os = 0; } } CallbackTable *ct (0); if (channel) { if (Type.contains (InputEventChannelStateMask)) { ct = _stateTable.lookup (channel); } else if (Type.contains (InputEventAxisMask)) { ct = _axisTable.lookup (channel); } else if (Type.contains (InputEventButtonMask)) { ct = _buttonTable.lookup (channel); } else if (Type.contains (InputEventSwitchMask)) { ct = _leverTable.lookup (channel); } else if (Type.contains (InputEventKeyMask)) { ct = _keyTable.lookup (channel); } else if (Type.contains (InputEventMouseMask)) { ct = _mouseTable.lookup (channel); } else if (Type.contains (InputEventDataMask)) { ct = _dataTable.lookup (channel); } if (!ct) { ct = new CallbackTable (channel, Type); if (ct) { if (Type.contains (InputEventChannelStateMask)) { if (!_stateTable.store (channel, ct)) { delete ct; ct = 0; } } else if (Type.contains (InputEventAxisMask)) { if (!_axisTable.store (channel, ct)) { delete ct; ct = 0; } } else if (Type.contains (InputEventButtonMask)) { if (!_buttonTable.store (channel, ct)) { delete ct; ct = 0; } } else if (Type.contains (InputEventSwitchMask)) { if (!_leverTable.store (channel, ct)) { delete ct; ct = 0; } } else if (Type.contains (InputEventKeyMask)) { if (!_keyTable.store (channel, ct)) { delete ct; ct = 0; } } else if (Type.contains (InputEventMouseMask)) { if (!_mouseTable.store (channel, ct)) { delete ct; ct = 0; } } else if (Type.contains (InputEventDataMask)) { if (!_dataTable.store (channel, ct)) { delete ct; ct = 0; } } } } if (ct && os && (src.IsEmpty () == false) && (func.IsEmpty () == false)) { CallbackStruct *cb = new CallbackStruct (*ct); if (cb) { const Boolean Activate = (ct->table.get_count () == 0); if (ct->table.store (Obs, cb)) { cb->self = V8ObjectPersist::New (src); cb->func = V8FunctionPersist::New (func); result = func; cb->next = os->list; os->list = cb; if (Activate) { activate_input_channel (channel, Type | InputEventChannelStateMask); } else if ((Type & InputEventChannelStateMask) && _active.contains (channel)) { const int Argc (3); V8Value argv[Argc]; argv[0] = v8::Integer::New (channel); argv[1] = v8::Boolean::New (true); CallbackTable tmp (channel, Type); tmp.table.store (Obs, cb); HandleContainer called; _do_callback (Argc, argv, tmp, called); tmp.table.remove (Obs); } } else { delete cb; cb = 0; } } } } return scope.Close (result); }
void dmz::V8QtListWidget::on_currentTextChanged (const QString &Value) { _do_callback (LocalSignalCurrentTextChanged, Value); }
void dmz::V8QtObject::_do_callback (const String &Signal) { QVariantList args; _do_callback (Signal, args); }
void dmz::V8QtGroupBox::on_toggle (bool checked) { _do_callback (ToggledSignal, checked); }
void dmz::V8QtGroupBox::on_clicked () { _do_callback (LocalSignalClicked); }
void dmz::V8QtAction::on_toggled (bool checked) { _do_callback (LocalSignalToggled, checked); }
void dmz::V8QtAction::on_triggered (bool checked) { // _do_callback (LocalSignalTriggered, checked); _do_callback (LocalSignalTriggered); }
void dmz::V8QtListWidget::on_currentRowChanged (int value) { _do_callback (LocalSignalCurrentRowChanged, value); }