public void Update(MetaDataTagItem.Data data, TableDefinitionModel tableDef)
        {
            if (data == null)
            {
                SelectedItemSize      = 0;
                ByteStream            = null;
                SelectedItemBytesLeft = 0;
                HasUniformByteSize    = false;
                BackgroundBlocks.Clear();

                for (int i = 0; i < Fields.Count; i++)
                {
                    UpdateViewModel(Fields[i], new byte[0], 0);
                }

                return;
            }

            HasUniformByteSize = _activeMetaDataContent.SelectedTagType.DataItems.Select(x => x.Size).Distinct().Count() == 1;
            SelectedItemSize   = data.Size;

            ByteStream = new MemoryStream(data.Bytes, data.Start, data.Size);
            BackgroundBlocks.Clear();

            int counter  = 0;
            var endIndex = tableDef.Definition.ColumnDefinitions.Count();
            int index    = data.Start;

            for (int i = 0; i < endIndex; i++)
            {
                if (i < endIndex)
                {
                    var byteParserType = tableDef.Definition.ColumnDefinitions[i].Type;
                    var parser         = ByteParserFactory.Create(byteParserType);
                    parser.TryDecode(data.Bytes, index, out _, out var bytesRead, out _);
                    index += bytesRead;

                    var block = new CustomBackgroundBlock()
                    {
                        Description = tableDef.Definition.ColumnDefinitions[i].Name,
                        Color       = counter % 2 == 0 ? new SolidColorBrush(Colors.Red) : new SolidColorBrush(Colors.Yellow),
                        Length      = bytesRead,
                        StartOffset = index - bytesRead - data.Start,
                    };
                    BackgroundBlocks.Add(block);

                    counter++;
                }
            }

            SelectedItemBytesLeft = SelectedItemSize - (index - data.Start);

            for (int i = 0; i < Fields.Count; i++)
            {
                UpdateViewModel(Fields[i], data.Bytes, index);
            }
        }
Ejemplo n.º 2
0
        public MetaDataTable(TableDefinitionModel dbTableDefinition, ActiveMetaDataContentModel activeMetaDataContent, PackFileService pf, bool allTablesReadOnly)
        {
            ItemDoubleClickedCommand = new RelayCommand <DataTableRow>(OnItemDoubleClicked);

            _pf = pf;
            _dbTableDefinition     = dbTableDefinition;
            _activeMetaDataContent = activeMetaDataContent;
            _allTablesReadOnly     = allTablesReadOnly;

            _dbTableDefinition.DefinitionChanged          += (v) => Update();
            _activeMetaDataContent.SelectedTagItemChanged += ActiveMetaDataContent_SelectedTagItemChanged;
        }
        public TableDefinitionEditor(SchemaManager schemaManager, ActiveMetaDataContentModel activeMetaDataContentModel, TableDefinitionModel tableDefinitionModel)
        {
            SchemaManager = schemaManager;

            AddDefinitionCommand       = new RelayCommand(() => AddNewDefinitionItem());
            RemoveDefinitionCommand    = new RelayCommand(OnRemoveSelected);
            RemoveAllDefinitionCommand = new RelayCommand(OnRemoveAll);
            SaveDefinitionCommand      = new RelayCommand(OnSaveDefinition);
            MoveUpDefinitionCommand    = new RelayCommand(() => MoveSelectedRow(-1));
            MoveDownDefinitionCommand  = new RelayCommand(() => MoveSelectedRow(1));

            _activeMetaDataContentModel = activeMetaDataContentModel;
            _tableDefinitionModel       = tableDefinitionModel;

            _activeMetaDataContentModel.SelectedTagTypeChanged += OnSelectedTagTypeChanged;
        }
        //
        public FieldExplorer(TableDefinitionEditor tableDefEditor, ActiveMetaDataContentModel activeMetaDataContent, TableDefinitionModel tableDefinition)
        {
            Create(DbTypesEnum.String_ascii);
            Create(DbTypesEnum.Optstring_ascii);
            Create(DbTypesEnum.String);
            Create(DbTypesEnum.Optstring);
            Create(DbTypesEnum.Int64);
            Create(DbTypesEnum.Integer);
            Create(DbTypesEnum.Single);
            Create(DbTypesEnum.Float16);
            Create(DbTypesEnum.Short);
            Create(DbTypesEnum.Byte);
            Create(DbTypesEnum.Boolean);

            _tableDefEditor        = tableDefEditor;
            _tableDefinition       = tableDefinition;
            _activeMetaDataContent = activeMetaDataContent;

            _tableDefinition.DefinitionChanged            += OnTableDefinitionChanged;
            _activeMetaDataContent.SelectedTagItemChanged += OnSelectedTagItemChanged;
        }