1dae0a4e0SAdrien Destugues - PulkoMandy /* 2d9e93152SAdrien Destugues * Copyright 2012-2014, Adrien Destugues, pulkomandy@pulkomandy.tk 3dae0a4e0SAdrien Destugues - PulkoMandy * Distributed under the terms of the MIT licence. 4dae0a4e0SAdrien Destugues - PulkoMandy */ 5dae0a4e0SAdrien Destugues - PulkoMandy 6dae0a4e0SAdrien Destugues - PulkoMandy 7dae0a4e0SAdrien Destugues - PulkoMandy #include "SerialWindow.h" 8dae0a4e0SAdrien Destugues - PulkoMandy 904434656SAdrien Destugues - PulkoMandy #include <stdio.h> 1004434656SAdrien Destugues - PulkoMandy 113cfd6956SRene Gollent #include <FilePanel.h> 12dae0a4e0SAdrien Destugues - PulkoMandy #include <GroupLayout.h> 13dae0a4e0SAdrien Destugues - PulkoMandy #include <Menu.h> 14dae0a4e0SAdrien Destugues - PulkoMandy #include <MenuBar.h> 15dae0a4e0SAdrien Destugues - PulkoMandy #include <MenuItem.h> 16b59ed154SAdrien Destugues #include <ScrollView.h> 17dae0a4e0SAdrien Destugues - PulkoMandy #include <SerialPort.h> 18dae0a4e0SAdrien Destugues - PulkoMandy 19f441fd03SAdrien Destugues - PulkoMandy #include "SerialApp.h" 20dae0a4e0SAdrien Destugues - PulkoMandy #include "TermView.h" 21dae0a4e0SAdrien Destugues - PulkoMandy 22dae0a4e0SAdrien Destugues - PulkoMandy 23*e0bf43c1SAlexander von Gluck IV const int SerialWindow::kBaudrates[] = { 50, 75, 110, 134, 150, 200, 300, 600, 24*e0bf43c1SAlexander von Gluck IV 1200, 1800, 2400, 4800, 9600, 19200, 31250, 38400, 57600, 115200, 230400 25ccc6b9beSAdrien Destugues }; 26ccc6b9beSAdrien Destugues 27ccc6b9beSAdrien Destugues 28e2367275SAdrien Destugues // The values for these constants are not in the expected order, so we have to 29e2367275SAdrien Destugues // rely on this lookup table if we want to keep the menu items sorted. 30e2367275SAdrien Destugues const int SerialWindow::kBaudrateConstants[] = { B_50_BPS, B_75_BPS, B_110_BPS, 31e2367275SAdrien Destugues B_134_BPS, B_150_BPS, B_200_BPS, B_300_BPS, B_600_BPS, B_1200_BPS, 32e2367275SAdrien Destugues B_1800_BPS, B_2400_BPS, B_4800_BPS, B_9600_BPS, B_19200_BPS, B_31250_BPS, 33e2367275SAdrien Destugues B_38400_BPS, B_57600_BPS, B_115200_BPS, B_230400_BPS 34e2367275SAdrien Destugues }; 35e2367275SAdrien Destugues 36e2367275SAdrien Destugues 37ccc6b9beSAdrien Destugues const char* SerialWindow::kWindowTitle = "SerialConnect"; 38ccc6b9beSAdrien Destugues 39ccc6b9beSAdrien Destugues 40dae0a4e0SAdrien Destugues - PulkoMandy SerialWindow::SerialWindow() 41469e6cd2SAdrien Destugues - PulkoMandy : BWindow(BRect(100, 100, 400, 400), SerialWindow::kWindowTitle, 42f441fd03SAdrien Destugues - PulkoMandy B_DOCUMENT_WINDOW, B_QUIT_ON_WINDOW_CLOSE | B_AUTO_UPDATE_SIZE_LIMITS) 43469e6cd2SAdrien Destugues - PulkoMandy , fLogFilePanel(NULL) 44dae0a4e0SAdrien Destugues - PulkoMandy { 45b59ed154SAdrien Destugues BMenuBar* menuBar = new BMenuBar(Bounds(), "menuBar"); 46b59ed154SAdrien Destugues menuBar->ResizeToPreferred(); 47dae0a4e0SAdrien Destugues - PulkoMandy 48b59ed154SAdrien Destugues BRect r = Bounds(); 49b59ed154SAdrien Destugues r.top = menuBar->Bounds().bottom + 1; 50b59ed154SAdrien Destugues r.right -= B_V_SCROLL_BAR_WIDTH; 51b59ed154SAdrien Destugues fTermView = new TermView(r); 52b59ed154SAdrien Destugues fTermView->ResizeToPreferred(); 53b59ed154SAdrien Destugues 54b59ed154SAdrien Destugues r = fTermView->Frame(); 55b59ed154SAdrien Destugues r.left = r.right + 1; 56b59ed154SAdrien Destugues r.right = r.left + B_V_SCROLL_BAR_WIDTH; 57b59ed154SAdrien Destugues r.top -= 1; 58b59ed154SAdrien Destugues r.bottom -= B_H_SCROLL_BAR_HEIGHT - 1; 59b59ed154SAdrien Destugues BScrollBar* scrollBar = new BScrollBar(r, "scrollbar", NULL, 0, 0, 60b59ed154SAdrien Destugues B_VERTICAL); 61b59ed154SAdrien Destugues 62b59ed154SAdrien Destugues scrollBar->SetTarget(fTermView); 63b59ed154SAdrien Destugues 64b59ed154SAdrien Destugues ResizeTo(r.right - 1, r.bottom + B_H_SCROLL_BAR_HEIGHT - 1); 65dae0a4e0SAdrien Destugues - PulkoMandy 66dae0a4e0SAdrien Destugues - PulkoMandy AddChild(menuBar); 67f441fd03SAdrien Destugues - PulkoMandy AddChild(fTermView); 68b59ed154SAdrien Destugues AddChild(scrollBar); 69dae0a4e0SAdrien Destugues - PulkoMandy 7004434656SAdrien Destugues - PulkoMandy fConnectionMenu = new BMenu("Connection"); 71469e6cd2SAdrien Destugues - PulkoMandy BMenu* fileMenu = new BMenu("File"); 72dae0a4e0SAdrien Destugues - PulkoMandy BMenu* settingsMenu = new BMenu("Settings"); 73dae0a4e0SAdrien Destugues - PulkoMandy 74469e6cd2SAdrien Destugues - PulkoMandy fConnectionMenu->SetRadioMode(true); 75469e6cd2SAdrien Destugues - PulkoMandy 7604434656SAdrien Destugues - PulkoMandy menuBar->AddItem(fConnectionMenu); 77469e6cd2SAdrien Destugues - PulkoMandy menuBar->AddItem(fileMenu); 78dae0a4e0SAdrien Destugues - PulkoMandy menuBar->AddItem(settingsMenu); 79dae0a4e0SAdrien Destugues - PulkoMandy 8004434656SAdrien Destugues - PulkoMandy // TODO edit menu - what's in it ? 81469e6cd2SAdrien Destugues - PulkoMandy //BMenu* editMenu = new BMenu("Edit"); 82469e6cd2SAdrien Destugues - PulkoMandy //menuBar->AddItem(editMenu); 83469e6cd2SAdrien Destugues - PulkoMandy 84469e6cd2SAdrien Destugues - PulkoMandy BMenuItem* logFile = new BMenuItem("Log to file" B_UTF8_ELLIPSIS, 85469e6cd2SAdrien Destugues - PulkoMandy new BMessage(kMsgLogfile)); 86469e6cd2SAdrien Destugues - PulkoMandy fileMenu->AddItem(logFile); 87ccc6b9beSAdrien Destugues #if 0 88ccc6b9beSAdrien Destugues // TODO implement these 89469e6cd2SAdrien Destugues - PulkoMandy BMenuItem* xmodemSend = new BMenuItem("X/Y/ZModem send" B_UTF8_ELLIPSIS, 90469e6cd2SAdrien Destugues - PulkoMandy NULL); 91469e6cd2SAdrien Destugues - PulkoMandy fileMenu->AddItem(xmodemSend); 92469e6cd2SAdrien Destugues - PulkoMandy BMenuItem* xmodemReceive = new BMenuItem( 93469e6cd2SAdrien Destugues - PulkoMandy "X/Y/Zmodem receive" B_UTF8_ELLIPSIS, NULL); 94469e6cd2SAdrien Destugues - PulkoMandy fileMenu->AddItem(xmodemReceive); 95ccc6b9beSAdrien Destugues #endif 96dae0a4e0SAdrien Destugues - PulkoMandy 9704434656SAdrien Destugues - PulkoMandy // Configuring all this by menus may be a bit unhandy. Make a setting 9804434656SAdrien Destugues - PulkoMandy // window instead ? 99ccc6b9beSAdrien Destugues fBaudrateMenu = new BMenu("Baud rate"); 100ccc6b9beSAdrien Destugues fBaudrateMenu->SetRadioMode(true); 101ccc6b9beSAdrien Destugues settingsMenu->AddItem(fBaudrateMenu); 10204434656SAdrien Destugues - PulkoMandy 103ccc6b9beSAdrien Destugues fParityMenu = new BMenu("Parity"); 104ccc6b9beSAdrien Destugues fParityMenu->SetRadioMode(true); 105ccc6b9beSAdrien Destugues settingsMenu->AddItem(fParityMenu); 10604434656SAdrien Destugues - PulkoMandy 107ccc6b9beSAdrien Destugues fStopbitsMenu = new BMenu("Stop bits"); 108ccc6b9beSAdrien Destugues fStopbitsMenu->SetRadioMode(true); 109ccc6b9beSAdrien Destugues settingsMenu->AddItem(fStopbitsMenu); 11004434656SAdrien Destugues - PulkoMandy 111ccc6b9beSAdrien Destugues fFlowcontrolMenu = new BMenu("Flow control"); 112ccc6b9beSAdrien Destugues fFlowcontrolMenu->SetRadioMode(true); 113ccc6b9beSAdrien Destugues settingsMenu->AddItem(fFlowcontrolMenu); 11404434656SAdrien Destugues - PulkoMandy 115ccc6b9beSAdrien Destugues fDatabitsMenu = new BMenu("Data bits"); 116ccc6b9beSAdrien Destugues fDatabitsMenu->SetRadioMode(true); 117ccc6b9beSAdrien Destugues settingsMenu->AddItem(fDatabitsMenu); 11804434656SAdrien Destugues - PulkoMandy 11904434656SAdrien Destugues - PulkoMandy 12004434656SAdrien Destugues - PulkoMandy BMessage* message = new BMessage(kMsgSettings); 12104434656SAdrien Destugues - PulkoMandy message->AddInt32("parity", B_NO_PARITY); 12204434656SAdrien Destugues - PulkoMandy BMenuItem* parityNone = new BMenuItem("None", message); 12304434656SAdrien Destugues - PulkoMandy 12404434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 12504434656SAdrien Destugues - PulkoMandy message->AddInt32("parity", B_ODD_PARITY); 12604434656SAdrien Destugues - PulkoMandy BMenuItem* parityOdd = new BMenuItem("Odd", message); 12704434656SAdrien Destugues - PulkoMandy 12804434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 12904434656SAdrien Destugues - PulkoMandy message->AddInt32("parity", B_EVEN_PARITY); 13004434656SAdrien Destugues - PulkoMandy BMenuItem* parityEven = new BMenuItem("Even", message); 13104434656SAdrien Destugues - PulkoMandy 132ccc6b9beSAdrien Destugues fParityMenu->AddItem(parityNone); 133ccc6b9beSAdrien Destugues fParityMenu->AddItem(parityOdd); 134ccc6b9beSAdrien Destugues fParityMenu->AddItem(parityEven); 135ccc6b9beSAdrien Destugues fParityMenu->SetTargetForItems(be_app); 13604434656SAdrien Destugues - PulkoMandy 13704434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 13804434656SAdrien Destugues - PulkoMandy message->AddInt32("databits", B_DATA_BITS_7); 13904434656SAdrien Destugues - PulkoMandy BMenuItem* data7 = new BMenuItem("7", message); 14004434656SAdrien Destugues - PulkoMandy 14104434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 14204434656SAdrien Destugues - PulkoMandy message->AddInt32("databits", B_DATA_BITS_8); 14304434656SAdrien Destugues - PulkoMandy BMenuItem* data8 = new BMenuItem("8", message); 14404434656SAdrien Destugues - PulkoMandy 145ccc6b9beSAdrien Destugues fDatabitsMenu->AddItem(data7); 146ccc6b9beSAdrien Destugues fDatabitsMenu->AddItem(data8); 147ccc6b9beSAdrien Destugues fDatabitsMenu->SetTargetForItems(be_app); 14804434656SAdrien Destugues - PulkoMandy 14904434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 15004434656SAdrien Destugues - PulkoMandy message->AddInt32("stopbits", B_STOP_BITS_1); 151ccc6b9beSAdrien Destugues BMenuItem* stop1 = new BMenuItem("1", message); 15204434656SAdrien Destugues - PulkoMandy 15304434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 15404434656SAdrien Destugues - PulkoMandy message->AddInt32("stopbits", B_STOP_BITS_2); 155ccc6b9beSAdrien Destugues BMenuItem* stop2 = new BMenuItem("2", message); 15604434656SAdrien Destugues - PulkoMandy 157ccc6b9beSAdrien Destugues fStopbitsMenu->AddItem(stop1); 158ccc6b9beSAdrien Destugues fStopbitsMenu->AddItem(stop2); 159ccc6b9beSAdrien Destugues fStopbitsMenu->SetTargetForItems(be_app); 16004434656SAdrien Destugues - PulkoMandy 16104434656SAdrien Destugues - PulkoMandy // Loop backwards to add fastest rates at top of menu 162bc026197SAlexander von Gluck IV for (int i = sizeof(kBaudrates) / sizeof(kBaudrates[0]); --i >= 0;) 16304434656SAdrien Destugues - PulkoMandy { 16404434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 165e2367275SAdrien Destugues message->AddInt32("baudrate", kBaudrateConstants[i]); 16604434656SAdrien Destugues - PulkoMandy 16704434656SAdrien Destugues - PulkoMandy char buffer[7]; 168ccc6b9beSAdrien Destugues sprintf(buffer, "%d", kBaudrates[i]); 16904434656SAdrien Destugues - PulkoMandy BMenuItem* item = new BMenuItem(buffer, message); 17004434656SAdrien Destugues - PulkoMandy 171ccc6b9beSAdrien Destugues fBaudrateMenu->AddItem(item); 17204434656SAdrien Destugues - PulkoMandy } 17304434656SAdrien Destugues - PulkoMandy 174ccc6b9beSAdrien Destugues fBaudrateMenu->SetTargetForItems(be_app); 17504434656SAdrien Destugues - PulkoMandy 17604434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 17704434656SAdrien Destugues - PulkoMandy message->AddInt32("flowcontrol", B_HARDWARE_CONTROL); 17804434656SAdrien Destugues - PulkoMandy BMenuItem* hardware = new BMenuItem("Hardware", message); 17904434656SAdrien Destugues - PulkoMandy 18004434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 18104434656SAdrien Destugues - PulkoMandy message->AddInt32("flowcontrol", B_SOFTWARE_CONTROL); 18204434656SAdrien Destugues - PulkoMandy BMenuItem* software = new BMenuItem("Software", message); 18304434656SAdrien Destugues - PulkoMandy 18404434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 18504434656SAdrien Destugues - PulkoMandy message->AddInt32("flowcontrol", B_HARDWARE_CONTROL | B_SOFTWARE_CONTROL); 18604434656SAdrien Destugues - PulkoMandy BMenuItem* both = new BMenuItem("Both", message); 18704434656SAdrien Destugues - PulkoMandy 18804434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 18904434656SAdrien Destugues - PulkoMandy message->AddInt32("flowcontrol", 0); 19004434656SAdrien Destugues - PulkoMandy BMenuItem* noFlow = new BMenuItem("None", message); 19104434656SAdrien Destugues - PulkoMandy 192ccc6b9beSAdrien Destugues fFlowcontrolMenu->AddItem(hardware); 193ccc6b9beSAdrien Destugues fFlowcontrolMenu->AddItem(software); 194ccc6b9beSAdrien Destugues fFlowcontrolMenu->AddItem(both); 195ccc6b9beSAdrien Destugues fFlowcontrolMenu->AddItem(noFlow); 196ccc6b9beSAdrien Destugues fFlowcontrolMenu->SetTargetForItems(be_app); 19704434656SAdrien Destugues - PulkoMandy 19804434656SAdrien Destugues - PulkoMandy CenterOnScreen(); 19904434656SAdrien Destugues - PulkoMandy } 20004434656SAdrien Destugues - PulkoMandy 201469e6cd2SAdrien Destugues - PulkoMandy 202469e6cd2SAdrien Destugues - PulkoMandy SerialWindow::~SerialWindow() 203469e6cd2SAdrien Destugues - PulkoMandy { 204469e6cd2SAdrien Destugues - PulkoMandy delete fLogFilePanel; 205469e6cd2SAdrien Destugues - PulkoMandy } 206469e6cd2SAdrien Destugues - PulkoMandy 20704434656SAdrien Destugues - PulkoMandy 20804434656SAdrien Destugues - PulkoMandy void SerialWindow::MenusBeginning() 20904434656SAdrien Destugues - PulkoMandy { 21004434656SAdrien Destugues - PulkoMandy // remove all items from the menu 211c19e7bb3SUrias McCullough fConnectionMenu->RemoveItems(0, fConnectionMenu->CountItems(), true); 21204434656SAdrien Destugues - PulkoMandy 21304434656SAdrien Destugues - PulkoMandy // fill it with the (updated) serial port list 214dae0a4e0SAdrien Destugues - PulkoMandy BSerialPort serialPort; 215dae0a4e0SAdrien Destugues - PulkoMandy int deviceCount = serialPort.CountDevices(); 216ccc6b9beSAdrien Destugues bool connected = false; 217dae0a4e0SAdrien Destugues - PulkoMandy 218dae0a4e0SAdrien Destugues - PulkoMandy for (int i = 0; i < deviceCount; i++) 219dae0a4e0SAdrien Destugues - PulkoMandy { 220dae0a4e0SAdrien Destugues - PulkoMandy char buffer[256]; 221dae0a4e0SAdrien Destugues - PulkoMandy serialPort.GetDeviceName(i, buffer, 256); 222dae0a4e0SAdrien Destugues - PulkoMandy 223f441fd03SAdrien Destugues - PulkoMandy BMessage* message = new BMessage(kMsgOpenPort); 224f441fd03SAdrien Destugues - PulkoMandy message->AddString("port name", buffer); 225f441fd03SAdrien Destugues - PulkoMandy BMenuItem* portItem = new BMenuItem(buffer, message); 226a2021beeSAdrien Destugues - PulkoMandy portItem->SetTarget(be_app); 22704434656SAdrien Destugues - PulkoMandy 228ccc6b9beSAdrien Destugues const BString& connectedPort = ((SerialApp*)be_app)->GetPort(); 229ccc6b9beSAdrien Destugues 230ccc6b9beSAdrien Destugues if (connectedPort == buffer) { 231ccc6b9beSAdrien Destugues connected = true; 232ccc6b9beSAdrien Destugues portItem->SetMarked(true); 233ccc6b9beSAdrien Destugues } 234ccc6b9beSAdrien Destugues 23504434656SAdrien Destugues - PulkoMandy fConnectionMenu->AddItem(portItem); 236dae0a4e0SAdrien Destugues - PulkoMandy } 237dae0a4e0SAdrien Destugues - PulkoMandy 23804434656SAdrien Destugues - PulkoMandy if (deviceCount > 0) { 23904434656SAdrien Destugues - PulkoMandy fConnectionMenu->AddSeparatorItem(); 240dae0a4e0SAdrien Destugues - PulkoMandy 24104434656SAdrien Destugues - PulkoMandy BMenuItem* disconnect = new BMenuItem("Disconnect", 24204434656SAdrien Destugues - PulkoMandy new BMessage(kMsgOpenPort), 'Z', B_OPTION_KEY); 243ccc6b9beSAdrien Destugues if (!connected) 244ccc6b9beSAdrien Destugues disconnect->SetEnabled(false); 245d9e93152SAdrien Destugues disconnect->SetTarget(be_app); 24604434656SAdrien Destugues - PulkoMandy fConnectionMenu->AddItem(disconnect); 24704434656SAdrien Destugues - PulkoMandy } else { 24804434656SAdrien Destugues - PulkoMandy BMenuItem* noDevices = new BMenuItem("<no serial port available>", NULL); 24904434656SAdrien Destugues - PulkoMandy noDevices->SetEnabled(false); 25004434656SAdrien Destugues - PulkoMandy fConnectionMenu->AddItem(noDevices); 251dae0a4e0SAdrien Destugues - PulkoMandy } 252dae0a4e0SAdrien Destugues - PulkoMandy } 253dae0a4e0SAdrien Destugues - PulkoMandy 254b59ed154SAdrien Destugues 255f441fd03SAdrien Destugues - PulkoMandy void SerialWindow::MessageReceived(BMessage* message) 256f441fd03SAdrien Destugues - PulkoMandy { 257f441fd03SAdrien Destugues - PulkoMandy switch (message->what) 258f441fd03SAdrien Destugues - PulkoMandy { 259f441fd03SAdrien Destugues - PulkoMandy case kMsgDataRead: 260f441fd03SAdrien Destugues - PulkoMandy { 261f441fd03SAdrien Destugues - PulkoMandy const char* bytes; 262f441fd03SAdrien Destugues - PulkoMandy ssize_t length; 263492ac416SAdrien Destugues if (message->FindData("data", B_RAW_TYPE, (const void**)&bytes, 264492ac416SAdrien Destugues &length) == B_OK) 265f441fd03SAdrien Destugues - PulkoMandy fTermView->PushBytes(bytes, length); 266d9e93152SAdrien Destugues return; 267f441fd03SAdrien Destugues - PulkoMandy } 268469e6cd2SAdrien Destugues - PulkoMandy case kMsgLogfile: 269469e6cd2SAdrien Destugues - PulkoMandy { 270469e6cd2SAdrien Destugues - PulkoMandy // Let's lazy init the file panel 271469e6cd2SAdrien Destugues - PulkoMandy if (fLogFilePanel == NULL) { 272469e6cd2SAdrien Destugues - PulkoMandy fLogFilePanel = new BFilePanel(B_SAVE_PANEL, &be_app_messenger, 273469e6cd2SAdrien Destugues - PulkoMandy NULL, B_FILE_NODE, false); 274469e6cd2SAdrien Destugues - PulkoMandy fLogFilePanel->SetMessage(message); 275469e6cd2SAdrien Destugues - PulkoMandy } 276469e6cd2SAdrien Destugues - PulkoMandy fLogFilePanel->Show(); 277d9e93152SAdrien Destugues return; 278469e6cd2SAdrien Destugues - PulkoMandy } 279ccc6b9beSAdrien Destugues case kMsgSettings: 280ccc6b9beSAdrien Destugues { 281ccc6b9beSAdrien Destugues int32 baudrate; 282ccc6b9beSAdrien Destugues stop_bits stopBits; 283ccc6b9beSAdrien Destugues data_bits dataBits; 284ccc6b9beSAdrien Destugues parity_mode parity; 285ccc6b9beSAdrien Destugues uint32 flowcontrol; 286ccc6b9beSAdrien Destugues 287b59ed154SAdrien Destugues if (message->FindInt32("databits", (int32*)&dataBits) == B_OK) { 288b59ed154SAdrien Destugues for (int i = 0; i < fDatabitsMenu->CountItems(); i++) { 289ccc6b9beSAdrien Destugues BMenuItem* item = fDatabitsMenu->ItemAt(i); 290ccc6b9beSAdrien Destugues int32 code; 291ccc6b9beSAdrien Destugues item->Message()->FindInt32("databits", &code); 292ccc6b9beSAdrien Destugues 293ccc6b9beSAdrien Destugues if (code == dataBits) 294ccc6b9beSAdrien Destugues item->SetMarked(true); 295ccc6b9beSAdrien Destugues } 296ccc6b9beSAdrien Destugues } 297ccc6b9beSAdrien Destugues 298b59ed154SAdrien Destugues if (message->FindInt32("stopbits", (int32*)&stopBits) == B_OK) { 299b59ed154SAdrien Destugues for (int i = 0; i < fStopbitsMenu->CountItems(); i++) { 300ccc6b9beSAdrien Destugues BMenuItem* item = fStopbitsMenu->ItemAt(i); 301ccc6b9beSAdrien Destugues int32 code; 302ccc6b9beSAdrien Destugues item->Message()->FindInt32("stopbits", &code); 303ccc6b9beSAdrien Destugues 304ccc6b9beSAdrien Destugues if (code == stopBits) 305ccc6b9beSAdrien Destugues item->SetMarked(true); 306ccc6b9beSAdrien Destugues } 307ccc6b9beSAdrien Destugues } 308ccc6b9beSAdrien Destugues 309ccc6b9beSAdrien Destugues if (message->FindInt32("parity", (int32*)&parity) == B_OK) 310ccc6b9beSAdrien Destugues { 311b59ed154SAdrien Destugues for (int i = 0; i < fParityMenu->CountItems(); i++) { 312ccc6b9beSAdrien Destugues BMenuItem* item = fParityMenu->ItemAt(i); 313ccc6b9beSAdrien Destugues int32 code; 314ccc6b9beSAdrien Destugues item->Message()->FindInt32("parity", &code); 315ccc6b9beSAdrien Destugues 316ccc6b9beSAdrien Destugues if (code == parity) 317ccc6b9beSAdrien Destugues item->SetMarked(true); 318ccc6b9beSAdrien Destugues } 319ccc6b9beSAdrien Destugues } 320ccc6b9beSAdrien Destugues 321b59ed154SAdrien Destugues if (message->FindInt32("flowcontrol", (int32*)&flowcontrol) 322b59ed154SAdrien Destugues == B_OK) { 323b59ed154SAdrien Destugues for (int i = 0; i < fFlowcontrolMenu->CountItems(); i++) { 324ccc6b9beSAdrien Destugues BMenuItem* item = fFlowcontrolMenu->ItemAt(i); 325ccc6b9beSAdrien Destugues int32 code; 326ccc6b9beSAdrien Destugues item->Message()->FindInt32("flowcontrol", &code); 327ccc6b9beSAdrien Destugues 328ccc6b9beSAdrien Destugues if (code == (int32)flowcontrol) 329ccc6b9beSAdrien Destugues item->SetMarked(true); 330ccc6b9beSAdrien Destugues } 331ccc6b9beSAdrien Destugues } 332ccc6b9beSAdrien Destugues 333b59ed154SAdrien Destugues if (message->FindInt32("baudrate", &baudrate) == B_OK) { 334b59ed154SAdrien Destugues for (int i = 0; i < fBaudrateMenu->CountItems(); i++) { 335ccc6b9beSAdrien Destugues BMenuItem* item = fBaudrateMenu->ItemAt(i); 336ccc6b9beSAdrien Destugues int32 code; 337ccc6b9beSAdrien Destugues item->Message()->FindInt32("baudrate", &code); 338ccc6b9beSAdrien Destugues 339e2367275SAdrien Destugues if (baudrate == code) 340ccc6b9beSAdrien Destugues item->SetMarked(true); 341ccc6b9beSAdrien Destugues } 342ccc6b9beSAdrien Destugues } 343ccc6b9beSAdrien Destugues 344d9e93152SAdrien Destugues return; 345ccc6b9beSAdrien Destugues } 346d9e93152SAdrien Destugues } 347d9e93152SAdrien Destugues 348f441fd03SAdrien Destugues - PulkoMandy BWindow::MessageReceived(message); 349f441fd03SAdrien Destugues - PulkoMandy } 350