Add effect and actor to the things that lines can be sorted by
Originally committed to SVN as r6400.
This commit is contained in:
parent
a114238396
commit
3b0d2ae8e6
4 changed files with 47 additions and 7 deletions
|
@ -701,6 +701,12 @@ bool AssFile::CompEnd(const AssDialogue* lft, const AssDialogue* rgt) {
|
||||||
bool AssFile::CompStyle(const AssDialogue* lft, const AssDialogue* rgt) {
|
bool AssFile::CompStyle(const AssDialogue* lft, const AssDialogue* rgt) {
|
||||||
return lft->Style < rgt->Style;
|
return lft->Style < rgt->Style;
|
||||||
}
|
}
|
||||||
|
bool AssFile::CompActor(const AssDialogue* lft, const AssDialogue* rgt) {
|
||||||
|
return lft->Actor < rgt->Actor;
|
||||||
|
}
|
||||||
|
bool AssFile::CompEffect(const AssDialogue* lft, const AssDialogue* rgt) {
|
||||||
|
return lft->Effect < rgt->Effect;
|
||||||
|
}
|
||||||
|
|
||||||
void AssFile::Sort(CompFunc comp) {
|
void AssFile::Sort(CompFunc comp) {
|
||||||
Sort(Line, comp);
|
Sort(Line, comp);
|
||||||
|
|
|
@ -226,12 +226,16 @@ public:
|
||||||
/// Comparison function for use when sorting
|
/// Comparison function for use when sorting
|
||||||
typedef bool (*CompFunc)(const AssDialogue* lft, const AssDialogue* rgt);
|
typedef bool (*CompFunc)(const AssDialogue* lft, const AssDialogue* rgt);
|
||||||
|
|
||||||
/// @brief Compare based on start time
|
/// Compare based on start time
|
||||||
static bool CompStart(const AssDialogue* lft, const AssDialogue* rgt);
|
static bool CompStart(const AssDialogue* lft, const AssDialogue* rgt);
|
||||||
/// @brief Compare based on end time
|
/// Compare based on end time
|
||||||
static bool CompEnd(const AssDialogue* lft, const AssDialogue* rgt);
|
static bool CompEnd(const AssDialogue* lft, const AssDialogue* rgt);
|
||||||
/// @brief Compare based on end time
|
/// Compare based on style name
|
||||||
static bool CompStyle(const AssDialogue* lft, const AssDialogue* rgt);
|
static bool CompStyle(const AssDialogue* lft, const AssDialogue* rgt);
|
||||||
|
/// Compare based on actor name
|
||||||
|
static bool CompActor(const AssDialogue* lft, const AssDialogue* rgt);
|
||||||
|
/// Compare based on effect
|
||||||
|
static bool CompEffect(const AssDialogue* lft, const AssDialogue* rgt);
|
||||||
|
|
||||||
/// @brief Sort the dialogue lines in this file
|
/// @brief Sort the dialogue lines in this file
|
||||||
/// @param comp Comparison function to use. Defaults to sorting by start time.
|
/// @param comp Comparison function to use. Defaults to sorting by start time.
|
||||||
|
|
|
@ -99,8 +99,34 @@ struct grid_line_prev : public Command {
|
||||||
void operator()(agi::Context *c) {
|
void operator()(agi::Context *c) {
|
||||||
c->selectionController->PrevLine();
|
c->selectionController->PrevLine();
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Sort all subtitles by their actor names
|
||||||
|
struct grid_sort_actor : public Command {
|
||||||
|
CMD_NAME("grid/sort/actor")
|
||||||
|
STR_MENU("&Actor Name")
|
||||||
|
STR_DISP("Actor Name")
|
||||||
|
STR_HELP("Sort all subtitles by their actor names.")
|
||||||
|
|
||||||
|
void operator()(agi::Context *c) {
|
||||||
|
c->ass->Sort(AssFile::CompActor);
|
||||||
|
c->ass->Commit(_("sort"), AssFile::COMMIT_ORDER);
|
||||||
}
|
}
|
||||||
;
|
};
|
||||||
|
|
||||||
|
/// Sort all subtitles by their effects
|
||||||
|
struct grid_sort_effect : public Command {
|
||||||
|
CMD_NAME("grid/sort/effect")
|
||||||
|
STR_MENU("&Effect")
|
||||||
|
STR_DISP("Effect")
|
||||||
|
STR_HELP("Sort all subtitles by their effects")
|
||||||
|
|
||||||
|
void operator()(agi::Context *c) {
|
||||||
|
c->ass->Sort(AssFile::CompEffect);
|
||||||
|
c->ass->Commit(_("sort"), AssFile::COMMIT_ORDER);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/// Sort all subtitles by their end times.
|
/// Sort all subtitles by their end times.
|
||||||
struct grid_sort_end : public Command {
|
struct grid_sort_end : public Command {
|
||||||
CMD_NAME("grid/sort/end")
|
CMD_NAME("grid/sort/end")
|
||||||
|
@ -127,7 +153,7 @@ struct grid_sort_start : public Command {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Sort all subtitles by their style names.
|
/// Sort all subtitles by their style names
|
||||||
struct grid_sort_style : public Command {
|
struct grid_sort_style : public Command {
|
||||||
CMD_NAME("grid/sort/style")
|
CMD_NAME("grid/sort/style")
|
||||||
STR_MENU("St&yle Name")
|
STR_MENU("St&yle Name")
|
||||||
|
@ -309,6 +335,8 @@ namespace cmd {
|
||||||
reg(new grid_line_next);
|
reg(new grid_line_next);
|
||||||
reg(new grid_line_next_create);
|
reg(new grid_line_next_create);
|
||||||
reg(new grid_line_prev);
|
reg(new grid_line_prev);
|
||||||
|
reg(new grid_sort_actor);
|
||||||
|
reg(new grid_sort_effect);
|
||||||
reg(new grid_sort_end);
|
reg(new grid_sort_end);
|
||||||
reg(new grid_sort_start);
|
reg(new grid_sort_start);
|
||||||
reg(new grid_sort_style);
|
reg(new grid_sort_style);
|
||||||
|
|
|
@ -102,7 +102,9 @@
|
||||||
"main/subtitle/sort lines" : [
|
"main/subtitle/sort lines" : [
|
||||||
{ "command" : "grid/sort/start" },
|
{ "command" : "grid/sort/start" },
|
||||||
{ "command" : "grid/sort/end" },
|
{ "command" : "grid/sort/end" },
|
||||||
{ "command" : "grid/sort/style" }
|
{ "command" : "grid/sort/style" },
|
||||||
|
{ "command" : "grid/sort/actor" },
|
||||||
|
{ "command" : "grid/sort/effect" }
|
||||||
],
|
],
|
||||||
"main/timing" : [
|
"main/timing" : [
|
||||||
{ "command" : "time/shift" },
|
{ "command" : "time/shift" },
|
||||||
|
|
Loading…
Reference in a new issue