Ejemplo n.º 1
0
        /// <summary>
        /// 开始转换
        /// </summary>
        public void StartConvert(object p)
        {
            var savePath   = _mainForm.LbllblSavePath.Text;
            var parameters = p as List <object>;

            _convertingtablerowIndex = Convert.ToInt32(parameters[0]);
            var             noticeAction          = parameters[1];
            var             convertCompleteAction = parameters[2];
            ConvertComplete completedCalback      = convertCompleteAction as ConvertComplete;
            ProgressNotice  noticeCallback        = noticeAction as ProgressNotice;
            var             imgType = parameters[3].ToString();

            foreach (Row row in this.tableFiles.TableModel.Rows)
            {
                var filePath     = row.Cells[FilePathColIndex].Text;
                var fileName     = row.Cells[FileNameColIndex].Text;
                var fullFileName = Path.Combine(savePath, fileName.Contains(".") ?
                                                fileName.Remove(fileName.LastIndexOf(".")) : fileName);
                if (!Directory.Exists(fullFileName))
                {
                    Directory.CreateDirectory(fullFileName);
                }

                try
                {
                    row.Tag = ConvertState.Converting;
                    HandleDocumentToImg(filePath, fullFileName, imgType, noticeCallback, _convertingtablerowIndex);
                }
                catch (Exception ex)
                {
                    row.Tag = ConvertState.NotConvert;
                    if (ex is InvalidPasswordException)
                    {
                        var noticeResult = new NoticeResult
                        {
                            Success = false,
                            ErrMsg  = $"文件\n{fileName}\n是加密文件,请先解密!"
                        };
                        this.Invoke(noticeCallback, noticeResult);
                    }
                    else
                    {
                        throw;
                    }
                }
                //标志为转换完成
                if ((ConvertState)row.Tag == ConvertState.Converting)
                {
                    row.Tag = ConvertState.Converted;
                }
                _convertingtablerowIndex++;
            }
            this.Invoke(completedCalback);
            convertThread = null;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Декодируем файлы сохранений
        /// </summary>
        /// <param name="moveOriginal">Флаг переноса оригинальных файлов</param>
        /// <param name="path">Путь для поиска webp файлов</param>
        /// <returns>True - запуск успешен. False - папка не найдена.</returns>
        public bool DecodeFiles(string path, bool moveOriginal)
        {
            bool ex = false;

            //Если папка действительно существует
            if (Directory.Exists(path))
            {
                //Папка успешно получена
                ex = true;
                //Запускаем работу в отдельном потоке
                new Thread(() =>
                {
                    //Обнуляем количество сконвертированных файлов
                    int converted = 1;
                    //Инициализируем информацию о директории
                    DirectoryInfo di = new DirectoryInfo(path);
                    //Получаем список *.webp файлов в директории
                    List <FileInfo> FileList = di.GetFiles("*.webp").ToList();
                    //Проходимся по всем файлам директории
                    foreach (var file in FileList)
                    {
                        //Выполняем операции над файлом
                        FileWork(file, moveOriginal);
                        //Если работа была отменена
                        if (!isWork)
                        {
                            //Выходим из цикла
                            break;
                        }
                        //Вызываем ивент обновления
                        ConvertProgress?.Invoke(converted++, FileList.Count);
                    }

                    //Если работа всё ещё идёт
                    if (isWork)
                    {
                        //Открываем папку
                        Process.Start(savePath);
                        //Вызываем ивент завершения конвертации
                        ConvertComplete?.Invoke();
                    }
                }).Start();
            }
            return(ex);
        }
Ejemplo n.º 3
0
        private void btnStartConvert_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(_mainForm.LbllblSavePath.Text.Trim()))
            {
                YMessageBox.ShowMsgBox(100, "请先选择要保存的路径!");
                return;
            }

            this.btnStartConvert.Text = "转换中...";
            SetConvertBtnEnable(false);
            ProgressNotice  notice           = ProgressAction;//创建一个委托对象
            ConvertComplete convertCompleted = ConvertCompleteAction;

            if (convertThread != null)
            {
                convertThread = null;
            }
            convertThread = new Thread(StartConvert);
            var imgType = GetConvertedImgType();

            convertThread.Start(new List <object> {
                0, notice, convertCompleted, imgType
            });
        }
Ejemplo n.º 4
0
 private void TableFiles_CellMouseDown(object sender, XPTable.Events.CellMouseEventArgs e)
 {
     if (e.Column == DeleteColIndex)
     {
         var currentRow = this.tableFiles.TableModel.Rows[e.Row];
         this.tableFiles.TableModel.Rows.RemoveAt(e.Row);
         if (this.tableFiles.TableModel.Rows.Count <= 0)
         {
             if (convertThread != null && convertThread.IsAlive)
             {
                 convertThread.Abort();
             }
             SetConvertBtnVisiable(false);
             ConvertCompleteAction();
             AddDragTip();
             return;
         }
         //判断移除行转换的状态
         //重启线程转换
         ProgressNotice  notice           = ProgressAction;//创建一个委托对象
         ConvertComplete convertCompleted = ConvertCompleteAction;
         if (convertThread != null && convertThread.IsAlive)
         {
             convertThread.Abort();
         }
         convertThread = new Thread(StartConvert);
         var imgType = GetConvertedImgType();
         if ((ConvertState)currentRow.Tag == ConvertState.Converted)
         {
             _convertingtablerowIndex--;
         }
         convertThread.Start(new List <object> {
             _convertingtablerowIndex, notice, convertCompleted, imgType
         });
     }
 }