/// <summary> /// Retrieves an array of controls that reference a particular texture. /// </summary> /// <param name="info"></param> /// <returns></returns> private Reference[] GetReferences(UI.Resources.TextureInfo info) { List <Reference> list = new List <Reference>(); if (info != null) { foreach (UI.GUIView view in mScene.Views) { Reference reference = null; foreach (UI.GUIControl control in view.Controls) { if (control.TextureIDs.Contains(info.ID)) { if (reference == null) { reference = new Reference(); reference.View = view; } reference.Controls.Add(control); } } if (reference != null) { list.Add(reference); } } } return(list.ToArray()); }
/// <summary> /// Notifies that the selected texture has changed /// </summary> /// <param name="info"></param> private void NotifySelectedTextureChanged(UI.Resources.TextureInfo info) { if (SelectedTextureChanged != null) { SelectedTextureChanged(this, info); } }
/// <summary> /// Refreshes the selected texture /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void mRefreshButton_Click(object sender, EventArgs e) { UI.Resources.TextureInfo texToRefresh = mTextureList.SelectedTexture; if (texToRefresh == null) { return; } mTextureList.UpdateTexture(texToRefresh); }
/// <summary> /// Retrieves the ListViewItem associated with a texture info /// </summary> /// <param name="info"></param> /// <returns></returns> private ListViewItem GetTextureListViewItem(UI.Resources.TextureInfo info) { foreach (ListViewItem item in mTexturesListView.Items) { if (item.Tag == info) { return(item); } } return(null); }
/// <summary> /// Scrolls to a particular texture /// </summary> /// <param name="info"></param> private void ScrollToTexture(UI.Resources.TextureInfo info) { if (info == null) { return; } ListViewItem item = GetTextureListViewItem(info); if (item == null) { return; } item.EnsureVisible(); }
/// <summary> /// Removes a texture from the scene's texture list /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void mRemoveButton_Click(object sender, EventArgs e) { UI.Resources.TextureInfo texToRemove = mTextureList.SelectedTexture; if (texToRemove == null) { return; } Reference[] references = GetReferences(texToRemove); if (references.Length > 0) { return; } mTextureList.SelectedTexture = null; mScene.Textures.Remove(texToRemove); mTextureList.Textures = mScene.Textures.ToArray(); }
/// <summary> /// Updates the texture in the texture list /// </summary> /// <param name="info"></param> public void UpdateTexture(UI.Resources.TextureInfo info) { ListViewItem item = GetTextureListViewItem(info); if (item == null) { return; } info.Unload(); info.Load(); Bitmap bmp = new Bitmap(100, 100); Graphics g = Graphics.FromImage(bmp); g.Clear(Color.Red); g.Dispose(); mTexturesListView.LargeImageList.Images.Add(info.Thumbnail); item.ImageIndex = mTexturesListView.LargeImageList.Images.Count - 1; mTexturesListView.Invalidate(true); }