protected override bool OnKeyPressEvent(Gdk.EventKey evnt) { switch (evnt.Key) { case Gdk.Key.Left: SelectPrev(); return(true); case Gdk.Key.Right: SelectNext(); return(true); case Gdk.Key.BackSpace: if (CurrentPart != "") { CurrentPart = CurrentPart.Remove(CurrentPart.Length - 1, 1); } else { CurrentPart = atStart.ToString().Remove(atStart.ToString().Length - 1, 1); } break; } return(base.OnKeyPressEvent(evnt)); }
public KeyValuePair <string, PathType>?CompileCurrent(TokenzierContext context, int index, out Func <IMorestachioError> errProducer) { if (CurrentPart == ".") { PathParts.Add(null, PathType.SelfAssignment); } else if (CurrentPart == "../") { PathParts.Add(null, PathType.ParentSelector); } else if (CurrentPart == "~") { PathParts.Add(null, PathType.RootSelector); } else if (CurrentPart == "?") { PathParts.Add(null, PathType.ObjectSelector); } else if (CurrentPart.Trim() != string.Empty) { if (!ComputeCurrentPart(context, index, out errProducer)) { errProducer = () => ( new InvalidPathSyntaxError(context.CurrentLocation.Offset(index) .AddWindow(new CharacterSnippedLocation(1, index, CurrentPart)), CurrentPart, "Invalid character")); return(default);
public void OnStreamPartChange(PackageDataStreamPart oldPart, PackageDataStreamPart newPart) { EnsureNotDisposed(); bool keepSameStream = oldPart != null && newPart != null && oldPart.Path == newPart.Path; if (keepSameStream) { // move stream to new part newPart.Stream = oldPart.Stream; currentPart.FileStream.Seek(newPart.SegmentOffsetInDataFile, SeekOrigin.Begin); } else { // close old one if (oldPart != null) { DisposeCurrentPart(); } // open new part if (newPart != null) { currentPart = new CurrentPart(); currentPart.Part = newPart; currentPart.FileStream = new FileStream(newPart.Path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); currentPart.FileStream.Seek(newPart.SegmentOffsetInDataFile, SeekOrigin.Begin); currentPart.Part.Stream = currentPart.FileStream; } } }
public void Upgrade() { Level += 1; if (CurrentPart != null && Level != 3) { CurrentPart.Upgrade(); } }
private void DisposeCurrentPart() { if (currentPart == null) { return; } currentPart.FileStream.Dispose(); currentPart = null; }
public void Upgrade() { if (Level <= 3) { Level++; baseMaxSpeed = ((0.5F * Level)); CurrentPart.Upgrade(); } }
private void DisposeCurrentPart() { if (currentPart == null) { return; } currentPart.HashStream.Dispose(); currentPart.HashAlgorithm.Dispose(); currentPart = null; }
public void OnStreamPartChange(PackageDataStreamPart oldPart, PackageDataStreamPart newPart) { EnsureNotDisposed(); bool keepSameStream = oldPart != null && newPart != null && oldPart.Path == newPart.Path; // compute hash if (oldPart != null) { ComputeCurrentPartHash(); } if (!keepSameStream) { // close old one if (oldPart != null) { DisposeCurrentPart(); } // open new part if (newPart != null) { logger.LogTrace($"Opening data file {Path.GetFileName(newPart.Path)} for writing."); currentPart = new CurrentPart { Part = newPart, }; } } // update current part if (newPart != null) { currentPart.Part = newPart; currentPart.HashAlgorithm = cryptoProvider.CreateHashAlgorithm(); if (writeToNestedStream) { // allocate and write to memory stream memStream.Position = 0; memStream.SetLength(0); currentPart.HashStream = new CryptoStream(memStream, currentPart.HashAlgorithm, CryptoStreamMode.Write, leaveOpen: true); } else { // write to NULL - just compute hash currentPart.HashStream = new CryptoStream(Stream.Null, currentPart.HashAlgorithm, CryptoStreamMode.Write, leaveOpen: true); } currentPart.Part.Stream = currentPart.HashStream; } }
private void DisposeCurrentPart() { if (currentPart == null) { return; } currentPart.HashStream.Dispose(); currentPart.HashAlgorithm.Dispose(); totalSize += currentPart.FileStream.Length; currentPart.FileStream.Dispose(); currentPart = null; }
public IList <KeyValuePair <string, PathType> > Compile(TokenzierContext context, int index) { if (CurrentPart == ".") { PathParts.Add(new KeyValuePair <string, PathType>(null, PathType.SelfAssignment)); } else if (CurrentPart == "../") { PathParts.Add(new KeyValuePair <string, PathType>(null, PathType.ParentSelector)); } else if (CurrentPart == "~") { PathParts.Add(new KeyValuePair <string, PathType>(null, PathType.RootSelector)); } else if (CurrentPart == "?") { PathParts.Add(new KeyValuePair <string, PathType>(null, PathType.ObjectSelector)); } else if (CurrentPart.Trim() != "") { if (CurrentPartIsNumber) { PathParts.Add(new KeyValuePair <string, PathType>(CurrentPart, PathType.Number)); } else { if (!ComputeCurrentPart(context, index)) { return(new KeyValuePair <string, PathType> [0]); } } } if (PathParts.Count > 1 && PathParts.Last().Value == PathType.SelfAssignment) { PathParts.Remove(PathParts.Last()); } //if (!PathParts.Any()) //{ // hasError = 0; // return PathParts; //} CurrentPart = ""; return(PathParts); }
public void OnStreamPartChange(PackageDataStreamPart oldPart, PackageDataStreamPart newPart) { EnsureNotDisposed(); bool keepSameStream = oldPart != null && newPart != null && oldPart.Path == newPart.Path; // compute hash if (oldPart != null) { ComputeCurrentPartHash(); } if (!keepSameStream) { // close old one if (oldPart != null) { DisposeCurrentPart(); } // open new part if (newPart != null) { logger.LogDebug($"Creating new data file {Path.GetFileName(newPart.Path)}. Already wrote {SizeFormatter.ToString(totalSize)}."); currentPart = new CurrentPart { Part = newPart, FileStream = new FileStream(newPart.Path, FileMode.CreateNew, FileAccess.ReadWrite, FileShare.None) }; currentPart.FileStream.SetLength(newPart.DataFileLength); } } // update current part if (newPart != null) { currentPart.Part = newPart; currentPart.FileStream.Seek(newPart.SegmentOffsetInDataFile, SeekOrigin.Begin); currentPart.HashAlgorithm = cryptoProvider.CreateHashAlgorithm(); currentPart.HashStream = new CryptoStream(currentPart.FileStream, currentPart.HashAlgorithm, CryptoStreamMode.Write, leaveOpen: true); currentPart.Part.Stream = currentPart.HashStream; } }
public void OnStreamPartChange(PackageDataStreamPart oldPart, PackageDataStreamPart newPart) { EnsureNotDisposed(); bool keepSameStream = oldPart != null && newPart != null && oldPart.Path == newPart.Path; // flush if (oldPart != null) { FlushCurrentPart(); } if (!keepSameStream) { // close old one if (oldPart != null) { DisposeCurrentPart(); } // open new part if (newPart != null) { logger.LogTrace($"Opening data file {Path.GetFileName(newPart.Path)} for writing."); currentPart = new CurrentPart { Part = newPart, FileStream = new FileStream(newPart.Path, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite) }; } } // update current part if (newPart != null) { currentPart.Part = newPart; currentPart.FileStream.Seek(newPart.SegmentOffsetInDataFile, SeekOrigin.Begin); currentPart.Part.Stream = currentPart.FileStream; } }
void Update() { if (CurrentPart == null) { return; } if (PlayStateManager.Instance.CurrentInteractible != null) { CurrentPart = null; return; } if (CurrentPart.Equals(PART_HANDLE)) { PlayStateManager.Instance.Robot.MoveIKHandle(GetTranslationVector(CurrentDirection, moveSpeed * Time.deltaTime)); } else { PlayStateManager.Instance.Robot.Rotate(CurrentPart, GetRotationVector(CurrentDirection, rotationSpeed * Time.deltaTime)); } }
/// <summary> /// Handles KeyPress event /// </summary> /// <param name="evnt"> /// Arguments <see cref="Gdk.EventKey"/> /// </param> /// <returns> /// true if handled, false if not <see cref="System.Boolean"/> /// </returns> protected override bool OnKeyPressEvent(Gdk.EventKey evnt) { switch (evnt.Key) { case Gdk.Key.Tab: return(base.OnKeyPressEvent(evnt)); } if (Editable == false) { return(true); } switch (evnt.Key) { case Gdk.Key.Left: SelectPrev(); return(true); case Gdk.Key.Right: SelectNext(); return(true); case Gdk.Key.BackSpace: if (CurrentPart != "") { CurrentPart = CurrentPart.Remove(CurrentPart.Length - 1, 1); } else { CurrentPart = atStart.ToString().Remove(atStart.ToString().Length - 1, 1); } break; case Gdk.Key.Insert: if ((evnt.State & ModifierType.ControlMask) == ModifierType.ControlMask) { CopyToClipboard((evnt.State & ModifierType.ShiftMask) == ModifierType.ShiftMask); return(true); } if ((evnt.State & ModifierType.ShiftMask) == ModifierType.ShiftMask) { ResetEditing(); PasteFromClipboard(); return(true); } return(false); case Gdk.Key.C: case Gdk.Key.c: if ((evnt.State & ModifierType.ControlMask) != ModifierType.ControlMask) { return(false); } ResetEditing(); CopyToClipboard(false); return(true); case Gdk.Key.X: case Gdk.Key.x: if ((evnt.State & ModifierType.ControlMask) != ModifierType.ControlMask) { return(false); } ResetEditing(); CopyToClipboard(true); return(true); case Gdk.Key.V: case Gdk.Key.v: if ((evnt.State & ModifierType.ControlMask) != ModifierType.ControlMask) { return(false); } ResetEditing(); PasteFromClipboard(); return(true); case Gdk.Key.Up: case Gdk.Key.Down: int inc = (evnt.Key == Gdk.Key.Down) ? -1 : 1; ResetEditing(); switch (Selected) { case DataPart.Hour: if (((Time.Hour + inc) >= 0) && ((Time.Hour + inc) <= MaxNumber)) { SetTime(Time.Hour + inc, Time.Minute, Time.Second, Time.Millisecond); } break; case DataPart.Minute: if (((Time.Minute + inc) >= 0) && ((Time.Minute + inc) <= MaxNumber)) { SetTime(Time.Hour, Time.Minute + inc, Time.Second, Time.Millisecond); } break; case DataPart.Second: if (((Time.Second + inc) >= 0) && ((Time.Second + inc) <= MaxNumber)) { SetTime(Time.Hour, Time.Minute, Time.Second + inc, Time.Millisecond); } break; case DataPart.Millisecond: if (((Time.Millisecond + inc) >= 0) && ((Time.Millisecond + inc) <= MaxNumber)) { SetTime(Time.Hour, Time.Minute, Time.Second, Time.Millisecond + inc); } break; } return(true); } return(base.OnKeyPressEvent(evnt)); }
public bool Add(char c, TokenzierContext context, int index) { if (!Tokenizer.IsExpressionChar(c)) { context.Errors.Add( new InvalidPathSyntaxError(context.CurrentLocation.Offset(index) .AddWindow(new CharacterSnippedLocation(1, index, CurrentPart)), CurrentPart)); return(false); } if (PathParts.Any(f => f.Value == PathType.Null)) { context.Errors.Add( new InvalidPathSyntaxError(context.CurrentLocation.Offset(index) .AddWindow(new CharacterSnippedLocation(1, index, CurrentPart)), CurrentPart, "Nothing can follow on a null")); } LastCharWasDelimiter = c == '.'; if (c == '/') { if (CurrentPart == "..") { if (PathParts.Any() && PathParts.Any(e => e.Value != PathType.ParentSelector)) { context.Errors.Add( new InvalidPathSyntaxError(context.CurrentLocation.Offset(index) .AddWindow(new CharacterSnippedLocation(1, index, CurrentPart)), CurrentPart, "An Parent selector '..\\' can only follow on another parent selector like and never on an root or an data selector")); return(false); } PathParts.Add(new KeyValuePair <string, PathType>(null, PathType.ParentSelector)); CurrentPart = ""; return(true); } context.Errors.Add( new InvalidPathSyntaxError(context.CurrentLocation.Offset(index) .AddWindow(new CharacterSnippedLocation(1, index, CurrentPart)), CurrentPart, "Unexpected '/'. Expected ether the start of an expression or an './'")); return(false); } if (c == '~') { if (CurrentPart != string.Empty || PathParts.Any()) { context.Errors.Add( new InvalidPathSyntaxError(context.CurrentLocation.Offset(index) .AddWindow(new CharacterSnippedLocation(1, index, CurrentPart)), CurrentPart, "An root selector '~' must be at the start of an expression")); return(false); } PathParts.Add(new KeyValuePair <string, PathType>(null, PathType.RootSelector)); CurrentPart = ""; return(true); } if (c == '?') { PathParts.Add(new KeyValuePair <string, PathType>(null, PathType.ObjectSelector)); CurrentPart = ""; return(true); } if (c != '.' && CurrentPart == "." && PathParts.Count == 0) { //in this case somebody wrote .data //so ignore the dot CurrentPart = ""; } if (CurrentPart != "" && CurrentPart != "." && c == '.') { if (CurrentPartIsNumber) { if (CurrentPart.Contains(".")) { PathParts.Add(new KeyValuePair <string, PathType>(CurrentPart, PathType.Number)); CurrentPart = ""; } else { CurrentPart += c; } return(true); } if (!ComputeCurrentPart(context, index)) { return(false); } CurrentPart = ""; } else { if (CurrentPart == string.Empty && char.IsDigit(c)) { CurrentPartIsNumber = true; if (PathParts.Any()) { context.Errors.Add( new InvalidPathSyntaxError(context.CurrentLocation.Offset(index) .AddWindow(new CharacterSnippedLocation(1, index, CurrentPart)), CurrentPart, "A number expression must be at the start of the expression and cannot follow on anything else")); return(false); } } CurrentPart += c; } return(true); }
/// <summary> /// Handles KeyPress event /// </summary> /// <param name="evnt"> /// Arguments <see cref="Gdk.EventKey"/> /// </param> /// <returns> /// true if handled, false if not <see cref="System.Boolean"/> /// </returns> protected override bool OnKeyPressEvent(Gdk.EventKey evnt) { switch (evnt.Key) { case Gdk.Key.Tab: return(base.OnKeyPressEvent(evnt)); break; } if (Editable == false) { return(true); } switch (evnt.Key) { case Gdk.Key.Escape: if (IsCellRenderer == true) { System.Console.WriteLine("Escape"); } return(false); break; case Gdk.Key.Left: SelectPrev(); return(true); case Gdk.Key.Right: SelectNext(); return(true); case Gdk.Key.BackSpace: if (CurrentPart != "") { CurrentPart = CurrentPart.Remove(CurrentPart.Length - 1, 1); } else { CurrentPart = atStart.ToString().Remove(atStart.ToString().Length - 1, 1); } break; case Gdk.Key.Insert: if ((evnt.State & ModifierType.ControlMask) == ModifierType.ControlMask) { CopyToClipboard((evnt.State & ModifierType.ShiftMask) == ModifierType.ShiftMask); return(true); } if ((evnt.State & ModifierType.ShiftMask) == ModifierType.ShiftMask) { ResetEditing(); PasteFromClipboard(); return(true); } return(false); case Gdk.Key.C: case Gdk.Key.c: if ((evnt.State & ModifierType.ControlMask) != ModifierType.ControlMask) { return(false); } ResetEditing(); CopyToClipboard(false); return(true); case Gdk.Key.X: case Gdk.Key.x: if ((evnt.State & ModifierType.ControlMask) != ModifierType.ControlMask) { return(false); } ResetEditing(); CopyToClipboard(true); return(true); case Gdk.Key.V: case Gdk.Key.v: if ((evnt.State & ModifierType.ControlMask) != ModifierType.ControlMask) { return(false); } ResetEditing(); PasteFromClipboard(); return(true); case Gdk.Key.Up: case Gdk.Key.Down: int inc = (evnt.Key == Gdk.Key.Down) ? -1 : 1; ResetEditing(); switch (Selected) { case DataPart.Day: if (((Date.Day + inc) > 0) && ((Date.Day + inc) <= MaxDaysInCurrentMonth)) { SetCorrectDateTime(Date.Year, Date.Month, Date.Day + inc); } break; case DataPart.Month: if (((Date.Month + inc) > 0) && ((Date.Month + inc) <= MaxNumber)) { SetCorrectDateTime(Date.Year, Date.Month + inc, Date.Day); } break; case DataPart.Year: if (((Date.Year + inc) > 0) && ((Date.Year + inc) <= MaxNumber)) { SetCorrectDateTime(Date.Year + inc, Date.Month, Date.Day); } break; } return(true); } return(base.OnKeyPressEvent(evnt)); }
public void WriteXml(System.Xml.XmlWriter writer) { var s = new XmlSerializer(typeof(string)); var b = new XmlSerializer(typeof(bool)); var l = new XmlSerializer(typeof(List <AutoAnswer>)); writer.WriteStartElement("TaskInfo"); //taskid writer.WriteStartElement("TaskId"); s.Serialize(writer, TaskId.ToString()); writer.WriteEndElement(); //pluginname writer.WriteStartElement("PluginName"); s.Serialize(writer, PluginName); writer.WriteEndElement(); //url writer.WriteStartElement("Url"); s.Serialize(writer, Url); writer.WriteEndElement(); //title writer.WriteStartElement("Title"); s.Serialize(writer, Title); writer.WriteEndElement(); //status writer.WriteStartElement("Status"); DownloadStatus tmpds = Status; if (tmpds == DownloadStatus.正在下载 || tmpds == DownloadStatus.正在停止 || tmpds == DownloadStatus.等待开始) { tmpds = DownloadStatus.已经停止; } s.Serialize(writer, tmpds.ToString()); writer.WriteEndElement(); //createtime writer.WriteStartElement("CreateTime"); s.Serialize(writer, CreateTime.ToString()); writer.WriteEndElement(); //finishtime if (FinishTime != null) { writer.WriteStartElement("FinishTime"); s.Serialize(writer, FinishTime.ToString()); writer.WriteEndElement(); } //savedirectory writer.WriteStartElement("SaveDirectory"); s.Serialize(writer, SaveDirectory.ToString()); writer.WriteEndElement(); //PartCount writer.WriteStartElement("PartCount"); s.Serialize(writer, PartCount.ToString()); writer.WriteEndElement(); //CurrentPart writer.WriteStartElement("CurrentPart"); s.Serialize(writer, CurrentPart.ToString()); writer.WriteEndElement(); //is be added writer.WriteStartElement("IsBeAdded"); b.Serialize(writer, IsBeAdded); writer.WriteEndElement(); //partialfinished writer.WriteStartElement("PartialFinished"); b.Serialize(writer, PartialFinished); writer.WriteEndElement(); //partialfinished detail writer.WriteStartElement("PartialFinishedDetail"); s.Serialize(writer, PartialFinishedDetail); writer.WriteEndElement(); //autoanswer writer.WriteStartElement("AutoAnswers"); l.Serialize(writer, AutoAnswer); writer.WriteEndElement(); //extract cache writer.WriteStartElement("ExtractCache"); b.Serialize(writer, ExtractCache); writer.WriteEndElement(); //FilePath writer.WriteStartElement("Files"); foreach (string item in FilePath) { writer.WriteStartElement("File"); s.Serialize(writer, item); writer.WriteEndElement(); } writer.WriteEndElement(); //SubFilePath writer.WriteStartElement("SubFiles"); foreach (string item in SubFilePath) { writer.WriteStartElement("SubFile"); s.Serialize(writer, item); writer.WriteEndElement(); } writer.WriteEndElement(); //DownloadType writer.WriteStartElement("DownloadType"); s.Serialize(writer, DownloadTypes.ToString("D")); writer.WriteEndElement(); //proxy XmlSerializer sProxy = new XmlSerializer(typeof(AcDownProxy)); writer.WriteStartElement("Proxy"); sProxy.Serialize(writer, new AcDownProxy().FromWebProxy(Proxy)); writer.WriteEndElement(); //source url writer.WriteStartElement("SourceUrl"); s.Serialize(writer, SourceUrl); writer.WriteEndElement(); //comment writer.WriteStartElement("Comment"); s.Serialize(writer, Comment); writer.WriteEndElement(); //hash writer.WriteStartElement("Hash"); s.Serialize(writer, Hash); writer.WriteEndElement(); //Progress writer.WriteStartElement("Progress"); s.Serialize(writer, GetProgress().ToString()); writer.WriteEndElement(); //settings XmlSerializer sSettings = new XmlSerializer(typeof(SerializableDictionary <string, string>)); writer.WriteStartElement("Settings"); sSettings.Serialize(writer, Settings); writer.WriteEndElement(); writer.WriteEndElement(); }