public void StartButtonClick(object sender, EventArgs e)
{
ParserData.Parser data = m_data.Data[parserBox.SelectedIndex];
PageParser parser = m_parsers[data.ParserType];
parser.Parser = data;
parser.Locale = (Locale)localeBox.SelectedItem;
parser.Flags = GetSubparsers();
ParsingType type = (ParsingType)parsingControl.SelectedIndex;
m_worker = new Worker(type, parser, WorkerPageDownloaded);
Worker.ParserValue value = default(Worker.ParserValue);
switch (type)
{
case ParsingType.TypeBySingleValue:
{
value.Id = (uint)valueBox.Value;
break;
}
case ParsingType.TypeByList:
{
value.Array = GetEntriesList().Data;
numericUpDown.Maximum = progressBar.Maximum = value.Array.Length;
break;
}
case ParsingType.TypeByMultipleValue:
{
value.Start = (uint)rangeStart.Value;
value.End = (uint)rangeEnd.Value;
if (value.Start > value.End)
{
ShowMessageBox(MessageType.MultipleTypeBigger);
return;
}
if (value.Start == value.End)
{
ShowMessageBox(MessageType.MultipleTypeEqual);
return;
}
numericUpDown.Maximum = progressBar.Maximum = (int)(value.End - value.Start) + 1;
break;
}
case ParsingType.TypeByWoWHeadFilter:
{
value.Maximum = (data.CountLimit / MaxIdCountPerRequest);
numericUpDown.Maximum = progressBar.Maximum = (int)value.Maximum + 1;
break;
}
default:
return;
}
m_worker.SetValue(value);
abortButton.Enabled = true;
subparsersListBox.Enabled = settingsBox.Enabled = startButton.Enabled = false;
numericUpDown.Value = progressBar.Value = 0;
SetLabelText(Resources.Label_Working);
Requests.Compress = Settings.Default.DataCompression;
backgroundWorker.RunWorkerAsync();
}