Пример #1
0
        public void ItOnlyReturnsTriggeredBundles()
        {
            var collection = new TriggerCollection();

            var bundles = new[]
            {
                new TriggerBundle(TriggerTestHelpers.StaticTrigger(true)),
                new TriggerBundle(TriggerTestHelpers.StaticTrigger(false)),
                new TriggerBundle(TriggerTestHelpers.StaticTrigger(true)),
                new TriggerBundle(TriggerTestHelpers.StaticTrigger(false)),
                new TriggerBundle(TriggerTestHelpers.StaticTrigger(false))
            };

            var expected = new[]
            {
                bundles[0],
                bundles[2],
            };

            foreach(var bundle in bundles)
            {
                collection.Add(bundle);
            }

            var actual = collection.Check();

            CollectionAssert.AreEqual(expected, actual);
        }
Пример #2
0
 public Context()
 {
     Locks = new LockCollection();
     Triggers = new TriggerCollection();
     Subprograms = new SubprogramCollection();
     LabelIndex = 0;
     InstructionId = 0;
 }
 public static TriggerCollection GetTriggers(DependencyObject d) {
     TriggerCollection triggers = (TriggerCollection)d.GetValue(TriggersProperty);
     if(triggers == null) {
         triggers = new TriggerCollection();
         d.SetValue(TriggersProperty, triggers);
     }
     return triggers;
 }
 public static void SetTriggers(Control control, TriggerCollection collection)
 {
     if (!instance.triggerLookup.ContainsKey(control))
     {
         instance.triggerLookup[control] = collection;
         control.Unloaded += OnControlUnloaded;
         collection.Control = control;
     }
 }
Пример #5
0
 /// <summary>
 /// Gets the TriggerCollection containing the triggers associated with the specified object.
 /// </summary>
 /// <param name="obj">The object from which to retrieve the triggers.</param>
 /// <returns>
 /// A TriggerCollection containing the triggers associated with the specified object.
 /// </returns>
 public static TriggerCollection GetTriggers(IDependencyObject obj)
 {
     var triggerCollection = (TriggerCollection) obj.GetValue(TriggersProperty);
     if (triggerCollection == null)
     {
         triggerCollection = new TriggerCollection();
         obj.SetValue(TriggersProperty, triggerCollection);
     }
     return triggerCollection;
 }
Пример #6
0
 public void Dispose()
 {
     _regInfo = null;
     _triggers = null;
     _settings = null;
     _principal = null;
     _actions = null;
     if (_v2Def != null)
         Marshal.ReleaseComObject(_v2Def);
     _v1Task = null;
 }
        public override void DeepCopy(IDeepCopyable source, ICopyManager copyManager)
        {
            base.DeepCopy(source, copyManager);
            TemplateWithTriggers twt      = (TemplateWithTriggers)source;
            TriggerCollection    triggers = Triggers;

            foreach (TriggerBase t in twt.Triggers)
            {
                triggers.Add(copyManager.GetCopy(t));
            }
        }
        public static TriggerCollection GetTriggers(DependencyObject d)
        {
            TriggerCollection triggers = (TriggerCollection)d.GetValue(TriggersProperty);

            if (triggers == null)
            {
                triggers = new TriggerCollection();
                d.SetValue(TriggersProperty, triggers);
            }
            return(triggers);
        }
Пример #9
0
        /// <summary>
        /// Returns the trigger collection for a particular control.
        /// </summary>
        public static TriggerCollection GetTriggers(Control control)
        {
            TriggerCollection collection;
            if (!instance.triggerLookup.TryGetValue(control, out collection))
            {
                collection = new TriggerCollection(control);
                instance.triggerLookup[control] = collection;
                control.Unloaded += OnControlUnloaded;
            }

            return collection;
        }
Пример #10
0
        public void AddTriggerTest()
        {
            Button      button  = new Button();
            StubTrigger trigger = new StubTrigger();

            TriggerCollection tc = Interaction.GetTriggers(button);

            tc.Add(trigger);

            Assert.IsTrue(trigger.AddedHost, "Trigger has been parented.");
            Assert.IsFalse(trigger.ChangedHost, "Trigger has not changed parents.");
            Assert.IsFalse(trigger.RemovedHost, "Trigger has not been unparented.");
        }
Пример #11
0
            public static void GetTriggers(string database)
            {
                ServerConnection serverConnection = new ServerConnection(Utility.DBConnection);
                Server           server           = new Server(serverConnection);
                Database         db = server.Databases[database];

                ScriptingOptions so = new ScriptingOptions();

                so.ChangeTracking     = true;
                so.ClusteredIndexes   = true;
                so.ExtendedProperties = true;

                CreateTriggersSchema();

                foreach (Table table in db.Tables)
                {
                    TriggerCollection triggerCollection = table.Triggers;
                    if (triggerCollection.Count > 0)
                    {
                        foreach (Trigger trigger in triggerCollection)
                        {
                            StringCollection script      = trigger.Script(so);
                            string[]         scriptArray = new string[script.Count];
                            script.CopyTo(scriptArray, 0);

                            DataRow dr = triggers.NewRow();
                            dr["Name"] = trigger.Name;
                            //dr["Schema"] = trigger.;
                            dr["Description"]      = trigger.ExtendedProperties["MS_Description"] != null ? trigger.ExtendedProperties["MS_Description"].Value.ToString() : string.Empty;
                            dr["TableName"]        = table.Name;
                            dr["InsteadOf"]        = trigger.InsteadOf;
                            dr["IsEnabled"]        = trigger.IsEnabled;
                            dr["CreateDate"]       = trigger.CreateDate;
                            dr["DateLastModified"] = trigger.DateLastModified;
                            dr["Insert"]           = trigger.Insert;
                            dr["Update"]           = trigger.Update;
                            dr["Delete"]           = trigger.Delete;

                            for (int i = 0; i < scriptArray.Length; i++)
                            {
                                //scriptArray[i] = Utility.SplitString(scriptArray[i], 150);
                                scriptArray[i] = scriptArray[i].Replace("@level0type", "\n\t@level0type");
                            }

                            dr["Script"] = string.Join(Environment.NewLine, scriptArray);

                            triggers.Rows.Add(dr);
                        }
                    }
                }
            }
Пример #12
0
        public void RemoveTriggerTest()
        {
            Button      button  = new Button();
            StubTrigger trigger = new StubTrigger();

            TriggerCollection tc = Interaction.GetTriggers(button);

            tc.Add(trigger);
            Assert.AreEqual(trigger.HostObject, button, "trigger.AssociatedObject == button");
            tc.Remove(trigger);

            Assert.IsTrue(trigger.AddedHost, "Trigger has been parented.");
            Assert.IsFalse(trigger.ChangedHost, "Trigger has not changed parents.");
            Assert.IsTrue(trigger.RemovedHost, "Trigger has been unparented.");
        }
Пример #13
0
        public static void enableTriggers(string machineName, string taskName, SecurityOptions securityOptions, bool enable)
        {
            using (TaskService ts = new TaskService(machineName, securityOptions.RunAsUser, Environment.UserDomainName, securityOptions.Password))
            {
                Task task = getTask(taskName, ts);
                if (task != null)
                {
                    TaskDefinition    def            = task.Definition;
                    TriggerCollection triggers       = def.Triggers;
                    List <Trigger>    newTriggerList = new List <Trigger>();
                    foreach (Trigger trigger in triggers)
                    {
                        Trigger newTrigger = trigger.Clone() as Trigger;
                        newTrigger.Enabled = enable;
                        newTriggerList.Add(newTrigger);
                    }

                    def.Triggers.Clear();
                    def.Triggers.AddRange(newTriggerList);

                    if (securityOptions.HighestPrivilege)
                    {
                        def.Principal.RunLevel = TaskRunLevel.Highest;
                    }
                    else
                    {
                        def.Principal.RunLevel = TaskRunLevel.LUA;
                    }

                    TaskLogonType logonType = TaskLogonType.S4U;
                    if (securityOptions.StorePassword)
                    {
                        logonType = TaskLogonType.Password;
                    }

                    string runAsUser = String.Concat(Environment.UserDomainName, "\\", securityOptions.RunAsUser);

                    //using (TaskService ts = new TaskService(machineName, securityOptions.RunAsUser, machineName, securityOptions.Password))
                    {
                        TaskFolder tf = getTaskFolder(ts);

                        tf.RegisterTaskDefinition(taskName, def, TaskCreation.Update, runAsUser,
                                                  securityOptions.Password, logonType);
                    }
                }
            }
        }
Пример #14
0
        private void UpdateTriggers(TriggerCollection triggers, dynamic navigationPlanJson)
        {
            var existingTriggers = navigationPlanJson.triggersStorage.triggers;

            //remove the old triggers
            foreach (var triggerElement in ((IEnumerable)existingTriggers).Cast <dynamic>().Where(triggerElement => IsDynamicLayoutActionElement(triggerElement))
                     .ToArray())
            {
                triggerElement.Remove();
            }


            //add new triggers
            foreach (var trigger in triggers.OrderBy(t => t.Priority))
            {
                dynamic triggerElement = new JObject();
                triggerElement.name       = trigger.Name;
                triggerElement.priority   = trigger.Priority;
                triggerElement.actionType = "";

                foreach (var action in trigger.Actions)
                {
                    triggerElement.actionName = action.Name; //It looks like I'm setting it here multiple times but actually there is only one action

                    var conditionsArray = new JArray();
                    triggerElement.conditions = conditionsArray;

                    foreach (var condition in action.Conditions)
                    {
                        dynamic conditionElement = new JObject();
                        conditionElement.type         = condition.Type;
                        conditionElement.updateType   = condition.UpdateType;
                        conditionElement.equationType = condition.EquationType;

                        var valuesArray = new JArray();
                        conditionElement.values = valuesArray;
                        foreach (var value in condition.Values)
                        {
                            valuesArray.Add(new JValue(value.Value));
                        }

                        conditionsArray.Add(conditionElement);
                    }
                }
                existingTriggers.Add(triggerElement);
            }
        }
Пример #15
0
        /// <summary>
        /// Gets the attached triggers.
        /// </summary>
        /// <param name="obj">
        /// The object to get the triggers from.
        /// </param>
        /// <returns>
        /// The <see cref="TriggerCollection"/>.
        /// </returns>
        public static TriggerCollection GetTriggers(DependencyObject obj)
        {
            if (obj != null)
            {
                var triggers = (TriggerCollection)obj.GetValue(TriggersProperty);

                if (triggers == null)
                {
                    triggers = new TriggerCollection();
                    obj.SetValue(TriggersProperty, triggers);
                }

                return triggers;
            }

            return null;
        }
Пример #16
0
        /// <summary>
        /// Gets the attached triggers.
        /// </summary>
        /// <param name="obj">
        /// The object to get the triggers from.
        /// </param>
        /// <returns>
        /// The <see cref="TriggerCollection"/>.
        /// </returns>
        public static TriggerCollection GetTriggers(DependencyObject obj)
        {
            if (obj != null)
            {
                var triggers = (TriggerCollection)obj.GetValue(TriggersProperty);

                if (triggers == null)
                {
                    triggers = new TriggerCollection();
                    obj.SetValue(TriggersProperty, triggers);
                }

                return(triggers);
            }

            return(null);
        }
Пример #17
0
        public static bool isTaskDisabled(string machineName, string taskName, SecurityOptions securityOptions)
        {
            using (TaskService ts = new TaskService(machineName, securityOptions.RunAsUser, Environment.UserDomainName, securityOptions.Password))
            {
                Task              task     = getTask(taskName, ts);
                TaskDefinition    def      = task.Definition;
                TriggerCollection triggers = def.Triggers;
                foreach (Trigger trigger in triggers)
                {
                    if (trigger.Enabled == true)
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
Пример #18
0
 public GameMakerFile()
 {
     Sprites = new SpriteCollection();
       Sounds = new SoundCollection();
       Backgrounds = new BackgroundCollection();
       Paths = new PathCollection();
       Scripts = new ScriptCollection();
       Fonts = new FontCollection();
       TimeLines = new TimeLineCollection();
       Objects = new ObjectCollection();
       Rooms = new RoomCollection();
       Triggers = new TriggerCollection();
       Includes = new IncludedFileCollection();
       Constants = new ConstantCollection();
       Information = new GameInformation();
       Settings = new GameSettings();
       ResourceTree = new ResourceTree();
 }
Пример #19
0
        public void ActionInvocationOrderTest()
        {
            Rectangle         rectangle  = new Rectangle();
            TimedAction       action1    = new TimedAction();
            TimedAction       action2    = new TimedAction();
            TimedAction       action3    = new TimedAction();
            TriggerCollection collection = Interaction.GetTriggers(rectangle);
            StubTrigger       trigger    = new StubTrigger();

            trigger.Actions.Add(action1);
            trigger.Actions.Add(action2);
            trigger.Actions.Add(action3);
            collection.Add(trigger);

            trigger.FireStubTrigger();
            Assert.IsTrue(action1.Order < action2.Order, "action1.Order < action2.Order");
            Assert.IsTrue(action2.Order < action3.Order, "action2.Order < action3.Order");
        }
Пример #20
0
 public GameMakerFile()
 {
     Sprites      = new SpriteCollection();
     Sounds       = new SoundCollection();
     Backgrounds  = new BackgroundCollection();
     Paths        = new PathCollection();
     Scripts      = new ScriptCollection();
     Fonts        = new FontCollection();
     TimeLines    = new TimeLineCollection();
     Objects      = new ObjectCollection();
     Rooms        = new RoomCollection();
     Triggers     = new TriggerCollection();
     Includes     = new IncludedFileCollection();
     Constants    = new ConstantCollection();
     Information  = new GameInformation();
     Settings     = new GameSettings();
     ResourceTree = new ResourceTree();
 }
Пример #21
0
        /// <summary>
        /// Gets the value of the <see cref="TriggersProperty"/> attached property.
        /// </summary>
        /// <param name="dependencyObject">
        /// The dependency object for which to get the value.
        /// </param>
        /// <returns>
        /// The <see cref="TriggerCollection"/> associated to the given object.
        /// </returns>
        // ReSharper disable ReturnTypeCanBeEnumerable.Global
        public static TriggerCollection GetTriggers(DependencyObject dependencyObject)
        // ReSharper restore ReturnTypeCanBeEnumerable.Global
        {
            if (dependencyObject != null)
            {
                var collection = (TriggerCollection)dependencyObject.GetValue(TriggersProperty);

                if (collection == null)
                {
                    collection = new TriggerCollection();
                    dependencyObject.SetValue(TriggersProperty, collection);
                }

                return(collection);
            }

            return(null);
        }
Пример #22
0
        public void MoveTriggerTest()
        {
            Button      button    = new Button();
            Rectangle   rectangle = new Rectangle();
            StubTrigger trigger   = new StubTrigger();

            TriggerCollection tc  = Interaction.GetTriggers(rectangle);
            TriggerCollection tc2 = Interaction.GetTriggers(button);

            tc.Add(trigger);
            tc.Remove(trigger);
            tc2.Add(trigger);

            Assert.IsTrue(trigger.AddedHost, "Trigger has been parented.");
            Assert.IsTrue(trigger.ChangedHost, "Trigger has changed parents.");
            Assert.IsTrue(trigger.RemovedHost, "Trigger has been unparented.");
            Assert.AreEqual(trigger.HostObject, button, "trigger.AssociatedObject == button");
            Assert.AreEqual(Interaction.GetTriggers(rectangle).Count, 0, "rectangle.Triggers.Count == 0");
        }
Пример #23
0
        public void AttachMultipleTimesTest()
        {
            EventTriggerBase  trigger     = new StubTrigger();
            Rectangle         rectangle1  = new Rectangle();
            Rectangle         rectangle2  = new Rectangle();
            TriggerCollection collection1 = Interaction.GetTriggers(rectangle1);
            TriggerCollection collection2 = Interaction.GetTriggers(rectangle2);

            collection1.Add(trigger);
            // it is illegal to add the same trigger to more than one object
            try
            {
                collection2.Add(trigger);
                Debug.Fail("Attaching the same trigger twice should throw a InvalidOperationException");
            }
            catch (InvalidOperationException)
            {
            }
        }
Пример #24
0
        private void FillTriggers(TriggerCollection triggersCollection)
        {
            dynamic triggersElement = _navigationPlanJson?.triggersStorage?.triggers;

            if (triggersElement == null)
            {
                return;
            }


            foreach (var triggerElement in triggersElement)
            {
                string actionName = ConvertDynamicValue <string>(triggerElement.actionName);

                if (!TriggerAction.POSSIBLE_ACTION_NAMES.Contains(actionName))
                {
                    continue;
                }

                Trigger trigger = new Trigger(ConvertDynamicValue <string>(triggerElement.name),
                                              ConvertDynamicValue <int>(triggerElement.priority));

                var action = new TriggerAction(actionName);

                foreach (var conditionElement in triggerElement.conditions)
                {
                    var condition = new Condition(ConvertDynamicValue <string>(conditionElement.updateType),
                                                  ConvertDynamicValue <string>(conditionElement.type),
                                                  ConvertDynamicValue <string>(conditionElement.equationType));

                    foreach (var value in conditionElement.values)
                    {
                        condition.Values.Add(new ConditionValue(ConvertDynamicValue <string>(value)));
                    }

                    action.Conditions.Add(condition);
                }

                trigger.Actions.Add(action);
                triggersCollection.Add(trigger);
            }
        }
Пример #25
0
        private static void OnTriggersChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
        {
            TriggerCollection triggerCollection  = args.OldValue as TriggerCollection;
            TriggerCollection triggerCollection2 = args.NewValue as TriggerCollection;

            if (triggerCollection != triggerCollection2)
            {
                if (triggerCollection != null && ((IAttachedObject)triggerCollection).AssociatedObject != null)
                {
                    triggerCollection.Detach();
                }
                if (triggerCollection2 != null && obj != null)
                {
                    if (((IAttachedObject)triggerCollection2).AssociatedObject != null)
                    {
                        throw new InvalidOperationException("CannotHostTriggerCollectionMultipleTimesExceptionMessage");
                    }
                    triggerCollection2.Attach(obj);
                }
            }
        }
Пример #26
0
        public void ScheduleRenewTask()
        {
            string taskName = $"Lets encrypt renew {CleanFileName(_options.HostName)}";

            Log.Information($"Creating Task {taskName} with Windows Task scheduler at 9am every day.");

            DateTime now     = DateTime.UtcNow;
            DateTime runtime = new DateTime(now.Year, now.Month, now.Day, 9, 0, 0, DateTimeKind.Utc);

            string currentExec = Assembly.GetExecutingAssembly().Location;

            // Create an action that will launch the app with the renew parameters whenever the trigger fires
            string actionString = $"\"{string.Join("\" \"", Environment.GetCommandLineArgs().Skip(1))}\" --renew";

            using (TaskService taskService = new TaskService())
                using (DailyTrigger trigger = new DailyTrigger {
                    DaysInterval = 1, StartBoundary = runtime
                })
                    using (ExecAction action = new ExecAction(currentExec, actionString, Path.GetDirectoryName(currentExec)))
                        using (TaskFolder rootFolder = taskService.RootFolder)
                            using (TaskDefinition task = taskService.NewTask())
                                using (TaskRegistrationInfo reginfo = task.RegistrationInfo)
                                    using (TriggerCollection triggers = task.Triggers)
                                        using (ActionCollection actions = task.Actions)
                                            using (TaskPrincipal principal = task.Principal)
                                            {
                                                rootFolder.DeleteTask(taskName, false);

                                                reginfo.Description = $"Check for renewal of ACME certificates for {_options.HostName}.";
                                                triggers.Add(trigger);
                                                actions.Add(action);
                                                principal.RunLevel  = TaskRunLevel.Highest; // need admin
                                                principal.LogonType = TaskLogonType.ServiceAccount;
                                                principal.UserId    = "SYSTEM";

                                                rootFolder.RegisterTaskDefinition(taskName, task);
                                            }
        }
        /// <summary>
        /// Process triggers.
        /// </summary>
        /// <param name="triggers">Object to process.</param>
        /// <param name="tableOrViewName">Name of table or view containing triggers.</param>
        /// <param name="fileBasePath">FIle path to write to (might differ between view and table).</param>
        public void Process(TriggerCollection triggers, string tableOrViewName, string fileBasePath)
        {
            new { triggers }.AsArg().Must().NotBeNull();
            new { tableOrViewName }.AsArg().Must().NotBeNullNorWhiteSpace();
            new { fileBasePath }.AsArg().Must().NotBeNullNorWhiteSpace();

            if (triggers.Count > 0)
            {
                this.documentGenerator.AddEntry("Triggers on table - " + tableOrViewName, 12, true);
            }

            this.documentGenerator.Indent();
            foreach (Trigger trigger in triggers)
            {
                if (!trigger.IsSystemObject)
                {
                    this.databaseDocumenter.Document(trigger);
                    ScriptAndWriteToFile(trigger, fileBasePath, FileExtensionTrigger);
                }
            }

            this.documentGenerator.Undent();
        }
Пример #28
0
        protected override void ProcessResource(TriggerCollection aTriggers)
        {
            var document = LoadXml(Filenames.Triggers + ".xml");

            if (document != null)
            {
                OnCategoryProcessing(ResourceTypes.Triggers);

                aTriggers.AddRange(
                    from element in document.Elements("Trigger")
                    select new Trigger()
                {
                    Name         = GetElement(element, "Name").Value,
                    ID           = GetElementValue <int>(element, "ID"),
                    Condition    = GetElement(element, "Condition").Value,
                    ConstantName = GetElement(element, "ConstantName").Value,
                    Moment       = GetElementValue <CheckingMoments>(element, "Moment")
                }
                    );

                OnCategoryProcessed(ResourceTypes.Triggers);
            }
        }
Пример #29
0
        private void AddTrigger(MidiTrigger trigger)
        {
            var toRemove = TriggerCollection.Where(x => x.Trigger.PinNumber == trigger.PinNumber).ToList();

            toRemove.ForEach(x => TriggerCollection.Remove(x));

            TriggerCollection.Add(new MidiTriggerViewModel(_eventAggregator, DrumManager, trigger));

            var seriesToRemove = CurrentValuePlot.Series.Where(x => x.Tag as Pins? == trigger.PinNumber).ToList();

            seriesToRemove.ForEach(x => CurrentValuePlot.Series.Remove(x));

            var newSeries = new LineSeries
            {
                Title = trigger.PinNumber.ToString(),
                Tag   = trigger.PinNumber
            };

            int insertIndex = 0;

            for (int i = CurrentValuePlot.Series.Count - 1; i >= 0; i--)
            {
                Pins currentPin = (Pins)CurrentValuePlot.Series[i].Tag;

                if (currentPin < trigger.PinNumber)
                {
                    insertIndex = i + 1;
                    break;
                }
            }

            CurrentValuePlot.Series.Insert(insertIndex, newSeries);

            //public active / inactive
            _eventAggregator.GetEvent <TriggerActiveChangedEvent>()
            .Publish(new KeyValuePair <Pins, bool>(trigger.PinNumber, trigger.Type != TriggerType.Disabled));
        }
Пример #30
0
        private static IEnumerable <TriggerBase> MergeTriggers(TriggerCollection left, TriggerCollection right)
        {
            if (TryGetNonNull(left, right, out var value))
            {
                return(value);
            }

            var result = new List <TriggerBase>(right);

            foreach (var triggerBase in left)
            {
                // TODO
                switch (triggerBase)
                {
                case Trigger trigger:
                    //trigger.Setters
                    break;

                case DataTrigger dataTrigger:
                    //dataTrigger.Setters
                    break;

                case MultiTrigger multiTrigger:
                    //multiTrigger.Setters
                    break;

                case MultiDataTrigger multiDataTrigger:
                    //multiDataTrigger.Setters
                    break;

                case EventTrigger eventTrigger:
                    break;
                }
            }

            return(result);
        }
 public ITriggerCollection CreateTriggerCollection(TriggerCollection triggerCollection)
 {
     return(new Dev2TriggerCollection(this, triggerCollection));
 }
 public ITriggerCollection CreateTriggerCollection(TriggerCollection triggerCollection)
 {
     return new Dev2TriggerCollection(this, triggerCollection);
 }
Пример #33
0
 /// <summary>
 /// Sets the triggers attached via the <see cref="P:TomsToolbox.Wpf.StyleBindings.Triggers"/> attached property.
 /// </summary>
 /// <param name="obj">The obj.</param>
 /// <param name="value">The value.</param>
 public static void SetTriggers([NotNull] DependencyObject obj, [CanBeNull, ItemNotNull] TriggerCollection value)
 {
     obj.SetValue(TriggersProperty, value);
 }
 public Dev2TriggerCollection(ITaskServiceConvertorFactory taskServiceConvertorFactory,
     TriggerCollection nativeInstance)
 {
     _taskServiceConvertorFactory = taskServiceConvertorFactory;
     _nativeInstance = nativeInstance;
 }
Пример #35
0
        } // end check persistence method

        // list all scheduled tasks available to backdoor
        public void listPersistence(string persistMethod, string command, string commandArg, string theKey, string theVal, string theName, string filePath, string status, string option)
        {
            // determine whether option was specified
            bool optionSpecified = false;

            if (!option.Equals(""))
            {
                optionSpecified = true;
            }

            bool nameSpecified = false;
            bool schTaskExists = false;

            // if user specified they only want to list a specific schtask
            if (!theName.Equals(""))
            {
                nameSpecified = true;
                schTaskExists = lib.Utils.ScheduledTaskExists(theName);

                // if schtask exists, then look for that schtask
                if (schTaskExists)
                {
                    Console.WriteLine("");
                    Console.WriteLine("[*] INFO: Listing scheduled task details of name that was specified.");

                    TaskService        theTask       = new TaskService();
                    IEnumerable <Task> allOfTheTasks = theTask.AllTasks;
                    Console.WriteLine("");
                    Console.WriteLine("");
                    Console.WriteLine("");

                    foreach (Task task in allOfTheTasks)
                    {
                        string   schtaskName = task.Name;
                        DateTime runTime     = task.NextRunTime;
                        string   theRunTime  = runTime.ToString("G", CultureInfo.CurrentCulture);

                        // once we find the schtask, display its details
                        if (schtaskName.ToLower().Equals(theName.ToLower()))
                        {
                            ActionCollection allActions = task.Definition.Actions;

                            // getschtask owner
                            string             schtaskAction = allActions.Context;
                            SecurityIdentifier schtaskOwner  = task.SecurityDescriptor.Owner;
                            NTAccount          ntAccount     = (NTAccount)schtaskOwner.Translate(typeof(NTAccount));
                            string             owner         = ntAccount.ToString();
                            string             schtaskFolder = task.Folder.Path;


                            Console.WriteLine("[*] INFO: TASK NAME:");
                            Console.WriteLine(schtaskName);
                            Console.WriteLine("");
                            Console.WriteLine("[*] INFO: TASK PATH:");
                            Console.WriteLine(schtaskFolder);
                            Console.WriteLine("");
                            Console.WriteLine("[*] INFO: TASK OWNER:");
                            Console.WriteLine(owner);
                            Console.WriteLine("");
                            Console.WriteLine("[*] INFO: NEXT RUN TIME:");
                            Console.WriteLine(theRunTime);
                            Console.WriteLine("");

                            // get the frequency in which the schtask executes
                            TriggerCollection triggers    = task.Definition.Triggers;
                            string            triggerType = "";
                            foreach (Trigger trigger in triggers)
                            {
                                RepetitionPattern pattern = trigger.Repetition;

                                triggerType = trigger.TriggerType.ToString();
                                Console.WriteLine("[*] INFO: TASK TRIGGER:");
                                Console.WriteLine(triggerType);
                                Console.WriteLine("");
                            }


                            // get all actions and print
                            foreach (Microsoft.Win32.TaskScheduler.Action action in allActions)
                            {
                                Console.WriteLine("[*] INFO: TASK ACTION:");
                                Console.WriteLine(action.ToString());
                                Console.WriteLine("");
                            }
                        } // end once we find the schtask
                    }     // end for each task

                    return;
                } // end if schtask exists

                // if schtask doesn't exist
                else
                {
                    Console.WriteLine("");
                    Console.WriteLine("[-] ERROR: That scheduled task name does not exist. Please double check the name you provided.");
                    return;
                }
            } // end if user specified they only want to list a specific schtask


            // if user wants to see all schtasks
            else
            {
                Console.WriteLine("");
                Console.WriteLine("[*] INFO: Listing all scheduled tasks available to backdoor.");


                TaskService        ts       = new TaskService();
                IEnumerable <Task> allTasks = ts.AllTasks;
                bool schtaskExists          = lib.Utils.ScheduledTaskExists(theName);
                Console.WriteLine("");
                Console.WriteLine("");
                Console.WriteLine("");


                foreach (Task task in allTasks)
                {
                    string   schtaskName = task.Name;
                    DateTime runTime     = task.NextRunTime;
                    string   theRunTime  = runTime.ToString("G", CultureInfo.CurrentCulture);
                    bool     taskActive  = task.IsActive;


                    // only proceed to list schtask info if it is active
                    if (taskActive)
                    {
                        // get collection of all actions the schtask performs
                        ActionCollection allActions = task.Definition.Actions;

                        // getschtask owner
                        string             schtaskAction = allActions.Context;
                        SecurityIdentifier schtaskOwner  = task.SecurityDescriptor.Owner;
                        NTAccount          ntAccount     = (NTAccount)schtaskOwner.Translate(typeof(NTAccount));
                        string             owner         = ntAccount.ToString();
                        string             schtaskFolder = task.Folder.Path;

                        TriggerCollection triggers    = task.Definition.Triggers;
                        string            triggerType = "";
                        foreach (Trigger trigger in triggers)
                        {
                            RepetitionPattern pattern = trigger.Repetition;
                            triggerType = trigger.TriggerType.ToString();
                        }

                        // if option was specified, only display schtasks with frequency given
                        if (optionSpecified)
                        {
                            if (option.ToLower().Equals("hourly") && triggerType.ToLower().Equals("time"))
                            {
                                Console.WriteLine("[*] INFO: TASK NAME:");
                                Console.WriteLine(schtaskName);
                                Console.WriteLine("");
                                Console.WriteLine("[*] INFO: TASK PATH:");
                                Console.WriteLine(schtaskFolder);
                                Console.WriteLine("");
                                Console.WriteLine("[*] INFO: TASK OWNER:");
                                Console.WriteLine(owner);
                                Console.WriteLine("");
                                Console.WriteLine("[*] INFO: NEXT RUN TIME:");
                                Console.WriteLine(theRunTime);
                                Console.WriteLine("");

                                // get the frequency in which the schtask executes
                                TriggerCollection theTriggers    = task.Definition.Triggers;
                                string            theTriggerType = "";
                                foreach (Trigger trigger in theTriggers)
                                {
                                    RepetitionPattern pattern = trigger.Repetition;

                                    theTriggerType = trigger.TriggerType.ToString();
                                    Console.WriteLine("[*] INFO: TASK TRIGGER:");
                                    Console.WriteLine(theTriggerType);
                                    Console.WriteLine("");
                                }



                                // get all actions and print
                                foreach (Microsoft.Win32.TaskScheduler.Action action in allActions)
                                {
                                    Console.WriteLine("[*] INFO: TASK ACTION:");
                                    Console.WriteLine(action.ToString());
                                    Console.WriteLine("");
                                }

                                Console.WriteLine("");
                                Console.WriteLine("");
                                Console.WriteLine("");
                            }


                            else if (option.ToLower().Equals("daily") && triggerType.ToLower().Equals("daily"))
                            {
                                Console.WriteLine("[*] INFO: TASK NAME:");
                                Console.WriteLine(schtaskName);
                                Console.WriteLine("");
                                Console.WriteLine("[*] INFO: TASK PATH:");
                                Console.WriteLine(schtaskFolder);
                                Console.WriteLine("");
                                Console.WriteLine("[*] INFO: TASK OWNER:");
                                Console.WriteLine(owner);
                                Console.WriteLine("");
                                Console.WriteLine("[*] INFO: NEXT RUN TIME:");
                                Console.WriteLine(theRunTime);
                                Console.WriteLine("");

                                // get the frequency in which the schtask executes
                                TriggerCollection theTriggers    = task.Definition.Triggers;
                                string            theTriggerType = "";
                                foreach (Trigger trigger in theTriggers)
                                {
                                    RepetitionPattern pattern = trigger.Repetition;

                                    theTriggerType = trigger.TriggerType.ToString();
                                    Console.WriteLine("[*] INFO: TASK TRIGGER:");
                                    Console.WriteLine(theTriggerType);
                                    Console.WriteLine("");
                                }



                                // get all actions and print
                                foreach (Microsoft.Win32.TaskScheduler.Action action in allActions)
                                {
                                    Console.WriteLine("[*] INFO: TASK ACTION:");
                                    Console.WriteLine(action.ToString());
                                    Console.WriteLine("");
                                }

                                Console.WriteLine("");
                                Console.WriteLine("");
                                Console.WriteLine("");
                            }


                            else if ((option.ToLower().Equals("logon") && triggerType.ToLower().Equals("logon")) || (option.ToLower().Equals("boot") && triggerType.ToLower().Equals("boot")))
                            {
                                Console.WriteLine("[*] INFO: TASK NAME:");
                                Console.WriteLine(schtaskName);
                                Console.WriteLine("");
                                Console.WriteLine("[*] INFO: TASK PATH:");
                                Console.WriteLine(schtaskFolder);
                                Console.WriteLine("");
                                Console.WriteLine("[*] INFO: TASK OWNER:");
                                Console.WriteLine(owner);
                                Console.WriteLine("");
                                Console.WriteLine("[*] INFO: NEXT RUN TIME:");
                                Console.WriteLine(theRunTime);
                                Console.WriteLine("");

                                // get the frequency in which the schtask executes
                                TriggerCollection theTriggers    = task.Definition.Triggers;
                                string            theTriggerType = "";
                                foreach (Trigger trigger in theTriggers)
                                {
                                    RepetitionPattern pattern = trigger.Repetition;

                                    theTriggerType = trigger.TriggerType.ToString();
                                    Console.WriteLine("[*] INFO: TASK TRIGGER:");
                                    Console.WriteLine(theTriggerType);
                                    Console.WriteLine("");
                                }



                                // get all actions and print
                                foreach (Microsoft.Win32.TaskScheduler.Action action in allActions)
                                {
                                    Console.WriteLine("[*] INFO: TASK ACTION:");
                                    Console.WriteLine(action.ToString());
                                    Console.WriteLine("");
                                }

                                Console.WriteLine("");
                                Console.WriteLine("");
                                Console.WriteLine("");
                            }
                        } // end if option specified

                        // otherwise display as normal
                        else
                        {
                            Console.WriteLine("[*] INFO: TASK NAME:");
                            Console.WriteLine(schtaskName);
                            Console.WriteLine("");
                            Console.WriteLine("[*] INFO: TASK PATH:");
                            Console.WriteLine(schtaskFolder);
                            Console.WriteLine("");
                            Console.WriteLine("[*] INFO: TASK OWNER:");
                            Console.WriteLine(owner);
                            Console.WriteLine("");
                            Console.WriteLine("[*] INFO: NEXT RUN TIME:");
                            Console.WriteLine(theRunTime);
                            Console.WriteLine("");

                            // get the frequency in which the schtask executes
                            TriggerCollection theTriggers    = task.Definition.Triggers;
                            string            theTriggerType = "";
                            foreach (Trigger trigger in theTriggers)
                            {
                                RepetitionPattern pattern = trigger.Repetition;

                                theTriggerType = trigger.TriggerType.ToString();
                                Console.WriteLine("[*] INFO: TASK TRIGGER:");
                                Console.WriteLine(theTriggerType);
                                Console.WriteLine("");
                            }



                            // get all actions and print
                            foreach (Microsoft.Win32.TaskScheduler.Action action in allActions)
                            {
                                Console.WriteLine("[*] INFO: TASK ACTION:");
                                Console.WriteLine(action.ToString());
                                Console.WriteLine("");
                            }

                            Console.WriteLine("");
                            Console.WriteLine("");
                            Console.WriteLine("");
                        }
                    } // end if schtask is active
                }     // end iterating through each schtask
            }         // end if user wants to see all schtasks
        }             // end list persistence method
Пример #36
0
        //  ===========================================================================
        //  These methods are invoked when a Style/Template is Sealed
        //  ===========================================================================

        #region WriteMethods

        //
        //  This method
        //  1. Seals a template
        //
        internal static void SealTemplate(
            FrameworkTemplate                                           frameworkTemplate,
            ref bool                                                    isSealed,
            FrameworkElementFactory                                     templateRoot,
            TriggerCollection                                           triggers,
            ResourceDictionary                                          resources,
            HybridDictionary                                            childIndexFromChildID,
            ref FrugalStructList<ChildRecord>                           childRecordFromChildIndex,
            ref FrugalStructList<ItemStructMap<TriggerSourceRecord>>    triggerSourceRecordFromChildIndex,
            ref FrugalStructList<ContainerDependent>                    containerDependents,
            ref FrugalStructList<ChildPropertyDependent>                resourceDependents,
            ref ItemStructList<ChildEventDependent>                     eventDependents,
            ref HybridDictionary                                        triggerActions,
            ref HybridDictionary                                        dataTriggerRecordFromBinding,
            ref bool                                                    hasInstanceValues,
            ref EventHandlersStore                                      eventHandlersStore)
        {
            Debug.Assert(frameworkTemplate != null );

            // This template has already been sealed.
            // There is no more to do.
            if (isSealed)
            {
                return;
            }

            // Seal template nodes (if exists)


            if (frameworkTemplate != null)
            {
                frameworkTemplate.ProcessTemplateBeforeSeal();
            }


            if (templateRoot != null)
            {
                Debug.Assert( !frameworkTemplate.HasXamlNodeContent );

                // Seal the template

                Debug.Assert(frameworkTemplate != null);
                //frameworkTemplate.ProcessTemplateBeforeSeal();
                templateRoot.Seal(frameworkTemplate);
            }

            // Seal triggers
            if (triggers != null)
            {
                triggers.Seal();
            }

            // Seal Resource Dictionary
            if (resources != null)
            {
                resources.IsReadOnly = true;
            }

            //  Build shared tables

            if (templateRoot != null)
            {
                // This is a FEF-style template.  Process the root node, and it will
                // recurse through the rest of the FEF tree.

                StyleHelper.ProcessTemplateContentFromFEF(
                                templateRoot,
                                ref childRecordFromChildIndex,
                                ref triggerSourceRecordFromChildIndex,
                                ref resourceDependents,
                                ref eventDependents,
                                ref dataTriggerRecordFromBinding,
                                childIndexFromChildID,
                                ref hasInstanceValues);
            }

            // Process Triggers. (Trigger PropertyValues are inserted
            // last into the Style/Template GetValue chain because they
            // are the highest priority)

            bool hasHandler = false;

            Debug.Assert( frameworkTemplate != null );

            StyleHelper.ProcessTemplateTriggers(
                triggers,
                frameworkTemplate,
                ref childRecordFromChildIndex,
                ref triggerSourceRecordFromChildIndex, ref containerDependents, ref resourceDependents, ref eventDependents,
                ref dataTriggerRecordFromBinding, childIndexFromChildID, ref hasInstanceValues,
                ref triggerActions, templateRoot, ref eventHandlersStore,
                ref frameworkTemplate.PropertyTriggersWithActions,
                ref frameworkTemplate.DataTriggersWithActions,
                ref hasHandler );

            frameworkTemplate.HasLoadedChangeHandler = hasHandler;

            frameworkTemplate.SetResourceReferenceState();

            // All done, seal self and call it a day.
            isSealed = true;

            // Remove thread affinity so it can be accessed across threads
            frameworkTemplate.DetachFromDispatcher();

            // Check if the template has the Template property set on the container via its visual triggers.
            // It is an error to specify the TemplateProperty in your own Template.
            if (StyleHelper.IsSetOnContainer(Control.TemplateProperty, ref containerDependents, true) ||
                StyleHelper.IsSetOnContainer(ContentPresenter.TemplateProperty, ref containerDependents, true))
            {
                throw new InvalidOperationException(SR.Get(SRID.CannotHavePropertyInTemplate, Control.TemplateProperty.Name));
            }

            // Check if the template has the Style property set on the container via its visual triggers.
            // It is an error to specify the StyleProperty in your own Template.
            if (StyleHelper.IsSetOnContainer(FrameworkElement.StyleProperty, ref containerDependents, true))
            {
                throw new InvalidOperationException(SR.Get(SRID.CannotHavePropertyInTemplate, FrameworkElement.StyleProperty.Name));
            }

            // Check if the template has the DefaultStyleKey property set on the container via its visual triggers.
            // It is an error to specify the DefaultStyleKeyProperty in your own Template.
            if (StyleHelper.IsSetOnContainer(FrameworkElement.DefaultStyleKeyProperty, ref containerDependents, true))
            {
                throw new InvalidOperationException(SR.Get(SRID.CannotHavePropertyInTemplate, FrameworkElement.DefaultStyleKeyProperty.Name));
            }

            // Check if the template has the OverridesDefaultStyle property set on the container via its visual triggers.
            // It is an error to specify the OverridesDefaultStyleProperty in your own Template.
            if (StyleHelper.IsSetOnContainer(FrameworkElement.OverridesDefaultStyleProperty, ref containerDependents, true))
            {
                throw new InvalidOperationException(SR.Get(SRID.CannotHavePropertyInTemplate, FrameworkElement.OverridesDefaultStyleProperty.Name));
            }

            // Check if the template has the Name property set on the container via its visual triggers.
            // It is an error to specify the Name in your own Template.
            if (StyleHelper.IsSetOnContainer(FrameworkElement.NameProperty, ref containerDependents, true))
            {
                throw new InvalidOperationException(SR.Get(SRID.CannotHavePropertyInTemplate, FrameworkElement.NameProperty.Name));
            }
        }
Пример #37
0
 /// <summary>
 /// Releases all resources used by this class.
 /// </summary>
 public void Dispose()
 {
     regInfo = null;
     triggers = null;
     settings = null;
     principal = null;
     actions = null;
     if (v2Def != null) Marshal.ReleaseComObject(v2Def);
     v1Task = null;
 }
Пример #38
0
        //
        //  This method
        //  1. Adds shared table entries for property values set via Triggers
        //
        private static void ProcessTemplateTriggers(
            TriggerCollection                                           triggers,
            FrameworkTemplate                                           frameworkTemplate,
            ref FrugalStructList<ChildRecord>                           childRecordFromChildIndex,
            ref FrugalStructList<ItemStructMap<TriggerSourceRecord>>    triggerSourceRecordFromChildIndex,
            ref FrugalStructList<ContainerDependent>                    containerDependents,
            ref FrugalStructList<ChildPropertyDependent>                resourceDependents,
            ref ItemStructList<ChildEventDependent>                     eventDependents,
            ref HybridDictionary                                        dataTriggerRecordFromBinding,
            HybridDictionary                                            childIndexFromChildID,
            ref bool                                                    hasInstanceValues,
            ref HybridDictionary                                        triggerActions,
            FrameworkElementFactory                                     templateRoot,
            ref EventHandlersStore                                      eventHandlersStore,
            ref FrugalMap                                               propertyTriggersWithActions,
            ref HybridDictionary                                        dataTriggersWithActions,
            ref bool                                                    hasLoadedChangeHandler)
        {
            if (triggers != null)
            {
                int triggerCount = triggers.Count;
                for (int i = 0; i < triggerCount; i++)
                {
                    TriggerBase triggerBase = triggers[i];

                    Trigger trigger;
                    MultiTrigger multiTrigger;
                    DataTrigger dataTrigger;
                    MultiDataTrigger multiDataTrigger;
                    EventTrigger eventTrigger;

                    DetermineTriggerType( triggerBase, out trigger, out multiTrigger, out dataTrigger, out multiDataTrigger, out eventTrigger );

                    if ( trigger != null || multiTrigger != null||
                        dataTrigger != null || multiDataTrigger != null )
                    {
                        // Update the SourceChildIndex for each of the conditions for this trigger
                        TriggerCondition[] conditions = triggerBase.TriggerConditions;
                        for (int k=0; k<conditions.Length; k++)
                        {
                            conditions[k].SourceChildIndex = StyleHelper.QueryChildIndexFromChildName(conditions[k].SourceName, childIndexFromChildID);
                        }

                        // Set things up to handle Setter values
                        for (int j = 0; j < triggerBase.PropertyValues.Count; j++)
                        {
                            PropertyValue propertyValue = triggerBase.PropertyValues[j];

                            // Check for trigger rules that act on template children
                            if (propertyValue.ChildName == StyleHelper.SelfName)
                            {
                                // "Self" (container) trigger

                                // Track properties on the container that are being driven by
                                // the Template so that they can be invalidated during Template changes
                                StyleHelper.AddContainerDependent(propertyValue.Property, true /*fromVisualTrigger*/, ref containerDependents);
                            }

                            StyleHelper.UpdateTables(ref propertyValue, ref childRecordFromChildIndex,
                                ref triggerSourceRecordFromChildIndex, ref resourceDependents, ref dataTriggerRecordFromBinding,
                                childIndexFromChildID, ref hasInstanceValues);
                        }

                        // Set things up to handle TriggerActions
                        if( triggerBase.HasEnterActions || triggerBase.HasExitActions )
                        {
                            if( trigger != null )
                            {
                                StyleHelper.AddPropertyTriggerWithAction( triggerBase, trigger.Property, ref propertyTriggersWithActions );
                            }
                            else if( multiTrigger != null )
                            {
                                for( int k = 0; k < multiTrigger.Conditions.Count; k++ )
                                {
                                    Condition triggerCondition = multiTrigger.Conditions[k];

                                    StyleHelper.AddPropertyTriggerWithAction( triggerBase, triggerCondition.Property, ref propertyTriggersWithActions );
                                }
                            }
                            else if( dataTrigger != null )
                            {
                                StyleHelper.AddDataTriggerWithAction( triggerBase, dataTrigger.Binding, ref dataTriggersWithActions );
                            }
                            else if( multiDataTrigger != null )
                            {
                                for( int k = 0; k < multiDataTrigger.Conditions.Count; k++ )
                                {
                                    Condition dataCondition = multiDataTrigger.Conditions[k];

                                    StyleHelper.AddDataTriggerWithAction( triggerBase, dataCondition.Binding, ref dataTriggersWithActions );
                                }
                            }
                            else
                            {
                                throw new InvalidOperationException(SR.Get(SRID.UnsupportedTriggerInTemplate, triggerBase.GetType().Name));
                            }
                        }
                    }
                    else if( eventTrigger != null )
                    {
                        StyleHelper.ProcessEventTrigger(eventTrigger,
                                                        childIndexFromChildID,
                                                        ref triggerActions,
                                                        ref eventDependents,
                                                        templateRoot,
                                                        frameworkTemplate,
                                                        ref eventHandlersStore,
                                                        ref hasLoadedChangeHandler);
                    }
                    else
                    {
                        throw new InvalidOperationException(SR.Get(SRID.UnsupportedTriggerInTemplate, triggerBase.GetType().Name));
                    }
                }
            }
        }
 private void WriteElement(TriggerCollection triggers)
 {
     foreach (EventTrigger trigger in triggers) {
         WriteStartElement(trigger);
         //WriteAttribute("RoutedEvent", trigger.RoutedEvent.ToString());
         foreach (BeginStoryboard beginStoryboard in trigger.Actions) {
             WriteStartElement(beginStoryboard);
             WriteElement(beginStoryboard.Storyboard);
             this.writer.WriteEndElement();
         }
         this.writer.WriteEndElement();
     }
 }
Пример #40
0
 /// <summary>
 /// Sets the attached triggers.
 /// </summary>
 /// <param name="obj">
 /// The dependency object.
 /// </param>
 /// <param name="triggers">
 /// The triggers.
 /// </param>
 public static void SetTriggers(DependencyObject obj, TriggerCollection triggers)
 {
     obj.SetValue(TriggersProperty, triggers);
 }
Пример #41
0
        private Optional <ConvertedClientConfigurationFile> UpdateTriggers(TriggerCollection triggers)
        {
            XElement triggersElement = null;

            if (_skinXml != null)
            {
                triggersElement = _skinXml.Root.Element(XmlNames.triggers);

                if (triggersElement == null)
                {
                    triggersElement = new XElement(XmlNames.triggers);
                    _skinXml.Root.Add(triggersElement);
                }
            }
            else
            {
                triggersElement = _navigationPlanXml.Root.Element(XmlNames.triggers);

                if (triggersElement == null)
                {
                    triggersElement = new XElement(XmlNames.triggers);
                    _navigationPlanXml.Root.AddFirst(triggersElement);
                }
            }

            //remove the old triggers
            foreach (var triggerElement in triggersElement.Elements(XmlNames.trigger)
                     .Where(element => element.Elements(XmlNames.action)
                            .Any(actionElement => IsDynamicLayoutActionElement(actionElement)))
                     .ToArray())
            {
                triggerElement.Remove();
            }


            //add new triggers
            foreach (var trigger in triggers)
            {
                var triggerElement = new XElement(XmlNames.trigger);
                triggerElement.AddOrUpdateAttributeValue(XmlNames.name, trigger.Name);
                triggerElement.AddOrUpdateAttributeValue(XmlNames.priority, trigger.Priority);

                foreach (var action in trigger.Actions)
                {
                    var actionElement = new XElement(XmlNames.action);
                    actionElement.AddOrUpdateAttributeValue(XmlNames.name, action.Name);

                    var conditionsElement = new XElement(XmlNames.conditions);

                    actionElement.Add(conditionsElement);

                    foreach (var condition in action.Conditions)
                    {
                        var conditionElement = new XElement(XmlNames.condition);

                        conditionElement.AddOrUpdateAttributeValue(XmlNames.updateType, condition.UpdateType);
                        conditionElement.AddOrUpdateAttributeValue(XmlNames.type, condition.Type);
                        conditionElement.AddOrUpdateAttributeValue(XmlNames.equationType, condition.EquationType);

                        if (condition.Values.Count == 1)
                        {
                            conditionElement.AddOrUpdateAttributeValue(XmlNames.value, condition.Values.First().Value);
                        }
                        else
                        {
                            foreach (var value in condition.Values)
                            {
                                conditionElement.Add(new XElement(XmlNames.value, value.Value));
                            }
                        }
                        conditionsElement.Add(conditionElement);
                    }

                    triggerElement.Add(actionElement);
                }

                triggersElement.Add(triggerElement);
            }

            if (_skinXml != null)
            {
                return(Optional <ConvertedClientConfigurationFile> .Some(new ConvertedClientConfigurationFile(Skin, _skinXml.ToString())));
            }
            else
            {
                return(Optional <ConvertedClientConfigurationFile> .None());
            }
        }
Пример #42
0
        public void TestGenerateStyleTriggers()
        {
            List<TriggeringNodeDefinition> existingTriggers = DocxMetadataDefinitions.HiddenDocumentText;

            using (Stream from = File.Open(TESTFILE_DIR + "styles.xml", FileMode.Open))
            {
                StyleSheet sr = new StyleSheet(new CommonNamespaces(OpenXmlFormat.Transitional));
                sr.ConnectToInputStream(from);

                sr.Execute();
                sr.Resolve();

                foreach (TriggeringNodeDefinition tnd in existingTriggers)
                {
                    tnd.NormalizeStrings(sr.CommonNamespaces.NameTable);
                }

                List<TriggeringNodeDefinition> newTriggers = sr.GenerateStyleTriggers(existingTriggers);

                Assert.AreEqual(2, newTriggers.Count);
                TriggeringNodeDefinition tnd1 = newTriggers[0];
                Assert.AreEqual(NamespaceId.w, tnd1.namespaceId);
                Assert.AreEqual("rStyle", tnd1.nodeName);
                Assert.IsTrue(tnd1.attributeFilter.Matches(new AttribDetails("", "val", "", "FooterCharHidden")));


                {
                    MemoryStream ms = new MemoryStream();
                    StreamWriter tw = new StreamWriter(ms);
                    tw.Write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><w:rStyle xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" w:val=\"FooterCharHidden\"/>");
                    tw.Flush();
                    ms.Position = 0;
                    XmlReaderSettings set = new XmlReaderSettings();
                    set.NameTable = sr.CommonNamespaces.NameTable;
                    set.ConformanceLevel = ConformanceLevel.Fragment;
                    XmlReader r = XmlReader.Create(ms, set);
                    r.Read();
                    XmlNodeInformation xni = new XmlNodeInformation(r, sr.CommonNamespaces);
                    TriggerCollection snui = new TriggerCollection(newTriggers);
                    snui.UpdateStringsUsingNametable(set.NameTable);

                    Assert.AreEqual(1, snui.WhatDoesThisNodeTrigger(xni, null).Count);
                    TriggeringNodeDefinition tnd = snui.WhatDoesThisNodeTrigger(xni, null)[0];
                    Assert.AreEqual("rStyle", tnd.nodeName);
                    Assert.IsTrue(tnd.attributeFilter.Matches(new AttribDetails("", NameTableUtils.NormalizeString(sr.CommonNamespaces.NameTable,"val")
                        , "", "FooterCharHidden")));

                    Assert.AreEqual(NamespaceId.w, tnd.namespaceId);

                    Assert.AreEqual(1, tnd.CreateEffects( xni).Count);
                    Effect t = tnd.CreateEffects(xni)[0];
                    Assert.AreEqual(ContentType.HiddenText, t.ContentType);
                    Assert.AreEqual(true, t.BlockPolarity, "expect the polairty of blocking to be +ve as this is a style with hidden on");
                }


                {
                    MemoryStream ms = new MemoryStream();
                    StreamWriter tw = new StreamWriter(ms);
                    tw.Write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><w:rStyle xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" w:val=\"FooterCharNotHidden\"/>");
                    tw.Flush();
                    ms.Position = 0;
                    XmlReaderSettings set = new XmlReaderSettings();
                    set.NameTable = sr.CommonNamespaces.NameTable;
                    set.ConformanceLevel = ConformanceLevel.Fragment;
                    XmlReader r = XmlReader.Create(ms, set);
                    XmlNodeInformation xni = new XmlNodeInformation(r, sr.CommonNamespaces);
                    TriggerCollection snui = new TriggerCollection(newTriggers);

                    Assert.AreEqual(1, snui.WhatDoesThisNodeTrigger(xni, null).Count);
                    TriggeringNodeDefinition tnd = snui.WhatDoesThisNodeTrigger(xni, null)[0];
                    Assert.AreEqual("rStyle", tnd.nodeName);
                    Assert.IsTrue(tnd.attributeFilter.Matches(new AttribDetails("", NameTableUtils.NormalizeString(sr.CommonNamespaces.NameTable, "val")
                        , "", "FooterCharNotHidden")));
                    Assert.AreEqual(NamespaceId.w, tnd.namespaceId);

                    Assert.AreEqual(1, tnd.CreateEffects( xni).Count);
                    Effect t = tnd.CreateEffects( xni)[0];
                    Assert.AreEqual(ContentType.HiddenText, t.ContentType);
                    Assert.AreEqual(false, t.BlockPolarity, "should have -ve polarity because the style specifies not hidden");
                }


                Assert.AreEqual(true, existingTriggers[0].GetDescriptors()[0].DefaultPolarity, "Should not change the default polarity of the base triggerdescriptor for the non-style tag");
            }
        }
Пример #43
0
 protected abstract void ProcessResource(TriggerCollection aTriggers);
Пример #44
0
 public void SelectTrigger(Trigger trigger)
 {
     SelectedTrigger = trigger;
     _triggers       = new TriggerCollection(this, _overviewContext, _triggerRoot);
     _triggers.Initialize();
 }
Пример #45
0
 public void Refresh()
 {
     _window.Repaint();
     _triggers = new TriggerCollection(this, _overviewContext, _triggerRoot);
     _triggers.Initialize();
 }
Пример #46
0
 protected abstract void ProcessResource( TriggerCollection aTriggers );
Пример #47
0
 public Dev2TriggerCollection(ITaskServiceConvertorFactory taskServiceConvertorFactory,
                              TriggerCollection nativeInstance)
 {
     _taskServiceConvertorFactory = taskServiceConvertorFactory;
     _nativeInstance = nativeInstance;
 }
Пример #48
0
 /// <summary>
 /// Sets the value of the Triggers attached property
 /// </summary>
 /// <param name="dependencyObject">
 /// dependency object to set the value
 /// </param>
 /// <param name="value">
 /// Instance of the command collection
 /// </param>
 public static void SetTriggers(DependencyObject dependencyObject, TriggerCollection value)
 {
     dependencyObject.SetValue(TriggersProperty, value);
 }
Пример #49
0
        protected override void ProcessResource( TriggerCollection aTriggers )
        {
            if ( !aTriggers.Any() )
            return;

              OnCategoryProcessing( ResourceTypes.Triggers );

              var document =
            new XElement( "Triggers",
              from trigger in aTriggers select new XElement( "Trigger",
            CreateIndexedResourceNodes( trigger ),
            new XElement( "Condition", EscapeText( trigger.Condition ) ),
            new XElement( "ConstantName", trigger.ConstantName ),
            new XElement( "Moment", trigger.Moment )
              )
            );

              SaveDocument( document, Filenames.Triggers + ".xml" );
              OnCategoryProcessed( ResourceTypes.Triggers );
        }
Пример #50
0
        // Called from either the Style-specific ExecuteOnApplyEnterActions or the
        //  Template-specific version.  This section is the common code for both that
        //  walks through the trigger collection and execute applicable actions.
        private static void ExecuteOnApplyEnterExitActionsLoop( DependencyObject triggerContainer, TriggerCollection triggers,
            Style style, FrameworkTemplate ft, UncommonField<HybridDictionary[]> dataField )
        {
            TriggerBase triggerBase;
            bool triggerState;
            for( int i = 0; i < triggers.Count; i++ )
            {
                triggerBase = triggers[i];
                if( (!triggerBase.HasEnterActions) && (!triggerBase.HasExitActions) )
                {
                    ; // Trigger has neither enter nor exit actions.  There's nothing to run anyway, so skip.
                }
                else if( triggerBase.ExecuteEnterActionsOnApply ||
                    triggerBase.ExecuteExitActionsOnApply )
                {
                    // Look for any SourceName in the condition
                    if( NoSourceNameInTrigger( triggerBase ) )
                    {
                        // Evaluate the current state of the trigger.
                        triggerState = triggerBase.GetCurrentState( triggerContainer, dataField );

                        if( triggerState && triggerBase.ExecuteEnterActionsOnApply )
                        {
                            // Trigger is true, and Trigger wants EnterActions to be executed on Style/Template application.
                            InvokeActions( triggerBase.EnterActions, triggerBase, triggerContainer,
                                style, ft );
                        }
                        else if( !triggerState && triggerBase.ExecuteExitActionsOnApply )
                        {
                            // Trigger is false, and Trigger wants ExitActions to be executed on Style/Template application.
                            InvokeActions( triggerBase.ExitActions, triggerBase, triggerContainer,
                                style, ft );
                        }
                    }
                    else
                    {
                        // If one or more conditions are dependent on a template
                        //  child, then it can't possibly apply immediately.
                    }
                }
            }
        }
Пример #51
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TriggerValidator"/> class.
 /// </summary>
 /// <param name="type">The type.</param>
 /// <param name="item">The item.</param>
 /// <param name="triggers">The triggers.</param>
 public TriggerValidator(BoundType type, IElement item, TriggerCollection triggers)
 {
     this.item = item;
     _type = type;
     _triggers = triggers;
 }