mirror of https://github.com/odrling/Aegisub
Convert the video box buttons over to commands
Originally committed to SVN as r5252.
This commit is contained in:
parent
b286339ce0
commit
71daddeeb2
|
@ -134,6 +134,17 @@ struct help_irc : public Command {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// Open the manual page for Visual Typesetting.
|
||||||
|
struct help_video : public Command {
|
||||||
|
CMD_NAME("help/video")
|
||||||
|
STR_MENU("&Visual Typesetting..")
|
||||||
|
STR_DISP("Visual Typesetting")
|
||||||
|
STR_HELP("Open the manual page for Visual Typesetting.")
|
||||||
|
|
||||||
|
void operator()(agi::Context *c) {
|
||||||
|
HelpButton::OpenPage("Visual Typesetting");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/// Visit Aegisub's official website.
|
/// Visit Aegisub's official website.
|
||||||
struct help_website : public Command {
|
struct help_website : public Command {
|
||||||
|
@ -151,12 +162,13 @@ struct help_website : public Command {
|
||||||
|
|
||||||
/// Init help/ commands.
|
/// Init help/ commands.
|
||||||
void init_help(CommandManager *cm) {
|
void init_help(CommandManager *cm) {
|
||||||
cm->reg(new help_bugs());
|
cm->reg(new help_bugs);
|
||||||
cm->reg(new help_contents());
|
cm->reg(new help_contents);
|
||||||
cm->reg(new help_files());
|
cm->reg(new help_files);
|
||||||
cm->reg(new help_forums());
|
cm->reg(new help_forums);
|
||||||
cm->reg(new help_irc());
|
cm->reg(new help_irc);
|
||||||
cm->reg(new help_website());
|
cm->reg(new help_video);
|
||||||
|
cm->reg(new help_website);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace cmd
|
} // namespace cmd
|
||||||
|
|
|
@ -134,6 +134,7 @@ INSERT_ICON("help/contents", contents_button)
|
||||||
INSERT_ICON("help/files", contents_button)
|
INSERT_ICON("help/files", contents_button)
|
||||||
INSERT_ICON("help/forums", forums_button)
|
INSERT_ICON("help/forums", forums_button)
|
||||||
INSERT_ICON("help/irc", irc_button)
|
INSERT_ICON("help/irc", irc_button)
|
||||||
|
INSERT_ICON("help/video", visual_help)
|
||||||
INSERT_ICON("help/website", website_button)
|
INSERT_ICON("help/website", website_button)
|
||||||
INSERT_ICON("keyframe/close", close_keyframes_menu)
|
INSERT_ICON("keyframe/close", close_keyframes_menu)
|
||||||
INSERT_ICON("keyframe/open", open_keyframes_menu)
|
INSERT_ICON("keyframe/open", open_keyframes_menu)
|
||||||
|
@ -190,6 +191,10 @@ INSERT_ICON("video/jump/end", video_to_subend)
|
||||||
INSERT_ICON("video/jump/start", video_to_substart)
|
INSERT_ICON("video/jump/start", video_to_substart)
|
||||||
INSERT_ICON("video/open", open_video_menu)
|
INSERT_ICON("video/open", open_video_menu)
|
||||||
INSERT_ICON("video/open/dummy", use_dummy_video_menu)
|
INSERT_ICON("video/open/dummy", use_dummy_video_menu)
|
||||||
|
INSERT_ICON("video/opt/autoscroll", toggle_video_autoscroll)
|
||||||
|
INSERT_ICON("video/play", button_play)
|
||||||
|
INSERT_ICON("video/play/line", button_playline)
|
||||||
|
INSERT_ICON("video/stop", button_pause)
|
||||||
INSERT_ICON("video/zoom/in", zoom_in_button)
|
INSERT_ICON("video/zoom/in", zoom_in_button)
|
||||||
INSERT_ICON("video/zoom/out", zoom_out_button)
|
INSERT_ICON("video/zoom/out", zoom_out_button)
|
||||||
|
|
||||||
|
|
|
@ -254,20 +254,6 @@ struct video_frame_next : public Command {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/// Play video.
|
|
||||||
struct video_frame_play : public Command {
|
|
||||||
CMD_NAME("video/frame/play")
|
|
||||||
STR_MENU("Play")
|
|
||||||
STR_DISP("Play")
|
|
||||||
STR_HELP("Play video.")
|
|
||||||
|
|
||||||
void operator()(agi::Context *c) {
|
|
||||||
c->videoController->Play();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/// Seek to the previous frame.
|
/// Seek to the previous frame.
|
||||||
struct video_frame_prev : public Command {
|
struct video_frame_prev : public Command {
|
||||||
CMD_NAME("video/frame/prev")
|
CMD_NAME("video/frame/prev")
|
||||||
|
@ -347,7 +333,7 @@ struct video_open : public Command {
|
||||||
/// Opens a video clip with solid colour.
|
/// Opens a video clip with solid colour.
|
||||||
struct video_open_dummy : public Command {
|
struct video_open_dummy : public Command {
|
||||||
CMD_NAME("video/open/dummy")
|
CMD_NAME("video/open/dummy")
|
||||||
STR_MENU("Use Dummy Video..")
|
STR_MENU("Use Dummy Video...")
|
||||||
STR_DISP("Use Dummy Video")
|
STR_DISP("Use Dummy Video")
|
||||||
STR_HELP("Opens a video clip with solid colour.")
|
STR_HELP("Opens a video clip with solid colour.")
|
||||||
|
|
||||||
|
@ -359,6 +345,41 @@ struct video_open_dummy : public Command {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// Toggle autoscrolling video when the active line changes
|
||||||
|
struct video_opt_autoscroll : public Command {
|
||||||
|
CMD_NAME("video/opt/autoscroll")
|
||||||
|
STR_MENU("Toggle autoscroll of video")
|
||||||
|
STR_DISP("Toggle autoscroll of video")
|
||||||
|
STR_HELP("Toggle autoscroll of video")
|
||||||
|
|
||||||
|
void operator()(agi::Context *c) {
|
||||||
|
OPT_SET("Video/Subtitle Sync")->SetBool(!OPT_GET("Video/Subtitle Sync")->GetBool());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Play video.
|
||||||
|
struct video_play : public Command {
|
||||||
|
CMD_NAME("video/play")
|
||||||
|
STR_MENU("Play")
|
||||||
|
STR_DISP("Play")
|
||||||
|
STR_HELP("Play video starting on this position")
|
||||||
|
|
||||||
|
void operator()(agi::Context *c) {
|
||||||
|
c->videoController->Play();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Play video for the active line.
|
||||||
|
struct video_play_line : public Command {
|
||||||
|
CMD_NAME("video/play/line")
|
||||||
|
STR_MENU("Play line")
|
||||||
|
STR_DISP("Play line")
|
||||||
|
STR_HELP("Play current line")
|
||||||
|
|
||||||
|
void operator()(agi::Context *c) {
|
||||||
|
c->videoController->PlayLine();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/// Show a mask over the video.
|
/// Show a mask over the video.
|
||||||
struct video_show_overscan : public Command {
|
struct video_show_overscan : public Command {
|
||||||
|
@ -390,7 +411,18 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// Stop video playback
|
||||||
|
class video_stop: public Command {
|
||||||
|
public:
|
||||||
|
CMD_NAME("video/stop")
|
||||||
|
STR_MENU("Stop video")
|
||||||
|
STR_DISP("Stop video")
|
||||||
|
STR_HELP("Stop video playback")
|
||||||
|
|
||||||
|
void operator()(agi::Context *c) {
|
||||||
|
c->videoController->Stop();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/// Set zoom to 200%.
|
/// Set zoom to 200%.
|
||||||
class video_zoom_200: public Command {
|
class video_zoom_200: public Command {
|
||||||
|
@ -451,29 +483,32 @@ struct video_zoom_out : public Command {
|
||||||
|
|
||||||
/// Init video/ commands.
|
/// Init video/ commands.
|
||||||
void init_video(CommandManager *cm) {
|
void init_video(CommandManager *cm) {
|
||||||
cm->reg(new video_aspect_cinematic());
|
cm->reg(new video_aspect_cinematic);
|
||||||
cm->reg(new video_aspect_custom());
|
cm->reg(new video_aspect_custom);
|
||||||
cm->reg(new video_aspect_default());
|
cm->reg(new video_aspect_default);
|
||||||
cm->reg(new video_aspect_full());
|
cm->reg(new video_aspect_full);
|
||||||
cm->reg(new video_aspect_wide());
|
cm->reg(new video_aspect_wide);
|
||||||
cm->reg(new video_close());
|
cm->reg(new video_close);
|
||||||
cm->reg(new video_detach());
|
cm->reg(new video_detach);
|
||||||
cm->reg(new video_details());
|
cm->reg(new video_details);
|
||||||
cm->reg(new video_focus_seek());
|
cm->reg(new video_focus_seek);
|
||||||
cm->reg(new video_frame_next());
|
cm->reg(new video_frame_next);
|
||||||
cm->reg(new video_frame_play());
|
cm->reg(new video_frame_prev);
|
||||||
cm->reg(new video_frame_prev());
|
cm->reg(new video_jump);
|
||||||
cm->reg(new video_jump());
|
cm->reg(new video_jump_end);
|
||||||
cm->reg(new video_jump_end());
|
cm->reg(new video_jump_start);
|
||||||
cm->reg(new video_jump_start());
|
cm->reg(new video_open);
|
||||||
cm->reg(new video_open());
|
cm->reg(new video_open_dummy);
|
||||||
cm->reg(new video_open_dummy());
|
cm->reg(new video_opt_autoscroll);
|
||||||
cm->reg(new video_show_overscan());
|
cm->reg(new video_play);
|
||||||
cm->reg(new video_zoom_100());
|
cm->reg(new video_play_line);
|
||||||
cm->reg(new video_zoom_200());
|
cm->reg(new video_show_overscan);
|
||||||
cm->reg(new video_zoom_50());
|
cm->reg(new video_stop);
|
||||||
cm->reg(new video_zoom_in());
|
cm->reg(new video_zoom_100);
|
||||||
cm->reg(new video_zoom_out());
|
cm->reg(new video_zoom_200);
|
||||||
|
cm->reg(new video_zoom_50);
|
||||||
|
cm->reg(new video_zoom_in);
|
||||||
|
cm->reg(new video_zoom_out);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace cmd
|
} // namespace cmd
|
||||||
|
|
|
@ -282,7 +282,7 @@
|
||||||
"enable" : true
|
"enable" : true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"video/frame/play" : [
|
"video/play" : [
|
||||||
{
|
{
|
||||||
"modifiers" : [ "Ctrl" ],
|
"modifiers" : [ "Ctrl" ],
|
||||||
"key" : "P",
|
"key" : "P",
|
||||||
|
@ -622,7 +622,7 @@
|
||||||
"enable" : true
|
"enable" : true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"video play" : [
|
"video/play" : [
|
||||||
{
|
{
|
||||||
"modifiers" : [],
|
"modifiers" : [],
|
||||||
"key" : "Home",
|
"key" : "Home",
|
||||||
|
@ -754,7 +754,7 @@
|
||||||
"enable" : true
|
"enable" : true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"video play" : [
|
"video/play" : [
|
||||||
{
|
{
|
||||||
"modifiers" : [],
|
"modifiers" : [],
|
||||||
"key" : "Home",
|
"key" : "Home",
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
|
|
||||||
#include "include/aegisub/context.h"
|
#include "include/aegisub/context.h"
|
||||||
|
|
||||||
#include "frame_main.h"
|
#include "command/command.h"
|
||||||
#include "help_button.h"
|
#include "help_button.h"
|
||||||
#include "libresrc/libresrc.h"
|
#include "libresrc/libresrc.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
@ -53,51 +53,56 @@
|
||||||
#include "subs_edit_box.h"
|
#include "subs_edit_box.h"
|
||||||
#include "subs_grid.h"
|
#include "subs_grid.h"
|
||||||
#include "toggle_bitmap.h"
|
#include "toggle_bitmap.h"
|
||||||
|
#include "tooltip_manager.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "video_box.h"
|
#include "video_box.h"
|
||||||
#include "video_context.h"
|
#include "video_context.h"
|
||||||
#include "video_display.h"
|
#include "video_display.h"
|
||||||
#include "video_slider.h"
|
#include "video_slider.h"
|
||||||
|
|
||||||
|
static void add_button(wxWindow *parent, wxSizer *sizer, const char *command) {
|
||||||
|
cmd::Command *c = cmd::get(command);
|
||||||
|
wxBitmapButton *btn = new wxBitmapButton(parent, cmd::id(command), *c->Icon(24));
|
||||||
|
ToolTipManager::Bind(btn, c->StrHelp(), "Video", command);
|
||||||
|
sizer->Add(btn, 0, wxTOP | wxLEFT | wxBOTTOM | wxALIGN_CENTER, 2);;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void add_option(wxWindow *parent, wxSizer *sizer, const char *command, const char *option) {
|
||||||
|
cmd::Command *c = cmd::get(command);
|
||||||
|
ToggleBitmap *btn = new ToggleBitmap(parent, cmd::id(command), *c->Icon(24));
|
||||||
|
ToolTipManager::Bind(btn, c->StrHelp(), "Video", command);
|
||||||
|
btn->SetValue(OPT_GET(option)->GetBool());
|
||||||
|
sizer->Add(btn, 0, wxTOP | wxLEFT | wxBOTTOM | wxALIGN_CENTER, 2);
|
||||||
|
}
|
||||||
|
|
||||||
/// @brief Constructor
|
|
||||||
/// @param parent
|
|
||||||
/// @param isDetached
|
|
||||||
///
|
|
||||||
VideoBox::VideoBox(wxWindow *parent, bool isDetached, wxComboBox *zoomBox, agi::Context *context)
|
VideoBox::VideoBox(wxWindow *parent, bool isDetached, wxComboBox *zoomBox, agi::Context *context)
|
||||||
: wxPanel (parent,-1)
|
: wxPanel (parent,-1)
|
||||||
|
, context(context)
|
||||||
{
|
{
|
||||||
// Parent
|
|
||||||
videoPage = this;
|
|
||||||
|
|
||||||
// Visual controls sub-toolbar
|
// Visual controls sub-toolbar
|
||||||
visualSubToolBar = new wxToolBar(videoPage,-1,wxDefaultPosition,wxDefaultSize,wxTB_HORIZONTAL | wxTB_BOTTOM | wxTB_FLAT);
|
visualSubToolBar = new wxToolBar(this,-1,wxDefaultPosition,wxDefaultSize,wxTB_HORIZONTAL | wxTB_BOTTOM | wxTB_FLAT);
|
||||||
|
|
||||||
// Buttons
|
// Buttons
|
||||||
wxBitmapButton *VideoPlayButton = new wxBitmapButton(videoPage,Video_Play,GETIMAGE(button_play_24),wxDefaultPosition,wxSize(25,-1));
|
wxSizer *videoBottomSizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
VideoPlayButton->SetToolTip(_("Play video starting on this position"));
|
add_button(this, videoBottomSizer, "video/play");
|
||||||
wxBitmapButton *VideoPlayLineButton = new wxBitmapButton(videoPage,Video_Play_Line,GETIMAGE(button_playline_24),wxDefaultPosition,wxSize(25,-1));
|
add_button(this, videoBottomSizer, "video/play/line");
|
||||||
VideoPlayLineButton->SetToolTip(_("Play current line"));
|
add_button(this, videoBottomSizer, "video/stop");
|
||||||
wxBitmapButton *VideoStopButton = new wxBitmapButton(videoPage,Video_Stop,GETIMAGE(button_pause_24),wxDefaultPosition,wxSize(25,-1));
|
add_option(this, videoBottomSizer, "video/opt/autoscroll", "Video/Subtitle Sync");
|
||||||
VideoStopButton->SetToolTip(_("Stop video playback"));
|
|
||||||
AutoScroll = new ToggleBitmap(videoPage,Video_Auto_Scroll,GETIMAGE(toggle_video_autoscroll_24),wxSize(30,-1));
|
|
||||||
AutoScroll->SetToolTip(_("Toggle autoscroll of video"));
|
|
||||||
AutoScroll->SetValue(OPT_GET("Video/Subtitle Sync")->GetBool());
|
|
||||||
|
|
||||||
// Seek
|
// Seek
|
||||||
videoSlider = new VideoSlider(videoPage,-1);
|
videoSlider = new VideoSlider(this,-1);
|
||||||
videoSlider->SetToolTip(_("Seek video."));
|
videoSlider->SetToolTip(_("Seek video."));
|
||||||
|
|
||||||
// Position
|
// Position
|
||||||
VideoPosition = new wxTextCtrl(videoPage,-1,_T(""),wxDefaultPosition,wxSize(110,20),wxTE_READONLY);
|
VideoPosition = new wxTextCtrl(this,-1,"",wxDefaultPosition,wxSize(110,20),wxTE_READONLY);
|
||||||
VideoPosition->SetToolTip(_("Current frame time and number."));
|
VideoPosition->SetToolTip(_("Current frame time and number."));
|
||||||
|
|
||||||
// Times of sub relative to video
|
// Times of sub relative to video
|
||||||
VideoSubsPos = new wxTextCtrl(videoPage,-1,_T(""),wxDefaultPosition,wxSize(110,20),wxTE_READONLY);
|
VideoSubsPos = new wxTextCtrl(this,-1,"",wxDefaultPosition,wxSize(110,20),wxTE_READONLY);
|
||||||
VideoSubsPos->SetToolTip(_("Time of this frame relative to start and end of current subs."));
|
VideoSubsPos->SetToolTip(_("Time of this frame relative to start and end of current subs."));
|
||||||
|
|
||||||
// Typesetting buttons
|
// Typesetting buttons
|
||||||
visualToolBar = new wxToolBar(videoPage,-1,wxDefaultPosition,wxDefaultSize,wxTB_VERTICAL|wxTB_FLAT|wxTB_NODIVIDER);
|
visualToolBar = new wxToolBar(this,-1,wxDefaultPosition,wxDefaultSize,wxTB_VERTICAL|wxTB_FLAT|wxTB_NODIVIDER);
|
||||||
visualToolBar->AddTool(Video_Mode_Standard,_("Standard"),GETIMAGE(visual_standard_24),_("Standard mode, double click sets position."),wxITEM_RADIO);
|
visualToolBar->AddTool(Video_Mode_Standard,_("Standard"),GETIMAGE(visual_standard_24),_("Standard mode, double click sets position."),wxITEM_RADIO);
|
||||||
visualToolBar->AddTool(Video_Mode_Drag,_("Drag"),GETIMAGE(visual_move_24),_("Drag subtitles."),wxITEM_RADIO);
|
visualToolBar->AddTool(Video_Mode_Drag,_("Drag"),GETIMAGE(visual_move_24),_("Drag subtitles."),wxITEM_RADIO);
|
||||||
visualToolBar->AddTool(Video_Mode_Rotate_Z,_("Rotate Z"),GETIMAGE(visual_rotatez_24),_("Rotate subtitles on their Z axis."),wxITEM_RADIO);
|
visualToolBar->AddTool(Video_Mode_Rotate_Z,_("Rotate Z"),GETIMAGE(visual_rotatez_24),_("Rotate subtitles on their Z axis."),wxITEM_RADIO);
|
||||||
|
@ -106,14 +111,14 @@ VideoBox::VideoBox(wxWindow *parent, bool isDetached, wxComboBox *zoomBox, agi::
|
||||||
visualToolBar->AddTool(Video_Mode_Clip,_("Clip"),GETIMAGE(visual_clip_24),_("Clip subtitles to a rectangle."),wxITEM_RADIO);
|
visualToolBar->AddTool(Video_Mode_Clip,_("Clip"),GETIMAGE(visual_clip_24),_("Clip subtitles to a rectangle."),wxITEM_RADIO);
|
||||||
visualToolBar->AddTool(Video_Mode_Vector_Clip,_("Vector Clip"),GETIMAGE(visual_vector_clip_24),_("Clip subtitles to a vectorial area."),wxITEM_RADIO);
|
visualToolBar->AddTool(Video_Mode_Vector_Clip,_("Vector Clip"),GETIMAGE(visual_vector_clip_24),_("Clip subtitles to a vectorial area."),wxITEM_RADIO);
|
||||||
visualToolBar->AddSeparator();
|
visualToolBar->AddSeparator();
|
||||||
visualToolBar->AddTool(Video_Mode_Help,_("Help"),GETIMAGE(visual_help_24),_("Open the manual page for Visual Typesetting."));
|
visualToolBar->AddTool(cmd::id("help/video"),_("Help"),*cmd::get("help/video")->Icon(24),_("Open the manual page for Visual Typesetting."));
|
||||||
visualToolBar->Realize();
|
visualToolBar->Realize();
|
||||||
// Avoid ugly themed background on Vista and possibly also Win7
|
// Avoid ugly themed background on Vista and possibly also Win7
|
||||||
visualToolBar->SetBackgroundStyle(wxBG_STYLE_COLOUR);
|
visualToolBar->SetBackgroundStyle(wxBG_STYLE_COLOUR);
|
||||||
visualToolBar->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
|
visualToolBar->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
videoDisplay = new VideoDisplay(this,VideoPosition,VideoSubsPos,zoomBox,videoPage,context);
|
videoDisplay = new VideoDisplay(this,VideoPosition,VideoSubsPos,zoomBox,this,context);
|
||||||
|
|
||||||
// Set display
|
// Set display
|
||||||
videoSlider->Display = videoDisplay;
|
videoSlider->Display = videoDisplay;
|
||||||
|
@ -128,17 +133,11 @@ VideoBox::VideoBox(wxWindow *parent, bool isDetached, wxComboBox *zoomBox, agi::
|
||||||
topTopSizer->Add(videoDisplay,1,highSizerFlags,0);
|
topTopSizer->Add(videoDisplay,1,highSizerFlags,0);
|
||||||
topSizer->Add(topTopSizer,1,wxEXPAND,0);
|
topSizer->Add(topTopSizer,1,wxEXPAND,0);
|
||||||
topSizer->Add(visualSubToolBar,0,wxEXPAND | wxBOTTOM,4);
|
topSizer->Add(visualSubToolBar,0,wxEXPAND | wxBOTTOM,4);
|
||||||
topSizer->Add(new wxStaticLine(videoPage),0,wxEXPAND,0);
|
topSizer->Add(new wxStaticLine(this),0,wxEXPAND,0);
|
||||||
|
|
||||||
// Sizers
|
// Sizers
|
||||||
videoSliderSizer = new wxBoxSizer(wxHORIZONTAL);
|
videoSliderSizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
videoSliderSizer->Add(videoSlider,1,wxEXPAND|wxLEFT,0);
|
videoSliderSizer->Add(videoSlider,1,wxEXPAND|wxLEFT,0);
|
||||||
wxSizer *videoBottomSizer = new wxBoxSizer(wxHORIZONTAL);
|
|
||||||
//videoBottomSizer->Add(zoomSlider,1,wxEXPAND,0);
|
|
||||||
videoBottomSizer->Add(VideoPlayButton,0,wxTOP|wxLEFT|wxBOTTOM|wxALIGN_CENTER,2);
|
|
||||||
videoBottomSizer->Add(VideoPlayLineButton,0,wxTOP|wxBOTTOM|wxALIGN_CENTER,2);
|
|
||||||
videoBottomSizer->Add(VideoStopButton,0,wxTOP|wxBOTTOM|wxALIGN_CENTER,2);
|
|
||||||
videoBottomSizer->Add(AutoScroll,0,wxTOP|wxBOTTOM|wxALIGN_CENTER|wxEXPAND,2);
|
|
||||||
videoBottomSizer->Add(VideoPosition,1,wxLEFT|wxALIGN_CENTER,5);
|
videoBottomSizer->Add(VideoPosition,1,wxLEFT|wxALIGN_CENTER,5);
|
||||||
videoBottomSizer->Add(VideoSubsPos,1,wxALIGN_CENTER,0);
|
videoBottomSizer->Add(VideoSubsPos,1,wxALIGN_CENTER,0);
|
||||||
|
|
||||||
|
@ -151,74 +150,20 @@ VideoBox::VideoBox(wxWindow *parent, bool isDetached, wxComboBox *zoomBox, agi::
|
||||||
if (!isDetached)
|
if (!isDetached)
|
||||||
VideoSizer->AddStretchSpacer(1);
|
VideoSizer->AddStretchSpacer(1);
|
||||||
SetSizer(VideoSizer);
|
SetSizer(VideoSizer);
|
||||||
|
|
||||||
|
Bind(wxEVT_COMMAND_BUTTON_CLICKED, &VideoBox::OnButton, this);
|
||||||
|
Bind(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, &VideoBox::OnButton, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////
|
void VideoBox::OnButton(wxCommandEvent &evt) {
|
||||||
// Event table
|
if (evt.GetId() >= Video_Mode_Standard) {
|
||||||
BEGIN_EVENT_TABLE(VideoBox, wxPanel)
|
evt.Skip();
|
||||||
EVT_BUTTON(Video_Play, VideoBox::OnVideoPlay)
|
return;
|
||||||
EVT_BUTTON(Video_Play_Line, VideoBox::OnVideoPlayLine)
|
}
|
||||||
EVT_BUTTON(Video_Stop, VideoBox::OnVideoStop)
|
|
||||||
EVT_TOGGLEBUTTON(Video_Auto_Scroll, VideoBox::OnVideoToggleScroll)
|
|
||||||
|
|
||||||
EVT_TOOL(Video_Mode_Help, VideoBox::OnHelp)
|
|
||||||
END_EVENT_TABLE()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief Play video
|
|
||||||
/// @param event
|
|
||||||
///
|
|
||||||
void VideoBox::OnVideoPlay(wxCommandEvent &event) {
|
|
||||||
VideoContext *ctx = VideoContext::Get();
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
ctx->EnableAudioSync(wxGetMouseState().CmdDown() == false);
|
context->videoController->EnableAudioSync(!wxGetMouseState().CmdDown());
|
||||||
#else
|
#else
|
||||||
ctx->EnableAudioSync(wxGetMouseState().ControlDown() == false);
|
context->videoController->EnableAudioSync(!wxGetMouseState().ControlDown());
|
||||||
#endif
|
#endif
|
||||||
ctx->Play();
|
cmd::call(context, evt.GetId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief Play video line
|
|
||||||
/// @param event
|
|
||||||
///
|
|
||||||
void VideoBox::OnVideoPlayLine(wxCommandEvent &event) {
|
|
||||||
VideoContext *ctx = VideoContext::Get();
|
|
||||||
#ifdef __APPLE__
|
|
||||||
ctx->EnableAudioSync(wxGetMouseState().CmdDown() == false);
|
|
||||||
#else
|
|
||||||
ctx->EnableAudioSync(wxGetMouseState().ControlDown() == false);
|
|
||||||
#endif
|
|
||||||
ctx->PlayLine();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief Stop video
|
|
||||||
/// @param event
|
|
||||||
///
|
|
||||||
void VideoBox::OnVideoStop(wxCommandEvent &event) {
|
|
||||||
VideoContext::Get()->Stop();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @brief Toggle autoscroll
|
|
||||||
/// @param event
|
|
||||||
///
|
|
||||||
void VideoBox::OnVideoToggleScroll(wxCommandEvent &event) {
|
|
||||||
OPT_SET("Video/Subtitle Sync")->SetBool(AutoScroll->GetValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @brief Help
|
|
||||||
/// @param event
|
|
||||||
///
|
|
||||||
void VideoBox::OnHelp(wxCommandEvent &event) {
|
|
||||||
HelpButton::OpenPage(_T("Visual Typesetting"));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -45,10 +45,9 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace agi { struct Context; }
|
namespace agi { struct Context; }
|
||||||
|
class ToggleBitmap;
|
||||||
class VideoDisplay;
|
class VideoDisplay;
|
||||||
class VideoSlider;
|
class VideoSlider;
|
||||||
class ToggleBitmap;
|
|
||||||
class FrameMain;
|
|
||||||
class wxComboBox;
|
class wxComboBox;
|
||||||
|
|
||||||
/// DOCME
|
/// DOCME
|
||||||
|
@ -57,14 +56,9 @@ class wxComboBox;
|
||||||
///
|
///
|
||||||
/// DOCME
|
/// DOCME
|
||||||
class VideoBox : public wxPanel {
|
class VideoBox : public wxPanel {
|
||||||
private:
|
agi::Context *context;
|
||||||
void OnVideoPlay(wxCommandEvent &event);
|
|
||||||
void OnVideoPlayLine(wxCommandEvent &event);
|
|
||||||
void OnVideoStop(wxCommandEvent &event);
|
|
||||||
void OnVideoToggleScroll(wxCommandEvent &event);
|
|
||||||
|
|
||||||
void OnHelp(wxCommandEvent &event);
|
|
||||||
|
|
||||||
|
void OnButton(wxCommandEvent &evt);
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/// DOCME
|
/// DOCME
|
||||||
|
@ -73,18 +67,12 @@ public:
|
||||||
/// DOCME
|
/// DOCME
|
||||||
wxToolBar *visualSubToolBar;
|
wxToolBar *visualSubToolBar;
|
||||||
|
|
||||||
/// DOCME
|
|
||||||
ToggleBitmap *AutoScroll;
|
|
||||||
|
|
||||||
/// DOCME
|
/// DOCME
|
||||||
wxBoxSizer *VideoSizer;
|
wxBoxSizer *VideoSizer;
|
||||||
|
|
||||||
/// DOCME
|
/// DOCME
|
||||||
wxBoxSizer *videoSliderSizer;
|
wxBoxSizer *videoSliderSizer;
|
||||||
|
|
||||||
/// DOCME
|
|
||||||
wxWindow *videoPage;
|
|
||||||
|
|
||||||
/// DOCME
|
/// DOCME
|
||||||
wxTextCtrl *VideoPosition;
|
wxTextCtrl *VideoPosition;
|
||||||
|
|
||||||
|
@ -98,23 +86,15 @@ public:
|
||||||
VideoSlider *videoSlider;
|
VideoSlider *videoSlider;
|
||||||
|
|
||||||
VideoBox(wxWindow *parent, bool isDetached, wxComboBox *zoomBox, agi::Context *context);
|
VideoBox(wxWindow *parent, bool isDetached, wxComboBox *zoomBox, agi::Context *context);
|
||||||
|
|
||||||
DECLARE_EVENT_TABLE()
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// IDs
|
// IDs
|
||||||
enum {
|
enum {
|
||||||
Video_Play = 500,
|
Video_Mode_Standard = 5000,
|
||||||
Video_Play_Line,
|
|
||||||
Video_Stop,
|
|
||||||
Video_Auto_Scroll,
|
|
||||||
|
|
||||||
Video_Mode_Standard,
|
|
||||||
Video_Mode_Drag,
|
Video_Mode_Drag,
|
||||||
Video_Mode_Rotate_Z,
|
Video_Mode_Rotate_Z,
|
||||||
Video_Mode_Rotate_XY,
|
Video_Mode_Rotate_XY,
|
||||||
Video_Mode_Scale,
|
Video_Mode_Scale,
|
||||||
Video_Mode_Clip,
|
Video_Mode_Clip,
|
||||||
Video_Mode_Vector_Clip,
|
Video_Mode_Vector_Clip,
|
||||||
Video_Mode_Help
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue