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(); }
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(); }