1dae0a4e0SAdrien Destugues - PulkoMandy /* 2dae0a4e0SAdrien Destugues - PulkoMandy * Copyright 2012, Adrien Destugues, pulkomandy@gmail.com 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 11469e6cd2SAdrien Destugues - PulkoMandy #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> 16dae0a4e0SAdrien Destugues - PulkoMandy #include <SerialPort.h> 17dae0a4e0SAdrien Destugues - PulkoMandy 18f441fd03SAdrien Destugues - PulkoMandy #include "SerialApp.h" 19dae0a4e0SAdrien Destugues - PulkoMandy #include "TermView.h" 20dae0a4e0SAdrien Destugues - PulkoMandy 21dae0a4e0SAdrien Destugues - PulkoMandy 22*ccc6b9beSAdrien Destugues const int SerialWindow::kBaudrates[] = { 50, 75, 110, 134, 150, 200, 300, 600, 23*ccc6b9beSAdrien Destugues 1200, 1800, 2400, 4800, 9600, 19200, 31250, 38400, 57600, 115200, 230400 24*ccc6b9beSAdrien Destugues }; 25*ccc6b9beSAdrien Destugues 26*ccc6b9beSAdrien Destugues 27*ccc6b9beSAdrien Destugues const char* SerialWindow::kWindowTitle = "SerialConnect"; 28*ccc6b9beSAdrien Destugues 29*ccc6b9beSAdrien Destugues 30dae0a4e0SAdrien Destugues - PulkoMandy SerialWindow::SerialWindow() 31469e6cd2SAdrien Destugues - PulkoMandy : BWindow(BRect(100, 100, 400, 400), SerialWindow::kWindowTitle, 32f441fd03SAdrien Destugues - PulkoMandy B_DOCUMENT_WINDOW, B_QUIT_ON_WINDOW_CLOSE | B_AUTO_UPDATE_SIZE_LIMITS) 33469e6cd2SAdrien Destugues - PulkoMandy , fLogFilePanel(NULL) 34dae0a4e0SAdrien Destugues - PulkoMandy { 35dae0a4e0SAdrien Destugues - PulkoMandy SetLayout(new BGroupLayout(B_VERTICAL, 0.0f)); 36dae0a4e0SAdrien Destugues - PulkoMandy 37dae0a4e0SAdrien Destugues - PulkoMandy BMenuBar* menuBar = new BMenuBar("menuBar"); 38f441fd03SAdrien Destugues - PulkoMandy fTermView = new TermView(); 39dae0a4e0SAdrien Destugues - PulkoMandy 40dae0a4e0SAdrien Destugues - PulkoMandy AddChild(menuBar); 41f441fd03SAdrien Destugues - PulkoMandy AddChild(fTermView); 42dae0a4e0SAdrien Destugues - PulkoMandy 4304434656SAdrien Destugues - PulkoMandy fConnectionMenu = new BMenu("Connection"); 44469e6cd2SAdrien Destugues - PulkoMandy BMenu* fileMenu = new BMenu("File"); 45dae0a4e0SAdrien Destugues - PulkoMandy BMenu* settingsMenu = new BMenu("Settings"); 46dae0a4e0SAdrien Destugues - PulkoMandy 47469e6cd2SAdrien Destugues - PulkoMandy fConnectionMenu->SetRadioMode(true); 48469e6cd2SAdrien Destugues - PulkoMandy 4904434656SAdrien Destugues - PulkoMandy menuBar->AddItem(fConnectionMenu); 50469e6cd2SAdrien Destugues - PulkoMandy menuBar->AddItem(fileMenu); 51dae0a4e0SAdrien Destugues - PulkoMandy menuBar->AddItem(settingsMenu); 52dae0a4e0SAdrien Destugues - PulkoMandy 5304434656SAdrien Destugues - PulkoMandy // TODO edit menu - what's in it ? 54469e6cd2SAdrien Destugues - PulkoMandy //BMenu* editMenu = new BMenu("Edit"); 55469e6cd2SAdrien Destugues - PulkoMandy //menuBar->AddItem(editMenu); 56469e6cd2SAdrien Destugues - PulkoMandy 57469e6cd2SAdrien Destugues - PulkoMandy BMenuItem* logFile = new BMenuItem("Log to file" B_UTF8_ELLIPSIS, 58469e6cd2SAdrien Destugues - PulkoMandy new BMessage(kMsgLogfile)); 59469e6cd2SAdrien Destugues - PulkoMandy fileMenu->AddItem(logFile); 60*ccc6b9beSAdrien Destugues #if 0 61*ccc6b9beSAdrien Destugues // TODO implement these 62469e6cd2SAdrien Destugues - PulkoMandy BMenuItem* xmodemSend = new BMenuItem("X/Y/ZModem send" B_UTF8_ELLIPSIS, 63469e6cd2SAdrien Destugues - PulkoMandy NULL); 64469e6cd2SAdrien Destugues - PulkoMandy fileMenu->AddItem(xmodemSend); 65469e6cd2SAdrien Destugues - PulkoMandy BMenuItem* xmodemReceive = new BMenuItem( 66469e6cd2SAdrien Destugues - PulkoMandy "X/Y/Zmodem receive" B_UTF8_ELLIPSIS, NULL); 67469e6cd2SAdrien Destugues - PulkoMandy fileMenu->AddItem(xmodemReceive); 68*ccc6b9beSAdrien Destugues #endif 69dae0a4e0SAdrien Destugues - PulkoMandy 7004434656SAdrien Destugues - PulkoMandy // Configuring all this by menus may be a bit unhandy. Make a setting 7104434656SAdrien Destugues - PulkoMandy // window instead ? 72*ccc6b9beSAdrien Destugues fBaudrateMenu = new BMenu("Baud rate"); 73*ccc6b9beSAdrien Destugues fBaudrateMenu->SetRadioMode(true); 74*ccc6b9beSAdrien Destugues settingsMenu->AddItem(fBaudrateMenu); 7504434656SAdrien Destugues - PulkoMandy 76*ccc6b9beSAdrien Destugues fParityMenu = new BMenu("Parity"); 77*ccc6b9beSAdrien Destugues fParityMenu->SetRadioMode(true); 78*ccc6b9beSAdrien Destugues settingsMenu->AddItem(fParityMenu); 7904434656SAdrien Destugues - PulkoMandy 80*ccc6b9beSAdrien Destugues fStopbitsMenu = new BMenu("Stop bits"); 81*ccc6b9beSAdrien Destugues fStopbitsMenu->SetRadioMode(true); 82*ccc6b9beSAdrien Destugues settingsMenu->AddItem(fStopbitsMenu); 8304434656SAdrien Destugues - PulkoMandy 84*ccc6b9beSAdrien Destugues fFlowcontrolMenu = new BMenu("Flow control"); 85*ccc6b9beSAdrien Destugues fFlowcontrolMenu->SetRadioMode(true); 86*ccc6b9beSAdrien Destugues settingsMenu->AddItem(fFlowcontrolMenu); 8704434656SAdrien Destugues - PulkoMandy 88*ccc6b9beSAdrien Destugues fDatabitsMenu = new BMenu("Data bits"); 89*ccc6b9beSAdrien Destugues fDatabitsMenu->SetRadioMode(true); 90*ccc6b9beSAdrien Destugues settingsMenu->AddItem(fDatabitsMenu); 9104434656SAdrien Destugues - PulkoMandy 9204434656SAdrien Destugues - PulkoMandy 9304434656SAdrien Destugues - PulkoMandy BMessage* message = new BMessage(kMsgSettings); 9404434656SAdrien Destugues - PulkoMandy message->AddInt32("parity", B_NO_PARITY); 9504434656SAdrien Destugues - PulkoMandy BMenuItem* parityNone = new BMenuItem("None", message); 9604434656SAdrien Destugues - PulkoMandy 9704434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 9804434656SAdrien Destugues - PulkoMandy message->AddInt32("parity", B_ODD_PARITY); 9904434656SAdrien Destugues - PulkoMandy BMenuItem* parityOdd = new BMenuItem("Odd", message); 10004434656SAdrien Destugues - PulkoMandy 10104434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 10204434656SAdrien Destugues - PulkoMandy message->AddInt32("parity", B_EVEN_PARITY); 10304434656SAdrien Destugues - PulkoMandy BMenuItem* parityEven = new BMenuItem("Even", message); 10404434656SAdrien Destugues - PulkoMandy 105*ccc6b9beSAdrien Destugues fParityMenu->AddItem(parityNone); 106*ccc6b9beSAdrien Destugues fParityMenu->AddItem(parityOdd); 107*ccc6b9beSAdrien Destugues fParityMenu->AddItem(parityEven); 108*ccc6b9beSAdrien Destugues fParityMenu->SetTargetForItems(be_app); 10904434656SAdrien Destugues - PulkoMandy 11004434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 11104434656SAdrien Destugues - PulkoMandy message->AddInt32("databits", B_DATA_BITS_7); 11204434656SAdrien Destugues - PulkoMandy BMenuItem* data7 = new BMenuItem("7", message); 11304434656SAdrien Destugues - PulkoMandy 11404434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 11504434656SAdrien Destugues - PulkoMandy message->AddInt32("databits", B_DATA_BITS_8); 11604434656SAdrien Destugues - PulkoMandy BMenuItem* data8 = new BMenuItem("8", message); 11704434656SAdrien Destugues - PulkoMandy 118*ccc6b9beSAdrien Destugues fDatabitsMenu->AddItem(data7); 119*ccc6b9beSAdrien Destugues fDatabitsMenu->AddItem(data8); 120*ccc6b9beSAdrien Destugues fDatabitsMenu->SetTargetForItems(be_app); 12104434656SAdrien Destugues - PulkoMandy 12204434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 12304434656SAdrien Destugues - PulkoMandy message->AddInt32("stopbits", B_STOP_BITS_1); 124*ccc6b9beSAdrien Destugues BMenuItem* stop1 = new BMenuItem("1", message); 12504434656SAdrien Destugues - PulkoMandy 12604434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 12704434656SAdrien Destugues - PulkoMandy message->AddInt32("stopbits", B_STOP_BITS_2); 128*ccc6b9beSAdrien Destugues BMenuItem* stop2 = new BMenuItem("2", message); 12904434656SAdrien Destugues - PulkoMandy 130*ccc6b9beSAdrien Destugues fStopbitsMenu->AddItem(stop1); 131*ccc6b9beSAdrien Destugues fStopbitsMenu->AddItem(stop2); 132*ccc6b9beSAdrien Destugues fStopbitsMenu->SetTargetForItems(be_app); 13304434656SAdrien Destugues - PulkoMandy 13404434656SAdrien Destugues - PulkoMandy // Loop backwards to add fastest rates at top of menu 135*ccc6b9beSAdrien Destugues for (int i = sizeof(kBaudrates) / sizeof(char*); --i >= 0;) 13604434656SAdrien Destugues - PulkoMandy { 13704434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 138*ccc6b9beSAdrien Destugues message->AddInt32("baudrate", kBaudrates[i]); 13904434656SAdrien Destugues - PulkoMandy 14004434656SAdrien Destugues - PulkoMandy char buffer[7]; 141*ccc6b9beSAdrien Destugues sprintf(buffer,"%d", kBaudrates[i]); 14204434656SAdrien Destugues - PulkoMandy BMenuItem* item = new BMenuItem(buffer, message); 14304434656SAdrien Destugues - PulkoMandy 144*ccc6b9beSAdrien Destugues fBaudrateMenu->AddItem(item); 14504434656SAdrien Destugues - PulkoMandy } 14604434656SAdrien Destugues - PulkoMandy 147*ccc6b9beSAdrien Destugues fBaudrateMenu->SetTargetForItems(be_app); 14804434656SAdrien Destugues - PulkoMandy 14904434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 15004434656SAdrien Destugues - PulkoMandy message->AddInt32("flowcontrol", B_HARDWARE_CONTROL); 15104434656SAdrien Destugues - PulkoMandy BMenuItem* hardware = new BMenuItem("Hardware", message); 15204434656SAdrien Destugues - PulkoMandy 15304434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 15404434656SAdrien Destugues - PulkoMandy message->AddInt32("flowcontrol", B_SOFTWARE_CONTROL); 15504434656SAdrien Destugues - PulkoMandy BMenuItem* software = new BMenuItem("Software", message); 15604434656SAdrien Destugues - PulkoMandy 15704434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 15804434656SAdrien Destugues - PulkoMandy message->AddInt32("flowcontrol", B_HARDWARE_CONTROL | B_SOFTWARE_CONTROL); 15904434656SAdrien Destugues - PulkoMandy BMenuItem* both = new BMenuItem("Both", message); 16004434656SAdrien Destugues - PulkoMandy 16104434656SAdrien Destugues - PulkoMandy message = new BMessage(kMsgSettings); 16204434656SAdrien Destugues - PulkoMandy message->AddInt32("flowcontrol", 0); 16304434656SAdrien Destugues - PulkoMandy BMenuItem* noFlow = new BMenuItem("None", message); 16404434656SAdrien Destugues - PulkoMandy 165*ccc6b9beSAdrien Destugues fFlowcontrolMenu->AddItem(hardware); 166*ccc6b9beSAdrien Destugues fFlowcontrolMenu->AddItem(software); 167*ccc6b9beSAdrien Destugues fFlowcontrolMenu->AddItem(both); 168*ccc6b9beSAdrien Destugues fFlowcontrolMenu->AddItem(noFlow); 169*ccc6b9beSAdrien Destugues fFlowcontrolMenu->SetTargetForItems(be_app); 17004434656SAdrien Destugues - PulkoMandy 17104434656SAdrien Destugues - PulkoMandy CenterOnScreen(); 17204434656SAdrien Destugues - PulkoMandy } 17304434656SAdrien Destugues - PulkoMandy 174469e6cd2SAdrien Destugues - PulkoMandy 175469e6cd2SAdrien Destugues - PulkoMandy 176469e6cd2SAdrien Destugues - PulkoMandy SerialWindow::~SerialWindow() 177469e6cd2SAdrien Destugues - PulkoMandy { 178469e6cd2SAdrien Destugues - PulkoMandy delete fLogFilePanel; 179469e6cd2SAdrien Destugues - PulkoMandy } 180469e6cd2SAdrien Destugues - PulkoMandy 18104434656SAdrien Destugues - PulkoMandy 18204434656SAdrien Destugues - PulkoMandy void SerialWindow::MenusBeginning() 18304434656SAdrien Destugues - PulkoMandy { 18404434656SAdrien Destugues - PulkoMandy // remove all items from the menu 18504434656SAdrien Destugues - PulkoMandy while(fConnectionMenu->RemoveItem(0L)); 18604434656SAdrien Destugues - PulkoMandy 18704434656SAdrien Destugues - PulkoMandy // fill it with the (updated) serial port list 188dae0a4e0SAdrien Destugues - PulkoMandy BSerialPort serialPort; 189dae0a4e0SAdrien Destugues - PulkoMandy int deviceCount = serialPort.CountDevices(); 190*ccc6b9beSAdrien Destugues bool connected = false; 191dae0a4e0SAdrien Destugues - PulkoMandy 192dae0a4e0SAdrien Destugues - PulkoMandy for(int i = 0; i < deviceCount; i++) 193dae0a4e0SAdrien Destugues - PulkoMandy { 194dae0a4e0SAdrien Destugues - PulkoMandy char buffer[256]; 195dae0a4e0SAdrien Destugues - PulkoMandy serialPort.GetDeviceName(i, buffer, 256); 196dae0a4e0SAdrien Destugues - PulkoMandy 197f441fd03SAdrien Destugues - PulkoMandy BMessage* message = new BMessage(kMsgOpenPort); 198f441fd03SAdrien Destugues - PulkoMandy message->AddString("port name", buffer); 199f441fd03SAdrien Destugues - PulkoMandy BMenuItem* portItem = new BMenuItem(buffer, message); 200a2021beeSAdrien Destugues - PulkoMandy portItem->SetTarget(be_app); 20104434656SAdrien Destugues - PulkoMandy 202*ccc6b9beSAdrien Destugues const BString& connectedPort = ((SerialApp*)be_app)->GetPort(); 203*ccc6b9beSAdrien Destugues 204*ccc6b9beSAdrien Destugues if(connectedPort == buffer) { 205*ccc6b9beSAdrien Destugues connected = true; 206*ccc6b9beSAdrien Destugues portItem->SetMarked(true); 207*ccc6b9beSAdrien Destugues } 208*ccc6b9beSAdrien Destugues 20904434656SAdrien Destugues - PulkoMandy fConnectionMenu->AddItem(portItem); 210dae0a4e0SAdrien Destugues - PulkoMandy } 211dae0a4e0SAdrien Destugues - PulkoMandy 21204434656SAdrien Destugues - PulkoMandy if (deviceCount > 0) { 21304434656SAdrien Destugues - PulkoMandy fConnectionMenu->AddSeparatorItem(); 214dae0a4e0SAdrien Destugues - PulkoMandy 21504434656SAdrien Destugues - PulkoMandy BMenuItem* disconnect = new BMenuItem("Disconnect", 21604434656SAdrien Destugues - PulkoMandy new BMessage(kMsgOpenPort), 'Z', B_OPTION_KEY); 217*ccc6b9beSAdrien Destugues if(!connected) 218*ccc6b9beSAdrien Destugues disconnect->SetEnabled(false); 21904434656SAdrien Destugues - PulkoMandy fConnectionMenu->AddItem(disconnect); 22004434656SAdrien Destugues - PulkoMandy } else { 22104434656SAdrien Destugues - PulkoMandy BMenuItem* noDevices = new BMenuItem("<no serial port available>", NULL); 22204434656SAdrien Destugues - PulkoMandy noDevices->SetEnabled(false); 22304434656SAdrien Destugues - PulkoMandy fConnectionMenu->AddItem(noDevices); 224dae0a4e0SAdrien Destugues - PulkoMandy } 225dae0a4e0SAdrien Destugues - PulkoMandy } 226dae0a4e0SAdrien Destugues - PulkoMandy 227f441fd03SAdrien Destugues - PulkoMandy void SerialWindow::MessageReceived(BMessage* message) 228f441fd03SAdrien Destugues - PulkoMandy { 229f441fd03SAdrien Destugues - PulkoMandy switch(message->what) 230f441fd03SAdrien Destugues - PulkoMandy { 23104434656SAdrien Destugues - PulkoMandy case kMsgOpenPort: 23204434656SAdrien Destugues - PulkoMandy { 23304434656SAdrien Destugues - PulkoMandy BMenuItem* disconnectMenu; 23404434656SAdrien Destugues - PulkoMandy if(message->FindPointer("source", (void**)&disconnectMenu) == B_OK) 23504434656SAdrien Destugues - PulkoMandy disconnectMenu->SetMarked(false); 23604434656SAdrien Destugues - PulkoMandy be_app->PostMessage(new BMessage(*message)); 23704434656SAdrien Destugues - PulkoMandy break; 23804434656SAdrien Destugues - PulkoMandy } 239f441fd03SAdrien Destugues - PulkoMandy case kMsgDataRead: 240f441fd03SAdrien Destugues - PulkoMandy { 241f441fd03SAdrien Destugues - PulkoMandy const char* bytes; 242f441fd03SAdrien Destugues - PulkoMandy ssize_t length; 24347b44bbeSPhilippe Houdoin message->FindData("data", B_RAW_TYPE, (const void**)&bytes, &length); 244f441fd03SAdrien Destugues - PulkoMandy fTermView->PushBytes(bytes, length); 245f441fd03SAdrien Destugues - PulkoMandy break; 246f441fd03SAdrien Destugues - PulkoMandy } 247469e6cd2SAdrien Destugues - PulkoMandy case kMsgLogfile: 248469e6cd2SAdrien Destugues - PulkoMandy { 249469e6cd2SAdrien Destugues - PulkoMandy // Let's lazy init the file panel 250469e6cd2SAdrien Destugues - PulkoMandy if(fLogFilePanel == NULL) { 251469e6cd2SAdrien Destugues - PulkoMandy fLogFilePanel = new BFilePanel(B_SAVE_PANEL, &be_app_messenger, 252469e6cd2SAdrien Destugues - PulkoMandy NULL, B_FILE_NODE, false); 253469e6cd2SAdrien Destugues - PulkoMandy fLogFilePanel->SetMessage(message); 254469e6cd2SAdrien Destugues - PulkoMandy } 255469e6cd2SAdrien Destugues - PulkoMandy fLogFilePanel->Show(); 256469e6cd2SAdrien Destugues - PulkoMandy break; 257469e6cd2SAdrien Destugues - PulkoMandy } 258*ccc6b9beSAdrien Destugues case kMsgSettings: 259*ccc6b9beSAdrien Destugues { 260*ccc6b9beSAdrien Destugues int32 baudrate; 261*ccc6b9beSAdrien Destugues stop_bits stopBits; 262*ccc6b9beSAdrien Destugues data_bits dataBits; 263*ccc6b9beSAdrien Destugues parity_mode parity; 264*ccc6b9beSAdrien Destugues uint32 flowcontrol; 265*ccc6b9beSAdrien Destugues 266*ccc6b9beSAdrien Destugues if(message->FindInt32("databits", (int32*)&dataBits) == B_OK) 267*ccc6b9beSAdrien Destugues { 268*ccc6b9beSAdrien Destugues for(int i = 0; i < fDatabitsMenu->CountItems(); i++) 269*ccc6b9beSAdrien Destugues { 270*ccc6b9beSAdrien Destugues BMenuItem* item = fDatabitsMenu->ItemAt(i); 271*ccc6b9beSAdrien Destugues int32 code; 272*ccc6b9beSAdrien Destugues item->Message()->FindInt32("databits", &code); 273*ccc6b9beSAdrien Destugues 274*ccc6b9beSAdrien Destugues if(code == dataBits) 275*ccc6b9beSAdrien Destugues item->SetMarked(true); 276*ccc6b9beSAdrien Destugues } 277*ccc6b9beSAdrien Destugues } 278*ccc6b9beSAdrien Destugues 279*ccc6b9beSAdrien Destugues if(message->FindInt32("stopbits", (int32*)&stopBits) == B_OK) 280*ccc6b9beSAdrien Destugues { 281*ccc6b9beSAdrien Destugues for(int i = 0; i < fStopbitsMenu->CountItems(); i++) 282*ccc6b9beSAdrien Destugues { 283*ccc6b9beSAdrien Destugues BMenuItem* item = fStopbitsMenu->ItemAt(i); 284*ccc6b9beSAdrien Destugues int32 code; 285*ccc6b9beSAdrien Destugues item->Message()->FindInt32("stopbits", &code); 286*ccc6b9beSAdrien Destugues 287*ccc6b9beSAdrien Destugues if(code == stopBits) 288*ccc6b9beSAdrien Destugues item->SetMarked(true); 289*ccc6b9beSAdrien Destugues } 290*ccc6b9beSAdrien Destugues } 291*ccc6b9beSAdrien Destugues 292*ccc6b9beSAdrien Destugues if(message->FindInt32("parity", (int32*)&parity) == B_OK) 293*ccc6b9beSAdrien Destugues { 294*ccc6b9beSAdrien Destugues for(int i = 0; i < fParityMenu->CountItems(); i++) 295*ccc6b9beSAdrien Destugues { 296*ccc6b9beSAdrien Destugues BMenuItem* item = fParityMenu->ItemAt(i); 297*ccc6b9beSAdrien Destugues int32 code; 298*ccc6b9beSAdrien Destugues item->Message()->FindInt32("parity", &code); 299*ccc6b9beSAdrien Destugues 300*ccc6b9beSAdrien Destugues if(code == parity) 301*ccc6b9beSAdrien Destugues item->SetMarked(true); 302*ccc6b9beSAdrien Destugues } 303*ccc6b9beSAdrien Destugues } 304*ccc6b9beSAdrien Destugues 305*ccc6b9beSAdrien Destugues if(message->FindInt32("flowcontrol", (int32*)&flowcontrol) == B_OK) 306*ccc6b9beSAdrien Destugues { 307*ccc6b9beSAdrien Destugues for(int i = 0; i < fFlowcontrolMenu->CountItems(); i++) 308*ccc6b9beSAdrien Destugues { 309*ccc6b9beSAdrien Destugues BMenuItem* item = fFlowcontrolMenu->ItemAt(i); 310*ccc6b9beSAdrien Destugues int32 code; 311*ccc6b9beSAdrien Destugues item->Message()->FindInt32("flowcontrol", &code); 312*ccc6b9beSAdrien Destugues 313*ccc6b9beSAdrien Destugues if(code == (int32)flowcontrol) 314*ccc6b9beSAdrien Destugues item->SetMarked(true); 315*ccc6b9beSAdrien Destugues } 316*ccc6b9beSAdrien Destugues } 317*ccc6b9beSAdrien Destugues 318*ccc6b9beSAdrien Destugues if(message->FindInt32("baudrate", &baudrate) == B_OK) 319*ccc6b9beSAdrien Destugues { 320*ccc6b9beSAdrien Destugues for(int i = 0; i < fBaudrateMenu->CountItems(); i++) 321*ccc6b9beSAdrien Destugues { 322*ccc6b9beSAdrien Destugues BMenuItem* item = fBaudrateMenu->ItemAt(i); 323*ccc6b9beSAdrien Destugues int32 code; 324*ccc6b9beSAdrien Destugues item->Message()->FindInt32("baudrate", &code); 325*ccc6b9beSAdrien Destugues 326*ccc6b9beSAdrien Destugues if(code == kBaudrates[baudrate]) 327*ccc6b9beSAdrien Destugues item->SetMarked(true); 328*ccc6b9beSAdrien Destugues } 329*ccc6b9beSAdrien Destugues } 330*ccc6b9beSAdrien Destugues 331*ccc6b9beSAdrien Destugues break; 332*ccc6b9beSAdrien Destugues } 333f441fd03SAdrien Destugues - PulkoMandy default: 334f441fd03SAdrien Destugues - PulkoMandy BWindow::MessageReceived(message); 335f441fd03SAdrien Destugues - PulkoMandy } 336f441fd03SAdrien Destugues - PulkoMandy } 337