/* ----------------------------------------------------------------- */ /// /// Launch /// /// <summary> /// CubeNote を起動します。 /// </summary> /// /* ----------------------------------------------------------------- */ static void Launch(SettingsFolder settings) { Puts(Properties.Resources.LaunchCubeNote); var dir = IoEx.Path.GetDirectoryName(settings.Assembly.Location); var exe = IoEx.Path.Combine(dir, "CubeNote.exe"); System.Diagnostics.Process.Start(exe); }
/* ----------------------------------------------------------------- */ /// /// LoadSettings /// /// <summary> /// 設定情報をロードします。 /// </summary> /// /* ----------------------------------------------------------------- */ static SettingsFolder LoadSettings(Assembly assembly) { Puts(Properties.Resources.LoadSettings); var dest = new SettingsFolder(assembly); Puts($"Path ... {dest.Root}"); return(dest); }
public void Load() { var desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); var src = new SettingsFolder( Cube.DataContract.Format.Registry, $@"CubeSoft\CubePDF\{nameof(SettingsTest)}", IO ); src.Load(); var dest = src.Value; Assert.That(dest.Format, Is.EqualTo(Format.Pdf)); Assert.That(dest.FormatOption, Is.EqualTo(FormatOption.Pdf17)); Assert.That(dest.SaveOption, Is.EqualTo(SaveOption.Overwrite)); Assert.That(dest.Grayscale, Is.False); Assert.That(dest.EmbedFonts, Is.True); Assert.That(dest.ImageCompression, 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.Open)); Assert.That(dest.UserProgram, Is.Empty); 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.IsBusy, 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.EqualTo("CubePDF")); 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.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)); }
/* ----------------------------------------------------------------- */ /// /// TagCollectionPresenter /// /// <summary> /// オブジェクトを初期化します。 /// </summary> /// /* ----------------------------------------------------------------- */ public TagCollectionPresenter(ComboBox view, PageCollection pages, SettingsFolder settings, EventAggregator events) : base(view, pages.Tags, settings, events) { View.DrawMode = DrawMode.OwnerDrawFixed; View.DrawItem += View_DrawItem; View.MouseWheel += View_MouseWheel; Model.Loaded += Model_Loaded; }
/* ----------------------------------------------------------------- */ /// /// MainViewModel /// /// <summary> /// オブジェクトを初期化します。 /// </summary> /// /// <param name="model">Model オブジェクト</param> /// /* ----------------------------------------------------------------- */ public MainViewModel(SettingsFolder model) { _model = model; _model.PropertyChanged += (s, e) => OnPropertyChanged(e); Archive = new ArchiveViewModel(model.Value.Archive); Extract = new ExtractViewModel(model.Value.Extract); Associate = new AssociateViewModel(model.Value.Associate); Menu = new ContextViewModel(model.Value.Menu); Shortcut = new ShortcutViewModel(model.Value.Shortcut); }
/* ----------------------------------------------------------------- */ /// /// SettingsPresenter /// /// <summary> /// オブジェクトを初期化します。 /// </summary> /// /* ----------------------------------------------------------------- */ public SettingsPresenter(SettingsForm view, SettingsFolder settings, EventAggregator events) : base(view, settings.User, settings, events) { View.Apply += View_Apply; View.Cancel += View_Cancel; View.Reset += View_Reset; View.PropertyChanged += View_PropertyChanged; _backup.Assign(Model); }
public void Load_NotFound() { var asm = Assembly.GetExecutingAssembly(); var src = new SettingsFolder(asm, RootDirectory(), IO); src.LoadOrDefault(new LocalSettings()); 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)); }
public void Set_Empty() { var dest = new SettingsFolder(); dest.Set(new ArgumentCollection(new string[0], '/', true)); Assert.That(dest.MachineName, Is.EqualTo(Environment.MachineName)); Assert.That(dest.UserName, Is.EqualTo(Environment.UserName)); Assert.That(dest.DocumentName.Name, Is.EqualTo("CubePDF")); Assert.That(dest.Value.DeleteSource, Is.False); Assert.That(dest.Value.Source, Is.Empty); }
/* ----------------------------------------------------------------- */ /// /// CreateSettings /// /// <summary> /// SettingsFolder オブジェクトを生成します。 /// </summary> /// /* ----------------------------------------------------------------- */ protected SettingsFolder CreateSettings() { var asm = Assembly.GetExecutingAssembly(); var dc = Cube.DataContract.Format.Registry; var dest = new SettingsFolder(asm, dc, SubKeyName, IO) { AutoSave = false }; Assert.That(dest.Location, Does.Not.StartsWith("Software")); return(dest); }
/* ----------------------------------------------------------------- */ /// /// Settings /// /// <summary> /// 設定用ダイアログを生成します。 /// </summary> /// /* ----------------------------------------------------------------- */ public static SettingsForm Settings(Form owner, SettingsFolder model) { var dest = new SettingsForm(model.User); dest.DataFolder = model.Root; dest.Product = new AssemblyReader(model.Assembly).Product; dest.Version = model.Version.ToString(true); dest.StartPosition = FormStartPosition.Manual; dest.Location = CreateLocation(owner); return(dest); }
/* ----------------------------------------------------------------- */ /// /// TextVisualPresenter /// /// <summary> /// オブジェクトを初期化します。 /// </summary> /// /* ----------------------------------------------------------------- */ public TextVisualPresenter(TextControl view, SettingsFolder model, EventAggregator events) : base(view, model.User, model, events) { Model.PropertyChanged += Model_PropertyChanged; this.LogWarn(() => { UpdateView(); View.ResetViewWidth(); }); }
public void Create() { var asm = Assembly.GetExecutingAssembly(); var dest = new SettingsFolder(asm, IO); Assert.That(dest.AutoSave, Is.False); Assert.That(dest.AutoSaveDelay, Is.EqualTo(TimeSpan.FromSeconds(1))); Assert.That(dest.Version.ToString(), Is.EqualTo("0.9.1β")); Assert.That(dest.Format, Is.EqualTo(Cube.DataContract.Format.Registry)); Assert.That(dest.Location, Is.EqualTo(@"CubeSoft\CubeICE\v3")); Assert.That(dest.Value, Is.Not.Null); }
public void Create_Json() { var settings = new SettingsFolder <Person>(SettingsType.Json); var root = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); Assert.That(settings.Type, Is.EqualTo(SettingsType.Json)); Assert.That(settings.Path, Does.StartWith(root)); Assert.That(settings.Path, Does.EndWith(AssemblyReader.Default.Product)); Assert.That(settings.Company, Is.EqualTo(AssemblyReader.Default.Company)); Assert.That(settings.Product, Is.EqualTo(AssemblyReader.Default.Product)); Assert.That(settings.Version.Number, Is.EqualTo(AssemblyReader.Default.Version)); Assert.That(settings.Value, Is.Not.Null); }
/* ----------------------------------------------------------------- */ /// /// Create /// /// <summary> /// Presenter オブジェクトを生成します。 /// </summary> /// /* ----------------------------------------------------------------- */ private ExtractPresenter Create(Request request) { var a = Assembly.GetExecutingAssembly(); var v = Views.CreateProgressView(); var e = new Aggregator(); var s = new SettingsFolder(a, IO); var dest = new ExtractPresenter(v, request, s, e); Assert.That(dest.Model.Interval.TotalMilliseconds, Is.EqualTo(100).Within(1)); dest.Model.Interval = TimeSpan.FromMilliseconds(20); return(dest); }
/* ----------------------------------------------------------------- */ /// /// Create /// /// <summary> /// RssFacade オブジェクトを生成します。 /// </summary> /// /* ----------------------------------------------------------------- */ private MainFacade Create([CallerMemberName] string name = null) { Copy(name); var asm = Assembly.GetExecutingAssembly(); var settings = new SettingsFolder(asm, RootDirectory(name), IO); var context = SynchronizationContext.Current; var dest = new MainFacade(settings, context); settings.Shared.InitialDelay = TimeSpan.FromMinutes(1); dest.Setup(); return(dest); }
/* ----------------------------------------------------------------- */ /// /// LoadIndices /// /// <summary> /// インデックス情報をロードします。 /// </summary> /// /* ----------------------------------------------------------------- */ static PageCollection LoadIndices(SettingsFolder settings) { Puts(Properties.Resources.LoadIndices); var dest = new PageCollection(settings.Root); try { dest.Load(); } catch (Exception err) { Puts(Properties.Resources.ErrorIndex); Puts(err.ToString()); } Puts($"Count ... {dest.Count}"); return(dest); }
/* ----------------------------------------------------------------- */ /// /// Create /// /// <summary> /// SettingsFolder オブジェクトを生成します。 /// </summary> /// /// <param name="args">プログラム引数一覧</param> /// /// <returns>SettingsFolder</returns> /// /* ----------------------------------------------------------------- */ protected SettingsFolder Create(string[] args) { var path = $@"CubeSoft\CubePDF\{GetType().Name}"; var dest = new SettingsFolder(DataContract.Format.Registry, path, IO) { WorkDirectory = GetResultsWith("Tmp"), }; dest.Load(); dest.Value.Destination = Results; dest.Set(new ArgumentCollection(args, '/', true)); return(dest); }
public void Load_Invalid() { IO.Copy(GetExamplesWith("Dummy.txt"), LocalSettingsPath(), true); IO.Copy(GetExamplesWith("Dummy.txt"), SharedSettingsPath(), true); var asm = Assembly.GetExecutingAssembly(); var src = new SettingsFolder(asm, RootDirectory(), IO); src.LoadOrDefault(new LocalSettings()); 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)); }
static void Main(string[] args) { try { if (args.Length <= 0) { return; } var asm = Assembly.GetExecutingAssembly(); Logger.Configure(); Logger.ObserveTaskException(); Logger.Info(typeof(Program), asm); Logger.Info(typeof(Program), $"Arguments:{string.Join(" ", args)}"); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var s = new SettingsFolder(asm, new AfsIO()); var e = new Aggregator(); var v = new ProgressForm(); var m = new Request(args); s.Load(); switch (m.Mode) { case Mode.Archive: using (var _ = new ArchivePresenter(v, m, s, e)) Application.Run(v); break; case Mode.Extract: if (m.Sources.Count() > 1 && s.Value.Extract.Bursty && !m.SuppressRecursive) { Extract(m, asm); } else { using (var _ = new ExtractPresenter(v, m, s, e)) Application.Run(v); } break; default: break; } } catch (Exception err) { Log(err); } }
/* ----------------------------------------------------------------- */ /// /// TextEditPresenter /// /// <summary> /// オブジェクトを初期化します。 /// </summary> /// /* ----------------------------------------------------------------- */ public TextPresenter(TextControl view, PageCollection model, SettingsFolder settings, EventAggregator events) : base(view, model, settings, events) { Events.Refresh.Subscribe(Refresh_Handle); Events.Undo.Subscribe(Undo_Handle); Events.Redo.Subscribe(Redo_Handle); View.DoubleClick += View_DoubleClick; View.Visible = (Settings.Current.Page != null); Settings.Current.PageChanged += Settings_PageChanged; InitializeTextMenu(); }
public void ReLoad() { var count = 0; var settings = new SettingsFolder <Person>(SettingsType.Registry, LoadKeyName); settings.Loaded += (s, e) => ++ count; settings.AutoSave = false; settings.Load(); settings.Value.Name = "Before ReLoad"; settings.Load(); Assert.That(count, Is.EqualTo(2)); Assert.That(settings.Value.Name, Is.EqualTo("佐藤栄作")); }
static void Main(string[] args) { var type = typeof(Program); try { Logger.Configure(); Logger.Info(type, Assembly.GetExecutingAssembly()); Logger.Info(type, string.Join(" ", args)); var asm = Assembly.GetExecutingAssembly(); var settings = new SettingsFolder(asm, new AfsIO()); if (args.Length > 0 && args[0].ToLowerInvariant() == "/uninstall") { Clear(settings); } else { settings.Load(); } var dir = System.IO.Path.GetDirectoryName(asm.Location); var exe = System.IO.Path.Combine(dir, "cubeice.exe"); var icon = $"{exe},{settings.Value.Associate.IconIndex}"; Logger.Info(type, $"FileName:{exe}"); Logger.Info(type, $"IconLocation:{icon}"); var registrar = new AssociateRegistrar(exe) { IconLocation = icon, ToolTip = settings.Value.ToolTip, }; registrar.Arguments = PresetMenu.Extract.ToArguments(); registrar.Update(settings.Value.Associate.Value); Shell32.NativeMethods.SHChangeNotify( 0x08000000, // SHCNE_ASSOCCHANGED 0x00001000, // SHCNF_FLUSH IntPtr.Zero, IntPtr.Zero ); } catch (Exception err) { Logger.Error(type, err); } }
/* ----------------------------------------------------------------- */ /// /// ArchivePresenter /// /// <summary> /// オブジェクトを初期化します。 /// </summary> /// /// <param name="view">View オブジェクト</param> /// <param name="args">コマンドライン</param> /// <param name="settings">ユーザ設定</param> /// <param name="ea">イベント集約オブジェクト</param> /// /* ----------------------------------------------------------------- */ public ArchivePresenter(IProgressView view, Request args, SettingsFolder settings, IAggregator ea) : base(view, new ArchiveFacade(args, settings), settings, ea) { // View View.Logo = Properties.Resources.HeaderArchive; View.Status = Properties.Resources.MessagePreArchive; // Model var model = Model as ArchiveFacade; model.DestinationRequested += WhenDestinationRequested; model.PasswordRequested += WhenPasswordRequested; model.Progress += WhenProgress; model.RtSettingsRequested += WhenRtSettingsRequested; model.MailRequested += WhenMailRequested; }
public void Create() { var dest = new SettingsFolder(); Assert.That(dest.Format, Is.EqualTo(Cube.DataContract.Format.Registry)); Assert.That(dest.Location, Is.EqualTo(@"CubeSoft\CubePDF\v2")); Assert.That(dest.WorkDirectory, Is.Not.Null.And.Not.Empty); Assert.That(dest.AutoSave, Is.False); Assert.That(dest.Assembly.Company, Is.EqualTo("CubeSoft")); Assert.That(dest.Assembly.Product, Is.EqualTo("CubePDF")); Assert.That(dest.MachineName, Is.EqualTo(Environment.MachineName)); Assert.That(dest.UserName, Is.EqualTo(Environment.UserName)); Assert.That(dest.DocumentName.Value, Is.Empty); Assert.That(dest.DocumentName.Name, Is.EqualTo("CubePDF")); Assert.That(dest.Version.ToString(), Is.EqualTo("1.0.0RC19")); Assert.That(dest.Value, Is.Not.Null); }
public void Create_Registry() { var count = 0; var settings = new SettingsFolder <Person>(); settings.Loaded += (s, e) => ++ count; settings.Load(); Assert.That(count, Is.EqualTo(1)); Assert.That(settings.Type, Is.EqualTo(SettingsType.Registry)); Assert.That(settings.Path, Does.StartWith("Software")); Assert.That(settings.Path, Does.EndWith(AssemblyReader.Default.Product)); Assert.That(settings.Company, Is.EqualTo(AssemblyReader.Default.Company)); Assert.That(settings.Product, Is.EqualTo(AssemblyReader.Default.Product)); Assert.That(settings.Version.Number, Is.EqualTo(AssemblyReader.Default.Version)); Assert.That(settings.Value, Is.Not.Null); }
/* ----------------------------------------------------------------- */ /// /// ExtractPresenter /// /// <summary> /// オブジェクトを初期化します。 /// </summary> /// /// <param name="view">View オブジェクト</param> /// <param name="model">コマンドライン</param> /// <param name="settings">ユーザ設定</param> /// <param name="ea">イベント集約オブジェクト</param> /// /* ----------------------------------------------------------------- */ public ExtractPresenter(IProgressView view, Request model, SettingsFolder settings, IAggregator ea) : base(view, new ExtractFacade(model, settings), settings, ea) { var fs = Model.TryCast <ExtractFacade>(); // View View.FileName = Model.IO.Get(fs.Source).Name; View.Logo = Properties.Resources.HeaderExtract; View.Status = Properties.Resources.MessagePreExtract; // Model fs.DestinationRequested += WhenDestinationRequested; fs.PasswordRequested += WhenPasswordRequested; fs.OverwriteRequested += WhenOverwriteRequested; fs.Progress += WhenProgress; fs.ProgressReset += WhenProgressReset; }
/* ----------------------------------------------------------------- */ /// /// Create /// /// <summary> /// ViewModel オブジェクトを生成します。 /// </summary> /// /* ----------------------------------------------------------------- */ protected MainViewModel Create([CallerMemberName] string name = null) { Copy(name); var asm = Assembly.GetExecutingAssembly(); var settings = new SettingsFolder(asm, RootDirectory(name), IO); var dest = new MainViewModel(settings); var msg = dest.Data.Message; settings.Shared.InitialDelay = TimeSpan.FromMinutes(1); settings.Value.Width = 1024; settings.Value.Height = 768; msg.Value = "Test"; dest.Setup.Execute(null); Assert.That(Wait.For(() => !msg.Value.HasValue()), "Timeout"); return(dest); }
/* ----------------------------------------------------------------- */ /// /// Create /// /// <summary> /// Gets a new instance of the MainViewModel class. /// </summary> /// /// <returns>MainViewModel object.</returns> /// /* ----------------------------------------------------------------- */ private MainViewModel Create() { var dummy = new BitmapImage(new Uri(GetExamplesWith("Loading.png"))); var asm = Assembly.GetExecutingAssembly(); var fmt = DataContract.Format.Registry; var path = @"CubeSoft\Cube.Pdf.Tests.Editor"; var src = new SettingsFolder(asm, fmt, path, IO) { AutoSave = false }; var dest = new MainViewModel(src); dest.Data.Images.Preferences.Dummy = dummy; dest.Data.Images.Preferences.VisibleFirst = 0; dest.Data.Images.Preferences.VisibleLast = 10; return(dest); }
/* ----------------------------------------------------------------- */ /// /// MenuPresenter /// /// <summary> /// オブジェクトを初期化します。 /// </summary> /// /* ----------------------------------------------------------------- */ public MenuPresenter(MenuControl view, PageCollection model, SettingsFolder settings, EventAggregator events) : base(view, model, settings, events) { Events.Print.Subscribe(Print_Handle); Events.Settings.Subscribe(Settings_Handle); Events.TagSettings.Subscribe(TagSettings_Handle); Events.Web.Subscribe(Web_Handle); Events.Google.Subscribe(Google_Handle); View.UndoMenu.Click += (s, e) => Events.Undo.Publish(); View.RedoMenu.Click += (s, e) => Events.Redo.Publish(); View.ExportMenu.Click += (s, e) => Events.Export.Publish(EventAggregator.Selected); View.PrintMenu.Click += (s, e) => Events.Print.Publish(); View.SettingsMenu.Click += (s, e) => Events.Settings.Publish(); View.LogoMenu.Click += View_LogoMenu; Settings.Current.PropertyChanged += Settings_CurrentChanged; }
public void Load_Registry() { using (var s = new SettingsFolder <Person>(SettingsType.Registry, LoadKeyName)) { s.AutoSave = false; s.Load(); Assert.That(s.Value.Name, Is.EqualTo("佐藤栄作")); Assert.That(s.Value.Age, Is.EqualTo(52)); Assert.That(s.Value.Sex, Is.EqualTo(Sex.Male)); Assert.That(s.Value.Reserved, Is.EqualTo(true)); Assert.That(s.Value.Creation, Is.EqualTo(new DateTime(2015, 3, 16, 2, 32, 26, DateTimeKind.Utc).ToLocalTime())); Assert.That(s.Value.Identification, Is.EqualTo(1357)); Assert.That(s.Value.Secret, Is.EqualTo("secret message")); Assert.That(s.Value.Phone.Type, Is.EqualTo("Mobile")); Assert.That(s.Value.Phone.Value, Is.EqualTo("090-1234-5678")); Assert.That(s.Value.Email.Type, Is.EqualTo("Email")); Assert.That(s.Value.Email.Value, Is.Null.Or.Empty); } }