private void ModelChanged(DTopic.Art a, DTopic t) { if (t == model) { switch (a) { case DTopic.Art.addChild: this.Render(2); break; case DTopic.Art.RemoveChild: this.Dispose(); break; case DTopic.Art.value: Input.Render(1); Output.Render(1); break; case DTopic.Art.type: this.Render(3); break; } } }
private loBlock(DTopic model, LogramView owner) : base(owner) { this.model = model; _pins = new List <loPin>(); this.model.changed += model_changed; }
internal LogramForm(DTopic data) { _blocks = new ObservableCollection <LBDesc>(); InitializeComponent(); uiLogram.Attach(data, new Action(() => data.Connection.root.GetAsync("/$YS/TYPES/LoBlock").ContinueWith(this.LoBlockLoad, TaskScheduler.FromCurrentSynchronizationContext()))); icBlocks.ItemsSource = _blocks; }
private void model_changed(DTopic.Art a, DTopic t) { if (t == model) { if (a == DTopic.Art.type || a == DTopic.Art.addChild) { Render(3); } } else if (t.parent == model) { loPin p; p = _pins.FirstOrDefault(z => z.GetModel() == t); if (p == null) { if (a == DTopic.Art.addChild) { t.GetAsync(null).ContinueWith(PinLoaded, TaskScheduler.FromCurrentSynchronizationContext()); } return; } if (a == DTopic.Art.RemoveChild) { lv.DeleteVisual(p); _pins.Remove(p); t.changed -= pin_changed; } this.Render(3); } }
private void ModelChanged(DTopic.Art a, DTopic t) { if (t == _model) { if (a == DTopic.Art.type) { this.Width = JsLib.OfInt(JsLib.GetField(_model.Manifest, "Logram.width"), 32 * CELL_SIZE); this.Height = JsLib.OfInt(JsLib.GetField(_model.Manifest, "Logram.height"), 18 * CELL_SIZE); } } else if (t.parent == _model) { if (a == DTopic.Art.addChild) { t.GetAsync(null).ContinueWith(MChildrenLoad, TaskScheduler.FromCurrentSynchronizationContext()); } else if (a == DTopic.Art.RemoveChild) { foreach (var it in _visuals.OfType <loElement>().Where(z => z.GetModel() == t).ToArray()) { it.Dispose(); } } } }
private void ChildChanged(DTopic.Art a, DTopic t) { if (t.parent == _model) { if (JsLib.OfString(JsLib.GetField(t.Manifest, "cctor.LoBlock"), null) != null) { if (a == DTopic.Art.addChild) { var b = _visuals.OfType <loBlock>().FirstOrDefault(z => z.GetModel() == t); if (b == null) { loBlock.Create(t, this); } } } else { if (a == DTopic.Art.addChild) { var p = _visuals.OfType <loVariable>().FirstOrDefault(z => z.GetModel() == t); if (p == null) { loVariable.Create(t, this); TopicLoaded(t); } } } } }
private void Manifest_changed(DTopic.Art art, DTopic src) { if (art == DTopic.Art.value) { UpdateType(_tManifest != null ? _tManifest.State : null, _value); } }
private void SourceLoaded(Task <DTopic> tt) { if (tt.IsFaulted || !tt.IsCompleted || tt.Result == null) { _mode = 1; return; } _source = tt.Result; DTopic lo = model.parent; if (_owner is loBlock && lo != null) { lo = lo.parent; } if (tt.Result.parent == lo || (tt.Result.parent != null && tt.Result.parent.parent == lo)) { _mode = 2; var src = lv._visuals.OfType <loPin>().FirstOrDefault(z => z.model == _source && !z.IsInput); if (src != null) { if (_srcBinding != null) { _srcBinding.Dispose(); } _srcBinding = new loBinding(src, this, lv); src.AddBinding(_srcBinding); this.Render(3); } } else { _mode = 3; this.Render(3); } }
private loVariable(DTopic model, LogramView lv) : base(lv) { this.model = model; this.Output = new loPin(this, model, false); this.Input = new loPin(this, model, true); Render(3); }
public A04Client(string host, string password) { if(!Uri.TryCreate(host, UriKind.Absolute, out url)) { throw new ArgumentException("host"); } _connEvnt = new List<WaitConnect>(); _sio = new SioClient((url.Scheme == "x13s" ? "wss://" : "ws://") + url.DnsSafeHost + (url.IsDefaultPort ? string.Empty : (":" + url.Port.ToString())) + "/api/v04", ProcessMessage); root = new DTopic(this); }
public LogramForm(DTopic data) { _bricks = new ObservableCollection<BrickInfo>(); this.data = data; this.data.GetAsync("/etc/brick").ContinueWith(BrickLoaded, TaskScheduler.FromCurrentSynchronizationContext()); InitializeComponent(); this.icBricks.ItemsSource = _bricks; this.lvCanvas.DataContext = data; }
private void _data_PropertyChanged(DTopic.Art art, DTopic child) { if (art == DTopic.Art.type) { _value = _data.Manifest; UpdateType(_tManifest != null ? _tManifest.State : null, _data.Manifest); } }
public InspectorForm(DTopic data) { this._data = data; _valueVC = new ObservableCollection<InBase>(); CollectionChange(new InValue(data, CollectionChange), true); CollectionChange(new InTopic(data, null, CollectionChange), true); InitializeComponent(); lvValue.ItemsSource = _valueVC; }
protected virtual void UpdateType(JSC.JSValue manifest) { this._manifest = manifest; string nv = null; int attr = 0; BitmapSource ni = null; if (_manifest != null && _manifest.ValueType == JSC.JSValueType.Object && _manifest.Value != null) { var vv = _manifest["editor"]; string tmp_s; if (vv.ValueType == JSC.JSValueType.String && !string.IsNullOrEmpty(tmp_s = vv.Value as string)) { nv = tmp_s; } var iv = _manifest["icon"]; if (iv.ValueType == JSC.JSValueType.String && !string.IsNullOrEmpty(tmp_s = iv.Value as string)) { ni = App.GetIcon(tmp_s); } JSC.JSValue js_attr; if ((js_attr = _manifest["attr"]).IsNumber) { attr = (int)js_attr; } } IsReadonly = (attr & 2) != 0; IsRequired = (attr & 1) != 0; if (nv == null) { nv = DTopic.JSV2Type(value); } if (ni == null) { if (value.ValueType == JSC.JSValueType.Object && value.Value == null) { ni = App.GetIcon((this is InTopic) ? string.Empty : "Null"); // Folder or Null } } if (ni == null) { ni = App.GetIcon(nv); } if (ni != icon) { icon = ni; PropertyChangedReise("icon"); } if (nv != _editorName) { _editorName = nv; editor = InspectorForm.GetEditor(_editorName, this, _manifest); PropertyChangedReise("editor"); } this.editor.TypeChanged(_manifest); }
public static loBlock Create(DTopic model, LogramView owner) { var lb = new loBlock(model, owner); owner.AddVisual(lb); model.GetAsync(null).ContinueWith(lb.ModelLoaded, TaskScheduler.FromCurrentSynchronizationContext()); return(lb); }
public loPin(loElement owner, DTopic model, bool isInput) : base(owner.lv) { this._owner = owner; this.model = model; this._mode = isInput ? 1 : 0; _connections = new List <loBinding>(); this.brush = Brushes.LightGray; }
internal void RemoveItem(DTopic t) { InBase item = _valueVC.OfType <InTopic>().First(z => z.Owner == t); if (item != null) { CollectionChange(item, false); } }
private void TopicLoaded(DTopic t) { _topicsToLoad.Remove(t); //Log.Debug("$- "+t.path); if (_topicsToLoad.Count == 0) { _topicsToLoad.Clear(); this.Dispatcher.BeginInvoke(new Action(LoadComplet)); } }
private void ManifestLoaded(Task <DTopic> td) { if (td.IsCompleted && !td.IsFaulted && td.Result != null) { _tManifest = td.Result; _tManifest.changed += Manifest_changed; UpdateType(_tManifest.State, _data.Manifest); base._isExpanded = this.HasChildren; } }
public static loVariable Create(DTopic model, LogramView lv) { var el = new loVariable(model, lv); lv.AddVisual(el); lv.AddVisual(el.Input); lv.AddVisual(el.Output); model.changed += el.ModelChanged; return(el); }
private void pin_changed(DTopic.Art a, DTopic t) { loPin p; p = _pins.FirstOrDefault(z => z.GetModel() == t); if (p == null) { return; } p.Render(a == DTopic.Art.value ? 1 : 3); }
private void _data_PropertyChanged(DTopic.Art art, DTopic child) { if (art == DTopic.Art.type) { UpdateType(_data.Manifest); } else if (art == DTopic.Art.value) { _value = _data.State; UpdateData(_data.State); } }
public override void Dispose() { var srcB = System.Threading.Interlocked.Exchange(ref _srcBinding, null); if (srcB != null) { srcB.Dispose(); } _source = null; lv.MapRemove(this); lv.DeleteVisual(this); }
private void _enumT_changed(DTopic.Art a, DTopic t) { this.Items.Clear(); string text; Brush bg_b; Brush fg_b; if (_enumT != null && _enumT.State.ValueType == JSC.JSValueType.Object) { bool isArr = (bool)JSL.Array.isArray(new JSC.Arguments { _enumT.State }); foreach (var kv in _enumT.State) { text = string.Empty; bg_b = null; fg_b = Brushes.Black; if (kv.Value.ValueType == JSC.JSValueType.String) { text = kv.Value.Value as string; } else if (kv.Value.ValueType == JSC.JSValueType.Object) { text = kv.Value["text"].Value as string; var bg = kv.Value["BG"]; if (bg.ValueType == JSC.JSValueType.String) { try { var c = (Color)ColorConverter.ConvertFromString(bg.Value as string); bg_b = new SolidColorBrush(c); if (Math.Max(c.B, Math.Max(c.G, c.R)) < 64) { fg_b = Brushes.White; } } catch (Exception) { } } } this.Items.Add(new TextBlock { Tag = isArr ? ((JSC.JSValue) new JSL.Number(int.Parse(kv.Key))) : ((JSC.JSValue) new JSL.String(kv.Key)), Text = text, Background = bg_b, Foreground = fg_b }); } ValueChanged(_owner.value); } }
private InValue(DTopic data, InValue parent, string name, JSC.JSValue value, JSC.JSValue schema, Action<InBase, bool> collFunc) { _data = data; _parent = parent; _collFunc = collFunc; _path = _parent._path + "." + name; base.name = name; _items = new List<InBase>(); _isVisible = true; _isExpanded = true; // fill _valueVC levelPadding = _parent.levelPadding + 7; _value = value; UpdateSchema(schema); UpdateData(value); _isExpanded = this.HasChildren; }
private void DataUpd(Task <DTopic> t) { if (t.IsFaulted) { Log.Warning("{0}", t.Exception.Message); } else if (t.IsCompleted) { _data = t.Result; if (_data == null) // topic deleted { App.Workspace.Close(this); return; } _data.changed += DataChanged; if (System.Threading.Interlocked.CompareExchange(ref _cl, _data.Connection, null) == null) { _cl.PropertyChanged += ClientChanged; } _path = _data.fullPath; PropertyChangedReise("data"); DTopic c = _data; _pathItems.Clear(); while (c != null) { _pathItems.Insert(0, c); c = c.parent; } DataChanged(DTopic.Art.type, _data); if (_view == null) { _view = _altView ?? "IN"; } if (_data == _data.Connection.root) { Title = _data.Connection.alias; } else { Title = _data.name; } PropertyChangedReise("connected"); UpdContent(); } this.Focus(); this.Cursor = Cursors.Arrow; }
public ObservableCollection <Control> MenuItems(DTopic t, loItem ctrl) { var l = new ObservableCollection <Control>(); JSC.JSValue v1; MenuItem mi; mi = new MenuItem() { Header = "Open in new tab", Tag = t }; mi.Click += miOpen_Click; l.Add(mi); mi = new MenuItem() { Header = "Show in Workspace", Tag = t }; mi.Click += miShow_Click; l.Add(mi); l.Add(new Separator()); if (ctrl is loPin) { bool ic = JsLib.ofBool(JsLib.GetField(t.Manifest, "Logram.trace"), false); mi = new MenuItem() { Header = "Trace", Tag = t, IsCheckable = true, IsChecked = ic }; mi.Click += miTrace_Click; l.Add(mi); l.Add(new Separator()); } if (t.Manifest != null && (v1 = t.Manifest["Children"]).ValueType == JSC.JSValueType.Object) { var ad = new Dictionary <string, JSC.JSValue>(); Jso2Acts(v1, ad); FillContextMenu(t, l, ad); } else if (t.Manifest != null && (v1 = t.Manifest["Children"]).ValueType == JSC.JSValueType.String) { t.GetAsync(v1.Value as string).ContinueWith(tt => FillContextMenuFromChildren(t, l, tt), TaskScheduler.FromCurrentSynchronizationContext()); } else { t.Connection.CoreTypes.GetAsync(null).ContinueWith(tt => FillContextMenuFromChildren(t, l, tt), TaskScheduler.FromCurrentSynchronizationContext()); } return(l); }
private void EnumRcv(Task <DTopic> td) { if (td.IsCompleted && !td.IsFaulted) { if (_enumT != null) { _enumT.changed -= _enumT_changed; } _enumT = td.Result; if (_enumT != null) { _enumT.changed += _enumT_changed; } _enumT_changed(DTopic.Art.value, _enumT); } }
private InManifest(InManifest parent, string name, JSC.JSValue value, JSC.JSValue type) { _signature = System.Threading.Interlocked.Increment(ref SIGNATURE_CNT); this._parent = parent; base._compactView = false; this._data = _parent._data; base._collFunc = _parent._collFunc; base.name = name; this._path = string.IsNullOrEmpty(_parent._path) ? name : (_parent._path + "." + name); base._isVisible = _parent._isExpanded; base._items = new List <InBase>(); base.IsGroupHeader = false; base.levelPadding = _parent.levelPadding + 8; this._value = value; UpdateType(type, value); }
public InValue(DTopic data, Action<InBase, bool> collFunc) { _data = data; _parent = null; _collFunc = collFunc; name = "value"; _path = string.Empty; _isVisible = true; _isExpanded = true; // fill _valueVC levelPadding = 5; _items = new List<InBase>(); _value = _data.value; UpdateSchema(_data.schema); UpdateData(_data.value); _isExpanded = this.HasChildren; _data.changed += _data_PropertyChanged; }
internal InspectorForm(DTopic data) { _valueVC = new ObservableCollection <InBase>(); this._data = data; if (_data != null) { CollectionChange(new InValue(_data, CollectionChange), true); CollectionChange(new InManifest(_data, CollectionChange), true); CollectionChange(new InTopic(_data, null, CollectionChange), true); } else { App.Workspace.ShowTopicInWorkspace += Workspace_ShowTopicInWorkspace; } InitializeComponent(); lvValue.ItemsSource = _valueVC; }
public InManifest(DTopic data, Action <InBase, bool> collFunc) { _signature = System.Threading.Interlocked.Increment(ref SIGNATURE_CNT); _data = data; _parent = null; base._compactView = false; base._collFunc = collFunc; name = "Manifest"; _path = string.Empty; base._isVisible = true; base._isExpanded = true; base.IsGroupHeader = true; base.levelPadding = 1; base._items = new List <InBase>(); _data.changed += _data_PropertyChanged; _data.GetAsync("/$YS/TYPES/Ext/Manifest").ContinueWith(ManifestLoaded, TaskScheduler.FromCurrentSynchronizationContext()); }
private void RefreshOwner(DTopic tt) { if (_owner != null) { _owner.changed -= _owner_PropertyChanged; if (_items != null) { _items.Clear(); _items = null; } } _owner = tt; name = tt.name; if (_populated && _owner.children != null) { var tsk = InsertItems(_owner.children); } }
private InValue(DTopic data, InValue parent, string name, JSC.JSValue value, JSC.JSValue type, Action <InBase, bool> collFunc) { _data = data; _parent = parent; base._compactView = false; _collFunc = collFunc; _path = _parent._path + "." + name; base.name = name; _items = new List <InBase>(); _isVisible = true; _isExpanded = true; // fill _valueVC base.IsGroupHeader = false; levelPadding = _parent.levelPadding + 8; _value = value; UpdateType(type); UpdateData(value); _isExpanded = this.HasChildren; }
private async void FillContextMenuFromChildren(DTopic owner, ObservableCollection <Control> l, Task <DTopic> tt) { var acts = new Dictionary <string, JSC.JSValue>(); if (tt.IsCompleted && !tt.IsFaulted && tt.Result != null) { foreach (var t in tt.Result.children) { var z = await t.GetAsync(null); if (z.State.ValueType == JSC.JSValueType.Object && z.State.Value != null && z.State["default"].Defined) { acts.Add(z.name, z.State); } } } FillContextMenu(owner, l, acts); }
private void TBrick_changed(DTopic.Art art, DTopic src) { if(src == null || src.schemaStr != "Bclass" || src.value.ValueType!=JSC.JSValueType.Object || art == DTopic.Art.schema) { return; } for(int i = 0; i < _bricks.Count; i++) { if(string.Compare(src.path, _bricks[i].owner.path) > 0) { if(art == DTopic.Art.addChild || art == DTopic.Art.value) { _bricks.Insert(i, new BrickInfo(src)); } return; } else if(_bricks[i].owner == src) { if(art == DTopic.Art.addChild || art == DTopic.Art.value) { _bricks[i] = new BrickInfo(src); } else if(art == DTopic.Art.RemoveChild) { _bricks.RemoveAt(i); } return; } } _bricks.Add(new BrickInfo(src)); }
public InTopic(DTopic owner, InTopic parent, Action<InBase, bool> collFunc) { _owner = owner; _parent = parent; _collFunc = collFunc; _root = _parent == null; IsGroupHeader = _root; _owner.changed += _owner_PropertyChanged; if(_root) { name = "children"; icon = App.GetIcon("children"); editor = null; levelPadding = 5; _populated = true; if(_owner.children != null) { InsertItems(_owner.children); } } else { name = _owner.name; base.UpdateSchema(_owner.schema); levelPadding = _parent.levelPadding + 7; } base._isExpanded = _root && _owner.children!=null && _owner.children.Any(); base._isVisible = _root || (_parent._isVisible && _parent._isExpanded); }
private void _data_PropertyChanged(DTopic.Art art, DTopic child) { if(art==DTopic.Art.schema) { UpdateSchema(_data.schema); } else if(art==DTopic.Art.value) { _value = _data.value; UpdateSchema(_data.schema); UpdateData(_data.value); } }
private void OwnerChanged(DTopic t) { if(t != _owner) { if(_owner != null) { _owner.changed -= _owner_changed; } _owner = t; if(_owner != null) { _owner.changed += _owner_changed; } } if(_owner == null) { return; } _offsetTop = _owner.GetField<double>("T"); _offsetLeft = _owner.GetField<double>("L"); this.Width = _owner.GetField<double>("W") * CELL_SIZE + 10; this.Height = _owner.GetField<double>("H") * CELL_SIZE + 10; AddVisual(new LiBrick(this, t)); }
private void _owner_changed(DTopic.Art art, DTopic src) { if(art == DTopic.Art.value && src == _owner) { OwnerChanged(_owner); } }
public BrickInfo(DTopic owner) { this.owner = owner; info = this.owner.GetField<string>("info") ?? owner.name; image = App.GetIcon(this.owner.GetField<string>("icon") ?? "Null"); }
public LiBrick(LogramView view, DTopic data) : base(view, data) { this.Offset = new Vector(50, 50); Render(3); }
private void _owner_PropertyChanged(DTopic.Art art, DTopic child) { if(!_root) { if(art == DTopic.Art.schema) { this.UpdateSchema(_owner.schema); } else if(art == DTopic.Art.value) { this.UpdateSchema(_owner.schema); this.editor.ValueChanged(_owner.value); } } if(_populated) { if(art == DTopic.Art.addChild) { if(_items == null) { InsertItems(_owner.children); } else { var td = AddTopic(child); } } else if(art == DTopic.Art.RemoveChild) { var it = _items.FirstOrDefault(z => z.name == child.name); if(it != null) { it.Deleted(); _items.Remove(it); } } } }
private async Task AddTopic(DTopic t) { InTopic tmp; var tt = await t.GetAsync(null); if(tt != null) { if((tmp = _items.OfType<InTopic>().FirstOrDefault(z => z.name == tt.name)) != null) { _items.Remove(tmp); _collFunc(tmp, false); tmp.RefreshOwner(tt); } else { tmp = new InTopic(tt, this, _collFunc); if(_isVisible && _isExpanded) { _collFunc(tmp, true); } } int i; for(i = 0; i < _items.Count; i++) { if(string.Compare(_items[i].name, tt.name) > 0) { break; } } _items.Insert(i, tmp); } }
private void RefreshOwner(DTopic tt) { if(_owner != null) { _owner.changed -= _owner_PropertyChanged; if(_items != null) { _items.Clear(); _items = null; } } _owner = tt; name = tt.name; if(_populated && _owner.children != null) { InsertItems(_owner.children); } }
private void SetNameComplete(Task<DTopic> td) { if(td.IsCompleted && td.Result != null) { _owner = td.Result; _owner.changed += _owner_PropertyChanged; base.name = _owner.name; base.UpdateSchema(_owner.schema); IsEdited = false; PropertyChangedReise("IsEdited"); PropertyChangedReise("name"); } else { if(td.IsFaulted) { Log.Warning("{0}/{1} - {2}", _parent._owner.fullPath, base.name, td.Exception.Message); } _parent._items.Remove(this); _collFunc(this, false); } }
protected LiBase(LogramView view, DTopic data) { this._view = view; this.data = data; }
public void Dispose() { _collFunc(this, false); if(_owner != null) { _owner.changed -= _owner_PropertyChanged; _owner = null; } }