コード例 #1
0
void
dmz::V8QtObject::_do_callback (const String &Signal, const QVariant &Value) {

   QVariantList args;
   args.append (Value);
   _do_callback (Signal, args);
}
コード例 #2
0
ファイル: dmzV8QtListWidget.cpp プロジェクト: ben-sangster/js
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);
   }
}
コード例 #3
0
ファイル: dmzJsExtV8Input.cpp プロジェクト: ben-sangster/js
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); }
   }
}
コード例 #4
0
ファイル: dmzV8QtListWidget.cpp プロジェクト: ben-sangster/js
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);
   }
}
コード例 #5
0
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);
   }
コード例 #6
0
ファイル: dmzJsExtV8Input.cpp プロジェクト: ben-sangster/js
// 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);
   }
}
コード例 #7
0
ファイル: dmzV8QtDockWidget.cpp プロジェクト: ben-sangster/js
void
dmz::V8QtDockWidget::on_visibilityChanged (bool visible) {

   _do_callback (LocalSignalVisibilityChanged, visible);
}
コード例 #8
0
ファイル: dmzV8QtDockWidget.cpp プロジェクト: ben-sangster/js
void
dmz::V8QtDockWidget::on_topLevelChanged (bool topLevel) {

   _do_callback (LocalSignalTopLevelChanged, topLevel);
}
コード例 #9
0
void
dmz::V8QtProgressBar::on_valueChanged (int val) {

   _do_callback (ValueChanged, val);
}
コード例 #10
0
ファイル: dmzJsExtV8Input.cpp プロジェクト: ben-sangster/js
// 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);
}
コード例 #11
0
ファイル: dmzV8QtListWidget.cpp プロジェクト: ben-sangster/js
void
dmz::V8QtListWidget::on_currentTextChanged (const QString &Value) {

   _do_callback (LocalSignalCurrentTextChanged, Value);
}
コード例 #12
0
void
dmz::V8QtObject::_do_callback (const String &Signal) {

   QVariantList args;
   _do_callback (Signal, args);
}
コード例 #13
0
ファイル: dmzV8QtGroupBox.cpp プロジェクト: ben-sangster/js
void
dmz::V8QtGroupBox::on_toggle (bool checked) {

   _do_callback (ToggledSignal, checked);
}
コード例 #14
0
ファイル: dmzV8QtGroupBox.cpp プロジェクト: ben-sangster/js
void
dmz::V8QtGroupBox::on_clicked () {

   _do_callback (LocalSignalClicked);
}
コード例 #15
0
ファイル: dmzV8QtAction.cpp プロジェクト: ben-sangster/js
void
dmz::V8QtAction::on_toggled (bool checked) {

   _do_callback (LocalSignalToggled, checked);
}
コード例 #16
0
ファイル: dmzV8QtAction.cpp プロジェクト: ben-sangster/js
void
dmz::V8QtAction::on_triggered (bool checked) {

//   _do_callback (LocalSignalTriggered, checked);
   _do_callback (LocalSignalTriggered);
}
コード例 #17
0
ファイル: dmzV8QtListWidget.cpp プロジェクト: ben-sangster/js
void
dmz::V8QtListWidget::on_currentRowChanged (int value) {

   _do_callback (LocalSignalCurrentRowChanged, value);
}