Ejemplo n.º 1
0
        public void DuplicateSwitch()
        {
            if (!PluginBase.MainForm.CurrentDocument.IsEditable) return;

            ScintillaNet.ScintillaControl sci = PluginBase.MainForm.CurrentDocument.SciControl;

            sci.BeginUndoAction();
            
            int pos = sci.CurrentPos;
            int line = sci.LineFromPosition(pos);
            int start = sci.PositionFromLine(line);

            if (IsMultilineSelection(sci)) sci.SetSel(start, sci.SelectionEnd);

            int ss = sci.SelectionStart - start;
            int se = sci.SelectionEnd - start;
            
            // sci.GetLine est bugge sur la derniere ligne dans la beta 7
            string text = "";
            if (line < sci.LineCount - 1)
            {
                text = sci.GetLine(line);
                if (sci.EOLMode == 0)
                    text = text.Substring(0, text.Length - 1);
            }
            else
            {
                text = sci.GetCurLine(sci.LineLength(line));
            }

            // 0.3
            string s = "";
            if (text.IndexOf("addEventListener") > -1 || text.IndexOf("removeEventListener") > -1)
            {
                // SWITCH EVENTS

                InitializeEvents();

                ParseEvents test = new ParseEvents(eventsKeys, eventsValues, text);
                //TraceManager.Add("test.name:" + test.name);
                //TraceManager.Add("test.callback:" + test.callback);
                //TraceManager.Add("test.switchName:" + test.switchName);
                //TraceManager.Add("test.switchCallback:" + test.switchCallback);

                String[] arr = RegexEvents.Split(text);
                for (int i = 0; i < arr.Length; i++)
                {
                    if (arr[i] == test.name) s += test.switchName;
                    else s += arr[i];
                }
                s = Regex.Replace(s, test.callback, test.switchCallback);
            }
            else
            {
                // SWITCH PROPERTIES

                InitializeProperties();

                List<String> props = settingObject.PropertiesList;
                
                String[] arr = RegexProperties.Split(text);
                for (int i = 0; i < arr.Length; i++)
                    s += SwitchValue(propertiesKeys, propertiesValues, arr[i]);
            }

            //TraceManager.Add("s:" + s);
            sci.InsertText(sci.LineEndPosition(line), LineEndDetector.GetNewLineMarker(sci.EOLMode) + s);

            int nxt = line + 1;
            int ss2 = sci.PositionFromLine(nxt) + ss;
            if (sci.LineFromPosition(ss2) != nxt) ss2 = sci.LineEndPosition(nxt);
            int se2 = sci.PositionFromLine(nxt) + se;
            if (sci.LineFromPosition(se2) != nxt) se2 = sci.LineEndPosition(nxt);
            sci.SetSel(ss2, se2);

            sci.EndUndoAction();
        }
Ejemplo n.º 2
0
        public void DuplicateSwitch()
        {
            if (!PluginBase.MainForm.CurrentDocument.IsEditable)
            {
                return;
            }

            ScintillaNet.ScintillaControl sci = PluginBase.MainForm.CurrentDocument.SciControl;

            sci.BeginUndoAction();

            int pos   = sci.CurrentPos;
            int line  = sci.LineFromPosition(pos);
            int start = sci.PositionFromLine(line);

            if (IsMultilineSelection(sci))
            {
                sci.SetSel(start, sci.SelectionEnd);
            }

            int ss = sci.SelectionStart - start;
            int se = sci.SelectionEnd - start;

            // sci.GetLine est bugge sur la derniere ligne dans la beta 7
            string text = "";

            if (line < sci.LineCount - 1)
            {
                text = sci.GetLine(line);
                if (sci.EOLMode == 0)
                {
                    text = text.Substring(0, text.Length - 1);
                }
            }
            else
            {
                text = sci.GetCurLine(sci.LineLength(line));
            }

            // 0.3
            string s = "";

            if (text.IndexOf("addEventListener") > -1 || text.IndexOf("removeEventListener") > -1)
            {
                // SWITCH EVENTS

                InitializeEvents();

                ParseEvents test = new ParseEvents(eventsKeys, eventsValues, text);
                //TraceManager.Add("test.name:" + test.name);
                //TraceManager.Add("test.callback:" + test.callback);
                //TraceManager.Add("test.switchName:" + test.switchName);
                //TraceManager.Add("test.switchCallback:" + test.switchCallback);

                String[] arr = RegexEvents.Split(text);
                for (int i = 0; i < arr.Length; i++)
                {
                    if (arr[i] == test.name)
                    {
                        s += test.switchName;
                    }
                    else
                    {
                        s += arr[i];
                    }
                }
                s = Regex.Replace(s, test.callback, test.switchCallback);
            }
            else
            {
                // SWITCH PROPERTIES

                InitializeProperties();

                List <String> props = settingObject.PropertiesList;

                String[] arr = RegexProperties.Split(text);
                for (int i = 0; i < arr.Length; i++)
                {
                    s += SwitchValue(propertiesKeys, propertiesValues, arr[i]);
                }
            }

            //TraceManager.Add("s:" + s);
            sci.InsertText(sci.LineEndPosition(line), LineEndDetector.GetNewLineMarker(sci.EOLMode) + s);

            int nxt = line + 1;
            int ss2 = sci.PositionFromLine(nxt) + ss;

            if (sci.LineFromPosition(ss2) != nxt)
            {
                ss2 = sci.LineEndPosition(nxt);
            }
            int se2 = sci.PositionFromLine(nxt) + se;

            if (sci.LineFromPosition(se2) != nxt)
            {
                se2 = sci.LineEndPosition(nxt);
            }
            sci.SetSel(ss2, se2);

            sci.EndUndoAction();
        }