Make everything final that can be

Apparently gcc does use final for devirtualization.
This commit is contained in:
Thomas Goyne 2014-03-12 18:39:07 -07:00
parent ab39cfe362
commit ea96c6e2ad
159 changed files with 412 additions and 412 deletions

View File

@ -38,7 +38,7 @@ namespace {
};
template<class T>
struct CastVisitor : public CastVisitorBase {
struct CastVisitor final : public CastVisitorBase {
T *element;
CastVisitor() : element(0) { }
void Visit(T& ele) { element = &ele; }
@ -64,7 +64,7 @@ public:
template <typename ElementTypeT>
class UnknownElement::Imp_T : public UnknownElement::Imp
class UnknownElement::Imp_T final : public UnknownElement::Imp
{
public:
Imp_T(const ElementTypeT& element) : m_Element(element) { }

View File

@ -35,7 +35,7 @@
namespace {
using namespace agi::charset;
class UCDetect : public nsUniversalDetector {
class UCDetect final : public nsUniversalDetector {
/// List of detected character sets
CharsetListDetected list;

View File

@ -25,7 +25,7 @@ namespace agi { namespace charset {
///
/// While glibc iconv supports ISO-6937-2, GNU libiconv does not due to that
/// it's not used by anything but old subtitle formats
class Converter6937 : public Converter {
class Converter6937 final : public Converter {
/// Converter to UCS-4 so that we only have to deal with unicode codepoints
std::unique_ptr<IconvWrapper> to_ucs4;

View File

@ -135,7 +135,7 @@ namespace {
}
#ifdef ICONV_POSIX
class ConverterImpl : public agi::charset::Converter {
class ConverterImpl final : public agi::charset::Converter {
size_t bomSize;
iconv_t cd;
public:
@ -175,7 +175,7 @@ namespace {
#else
class ConverterImpl : public iconv_fallbacks, public agi::charset::Converter {
class ConverterImpl final : public iconv_fallbacks, public agi::charset::Converter {
size_t bomSize;
char invalidRep[8];
size_t invalidRepSize;

View File

@ -32,19 +32,19 @@ namespace {
std::function<void (agi::dispatch::Thunk)> invoke_main;
std::atomic<uint_fast32_t> threads_running;
class MainQueue : public agi::dispatch::Queue {
class MainQueue final : public agi::dispatch::Queue {
void DoInvoke(agi::dispatch::Thunk thunk) override {
invoke_main(thunk);
}
};
class BackgroundQueue : public agi::dispatch::Queue {
class BackgroundQueue final : public agi::dispatch::Queue {
void DoInvoke(agi::dispatch::Thunk thunk) override {
service->post(thunk);
}
};
class SerialQueue : public agi::dispatch::Queue {
class SerialQueue final : public agi::dispatch::Queue {
boost::asio::io_service::strand strand;
void DoInvoke(agi::dispatch::Thunk thunk) override {

View File

@ -31,7 +31,7 @@ DEFINE_SIMPLE_EXCEPTION_NOINNER(OptionJsonValueArray, OptionJsonValueError, "opt
DEFINE_SIMPLE_EXCEPTION_NOINNER(OptionJsonValueSingle, OptionJsonValueError, "options/value")
DEFINE_SIMPLE_EXCEPTION_NOINNER(OptionJsonValueNull, OptionJsonValueError, "options/value")
class ConfigVisitor : public json::ConstVisitor {
class ConfigVisitor final : public json::ConstVisitor {
/// Option map being populated
OptionValueMap &values;
/// Option name prefix to add to read names

View File

@ -109,7 +109,7 @@ struct color_grammar : qi::grammar<Iterator, agi::Color()> {
};
template <typename Lexer>
struct dialogue_tokens : lex::lexer<Lexer> {
struct dialogue_tokens final : lex::lexer<Lexer> {
int paren_depth;
template<typename KT>

View File

@ -29,7 +29,7 @@ public:
// thrown during the first phase of reading. generally catches low-level
// problems such as errant characters or corrupt/incomplete documents
class ScanException : public Exception {
class ScanException final : public Exception {
public:
ScanException(std::string const& sMessage, Reader::Location locError)
: Exception(sMessage)
@ -41,7 +41,7 @@ public:
// thrown during the second phase of reading. generally catches
// higher-level problems such as missing commas or brackets
class ParseException : public Exception {
class ParseException final : public Exception {
public:
ParseException(std::string const& sMessage, Reader::Location locTokenBegin, Reader::Location locTokenEnd)
: Exception(sMessage)

View File

@ -15,7 +15,7 @@ Author: Terry Caton
namespace json {
class Writer : private ConstVisitor {
class Writer final : private ConstVisitor {
Writer(std::ostream& ostr);
void Write(const Object& object);
void Write(const Array& array);

View File

@ -32,7 +32,7 @@ namespace agi {
/// @class line_iterator
/// @brief An iterator over lines in a stream
template<class OutputType = std::string>
class line_iterator : public std::iterator<std::input_iterator_tag, OutputType> {
class line_iterator final : public std::iterator<std::input_iterator_tag, OutputType> {
std::istream *stream; ///< Stream to iterator over
OutputType value; ///< Value to return when this is dereference
std::shared_ptr<agi::charset::IconvWrapper> conv;

View File

@ -120,7 +120,7 @@ public:
};
/// A simple emitter which writes the log to a file in json format
class JsonEmitter : public Emitter {
class JsonEmitter final : public Emitter {
std::unique_ptr<std::ostream> fp;
void WriteTime(const char *key);

View File

@ -39,7 +39,7 @@ DEFINE_SIMPLE_EXCEPTION_NOINNER(OptionErrorDuplicateKey, OptionError, "options/d
class OptionValue;
class OptionValueMap : public std::map<std::string, std::unique_ptr<OptionValue>> {
class OptionValueMap final : public std::map<std::string, std::unique_ptr<OptionValue>> {
private:
OptionValueMap(const OptionValueMap& x);
OptionValueMap& operator=(const OptionValueMap& x);

View File

@ -99,7 +99,7 @@ public:
};
#define CONFIG_OPTIONVALUE(type_name, type) \
class OptionValue##type_name : public OptionValue { \
class OptionValue##type_name final : public OptionValue { \
type value; \
type value_default; \
public: \
@ -121,7 +121,7 @@ CONFIG_OPTIONVALUE(Color, Color)
CONFIG_OPTIONVALUE(Bool, bool)
#define CONFIG_OPTIONVALUE_LIST(type_name, type) \
class OptionValueList##type_name : public OptionValue { \
class OptionValueList##type_name final : public OptionValue { \
std::vector<type> array; \
std::vector<type> array_default; \
std::string name; \

View File

@ -21,7 +21,7 @@
namespace agi {
template<typename T>
class owning_intrusive_list : private boost::intrusive::make_list<T, boost::intrusive::constant_time_size<false>>::type {
class owning_intrusive_list final : private boost::intrusive::make_list<T, boost::intrusive::constant_time_size<false>>::type {
typedef typename boost::intrusive::make_list<T, boost::intrusive::constant_time_size<false>>::type base;
public:
using base::back;

View File

@ -133,7 +133,7 @@ namespace detail {
/// @brief Templated common code for signals
template<class Slot>
class SignalBaseImpl : public SignalBase {
class SignalBaseImpl final : public SignalBase {
protected:
typedef boost::container::map<ConnectionToken*, Slot> SlotMap;
@ -187,7 +187,7 @@ namespace detail {
/// @param Arg1 Type of first argument to pass to slots
/// @param Arg2 Type of second argument to pass to slots
template<class Arg1 = void, class Arg2 = void>
class Signal : public detail::SignalBaseImpl<std::function<void (Arg1, Arg2)> > {
class Signal final : public detail::SignalBaseImpl<std::function<void (Arg1, Arg2)> > {
typedef detail::SignalBaseImpl<std::function<void (Arg1, Arg2)> > super;
using super::Blocked;
using super::slots;
@ -266,7 +266,7 @@ public:
/// @class Signal
/// @brief Zero-argument signal
template<>
class Signal<void> : public detail::SignalBaseImpl<std::function<void ()> > {
class Signal<void> final : public detail::SignalBaseImpl<std::function<void ()> > {
typedef detail::SignalBaseImpl<std::function<void ()> > super;
using super::Blocked;
using super::slots;

View File

@ -22,7 +22,7 @@
#include <vector>
/// @class AssAttachment
class AssAttachment : public AssEntry {
class AssAttachment final : public AssEntry {
/// ASS uuencoded entry data, including header.
boost::flyweight<std::string> entry_data;

View File

@ -83,20 +83,20 @@ public:
virtual std::string GetText() { return text; }
};
class AssDialogueBlockPlain : public AssDialogueBlock {
class AssDialogueBlockPlain final : public AssDialogueBlock {
public:
using AssDialogueBlock::text;
AssBlockType GetType() const override { return AssBlockType::PLAIN; }
AssDialogueBlockPlain(std::string const& text = std::string()) : AssDialogueBlock(text) { }
};
class AssDialogueBlockComment : public AssDialogueBlock {
class AssDialogueBlockComment final : public AssDialogueBlock {
public:
AssBlockType GetType() const override { return AssBlockType::COMMENT; }
AssDialogueBlockComment(std::string const& text = std::string()) : AssDialogueBlock("{" + text + "}") { }
};
class AssDialogueBlockDrawing : public AssDialogueBlock {
class AssDialogueBlockDrawing final : public AssDialogueBlock {
public:
using AssDialogueBlock::text;
int Scale;
@ -105,7 +105,7 @@ public:
AssDialogueBlockDrawing(std::string const& text, int scale) : AssDialogueBlock(text), Scale(scale) { }
};
class AssDialogueBlockOverride : public AssDialogueBlock {
class AssDialogueBlockOverride final : public AssDialogueBlock {
public:
AssDialogueBlockOverride(std::string const& text = std::string()) : AssDialogueBlock(text) { }
@ -150,7 +150,7 @@ struct AssDialogueBase {
boost::flyweight<std::string> Text;
};
class AssDialogue : public AssEntry, public AssDialogueBase, public AssEntryListHook {
class AssDialogue final : public AssEntry, public AssDialogueBase, public AssEntryListHook {
std::string GetData(bool ssa) const;
/// @brief Parse raw ASS data into everything else

View File

@ -18,7 +18,7 @@
#include <boost/algorithm/string/predicate.hpp>
class AssInfo : public AssEntry {
class AssInfo final : public AssEntry {
std::string key;
std::string value;

View File

@ -62,7 +62,7 @@ enum class VariableDataType {
};
/// A single parameter to an override tag
class AssOverrideParameter : boost::noncopyable {
class AssOverrideParameter final : boost::noncopyable {
std::string value;
mutable std::unique_ptr<AssDialogueBlockOverride> block;
VariableDataType type;
@ -87,7 +87,7 @@ public:
}
};
class AssOverrideTag : boost::noncopyable {
class AssOverrideTag final : boost::noncopyable {
bool valid;
public:

View File

@ -39,7 +39,7 @@
#include <array>
#include <wx/arrstr.h>
class AssStyle : public AssEntry, public AssEntryListHook {
class AssStyle final : public AssEntry, public AssEntryListHook {
std::string data;
public:

View File

@ -53,7 +53,7 @@ class wxSlider;
/// @class AudioBox
/// @brief Panel with audio playback and timing controls, also containing an AudioDisplay
class AudioBox : public wxSashWindow {
class AudioBox final : public wxSashWindow {
/// The controller controlling this audio box
AudioController *controller;

View File

@ -63,7 +63,7 @@ class TimeRange;
/// providers or players owned by a controller. If some operation that isn't
/// possible in the existing design is needed, the controller should be
/// extended in some way to allow it.
class AudioController : public wxEvtHandler {
class AudioController final : public wxEvtHandler {
/// Project context this controller belongs to
agi::Context *context;

View File

@ -108,7 +108,7 @@ public:
wxColour Selection() const { return focused ? sel_focused_colour : sel_colour; }
};
class AudioDisplayScrollbar : public AudioDisplayInteractionObject {
class AudioDisplayScrollbar final : public AudioDisplayInteractionObject {
static const int height = 15;
static const int min_width = 10;
@ -247,7 +247,7 @@ public:
const int AudioDisplayScrollbar::min_width;
class AudioDisplayTimeline : public AudioDisplayInteractionObject {
class AudioDisplayTimeline final : public AudioDisplayInteractionObject {
int duration; ///< Total duration in ms
double ms_per_pixel; ///< Milliseconds per pixel
int pixel_left; ///< Leftmost visible pixel (i.e. scroll position)
@ -460,7 +460,7 @@ public:
}
};
class AudioMarkerInteractionObject : public AudioDisplayInteractionObject {
class AudioMarkerInteractionObject final : public AudioDisplayInteractionObject {
// Object-pair being interacted with
std::vector<AudioMarker*> markers;
AudioTimingController *timing_controller;
@ -502,7 +502,7 @@ public:
int GetPosition() const { return markers.front()->GetPosition(); }
};
class AudioStyleRangeMerger : public AudioRenderingStyleRanges {
class AudioStyleRangeMerger final : public AudioRenderingStyleRanges {
typedef std::map<int, AudioRenderingStyle> style_map;
public:
typedef style_map::iterator iterator;

View File

@ -67,7 +67,7 @@ namespace agi { struct Context; }
/// actually updated until the line is committed (which if auto-commit timing
/// changes is on, will happen as soon as the user adjusts the timing of the
/// new syllable).
class AudioKaraoke : public wxWindow {
class AudioKaraoke final : public wxWindow {
agi::Context *c; ///< Project context
agi::signal::Connection file_changed; ///< File changed slot
agi::signal::Connection audio_opened; ///< Audio opened connection

View File

@ -32,7 +32,7 @@
#include <algorithm>
class AudioMarkerKeyframe : public AudioMarker {
class AudioMarkerKeyframe final : public AudioMarker {
Pen *style;
int position;
public:
@ -86,7 +86,7 @@ void AudioMarkerProviderKeyframes::GetMarkers(TimeRange const& range, AudioMarke
out.push_back(&*a);
}
class VideoPositionMarker : public AudioMarker {
class VideoPositionMarker final : public AudioMarker {
Pen style;
int position;

View File

@ -122,7 +122,7 @@ public:
/// Marker provider for video keyframes
class AudioMarkerProviderKeyframes : public AudioMarkerProvider {
class AudioMarkerProviderKeyframes final : public AudioMarkerProvider {
/// Video controller to get keyframes from
VideoContext *vc;
@ -155,7 +155,7 @@ public:
};
/// Marker provider for the current video playback position
class VideoPositionMarkerProvider : public AudioMarkerProvider {
class VideoPositionMarkerProvider final : public AudioMarkerProvider {
VideoContext *vc;
std::unique_ptr<VideoPositionMarker> marker;
@ -174,8 +174,8 @@ public:
};
/// Marker provider for lines every second
class SecondsMarkerProvider : public AudioMarkerProvider {
struct Marker : public AudioMarker {
class SecondsMarkerProvider final : public AudioMarkerProvider {
struct Marker final : public AudioMarker {
Pen *style;
int position;

View File

@ -40,7 +40,7 @@
struct PlaybackState;
class AlsaPlayer : public AudioPlayer {
class AlsaPlayer final : public AudioPlayer {
std::unique_ptr<PlaybackState> ps;
pthread_t thread;

View File

@ -43,7 +43,7 @@
class DirectSoundPlayer;
class DirectSoundPlayerThread : public wxThread {
class DirectSoundPlayerThread final : public wxThread {
DirectSoundPlayer *parent;
HANDLE stopnotify;
@ -55,7 +55,7 @@ public:
wxThread::ExitCode Entry();
};
class DirectSoundPlayer : public AudioPlayer {
class DirectSoundPlayer final : public AudioPlayer {
friend class DirectSoundPlayerThread;
volatile bool playing;

View File

@ -117,7 +117,7 @@ struct COMObjectRetainer {
};
/// @brief RAII wrapper around Win32 HANDLE type
struct Win32KernelHandle : public agi::scoped_holder<HANDLE, BOOL (__stdcall *)(HANDLE)> {
struct Win32KernelHandle final : public agi::scoped_holder<HANDLE, BOOL (__stdcall *)(HANDLE)> {
/// @brief Create with a managed handle
/// @param handle Win32 handle to manage
Win32KernelHandle(HANDLE handle = 0)

View File

@ -44,7 +44,7 @@ class DirectSoundPlayer2Thread;
/// The core design idea is to have a playback thread that owns the DirectSound COM objects
/// and performs all playback operations, and use the player object as a proxy to
/// send commands to the playback thread.
class DirectSoundPlayer2 : public AudioPlayer {
class DirectSoundPlayer2 final : public AudioPlayer {
/// The playback thread
std::unique_ptr<DirectSoundPlayer2Thread> thread;

View File

@ -51,7 +51,7 @@
#include <wx/timer.h>
class OpenALPlayer : public AudioPlayer, wxTimer {
class OpenALPlayer final : public AudioPlayer, wxTimer {
/// Number of OpenAL buffers to use
static const ALsizei num_buffers = 8;

View File

@ -52,7 +52,7 @@ class AudioProvider;
class OSSPlayer;
/// Worker thread to asynchronously write audio data to the output device
class OSSPlayerThread : public wxThread {
class OSSPlayerThread final : public wxThread {
/// Parent player
OSSPlayer *parent;
@ -65,7 +65,7 @@ public:
wxThread::ExitCode Entry();
};
class OSSPlayer : public AudioPlayer {
class OSSPlayer final : public AudioPlayer {
friend class OSSPlayerThread;
/// sample rate of audio

View File

@ -49,7 +49,7 @@ class wxArrayString;
/// @class PortAudioPlayer
/// @brief PortAudio Player
///
class PortAudioPlayer : public AudioPlayer {
class PortAudioPlayer final : public AudioPlayer {
typedef std::vector<PaDeviceIndex> DeviceVec;
/// Map of supported output devices from name -> device index
std::map<std::string, DeviceVec> devices;

View File

@ -39,7 +39,7 @@
class PulseAudioPlayer;
class PulseAudioPlayer : public AudioPlayer {
class PulseAudioPlayer final : public AudioPlayer {
float volume = 1.f;
bool is_playing = false;

View File

@ -38,7 +38,7 @@
#include "avisynth.h"
#include "avisynth_wrap.h"
class AvisynthAudioProvider : public AudioProvider {
class AvisynthAudioProvider final : public AudioProvider {
AviSynthWrapper avs_wrapper;
PClip clip;

View File

@ -33,7 +33,7 @@
/// Anything integral -> 16 bit signed machine-endian audio converter
template<class Target>
class BitdepthConvertAudioProvider : public AudioProviderWrapper {
class BitdepthConvertAudioProvider final : public AudioProviderWrapper {
int src_bytes_per_sample;
public:
BitdepthConvertAudioProvider(std::unique_ptr<AudioProvider> src) : AudioProviderWrapper(std::move(src)) {
@ -74,7 +74,7 @@ public:
/// Floating point -> 16 bit signed machine-endian audio converter
template<class Source, class Target>
class FloatConvertAudioProvider : public AudioProviderWrapper {
class FloatConvertAudioProvider final : public AudioProviderWrapper {
public:
FloatConvertAudioProvider(std::unique_ptr<AudioProvider> src) : AudioProviderWrapper(std::move(src)) {
bytes_per_sample = sizeof(Target);
@ -105,7 +105,7 @@ public:
};
/// Non-mono 16-bit signed machine-endian -> mono 16-bit signed machine endian converter
class DownmixAudioProvider : public AudioProviderWrapper {
class DownmixAudioProvider final : public AudioProviderWrapper {
int src_channels;
public:
DownmixAudioProvider(std::unique_ptr<AudioProvider> src) : AudioProviderWrapper(std::move(src)) {
@ -136,7 +136,7 @@ public:
/// Sample doubler with linear interpolation for the agi::util::make_unique<samples>
/// Requires 16-bit mono input
class SampleDoublingAudioProvider : public AudioProviderWrapper {
class SampleDoublingAudioProvider final : public AudioProviderWrapper {
public:
SampleDoublingAudioProvider(std::unique_ptr<AudioProvider> src) : AudioProviderWrapper(std::move(src)) {
if (source->GetBytesPerSample() != 2)

View File

@ -34,7 +34,7 @@
#include "include/aegisub/audio_provider.h"
class DummyAudioProvider : public AudioProvider {
class DummyAudioProvider final : public AudioProvider {
bool noise;
void FillBuffer(void *buf, int64_t start, int64_t count) const override;

View File

@ -39,7 +39,7 @@
/// @class FFmpegSourceAudioProvider
/// @brief Implements audio loading with the FFMS library.
class FFmpegSourceAudioProvider : public AudioProvider, FFmpegSourceProvider {
class FFmpegSourceAudioProvider final : public AudioProvider, FFmpegSourceProvider {
/// audio source object
agi::scoped_holder<FFMS_AudioSource*, void (FFMS_CC *)(FFMS_AudioSource*)> AudioSource;

View File

@ -71,7 +71,7 @@ agi::fs::path cache_path() {
}
/// A PCM audio provider for raw dumps with no header
class RawAudioProvider : public PCMAudioProvider {
class RawAudioProvider final : public PCMAudioProvider {
public:
RawAudioProvider(agi::fs::path const& cache_filename, AudioProvider *src)
: PCMAudioProvider(cache_filename)

View File

@ -39,7 +39,7 @@ namespace agi {
class ProgressSink;
}
class HDAudioProvider : public AudioProviderWrapper {
class HDAudioProvider final : public AudioProviderWrapper {
/// Name of the file which the decoded audio is written to
agi::fs::path diskCacheFilename;
/// Audio provider which reads from the decoded cache

View File

@ -21,7 +21,7 @@
#include <memory>
#include <mutex>
class LockAudioProvider : public AudioProviderWrapper {
class LockAudioProvider final : public AudioProviderWrapper {
mutable std::mutex mutex;
void FillBuffer(void *buf, int64_t start, int64_t count) const override;

View File

@ -351,7 +351,7 @@ static const uint8_t w64Guiddata[16] = {
/// @brief Sony Wave64 audio provider
///
/// http://www.vcs.de/fileadmin/user_upload/MBS/PDF/Whitepaper/Informations_about_Sony_Wave64.pdf
class Wave64AudioProvider : public PCMAudioProvider {
class Wave64AudioProvider final : public PCMAudioProvider {
// Here's some copy-paste from the FFmpegSource2 code
/// http://msdn.microsoft.com/en-us/library/dd757720(VS.85).aspx

View File

@ -42,7 +42,7 @@ namespace agi {
class ProgressSink;
}
class RAMAudioProvider : public AudioProviderWrapper {
class RAMAudioProvider final : public AudioProviderWrapper {
#ifdef _MSC_VER
boost::container::stable_vector<char[1 << 22]> blockcache;
#else

View File

@ -52,7 +52,7 @@ struct AudioSpectrumCacheBlockFactory;
///
/// Renders frequency-power spectrum graphs of PCM audio data using a derivation function
/// such as the fast fourier transform.
class AudioSpectrumRenderer : public AudioRendererBitmapProvider {
class AudioSpectrumRenderer final : public AudioRendererBitmapProvider {
friend struct AudioSpectrumCacheBlockFactory;
/// Internal cache management for the spectrum

View File

@ -40,7 +40,7 @@ class AudioColorScheme;
#include "audio_renderer.h"
class AudioWaveformRenderer : public AudioRendererBitmapProvider {
class AudioWaveformRenderer final : public AudioRendererBitmapProvider {
/// Colour tables used for rendering
std::vector<AudioColorScheme> colors;

View File

@ -54,7 +54,7 @@ class TimeableLine;
///
/// Audio marker intended to live in pairs of two, taking styles depending
/// on which marker in the pair is to the left and which is to the right.
class DialogueTimingMarker : public AudioMarker {
class DialogueTimingMarker final : public AudioMarker {
/// Current ms position of this marker
int position;
@ -285,7 +285,7 @@ void DialogueTimingMarker::SetPosition(int new_position) {
/// addition, any markers for inactive lines that start/end at the same time
/// as the active line starts/ends can optionally be dragged along with the
/// active line's markers, updating those lines as well.
class AudioTimingControllerDialogue : public AudioTimingController {
class AudioTimingControllerDialogue final : public AudioTimingController {
/// The rendering style for the active line's start marker
Pen style_left;
/// The rendering style for the active line's end marker

View File

@ -43,7 +43,7 @@
/// @class KaraokeMarker
/// @brief AudioMarker implementation for AudioTimingControllerKaraoke
class KaraokeMarker : public AudioMarker {
class KaraokeMarker final : public AudioMarker {
int position;
Pen *pen;
FeetStyle style;
@ -81,7 +81,7 @@ public:
///
/// This does not support \kt, as it inherently requires that the end time of
/// one syllable be the same as the start time of the next one.
class AudioTimingControllerKaraoke : public AudioTimingController {
class AudioTimingControllerKaraoke final : public AudioTimingController {
std::deque<agi::signal::Connection> slots;
agi::signal::Connection& file_changed_slot;

View File

@ -123,7 +123,7 @@ namespace Automation4 {
/// A wrapper around agi::ProgressSink which adds the ability to open
/// dialogs on the GUI thread
class ProgressSink : public agi::ProgressSink {
class ProgressSink final : public agi::ProgressSink {
agi::ProgressSink *impl;
BackgroundScriptRunner *bsr;
int trace_level;
@ -218,7 +218,7 @@ namespace Automation4 {
};
/// Manager for scripts specified by a subtitle file
class LocalScriptManager : public ScriptManager {
class LocalScriptManager final : public ScriptManager {
std::deque<agi::signal::Connection> slots;
agi::Context *context;
@ -229,7 +229,7 @@ namespace Automation4 {
};
/// Manager for scripts in the autoload directory
class AutoloadScriptManager : public ScriptManager {
class AutoloadScriptManager final : public ScriptManager {
std::string path;
public:
AutoloadScriptManager(std::string path);
@ -281,7 +281,7 @@ namespace Automation4 {
/// A script which represents a file not recognized by any registered
/// automation engines
class UnknownScript : public Script {
class UnknownScript final : public Script {
public:
UnknownScript(agi::fs::path const& filename) : Script(filename) { }

View File

@ -300,7 +300,7 @@ int luaopen_lpeg (lua_State *L);
namespace Automation4 {
int regex_init(lua_State *L);
class LuaScript : public Script {
class LuaScript final : public Script {
lua_State *L;
std::string name;

View File

@ -200,7 +200,7 @@ namespace Automation4 {
};
/// A lua-generated dialog or panel in the export options dialog
class LuaDialog : public ScriptDialog {
class LuaDialog final : public ScriptDialog {
/// Controls in this dialog
std::vector<std::unique_ptr<LuaDialogControl>> controls;
/// The names and IDs of buttons in this dialog if non-default ones were used
@ -250,7 +250,7 @@ namespace Automation4 {
/// @throws agi::UserCancelException if the function fails to run to completion (either due to cancelling or errors)
void LuaThreadedCall(lua_State *L, int nargs, int nresults, std::string const& title, wxWindow *parent, bool can_open_config);
class LuaCommand : public cmd::Command, private LuaFeature {
class LuaCommand final : public cmd::Command, private LuaFeature {
std::string cmd_name;
wxString display;
wxString help;
@ -274,7 +274,7 @@ namespace Automation4 {
static int LuaRegister(lua_State *L);
};
class LuaExportFilter : public ExportFilter, private LuaFeature {
class LuaExportFilter final : public ExportFilter, private LuaFeature {
bool has_config;
LuaDialog *config_dialog;

View File

@ -141,7 +141,7 @@ namespace Automation4 {
namespace LuaControl {
/// A static text label
class Label : public LuaDialogControl {
class Label final : public LuaDialogControl {
std::string label;
public:
Label(lua_State *L) : LuaDialogControl(L), label(get_field(L, "label")) { }
@ -193,7 +193,7 @@ namespace Automation4 {
};
/// A color-picker button
class Color : public LuaDialogControl {
class Color final : public LuaDialogControl {
agi::Color color;
bool alpha;
@ -221,7 +221,7 @@ namespace Automation4 {
};
/// A multiline text edit control
class Textbox : public Edit {
class Textbox final : public Edit {
public:
Textbox(lua_State *L) : Edit(L) { }
@ -236,7 +236,7 @@ namespace Automation4 {
/// Integer only edit
class IntEdit : public Edit {
class IntEdit final : public Edit {
wxSpinCtrl *cw;
int value;
int min, max;
@ -272,14 +272,14 @@ namespace Automation4 {
};
// Float only edit
class FloatEdit : public Edit {
class FloatEdit final : public Edit {
double value;
double min;
double max;
double step;
wxSpinCtrlDouble *scd;
struct DoubleValidator : public wxValidator {
struct DoubleValidator final : public wxValidator {
double *value;
DoubleValidator(double *value) : value(value) { }
wxValidator *Clone() const override { return new DoubleValidator(value); }
@ -341,7 +341,7 @@ namespace Automation4 {
};
/// A dropdown list
class Dropdown : public LuaDialogControl {
class Dropdown final : public LuaDialogControl {
std::vector<std::string> items;
std::string value;
wxComboBox *cw;
@ -371,7 +371,7 @@ namespace Automation4 {
}
};
class Checkbox : public LuaDialogControl {
class Checkbox final : public LuaDialogControl {
std::string label;
bool value;
wxCheckBox *cw;

View File

@ -35,7 +35,7 @@
#include "auto4_base.h"
namespace Automation4 {
class LuaScriptFactory : public ScriptFactory {
class LuaScriptFactory final : public ScriptFactory {
std::unique_ptr<Script> Produce(agi::fs::path const& filename) const override;
public:
LuaScriptFactory();

View File

@ -49,7 +49,7 @@ namespace agi {
}
class AssDialogue;
class BaseGrid : public wxWindow, public SubtitleSelectionController {
class BaseGrid final : public wxWindow, public SubtitleSelectionController {
int lineHeight = 1; ///< Height of a line in pixels in the current font
bool holding = false; ///< Is a drag selection in process?
wxFont font; ///< Current grid font

View File

@ -43,7 +43,7 @@ public:
agi::Color GetColor() { return colour; }
};
struct ColorValidator : public wxValidator {
struct ColorValidator final : public wxValidator {
agi::Color *color;
ColorValidator(agi::Color *color) : color(color) { }
wxValidator *Clone() const override { return new ColorValidator(color); }

View File

@ -57,7 +57,7 @@
namespace {
using cmd::Command;
struct app_about : public Command {
struct app_about final : public Command {
CMD_NAME("app/about")
CMD_ICON(about_menu)
STR_MENU("&About")
@ -69,7 +69,7 @@ struct app_about : public Command {
}
};
struct app_display_audio_subs : public Command {
struct app_display_audio_subs final : public Command {
CMD_NAME("app/display/audio_subs")
STR_MENU("&Audio+Subs View")
STR_DISP("Audio+Subs View")
@ -89,7 +89,7 @@ struct app_display_audio_subs : public Command {
}
};
struct app_display_full : public Command {
struct app_display_full final : public Command {
CMD_NAME("app/display/full")
STR_MENU("&Full view")
STR_DISP("Full view")
@ -109,7 +109,7 @@ struct app_display_full : public Command {
}
};
struct app_display_subs : public Command {
struct app_display_subs final : public Command {
CMD_NAME("app/display/subs")
STR_MENU("S&ubs Only View")
STR_DISP("Subs Only View")
@ -125,7 +125,7 @@ struct app_display_subs : public Command {
}
};
struct app_display_video_subs : public Command {
struct app_display_video_subs final : public Command {
CMD_NAME("app/display/video_subs")
STR_MENU("&Video+Subs View")
STR_DISP("Video+Subs View")
@ -145,7 +145,7 @@ struct app_display_video_subs : public Command {
}
};
struct app_exit : public Command {
struct app_exit final : public Command {
CMD_NAME("app/exit")
STR_MENU("E&xit")
STR_DISP("Exit")
@ -156,7 +156,7 @@ struct app_exit : public Command {
}
};
struct app_language : public Command {
struct app_language final : public Command {
CMD_NAME("app/language")
CMD_ICON(languages_menu)
STR_MENU("&Language...")
@ -181,7 +181,7 @@ struct app_language : public Command {
}
};
struct app_log : public Command {
struct app_log final : public Command {
CMD_NAME("app/log")
CMD_ICON(about_menu)
STR_MENU("&Log window")
@ -193,7 +193,7 @@ struct app_log : public Command {
}
};
struct app_new_window : public Command {
struct app_new_window final : public Command {
CMD_NAME("app/new_window")
CMD_ICON(new_window_menu)
STR_MENU("New &Window")
@ -205,7 +205,7 @@ struct app_new_window : public Command {
}
};
struct app_options : public Command {
struct app_options final : public Command {
CMD_NAME("app/options")
CMD_ICON(options_button)
STR_MENU("&Options...")
@ -221,7 +221,7 @@ struct app_options : public Command {
}
};
struct app_toggle_global_hotkeys : public Command {
struct app_toggle_global_hotkeys final : public Command {
CMD_NAME("app/toggle/global_hotkeys")
CMD_ICON(toggle_audio_medusa)
STR_MENU("Toggle global hotkey overrides")
@ -239,7 +239,7 @@ struct app_toggle_global_hotkeys : public Command {
}
};
struct app_toggle_toolbar : public Command {
struct app_toggle_toolbar final : public Command {
CMD_NAME("app/toggle/toolbar")
STR_HELP("Toggle the main toolbar")
CMD_TYPE(COMMAND_DYNAMIC_NAME)
@ -260,7 +260,7 @@ struct app_toggle_toolbar : public Command {
}
};
struct app_updates : public Command {
struct app_updates final : public Command {
CMD_NAME("app/updates")
STR_MENU("&Check for Updates...")
STR_DISP("Check for Updates")

View File

@ -60,7 +60,7 @@ namespace {
}
};
struct audio_close : public validate_audio_open {
struct audio_close final : public validate_audio_open {
CMD_NAME("audio/close")
CMD_ICON(close_audio_menu)
STR_MENU("&Close Audio")
@ -72,7 +72,7 @@ struct audio_close : public validate_audio_open {
}
};
struct audio_open : public Command {
struct audio_open final : public Command {
CMD_NAME("audio/open")
CMD_ICON(open_audio_menu)
STR_MENU("&Open Audio File...")
@ -96,7 +96,7 @@ struct audio_open : public Command {
}
};
struct audio_open_blank : public Command {
struct audio_open_blank final : public Command {
CMD_NAME("audio/open/blank")
STR_MENU("Open 2h30 Blank Audio")
STR_DISP("Open 2h30 Blank Audio")
@ -112,7 +112,7 @@ struct audio_open_blank : public Command {
}
};
struct audio_open_noise : public Command {
struct audio_open_noise final : public Command {
CMD_NAME("audio/open/noise")
STR_MENU("Open 2h30 Noise Audio")
STR_DISP("Open 2h30 Noise Audio")
@ -128,7 +128,7 @@ struct audio_open_noise : public Command {
}
};
struct audio_open_video : public Command {
struct audio_open_video final : public Command {
CMD_NAME("audio/open/video")
CMD_ICON(open_audio_from_video_menu)
STR_MENU("Open Audio from &Video")
@ -151,7 +151,7 @@ struct audio_open_video : public Command {
}
};
struct audio_view_spectrum : public Command {
struct audio_view_spectrum final : public Command {
CMD_NAME("audio/view/spectrum")
STR_MENU("&Spectrum Display")
STR_DISP("Spectrum Display")
@ -167,7 +167,7 @@ struct audio_view_spectrum : public Command {
}
};
struct audio_view_waveform : public Command {
struct audio_view_waveform final : public Command {
CMD_NAME("audio/view/waveform")
STR_MENU("&Waveform Display")
STR_DISP("Waveform Display")
@ -183,7 +183,7 @@ struct audio_view_waveform : public Command {
}
};
struct audio_save_clip : public Command {
struct audio_save_clip final : public Command {
CMD_NAME("audio/save/clip")
STR_MENU("Create audio clip")
STR_DISP("Create audio clip")
@ -210,7 +210,7 @@ struct audio_save_clip : public Command {
}
};
struct audio_play_current_selection : public validate_audio_open {
struct audio_play_current_selection final : public validate_audio_open {
CMD_NAME("audio/play/current")
STR_MENU("Play current audio selection")
STR_DISP("Play current audio selection")
@ -222,7 +222,7 @@ struct audio_play_current_selection : public validate_audio_open {
}
};
struct audio_play_current_line : public validate_audio_open {
struct audio_play_current_line final : public validate_audio_open {
CMD_NAME("audio/play/line")
CMD_ICON(button_playline)
STR_MENU("Play current line")
@ -237,7 +237,7 @@ struct audio_play_current_line : public validate_audio_open {
}
};
struct audio_play_selection : public validate_audio_open {
struct audio_play_selection final : public validate_audio_open {
CMD_NAME("audio/play/selection")
CMD_ICON(button_playsel)
STR_MENU("Play audio selection")
@ -250,7 +250,7 @@ struct audio_play_selection : public validate_audio_open {
}
};
struct audio_play_toggle : public validate_audio_open {
struct audio_play_toggle final : public validate_audio_open {
CMD_NAME("audio/play/toggle")
STR_MENU("Play audio selection or stop")
STR_DISP("Play audio selection or stop")
@ -266,7 +266,7 @@ struct audio_play_toggle : public validate_audio_open {
}
};
struct audio_stop : public Command {
struct audio_stop final : public Command {
CMD_NAME("audio/stop")
CMD_ICON(button_stop)
STR_MENU("Stop playing")
@ -284,7 +284,7 @@ struct audio_stop : public Command {
}
};
struct audio_play_before : public validate_audio_open {
struct audio_play_before final : public validate_audio_open {
CMD_NAME("audio/play/selection/before")
CMD_ICON(button_playfivehbefore)
STR_MENU("Play 500 ms before selection")
@ -298,7 +298,7 @@ struct audio_play_before : public validate_audio_open {
}
};
struct audio_play_after : public validate_audio_open {
struct audio_play_after final : public validate_audio_open {
CMD_NAME("audio/play/selection/after")
CMD_ICON(button_playfivehafter)
STR_MENU("Play 500 ms after selection")
@ -312,7 +312,7 @@ struct audio_play_after : public validate_audio_open {
}
};
struct audio_play_end : public validate_audio_open {
struct audio_play_end final : public validate_audio_open {
CMD_NAME("audio/play/selection/end")
CMD_ICON(button_playlastfiveh)
STR_MENU("Play last 500 ms of selection")
@ -326,7 +326,7 @@ struct audio_play_end : public validate_audio_open {
}
};
struct audio_play_begin : public validate_audio_open {
struct audio_play_begin final : public validate_audio_open {
CMD_NAME("audio/play/selection/begin")
CMD_ICON(button_playfirstfiveh)
STR_MENU("Play first 500 ms of selection")
@ -342,7 +342,7 @@ struct audio_play_begin : public validate_audio_open {
}
};
struct audio_play_to_end : public validate_audio_open {
struct audio_play_to_end final : public validate_audio_open {
CMD_NAME("audio/play/to_end")
CMD_ICON(button_playtoend)
STR_MENU("Play from selection start to end of file")
@ -355,7 +355,7 @@ struct audio_play_to_end : public validate_audio_open {
}
};
struct audio_commit : public validate_audio_open {
struct audio_commit final : public validate_audio_open {
CMD_NAME("audio/commit")
CMD_ICON(button_audio_commit)
STR_MENU("Commit")
@ -372,7 +372,7 @@ struct audio_commit : public validate_audio_open {
}
};
struct audio_commit_default : public validate_audio_open {
struct audio_commit_default final : public validate_audio_open {
CMD_NAME("audio/commit/default")
STR_MENU("Commit and use default timing for next line")
STR_DISP("Commit and use default timing for next line")
@ -387,7 +387,7 @@ struct audio_commit_default : public validate_audio_open {
}
};
struct audio_commit_next : public validate_audio_open {
struct audio_commit_next final : public validate_audio_open {
CMD_NAME("audio/commit/next")
STR_MENU("Commit and move to next line")
STR_DISP("Commit and move to next line")
@ -402,7 +402,7 @@ struct audio_commit_next : public validate_audio_open {
}
};
struct audio_commit_stay : public validate_audio_open {
struct audio_commit_stay final : public validate_audio_open {
CMD_NAME("audio/commit/stay")
STR_MENU("Commit and stay on current line")
STR_DISP("Commit and stay on current line")
@ -414,7 +414,7 @@ struct audio_commit_stay : public validate_audio_open {
}
};
struct audio_go_to : public validate_audio_open {
struct audio_go_to final : public validate_audio_open {
CMD_NAME("audio/go_to")
CMD_ICON(button_audio_goto)
STR_MENU("Go to selection")
@ -426,7 +426,7 @@ struct audio_go_to : public validate_audio_open {
}
};
struct audio_scroll_left : public validate_audio_open {
struct audio_scroll_left final : public validate_audio_open {
CMD_NAME("audio/scroll/left")
STR_MENU("Scroll left")
STR_DISP("Scroll left")
@ -437,7 +437,7 @@ struct audio_scroll_left : public validate_audio_open {
}
};
struct audio_scroll_right : public validate_audio_open {
struct audio_scroll_right final : public validate_audio_open {
CMD_NAME("audio/scroll/right")
STR_MENU("Scroll right")
STR_DISP("Scroll right")
@ -452,7 +452,7 @@ static inline void toggle(const char *opt) {
OPT_SET(opt)->SetBool(!OPT_GET(opt)->GetBool());
}
struct audio_autoscroll : public Command {
struct audio_autoscroll final : public Command {
CMD_NAME("audio/opt/autoscroll")
CMD_ICON(toggle_audio_autoscroll)
STR_MENU("Auto scroll audio display to selected line")
@ -469,7 +469,7 @@ struct audio_autoscroll : public Command {
}
};
struct audio_autocommit : public Command {
struct audio_autocommit final : public Command {
CMD_NAME("audio/opt/autocommit")
CMD_ICON(toggle_audio_autocommit)
STR_MENU("Automatically commit all changes")
@ -486,7 +486,7 @@ struct audio_autocommit : public Command {
}
};
struct audio_autonext : public Command {
struct audio_autonext final : public Command {
CMD_NAME("audio/opt/autonext")
CMD_ICON(toggle_audio_nextcommit)
STR_MENU("Auto go to next line on commit")
@ -503,7 +503,7 @@ struct audio_autonext : public Command {
}
};
struct audio_toggle_spectrum : public Command {
struct audio_toggle_spectrum final : public Command {
CMD_NAME("audio/opt/spectrum")
CMD_ICON(toggle_audio_spectrum)
STR_MENU("Spectrum analyzer mode")
@ -520,7 +520,7 @@ struct audio_toggle_spectrum : public Command {
}
};
struct audio_vertical_link : public Command {
struct audio_vertical_link final : public Command {
CMD_NAME("audio/opt/vertical_link")
CMD_ICON(toggle_audio_link)
STR_MENU("Link vertical zoom and volume sliders")
@ -537,7 +537,7 @@ struct audio_vertical_link : public Command {
}
};
struct audio_karaoke : public Command {
struct audio_karaoke final : public Command {
CMD_NAME("audio/karaoke")
CMD_ICON(kara_mode)
STR_MENU("Toggle karaoke mode")

View File

@ -49,7 +49,7 @@
namespace {
using cmd::Command;
struct reload_all : public Command {
struct reload_all final : public Command {
CMD_NAME("am/reload")
STR_MENU("&Reload Automation scripts")
STR_DISP("Reload Automation scripts")
@ -62,7 +62,7 @@ struct reload_all : public Command {
}
};
struct reload_autoload : public Command {
struct reload_autoload final : public Command {
CMD_NAME("am/reload/autoload")
STR_MENU("R&eload autoload Automation scripts")
STR_DISP("Reload autoload Automation scripts")
@ -74,7 +74,7 @@ struct reload_autoload : public Command {
}
};
struct open_manager : public Command {
struct open_manager final : public Command {
CMD_NAME("am/manager")
CMD_ICON(automation_toolbutton)
STR_MENU("&Automation...")
@ -86,7 +86,7 @@ struct open_manager : public Command {
}
};
struct meta : public Command {
struct meta final : public Command {
CMD_NAME("am/meta")
CMD_ICON(automation_toolbutton)
STR_MENU("&Automation...")

View File

@ -43,7 +43,7 @@ namespace agi { struct Context; }
}
#define COMMAND_GROUP(cname, cmdname, menu, disp, help) \
struct cname : public Command { \
struct cname final : public Command { \
CMD_NAME(cmdname) \
STR_MENU(menu) \
STR_DISP(disp) \

View File

@ -331,7 +331,7 @@ void show_color_picker(const agi::Context *c, agi::Color (AssStyle::*field), con
}
}
struct edit_color_primary : public Command {
struct edit_color_primary final : public Command {
CMD_NAME("edit/color/primary")
CMD_ICON(button_color_one)
STR_MENU("Primary Color...")
@ -343,7 +343,7 @@ struct edit_color_primary : public Command {
}
};
struct edit_color_secondary : public Command {
struct edit_color_secondary final : public Command {
CMD_NAME("edit/color/secondary")
CMD_ICON(button_color_two)
STR_MENU("Secondary Color...")
@ -355,7 +355,7 @@ struct edit_color_secondary : public Command {
}
};
struct edit_color_outline : public Command {
struct edit_color_outline final : public Command {
CMD_NAME("edit/color/outline")
CMD_ICON(button_color_three)
STR_MENU("Outline Color...")
@ -367,7 +367,7 @@ struct edit_color_outline : public Command {
}
};
struct edit_color_shadow : public Command {
struct edit_color_shadow final : public Command {
CMD_NAME("edit/color/shadow")
CMD_ICON(button_color_four)
STR_MENU("Shadow Color...")
@ -379,7 +379,7 @@ struct edit_color_shadow : public Command {
}
};
struct edit_style_bold : public Command {
struct edit_style_bold final : public Command {
CMD_NAME("edit/style/bold")
CMD_ICON(button_bold)
STR_MENU("Toggle Bold")
@ -391,7 +391,7 @@ struct edit_style_bold : public Command {
}
};
struct edit_style_italic : public Command {
struct edit_style_italic final : public Command {
CMD_NAME("edit/style/italic")
CMD_ICON(button_italics)
STR_MENU("Toggle Italics")
@ -403,7 +403,7 @@ struct edit_style_italic : public Command {
}
};
struct edit_style_underline : public Command {
struct edit_style_underline final : public Command {
CMD_NAME("edit/style/underline")
CMD_ICON(button_underline)
STR_MENU("Toggle Underline")
@ -415,7 +415,7 @@ struct edit_style_underline : public Command {
}
};
struct edit_style_strikeout : public Command {
struct edit_style_strikeout final : public Command {
CMD_NAME("edit/style/strikeout")
CMD_ICON(button_strikeout)
STR_MENU("Toggle Strikeout")
@ -427,7 +427,7 @@ struct edit_style_strikeout : public Command {
}
};
struct edit_font : public Command {
struct edit_font final : public Command {
CMD_NAME("edit/font")
CMD_ICON(button_fontname)
STR_MENU("Font Face...")
@ -473,7 +473,7 @@ struct edit_font : public Command {
}
};
struct edit_find_replace : public Command {
struct edit_find_replace final : public Command {
CMD_NAME("edit/find_replace")
CMD_ICON(find_replace_menu)
STR_MENU("Find and R&eplace...")
@ -539,7 +539,7 @@ static void delete_lines(agi::Context *c, wxString const& commit_message) {
c->selectionController->SetSelectionAndActive({ new_active }, new_active);
}
struct edit_line_copy : public validate_sel_nonempty {
struct edit_line_copy final : public validate_sel_nonempty {
CMD_NAME("edit/line/copy")
CMD_ICON(copy_button)
STR_MENU("&Copy Lines")
@ -579,7 +579,7 @@ struct edit_line_cut: public validate_sel_nonempty {
}
};
struct edit_line_delete : public validate_sel_nonempty {
struct edit_line_delete final : public validate_sel_nonempty {
CMD_NAME("edit/line/delete")
CMD_ICON(delete_button)
STR_MENU("De&lete Lines")
@ -657,7 +657,7 @@ static void duplicate_lines(agi::Context *c, int shift) {
c->selectionController->SetSelectionAndActive(std::move(new_sel), new_active);
}
struct edit_line_duplicate : public validate_sel_nonempty {
struct edit_line_duplicate final : public validate_sel_nonempty {
CMD_NAME("edit/line/duplicate")
STR_MENU("&Duplicate Lines")
STR_DISP("Duplicate Lines")
@ -668,7 +668,7 @@ struct edit_line_duplicate : public validate_sel_nonempty {
}
};
struct edit_line_duplicate_shift : public validate_video_and_sel_nonempty {
struct edit_line_duplicate_shift final : public validate_video_and_sel_nonempty {
CMD_NAME("edit/line/split/after")
STR_MENU("Split lines after current frame")
STR_DISP("Split lines after current frame")
@ -680,7 +680,7 @@ struct edit_line_duplicate_shift : public validate_video_and_sel_nonempty {
}
};
struct edit_line_duplicate_shift_back : public validate_video_and_sel_nonempty {
struct edit_line_duplicate_shift_back final : public validate_video_and_sel_nonempty {
CMD_NAME("edit/line/split/before")
STR_MENU("Split lines before current frame")
STR_DISP("Split lines before current frame")
@ -724,7 +724,7 @@ static void combine_concat(AssDialogue *first, AssDialogue *second) {
static void combine_drop(AssDialogue *, AssDialogue *) { }
struct edit_line_join_as_karaoke : public validate_sel_multiple {
struct edit_line_join_as_karaoke final : public validate_sel_multiple {
CMD_NAME("edit/line/join/as_karaoke")
STR_MENU("As &Karaoke")
STR_DISP("As Karaoke")
@ -735,7 +735,7 @@ struct edit_line_join_as_karaoke : public validate_sel_multiple {
}
};
struct edit_line_join_concatenate : public validate_sel_multiple {
struct edit_line_join_concatenate final : public validate_sel_multiple {
CMD_NAME("edit/line/join/concatenate")
STR_MENU("&Concatenate")
STR_DISP("Concatenate")
@ -746,7 +746,7 @@ struct edit_line_join_concatenate : public validate_sel_multiple {
}
};
struct edit_line_join_keep_first : public validate_sel_multiple {
struct edit_line_join_keep_first final : public validate_sel_multiple {
CMD_NAME("edit/line/join/keep_first")
STR_MENU("Keep &First")
STR_DISP("Keep First")
@ -788,7 +788,7 @@ static bool try_paste_lines(agi::Context *c) {
return true;
}
struct edit_line_paste : public Command {
struct edit_line_paste final : public Command {
CMD_NAME("edit/line/paste")
CMD_ICON(paste_button)
STR_MENU("&Paste Lines")
@ -820,7 +820,7 @@ struct edit_line_paste : public Command {
}
};
struct edit_line_paste_over : public Command {
struct edit_line_paste_over final : public Command {
CMD_NAME("edit/line/paste/over")
STR_MENU("Paste Lines &Over...")
STR_DISP("Paste Lines Over")
@ -913,7 +913,7 @@ bool check_end(AssDialogue *d1, AssDialogue *d2) {
}
struct edit_line_recombine : public validate_sel_multiple {
struct edit_line_recombine final : public validate_sel_multiple {
CMD_NAME("edit/line/recombine")
STR_MENU("Recom&bine Lines")
STR_DISP("Recombine Lines")
@ -991,7 +991,7 @@ struct edit_line_recombine : public validate_sel_multiple {
}
};
struct edit_line_split_by_karaoke : public validate_sel_nonempty {
struct edit_line_split_by_karaoke final : public validate_sel_nonempty {
CMD_NAME("edit/line/split/by_karaoke")
STR_MENU("Split Lines (by karaoke)")
STR_DISP("Split Lines (by karaoke)")
@ -1019,7 +1019,7 @@ void split_lines(agi::Context *c, Func&& set_time) {
c->ass->Commit(_("split"), AssFile::COMMIT_DIAG_ADDREM | AssFile::COMMIT_DIAG_FULL);
}
struct edit_line_split_estimate : public validate_video_and_sel_nonempty {
struct edit_line_split_estimate final : public validate_video_and_sel_nonempty {
CMD_NAME("edit/line/split/estimate")
STR_MENU("Split at cursor (estimate times)")
STR_DISP("Split at cursor (estimate times)")
@ -1035,7 +1035,7 @@ struct edit_line_split_estimate : public validate_video_and_sel_nonempty {
}
};
struct edit_line_split_preserve : public validate_sel_nonempty {
struct edit_line_split_preserve final : public validate_sel_nonempty {
CMD_NAME("edit/line/split/preserve")
STR_MENU("Split at cursor (preserve times)")
STR_DISP("Split at cursor (preserve times)")
@ -1046,7 +1046,7 @@ struct edit_line_split_preserve : public validate_sel_nonempty {
}
};
struct edit_line_split_video : public validate_video_and_sel_nonempty {
struct edit_line_split_video final : public validate_video_and_sel_nonempty {
CMD_NAME("edit/line/split/video")
STR_MENU("Split at cursor (at video frame)")
STR_DISP("Split at cursor (at video frame)")
@ -1063,7 +1063,7 @@ struct edit_line_split_video : public validate_video_and_sel_nonempty {
}
};
struct edit_redo : public Command {
struct edit_redo final : public Command {
CMD_NAME("edit/redo")
CMD_ICON(redo_button)
STR_HELP("Redo last undone action")
@ -1089,7 +1089,7 @@ struct edit_redo : public Command {
}
};
struct edit_undo : public Command {
struct edit_undo final : public Command {
CMD_NAME("edit/undo")
CMD_ICON(undo_button)
STR_HELP("Undo last action")
@ -1115,7 +1115,7 @@ struct edit_undo : public Command {
}
};
struct edit_revert : public Command {
struct edit_revert final : public Command {
CMD_NAME("edit/revert")
STR_DISP("Revert")
STR_MENU("Revert")
@ -1128,7 +1128,7 @@ struct edit_revert : public Command {
}
};
struct edit_clear : public Command {
struct edit_clear final : public Command {
CMD_NAME("edit/clear")
STR_DISP("Clear")
STR_MENU("Clear")
@ -1142,7 +1142,7 @@ struct edit_clear : public Command {
};
std::string get_text(AssDialogueBlock &d) { return d.GetText(); }
struct edit_clear_text : public Command {
struct edit_clear_text final : public Command {
CMD_NAME("edit/clear/text")
STR_DISP("Clear Text")
STR_MENU("Clear Text")
@ -1159,7 +1159,7 @@ struct edit_clear_text : public Command {
}
};
struct edit_insert_original : public Command {
struct edit_insert_original final : public Command {
CMD_NAME("edit/insert_original")
STR_DISP("Insert Original")
STR_MENU("Insert Original")

View File

@ -48,7 +48,7 @@
namespace {
using cmd::Command;
struct grid_line_next : public Command {
struct grid_line_next final : public Command {
CMD_NAME("grid/line/next")
STR_MENU("Next Line")
STR_DISP("Next Line")
@ -59,7 +59,7 @@ struct grid_line_next : public Command {
}
};
struct grid_line_next_create : public Command {
struct grid_line_next_create final : public Command {
CMD_NAME("grid/line/next/create")
CMD_ICON(button_audio_commit)
STR_MENU("Next Line")
@ -87,7 +87,7 @@ struct grid_line_next_create : public Command {
}
};
struct grid_line_prev : public Command {
struct grid_line_prev final : public Command {
CMD_NAME("grid/line/prev")
STR_MENU("Previous Line")
STR_DISP("Previous Line")
@ -98,7 +98,7 @@ struct grid_line_prev : public Command {
}
};
struct grid_sort_actor : public Command {
struct grid_sort_actor final : public Command {
CMD_NAME("grid/sort/actor")
STR_MENU("&Actor Name")
STR_DISP("Actor Name")
@ -118,7 +118,7 @@ struct validate_sel_multiple : public Command {
}
};
struct grid_sort_actor_selected : public validate_sel_multiple {
struct grid_sort_actor_selected final : public validate_sel_multiple {
CMD_NAME("grid/sort/actor/selected")
STR_MENU("&Actor Name")
STR_DISP("Actor Name")
@ -130,7 +130,7 @@ struct grid_sort_actor_selected : public validate_sel_multiple {
}
};
struct grid_sort_effect : public Command {
struct grid_sort_effect final : public Command {
CMD_NAME("grid/sort/effect")
STR_MENU("&Effect")
STR_DISP("Effect")
@ -142,7 +142,7 @@ struct grid_sort_effect : public Command {
}
};
struct grid_sort_effect_selected : public validate_sel_multiple {
struct grid_sort_effect_selected final : public validate_sel_multiple {
CMD_NAME("grid/sort/effect/selected")
STR_MENU("&Effect")
STR_DISP("Effect")
@ -154,7 +154,7 @@ struct grid_sort_effect_selected : public validate_sel_multiple {
}
};
struct grid_sort_end : public Command {
struct grid_sort_end final : public Command {
CMD_NAME("grid/sort/end")
STR_MENU("&End Time")
STR_DISP("End Time")
@ -166,7 +166,7 @@ struct grid_sort_end : public Command {
}
};
struct grid_sort_end_selected : public validate_sel_multiple {
struct grid_sort_end_selected final : public validate_sel_multiple {
CMD_NAME("grid/sort/end/selected")
STR_MENU("&End Time")
STR_DISP("End Time")
@ -178,7 +178,7 @@ struct grid_sort_end_selected : public validate_sel_multiple {
}
};
struct grid_sort_layer : public Command {
struct grid_sort_layer final : public Command {
CMD_NAME("grid/sort/layer")
STR_MENU("&Layer")
STR_DISP("Layer")
@ -190,7 +190,7 @@ struct grid_sort_layer : public Command {
}
};
struct grid_sort_layer_selected : public validate_sel_multiple {
struct grid_sort_layer_selected final : public validate_sel_multiple {
CMD_NAME("grid/sort/layer/selected")
STR_MENU("&Layer")
STR_DISP("Layer")
@ -202,7 +202,7 @@ struct grid_sort_layer_selected : public validate_sel_multiple {
}
};
struct grid_sort_start : public Command {
struct grid_sort_start final : public Command {
CMD_NAME("grid/sort/start")
STR_MENU("&Start Time")
STR_DISP("Start Time")
@ -214,7 +214,7 @@ struct grid_sort_start : public Command {
}
};
struct grid_sort_start_selected : public validate_sel_multiple {
struct grid_sort_start_selected final : public validate_sel_multiple {
CMD_NAME("grid/sort/start/selected")
STR_MENU("&Start Time")
STR_DISP("Start Time")
@ -226,7 +226,7 @@ struct grid_sort_start_selected : public validate_sel_multiple {
}
};
struct grid_sort_style : public Command {
struct grid_sort_style final : public Command {
CMD_NAME("grid/sort/style")
STR_MENU("St&yle Name")
STR_DISP("Style Name")
@ -238,7 +238,7 @@ struct grid_sort_style : public Command {
}
};
struct grid_sort_style_selected : public validate_sel_multiple {
struct grid_sort_style_selected final : public validate_sel_multiple {
CMD_NAME("grid/sort/style/selected")
STR_MENU("St&yle Name")
STR_DISP("Style Name")
@ -250,7 +250,7 @@ struct grid_sort_style_selected : public validate_sel_multiple {
}
};
struct grid_tag_cycle_hiding : public Command {
struct grid_tag_cycle_hiding final : public Command {
CMD_NAME("grid/tag/cycle_hiding")
CMD_ICON(toggle_tag_hiding)
STR_MENU("Cycle Tag Hiding Mode")
@ -275,7 +275,7 @@ struct grid_tag_cycle_hiding : public Command {
}
};
struct grid_tags_hide : public Command {
struct grid_tags_hide final : public Command {
CMD_NAME("grid/tags/hide")
STR_MENU("&Hide Tags")
STR_DISP("Hide Tags")
@ -291,7 +291,7 @@ struct grid_tags_hide : public Command {
}
};
struct grid_tags_show : public Command {
struct grid_tags_show final : public Command {
CMD_NAME("grid/tags/show")
STR_MENU("Sh&ow Tags")
STR_DISP("Show Tags")
@ -307,7 +307,7 @@ struct grid_tags_show : public Command {
}
};
struct grid_tags_simplify : public Command {
struct grid_tags_simplify final : public Command {
CMD_NAME("grid/tags/simplify")
STR_MENU("S&implify Tags")
STR_DISP("Simplify Tags")
@ -342,7 +342,7 @@ static bool move_one(T begin, T end, U const& to_move, int step) {
return move_count > 0;
}
struct grid_move_up : public Command {
struct grid_move_up final : public Command {
CMD_NAME("grid/move/up")
STR_MENU("Move line up")
STR_DISP("Move line up")
@ -359,7 +359,7 @@ struct grid_move_up : public Command {
}
};
struct grid_move_down : public Command {
struct grid_move_down final : public Command {
CMD_NAME("grid/move/down")
STR_MENU("Move line down")
STR_DISP("Move line down")
@ -376,7 +376,7 @@ struct grid_move_down : public Command {
}
};
struct grid_swap : public Command {
struct grid_swap final : public Command {
CMD_NAME("grid/swap")
CMD_ICON(arrow_sort)
STR_MENU("Swap Lines")

View File

@ -45,7 +45,7 @@
namespace {
using cmd::Command;
struct help_bugs : public Command {
struct help_bugs final : public Command {
CMD_NAME("help/bugs")
CMD_ICON(bugtracker_button)
STR_MENU("&Bug Tracker...")
@ -66,7 +66,7 @@ struct help_bugs : public Command {
}
};
struct help_contents : public Command {
struct help_contents final : public Command {
CMD_NAME("help/contents")
CMD_ICON(contents_button)
STR_MENU("&Contents")
@ -78,7 +78,7 @@ struct help_contents : public Command {
}
};
struct help_forums : public Command {
struct help_forums final : public Command {
CMD_NAME("help/forums")
CMD_ICON(forums_button)
STR_MENU("&Forums")
@ -90,7 +90,7 @@ struct help_forums : public Command {
}
};
struct help_irc : public Command {
struct help_irc final : public Command {
CMD_NAME("help/irc")
CMD_ICON(irc_button)
STR_MENU("&IRC Channel")
@ -102,7 +102,7 @@ struct help_irc : public Command {
}
};
struct help_video : public Command {
struct help_video final : public Command {
CMD_NAME("help/video")
CMD_ICON(visual_help)
STR_MENU("&Visual Typesetting")
@ -114,7 +114,7 @@ struct help_video : public Command {
}
};
struct help_website : public Command {
struct help_website final : public Command {
CMD_NAME("help/website")
CMD_ICON(website_button)
STR_MENU("&Website")

View File

@ -44,7 +44,7 @@
namespace {
using cmd::Command;
struct keyframe_close : public Command {
struct keyframe_close final : public Command {
CMD_NAME("keyframe/close")
CMD_ICON(close_keyframes_menu)
STR_MENU("Close Keyframes")
@ -61,7 +61,7 @@ struct keyframe_close : public Command {
}
};
struct keyframe_open : public Command {
struct keyframe_open final : public Command {
CMD_NAME("keyframe/open")
CMD_ICON(open_keyframes_menu)
STR_MENU("Open Keyframes...")
@ -80,7 +80,7 @@ struct keyframe_open : public Command {
}
};
struct keyframe_save : public Command {
struct keyframe_save final : public Command {
CMD_NAME("keyframe/save")
CMD_ICON(save_keyframes_menu)
STR_MENU("Save Keyframes...")

View File

@ -117,7 +117,7 @@ struct recent_video_entry : public Command {
};
template<class T>
class mru_wrapper : public T {
class mru_wrapper final : public T {
int id;
std::string full_name;
public:

View File

@ -78,7 +78,7 @@ struct validate_nonempty_selection_video_loaded : public Command {
}
};
struct subtitle_attachment : public Command {
struct subtitle_attachment final : public Command {
CMD_NAME("subtitle/attachment")
CMD_ICON(attach_button)
STR_MENU("A&ttachments...")
@ -91,7 +91,7 @@ struct subtitle_attachment : public Command {
}
};
struct subtitle_find : public Command {
struct subtitle_find final : public Command {
CMD_NAME("subtitle/find")
CMD_ICON(find_button)
STR_MENU("&Find...")
@ -104,7 +104,7 @@ struct subtitle_find : public Command {
}
};
struct subtitle_find_next : public Command {
struct subtitle_find_next final : public Command {
CMD_NAME("subtitle/find/next")
CMD_ICON(find_next_menu)
STR_MENU("Find &Next")
@ -134,7 +134,7 @@ static void insert_subtitle_at_video(agi::Context *c, bool after) {
c->selectionController->SetSelectionAndActive({ def }, def);
}
struct subtitle_insert_after : public validate_nonempty_selection {
struct subtitle_insert_after final : public validate_nonempty_selection {
CMD_NAME("subtitle/insert/after")
STR_MENU("&After Current")
STR_DISP("After Current")
@ -168,7 +168,7 @@ struct subtitle_insert_after : public validate_nonempty_selection {
}
};
struct subtitle_insert_after_videotime : public validate_nonempty_selection_video_loaded {
struct subtitle_insert_after_videotime final : public validate_nonempty_selection_video_loaded {
CMD_NAME("subtitle/insert/after/videotime")
STR_MENU("After Current, at Video Time")
STR_DISP("After Current, at Video Time")
@ -179,7 +179,7 @@ struct subtitle_insert_after_videotime : public validate_nonempty_selection_vide
}
};
struct subtitle_insert_before : public validate_nonempty_selection {
struct subtitle_insert_before final : public validate_nonempty_selection {
CMD_NAME("subtitle/insert/before")
STR_MENU("&Before Current")
STR_DISP("Before Current")
@ -210,7 +210,7 @@ struct subtitle_insert_before : public validate_nonempty_selection {
}
};
struct subtitle_insert_before_videotime : public validate_nonempty_selection_video_loaded {
struct subtitle_insert_before_videotime final : public validate_nonempty_selection_video_loaded {
CMD_NAME("subtitle/insert/before/videotime")
STR_MENU("Before Current, at Video Time")
STR_DISP("Before Current, at Video Time")
@ -221,7 +221,7 @@ struct subtitle_insert_before_videotime : public validate_nonempty_selection_vid
}
};
struct subtitle_new : public Command {
struct subtitle_new final : public Command {
CMD_NAME("subtitle/new")
CMD_ICON(new_toolbutton)
STR_MENU("&New Subtitles")
@ -234,7 +234,7 @@ struct subtitle_new : public Command {
}
};
struct subtitle_open : public Command {
struct subtitle_open final : public Command {
CMD_NAME("subtitle/open")
CMD_ICON(open_toolbutton)
STR_MENU("&Open Subtitles...")
@ -249,7 +249,7 @@ struct subtitle_open : public Command {
}
};
struct subtitle_open_autosave : public Command {
struct subtitle_open_autosave final : public Command {
CMD_NAME("subtitle/open/autosave")
STR_MENU("Open A&utosaved Subtitles...")
STR_DISP("Open Autosaved Subtitles")
@ -263,7 +263,7 @@ struct subtitle_open_autosave : public Command {
}
};
struct subtitle_open_charset : public Command {
struct subtitle_open_charset final : public Command {
CMD_NAME("subtitle/open/charset")
CMD_ICON(open_with_toolbutton)
STR_MENU("Open Subtitles with &Charset...")
@ -283,7 +283,7 @@ struct subtitle_open_charset : public Command {
}
};
struct subtitle_open_video : public Command {
struct subtitle_open_video final : public Command {
CMD_NAME("subtitle/open/video")
STR_MENU("Open Subtitles from &Video")
STR_DISP("Open Subtitles from Video")
@ -300,7 +300,7 @@ struct subtitle_open_video : public Command {
}
};
struct subtitle_properties : public Command {
struct subtitle_properties final : public Command {
CMD_NAME("subtitle/properties")
CMD_ICON(properties_toolbutton)
STR_MENU("&Properties...")
@ -336,7 +336,7 @@ static void save_subtitles(agi::Context *c, agi::fs::path filename) {
}
}
struct subtitle_save : public Command {
struct subtitle_save final : public Command {
CMD_NAME("subtitle/save")
CMD_ICON(save_toolbutton)
STR_MENU("&Save Subtitles")
@ -353,7 +353,7 @@ struct subtitle_save : public Command {
}
};
struct subtitle_save_as : public Command {
struct subtitle_save_as final : public Command {
CMD_NAME("subtitle/save/as")
CMD_ICON(save_as_toolbutton)
STR_MENU("Save Subtitles &as...")
@ -365,7 +365,7 @@ struct subtitle_save_as : public Command {
}
};
struct subtitle_select_all : public Command {
struct subtitle_select_all final : public Command {
CMD_NAME("subtitle/select/all")
STR_MENU("Select &All")
STR_DISP("Select All")
@ -378,7 +378,7 @@ struct subtitle_select_all : public Command {
}
};
struct subtitle_select_visible : public Command {
struct subtitle_select_visible final : public Command {
CMD_NAME("subtitle/select/visible")
CMD_ICON(select_visible_button)
STR_MENU("Select Visible")
@ -411,7 +411,7 @@ struct subtitle_select_visible : public Command {
}
};
struct subtitle_spellcheck : public Command {
struct subtitle_spellcheck final : public Command {
CMD_NAME("subtitle/spellcheck")
CMD_ICON(spellcheck_toolbutton)
STR_MENU("Spell &Checker...")

View File

@ -106,7 +106,7 @@ static void adjoin_lines(agi::Context *c, bool set_start) {
c->ass->Commit(_("adjoin"), AssFile::COMMIT_DIAG_TIME);
}
struct time_continuous_end : public validate_adjoinable {
struct time_continuous_end final : public validate_adjoinable {
CMD_NAME("time/continuous/end")
STR_MENU("Change &End")
STR_DISP("Change End")
@ -117,7 +117,7 @@ struct time_continuous_end : public validate_adjoinable {
}
};
struct time_continuous_start : public validate_adjoinable {
struct time_continuous_start final : public validate_adjoinable {
CMD_NAME("time/continuous/start")
STR_MENU("Change &Start")
STR_DISP("Change Start")
@ -128,7 +128,7 @@ struct time_continuous_start : public validate_adjoinable {
}
};
struct time_frame_current : public validate_video_loaded {
struct time_frame_current final : public validate_video_loaded {
CMD_NAME("time/frame/current")
CMD_ICON(shift_to_frame)
STR_MENU("Shift to &Current Frame")
@ -155,7 +155,7 @@ struct time_frame_current : public validate_video_loaded {
}
};
struct time_shift : public Command {
struct time_shift final : public Command {
CMD_NAME("time/shift")
CMD_ICON(shift_times_toolbutton)
STR_MENU("S&hift Times...")
@ -185,7 +185,7 @@ static void snap_subs_video(agi::Context *c, bool set_start) {
c->ass->Commit(_("timing"), AssFile::COMMIT_DIAG_TIME);
}
struct time_snap_end_video : public validate_video_loaded {
struct time_snap_end_video final : public validate_video_loaded {
CMD_NAME("time/snap/end_video")
CMD_ICON(subend_to_video)
STR_MENU("Snap &End to Video")
@ -197,7 +197,7 @@ struct time_snap_end_video : public validate_video_loaded {
}
};
struct time_snap_scene : public validate_video_loaded {
struct time_snap_scene final : public validate_video_loaded {
CMD_NAME("time/snap/scene")
CMD_ICON(snap_subs_to_scene)
STR_MENU("Snap to S&cene")
@ -243,7 +243,7 @@ struct time_snap_scene : public validate_video_loaded {
}
};
struct time_add_lead_both : public Command {
struct time_add_lead_both final : public Command {
CMD_NAME("time/lead/both")
STR_MENU("Add lead in and out")
STR_DISP("Add lead in and out")
@ -256,7 +256,7 @@ struct time_add_lead_both : public Command {
}
};
struct time_add_lead_in : public Command {
struct time_add_lead_in final : public Command {
CMD_NAME("time/lead/in")
CMD_ICON(button_leadin)
STR_MENU("Add lead in")
@ -268,7 +268,7 @@ struct time_add_lead_in : public Command {
}
};
struct time_add_lead_out : public Command {
struct time_add_lead_out final : public Command {
CMD_NAME("time/lead/out")
CMD_ICON(button_leadout)
STR_MENU("Add lead out")
@ -280,7 +280,7 @@ struct time_add_lead_out : public Command {
}
};
struct time_length_increase : public Command {
struct time_length_increase final : public Command {
CMD_NAME("time/length/increase")
STR_MENU("Increase length")
STR_DISP("Increase length")
@ -291,7 +291,7 @@ struct time_length_increase : public Command {
}
};
struct time_length_increase_shift : public Command {
struct time_length_increase_shift final : public Command {
CMD_NAME("time/length/increase/shift")
STR_MENU("Increase length and shift")
STR_DISP("Increase length and shift")
@ -302,7 +302,7 @@ struct time_length_increase_shift : public Command {
}
};
struct time_length_decrease : public Command {
struct time_length_decrease final : public Command {
CMD_NAME("time/length/decrease")
STR_MENU("Decrease length")
STR_DISP("Decrease length")
@ -313,7 +313,7 @@ struct time_length_decrease : public Command {
}
};
struct time_length_decrease_shift : public Command {
struct time_length_decrease_shift final : public Command {
CMD_NAME("time/length/decrease/shift")
STR_MENU("Decrease length and shift")
STR_DISP("Decrease length and shift")
@ -324,7 +324,7 @@ struct time_length_decrease_shift : public Command {
}
};
struct time_start_increase : public Command {
struct time_start_increase final : public Command {
CMD_NAME("time/start/increase")
STR_MENU("Shift start time forward")
STR_DISP("Shift start time forward")
@ -335,7 +335,7 @@ struct time_start_increase : public Command {
}
};
struct time_start_decrease : public Command {
struct time_start_decrease final : public Command {
CMD_NAME("time/start/decrease")
STR_MENU("Shift start time backward")
STR_DISP("Shift start time backward")
@ -346,7 +346,7 @@ struct time_start_decrease : public Command {
}
};
struct time_snap_start_video : public validate_video_loaded {
struct time_snap_start_video final : public validate_video_loaded {
CMD_NAME("time/snap/start_video")
CMD_ICON(substart_to_video)
STR_MENU("Snap &Start to Video")
@ -358,7 +358,7 @@ struct time_snap_start_video : public validate_video_loaded {
}
};
struct time_next : public Command {
struct time_next final : public Command {
CMD_NAME("time/next")
CMD_ICON(button_next)
STR_MENU("Next Line")
@ -370,7 +370,7 @@ struct time_next : public Command {
}
};
struct time_prev : public Command {
struct time_prev final : public Command {
CMD_NAME("time/prev")
CMD_ICON(button_prev)
STR_MENU("Previous Line")

View File

@ -44,7 +44,7 @@
namespace {
using cmd::Command;
struct timecode_close : public Command {
struct timecode_close final : public Command {
CMD_NAME("timecode/close")
CMD_ICON(close_timecodes_menu)
STR_MENU("Close Timecodes File")
@ -61,7 +61,7 @@ struct timecode_close : public Command {
}
};
struct timecode_open : public Command {
struct timecode_open final : public Command {
CMD_NAME("timecode/open")
CMD_ICON(open_timecodes_menu)
STR_MENU("Open Timecodes File...")
@ -76,7 +76,7 @@ struct timecode_open : public Command {
}
};
struct timecode_save : public Command {
struct timecode_save final : public Command {
CMD_NAME("timecode/save")
CMD_ICON(save_timecodes_menu)
STR_MENU("Save Timecodes File...")

View File

@ -60,7 +60,7 @@
namespace {
using cmd::Command;
struct tool_assdraw : public Command {
struct tool_assdraw final : public Command {
CMD_NAME("tool/assdraw")
CMD_ICON(assdraw)
STR_MENU("ASSDraw3...")
@ -72,7 +72,7 @@ struct tool_assdraw : public Command {
}
};
struct tool_export : public Command {
struct tool_export final : public Command {
CMD_NAME("tool/export")
CMD_ICON(export_menu)
STR_MENU("&Export Subtitles...")
@ -85,7 +85,7 @@ struct tool_export : public Command {
}
};
struct tool_font_collector : public Command {
struct tool_font_collector final : public Command {
CMD_NAME("tool/font_collector")
CMD_ICON(font_collector_button)
STR_MENU("&Fonts Collector...")
@ -97,7 +97,7 @@ struct tool_font_collector : public Command {
}
};
struct tool_line_select : public Command {
struct tool_line_select final : public Command {
CMD_NAME("tool/line/select")
CMD_ICON(select_lines_button)
STR_MENU("S&elect Lines...")
@ -109,7 +109,7 @@ struct tool_line_select : public Command {
}
};
struct tool_resampleres : public Command {
struct tool_resampleres final : public Command {
CMD_NAME("tool/resampleres")
CMD_ICON(resample_toolbutton)
STR_MENU("&Resample Resolution...")
@ -124,7 +124,7 @@ struct tool_resampleres : public Command {
}
};
struct tool_style_assistant : public Command {
struct tool_style_assistant final : public Command {
CMD_NAME("tool/style/assistant")
CMD_ICON(styling_toolbutton)
STR_MENU("St&yling Assistant...")
@ -144,7 +144,7 @@ struct tool_styling_assistant_validator : public Command {
}
};
struct tool_styling_assistant_commit : public tool_styling_assistant_validator {
struct tool_styling_assistant_commit final : public tool_styling_assistant_validator {
CMD_NAME("tool/styling_assistant/commit")
STR_MENU("&Accept changes")
STR_DISP("Accept changes")
@ -155,7 +155,7 @@ struct tool_styling_assistant_commit : public tool_styling_assistant_validator {
}
};
struct tool_styling_assistant_preview : public tool_styling_assistant_validator {
struct tool_styling_assistant_preview final : public tool_styling_assistant_validator {
CMD_NAME("tool/styling_assistant/preview")
STR_MENU("&Preview changes")
STR_DISP("Preview changes")
@ -166,7 +166,7 @@ struct tool_styling_assistant_preview : public tool_styling_assistant_validator
}
};
struct tool_style_manager : public Command {
struct tool_style_manager final : public Command {
CMD_NAME("tool/style/manager")
CMD_ICON(style_toolbutton)
STR_MENU("&Styles Manager...")
@ -178,7 +178,7 @@ struct tool_style_manager : public Command {
}
};
struct tool_time_kanji : public Command {
struct tool_time_kanji final : public Command {
CMD_NAME("tool/time/kanji")
CMD_ICON(kara_timing_copier)
STR_MENU("&Kanji Timer...")
@ -190,7 +190,7 @@ struct tool_time_kanji : public Command {
}
};
struct tool_time_postprocess : public Command {
struct tool_time_postprocess final : public Command {
CMD_NAME("tool/time/postprocess")
CMD_ICON(timing_processor_toolbutton)
STR_MENU("&Timing Post-Processor...")
@ -202,7 +202,7 @@ struct tool_time_postprocess : public Command {
}
};
struct tool_translation_assistant : public Command {
struct tool_translation_assistant final : public Command {
CMD_NAME("tool/translation_assistant")
CMD_ICON(translation_toolbutton)
STR_MENU("&Translation Assistant...")
@ -228,7 +228,7 @@ struct tool_translation_assistant_validator : public Command {
}
};
struct tool_translation_assistant_commit : public tool_translation_assistant_validator {
struct tool_translation_assistant_commit final : public tool_translation_assistant_validator {
CMD_NAME("tool/translation_assistant/commit")
STR_MENU("&Accept changes")
STR_DISP("Accept changes")
@ -239,7 +239,7 @@ struct tool_translation_assistant_commit : public tool_translation_assistant_val
}
};
struct tool_translation_assistant_preview : public tool_translation_assistant_validator {
struct tool_translation_assistant_preview final : public tool_translation_assistant_validator {
CMD_NAME("tool/translation_assistant/preview")
STR_MENU("&Preview changes")
STR_DISP("Preview changes")
@ -250,7 +250,7 @@ struct tool_translation_assistant_preview : public tool_translation_assistant_va
}
};
struct tool_translation_assistant_next : public tool_translation_assistant_validator {
struct tool_translation_assistant_next final : public tool_translation_assistant_validator {
CMD_NAME("tool/translation_assistant/next")
STR_MENU("&Next Line")
STR_DISP("Next Line")
@ -261,7 +261,7 @@ struct tool_translation_assistant_next : public tool_translation_assistant_valid
}
};
struct tool_translation_assistant_prev : public tool_translation_assistant_validator {
struct tool_translation_assistant_prev final : public tool_translation_assistant_validator {
CMD_NAME("tool/translation_assistant/prev")
STR_MENU("&Previous Line")
STR_DISP("Previous Line")
@ -273,7 +273,7 @@ struct tool_translation_assistant_prev : public tool_translation_assistant_valid
};
}
struct tool_translation_assistant_insert : public tool_translation_assistant_validator {
struct tool_translation_assistant_insert final : public tool_translation_assistant_validator {
CMD_NAME("tool/translation_assistant/insert_original")
STR_MENU("&Insert Original")
STR_DISP("Insert Original")

View File

@ -85,7 +85,7 @@ struct validator_video_attached : public Command {
}
};
struct video_aspect_cinematic : public validator_video_loaded {
struct video_aspect_cinematic final : public validator_video_loaded {
CMD_NAME("video/aspect/cinematic")
STR_MENU("&Cinematic (2.35)")
STR_DISP("Cinematic (2.35)")
@ -103,7 +103,7 @@ struct video_aspect_cinematic : public validator_video_loaded {
}
};
struct video_aspect_custom : public validator_video_loaded {
struct video_aspect_custom final : public validator_video_loaded {
CMD_NAME("video/aspect/custom")
STR_MENU("C&ustom...")
STR_DISP("Custom")
@ -146,7 +146,7 @@ struct video_aspect_custom : public validator_video_loaded {
}
};
struct video_aspect_default : public validator_video_loaded {
struct video_aspect_default final : public validator_video_loaded {
CMD_NAME("video/aspect/default")
STR_MENU("&Default")
STR_DISP("Default")
@ -164,7 +164,7 @@ struct video_aspect_default : public validator_video_loaded {
}
};
struct video_aspect_full : public validator_video_loaded {
struct video_aspect_full final : public validator_video_loaded {
CMD_NAME("video/aspect/full")
STR_MENU("&Fullscreen (4:3)")
STR_DISP("Fullscreen (4:3)")
@ -182,7 +182,7 @@ struct video_aspect_full : public validator_video_loaded {
}
};
struct video_aspect_wide : public validator_video_loaded {
struct video_aspect_wide final : public validator_video_loaded {
CMD_NAME("video/aspect/wide")
STR_MENU("&Widescreen (16:9)")
STR_DISP("Widescreen (16:9)")
@ -200,7 +200,7 @@ struct video_aspect_wide : public validator_video_loaded {
}
};
struct video_close : public validator_video_loaded {
struct video_close final : public validator_video_loaded {
CMD_NAME("video/close")
CMD_ICON(close_video_menu)
STR_MENU("&Close Video")
@ -212,7 +212,7 @@ struct video_close : public validator_video_loaded {
}
};
struct video_copy_coordinates : public validator_video_loaded {
struct video_copy_coordinates final : public validator_video_loaded {
CMD_NAME("video/copy_coordinates")
STR_MENU("Copy coordinates to Clipboard")
STR_DISP("Copy coordinates to Clipboard")
@ -223,7 +223,7 @@ struct video_copy_coordinates : public validator_video_loaded {
}
};
struct video_cycle_subtitles_provider : public cmd::Command {
struct video_cycle_subtitles_provider final : public cmd::Command {
CMD_NAME("video/subtitles_provider/cycle")
STR_MENU("Cycle active subtitles provider")
STR_DISP("Cycle active subtitles provider")
@ -242,7 +242,7 @@ struct video_cycle_subtitles_provider : public cmd::Command {
}
};
struct video_detach : public validator_video_loaded {
struct video_detach final : public validator_video_loaded {
CMD_NAME("video/detach")
CMD_ICON(detach_video_menu)
STR_MENU("&Detach Video")
@ -262,7 +262,7 @@ struct video_detach : public validator_video_loaded {
}
};
struct video_details : public validator_video_loaded {
struct video_details final : public validator_video_loaded {
CMD_NAME("video/details")
CMD_ICON(show_video_details_menu)
STR_MENU("Show &Video Details")
@ -275,7 +275,7 @@ struct video_details : public validator_video_loaded {
}
};
struct video_focus_seek : public validator_video_loaded {
struct video_focus_seek final : public validator_video_loaded {
CMD_NAME("video/focus_seek")
STR_MENU("Toggle video slider focus")
STR_DISP("Toggle video slider focus")
@ -293,7 +293,7 @@ struct video_focus_seek : public validator_video_loaded {
}
};
struct video_frame_copy : public validator_video_loaded {
struct video_frame_copy final : public validator_video_loaded {
CMD_NAME("video/frame/copy")
STR_MENU("Copy image to Clipboard")
STR_DISP("Copy image to Clipboard")
@ -304,7 +304,7 @@ struct video_frame_copy : public validator_video_loaded {
}
};
struct video_frame_copy_raw : public validator_video_loaded {
struct video_frame_copy_raw final : public validator_video_loaded {
CMD_NAME("video/frame/copy/raw")
STR_MENU("Copy image to Clipboard (no subtitles)")
STR_DISP("Copy image to Clipboard (no subtitles)")
@ -315,7 +315,7 @@ struct video_frame_copy_raw : public validator_video_loaded {
}
};
struct video_frame_next : public validator_video_loaded {
struct video_frame_next final : public validator_video_loaded {
CMD_NAME("video/frame/next")
STR_MENU("Next Frame")
STR_DISP("Next Frame")
@ -326,7 +326,7 @@ struct video_frame_next : public validator_video_loaded {
}
};
struct video_frame_next_boundary : public validator_video_loaded {
struct video_frame_next_boundary final : public validator_video_loaded {
CMD_NAME("video/frame/next/boundary")
STR_MENU("Next Boundary")
STR_DISP("Next Boundary")
@ -355,7 +355,7 @@ struct video_frame_next_boundary : public validator_video_loaded {
}
};
struct video_frame_next_keyframe : public validator_video_loaded {
struct video_frame_next_keyframe final : public validator_video_loaded {
CMD_NAME("video/frame/next/keyframe")
STR_MENU("Next Keyframe")
STR_DISP("Next Keyframe")
@ -369,7 +369,7 @@ struct video_frame_next_keyframe : public validator_video_loaded {
}
};
struct video_frame_next_large : public validator_video_loaded {
struct video_frame_next_large final : public validator_video_loaded {
CMD_NAME("video/frame/next/large")
STR_MENU("Fast jump forward")
STR_DISP("Fast jump forward")
@ -382,7 +382,7 @@ struct video_frame_next_large : public validator_video_loaded {
}
};
struct video_frame_prev : public validator_video_loaded {
struct video_frame_prev final : public validator_video_loaded {
CMD_NAME("video/frame/prev")
STR_MENU("Previous Frame")
STR_DISP("Previous Frame")
@ -393,7 +393,7 @@ struct video_frame_prev : public validator_video_loaded {
}
};
struct video_frame_prev_boundary : public validator_video_loaded {
struct video_frame_prev_boundary final : public validator_video_loaded {
CMD_NAME("video/frame/prev/boundary")
STR_MENU("Previous Boundary")
STR_DISP("Previous Boundary")
@ -422,7 +422,7 @@ struct video_frame_prev_boundary : public validator_video_loaded {
}
};
struct video_frame_prev_keyframe : public validator_video_loaded {
struct video_frame_prev_keyframe final : public validator_video_loaded {
CMD_NAME("video/frame/prev/keyframe")
STR_MENU("Previous Keyframe")
STR_DISP("Previous Keyframe")
@ -444,7 +444,7 @@ struct video_frame_prev_keyframe : public validator_video_loaded {
}
};
struct video_frame_prev_large : public validator_video_loaded {
struct video_frame_prev_large final : public validator_video_loaded {
CMD_NAME("video/frame/prev/large")
STR_MENU("Fast jump backwards")
STR_DISP("Fast jump backwards")
@ -495,7 +495,7 @@ static void save_snapshot(agi::Context *c, bool raw) {
GetImage(*c->videoController->GetFrame(c->videoController->GetFrameN(), raw)).SaveFile(to_wx(path), wxBITMAP_TYPE_PNG);
}
struct video_frame_save : public validator_video_loaded {
struct video_frame_save final : public validator_video_loaded {
CMD_NAME("video/frame/save")
STR_MENU("Save PNG snapshot")
STR_DISP("Save PNG snapshot")
@ -506,7 +506,7 @@ struct video_frame_save : public validator_video_loaded {
}
};
struct video_frame_save_raw : public validator_video_loaded {
struct video_frame_save_raw final : public validator_video_loaded {
CMD_NAME("video/frame/save/raw")
STR_MENU("Save PNG snapshot (no subtitles)")
STR_DISP("Save PNG snapshot (no subtitles)")
@ -517,7 +517,7 @@ struct video_frame_save_raw : public validator_video_loaded {
}
};
struct video_jump : public validator_video_loaded {
struct video_jump final : public validator_video_loaded {
CMD_NAME("video/jump")
CMD_ICON(jumpto_button)
STR_MENU("&Jump to...")
@ -533,7 +533,7 @@ struct video_jump : public validator_video_loaded {
}
};
struct video_jump_end : public validator_video_loaded {
struct video_jump_end final : public validator_video_loaded {
CMD_NAME("video/jump/end")
CMD_ICON(video_to_subend)
STR_MENU("Jump Video to &End")
@ -547,7 +547,7 @@ struct video_jump_end : public validator_video_loaded {
}
};
struct video_jump_start : public validator_video_loaded {
struct video_jump_start final : public validator_video_loaded {
CMD_NAME("video/jump/start")
CMD_ICON(video_to_substart)
STR_MENU("Jump Video to &Start")
@ -560,7 +560,7 @@ struct video_jump_start : public validator_video_loaded {
}
};
struct video_open : public Command {
struct video_open final : public Command {
CMD_NAME("video/open")
CMD_ICON(open_video_menu)
STR_MENU("&Open Video...")
@ -576,7 +576,7 @@ struct video_open : public Command {
}
};
struct video_open_dummy : public Command {
struct video_open_dummy final : public Command {
CMD_NAME("video/open/dummy")
CMD_ICON(use_dummy_video_menu)
STR_MENU("&Use Dummy Video...")
@ -590,7 +590,7 @@ struct video_open_dummy : public Command {
}
};
struct video_opt_autoscroll : public Command {
struct video_opt_autoscroll final : public Command {
CMD_NAME("video/opt/autoscroll")
CMD_ICON(toggle_video_autoscroll)
STR_MENU("Toggle autoscroll of video")
@ -607,7 +607,7 @@ struct video_opt_autoscroll : public Command {
}
};
struct video_play : public validator_video_loaded {
struct video_play final : public validator_video_loaded {
CMD_NAME("video/play")
CMD_ICON(button_play)
STR_MENU("Play")
@ -619,7 +619,7 @@ struct video_play : public validator_video_loaded {
}
};
struct video_play_line : public validator_video_loaded {
struct video_play_line final : public validator_video_loaded {
CMD_NAME("video/play/line")
CMD_ICON(button_playline)
STR_MENU("Play line")
@ -631,7 +631,7 @@ struct video_play_line : public validator_video_loaded {
}
};
struct video_show_overscan : public validator_video_loaded {
struct video_show_overscan final : public validator_video_loaded {
CMD_NAME("video/show_overscan")
STR_MENU("Show &Overscan Mask")
STR_DISP("Show Overscan Mask")
@ -715,7 +715,7 @@ public:
}
};
struct video_zoom_in : public validator_video_attached {
struct video_zoom_in final : public validator_video_attached {
CMD_NAME("video/zoom/in")
CMD_ICON(zoom_in_button)
STR_MENU("Zoom In")
@ -727,7 +727,7 @@ struct video_zoom_in : public validator_video_attached {
}
};
struct video_zoom_out : public validator_video_attached {
struct video_zoom_out final : public validator_video_attached {
CMD_NAME("video/zoom/out")
CMD_ICON(zoom_out_button)
STR_MENU("Zoom Out")

View File

@ -37,7 +37,7 @@ namespace {
using cmd::Command;
template<class T>
struct visual_tool_command : public Command {
struct visual_tool_command final : public Command {
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
bool Validate(const agi::Context *c) override {
@ -53,7 +53,7 @@ namespace {
}
};
struct visual_mode_cross : public visual_tool_command<VisualToolCross> {
struct visual_mode_cross final : public visual_tool_command<VisualToolCross> {
CMD_NAME("video/tool/cross")
CMD_ICON(visual_standard)
STR_MENU("Standard")
@ -61,7 +61,7 @@ namespace {
STR_HELP("Standard mode, double click sets position")
};
struct visual_mode_drag : public visual_tool_command<VisualToolDrag> {
struct visual_mode_drag final : public visual_tool_command<VisualToolDrag> {
CMD_NAME("video/tool/drag")
CMD_ICON(visual_move)
STR_MENU("Drag")
@ -69,7 +69,7 @@ namespace {
STR_HELP("Drag subtitles")
};
struct visual_mode_rotate_z : public visual_tool_command<VisualToolRotateZ> {
struct visual_mode_rotate_z final : public visual_tool_command<VisualToolRotateZ> {
CMD_NAME("video/tool/rotate/z")
CMD_ICON(visual_rotatez)
STR_MENU("Rotate Z")
@ -77,7 +77,7 @@ namespace {
STR_HELP("Rotate subtitles on their Z axis")
};
struct visual_mode_rotate_xy : public visual_tool_command<VisualToolRotateXY> {
struct visual_mode_rotate_xy final : public visual_tool_command<VisualToolRotateXY> {
CMD_NAME("video/tool/rotate/xy")
CMD_ICON(visual_rotatexy)
STR_MENU("Rotate XY")
@ -85,7 +85,7 @@ namespace {
STR_HELP("Rotate subtitles on their X and Y axes")
};
struct visual_mode_scale : public visual_tool_command<VisualToolScale> {
struct visual_mode_scale final : public visual_tool_command<VisualToolScale> {
CMD_NAME("video/tool/scale")
CMD_ICON(visual_scale)
STR_MENU("Scale")
@ -93,7 +93,7 @@ namespace {
STR_HELP("Scale subtitles on X and Y axes")
};
struct visual_mode_clip : public visual_tool_command<VisualToolClip> {
struct visual_mode_clip final : public visual_tool_command<VisualToolClip> {
CMD_NAME("video/tool/clip")
CMD_ICON(visual_clip)
STR_MENU("Clip")
@ -101,7 +101,7 @@ namespace {
STR_HELP("Clip subtitles to a rectangle")
};
struct visual_mode_vector_clip : public visual_tool_command<VisualToolVectorClip> {
struct visual_mode_vector_clip final : public visual_tool_command<VisualToolVectorClip> {
CMD_NAME("video/tool/vector_clip")
CMD_ICON(visual_vector_clip)
STR_MENU("Vector Clip")

View File

@ -39,7 +39,7 @@ class wxListEvent;
#include <wx/dialog.h>
class DialogAttachments : public wxDialog {
class DialogAttachments final : public wxDialog {
AssFile *ass;
wxListView *listView;

View File

@ -50,7 +50,7 @@ class wxButton;
class wxListEvent;
class wxListView;
class DialogAutomation : public wxDialog {
class DialogAutomation final : public wxDialog {
agi::Context *context;
/// Struct to attach a flag for global/local to scripts

View File

@ -24,7 +24,7 @@
class wxListBox;
class DialogAutosave : public wxDialog {
class DialogAutosave final : public wxDialog {
struct Version {
wxString filename;
wxDateTime date;

View File

@ -86,7 +86,7 @@ static const int spectrum_horz_vert_arrow_size = 4;
wxDEFINE_EVENT(EVT_SPECTRUM_CHANGE, wxCommandEvent);
class ColorPickerSpectrum : public wxControl {
class ColorPickerSpectrum final : public wxControl {
int x;
int y;
@ -251,7 +251,7 @@ wxDEFINE_EVENT(EVT_RECENT_SELECT, wxThreadEvent);
/// @class ColorPickerRecent
/// @brief A grid of recently used colors which can be selected by clicking on them
class ColorPickerRecent : public wxStaticBitmap {
class ColorPickerRecent final : public wxStaticBitmap {
int rows; ///< Number of rows of colors
int cols; ///< Number of cols of colors
int cellsize; ///< Width/Height of each cell
@ -344,7 +344,7 @@ public:
wxDEFINE_EVENT(EVT_DROPPER_SELECT, wxThreadEvent);
class ColorPickerScreenDropper : public wxControl {
class ColorPickerScreenDropper final : public wxControl {
wxBitmap capture;
int resx, resy;
@ -434,7 +434,7 @@ void ColorPickerScreenDropper::DropFromScreenXY(int x, int y) {
}
class DialogColorPicker : public wxDialog {
class DialogColorPicker final : public wxDialog {
std::unique_ptr<PersistLocation> persist;
agi::Color cur_color; ///< Currently selected colour

View File

@ -42,7 +42,7 @@ class PersistLocation;
class VideoBox;
class VideoDisplay;
class DialogDetachedVideo : public wxDialog {
class DialogDetachedVideo final : public wxDialog {
agi::Context *context;
VideoDisplay *old_display;
wxWindow *old_slider;

View File

@ -26,7 +26,7 @@
class wxFlexGridSizer;
class wxStaticText;
class DialogDummyVideo : public wxDialog {
class DialogDummyVideo final : public wxDialog {
DialogDummyVideo(wxWindow *parent);
double fps;

View File

@ -42,7 +42,7 @@ class wxChoice;
class wxSizer;
class wxTextCtrl;
class DialogExport : public wxDialog {
class DialogExport final : public wxDialog {
agi::Context *c;
/// The export transform engine

View File

@ -48,7 +48,7 @@ namespace {
const boost::regex timecode_regex("([[:digit:]]{2}):([[:digit:]]{2}):([[:digit:]]{2}):([[:digit:]]{2})");
/// Validator for SMPTE timecodes
class TimecodeValidator : public wxValidator {
class TimecodeValidator final : public wxValidator {
EbuTimecode *value;
wxTextCtrl *GetCtrl() const { return dynamic_cast<wxTextCtrl*>(GetWindow()); }

View File

@ -112,7 +112,7 @@ public:
};
/// Dialog box for getting an export configuration for EBU Tech 3264-1991
class EbuExportConfigurationDialog : public wxDialog {
class EbuExportConfigurationDialog final : public wxDialog {
public:
/// Constructor
/// @param owner Parent window of the dialog

View File

@ -31,7 +31,7 @@ class wxStaticText;
class wxTextCtrl;
class wxThreadEvent;
class DialogFontsCollector : public wxDialog {
class DialogFontsCollector final : public wxDialog {
AssFile *subs;
ScintillaTextCtrl *collection_log;

View File

@ -38,7 +38,7 @@ namespace agi { struct Context; }
class TimeEdit;
class wxTextCtrl;
class DialogJumpTo : public wxDialog {
class DialogJumpTo final : public wxDialog {
agi::Context *c; ///< Project context
long jumpframe; ///< Target frame to jump to
TimeEdit *JumpTime; ///< Target time edit control

View File

@ -69,7 +69,7 @@
#define TEXT_LABEL_SOURCE _("Source: ")
#define TEXT_LABEL_DEST _("Dest: ")
class KaraokeLineMatchDisplay : public wxControl {
class KaraokeLineMatchDisplay final : public wxControl {
typedef AssKaraoke::Syllable MatchSyllable;
struct MatchGroup {

View File

@ -44,7 +44,7 @@ class KaraokeLineMatchDisplay;
class wxComboBox;
class wxCheckBox;
class DialogKanjiTimer : public wxDialog {
class DialogKanjiTimer final : public wxDialog {
AssFile *subs;
KaraokeLineMatchDisplay *display;

View File

@ -52,7 +52,7 @@
#include <wx/stattext.h>
#include <wx/textctrl.h>
class EmitLog : public agi::log::Emitter {
class EmitLog final : public agi::log::Emitter {
wxTextCtrl *text_ctrl;
public:
EmitLog(wxTextCtrl *t)

View File

@ -36,7 +36,7 @@
class wxCheckListBox;
class DialogPasteOver : public wxDialog {
class DialogPasteOver final : public wxDialog {
wxCheckListBox *ListBox;
void CheckAll(bool check);

View File

@ -72,7 +72,7 @@ namespace {
}
}
class DialogProgressSink : public agi::ProgressSink {
class DialogProgressSink final : public agi::ProgressSink {
DialogProgress *dialog;
std::atomic<bool> cancelled;

View File

@ -31,7 +31,7 @@ class wxTextCtrl;
/// @class DialogProgress
/// @brief Progress-bar dialog box for displaying during long operations
class DialogProgress : public wxDialog, public agi::BackgroundRunner {
class DialogProgress final : public wxDialog, public agi::BackgroundRunner {
friend class DialogProgressSink;
DialogProgressSink *ps;

View File

@ -41,7 +41,7 @@ class wxCheckBox;
class wxComboBox;
class wxTextCtrl;
class DialogProperties : public wxDialog {
class DialogProperties final : public wxDialog {
agi::Context *c; ///< Project this dialog is adjusting the properties of
/// Pairs of a script property and a text control for that property

View File

@ -29,7 +29,7 @@ struct ResampleSettings;
/// @brief Configuration dialog for resolution resampling
///
/// Populate a ResampleSettings structure with data from the user
class DialogResample : public wxDialog {
class DialogResample final : public wxDialog {
agi::Context *c; ///< Project context
wxSpinCtrl *res_x;

View File

@ -28,7 +28,7 @@ class SearchReplaceEngine;
struct SearchReplaceSettings;
class wxComboBox;
class DialogSearchReplace : public wxDialog {
class DialogSearchReplace final : public wxDialog {
agi::Context *c;
std::unique_ptr<SearchReplaceSettings> settings;
bool has_replace;

View File

@ -23,7 +23,7 @@
/// @class SelectedChoicesDialog
/// @brief wxMultiChoiceDialog with Select All and Select None
class SelectedChoicesDialog : public wxMultiChoiceDialog {
class SelectedChoicesDialog final : public wxMultiChoiceDialog {
SelectedChoicesDialog(SelectedChoicesDialog const&);
SelectedChoicesDialog& operator=(SelectedChoicesDialog const&);

View File

@ -28,7 +28,7 @@ class wxRadioBox;
class wxRadioButton;
class wxTextCtrl;
class DialogSelection : public wxDialog {
class DialogSelection final : public wxDialog {
agi::Context *con; ///< Project context
wxTextCtrl *match_text; ///< Text to search for

View File

@ -43,7 +43,7 @@ namespace json {
typedef std::deque<UnknownElement> Array;
}
class DialogShiftTimes : public wxDialog {
class DialogShiftTimes final : public wxDialog {
wxDECLARE_NO_COPY_CLASS(DialogShiftTimes); // clang + libc++ herps a derp without this
agi::Context *context;

View File

@ -35,7 +35,7 @@ class wxComboBox;
class wxListBox;
class wxTextCtrl;
class DialogSpellChecker : public wxDialog {
class DialogSpellChecker final : public wxDialog {
agi::Context *context; ///< The project context
std::unique_ptr<agi::SpellChecker> spellchecker; ///< The spellchecking engine

View File

@ -47,7 +47,7 @@ class AssStyleStorage;
class PersistLocation;
class SubtitlesPreview;
class DialogStyleEditor : public wxDialog {
class DialogStyleEditor final : public wxDialog {
agi::Context *c;
std::unique_ptr<PersistLocation> persist;

View File

@ -52,7 +52,7 @@ class AssStyle;
class DialogStyleEditor;
class PersistLocation;
class DialogStyleManager : public wxDialog {
class DialogStyleManager final : public wxDialog {
agi::Context *c; ///< Project context
std::unique_ptr<PersistLocation> persist;

View File

@ -33,7 +33,7 @@ class wxCheckBox;
class wxListBox;
class wxTextCtrl;
class DialogStyling : public wxDialog {
class DialogStyling final : public wxDialog {
agi::Context *c;
agi::signal::Connection active_line_connection;

View File

@ -39,7 +39,7 @@
///
/// A simple dialog to let the user select the format of a plain text file
/// being imported into Aegisub
class DialogTextImport : public wxDialog {
class DialogTextImport final : public wxDialog {
std::string seperator;
std::string comment;
bool include_blank;

View File

@ -45,7 +45,7 @@ class wxSlider;
/// @class DialogTimingProcessor
/// @brief Automatic postprocessor for correcting common timing issues
class DialogTimingProcessor : public wxDialog {
class DialogTimingProcessor final : public wxDialog {
agi::Context *c; ///< Project context
int leadIn; ///< Lead-in to add in milliseconds

View File

@ -36,7 +36,7 @@ class wxStaticText;
class wxCheckBox;
/// Assistant for translating subtitles in one language to another language
class DialogTranslation : public wxDialog {
class DialogTranslation final : public wxDialog {
agi::Context *c;
agi::signal::Connection file_change_connection;

View File

@ -93,7 +93,7 @@ struct AegisubUpdateDescription {
: url(std::move(url)), friendly_name(std::move(friendly_name)), description(std::move(description)) { }
};
class VersionCheckerResultDialog : public wxDialog {
class VersionCheckerResultDialog final : public wxDialog {
void OnCloseButton(wxCommandEvent &evt);
void OnRemindMeLater(wxCommandEvent &evt);
void OnClose(wxCloseEvent &evt);

Some files were not shown because too many files have changed in this diff Show More