Replaced SubsEditBox with a wxScintilla control

Originally committed to SVN as r598.
This commit is contained in:
Rodrigo Braz Monteiro 2006-12-24 04:54:35 +00:00
parent 99f2323799
commit 8e357ab4c4
7 changed files with 275 additions and 129 deletions

View file

@ -1182,14 +1182,26 @@ void FrameMain::OnCloseWindow (wxCloseEvent &event) {
////////////////// //////////////////
// Cut/copy/paste // Cut/copy/paste
void FrameMain::OnCut (wxCommandEvent &event) { void FrameMain::OnCut (wxCommandEvent &event) {
if (FindFocus() == EditBox->TextEdit) {
EditBox->TextEdit->Cut();
return;
}
SubsBox->CutLines(SubsBox->GetSelection()); SubsBox->CutLines(SubsBox->GetSelection());
} }
void FrameMain::OnCopy (wxCommandEvent &event) { void FrameMain::OnCopy (wxCommandEvent &event) {
if (FindFocus() == EditBox->TextEdit) {
EditBox->TextEdit->Copy();
return;
}
SubsBox->CopyLines(SubsBox->GetSelection()); SubsBox->CopyLines(SubsBox->GetSelection());
} }
void FrameMain::OnPaste (wxCommandEvent &event) { void FrameMain::OnPaste (wxCommandEvent &event) {
if (FindFocus() == EditBox->TextEdit) {
EditBox->TextEdit->Paste();
return;
}
SubsBox->PasteLines(SubsBox->GetFirstSelRow()); SubsBox->PasteLines(SubsBox->GetFirstSelRow());
} }

View file

@ -135,6 +135,7 @@ void OptionsManager::LoadDefaults() {
SetColour(_T("Syntax Highlight Brackets"),wxColour(20,50,255)); SetColour(_T("Syntax Highlight Brackets"),wxColour(20,50,255));
SetColour(_T("Syntax Highlight Slashes"),wxColour(255,0,200)); SetColour(_T("Syntax Highlight Slashes"),wxColour(255,0,200));
SetColour(_T("Syntax Highlight Tags"),wxColour(90,90,90)); SetColour(_T("Syntax Highlight Tags"),wxColour(90,90,90));
SetColour(_T("Syntax Highlight Numbers"),wxColour(0,90,0));
SetColour(_T("Syntax Highlight Error"),wxColour(200,0,0)); SetColour(_T("Syntax Highlight Error"),wxColour(200,0,0));
SetColour(_T("Edit Box Need Enter Background"),wxColour(192,192,255)); SetColour(_T("Edit Box Need Enter Background"),wxColour(192,192,255));
#if defined(__WINDOWS__) #if defined(__WINDOWS__)

View file

@ -110,6 +110,15 @@
#endif // wxWidgets #endif // wxWidgets
/////////////
// Scintilla
#ifdef __WXDEBUG__
#pragma comment(lib, "wxscintillaud.lib")
#else
#pragma comment(lib, "wxscintillau.lib")
#endif
//////////////////////////// ////////////////////////////
// Standard Win32 Libraries // Standard Win32 Libraries
#pragma comment(lib, "Vfw32.lib") #pragma comment(lib, "Vfw32.lib")

View file

@ -75,6 +75,9 @@
#include <wx/spinctrl.h> #include <wx/spinctrl.h>
#include <wx/wfstream.h> #include <wx/wfstream.h>
#include <wx/tipdlg.h> #include <wx/tipdlg.h>
#include <wx/event.h>
#include <wx/wxscintilla.h>
#include <wx/string.h>
/////////////// ///////////////

View file

@ -36,6 +36,9 @@
//////////// ////////////
// Includes // Includes
#include "setup.h"
#include <wx/colordlg.h>
#include <wx/fontdlg.h>
#include "subs_edit_box.h" #include "subs_edit_box.h"
#include "subs_grid.h" #include "subs_grid.h"
#include "ass_file.h" #include "ass_file.h"
@ -49,8 +52,6 @@
#include "hilimod_textctrl.h" #include "hilimod_textctrl.h"
#include "video_display.h" #include "video_display.h"
#include "validators.h" #include "validators.h"
#include <wx/colordlg.h>
#include <wx/fontdlg.h>
#include "dialog_colorpicker.h" #include "dialog_colorpicker.h"
#include "main.h" #include "main.h"
#include "frame_main.h" #include "frame_main.h"
@ -294,6 +295,98 @@ void SubsEditBox::SetToLine(int n) {
} }
/////////////////
// Style a range
void SubsEditBox::UpdateStyle(int start, int _length) {
// Styling enabled?
if (Options.AsBool(_T("Syntax Highlight Enabled")) == 0) return;
// Set variables
wxString text = TextEdit->GetText();
int len = _length;
if (len < 0) len = text.Length();
// Begin styling
TextEdit->StartStyling(0,31);
int ran = 0;
int depth = 0;
int curStyle = 0;
wxChar curChar = 0;
wxChar prevChar = 0;
// Loop through
for (int i=start;i<len;i++) {
// Current/previous characters
prevChar = curChar;
curChar = text[i];
// Erroneous
if (depth < 0 || depth > 1) {
TextEdit->SetStyling(ran,curStyle);
ran = 0;
curStyle = 4;
}
// Start override block
if (curChar == _T('{')) {
TextEdit->SetStyling(ran,curStyle);
ran = 0;
depth++;
if (depth == 1) curStyle = 1;
else curStyle = 4;
}
// End override block
else if (curChar == _T('}')) {
TextEdit->SetStyling(ran,curStyle);
ran = 0;
depth--;
if (depth == 0) curStyle = 1;
else curStyle = 4;
}
// Outside
else if (depth == 0 && curStyle != 0) {
TextEdit->SetStyling(ran,curStyle);
ran = 0;
curStyle = 0;
}
// Inside
else if (depth == 1) {
// Special character
if (curChar == _T('\\') || curChar == _T('(') || curChar == _T(')') || curChar == _T(',')) {
if (curStyle != 2) {
TextEdit->SetStyling(ran,curStyle);
ran = 0;
curStyle = 2;
}
}
// Number
else if ((curChar >= '0' && curChar <= '9') || curChar == '.' || curChar == '&' || curChar == '+' || curChar == '-' || (curChar == 'H' && prevChar == '&')) {
if (curStyle != 5) {
TextEdit->SetStyling(ran,curStyle);
ran = 0;
curStyle = 5;
}
}
// Tag name
else if (curStyle != 3) {
TextEdit->SetStyling(ran,curStyle);
ran = 0;
curStyle = 3;
}
}
// Increase ran length
ran++;
}
TextEdit->SetStyling(ran,curStyle);
}
/////////////////////////// ///////////////////////////
// Set text to a new value // Set text to a new value
void SubsEditBox::SetText(const wxString _text) { void SubsEditBox::SetText(const wxString _text) {
@ -306,115 +399,21 @@ void SubsEditBox::SetText(const wxString _text) {
text.Replace(_T("\r"),_T("\\N")); text.Replace(_T("\r"),_T("\\N"));
text.Replace(_T("\n"),_T("\\N")); text.Replace(_T("\n"),_T("\\N"));
// Mode // Prepare
int mode = 0; int from=0,to=0;
if (Options.AsBool(_T("Syntax Highlight Enabled"))) mode = 1; TextEdit->GetSelection(&from,&to);
TextEdit->Clear();
// Syntax highlighted // Set text
if (mode == 1) { TextEdit->SetText(text);
// Define attributes
wxTextAttr Normal(Options.AsColour(_T("Syntax Highlight Normal")));
wxTextAttr Brackets(Options.AsColour(_T("Syntax Highlight Brackets")));
wxTextAttr Slashes(Options.AsColour(_T("Syntax Highlight Slashes")));
wxTextAttr Tags(Options.AsColour(_T("Syntax Highlight Tags")));
wxTextAttr Error(Options.AsColour(_T("Syntax Highlight Error")));
wxTextAttr *cur;
// Define font size // Style
wxFont font = Normal.GetFont(); UpdateStyle();
wxString fontname = Options.AsText(_T("Font Face"));
if (fontname != _T("")) font.SetFaceName(fontname);
font.SetPointSize(Options.AsInt(_T("Font Size")));
Normal.SetFont(font);
Brackets.SetFont(font);
Slashes.SetFont(font);
Tags.SetFont(font);
Error.SetFont(font);
// Prepare // Restore selection
cur = &Normal; TextEdit->SetSelection(from,to);
long from=0,to=0;
TextEdit->GetSelection(&from,&to);
TextEdit->Clear();
TextEdit->SetValue(text);
TextEdit->SetStyle(0,TextEdit->GetLastPosition()+1,Tags);
// Scan
size_t len = text.Len();
size_t start = 0;
int depth = 0;
wchar_t curchar;
for (unsigned int i=0;i<len;i++) {
curchar = text[i];
if (curchar == _T('{')) {
depth++;
if (cur) TextEdit->SetStyle(start,i,*cur);
start = i+1;
cur = &Brackets;
TextEdit->SetStyle(start-1,start,*cur);
if (depth == 0) cur = &Normal;
//else if (depth == 1) cur = &Tags;
else if (depth == 1) cur = NULL;
else {
cur = &Error;
break;
}
continue;
}
if (curchar == _T('}')) {
depth--;
if (cur) TextEdit->SetStyle(start,i,*cur);
start = i+1;
cur = &Brackets;
TextEdit->SetStyle(start-1,start,*cur);
if (depth == 0) cur = &Normal;
//else if (depth == 1) cur = &Tags;
else if (depth == 1) cur = NULL;
else {
cur = &Error;
break;
}
continue;
}
if (depth > 0 && curchar == _T('\\')) {
if (cur) TextEdit->SetStyle(start,i,*cur);
start = i+1;
TextEdit->SetStyle(start-1,start,Slashes);
//cur = &Tags;
cur = NULL;
continue;
}
}
if (cur) TextEdit->SetStyle(start,TextEdit->GetLastPosition()+1,*cur);
TextEdit->SetSelection(from,to);
}
// 0x2600
else if (mode == 2) {
}
// Plain
else {
// Prepare
long from=0,to=0;
TextEdit->GetSelection(&from,&to);
TextEdit->Clear();
// Make style
wxTextAttr Normal(Options.AsColour(_T("Syntax Highlight Normal")));
wxFont font = Normal.GetFont();
wxString fontname = Options.AsText(_T("Font Face"));
if (fontname != _T("")) font.SetFaceName(fontname);
font.SetPointSize(Options.AsInt(_T("Font Size")));
Normal.SetFont(font);
// Set
TextEdit->SetValue(text);
TextEdit->SetStyle(0,text.Length(),Normal);
TextEdit->SetSelection(from,to);
}
// Finish
TextEdit->Thaw(); TextEdit->Thaw();
textEditReady = true; textEditReady = true;
} }
@ -423,7 +422,8 @@ void SubsEditBox::SetText(const wxString _text) {
/////////////// ///////////////
// Event table // Event table
BEGIN_EVENT_TABLE(SubsEditBox, wxPanel) BEGIN_EVENT_TABLE(SubsEditBox, wxPanel)
EVT_TEXT(EDIT_BOX, SubsEditBox::OnEditText) //EVT_SCI_MODIFIED(EDIT_BOX,SubsEditBox::OnEditText)
EVT_SCI_STYLENEEDED(EDIT_BOX,SubsEditBox::OnNeedStyle)
EVT_CHECKBOX(SYNTAX_BOX, SubsEditBox::OnSyntaxBox) EVT_CHECKBOX(SYNTAX_BOX, SubsEditBox::OnSyntaxBox)
EVT_RADIOBUTTON(RADIO_TIME_BY_FRAME, SubsEditBox::OnFrameRadio) EVT_RADIOBUTTON(RADIO_TIME_BY_FRAME, SubsEditBox::OnFrameRadio)
EVT_RADIOBUTTON(RADIO_TIME_BY_TIME, SubsEditBox::OnTimeRadio) EVT_RADIOBUTTON(RADIO_TIME_BY_TIME, SubsEditBox::OnTimeRadio)
@ -463,18 +463,33 @@ END_EVENT_TABLE()
///////////////////// /////////////////////
// Text edited event // Text edited event
void SubsEditBox::OnEditText(wxCommandEvent &event) { void SubsEditBox::OnEditText(wxScintillaEvent &event) {
if (textEditReady) { //int type = event.GetModificationType();
SetText(TextEdit->GetValue()); //if (!(type | wxSCI_MOD_BEFOREINSERT) && textEditReady) {
event.Skip(); // SetText(TextEdit->GetText());
// event.Skip();
//}
}
//////////////
// Need style
void SubsEditBox::OnNeedStyle(wxScintillaEvent &event) {
// Check if it needs to fix text
wxString text = TextEdit->GetText();
if (text.Contains(_T("\n")) || text.Contains(_T("\r"))) {
SetText(TextEdit->GetText());
} }
// Just update style
else UpdateStyle();
} }
///////////////////////////// /////////////////////////////
// Syntax highlight checkbox // Syntax highlight checkbox
void SubsEditBox::OnSyntaxBox(wxCommandEvent &event) { void SubsEditBox::OnSyntaxBox(wxCommandEvent &event) {
SetText(TextEdit->GetValue()); SetText(TextEdit->GetText());
Options.SetBool(_T("Syntax Highlight Enabled"),SyntaxHighlight->GetValue()); Options.SetBool(_T("Syntax Highlight Enabled"),SyntaxHighlight->GetValue());
Options.Save(); Options.Save();
event.Skip(); event.Skip();
@ -519,7 +534,7 @@ void SubsEditBox::SetControlsState (bool state) {
controlState = state; controlState = state;
// HACK: TextEdit workaround the stupid colour lock bug // HACK: TextEdit workaround the stupid colour lock bug
TextEdit->SetEditable(state); TextEdit->SetReadOnly(!state);
if (state) TextEdit->SetBackgroundColour(origBgColour); if (state) TextEdit->SetBackgroundColour(origBgColour);
else TextEdit->SetBackgroundColour(disabledBgColour); else TextEdit->SetBackgroundColour(disabledBgColour);
@ -551,7 +566,7 @@ void SubsEditBox::SetControlsState (bool state) {
// Clear values if it's false // Clear values if it's false
if (state==false) { if (state==false) {
TextEdit->SetValue(_T("")); TextEdit->SetText(_T(""));
StartTime->SetTime(0); StartTime->SetTime(0);
EndTime->SetTime(0); EndTime->SetTime(0);
Layer->SetValue(_T("")); Layer->SetValue(_T(""));
@ -896,7 +911,7 @@ void SubsEditBox::CommitText() {
// Update line // Update line
if (cur) { if (cur) {
cur->Text = TextEdit->GetValue(); cur->Text = TextEdit->GetText();
//cur->ParseASSTags(); //cur->ParseASSTags();
cur->UpdateData(); cur->UpdateData();
grid->Refresh(false); grid->Refresh(false);
@ -907,23 +922,71 @@ void SubsEditBox::CommitText() {
//////////////////////// ////////////////////////
// Edit box constructor // Edit box constructor
SubsTextEditCtrl::SubsTextEditCtrl(wxWindow* parent, wxWindowID id, const wxString& value, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) SubsTextEditCtrl::SubsTextEditCtrl(wxWindow* parent, wxWindowID id, const wxString& value, const wxPoint& pos, const wxSize& wsize, long style, const wxValidator& validator, const wxString& name)
: wxTextCtrl(parent, id, value, pos, size, style, validator, name) : wxScintilla(parent, id, pos, wsize, 0, value)
{ {
// Set properties
SetWrapMode(wxSCI_WRAP_WORD);
SetMarginWidth(1,0);
PushEventHandler(new SubsTextEditHandler(this,(SubsEditBox*)parent));
// Styles
wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
wxString fontname = Options.AsText(_T("Font Face"));
if (fontname != _T("")) font.SetFaceName(fontname);
int size = Options.AsInt(_T("Font Size"));
// Normal style
StyleSetFont(0,font);
StyleSetSize(0,size);
StyleSetForeground(0,Options.AsColour(_T("Syntax Highlight Normal")));
// Brackets style
StyleSetFont(1,font);
StyleSetSize(1,size);
StyleSetForeground(1,Options.AsColour(_T("Syntax Highlight Brackets")));
// Slashes/Parenthesis/Comma style
StyleSetFont(2,font);
StyleSetSize(2,size);
StyleSetForeground(2,Options.AsColour(_T("Syntax Highlight Slashes")));
// Tags style
StyleSetFont(3,font);
StyleSetSize(3,size);
StyleSetBold(3,true);
StyleSetForeground(3,Options.AsColour(_T("Syntax Highlight Tags")));
// Error style
StyleSetFont(4,font);
StyleSetSize(4,size);
StyleSetForeground(4,Options.AsColour(_T("Syntax Highlight Error")));
// Tag Number Parameters style
StyleSetFont(5,font);
StyleSetSize(5,size);
StyleSetForeground(5,Options.AsColour(_T("Syntax Highlight Numbers")));
} }
//////////////////////// ////////////////////////
// Edit box event table // Edit box event table
BEGIN_EVENT_TABLE(SubsTextEditCtrl,wxTextCtrl) BEGIN_EVENT_TABLE(SubsTextEditCtrl,wxScintilla)
EVT_MOUSE_EVENTS(SubsTextEditCtrl::OnMouseEvent) EVT_MOUSE_EVENTS(SubsTextEditCtrl::OnMouseEvent)
END_EVENT_TABLE() END_EVENT_TABLE()
//////////////////////////
// Edit box event handler
BEGIN_EVENT_TABLE(SubsTextEditHandler,wxEvtHandler)
EVT_KEY_DOWN(SubsTextEditHandler::OnKeyDown)
END_EVENT_TABLE()
/////////////////////////////// ///////////////////////////////
// Split line preserving times // Split line preserving times
void SubsEditBox::OnSplitLinePreserve (wxCommandEvent &event) { void SubsEditBox::OnSplitLinePreserve (wxCommandEvent &event) {
long from,to; int from,to;
TextEdit->GetSelection(&from, &to); TextEdit->GetSelection(&from, &to);
grid->SplitLine(linen,from,0); grid->SplitLine(linen,from,0);
} }
@ -932,7 +995,7 @@ void SubsEditBox::OnSplitLinePreserve (wxCommandEvent &event) {
/////////////////////////////// ///////////////////////////////
// Split line estimating times // Split line estimating times
void SubsEditBox::OnSplitLineEstimate (wxCommandEvent &event) { void SubsEditBox::OnSplitLineEstimate (wxCommandEvent &event) {
long from,to; int from,to;
TextEdit->GetSelection(&from, &to); TextEdit->GetSelection(&from, &to);
grid->SplitLine(linen,from,1); grid->SplitLine(linen,from,1);
} }
@ -983,8 +1046,8 @@ void SubsTextEditCtrl::OnMouseEvent(wxMouseEvent &event) {
wxMenu menu; wxMenu menu;
menu.Append(EDIT_MENU_UNDO,_("&Undo"))->Enable(CanUndo()); menu.Append(EDIT_MENU_UNDO,_("&Undo"))->Enable(CanUndo());
menu.AppendSeparator(); menu.AppendSeparator();
menu.Append(EDIT_MENU_CUT,_("Cu&t"))->Enable(CanCut()); menu.Append(EDIT_MENU_CUT,_("Cu&t"))->Enable(GetSelectionStart()-GetSelectionEnd() != 0);
menu.Append(EDIT_MENU_COPY,_("&Copy"))->Enable(CanCopy()); menu.Append(EDIT_MENU_COPY,_("&Copy"))->Enable(GetSelectionStart()-GetSelectionEnd() != 0);
menu.Append(EDIT_MENU_PASTE,_("&Paste"))->Enable(CanPaste()); menu.Append(EDIT_MENU_PASTE,_("&Paste"))->Enable(CanPaste());
menu.AppendSeparator(); menu.AppendSeparator();
menu.Append(EDIT_MENU_SELECT_ALL,_("Select &All")); menu.Append(EDIT_MENU_SELECT_ALL,_("Select &All"));
@ -1000,12 +1063,46 @@ void SubsTextEditCtrl::OnMouseEvent(wxMouseEvent &event) {
} }
/////////////
// Key Event
SubsTextEditHandler::SubsTextEditHandler(wxScintilla *scint,SubsEditBox *edit) {
box = edit;
parent = scint;
//Connect(wxEVT_SCI_MODIFIED,wxCommandEventHandler(SubsTextEditHandler::OnChange));
}
void SubsTextEditHandler::OnKeyDown(wxKeyEvent &event) {
// Ctrl held?
int key = event.GetKeyCode();
if (event.GetModifiers() == wxMOD_CONTROL) {
if (key == 'C') {
parent->Copy();
event.StopPropagation();
return;
}
if (key == 'X') {
parent->Cut();
event.StopPropagation();
return;
}
if (key == 'V') {
parent->Paste();
event.StopPropagation();
return;
}
}
event.Skip();
}
////////////////////////////////////// //////////////////////////////////////
// Gets block number at text position // Gets block number at text position
int SubsEditBox::BlockAtPos(int pos) { int SubsEditBox::BlockAtPos(int pos) {
// Prepare // Prepare
int n=0; int n=0;
wxString text = TextEdit->GetValue();; wxString text = TextEdit->GetText();;
int max = text.Length()-1; int max = text.Length()-1;
// Find block number at pos // Find block number at pos
@ -1022,13 +1119,13 @@ int SubsEditBox::BlockAtPos(int pos) {
// Set override // Set override
void SubsEditBox::SetOverride (wxString tagname,wxString preValue,int forcePos) { void SubsEditBox::SetOverride (wxString tagname,wxString preValue,int forcePos) {
// Selection // Selection
long selstart, selend; int selstart, selend;
if (forcePos != -1) { if (forcePos != -1) {
selstart = forcePos; selstart = forcePos;
selend = forcePos; selend = forcePos;
} }
else TextEdit->GetSelection(&selstart,&selend); else TextEdit->GetSelection(&selstart,&selend);
int len = TextEdit->GetValue().Length(); int len = TextEdit->GetText().Length();
selstart = MID(0,selstart,len); selstart = MID(0,selstart,len);
selend = MID(0,selend,len); selend = MID(0,selend,len);
@ -1039,7 +1136,7 @@ void SubsEditBox::SetOverride (wxString tagname,wxString preValue,int forcePos)
// Get block at start // Get block at start
size_t blockn = BlockAtPos(selstart); size_t blockn = BlockAtPos(selstart);
AssDialogue *line = new AssDialogue(); AssDialogue *line = new AssDialogue();
line->Text = TextEdit->GetValue(); line->Text = TextEdit->GetText();
line->ParseASSTags(); line->ParseASSTags();
AssDialogueBlock *block = line->Blocks.at(blockn); AssDialogueBlock *block = line->Blocks.at(blockn);

View file

@ -40,6 +40,7 @@
//////////// ////////////
// Includes // Includes
#include <wx/wxprec.h> #include <wx/wxprec.h>
#include <wx/wxscintilla.h>
////////////// //////////////
@ -50,11 +51,26 @@ class SubsEditBox;
class AudioDisplay; class AudioDisplay;
class HiliModTextCtrl; class HiliModTextCtrl;
class VideoDisplay; class VideoDisplay;
class wxScintilla;
/////////////////
// Event handler
class SubsTextEditHandler : public wxEvtHandler {
private:
wxScintilla *parent;
SubsEditBox *box;
void OnKeyDown(wxKeyEvent &event);
public:
SubsTextEditHandler(wxScintilla *scint,SubsEditBox *editbox);
DECLARE_EVENT_TABLE()
};
//////////////////// ////////////////////
// SubsTextEditCtrl // SubsTextEditCtrl
class SubsTextEditCtrl : public wxTextCtrl { class SubsTextEditCtrl : public wxScintilla {
private: private:
void OnMouseEvent(wxMouseEvent &event); void OnMouseEvent(wxMouseEvent &event);
@ -69,6 +85,8 @@ public:
////////////////// //////////////////
// Edit box class // Edit box class
class SubsEditBox : public wxPanel { class SubsEditBox : public wxPanel {
friend class SubsTextEditHandler;
private: private:
bool enabled; bool enabled;
bool textEditReady; bool textEditReady;
@ -107,6 +125,9 @@ private:
int BlockAtPos(int pos); int BlockAtPos(int pos);
void OnEditText(wxScintillaEvent &event);
void OnNeedStyle(wxScintillaEvent &event);
void OnButtonColor1(wxCommandEvent &event); void OnButtonColor1(wxCommandEvent &event);
void OnButtonColor2(wxCommandEvent &event); void OnButtonColor2(wxCommandEvent &event);
void OnButtonColor3(wxCommandEvent &event); void OnButtonColor3(wxCommandEvent &event);
@ -117,7 +138,6 @@ private:
void OnButtonUnderline(wxCommandEvent &event); void OnButtonUnderline(wxCommandEvent &event);
void OnButtonStrikeout(wxCommandEvent &event); void OnButtonStrikeout(wxCommandEvent &event);
void OnEditText(wxCommandEvent &event);
void OnSyntaxBox(wxCommandEvent &event); void OnSyntaxBox(wxCommandEvent &event);
void OnFrameRadio(wxCommandEvent &event); void OnFrameRadio(wxCommandEvent &event);
void OnTimeRadio(wxCommandEvent &event); void OnTimeRadio(wxCommandEvent &event);
@ -155,6 +175,7 @@ public:
void CommitText(); void CommitText();
void SetText(const wxString text); void SetText(const wxString text);
void UpdateStyle(int start=0,int length=-1);
void Update(bool timeOnly=false); void Update(bool timeOnly=false);
void UpdateGlobals(); void UpdateGlobals();
void SetToLine(int n); void SetToLine(int n);

View file

@ -265,16 +265,19 @@ void SubtitlesGrid::OnKeyDown(wxKeyEvent &event) {
// Copy // Copy
if (Hotkeys.IsPressed(_T("Copy"))) { if (Hotkeys.IsPressed(_T("Copy"))) {
CopyLines(GetSelection()); CopyLines(GetSelection());
return;
} }
// Cut // Cut
if (Hotkeys.IsPressed(_T("Cut"))) { if (Hotkeys.IsPressed(_T("Cut"))) {
CutLines(GetSelection()); CutLines(GetSelection());
return;
} }
// Paste // Paste
if (Hotkeys.IsPressed(_T("Paste"))) { if (Hotkeys.IsPressed(_T("Paste"))) {
PasteLines(GetFirstSelRow()); PasteLines(GetFirstSelRow());
return;
} }
// Delete // Delete