Пример #1
0
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;
}
Пример #2
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");
}
Пример #3
0
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] 

 
}
Пример #4
0
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 );
}