forked from mia/Aegisub
Add a button to the split editbox to remove the line text only, leaving override tags
This commit is contained in:
parent
31d2054ab3
commit
879c2c19ae
3 changed files with 24 additions and 1 deletions
|
@ -86,6 +86,7 @@ public:
|
||||||
|
|
||||||
class AssDialogueBlockPlain : public AssDialogueBlock {
|
class AssDialogueBlockPlain : public AssDialogueBlock {
|
||||||
public:
|
public:
|
||||||
|
using AssDialogueBlock::text;
|
||||||
AssBlockType GetType() const override { return BLOCK_PLAIN; }
|
AssBlockType GetType() const override { return BLOCK_PLAIN; }
|
||||||
AssDialogueBlockPlain(std::string const& text = std::string()) : AssDialogueBlock(text) { }
|
AssDialogueBlockPlain(std::string const& text = std::string()) : AssDialogueBlock(text) { }
|
||||||
};
|
};
|
||||||
|
|
|
@ -65,8 +65,10 @@
|
||||||
#include <boost/algorithm/string/predicate.hpp>
|
#include <boost/algorithm/string/predicate.hpp>
|
||||||
#include <boost/algorithm/string/join.hpp>
|
#include <boost/algorithm/string/join.hpp>
|
||||||
#include <boost/format.hpp>
|
#include <boost/format.hpp>
|
||||||
|
#include <boost/range/adaptor/filtered.hpp>
|
||||||
#include <boost/range/adaptor/reversed.hpp>
|
#include <boost/range/adaptor/reversed.hpp>
|
||||||
#include <boost/range/adaptor/sliced.hpp>
|
#include <boost/range/adaptor/sliced.hpp>
|
||||||
|
#include <boost/range/adaptor/transformed.hpp>
|
||||||
|
|
||||||
#include <libaegisub/of_type_adaptor.h>
|
#include <libaegisub/of_type_adaptor.h>
|
||||||
|
|
||||||
|
@ -945,6 +947,24 @@ struct edit_clear : public Command {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
wxString get_text(AssDialogueBlock &d) { return d.GetText(); }
|
||||||
|
struct edit_clear_text : public Command {
|
||||||
|
CMD_NAME("edit/clear/text")
|
||||||
|
STR_DISP("Clear Text")
|
||||||
|
STR_MENU("Clear Text")
|
||||||
|
STR_HELP("Clear the current line's text, leaving override tags")
|
||||||
|
|
||||||
|
void operator()(agi::Context *c) {
|
||||||
|
AssDialogue *line = c->selectionController->GetActiveLine();
|
||||||
|
boost::ptr_vector<AssDialogueBlock> blocks(line->ParseTags());
|
||||||
|
line->Text = join(blocks
|
||||||
|
| filtered([](AssDialogueBlock const& b) { return b.GetType() != BLOCK_PLAIN; })
|
||||||
|
| transformed(get_text),
|
||||||
|
wxS(""));
|
||||||
|
c->ass->Commit(_("clear line"), AssFile::COMMIT_DIAG_TEXT, -1, line);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
struct edit_insert_original : public Command {
|
struct edit_insert_original : public Command {
|
||||||
CMD_NAME("edit/insert_original")
|
CMD_NAME("edit/insert_original")
|
||||||
STR_DISP("Insert Original")
|
STR_DISP("Insert Original")
|
||||||
|
@ -956,7 +976,7 @@ struct edit_insert_original : public Command {
|
||||||
int sel_start = c->textSelectionController->GetSelectionStart();
|
int sel_start = c->textSelectionController->GetSelectionStart();
|
||||||
int sel_end = c->textSelectionController->GetSelectionEnd();
|
int sel_end = c->textSelectionController->GetSelectionEnd();
|
||||||
|
|
||||||
line->Text = line->Text.Left(sel_start) + c->initialLineState->GetInitialText() + line->Text.Mid(sel_end);
|
line->Text = line->Text.get().Left(sel_start) + c->initialLineState->GetInitialText() + line->Text.get().Mid(sel_end);
|
||||||
c->ass->Commit(_("insert original"), AssFile::COMMIT_DIAG_TEXT, -1, line);
|
c->ass->Commit(_("insert original"), AssFile::COMMIT_DIAG_TEXT, -1, line);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -995,5 +1015,6 @@ namespace cmd {
|
||||||
reg(new edit_revert);
|
reg(new edit_revert);
|
||||||
reg(new edit_insert_original);
|
reg(new edit_insert_original);
|
||||||
reg(new edit_clear);
|
reg(new edit_clear);
|
||||||
|
reg(new edit_clear_text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -191,6 +191,7 @@ SubsEditBox::SubsEditBox(wxWindow *parent, agi::Context *context)
|
||||||
bottom_sizer = new wxBoxSizer(wxHORIZONTAL);
|
bottom_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
bottom_sizer->Add(MakeBottomButton("edit/revert"));
|
bottom_sizer->Add(MakeBottomButton("edit/revert"));
|
||||||
bottom_sizer->Add(MakeBottomButton("edit/clear"));
|
bottom_sizer->Add(MakeBottomButton("edit/clear"));
|
||||||
|
bottom_sizer->Add(MakeBottomButton("edit/clear/text"));
|
||||||
bottom_sizer->Add(MakeBottomButton("edit/insert_original"));
|
bottom_sizer->Add(MakeBottomButton("edit/insert_original"));
|
||||||
main_sizer->Add(bottom_sizer);
|
main_sizer->Add(bottom_sizer);
|
||||||
main_sizer->Hide(bottom_sizer);
|
main_sizer->Hide(bottom_sizer);
|
||||||
|
|
Loading…
Reference in a new issue