private void lbBitmaps_SelectedIndexChanged(object sender, EventArgs e) { cbBitmapIndex.Enabled = false; cbBitmapIndex.Items.Clear(); screenData paneBitmapSelections = (screenData)lbScreensList.SelectedItem; if (paneBitmapSelections.link == null) paneBitmapSelections.link = new int[lbPanes.Items.Count]; ((int[])paneBitmapSelections.link)[lbPanes.SelectedIndex] = lbBitmaps.SelectedIndex; if (lbBitmaps.SelectedIndex < 1 || lbBitmaps.SelectedItem == null) { tbXPos.Enabled = false; tbYPos.Enabled = false; tbXScroll.Enabled = false; tbYScroll.Enabled = false; tbRenderDepth.Enabled = false; cbBitmapIdent.Enabled = false; cbBitmapIdent.SelectedIndex = 0; return; } else { tbXPos.Enabled = true; tbYPos.Enabled = true; tbXScroll.Enabled = true; tbYScroll.Enabled = true; tbRenderDepth.Enabled = true; cbBitmapIdent.Enabled = true; } // Actually update ListBox with data source ((CurrencyManager)lbBitmaps.BindingContext[lbBitmaps.DataSource]).Refresh(); bitmapData bd = (bitmapData)lbBitmaps.SelectedItem; //bitmapData bd = ((List<bitmapData>)lbBitmaps.DataSource)[lbBitmaps.SelectedIndex]; tbXPos.Text = bd.left.ToString(); tbYPos.Text = bd.top.ToString(); tbXScroll.Text = bd.horizontalWrapsPerSec.ToString(); tbYScroll.Text = bd.verticalWrapsPerSec.ToString(); tbRenderDepth.Text = bd.renderDepth.ToString(); if (bd.bitmIdent != -1) { cbBitmapIdent.Text = map.FileNames.Name[(int)map.MetaInfo.identHT[bd.bitmIdent]]; } else cbBitmapIdent.Text = "null"; if (bd.link != null) { baseData sd = (baseData)cbBitmapIdent.SelectedItem; ParsedBitmap pm = new ParsedBitmap(ref bd.meta, map); bitmapInfo bi = (bitmapInfo)sd.link; if (bi == null) { bi = new bitmapInfo(); bi.BitmapIndex = bd.bitmNumber; bi.BitmapIndexMax = (short)pm.Properties.Length; bi.Image = (Bitmap)bd.link; sd.link = bi; } if (bi.BitmapIndex != bd.bitmNumber) { bi.BitmapIndex = bd.bitmNumber; bi.Image = (Bitmap)bd.link; } if (bi.BitmapIndexMax > 1) cbBitmapIndex.Enabled = true; for (int i = 0; i < bi.BitmapIndexMax; i++) cbBitmapIndex.Items.Add(i.ToString()); cbBitmapIndex.SelectedIndex = Math.Min(bd.bitmNumber, bi.BitmapIndexMax - 1); } }
private void cbBitmapIdent_SelectedIndexChanged(object sender, EventArgs e) { if (!cbBitmapIdent.Focused) return; baseData sd = (baseData)cbBitmapIdent.SelectedItem; bitmapInfo bi = (bitmapInfo)sd.link; bitmapData bsd = (bitmapData)lbBitmaps.SelectedItem; if (sd.meta == null) { sd.meta = new Meta(map); map.OpenMap(MapTypes.MainMenu); sd.meta.ReadMetaFromMap(sd.offset, false); map.CloseMap(); sd.title = sd.meta.name; sd.link = bi = new bitmapInfo(); ParsedBitmap pm = new ParsedBitmap(ref sd.meta, map); bi.BitmapIndexMax = (short)pm.Properties.Length; bi.BitmapIndex = 0; bi.Image = pm.FindChunkAndDecode(bi.BitmapIndex, 0, 0, ref sd.meta, map, 0, 0); sd.link = bi; } bsd.bitmNumber = bi.BitmapIndex; bsd.link = bi.Image; bsd.meta = sd.meta; bsd.bitmIdent = bsd.meta.ident; bsd.title = sd.title.Substring(sd.title.LastIndexOf('\\') + 1); #region do this to update text in listbox, otherwise although changed, it doesn't show Control control = this.ActiveControl; while (control is ContainerControl) { control = ((ContainerControl)control).ActiveControl; } int selIndex = lbBitmaps.SelectedIndex; ((bitmapData)lbBitmaps.SelectedItem).title = bsd.title; // Actually update ListBox with data source ((CurrencyManager)lbBitmaps.BindingContext[lbBitmaps.DataSource]).Refresh(); #endregion }