예제 #1
0
	public TimingsAdjustDialog () : base(gladeFilename){
		timingMode = Base.TimingMode;
		SetSpinButtons();
		UpdateForTimingMode();
		SetApplyToSelectionSensitivity();
		SetSelectionType();
	}
예제 #2
0
	/// <summary>Creates a new instance of the <see cref="FileProperties" /> class, given its properties.</summary>
	/// <param name="path">The file's path.</param>
	/// <param name="encoding">The file's character coding.</param>
	/// <param name="subtitleType">The file's subtitle type.</param>
	/// <param name="timingMode">The file's timing mode. This is more useful for the subtitle types that support both the time and frame modes.</param>
	/// <param name="newlineType">The file's newline type.</param>
	public FileProperties (string path, Encoding encoding, SubtitleType subtitleType, TimingMode timingMode, NewlineType newlineType) {
		this.path = path;
		this.encoding = encoding;
		this.subtitleType = subtitleType;
		this.timingMode = timingMode;
		this.newlineType = newlineType;
	}
	public TimingsSynchronizeDialog () : base(gladeFilename, true){
		this.timingMode = Base.TimingMode;

		CreateColumns();
		SetModel();
		InitWidgetSensitivity();

		ConnectHandlers();

		UpdateStatusMessage();
	}
예제 #4
0
	/// <summary>Parses the specified text.</summary>
	/// <remarks>The created <see cref="SubtitleCollection" /> will have its <see cref="SubtitleProperties" /> property set to null.
	/// It is mandatory to use <see cref="SubtitleCollection.SetPropertiesForAll" /> after.</remarks>
	internal ParsingProperties Parse (string text, TimingMode timingMode, Encoding encoding, out SubtitleCollection collection) {

		collection = new SubtitleCollection();
		ParsingProperties properties = new ParsingProperties();
		this.text = text;
		properties.TimingMode = timingMode;

		/* Read the subtitles */
		ReadSubtitles(encoding, properties, collection);

		return properties;
	}
예제 #5
0
	private void UpdateFromTimingMode (TimingMode newTimingMode, bool initializing) {
		if ((!initializing) && (newTimingMode == timingMode))
			return;

		timingMode = newTimingMode;
		Core.Util.SetSpinButtonTimingMode(spinButton, timingMode);
		Core.Util.SetSpinButtonMaxAdjustment(spinButton, timingMode, true);

		string label = (timingMode == TimingMode.Times ? Catalog.GetString("Time") : Catalog.GetString("Frames"));
		string markup = "<b>" + label + "</b>";
		timingModeLabel.Markup = markup;
	}
예제 #6
0
        /// <summary>Parses the specified text.</summary>
        /// <remarks>The created <see cref="SubtitleCollection" /> will have its <see cref="SubtitleProperties" /> property set to null.
        /// It is mandatory to use <see cref="SubtitleCollection.SetPropertiesForAll" /> after.</remarks>
        internal ParsingProperties Parse(string text, TimingMode timingMode, Encoding encoding, out SubtitleCollection collection)
        {
            collection = new SubtitleCollection();
            ParsingProperties properties = new ParsingProperties();

            this.text             = text;
            properties.TimingMode = timingMode;

            /* Read the subtitles */
            ReadSubtitles(encoding, properties, collection);

            return(properties);
        }
예제 #7
0
        // Used when a subtitle format suppports both times and frames
        private Regex CreateSubtitleRegex(SubtitleFormat format, TimingMode timingMode)
        {
            string subtitleInExpression;

            if (timingMode == TimingMode.Times)
            {
                subtitleInExpression = format.SubtitleInTimesMode + @"\s*";           //Ignore spaces between subtitles
            }
            else
            {
                subtitleInExpression = format.SubtitleInFramesMode + @"\s*";          //Ignore spaces between subtitles
            }
            return(new Regex(subtitleInExpression, RegexOptions.IgnoreCase));
        }
예제 #8
0
        public void Init(ushort address = 0x0000, bool endOnHalt = false, TimingMode timingMode = TimingMode.FastAndFurious)
        {
            if (!_running)
            {
                EndOnHalt        = endOnHalt; // if set, will summarily end execution at the first HALT instruction. This is mostly for test / debug scenarios.
                TimingMode       = timingMode;
                _realTime        = (timingMode == TimingMode.PseudoRealTime);
                _emulatedTStates = 0;

                DisableInterrupts();

                Registers.PC = address; // ordinarily, execution will start at 0x0000, but this can be overridden
            }
        }
예제 #9
0
        /// <summary>
        /// Creates the instance and initializes it from given xml element.
        /// Content of xml element is always validated against the xml schema.
        /// </summary>
        /// <param name="elem">Xml data containing settings</param>
        public PulseGeneratorSettings(XElement elem)
        {
            //Validation
            ElemValidator validator     = new ElemValidator();
            Assembly      assemblyRCNet = Assembly.GetExecutingAssembly();

            validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Data.Generators.PulseGeneratorSettings.xsd");
            validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd");
            XElement settingsElem = validator.Validate(elem, "rootElem");

            //Parsing
            Signal    = double.Parse(settingsElem.Attribute("signal").Value, CultureInfo.InvariantCulture);
            AvgPeriod = Math.Abs(double.Parse(settingsElem.Attribute("avgPeriod").Value, CultureInfo.InvariantCulture));
            Mode      = ParseTimingMode(settingsElem.Attribute("mode").Value);
            return;
        }
예제 #10
0
	private void SetSpinButtonFromTimingMode () {
		if (this.timingMode == Base.TimingMode)
			return;

		this.timingMode = Base.TimingMode;
		Core.Util.SetSpinButtonTimingMode(spinButton, timingMode);

		if (timingMode == TimingMode.Times) {
			Core.Util.SetSpinButtonAdjustment(spinButton, Base.Ui.Video.Position.Duration, false);
			SetSpinButtonValue(Base.Ui.Video.Position.CurrentTime.TotalMilliseconds);
		}
		else {
			Core.Util.SetSpinButtonAdjustment(spinButton, Base.Ui.Video.Position.DurationInFrames, false);
			SetSpinButtonValue(Base.Ui.Video.Position.CurrentFrames);
		}
	}
        /* Private methods */

        private void SetTimingMode(TimingMode mode)
        {
            if (mode == timingMode)     //Only set if it's not already set
            {
                return;
            }

            timingMode = mode;
            if (mode == TimingMode.Frames)
            {
                SetFramesMode();
            }
            else
            {
                SetTimesMode();
            }
        }
예제 #12
0
        /// <summary>Displays a SaveAs dialog and gets the chosen options as <cref="FileProperties" />.</summary>
        /// <param name="dialog">The dialog to display.</param>
        /// <returns>The chosen file properties, or null in case SaveAs was canceled.</returns>
        private FileProperties ShowSaveAsDialog(FileSaveDialog dialog)
        {
            dialog.Show();
            bool toSaveAs = dialog.WaitForResponse();

            if (!toSaveAs)
            {
                return(null);
            }

            string       path         = dialog.Filename;
            Encoding     encoding     = Encodings.GetEncoding(dialog.Encoding.CodePage);
            SubtitleType subtitleType = dialog.SubtitleType;
            NewlineType  newlineType  = dialog.NewlineType;
            TimingMode   timingMode   = Base.TimingMode;

            return(new FileProperties(path, encoding, subtitleType, timingMode, newlineType));
        }
 private void changeTimeMode(TimingMode mode)
 {
     /*    if (mode == MemorizeDataMgr.Instance.CurrentTimingMode)
      *      return;
      *
      *  MessageWindow msgWnd = new MessageWindow();
      *  msgWnd.ShowMessage("切换计时模式,应用需要重新开始,确定要切换吗?", MessageBoxButton.OKCancel, (ok) =>
      *  {
      *      MemorizeDataMgr.Instance.Entry.IsPkMode = this.pkModeCheckBox.IsChecked.Value;
      *      MemorizeDataMgr.Instance.Restart();
      *      this.startStage();
      *
      *      this.timeControl.Mode = mode;
      *      this.timeControl.Stop();
      *      this.timeControl.Start(60);
      *
      *      MemorizeDataMgr.Instance.CurrentTimingMode = mode;
      *  });*/
 }
예제 #14
0
        private void SetSpinButtonFromTimingMode()
        {
            if (this.timingMode == Base.TimingMode)
            {
                return;
            }

            this.timingMode = Base.TimingMode;
            Core.Util.SetSpinButtonTimingMode(spinButton, timingMode);

            if (timingMode == TimingMode.Times)
            {
                Core.Util.SetSpinButtonAdjustment(spinButton, Base.Ui.Video.Position.Duration, false);
                SetSpinButtonValue(Base.Ui.Video.Position.CurrentTime.TotalMilliseconds);
            }
            else
            {
                Core.Util.SetSpinButtonAdjustment(spinButton, Base.Ui.Video.Position.DurationInFrames, false);
                SetSpinButtonValue(Base.Ui.Video.Position.CurrentFrames);
            }
        }
예제 #15
0
	private void UpdateLengthLabel (TimingMode timingMode, TimeSpan length) {
		if (timingMode == TimingMode.Times)
			lengthValueLabel.Text = Util.TimeSpanToText(length);
		else {
			double frames = (length == TimeSpan.Zero ? 0 : TimingUtil.TimeToFrames(length, player.FrameRate));
			lengthValueLabel.Text = Convert.ToInt32(frames).ToString();
		}
	}
예제 #16
0
	private void UpdatePositionLabel (TimingMode timingMode) {
		string mode = (timingMode == TimingMode.Times ? Catalog.GetString("Time") : Catalog.GetString("Frame"));
		positionLabel.Markup = "<b>" + mode + "</b>";
	}
예제 #17
0
	private void OnBaseTimingModeChanged (TimingMode timingMode) {
		UpdatePositionLabel(timingMode);
		UpdatePositionValueLabel(position);
		TimeSpan length = player.Duration;
		UpdateLengthLabel(timingMode, length);
	}
예제 #18
0
	private void FillTimingMode (TimingMode mode) {
		timingModeValueLabel.Text = mode.ToString();
	}
	/* Private methods */

	private void SetTimingMode (TimingMode mode) {
   		if (mode == timingMode) //Only set if it's not already set
   			return;

   		timingMode = mode;
   		if (mode == TimingMode.Frames)
   			SetFramesMode();
   		else
   			SetTimesMode();
   	}
예제 #20
0
        private Subtitles ParsedSubtitlesPlain(string path, Encoding fileEncoding, string text, bool withCharacterNames, TimingMode timingMode, string lineSeparator)
        {
            SubtitleCollection collection        = null;
            PlainTextParser    plainParser       = new PlainTextParser(withCharacterNames, lineSeparator);
            ParsingProperties  parsingProperties = plainParser.Parse(text, timingMode, fileEncoding, out collection);

            SubtitleProperties subtitleProperties = new SubtitleProperties(parsingProperties);

            collection.SetPropertiesForAll(subtitleProperties);

            Subtitles subtitles = new Subtitles(collection, subtitleProperties);

            CompleteTimingsAfterParsing(subtitles, parsingProperties);

            fileProperties = new FileProperties(path, fileEncoding, parsingProperties.TimingMode);

            Logger.Info("[SubtitleFactory] Opened {0} with encoding {1}", path, fileEncoding);
            return(subtitles);
        }
예제 #21
0
	private void SetActiveTimingMode (TimingMode mode) {
		if (mode == TimingMode.Times)
			SetCheckMenuItemActivity(WidgetNames.ViewTimes, true);
		else
			SetCheckMenuItemActivity(WidgetNames.ViewFrames, true);
	}
예제 #22
0
	// Used when a subtitle format suppports both times and frames
	private Regex CreateSubtitleRegex(SubtitleFormat format, TimingMode timingMode) {
		string subtitleInExpression;
		if (timingMode == TimingMode.Times)
			subtitleInExpression = format.SubtitleInTimesMode + @"\s*";   //Ignore spaces between subtitles
		else
			subtitleInExpression = format.SubtitleInFramesMode + @"\s*";  //Ignore spaces between subtitles

		return new Regex(subtitleInExpression, RegexOptions.IgnoreCase);
	}
예제 #23
0
 private void OnBaseTimingModeChanged (TimingMode timingMode) {
 	Refresh();
 }
예제 #24
0
 /// <summary>Creates a new instance of the <see cref="FileProperties" /> class, given its properties.</summary>
 /// <param name="path">The file's path.</param>
 /// <param name="encoding">The file's character coding.</param>
 /// <param name="timingMode">The file's timing mode. This is more useful for the subtitle types that support both the time and frame modes.</param>
 public FileProperties(string path, Encoding encoding, TimingMode timingMode)
     : this(path, encoding, SubtitleType.Unknown, timingMode)
 {
 }
예제 #25
0
 /// <summary>Creates a new instance of the <see cref="FileProperties" /> class, given its properties.</summary>
 /// <param name="path">The file's path.</param>
 /// <param name="encoding">The file's character coding.</param>
 /// <param name="subtitleType">The file's subtitle type.</param>
 /// <param name="timingMode">The file's timing mode. This is more useful for the subtitle types that support both the time and frame modes.</param>
 public FileProperties(string path, Encoding encoding, SubtitleType subtitleType, TimingMode timingMode)
     : this(path, encoding, subtitleType, timingMode, NewlineType.Unknown)
 {
 }
예제 #26
0
 /// <summary>Creates a new instance of the <see cref="FileProperties" /> class, given its properties.</summary>
 /// <param name="path">The file's path.</param>
 /// <param name="encoding">The file's character coding.</param>
 /// <param name="subtitleType">The file's subtitle type.</param>
 /// <param name="timingMode">The file's timing mode. This is more useful for the subtitle types that support both the time and frame modes.</param>
 /// <param name="newlineType">The file's newline type.</param>
 public FileProperties(string path, Encoding encoding, SubtitleType subtitleType, TimingMode timingMode, NewlineType newlineType)
 {
     this.path         = path;
     this.encoding     = encoding;
     this.subtitleType = subtitleType;
     this.timingMode   = timingMode;
     this.newlineType  = newlineType;
 }
예제 #27
0
	public static void SetSpinButtonMaxAdjustment (SpinButton spinButton, TimingMode timingMode, bool toNegate) {
		if (timingMode == TimingMode.Times)
			SetSpinButtonAdjustment(spinButton, TimeSpan.Zero, toNegate);
		else
			SetSpinButtonAdjustment(spinButton, 0, toNegate);
	}
	private void OnBaseTimingModeChanged (TimingMode newTimingMode) {
    	if (timingMode == newTimingMode)
			return;

		SetTimingMode(newTimingMode);
		LoadTimings();
    }
예제 #29
0
        /* Methods */

        private Gtk.Dialog BuildDialog()
        {
            Gtk.Dialog dialog = new Gtk.Dialog(Catalog.GetString("Shift Timings"), Base.Ui.Window, DialogFlags.DestroyWithParent,
                                               Util.GetStockLabel("gtk-close"), ResponseType.Cancel, Catalog.GetString("Apply"), ResponseType.Ok);

            dialog.DefaultResponse = ResponseType.Ok;
            dialog.DefaultWidth    = 1;  //Needed otherwise the tip label will be displayed in a single line making the dialog have a huge width

            Box box = new Box(Orientation.Vertical, WidgetStyles.BoxSpacingLarge);

            box.BorderWidth = WidgetStyles.BorderWidthMedium;


            //Timing Mode frame

            spinButton            = new SpinButton(new Adjustment(0, 0, 0, 1, 10, 0), 0, 0);
            spinButton.WidthChars = Core.Util.SpinButtonTimeWidthChars;
            spinButton.Alignment  = 0.5f;
            Button clearButton = new Button(Catalog.GetString("Reset"));

            clearButton.Clicked    += OnClear;
            videoButton             = new Button(Catalog.GetString("Set From Video"));
            videoButton.TooltipText = Catalog.GetString("Sets the shift amount in order for the selected subtitles to start at the current video position.");
            videoButton.Clicked    += OnSetFromVideo;

            Box timingModeHBox = new Box(Orientation.Horizontal, WidgetStyles.BoxSpacingMedium);

            timingModeHBox.MarginLeft = WidgetStyles.FrameContentSpacingMedium;
            timingModeHBox.Add(spinButton);
            timingModeHBox.Add(clearButton);
            timingModeHBox.Add(videoButton);

            Frame timingModeFrame = Util.CreateFrameWithContent(Catalog.GetString("Amount"), timingModeHBox);

            box.Add(timingModeFrame);


            //Apply To frame

            allSubtitlesRadioButton                 = new RadioButton(DialogStrings.ApplyToAllSubtitles);
            selectedSubtitlesRadioButton            = new RadioButton(allSubtitlesRadioButton, DialogStrings.ApplyToSelection);
            fromFirstSubtitleToSelectionRadioButton = new RadioButton(allSubtitlesRadioButton, DialogStrings.ApplyToFirstToSelection);
            fromSelectionToLastSubtitleRadioButton  = new RadioButton(allSubtitlesRadioButton, DialogStrings.ApplyToSelectionToLast);

            Box applyToFrameVBox = new Box(Orientation.Vertical, WidgetStyles.BoxSpacingMedium);

            applyToFrameVBox.MarginLeft = WidgetStyles.FrameContentSpacingMedium;
            applyToFrameVBox.Add(allSubtitlesRadioButton);
            applyToFrameVBox.Add(selectedSubtitlesRadioButton);
            applyToFrameVBox.Add(fromFirstSubtitleToSelectionRadioButton);
            applyToFrameVBox.Add(fromSelectionToLastSubtitleRadioButton);

            Frame applyToFrame = Util.CreateFrameWithContent(Catalog.GetString("Apply To"), applyToFrameVBox);

            box.Add(applyToFrame);


            //Tips label

            Label label = new Label("<small><i>" + Catalog.GetString("Tip: alternatively use Shift + Numpad Plus/Minus to shift timings directly from the main window.") + "</i></small>");

            label.UseMarkup = true;
            label.Wrap      = true;
            box.Add(label);

            dialog.ContentArea.Add(box);

            timingMode = Base.TimingMode;
            UpdateFromTimingMode();
            UpdateFromSelection();
            UpdateVideoButtonSensitivity();

            ConnectEventHandlers();

            dialog.ContentArea.ShowAll();

            return(dialog);
        }
예제 #30
0
	public static void SetSpinButtonTimingMode (SpinButton spinButton, TimingMode timingMode) {
		if (timingMode == TimingMode.Frames) {
			spinButton.Numeric = true;
			spinButton.Input -= OnTimeInput;
			spinButton.Output -= OnTimeOutput;
		}
		else {
			spinButton.Numeric = false;
			spinButton.Input += OnTimeInput;
			spinButton.Output += OnTimeOutput;
		}
	}
예제 #31
0
	/// <summary>Creates a new instance of the <see cref="FileProperties" /> class, given its properties.</summary>
	/// <param name="path">The file's path.</param>
	/// <param name="encoding">The file's character coding.</param>
	/// <param name="subtitleType">The file's subtitle type.</param>
	/// <param name="timingMode">The file's timing mode. This is more useful for the subtitle types that support both the time and frame modes.</param>
	public FileProperties (string path, Encoding encoding, SubtitleType subtitleType, TimingMode timingMode)
		: this(path, encoding, subtitleType, timingMode, NewlineType.Unknown) {
	}
예제 #32
0
        private void UpdatePositionLabel(TimingMode timingMode)
        {
            string mode = (timingMode == TimingMode.Times ? Catalog.GetString("Time") : Catalog.GetString("Frame"));

            positionLabel.Markup = "<b>" + mode + "</b>";
        }
예제 #33
0
	/// <summary>Creates a new instance of the <see cref="FileProperties" /> class, given its properties.</summary>
	/// <param name="path">The file's path.</param>
	/// <param name="encoding">The file's character coding.</param>
	/// <param name="timingMode">The file's timing mode. This is more useful for the subtitle types that support both the time and frame modes.</param>
	public FileProperties(string path, Encoding encoding, TimingMode timingMode)
		: this(path, encoding, SubtitleType.Unknown, timingMode) {
	}
예제 #34
0
 private void OnBaseTimingModeChanged(TimingMode timingMode)
 {
     Refresh();
 }
예제 #35
0
 public static void SetSpinButtonTimingMode(SpinButton spinButton, TimingMode timingMode)
 {
     SetSpinButtonTimingMode(spinButton, timingMode, 0);
 }