Toolbar

New in 3.5 is the ability to use a custom toolbar layout, along with customized toolbar graphics. This feature is primarily designed for use by universe administrators who can now design a custom toolbar prior to distributing the software.

The new toolbar can have many commands available in addition to those traditionally used on the toolbar. For example, a button could be added to open the World Features dialog, or to exit the application. The buttons may be used in any order and may be grouped in any manner using spacers. If the toolbar is wider than the available space, then a dropdown menu button will automatically be added to allow access to the remaining buttons.

Toolbar Images

A toolbar image is a grid of button images stored as a windows bitmap (BMP) in the /default/toolbars directory. Different toolbar images can be used to change the look of the toolbar buttons. Toolbar images are interchangeable (even those of different sizes) as long as the images convey the same meaning, and are arranged in the same order.

The toolbar image itself is divided into five rows, and any number of columns. The first column is always used for the dropdown menu button graphic. Each column represents a single button, and each row represents a different version of the button as follows:

Row 1: Image of button in its normal, unpressed state.

Row 2: Image of button pressed

Row 3: Image of button in its normal, unpressed state with mouseover.

Row 4: Image of button pressed, with mouseover

Row 5: Image of disabled button.

Here is an example toolbar image:

The buttons may be any size, but they must be square. The browser determines the button size by dividing the height of the toolbar by 5. The image above is 160 pixels height, so the browser will determine the button size to be 32 x 32. The width of the image is then divided by this number to determine the number of columns. The image above is 192 pixels wide, which tells the browser that there are a total of six columns available. These columns are numbered left-to-right, starting with zero for the first (the drop-down menu button image) column.

Toolbar Configuration

The toolbar layout is stored in the toolbar.cfg file in the /toolbars directory. This file tells what commands are available on the toolbar, and what images those commands should use. Each line in the file represents one button. The line should contain the command the button performs, followed by the column number of the toolbar image to use for that button, followed (optionally) by the message number from the message set to be used as a tooltip. For a complete list of available commands see below.

Here is an example toolbar file.

back 3 forward 2 none 0 look_up 8 look_level 10 look_down 9 none 0 first_person 11 third_person 12 none 0 camera_front 51 camera_chase 50 none 0 mouse_move 61 afk 60

Any button which is not not associated with a valid command will act as a spacer. A spacer will only use the image from row zero (Unpressed) and will not respond to user input.

Toolbar Commands

Each button can be assigned one of the following commands:

  exit  forward  back  home  teleport_set_home  remember  look_up  look_down  look_level  first_person  third_person  world_features  world_rights  world_ejections  show_downloads  show_tabs  show_gestures  show_web  show_whisper  show_cell_grid  login_citizen  login_tourist  privileges  web_back  web_forward  web_stop  web_refresh  help  about  options_controls  camera_locked  camera_chase  camera_front  contacts_tab  worlds_tab  users_tab  telegrams_tab  teleports_tab  help_tab  search_tab  afk  mouse_move  sdk_event  

The command "sdk_event" is a special command which requires further elaboration. In the toolbar config, you may assign any number of buttons to this action in the following format:

sdk_event <image_number> <message_number> <id_number>

As with other commands, image_number and message_number specify what toolbar button image and message set entry to use for the button. For sdk_event, all fields must be specified, even message number. Additionally, an sdk_event button must be assigned a message id. This can be any number between 0 and 32767. When the user presses this button, a message is sent to the world server along with the given id, which is in turn sent to all bots with caretaker status. In this way a bot can be written than can react to toolbar buttons to perform various game-type functions such as "attack" or "show inventory". This provides another way for the user to interact with game-style worlds.

Note that this command is meaningless unless used with a world configured to handle these special commands. This feature requires the 3.5 versions of the world server and SDK.