Exemple #1
0
        private void synchronizeJobInformation(ProcResult jobProc)
        {
            Dictionary <string, ProcForm> forms = this.byExternalJobID(jobProc.ProcessID, this.getListOfForms(jobProc.ProcessID));
            int jobCount = googleData.Count;
            int current  = 0;

            foreach (string jobId in googleData.Keys)
            {
                string description = googleData[jobId].Description;
                string location    = googleData[jobId].Location;
                if (forms.ContainsKey(jobId))
                {
                    ProcForm form = forms[jobId];
                    if (form.valueForField("Job Description") != description || form.valueForField("Job Location") != location)
                    {
                        this.updateJobForm(forms[jobId], description, location);
                    }
                }
                else
                {
                    this.createJobForm(jobProc.ProcessID, jobId, description, location);
                }
                current += 1;
                forms.Remove(jobId);
                this.syncDataWorker.ReportProgress(current * 100 / jobCount);
            }
            foreach (string deletedJobId in forms.Keys)
            {
                ProcForm form = forms[deletedJobId];
                this.updateJobForm(form, form.valueForField("Job Description"), form.valueForField("Job Location"), true);
            }
        }
Exemple #2
0
        private void updateJobForm(ProcForm procForm, string description, string location, bool deleted = false)
        {
            object jobData = new
            {
                FormID = procForm.FormID,
                Fields = this.prepareJobData(description, location, deleted: deleted)
            };

            this.API.ProcFormEdit(formData: jobData);
        }
Exemple #3
0
        // Search and replace procedure name in script text
        internal static string RenameProcedure(Procedure proc, IDocument document, TabInfo cTab, List <TabInfo> tabs = null)
        {
            string newName = proc.name;

            // form ini
            if (!ProcForm.CreateRenameForm(ref newName, "Procedure") || newName == proc.name)
            {
                return(null);
            }

            if (cTab.parseInfo.CheckExistsName(newName, NameType.Proc))
            {
                MessageBox.Show("The procedure/variable or declared macro with this name already exists.", "Unable to rename");
                return(null);
            }

            bool extFile = false;

            if (tabs != null && proc.filename != cTab.filename.ToLowerInvariant())   // не совсем понятно, при каких условиях это верно
            {
                switch (MessageBox.Show("Also renaming the procedure in a file: " + proc.filename.ToUpper() + " ?", "Procedure rename", MessageBoxButtons.YesNoCancel))
                {
                case DialogResult.Cancel:
                    return(null);

                case DialogResult.Yes:
                    extFile = true;
                    break;
                }
            }
            int differ = newName.Length - proc.name.Length;

            Regex s_regex;

            if (proc.References().Length == 0)
            {
                s_regex = new Regex(@"(\bprocedure\s|\bcall\s|[=,(]\s*)\s*" + proc.Name + @"\b", // осуществить поиск всех процедур совпадающих по имени
                                    RegexOptions.Multiline | RegexOptions.IgnoreCase);
                Utilities.ReplaceIDocumentText(s_regex, document, newName, differ);
            }
            else
            {
                s_regex = new Regex(@"\b" + proc.Name + @"\b", RegexOptions.Multiline | RegexOptions.IgnoreCase);
                Utilities.ReplaceByReferences(s_regex, document, proc, newName, differ); // rename by reference
            }

            // rename in other file/tab
            if (extFile)
            {
                string text = File.ReadAllText(proc.fstart);
                Utilities.ReplaceSpecialText(s_regex, ref text, newName, differ);
                File.WriteAllText(proc.fstart, text);

                TabInfo tab = TextEditor.CheckTabs(tabs, proc.fstart);
                if (tab != null)
                {
                    Utilities.ReplaceIDocumentText(s_regex, tab.textEditor.Document, newName, differ);
                    tab.FileTime = File.GetLastWriteTime(proc.fstart);
                }
            }
            TextEditor.currentHighlightProc = null;
            return(newName);
        }
Exemple #4
0
        internal static void Rename(IParserInfo item, IDocument document, TabInfo cTab, List <TabInfo> tabs)
        {
            string newName;

            switch ((NameType)item.Type())
            {
            case NameType.LVar:     // local procedure variable
                Variable lvar = (Variable)item;
                newName = lvar.name;
                if (!ProcForm.CreateRenameForm(ref newName, "Local Variable") || newName == lvar.name)
                {
                    return;
                }
                if (cTab.parseInfo.CheckExistsName(newName, NameType.LVar, lvar.fdeclared, lvar.d.declared))
                {
                    MessageBox.Show("The local variable this name already exists.", "Unable to rename");
                    return;
                }
                RenameVariable(lvar, newName, RegexOptions.IgnoreCase, document);     // rename only via references
                break;

            case NameType.GVar:     // script variable
                Variable gvar = (Variable)item;
                newName = gvar.name;
                if (!ProcForm.CreateRenameForm(ref newName, "Script Variable") || newName == gvar.name)
                {
                    return;
                }
                if (cTab.parseInfo.CheckExistsName(newName, NameType.GVar))
                {
                    MessageBox.Show("The variable/procedure or declared macro this name already exists.", "Unable to rename");
                    return;
                }
                RenameVariable(gvar, newName, RegexOptions.IgnoreCase, document);     // rename only via references
                break;

            case NameType.Proc:
                RenameProcedure((Procedure)item, document, cTab, tabs);
                return;

            case NameType.Macro:
                Macro macros = (Macro)item;

                bool isGlobal = ProgramInfo.macrosGlobal.ContainsKey(macros.token);
                newName = macros.token;

                if (!ProcForm.CreateRenameForm(ref newName, (isGlobal) ? "Global Macro" : "Local Macro") || newName == macros.token)
                {
                    return;
                }

                if (cTab.parseInfo.CheckExistsName(newName, NameType.Macro))
                {
                    MessageBox.Show("The variable/procedure or declared macro this name already exists.", "Unable to rename");
                    return;
                }
                int diff = newName.Length - macros.token.Length;

                // Для глобальных требуется переименовать все макросы во всех открытых вкладках и во всех файлах проекта/мода
                if (isGlobal)
                {
                    RenameGlobalMacros(macros, newName, cTab, tabs, diff);
                    // обновить макросы
                    GetMacros.GetGlobalMacros(Settings.pathHeadersFiles);
                    return;
                }
                RenameMacros(macros.token, newName, RegexOptions.None, document);
                if (diff != 0)
                {
                    DefineMacroAdjustSpaces(macros, document, diff);
                }
                break;
            }
        }