diff --git a/core/changelog.txt b/core/changelog.txt index 8d9be01f2..d8d50a861 100644 --- a/core/changelog.txt +++ b/core/changelog.txt @@ -49,6 +49,7 @@ Please visit http://aegisub.net to download latest version - Added an "Import from script..." button to Styles Manager, to import styles directly from other subtitle files. (AMZ) - Added buttons to Styles Manager to move styles up, down, to top or to bottom, on both storage and current script. (AMZ) - Added sorting functionality to Styles Manager, for both storage and current script. (AMZ) +- Tweaked the layout of Subtitles Edit area. (AMZ) = 1.10 beta - 2006.08.07 =========================== diff --git a/core/frame_main.cpp b/core/frame_main.cpp index 783740c11..1f288939d 100644 --- a/core/frame_main.cpp +++ b/core/frame_main.cpp @@ -703,6 +703,7 @@ void FrameMain::SetDisplayMode(int mode) { // Update curMode = mode; UpdateToolbar(); + EditBox->SetSplitLineMode(); MainSizer->CalcMin(); MainSizer->RecalcSizes(); videoBox->VideoSizer->Layout(); diff --git a/core/subs_edit_box.cpp b/core/subs_edit_box.cpp index 85578cdea..1e1be8c34 100644 --- a/core/subs_edit_box.cpp +++ b/core/subs_edit_box.cpp @@ -72,6 +72,7 @@ SubsEditBox::SubsEditBox (wxWindow *parent,SubtitlesGrid *gridp) : wxPanel(paren enabled = false; textEditReady = true; controlState = true; + setupDone = false; linen = -2; // Top controls @@ -131,14 +132,15 @@ SubsEditBox::SubsEditBox (wxWindow *parent,SubtitlesGrid *gridp) : wxPanel(paren ByFrame->SetToolTip(_("Time by frame number")); // Top sizer - wxSizer *TopSizer = new wxBoxSizer(wxHORIZONTAL); + TopSizer = new wxBoxSizer(wxHORIZONTAL); TopSizer->Add(CommentBox,0,wxRIGHT | wxALIGN_CENTER,5); - TopSizer->Add(StyleBox,0,wxRIGHT,5); - TopSizer->Add(ActorBox,0,wxRIGHT,5); - TopSizer->Add(Effect,0,0,0); + TopSizer->Add(StyleBox,1,wxRIGHT,5); + TopSizer->Add(ActorBox,1,wxRIGHT,5); + TopSizer->Add(Effect,1,0,0); // Middle sizer - wxSizer *MiddleSizer = new wxBoxSizer(wxHORIZONTAL); + splitLineMode = true; + MiddleSizer = new wxBoxSizer(wxHORIZONTAL); MiddleSizer->Add(Layer,0,wxRIGHT,5); MiddleSizer->Add(StartTime,0,wxRIGHT,0); MiddleSizer->Add(EndTime,0,wxRIGHT,5); @@ -146,10 +148,10 @@ SubsEditBox::SubsEditBox (wxWindow *parent,SubtitlesGrid *gridp) : wxPanel(paren MiddleSizer->Add(MarginL,0,0,0); MiddleSizer->Add(MarginR,0,0,0); MiddleSizer->Add(MarginV,0,0,0); - //MiddleSizer->Add(SyntaxHighlight,0,wxRIGHT | wxALIGN_CENTER,5); + MiddleSizer->AddSpacer(5); // Middle-bottom sizer - wxSizer *MiddleBotSizer = new wxBoxSizer(wxHORIZONTAL); + MiddleBotSizer = new wxBoxSizer(wxHORIZONTAL); MiddleBotSizer->Add(Bold); MiddleBotSizer->Add(Italics); MiddleBotSizer->Add(Underline); @@ -164,14 +166,14 @@ SubsEditBox::SubsEditBox (wxWindow *parent,SubtitlesGrid *gridp) : wxPanel(paren MiddleBotSizer->Add(ByFrame,0,wxRIGHT | wxALIGN_CENTER,5); // Text editor - TextEdit = new SubsTextEditCtrl(this,EDIT_BOX,_T(""),wxDefaultPosition,wxSize(300,50),wxTE_MULTILINE | wxTE_RICH2 | wxTE_NOHIDESEL); + TextEdit = new SubsTextEditCtrl(this,EDIT_BOX,_T(""),wxDefaultPosition,wxSize(300,50)); TextEdit->PushEventHandler(new SubsEditBoxEvent(this)); TextEdit->control = this; - wxSizer *BottomSizer = new wxBoxSizer(wxHORIZONTAL); + BottomSizer = new wxBoxSizer(wxHORIZONTAL); BottomSizer->Add(TextEdit,1,wxEXPAND,0); // Main sizer - wxSizer *MainSizer = new wxBoxSizer(wxVERTICAL); + MainSizer = new wxBoxSizer(wxVERTICAL); MainSizer->Add(TopSizer,0,wxEXPAND | wxLEFT | wxRIGHT | wxTOP,3); MainSizer->Add(MiddleSizer,0,wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM,3); MainSizer->Add(MiddleBotSizer,0,wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM,3); @@ -184,10 +186,47 @@ SubsEditBox::SubsEditBox (wxWindow *parent,SubtitlesGrid *gridp) : wxPanel(paren // HACK: Fix colour of bg of editbox origBgColour = TextEdit->GetBackgroundColour(); disabledBgColour = GetBackgroundColour(); + + // Set split mode + setupDone = true; + SetSplitLineMode(); Update(); } +///////////////////////////////// +// Set split or single line mode +void SubsEditBox::SetSplitLineMode(wxSize newSize) { + // Widths + int topWidth; + if (newSize.GetWidth() == -1) topWidth = TopSizer->GetSize().GetWidth(); + else topWidth = newSize.GetWidth()-GetSize().GetWidth()+GetClientSize().GetWidth(); + int midMin = MiddleSizer->GetMinSize().GetWidth(); + int botMin = MiddleBotSizer->GetMinSize().GetWidth(); + + // Currently split + if (splitLineMode) { + + if (topWidth >= midMin + botMin) { + MainSizer->Detach(MiddleBotSizer); + MiddleSizer->Add(MiddleBotSizer); + Layout(); + splitLineMode = false; + } + } + + // Currently joined + else { + if (topWidth < midMin) { + MiddleSizer->Detach(MiddleBotSizer); + MainSizer->Insert(2,MiddleBotSizer,0,wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM,3); + Layout(); + splitLineMode = true; + } + } +} + + /////////////////// // Update function void SubsEditBox::Update (bool timeOnly) { @@ -324,9 +363,19 @@ BEGIN_EVENT_TABLE(SubsEditBox, wxPanel) EVT_BUTTON(BUTTON_ITALICS,SubsEditBox::OnButtonItalics) EVT_BUTTON(BUTTON_UNDERLINE,SubsEditBox::OnButtonUnderline) EVT_BUTTON(BUTTON_STRIKEOUT,SubsEditBox::OnButtonStrikeout) + + EVT_SIZE(SubsEditBox::OnSize) END_EVENT_TABLE() +/////////// +// On size +void SubsEditBox::OnSize(wxSizeEvent &event) { + if (setupDone) SetSplitLineMode(event.GetSize()); + event.Skip(); +} + + ///////////////////// // Text edited event void SubsEditBox::OnEditText(wxScintillaEvent &event) { diff --git a/core/subs_edit_box.h b/core/subs_edit_box.h index a0396d6b8..c2dec88f7 100644 --- a/core/subs_edit_box.h +++ b/core/subs_edit_box.h @@ -61,6 +61,8 @@ class SubsEditBox : public wxPanel { friend class SubsTextEditCtrl; private: + bool splitLineMode; + bool setupDone; bool enabled; bool textEditReady; bool controlState; @@ -93,6 +95,13 @@ private: wxButton *Color3; wxButton *Color4; + wxSizer *TopSizer; + wxSizer *MiddleBotSizer; + wxSizer *MiddleSizer; + wxSizer *MainSizer; + wxSizer *DummySizer; + wxSizer *BottomSizer; + void SetControlsState(bool state); void CommitTimes(bool start,bool end,bool fromStart); @@ -126,6 +135,7 @@ private: void OnMarginVChange(wxCommandEvent &event); void OnCommentChange(wxCommandEvent &event); void OnEffectChange(wxCommandEvent &event); + void OnSize(wxSizeEvent &event); public: int linen; @@ -138,6 +148,7 @@ public: void SetOverride (wxString tag,wxString preValue=_T(""),int pos=-1); void SetStyleFlag (wxString tag,wxString preValue=_T(""),int pos=-1); + void SetSplitLineMode(wxSize size=wxSize(-1,-1)); void CommitText(); void Update(bool timeOnly=false); void UpdateGlobals();