예제 #1
0
        public void Load_Empty()
        {
            IO.Copy(GetSource("SettingsEmpty.json"), LocalSettingPath(), true);
            IO.Copy(GetSource("SettingsEmpty.json"), SharedSettingPath(), true);
            var asm = Assembly.GetExecutingAssembly();
            var src = new SettingFolder(asm, RootDirectory(), IO);

            Assert.That(src.TryLoad(), Is.True);
            Assert.That(src.Value.Width, Is.EqualTo(1100));
            Assert.That(src.Value.Height, Is.EqualTo(650));
            Assert.That(src.Value.DataDirectory, Is.EqualTo(RootDirectory()));
            Assert.That(src.Shared.StartUri, Is.Null);
            Assert.That(src.Shared.Capacity, Is.EqualTo(100));
            Assert.That(src.Shared.EnableNewWindow, Is.False);
            Assert.That(src.Shared.EnableMonitorMessage, Is.True);
            Assert.That(src.Shared.LightMode, Is.False);
            Assert.That(src.Shared.CheckUpdate, Is.True);
            Assert.That(src.Shared.HighInterval.Value, Is.EqualTo(TimeSpan.FromHours(1)));
            Assert.That(src.Shared.LowInterval.Value, Is.EqualTo(TimeSpan.FromDays(1)));
            Assert.That(src.Shared.InitialDelay.Value, Is.EqualTo(TimeSpan.FromSeconds(3)));
            Assert.That(src.Lock.IsReadOnly, Is.False);
            Assert.That(src.Lock.IsReadOnly, Is.False);
            Assert.That(src.Lock.UserName, Is.EqualTo(Environment.UserName));
            Assert.That(src.Lock.MachineName, Is.EqualTo(Environment.MachineName));
            Assert.That(src.Lock.Sid, Does.StartWith("S-1-5-21"));
        }
예제 #2
0
 private static void ModeRestore(SettingFolder sf)
 {
     try
     {
         if (sf == null)
         {
             Logger.Error(LOGNAME, "An error occurred while retrieving SettingFolder", null);
             return;
         }
         if (Db.Load(sf, false) == false)
         {
             Logger.Error(LOGNAME, "An error occurred while loading database", null);
             return;
         }
         if (FileDownloader.Start() == false)
         {
             Logger.Error(LOGNAME, "An error occurred while starting filedownloader", null);
             return;
         }
     }
     catch (Exception ex)
     {
         Logger.Error(LOGNAME, ex.Message, ex);
     }
 }
예제 #3
0
        /* ----------------------------------------------------------------- */
        ///
        /// Main
        ///
        /// <summary>
        /// CoReceiver のエントリポイントです。
        /// </summary>
        ///
        /* ----------------------------------------------------------------- */
        static void Main(string[] args)
        {
            // ログ出力用の処理です。不要な場合、削除して構いません。
            InitLog(args);

            // まず、プログラム引数を ArgumentCollection クラスを用いて解析します。
            // 今回の連携デモでは JSON データの保存されているパスが DocumentName
            // オプション引数に指定されているため、SettingFolder クラスに対して
            // Format.Json および DocumentName の値を指定して初期化します。
            // その後、Load メソッドを実行する事により JSON 形式の設定内容が読み込まれます。
            var src      = new ArgumentCollection(args);
            var settings = new SettingFolder(Format.Json, src.Options["DocumentName"]);

            settings.Load();

            // SettingFolder オブジェクトに対して、プログラム引数の内容を反映させるため
            // Set メソッドを実行します。
            // ただし、Set メソッドは Destination (保存場所)の値を上書きします。
            // 今回の連携デモでは、JSON データに記載された場所に PDF ファイルを保存する事を
            // 想定しているため、ローカル変数にいったん退避させた後、Set メソッド適用後に
            // 再度その値を反映させる事とします。
            var dest = settings.Value.Destination;

            settings.Set(src);
            settings.Value.Destination = dest;

            // 設定が完了したら、Facade クラスで変換処理を実行します。
            using (var facade = new Facade(settings)) facade.Invoke();

            // 最後に、印刷前プログラムが作成した一時ファイルを削除します。
            File.Delete(settings.Location);
        }
예제 #4
0
        public void Set()
        {
            var src = new[]
            {
                "/DeleteOnClose",
                "/DocumentName",
                "(234)?File.txt - Sample Application",
                "/InputFile",
                @"C:\WINDOWS\CubePDF\PS3AEE.tmp",
                "/MachineName",
                @"\\APOLLON",
                "/UserName",
                "clown",
                "/Exec",
                @"C:\Program Files\CubePDF\cubepdf.exe",
            };

            var dest = new SettingFolder(Assembly.GetExecutingAssembly());

            dest.Set(src);

            var path = System.IO.Path.Combine(
                Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
                System.IO.Path.ChangeExtension(dest.DocumentName.Value, ".pdf")
                );

            Assert.That(dest.Digest, Is.Null);
            Assert.That(dest.DocumentName.Source, Is.EqualTo("(234)?File.txt - Sample Application"));
            Assert.That(dest.DocumentName.Value, Is.EqualTo("(234)_File.txt"));
            Assert.That(dest.Value.DeleteSource, Is.True);
            Assert.That(dest.Value.Source, Is.EqualTo(@"C:\WINDOWS\CubePDF\PS3AEE.tmp"));
            Assert.That(dest.Value.Destination, Is.EqualTo(path));
        }
예제 #5
0
        static void Main(string[] args) => Source.LogError(() =>
        {
            _ = Logger.ObserveTaskException();
            Source.LogInfo(Source.Assembly);
            Source.LogInfo($"[ {args.Join(" ")} ]");

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            var src = new SettingFolder();
            src.Load();

            var im = args.Length > 0 && args[0].FuzzyEquals("/Install");
            if (im)
            {
                Source.LogInfo("Mode:Install");
            }

            var view             = new MainWindow();
            var vm               = new SettingViewModel(src, SynchronizationContext.Current);
            vm.Associate.Changed = im;
            vm.Load();
            view.Bind(vm);

            Application.Run(view);
        });
예제 #6
0
 /* ----------------------------------------------------------------- */
 ///
 /// Clear
 ///
 /// <summary>
 /// Disables all association settings.
 /// The method is used when uninstalling.
 /// </summary>
 ///
 /* ----------------------------------------------------------------- */
 static void Clear(SettingFolder settings)
 {
     foreach (var key in settings.Value.Associate.Value.Keys.ToArray())
     {
         settings.Value.Associate.Value[key] = false;
     }
 }
예제 #7
0
        public void Normalize()
        {
            var src = new SettingFolder(Assembly.GetExecutingAssembly());

            src.Normalize();

            var dest = src.Value;

            Assert.That(dest.Format, Is.EqualTo(Format.Pdf));
            Assert.That(dest.Resolution, Is.EqualTo(600));
            Assert.That(dest.Orientation, Is.EqualTo(Orientation.Auto));
            Assert.That(dest.Destination, Is.Not.Null.And.Not.Empty);

            var md = dest.Metadata;

            Assert.That(md.Title, Is.Empty);
            Assert.That(md.Author, Is.Empty);
            Assert.That(md.Subject, Is.Empty);
            Assert.That(md.Keywords, Is.Empty);
            Assert.That(md.Creator, Is.EqualTo("CubePDF"));
            Assert.That(md.Version.Major, Is.EqualTo(1));
            Assert.That(md.Version.Minor, Is.EqualTo(7));

            var pm = dest.Encryption.Permission;

            Assert.That(pm.Accessibility, Is.EqualTo(PermissionValue.Allow), nameof(pm.Accessibility));
            Assert.That(pm.CopyContents, Is.EqualTo(PermissionValue.Deny), nameof(pm.CopyContents));
            Assert.That(pm.InputForm, Is.EqualTo(PermissionValue.Deny), nameof(pm.InputForm));
            Assert.That(pm.ModifyAnnotations, Is.EqualTo(PermissionValue.Deny), nameof(pm.ModifyAnnotations));
            Assert.That(pm.ModifyContents, Is.EqualTo(PermissionValue.Deny), nameof(pm.ModifyContents));
            Assert.That(pm.Print, Is.EqualTo(PermissionValue.Deny), nameof(pm.Print));
        }
예제 #8
0
        public void Load()
        {
            Copy();
            var asm = Assembly.GetExecutingAssembly();
            var src = new SettingFolder(asm, RootDirectory(), IO);

            Assert.That(src.TryLoad(), Is.True);
            Assert.That(src.Value.Width, Is.EqualTo(1100));
            Assert.That(src.Value.Height, Is.EqualTo(650));
            Assert.That(src.Value.DataDirectory, Is.EqualTo(RootDirectory()));
            Assert.That(src.Shared.StartUri, Is.EqualTo(new Uri("https://github.com/blog.atom")));
            Assert.That(src.Shared.Capacity, Is.EqualTo(5));
            Assert.That(src.Shared.EnableNewWindow, Is.True);
            Assert.That(src.Shared.EnableMonitorMessage, Is.True);
            Assert.That(src.Shared.LightMode, Is.False);
            Assert.That(src.Shared.CheckUpdate, Is.True);
            Assert.That(src.Shared.HighInterval.Value, Is.EqualTo(TimeSpan.FromHours(1)));
            Assert.That(src.Shared.LowInterval.Value, Is.EqualTo(TimeSpan.FromDays(1)));
            Assert.That(src.Shared.InitialDelay.Value, Is.EqualTo(TimeSpan.FromSeconds(3)));
            Assert.That(src.Lock.IsReadOnly, Is.False);
            Assert.That(src.Lock.IsReadOnly, Is.False);
            Assert.That(src.Lock.UserName, Is.EqualTo(Environment.UserName));
            Assert.That(src.Lock.MachineName, Is.EqualTo(Environment.MachineName));
            Assert.That(src.Lock.Sid, Does.StartWith("S-1-5-21"));
        }
예제 #9
0
        public void Load()
        {
            var temp    = IO.Combine(Environment.SpecialFolder.CommonApplicationData.GetName(), @"CubeSoft\CubePDF");
            var desktop = Environment.SpecialFolder.Desktop.GetName();
            var src     = new SettingFolder(
                Assembly.GetExecutingAssembly(),
                Cube.DataContract.Format.Registry,
                $@"CubeSoft\CubePDF\{nameof(SettingTest)}",
                IO
            );

            src.Load();

            var dest = src.Value;
            Assert.That(dest.Format,             Is.EqualTo(Format.Pdf));
            Assert.That(dest.SaveOption,         Is.EqualTo(SaveOption.Overwrite));
            Assert.That(dest.Grayscale,          Is.False);
            Assert.That(dest.EmbedFonts,         Is.True);
            Assert.That(dest.ImageFilter,        Is.True);
            Assert.That(dest.Downsampling,       Is.EqualTo(Downsampling.None));
            Assert.That(dest.Resolution,         Is.AtLeast(72));
            Assert.That(dest.Orientation,        Is.EqualTo(Orientation.Auto));
            Assert.That(dest.CheckUpdate,        Is.True);
            Assert.That(dest.Linearization,      Is.False);
            Assert.That(dest.Language,           Is.EqualTo(Language.Auto));
            Assert.That(dest.PostProcess,        Is.EqualTo(PostProcess.None));
            Assert.That(dest.UserProgram,        Is.Empty);
            Assert.That(dest.ExplicitDirectory,  Is.False);
            Assert.That(dest.PlatformCompatible, Is.True);
            Assert.That(dest.DeleteSource,       Is.False);
            Assert.That(dest.SourceVisible,      Is.False);
            Assert.That(dest.Source,             Is.Empty);
            Assert.That(dest.Destination,        Is.EqualTo(desktop));
            Assert.That(dest.Temp,               Is.EqualTo(temp));
            Assert.That(dest.Busy,               Is.False);

            var md = dest.Metadata;
            Assert.That(md.Title,                Is.Empty);
            Assert.That(md.Author,               Is.Empty);
            Assert.That(md.Subject,              Is.Empty);
            Assert.That(md.Keywords,             Is.Empty);
            Assert.That(md.Creator,              Is.Empty);
            Assert.That(md.Version.Major,        Is.EqualTo(1));
            Assert.That(md.Version.Minor,        Is.EqualTo(7));

            var ec = dest.Encryption;
            Assert.That(ec.Enabled,              Is.False);
            Assert.That(ec.Method,               Is.EqualTo(EncryptionMethod.Unknown));
            Assert.That(ec.OpenWithPassword,     Is.False);
            Assert.That(ec.OwnerPassword,        Is.Empty);
            Assert.That(ec.UserPassword,         Is.Empty);

            var pm = dest.Encryption.Permission;
            Assert.That(pm.Accessibility,        Is.EqualTo(PermissionValue.Allow), nameof(pm.Accessibility));
            Assert.That(pm.CopyContents,         Is.EqualTo(PermissionValue.Allow), nameof(pm.CopyContents));
            Assert.That(pm.InputForm,            Is.EqualTo(PermissionValue.Allow), nameof(pm.InputForm));
            Assert.That(pm.ModifyAnnotations,    Is.EqualTo(PermissionValue.Allow), nameof(pm.ModifyAnnotations));
            Assert.That(pm.ModifyContents,       Is.EqualTo(PermissionValue.Allow), nameof(pm.ModifyContents));
            Assert.That(pm.Print,                Is.EqualTo(PermissionValue.Allow), nameof(pm.Print));
        }
예제 #10
0
        private static void ScanFiles(DirectoryInfo di, SettingFolder sf)
        {
            try
            {
                FileInfo[] files = di.GetFiles();
                foreach (FileInfo fi in files)
                {
                    if (fi.Length < Settings.Settings.Current.FileMinSize)
                    {
                        continue;
                    }
                    string fileId = fi.FullName;
                    if (string.IsNullOrEmpty(fileId))
                    {
                        continue;
                    }
                    DbFile dbf = Db.FileGet(fileId);

                    if (dbf == null) //file not in db
                    {
                        string name = GetFileName(fi, sf);
                        if (CheckFilters(name) == false)
                        {
                            continue;
                        }
                        dbf    = new DbFile();
                        dbf.Id = fileId;
                        dbf.DateLastWriteTime = fi.LastWriteTimeUtc;
                        dbf.Name           = name;
                        dbf.Tag            = sf.Tag;
                        dbf.Category       = sf.Category;
                        dbf.Lang           = sf.Lang;
                        dbf.EncryptionMode = sf.EncryptionMode;
                        dbf.Checksum       = null;
                        dbf.Size           = fi.Length;
                        Db.FileSave(dbf, DbFile.State.QUEUED);
                        Logger.Info(LOGNAME, "Added: " + dbf.Name);
                    }
                    else if (dbf.DateLastWriteTime < fi.LastWriteTimeUtc)
                    {
                        dbf.DateLastWriteTime = fi.LastWriteTimeUtc;
                        dbf.Checksum          = null;
                        dbf.Size         = fi.Length;
                        dbf.DownloadLink = null;
                        Db.FileSave(dbf, DbFile.State.QUEUED);
                        Logger.Info(LOGNAME, "Updated: " + dbf.Name);
                    }
                }
            }
            catch (System.UnauthorizedAccessException ex)
            {
                //nothing to do
                System.Diagnostics.Debug.WriteLine(ex.Message);
            }
            catch (Exception ex)
            {
                Logger.Error(LOGNAME, ex.Message, ex);
            }
        }
예제 #11
0
        /* ----------------------------------------------------------------- */
        ///
        /// ToOption
        ///
        /// <summary>
        /// Creates a new instance of the CompressionOption class with the
        /// specified arguments.
        /// </summary>
        ///
        /// <param name="src">Runtime settings.</param>
        /// <param name="settings">User settings.</param>
        ///
        /// <remarks>CompressionOption object.</remarks>
        ///
        /* ----------------------------------------------------------------- */
        public static CompressionOption ToOption(this CompressRuntimeSetting src, SettingFolder settings)
        {
            var filter = Filter.From(settings.Value.GetFilters(settings.Value.Compress.Filtering));

            return(src.Format switch
            {
                Format.Zip => MakeZip(src, filter, settings.Value.Compress),
                Format.Sfx => MakeSfx(src, filter),
                _ => MakeCommon(src, filter),
            });
예제 #12
0
        public void Set_Empty()
        {
            var dest = new SettingFolder(Assembly.GetExecutingAssembly());
            dest.Set(Enumerable.Empty<string>());

            Assert.That(dest.Digest,             Is.Null);
            Assert.That(dest.DocumentName.Value, Is.EqualTo("Cube.Pdf.Converter.Tests"));
            Assert.That(dest.Value.DeleteSource, Is.False);
            Assert.That(dest.Value.Source,       Is.Empty);
        }
예제 #13
0
        public void Create()
        {
            var dest = new SettingFolder();

            Assert.That(dest.AutoSave, Is.False);
            Assert.That(dest.AutoSaveDelay, Is.EqualTo(TimeSpan.FromSeconds(1)));
            Assert.That(dest.Version.ToString(), Is.EqualTo("1.0.2"));
            Assert.That(dest.Format, Is.EqualTo(DataContract.Format.Registry));
            Assert.That(dest.Location, Is.EqualTo(@"CubeSoft\CubeICE\v3"));
            Assert.That(dest.Value, Is.Not.Null);
        }
예제 #14
0
        public void Load_NotFound()
        {
            var asm = Assembly.GetExecutingAssembly();
            var src = new SettingFolder(asm, RootDirectory(), IO);

            Assert.That(src.TryLoad(), Is.False);
            Assert.That(src.DataDirectory, Is.EqualTo(RootDirectory()));
            Assert.That(src.Value, Is.Not.Null, nameof(src.Value));
            Assert.That(src.Shared, Is.Not.Null, nameof(src.Shared));
            Assert.That(src.Lock, Is.Not.Null, nameof(src.Lock));
        }
예제 #15
0
        public void Load_Invalid()
        {
            IO.Copy(GetSource("Dummy.txt"), LocalSettingPath(), true);
            IO.Copy(GetSource("Dummy.txt"), SharedSettingPath(), true);
            var asm = Assembly.GetExecutingAssembly();
            var src = new SettingFolder(asm, RootDirectory(), IO);

            Assert.That(src.TryLoad(), Is.False);
            Assert.That(src.DataDirectory, Is.EqualTo(RootDirectory()));
            Assert.That(src.Value, Is.Not.Null, nameof(src.Value));
            Assert.That(src.Shared, Is.Not.Null, nameof(src.Shared));
            Assert.That(src.Lock, Is.Not.Null, nameof(src.Lock));
        }
예제 #16
0
 public void Create()
 {
     var dest = new SettingFolder(Assembly.GetExecutingAssembly());
     Assert.That(dest.Format,                Is.EqualTo(Cube.DataContract.Format.Registry));
     Assert.That(dest.Location,              Is.EqualTo(@"CubeSoft\CubePDF\v2"));
     Assert.That(dest.AutoSave,              Is.False);
     Assert.That(dest.Assembly.GetCompany(), Is.EqualTo("CubeSoft"));
     Assert.That(dest.Assembly.GetProduct(), Is.EqualTo("Cube.Pdf.Converter.Tests"));
     Assert.That(dest.DocumentName.Source,   Is.Empty);
     Assert.That(dest.DocumentName.Value,    Is.EqualTo("Cube.Pdf.Converter.Tests"));
     Assert.That(dest.Version.ToString(),    Is.EqualTo("1.2.0"));
     Assert.That(dest.Value,                 Is.Not.Null);
     Assert.That(dest.Digest,                Is.Null);
 }
예제 #17
0
        /* ----------------------------------------------------------------- */
        ///
        /// Create
        ///
        /// <summary>
        /// RssFacade オブジェクトを生成します。
        /// </summary>
        ///
        /* ----------------------------------------------------------------- */
        private MainFacade Create([CallerMemberName] string name = null)
        {
            Copy(name);

            var asm     = Assembly.GetExecutingAssembly();
            var setting = new SettingFolder(asm, RootDirectory(name), IO);
            var invoker = Invoker.Vanilla;
            var dest    = new MainFacade(setting, invoker);

            setting.Shared.InitialDelay = TimeSpan.FromMinutes(1);

            dest.Setup();
            return(dest);
        }
예제 #18
0
        public static bool Load(SettingFolder settingFolder, bool startTaskSave)
        {
            try
            {
                if (File.Exists(Utilities.FileDb))
                {
                    List <DbFile> listOfFiles = Serializer.Deserialize <List <DbFile> >(Utilities.FileDb);
                    if (listOfFiles != null)
                    {
                        foreach (DbFile dbf in listOfFiles)
                        {
                            if (dbf != null)
                            {
                                if (settingFolder != null)
                                {
                                    if (dbf.Id.StartsWith(settingFolder.Path))
                                    {
                                        if (dbf.Status == DbFile.State.UPLOADED || dbf.Status == DbFile.State.SYNC)
                                        {
                                            dbf.Status           = DbFile.State.QUEUED;
                                            _dicoOfFiles[dbf.Id] = dbf;
                                        }
                                    }
                                }
                                else
                                {
                                    if (dbf.Status == DbFile.State.ERROR || dbf.Status == DbFile.State.MISSING)
                                    {
                                        dbf.Status = DbFile.State.QUEUED;
                                    }
                                    _dicoOfFiles[dbf.Id] = dbf;
                                }
                            }
                        }
                    }
                }

                if (startTaskSave && _taskSaveStarted == false)
                {
                    _taskSave.Start();
                }
                return(true);
            }
            catch (Exception ex)
            {
                Logger.Error(LOGNAME, ex.Message, ex);
            }
            return(false);
        }
예제 #19
0
        /* ----------------------------------------------------------------- */
        ///
        /// Create
        ///
        /// <summary>
        /// SettingFolder オブジェクトを生成します。
        /// </summary>
        ///
        /// <param name="args">プログラム引数一覧</param>
        ///
        /// <returns>SettingFolder</returns>
        ///
        /* ----------------------------------------------------------------- */
        protected SettingFolder Create(IEnumerable <string> args)
        {
            var asm  = typeof(MainWindow).Assembly;
            var fmt  = Cube.DataContract.Format.Registry;
            var path = $@"CubeSoft\CubePDF\{GetType().Name}";
            var dest = new SettingFolder(asm, fmt, path, IO);

            dest.Load();
            dest.Normalize();
            dest.Value.Destination = Results;
            dest.Value.Temp        = Get("Temp");
            dest.Set(args);

            return(dest);
        }
예제 #20
0
        public void Convert_CryptographicException()
        {
            var dest     = Get($"{nameof(Convert_CryptographicException)}.pdf");
            var args     = new ArgumentCollection(new[] { "-Digest", "dummy" }, Argument.Windows, true);
            var settings = new SettingFolder(Assembly.GetExecutingAssembly());

            settings.Value.Source      = GetSource("Sample.ps");
            settings.Value.Destination = dest;
            settings.Value.PostProcess = PostProcess.None;
            settings.Set(args);

            using (var e = new Facade(settings))
            {
                Assert.That(() => e.Invoke(), Throws.TypeOf <CryptographicException>());
            }
        }
예제 #21
0
        /* ----------------------------------------------------------------- */
        ///
        /// Create
        ///
        /// <summary>
        /// ViewModel オブジェクトを生成します。
        /// </summary>
        ///
        /* ----------------------------------------------------------------- */
        protected MainViewModel Create([CallerMemberName] string name = null)
        {
            Copy(name);

            var asm     = Assembly.GetExecutingAssembly();
            var setting = new SettingFolder(asm, RootDirectory(name), IO);
            var dest    = new MainViewModel(setting, new SynchronizationContext());
            var msg     = dest.Data.Message;

            setting.Shared.InitialDelay = TimeSpan.FromMinutes(1);
            setting.Value.Width         = 1024;
            setting.Value.Height        = 768;

            msg.Value = "Test";
            dest.Setup.Execute(null);
            Assert.That(Wait.For(() => !msg.Value.HasValue()), "Timeout");
            return(dest);
        }
예제 #22
0
        public void VM_NewCategory_Empty()
        {
            var s = new SettingFolder(Assembly.GetExecutingAssembly())
            {
                AutoSave = false
            };
            var vm = new MainViewModel(s, new SynchronizationContext());

            vm.NewCategory.Execute(null);
            var dest = vm.Data.Current.Value as RssCategory;

            Assert.That(dest.Title, Is.EqualTo("新しいフォルダー"));
            Assert.That(dest.Parent, Is.Null);
            Assert.That(dest.Count, Is.EqualTo(0), nameof(dest.Count));
            Assert.That(dest.Children.Count, Is.EqualTo(0), nameof(dest.Children));
            Assert.That(dest.Editing, Is.True, nameof(dest.Editing));
            Assert.That(dest.Expanded, Is.False, nameof(dest.Expanded));
        }
예제 #23
0
        /* ----------------------------------------------------------------- */
        ///
        /// Main
        ///
        /// <summary>
        /// CubePDF Lite のエントリポイントです。
        /// </summary>
        ///
        /* ----------------------------------------------------------------- */
        static void Main(string[] args)
        {
            Logger.ObserveTaskException();
            Logger.Info(typeof(Program), Assembly.GetExecutingAssembly());
            Logger.Info(typeof(Program), $"[ {string.Join(" ", args)} ]");

            // 1. 初期設定ではレジストリの下記のサブキーが対象となります。
            // HKCU\Software\CubeSoft\CubePDF\v2
            // 対象とするサブキーを変更したい場合、コンストラクタで設定します。
            // 例えば、HKCU\Software\Foo\Bar を対象とするには下記のように記述して下さい。
            //
            // var settings = new SettingFolder(
            //     Assembly.GetExecutingAssembly(),
            //     Cube.DataContract.Format.Registry,
            //     @"Foo\Bar"
            // );
            //
            // また、SettingFolder はレジストリ以外に JSON 形式にも対応しています。
            // JSON ファイルを対象とする場合、第 2 引数を Cube.DataContract.Format.Json とし、
            // 対象とする JSON ファイルへの絶対パスを第 3 引数に指定して下さい。
            var settings = new SettingFolder(Assembly.GetExecutingAssembly());

            // 2. Load() で対象としているレジストリ等から設定内容を読み込み、
            // Set(string[]) で仮想プリンターからの引数を解析します。
            settings.Load();    // レジストリの設定をロード
            settings.Set(args); // 仮想プリンターからの引数を解析

            // 3. 設定内容は Value プロパティが保持します。
            // Value 中の各種プロパティは、手動で変更する事も可能です。
            // 例として、ここでは PostProcess を「何もしない」に設定しています。
            // 設定可能な内容については、下記も参照下さい。
            // https://docs.cube-soft.jp/entry/cubevp/sdk/converter
            //
            // 尚、CubePDF SDK 3.0.0 より Set(string[]) 実行時に
            // Destination から末尾のファイル名を除去(DocumaneName.Value に置換)
            // する形に変更されました。そのため、1.0.0 時に Destination に対して
            // 行っていた処理は不要となりました。
            settings.Value.PostProcess = PostProcess.None;

            // 4. 設定内容のロードが完了したら、Facade クラスで変換処理を実行します。
            using (var facade = new Facade(settings)) facade.Invoke();
        }
예제 #24
0
        private static string GetFileName(FileInfo fi, SettingFolder sf)
        {
            string ret = fi.Name;

            SettingFolder.FileNamingRuleEnum fnr = sf.GetFileNamingRule();
            if (fnr == SettingFolder.FileNamingRuleEnum.PARENTNAME)
            {
                ret = fi.Directory.Name + fi.Extension;
            }
            else if (fnr == SettingFolder.FileNamingRuleEnum.FULLPATH)
            {
                ret = fi.FullName.Split(sf.Path)[1].Replace("\\", "/");
            }

            if (Settings.Settings.Current.CleanNames == true)
            {
                ret = Renamer.Rename(ret);
            }
            return(ret);
        }
예제 #25
0
        /* ----------------------------------------------------------------- */
        ///
        /// Main
        ///
        /// <summary>
        /// CubePDF Lite のエントリポイントです。
        /// </summary>
        ///
        /* ----------------------------------------------------------------- */
        static void Main(string[] args)
        {
            // ログ出力用の処理です。不要な場合、削除して構いません。
            InitLog(args);

            // 1. 初期設定ではレジストリの下記のサブキーが対象となります。
            // HKCU\Software\CubeSoft\CubePDF\v2
            // 対象とするサブキーを変更したい場合、コンストラクタで設定します。
            // 例えば、HKCU\Software\Foo\Bar を対象とするには下記のように記述して下さい。
            //
            // var settings = new SettingFolder(
            //     Cube.DataContract.Format.Registry,
            //     @"Foo\Bar"
            // );
            //
            // また、SettingFolder はレジストリ以外に JSON 形式にも対応しています。
            // JSON ファイルを対象とする場合、第 1 引数を Cube.DataContract.Format.Json とし、
            // 対象とする JSON ファイルへの絶対パスを第 2 引数に指定して下さい。
            var settings = new SettingFolder();

            // 2. Load() で対象としているレジストリ等から設定内容を読み込み、
            // Set(string[]) で仮想プリンターからの引数を解析します。
            // レジストリ等の内容を読み込む必要がない場合、Load() メソッドは省略できます。
            settings.Load();
            settings.Set(args);

            // 3. 設定内容は Value プロパティが保持します。
            // Value 中の各種プロパティは、手動で変更する事も可能です。
            // 例として、ここでは PostProcess を「何もしない」に設定しています。
            // 設定可能な内容については、下記も参照下さい。
            // https://docs.cube-soft.jp/entry/cubevp/sdk/converter
            //
            // 尚、CubePDF SDK 3.0.0 より Set(string[]) 実行時に
            // Destination から末尾のファイル名を除去(DocumaneName.Value に置換)
            // する形に変更されました。そのため、1.0.0 時に Destination に対して
            // 行っていた処理は不要となりました。
            settings.Value.PostProcess = PostProcess.None;

            // 4. 設定内容のロードが完了したら、Facade クラスで変換処理を実行します。
            using (var facade = new Facade(settings)) facade.Invoke();
        }
예제 #26
0
        /* ----------------------------------------------------------------- */
        ///
        /// Main
        ///
        /// <summary>
        /// CoSender のエントリポイントです。
        /// </summary>
        ///
        /* ----------------------------------------------------------------- */
        static void Main(string[] args)
        {
            // ログ出力用の処理です。不要な場合、削除して構いません。
            InitLog(args);

            // まず、JSON データを保存するための一時ファイル名を決定します。
            // 次に、SettingFolder クラスに対して Format.Json および
            // 先ほど決定したパスを指定して初期化します。
            var json     = Path.GetTempFileName();
            var settings = new SettingFolder(Format.Json, json);

            // 初期化完了後、Value プロパティに対して必要な設定内容を反映させます。
            // 例として、マイ・ドキュメントに cubevp-collaboration.pdf と言う
            // ファイル名で保存し、保存されたフォルダーを開くように設定してみます。
            // 必要な設定が完了したら、Save メソッドで設定内容を JSON 形式で保存します。
            var dir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

            settings.Value.Destination = Path.Combine(dir, "cubevp-collaboration.pdf");
            settings.Value.PostProcess = PostProcess.OpenDirectory;
            settings.Save();

            // PrintDocument クラスの DocumentName プロパティに対して
            // 最初に決定した一時ファイルのパスを指定します。
            // その後、印刷ダイアログの表示等、必要な印刷処理を実行して終了です。
            var doc = new PrintDocument {
                DocumentName = json
            };
            var dialog = new PrintDialog {
                Document = doc
            };

            if (dialog.ShowDialog() == DialogResult.OK)
            {
                doc.PrintPage += PrintDummy;
                doc.Print();
            }
            else
            {
                File.Delete(json);
            }
        }
예제 #27
0
 private static void ScanDirs(DirectoryInfo di, SettingFolder sf)
 {
     try
     {
         DirectoryInfo[] dirs = di.GetDirectories();
         ScanFiles(di, sf);
         foreach (DirectoryInfo diChild in dirs)
         {
             ScanDirs(diChild, sf);
         }
     }
     catch (System.UnauthorizedAccessException ex)
     {
         //nothing to do
         System.Diagnostics.Debug.WriteLine(ex.Message);
     }
     catch (Exception ex)
     {
         Logger.Error(LOGNAME, ex.Message, ex);
     }
 }
예제 #28
0
        /* ----------------------------------------------------------------- */
        ///
        /// CreateMainViewModel
        ///
        /// <summary>
        /// Creates a new instance of the MainViewModel class.
        /// </summary>
        ///
        /// <returns>MainViewModel object.</returns>
        ///
        /* ----------------------------------------------------------------- */
        private MainViewModel CreateMainViewModel()
        {
            var src = new SettingFolder(
                Assembly.GetExecutingAssembly(),
                DataContract.Format.Registry,
                @"CubeSoft\Cube.Pdf.Editor.Tests",
                IO
                )
            {
                AutoSave = false
            };

            var dest  = new MainViewModel(src, new SynchronizationContext());
            var dummy = new BitmapImage(new Uri(GetSource("Loading.png")));

            dest.Data.Images.Preferences.Dummy        = dummy;
            dest.Data.Images.Preferences.VisibleFirst = 0;
            dest.Data.Images.Preferences.VisibleLast  = 10;

            return(dest);
        }
예제 #29
0
        public void VM_Default()
        {
            var s = new SettingFolder(Assembly.GetExecutingAssembly())
            {
                AutoSave = false
            };
            var vm = new MainViewModel(s, new SynchronizationContext());

            Assert.That(vm.Property.CanExecute(), Is.False);
            Assert.That(vm.Remove.CanExecute(), Is.False);
            Assert.That(vm.Rename.CanExecute(), Is.False);
            Assert.That(vm.Read.CanExecute(), Is.False);
            Assert.That(vm.Update.CanExecute(), Is.False);
            Assert.That(vm.Reset.CanExecute(), Is.False);

            Assert.That(vm.DropTarget, Is.Not.Null);
            Assert.That(vm.Data.Content.Value, Is.Null);
            Assert.That(vm.Data.Current.Value, Is.Null);
            Assert.That(vm.Data.LastEntry.Value, Is.Null);
            Assert.That(vm.Data.Message.Value, Is.Null);
            Assert.That(vm.Data.Shared.Value, Is.Not.Null);
            Assert.That(vm.Data.Lock.Value, Is.Not.Null);
        }
예제 #30
0
        public void VM_DataDirectory()
        {
            var dest = RootDirectory(nameof(ChangeDataFolder));

            Execute(vm =>
            {
                vm.Subscribe <SettingViewModel>(e => ChangeDataFolder(e));
                vm.Setting.Execute(null);
                Assert.That(vm.Data.Local.Value.DataDirectory, Is.EqualTo(dest), nameof(SettingViewModel));
            });

            Assert.That(IO.Exists(dest), Is.False);

            var asm     = Assembly.GetExecutingAssembly();
            var setting = new SettingFolder(asm, RootDirectory(), IO);

            setting.Load();
            Assert.That(setting.DataDirectory, Is.EqualTo(dest), nameof(SettingFolder));

            var facade = new MainFacade(setting, Invoker.Vanilla);

            Assert.That(facade.Data.Root.Flatten().Count(), Is.EqualTo(0));
        }