Run clang-modernize on things

This commit is contained in:
Thomas Goyne 2013-11-21 09:13:36 -08:00
parent 2e051a8fde
commit a7f4fb5b87
180 changed files with 1045 additions and 1048 deletions

View file

@ -39,7 +39,7 @@ class UCDetect : public nsUniversalDetector {
/// List of detected character sets
CharsetListDetected list;
void Report(const char* aCharset) {}
void Report(const char*) override {}
public:
/// @brief Detect character set of a file using UniversalCharDetect
@ -90,17 +90,16 @@ public:
list.emplace_back(1.f, mDetectedCharset);
else {
switch (mInputState) {
case eHighbyte: {
for (PRInt32 i=0; i<NUM_OF_CHARSET_PROBERS; i++) {
if (!mCharSetProbers[i]) continue;
case eHighbyte:
for (auto& elem : mCharSetProbers) {
if (!elem) continue;
float conf = mCharSetProbers[i]->GetConfidence();
float conf = elem->GetConfidence();
if (conf > 0.01f)
list.emplace_back(conf, mCharSetProbers[i]->GetCharSetName());
list.emplace_back(conf, elem->GetCharSetName());
}
break;
}
case ePureAscii:
list.emplace_back(1.f, "US-ASCII");
break;

View file

@ -241,7 +241,7 @@ namespace {
~ConverterImpl() {
if (cd != iconv_invalid) iconv_close(cd);
}
size_t Convert(const char** inbuf, size_t* inbytesleft, char** outbuf, size_t* outbytesleft) {
size_t Convert(const char** inbuf, size_t* inbytesleft, char** outbuf, size_t* outbytesleft) override {
eat_bom(cd, bomSize, inbuf, inbytesleft, outbuf, outbytesleft);
size_t res = iconv(cd, ICONV_CONST_CAST(inbuf), inbytesleft, outbuf, outbytesleft);

View file

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

View file

@ -56,7 +56,7 @@ MRUManager::~MRUManager() {
}
MRUManager::MRUListMap &MRUManager::Find(std::string const& key) {
MRUMap::iterator index = mru.find(key);
auto index = mru.find(key);
if (index == mru.end())
throw MRUErrorInvalidKey("Invalid key value");
return index->second;

View file

@ -67,11 +67,11 @@ std::unique_ptr<OptionValue> ConfigVisitor::ReadArray(json::Array const& src, st
for (json::Object const& obj : src) {
if (obj.size() != 1) {
Error<OptionJsonValueArray>("Invalid array member");
return 0;
return nullptr;
}
if (obj.begin()->first != array_type) {
Error<OptionJsonValueArray>("Attempt to insert value into array of wrong type");
return 0;
return nullptr;
}
arr.push_back(ValueType(obj.begin()->second));

View file

@ -66,7 +66,7 @@ fs::path Path::Decode(std::string const& path) const {
fs::path Path::MakeRelative(fs::path const& path, std::string const& token) const {
const auto it = tokens.find(token);
if (it == tokens.end()) throw agi::InternalError("Bad token: " + token, 0);
if (it == tokens.end()) throw agi::InternalError("Bad token: " + token, nullptr);
return MakeRelative(path, it->second);
}
@ -97,7 +97,7 @@ fs::path Path::MakeRelative(fs::path const& path, fs::path const& base) const {
fs::path Path::MakeAbsolute(fs::path path, std::string const& token) const {
const auto it = tokens.find(token);
if (it == tokens.end()) throw agi::InternalError("Bad token: " + token, 0);
if (it == tokens.end()) throw agi::InternalError("Bad token: " + token, nullptr);
if (path.empty()) return path;
path.make_preferred();
@ -127,7 +127,7 @@ std::string Path::Encode(fs::path const& path) const {
void Path::SetToken(std::string const& token_name, fs::path const& token_value) {
const auto it = tokens.find(token_name);
if (it == tokens.end()) throw agi::InternalError("Bad token: " + token_name, 0);
if (it == tokens.end()) throw agi::InternalError("Bad token: " + token_name, nullptr);
if (token_value.empty())
it->second = token_value;

View file

@ -179,8 +179,8 @@ void Framerate::SetFromTimecodes() {
last = (timecodes.size() - 1) * denominator * 1000;
}
Framerate::Framerate(std::vector<int> const& timecodes)
: timecodes(timecodes)
Framerate::Framerate(std::vector<int> timecodes)
: timecodes(std::move(timecodes))
, drop(false)
{
SetFromTimecodes();

View file

@ -31,9 +31,9 @@ public:
// problems such as errant characters or corrupt/incomplete documents
class ScanException : public Exception {
public:
ScanException(std::string const& sMessage, Reader::Location const& locError)
ScanException(std::string const& sMessage, Reader::Location locError)
: Exception(sMessage)
, m_locError(locError)
, m_locError(std::move(locError))
{ }
Reader::Location m_locError;
@ -43,10 +43,10 @@ public:
// higher-level problems such as missing commas or brackets
class ParseException : public Exception {
public:
ParseException(std::string const& sMessage, Reader::Location const& locTokenBegin, Reader::Location const& locTokenEnd)
ParseException(std::string const& sMessage, Reader::Location locTokenBegin, Reader::Location locTokenEnd)
: Exception(sMessage)
, m_locTokenBegin(locTokenBegin)
, m_locTokenEnd(locTokenEnd)
, m_locTokenBegin(std::move(locTokenBegin))
, m_locTokenEnd(std::move(locTokenEnd))
{ }
Reader::Location m_locTokenBegin;

View file

@ -26,13 +26,13 @@ class Writer : private ConstVisitor {
void Write(const Null& null);
void Write(const UnknownElement& unknown);
void Visit(const Array& array);
void Visit(const Object& object);
void Visit(const Integer& number);
void Visit(const Double& number);
void Visit(const String& string);
void Visit(const Boolean& boolean);
void Visit(const Null& null);
void Visit(const Array& array) override;
void Visit(const Object& object) override;
void Visit(const Integer& number) override;
void Visit(const Double& number) override;
void Visit(const String& string) override;
void Visit(const Boolean& boolean) override;
void Visit(const Null& null) override;
std::ostream& m_ostr;
int tab_depth;

View file

@ -100,7 +100,7 @@ namespace agi {
///
/// Deriving classes should always use this constructor for initialising
/// the base class.
Exception(const std::string &msg, const Exception *inr = 0) : message(msg) {
Exception(std::string msg, const Exception *inr = nullptr) : message(std::move(msg)) {
if (inr)
inner.reset(inr->Copy());
}

View file

@ -34,8 +34,8 @@ namespace agi {
namespace hotkey {
/// @class Combo
/// A Combo represents a linear sequence of characters set in an std::vector. This makes up
/// a single combination, or "Hotkey".
/// A Combo represents a linear sequence of characters set in an std::vector.
/// This makes up a single combination, or "Hotkey".
class Combo {
std::vector<std::string> key_map;
std::string cmd_name;
@ -44,10 +44,10 @@ public:
/// Constructor
/// @param ctx Context
/// @param cmd Command name
Combo(std::string const& ctx, std::string const& cmd, std::vector<std::string> const& keys)
: key_map(keys)
, cmd_name(cmd)
, context(ctx)
Combo(std::string ctx, std::string cmd, std::vector<std::string> keys)
: key_map(std::move(keys))
, cmd_name(std::move(cmd))
, context(std::move(ctx))
{
}

View file

@ -85,7 +85,7 @@ public:
/// @brief Invalid iterator constructor; use for end iterator
line_iterator()
: stream(0)
: stream(nullptr)
, valid(false)
{
}

View file

@ -43,9 +43,9 @@ namespace agi {
template<class StartCont, class Iter, class WidthCont>
inline void get_line_widths(StartCont const& line_start_points, Iter begin, Iter end, WidthCont &line_widths) {
size_t line_start = 0;
for (size_t i = 0; i < line_start_points.size(); ++i) {
line_widths.push_back(std::accumulate(begin + line_start, begin + line_start_points[i], 0));
line_start = line_start_points[i];
for (auto & line_start_point : line_start_points) {
line_widths.push_back(std::accumulate(begin + line_start, begin + line_start_point, 0));
line_start = line_start_point;
}
line_widths.push_back(std::accumulate(begin + line_start, end, 0));
}

View file

@ -132,7 +132,7 @@ public:
/// Destructor
~JsonEmitter();
void log(SinkMessage *);
void log(SinkMessage *) override;
};
/// Generates a message and submits it to the log sink.
@ -149,7 +149,7 @@ public:
/// Emit log entries to stdout.
class EmitSTDOUT: public Emitter {
public:
void log(SinkMessage *sm);
void log(SinkMessage *sm) override;
};
} // namespace log

View file

@ -54,7 +54,7 @@ public:
/// @brief Constructor
/// @param config File to load MRU values from
MRUManager(agi::fs::path const& config, std::string const& default_config, agi::Options *options = 0);
MRUManager(agi::fs::path const& config, std::string const& default_config, agi::Options *options = nullptr);
/// Destructor
~MRUManager();

View file

@ -139,7 +139,7 @@ namespace detail {
SlotMap slots; /// Signals currently connected to this slot
void Disconnect(ConnectionToken *tok) {
void Disconnect(ConnectionToken *tok) override {
slots.erase(tok);
}

View file

@ -107,7 +107,7 @@ public:
/// @brief VFR from frame times
/// @param timecodes Vector of frame start times in milliseconds
Framerate(std::vector<int> const& timecodes);
Framerate(std::vector<int> timecodes);
/// Helper function for the std::swap specialization
void swap(Framerate &right) throw();

View file

@ -93,12 +93,12 @@ wxString AegisubLocale::PickLanguage() {
// Generate names
wxArrayString langNames;
for (size_t i = 0; i < langs.size(); ++i) {
const wxLanguageInfo *info = wxLocale::FindLanguageInfo(langs[i]);
for (auto const& lang : langs) {
const wxLanguageInfo *info = wxLocale::FindLanguageInfo(lang);
if (info)
langNames.push_back(wxLocale::GetLanguageName(info->Language));
else
langNames.push_back(langs[i]);
langNames.push_back(lang);
}
long style = wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxOK | wxCENTRE;
@ -107,7 +107,7 @@ wxString AegisubLocale::PickLanguage() {
wxSingleChoiceDialog dialog(nullptr, "Please choose a language:", "Language", langNames,
#if wxCHECK_VERSION(2, 9, 4)
(void **)0,
(void **)nullptr,
#else
0,
#endif

View file

@ -52,7 +52,7 @@ AssAttachment::AssAttachment(agi::fs::path const& name, AssEntryGroup group)
}
AssEntry *AssAttachment::Clone() const {
AssAttachment *clone = new AssAttachment(filename, group);
auto clone = new AssAttachment(filename, group);
clone->entry_data = entry_data;
return clone;
}

View file

@ -96,7 +96,7 @@ public:
agi::StringRange next_tok() {
if (pos.eof())
throw SubtitleFormatParseError("Failed parsing line: " + std::string(str.begin(), str.end()), 0);
throw SubtitleFormatParseError("Failed parsing line: " + std::string(str.begin(), str.end()), nullptr);
return *pos++;
}
@ -115,7 +115,7 @@ void AssDialogue::Parse(std::string const& raw) {
str = agi::StringRange(raw.begin() + 9, raw.end());
}
else
throw SubtitleFormatParseError("Failed parsing line: " + raw, 0);
throw SubtitleFormatParseError("Failed parsing line: " + raw, nullptr);
tokenizer tkn(str);
@ -169,8 +169,8 @@ std::string AssDialogue::GetData(bool ssa) const {
append_str(str, End.GetAssFormated());
append_unsafe_str(str, Style);
append_unsafe_str(str, Actor);
for (int i = 0; i < 3; ++i)
append_int(str, Margin[i]);
for (auto margin : Margin)
append_int(str, margin);
append_unsafe_str(str, Effect);
str += Text.get();
@ -224,7 +224,7 @@ std::auto_ptr<boost::ptr_vector<AssDialogueBlock>> AssDialogue::ParseTags() cons
}
else {
// Create block
AssDialogueBlockOverride *block = new AssDialogueBlockOverride(work);
auto block = new AssDialogueBlockOverride(work);
block->ParseTags();
Blocks.push_back(block);
@ -282,7 +282,7 @@ std::string AssDialogue::GetStrippedText() const {
}
AssEntry *AssDialogue::Clone() const {
AssDialogue *clone = new AssDialogue(*this);
auto clone = new AssDialogue(*this);
*const_cast<int *>(&clone->Id) = Id;
return clone;
}

View file

@ -75,7 +75,7 @@ protected:
/// Text of this block
std::string text;
public:
AssDialogueBlock(std::string const& text) : text(text) { }
AssDialogueBlock(std::string text) : text(std::move(text)) { }
virtual ~AssDialogueBlock() { }
virtual AssBlockType GetType() const = 0;
@ -174,7 +174,7 @@ public:
/// Does this line collide with the passed line?
bool CollidesWith(const AssDialogue *target) const;
AssEntry *Clone() const;
AssEntry *Clone() const override;
AssDialogue();
AssDialogue(AssDialogue const&);

View file

@ -43,10 +43,10 @@ static FilterList& filters() {
return instance;
}
AssExportFilter::AssExportFilter(std::string const& name, std::string const& description, int priority)
: name(name)
AssExportFilter::AssExportFilter(std::string name, std::string description, int priority)
: name(std::move(name))
, priority(priority)
, description(description)
, description(std::move(description))
{
}

View file

@ -59,7 +59,7 @@ class AssExportFilter : public boost::intrusive::make_list_base_hook<boost::intr
std::string description;
public:
AssExportFilter(std::string const& name, std::string const& description, int priority = 0);
AssExportFilter(std::string name, std::string description, int priority = 0);
virtual ~AssExportFilter() { };
std::string const& GetName() const { return name; }
@ -69,12 +69,12 @@ public:
/// @param subs Subtitles to process
/// @param parent_window Window to use as the parent if the filter wishes
/// to open a progress dialog
virtual void ProcessSubs(AssFile *subs, wxWindow *parent_window=0)=0;
virtual void ProcessSubs(AssFile *subs, wxWindow *parent_window=nullptr)=0;
/// Draw setup controls
/// @param parent Parent window to add controls to
/// @param c Project context
virtual wxWindow *GetConfigDialogWindow(wxWindow *parent, agi::Context *c) { return 0; }
virtual wxWindow *GetConfigDialogWindow(wxWindow *parent, agi::Context *c) { return nullptr; }
/// Load settings to use from the configuration dialog
/// @param is_default If true use default settings instead

View file

@ -74,7 +74,7 @@ public:
/// @param file Target filename
/// @param charset Target charset
/// @param parent_window Parent window the filters should use when opening dialogs
void Export(agi::fs::path const& file, std::string const& charset, wxWindow *parent_window= 0);
void Export(agi::fs::path const& file, std::string const& charset, wxWindow *parent_window= nullptr);
/// Add configuration panels for all registered filters to the target sizer
/// @param parent Parent window for controls

View file

@ -138,7 +138,7 @@ public:
/// @param commitId Commit to amend rather than pushing a new commit
/// @param single_line Line which was changed, if only one line was
/// @return Unique identifier for the new undo group
int Commit(wxString const& desc, int type, int commitId = -1, AssEntry *single_line = 0);
int Commit(wxString const& desc, int type, int commitId = -1, AssEntry *single_line = nullptr);
/// Comparison function for use when sorting
typedef bool (*CompFunc)(const AssDialogue* lft, const AssDialogue* rgt);

View file

@ -24,7 +24,7 @@ class AssInfo : public AssEntry {
public:
AssInfo(AssInfo const& o) : key(o.key), value(o.value) { }
AssInfo(std::string const& key, std::string const& value) : key(key), value(value) { }
AssInfo(std::string key, std::string value) : key(std::move(key)), value(std::move(value)) { }
AssEntry *Clone() const override { return new AssInfo(*this); }
AssEntryGroup Group() const override { return AssEntryGroup::INFO; }

View file

@ -294,7 +294,7 @@ void AssKaraoke::SplitLines(std::set<AssDialogue*> const& lines, agi::Context *c
bool in_sel = sel.count(diag) > 0;
for (auto const& syl : kara) {
AssDialogue *new_line = new AssDialogue(*diag);
auto new_line = new AssDialogue(*diag);
new_line->Start = syl.start_time;
new_line->End = syl.start_time + syl.duration;

View file

@ -60,7 +60,7 @@ public:
/// @param line Initial line
/// @param auto_split Should the line automatically be split on spaces if there are no k tags?
/// @param normalize Should the total duration of the syllables be forced to equal the line duration?
AssKaraoke(AssDialogue *line = 0, bool auto_split = false, bool normalize = true);
AssKaraoke(AssDialogue *line = nullptr, bool auto_split = false, bool normalize = true);
/// Parse a dialogue line
void SetLine(AssDialogue *line, bool auto_split = false, bool normalize = true);

View file

@ -79,7 +79,7 @@ AssOverrideParameter::~AssOverrideParameter() {
}
template<> std::string AssOverrideParameter::Get<std::string>() const {
if (omitted) throw agi::InternalError("AssOverrideParameter::Get() called on omitted parameter", 0);
if (omitted) throw agi::InternalError("AssOverrideParameter::Get() called on omitted parameter", nullptr);
if (block.get()) {
std::string str(block->GetText());
if (boost::starts_with(str, "{")) str.erase(begin(str));

View file

@ -81,7 +81,7 @@ void AssParser::ParseScriptInfoLine(std::string const& data) {
else if (version_str == "v4.00+")
version = 1;
else
throw SubtitleFormatParseError("Unknown SSA file format version", 0);
throw SubtitleFormatParseError("Unknown SSA file format version", nullptr);
}
// Nothing actually supports the Collisions property and malformed values

View file

@ -80,7 +80,7 @@ class parser {
std::string next_tok() {
if (pos.eof())
throw SubtitleFormatParseError("Malformed style: not enough fields", 0);
throw SubtitleFormatParseError("Malformed style: not enough fields", nullptr);
return agi::str(trim_copy(*pos++));
}
@ -93,7 +93,7 @@ public:
void check_done() const {
if (!pos.eof())
throw SubtitleFormatParseError("Malformed style: too many fields", 0);
throw SubtitleFormatParseError("Malformed style: too many fields", nullptr);
}
std::string next_str() { return next_tok(); }
@ -104,7 +104,7 @@ public:
return boost::lexical_cast<int>(next_tok());
}
catch (boost::bad_lexical_cast const&) {
throw SubtitleFormatParseError("Malformed style: bad int field", 0);
throw SubtitleFormatParseError("Malformed style: bad int field", nullptr);
}
}
@ -113,7 +113,7 @@ public:
return boost::lexical_cast<double>(next_tok());
}
catch (boost::bad_lexical_cast const&) {
throw SubtitleFormatParseError("Malformed style: bad double field", 0);
throw SubtitleFormatParseError("Malformed style: bad double field", nullptr);
}
}

View file

@ -97,5 +97,5 @@ AssStyle *AssStyleStorage::GetStyle(std::string const& name) {
if (boost::iequals(cur->name, name))
return cur.get();
}
return 0;
return nullptr;
}

View file

@ -89,9 +89,9 @@ int AssTime::GetTimeSeconds() const { return (time % 60000) / 1000; }
int AssTime::GetTimeMiliseconds() const { return (time % 1000); }
int AssTime::GetTimeCentiseconds() const { return (time % 1000) / 10; }
SmpteFormatter::SmpteFormatter(agi::vfr::Framerate fps, std::string const& sep)
: fps(fps)
, sep(sep)
SmpteFormatter::SmpteFormatter(agi::vfr::Framerate fps, std::string sep)
: fps(std::move(fps))
, sep(std::move(sep))
{
}

View file

@ -56,7 +56,7 @@ class SmpteFormatter {
std::string sep;
public:
SmpteFormatter(agi::vfr::Framerate fps, std::string const& sep=":");
SmpteFormatter(agi::vfr::Framerate fps, std::string sep=":");
/// Convert an AssTime to a SMPTE timecode
std::string ToSMPTE(AssTime time) const;

View file

@ -105,7 +105,7 @@ AudioBox::AudioBox(wxWindow *parent, agi::Context *context)
wxSizer *VertVolArea = new wxBoxSizer(wxVERTICAL);
VertVolArea->Add(VertVol,1,wxEXPAND,0);
ToggleBitmap *link_btn = new ToggleBitmap(panel, context, "audio/opt/vertical_link", 16, "Audio", wxSize(20, -1));
auto link_btn = new ToggleBitmap(panel, context, "audio/opt/vertical_link", 16, "Audio", wxSize(20, -1));
link_btn->SetMaxSize(wxDefaultSize);
VertVolArea->Add(link_btn, 0, wxRIGHT | wxALIGN_CENTER | wxEXPAND, 0);
OPT_SUB("Audio/Link", &AudioBox::OnVerticalLink, this);
@ -119,7 +119,7 @@ AudioBox::AudioBox(wxWindow *parent, agi::Context *context)
context->karaoke = new AudioKaraoke(panel, context);
// Main sizer
wxBoxSizer *MainSizer = new wxBoxSizer(wxVERTICAL);
auto MainSizer = new wxBoxSizer(wxVERTICAL);
MainSizer->Add(TopSizer,1,wxEXPAND|wxALL,3);
MainSizer->Add(toolbar::GetToolbar(panel, "audio", context, "Audio"),0,wxEXPAND|wxLEFT|wxRIGHT,3);
MainSizer->Add(context->karaoke,0,wxEXPAND|wxALL,3);

View file

@ -55,7 +55,7 @@ AudioColorScheme::AudioColorScheme(int prec, std::string const& scheme_name, int
case AudioStyle_Inactive: opt_base += "Inactive/"; break;
case AudioStyle_Selected: opt_base += "Selection/"; break;
case AudioStyle_Primary: opt_base += "Primary/"; break;
default: throw agi::InternalError("Unknown audio rendering styling", 0);
default: throw agi::InternalError("Unknown audio rendering styling", nullptr);
}
double h_base = OPT_GET(opt_base + "Hue Offset")->GetDouble();

View file

@ -155,7 +155,7 @@ void AudioController::OnAudioProviderChanged()
void AudioController::OpenAudio(agi::fs::path const& url)
{
if (url.empty())
throw agi::InternalError("AudioController::OpenAudio() was passed an empty string. This must not happen.", 0);
throw agi::InternalError("AudioController::OpenAudio() was passed an empty string. This must not happen.", nullptr);
std::unique_ptr<AudioProvider> new_provider;
try {
@ -204,8 +204,8 @@ void AudioController::CloseAudio()
player.reset();
provider.reset();
player = 0;
provider = 0;
player = nullptr;
provider = nullptr;
audio_url.clear();

View file

@ -199,7 +199,7 @@ public:
RecalculateThumb();
}
bool OnMouseEvent(wxMouseEvent &event)
bool OnMouseEvent(wxMouseEvent &event) override
{
if (event.LeftIsDown())
{
@ -357,7 +357,7 @@ public:
pixel_left = std::max(new_pixel_left, 0);
}
bool OnMouseEvent(wxMouseEvent &event)
bool OnMouseEvent(wxMouseEvent &event) override
{
if (event.LeftDown())
{
@ -475,7 +475,7 @@ class AudioMarkerInteractionObject : public AudioDisplayInteractionObject {
public:
AudioMarkerInteractionObject(std::vector<AudioMarker*> markers, AudioTimingController *timing_controller, AudioDisplay *display, wxMouseButton button_used)
: markers(markers)
: markers(std::move(markers))
, timing_controller(timing_controller)
, display(display)
, button_used(button_used)
@ -484,7 +484,7 @@ public:
{
}
bool OnMouseEvent(wxMouseEvent &event)
bool OnMouseEvent(wxMouseEvent &event) override
{
if (event.Dragging())
{
@ -512,7 +512,7 @@ private:
void Split(int point)
{
iterator it = points.lower_bound(point);
auto it = points.lower_bound(point);
if (it == points.end() || it->first != point)
{
assert(it != points.begin());
@ -523,7 +523,7 @@ private:
void Restyle(int start, int end, AudioRenderingStyle style)
{
assert(points.lower_bound(end) != points.end());
for (iterator pt = points.lower_bound(start); pt->first < end; ++pt)
for (auto pt = points.lower_bound(start); pt->first < end; ++pt)
{
if (style > pt->second)
pt->second = style;
@ -536,7 +536,7 @@ public:
points[0] = AudioStyle_Normal;
}
void AddRange(int start, int end, AudioRenderingStyle style)
void AddRange(int start, int end, AudioRenderingStyle style) override
{
if (start < 0) start = 0;
@ -559,7 +559,7 @@ AudioDisplay::AudioDisplay(wxWindow *parent, AudioController *controller, agi::C
, controller(controller)
, scrollbar(agi::util::make_unique<AudioDisplayScrollbar>(this))
, timeline(agi::util::make_unique<AudioDisplayTimeline>(this))
, dragged_object(0)
, dragged_object(nullptr)
, scroll_left(0)
, pixel_audio_width(0)
, ms_per_pixel(0.0)
@ -1078,7 +1078,7 @@ bool AudioDisplay::ForwardMouseEvent(wxMouseEvent &event) {
if (!dragged_object->OnMouseEvent(event))
{
scroll_timer.Stop();
SetDraggedObject(0);
SetDraggedObject(nullptr);
SetCursor(wxNullCursor);
}
return true;
@ -1087,12 +1087,12 @@ bool AudioDisplay::ForwardMouseEvent(wxMouseEvent &event) {
{
// Something is wrong, we might have lost capture somehow.
// Fix state and pretend it didn't happen.
SetDraggedObject(0);
SetDraggedObject(nullptr);
SetCursor(wxNullCursor);
}
const wxPoint mousepos = event.GetPosition();
AudioDisplayInteractionObject *new_obj = 0;
AudioDisplayInteractionObject *new_obj = nullptr;
// Check for scrollbar action
if (scrollbar->GetBounds().Contains(mousepos))
{

View file

@ -54,7 +54,7 @@
template<class Container, class Value>
static inline size_t last_lt_or_eq(Container const& c, Value const& v) {
typename Container::const_iterator it = lower_bound(c.begin(), c.end(), v);
auto it = lower_bound(c.begin(), c.end(), v);
// lower_bound gives first >=
if (it == c.end() || *it > v)
--it;
@ -137,7 +137,7 @@ void AudioKaraoke::OnAudioOpened() {
}
void AudioKaraoke::OnAudioClosed() {
c->audioController->SetTimingController(0);
c->audioController->SetTimingController(nullptr);
}
void AudioKaraoke::SetEnabled(bool en) {
@ -236,8 +236,8 @@ void AudioKaraoke::RenderText() {
// Draw the lines between each syllable
dc.SetPen(wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT));
for (size_t i = 0; i < syl_lines.size(); ++i)
dc.DrawLine(syl_lines[i], 0, syl_lines[i], bmp_size.GetHeight());
for (auto syl_line : syl_lines)
dc.DrawLine(syl_line, 0, syl_line, bmp_size.GetHeight());
}
void AudioKaraoke::AddMenuItem(wxMenu &menu, std::string const& tag, wxString const& help, std::string const& selected) {

View file

@ -37,10 +37,10 @@ class AudioMarkerKeyframe : public AudioMarker {
int position;
public:
AudioMarkerKeyframe(Pen *style, int position) : style(style), position(position) { }
int GetPosition() const { return position; }
FeetStyle GetFeet() const { return Feet_None; }
bool CanSnap() const { return true; }
wxPen GetStyle() const { return *style; }
int GetPosition() const override { return position; }
FeetStyle GetFeet() const override { return Feet_None; }
bool CanSnap() const override { return true; }
wxPen GetStyle() const override { return *style; }
operator int() const { return position; }
};
@ -99,10 +99,10 @@ public:
void SetPosition(int new_pos) { position = new_pos; }
int GetPosition() const { return position; }
FeetStyle GetFeet() const { return Feet_None; }
bool CanSnap() const { return true; }
wxPen GetStyle() const { return style; }
int GetPosition() const override { return position; }
FeetStyle GetFeet() const override { return Feet_None; }
bool CanSnap() const override { return true; }
wxPen GetStyle() const override { return style; }
operator int() const { return position; }
};

View file

@ -151,7 +151,7 @@ public:
/// Get all keyframe markers within a range
/// @param range Time range to get markers for
/// @param[out] out Vector to fill with markers in the range
void GetMarkers(TimeRange const& range, AudioMarkerVector &out) const;
void GetMarkers(TimeRange const& range, AudioMarkerVector &out) const override;
};
/// Marker provider for the current video playback position
@ -170,7 +170,7 @@ public:
VideoPositionMarkerProvider(agi::Context *c);
~VideoPositionMarkerProvider();
void GetMarkers(const TimeRange &range, AudioMarkerVector &out) const;
void GetMarkers(const TimeRange &range, AudioMarkerVector &out) const override;
};
/// Marker provider for lines every second
@ -180,10 +180,10 @@ class SecondsMarkerProvider : public AudioMarkerProvider {
int position;
Marker(Pen *style) : style(style), position(0) { }
int GetPosition() const { return position; }
FeetStyle GetFeet() const { return Feet_None; }
bool CanSnap() const { return false; }
wxPen GetStyle() const;
int GetPosition() const override { return position; }
FeetStyle GetFeet() const override { return Feet_None; }
bool CanSnap() const override { return false; }
wxPen GetStyle() const override;
operator int() const { return position; }
};
@ -203,5 +203,5 @@ class SecondsMarkerProvider : public AudioMarkerProvider {
public:
SecondsMarkerProvider();
void GetMarkers(TimeRange const& range, AudioMarkerVector &out) const;
void GetMarkers(TimeRange const& range, AudioMarkerVector &out) const override;
};

View file

@ -53,7 +53,7 @@ AudioPlayer::AudioPlayer(AudioProvider *provider)
std::unique_ptr<AudioPlayer> AudioPlayerFactory::GetAudioPlayer(AudioProvider *provider) {
std::vector<std::string> list = GetClasses(OPT_GET("Audio/Player")->GetString());
if (list.empty()) throw agi::NoAudioPlayersError("No audio players are available.", 0);
if (list.empty()) throw agi::NoAudioPlayersError("No audio players are available.", nullptr);
std::string error;
for (auto const& factory_name : list) {
@ -64,7 +64,7 @@ std::unique_ptr<AudioPlayer> AudioPlayerFactory::GetAudioPlayer(AudioProvider *p
error += factory_name + " factory: " + err.GetChainedMessage() + "\n";
}
}
throw agi::AudioPlayerOpenError(error, 0);
throw agi::AudioPlayerOpenError(error, nullptr);
}
void AudioPlayerFactory::RegisterProviders() {

View file

@ -59,8 +59,8 @@ OpenALPlayer::OpenALPlayer(AudioProvider *provider)
, start_frame(0)
, cur_frame(0)
, end_frame(0)
, device(0)
, context(0)
, device(nullptr)
, context(nullptr)
, source(0)
, buf_first_free(0)
, buf_first_queued(0)
@ -69,26 +69,26 @@ OpenALPlayer::OpenALPlayer(AudioProvider *provider)
{
try {
// Open device
device = alcOpenDevice(0);
if (!device) throw OpenALException("Failed opening default OpenAL device", 0);
device = alcOpenDevice(nullptr);
if (!device) throw OpenALException("Failed opening default OpenAL device", nullptr);
// Create context
context = alcCreateContext(device, 0);
if (!context) throw OpenALException("Failed creating OpenAL context", 0);
if (!alcMakeContextCurrent(context)) throw OpenALException("Failed selecting OpenAL context", 0);
context = alcCreateContext(device, nullptr);
if (!context) throw OpenALException("Failed creating OpenAL context", nullptr);
if (!alcMakeContextCurrent(context)) throw OpenALException("Failed selecting OpenAL context", nullptr);
// Clear error code
alGetError();
// Generate buffers
alGenBuffers(num_buffers, buffers);
if (alGetError() != AL_NO_ERROR) throw OpenALException("Error generating OpenAL buffers", 0);
if (alGetError() != AL_NO_ERROR) throw OpenALException("Error generating OpenAL buffers", nullptr);
// Generate source
alGenSources(1, &source);
if (alGetError() != AL_NO_ERROR) {
alDeleteBuffers(num_buffers, buffers);
throw OpenALException("Error generating OpenAL source", 0);
throw OpenALException("Error generating OpenAL source", nullptr);
}
}
catch (...)

View file

@ -92,20 +92,20 @@ class OpenALPlayer : public AudioPlayer, wxTimer {
protected:
/// wxTimer override to periodically fill available buffers
void Notify();
void Notify() override;
public:
OpenALPlayer(AudioProvider *provider);
~OpenALPlayer();
void Play(int64_t start,int64_t count);
void Stop();
bool IsPlaying() { return playing; }
void Play(int64_t start,int64_t count) override;
void Stop() override;
bool IsPlaying() override { return playing; }
int64_t GetEndPosition() { return end_frame; }
int64_t GetCurrentPosition();
void SetEndPosition(int64_t pos);
int64_t GetEndPosition() override { return end_frame; }
int64_t GetCurrentPosition() override;
void SetEndPosition(int64_t pos) override;
void SetVolume(double vol) { volume = vol; }
void SetVolume(double vol) override { volume = vol; }
};
#endif

View file

@ -59,7 +59,7 @@ void AudioProvider::GetAudioWithVolume(void *buf, int64_t start, int64_t count,
if (volume == 1.0) return;
if (bytes_per_sample != 2)
throw agi::InternalError("GetAudioWithVolume called on unconverted audio stream", 0);
throw agi::InternalError("GetAudioWithVolume called on unconverted audio stream", nullptr);
short *buffer = static_cast<int16_t *>(buf);
for (size_t i = 0; i < (size_t)count; ++i)
@ -159,7 +159,7 @@ std::unique_ptr<AudioProvider> AudioProviderFactory::GetProvider(agi::fs::path c
if (!provider) {
std::vector<std::string> list = GetClasses(OPT_GET("Audio/Provider")->GetString());
if (list.empty()) throw agi::NoAudioProvidersError("No audio providers are available.", 0);
if (list.empty()) throw agi::NoAudioProvidersError("No audio providers are available.", nullptr);
for (auto const& name : list) {
provider = creator.try_create(name, [&]() { return Create(name, filename); });
@ -169,9 +169,9 @@ std::unique_ptr<AudioProvider> AudioProviderFactory::GetProvider(agi::fs::path c
if (!provider) {
if (creator.found_audio)
throw agi::AudioProviderOpenError(creator.msg, 0);
throw agi::AudioProviderOpenError(creator.msg, nullptr);
if (creator.found_file)
throw agi::AudioDataNotFoundError(creator.msg, 0);
throw agi::AudioDataNotFoundError(creator.msg, nullptr);
throw agi::fs::FileNotFound(filename);
}
@ -194,7 +194,7 @@ std::unique_ptr<AudioProvider> AudioProviderFactory::GetProvider(agi::fs::path c
// Convert to HD
if (cache == 2) return agi::util::make_unique<HDAudioProvider>(std::move(provider), &progress);
throw agi::AudioCacheOpenError("Unknown caching method", 0);
throw agi::AudioCacheOpenError("Unknown caching method", nullptr);
}
void AudioProviderFactory::RegisterProviders() {

View file

@ -38,13 +38,13 @@ class BitdepthConvertAudioProvider : public AudioProviderWrapper {
public:
BitdepthConvertAudioProvider(std::unique_ptr<AudioProvider> src) : AudioProviderWrapper(std::move(src)) {
if (bytes_per_sample > 8)
throw agi::AudioProviderOpenError("Audio format converter: audio with bitdepths greater than 64 bits/sample is currently unsupported", 0);
throw agi::AudioProviderOpenError("Audio format converter: audio with bitdepths greater than 64 bits/sample is currently unsupported", nullptr);
src_bytes_per_sample = bytes_per_sample;
bytes_per_sample = sizeof(Target);
}
void FillBuffer(void *buf, int64_t start, int64_t count) const {
void FillBuffer(void *buf, int64_t start, int64_t count) const override {
std::vector<char> src_buf(count * src_bytes_per_sample * channels);
source->GetAudio(&src_buf[0], start, count);
@ -81,7 +81,7 @@ public:
float_samples = false;
}
void FillBuffer(void *buf, int64_t start, int64_t count) const {
void FillBuffer(void *buf, int64_t start, int64_t count) const override {
std::vector<Source> src_buf(count * channels);
source->GetAudio(&src_buf[0], start, count);
@ -110,14 +110,14 @@ class DownmixAudioProvider : public AudioProviderWrapper {
public:
DownmixAudioProvider(std::unique_ptr<AudioProvider> src) : AudioProviderWrapper(std::move(src)) {
if (bytes_per_sample != 2)
throw agi::InternalError("DownmixAudioProvider requires 16-bit input", 0);
throw agi::InternalError("DownmixAudioProvider requires 16-bit input", nullptr);
if (channels == 1)
throw agi::InternalError("DownmixAudioProvider requires multi-channel input", 0);
throw agi::InternalError("DownmixAudioProvider requires multi-channel input", nullptr);
src_channels = channels;
channels = 1;
}
void FillBuffer(void *buf, int64_t start, int64_t count) const {
void FillBuffer(void *buf, int64_t start, int64_t count) const override {
if (count == 0) return;
std::vector<int16_t> src_buf(count * src_channels);
@ -140,15 +140,15 @@ class SampleDoublingAudioProvider : public AudioProviderWrapper {
public:
SampleDoublingAudioProvider(std::unique_ptr<AudioProvider> src) : AudioProviderWrapper(std::move(src)) {
if (source->GetBytesPerSample() != 2)
throw agi::InternalError("UpsampleAudioProvider requires 16-bit input", 0);
throw agi::InternalError("UpsampleAudioProvider requires 16-bit input", nullptr);
if (source->GetChannels() != 1)
throw agi::InternalError("UpsampleAudioProvider requires mono input", 0);
throw agi::InternalError("UpsampleAudioProvider requires mono input", nullptr);
sample_rate *= 2;
num_samples *= 2;
}
void FillBuffer(void *buf, int64_t start, int64_t count) const {
void FillBuffer(void *buf, int64_t start, int64_t count) const override {
if (count == 0) return;
int not_end = start + count < num_samples;

View file

@ -36,7 +36,7 @@
class DummyAudioProvider : public AudioProvider {
bool noise;
void FillBuffer(void *buf, int64_t start, int64_t count) const;
void FillBuffer(void *buf, int64_t start, int64_t count) const override;
public:
DummyAudioProvider(agi::fs::path const& uri);

View file

@ -58,10 +58,10 @@ FFmpegSourceAudioProvider::FFmpegSourceAudioProvider(agi::fs::path const& filena
LoadAudio(filename);
}
catch (std::string const& err) {
throw agi::AudioProviderOpenError(err, 0);
throw agi::AudioProviderOpenError(err, nullptr);
}
catch (const char *err) {
throw agi::AudioProviderOpenError(err, 0);
throw agi::AudioProviderOpenError(err, nullptr);
}
void FFmpegSourceAudioProvider::LoadAudio(agi::fs::path const& filename) {
@ -70,12 +70,12 @@ void FFmpegSourceAudioProvider::LoadAudio(agi::fs::path const& filename) {
if (ErrInfo.SubType == FFMS_ERROR_FILE_READ)
throw agi::fs::FileNotFound(std::string(ErrInfo.Buffer));
else
throw agi::AudioDataNotFoundError(ErrInfo.Buffer, 0);
throw agi::AudioDataNotFoundError(ErrInfo.Buffer, nullptr);
}
std::map<int, std::string> TrackList = GetTracksOfType(Indexer, FFMS_TYPE_AUDIO);
if (TrackList.empty())
throw agi::AudioDataNotFoundError("no audio tracks found", 0);
throw agi::AudioDataNotFoundError("no audio tracks found", nullptr);
// initialize the track number to an invalid value so we can detect later on
// whether the user actually had to choose a track or not
@ -103,7 +103,7 @@ void FFmpegSourceAudioProvider::LoadAudio(agi::fs::path const& filename) {
if (TrackNumber < 0)
TrackNumber = FFMS_GetFirstTrackOfType(Index, FFMS_TYPE_AUDIO, &ErrInfo);
if (TrackNumber < 0)
throw agi::AudioDataNotFoundError(std::string("Couldn't find any audio tracks: ") + ErrInfo.Buffer, 0);
throw agi::AudioDataNotFoundError(std::string("Couldn't find any audio tracks: ") + ErrInfo.Buffer, nullptr);
// index is valid and track number is now set,
// but do we have indexing info for the desired audio track?
@ -145,7 +145,7 @@ void FFmpegSourceAudioProvider::LoadAudio(agi::fs::path const& filename) {
AudioSource = FFMS_CreateAudioSource(filename.string().c_str(), TrackNumber, Index, -1, &ErrInfo);
if (!AudioSource)
throw agi::AudioProviderOpenError(std::string("Failed to open audio track: ") + ErrInfo.Buffer, 0);
throw agi::AudioProviderOpenError(std::string("Failed to open audio track: ") + ErrInfo.Buffer, nullptr);
const FFMS_AudioProperties AudioInfo = *FFMS_GetAudioProperties(AudioSource);
@ -153,7 +153,7 @@ void FFmpegSourceAudioProvider::LoadAudio(agi::fs::path const& filename) {
sample_rate = AudioInfo.SampleRate;
num_samples = AudioInfo.NumSamples;
if (channels <= 0 || sample_rate <= 0 || num_samples <= 0)
throw agi::AudioProviderOpenError("sanity check failed, consult your local psychiatrist", 0);
throw agi::AudioProviderOpenError("sanity check failed, consult your local psychiatrist", nullptr);
switch (AudioInfo.SampleFormat) {
case FFMS_FMT_U8: bytes_per_sample = 1; float_samples = false; break;
@ -162,7 +162,7 @@ void FFmpegSourceAudioProvider::LoadAudio(agi::fs::path const& filename) {
case FFMS_FMT_FLT: bytes_per_sample = 4; float_samples = true; break;
case FFMS_FMT_DBL: bytes_per_sample = 8; float_samples = true; break;
default:
throw agi::AudioProviderOpenError("unknown or unsupported sample format", 0);
throw agi::AudioProviderOpenError("unknown or unsupported sample format", nullptr);
}
#if FFMS_VERSION >= ((2 << 24) | (17 << 16) | (4 << 8) | 0)

View file

@ -47,11 +47,11 @@ class FFmpegSourceAudioProvider : public AudioProvider, FFmpegSourceProvider {
mutable FFMS_ErrorInfo ErrInfo; ///< FFMS error codes/messages
void LoadAudio(agi::fs::path const& filename);
void FillBuffer(void *buf, int64_t start, int64_t count) const;
void FillBuffer(void *buf, int64_t start, int64_t count) const override;
public:
FFmpegSourceAudioProvider(agi::fs::path const& filename);
bool NeedsCache() const { return true; }
bool NeedsCache() const override { return true; }
};
#endif

View file

@ -95,7 +95,7 @@ HDAudioProvider::HDAudioProvider(std::unique_ptr<AudioProvider> src, agi::Backgr
{
// Check free space
if ((uint64_t)num_samples * channels * bytes_per_sample > agi::fs::FreeSpace(cache_dir()))
throw agi::AudioCacheOpenError("Not enough free disk space in " + cache_dir().string() + " to cache the audio", 0);
throw agi::AudioCacheOpenError("Not enough free disk space in " + cache_dir().string() + " to cache the audio", nullptr);
diskCacheFilename = cache_path();

View file

@ -51,7 +51,7 @@ class HDAudioProvider : public AudioProviderWrapper {
/// @param ps Sink for progress reporting
void FillCache(AudioProvider *src, std::ofstream *file, agi::ProgressSink *ps);
void FillBuffer(void *buf, int64_t start, int64_t count) const;
void FillBuffer(void *buf, int64_t start, int64_t count) const override;
public:
HDAudioProvider(std::unique_ptr<AudioProvider> source, agi::BackgroundRunner *br);

View file

@ -24,7 +24,7 @@
class LockAudioProvider : public AudioProviderWrapper {
mutable std::mutex mutex;
void FillBuffer(void *buf, int64_t start, int64_t count) const;
void FillBuffer(void *buf, int64_t start, int64_t count) const override;
public:
LockAudioProvider(std::unique_ptr<AudioProvider> source);
};

View file

@ -52,7 +52,7 @@
#endif
PCMAudioProvider::PCMAudioProvider(agi::fs::path const& filename)
: current_mapping(0)
: current_mapping(nullptr)
, mapping_start(0)
, mapping_length(0)
#ifdef _WIN32
@ -154,7 +154,7 @@ char * PCMAudioProvider::EnsureRangeAccessible(int64_t range_start, int64_t rang
mapping_start_li.LowPart, // Offset low-part
mapping_length); // Length of view
#else
current_mapping = mmap(0, mapping_length, PROT_READ, MAP_PRIVATE, file_handle, mapping_start);
current_mapping = mmap(nullptr, mapping_length, PROT_READ, MAP_PRIVATE, file_handle, mapping_start);
#endif
if (!current_mapping)
@ -263,9 +263,9 @@ public:
// Check magic values
if (!CheckFourcc(header.ch.type, "RIFF"))
throw agi::AudioDataNotFoundError("File is not a RIFF file", 0);
throw agi::AudioDataNotFoundError("File is not a RIFF file", nullptr);
if (!CheckFourcc(header.format, "WAVE"))
throw agi::AudioDataNotFoundError("File is not a RIFF WAV file", 0);
throw agi::AudioDataNotFoundError("File is not a RIFF WAV file", nullptr);
// Count how much more data we can have in the entire file
// The first 4 bytes are already eaten by the header.format field
@ -288,13 +288,13 @@ public:
filepos += sizeof(ch);
if (CheckFourcc(ch.type, "fmt ")) {
if (got_fmt_header) throw agi::AudioProviderOpenError("Invalid file, multiple 'fmt ' chunks", 0);
if (got_fmt_header) throw agi::AudioProviderOpenError("Invalid file, multiple 'fmt ' chunks", nullptr);
got_fmt_header = true;
fmtChunk &fmt = *(fmtChunk*)EnsureRangeAccessible(filepos, sizeof(fmtChunk));
if (fmt.compression != 1)
throw agi::AudioProviderOpenError("Can't use file, not PCM encoding", 0);
throw agi::AudioProviderOpenError("Can't use file, not PCM encoding", nullptr);
// Set stuff inherited from the AudioProvider class
sample_rate = fmt.samplerate;
@ -306,7 +306,7 @@ public:
// This won't pick up 'data' chunks inside 'wavl' chunks
// since the 'wavl' chunks wrap those.
if (!got_fmt_header) throw agi::AudioProviderOpenError("Found 'data' chunk before 'fmt ' chunk, file is invalid.", 0);
if (!got_fmt_header) throw agi::AudioProviderOpenError("Found 'data' chunk before 'fmt ' chunk, file is invalid.", nullptr);
int64_t samples = ch.size / bytes_per_sample;
int64_t frames = samples / channels;
@ -400,7 +400,7 @@ public:
int64_t smallest_possible_file = sizeof(RiffChunk) + sizeof(FormatChunk) + sizeof(DataChunk);
if (file_size < smallest_possible_file)
throw agi::AudioDataNotFoundError("File is too small to be a Wave64 file", 0);
throw agi::AudioDataNotFoundError("File is too small to be a Wave64 file", nullptr);
// Read header
// This should throw an exception if the mapping fails
@ -410,9 +410,9 @@ public:
// Check magic values
if (!CheckGuid(header.riff_guid, w64GuidRIFF))
throw agi::AudioDataNotFoundError("File is not a Wave64 RIFF file", 0);
throw agi::AudioDataNotFoundError("File is not a Wave64 RIFF file", nullptr);
if (!CheckGuid(header.format_guid, w64GuidWAVE))
throw agi::AudioDataNotFoundError("File is not a Wave64 WAVE file", 0);
throw agi::AudioDataNotFoundError("File is not a Wave64 WAVE file", nullptr);
// Count how much more data we can have in the entire file
uint64_t data_left = header.file_size - sizeof(RiffChunk);
@ -432,15 +432,15 @@ public:
if (CheckGuid(chunk_guid, w64Guidfmt)) {
if (got_fmt_header)
throw agi::AudioProviderOpenError("Bad file, found more than one 'fmt' chunk", 0);
throw agi::AudioProviderOpenError("Bad file, found more than one 'fmt' chunk", nullptr);
FormatChunk &fmt = *(FormatChunk*)EnsureRangeAccessible(filepos, sizeof(FormatChunk));
got_fmt_header = true;
if (fmt.format.wFormatTag == 3)
throw agi::AudioProviderOpenError("File is IEEE 32 bit float format which isn't supported. Bug the developers if this matters.", 0);
throw agi::AudioProviderOpenError("File is IEEE 32 bit float format which isn't supported. Bug the developers if this matters.", nullptr);
if (fmt.format.wFormatTag != 1)
throw agi::AudioProviderOpenError("Can't use file, not PCM encoding", 0);
throw agi::AudioProviderOpenError("Can't use file, not PCM encoding", nullptr);
// Set stuff inherited from the AudioProvider class
sample_rate = fmt.format.nSamplesPerSec;
@ -449,7 +449,7 @@ public:
}
else if (CheckGuid(chunk_guid, w64Guiddata)) {
if (!got_fmt_header)
throw agi::AudioProviderOpenError("Found 'data' chunk before 'fmt ' chunk, file is invalid.", 0);
throw agi::AudioProviderOpenError("Found 'data' chunk before 'fmt ' chunk, file is invalid.", nullptr);
int64_t samples = chunk_size / bytes_per_sample;
int64_t frames = samples / channels;
@ -498,7 +498,7 @@ std::unique_ptr<AudioProvider> CreatePCMAudioProvider(agi::fs::path const& filen
}
if (wrong_file_type)
throw agi::AudioDataNotFoundError(msg, 0);
throw agi::AudioDataNotFoundError(msg, nullptr);
else
throw agi::AudioProviderOpenError(msg, 0);
throw agi::AudioProviderOpenError(msg, nullptr);
}

View file

@ -77,7 +77,7 @@ protected:
IndexVector index_points;
void FillBuffer(void *buf, int64_t start, int64_t count) const;
void FillBuffer(void *buf, int64_t start, int64_t count) const override;
};
// Construct the right PCM audio provider (if any) for the file

View file

@ -53,7 +53,7 @@ RAMAudioProvider::RAMAudioProvider(std::unique_ptr<AudioProvider> src, agi::Back
blockcache.resize((source->GetNumSamples() * source->GetBytesPerSample() + CacheBlockSize - 1) >> CacheBits);
}
catch (std::bad_alloc const&) {
throw agi::AudioCacheOpenError("Couldn't open audio, not enough ram available.", 0);
throw agi::AudioCacheOpenError("Couldn't open audio, not enough ram available.", nullptr);
}
br->Run(std::bind(&RAMAudioProvider::FillCache, this, source.get(), std::placeholders::_1));

View file

@ -50,7 +50,7 @@ class RAMAudioProvider : public AudioProviderWrapper {
#endif
void FillCache(AudioProvider *source, agi::ProgressSink *ps);
void FillBuffer(void *buf, int64_t start, int64_t count) const;
void FillBuffer(void *buf, int64_t start, int64_t count) const override;
public:
RAMAudioProvider(std::unique_ptr<AudioProvider> source, agi::BackgroundRunner *br);

View file

@ -71,8 +71,8 @@ AudioRenderer::AudioRenderer()
, cache_bitmap_width(32) // arbitrary value for now
, cache_bitmap_maxsize(0)
, cache_renderer_maxsize(0)
, renderer(0)
, provider(0)
, renderer(nullptr)
, provider(nullptr)
{
for (int i = 0; i < AudioStyle_MAX; ++i)
bitmaps.emplace_back(256, AudioRendererBitmapCacheBitmapFactory(this));

View file

@ -254,7 +254,7 @@ protected:
public:
/// @brief Constructor
AudioRendererBitmapProvider() : provider(0), pixel_ms(0), amplitude_scale(0) { };
AudioRendererBitmapProvider() : provider(nullptr), pixel_ms(0), amplitude_scale(0) { };
/// @brief Destructor
virtual ~AudioRendererBitmapProvider() { }

View file

@ -70,7 +70,7 @@ struct AudioSpectrumCacheBlockFactory {
/// The filling is delegated to the spectrum renderer
BlockType ProduceBlock(size_t i)
{
float *res = new float[((size_t)1)<<spectrum->derivation_size];
auto res = new float[((size_t)1)<<spectrum->derivation_size];
spectrum->FillBlock(i, res);
return BlockType(res);
}
@ -100,9 +100,9 @@ AudioSpectrumRenderer::AudioSpectrumRenderer(std::string const& color_scheme_nam
: derivation_size(8)
, derivation_dist(8)
#ifdef WITH_FFTW3
, dft_plan(0)
, dft_input(0)
, dft_output(0)
, dft_plan(nullptr)
, dft_input(nullptr)
, dft_output(nullptr)
#endif
{
colors.reserve(AudioStyle_MAX);
@ -125,9 +125,9 @@ void AudioSpectrumRenderer::RecreateCache()
fftw_destroy_plan(dft_plan);
fftw_free(dft_input);
fftw_free(dft_output);
dft_plan = 0;
dft_input = 0;
dft_output = 0;
dft_plan = nullptr;
dft_input = nullptr;
dft_output = nullptr;
}
#endif

View file

@ -71,7 +71,7 @@ class AudioSpectrumRenderer : public AudioRendererBitmapProvider {
///
/// Overrides the OnSetProvider event handler in the base class, to reset things
/// when the audio provider is changed.
void OnSetProvider();
void OnSetProvider() override;
/// @brief Recreates the cache
///
@ -117,10 +117,10 @@ public:
/// @param bmp [in,out] Bitmap to render into, also carries length information
/// @param start First column of pixel data in display to render
/// @param style Style to render audio in
void Render(wxBitmap &bmp, int start, AudioRenderingStyle style);
void Render(wxBitmap &bmp, int start, AudioRenderingStyle style) override;
/// @brief Render blank area
void RenderBlank(wxDC &dc, const wxRect &rect, AudioRenderingStyle style);
void RenderBlank(wxDC &dc, const wxRect &rect, AudioRenderingStyle style) override;
/// @brief Set the derivation resolution
/// @param derivation_size Binary logarithm of number of samples to use in deriving frequency-power data
@ -135,5 +135,5 @@ public:
/// @brief Cleans up the cache
/// @param max_size Maximum size in bytes for the cache
void AgeCache(size_t max_size);
void AgeCache(size_t max_size) override;
};

View file

@ -55,7 +55,7 @@ enum {
};
AudioWaveformRenderer::AudioWaveformRenderer(std::string const& color_scheme_name)
: audio_buffer(0)
: audio_buffer(nullptr)
, render_averages(OPT_GET("Audio/Display/Waveform Style")->GetInt() == Waveform_MaxAvg)
{
colors.reserve(AudioStyle_MAX);
@ -168,13 +168,13 @@ void AudioWaveformRenderer::RenderBlank(wxDC &dc, const wxRect &rect, AudioRende
void AudioWaveformRenderer::OnSetProvider()
{
delete[] audio_buffer;
audio_buffer = 0;
audio_buffer = nullptr;
}
void AudioWaveformRenderer::OnSetMillisecondsPerPixel()
{
delete[] audio_buffer;
audio_buffer = 0;
audio_buffer = nullptr;
}
wxArrayString AudioWaveformRenderer::GetWaveformStyles() {

View file

@ -50,8 +50,8 @@ class AudioWaveformRenderer : public AudioRendererBitmapProvider {
/// Whether to render max+avg or just max
bool render_averages;
void OnSetProvider();
void OnSetMillisecondsPerPixel();
void OnSetProvider() override;
void OnSetMillisecondsPerPixel() override;
public:
/// @brief Constructor
@ -65,16 +65,16 @@ public:
/// @param bmp [in,out] Bitmap to render into, also carries length information
/// @param start First column of pixel data in display to render
/// @param style Style to render audio in
void Render(wxBitmap &bmp, int start, AudioRenderingStyle style);
void Render(wxBitmap &bmp, int start, AudioRenderingStyle style) override;
/// @brief Render blank area
void RenderBlank(wxDC &dc, const wxRect &rect, AudioRenderingStyle style);
void RenderBlank(wxDC &dc, const wxRect &rect, AudioRenderingStyle style) override;
/// @brief Cleans up the cache
/// @param max_size Maximum size in bytes for the cache
///
/// Does nothing for waveform renderer, since it does not have a backend cache
void AgeCache(size_t max_size) { }
void AgeCache(size_t max_size) override { }
/// Get a list of waveform rendering modes
static wxArrayString GetWaveformStyles();

View file

@ -71,10 +71,10 @@ class DialogueTimingMarker : public AudioMarker {
TimeableLine *line;
public:
int GetPosition() const { return position; }
wxPen GetStyle() const { return *style; }
FeetStyle GetFeet() const { return feet; }
bool CanSnap() const { return true; }
int GetPosition() const override { return position; }
wxPen GetStyle() const override { return *style; }
FeetStyle GetFeet() const override { return feet; }
bool CanSnap() const override { return true; }
/// Move the marker to a new position
/// @param new_position The position to move the marker to, in milliseconds
@ -179,7 +179,7 @@ public:
/// @param style_left The rendering style for the start marker
/// @param style_right The rendering style for the end marker
TimeableLine(AudioRenderingStyle style, const Pen *style_left, const Pen *style_right)
: line(0)
: line(nullptr)
, style(style)
, marker1(0, style_left, AudioMarker::Feet_Right, style, this)
, marker2(0, style_right, AudioMarker::Feet_Left, style, this)
@ -382,27 +382,27 @@ class AudioTimingControllerDialogue : public AudioTimingController {
public:
// AudioMarkerProvider interface
void GetMarkers(const TimeRange &range, AudioMarkerVector &out_markers) const;
void GetMarkers(const TimeRange &range, AudioMarkerVector &out_markers) const override;
// AudioTimingController interface
wxString GetWarningMessage() const;
TimeRange GetIdealVisibleTimeRange() const;
TimeRange GetPrimaryPlaybackRange() const;
TimeRange GetActiveLineRange() const;
void GetRenderingStyles(AudioRenderingStyleRanges &ranges) const;
void GetLabels(TimeRange const& range, std::vector<AudioLabel> &out) const { }
void Next(NextMode mode);
void Prev();
void Commit();
void Revert();
void AddLeadIn();
void AddLeadOut();
void ModifyLength(int delta, bool shift_following);
void ModifyStart(int delta);
bool IsNearbyMarker(int ms, int sensitivity) const;
std::vector<AudioMarker*> OnLeftClick(int ms, bool ctrl_down, int sensitivity, int snap_range);
std::vector<AudioMarker*> OnRightClick(int ms, bool, int sensitivity, int snap_range);
void OnMarkerDrag(std::vector<AudioMarker*> const& markers, int new_position, int snap_range);
wxString GetWarningMessage() const override;
TimeRange GetIdealVisibleTimeRange() const override;
TimeRange GetPrimaryPlaybackRange() const override;
TimeRange GetActiveLineRange() const override;
void GetRenderingStyles(AudioRenderingStyleRanges &ranges) const override;
void GetLabels(TimeRange const& range, std::vector<AudioLabel> &out) const override { }
void Next(NextMode mode) override;
void Prev() override;
void Commit() override;
void Revert() override;
void AddLeadIn() override;
void AddLeadOut() override;
void ModifyLength(int delta, bool shift_following) override;
void ModifyStart(int delta) override;
bool IsNearbyMarker(int ms, int sensitivity) const override;
std::vector<AudioMarker*> OnLeftClick(int ms, bool ctrl_down, int sensitivity, int snap_range) override;
std::vector<AudioMarker*> OnRightClick(int ms, bool, int sensitivity, int snap_range) override;
void OnMarkerDrag(std::vector<AudioMarker*> const& markers, int new_position, int snap_range) override;
/// Constructor
/// @param c Project context
@ -555,7 +555,7 @@ void AudioTimingControllerDialogue::DoCommit(bool user_triggered)
}
else
{
AssDialogue *amend = modified_lines.size() == 1 ? (*modified_lines.begin())->GetLine() : 0;
AssDialogue *amend = modified_lines.size() == 1 ? (*modified_lines.begin())->GetLine() : nullptr;
commit_id = context->ass->Commit(_("timing"), AssFile::COMMIT_DIAG_TIME, commit_id, amend);
}
@ -857,7 +857,7 @@ int AudioTimingControllerDialogue::SnapPosition(int position, int snap_range, st
return position;
TimeRange snap_time_range(position - snap_range, position + snap_range);
const AudioMarker *snap_marker = 0;
const AudioMarker *snap_marker = nullptr;
AudioMarkerVector potential_snaps;
GetMarkers(snap_time_range, potential_snaps);
for (auto marker : potential_snaps)

View file

@ -49,10 +49,10 @@ class KaraokeMarker : public AudioMarker {
FeetStyle style;
public:
int GetPosition() const { return position; }
wxPen GetStyle() const { return *pen; }
FeetStyle GetFeet() const { return style; }
bool CanSnap() const { return false; }
int GetPosition() const override { return position; }
wxPen GetStyle() const override { return *pen; }
FeetStyle GetFeet() const override { return style; }
bool CanSnap() const override { return false; }
void Move(int new_pos) { position = new_pos; }
@ -65,7 +65,7 @@ public:
KaraokeMarker(int position)
: position(position)
, pen(0)
, pen(nullptr)
, style(Feet_None)
{
}
@ -127,25 +127,25 @@ class AudioTimingControllerKaraoke : public AudioTimingController {
public:
// AudioTimingController implementation
void GetMarkers(const TimeRange &range, AudioMarkerVector &out_markers) const;
wxString GetWarningMessage() const { return ""; }
TimeRange GetIdealVisibleTimeRange() const;
void GetRenderingStyles(AudioRenderingStyleRanges &ranges) const;
TimeRange GetPrimaryPlaybackRange() const;
TimeRange GetActiveLineRange() const;
void GetLabels(const TimeRange &range, std::vector<AudioLabel> &out_labels) const;
void Next(NextMode mode);
void Prev();
void Commit();
void Revert();
void AddLeadIn();
void AddLeadOut();
void ModifyLength(int delta, bool shift_following);
void ModifyStart(int delta);
bool IsNearbyMarker(int ms, int sensitivity) const;
std::vector<AudioMarker*> OnLeftClick(int ms, bool, int sensitivity, int);
std::vector<AudioMarker*> OnRightClick(int ms, bool, int, int);
void OnMarkerDrag(std::vector<AudioMarker*> const& marker, int new_position, int);
void GetMarkers(const TimeRange &range, AudioMarkerVector &out_markers) const override;
wxString GetWarningMessage() const override { return ""; }
TimeRange GetIdealVisibleTimeRange() const override;
void GetRenderingStyles(AudioRenderingStyleRanges &ranges) const override;
TimeRange GetPrimaryPlaybackRange() const override;
TimeRange GetActiveLineRange() const override;
void GetLabels(const TimeRange &range, std::vector<AudioLabel> &out_labels) const override;
void Next(NextMode mode) override;
void Prev() override;
void Commit() override;
void Revert() override;
void AddLeadIn() override;
void AddLeadOut() override;
void ModifyLength(int delta, bool shift_following) override;
void ModifyStart(int delta) override;
bool IsNearbyMarker(int ms, int sensitivity) const override;
std::vector<AudioMarker*> OnLeftClick(int ms, bool, int sensitivity, int) override;
std::vector<AudioMarker*> OnRightClick(int ms, bool, int, int) override;
void OnMarkerDrag(std::vector<AudioMarker*> const& marker, int new_position, int) override;
AudioTimingControllerKaraoke(agi::Context *c, AssKaraoke *kara, agi::signal::Connection& file_changed);
};

View file

@ -197,7 +197,7 @@ namespace Automation4 {
return config_dialog->CreateWindow(parent);
}
return 0;
return nullptr;
}
void ExportFilter::LoadSettings(bool is_default, agi::Context *c) {
@ -222,7 +222,7 @@ namespace Automation4 {
wxDialog w; // container dialog box
w.SetExtraStyle(wxWS_EX_VALIDATE_RECURSIVELY);
w.Create(bsr->GetParentWindow(), -1, to_wx(bsr->GetTitle()));
wxBoxSizer *s = new wxBoxSizer(wxHORIZONTAL); // sizer for putting contents in
auto s = new wxBoxSizer(wxHORIZONTAL); // sizer for putting contents in
wxWindow *ww = config_dialog->CreateWindow(&w); // generate actual dialog contents
s->Add(ww, 0, wxALL, 5); // add contents to dialog
w.SetSizerAndFit(s);
@ -331,8 +331,8 @@ namespace Automation4 {
}
// AutoloadScriptManager
AutoloadScriptManager::AutoloadScriptManager(std::string const& path)
: path(path)
AutoloadScriptManager::AutoloadScriptManager(std::string path)
: path(std::move(path))
{
Reload();
}
@ -454,16 +454,16 @@ namespace Automation4 {
}
// ScriptFactory
ScriptFactory::ScriptFactory(std::string const& engine_name, std::string const& filename_pattern)
: engine_name(engine_name)
, filename_pattern(filename_pattern)
ScriptFactory::ScriptFactory(std::string engine_name, std::string filename_pattern)
: engine_name(std::move(engine_name))
, filename_pattern(std::move(filename_pattern))
{
}
void ScriptFactory::Register(std::unique_ptr<ScriptFactory> factory)
{
if (find(Factories().begin(), Factories().end(), factory) != Factories().end())
throw agi::InternalError("Automation 4: Attempt to register the same script factory multiple times. This should never happen.", 0);
throw agi::InternalError("Automation 4: Attempt to register the same script factory multiple times. This should never happen.", nullptr);
Factories().emplace_back(std::move(factory));
}

View file

@ -81,8 +81,8 @@ namespace Automation4 {
public:
ExportFilter(std::string const& name, std::string const& description, int priority);
wxWindow* GetConfigDialogWindow(wxWindow *parent, agi::Context *c);
void LoadSettings(bool is_default, agi::Context *c);
wxWindow* GetConfigDialogWindow(wxWindow *parent, agi::Context *c) override;
void LoadSettings(bool is_default, agi::Context *c) override;
// Subclasses must implement ProcessSubs from AssExportFilter
};
@ -128,12 +128,12 @@ namespace Automation4 {
BackgroundScriptRunner *bsr;
int trace_level;
public:
void SetIndeterminate() { impl->SetIndeterminate(); }
void SetTitle(std::string const& title) { impl->SetTitle(title); }
void SetMessage(std::string const& msg) { impl->SetMessage(msg); }
void SetProgress(int64_t cur, int64_t max) { impl->SetProgress(cur, max); }
void Log(std::string const& str) { impl->Log(str); }
bool IsCancelled() { return impl->IsCancelled(); }
void SetIndeterminate() override { impl->SetIndeterminate(); }
void SetTitle(std::string const& title) override { impl->SetTitle(title); }
void SetMessage(std::string const& msg) override { impl->SetMessage(msg); }
void SetProgress(int64_t cur, int64_t max) override { impl->SetProgress(cur, max); }
void Log(std::string const& str) override { impl->Log(str); }
bool IsCancelled() override { return impl->IsCancelled(); }
/// Show the passed dialog on the GUI thread, blocking the calling
/// thread until it closes
@ -225,15 +225,15 @@ namespace Automation4 {
void OnSubtitlesSave();
public:
LocalScriptManager(agi::Context *context);
void Reload();
void Reload() override;
};
/// Manager for scripts in the autoload directory
class AutoloadScriptManager : public ScriptManager {
std::string path;
public:
AutoloadScriptManager(std::string const& path);
void Reload();
AutoloadScriptManager(std::string path);
void Reload() override;
};
/// Both a base class for script factories and a manager of registered
@ -254,7 +254,7 @@ namespace Automation4 {
static std::vector<std::unique_ptr<ScriptFactory>>& Factories();
protected:
ScriptFactory(std::string const& engine_name, std::string const& filename_pattern);
ScriptFactory(std::string engine_name, std::string filename_pattern);
public:
virtual ~ScriptFactory() { }
@ -285,16 +285,16 @@ namespace Automation4 {
public:
UnknownScript(agi::fs::path const& filename) : Script(filename) { }
void Reload() { }
void Reload() override { }
std::string GetName() const { return GetFilename().stem().string(); }
std::string GetDescription() const { return from_wx(_("File was not recognized as a script")); }
std::string GetAuthor() const { return ""; }
std::string GetVersion() const { return ""; }
bool GetLoadedState() const { return false; }
std::string GetName() const override { return GetFilename().stem().string(); }
std::string GetDescription() const override { return from_wx(_("File was not recognized as a script")); }
std::string GetAuthor() const override { return ""; }
std::string GetVersion() const override { return ""; }
bool GetLoadedState() const override { return false; }
std::vector<cmd::Command*> GetMacros() const { return std::vector<cmd::Command*>(); }
std::vector<ExportFilter*> GetFilters() const { return std::vector<ExportFilter*>(); }
std::vector<SubtitleFormat*> GetFormats() const { return std::vector<SubtitleFormat*>(); }
std::vector<cmd::Command*> GetMacros() const override { return std::vector<cmd::Command*>(); }
std::vector<ExportFilter*> GetFilters() const override { return std::vector<ExportFilter*>(); }
std::vector<SubtitleFormat*> GetFormats() const override { return std::vector<SubtitleFormat*>(); }
};
}

View file

@ -88,7 +88,7 @@ namespace {
lua_getfield(L, LUA_REGISTRYINDEX, "project_context");
if (!lua_islightuserdata(L, -1)) {
lua_pop(L, 1);
return 0;
return nullptr;
}
const agi::Context * c = static_cast<const agi::Context *>(lua_touserdata(L, -1));
lua_pop(L, 1);
@ -328,17 +328,17 @@ namespace Automation4 {
static LuaScript* GetScriptObject(lua_State *L);
// Script implementation
void Reload() { Create(); }
void Reload() override { Create(); }
std::string GetName() const { return name; }
std::string GetDescription() const { return description; }
std::string GetAuthor() const { return author; }
std::string GetVersion() const { return version; }
bool GetLoadedState() const { return L != 0; }
std::string GetName() const override { return name; }
std::string GetDescription() const override { return description; }
std::string GetAuthor() const override { return author; }
std::string GetVersion() const override { return version; }
bool GetLoadedState() const override { return L != nullptr; }
std::vector<cmd::Command*> GetMacros() const { return macros; }
std::vector<ExportFilter*> GetFilters() const;
std::vector<SubtitleFormat*> GetFormats() const { return std::vector<SubtitleFormat*>(); }
std::vector<cmd::Command*> GetMacros() const override { return macros; }
std::vector<ExportFilter*> GetFilters() const override;
std::vector<SubtitleFormat*> GetFormats() const override { return std::vector<SubtitleFormat*>(); }
};
LuaScript::LuaScript(agi::fs::path const& filename)
@ -512,7 +512,7 @@ namespace Automation4 {
if (macro->name() == command->name()) {
luaL_error(L,
"A macro named '%s' is already defined in script '%s'",
command->StrDisplay(0).utf8_str().data(), name.c_str());
command->StrDisplay(nullptr).utf8_str().data(), name.c_str());
}
}
macros.push_back(command);
@ -858,7 +858,7 @@ namespace Automation4 {
set_context(L, c);
GetFeatureFunction("validate");
LuaAssFile *subsobj = new LuaAssFile(L, c->ass);
auto subsobj = new LuaAssFile(L, c->ass);
push_value(L, transform_selection(L, c));
int err = lua_pcall(L, 3, 2, 0);
@ -891,7 +891,7 @@ namespace Automation4 {
stackcheck.check_stack(0);
GetFeatureFunction("run");
LuaAssFile *subsobj = new LuaAssFile(L, c->ass, true, true);
auto subsobj = new LuaAssFile(L, c->ass, true, true);
push_value(L, transform_selection(L, c));
try {
@ -968,7 +968,7 @@ namespace Automation4 {
stackcheck.check_stack(0);
GetFeatureFunction("isactive");
LuaAssFile *subsobj = new LuaAssFile(L, c->ass);
auto subsobj = new LuaAssFile(L, c->ass);
push_value(L, transform_selection(L, c));
int err = lua_pcall(L, 3, 1, 0);
@ -1035,7 +1035,7 @@ namespace Automation4 {
// The entire point of an export filter is to modify the file, but
// setting undo points makes no sense
LuaAssFile *subsobj = new LuaAssFile(L, subs, true);
auto subsobj = new LuaAssFile(L, subs, true);
assert(lua_isuserdata(L, -1));
stackcheck.check_stack(2);
@ -1066,14 +1066,14 @@ namespace Automation4 {
ScriptDialog* LuaExportFilter::GenerateConfigDialog(wxWindow *parent, agi::Context *c)
{
if (!has_config)
return 0;
return nullptr;
set_context(L, c);
GetFeatureFunction("config");
// prepare function call
LuaAssFile *subsobj = new LuaAssFile(L, c->ass);
auto subsobj = new LuaAssFile(L, c->ass);
// stored options
lua_newtable(L); // TODO, nothing for now

View file

@ -206,9 +206,9 @@ namespace Automation4 {
int LuaReadBack(lua_State *L);
// ScriptDialog implementation
wxWindow* CreateWindow(wxWindow *parent);
std::string Serialise();
void Unserialise(const std::string &serialised);
wxWindow* CreateWindow(wxWindow *parent) override;
std::string Serialise() override;
void Unserialise(const std::string &serialised) override;
};
class LuaFeature {
@ -244,16 +244,16 @@ namespace Automation4 {
LuaCommand(lua_State *L);
~LuaCommand();
const char* name() const { return cmd_name.c_str(); }
wxString StrMenu(const agi::Context *) const { return display; }
wxString StrDisplay(const agi::Context *) const { return display; }
wxString StrHelp() const { return help; }
const char* name() const override { return cmd_name.c_str(); }
wxString StrMenu(const agi::Context *) const override { return display; }
wxString StrDisplay(const agi::Context *) const override { return display; }
wxString StrHelp() const override { return help; }
int Type() const { return cmd_type; }
int Type() const override { return cmd_type; }
void operator()(agi::Context *c);
bool Validate(const agi::Context *c);
virtual bool IsActive(const agi::Context *c);
void operator()(agi::Context *c) override;
bool Validate(const agi::Context *c) override;
virtual bool IsActive(const agi::Context *c) override;
static int LuaRegister(lua_State *L);
};
@ -263,12 +263,12 @@ namespace Automation4 {
LuaDialog *config_dialog;
protected:
ScriptDialog* GenerateConfigDialog(wxWindow *parent, agi::Context *c);
ScriptDialog* GenerateConfigDialog(wxWindow *parent, agi::Context *c) override;
public:
LuaExportFilter(lua_State *L);
static int LuaRegister(lua_State *L);
void ProcessSubs(AssFile *subs, wxWindow *export_dialog);
void ProcessSubs(AssFile *subs, wxWindow *export_dialog) override;
};
}

View file

@ -244,7 +244,7 @@ namespace Automation4 {
if (lclass == "info")
result = agi::util::make_unique<AssInfo>(get_string_field(L, "key", "info"), get_string_field(L, "value", "info"));
else if (lclass == "style") {
AssStyle *sty = new AssStyle;
auto sty = new AssStyle;
result.reset(sty);
sty->name = get_string_field(L, "name", "style");
sty->font = get_string_field(L, "fontname", "style");
@ -272,7 +272,7 @@ namespace Automation4 {
sty->UpdateData();
}
else if (lclass == "dialogue") {
AssDialogue *dia = new AssDialogue;
auto dia = new AssDialogue;
result.reset(dia);
dia->Comment = get_bool_field(L, "comment", "dialogue");
@ -289,7 +289,7 @@ namespace Automation4 {
}
else {
luaL_error(L, "Found line with unknown class: %s", lclass.c_str());
return 0;
return nullptr;
}
return result;

View file

@ -146,13 +146,13 @@ namespace Automation4 {
public:
Label(lua_State *L) : LuaDialogControl(L), label(get_field(L, "label")) { }
wxControl *Create(wxWindow *parent) {
wxControl *Create(wxWindow *parent) override {
return new wxStaticText(parent, -1, to_wx(label));
}
int GetSizerFlags() const { return wxALIGN_CENTRE_VERTICAL | wxALIGN_LEFT; }
int GetSizerFlags() const override { return wxALIGN_CENTRE_VERTICAL | wxALIGN_LEFT; }
void LuaReadBack(lua_State *L) {
void LuaReadBack(lua_State *L) override {
// Label doesn't produce output, so let it be nil
lua_pushnil(L);
}
@ -168,7 +168,7 @@ namespace Automation4 {
Edit(lua_State *L)
: LuaDialogControl(L)
, text(get_field(L, "value"))
, cw(0)
, cw(nullptr)
{
// Undocumented behaviour, 'value' is also accepted as key for text,
// mostly so a text control can stand in for other things.
@ -176,18 +176,18 @@ namespace Automation4 {
text = get_field(L, "text", text);
}
bool CanSerialiseValue() const { return true; }
std::string SerialiseValue() const { return inline_string_encode(text); }
void UnserialiseValue(const std::string &serialised) { text = inline_string_decode(serialised); }
bool CanSerialiseValue() const override { return true; }
std::string SerialiseValue() const override { return inline_string_encode(text); }
void UnserialiseValue(const std::string &serialised) override { text = inline_string_decode(serialised); }
wxControl *Create(wxWindow *parent) {
wxControl *Create(wxWindow *parent) override {
cw = new wxTextCtrl(parent, -1, to_wx(text));
cw->SetValidator(StringBinder(&text));
cw->SetToolTip(to_wx(hint));
return cw;
}
void LuaReadBack(lua_State *L) {
void LuaReadBack(lua_State *L) override {
lua_pushstring(L, text.c_str());
}
};
@ -205,17 +205,17 @@ namespace Automation4 {
{
}
bool CanSerialiseValue() const { return true; }
std::string SerialiseValue() const { return inline_string_encode(color.GetHexFormatted()); }
void UnserialiseValue(const std::string &serialised) { color = inline_string_decode(serialised); }
bool CanSerialiseValue() const override { return true; }
std::string SerialiseValue() const override { return inline_string_encode(color.GetHexFormatted()); }
void UnserialiseValue(const std::string &serialised) override { color = inline_string_decode(serialised); }
wxControl *Create(wxWindow *parent) {
wxControl *Create(wxWindow *parent) override {
wxControl *cw = new ColourButton(parent, wxSize(50*width,10*height), alpha, color, ColorValidator(&color));
cw->SetToolTip(to_wx(hint));
return cw;
}
void LuaReadBack(lua_State *L) {
void LuaReadBack(lua_State *L) override {
lua_pushstring(L, color.GetHexFormatted().c_str());
}
};
@ -226,7 +226,7 @@ namespace Automation4 {
Textbox(lua_State *L) : Edit(L) { }
// Same serialisation interface as single-line edit
wxControl *Create(wxWindow *parent) {
wxControl *Create(wxWindow *parent) override {
cw = new wxTextCtrl(parent, -1, "", wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE, StringBinder(&text));
cw->SetMinSize(wxSize(0, 30));
cw->SetToolTip(to_wx(hint));
@ -244,7 +244,7 @@ namespace Automation4 {
public:
IntEdit(lua_State *L)
: Edit(L)
, cw(0)
, cw(nullptr)
, value(get_field(L, "value", 0))
, min(get_field(L, "min", INT_MIN))
, max(get_field(L, "max", INT_MAX))
@ -255,18 +255,18 @@ namespace Automation4 {
}
}
bool CanSerialiseValue() const { return true; }
std::string SerialiseValue() const { return std::to_string(value); }
void UnserialiseValue(const std::string &serialised) { value = atoi(serialised.c_str()); }
bool CanSerialiseValue() const override { return true; }
std::string SerialiseValue() const override { return std::to_string(value); }
void UnserialiseValue(const std::string &serialised) override { value = atoi(serialised.c_str()); }
wxControl *Create(wxWindow *parent) {
wxControl *Create(wxWindow *parent) override {
cw = new wxSpinCtrl(parent, -1, "", wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, min, max, value);
cw->SetValidator(wxGenericValidator(&value));
cw->SetToolTip(to_wx(hint));
return cw;
}
void LuaReadBack(lua_State *L) {
void LuaReadBack(lua_State *L) override {
lua_pushinteger(L, value);
}
};
@ -282,15 +282,15 @@ namespace Automation4 {
struct DoubleValidator : public wxValidator {
double *value;
DoubleValidator(double *value) : value(value) { }
wxValidator *Clone() const { return new DoubleValidator(value); }
bool Validate(wxWindow*) { return true; }
wxValidator *Clone() const override { return new DoubleValidator(value); }
bool Validate(wxWindow*) override { return true; }
bool TransferToWindow() {
bool TransferToWindow() override {
static_cast<wxSpinCtrlDouble*>(GetWindow())->SetValue(*value);
return true;
}
bool TransferFromWindow() {
bool TransferFromWindow() override {
auto ctrl = static_cast<wxSpinCtrlDouble*>(GetWindow());
#ifndef wxHAS_NATIVE_SPINCTRLDOUBLE
wxFocusEvent evt;
@ -308,7 +308,7 @@ namespace Automation4 {
, min(get_field(L, "min", -DBL_MAX))
, max(get_field(L, "max", DBL_MAX))
, step(get_field(L, "step", 0.0))
, scd(0)
, scd(nullptr)
{
if (min >= max) {
max = DBL_MAX;
@ -316,11 +316,11 @@ namespace Automation4 {
}
}
bool CanSerialiseValue() const { return true; }
std::string SerialiseValue() const { return std::to_string(value); }
void UnserialiseValue(const std::string &serialised) { value = atof(serialised.c_str()); }
bool CanSerialiseValue() const override { return true; }
std::string SerialiseValue() const override { return std::to_string(value); }
void UnserialiseValue(const std::string &serialised) override { value = atof(serialised.c_str()); }
wxControl *Create(wxWindow *parent) {
wxControl *Create(wxWindow *parent) override {
if (step > 0) {
scd = new wxSpinCtrlDouble(parent, -1, "", wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, min, max, value, step);
scd->SetValidator(DoubleValidator(&value));
@ -335,7 +335,7 @@ namespace Automation4 {
return cw;
}
void LuaReadBack(lua_State *L) {
void LuaReadBack(lua_State *L) override {
lua_pushnumber(L, value);
}
};
@ -350,23 +350,23 @@ namespace Automation4 {
Dropdown(lua_State *L)
: LuaDialogControl(L)
, value(get_field(L, "value"))
, cw(0)
, cw(nullptr)
{
lua_getfield(L, -1, "items");
read_string_array(L, items);
}
bool CanSerialiseValue() const { return true; }
std::string SerialiseValue() const { return inline_string_encode(value); }
void UnserialiseValue(const std::string &serialised) { value = inline_string_decode(serialised); }
bool CanSerialiseValue() const override { return true; }
std::string SerialiseValue() const override { return inline_string_encode(value); }
void UnserialiseValue(const std::string &serialised) override { value = inline_string_decode(serialised); }
wxControl *Create(wxWindow *parent) {
wxControl *Create(wxWindow *parent) override {
cw = new wxComboBox(parent, -1, to_wx(value), wxDefaultPosition, wxDefaultSize, to_wx(items), wxCB_READONLY, StringBinder(&value));
cw->SetToolTip(to_wx(hint));
return cw;
}
void LuaReadBack(lua_State *L) {
void LuaReadBack(lua_State *L) override {
lua_pushstring(L, value.c_str());
}
};
@ -381,15 +381,15 @@ namespace Automation4 {
: LuaDialogControl(L)
, label(get_field(L, "label"))
, value(get_field(L, "value", false))
, cw(0)
, cw(nullptr)
{
}
bool CanSerialiseValue() const { return true; }
std::string SerialiseValue() const { return value ? "1" : "0"; }
void UnserialiseValue(const std::string &serialised) { value = serialised != "0"; }
bool CanSerialiseValue() const override { return true; }
std::string SerialiseValue() const override { return value ? "1" : "0"; }
void UnserialiseValue(const std::string &serialised) override { value = serialised != "0"; }
wxControl *Create(wxWindow *parent) {
wxControl *Create(wxWindow *parent) override {
cw = new wxCheckBox(parent, -1, to_wx(label));
cw->SetValidator(wxGenericValidator(&value));
cw->SetToolTip(to_wx(hint));
@ -397,7 +397,7 @@ namespace Automation4 {
return cw;
}
void LuaReadBack(lua_State *L) {
void LuaReadBack(lua_State *L) override {
lua_pushboolean(L, value);
}
};
@ -407,7 +407,7 @@ namespace Automation4 {
LuaDialog::LuaDialog(lua_State *L, bool include_buttons)
: use_buttons(include_buttons)
, button_pushed(-1)
, window(0)
, window(nullptr)
{
LOG_D("automation/lua/dialog") << "creating LuaDialoug, addr: " << this;

View file

@ -203,7 +203,7 @@ namespace Automation4 {
if (must_exist)
flags |= wxFD_FILE_MUST_EXIST;
wxFileDialog diag(0, message, dir, file, wildcard, flags);
wxFileDialog diag(nullptr, message, dir, file, wildcard, flags);
if (ps->ShowDialog(&diag) == wxID_CANCEL) {
lua_pushnil(L);
return 1;

View file

@ -114,7 +114,7 @@ BaseGrid::BaseGrid(wxWindow* parent, agi::Context *context, const wxSize& size,
{
scrollBar->SetScrollbar(0,10,100,10);
wxBoxSizer *scrollbarpositioner = new wxBoxSizer(wxHORIZONTAL);
auto scrollbarpositioner = new wxBoxSizer(wxHORIZONTAL);
scrollbarpositioner->AddStretchSpacer();
scrollbarpositioner->Add(scrollBar, 0, wxEXPAND, 0);
@ -920,7 +920,7 @@ void BaseGrid::SetColumnWidths() {
}
AssDialogue *BaseGrid::GetDialogue(int n) const {
if (static_cast<size_t>(n) >= index_line_map.size()) return 0;
if (static_cast<size_t>(n) >= index_line_map.size()) return nullptr;
return index_line_map[n];
}
@ -1043,7 +1043,7 @@ void BaseGrid::SetSelectedSet(const Selection &new_selection) {
void BaseGrid::SetActiveLine(AssDialogue *new_line) {
if (new_line != active_line) {
assert(new_line == 0 || line_index_map.count(new_line));
assert(new_line == nullptr || line_index_map.count(new_line));
active_line = new_line;
AnnounceActiveLineChanged(active_line);
MakeRowVisible(GetDialogueIndex(active_line));

View file

@ -128,14 +128,14 @@ protected:
public:
// SelectionController implementation
void SetActiveLine(AssDialogue *new_line);
AssDialogue * GetActiveLine() const { return active_line; }
void SetSelectedSet(const Selection &new_selection);
void GetSelectedSet(Selection &res) const { res = selection; }
Selection const& GetSelectedSet() const { return selection; }
void SetSelectionAndActive(Selection const& new_selection, AssDialogue *new_line);;
void NextLine();
void PrevLine();
void SetActiveLine(AssDialogue *new_line) override;
AssDialogue * GetActiveLine() const override { return active_line; }
void SetSelectedSet(const Selection &new_selection) override;
void GetSelectedSet(Selection &res) const override { res = selection; }
Selection const& GetSelectedSet() const override { return selection; }
void SetSelectionAndActive(Selection const& new_selection, AssDialogue *new_line) override;;
void NextLine() override;
void PrevLine() override;
void BeginBatch();
void EndBatch();

View file

@ -161,7 +161,7 @@ public:
///
/// The factory object passed must respond well to copying.
DataBlockCache(size_t block_count, BlockFactoryT factory = BlockFactoryT())
: factory(factory)
: factory(std::move(factory))
{
SetBlockCount(block_count);
}
@ -250,7 +250,7 @@ public:
{
mb.blocks[block_index] = factory.ProduceBlock(i);
b = mb.blocks[block_index].get();
assert(b != 0);
assert(b != nullptr);
if (created) *created = true;
}

View file

@ -28,7 +28,7 @@ wxDEFINE_EVENT(EVT_COLOR, wxThreadEvent);
ColourButton::ColourButton(wxWindow *parent, wxSize const& size, bool alpha, agi::Color col, wxValidator const& validator)
: wxButton(parent, -1, "", wxDefaultPosition, wxSize(size.GetWidth() + 6, size.GetHeight() + 6), 0, validator)
, bmp(size)
, colour(col)
, colour(std::move(col))
{
UpdateBitmap();
Bind(wxEVT_COMMAND_BUTTON_CLICKED, [=](wxCommandEvent&) {

View file

@ -46,11 +46,11 @@ public:
struct ColorValidator : public wxValidator {
agi::Color *color;
ColorValidator(agi::Color *color) : color(color) { }
wxValidator *Clone() const { return new ColorValidator(color); }
bool Validate(wxWindow*) { return true; }
bool TransferToWindow() { return true; }
wxValidator *Clone() const override { return new ColorValidator(color); }
bool Validate(wxWindow*) override { return true; }
bool TransferToWindow() override { return true; }
bool TransferFromWindow() {
bool TransferFromWindow() override {
*color = static_cast<ColourButton*>(GetWindow())->GetColor();
return true;
}

View file

@ -62,7 +62,7 @@ struct app_about : public Command {
STR_DISP("About")
STR_HELP("About Aegisub")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
AboutScreen(c->parent).ShowModal();
}
};
@ -74,15 +74,15 @@ struct app_display_audio_subs : public Command {
STR_HELP("Display audio and the subtitles grid only")
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
wxGetApp().frame->SetDisplayMode(0,1);
}
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->audioController->IsAudioOpen();
}
bool IsActive(const agi::Context *) {
bool IsActive(const agi::Context *) override {
return wxGetApp().frame->IsAudioShown() && !wxGetApp().frame->IsVideoShown();
}
};
@ -94,15 +94,15 @@ struct app_display_full : public Command {
STR_HELP("Display audio, video and then subtitles grid")
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
wxGetApp().frame->SetDisplayMode(1,1);
}
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->audioController->IsAudioOpen() && c->videoController->IsLoaded() && !c->dialog->Get<DialogDetachedVideo>();
}
bool IsActive(const agi::Context *) {
bool IsActive(const agi::Context *) override {
return wxGetApp().frame->IsAudioShown() && wxGetApp().frame->IsVideoShown();
}
};
@ -114,11 +114,11 @@ struct app_display_subs : public Command {
STR_HELP("Display the subtitles grid only")
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
wxGetApp().frame->SetDisplayMode(0,0);
}
bool IsActive(const agi::Context *) {
bool IsActive(const agi::Context *) override {
return !wxGetApp().frame->IsAudioShown() && !wxGetApp().frame->IsVideoShown();
}
};
@ -130,15 +130,15 @@ struct app_display_video_subs : public Command {
STR_HELP("Display video and the subtitles grid only")
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
wxGetApp().frame->SetDisplayMode(1,0);
}
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->videoController->IsLoaded() && !c->dialog->Get<DialogDetachedVideo>();
}
bool IsActive(const agi::Context *) {
bool IsActive(const agi::Context *) override {
return !wxGetApp().frame->IsAudioShown() && wxGetApp().frame->IsVideoShown();
}
};
@ -149,7 +149,7 @@ struct app_exit : public Command {
STR_DISP("Exit")
STR_HELP("Exit the application")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
wxGetApp().frame->Close();
}
};
@ -160,7 +160,7 @@ struct app_language : public Command {
STR_DISP("Language")
STR_HELP("Select Aegisub interface language")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
// Get language
wxString new_language = wxGetApp().locale.PickLanguage();
if (!new_language) return;
@ -184,7 +184,7 @@ struct app_log : public Command {
STR_DISP("Log window")
STR_HELP("View the event log")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->dialog->Show<LogWindow>(c);
}
};
@ -195,7 +195,7 @@ struct app_new_window : public Command {
STR_DISP("New Window")
STR_HELP("Open a new application window")
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
RestartAegisub();
}
};
@ -206,7 +206,7 @@ struct app_options : public Command {
STR_DISP("Options")
STR_HELP("Configure Aegisub")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
try {
while (Preferences(c->parent).ShowModal() < 0);
} catch (agi::Exception& e) {
@ -222,11 +222,11 @@ struct app_toggle_global_hotkeys : public Command {
STR_HELP("Toggle global hotkey overrides (Medusa Mode)")
CMD_TYPE(COMMAND_TOGGLE)
bool IsActive(const agi::Context *) {
bool IsActive(const agi::Context *) override {
return OPT_GET("Audio/Medusa Timing Hotkeys")->GetBool();
}
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
agi::OptionValue *opt = OPT_SET("Audio/Medusa Timing Hotkeys");
opt->SetBool(!opt->GetBool());
}
@ -237,17 +237,17 @@ struct app_toggle_toolbar : public Command {
STR_HELP("Toggle the main toolbar")
CMD_TYPE(COMMAND_DYNAMIC_NAME)
wxString StrMenu(const agi::Context *) const {
wxString StrMenu(const agi::Context *) const override {
return OPT_GET("App/Show Toolbar")->GetBool() ?
_("Hide Toolbar") :
_("Show Toolbar");
}
wxString StrDisplay(const agi::Context *) const {
return StrMenu(0);
wxString StrDisplay(const agi::Context *) const override {
return StrMenu(nullptr);
}
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
agi::OptionValue *opt = OPT_SET("App/Show Toolbar");
opt->SetBool(!opt->GetBool());
}
@ -259,7 +259,7 @@ struct app_updates : public Command {
STR_DISP("Check for Updates")
STR_HELP("Check to see if there is a new version of Aegisub available")
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
PerformVersionCheck(true);
}
};

View file

@ -54,7 +54,7 @@ namespace {
struct validate_audio_open : public Command {
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->audioController->IsAudioOpen();
}
};
@ -65,7 +65,7 @@ struct audio_close : public validate_audio_open {
STR_DISP("Close Audio")
STR_HELP("Close the currently open audio file")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->audioController->CloseAudio();
}
};
@ -76,7 +76,7 @@ struct audio_open : public Command {
STR_DISP("Open Audio File")
STR_HELP("Open an audio file")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
wxString str = _("Audio Formats") + " (*.aac,*.ac3,*.ape,*.dts,*.flac,*.m4a,*.mka,*.mp3,*.mp4,*.ogg,*.w64,*.wav,*.wma)|*.aac;*.ac3;*.ape;*.dts;*.flac;*.m4a;*.mka;*.mp3;*.mp4;*.ogg;*.w64;*.wav;*.wma|"
+ _("Video Formats") + " (*.asf,*.avi,*.avs,*.d2v,*.m2ts,*.m4v,*.mkv,*.mov,*.mp4,*.mpeg,*.mpg,*.ogm,*.webm,*.wmv,*.ts)|*.asf;*.avi;*.avs;*.d2v;*.m2ts;*.m4v;*.mkv;*.mov;*.mp4;*.mpeg;*.mpg;*.ogm;*.webm;*.wmv;*.ts|"
+ _("All Files") + " (*.*)|*.*";
@ -99,7 +99,7 @@ struct audio_open_blank : public Command {
STR_DISP("Open 2h30 Blank Audio")
STR_HELP("Open a 150 minutes blank audio clip, for debugging")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
try {
c->audioController->OpenAudio("dummy-audio:silence?sr=44100&bd=16&ch=1&ln=396900000");
}
@ -115,7 +115,7 @@ struct audio_open_noise : public Command {
STR_DISP("Open 2h30 Noise Audio")
STR_HELP("Open a 150 minutes noise-filled audio clip, for debugging")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
try {
c->audioController->OpenAudio("dummy-audio:noise?sr=44100&bd=16&ch=1&ln=396900000");
}
@ -132,11 +132,11 @@ struct audio_open_video : public Command {
STR_HELP("Open the audio from the current video file")
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->videoController->IsLoaded();
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
try {
c->audioController->OpenAudio(c->videoController->GetVideoName());
}
@ -154,11 +154,11 @@ struct audio_view_spectrum : public Command {
STR_HELP("Display audio as a frequency-power spectrograph")
CMD_TYPE(COMMAND_RADIO)
bool IsActive(const agi::Context *) {
bool IsActive(const agi::Context *) override {
return OPT_GET("Audio/Spectrum")->GetBool();
}
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
OPT_SET("Audio/Spectrum")->SetBool(true);
}
};
@ -170,11 +170,11 @@ struct audio_view_waveform : public Command {
STR_HELP("Display audio as a linear amplitude graph")
CMD_TYPE(COMMAND_RADIO)
bool IsActive(const agi::Context *) {
bool IsActive(const agi::Context *) override {
return !OPT_GET("Audio/Spectrum")->GetBool();
}
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
OPT_SET("Audio/Spectrum")->SetBool(false);
}
};
@ -186,11 +186,11 @@ struct audio_save_clip : public Command {
STR_HELP("Save an audio clip of the selected line")
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->audioController->IsAudioOpen() && !c->selectionController->GetSelectedSet().empty();
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
SubtitleSelection sel = c->selectionController->GetSelectedSet();
if (sel.empty()) return;
@ -212,7 +212,7 @@ struct audio_play_current_selection : public validate_audio_open {
STR_DISP("Play current audio selection")
STR_HELP("Play the current audio selection, ignoring changes made while playing")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
c->audioController->PlayRange(c->audioController->GetPrimaryPlaybackRange());
}
@ -224,7 +224,7 @@ struct audio_play_current_line : public validate_audio_open {
STR_DISP("Play current line")
STR_HELP("Play the audio for the current line")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
AudioTimingController *tc = c->audioController->GetTimingController();
if (tc)
@ -238,7 +238,7 @@ struct audio_play_selection : public validate_audio_open {
STR_DISP("Play audio selection")
STR_HELP("Play audio until the end of the selection is reached")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
c->audioController->PlayPrimaryRange();
}
@ -250,7 +250,7 @@ struct audio_play_toggle : public validate_audio_open {
STR_DISP("Play audio selection or stop")
STR_HELP("Play selection, or stop playback if it's already playing")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (c->audioController->IsPlaying())
c->audioController->Stop();
else {
@ -267,11 +267,11 @@ struct audio_stop : public Command {
STR_HELP("Stop audio and video playback")
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->audioController->IsPlaying();
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->audioController->Stop();
c->videoController->Stop();
}
@ -283,7 +283,7 @@ struct audio_play_before : public validate_audio_open {
STR_DISP("Play 500 ms before selection")
STR_HELP("Play 500 ms before selection")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
int begin = c->audioController->GetPrimaryPlaybackRange().begin();
c->audioController->PlayRange(TimeRange(begin - 500, begin));
@ -296,7 +296,7 @@ struct audio_play_after : public validate_audio_open {
STR_DISP("Play 500 ms after selection")
STR_HELP("Play 500 ms after selection")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
int end = c->audioController->GetPrimaryPlaybackRange().end();
c->audioController->PlayRange(TimeRange(end, end + 500));
@ -309,7 +309,7 @@ struct audio_play_end : public validate_audio_open {
STR_DISP("Play last 500 ms of selection")
STR_HELP("Play last 500 ms of selection")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
TimeRange times(c->audioController->GetPrimaryPlaybackRange());
c->audioController->PlayToEndOfPrimary(times.end() - std::min(500, times.length()));
@ -322,7 +322,7 @@ struct audio_play_begin : public validate_audio_open {
STR_DISP("Play first 500 ms of selection")
STR_HELP("Play first 500 ms of selection")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
TimeRange times(c->audioController->GetPrimaryPlaybackRange());
c->audioController->PlayRange(TimeRange(
@ -337,7 +337,7 @@ struct audio_play_to_end : public validate_audio_open {
STR_DISP("Play from selection start to end of file")
STR_HELP("Play from selection start to end of file")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
c->audioController->PlayToEnd(c->audioController->GetPrimaryPlaybackRange().begin());
}
@ -349,7 +349,7 @@ struct audio_commit : public validate_audio_open {
STR_DISP("Commit")
STR_HELP("Commit any pending audio timing changes")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
AudioTimingController *tc = c->audioController->GetTimingController();
if (tc) {
tc->Commit();
@ -365,7 +365,7 @@ struct audio_commit_default : public validate_audio_open {
STR_DISP("Commit and use default timing for next line")
STR_HELP("Commit any pending audio timing changes and reset the next line's times to the default")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
AudioTimingController *tc = c->audioController->GetTimingController();
if (tc) {
tc->Commit();
@ -380,7 +380,7 @@ struct audio_commit_next : public validate_audio_open {
STR_DISP("Commit and move to next line")
STR_HELP("Commit any pending audio timing changes and move to the next line")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
AudioTimingController *tc = c->audioController->GetTimingController();
if (tc) {
tc->Commit();
@ -395,7 +395,7 @@ struct audio_commit_stay : public validate_audio_open {
STR_DISP("Commit and stay on current line")
STR_HELP("Commit any pending audio timing changes and stay on the current line")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
AudioTimingController *tc = c->audioController->GetTimingController();
if (tc) tc->Commit();
}
@ -407,7 +407,7 @@ struct audio_go_to : public validate_audio_open {
STR_DISP("Go to selection")
STR_HELP("Scroll the audio display to center on the current audio selection")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->audioBox->ScrollToActiveLine();
}
};
@ -418,7 +418,7 @@ struct audio_scroll_left : public validate_audio_open {
STR_DISP("Scroll left")
STR_HELP("Scroll the audio display left")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->audioBox->ScrollAudioBy(-128);
}
};
@ -429,7 +429,7 @@ struct audio_scroll_right : public validate_audio_open {
STR_DISP("Scroll right")
STR_HELP("Scroll the audio display right")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->audioBox->ScrollAudioBy(128);
}
};
@ -445,11 +445,11 @@ struct audio_autoscroll : public Command {
STR_HELP("Auto scroll audio display to selected line")
CMD_TYPE(COMMAND_TOGGLE)
bool IsActive(const agi::Context *) {
bool IsActive(const agi::Context *) override {
return OPT_GET("Audio/Auto/Scroll")->GetBool();
}
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
toggle("Audio/Auto/Scroll");
}
};
@ -461,11 +461,11 @@ struct audio_autocommit : public Command {
STR_HELP("Automatically commit all changes")
CMD_TYPE(COMMAND_TOGGLE)
bool IsActive(const agi::Context *) {
bool IsActive(const agi::Context *) override {
return OPT_GET("Audio/Auto/Commit")->GetBool();
}
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
toggle("Audio/Auto/Commit");
}
};
@ -477,11 +477,11 @@ struct audio_autonext : public Command {
STR_HELP("Automatically go to next line on commit")
CMD_TYPE(COMMAND_TOGGLE)
bool IsActive(const agi::Context *) {
bool IsActive(const agi::Context *) override {
return OPT_GET("Audio/Next Line on Commit")->GetBool();
}
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
toggle("Audio/Next Line on Commit");
}
};
@ -493,11 +493,11 @@ struct audio_toggle_spectrum : public Command {
STR_HELP("Spectrum analyzer mode")
CMD_TYPE(COMMAND_TOGGLE)
bool IsActive(const agi::Context *) {
bool IsActive(const agi::Context *) override {
return OPT_GET("Audio/Spectrum")->GetBool();
}
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
toggle("Audio/Spectrum");
}
};
@ -509,11 +509,11 @@ struct audio_vertical_link : public Command {
STR_HELP("Link vertical zoom and volume sliders")
CMD_TYPE(COMMAND_TOGGLE)
bool IsActive(const agi::Context *) {
bool IsActive(const agi::Context *) override {
return OPT_GET("Audio/Link")->GetBool();
}
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
toggle("Audio/Link");
}
};
@ -525,10 +525,10 @@ struct audio_karaoke : public Command {
STR_HELP("Toggle karaoke mode")
CMD_TYPE(COMMAND_TOGGLE)
bool IsActive(const agi::Context *c) {
bool IsActive(const agi::Context *c) override {
return c->karaoke->IsEnabled();
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->karaoke->SetEnabled(!c->karaoke->IsEnabled());
}
};

View file

@ -54,7 +54,7 @@ struct reload_all : public Command {
STR_DISP("Reload Automation scripts")
STR_HELP("Reload all Automation scripts and rescan the autoload folder")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
wxGetApp().global_scripts->Reload();
c->local_scripts->Reload();
StatusTimeout(_("Reloaded all Automation scripts"));
@ -67,7 +67,7 @@ struct reload_autoload : public Command {
STR_DISP("Reload autoload Automation scripts")
STR_HELP("Rescan the Automation autoload folder")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
wxGetApp().global_scripts->Reload();
StatusTimeout(_("Reloaded autoload Automation scripts"));
}
@ -79,7 +79,7 @@ struct open_manager : public Command {
STR_DISP("Automation")
STR_HELP("Open automation manager")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->dialog->Show<DialogAutomation>(c);
}
};
@ -90,7 +90,7 @@ struct meta : public Command {
STR_DISP("Automation")
STR_HELP("Open automation manager. Ctrl: Rescan autoload folder. Ctrl+Shift: Rescan autoload folder and reload all automation scripts")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (wxGetMouseState().CmdDown()) {
if (wxGetMouseState().ShiftDown())
cmd::call("am/reload", c);

View file

@ -26,7 +26,7 @@ namespace cmd {
typedef std::map<std::string, std::unique_ptr<Command>>::iterator iterator;
static iterator find_command(std::string const& name) {
iterator it = cmd_map.find(name);
auto it = cmd_map.find(name);
if (it == cmd_map.end())
throw CommandNotFound(from_wx(wxString::Format(_("'%s' is not a valid command name"), to_wx(name))));
return it;

View file

@ -74,21 +74,21 @@ namespace {
struct validate_sel_nonempty : public Command {
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->selectionController->GetSelectedSet().size() > 0;
}
};
struct validate_video_and_sel_nonempty : public Command {
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->videoController->IsLoaded() && !c->selectionController->GetSelectedSet().empty();
}
};
struct validate_sel_multiple : public Command {
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->selectionController->GetSelectedSet().size() > 1;
}
};
@ -202,8 +202,8 @@ void set_tag(AssDialogue *line, boost::ptr_vector<AssDialogueBlock> &blocks, std
int start = at_end ? sel_end : sel_start;
int blockn = block_at_pos(line->Text, start);
AssDialogueBlockPlain *plain = 0;
AssDialogueBlockOverride *ovr = 0;
AssDialogueBlockPlain *plain = nullptr;
AssDialogueBlockOverride *ovr = nullptr;
while (blockn >= 0) {
AssDialogueBlock *block = &blocks[blockn];
if (dynamic_cast<AssDialogueBlockDrawing*>(block))
@ -267,12 +267,12 @@ void set_tag(AssDialogue *line, boost::ptr_vector<AssDialogueBlock> &blocks, std
}
}
void commit_text(agi::Context const * const c, wxString const& desc, int sel_start = -1, int sel_end = -1, int *commit_id = 0) {
void commit_text(agi::Context const * const c, wxString const& desc, int sel_start = -1, int sel_end = -1, int *commit_id = nullptr) {
SubtitleSelection const& sel = c->selectionController->GetSelectedSet();
std::string text = c->selectionController->GetActiveLine()->Text;
for_each(sel.begin(), sel.end(), [&](AssDialogue *d) { d->Text = text; });
int new_commit_id = c->ass->Commit(desc, AssFile::COMMIT_DIAG_TEXT, commit_id ? *commit_id : -1, sel.size() == 1 ? *sel.begin() : 0);
int new_commit_id = c->ass->Commit(desc, AssFile::COMMIT_DIAG_TEXT, commit_id ? *commit_id : -1, sel.size() == 1 ? *sel.begin() : nullptr);
if (commit_id)
*commit_id = new_commit_id;
if (sel_start >= 0 && sel_end >= 0)
@ -335,7 +335,7 @@ struct edit_color_primary : public Command {
STR_DISP("Primary Color")
STR_HELP("Set the primary fill color (\\c) at the cursor position")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
show_color_picker(c, &AssStyle::primary, "\\c", "\\1c", "\\1a");
}
};
@ -346,7 +346,7 @@ struct edit_color_secondary : public Command {
STR_DISP("Secondary Color")
STR_HELP("Set the secondary (karaoke) fill color (\\2c) at the cursor position")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
show_color_picker(c, &AssStyle::secondary, "\\2c", "", "\\2a");
}
};
@ -357,7 +357,7 @@ struct edit_color_outline : public Command {
STR_DISP("Outline Color")
STR_HELP("Set the outline color (\\3c) at the cursor position")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
show_color_picker(c, &AssStyle::outline, "\\3c", "", "\\3a");
}
};
@ -368,7 +368,7 @@ struct edit_color_shadow : public Command {
STR_DISP("Shadow Color")
STR_HELP("Set the shadow color (\\4c) at the cursor position")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
show_color_picker(c, &AssStyle::shadow, "\\4c", "", "\\4a");
}
};
@ -379,7 +379,7 @@ struct edit_style_bold : public Command {
STR_DISP("Toggle Bold")
STR_HELP("Toggle bold (\\b) for the current selection or at the current cursor position")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
toggle_override_tag(c, &AssStyle::bold, "\\b", _("toggle bold"));
}
};
@ -390,7 +390,7 @@ struct edit_style_italic : public Command {
STR_DISP("Toggle Italics")
STR_HELP("Toggle italics (\\i) for the current selection or at the current cursor position")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
toggle_override_tag(c, &AssStyle::italic, "\\i", _("toggle italic"));
}
};
@ -401,7 +401,7 @@ struct edit_style_underline : public Command {
STR_DISP("Toggle Underline")
STR_HELP("Toggle underline (\\u) for the current selection or at the current cursor position")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
toggle_override_tag(c, &AssStyle::underline, "\\u", _("toggle underline"));
}
};
@ -412,7 +412,7 @@ struct edit_style_strikeout : public Command {
STR_DISP("Toggle Strikeout")
STR_HELP("Toggle strikeout (\\s) for the current selection or at the current cursor position")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
toggle_override_tag(c, &AssStyle::strikeout, "\\s", _("toggle strikeout"));
}
};
@ -423,7 +423,7 @@ struct edit_font : public Command {
STR_DISP("Font Face")
STR_HELP("Select a font face and size")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
AssDialogue *const line = c->selectionController->GetActiveLine();
boost::ptr_vector<AssDialogueBlock> blocks(line->ParseTags());
const int blockn = block_at_pos(line->Text, c->textSelectionController->GetInsertionPoint());
@ -468,7 +468,7 @@ struct edit_find_replace : public Command {
STR_DISP("Find and Replace")
STR_HELP("Find and replace words in subtitles")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
DialogSearchReplace::Show(c, true);
}
@ -531,7 +531,7 @@ struct edit_line_copy : public validate_sel_nonempty {
STR_DISP("Copy Lines")
STR_HELP("Copy subtitles to the clipboard")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
// Ideally we'd let the control's keydown handler run and only deal
// with the events not processed by it, but that doesn't seem to be
// possible with how wx implements key event handling - the native
@ -553,7 +553,7 @@ struct edit_line_cut: public validate_sel_nonempty {
STR_DISP("Cut Lines")
STR_HELP("Cut subtitles")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (wxTextEntryBase *ctrl = dynamic_cast<wxTextEntryBase*>(c->parent->FindFocus()))
ctrl->Cut();
else {
@ -569,7 +569,7 @@ struct edit_line_delete : public validate_sel_nonempty {
STR_DISP("Delete Lines")
STR_HELP("Delete currently selected lines")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
delete_lines(c, _("delete lines"));
}
};
@ -653,7 +653,7 @@ struct edit_line_duplicate : public validate_sel_nonempty {
STR_DISP("Duplicate Lines")
STR_HELP("Duplicate the selected lines")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
duplicate_lines(c, 0);
}
};
@ -665,7 +665,7 @@ struct edit_line_duplicate_shift : public validate_video_and_sel_nonempty {
STR_HELP("Split the current line into a line which ends on the current frame and a line which starts on the next frame")
CMD_TYPE(COMMAND_VALIDATE)
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
duplicate_lines(c, 1);
}
};
@ -677,7 +677,7 @@ struct edit_line_duplicate_shift_back : public validate_video_and_sel_nonempty {
STR_HELP("Split the current line into a line which ends on the previous frame and a line which starts on the current frame")
CMD_TYPE(COMMAND_VALIDATE)
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
duplicate_lines(c, -1);
}
};
@ -685,7 +685,7 @@ struct edit_line_duplicate_shift_back : public validate_video_and_sel_nonempty {
static void combine_lines(agi::Context *c, void (*combiner)(AssDialogue *, AssDialogue *), wxString const& message) {
SubtitleSelection sel = c->selectionController->GetSelectedSet();
AssDialogue *first = 0;
AssDialogue *first = nullptr;
for (entryIter it = c->ass->Line.begin(); it != c->ass->Line.end(); ) {
AssDialogue *diag = dynamic_cast<AssDialogue*>(&*it++);
if (!diag || !sel.count(diag))
@ -723,7 +723,7 @@ struct edit_line_join_as_karaoke : public validate_sel_multiple {
STR_DISP("As Karaoke")
STR_HELP("Join selected lines in a single one, as karaoke")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
combine_lines(c, combine_karaoke, _("join as karaoke"));
}
};
@ -734,7 +734,7 @@ struct edit_line_join_concatenate : public validate_sel_multiple {
STR_DISP("Concatenate")
STR_HELP("Join selected lines in a single one, concatenating text together")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
combine_lines(c, combine_concat, _("join lines"));
}
};
@ -745,7 +745,7 @@ struct edit_line_join_keep_first : public validate_sel_multiple {
STR_DISP("Keep First")
STR_HELP("Join selected lines in a single one, keeping text of first and discarding remaining")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
combine_lines(c, combine_drop, _("join lines"));
}
};
@ -788,7 +788,7 @@ struct edit_line_paste : public Command {
STR_HELP("Paste subtitles")
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *) {
bool Validate(const agi::Context *) override {
bool can_paste = false;
if (wxTheClipboard->Open()) {
can_paste = wxTheClipboard->IsSupported(wxDF_TEXT);
@ -797,7 +797,7 @@ struct edit_line_paste : public Command {
return can_paste;
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (wxTextEntryBase *ctrl = dynamic_cast<wxTextEntryBase*>(c->parent->FindFocus())) {
if (!try_paste_lines(c))
ctrl->Paste();
@ -819,7 +819,7 @@ struct edit_line_paste_over : public Command {
STR_HELP("Paste subtitles over others")
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
bool can_paste = !c->selectionController->GetSelectedSet().empty();
if (can_paste && wxTheClipboard->Open()) {
can_paste = wxTheClipboard->IsSupported(wxDF_TEXT);
@ -828,7 +828,7 @@ struct edit_line_paste_over : public Command {
return can_paste;
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
auto const& sel = c->selectionController->GetSelectedSet();
std::vector<bool> pasteOverOptions;
@ -911,7 +911,7 @@ struct edit_line_recombine : public validate_sel_multiple {
STR_DISP("Recombine Lines")
STR_HELP("Recombine subtitles which have been split and merged")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
auto sel_set = c->selectionController->GetSelectedSet();
if (sel_set.size() < 2) return;
@ -986,7 +986,7 @@ struct edit_line_split_by_karaoke : public validate_sel_nonempty {
STR_DISP("Split Lines (by karaoke)")
STR_HELP("Use karaoke timing to split line into multiple smaller lines")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
AssKaraoke::SplitLines(c->selectionController->GetSelectedSet(), c);
}
};
@ -996,7 +996,7 @@ void split_lines(agi::Context *c, Func&& set_time) {
int pos = c->textSelectionController->GetSelectionStart();
AssDialogue *n1 = c->selectionController->GetActiveLine();
AssDialogue *n2 = new AssDialogue(*n1);
auto n2 = new AssDialogue(*n1);
c->ass->Line.insert(++c->ass->Line.iterator_to(*n1), *n2);
std::string orig = n1->Text;
@ -1014,7 +1014,7 @@ struct edit_line_split_estimate : public validate_video_and_sel_nonempty {
STR_DISP("Split at cursor (estimate times)")
STR_HELP("Split the current line at the cursor, dividing the original line's duration between the new ones")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
split_lines(c, [](AssDialogue *n1, AssDialogue *n2) {
size_t len = n1->Text.get().size() + n2->Text.get().size();
if (!len) return;
@ -1030,7 +1030,7 @@ struct edit_line_split_preserve : public validate_sel_nonempty {
STR_DISP("Split at cursor (preserve times)")
STR_HELP("Split the current line at the cursor, setting both lines to the original line's times")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
split_lines(c, [](AssDialogue *, AssDialogue *) { });
}
};
@ -1041,7 +1041,7 @@ struct edit_line_split_video : public validate_video_and_sel_nonempty {
STR_DISP("Split at cursor (at video frame)")
STR_HELP("Split the current line at the cursor, dividing the line's duration at the current video frame")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
split_lines(c, [&](AssDialogue *n1, AssDialogue *n2) {
int cur_frame = mid(
c->videoController->FrameAtTime(n1->Start, agi::vfr::START),
@ -1057,22 +1057,22 @@ struct edit_redo : public Command {
STR_HELP("Redo last undone action")
CMD_TYPE(COMMAND_VALIDATE | COMMAND_DYNAMIC_NAME)
wxString StrMenu(const agi::Context *c) const {
wxString StrMenu(const agi::Context *c) const override {
return c->subsController->IsRedoStackEmpty() ?
_("Nothing to &redo") :
wxString::Format(_("&Redo %s"), c->subsController->GetRedoDescription());
}
wxString StrDisplay(const agi::Context *c) const {
wxString StrDisplay(const agi::Context *c) const override {
return c->subsController->IsRedoStackEmpty() ?
_("Nothing to redo") :
wxString::Format(_("Redo %s"), c->subsController->GetRedoDescription());
}
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return !c->subsController->IsRedoStackEmpty();
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->subsController->Redo();
}
};
@ -1082,22 +1082,22 @@ struct edit_undo : public Command {
STR_HELP("Undo last action")
CMD_TYPE(COMMAND_VALIDATE | COMMAND_DYNAMIC_NAME)
wxString StrMenu(const agi::Context *c) const {
wxString StrMenu(const agi::Context *c) const override {
return c->subsController->IsUndoStackEmpty() ?
_("Nothing to &undo") :
wxString::Format(_("&Undo %s"), c->subsController->GetUndoDescription());
}
wxString StrDisplay(const agi::Context *c) const {
wxString StrDisplay(const agi::Context *c) const override {
return c->subsController->IsUndoStackEmpty() ?
_("Nothing to undo") :
wxString::Format(_("Undo %s"), c->subsController->GetUndoDescription());
}
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return !c->subsController->IsUndoStackEmpty();
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->subsController->Undo();
}
};
@ -1108,7 +1108,7 @@ struct edit_revert : public Command {
STR_MENU("Revert")
STR_HELP("Revert the active line to its initial state (shown in the upper editor)")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
AssDialogue *line = c->selectionController->GetActiveLine();
line->Text = c->initialLineState->GetInitialText();
c->ass->Commit(_("revert line"), AssFile::COMMIT_DIAG_TEXT, -1, line);
@ -1121,7 +1121,7 @@ struct edit_clear : public Command {
STR_MENU("Clear")
STR_HELP("Clear the current line's text")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
AssDialogue *line = c->selectionController->GetActiveLine();
line->Text = "";
c->ass->Commit(_("clear line"), AssFile::COMMIT_DIAG_TEXT, -1, line);
@ -1135,7 +1135,7 @@ struct edit_clear_text : public Command {
STR_MENU("Clear Text")
STR_HELP("Clear the current line's text, leaving override tags")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
AssDialogue *line = c->selectionController->GetActiveLine();
boost::ptr_vector<AssDialogueBlock> blocks(line->ParseTags());
line->Text = join(blocks
@ -1152,7 +1152,7 @@ struct edit_insert_original : public Command {
STR_MENU("Insert Original")
STR_HELP("Insert the original line text at the cursor")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
AssDialogue *line = c->selectionController->GetActiveLine();
int sel_start = c->textSelectionController->GetSelectionStart();
int sel_end = c->textSelectionController->GetSelectionEnd();

View file

@ -53,7 +53,7 @@ struct grid_line_next : public Command {
STR_DISP("Next Line")
STR_HELP("Move to the next subtitle line")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->selectionController->NextLine();
}
};
@ -64,7 +64,7 @@ struct grid_line_next_create : public Command {
STR_DISP("Next Line")
STR_HELP("Move to the next subtitle line, creating a new one if needed")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
AudioTimingController *tc = c->audioController->GetTimingController();
if (tc)
tc->Commit();
@ -72,7 +72,7 @@ struct grid_line_next_create : public Command {
AssDialogue *cur = c->selectionController->GetActiveLine();
c->selectionController->NextLine();
if (cur == c->selectionController->GetActiveLine()) {
AssDialogue *newline = new AssDialogue;
auto newline = new AssDialogue;
newline->Start = cur->End;
newline->End = cur->End + OPT_GET("Timing/Default Duration")->GetInt();
newline->Style = cur->Style;
@ -91,7 +91,7 @@ struct grid_line_prev : public Command {
STR_DISP("Previous Line")
STR_HELP("Move to the previous line")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->selectionController->PrevLine();
}
};
@ -102,7 +102,7 @@ struct grid_sort_actor : public Command {
STR_DISP("Actor Name")
STR_HELP("Sort all subtitles by their actor names")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->ass->Sort(AssFile::CompActor);
c->ass->Commit(_("sort"), AssFile::COMMIT_ORDER);
}
@ -111,7 +111,7 @@ struct grid_sort_actor : public Command {
struct validate_sel_multiple : public Command {
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->selectionController->GetSelectedSet().size() > 1;
}
};
@ -122,7 +122,7 @@ struct grid_sort_actor_selected : public validate_sel_multiple {
STR_DISP("Actor Name")
STR_HELP("Sort selected subtitles by their actor names")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->ass->Sort(AssFile::CompActor, c->selectionController->GetSelectedSet());
c->ass->Commit(_("sort"), AssFile::COMMIT_ORDER);
}
@ -134,7 +134,7 @@ struct grid_sort_effect : public Command {
STR_DISP("Effect")
STR_HELP("Sort all subtitles by their effects")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->ass->Sort(AssFile::CompEffect);
c->ass->Commit(_("sort"), AssFile::COMMIT_ORDER);
}
@ -146,7 +146,7 @@ struct grid_sort_effect_selected : public validate_sel_multiple {
STR_DISP("Effect")
STR_HELP("Sort selected subtitles by their effects")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->ass->Sort(AssFile::CompEffect, c->selectionController->GetSelectedSet());
c->ass->Commit(_("sort"), AssFile::COMMIT_ORDER);
}
@ -158,7 +158,7 @@ struct grid_sort_end : public Command {
STR_DISP("End Time")
STR_HELP("Sort all subtitles by their end times")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->ass->Sort(AssFile::CompEnd);
c->ass->Commit(_("sort"), AssFile::COMMIT_ORDER);
}
@ -170,7 +170,7 @@ struct grid_sort_end_selected : public validate_sel_multiple {
STR_DISP("End Time")
STR_HELP("Sort selected subtitles by their end times")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->ass->Sort(AssFile::CompEnd, c->selectionController->GetSelectedSet());
c->ass->Commit(_("sort"), AssFile::COMMIT_ORDER);
}
@ -182,7 +182,7 @@ struct grid_sort_layer : public Command {
STR_DISP("Layer")
STR_HELP("Sort all subtitles by their layer number")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->ass->Sort(AssFile::CompLayer);
c->ass->Commit(_("sort"), AssFile::COMMIT_ORDER);
}
@ -194,7 +194,7 @@ struct grid_sort_layer_selected : public validate_sel_multiple {
STR_DISP("Layer")
STR_HELP("Sort selected subtitles by their layer number")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->ass->Sort(AssFile::CompLayer, c->selectionController->GetSelectedSet());
c->ass->Commit(_("sort"), AssFile::COMMIT_ORDER);
}
@ -206,7 +206,7 @@ struct grid_sort_start : public Command {
STR_DISP("Start Time")
STR_HELP("Sort all subtitles by their start times")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->ass->Sort();
c->ass->Commit(_("sort"), AssFile::COMMIT_ORDER);
}
@ -218,7 +218,7 @@ struct grid_sort_start_selected : public validate_sel_multiple {
STR_DISP("Start Time")
STR_HELP("Sort selected subtitles by their start times")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->ass->Sort(AssFile::CompStart, c->selectionController->GetSelectedSet());
c->ass->Commit(_("sort"), AssFile::COMMIT_ORDER);
}
@ -230,7 +230,7 @@ struct grid_sort_style : public Command {
STR_DISP("Style Name")
STR_HELP("Sort all subtitles by their style names")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->ass->Sort(AssFile::CompStyle);
c->ass->Commit(_("sort"), AssFile::COMMIT_ORDER);
}
@ -242,7 +242,7 @@ struct grid_sort_style_selected : public validate_sel_multiple {
STR_DISP("Style Name")
STR_HELP("Sort selected subtitles by their style names")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->ass->Sort(AssFile::CompStyle, c->selectionController->GetSelectedSet());
c->ass->Commit(_("sort"), AssFile::COMMIT_ORDER);
}
@ -254,7 +254,7 @@ struct grid_tag_cycle_hiding : public Command {
STR_DISP("Cycle Tag Hiding Mode")
STR_HELP("Cycle through tag hiding modes")
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
int tagMode = OPT_GET("Subtitle/Grid/Hide Overrides")->GetInt();
// Cycle to next
@ -279,11 +279,11 @@ struct grid_tags_hide : public Command {
STR_HELP("Hide override tags in the subtitle grid")
CMD_TYPE(COMMAND_RADIO)
bool IsActive(const agi::Context *) {
bool IsActive(const agi::Context *) override {
return OPT_GET("Subtitle/Grid/Hide Overrides")->GetInt() == 2;
}
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
OPT_SET("Subtitle/Grid/Hide Overrides")->SetInt(2);
}
};
@ -295,11 +295,11 @@ struct grid_tags_show : public Command {
STR_HELP("Show full override tags in the subtitle grid")
CMD_TYPE(COMMAND_RADIO)
bool IsActive(const agi::Context *) {
bool IsActive(const agi::Context *) override {
return OPT_GET("Subtitle/Grid/Hide Overrides")->GetInt() == 0;
}
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
OPT_SET("Subtitle/Grid/Hide Overrides")->SetInt(0);
}
};
@ -311,11 +311,11 @@ struct grid_tags_simplify : public Command {
STR_HELP("Replace override tags in the subtitle grid with a simplified placeholder")
CMD_TYPE(COMMAND_RADIO)
bool IsActive(const agi::Context *) {
bool IsActive(const agi::Context *) override {
return OPT_GET("Subtitle/Grid/Hide Overrides")->GetInt() == 1;
}
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
OPT_SET("Subtitle/Grid/Hide Overrides")->SetInt(1);
}
};
@ -348,11 +348,11 @@ struct grid_move_up : public Command {
STR_HELP("Move the selected lines up one row")
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->selectionController->GetSelectedSet().size() != 0;
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (move_one(c->ass->Line.begin(), c->ass->Line.end(), c->selectionController->GetSelectedSet(), 1))
c->ass->Commit(_("move lines"), AssFile::COMMIT_ORDER);
}
@ -365,11 +365,11 @@ struct grid_move_down : public Command {
STR_HELP("Move the selected lines down one row")
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->selectionController->GetSelectedSet().size() != 0;
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (move_one(--c->ass->Line.end(), c->ass->Line.begin(), c->selectionController->GetSelectedSet(), -1))
c->ass->Commit(_("move lines"), AssFile::COMMIT_ORDER);
}
@ -382,11 +382,11 @@ struct grid_swap : public Command {
STR_HELP("Swap the two selected lines")
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->selectionController->GetSelectedSet().size() == 2;
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
SubtitleSelection sel = c->selectionController->GetSelectedSet();
if (sel.size() == 2) {
(*sel.begin())->swap_nodes(**sel.rbegin());

View file

@ -50,11 +50,11 @@ struct help_bugs : public Command {
STR_DISP("Bug Tracker")
STR_HELP("Visit Aegisub's bug tracker to report bugs and request new features")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (wxGetMouseState().CmdDown()) {
if (wxGetMouseState().ShiftDown()) {
wxMessageBox("Now crashing with an access violation...");
for (char *foo = (char*)0;;) *foo++ = 42;
for (char *foo = (char*)nullptr;;) *foo++ = 42;
} else {
wxMessageBox("Now crashing with an unhandled exception...");
throw c->parent;
@ -70,7 +70,7 @@ struct help_contents : public Command {
STR_DISP("Contents")
STR_HELP("Help topics")
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
HelpButton::OpenPage("Main");
}
};
@ -81,7 +81,7 @@ struct help_forums : public Command {
STR_DISP("Forums")
STR_HELP("Visit Aegisub's forums")
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
wxLaunchDefaultBrowser("http://forum.aegisub.org/", wxBROWSER_NEW_WINDOW);
}
};
@ -92,7 +92,7 @@ struct help_irc : public Command {
STR_DISP("IRC Channel")
STR_HELP("Visit Aegisub's official IRC channel")
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
wxLaunchDefaultBrowser("irc://irc.rizon.net/aegisub", wxBROWSER_NEW_WINDOW);
}
};
@ -103,7 +103,7 @@ struct help_video : public Command {
STR_DISP("Visual Typesetting")
STR_HELP("Open the manual page for Visual Typesetting")
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
HelpButton::OpenPage("Visual Typesetting");
}
};
@ -114,7 +114,7 @@ struct help_website : public Command {
STR_DISP("Website")
STR_HELP("Visit Aegisub's official website")
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
wxLaunchDefaultBrowser("http://www.aegisub.org/", wxBROWSER_NEW_WINDOW);
}
};

View file

@ -59,7 +59,7 @@ wxBitmap const& get(std::string const& name, const int size) {
void icon_init() {
// Seems that WX doesn't install the handlers early enough for our use.
wxPNGHandler *handler = new wxPNGHandler();
auto handler = new wxPNGHandler();
wxImage::AddHandler(handler);
LOG_D("icon/init") << "Generating 24x24, 16x16 icons";

View file

@ -50,11 +50,11 @@ struct keyframe_close : public Command {
STR_HELP("Discard the currently loaded keyframes and use those from the video, if any")
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->videoController->OverKeyFramesLoaded();
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->CloseKeyframes();
}
};
@ -65,7 +65,7 @@ struct keyframe_open : public Command {
STR_DISP("Open Keyframes")
STR_HELP("Open a keyframe list file")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
auto filename = OpenFileSelector(
_("Open keyframes file"),
"Path/Last/Keyframes", "" ,".txt",
@ -84,11 +84,11 @@ struct keyframe_save : public Command {
STR_HELP("Save the current list of keyframes to a file")
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->videoController->KeyFramesLoaded();
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
auto filename = SaveFileSelector(_("Save keyframes file"), "Path/Last/Keyframes", "", "*.key.txt", "Text files (*.txt)|*.txt", c->parent);
if (!filename.empty())
c->videoController->SaveKeyframes(filename);

View file

@ -63,14 +63,14 @@ namespace {
struct validate_nonempty_selection : public Command {
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return !c->selectionController->GetSelectedSet().empty();
}
};
struct validate_nonempty_selection_video_loaded : public Command {
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->videoController->IsLoaded() && !c->selectionController->GetSelectedSet().empty();
}
};
@ -81,7 +81,7 @@ struct subtitle_attachment : public Command {
STR_DISP("Attachments")
STR_HELP("Open the attachment manager dialog")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
DialogAttachments(c->parent, c->ass).ShowModal();
}
@ -93,7 +93,7 @@ struct subtitle_find : public Command {
STR_DISP("Find")
STR_HELP("Search for text the in subtitles")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
DialogSearchReplace::Show(c, false);
}
@ -105,7 +105,7 @@ struct subtitle_find_next : public Command {
STR_DISP("Find Next")
STR_HELP("Find next match of last search")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
if (!c->search->FindNext())
DialogSearchReplace::Show(c, false);
@ -113,7 +113,7 @@ struct subtitle_find_next : public Command {
};
static void insert_subtitle_at_video(agi::Context *c, bool after) {
AssDialogue *def = new AssDialogue;
auto def = new AssDialogue;
int video_ms = c->videoController->TimeAtFrame(c->videoController->GetFrameN(), agi::vfr::START);
def->Start = video_ms;
def->End = video_ms + OPT_GET("Timing/Default Duration")->GetInt();
@ -136,10 +136,10 @@ struct subtitle_insert_after : public validate_nonempty_selection {
STR_DISP("After Current")
STR_HELP("Insert a new line after the current one")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
AssDialogue *active_line = c->selectionController->GetActiveLine();
AssDialogue *new_line = new AssDialogue;
auto new_line = new AssDialogue;
new_line->Style = active_line->Style;
new_line->Start = active_line->End;
new_line->End = new_line->Start + OPT_GET("Timing/Default Duration")->GetInt();
@ -172,7 +172,7 @@ struct subtitle_insert_after_videotime : public validate_nonempty_selection_vide
STR_DISP("After Current, at Video Time")
STR_HELP("Insert a new line after the current one, starting at video time")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
insert_subtitle_at_video(c, true);
}
};
@ -183,10 +183,10 @@ struct subtitle_insert_before : public validate_nonempty_selection {
STR_DISP("Before Current")
STR_HELP("Insert a new line before the current one")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
AssDialogue *active_line = c->selectionController->GetActiveLine();
AssDialogue *new_line = new AssDialogue;
auto new_line = new AssDialogue;
new_line->Style = active_line->Style;
new_line->End = active_line->Start;
new_line->Start = new_line->End - OPT_GET("Timing/Default Duration")->GetInt();
@ -216,7 +216,7 @@ struct subtitle_insert_before_videotime : public validate_nonempty_selection_vid
STR_DISP("Before Current, at Video Time")
STR_HELP("Insert a new line before the current one, starting at video time")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
insert_subtitle_at_video(c, false);
}
};
@ -227,7 +227,7 @@ struct subtitle_new : public Command {
STR_DISP("New Subtitles")
STR_HELP("New subtitles")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (c->subsController->TryToClose() != wxCANCEL)
c->subsController->Close();
}
@ -239,7 +239,7 @@ struct subtitle_open : public Command {
STR_DISP("Open Subtitles")
STR_HELP("Open a subtitles file")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (c->subsController->TryToClose() == wxCANCEL) return;
auto filename = OpenFileSelector(_("Open subtitles file"), "Path/Last/Subtitles", "","", SubtitleFormat::GetWildcards(0), c->parent);
if (!filename.empty())
@ -253,7 +253,7 @@ struct subtitle_open_autosave : public Command {
STR_DISP("Open Autosaved Subtitles")
STR_HELP("Open a previous version of a file which was autosaved by Aegisub")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (c->subsController->TryToClose() == wxCANCEL) return;
DialogAutosave dialog(c->parent);
if (dialog.ShowModal() == wxID_OK)
@ -267,7 +267,7 @@ struct subtitle_open_charset : public Command {
STR_DISP("Open Subtitles with Charset")
STR_HELP("Open a subtitles file with a specific file encoding")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (c->subsController->TryToClose() == wxCANCEL) return;
auto filename = OpenFileSelector(_("Open subtitles file"), "Path/Last/Subtitles", "","", SubtitleFormat::GetWildcards(0), c->parent);
@ -287,12 +287,12 @@ struct subtitle_open_video : public Command {
STR_HELP("Open the subtitles from the current video file")
CMD_TYPE(COMMAND_VALIDATE)
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (c->subsController->TryToClose() == wxCANCEL) return;
c->subsController->Load(c->videoController->GetVideoName(), "binary");
}
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->videoController->IsLoaded() && c->videoController->HasSubtitles();
}
};
@ -303,7 +303,7 @@ struct subtitle_properties : public Command {
STR_DISP("Properties")
STR_HELP("Open script properties window")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
DialogProperties(c).ShowModal();
}
@ -339,11 +339,11 @@ struct subtitle_save : public Command {
STR_HELP("Save the current subtitles")
CMD_TYPE(COMMAND_VALIDATE)
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
save_subtitles(c, c->subsController->CanSave() ? c->subsController->Filename() : "");
}
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->subsController->IsModified();
}
};
@ -354,7 +354,7 @@ struct subtitle_save_as : public Command {
STR_DISP("Save Subtitles as")
STR_HELP("Save subtitles with another name")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
save_subtitles(c, "");
}
};
@ -365,7 +365,7 @@ struct subtitle_select_all : public Command {
STR_DISP("Select All")
STR_HELP("Select all dialogue lines")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
SubtitleSelection sel;
transform(c->ass->Line.begin(), c->ass->Line.end(),
inserter(sel, sel.begin()), cast<AssDialogue*>());
@ -381,7 +381,7 @@ struct subtitle_select_visible : public Command {
STR_HELP("Select all dialogue lines that visible on the current video frame")
CMD_TYPE(COMMAND_VALIDATE)
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (!c->videoController->IsLoaded()) return;
c->videoController->Stop();
@ -403,7 +403,7 @@ struct subtitle_select_visible : public Command {
c->selectionController->SetSelectedSet(new_selection);
}
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->videoController->IsLoaded();
}
};
@ -414,7 +414,7 @@ struct subtitle_spellcheck : public Command {
STR_DISP("Spell Checker")
STR_HELP("Open spell checker")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
c->dialog->Show<DialogSpellChecker>(c);
}

View file

@ -54,14 +54,14 @@ namespace {
struct validate_video_loaded : public Command {
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->videoController->IsLoaded();
}
};
struct validate_adjoinable : public Command {
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
SubtitleSelection sel = c->selectionController->GetSelectedSet();
if (sel.size() < 2) return !sel.empty();
@ -112,7 +112,7 @@ struct time_continuous_end : public validate_adjoinable {
STR_DISP("Change End")
STR_HELP("Change end times of lines to the next line's start time")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
adjoin_lines(c, false);
}
};
@ -123,7 +123,7 @@ struct time_continuous_start : public validate_adjoinable {
STR_DISP("Change Start")
STR_HELP("Change start times of lines to the previous line's end time")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
adjoin_lines(c, true);
}
};
@ -134,7 +134,7 @@ struct time_frame_current : public validate_video_loaded {
STR_DISP("Shift to Current Frame")
STR_HELP("Shift selection so that the active line starts at current frame")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (!c->videoController->IsLoaded()) return;
SubtitleSelection const& sel = c->selectionController->GetSelectedSet();
@ -160,7 +160,7 @@ struct time_shift : public Command {
STR_DISP("Shift Times")
STR_HELP("Shift subtitles by time or frames")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->dialog->Show<DialogShiftTimes>(c);
}
};
@ -189,7 +189,7 @@ struct time_snap_end_video : public validate_video_loaded {
STR_DISP("Snap End to Video")
STR_HELP("Set end of selected subtitles to current video frame")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
snap_subs_video(c, false);
}
};
@ -200,7 +200,7 @@ struct time_snap_scene : public validate_video_loaded {
STR_DISP("Snap to Scene")
STR_HELP("Set start and end of subtitles to the keyframes around current video frame")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
VideoContext *con = c->videoController;
if (!con->IsLoaded() || !con->KeyFramesLoaded()) return;
@ -244,7 +244,7 @@ struct time_add_lead_both : public Command {
STR_MENU("Add lead in and out")
STR_DISP("Add lead in and out")
STR_HELP("Add both lead in and out to the selected lines")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (AudioTimingController *tc = c->audioController->GetTimingController()) {
tc->AddLeadIn();
tc->AddLeadOut();
@ -257,7 +257,7 @@ struct time_add_lead_in : public Command {
STR_MENU("Add lead in")
STR_DISP("Add lead in")
STR_HELP("Add the lead in time to the selected lines")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (c->audioController->GetTimingController())
c->audioController->GetTimingController()->AddLeadIn();
}
@ -268,7 +268,7 @@ struct time_add_lead_out : public Command {
STR_MENU("Add lead out")
STR_DISP("Add lead out")
STR_HELP("Add the lead out time to the selected lines")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (c->audioController->GetTimingController())
c->audioController->GetTimingController()->AddLeadOut();
}
@ -279,7 +279,7 @@ struct time_length_increase : public Command {
STR_MENU("Increase length")
STR_DISP("Increase length")
STR_HELP("Increase the length of the current timing unit")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (c->audioController->GetTimingController())
c->audioController->GetTimingController()->ModifyLength(1, false);
}
@ -290,7 +290,7 @@ struct time_length_increase_shift : public Command {
STR_MENU("Increase length and shift")
STR_DISP("Increase length and shift")
STR_HELP("Increase the length of the current timing unit and shift the following items")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (c->audioController->GetTimingController())
c->audioController->GetTimingController()->ModifyLength(1, true);
}
@ -301,7 +301,7 @@ struct time_length_decrease : public Command {
STR_MENU("Decrease length")
STR_DISP("Decrease length")
STR_HELP("Decrease the length of the current timing unit")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (c->audioController->GetTimingController())
c->audioController->GetTimingController()->ModifyLength(-1, false);
}
@ -312,7 +312,7 @@ struct time_length_decrease_shift : public Command {
STR_MENU("Decrease length and shift")
STR_DISP("Decrease length and shift")
STR_HELP("Decrease the length of the current timing unit and shift the following items")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (c->audioController->GetTimingController())
c->audioController->GetTimingController()->ModifyLength(-1, true);
}
@ -323,7 +323,7 @@ struct time_start_increase : public Command {
STR_MENU("Shift start time forward")
STR_DISP("Shift start time forward")
STR_HELP("Shift the start time of the current timing unit forward")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (c->audioController->GetTimingController())
c->audioController->GetTimingController()->ModifyStart(1);
}
@ -334,7 +334,7 @@ struct time_start_decrease : public Command {
STR_MENU("Shift start time backward")
STR_DISP("Shift start time backward")
STR_HELP("Shift the start time of the current timing unit backward")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (c->audioController->GetTimingController())
c->audioController->GetTimingController()->ModifyStart(-1);
}
@ -346,7 +346,7 @@ struct time_snap_start_video : public validate_video_loaded {
STR_DISP("Snap Start to Video")
STR_HELP("Set start of selected subtitles to current video frame")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
snap_subs_video(c, true);
}
};
@ -356,7 +356,7 @@ struct time_next : public Command {
STR_MENU("Next Line")
STR_DISP("Next Line")
STR_HELP("Next line or syllable")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (c->audioController->GetTimingController())
c->audioController->GetTimingController()->Next(AudioTimingController::TIMING_UNIT);
}
@ -367,7 +367,7 @@ struct time_prev : public Command {
STR_MENU("Previous Line")
STR_DISP("Previous Line")
STR_HELP("Previous line or syllable")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (c->audioController->GetTimingController())
c->audioController->GetTimingController()->Prev();
}

View file

@ -50,11 +50,11 @@ struct timecode_close : public Command {
STR_HELP("Close the currently open timecodes file")
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->videoController->OverTimecodesLoaded();
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->CloseTimecodes();
}
};
@ -65,7 +65,7 @@ struct timecode_open : public Command {
STR_DISP("Open Timecodes File")
STR_HELP("Open a VFR timecodes v1 or v2 file")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
auto str = _("All Supported Formats") + " (*.txt)|*.txt|" + _("All Files") + " (*.*)|*.*";
auto filename = OpenFileSelector(_("Open Timecodes File"), "Path/Last/Timecodes", "", "", str, c->parent);
if (!filename.empty())
@ -80,11 +80,11 @@ struct timecode_save : public Command {
STR_HELP("Save a VFR timecodes v2 file")
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->videoController->TimecodesLoaded();
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
auto str = _("All Supported Formats") + " (*.txt)|*.txt|" + _("All Files") + " (*.*)|*.*";
auto filename = SaveFileSelector(_("Save Timecodes File"), "Path/Last/Timecodes", "", "", str, c->parent);
if (!filename.empty())

View file

@ -65,7 +65,7 @@ struct tool_assdraw : public Command {
STR_DISP("ASSDraw3")
STR_HELP("Launch the ASSDraw3 tool for vector drawing")
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
wxExecute("\"" + config::path->Decode("?data/ASSDraw3.exe").wstring() + "\"");
}
};
@ -76,7 +76,7 @@ struct tool_export : public Command {
STR_DISP("Export Subtitles")
STR_HELP("Save a copy of subtitles in a different format or with processing applied to it")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
DialogExport(c).ShowModal();
}
@ -88,7 +88,7 @@ struct tool_font_collector : public Command {
STR_DISP("Fonts Collector")
STR_HELP("Open fonts collector")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->dialog->Show<DialogFontsCollector>(c);
}
};
@ -99,7 +99,7 @@ struct tool_line_select : public Command {
STR_DISP("Select Lines")
STR_HELP("Select lines based on defined criteria")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->dialog->Show<DialogSelection>(c);
}
};
@ -110,7 +110,7 @@ struct tool_resampleres : public Command {
STR_DISP("Resample Resolution")
STR_HELP("Resample subtitles to maintain their current appearance at a different script resolution")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
ResampleSettings settings;
if (DialogResample(c, settings).ShowModal() == wxID_OK)
@ -124,7 +124,7 @@ struct tool_style_assistant : public Command {
STR_DISP("Styling Assistant")
STR_HELP("Open styling assistant")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->dialog->Show<DialogStyling>(c);
}
};
@ -132,7 +132,7 @@ struct tool_style_assistant : public Command {
struct tool_styling_assistant_validator : public Command {
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return !!c->dialog->Get<DialogStyling>();
}
};
@ -143,7 +143,7 @@ struct tool_styling_assistant_commit : public tool_styling_assistant_validator {
STR_DISP("Accept changes")
STR_HELP("Commit changes and move to the next line")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->dialog->Get<DialogStyling>()->Commit(true);
}
};
@ -154,7 +154,7 @@ struct tool_styling_assistant_preview : public tool_styling_assistant_validator
STR_DISP("Preview changes")
STR_HELP("Commit changes and stay on the current line")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->dialog->Get<DialogStyling>()->Commit(false);
}
};
@ -165,7 +165,7 @@ struct tool_style_manager : public Command {
STR_DISP("Styles Manager")
STR_HELP("Open the styles manager")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->dialog->Show<DialogStyleManager>(c);
}
};
@ -176,7 +176,7 @@ struct tool_time_kanji : public Command {
STR_DISP("Kanji Timer")
STR_HELP("Open the Kanji timer copier")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
DialogKanjiTimer(c).ShowModal();
}
};
@ -187,7 +187,7 @@ struct tool_time_postprocess : public Command {
STR_DISP("Timing Post-Processor")
STR_HELP("Post-process the subtitle timing to add lead-ins and lead-outs, snap timing to scene changes, etc.")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
DialogTimingProcessor(c).ShowModal();
}
};
@ -198,7 +198,7 @@ struct tool_translation_assistant : public Command {
STR_DISP("Translation Assistant")
STR_HELP("Open translation assistant")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
try {
c->dialog->ShowModal<DialogTranslation>(c);
@ -212,7 +212,7 @@ struct tool_translation_assistant : public Command {
struct tool_translation_assistant_validator : public Command {
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return !!c->dialog->Get<DialogTranslation>();
}
};
@ -223,7 +223,7 @@ struct tool_translation_assistant_commit : public tool_translation_assistant_val
STR_DISP("Accept changes")
STR_HELP("Commit changes and move to the next line")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->dialog->Get<DialogTranslation>()->Commit(true);
}
};
@ -234,7 +234,7 @@ struct tool_translation_assistant_preview : public tool_translation_assistant_va
STR_DISP("Preview changes")
STR_HELP("Commit changes and stay on the current line")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->dialog->Get<DialogTranslation>()->Commit(false);
}
};
@ -245,7 +245,7 @@ struct tool_translation_assistant_next : public tool_translation_assistant_valid
STR_DISP("Next Line")
STR_HELP("Move to the next line without committing changes")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->dialog->Get<DialogTranslation>()->NextBlock();
}
};
@ -256,7 +256,7 @@ struct tool_translation_assistant_prev : public tool_translation_assistant_valid
STR_DISP("Previous Line")
STR_HELP("Move to the previous line without committing changes")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->dialog->Get<DialogTranslation>()->PrevBlock();
}
};
@ -268,7 +268,7 @@ struct tool_translation_assistant_insert : public tool_translation_assistant_val
STR_DISP("Insert Original")
STR_HELP("Insert the untranslated text")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->dialog->Get<DialogTranslation>()->InsertOriginal();
}
};

View file

@ -72,14 +72,14 @@ namespace {
struct validator_video_loaded : public Command {
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->videoController->IsLoaded();
}
};
struct validator_video_attached : public Command {
CMD_TYPE(COMMAND_VALIDATE)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->videoController->IsLoaded() && !c->dialog->Get<DialogDetachedVideo>();
}
};
@ -91,11 +91,11 @@ struct video_aspect_cinematic : public validator_video_loaded {
STR_HELP("Force video to 2.35 aspect ratio")
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
bool IsActive(const agi::Context *c) {
bool IsActive(const agi::Context *c) override {
return c->videoController->GetAspectRatioType() == AspectRatio::Cinematic;
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
c->videoController->SetAspectRatio(AspectRatio::Cinematic);
wxGetApp().frame->SetDisplayMode(1,-1);
@ -109,11 +109,11 @@ struct video_aspect_custom : public validator_video_loaded {
STR_HELP("Force video to a custom aspect ratio")
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
bool IsActive(const agi::Context *c) {
bool IsActive(const agi::Context *c) override {
return c->videoController->GetAspectRatioType() == AspectRatio::Custom;
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
std::string value = from_wx(wxGetTextFromUser(
@ -152,11 +152,11 @@ struct video_aspect_default : public validator_video_loaded {
STR_HELP("Use video's original aspect ratio")
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
bool IsActive(const agi::Context *c) {
bool IsActive(const agi::Context *c) override {
return c->videoController->GetAspectRatioType() == AspectRatio::Default;
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
c->videoController->SetAspectRatio(AspectRatio::Default);
wxGetApp().frame->SetDisplayMode(1,-1);
@ -170,11 +170,11 @@ struct video_aspect_full : public validator_video_loaded {
STR_HELP("Force video to 4:3 aspect ratio")
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
bool IsActive(const agi::Context *c) {
bool IsActive(const agi::Context *c) override {
return c->videoController->GetAspectRatioType() == AspectRatio::Fullscreen;
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
c->videoController->SetAspectRatio(AspectRatio::Fullscreen);
wxGetApp().frame->SetDisplayMode(1,-1);
@ -188,11 +188,11 @@ struct video_aspect_wide : public validator_video_loaded {
STR_HELP("Force video to 16:9 aspect ratio")
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
bool IsActive(const agi::Context *c) {
bool IsActive(const agi::Context *c) override {
return c->videoController->GetAspectRatioType() == AspectRatio::Widescreen;
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
c->videoController->SetAspectRatio(AspectRatio::Widescreen);
wxGetApp().frame->SetDisplayMode(1,-1);
@ -205,7 +205,7 @@ struct video_close : public validator_video_loaded {
STR_DISP("Close Video")
STR_HELP("Close the currently open video file")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->SetVideo("");
}
};
@ -216,7 +216,7 @@ struct video_copy_coordinates : public validator_video_loaded {
STR_DISP("Copy coordinates to Clipboard")
STR_HELP("Copy the current coordinates of the mouse over the video to the clipboard")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
SetClipboard(c->videoDisplay->GetMousePosition().Str());
}
};
@ -227,7 +227,7 @@ struct video_cycle_subtitles_provider : public cmd::Command {
STR_DISP("Cycle active subtitles provider")
STR_HELP("Cycle through the available subtitles providers")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
auto providers = SubtitlesProviderFactory::GetClasses();
if (providers.empty()) return;
@ -247,11 +247,11 @@ struct video_detach : public validator_video_loaded {
STR_HELP("Detach the video display from the main window, displaying it in a separate Window")
CMD_TYPE(COMMAND_VALIDATE | COMMAND_TOGGLE)
bool IsActive(const agi::Context *c) {
bool IsActive(const agi::Context *c) override {
return !!c->dialog->Get<DialogDetachedVideo>();
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (DialogDetachedVideo *d = c->dialog->Get<DialogDetachedVideo>())
d->Close();
else
@ -265,7 +265,7 @@ struct video_details : public validator_video_loaded {
STR_DISP("Show Video Details")
STR_HELP("Show video details")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
DialogVideoDetails(c).ShowModal();
}
@ -277,7 +277,7 @@ struct video_focus_seek : public validator_video_loaded {
STR_DISP("Toggle video slider focus")
STR_HELP("Toggle focus between the video slider and the previous thing to have focus")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
wxWindow *curFocus = wxWindow::FindFocus();
if (curFocus == c->videoSlider) {
if (c->previousFocus) c->previousFocus->SetFocus();
@ -295,7 +295,7 @@ struct video_frame_copy : public validator_video_loaded {
STR_DISP("Copy image to Clipboard")
STR_HELP("Copy the currently displayed frame to the clipboard")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
SetClipboard(wxBitmap(GetImage(*c->videoController->GetFrame(c->videoController->GetFrameN())), 24));
}
};
@ -306,7 +306,7 @@ struct video_frame_copy_raw : public validator_video_loaded {
STR_DISP("Copy image to Clipboard (no subtitles)")
STR_HELP("Copy the currently displayed frame to the clipboard, without the subtitles")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
SetClipboard(wxBitmap(GetImage(*c->videoController->GetFrame(c->videoController->GetFrameN(), true)), 24));
}
};
@ -317,7 +317,7 @@ struct video_frame_next : public validator_video_loaded {
STR_DISP("Next Frame")
STR_HELP("Seek to the next frame")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->NextFrame();
}
};
@ -328,7 +328,7 @@ struct video_frame_next_boundary : public validator_video_loaded {
STR_DISP("Next Boundary")
STR_HELP("Seek to the next beginning or end of a subtitle")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
AssDialogue *active_line = c->selectionController->GetActiveLine();
if (!active_line) return;
@ -357,7 +357,7 @@ struct video_frame_next_keyframe : public validator_video_loaded {
STR_DISP("Next Keyframe")
STR_HELP("Seek to the next keyframe")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
auto const& kf = c->videoController->GetKeyFrames();
auto pos = lower_bound(kf.begin(), kf.end(), c->videoController->GetFrameN() + 1);
@ -371,7 +371,7 @@ struct video_frame_next_large : public validator_video_loaded {
STR_DISP("Fast jump forward")
STR_HELP("Fast jump forward")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->JumpToFrame(
c->videoController->GetFrameN() +
OPT_GET("Video/Slider/Fast Jump Step")->GetInt());
@ -384,7 +384,7 @@ struct video_frame_prev : public validator_video_loaded {
STR_DISP("Previous Frame")
STR_HELP("Seek to the previous frame")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->PrevFrame();
}
};
@ -395,7 +395,7 @@ struct video_frame_prev_boundary : public validator_video_loaded {
STR_DISP("Previous Boundary")
STR_HELP("Seek to the previous beginning or end of a subtitle")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
AssDialogue *active_line = c->selectionController->GetActiveLine();
if (!active_line) return;
@ -424,7 +424,7 @@ struct video_frame_prev_keyframe : public validator_video_loaded {
STR_DISP("Previous Keyframe")
STR_HELP("Seek to the previous keyframe")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
auto const& kf = c->videoController->GetKeyFrames();
if (kf.empty()) {
c->videoController->JumpToFrame(0);
@ -446,7 +446,7 @@ struct video_frame_prev_large : public validator_video_loaded {
STR_DISP("Fast jump backwards")
STR_HELP("Fast jump backwards")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->JumpToFrame(
c->videoController->GetFrameN() -
OPT_GET("Video/Slider/Fast Jump Step")->GetInt());
@ -497,7 +497,7 @@ struct video_frame_save : public validator_video_loaded {
STR_DISP("Save PNG snapshot")
STR_HELP("Save the currently displayed frame to a PNG file in the video's directory")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
save_snapshot(c, false);
}
};
@ -508,7 +508,7 @@ struct video_frame_save_raw : public validator_video_loaded {
STR_DISP("Save PNG snapshot (no subtitles)")
STR_HELP("Save the currently displayed frame without the subtitles to a PNG file in the video's directory")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
save_snapshot(c, true);
}
};
@ -519,7 +519,7 @@ struct video_jump : public validator_video_loaded {
STR_DISP("Jump to")
STR_HELP("Jump to frame or time")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
if (c->videoController->IsLoaded()) {
DialogJumpTo(c).ShowModal();
@ -534,7 +534,7 @@ struct video_jump_end : public validator_video_loaded {
STR_DISP("Jump Video to End")
STR_HELP("Jump the video to the end frame of current subtitle")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (AssDialogue *active_line = c->selectionController->GetActiveLine()) {
c->videoController->JumpToTime(active_line->End, agi::vfr::END);
}
@ -547,7 +547,7 @@ struct video_jump_start : public validator_video_loaded {
STR_DISP("Jump Video to Start")
STR_HELP("Jump the video to the start frame of current subtitle")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
if (AssDialogue *active_line = c->selectionController->GetActiveLine())
c->videoController->JumpToTime(active_line->Start);
}
@ -559,7 +559,7 @@ struct video_open : public Command {
STR_DISP("Open Video")
STR_HELP("Open a video file")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
auto str = _("Video Formats") + " (*.asf,*.avi,*.avs,*.d2v,*.m2ts,*.m4v,*.mkv,*.mov,*.mp4,*.mpeg,*.mpg,*.ogm,*.webm,*.wmv,*.ts,*.y4m,*.yuv)|*.asf;*.avi;*.avs;*.d2v;*.m2ts;*.m4v;*.mkv;*.mov;*.mp4;*.mpeg;*.mpg;*.ogm;*.webm;*.wmv;*.ts;*.y4m;*.yuv|"
+ _("All Files") + " (*.*)|*.*";
auto filename = OpenFileSelector(_("Open video file"), "Path/Last/Video", "", "", str, c->parent);
@ -574,7 +574,7 @@ struct video_open_dummy : public Command {
STR_DISP("Use Dummy Video")
STR_HELP("Open a placeholder video clip with solid color")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
std::string fn = DialogDummyVideo::CreateDummyVideo(c->parent);
if (!fn.empty())
c->videoController->SetVideo(fn);
@ -588,11 +588,11 @@ struct video_opt_autoscroll : public Command {
STR_HELP("Toggle automatically seeking video to the start time of selected lines")
CMD_TYPE(COMMAND_TOGGLE)
bool IsActive(const agi::Context *) {
bool IsActive(const agi::Context *) override {
return OPT_GET("Video/Subtitle Sync")->GetBool();
}
void operator()(agi::Context *) {
void operator()(agi::Context *) override {
OPT_SET("Video/Subtitle Sync")->SetBool(!OPT_GET("Video/Subtitle Sync")->GetBool());
}
};
@ -603,7 +603,7 @@ struct video_play : public validator_video_loaded {
STR_DISP("Play")
STR_HELP("Play video starting on this position")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Play();
}
};
@ -614,7 +614,7 @@ struct video_play_line : public validator_video_loaded {
STR_DISP("Play line")
STR_HELP("Play current line")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->PlayLine();
}
};
@ -626,11 +626,11 @@ struct video_show_overscan : public validator_video_loaded {
STR_HELP("Show a mask over the video, indicating areas that might get cropped off by overscan on televisions")
CMD_TYPE(COMMAND_VALIDATE | COMMAND_TOGGLE)
bool IsActive(const agi::Context *) {
bool IsActive(const agi::Context *) override {
return OPT_GET("Video/Overscan Mask")->GetBool();
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
OPT_SET("Video/Overscan Mask")->SetBool(!OPT_GET("Video/Overscan Mask")->GetBool());
c->videoDisplay->Render();
}
@ -644,11 +644,11 @@ public:
STR_HELP("Set zoom to 100%")
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
bool IsActive(const agi::Context *c) {
bool IsActive(const agi::Context *c) override {
return c->videoDisplay->GetZoom() == 1.;
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
c->videoDisplay->SetZoom(1.);
}
@ -661,7 +661,7 @@ public:
STR_DISP("Stop video")
STR_HELP("Stop video playback")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
}
};
@ -674,11 +674,11 @@ public:
STR_HELP("Set zoom to 200%")
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
bool IsActive(const agi::Context *c) {
bool IsActive(const agi::Context *c) override {
return c->videoDisplay->GetZoom() == 2.;
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
c->videoDisplay->SetZoom(2.);
}
@ -692,11 +692,11 @@ public:
STR_HELP("Set zoom to 50%")
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
bool IsActive(const agi::Context *c) {
bool IsActive(const agi::Context *c) override {
return c->videoDisplay->GetZoom() == .5;
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoController->Stop();
c->videoDisplay->SetZoom(.5);
}
@ -708,7 +708,7 @@ struct video_zoom_in : public validator_video_attached {
STR_DISP("Zoom In")
STR_HELP("Zoom video in")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoDisplay->SetZoom(c->videoDisplay->GetZoom() + .125);
}
};
@ -719,7 +719,7 @@ struct video_zoom_out : public validator_video_attached {
STR_DISP("Zoom Out")
STR_HELP("Zoom video out")
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoDisplay->SetZoom(c->videoDisplay->GetZoom() - .125);
}
};

View file

@ -39,15 +39,15 @@ namespace {
struct visual_tool_command : public Command {
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
bool Validate(const agi::Context *c) {
bool Validate(const agi::Context *c) override {
return c->videoController->IsLoaded();
}
bool IsActive(const agi::Context *c) {
bool IsActive(const agi::Context *c) override {
return c->videoDisplay->ToolIsType(typeid(T));
}
void operator()(agi::Context *c) {
void operator()(agi::Context *c) override {
c->videoDisplay->SetTool(agi::util::make_unique<T>(c->videoDisplay, c));
}
};

View file

@ -240,7 +240,7 @@ static wxString form_to_str(const SubtitleFormat* f) {
void DialogAutomation::OnInfo(wxCommandEvent &)
{
int i = list->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
ExtraScriptInfo *ei = i >= 0 ? &script_info[list->GetItemData(i)] : 0;
ExtraScriptInfo *ei = i >= 0 ? &script_info[list->GetItemData(i)] : nullptr;
wxArrayString info;
std::back_insert_iterator<wxArrayString> append_info(info);

View file

@ -29,8 +29,8 @@ class DialogAutosave : public wxDialog {
wxString filename;
wxDateTime date;
wxString display;
Version(wxString const& filename, wxDateTime const& date, wxString const& display)
: filename(filename), date(date), display(display) { }
Version(wxString const& filename, wxDateTime date, wxString const& display)
: filename(filename), date(std::move(date)), display(display) { }
};
struct AutosaveFile {

View file

@ -195,14 +195,14 @@ class ColorPickerSpectrum : public wxControl {
}
}
bool AcceptsFocusFromKeyboard() const { return false; }
bool AcceptsFocusFromKeyboard() const override { return false; }
public:
ColorPickerSpectrum(wxWindow *parent, PickerDirection direction, wxSize size)
: wxControl(parent, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE)
, x(-1)
, y(-1)
, background(0)
, background(nullptr)
, direction(direction)
{
size.x += 2;
@ -295,7 +295,7 @@ class ColorPickerRecent : public wxStaticBitmap {
Refresh(false);
}
bool AcceptsFocusFromKeyboard() const { return false; }
bool AcceptsFocusFromKeyboard() const override { return false; }
public:
ColorPickerRecent(wxWindow *parent, int cols, int rows, int cellsize)
@ -365,7 +365,7 @@ class ColorPickerScreenDropper : public wxControl {
wxPaintDC(this).DrawBitmap(capture, 0, 0);
}
bool AcceptsFocusFromKeyboard() const { return false; }
bool AcceptsFocusFromKeyboard() const override { return false; }
public:
ColorPickerScreenDropper(wxWindow *parent, int resx, int resy, int magnification)
@ -548,7 +548,7 @@ static wxBitmap make_slider(Func func) {
DialogColorPicker::DialogColorPicker(wxWindow *parent, agi::Color initial_color, std::function<void (agi::Color)> callback, bool alpha)
: wxDialog(parent, -1, _("Select Color"))
, callback(callback)
, callback(std::move(callback))
{
// generate spectrum slider bar images
for (int i = 0; i < 3; ++i) {
@ -576,18 +576,18 @@ DialogColorPicker::DialogColorPicker(wxWindow *parent, agi::Color initial_color,
wxSizer *hsl_box = new wxStaticBoxSizer(wxVERTICAL, this, _("HSL color"));
wxSizer *hsv_box = new wxStaticBoxSizer(wxVERTICAL, this, _("HSV color"));
for (int i = 0; i < 3; ++i)
rgb_input[i] = new wxSpinCtrl(this, -1, "", wxDefaultPosition, colorinput_size, wxSP_ARROW_KEYS, 0, 255);
for (auto& elem : rgb_input)
elem = new wxSpinCtrl(this, -1, "", wxDefaultPosition, colorinput_size, wxSP_ARROW_KEYS, 0, 255);
ass_input = new wxTextCtrl(this, -1, "", wxDefaultPosition, colorinput_size);
html_input = new wxTextCtrl(this, -1, "", wxDefaultPosition, colorinput_size);
alpha_input = new wxSpinCtrl(this, -1, "", wxDefaultPosition, colorinput_size, wxSP_ARROW_KEYS, 0, 255);
for (int i = 0; i < 3; ++i)
hsl_input[i] = new wxSpinCtrl(this, -1, "", wxDefaultPosition, colorinput_size, wxSP_ARROW_KEYS, 0, 255);
for (auto& elem : hsl_input)
elem = new wxSpinCtrl(this, -1, "", wxDefaultPosition, colorinput_size, wxSP_ARROW_KEYS, 0, 255);
for (int i = 0; i < 3; ++i)
hsv_input[i] = new wxSpinCtrl(this, -1, "", wxDefaultPosition, colorinput_size, wxSP_ARROW_KEYS, 0, 255);
for (auto& elem : hsv_input)
elem = new wxSpinCtrl(this, -1, "", wxDefaultPosition, colorinput_size, wxSP_ARROW_KEYS, 0, 255);
preview_box = new wxStaticBitmap(this, -1, wxBitmap(40, 40, 24), wxDefaultPosition, wxSize(40, 40), STATIC_BORDER_FLAG);
recent_box = new ColorPickerRecent(this, 8, 4, 16);
@ -709,7 +709,7 @@ DialogColorPicker::DialogColorPicker(wxWindow *parent, agi::Color initial_color,
template<int N, class Control>
wxSizer *DialogColorPicker::MakeColorInputSizer(wxString (&labels)[N], Control *(&inputs)[N]) {
wxFlexGridSizer * sizer = new wxFlexGridSizer(2, 5, 5);
auto sizer = new wxFlexGridSizer(2, 5, 5);
for (int i = 0; i < N; ++i) {
sizer->Add(new wxStaticText(this, -1, labels[i]), wxSizerFlags(1).Center().Left());
sizer->Add(inputs[i]);

View file

@ -67,7 +67,7 @@ DialogDetachedVideo::DialogDetachedVideo(agi::Context *context)
old_display->Unload();
// Video area;
VideoBox *videoBox = new VideoBox(this, true, context);
auto videoBox = new VideoBox(this, true, context);
context->videoDisplay->SetMinClientSize(old_display->GetClientSize());
videoBox->Layout();

View file

@ -73,7 +73,7 @@ wxControl *spin_ctrl(wxWindow *parent, double min, double max, double *value) {
}
wxComboBox *resolution_shortcuts(wxWindow *parent, int width, int height) {
wxComboBox *ctrl = new wxComboBox(parent, -1, "", wxDefaultPosition, wxDefaultSize, 0, 0, wxCB_READONLY);
wxComboBox *ctrl = new wxComboBox(parent, -1, "", wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY);
for (auto const& res : resolutions) {
ctrl->Append(res.name);
@ -97,13 +97,13 @@ DialogDummyVideo::DialogDummyVideo(wxWindow *parent)
{
SetIcon(GETICON(use_dummy_video_menu_16));
wxBoxSizer *res_sizer = new wxBoxSizer(wxHORIZONTAL);
auto res_sizer = new wxBoxSizer(wxHORIZONTAL);
res_sizer->Add(spin_ctrl(this, 1, 10000, &width), wxSizerFlags(1).Expand());
res_sizer->Add(new wxStaticText(this, -1, " x "), wxSizerFlags().Center());
res_sizer->Add(spin_ctrl(this, 1, 10000, &height), wxSizerFlags(1).Expand());
wxBoxSizer *color_sizer = new wxBoxSizer(wxHORIZONTAL);
ColourButton *color_btn = new ColourButton(this, wxSize(30, 17), false, color);
auto color_sizer = new wxBoxSizer(wxHORIZONTAL);
auto color_btn = new ColourButton(this, wxSize(30, 17), false, color);
color_sizer->Add(color_btn, wxSizerFlags().DoubleBorder(wxRIGHT));
color_sizer->Add(new wxCheckBox(this, -1, _("Checkerboard &pattern"), wxDefaultPosition, wxDefaultSize, 0, wxGenericValidator(&pattern)), wxSizerFlags(1).Center());
@ -118,7 +118,7 @@ DialogDummyVideo::DialogDummyVideo(wxWindow *parent)
wxStdDialogButtonSizer *btn_sizer = CreateStdDialogButtonSizer(wxOK | wxCANCEL | wxHELP);
btn_sizer->GetHelpButton()->Bind(wxEVT_COMMAND_BUTTON_CLICKED, std::bind(&HelpButton::OpenPage, "Dummy Video"));
wxBoxSizer *main_sizer = new wxBoxSizer(wxVERTICAL);
auto main_sizer = new wxBoxSizer(wxVERTICAL);
main_sizer->Add(sizer, wxSizerFlags(1).Border().Expand());
main_sizer->Add(new wxStaticLine(this, wxHORIZONTAL), wxSizerFlags().HorzBorder().Expand());
main_sizer->Add(btn_sizer, wxSizerFlags().Expand().Border());

View file

@ -53,14 +53,14 @@ namespace {
wxTextCtrl *GetCtrl() const { return dynamic_cast<wxTextCtrl*>(GetWindow()); }
bool TransferToWindow() {
bool TransferToWindow() override {
wxTextCtrl *ctrl = GetCtrl();
if (!ctrl) return false;
ctrl->SetValue(wxString::Format("%02d:%02d:%02d:%02d", (int)value->h, (int)value->m, (int)value->s, (int)value->f));
return true;
}
bool TransferFromWindow() {
bool TransferFromWindow() override {
wxTextCtrl *ctrl = GetCtrl();
if (!ctrl) return false;
@ -77,7 +77,7 @@ namespace {
return true;
}
bool Validate(wxWindow *parent) {
bool Validate(wxWindow *parent) override {
wxTextCtrl *ctrl = GetCtrl();
if (!ctrl) return false;
@ -88,7 +88,7 @@ namespace {
return true;
}
wxObject *Clone() const { return new TimecodeValidator(*this); }
wxObject *Clone() const override { return new TimecodeValidator(*this); }
public:
TimecodeValidator(EbuTimecode *target) : value(target) { assert(target); }

View file

@ -62,7 +62,7 @@ DialogJumpTo::DialogJumpTo(agi::Context *c)
JumpFrame->SetMaxLength(std::to_string(c->videoController->GetLength() - 1).size());
JumpTime = new TimeEdit(this, -1, c, AssTime(c->videoController->TimeAtFrame(jumpframe)).GetAssFormated(), wxSize(-1,-1));
wxGridSizer *TimesSizer = new wxGridSizer(2, 5, 5);
auto TimesSizer = new wxGridSizer(2, 5, 5);
TimesSizer->Add(LabelFrame, 1, wxALIGN_CENTER_VERTICAL);
TimesSizer->Add(JumpFrame, wxEXPAND);

View file

@ -458,7 +458,7 @@ DialogKanjiTimer::DialogKanjiTimer(agi::Context *c)
wxSizer *DisplayBoxSizer = new wxStaticBoxSizer(wxVERTICAL,this,_("Text"));
wxSizer *StylesBoxSizer = new wxStaticBoxSizer(wxVERTICAL,this,_("Styles"));
wxFlexGridSizer *StylesGridSizer = new wxFlexGridSizer(2, 2, 6, 6);
auto StylesGridSizer = new wxFlexGridSizer(2, 2, 6, 6);
wxSizer *HelpBoxSizer = new wxStaticBoxSizer(wxVERTICAL,this,_("Shortcut Keys"));
wxSizer *ButtonsBoxSizer = new wxStaticBoxSizer(wxVERTICAL,this,_("Commands"));
wxSizer *MainStackSizer = new wxBoxSizer(wxVERTICAL);
@ -510,7 +510,7 @@ DialogKanjiTimer::DialogKanjiTimer(agi::Context *c)
ButtonsBoxSizer->AddStretchSpacer(1);
// Button sizer
wxStdDialogButtonSizer *buttonSizer = new wxStdDialogButtonSizer();
auto buttonSizer = new wxStdDialogButtonSizer();
buttonSizer->AddButton(new HelpButton(this,"Kanji Timer"));
buttonSizer->SetAffirmativeButton(CloseKT);
buttonSizer->Realize();

View file

@ -62,7 +62,7 @@ public:
log(&sm);
}
void log(agi::log::SinkMessage *sm) {
void log(agi::log::SinkMessage *sm) override {
#ifndef _WIN32
tm tmtime;
localtime_r(&sm->tv.tv_sec, &tmtime);

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