diff --git a/src/apps/stylededit/Constants.h b/src/apps/stylededit/Constants.h index 10da9b0b62..04f8b7a924 100644 --- a/src/apps/stylededit/Constants.h +++ b/src/apps/stylededit/Constants.h @@ -75,5 +75,8 @@ const uint32 OPEN_AS_ENCODING = 'FPoe'; const uint32 SAVE_AS_ENCODING = 'FPse'; const uint32 SAVE_THEN_QUIT = 'FPsq'; +// Update Line Info +const uint32 UPDATE_LINE = 'UPln'; + #endif // CONSTANTS_H diff --git a/src/apps/stylededit/StyledEditView.cpp b/src/apps/stylededit/StyledEditView.cpp index 2642af756d..b2080565fe 100644 --- a/src/apps/stylededit/StyledEditView.cpp +++ b/src/apps/stylededit/StyledEditView.cpp @@ -49,8 +49,8 @@ void StyledEditView::Select(int32 start, int32 finish) { fMessenger->SendMessage(start == finish ? DISABLE_ITEMS : ENABLE_ITEMS); - - BTextView::Select(start, finish); + fMessenger->SendMessage(UPDATE_LINE); + BTextView::Select(start, finish); } @@ -169,6 +169,7 @@ StyledEditView::DeleteText(int32 start, int32 finish) fMessenger-> SendMessage(TEXT_CHANGED); BTextView::DeleteText(start, finish); + fMessenger->SendMessage(UPDATE_LINE); } @@ -179,7 +180,8 @@ StyledEditView::InsertText(const char *text, int32 length, int32 offset, if (!fSuppressChanges) fMessenger->SendMessage(TEXT_CHANGED); - BTextView::InsertText(text, length, offset, runs); + BTextView::InsertText(text, length, offset, runs); + fMessenger->SendMessage(UPDATE_LINE); } diff --git a/src/apps/stylededit/StyledEditWindow.cpp b/src/apps/stylededit/StyledEditWindow.cpp index b01b0d9f2e..e4d7eb75e4 100644 --- a/src/apps/stylededit/StyledEditWindow.cpp +++ b/src/apps/stylededit/StyledEditWindow.cpp @@ -31,13 +31,14 @@ #include #include #include +#include #include #include #include - using namespace BPrivate; +const float kLineViewWidth = 30.0; StyledEditWindow::StyledEditWindow(BRect frame, int32 id, uint32 encoding) : BWindow(frame, "untitled", B_DOCUMENT_WINDOW, B_ASYNCHRONOUS_CONTROLS) @@ -118,9 +119,17 @@ StyledEditWindow::InitWindow(uint32 encoding) true, true, B_PLAIN_BORDER); AddChild(fScrollView); fTextView->MakeFocus(true); - + + BScrollBar* HScrollBar = fScrollView->ScrollBar(B_HORIZONTAL); + HScrollBar->MoveBy(kLineViewWidth + 1, 0); + HScrollBar->ResizeBy((-1 * kLineViewWidth) - 1, 0); + + fStringView = new BStringView(BRect(0,0,kLineViewWidth,B_H_SCROLL_BAR_HEIGHT), "stringview", "1", B_FOLLOW_LEFT | B_FOLLOW_BOTTOM); + fStringView->SetAlignment(B_ALIGN_CENTER); + fScrollView->AddChild(fStringView); + fStringView->MoveTo(0.0, HScrollBar->Frame().top); + // Add "File"-menu: - BMenu* menu = new BMenu("File"); fMenuBar->AddItem(menu); @@ -533,6 +542,11 @@ StyledEditWindow::MessageReceived(BMessage *message) fCopyItem->SetEnabled(false); fClearItem->SetEnabled(false); break; + case UPDATE_LINE: + char buf[20]; + sprintf(buf, "%ld", fTextView->CurrentLine() + 1); + fStringView->SetText(buf); + break; case TEXT_CHANGED: if (fUndoFlag) { if (fUndoCleans) { diff --git a/src/apps/stylededit/StyledEditWindow.h b/src/apps/stylededit/StyledEditWindow.h index aceb10c312..5feed358d7 100644 --- a/src/apps/stylededit/StyledEditWindow.h +++ b/src/apps/stylededit/StyledEditWindow.h @@ -15,7 +15,6 @@ #include #include - struct entry_ref; class BMenu; @@ -24,6 +23,7 @@ class BMenuBar; class BMenuItem; class BFilePanel; class BScrollView; +class BStringView; class StyledEditView; @@ -116,6 +116,7 @@ class StyledEditWindow : public BWindow { StyledEditView *fTextView; BScrollView *fScrollView; + BStringView *fStringView; BFilePanel *fSavePanel; BMenu *fSavePanelEncodingMenu;