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)); }
/* ----------------------------------------------------------------- */ /// /// 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); }
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); });
/* ----------------------------------------------------------------- */ /// /// 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); }
/* ----------------------------------------------------------------- */ /// /// 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(); }
/* ----------------------------------------------------------------- */ /// /// 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)); }
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 ); });