Exemplo n.º 1
0
        /// <summary>
        /// User has selected an image
        /// </summary>
        private void LstImages_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            // Selection has been removed?
            if (((ListBox)sender).SelectedItem == null)
            {
                trvNamespaces.ItemsSource = null;
                return;
            }

            // Get selected image
            var model = (Il2CppModel)((ListBox)sender).SelectedItem;

            // Get namespaces
            var namespaces = model.Assemblies.SelectMany(x => x.DefinedTypes).GroupBy(t => t.Namespace).Select(n => n.Key);

            // Break namespaces down into a tree
            var namespaceTree = deconstructNamespaces(namespaces);

            // Uncheck the default exclusions
            foreach (var exclusion in Constants.DefaultExcludedNamespaces)
            {
                var          parts = exclusion.Split('.');
                CheckboxNode node  = null;
                foreach (var part in parts)
                {
                    node = (node?.Children ?? namespaceTree).FirstOrDefault(c => c.Name == part);
                    if (node == null)
                    {
                        break;
                    }
                }
                if (node != null)
                {
                    node.IsChecked = false;
                }
            }

            // Populate TreeView with namespace hierarchy
            trvNamespaces.ItemsSource = namespaceTree;

            // Populate Unity version combo boxes
            var prevSelection    = cboUnityVersion.SelectedItem;
            var prevCppSelection = cboCppUnityVersion.SelectedItem;

            cboUnityVersion.Items.Clear();
            cboCppUnityVersion.Items.Clear();
            foreach (var version in UnityHeader.GuessHeadersForModel(model))
            {
                cboUnityVersion.Items.Add(version);
                cboCppUnityVersion.Items.Add(version);
            }
            cboUnityVersion.SelectedIndex    = 0;
            cboCppUnityVersion.SelectedIndex = 0;
            if (prevSelection != null)
            {
                cboUnityVersion.SelectedItem    = prevSelection;
                cboCppUnityVersion.SelectedItem = prevCppSelection;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// User has selected an image
        /// </summary>
        private void LstImages_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            // Selection has been removed?
            if (((ListBox)sender).SelectedItem == null)
            {
                trvNamespaces.ItemsSource = null;
                return;
            }

            // Get selected image
            var model = (AppModel)((ListBox)sender).SelectedItem;

            // Get namespaces
            var namespaces = model.ILModel.Assemblies.SelectMany(x => x.DefinedTypes).GroupBy(t => t.Namespace).Select(n => n.Key);

            // Break namespaces down into a tree
            var namespaceTree = deconstructNamespaces(namespaces);

            // Uncheck the default exclusions
            foreach (var exclusion in Constants.DefaultExcludedNamespaces)
            {
                var          parts = exclusion.Split('.');
                CheckboxNode node  = null;
                foreach (var part in parts)
                {
                    node = (node?.Children ?? namespaceTree).FirstOrDefault(c => c.Name == part);
                    if (node == null)
                    {
                        break;
                    }
                }
                if (node != null)
                {
                    node.IsChecked = false;
                }
            }

            // Populate TreeView with namespace hierarchy
            trvNamespaces.ItemsSource = namespaceTree;

            // Populate Unity version combo boxes
            var prevIdaSelection  = cboPyUnityVersion.SelectedItem;
            var prevCppSelection  = cboCppUnityVersion.SelectedItem;
            var prevJsonSelection = cboJsonUnityVersion.SelectedItem;

            cboPyUnityVersion.Items.Clear();
            cboCppUnityVersion.Items.Clear();
            cboJsonUnityVersion.Items.Clear();
            foreach (var version in UnityHeaders.GuessHeadersForBinary(model.Package.Binary))
            {
                cboPyUnityVersion.Items.Add(version);
                cboCppUnityVersion.Items.Add(version);
                cboJsonUnityVersion.Items.Add(version);
            }

            // Restore previous selection via value equality
            if (prevIdaSelection != null)
            {
                cboPyUnityVersion.SelectedItem   = cboPyUnityVersion.Items.Cast <UnityHeaders>().FirstOrDefault(v => v.Equals(prevIdaSelection));
                cboCppUnityVersion.SelectedItem  = cboCppUnityVersion.Items.Cast <UnityHeaders>().FirstOrDefault(v => v.Equals(prevCppSelection));
                cboJsonUnityVersion.SelectedItem = cboJsonUnityVersion.Items.Cast <UnityHeaders>().FirstOrDefault(v => v.Equals(prevJsonSelection));
            }

            // Prefer latest Unity versions if there was no previous selection or it's now invalid
            if (cboPyUnityVersion.SelectedItem == null)
            {
                cboPyUnityVersion.SelectedIndex = cboPyUnityVersion.Items.Count - 1;
            }
            if (cboCppUnityVersion.SelectedItem == null)
            {
                cboCppUnityVersion.SelectedIndex = cboCppUnityVersion.Items.Count - 1;
            }
            if (cboJsonUnityVersion.SelectedItem == null)
            {
                cboJsonUnityVersion.SelectedIndex = cboJsonUnityVersion.Items.Count - 1;
            }
        }