private void ButtonStart_Click(object sender, RoutedEventArgs e)
        {
            String textpath = textPath.Text;

            if (textpath == "")
            {
                return;
            }
            isStart = true;
            ButtonStart.IsEnabled = false;
            Buttonstop.IsEnabled  = true;
            new Thread(() =>
            {
                Thread.CurrentThread.IsBackground = true;

                while (listDownload.Count > 0 && isStart == true)
                {
                    Download d  = listDownload[0];
                    d.name      = d.name.Replace("/", "-");
                    d.name      = d.name.Replace("\\", "-");
                    d.name      = d.name.Replace(":", "-");
                    d.name      = d.name.Replace("*", ".");
                    d.name      = d.name.Replace("?", "!");
                    d.name      = d.name.Replace("\"", "-");
                    d.name      = d.name.Replace("<", "-");
                    d.name      = d.name.Replace(">", "-");
                    d.name      = d.name.Replace("|", "-");
                    String path = textpath + d.name + "\\";
                    System.IO.Directory.CreateDirectory(path);
                    while (d.chapters.Count > 0 && isStart == true)
                    {
                        Chapters c   = d.chapters[0];
                        String path2 = path;
                        if (c.getTome() != null && isStart == true)
                        {
                            if (c.getTome().getTitle() != null && c.getTome().getTitle() != "" && isStart == true)
                            {
                                c.getTome().title = c.getTome().title.Replace(":", "-");
                                c.getTome().title = c.getTome().title.Replace("*", ".");
                                c.getTome().title = c.getTome().title.Replace("?", "!");
                                c.getTome().title = c.getTome().title.Replace("<", "-");
                                c.getTome().title = c.getTome().title.Replace(">", "-");
                                c.getTome().title = c.getTome().title.Replace("|", "-");

                                path2 = path2 + "Tome " + c.getTome().getNumber() + " - " + c.getTome().getTitle() + "\\";
                            }
                            else if (isStart == true)
                            {
                                path2 = path2 + "Tome " + c.getTome().getNumber() + "\\";
                            }

                            System.IO.Directory.CreateDirectory(path2);
                        }

                        List <String> pages_link = null;
                        int error = 0;

                        pages_link = allSites[d.site - 1].prepareDownload(c);

                        if (error == 0)
                        {
                            int nb_page_real = 0;
                            int nb_page_max  = c.getMax();

                            foreach (String l in pages_link)
                            {
                                int nb_try = 0;

                                while (nb_try < 3)
                                {
                                    try
                                    {
                                        if (nb_try == 0)
                                        {
                                            nb_page_real++;
                                        }
                                        allSites[d.site - 1].downloadScan(l, nb_page_real - 1, c, path2);
                                        pg1Val = (int)((double)((double)(nb_page_real) / (double)(nb_page_max)) * 100.0);
                                        nb_try = 3;
                                    }
                                    catch (Exception g)
                                    {
                                        Debug.WriteLine("Error : " + d.name + " " + c.getNumber() + " page " + nb_page_real);
                                        //listBoxErrors.Items.Add("Error : " + d.name + " " + c.getNumber() + " page " + nb_page_real);
                                        nb_try++;
                                    }
                                }
                            }
                        }
                        d.total_to_dl_real++;
                        pg2Val = (int)((double)((double)(d.total_to_dl_real) / (double)(d.total_to_dl)) * 100.0);
                        if (d.chapters[0].is_chapter)
                        {
                            d.nb_chapter--;
                        }
                        else
                        {
                            d.nb_tome--;
                        }
                        dl_text_val   = d.nb_tome + " Tomes - " + d.nb_chapter + " Chapitres";
                        isTextRefresh = true;
                        d.chapters.RemoveAt(0);
                        saveDownload();
                    }

                    if (listDownload[0].chapters.Count <= 0)
                    {
                        pg1Val = 0;
                        pg2Val = 0;
                        listDownload.RemoveAt(0);
                    }

                    saveDownload();
                    isDownloadRefresh = true;
                }
                isStart = false;
            }).Start();
        }
 private void ButtonClose_Click(object sender, RoutedEventArgs e)
 {
     current_dl = null;
     this.Close();
 }
        private void addDownloadListBox(Download dl, int index)
        {
            Grid g = new Grid();

            g.Height = 70;

            Image img = new Image();

            img.HorizontalAlignment = HorizontalAlignment.Left;
            img.Width = 70;

            if (dl.cover_path != null)
            {
                BitmapImage bi3 = new BitmapImage();
                bi3.BeginInit();
                bi3.UriSource   = new Uri(dl.cover_path, UriKind.RelativeOrAbsolute);
                bi3.CacheOption = BitmapCacheOption.OnLoad;
                bi3.EndInit();

                img.Source = bi3;
            }
            else
            {
                img.Source = null;
            }

            g.Children.Add(img);

            TextBlock tb1 = new TextBlock();

            tb1.Margin            = new Thickness(75, 0, 0, 0);
            tb1.TextWrapping      = TextWrapping.Wrap;
            tb1.Text              = dl.name;
            tb1.VerticalAlignment = VerticalAlignment.Top;
            g.Children.Add(tb1);

            if (index == 0)
            {
                save_tb2                   = new TextBlock();
                save_tb2.Margin            = new Thickness(75, 19, 0, 0);
                save_tb2.TextWrapping      = TextWrapping.Wrap;
                save_tb2.Text              = dl.nb_tome + " Tomes - " + dl.nb_chapter + " Chapitres";
                save_tb2.VerticalAlignment = VerticalAlignment.Top;
                g.Children.Add(save_tb2);
            }
            else
            {
                TextBlock tb2 = new TextBlock();
                tb2.Margin            = new Thickness(75, 19, 0, 0);
                tb2.TextWrapping      = TextWrapping.Wrap;
                tb2.Text              = dl.nb_tome + " Tomes - " + dl.nb_chapter + " Chapitres";
                tb2.VerticalAlignment = VerticalAlignment.Top;
                g.Children.Add(tb2);
            }

            if (index == 0)
            {
                pg1                   = new ProgressBar();
                pg1.Margin            = new Thickness(75, 0, 10, 20);
                pg1.Height            = 10;
                pg1.VerticalAlignment = VerticalAlignment.Bottom;

                pg2                   = new ProgressBar();
                pg2.Margin            = new Thickness(75, 0, 10, 0);
                pg2.Height            = 10;
                pg2.VerticalAlignment = VerticalAlignment.Bottom;
                pg2Val                = (int)((double)((double)(dl.total_to_dl_real) / (double)(dl.total_to_dl)) * 100.0);

                g.Children.Add(pg1);
                g.Children.Add(pg2);
            }

            Button bt1 = new Button();

            bt1.HorizontalAlignment = HorizontalAlignment.Right;
            bt1.Margin            = new Thickness(0, 1, 38, 0);
            bt1.VerticalAlignment = VerticalAlignment.Top;
            bt1.Width             = 23;
            bt1.Height            = 23;
            bt1.Tag        = dl.index;
            bt1.Style      = FindResource("MyButton") as Style;
            bt1.Background = new ImageBrush {
                ImageSource = new BitmapImage(new Uri("pack://application:,,,/Ressources/Edit.png", UriKind.RelativeOrAbsolute))
            };
            bt1.Click += buttonEditDL_Click;

            g.Children.Add(bt1);

            Button bt2 = new Button();

            bt2.HorizontalAlignment = HorizontalAlignment.Right;
            bt2.Margin            = new Thickness(0, 1, 10, 0);
            bt2.VerticalAlignment = VerticalAlignment.Top;
            bt2.Width             = 23;
            bt2.Height            = 23;
            bt2.Tag        = dl.index;
            bt2.Style      = FindResource("MyButton") as Style;
            bt2.Background = new ImageBrush {
                ImageSource = new BitmapImage(new Uri("pack://application:,,,/Ressources/Delete.png", UriKind.RelativeOrAbsolute))
            };
            bt2.Click += buttonDeleteDL_Click;

            g.Children.Add(bt2);

            listBoxDownload.Items.Add(g);
        }