fixed some initializations and edit menu initialization

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4269 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
shatty
2003-08-10 12:47:05 +00:00
parent 62e7938594
commit d85db6a722
4 changed files with 44 additions and 12 deletions
+12 -7
View File
@@ -2,19 +2,25 @@
#include <Messenger.h> #include <Messenger.h>
#include <Rect.h> #include <Rect.h>
#include "TerminalTextView.h" #include <TerminalTextView.h>
#include "Constants.h" #include <Constants.h>
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, : 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; fHandler = handler;
fMessenger = new BMessenger(handler); fMessenger = new BMessenger(handler);
SetWordWrap(false); SetWordWrap(false);
} }
TerminalTextView::~TerminalTextView(){ TerminalTextView::~TerminalTextView()
{
delete fMessenger;
} }
void void
@@ -31,12 +37,11 @@ TerminalTextView::Select(int32 start, int32 finish)
void void
TerminalTextView::FrameResized(float width, float height) TerminalTextView::FrameResized(float width, float height)
{ {
BRect oldText = TextRect();
BTextView::FrameResized(width, height); BTextView::FrameResized(width, height);
BRect textRect; BRect textRect;
textRect = Bounds(); textRect = Bounds();
textRect.OffsetTo(B_ORIGIN);
textRect.InsetBy(TEXT_INSET,TEXT_INSET); textRect.InsetBy(TEXT_INSET,TEXT_INSET);
SetTextRect(textRect); SetTextRect(textRect);
} }
+3 -1
View File
@@ -5,7 +5,9 @@
class TerminalTextView : public BTextView { class TerminalTextView : public BTextView {
public: public:
TerminalTextView(BRect viewframe, BRect textframe, BHandler *handler); TerminalTextView(BRect viewframe, BRect textframe,
const BFont * initialFont, const rgb_color * initialColor,
BHandler *handler);
~TerminalTextView(); ~TerminalTextView();
virtual void Select(int32 start, int32 finish); virtual void Select(int32 start, int32 finish);
+26 -3
View File
@@ -76,16 +76,20 @@ TerminalWindow::InitWindow(int32 id, entry_ref * settingsRef)
viewFrame = Bounds(); viewFrame = Bounds();
viewFrame.top = fMenuBar->Bounds().Height()+1; viewFrame.top = fMenuBar->Bounds().Height()+1;
viewFrame.right -= B_V_SCROLL_BAR_WIDTH;
viewFrame.left = 0; viewFrame.left = 0;
textBounds = viewFrame; textBounds = viewFrame;
textBounds.OffsetTo(B_ORIGIN); textBounds.OffsetTo(B_ORIGIN);
textBounds.InsetBy(TEXT_INSET, TEXT_INSET); 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); 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); AddChild(fScrollView);
fTextView->MakeFocus(true); fTextView->MakeFocus(true);
@@ -110,6 +114,7 @@ TerminalWindow::InitWindow(int32 id, entry_ref * settingsRef)
fCopy = new BMenuItem("Copy", new BMessage(B_COPY), 'C'); fCopy = new BMenuItem("Copy", new BMessage(B_COPY), 'C');
fEdit->AddItem(fCopy); fEdit->AddItem(fCopy);
fCopy->SetTarget(fTextView); fCopy->SetTarget(fTextView);
fCopy->SetEnabled(false);
fPaste = new BMenuItem("Paste", new BMessage(B_PASTE), 'V'); fPaste = new BMenuItem("Paste", new BMessage(B_PASTE), 'V');
fEdit->AddItem(fPaste); 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'); fClearAll = new BMenuItem("Clear All", new BMessage(EDIT_CLEAR_ALL), 'L');
fEdit->AddItem(fClearAll); fEdit->AddItem(fClearAll);
fClearAll->SetTarget(fTextView);
fEdit->AddSeparatorItem(); fEdit->AddSeparatorItem();
@@ -248,6 +252,12 @@ TerminalWindow::MessageReceived(BMessage *message)
case TERMINAL_SWITCH_TERMINAL: case TERMINAL_SWITCH_TERMINAL:
SwitchTerminals(message); SwitchTerminals(message);
break; break;
case ENABLE_ITEMS:
EnableEditItems(message);
break;
case DISABLE_ITEMS:
DisableEditItems(message);
break;
case B_COPY: case B_COPY:
EditCopy(message); EditCopy(message);
break; break;
@@ -357,6 +367,18 @@ TerminalWindow::SwitchTerminals(BMessage * message)
} while (result != B_OK); } while (result != B_OK);
} }
void
TerminalWindow::EnableEditItems(BMessage * message)
{
fCopy->SetEnabled(true);
}
void
TerminalWindow::DisableEditItems(BMessage * message)
{
fCopy->SetEnabled(false);
}
void void
TerminalWindow::EditCopy(BMessage * message) TerminalWindow::EditCopy(BMessage * message)
{ {
@@ -372,5 +394,6 @@ TerminalWindow::EditPaste(BMessage * message)
void void
TerminalWindow::EditClearAll(BMessage * message) TerminalWindow::EditClearAll(BMessage * message)
{ {
fTextView->SelectAll();
fTextView->Clear(); fTextView->Clear();
} }
+2
View File
@@ -32,6 +32,8 @@ private:
// message received helpers // message received helpers
void StartNewTerminal(BMessage * message); void StartNewTerminal(BMessage * message);
void SwitchTerminals(BMessage * message); void SwitchTerminals(BMessage * message);
void EnableEditItems(BMessage * message);
void DisableEditItems(BMessage * message);
void EditCopy(BMessage * message); void EditCopy(BMessage * message);
void EditPaste(BMessage * message); void EditPaste(BMessage * message);
void EditClearAll(BMessage * message); void EditClearAll(BMessage * message);