private void RunWzObjExtraction(object param) { ChangeApplicationState(false); List <WzObject> objsToDump = (List <WzObject>)((object[])param)[0]; string path = (string)((object[])param)[1]; ProgressingWzSerializer serializer = (ProgressingWzSerializer)((object[])param)[2]; UpdateProgressBar(MainPanel.mainProgressBar, 0, false, true); if (serializer is IWzObjectSerializer) { UpdateProgressBar(MainPanel.mainProgressBar, objsToDump.Count, true, true); foreach (WzObject obj in objsToDump) { ((IWzObjectSerializer)serializer).SerializeObject(obj, path); UpdateProgressBar(MainPanel.mainProgressBar, 1, false, false); } } else if (serializer is WzNewXmlSerializer) { UpdateProgressBar(MainPanel.mainProgressBar, 1, true, true); ((WzNewXmlSerializer)serializer).ExportCombinedXml(objsToDump, path); UpdateProgressBar(MainPanel.mainProgressBar, 1, false, false); } threadDone = true; }
private void WzImporterThread(object param) { ChangeApplicationState(false); object[] arr = (object[])param; ProgressingWzSerializer deserializer = (ProgressingWzSerializer)arr[0]; string[] files = (string[])arr[1]; WzNode parent = (WzNode)arr[2]; byte[] iv = (byte[])arr[3]; WzObject parentObj = (WzObject)parent.Tag; if (parentObj is WzFile) { parentObj = ((WzFile)parentObj).WzDirectory; } UpdateProgressBar(MainPanel.mainProgressBar, files.Length, true, true); foreach (string file in files) { List <WzObject> objs; try { if (deserializer is WzXmlDeserializer) { objs = ((WzXmlDeserializer)deserializer).ParseXML(file); } else { objs = new List <WzObject> { ((WzImgDeserializer)deserializer).WzImageFromIMGFile(file, iv, Path.GetFileName(file)) } }; } catch (ThreadAbortException) { return; } catch (Exception e) { Warning.Error(string.Format(HaRepacker.Properties.Resources.MainInvalidFileError, file, e.Message)); UpdateProgressBar(MainPanel.mainProgressBar, 1, false, false); continue; } foreach (WzObject obj in objs) { if (((obj is WzDirectory || obj is WzImage) && parentObj is WzDirectory) || (obj is WzImageProperty && parentObj is IPropertyContainer)) { WzNode node = new WzNode(obj); InsertWzNodeThreadSafe(node, parent); } } UpdateProgressBar(MainPanel.mainProgressBar, 1, false, false); } threadDone = true; }
private void ProgressBarThread(object param) { ProgressingWzSerializer serializer = (ProgressingWzSerializer)param; while (!threadDone) { int total = serializer.Total; UpdateProgressBar(MainPanel.secondaryProgressBar, total, true, true); UpdateProgressBar(MainPanel.secondaryProgressBar, Math.Min(total, serializer.Current), false, true); Thread.Sleep(500); } UpdateProgressBar(MainPanel.mainProgressBar, 0, true, true); UpdateProgressBar(MainPanel.secondaryProgressBar, 0, false, true); ChangeApplicationState(true); threadDone = false; }