Example #1
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));
        }
Example #2
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);
        }
Example #3
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);
        });
Example #4
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);
        }
Example #5
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();
        }
Example #6
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();
        }
        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));
        }
Example #8
0
        static void Main(string[] args) => Source.LogError(() =>
        {
            Source.LogInfo(Source.Assembly);
            Source.LogInfo($"[ {args.Join(" ")} ]");

            var src = new SettingFolder();
            if (args.Length > 0 && args[0].ToLowerInvariant() == "/uninstall")
            {
                Clear(src);
            }
            else
            {
                src.Load();
            }

            var dir  = Source.Assembly.GetDirectoryName();
            var exe  = System.IO.Path.Combine(dir, "cubeice.exe");
            var icon = $"{exe},{src.Value.Associate.IconIndex}";

            Source.LogInfo($"FileName:{exe}");
            Source.LogInfo($"IconLocation:{icon}");

            var registrar = new AssociateRegistrar(exe)
            {
                IconLocation = icon,
                ToolTip      = src.Value.ToolTip,
            };

            registrar.Update(src.Value.Associate.Value);

            Shell32.NativeMethods.SHChangeNotify(
                0x08000000, // SHCNE_ASSOCCHANGED
                0x00001000, // SHCNF_FLUSH
                IntPtr.Zero,
                IntPtr.Zero
                );
        });