diff --git a/DumBer b/DumBer index 7142dde..17f1c0a 100755 Binary files a/DumBer and b/DumBer differ diff --git a/MainWindow.cpp b/MainWindow.cpp index 466b44a..8b265c7 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -3,7 +3,6 @@ * All rights reserved. Distributed under the terms of the MIT license. */ - #include "MainWindow.h" #include @@ -14,7 +13,8 @@ #include #include #include -#include +#include +#include #include @@ -38,37 +38,32 @@ MainWindow::MainWindow() : BWindow(BRect(100, 100, 600, 400), B_TRANSLATE("BeDumb"), B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS | B_QUIT_ON_WINDOW_CLOSE) { - BMenuBar *menuBar = _BuildMenu(); BLayoutBuilder::Group<>(this, B_VERTICAL, 0).Add(menuBar).AddGlue().End(); - _inputField = - new BTextControl("", "What is the matrix ?", new BMessage(kQuestionChanged)); - + _inputField = new BTextControl("", "What is the matrix ?", + new BMessage(kQuestionChanged)); _progress = new BStatusBar("prog"); _progress->SetMaxValue(100); _progress->SetTo(0); _progress->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - - _answerView = new BTextView("answer"); - - BStringView* header = new BStringView("biglabel", "Let's Be Dumber!"); - BFont font; - header->GetFont(&font); - font.SetSize(20); - header->SetFont(&font); + BStringView *header = new BStringView("biglabel", "Let's Be Dumber!"); + BFont font; + header->GetFont(&font); + font.SetSize(20); + header->SetFont(&font); // Info view, only one line high _infoView = new BTextView("info"); - _infoView->SetText("..."); + _infoView->SetText("..."); _infoView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); _infoView->MakeEditable(false); _infoView->MakeSelectable(false); _infoView->SetWordWrap(false); - + float lineHeight = _infoView->LineHeight(0); _infoView->SetExplicitMinSize(BSize(B_SIZE_UNSET, lineHeight)); _infoView->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, lineHeight)); @@ -81,9 +76,20 @@ MainWindow::MainWindow() new BButton("send", B_TRANSLATE("Send"), new BMessage(kSendPrompt), B_WILL_DRAW | B_NAVIGABLE); + _answerView = new BTextView("answer", B_WILL_DRAW | B_FOLLOW_ALL); + _answerView->MakeEditable(false); // Disable editing + _answerView->MakeSelectable(true); // Enable text selection + + //_answerView->SetWordWrap(true); + BScrollView *scrollView = + new BScrollView("scroll_view", _answerView, 0, 0, false, + true); // horizontal and vertical scrollbars + BLayoutBuilder::Group<>(this, B_VERTICAL, 0) - .Add(header) + .AddGlue(0.1) + .Add(header) + .AddGlue(0.1) .AddGroup(B_HORIZONTAL, 0, 1) .Add(_inputField) @@ -92,9 +98,10 @@ MainWindow::MainWindow() .End() .End() + .AddGlue(0.1) + .Add(scrollView) .Add(_progress) .Add(_infoView) - .Add(_answerView) .SetInsets(5, 5, 5, 5) @@ -106,7 +113,7 @@ MainWindow::~MainWindow() {} void MainWindow::MessageReceived(BMessage *message) { switch (message->what) { - + // case kMsgNewFile: { // fSaveMenuItem->SetEnabled(false); // printf("New\n"); @@ -123,9 +130,9 @@ void MainWindow::MessageReceived(BMessage *message) { case kQuestionChanged: { printf("Question Changed\n"); - _progress->SetTo(2); + _progress->SetTo(2); -// sendQuery(); + // sendQuery(); } break; @@ -138,8 +145,8 @@ void MainWindow::MessageReceived(BMessage *message) { case UrlEvent::HostNameResolved: { printf("Host name resolved\n"); - auto name = message->GetString(UrlEventData::HostName); - message->PrintToStream(); + auto name = message->GetString(UrlEventData::HostName); + message->PrintToStream(); _infoView->SetText("Hostname resolve..."); _infoView->SetText(name); @@ -158,34 +165,31 @@ void MainWindow::MessageReceived(BMessage *message) { _progress->SetTo(14); _infoView->SetText("ResponseStarted..."); } break; - + case UrlEvent::HttpRedirect: { printf("HttpRedirect\n"); _progress->SetTo(16); _infoView->SetText("HttpRedirect..."); } break; - - case UrlEvent::RequestCompleted: { - printf("RequestCompleted\n"); - auto identifier = message->GetInt32(UrlEventData::Id, -1); - if (_lastResult->Identity() == identifier) { - // The following call will not block, because we have been notified - // that the request is done. - BHttpBody body = _lastResult->Body(); - if (body.text.has_value()) - _answerView->SetText(body.text.value()); - else - _answerView->SetText("nuthin'"); - } - - _infoView->SetText("Completed"); - _progress->SetMaxValue(100); - _progress->SetTo(100); + printf("RequestCompleted\n"); + auto identifier = message->GetInt32(UrlEventData::Id, -1); + if (_lastResult->Identity() == identifier) { + // The following call will not block, because we have been notified + // that the request is done. + BHttpBody body = _lastResult->Body(); + if (body.text.has_value()) + _answerView->SetText(body.text.value()); + else + _answerView->SetText("nuthin'"); + } - } break; + _infoView->SetText("Completed"); + _progress->SetMaxValue(100); + _progress->SetTo(100); + } break; case UrlEvent::HttpStatus: { @@ -199,49 +203,45 @@ void MainWindow::MessageReceived(BMessage *message) { _infoView->SetText("Some bytes written.."); auto identifier = message->GetInt32(UrlEventData::Id, -1); if (_lastResult->Identity() == identifier) { - off_t numBytes = message->GetInt64(UrlEventData::NumBytes, 0); - off_t totalBytes = message->GetInt64(UrlEventData::TotalBytes, 0); - _progress->SetTo(numBytes); - _progress->SetMaxValue(totalBytes); + off_t numBytes = message->GetInt64(UrlEventData::NumBytes, 0); + off_t totalBytes = message->GetInt64(UrlEventData::TotalBytes, 0); + _progress->SetTo(numBytes); + _progress->SetMaxValue(totalBytes); } } break; case UrlEvent::DownloadProgress: { auto identifier = message->GetInt32(UrlEventData::Id, -1); if (_lastResult->Identity() == identifier) { - off_t nn = message->GetInt64(UrlEventData::NumBytes, 0); - off_t totalBytes = message->GetInt64(UrlEventData::TotalBytes, 0); - _progress->SetTo(nn); - _progress->SetMaxValue(totalBytes); - _infoView->SetText("Download Progress.."); + off_t nn = message->GetInt64(UrlEventData::NumBytes, 0); + off_t totalBytes = message->GetInt64(UrlEventData::TotalBytes, 0); + _progress->SetTo(nn); + _progress->SetMaxValue(totalBytes); + _infoView->SetText("Download Progress.."); } } break; - - default: { - //message->PrintToStream(); - BWindow::MessageReceived(message); // call the parent handler for other messages + // message->PrintToStream(); + BWindow::MessageReceived( + message); // call the parent handler for other messages // _infoView->SetText(message->FindMessage()); break; } - - -}//end switch - -} //end function + } // end switch +} // end function void MainWindow::sendQuery() { - + if (_lastResult) _sharedSession.Cancel(_lastResult->Identity()); - + _progress->SetMaxValue(100); _progress->SetTo(0); - auto url = BUrl("https://www.link-u.com/ip/"); + auto url = BUrl("https://www.lema.org/"); BHttpRequest request = BHttpRequest(url); printf("Sending Prompt to server: %s\n", url.UrlString().String()); @@ -250,17 +250,14 @@ void MainWindow::sendQuery() { if (_lastResult) { printf("Result has identity: %d\n", _lastResult->Identity()); } - - } - BMenuBar *MainWindow::_BuildMenu() { BMenuBar *menuBar = new BMenuBar("menubar"); - BMenu *menu; + BMenu *menu; BMenuItem *item; - + // menu 'File' menu = new BMenu(B_TRANSLATE("File")); @@ -277,17 +274,17 @@ BMenuBar *MainWindow::_BuildMenu() { // menu->AddItem(fSaveMenuItem); // menu->AddSeparatorItem(); - + item = new BMenuItem(B_TRANSLATE("About" B_UTF8_ELLIPSIS), new BMessage(B_ABOUT_REQUESTED)); item->SetTarget(be_app); menu->AddItem(item); - item = new BMenuItem(B_TRANSLATE("Quit"), new BMessage(B_QUIT_REQUESTED), 'Q'); + item = + new BMenuItem(B_TRANSLATE("Quit"), new BMessage(B_QUIT_REQUESTED), 'Q'); menu->AddItem(item); menuBar->AddItem(menu); return menuBar; } - diff --git a/MainWindow.h b/MainWindow.h index 07f09b8..20613eb 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -55,6 +55,7 @@ private: BTextView * _infoView; BTextControl* _inputField; BStatusBar* _progress; + BMenuItem *fSaveMenuItem; };