mirror of https://github.com/odrling/Aegisub
Somewhat fixed the wxScintilla crap, but not entirely
Originally committed to SVN as r601.
This commit is contained in:
parent
9023e039ff
commit
21dbd0633f
|
@ -1169,7 +1169,7 @@ void FrameMain::StatusTimeout(wxString text,int ms) {
|
||||||
///////////////////////////
|
///////////////////////////
|
||||||
// Setup accelerator table
|
// Setup accelerator table
|
||||||
void FrameMain::SetAccelerators() {
|
void FrameMain::SetAccelerators() {
|
||||||
wxAcceleratorEntry entry[10];
|
wxAcceleratorEntry entry[11];
|
||||||
int i = 0;
|
int i = 0;
|
||||||
entry[i++] = Hotkeys.GetAccelerator(_T("Video global prev frame"),Video_Prev_Frame);
|
entry[i++] = Hotkeys.GetAccelerator(_T("Video global prev frame"),Video_Prev_Frame);
|
||||||
entry[i++] = Hotkeys.GetAccelerator(_T("Video global next frame"),Video_Next_Frame);
|
entry[i++] = Hotkeys.GetAccelerator(_T("Video global next frame"),Video_Next_Frame);
|
||||||
|
@ -1180,6 +1180,7 @@ void FrameMain::SetAccelerators() {
|
||||||
entry[i++] = Hotkeys.GetAccelerator(_T("Video global zoom in"),Menu_Video_Zoom_In);
|
entry[i++] = Hotkeys.GetAccelerator(_T("Video global zoom in"),Menu_Video_Zoom_In);
|
||||||
entry[i++] = Hotkeys.GetAccelerator(_T("Video global zoom out"),Menu_Video_Zoom_Out);
|
entry[i++] = Hotkeys.GetAccelerator(_T("Video global zoom out"),Menu_Video_Zoom_Out);
|
||||||
entry[i++] = Hotkeys.GetAccelerator(_T("Video global play"),Video_Play);
|
entry[i++] = Hotkeys.GetAccelerator(_T("Video global play"),Video_Play);
|
||||||
|
entry[i++] = Hotkeys.GetAccelerator(_T("Edit box commit"),Edit_Box_Commit);
|
||||||
wxAcceleratorEntry temp;
|
wxAcceleratorEntry temp;
|
||||||
temp.Set(wxACCEL_CTRL | wxACCEL_ALT,WXK_F12,Kana_Game);
|
temp.Set(wxACCEL_CTRL | wxACCEL_ALT,WXK_F12,Kana_Game);
|
||||||
entry[i++] = temp;
|
entry[i++] = temp;
|
||||||
|
|
|
@ -187,6 +187,7 @@ private:
|
||||||
void OnJumpTo (wxCommandEvent &event);
|
void OnJumpTo (wxCommandEvent &event);
|
||||||
void OnShift (wxCommandEvent &event);
|
void OnShift (wxCommandEvent &event);
|
||||||
void OnSort (wxCommandEvent &event);
|
void OnSort (wxCommandEvent &event);
|
||||||
|
void OnEditBoxCommit (wxCommandEvent &event);
|
||||||
void OnOpenProperties (wxCommandEvent &event);
|
void OnOpenProperties (wxCommandEvent &event);
|
||||||
void OnOpenStylesManager (wxCommandEvent &event);
|
void OnOpenStylesManager (wxCommandEvent &event);
|
||||||
void OnOpenAttachments (wxCommandEvent &event);
|
void OnOpenAttachments (wxCommandEvent &event);
|
||||||
|
@ -365,6 +366,7 @@ enum {
|
||||||
Grid_Next_Line,
|
Grid_Next_Line,
|
||||||
Grid_Prev_Line,
|
Grid_Prev_Line,
|
||||||
Grid_Toggle_Tags,
|
Grid_Toggle_Tags,
|
||||||
|
Edit_Box_Commit,
|
||||||
|
|
||||||
Video_Play,
|
Video_Play,
|
||||||
Video_Play_Line,
|
Video_Play_Line,
|
||||||
|
|
|
@ -210,6 +210,7 @@ BEGIN_EVENT_TABLE(FrameMain, wxFrame)
|
||||||
EVT_MENU(Grid_Next_Line,FrameMain::OnNextLine)
|
EVT_MENU(Grid_Next_Line,FrameMain::OnNextLine)
|
||||||
EVT_MENU(Grid_Prev_Line,FrameMain::OnPrevLine)
|
EVT_MENU(Grid_Prev_Line,FrameMain::OnPrevLine)
|
||||||
EVT_MENU(Grid_Toggle_Tags,FrameMain::OnToggleTags)
|
EVT_MENU(Grid_Toggle_Tags,FrameMain::OnToggleTags)
|
||||||
|
EVT_MENU(Edit_Box_Commit,FrameMain::OnEditBoxCommit)
|
||||||
|
|
||||||
EVT_MENU(Kana_Game, FrameMain::OnKanaGame)
|
EVT_MENU(Kana_Game, FrameMain::OnKanaGame)
|
||||||
|
|
||||||
|
@ -1391,6 +1392,30 @@ void FrameMain::OnToggleTags(wxCommandEvent &event) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////
|
||||||
|
// Commit Edit Box's changes
|
||||||
|
void FrameMain::OnEditBoxCommit(wxCommandEvent &event) {
|
||||||
|
// Find focus
|
||||||
|
wxWindow *focus = FindFocus();
|
||||||
|
|
||||||
|
// Is the text edit
|
||||||
|
if (focus == EditBox->TextEdit) {
|
||||||
|
EditBox->CommitText();
|
||||||
|
SubsBox->ass->FlagAsModified();
|
||||||
|
SubsBox->CommitChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Other window
|
||||||
|
else {
|
||||||
|
wxKeyEvent keyevent;
|
||||||
|
keyevent.m_keyCode = WXK_RETURN;
|
||||||
|
keyevent.m_controlDown = true;
|
||||||
|
keyevent.SetEventType(wxEVT_KEY_DOWN);
|
||||||
|
focus->AddPendingEvent(keyevent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//////////////
|
//////////////
|
||||||
// Play video
|
// Play video
|
||||||
void FrameMain::OnVideoPlay(wxCommandEvent &event) {
|
void FrameMain::OnVideoPlay(wxCommandEvent &event) {
|
||||||
|
|
|
@ -314,6 +314,7 @@ void HotkeyManager::LoadDefaults() {
|
||||||
SetHotkey(_("Exit"),_T("Alt-F4"));
|
SetHotkey(_("Exit"),_T("Alt-F4"));
|
||||||
SetHotkey(_("Help"),_T("F1"));
|
SetHotkey(_("Help"),_T("F1"));
|
||||||
|
|
||||||
|
SetHotkey(_("Edit Box Commit"),_T("Ctrl-Enter"));
|
||||||
SetHotkey(_("Undo"),_T("Ctrl-Z"));
|
SetHotkey(_("Undo"),_T("Ctrl-Z"));
|
||||||
SetHotkey(_("Redo"),_T("Ctrl-Y"));
|
SetHotkey(_("Redo"),_T("Ctrl-Y"));
|
||||||
SetHotkey(_("Shift Times"),_T("Ctrl-I"));
|
SetHotkey(_("Shift Times"),_T("Ctrl-I"));
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
#include <wx/colordlg.h>
|
#include <wx/colordlg.h>
|
||||||
#include <wx/fontdlg.h>
|
#include <wx/fontdlg.h>
|
||||||
#include "subs_edit_box.h"
|
#include "subs_edit_box.h"
|
||||||
|
#include "subs_edit_ctrl.h"
|
||||||
#include "subs_grid.h"
|
#include "subs_grid.h"
|
||||||
#include "ass_file.h"
|
#include "ass_file.h"
|
||||||
#include "ass_dialogue.h"
|
#include "ass_dialogue.h"
|
||||||
|
@ -201,7 +202,7 @@ void SubsEditBox::Update (bool timeOnly) {
|
||||||
EndTime->SetTime(end);
|
EndTime->SetTime(end);
|
||||||
Duration->SetTime(end-start);
|
Duration->SetTime(end-start);
|
||||||
if (!timeOnly) {
|
if (!timeOnly) {
|
||||||
SetText(curdiag->Text);
|
TextEdit->SetTextTo(curdiag->Text);
|
||||||
Layer->SetValue(wxString::Format(_T("%i"),curdiag->Layer));
|
Layer->SetValue(wxString::Format(_T("%i"),curdiag->Layer));
|
||||||
MarginL->SetValue(curdiag->GetMarginString(1));
|
MarginL->SetValue(curdiag->GetMarginString(1));
|
||||||
MarginR->SetValue(curdiag->GetMarginString(2));
|
MarginR->SetValue(curdiag->GetMarginString(2));
|
||||||
|
@ -292,130 +293,6 @@ 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('{') && depth >= 0) {
|
|
||||||
TextEdit->SetStyling(ran,curStyle);
|
|
||||||
ran = 0;
|
|
||||||
depth++;
|
|
||||||
if (depth == 1) curStyle = 1;
|
|
||||||
else curStyle = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
// End override block
|
|
||||||
else if (curChar == _T('}') && depth <= 1) {
|
|
||||||
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
|
|
||||||
void SubsEditBox::SetText(const wxString _text) {
|
|
||||||
// Setup
|
|
||||||
textEditReady = false;
|
|
||||||
TextEdit->Freeze();
|
|
||||||
wxString text = _text;
|
|
||||||
text.Replace(_T("\r\n"),_T("\\N"));
|
|
||||||
text.Replace(_T("\n\r"),_T("\\N"));
|
|
||||||
text.Replace(_T("\r"),_T("\\N"));
|
|
||||||
text.Replace(_T("\n"),_T("\\N"));
|
|
||||||
|
|
||||||
// Prepare
|
|
||||||
int from=0,to=0;
|
|
||||||
TextEdit->GetSelection(&from,&to);
|
|
||||||
TextEdit->Clear();
|
|
||||||
|
|
||||||
// Set text
|
|
||||||
TextEdit->SetText(text);
|
|
||||||
|
|
||||||
// Style
|
|
||||||
UpdateStyle();
|
|
||||||
|
|
||||||
// Restore selection
|
|
||||||
TextEdit->SetSelection(from,to);
|
|
||||||
|
|
||||||
// Finish
|
|
||||||
TextEdit->Thaw();
|
|
||||||
textEditReady = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///////////////
|
///////////////
|
||||||
// Event table
|
// Event table
|
||||||
BEGIN_EVENT_TABLE(SubsEditBox, wxPanel)
|
BEGIN_EVENT_TABLE(SubsEditBox, wxPanel)
|
||||||
|
@ -470,18 +347,18 @@ void SubsEditBox::OnNeedStyle(wxScintillaEvent &event) {
|
||||||
// Check if it needs to fix text
|
// Check if it needs to fix text
|
||||||
wxString text = TextEdit->GetText();
|
wxString text = TextEdit->GetText();
|
||||||
if (text.Contains(_T("\n")) || text.Contains(_T("\r"))) {
|
if (text.Contains(_T("\n")) || text.Contains(_T("\r"))) {
|
||||||
SetText(TextEdit->GetText());
|
TextEdit->SetTextTo(TextEdit->GetText());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Just update style
|
// Just update style
|
||||||
else UpdateStyle();
|
else TextEdit->UpdateStyle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
// Syntax highlight checkbox
|
// Syntax highlight checkbox
|
||||||
void SubsEditBox::OnSyntaxBox(wxCommandEvent &event) {
|
void SubsEditBox::OnSyntaxBox(wxCommandEvent &event) {
|
||||||
SetText(TextEdit->GetText());
|
TextEdit->UpdateStyle();
|
||||||
Options.SetBool(_T("Syntax Highlight Enabled"),SyntaxHighlight->GetValue());
|
Options.SetBool(_T("Syntax Highlight Enabled"),SyntaxHighlight->GetValue());
|
||||||
Options.Save();
|
Options.Save();
|
||||||
event.Skip();
|
event.Skip();
|
||||||
|
@ -558,7 +435,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->SetText(_T(""));
|
TextEdit->SetTextTo(_T(""));
|
||||||
StartTime->SetTime(0);
|
StartTime->SetTime(0);
|
||||||
EndTime->SetTime(0);
|
EndTime->SetTime(0);
|
||||||
Layer->SetValue(_T(""));
|
Layer->SetValue(_T(""));
|
||||||
|
@ -912,80 +789,6 @@ void SubsEditBox::CommitText() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
////////////////////////
|
|
||||||
// Edit box constructor
|
|
||||||
SubsTextEditCtrl::SubsTextEditCtrl(wxWindow* parent, wxWindowID id, const wxString& value, const wxPoint& pos, const wxSize& wsize, long style, const wxValidator& validator, const wxString& name)
|
|
||||||
: wxScintilla(parent, id, pos, wsize, 0, value)
|
|
||||||
{
|
|
||||||
// Set properties
|
|
||||||
SetWrapMode(wxSCI_WRAP_WORD);
|
|
||||||
SetMarginWidth(1,0);
|
|
||||||
PushEventHandler(new SubsTextEditHandler(this,(SubsEditBox*)parent));
|
|
||||||
//CmdKeyAssign(wxSCI_KEY_RETURN,wxSCI_SCMOD_CTRL,wxSCI_CMD_NEWLINE);
|
|
||||||
CmdKeyClear(wxSCI_KEY_RETURN,wxSCI_SCMOD_CTRL);
|
|
||||||
CmdKeyClear(wxSCI_KEY_RETURN,wxSCI_SCMOD_NULL);
|
|
||||||
CmdKeyClear(wxSCI_KEY_TAB,wxSCI_SCMOD_NULL);
|
|
||||||
CmdKeyClear(wxSCI_KEY_TAB,wxSCI_SCMOD_SHIFT);
|
|
||||||
CmdKeyClear('D',wxSCI_SCMOD_CTRL);
|
|
||||||
CmdKeyClear('L',wxSCI_SCMOD_CTRL);
|
|
||||||
CmdKeyClear('L',wxSCI_SCMOD_CTRL | wxSCI_SCMOD_SHIFT);
|
|
||||||
CmdKeyClear('T',wxSCI_SCMOD_CTRL);
|
|
||||||
CmdKeyClear('T',wxSCI_SCMOD_CTRL | wxSCI_SCMOD_SHIFT);
|
|
||||||
CmdKeyClear('U',wxSCI_SCMOD_CTRL);
|
|
||||||
|
|
||||||
// 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
|
|
||||||
BEGIN_EVENT_TABLE(SubsTextEditCtrl,wxScintilla)
|
|
||||||
EVT_MOUSE_EVENTS(SubsTextEditCtrl::OnMouseEvent)
|
|
||||||
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) {
|
||||||
|
@ -1039,70 +842,6 @@ void SubsEditBox::OnSelectAll(wxCommandEvent &event) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////
|
|
||||||
// Mouse event
|
|
||||||
void SubsTextEditCtrl::OnMouseEvent(wxMouseEvent &event) {
|
|
||||||
// Right click
|
|
||||||
if (event.ButtonUp(wxMOUSE_BTN_RIGHT)) {
|
|
||||||
if (control->linen >= 0) {
|
|
||||||
// Popup
|
|
||||||
wxMenu menu;
|
|
||||||
menu.Append(EDIT_MENU_UNDO,_("&Undo"))->Enable(CanUndo());
|
|
||||||
menu.AppendSeparator();
|
|
||||||
menu.Append(EDIT_MENU_CUT,_("Cu&t"))->Enable(GetSelectionStart()-GetSelectionEnd() != 0);
|
|
||||||
menu.Append(EDIT_MENU_COPY,_("&Copy"))->Enable(GetSelectionStart()-GetSelectionEnd() != 0);
|
|
||||||
menu.Append(EDIT_MENU_PASTE,_("&Paste"))->Enable(CanPaste());
|
|
||||||
menu.AppendSeparator();
|
|
||||||
menu.Append(EDIT_MENU_SELECT_ALL,_("Select &All"));
|
|
||||||
menu.AppendSeparator();
|
|
||||||
menu.Append(EDIT_MENU_SPLIT_PRESERVE,_("Split at cursor (preserve times)"));
|
|
||||||
menu.Append(EDIT_MENU_SPLIT_ESTIMATE,_("Split at cursor (estimate times)"));
|
|
||||||
PopupMenu(&menu);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
event.Skip();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/////////////
|
|
||||||
// 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;
|
|
||||||
}
|
|
||||||
if (key == WXK_RETURN || key == WXK_NUMPAD_ENTER) {
|
|
||||||
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) {
|
||||||
|
@ -1330,7 +1069,7 @@ void SubsEditBox::SetOverride (wxString tagname,wxString preValue,int forcePos)
|
||||||
int origStart = selstart;
|
int origStart = selstart;
|
||||||
selstart = selend + shift;
|
selstart = selend + shift;
|
||||||
insert = insert2;
|
insert = insert2;
|
||||||
SetText(line->Text);
|
TextEdit->SetTextTo(line->Text);
|
||||||
blockn = BlockAtPos(selstart);
|
blockn = BlockAtPos(selstart);
|
||||||
block = line->Blocks.at(blockn);
|
block = line->Blocks.at(blockn);
|
||||||
plain = AssDialogueBlock::GetAsPlain(block);
|
plain = AssDialogueBlock::GetAsPlain(block);
|
||||||
|
@ -1367,7 +1106,7 @@ void SubsEditBox::SetOverride (wxString tagname,wxString preValue,int forcePos)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Commit changes and shift selection
|
// Commit changes and shift selection
|
||||||
SetText(line->Text);
|
TextEdit->SetTextTo(line->Text);
|
||||||
line->ClearBlocks();
|
line->ClearBlocks();
|
||||||
TextEdit->SetSelection(selstart+shift,selend+shift);
|
TextEdit->SetSelection(selstart+shift,selend+shift);
|
||||||
TextEdit->SetFocus();
|
TextEdit->SetFocus();
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
////////////
|
////////////
|
||||||
// Includes
|
// Includes
|
||||||
#include <wx/wxprec.h>
|
#include <wx/wxprec.h>
|
||||||
#include <wx/wxscintilla.h>
|
#include "subs_edit_ctrl.h"
|
||||||
|
|
||||||
|
|
||||||
//////////////
|
//////////////
|
||||||
|
@ -54,38 +54,11 @@ class VideoDisplay;
|
||||||
class wxScintilla;
|
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
|
|
||||||
class SubsTextEditCtrl : public wxScintilla {
|
|
||||||
private:
|
|
||||||
void OnMouseEvent(wxMouseEvent &event);
|
|
||||||
|
|
||||||
public:
|
|
||||||
SubsEditBox *control;
|
|
||||||
SubsTextEditCtrl(wxWindow* parent, wxWindowID id, const wxString& value = _T(""), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxTextCtrlNameStr);
|
|
||||||
|
|
||||||
DECLARE_EVENT_TABLE()
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//////////////////
|
//////////////////
|
||||||
// Edit box class
|
// Edit box class
|
||||||
class SubsEditBox : public wxPanel {
|
class SubsEditBox : public wxPanel {
|
||||||
friend class SubsTextEditHandler;
|
friend class SubsTextEditHandler;
|
||||||
|
friend class SubsTextEditCtrl;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool enabled;
|
bool enabled;
|
||||||
|
@ -174,8 +147,6 @@ public:
|
||||||
void SetStyleFlag (wxString tag,wxString preValue=_T(""),int pos=-1);
|
void SetStyleFlag (wxString tag,wxString preValue=_T(""),int pos=-1);
|
||||||
|
|
||||||
void CommitText();
|
void CommitText();
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue