private void menu_creat_dirs_Click(object sender, RoutedEventArgs e) { string name = "新建文件夹"; string parent; if (CurrentPath.Length < 4) { parent = CurrentPath; } else { parent = CurrentPath + "\\"; } while (Directory.Exists(parent + name)) { name += " 副本"; } Directory.CreateDirectory(parent + name); MyItemManager.FlushLBByCurrentPath(lb, CurrentPath); //同步treeview显示 MyTreeViewItem mytv = new MyTreeViewItem(name, MyIcons.folder); var it = MyItemManager.GetTVItemFromPath(tv, CurrentPath); tv.BeginInit(); it.Items.Add(mytv); tv.EndInit(); }
//点击一个点 进行的树的初始化 private void initSystemTreeView() { if (building != null) { MyTreeViewItem mainNode = new MyTreeViewItem(building); mainNode.Header = createTreeViewItem(building.Name, null, false, -1, mainNode); mainNode.MouseDoubleClick += new MouseButtonEventHandler(mainNode_MouseDoubleClick); mainNode.IsExpanded = true; system_tree.Items.Add(mainNode); // globalMapFor for (int i = 0; i < building.Cabs.Count; i++) { WpfApplication2.Model.Vo.Cab cab = building.Cabs[i]; MyTreeViewItem treeNode = new MyTreeViewItem(building.Cabs[i]); treeNode.Header = createTreeViewItem(cab.Name, new BitmapImage(new Uri("/Images/rack.png", UriKind.Relative)), false, -1, treeNode); treeNode.MouseDoubleClick += cab_MouseLeftButtonDown; mainNode.Items.Add(treeNode); //显示通道 Dictionary <String, List <Device> > subSystemNames = sortSubsystem(cab); foreach (var dic in subSystemNames) { // Device device = cab.Devices[j]; MyTreeViewItem subSystemNode = new MyTreeViewItem(dic.Value); subSystemNode.Header = createTreeViewItem(dic.Key, new BitmapImage(new Uri("/Images/home8.png", UriKind.Relative)), false, -1, subSystemNode); subSystemNode.MouseDoubleClick += subSystemNode_MouseLeftButtonDown; treeNode.Items.Add(subSystemNode); } } } }
//treeview选中项改变事件 private void tv_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { if (TVChangeByOther) { return; //不来自tv本身的选择改变则直接退出 } Back_History.AddLast(CurrentPath); //记录进栈 MyTreeViewItem my_select = (MyTreeViewItem)tv.SelectedItem; CurrentPath = my_select.Tag.ToString(); List <MyListBoxItem> list = MyItemManager.CreatLBItemFromPath(CurrentPath); lb.BeginInit(); lb.Items.Clear(); foreach (var i in list) { lb.Items.Add(i); } lb.EndInit(); if (CurrentPath == "") { address_box.Text = "此电脑"; } else { address_box.Text = CurrentPath; } }
protected override void AddPrefabItems(MyTreeViewItem parentItem, MyMwcObjectBuilder_Prefab_AppearanceEnum appearanceTextureEnum, BuildTypesEnum buildType, CategoryTypesEnum categoryType) { MyMwcLog.WriteLine("GAME AddPrefabItems - START"); Vector2 itemSize = MyGuiConstants.CHECKBOX_SIZE * 3; foreach (MyMwcObjectBuilderTypeEnum enumValue in MyGuiPrefabHelpers.MyMwcPrefabTypesEnumValues) { foreach (int prefabId in MyMwcObjectBuilder_Base.GetObjectBuilderIDs(enumValue)) { MyPrefabConfiguration config = MyPrefabConstants.GetPrefabConfiguration(enumValue, prefabId); MyGuiPrefabHelper prefabModuleHelper = MyGuiObjectBuilderHelpers.GetGuiHelper(enumValue, prefabId) as MyGuiPrefabHelper; if (config == null) { continue; } if (config.FactionSpecific.HasValue && config.FactionSpecific.Value != appearanceTextureEnum) { continue; } if (config.BuildType == buildType && config.CategoryType == categoryType && config.EnabledInEditor) { MyMwcObjectBuilder_PrefabBase prefabObjectBuilder = MyPrefabFactory.GetInstance().CreatePrefabObjectBuilder(enumValue, prefabId, appearanceTextureEnum); MyBuildingSpecification buildingSpecification = MyBuildingSpecifications.GetBuildingSpecification(prefabObjectBuilder); MyTexture2D previewTexture = MyGuiManager.GetPrefabPreviewTexture(enumValue, prefabId, appearanceTextureEnum); AddTreeViewItem(parentItem, prefabModuleHelper.Description, previewTexture, itemSize, MyGuiManager.GetBlankTexture(), MyGuiManager.GetBlankTexture(), MyGuiConstants.CHECKBOX_SIZE, prefabObjectBuilder, buildingSpecification); } } } MyMwcLog.WriteLine("GAME AddPrefabItems - END"); }
void subSystemNode_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (e.Handled) { return; } MyTreeViewItem treeNode = (MyTreeViewItem)sender; MyTreeViewItem cabNode = (MyTreeViewItem)treeNode.Parent; if (cabNode.NodeObject is Building) { return; } Cab cab = (Cab)cabNode.NodeObject; List <Device> subsys = (List <Device>)treeNode.NodeObject; if (page.Content is CabsPage) //当前在cab页面 ,跳转到设备页面 { page.Content = new DevicePage(page, cab); } else if (page.Content is DevicePage) { } }
private void Inspect(MyTreeViewItem item) { ThreadHelper.ThrowIfNotOnUIThread(); if (CheckNotInBreakMode()) { return; } inspectorWindow.control.ParentPanel.Children.Clear(); VsUnityInspectorCommand.Instance.curInspectedObjects.Clear(); int[] index = item.GetIndexOfItem(); string tfQuery = GetTransformQuery(index); if (!isInitInspectObj) { dte.Debugger.ExecuteStatement(Statement: "UnityEngine.GameObject inspectObj;"); isInitInspectObj = true; } EnvDTE.TextSelection selection = commandWindow?.Selection as EnvDTE.TextSelection; string gameObjectInfo = GetDebuggerExecutionOutput(Statement: $"inspectObj = objs{tfQuery}.gameObject;", TreatAsExpression: true, selection); VsGameObject obj = new VsGameObject(gameObjectInfo); obj.Inspect(inspectorWindow); VsUnityInspectorCommand.Instance.curInspectedObjects.Add(obj); }
/// <summary> /// Try change group name, returns false on error /// </summary> public bool ChangeGroupName(MyObjectGroup group, string newName) { MyTreeViewItem groupItem = null; for (int i = 0; i < m_groupList.GetItemCount(); i++) { var item = m_groupList.GetItem(i); // Find group list item if (item.Tag == group) { groupItem = item; } else { if (item.Text.ToString() == newName) { return(false); } } } if (groupItem != null) { group.Name = new StringBuilder(newName); groupItem.Text = group.Name; return(true); } return(false); }
/// <summary> /// Treeview selected /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tv_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { MyTreeViewItem item = (MyTreeViewItem)e.NewValue; if (item != null) { App.ViewModel.SelectedFolder = item.Tag; } }
//窗口加载时初始化 private void Window_Loaded(object sender, RoutedEventArgs e) { tv.BeginInit(); MyTreeViewItem root = MyItemManager.GetRootTVItem(); tv.Items.Add(root); ((MyTreeViewItem)tv.Items[0]).IsSelected = true; tv.EndInit(); }
private void refreshTreeView() { treeView1.Items.Clear(); using (EfContext context = new EfContext()) { var query = (from f in context.VFilterNameGroups.AsQueryable() select new { FNameId = f.FilterNameId, FName = f.FilterName, FValueId = f.FilterValueId, FValue = f.FilterValue }); var groupNames = (from f in query group f by new { Id = f.FNameId, Name = f.FName } into g orderby g.Key.Name select g); foreach (var filterName in groupNames) { var FName = new MyTreeViewItem { Id = filterName.Key.Id.ToString(), Name = filterName.Key.Name }; TreeViewItem parent = new TreeViewItem(); parent.Header = FName; treeView1.Items.Add(parent); var FValues = from v in filterName group v by new MyTreeViewItem { Id = v.FValueId.ToString(), Name = v.FValue }; foreach (var filterValue in FValues) { if (string.IsNullOrEmpty(filterValue.Key.Name)) { continue; } TreeViewItem newChild = new TreeViewItem(); newChild.Header = filterValue.Key; parent.Items.Add(newChild); } } } }
/// <summary> /// Updates building progress /// </summary> /// <param name="treeViewItem">Treeview item</param> private void UpdateTreeViewItemStateBuildingProgress(MyTreeViewItem treeViewItem) { MyObjectToBuild objectToBuild = treeViewItem.Tag as MyObjectToBuild; treeViewItem.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER].Text.Clear(); //if (MyObjectToBuild.HasSameObjectBuilders(MyEditor.Static.FoundationFactory.BuildingObject, objectToBuild)) if (MyEditor.Static.FoundationFactory.BuildingObject != null && MyEditor.Static.FoundationFactory.BuildingObject.IsSame(objectToBuild)) { treeViewItem.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER].Text.Append(GetBuildingObjectState(objectToBuild)); treeViewItem.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER].Text.Append(PERCENTAGE); } }
/// <summary> /// Updates building queue count /// </summary> /// <param name="treeViewItem">Treeview item</param> private void UpdateTreeViewItemStateBuildingQueue(MyTreeViewItem treeViewItem) { MyObjectToBuild objectToBuild = treeViewItem.Tag as MyObjectToBuild; int objectsInBuildingQueue = GetBuildingObjectInBuildinQueueCount(objectToBuild); treeViewItem.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM].Text.Clear(); if (objectsInBuildingQueue > 0) { treeViewItem.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM].Text.Append(objectsInBuildingQueue); } }
private void AddSmallShipWeaponsItems(MyTreeViewItem parentItem) { Vector2 itemSize = MyGuiManager.GetNormalizedSizeFromScreenSize(new Vector2(64, 64)); foreach (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum enumValue in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_Weapon_TypesEnumValues) { MyMwcObjectBuilder_SmallShip_Weapon weaponObjectBuilder = new MyMwcObjectBuilder_SmallShip_Weapon(enumValue); MyBuildingSpecification buildingSpecification = MyBuildingSpecifications.GetBuildingSpecification(weaponObjectBuilder); MyGuiSmallShipHelperWeapon smallShipWeaponHelper = MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip_Weapon, (int)enumValue) as MyGuiSmallShipHelperWeapon; AddTreeViewItem(parentItem, smallShipWeaponHelper.Description, smallShipWeaponHelper.Icon, itemSize, MyGuiManager.GetBlankTexture(), MyGuiManager.GetBlankTexture(), MyGuiConstants.CHECKBOX_SIZE, weaponObjectBuilder, buildingSpecification); } }
private void UpdateTreeViewItemsState(MyTreeViewItem treeViewItem, MyTreeViewItemUpdateStateFlag updateFlags) { int itemsCount = treeViewItem.GetItemCount(); for (int i = 0; i < itemsCount; i++) { UpdateTreeViewItemsState(treeViewItem.GetItem(i), updateFlags); } if (treeViewItem.Tag != null && treeViewItem.Tag is MyObjectToBuild) { UpdateTreeViewItemState(treeViewItem, updateFlags); } }
public override void Update() { base.Update(); if (MyEditor.Static.FoundationFactory != null && MyEditor.Static.FoundationFactory.IsBuilding) { m_lastUpdateTime += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS; if (m_lastUpdateTime >= UPDATE_TREEVIEW_ITEMS_STATE) { m_lastUpdateTime = 0; MyTreeViewItem treeViewItem = GetTreeViewItem(MyEditor.Static.FoundationFactory.BuildingObject); UpdateTreeViewItemState(treeViewItem, MyTreeViewItemUpdateStateFlag.BuildingProgress); } } }
/// <summary> /// 由选择多个检测点进来 看到的左侧的树状结构 /// </summary> /// <param name="choosedArr"></param> private void initSystemTreeView(Boolean[] choosedArr) { Dictionary <string, Building> buildings = GlobalMapForShow.globalMapForBuiding; MyTreeViewItem mainNode = new MyTreeViewItem(null); mainNode.IsExpanded = true; mainNode.Header = createTreeViewItem("请选择需要查看的柜子", null, false, 0, mainNode); system_tree.Items.Add(mainNode); for (int i = 0; i < buildings.Count; i++) //不同的房间 { if (choosedArr[i]) { Building b = buildings[(i + 1) + ""]; MyTreeViewItem roomNode = new MyTreeViewItem(b); roomNode.Header = createTreeViewItem(b.Name, null, true, 1, roomNode); roomNode.MouseDoubleClick += mainNode_MouseDoubleClick; mainNode.Items.Add(roomNode); if ((page.Content != null) && (page.Content is CabsPage) && (cabspage != null)) { cabspage.addBuildingToShow(b); } for (int j = 0; j < b.Cabs.Count; j++) // 每个房间的柜子层 { Cab c = b.Cabs[j]; MyTreeViewItem cabNode = new MyTreeViewItem(c); cabNode.Header = createTreeViewItem(c.Name, new BitmapImage(new Uri("/Images/rack.png", UriKind.Relative)), true, 2, cabNode); roomNode.Items.Add(cabNode); //显示通道 Dictionary <String, List <Device> > subSystemNames = sortSubsystem(c); foreach (var dic in subSystemNames) { // Device device = cab.Devices[j]; MyTreeViewItem subSystemNode = new MyTreeViewItem(dic.Value); subSystemNode.Header = createTreeViewItem(dic.Key, new BitmapImage(new Uri("/Images/home8.png", UriKind.Relative)), false, -1, subSystemNode); subSystemNode.MouseDoubleClick += subSystemNode_MouseLeftButtonDown; roomNode.Items.Add(subSystemNode); } //List<string> subSystemNames = sortSubsystem(c); //for (int k = 0; k < subSystemNames.Count; k++) //{ // // Device device = cab.Devices[j]; // MyTreeViewItem treeItem = new MyTreeViewItem(subSystemNames[k]); // treeItem.Header = createTreeViewItem(subSystemNames[k], new BitmapImage(new Uri("/Images/home8.png", UriKind.Relative)), false, -1, treeItem); // treeItem.Items.Add(treeItem); //} } } } }
private void OnBuildingComplete(MyPrefabFoundationFactory sender, MyObjectToBuild buildObject) { MyTreeViewItemUpdateStateFlag updateFlags = MyTreeViewItemUpdateStateFlag.BuildCountAndDragAndDrop | MyTreeViewItemUpdateStateFlag.BuildingProgress; MyTreeViewItem treeViewItem = GetTreeViewItem(buildObject); UpdateTreeViewItemState(treeViewItem, updateFlags); if (sender.BuildingObject != null) { UpdateTreeViewItemState(GetTreeViewItem(sender.BuildingObject), MyTreeViewItemUpdateStateFlag.BuildingQueue); } FilterAddObjectTreePrivate(MyEditorGizmo.SelectedSnapPoint); }
public void RemoveFilterName(TreeViewItem deleteItem) { if (deleteItem.Items.Count > 0) { foreach (TreeViewItem item in deleteItem.Items) { RemoveFilterValue(int.Parse((item.Header as MyTreeViewItem).Id), int.Parse((deleteItem.Header as MyTreeViewItem).Id)); } } MyTreeViewItem myDeleteItem = deleteItem.Header as MyTreeViewItem; var deleteName = _filterNameRepository.GetAll().SingleOrDefault(f => f.Id.ToString() == myDeleteItem.Id); _filterNameRepository.Remove(deleteName); _filterNameRepository.SaveChanges(); }
protected void AddPrefabType(MyTreeViewItem parentItem, MyMwcObjectBuilder_Prefab_AppearanceEnum appearanceTextureEnum, MyTextsWrapperEnum typeText, BuildTypesEnum buildTypesEnum, CategoryTypesEnum[] categories, MyTexture2D icon, Vector2 iconSize, MyTexture2D expand, MyTexture2D collapse, Vector2 expandIconSize) { var prefabTypeItem = parentItem == null? m_addObjectTreeView.AddItem(MyTextsWrapper.Get(typeText), icon, iconSize, expand, collapse, expandIconSize) : parentItem.AddItem(MyTextsWrapper.Get(typeText), icon, iconSize, expand, collapse, expandIconSize); foreach (var categoryTypesEnum in categories) { var categoryItem = prefabTypeItem.AddItem(MyGuiPrefabHelpers.GetMyGuiCategoryTypeHelper(categoryTypesEnum).Description, icon, iconSize, expand, collapse, expandIconSize); AddPrefabItems(categoryItem, appearanceTextureEnum, buildTypesEnum, categoryTypesEnum); } }
private MyTreeViewItem GetTreeViewItem(MyObjectToBuild objectToBuild) { MyTreeViewItem result = null; int itemsCount = m_addObjectTreeView.GetItemCount(); for (int i = 0; i < itemsCount; i++) { result = GetTreeViewItem(m_addObjectTreeView.GetItem(i), objectToBuild); if (result != null) { break; } } return(result); }
private bool FilterResultByBuildItem(MyTreeViewItem item) { MyObjectToBuild objectToBuild = item.Tag as MyObjectToBuild; if (m_activeItemsWhichHasBuildFilter) { //if (MyEditor.Static.FoundationFactory.PrefabContainer.Inventory.GetInventoryItems(objectToBuild.ObjectBuilder).Count > 0) if (GetInventoryItemsCount(objectToBuild.ObjectBuilder) > 0) { return(true); } return(false); } return(true); }
private void OnBuildingQueueChanged(MyObjectToBuild objectToBuild, bool added) { MyTreeViewItemUpdateStateFlag updateFlags = MyTreeViewItemUpdateStateFlag.BuildingQueue; if (!added) { updateFlags = updateFlags | MyTreeViewItemUpdateStateFlag.BuildingProgress; } MyTreeViewItem treeViewItem = GetTreeViewItem(objectToBuild); UpdateTreeViewItemState(treeViewItem, updateFlags); UpdateTreeViewItemsState(MyTreeViewItemUpdateStateFlag.CanBuildAndRequirements); }
void mainNode_MouseDoubleClick(object sender, MouseButtonEventArgs e) { if (e.Handled) { return; } MyTreeViewItem item = (MyTreeViewItem)sender; Building b = (Building)item.NodeObject; if (page.Content is CabsPage) { } else if (page.Content is DevicePage) //当前在设备页面跳转到柜子页面 { page.Content = new CabsPage(this, b); } }
void cab_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (e.Handled) { return; } MyTreeViewItem treeNode = (MyTreeViewItem)sender; Cab cab = (Cab)treeNode.NodeObject; if (page.Content is CabsPage) { } else if (page.Content is DevicePage) //当前在设备页面跳转到柜子页面 { page.Content = new DevicePage(page, cab); } e.Handled = true; }
private void AddTreeViewItem(MyTreeViewItem parentItem, StringBuilder text, MyTexture2D icon, Vector2 iconSize, MyTexture2D expandIcon, MyTexture2D collapseIcon, Vector2 expandIconSize, MyMwcObjectBuilder_Base objectBuilder, MyBuildingSpecification buildingSpecification) { var item = parentItem.AddItem(new StringBuilder(), icon, iconSize, expandIcon, collapseIcon, expandIconSize); item.Tag = new MyObjectToBuild(objectBuilder, buildingSpecification, MyGameplayConstants.GetGameplayProperties(objectBuilder, MyEditor.Static.FoundationFactory.PrefabContainer.Faction).MaxAmount); item.ToolTip = new MyToolTips(); item.ToolTip.AddToolTip(text, Color.White, 0.7f); item.ToolTip.AddToolTip(MyTextsWrapper.Get(MyTextsWrapperEnum.BuildingRequirements)); item.ToolTip.AddToolTip(new StringBuilder(), Color.Green); item.ToolTip.AddToolTip(new StringBuilder(), Color.Red); item.IconTexts = new MyIconTexts(); item.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM] = new MyColoredText(new StringBuilder(), MyGuiConstants.COLORED_TEXT_DEFAULT_COLOR, 0.8f); item.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM] = new MyColoredText(new StringBuilder()); item.IconTexts[MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER] = new MyColoredText(new StringBuilder()); item.Action = OnItemAction; item.RightClick = OnItemRighClick; UpdateTreeViewItemState(item, MyTreeViewItemUpdateStateFlag.All); }
/// <summary> /// Helper method for drawing cell gui. /// </summary> /// <param name="cellRect">The rect in which the cell content will be drawn.</param> /// <param name="item">The item to be drawn.</param> /// <param name="column">The coulmn to be drawn.</param> void CellGUI(Rect cellRect, MyTreeViewItem item, Columns column) { switch (column) { case Columns.CONTROLS: break; case Columns.DISPLAY_NAME: cellRect.xMin += Mathf.Clamp(item.depth * depthIndentWidth, 0, float.MaxValue); GUI.Label(cellRect, item.displayName); break; case Columns.TIME: GUI.Label(cellRect, item.time); break; } }
private bool FilterResultByText(MyTreeViewItem item) { // Filter by text if (!string.IsNullOrEmpty(m_activeTextFilter)) { if (item.ToolTip == null) { return(false); } var toolTips = item.ToolTip.GetToolTips(); if (toolTips.Count == 0 || toolTips[0].Text.ToString().IndexOf(m_activeTextFilter, StringComparison.InvariantCultureIgnoreCase) == -1) { return(false); } } return(true); }
private bool FilterResultByItemAndPrefabSnapPoint(MyTreeViewItem item) { if (!MyEditor.Static.SnapPointFilter || m_activeSnapPointFilter == null) { // Always pass if snap point filter is disabled or no snap point selected return(true); } MyObjectToBuild objectToBuild = item.Tag as MyObjectToBuild; if (objectToBuild.ObjectBuilder is MyMwcObjectBuilder_PrefabBase) { var snapPoints = MyEditor.GetPrefabSnapPoints(objectToBuild.ObjectBuilder.GetObjectBuilderType(), objectToBuild.ObjectBuilder.GetObjectBuilderId().Value); return(snapPoints.Exists(a => m_activeSnapPointFilter.CanAttachTo(a))); } return(false); }
private void OnItemAction(object sender, EventArgs args) { MyTreeViewItem item = sender as MyTreeViewItem; MyObjectToBuild objectToBuild = item.Tag as MyObjectToBuild; if (objectToBuild != null) { if (MyGuiScreenGamePlay.Static != null && MyGuiScreenGamePlay.Static.IsCheatEnabled(MyGameplayCheatsEnum.INSTANT_BUILDING)) { MyEditor.Static.FoundationFactory.PrefabContainer.Inventory.AddInventoryItem(objectToBuild.ObjectBuilder, objectToBuild.Amount, true); UpdateTreeViewItemState(item, MyTreeViewItemUpdateStateFlag.BuildCountAndDragAndDrop); } else if (objectToBuild.BuildingSpecification.CanBuild(MyEditor.Static.FoundationFactory)) { MyEditor.Static.FoundationFactory.AddToBuildingQueue(objectToBuild); OnBuildingQueueChanged(objectToBuild, true); } } }
private void HierarchyView_PreviewMouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e) { var hit = e.OriginalSource as DependencyObject; while (hit != null && !(hit is TreeViewItem)) { hit = VisualTreeHelper.GetParent(hit); } MyTreeViewItem item = hit as MyTreeViewItem; if (item == null) { return; } e.Handled = true; item.doubleClicked?.Invoke(); }
public void SetResources(PeFile peFile) { _peFile = peFile; // Clear the tree. tbResources.Items.Clear(); // ROOT var rd = peFile.ImageResourceDirectory; if (rd == null) return; var root = new MyTreeViewItem<IMAGE_RESOURCE_DIRECTORY_ENTRY>(null) { Header = "Resource Directory" }; // Type foreach (var de in rd.DirectoryEntries) { MyTreeViewItem<IMAGE_RESOURCE_DIRECTORY_ENTRY> item = null; if (de.IsIdEntry) { item = new MyTreeViewItem<IMAGE_RESOURCE_DIRECTORY_ENTRY>(de) { Header = Utility.ResolveResourceId(de.ID) }; } else if (de.IsNamedEntry) { item = new MyTreeViewItem<IMAGE_RESOURCE_DIRECTORY_ENTRY>(de) { Header = de.ResolvedName }; } // name/IDs foreach (var de2 in de.ResourceDirectory.DirectoryEntries) { MyTreeViewItem<IMAGE_RESOURCE_DIRECTORY_ENTRY> item2 = null; item2 = new MyTreeViewItem<IMAGE_RESOURCE_DIRECTORY_ENTRY>(de2) { Header = de2.ID.ToString() }; foreach (var de3 in de2.ResourceDirectory.DirectoryEntries) { item2.Items.Add(new MyTreeViewItem<IMAGE_RESOURCE_DIRECTORY_ENTRY>(de3) { Header = de3.ID.ToHexString() }); } item?.Items.Add(item2); } root.Items.Add(item); } tbResources.Items.Add(root); }