From 71367c8ff84ff9479b281e33491fb34a58285d4d Mon Sep 17 00:00:00 2001 From: Pedro Castro Date: Wed, 17 Nov 2010 22:44:49 +0000 Subject: [PATCH] Allow to set the input framerate when no document is loaded, as it may be used as a parameter when opening files --- src/Glade/MainWindow.glade | 28 ++++------- .../Core/Command/ChangeFrameRateCommand.cs | 4 +- src/GnomeSubtitles/Core/EventHandlers.cs | 8 ---- src/GnomeSubtitles/Ui/Menus.cs | 56 +++++++++++++++++----- 4 files changed, 55 insertions(+), 41 deletions(-) diff --git a/src/Glade/MainWindow.glade b/src/Glade/MainWindow.glade index 9bffa7a..b62086c 100644 --- a/src/Glade/MainWindow.glade +++ b/src/Glade/MainWindow.glade @@ -248,8 +248,8 @@ True True - + @@ -532,8 +532,8 @@ Find Ne_xt True - + @@ -543,8 +543,8 @@ Find Pre_vious True - + @@ -591,56 +591,46 @@ True - False 23.976 True True - True - False 24 True True timingsInputFrameRate23 - True - False 25 (PAL) True True True timingsInputFrameRate23 - True - False 29.97 (NTSC) True True timingsInputFrameRate23 - True - False 30 True True timingsInputFrameRate23 - @@ -803,8 +793,8 @@ True False - + True @@ -831,8 +821,8 @@ True False - + True @@ -850,8 +840,8 @@ True False - + True @@ -891,8 +881,8 @@ Seek _to Selection True - + @@ -902,8 +892,8 @@ Select Nearest Subtitle True - + @@ -912,8 +902,8 @@ Auto Select Subtitle True - + diff --git a/src/GnomeSubtitles/Core/Command/ChangeFrameRateCommand.cs b/src/GnomeSubtitles/Core/Command/ChangeFrameRateCommand.cs index f426443..3b815da 100644 --- a/src/GnomeSubtitles/Core/Command/ChangeFrameRateCommand.cs +++ b/src/GnomeSubtitles/Core/Command/ChangeFrameRateCommand.cs @@ -1,6 +1,6 @@ /* * This file is part of Gnome Subtitles. - * Copyright (C) 2006-2009 Pedro Castro + * Copyright (C) 2006-2010 Pedro Castro * * Gnome Subtitles is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -60,7 +60,7 @@ public class ChangeInputFrameRateCommand : ChangeFrameRateCommand { } protected override void UpdateMenuItem () { - Base.Ui.Menus.UpdateActiveInputFrameRateMenuItem(); + Base.Ui.Menus.UpdateActiveInputFrameRateMenuItem(true); } } diff --git a/src/GnomeSubtitles/Core/EventHandlers.cs b/src/GnomeSubtitles/Core/EventHandlers.cs index d428ea5..3da485f 100644 --- a/src/GnomeSubtitles/Core/EventHandlers.cs +++ b/src/GnomeSubtitles/Core/EventHandlers.cs @@ -205,14 +205,6 @@ public class EventHandlers { /* Timings Menu */ - public void OnTimingsInputFrameRate (object o, EventArgs args) { - RadioMenuItem menuItem = o as RadioMenuItem; - if (menuItem.Active) { - float frameRate = Menus.FrameRateFromMenuItem((menuItem.Child as Label).Text); - Base.CommandManager.Execute(new ChangeInputFrameRateCommand(frameRate)); - } - } - public void OnTimingsVideoFrameRate (object o, EventArgs args) { RadioMenuItem menuItem = o as RadioMenuItem; if (menuItem.Active) { diff --git a/src/GnomeSubtitles/Ui/Menus.cs b/src/GnomeSubtitles/Ui/Menus.cs index 3c8ed47..23623b7 100644 --- a/src/GnomeSubtitles/Ui/Menus.cs +++ b/src/GnomeSubtitles/Ui/Menus.cs @@ -54,9 +54,12 @@ public class Menus { SetSensitivity(WidgetNames.PasteButton, sensitivity); } - public void UpdateActiveInputFrameRateMenuItem () { + public void UpdateActiveInputFrameRateMenuItem (bool toggleHandlers) { float inputFrameRate = Base.Document.Subtitles.Properties.OriginalFrameRate; - SetCheckMenuItemActivity(InputFrameRateMenuItem(inputFrameRate), true, Base.Handlers.OnTimingsInputFrameRate); + if (toggleHandlers) + SetCheckMenuItemActivity(InputFrameRateMenuItem(inputFrameRate), true, OnTimingsInputFrameRateToggled); + else + SetCheckMenuItemActivity(InputFrameRateMenuItem(inputFrameRate), true); } public void UpdateActiveVideoFrameRateMenuItem () { @@ -218,18 +221,27 @@ public class Menus { SetSensitivity(WidgetNames.ToolsAutocheckSpelling, sensitivity); } - private void SetFrameRateMenus () { - if (Base.TimingMode == TimingMode.Frames) { - SetMenuSensitivity(WidgetNames.TimingsInputFrameRateMenu, true); - SetMenuSensitivity(WidgetNames.TimingsVideoFrameRateMenu, true); + private void SetFrameRateMenus (bool documentLoaded) { + if (documentLoaded) { + if (Base.TimingMode == TimingMode.Frames) { + UpdateActiveInputFrameRateMenuItem(false); + SetMenuSensitivity(WidgetNames.TimingsInputFrameRateMenu, true); + SetInputFrameRateMenuHandlers(true); + + SetMenuSensitivity(WidgetNames.TimingsVideoFrameRateMenu, true); + UpdateActiveVideoFrameRateMenuItem(); + } + else { + UpdateActiveInputFrameRateMenuItem(false); + SetMenuSensitivity(WidgetNames.TimingsInputFrameRateMenu, false); + + SetMenuSensitivity(WidgetNames.TimingsVideoFrameRateMenu, true); + UpdateActiveVideoFrameRateMenuItem(); + } } else { - SetMenuSensitivity(WidgetNames.TimingsInputFrameRateMenu, false); - SetMenuSensitivity(WidgetNames.TimingsVideoFrameRateMenu, true); + SetInputFrameRateMenuHandlers(false); } - - UpdateActiveInputFrameRateMenuItem(); - UpdateActiveVideoFrameRateMenuItem(); } private void SetStylesActivity (bool bold, bool italic, bool underline) { @@ -471,13 +483,14 @@ public class Menus { private void OnBaseDocumentLoaded (Document document) { SetDocumentSensitivity(true); - SetFrameRateMenus(); + SetFrameRateMenus(true); SetActiveTimingMode(Base.TimingMode); SetCheckMenuItemActivity(WidgetNames.ToolsAutocheckSpelling, Base.SpellLanguages.Enabled); } private void OnBaseDocumentUnloaded (Document document) { SetDocumentSensitivity(false); + SetFrameRateMenus(false); } private void OnBaseVideoLoaded (Uri videoUri) { @@ -562,6 +575,25 @@ public class Menus { private void OnCommandManagerCommandActivated (object o, CommandActivatedArgs args) { UpdateUndoRedoMessages(); } + + + private void OnTimingsInputFrameRateToggled (object o, EventArgs args) { + RadioMenuItem menuItem = o as RadioMenuItem; + if (menuItem.Active) { + float frameRate = Menus.FrameRateFromMenuItem((menuItem.Child as Label).Text); + Base.CommandManager.Execute(new ChangeInputFrameRateCommand(frameRate)); + } + } + + private void SetInputFrameRateMenuHandlers (bool activate) { + Menu menu = Base.GetWidget(WidgetNames.TimingsInputFrameRateMenu) as Menu; + foreach (RadioMenuItem menuItem in menu.Children) { + if (activate) + menuItem.Toggled += OnTimingsInputFrameRateToggled; + else + menuItem.Toggled -= OnTimingsInputFrameRateToggled; + } + } } -- 2.11.4.GIT