From d85db6a722b6239309eb0ad67ed9c6e4ab7b306a Mon Sep 17 00:00:00 2001 From: shatty Date: Sun, 10 Aug 2003 12:47:05 +0000 Subject: [PATCH] fixed some initializations and edit menu initialization git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4269 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/terminal/TerminalTextView.cpp | 19 ++++++++++------ src/apps/terminal/TerminalTextView.h | 4 +++- src/apps/terminal/TerminalWindow.cpp | 31 ++++++++++++++++++++++---- src/apps/terminal/TerminalWindow.h | 2 ++ 4 files changed, 44 insertions(+), 12 deletions(-) diff --git a/src/apps/terminal/TerminalTextView.cpp b/src/apps/terminal/TerminalTextView.cpp index da922465cb..f8b03183b4 100644 --- a/src/apps/terminal/TerminalTextView.cpp +++ b/src/apps/terminal/TerminalTextView.cpp @@ -2,19 +2,25 @@ #include #include -#include "TerminalTextView.h" -#include "Constants.h" +#include +#include -TerminalTextView::TerminalTextView(BRect viewFrame, BRect textBounds, BHandler *handler) +TerminalTextView::TerminalTextView(BRect viewFrame, BRect textBounds, + const BFont * initialFont, + const rgb_color * initialColor, + BHandler *handler) : BTextView(viewFrame, "textview", textBounds, - B_FOLLOW_ALL, B_FRAME_EVENTS|B_WILL_DRAW) + initialFont, initialColor, + B_FOLLOW_ALL, B_FRAME_EVENTS|B_WILL_DRAW) { fHandler = handler; fMessenger = new BMessenger(handler); SetWordWrap(false); } -TerminalTextView::~TerminalTextView(){ +TerminalTextView::~TerminalTextView() +{ + delete fMessenger; } void @@ -31,12 +37,11 @@ TerminalTextView::Select(int32 start, int32 finish) void TerminalTextView::FrameResized(float width, float height) { - BRect oldText = TextRect(); - BTextView::FrameResized(width, height); BRect textRect; textRect = Bounds(); + textRect.OffsetTo(B_ORIGIN); textRect.InsetBy(TEXT_INSET,TEXT_INSET); SetTextRect(textRect); } diff --git a/src/apps/terminal/TerminalTextView.h b/src/apps/terminal/TerminalTextView.h index 073b999981..5f0a98d7a2 100644 --- a/src/apps/terminal/TerminalTextView.h +++ b/src/apps/terminal/TerminalTextView.h @@ -5,7 +5,9 @@ class TerminalTextView : public BTextView { public: - TerminalTextView(BRect viewframe, BRect textframe, BHandler *handler); + TerminalTextView(BRect viewframe, BRect textframe, + const BFont * initialFont, const rgb_color * initialColor, + BHandler *handler); ~TerminalTextView(); virtual void Select(int32 start, int32 finish); diff --git a/src/apps/terminal/TerminalWindow.cpp b/src/apps/terminal/TerminalWindow.cpp index e6074c085c..404dc3e96e 100644 --- a/src/apps/terminal/TerminalWindow.cpp +++ b/src/apps/terminal/TerminalWindow.cpp @@ -76,16 +76,20 @@ TerminalWindow::InitWindow(int32 id, entry_ref * settingsRef) viewFrame = Bounds(); viewFrame.top = fMenuBar->Bounds().Height()+1; + viewFrame.right -= B_V_SCROLL_BAR_WIDTH; viewFrame.left = 0; textBounds = viewFrame; textBounds.OffsetTo(B_ORIGIN); textBounds.InsetBy(TEXT_INSET, TEXT_INSET); - fTextView = new TerminalTextView(viewFrame, textBounds, this); + BFont textFont(be_plain_font); + textFont.SetSpacing(B_FIXED_SPACING); + rgb_color black = {0,0,0,0}; + fTextView = new TerminalTextView(viewFrame, textBounds, &textFont, &black, this); fTextView->SetStylable(true); - fScrollView = new BScrollView("scrollview", fTextView, 0, false, true, B_PLAIN_BORDER); + fScrollView = new BScrollView("scrollview", fTextView, B_FOLLOW_ALL, true, false, B_PLAIN_BORDER); AddChild(fScrollView); fTextView->MakeFocus(true); @@ -110,6 +114,7 @@ TerminalWindow::InitWindow(int32 id, entry_ref * settingsRef) fCopy = new BMenuItem("Copy", new BMessage(B_COPY), 'C'); fEdit->AddItem(fCopy); fCopy->SetTarget(fTextView); + fCopy->SetEnabled(false); fPaste = new BMenuItem("Paste", new BMessage(B_PASTE), 'V'); fEdit->AddItem(fPaste); @@ -126,7 +131,6 @@ TerminalWindow::InitWindow(int32 id, entry_ref * settingsRef) fClearAll = new BMenuItem("Clear All", new BMessage(EDIT_CLEAR_ALL), 'L'); fEdit->AddItem(fClearAll); - fClearAll->SetTarget(fTextView); fEdit->AddSeparatorItem(); @@ -247,7 +251,13 @@ TerminalWindow::MessageReceived(BMessage *message) break; case TERMINAL_SWITCH_TERMINAL: SwitchTerminals(message); - break; + break; + case ENABLE_ITEMS: + EnableEditItems(message); + break; + case DISABLE_ITEMS: + DisableEditItems(message); + break; case B_COPY: EditCopy(message); break; @@ -357,6 +367,18 @@ TerminalWindow::SwitchTerminals(BMessage * message) } while (result != B_OK); } +void +TerminalWindow::EnableEditItems(BMessage * message) +{ + fCopy->SetEnabled(true); +} + +void +TerminalWindow::DisableEditItems(BMessage * message) +{ + fCopy->SetEnabled(false); +} + void TerminalWindow::EditCopy(BMessage * message) { @@ -372,5 +394,6 @@ TerminalWindow::EditPaste(BMessage * message) void TerminalWindow::EditClearAll(BMessage * message) { + fTextView->SelectAll(); fTextView->Clear(); } diff --git a/src/apps/terminal/TerminalWindow.h b/src/apps/terminal/TerminalWindow.h index 6cd9232f3f..6e046a45fd 100644 --- a/src/apps/terminal/TerminalWindow.h +++ b/src/apps/terminal/TerminalWindow.h @@ -32,6 +32,8 @@ private: // message received helpers void StartNewTerminal(BMessage * message); void SwitchTerminals(BMessage * message); + void EnableEditItems(BMessage * message); + void DisableEditItems(BMessage * message); void EditCopy(BMessage * message); void EditPaste(BMessage * message); void EditClearAll(BMessage * message);