Example #1
0
        private void _BtnWork_Click(object sender, RoutedEventArgs e)
        {
            string inputFolder  = _TxtInputFolder.Text;
            string inputWater   = _TxtInputWater.Text;
            string outputFolder = _TxtOutputFolder.Text;

            if (string.IsNullOrEmpty(inputFolder))
            {
                _Log.WriteException($"Input folder not valid");
                return;
            }
            if (string.IsNullOrEmpty(inputWater))
            {
                _Log.WriteException($"Input watermark not valid");
                return;
            }
            if (string.IsNullOrEmpty(outputFolder))
            {
                _Log.WriteException($"Output folder not valid");
                return;
            }

            try
            {
                inputFolder  = Path.GetFullPath(inputFolder);
                inputWater   = Path.GetFullPath(inputWater);
                outputFolder = Path.GetFullPath(outputFolder);

                _TxtInputFolder.Text  = inputFolder;
                _TxtInputWater.Text   = inputWater;
                _TxtOutputFolder.Text = outputFolder;
            }
            catch (System.Exception exception)
            {
                _Log.WriteException(exception);
                return;
            }

            if (_TxtWaterScale.Text.Length != 0)
            {
                _TxtWaterScale.Text = _TxtWaterScale.Text.Replace(',', '.');
            }

            double waterScale = 0.5;

            if (
                string.IsNullOrWhiteSpace(_TxtWaterScale.Text) ||
                double.TryParse(_TxtWaterScale.Text, out waterScale) == false
                )
            {
                waterScale = 0.5;
                _Log.WriteWarning($"Watermark scale not valid : [{_TxtWaterScale.Text}], using default scale {waterScale}");
            }

            _TxtWaterScale.Text = waterScale.ToString();

            _BtnProcessImages.IsEnabled = false;
            _PrgWaterProcess.Value      = 0;

            var waterTask = new WatermarkTask();

            waterTask.WatermarkBulkArgs = new WatermarkBulkArgs()
            {
                InputFolder     = inputFolder,
                InputWaterImage = inputWater,
                OutputFolder    = outputFolder,
                ParentTask      = waterTask,
                ForceWrite      = true,
                WaterScale      = waterScale
            };
            waterTask.OnProgressChanged += WaterTask_OnProgressChanged;

            Task.Run(() =>
            {
                Watermark.MarkImages(waterTask.WatermarkBulkArgs);
            }).ContinueWith(t =>
            {
                if (t.Exception != null)
                {
                    _Log.WriteException(t.Exception);
                }
                Dispatcher.Invoke(() =>
                {
                    _BtnProcessImages.IsEnabled = true;
                });
            });
        }
Example #2
0
        private static IEnumerable <ITask> ParseChildren(XmlNode parent)
        {
            if (parent == null || parent.ChildNodes.Count == 0)
            {
                return(null);
            }

            var tasks = new List <ITask>();

            foreach (XmlNode child in parent.ChildNodes)
            {
                if (child.NodeType != XmlNodeType.Element)
                {
                    continue;
                }
                var children = ParseChildren(child);

                ITask task = null;
                var   transliteratePath = child.Attributes["transliteratePath"] != null && bool.Parse(child.Attributes["transliteratePath"].Value);
                switch (child.Name)
                {
                case "copy":

                    var copy         = new CopyTask(null, children, child.Attributes["target"].Value, transliteratePath);
                    var overrideMode = OverwriteMode.Rename;
                    if (child.Attributes["overwriteMode"] != null)
                    {
                        overrideMode = (OverwriteMode)Enum.Parse(typeof(OverwriteMode), child.Attributes["overwriteMode"].Value, true);
                    }
                    copy.OverrideMode = overrideMode;
                    task = copy;
                    break;

                case "xslt":
                    task = new XsltTask(child.Attributes["filePathKey"].Value, null, children);
                    break;

                case "crop":
                    task = new CropTask(child.Attributes["xKey"].Value, child.Attributes["yKey"].Value,
                                        child.Attributes["widthKey"].Value, child.Attributes["heightKey"].Value, null, children);
                    break;

                case "watermark":
                    task = new WatermarkTask(child.Attributes["textKey"].Value, child.Attributes["textPositionKey"].Value, null, children);
                    break;

                case "temp":
                    task = new TempTask(null, children);
                    break;

                case "delete":
                    task = new DeleteTask(null, children, bool.Parse(child.Attributes["deleteEmptyFolders"].Value));
                    break;

                case "dpof":
                    var targetDirectory      = child.Attributes["targetDirectory"].Value;
                    var channelDirectoryName = child.Attributes["channelDirectoryName"].Value;
                    var copyCountKey         = child.Attributes["copyCountKey"].Value;
                    var paperSizeKey         = child.Attributes["paperSizeKey"].Value;
                    var channelKey           = child.Attributes["printChannelKey"].Value;
                    task = new DpofTask(null, children, copyCountKey, paperSizeKey, channelDirectoryName, channelKey, targetDirectory, transliteratePath);
                    break;

                case "convert":
                    ConvertTask.ConvertFormat format;
                    Enum.TryParse(child.Attributes["to"].Value, true, out format);
                    task = new ConvertTask(format, null, children);
                    break;
                }
                if (task != null)
                {
                    if (children != null)
                    {
                        foreach (var ch in children)
                        {
                            ch.ParentTask = task;
                        }
                    }
                    tasks.Add(task);
                }
            }
            return(tasks);
        }