int menu_press(WMenu *menu, XButtonEvent *ev, WRegion **reg_ret) { menu_button(menu, ev); menu=menu_head(menu); ioncore_set_drag_handlers((WRegion*)menu, NULL, (WMotionHandler*)menu_motion, (WButtonHandler*)menu_release, NULL, NULL); return 0; }
void LLWidgetReg::initClass(bool register_widgets) { // Only need to register if the Windows linker has optimized away the // references to the object files. if (register_widgets) { LLDefaultChildRegistry::Register<LLButton> button("button"); LLDefaultChildRegistry::Register<LLMenuButton> menu_button("menu_button"); LLDefaultChildRegistry::Register<LLCheckBoxCtrl> check_box("check_box"); LLDefaultChildRegistry::Register<LLComboBox> combo_box("combo_box"); LLDefaultChildRegistry::Register<LLFilterEditor> filter_editor("filter_editor"); LLDefaultChildRegistry::Register<LLFlyoutButton> flyout_button("flyout_button"); LLDefaultChildRegistry::Register<LLContainerView> container_view("container_view"); LLDefaultChildRegistry::Register<LLIconCtrl> icon("icon"); LLDefaultChildRegistry::Register<LLLoadingIndicator> loading_indicator("loading_indicator"); LLDefaultChildRegistry::Register<LLLineEditor> line_editor("line_editor"); LLDefaultChildRegistry::Register<LLMenuItemSeparatorGL> menu_item_separator("menu_item_separator"); LLDefaultChildRegistry::Register<LLMenuItemCallGL> menu_item_call_gl("menu_item_call"); LLDefaultChildRegistry::Register<LLMenuItemCheckGL> menu_item_check_gl("menu_item_check"); LLDefaultChildRegistry::Register<LLMenuGL> menu("menu"); LLDefaultChildRegistry::Register<LLMenuBarGL> menu_bar("menu_bar"); LLDefaultChildRegistry::Register<LLContextMenu> context_menu("context_menu"); LLDefaultChildRegistry::Register<LLMultiSlider> multi_slider_bar("multi_slider_bar"); LLDefaultChildRegistry::Register<LLMultiSliderCtrl> multi_slider("multi_slider"); LLDefaultChildRegistry::Register<LLPanel> panel("panel", &LLPanel::fromXML); LLDefaultChildRegistry::Register<LLLayoutStack> layout_stack("layout_stack"); LLDefaultChildRegistry::Register<LLProgressBar> progress_bar("progress_bar"); LLDefaultChildRegistry::Register<LLRadioGroup> radio_group("radio_group"); LLDefaultChildRegistry::Register<LLSearchEditor> search_editor("search_editor"); LLDefaultChildRegistry::Register<LLScrollContainer> scroll_container("scroll_container"); LLDefaultChildRegistry::Register<LLScrollingPanelList> scrolling_panel_list("scrolling_panel_list"); LLDefaultChildRegistry::Register<LLScrollListCtrl> scroll_list("scroll_list"); LLDefaultChildRegistry::Register<LLSlider> slider_bar("slider_bar"); LLDefaultChildRegistry::Register<LLSliderCtrl> slider("slider"); LLDefaultChildRegistry::Register<LLSpinCtrl> spinner("spinner"); LLDefaultChildRegistry::Register<LLStatBar> stat_bar("stat_bar"); //LLDefaultChildRegistry::Register<LLPlaceHolderPanel> placeholder("placeholder"); LLDefaultChildRegistry::Register<LLTabContainer> tab_container("tab_container"); LLDefaultChildRegistry::Register<LLTextBox> text("text"); LLDefaultChildRegistry::Register<LLTimeCtrl> time("time"); LLDefaultChildRegistry::Register<LLTextEditor> simple_text_editor("simple_text_editor"); LLDefaultChildRegistry::Register<LLUICtrl> ui_ctrl("ui_ctrl"); LLDefaultChildRegistry::Register<LLStatView> stat_view("stat_view"); //LLDefaultChildRegistry::Register<LLUICtrlLocate> locate("locate"); //LLDefaultChildRegistry::Register<LLUICtrlLocate> pad("pad"); LLDefaultChildRegistry::Register<LLViewBorder> view_border("view_border"); } // *HACK: Usually this is registered as a viewer text editor LLDefaultChildRegistry::Register<LLTextEditor> text_editor("text_editor"); }
u08 ve_update(void ) // do we need param? { COORD mds; u08 cmd; if (vePort == -1) { // LCD GUI MENU_CONTROLS menu_exitbutton(); mds = (CHAR_WIDTH*BUTTON_SIZE) + ButtonBorder + ButtonRowSpacing; //!!! ButtonBorder*2 #ifdef RES_128x64 menu_label (0,0,PS("Var Editor")); menu_buttonrow(5,XROWS-(CHAR_HEIGHT+6), PS("G \xAE\xAF #WR")); menu_button (5+mds*6,XROWS-CHAR_HEIGHT*4+2, PS("+"),'+'); menu_button (5+mds*7,XROWS-CHAR_HEIGHT*4+2, PS("-"),'-'); #else menu_label (0,0,PS("Variable Editor")); menu_buttonrow(5,XROWS-(CHAR_HEIGHT+6), PS("G \xAE\xAF # WR")); menu_button (5+mds*8,XROWS-CHAR_HEIGHT*4-6, PS("+"),'+'); menu_button (5+mds*9,XROWS-CHAR_HEIGHT*4-6, PS("-"),'-'); #endif varedit_slider(); if(MenuDraw) ve_setflag (veDO_REFRESH); // if MenuDraw (set by menu_init) then screen was cleared and controls just // redrawn, so redraw current variable MENU_COMMANDS cmd = menu_cmd(); } else // Serial Console { MenuCmd = 0; // make sure disabled cmd = 0; switch (vePort) { case 0 : if (rx_haschar()) {cmd = rx_getchar(); beep(20,1000); } break; case 1 : if (rx1_haschar()) {cmd = rx1_getchar(); beep(20,1000); } break; } if ((cmd>='a') && (cmd<='z')) cmd -=32; // shift to uppercase // handle numeric entry using local buffer if ((cmd>='0') && (cmd<='9') && (veBufIndex < VE_BUF_SIZE)) { veBuf[veBufIndex++] = cmd; printf("%c",cmd); // echo character cmd = 0; // prevent refresh (display of group / var) } // handle backspace if ((cmd ==8) && (veBufIndex>0)) { veBufIndex--; printf("%c",cmd); cmd = 0; // prevent refresh } if (cmd==13) { veStoreSerialBuffer=1; // leave cmd alone to force refresh } } // menu button/control responses switch(cmd) { case 1 : // slider ve_setflag(veUPDATE_FROM_SLIDER); // current var will set to slider value break; // on next call to ve_process() // select next group case 'G' : if(++veCurGroup>veGroupCount) veCurGroup=1; veCurVar = 1; veCurVal = MAXLONG; ve_setflag(veCOUNT_VARS); ve_process(); ve_clrflag(veCOUNT_VARS); break; // next group // select previous / next variable // special arrow characters 0xAE <- 0xAF -> case '<':; // greater than or ".' char (for Serial Console Support) case ',':; case 0xAE: if(veVarCount && (--veCurVar==0)) veCurVar=veVarCount; break; // prev variable case '>':; case '.':; case 0xAF: if(veVarCount && (++veCurVar>veVarCount)) veCurVar=1; break; // next variable case '=':; case '+': veDelta = ( 1); break; // flag for inc/dec of current variable case '_':; case '-': veDelta = (-1); break; case '#': ve_setflag(veCALL_INPUT_DIALOG); break; // flag case 'W': case 'R': ve_read_write(cmd,1); // do 'R'-Read or 'W'-Write of vars from/to EEPROM menu_init(); ve_setflag(veDO_REFRESH); break; case 'X': MenuCmd = MENU_EXITCODE; // Close Variable Editor (Remote Serial Console) printf (PS("Exit. Thank You for using Megadonkey Variable Editor\n")); break; } if(ve_flag(veDO_REFRESH) || (((cmd!=0)||menu_cmd()) && (menu_cmd() != MENU_EXITCODE))) { if(ve_flag(veDO_REFRESH)) { ve_setflag(veCOUNT_VARS); // do a variable count pass through list ve_process(); // really this could be done one time with static defs ve_clrflag(veCOUNT_VARS); // thinking toward dynamic list ve_clrflag(veDO_REFRESH); } if (vePort==-1) // output to LCD { // if 'G' command erase group label and variable label // if not just erase variable label set_color(color ^ WHITE); if(menu_cmd() == 'G') { filled_box(0,CHAR_HEIGHT*3/2,XCOLS-1, CHAR_HEIGHT*3/2+CHAR_HEIGHT-1); } #ifdef RES_128x64 filled_box(0,CHAR_HEIGHT*3, XCOLS-1,CHAR_HEIGHT*4-1); #else filled_box(0,CHAR_HEIGHT*4, XCOLS-1,CHAR_HEIGHT*5-1); #endif set_color(color ^ WHITE); ve_process(); // update display of current var & update slider vals mds = MenuDraw; // save MenuDraw state MenuDraw = 1; // force redraw of slider varedit_slider(); MenuDraw = mds; // restore MenuDraw state } else // Output to Serial Port { if (cmd != 0) ve_process(); // update display of current var : output to serial port } } if ((menu_cmd() == MENU_EXITCODE) && (vePort != -1)) { lcd_set_stdout(); // ASSUME LCD was connected to std out (maybe should have saved state) printf (PS("VE Exit")); } return (menu_cmd() != MENU_EXITCODE); // return TRUE unless close [X] }
void OnLoadGUI( GUI* gui, sf::RenderWindow& window ) { //////////////////////////////////////////////////////////////////////////////// // Login Window //////////////////////////////////////////////////////////////////////////////// sfg::Window::Ptr login_window( sfg::Window::Create() ); login_window->SetTitle( "Login" ); login_window->SetId( "Login" ); login_window->SetStyle( sfg::Window::TITLEBAR | sfg::Window::BACKGROUND ); sfg::Label::Ptr username_label( sfg::Label::Create("Username:"******"Password:"******"Server Address:") ); sfg::Table::Ptr login_table( sfg::Table::Create() ); login_table->SetColumnSpacings( 10.0f ); login_table->SetRowSpacings( 10.0f ); login_table->Attach( username_label, sf::Rect<sf::Uint32>( 0, 0, 1, 1 ), 0 ); login_table->Attach( password_label, sf::Rect<sf::Uint32>( 0, 1, 1, 1 ), 0 ); login_table->Attach( address_label, sf::Rect<sf::Uint32>( 0, 2, 1, 1 ), 0 ); sfg::Entry::Ptr username( sfg::Entry::Create() ); username->SetRequisition( sf::Vector2f( 100.0f, 0.0f ) ); //username->SetProperty( "Entry.Normal.CursorColor", sf::Color( 0xFF, 0xFF, 0xFF ) ); username->SetId( "login_username_text" ); gui->AddWidget( username ); sfg::Entry::Ptr password( sfg::Entry::Create() ); password->SetRequisition( sf::Vector2f( 100.0f, 0.0f ) ); //password->SetProperty( "Entry.Normal.CursorColor", sf::Color( 0xFF, 0xFF, 0xFF ) ); password->SetId( "login_password_text" ); gui->AddWidget( password ); password->HideText( '#' ); sfg::Entry::Ptr address( sfg::Entry::Create() ); address->SetRequisition( sf::Vector2f( 100.0f, 0.0f ) ); //address->SetProperty( "Entry.Normal.CursorColor", sf::Color( 0xFF, 0xFF, 0xFF ) ); address->SetId( "login_server_address_text" ); gui->AddWidget( address ); login_table->Attach( username, sf::Rect<sf::Uint32>( 1, 0, 1, 1 ) ); login_table->Attach( password, sf::Rect<sf::Uint32>( 1, 1, 1, 1 ) ); login_table->Attach( address, sf::Rect<sf::Uint32>( 1, 2, 1, 1 ) ); sfg::Button::Ptr quit( sfg::Button::Create( "Quit" ) ); quit->GetSignal( sfg::Widget::OnLeftClick ).Connect( &OnQuitClicked ); sfg::Button::Ptr login( sfg::Button::Create( "Login" ) ); login->GetSignal( sfg::Widget::OnLeftClick ).Connect( &OnLoginClicked ); sfg::Box::Ptr login_buttons_box( sfg::Box::Create( sfg::Box::HORIZONTAL ) ); login_buttons_box->SetSpacing( 20.0f ); login_buttons_box->Pack( login, true ); login_buttons_box->Pack( quit, true ); sfg::Box::Ptr login_window_box( sfg::Box::Create( sfg::Box::VERTICAL ) ); login_window_box->SetSpacing( 20.0f ); login_window_box->Pack( login_table, true ); login_window_box->Pack( login_buttons_box, true ); login_window_box->SetId( "LoginWindowBox" ); login_window->Add( login_window_box ); login_window->Show( true ); { sf::FloatRect size = login_window->GetAllocation(); sf::FloatRect rect = GUI::CenterRect( window, size.width, size.height ); login_window->SetPosition( sf::Vector2f( rect.left, rect.top ) ); } gui->AddWidget( login_window ); address->SetText( "localhost" ); //////////////////////////////////////////////////////////////////////////////// // Loading Window //////////////////////////////////////////////////////////////////////////////// sfg::Window::Ptr loading_window( sfg::Window::Create() ); loading_window->SetStyle( sfg::Window::BACKGROUND ); loading_window->SetId( "Loading" ); loading_window->Show( false ); sfg::Box::Ptr loading_box( sfg::Box::Create( sfg::Box::VERTICAL, 10.0f ) ); sfg::ProgressBar::Ptr loading_progress_bar( sfg::ProgressBar::Create() ); sfg::Label::Ptr loading_resource_name( sfg::Label::Create( "Resource Name" ) ); loading_box->Pack( loading_progress_bar, true ); loading_box->Pack( loading_resource_name, true ); loading_window->Add( loading_box ); { sf::FloatRect size = loading_window->GetAllocation(); sf::FloatRect rect = GUI::CenterRect( window, size.width, size.height ); loading_window->SetPosition( sf::Vector2f( rect.left, rect.top ) ); } gui->AddWidget( loading_window ); //////////////////////////////////////////////////////////////////////////////// // Main HUD Window //////////////////////////////////////////////////////////////////////////////// sfg::Window::Ptr hud_menu_bar_window( sfg::Window::Create() ); hud_menu_bar_window->SetStyle( sfg::Window::NO_STYLE ); hud_menu_bar_window->SetId( "HUD_Menu_Bar" ); hud_menu_bar_window->Show( false ); sfg::Box::Ptr hud_menu_bar( sfg::Box::Create( sfg::Box::HORIZONTAL, 10.0f ) ); sfg::Button::Ptr menu_button( sfg::Button::Create("Menu") ); menu_button->GetSignal( sfg::Widget::OnLeftClick ).Connect( &OnMenuClicked ); menu_button->SetRequisition( sf::Vector2f( 40.0f, 30.0f ) ); hud_menu_bar->Pack( menu_button, false ); hud_menu_bar_window->Add( hud_menu_bar ); gui->AddWidget( hud_menu_bar_window ); sfg::Window::Ptr hud_quick_access_window( sfg::Window::Create() ); hud_quick_access_window->SetStyle( sfg::Window::NO_STYLE ); hud_quick_access_window->SetId( "HUD_Quick_Access_Bar" ); hud_quick_access_window->Show( false ); sfg::Box::Ptr hud_quick_access_bar( sfg::Box::Create( sfg::Box::HORIZONTAL, 10.0f ) ); sfg::Button::Ptr ship_button( sfg::Button::Create("Ship") ); ship_button->GetSignal( sfg::Widget::OnLeftClick ).Connect( &OnShipClicked ); ship_button->SetRequisition( sf::Vector2f( 40.0f, 30.0f ) ); hud_quick_access_bar->Pack( ship_button, false ); hud_quick_access_window->Add( hud_quick_access_bar ); sf::Vector2f requisition = hud_quick_access_window->GetRequisition(); hud_quick_access_window->SetPosition( sf::Vector2f( 0.0f, static_cast<float>( window.getSize().y ) - requisition.y ) ); gui->AddWidget( hud_quick_access_window ); //////////////////////////////////////////////////////////////////////////////// // Menu Window //////////////////////////////////////////////////////////////////////////////// sfg::Window::Ptr menu_window( sfg::Window::Create() ); menu_window->SetStyle( sfg::Window::BACKGROUND ); menu_window->SetId( "Menu" ); menu_window->Show( false ); menu_window->SetRequisition( sf::Vector2f( 80.0f, 100.0f ) ); sfg::Box::Ptr menu_box( sfg::Box::Create( sfg::Box::VERTICAL, 10.0f ) ); sfg::Button::Ptr return_to_game_button( sfg::Button::Create("Return to game") ); return_to_game_button->GetSignal( sfg::Widget::OnLeftClick ).Connect( &OnReturnToGameClicked ); menu_box->Pack( return_to_game_button, true ); sfg::Button::Ptr options_button( sfg::Button::Create("Options") ); options_button->GetSignal( sfg::Widget::OnLeftClick ).Connect( &OnOptionsClicked ); menu_box->Pack( options_button, true ); sfg::Button::Ptr quit_button( sfg::Button::Create("Quit") ); quit_button->GetSignal( sfg::Widget::OnLeftClick ).Connect( &OnQuitClicked ); menu_box->Pack( quit_button, true ); menu_window->Add( menu_box ); { sf::FloatRect size = menu_window->GetAllocation(); sf::FloatRect rect = GUI::CenterRect( window, size.width, size.height ); menu_window->SetPosition( sf::Vector2f( rect.left, rect.top ) ); } gui->AddWidget( menu_window ); //////////////////////////////////////////////////////////////////////////////// // Options Window //////////////////////////////////////////////////////////////////////////////// sfg::Window::Ptr options_window( sfg::Window::Create() ); options_window->SetStyle( sfg::Window::TITLEBAR | sfg::Window::BACKGROUND ); options_window->SetTitle( "Game Options" ); options_window->SetId( "Options" ); options_window->Show( false ); sfg::Box::Ptr options_box( sfg::Box::Create( sfg::Box::VERTICAL ) ); sfg::Table::Ptr options_table( sfg::Table::Create() ); options_box->Pack( options_table, true ); sfg::Button::Ptr options_ok( sfg::Button::Create( "OK" ) ); options_ok->GetSignal( sfg::Widget::OnLeftClick ).Connect( &OnOptionsOKClicked ); options_ok->SetRequisition( sf::Vector2f( 60.0f, 20.0f ) ); sfg::Button::Ptr options_cancel( sfg::Button::Create( "Cancel" ) ); options_cancel->GetSignal( sfg::Widget::OnLeftClick ).Connect( &OnOptionsCancelClicked ); options_cancel->SetRequisition( sf::Vector2f( 60.0f, 20.0f ) ); sfg::Box::Ptr options_buttons_box( sfg::Box::Create( sfg::Box::HORIZONTAL ) ); options_buttons_box->SetSpacing( 20.0f ); options_buttons_box->Pack( options_ok, true ); options_buttons_box->Pack( options_cancel, true ); options_box->Pack( options_buttons_box, true ); options_window->Add( options_box ); { sf::FloatRect size = options_window->GetAllocation(); sf::FloatRect rect = GUI::CenterRect( window, size.width, size.height ); options_window->SetPosition( sf::Vector2f( rect.left, rect.top ) ); } gui->AddWidget( options_window ); //////////////////////////////////////////////////////////////////////////////// // Ship Window //////////////////////////////////////////////////////////////////////////////// sfg::Window::Ptr ship_window( sfg::Window::Create() ); ship_window->SetTitle( "Ship Data" ); ship_window->SetId( "Ship" ); ship_window->Show( false ); sfg::Box::Ptr ship_box( sfg::Box::Create( sfg::Box::VERTICAL ) ); ship_box->SetRequisition( sf::Vector2f( 400.0f, 300.0f ) ); //sfg::Window::Ptr inventory_window( gui->CreateWindow("Inventory") ); //sfg::ListBox::Ptr inventory_list( sfg::ListBox::Create(6, 200) ); //gui->AddWidget( inventory_list,"inventory_list" ); //inventory_window->Add( inventory_list ); //inventory_window->Show(false); sfg::Button::Ptr ship_ok( sfg::Button::Create( "OK" ) ); ship_ok->GetSignal( sfg::Widget::OnLeftClick ).Connect( &OnShipOKClicked ); ship_ok->SetRequisition( sf::Vector2f( 60.0f, 20.0f ) ); ship_box->Pack( ship_ok, false ); ship_window->Add( ship_box ); { sf::FloatRect size = ship_window->GetAllocation(); sf::FloatRect rect = GUI::CenterRect( window, size.width, size.height ); ship_window->SetPosition( sf::Vector2f( rect.left, rect.top ) ); } gui->AddWidget( ship_window ); }