コード例 #1
0
        /// <summary>
        /// Adds Height/Width/Top/Left/Windows state to the list of properties to track. Uses
        /// the "ResizeEnd" to trigger persist. Handles validation for edge cases (2nd display
        /// disconnected, saving size info while minimized/maximized).
        /// </summary>
        /// <param name="configuration"></param>
        public override void InitializeConfiguration(TrackingConfiguration configuration)
        {
            var form = configuration.TargetReference.Target as Form;

            configuration
                .AddProperties<Form>(f => f.Height, f => f.Width, f => f.Top, f => f.Left, f => f.WindowState)
                .RegisterPersistTrigger(nameof(form.ResizeEnd))
                .RegisterPersistTrigger(nameof(form.LocationChanged))
                .IdentifyAs(form.Name);

            configuration.PersistingProperty += (sender, args) =>
            {
                //do not save height/width/top/left when the form is maximized or minimized
                args.Cancel = form.WindowState != FormWindowState.Normal && args.Property != nameof(form.WindowState);
            };

            configuration.ApplyingProperty += (sender, args) =>
            {
                //We don't want to restore the form off screeen.
                //This can happen in case of a multi-display setup i.e. the form was closed on 2nd display, but restored after the 2nd display was disconnected
                if (args.Property == "Left")
                    args.Value = (int)Math.Min(Math.Max(SystemParameters.VirtualScreenLeft, (int)args.Value), SystemParameters.VirtualScreenWidth - form.Width);
            };

            base.InitializeConfiguration(configuration);
        }
コード例 #2
0
ファイル: ColorPickerUC.cs プロジェクト: unfug2000/Jot
 public void ConfigureTracking(TrackingConfiguration <ColorPickerUC> configuration)
 {
     configuration
     .Id(_ => Name)
     .Properties(x => new { red = tbRed.Value, green = tbGreen.Value, blue = tbBlue.Value })
     .PersistOn(nameof(Form.FormClosing), this.FindForm());
 }
コード例 #3
0
        /// <summary>
        /// Initializes the tracking configuration for a target object
        /// </summary>
        /// <param name="configuration"></param>
        public virtual void InitializeConfiguration(TrackingConfiguration configuration)
        {
            object target = configuration.TargetReference.Target;

            //set key if [TrackingKey] detected
            Type targetType = target.GetType();
            PropertyInfo keyProperty = targetType.GetProperties().SingleOrDefault(pi => pi.IsDefined(typeof(TrackingKeyAttribute), true));
            if (keyProperty != null)
                configuration.Key = keyProperty.GetValue(target, null).ToString();

            //add properties that have [Trackable] applied
            foreach (PropertyInfo pi in targetType.GetProperties())
            {
                TrackableAttribute propTrackableAtt = pi.GetCustomAttributes(true).OfType<TrackableAttribute>().Where(ta => ta.TrackerName == configuration.StateTracker.Name).SingleOrDefault();
                if (propTrackableAtt != null)
                {
                    //use [DefaultValue] if present
                    DefaultValueAttribute defaultAtt = pi.CustomAttributes.OfType<DefaultValueAttribute>().SingleOrDefault();
                    if (defaultAtt != null)
                        configuration.AddProperty(pi.Name, defaultAtt.Value);
                    else
                        configuration.AddProperty(pi.Name);
                }
            }

            //allow the object to alter its configuration
            ITrackingAware trackingAwareTarget = target as ITrackingAware;
            if (trackingAwareTarget != null)
                trackingAwareTarget.InitConfiguration(configuration);
        }
コード例 #4
0
        /// <summary>
        /// Adds Height/Width/Top/Left/Windows state to the list of properties to track. Uses
        /// the "ResizeEnd" to trigger persist. Handles validation for edge cases (2nd display
        /// disconnected, saving size info while minimized/maximized).
        /// </summary>
        /// <param name="configuration"></param>
        public override void InitializeConfiguration(TrackingConfiguration configuration)
        {
            var form = configuration.TargetReference.Target as Form;

            configuration
            .AddProperties <Form>(f => f.Height, f => f.Width, f => f.Top, f => f.Left, f => f.WindowState)
            .RegisterPersistTrigger(nameof(form.ResizeEnd))
            .RegisterPersistTrigger(nameof(form.LocationChanged))
            .IdentifyAs(form.Name);

            configuration.PersistingProperty += (sender, args) =>
            {
                //do not save height/width/top/left when the form is maximized or minimized
                args.Cancel = form.WindowState != FormWindowState.Normal && args.Property != nameof(form.WindowState);
            };

            configuration.ApplyingProperty += (sender, args) =>
            {
                //We don't want to restore the form off screeen.
                //This can happen in case of a multi-display setup i.e. the form was closed on 2nd display, but restored after the 2nd display was disconnected
                if (args.Property == "Left")
                {
                    args.Value = (int)Math.Min(Math.Max(SystemParameters.VirtualScreenLeft, (int)args.Value), SystemParameters.VirtualScreenWidth - form.Width);
                }
            };

            base.InitializeConfiguration(configuration);
        }
コード例 #5
0
 /// <summary>
 /// Creates or retrieves the tracking configuration for the speficied object.
 /// </summary>
 /// <param name="target"></param>
 /// <returns></returns>
 public TrackingConfiguration Configure(object target)
 {
     TrackingConfiguration config = FindExistingConfig(target);
     if (config == null)
         _configurations.Add(config = new TrackingConfiguration(target, this));
     return config;
 }
コード例 #6
0
 public void SetUp()
 {
     tracker               = new Mock <ITracker>();
     scheduler             = new TestScheduler();
     logger                = new NullLogger <ExpireTracking>();
     trackingConfiguration = new TrackingConfiguration(TimeSpan.FromMinutes(1), TimeSpan.FromMinutes(1), "Data.csv");
     instance              = CreateInstance();
 }
コード例 #7
0
        private void SetupTracking(IServiceCollection builder)
        {
            var config = new TrackingConfiguration(TimeSpan.FromHours(1), TimeSpan.FromDays(10), Path.Combine(GetPersistencyLocation(), "ratings.csv"));

            logger.LogInformation("Setup tracking: {0}", config.Persistency);
            config.Restore = true;
            builder.RegisterModule(new TrackingModule(config));
        }
コード例 #8
0
 public void Config_TrackableAttributeHonoredOnClass()
 {
     TrackingConfiguration config = new TrackingConfiguration(new DummyClass1() { Key = 5 }, null);
     Assert.AreEqual(2, config.Properties.Count);
     Assert.AreEqual("Property1", config.Properties.ElementAt(0));
     Assert.AreEqual("Property2", config.Properties.ElementAt(1));
     Assert.AreEqual("5", config.Key);
 }
コード例 #9
0
 public void ConfigureTracking(TrackingConfiguration <AppSettings> configuration)
 {
     configuration.Properties(s => new
     {
         s.PersistedSettings,
         s.MarginToolSettings
     });
     AppDomain.CurrentDomain.ProcessExit += (sender, args) => { configuration.Tracker.Persist(this); };
 }
コード例 #10
0
 protected override void CustomizeConfiguration(TrackingConfiguration configuration)
 {
     Form window = configuration.TargetReference.Target as Form;
     if (window != null)
     {
         configuration
             .AddProperties<Form>(f => f.Left, f => f.Top, f => f.Height, f => f.Width, f => f.WindowState)
             .RegisterPersistTrigger("Closed");
     }
     base.CustomizeConfiguration(configuration);
 }
コード例 #11
0
ファイル: WPFTrackingExtension.cs プロジェクト: anakic/Ursus
 protected override void CustomizeConfiguration(TrackingConfiguration configuration)
 {
     Window window = configuration.TargetReference.Target as Window;
     if (window != null)
     {
         configuration
             .AddProperties<Window>(w => w.Left, w => w.Top, w => w.Height, w => w.Width, w => w.WindowState)
             .RegisterPersistTrigger("Closed");
     }
     base.CustomizeConfiguration(configuration);
 }
コード例 #12
0
        public void Config_TrackerNameHonred()
        {
            TrackingConfiguration config = new TrackingConfiguration(new DummyClass4(), new SettingsTracker() { Name = "1" });
            Assert.AreEqual(2, config.Properties.Count);
            Assert.AreEqual("Property1", config.Properties.ElementAt(0));
            Assert.AreEqual("Property2", config.Properties.ElementAt(1));

            config = new TrackingConfiguration(new DummyClass4(), new SettingsTracker() { Name = "2" });
            Assert.AreEqual(1, config.Properties.Count);
            Assert.AreEqual("Property2", config.Properties.ElementAt(0));
        }
コード例 #13
0
        protected override void CustomizeConfiguration(TrackingConfiguration configuration)
        {
            Form window = configuration.TargetReference.Target as Form;

            if (window != null)
            {
                configuration
                .AddProperties <Form>(f => f.Left, f => f.Top, f => f.Height, f => f.Width, f => f.WindowState)
                .RegisterPersistTrigger("Closed");
            }
            base.CustomizeConfiguration(configuration);
        }
コード例 #14
0
        protected override void CustomizeConfiguration(TrackingConfiguration configuration)
        {
            Window window = configuration.TargetReference.Target as Window;

            if (window != null)
            {
                configuration
                .AddProperties <Window>(w => w.Left, w => w.Top, w => w.Height, w => w.Width, w => w.WindowState)
                .RegisterPersistTrigger("Closed");
            }
            base.CustomizeConfiguration(configuration);
        }
コード例 #15
0
        public void ConfigureTracking(TrackingConfiguration <Form1> configuration)
        {
            // include selected tab index when tracking this form
            configuration.Property(f => f.tabControl1.SelectedIndex);

            // include data grid column widths when tracking this form
            for (int i = 0; i < dataGridView1.Columns.Count; i++)
            {
                var idx = i; // capture i into a variable (cannot use i directly since it changes in each iteration)
                configuration.Property(f => f.dataGridView1.Columns[idx].Width, "grid_column_" + dataGridView1.Columns[idx].Name);
            }
        }
コード例 #16
0
        public void Setup()
        {
            var file = Path.Combine(TestContext.CurrentContext.TestDirectory, "Test", "result.csv");

            if (File.Exists(file))
            {
                File.Delete(file);
            }

            config         = new TrackingConfiguration(TimeSpan.FromMinutes(1), TimeSpan.FromDays(2), file);
            config.Restore = true;
        }
コード例 #17
0
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;

            this.genSettings = new GeneralSettings
            {
                CustomWindows         = new StringCollection(),
                Username              = string.Empty,
                FadeChat              = false,
                FadeTime              = "120",
                ShowBotActivity       = false,
                ChatNotificationSound = "None",
                ThemeIndex            = 1,
                ChatType              = 0,
                CustomURL             = string.Empty,
                ZoomLevel             = 0,
                OpacityLevel          = 0,
                AutoHideBorders       = false,
                EnableTrayIcon        = true,
                ConfirmClose          = true,
                HideTaskbarIcon       = false,
                AllowInteraction      = true,
                VersionTracker        = 0.7
            };

            Services.Tracker.Configure(this).IdentifyAs("State").Apply();
            this.genSettingsTrackingConfig = Services.Tracker.Configure(this.genSettings);
            this.genSettingsTrackingConfig.IdentifyAs("MainWindow").Apply();

            var browserSettings = new BrowserSettings
            {
                FileAccessFromFileUrls      = CefState.Enabled,
                UniversalAccessFromFileUrls = CefState.Enabled
            };

            Browser1.BrowserSettings = browserSettings;
            CefSharpSettings.LegacyJavascriptBindingEnabled = true;

            //this.Browser1.RegisterAsyncJsObject("jsCallback", new JsCallbackFunctions());
            this.jsCallbackFunctions = new JsCallbackFunctions();
            Browser1.JavascriptObjectRepository.Register("jsCallback", this.jsCallbackFunctions, isAsync: true, options: BindingOptions.DefaultBinder);
        }
コード例 #18
0
        /*public event PropertyChangedEventHandler PropertyChanged;
         * protected void OnPropertyChanged([CallerMemberName]string propertyName = null)
         * {
         *  PropertyChangedEventHandler handler = this.PropertyChanged;
         *  if (handler != null)
         *  {
         *      var e = new PropertyChangedEventArgs(propertyName);
         *      handler(this, e);
         *  }
         * }*/

        public MainWindow()
        {
            CefSettings settings = new CefSettings()
            {
                PersistSessionCookies  = true,
                PersistUserPreferences = true,
                RootCachePath          = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "TransparentTwitchChatWPF", "cef"),
                CachePath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "TransparentTwitchChatWPF", "cef", "cache")
            };

            Cef.Initialize(settings);

            InitializeComponent();
            DataContext = this;

            this.currentChat = new CustomURLChat(); // TODO: initializing here needed?

            Services.Tracker.Configure(this).IdentifyAs("State").Apply();
            this.genSettingsTrackingConfig = Services.Tracker.Configure(SettingsSingleton.Instance.genSettings);
            this.genSettingsTrackingConfig.IdentifyAs("MainWindow").Apply();

            var browserSettings = new BrowserSettings
            {
                //ApplicationCache = CefState.Enabled,
                LocalStorage = CefState.Enabled,
                //FileAccessFromFileUrls = CefState.Enabled,
                //UniversalAccessFromFileUrls = CefState.Enabled,
            };

            Browser1.BrowserSettings = browserSettings;
            Browser1.RequestContext  = new RequestContext(new RequestContextSettings()
            {
                CachePath              = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "TransparentTwitchChatWPF", "cef", "cache"),
                PersistSessionCookies  = true,
                PersistUserPreferences = true,
            });
            //this.Browser1.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true;

            //this.Browser1.RegisterAsyncJsObject("jsCallback", new JsCallbackFunctions());
            this.jsCallbackFunctions = new JsCallbackFunctions();
            Browser1.JavascriptObjectRepository.Register("jsCallback", this.jsCallbackFunctions, isAsync: true, options: BindingOptions.DefaultBinder);
        }
コード例 #19
0
        /// <summary>
        /// Adds Height/Width/Top/Left/WindowState to list of tracked properties. Uses
        /// the "Sizechanged" event to trigger persistence. Handles validation for edge
        /// cases (2nd display disconnected between application shutdown and restart).
        /// </summary>
        /// <param name="configuration"></param>
        public override void InitializeConfiguration(TrackingConfiguration configuration)
        {
            Window window = configuration.TargetReference.Target as Window;

            configuration
                .AddProperties<Window>(w => w.Height, w => w.Width, w => w.Top, w => w.Left, w => w.WindowState)
                .RegisterPersistTrigger(nameof(window.SizeChanged))
                .RegisterPersistTrigger(nameof(window.LocationChanged))
                .IdentifyAs(window.Name);

            configuration.ApplyingProperty += (sender, args) =>
            {
                //We don't want to restore the form off screeen.
                //This can happen in case of a multi-display setup i.e. the form was closed on 2nd display, but restored after the 2nd display was disconnected
                if (args.Property == "Left")
                    args.Value = Math.Min(Math.Max(SystemParameters.VirtualScreenLeft, (double)args.Value), SystemParameters.VirtualScreenWidth - window.Width);
            };

            base.InitializeConfiguration(configuration);
        }
コード例 #20
0
        public void SetUp()
        {
            scheduler    = new TestScheduler();
            mockRestorer = new Mock <IRestorer>();
            mockTrackingConfiguration = new TrackingConfiguration(TimeSpan.FromMinutes(1), TimeSpan.FromMinutes(1), Path.Combine(TestContext.CurrentContext.TestDirectory, "file.csv"));
            if (File.Exists(mockTrackingConfiguration.Persistency))
            {
                File.Delete(mockTrackingConfiguration.Persistency);
            }

            mockRatingStream = new Mock <IRatingStream>();
            var tracker = new Mock <ITracker>();
            var stream  = scheduler.CreateHotObservable(
                new Recorded <Notification <(ITracker Tracker, RatingRecord Rating)> >(100, Notification.CreateOnNext((tracker.Object, new RatingRecord {
                Id = "1", Date = DateTime.Now, Rating = 2
            }))));

            mockRatingStream.Setup(item => item.Stream).Returns(stream);
            instance = CreateTrackingPersistency();
        }
コード例 #21
0
        /// <summary>
        /// Initializes the tracking configuration for a target object
        /// </summary>
        /// <param name="configuration"></param>
        public virtual void InitializeConfiguration(TrackingConfiguration configuration)
        {
            object target = configuration.TargetReference.Target;

            //set key if [TrackingKey] detected
            Type         targetType  = target.GetType();
            PropertyInfo keyProperty = targetType.GetProperties().SingleOrDefault(pi => pi.IsDefined(typeof(TrackingKeyAttribute), true));

            if (keyProperty != null)
            {
                configuration.Key = keyProperty.GetValue(target, null).ToString();
            }

            //add properties that have [Trackable] applied
            foreach (PropertyInfo pi in targetType.GetProperties())
            {
                TrackableAttribute propTrackableAtt = pi.GetCustomAttributes(true).OfType <TrackableAttribute>().Where(ta => ta.TrackerName == configuration.StateTracker.Name).SingleOrDefault();
                if (propTrackableAtt != null)
                {
                    //use [DefaultValue] if present
                    DefaultValueAttribute defaultAtt = pi.CustomAttributes.OfType <DefaultValueAttribute>().SingleOrDefault();
                    if (defaultAtt != null)
                    {
                        configuration.AddProperty(pi.Name, defaultAtt.Value);
                    }
                    else
                    {
                        configuration.AddProperty(pi.Name);
                    }
                }
            }

            //allow the object to alter its configuration
            ITrackingAware trackingAwareTarget = target as ITrackingAware;

            if (trackingAwareTarget != null)
            {
                trackingAwareTarget.InitConfiguration(configuration);
            }
        }
コード例 #22
0
        /// <summary>
        /// Adds Height/Width/Top/Left/WindowState to list of tracked properties. Uses
        /// the "Sizechanged" event to trigger persistence. Handles validation for edge
        /// cases (2nd display disconnected between application shutdown and restart).
        /// </summary>
        /// <param name="configuration"></param>
        public override void InitializeConfiguration(TrackingConfiguration configuration)
        {
            Window window = configuration.TargetReference.Target as Window;

            configuration
            .AddProperties <Window>(w => w.Height, w => w.Width, w => w.Top, w => w.Left, w => w.WindowState)
            .RegisterPersistTrigger(nameof(window.SizeChanged))
            .RegisterPersistTrigger(nameof(window.LocationChanged))
            .IdentifyAs(window.Name);

            configuration.ApplyingProperty += (sender, args) =>
            {
                //We don't want to restore the form off screeen.
                //This can happen in case of a multi-display setup i.e. the form was closed on 2nd display, but restored after the 2nd display was disconnected
                if (args.Property == "Left")
                {
                    args.Value = Math.Min(Math.Max(SystemParameters.VirtualScreenLeft, (double)args.Value), SystemParameters.VirtualScreenWidth - window.Width);
                }
            };

            base.InitializeConfiguration(configuration);
        }
コード例 #23
0
        /*public event PropertyChangedEventHandler PropertyChanged;
         * protected void OnPropertyChanged([CallerMemberName]string propertyName = null)
         * {
         *  PropertyChangedEventHandler handler = this.PropertyChanged;
         *  if (handler != null)
         *  {
         *      var e = new PropertyChangedEventArgs(propertyName);
         *      handler(this, e);
         *  }
         * }*/

        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;

            Services.Tracker.Configure(this).IdentifyAs("State").Apply();
            this.genSettingsTrackingConfig = Services.Tracker.Configure(SettingsSingleton.Instance.genSettings);
            this.genSettingsTrackingConfig.IdentifyAs("MainWindow").Apply();

            var browserSettings = new BrowserSettings
            {
                FileAccessFromFileUrls      = CefState.Enabled,
                UniversalAccessFromFileUrls = CefState.Enabled
            };

            Browser1.BrowserSettings = browserSettings;
            CefSharpSettings.LegacyJavascriptBindingEnabled = true;

            //this.Browser1.RegisterAsyncJsObject("jsCallback", new JsCallbackFunctions());
            this.jsCallbackFunctions = new JsCallbackFunctions();
            Browser1.JavascriptObjectRepository.Register("jsCallback", this.jsCallbackFunctions, isAsync: true, options: BindingOptions.DefaultBinder);
        }
コード例 #24
0
ファイル: MainWindow.xaml.cs プロジェクト: ncvanleeuwen/Jot
 public void InitConfiguration(TrackingConfiguration configuration)
 {
     configuration.StateTracker.Configure(tabControl).AddProperties <TabControl>(tc => tc.SelectedIndex).Apply();
     configuration.StateTracker.Configure(col).AddProperties <ColumnDefinition>(tc => tc.Width).Apply();
 }
コード例 #25
0
 public TrackingOperationEventArgs(TrackingConfiguration configuration, string property)
 {
     Configuration = configuration;
     Property = property;
 }
コード例 #26
0
ファイル: TestTrackingAware.cs プロジェクト: vnvizitiu/Jot
 public void InitConfiguration(TrackingConfiguration configuration)
 {
     configuration.AddProperties("Value1", "Value2");
 }
コード例 #27
0
 public void SetTrackingConfig(TrackingConfiguration trackingConfig)
 {
     // TODO IRuleSetTrackingInterceptor.SetTrackingConfig
 }
コード例 #28
0
 public void ConfigureTracking(TrackingConfiguration <AppSettings> configuration)
 {
     configuration.Properties(s => new { s.DisplaySettings, s.RuntimeSettings });
     System.Windows.Application.Current.Exit += (s, e) => { configuration.Tracker.Persist(this); };
 }
コード例 #29
0
ファイル: TrackingAwareTestClass.cs プロジェクト: puchs/Jot
 public void ConfigureTracking(TrackingConfiguration configuration)
 {
     configuration.AsGeneric <TrackingAwareTestClass>()
     .Id(f => "x")
     .Properties(f => new { f.Double, f.Int, f.Timespan });
 }
コード例 #30
0
 public void ConfigureTracking(TrackingConfiguration <TestTrackingAware> configuration)
 {
     configuration.Properties(x => new { Value1, Value2 });
 }
コード例 #31
0
 public void Config_ReleaseReference()
 {
     TrackingConfiguration config = new TrackingConfiguration(new DummyClass1(), null);
     GC.Collect(2, GCCollectionMode.Forced);
     GC.WaitForFullGCComplete();
     Assert.IsFalse(config.TargetReference.IsAlive);
 }
コード例 #32
0
 public void InitConfiguration(TrackingConfiguration configuration)
 {
     configuration.IdentifyAs(this.Name);
 }
コード例 #33
0
 public void Config_TrackableAttributeExcludeHonored()
 {
     TrackingConfiguration config = new TrackingConfiguration(new DummyClass3(), null);
     Assert.AreEqual(1, config.Properties.Count);
     Assert.AreEqual("Property1", config.Properties.ElementAt(0));
 }
コード例 #34
0
ファイル: TestTrackingAware.cs プロジェクト: anakic/Jot
 public void InitConfiguration(TrackingConfiguration configuration)
 {
     configuration.AddProperties("Value1", "Value2");
 }
コード例 #35
0
 public void ConfigureTracking(TrackingConfiguration <AuthenticationSettings> configuration)
 {
     configuration.Properties(settings => new { settings.Token });
     PropertyChanged += (sender, args) => { configuration.Tracker.Persist(this); };
 }
コード例 #36
0
 public TrackingModule(TrackingConfiguration configuration)
 {
     this.configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));
 }
コード例 #37
0
ファイル: TrackingExtension.cs プロジェクト: ncvanleeuwen/Jot
 protected virtual void CustomizeConfiguration(TrackingConfiguration configuration)
 {
 }
コード例 #38
0
 /// <summary>
 /// Creates a new instance of TrackingOperationEventArgs.
 /// </summary>
 /// <param name="configuration">The TrackingConfiguration object that initiated the tracking operation.</param>
 /// <param name="property">The property that is being persisted or applied to.</param>
 /// <param name="value">The value that is being persited or applied.</param>
 public TrackingOperationEventArgs(TrackingConfiguration configuration, string property, object value)
 {
     Configuration = configuration;
     Property = property;
     Value = value;
 }
コード例 #39
0
ファイル: GeneralSettings.cs プロジェクト: hypzeh/smallify
 public void ConfigureTracking(TrackingConfiguration <GeneralSettings> configuration)
 {
     configuration.Properties(settings => new { settings.IsAlwaysOnTop });
     PropertyChanged += (sender, args) => { configuration.Tracker.Persist(this); };
 }
コード例 #40
0
ファイル: MainWindow.xaml.cs プロジェクト: anakic/Ursus
 public void InitConfiguration(TrackingConfiguration configuration)
 {
     configuration.SettingsTracker.Configure(tabControl).AddProperties<TabControl>(tc=>tc.SelectedIndex).Apply();
     configuration.SettingsTracker.Configure(col).AddProperties<ColumnDefinition>(tc => tc.Width).Apply();
 }
コード例 #41
0
ファイル: StateTracker.cs プロジェクト: anakic/Jot
 /// <summary>
 /// Gets or creates a configuration object what will control how the target object is going to be tracked (which properties, when to persist, when to apply, validation).
 /// For a given target object, always returns the same configuration instance.
 /// </summary>
 /// <param name="target">The object whose properties your want to track.</param>
 /// <returns>The tracking configuration object.</returns>
 public TrackingConfiguration Configure(object target)
 {
     TrackingConfiguration config = FindExistingConfig(target);
     if (config == null)
     {
         config = new TrackingConfiguration(target, this);
         var initializer = FindInitializer(target.GetType());
         initializer.InitializeConfiguration(config);
         _trackedObjects.Add(new WeakReference(target));
         _configurationsDict.Add(target, config);
     }
     return config;
 }
コード例 #42
0
 public void InitializeConfiguration(TrackingConfiguration configuration)
 {
     configuration.AddProperties<Foo>(t => t.A, t => t.B, t => t.Double, t => t.Int, t => t.Timespan);
 }
コード例 #43
0
ファイル: TrackingExtension.cs プロジェクト: anakic/Ursus
 protected virtual void CustomizeConfiguration(TrackingConfiguration configuration)
 {
 }
コード例 #44
0
 protected override void CustomizeConfiguration(TrackingConfiguration configuration)
 {
     if(configuration.TargetReference.Target is Form)
         FormsHelper.ConfigureFormTracking(configuration);
     base.CustomizeConfiguration(configuration);
 }
コード例 #45
0
ファイル: ColorPickerUC.cs プロジェクト: anakic/Ursus
 public void InitConfiguration(TrackingConfiguration configuration)
 {
     configuration.IdentifyAs(this.Name);
 }
コード例 #46
0
 public void InitializeConfiguration(TrackingConfiguration configuration)
 {
     configuration.AddProperties <Foo>(t => t.A, t => t.B, t => t.Double, t => t.Int, t => t.Timespan);
 }
コード例 #47
0
 public void SetTrackingConfig(TrackingConfiguration trackingConfig)
 {
     this.trackingConfig = trackingConfig;
 }
コード例 #48
0
 /// <summary>
 /// Sets the rule set tracking GUID and tracking configuration.
 /// </summary>
 /// <param name="trackingConfig">The tracking configuration.</param>
 public void SetTrackingConfig(TrackingConfiguration trackingConfig)
 {
     this.trackingConfig = trackingConfig;
 }