private void ReadXML(XmlReader reader) { reader.MoveToContent(); if (!(reader.Name == "KinoveaWorkspace")) { return; } reader.ReadStartElement(); reader.ReadElementContentAsString("FormatVersion", ""); Screens.Clear(); while (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "ScreenDescriptionPlayback": ScreenDescriptionPlayback sdp = new ScreenDescriptionPlayback(reader); Screens.Add(sdp); break; default: reader.ReadOuterXml(); break; } } reader.ReadEndElement(); }
public void ParseArguments(string[] args) { string[] arguments = args.Skip(1).ToArray(); if (arguments.Length < 1) { return; } string joined = string.Join(" ", arguments); log.DebugFormat("Command line arguments:{0}", string.Join(" ", arguments)); try { if (arguments.Length == 1) { if (arguments[0].Trim() == "-help" || arguments[0].Trim() == "-h") { PrintUsage(); } else if (File.Exists(arguments[0])) { // Special case for dragging a file on kinovea.exe icon. ScreenDescriptionPlayback sdp = new ScreenDescriptionPlayback(); sdp.FullPath = arguments[0]; LaunchSettingsManager.AddScreenDescription(sdp); } } else { CommandLineArgumentParser.ParseArguments(arguments); // TODO: check coherence. ScreenDescriptionPlayback sdp = new ScreenDescriptionPlayback(); sdp.FullPath = CommandLineArgumentParser.GetParamValue("-file"); int speed = int.Parse(CommandLineArgumentParser.GetParamValue("-speed")); speed = Math.Max(Math.Min(200, speed), 1); sdp.SpeedPercentage = speed; sdp.Stretch = CommandLineArgumentParser.IsSwitchOn("-stretch"); LaunchSettingsManager.AddScreenDescription(sdp); LaunchSettingsManager.ShowExplorer = !CommandLineArgumentParser.IsSwitchOn("-noexp"); } } catch (CommandLineArgumentException e) { log.Error("Command line arguments couldn't be parsed."); log.Error(e.Message); PrintUsage(); } }
public void ReadXML(XmlReader reader) { reader.MoveToContent(); bool isEmpty = reader.IsEmptyElement; if (reader.Name != "Workspace" && reader.Name != "KinoveaWorkspace" || isEmpty) { reader.ReadOuterXml(); return; } reader.ReadStartElement(); //reader.ReadElementContentAsString("FormatVersion", ""); Screens.Clear(); while (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "ScreenDescriptionPlayback": ScreenDescriptionPlayback sdp = new ScreenDescriptionPlayback(); sdp.ReadXml(reader); Screens.Add(sdp); break; case "ScreenDescriptionCapture": ScreenDescriptionCapture sdc = new ScreenDescriptionCapture(); sdc.Readxml(reader); Screens.Add(sdc); break; default: reader.ReadOuterXml(); break; } } reader.ReadEndElement(); }
public void ParseArguments(string[] args) { string[] arguments = args.Skip(1).ToArray(); if (arguments.Length < 1) { return; } string joined = string.Join(" ", arguments); log.DebugFormat("Command line arguments:{0}", string.Join(" ", arguments)); try { if (arguments.Length == 1) { if (arguments[0].Trim() == "-help" || arguments[0].Trim() == "-h") { PrintUsage(); } else if (File.Exists(arguments[0])) { // Special case for dragging a file on top of the program icon or starting with a workspace. if (Path.GetExtension(arguments[0]).ToLower() == ".xml") { Workspace workspace = new Workspace(); bool loaded = workspace.Load(arguments[0]); if (loaded) { foreach (IScreenDescription screen in workspace.Screens) { LaunchSettingsManager.AddScreenDescription(screen); } } } else { // Assume video and try to load it in a single screen. ScreenDescriptionPlayback sdp = new ScreenDescriptionPlayback(); sdp.FullPath = arguments[0]; sdp.Autoplay = true; sdp.Stretch = true; LaunchSettingsManager.AddScreenDescription(sdp); } } } else { CommandLineArgumentParser.ParseArguments(arguments); string name = CommandLineArgumentParser.GetParamValue("-name"); bool hideExplorer = CommandLineArgumentParser.IsSwitchOn("-hideExplorer"); string workspace = CommandLineArgumentParser.GetParamValue("-workspace"); string video = CommandLineArgumentParser.GetParamValue("-video"); string speed = CommandLineArgumentParser.GetParamValue("-speed"); bool stretch = CommandLineArgumentParser.IsSwitchOn("-stretch"); // General program state. if (!string.IsNullOrEmpty(name)) { LaunchSettingsManager.Name = name; } LaunchSettingsManager.ShowExplorer = !hideExplorer; // Workspace. if (!string.IsNullOrEmpty(workspace)) { Workspace w = new Workspace(); bool loaded = w.Load(workspace); if (loaded) { foreach (IScreenDescription screen in w.Screens) { LaunchSettingsManager.AddScreenDescription(screen); } } } else if (!string.IsNullOrEmpty(video)) { // Manual description. ScreenDescriptionPlayback sdp = new ScreenDescriptionPlayback(); sdp.FullPath = video; double speedValue; bool parsed = double.TryParse(speed, NumberStyles.Any, CultureInfo.InvariantCulture, out speedValue); if (parsed) { speedValue = Math.Max(1, Math.Min(200, speedValue)); } else { speedValue = 100; } sdp.SpeedPercentage = speedValue; sdp.Stretch = stretch; LaunchSettingsManager.AddScreenDescription(sdp); } } } catch (CommandLineArgumentException e) { log.Error("Command line arguments couldn't be parsed."); log.Error(e.Message); PrintUsage(); } }