예제 #1
0
        public Variable(string name, Cdn.Expression expression, Cdn.VariableFlags flags) : base(IntPtr.Zero)
        {
            if (GetType() != typeof(Variable))
            {
                ArrayList vals  = new ArrayList();
                ArrayList names = new ArrayList();
                names.Add("name");
                vals.Add(new GLib.Value(name));
                if (expression != null)
                {
                    names.Add("expression");
                    vals.Add(new GLib.Value(expression));
                }
                names.Add("flags");
                vals.Add(new GLib.Value(flags));
                CreateNativeObject((string[])names.ToArray(typeof(string)), (GLib.Value[])vals.ToArray(typeof(GLib.Value)));
                return;
            }
            IntPtr native_name = GLib.Marshaller.StringToPtrGStrdup(name);

            Raw = cdn_variable_new(native_name, expression == null ? IntPtr.Zero : expression.Handle, (int)flags);
            GLib.Marshaller.Free(native_name);

            if (Raw != IntPtr.Zero)
            {
                g_object_ref_sink(Raw);
            }
        }
예제 #2
0
        public bool HasFlag(Cdn.VariableFlags flags)
        {
            bool raw_ret = cdn_variable_has_flag(Handle, (int)flags);
            bool ret     = raw_ret;

            return(ret);
        }
예제 #3
0
        private void FillFlagsStore(Cdn.Variable property)
        {
            d_flagsStore.Clear();

            Cdn.VariableFlags flags    = property.Flags;
            Cdn.VariableFlags building = Cdn.VariableFlags.None;

            List <string> items = new List <string>();
            List <KeyValuePair <string, Cdn.VariableFlags> > copy = new List <KeyValuePair <string, Cdn.VariableFlags> >(d_flaglist);

            copy.Reverse();

            foreach (KeyValuePair <string, Cdn.VariableFlags> pair in copy)
            {
                string name = pair.Key;

                if ((flags & pair.Value) == pair.Value &&
                    (building & pair.Value) == 0)
                {
                    building |= pair.Value;
                    name      = "• " + name;
                }

                items.Add(name);
            }

            items.Reverse();

            foreach (string s in items)
            {
                d_flagsStore.AppendValues(s);
            }
        }
예제 #4
0
        public static string FlagsToString(Cdn.VariableFlags add_flags, Cdn.VariableFlags remove_flags)
        {
            IntPtr raw_ret = cdn_variable_flags_to_string((int)add_flags, (int)remove_flags);
            string ret     = GLib.Marshaller.PtrToStringGFree(raw_ret);

            return(ret);
        }
예제 #5
0
        public ModifyVariable(Wrappers.Wrapper wrapped, Cdn.Variable property, Cdn.VariableFlags flags) : base(wrapped, property)
        {
            d_expression = null;

            d_flags         = flags;
            d_previousFlags = property.Flags;
        }
예제 #6
0
        public Variable(Wrappers.Wrapper wrapped, string name, string expression, Cdn.VariableFlags flags)
        {
            d_wrapped = wrapped;

            d_name       = name;
            d_expression = expression;
            d_flags      = flags;
        }
예제 #7
0
        public static void FlagsFromString(string flags, out Cdn.VariableFlags add_flags, out Cdn.VariableFlags remove_flags)
        {
            IntPtr native_flags = GLib.Marshaller.StringToPtrGStrdup(flags);
            int    native_add_flags;
            int    native_remove_flags;

            cdn_variable_flags_from_string(native_flags, out native_add_flags, out native_remove_flags);
            GLib.Marshaller.Free(native_flags);
            add_flags    = (Cdn.VariableFlags)native_add_flags;
            remove_flags = (Cdn.VariableFlags)native_remove_flags;
        }
예제 #8
0
        public int FlaggedVariablesCount(Cdn.VariableFlags flags)
        {
            List <Cdn.Variable> lst;

            if (d_flaggedVariables.TryGetValue(flags, out lst))
            {
                return(lst.Count);
            }

            return(0);
        }
예제 #9
0
        public IEnumerable <State> FlaggedStates(Cdn.VariableFlags flags)
        {
            foreach (var v in FlaggedVariables(flags))
            {
                State s = this.State(v);

                if (s != null)
                {
                    yield return(s);
                }
            }
        }
예제 #10
0
        public IEnumerable <Cdn.Variable> FlaggedVariables(Cdn.VariableFlags flags)
        {
            List <Cdn.Variable> lst;

            if (d_flaggedVariables.TryGetValue(flags, out lst))
            {
                foreach (Cdn.Variable prop in lst)
                {
                    yield return(prop);
                }
            }
        }
예제 #11
0
파일: Wrapper.cs 프로젝트: codyn-net/studio
        public Cdn.Variable AddVariable(string name, string val, Cdn.VariableFlags flags)
        {
            Cdn.Variable prop = new Cdn.Variable(name, new Cdn.Expression(val), flags);

            if (AddVariable(prop))
            {
                return(prop);
            }
            else
            {
                return(null);
            }
        }
예제 #12
0
 protected virtual void OnFlagsChanged(Cdn.VariableFlags flags)
 {
     GLib.Value      ret             = GLib.Value.Empty;
     GLib.ValueArray inst_and_params = new GLib.ValueArray(2);
     GLib.Value[]    vals            = new GLib.Value [2];
     vals [0] = new GLib.Value(this);
     inst_and_params.Append(vals [0]);
     vals [1] = new GLib.Value(flags);
     inst_and_params.Append(vals [1]);
     g_signal_chain_from_overridden(inst_and_params.ArrayPtr, ref ret);
     foreach (GLib.Value v in vals)
     {
         v.Dispose();
     }
 }
예제 #13
0
        private void InitializeFlagsList()
        {
            d_flaglist = new List <KeyValuePair <string, Cdn.VariableFlags> >();
            Type type = typeof(Cdn.VariableFlags);

            Array values = Enum.GetValues(type);

            for (int i = 0; i < values.Length; ++i)
            {
                Cdn.VariableFlags flags = (Cdn.VariableFlags)values.GetValue(i);

                // Don't show 'None' and Integrated is handled separately
                if ((int)flags != 0 && flags != VariableFlags.Integrated)
                {
                    d_flaglist.Add(new KeyValuePair <string, Cdn.VariableFlags>(Variable.FlagsToString(flags, 0), flags));
                }
            }
        }
예제 #14
0
        private void DoFlagsEdited(object source, EditedArgs args)
        {
            Node node = d_treeview.NodeStore.FindPath(args.Path);

            bool   wason = false;
            string name  = args.NewText;

            if (String.IsNullOrEmpty(name))
            {
                return;
            }

            if (name.StartsWith("• "))
            {
                wason = true;
                name  = name.Substring(2);
            }

            Cdn.VariableFlags add_flags;
            Cdn.VariableFlags remove_flags;

            Variable.FlagsFromString(name, out add_flags, out remove_flags);
            Cdn.VariableFlags newflags = node.Variable.Flags;

            if (wason)
            {
                newflags &= ~add_flags;
            }
            else
            {
                newflags |= add_flags;
            }

            if (newflags == node.Variable.Flags)
            {
                return;
            }

            d_actions.Do(new Undo.ModifyVariable(d_wrapper, node.Variable, newflags));
        }
예제 #15
0
 public void AddVariable(GLib.PtrArray nameptr, GLib.PtrArray expressionptr, Cdn.VariableFlags add_flags, Cdn.VariableFlags remove_flags, bool assign_optional, Cdn.EmbeddedString constraint, Cdn.EmbeddedString state)
 {
     cdn_parser_context_add_variable(Handle, nameptr == null ? IntPtr.Zero : nameptr.Handle, expressionptr == null ? IntPtr.Zero : expressionptr.Handle, (int)add_flags, (int)remove_flags, assign_optional, constraint == null ? IntPtr.Zero : constraint.Handle, state == null ? IntPtr.Zero : state.Handle);
 }
예제 #16
0
 public AddVariable(Wrappers.Wrapper wrapped, string name, string expression, Cdn.VariableFlags flags) : base(wrapped, name, expression, flags)
 {
 }
예제 #17
0
        private void InterfaceEdited(string newValue, string path)
        {
            Node node = d_treeview.NodeStore.FindPath(path);

            if (node == null)
            {
                return;
            }

            string val = newValue.Trim();

            List <Undo.IAction> actions = new List <Undo.IAction>();

            if (node is InterfaceNode)
            {
                InterfaceNode n = (InterfaceNode)node;

                if (n.Target == val)
                {
                    return;
                }

                if (val == "")
                {
                    // Remove interface
                    actions.Add(new Undo.RemoveInterfaceVariable((Wrappers.Node)d_wrapper, n.Name, n.ChildName, n.VariableName));

                    string            expr  = "0";
                    Cdn.VariableFlags flags = Cdn.VariableFlags.None;

                    if (node.Variable != null)
                    {
                        expr  = node.Variable.Expression.AsString;
                        flags = node.Variable.Flags;
                    }

                    // Add normal property instead
                    actions.Add(new Undo.AddVariable(d_wrapper, n.Name, expr, flags));
                }
                else
                {
                    string child;
                    string prop;

                    if (!ParseInterface(val, out child, out prop))
                    {
                        return;
                    }

                    d_blockInterfaceRemove = true;

                    actions.Add(new Undo.RemoveInterfaceVariable((Wrappers.Node)d_wrapper, n.Name, n.ChildName, n.VariableName));
                    actions.Add(new Undo.AddInterfaceProperty((Wrappers.Node)d_wrapper, n.Name, child, prop));
                }
            }
            else if (val != "")
            {
                string child;
                string prop;

                if (!ParseInterface(val, out child, out prop))
                {
                    return;
                }

                actions.Add(new Undo.RemoveVariable(d_wrapper, node.Variable));
                actions.Add(new Undo.AddInterfaceProperty((Wrappers.Node)d_wrapper, node.Variable.Name, child, prop));
            }
            else
            {
                return;
            }

            try
            {
                d_actions.Do(new Undo.Group(actions));
            }
            catch (GLib.GException err)
            {
                // Display could not remove, or something
                Error(this, err);
            }

            d_blockInterfaceRemove = false;
        }
예제 #18
0
 public void SetVariable(GLib.PtrArray selectorptr, GLib.PtrArray expressionptr, Cdn.VariableFlags add_flags, Cdn.VariableFlags remove_flags)
 {
     cdn_parser_context_set_variable(Handle, selectorptr == null ? IntPtr.Zero : selectorptr.Handle, expressionptr == null ? IntPtr.Zero : expressionptr.Handle, (int)add_flags, (int)remove_flags);
 }
예제 #19
0
 public void RemoveFlags(Cdn.VariableFlags flags)
 {
     cdn_variable_remove_flags(Handle, (int)flags);
 }
예제 #20
0
 public void AddFlags(Cdn.VariableFlags flags)
 {
     cdn_variable_add_flags(Handle, (int)flags);
 }