示例#1
0
        private void SetupEvaluateMethod(ScriptThread thread)
        {
            var languageTailRecursive = thread.Runtime.Language.Grammar.LanguageFlags.IsSet(LanguageFlags.TailRecursive);

            lock (this.LockObject) {
                var target = TargetRef.Evaluate(thread);
                if (target is SpecialForm)
                {
                    _specialForm     = target as SpecialForm;
                    _specialFormArgs = Arguments.ChildNodes.ToArray();
                    this.Evaluate    = EvaluateSpecialForm;
                }
                else
                {
                    if (languageTailRecursive)
                    {
                        var isTail = Flags.IsSet(AstNodeFlags.IsTail);
                        if (isTail)
                        {
                            this.Evaluate = EvaluateTail;
                        }
                        else
                        {
                            this.Evaluate = EvaluateWithTailCheck;
                        }
                    }
                    else
                    {
                        this.Evaluate = EvaluateNoTail;
                    }
                }
            }//lock
        }
示例#2
0
        internal static bool RunModalWin32Form(SpecialForm form, Gtk.Window parent)
        {
            while (Gtk.Application.EventsPending())
            {
                Gtk.Application.RunIteration();
            }

            IntPtr ph = HgdiobjGet(parent.GdkWindow);

            IntPtr hdlg = IntPtr.Zero;

            form.Shown += delegate {
                try {
                    hdlg = form.Handle;
                    SetGtkDialogHook(hdlg, false);
                } catch (Exception ex) {
                    LoggingService.LogError("Failed to hook win32 dialog messages", ex);
                }
            };

            bool result;

            try {
                result = form.ShowMagicDialog() == DialogResult.OK;
            } finally {
                if (hdlg != IntPtr.Zero)
                {
                    ClearGtkDialogHook(hdlg);
                }
            }
            return(result);
        }
 private void SetupEvaluateMethod(ScriptThread thread)
 {
     var languageTailRecursive = thread.Runtime.Language.Grammar.LanguageFlags.IsSet(LanguageFlags.TailRecursive);
     lock (this.LockObject)
     {
         var target = TargetRef.Evaluate(thread);
         if (target is SpecialForm)
         {
             _specialForm = target as SpecialForm;
             _specialFormArgs = Arguments.ChildNodes.ToArray();
             this.Evaluate = EvaluateSpecialForm;
         }
         else
         {
             if (languageTailRecursive)
             {
                 var isTail = Flags.IsSet(AstNodeFlags.IsTail);
                 if (isTail)
                     this.Evaluate = EvaluateTail;
                 else
                     this.Evaluate = EvaluateWithTailCheck;
             }
             else
                 this.Evaluate = EvaluateNoTail;
         }
     }//lock 
 }
 //Method for adding methods to BuiltIns table in Runtime
 public static BindingTargetInfo AddSpecialForm(this BindingSourceTable targets, SpecialForm form, string formName,
                 int minChildCount = 0, int maxChildCount = 0, string parameterNames = null)
 {
     var formInfo = new SpecialFormBindingInfo(formName, form, minChildCount, maxChildCount, parameterNames);
     targets.Add(formName, formInfo);
     return formInfo;
 }
示例#5
0
        /*private void MB_Studio_MdiChildActivate(object sender, EventArgs e)
         * {
         *  if (ActiveMdiChild == null)
         *      tabControl.Visible = false;
         *  // If no any child form, hide tabControl
         *  else
         *  {
         *      ActiveMdiChild.WindowState = FormWindowState.Maximized;
         *      // Child form always maximized
         *
         *      // If child form is new and no has tabPage,
         *      // create new tabPage
         *      if (ActiveMdiChild.Tag == null)
         *      {
         *          // Add a tabPage to tabControl with child
         *          // form caption
         *          TabPage tp = new TabPage(ActiveMdiChild.Text)
         *          {
         *              Tag = ActiveMdiChild,
         *              Parent = tabControl
         *          };
         *          tabControl.SelectedTab = tp;
         *
         *          ActiveMdiChild.Tag = tp;
         *          ActiveMdiChild.FormClosed += new FormClosedEventHandler(ActiveMdiChild_FormClosed);
         *      }
         *
         *      if (!tabControl.Visible)
         *          tabControl.Visible = true;
         *  }
         * }*/

        private void AddNewTab(SpecialForm form, TabMode tabMode = TabMode.Default)
        {
            if (IsShownAsTab(form))
            {
                tabControl.SelectedIndex = tabControl.TabPages.IndexOfKey(form.Name);//TabControlGetIndexOf(form.Text);
                return;
            }

            bool    specialForm = false;
            TabPage tab         = new TabPage(form.Text)
            {
                Name = form.Name,//is the same name good idea?
                //Parent = tabControl,
            };

            Control[] ccc = form.Controls.Find("title_lbl", false);

            if (ccc.Length != 0)
            {
                specialForm = !specialForm; // true
            }
            tabControl.TabPages.Add(tab);

            form.TopLevel = false;
            form.Parent   = tab;

            tabControl.SelectedTab = tab;

            tab.BackColor  = form.BackColor;//check for problems with baseColor here
            tab.AutoScroll = true;

            if (!specialForm)
            {
                form.FormBorderStyle = FormBorderStyle.None;
            }
            else
            {
                form.Top = form.Top - ccc[0].Height;
            }

            if (tabMode != TabMode.Default)
            {
                if ((tabMode & TabMode.FillWidth) == TabMode.FillWidth)
                {
                    form.Width = tab.Width;
                }
                if ((tabMode & TabMode.FillHeight) == TabMode.FillHeight)
                {
                    form.Height = tab.Height;
                }
            }
            //else
            //{
            //    form.Anchor = AnchorStyles.Left | AnchorStyles.Bottom | AnchorStyles.Top;
            //    form.Dock = DockStyle.Left;
            //}

            form.Visible = true;
        }
示例#6
0
        internal static Uri GetHugeFormUri(SpecialForm frm)
        {
            NameValueCollection col = new NameValueCollection()
            {
                { "action", GetHugeFormName(frm) },
                { "lang", string.Format("{0,-3}", Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName) }
            };

            return(string.Concat(WebUrl, "Core.php").GetBuildedUri(col));
        }
 public SpecialFormBindingInfo(string symbol, SpecialForm form, int minChildCount = 0, int maxChildCount = 0, string childRoles = null) 
       : base(symbol, BindingTargetType.SpecialForm) {
   Binding = new ConstantBinding(form, this);
   MinChildCount = minChildCount;
   MaxChildCount = Math.Max(minChildCount, maxChildCount); //if maxParamCount=0 then set it equal to minParamCount
   if (!string.IsNullOrEmpty(childRoles)) {
     ChildRoles = childRoles.Split(',');
     //TODO: add check that paramNames array is in accord with min/max param counts        
   }
 }
示例#8
0
        private static string GetHugeFormName(SpecialForm frm)
        {
            switch (frm.GetType().Name)
            {
            case "frmDescription":
                return("get-desc");

            case "frmTutorial":
                return("get-tutorial");
            }
            return("");
        }
示例#9
0
 public SpecialFormBindingInfo(string symbol, SpecialForm form, int minChildCount = 0, int maxChildCount = 0, string childRoles = null)
     : base(symbol, BindingTargetType.SpecialForm)
 {
     Binding       = new ConstantBinding(form, this);
     MinChildCount = minChildCount;
     MaxChildCount = Math.Max(minChildCount, maxChildCount); //if maxParamCount=0 then set it equal to minParamCount
     if (!string.IsNullOrEmpty(childRoles))
     {
         ChildRoles = childRoles.Split(',');
         //TODO: add check that paramNames array is in accord with min/max param counts
     }
 }
示例#10
0
        private bool IsShownAsTab(SpecialForm form)
        {
            bool b = false;

            foreach (TabPage tab in tabControl.TabPages)
            {
                if (tab.Text.Equals(form.Text))
                {
                    b = true;
                }
            }
            return(b);
        }
示例#11
0
        private void ProjectFiles_lb_SelectedIndexChanged(object sender, EventArgs e)
        {
            SpecialForm form = null;

            if (projectFiles_lb.SelectedIndex >= 0)
            {
                string item            = projectFiles_lb.SelectedItem.ToString();
                string itemManagerName = item.Remove(item.Length - 1) + "Manager";

                if (item.Equals("Troops"))
                {
                    form = new TroopManager();
                }
                else if (item.Equals("PartyTemplates"))
                {
                    form = new PartyTemplateManager();
                }
                else if (item.Equals("Parties"))
                {
                    form = new PartyManager();
                }
                else if (item.Equals("Menus"))
                {
                    form = new MenuManager();
                }
                else if (item.Equals("Items"))
                {
                    form = new ItemManager();
                }
                else if (item.Equals("Skills"))
                {
                    form = new SkillManager();
                }
                else
                {
                    foreach (ToolForm cm in scriptCommander.CustomManagers)
                    {
                        if (cm.GetType().Name.Equals(itemManagerName))
                        {
                            form = cm;
                        }
                    }
                }
            }

            if (form != null)
            {
                AddNewTab(form, TabMode.FillHeight);
            }
        }
示例#12
0
        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            if (pen_state) //Pen enable
            {
                if (e.Button == MouseButtons.Left)
                {
                    Cursor.Current = Cursors.Cross;
                    current        = e.Location;
                    g.DrawLine(pen, old, current);
                    old = current;

                    //Add the draw point to the list of Points
                    allPoints.Add(current);
                    drawing = true;
                }
            }

            //Eraser enable
            if (eraser_state)
            {
                if (e.Button == MouseButtons.Left)
                {
                    current = e.Location;
                    g.DrawLine(eraser, old, current);
                    old = current;

                    //Remove the eraser point from the list of points
                    allPoints.Remove(current);
                    //drawing = true;
                }
            }

            if (specialForm_enabled)
            {
                if (e.Button == MouseButtons.Left)
                {
                    g.DrawImage(Specialform_IMG, e.Location);

                    //Add the draw point to the list of SpecialForm
                    Specialform = new SpecialForm(Specialform_IMG, e.Location);
                    allSpecialForms.Add(Specialform);
                }
            }

            RefreshInformations();
        }
示例#13
0
        private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            if (pen_state) //crayon déjà cliqué
            {
                old = e.Location;
            }

            //About eraser
            if (eraser_state)
            {
                old = e.Location;
            }

            if (specialForm_enabled)
            {
                g.DrawImage(Specialform_IMG, e.Location);
                Specialform = new SpecialForm(Specialform_IMG, e.Location);
                //drawing = true;
            }
        }
示例#14
0
        private void SetupEvaluateMethod(ScriptThread thread)
        {
            var languageTailRecursive = thread.Runtime.Language.Grammar.LanguageFlags.IsSet(LanguageFlags.TailRecursive);

            lock (this.LockObject) {
                _specialForm = null;
                var bnd = thread.Bind(_formName, BindingRequestFlags.Invoke);
                if (bnd != null)
                {
                    _specialForm = bnd.GetValueRef(thread) as SpecialForm;
                }
                IBindingSource src;
                var            target = thread.Runtime.BuiltIns.TryGetValue(_formName, out src);
                if (target is SpecialForm)
                {
                    _specialForm     = target as SpecialForm;
                    _specialFormArgs = Arguments.ChildNodes.ToArray();
                    this.Evaluate    = EvaluateSpecialForm;
                }
                else
                {
                    if (languageTailRecursive)
                    {
                        var isTail = Flags.IsSet(AstNodeFlags.IsTail);
                        if (isTail)
                        {
                            this.Evaluate = EvaluateTail;
                        }
                        else
                        {
                            this.Evaluate = EvaluateWithTailCheck;
                        }
                    }
                    else
                    {
                        this.Evaluate = EvaluateNoTail;
                    }
                }
            }//lock
        }
示例#15
0
 private void SetupEvaluateMethod(ScriptThread thread)
 {
     var languageTailRecursive = thread.Runtime.Language.Grammar.LanguageFlags.IsSet(LanguageFlags.TailRecursive);
       lock (this.LockObject) {
     _specialForm = null;
     var bnd = thread.Bind(_formName, BindingRequestFlags.Invoke);
     if (bnd != null)
       _specialForm = bnd.GetValueRef(thread) as SpecialForm;
     IBindingSource src;
     var target = thread.Runtime.BuiltIns.TryGetValue(_formName, out src);
     if (target is SpecialForm) {
       _specialForm = target as SpecialForm;
       _specialFormArgs = Arguments.ChildNodes.ToArray();
       this.Evaluate = EvaluateSpecialForm;
     } else {
       if (languageTailRecursive) {
     var isTail = Flags.IsSet(AstNodeFlags.IsTail);
     if (isTail)
       this.Evaluate = EvaluateTail;
     else
       this.Evaluate = EvaluateWithTailCheck;
       } else
     this.Evaluate = EvaluateNoTail;
     }
       }//lock
 }
示例#16
0
		internal static bool RunModalWin32Form (SpecialForm form, Gtk.Window parent)
		{
			while (Gtk.Application.EventsPending ())
				Gtk.Application.RunIteration ();

			IntPtr ph = HgdiobjGet (parent.GdkWindow);

			IntPtr hdlg = IntPtr.Zero;
			form.Shown += delegate {
				try {
					hdlg = form.Handle;
					SetGtkDialogHook (hdlg, false);
				} catch (Exception ex) {
					LoggingService.LogError ("Failed to hook win32 dialog messages", ex);
				}
			};

			bool result;
			try {
				result = form.ShowMagicDialog () == DialogResult.OK;
			} finally {
				if (hdlg != IntPtr.Zero)
					ClearGtkDialogHook (hdlg);
			}
			return result;
		}
示例#17
0
        public static string GenerateCons(Cons args, Environment environment)
        {
            // ananlysi cons
            if (args == null)
            {
                return(@"//retval = null; // dont null mite need retval
");
            }
            else
            {
                Symbol sym = args.Car() as Symbol;

                object e = Runtime.Eval(sym, environment);

                if (e is Function)
                {
                    Function f = e as Function;

                    string v    = "{" + NewLine;
                    Cons   rest = args.Rest() as Cons;
                    v += GenerateFuncCall(f.Method.DeclaringType.ToString(), f.Method.Name, rest, environment);
                    return(v + "}" + NewLine);
                }

                else if (e is SpecialForm)
                {
                    SpecialForm f = e as SpecialForm;

                    Cons rest = args.Rest() as Cons;

                    string r = Printer.ConsToString(rest);

                    return(Runtime.EvalString("(gen-" + f.Method.Name + " " + r + ")", environment) as string);
                }

                else if (e is Macro)
                {
                    Macro m    = e as Macro;
                    Cons  rest = args.Rest() as Cons;
                    Cons  em   = m.Expand(rest) as Cons;

                    return(Generate(em, environment));
                }
                else if (e is Closure)
                {
                    extracode += Closure(new Cons(sym), environment) as string;

                    string v    = "{" + NewLine;
                    Cons   rest = args.Rest() as Cons;
                    v += GenerateFuncCall(null, environment.GetValue(sym) as string, rest, environment);
                    return(v + "}" + NewLine);
                }
                else if (currsymbols.ContainsKey(sym))
                {
                    string v    = "{" + NewLine;
                    Cons   rest = args.Rest() as Cons;
                    v += GenerateFuncCall(null, environment.GetValue(sym) as string, rest, environment);
                    return(v + "}" + NewLine);
                }
                else
                {
                    // not good, lets not support this for now
//          try
//          {
//            return "// call not supported";// Call(args, environment).ToString();
//          }
//          catch
//          {
                    string margs = GetArgs();
                    string v     = GenerateList(args.Rest() as Cons, environment, margs);
                    return(string.Format("retval = LSharp.Cons.FromList({0});{1}",
                                         margs, NewLine));
//          }
                }
            }
        }
        //Method for adding methods to BuiltIns table in Runtime
        public static BindingTargetInfo AddSpecialForm(this BindingSourceTable targets, SpecialForm form, string formName,
                                                       int minChildCount = 0, int maxChildCount = 0, string parameterNames = null)
        {
            var formInfo = new SpecialFormBindingInfo(formName, form, minChildCount, maxChildCount, parameterNames);

            targets.Add(formName, formInfo);
            return(formInfo);
        }