private static string addFooterForm(FormData formData)
        {
            string render = "";
            GroupData groupData = formData.Parent.ListOfGroups["default"];

            ClassData classData = formData.Parent;

            if (classData.StateWorkflow)
            {
                render += "\t\t\t\t\t" + "<footer>\r\n";

                if (groupData.ListOfButtons.Count > 0)
                {
                    render += addGroupButtons(groupData.ListOfButtons, "\t");
                }

                render += "\t\t\t\t\t" + "</footer>\r\n";
            }

            return render;
        }
        private static string addHeaderForm(FormData formData)
        {
            string render = "";

            ClassData classData = formData.Parent;

            if (classData.StateWorkflow)
            {
                render += "\t\t\t\t\t" + "<header>\r\n";

                string states = "";

                Dictionary<string, ButtonData> ListOfWorkFlowButton = new Dictionary<string, ButtonData>();
                foreach (KeyValuePair<string, string> state in classData.StateProperty.SelectionData.ListOfValues)
                {
                    foreach (KeyValuePair<string, ButtonData> buttonData in classData.ListOfWorkFlowButton)
                    {
                        if (buttonData.Value.States.Equals(state.Key))
                        {
                            ListOfWorkFlowButton.Add(buttonData.Key, buttonData.Value);
                            break;
                        }
                    }

                    states += ((states.Length > 0) ? "," : "") + state.Key;
                }

                if (!classData.AccountingFunction.Equals(""))
                {
                    if (classData.AccountingArgs.Count > 0)
                    {
                        Dictionary<string, string> accountArgs = Utils.FunctionArgs(classData.AccountingArgs);

                        string state = Utils.GetArg(accountArgs, "state", "");
                        string button = Utils.GetArg(accountArgs, "button", "");

                        if (!state.Equals(""))
                        {
                            state = " states=\"" + state + "\"";
                        }

                        if (!button.Equals(""))
                        {
                            render += "\t\t\t\t\t\t" + "<button name=\"button_cancel\" string=\"" + button + "\"" + state + "/>\r\n";
                            render += "\t\t\t\t\t\t" + "<!-- -->\r\n";
                        }
                    }
                }

                ButtonData prevButtonData = null;
                int i = 1;
                foreach (KeyValuePair<string, ButtonData> buttonData in ListOfWorkFlowButton)
                {
                    if ((i > 1) && (buttonData.Value.RenderXML))
                    {
                        render += "\t\t\t\t\t\t" + "<button name=\"" + buttonData.Value.Name + "\" string=\"" + Utils.ReplaceSpecialChar(buttonData.Value.Text) + "\" icon=\"gtk-apply\" type=\"object\" states=\"" + prevButtonData.States + "\"/>\r\n";
                    }

                    prevButtonData = buttonData.Value;
                    i++;
                }

                Program.ProjectData.addTraduction(classData, "Annuler");

                render += "\t\t\t\t\t\t" + "<button name=\"button_cancel\" string=\"Annuler\" icon=\"gtk-cancel\" states=\"" + states + "\"/>\r\n";
                render += "\t\t\t\t\t\t" + "<!-- -->\r\n";
                render += "\t\t\t\t\t\t" + "<field name=\"state\" nolabel=\"1\" widget=\"statusbar\" statusbar_visible=\"" + classData.StateProperty.StatusBar + "\" statusbar_colors='{\"auto\":\"blue\"}'/>\r\n";

                render += "\t\t\t\t\t" + "</header>\r\n";
            }

            return render;
        }
        public static string addForm(FormData formData)
        {
            string render = "<record model=\"ir.ui.view\" id=\"" + formData.ID + "\">\r\n";

            Program.ProjectData.addTraduction(formData.Parent, (string)formData.Data["name"]);

            render += "\t\t\t<field name=\"name\">" + Utils.ReplaceSpecialChar((string)formData.Data["name"]) + "</field>\r\n";

            if (formData.Parent.Inherit != null)
            {
                render += "\t\t\t<field name=\"model\">" + formData.Parent.Inherit.ModuleName + "." + formData.Parent.Inherit.Name + "</field>\r\n";
            }
            else
            {
                render += "\t\t\t<field name=\"model\">" + (string)formData.RefAction.Data["res_model"] + "</field>\r\n";
            }


            render += "\t\t\t<field name=\"type\">form</field>\r\n";

            if (formData.Parent.Inherit != null)
            {
                string inherit_form = "";

                inherit_form = formData.Parent.Inherit.Parent.ModulePath + ".view_" + formData.Parent.Inherit.Name + "_form";
                if (!formData.Parent.Inherit.FormId.Equals(string.Empty))
                {
                    inherit_form = formData.Parent.Inherit.Parent.ModulePath + "." + formData.Parent.Inherit.FormId;
                }

                if (!formData.Parent.FormId.Equals(string.Empty))
                {
                    inherit_form = formData.Parent.Inherit.Parent.ModulePath + "." + formData.Parent.FormId;
                }

                render += "\t\t\t<field name=\"inherit_id\" ref=\"" + inherit_form + "\"/>\r\n";
            }

            render += "\t\t\t<field name=\"arch\" type=\"xml\">\r\n";

            if (formData.Parent.Inherit != null)
            {
                render += "\t\t\t\t<data>\r\n";
                render += "\t\t\t\t<xpath expr=\"" + formData.Parent.XpathForm + "\" position=\"" + formData.Parent.FormPosition + "\">\r\n";

                render += addFormGroup(formData.Parent, formData.Parent.ListOfGroups["default"], "\t", true, ViewKind.Form);
            }
            else
            {
                render += "\t\t\t\t<form string=\"" + Utils.ReplaceSpecialChar(formData.Parent.Alias) + "\" col=\"" + formData.Parent.Columns + "\" version=\"7.0\">\r\n";

                render += addHeaderForm(formData);

                render += "\t\t\t\t\t<sheet string=\"" + Utils.ReplaceSpecialChar(formData.Parent.Alias) + "\">\r\n";
                render += addFormGroup(formData.Parent, formData.Parent.ListOfGroups["default"], "\t\t", true, ViewKind.Form);
                render += "\t\t\t\t\t</sheet>\r\n";
            }

            render += addFooterForm(formData);

            if (formData.Parent.Inherit != null)
            {
                render += "\t\t\t\t</xpath>\r\n";
                render += "\t\t\t\t</data>\r\n";
            }
            else
            {
                render += "\t\t\t\t</form>\r\n";
            }

            render += "\t\t\t</field>\r\n";
            render += "\t\t</record>\r\n\r\n\t\t";

            return render;
        }