SaveToDB 7 User Interface

SaveToDB 7 User Interface

User Interface

Main SaveToDB interface elements are located on the SaveToDB ribbon tab.

Example of the Actions menu

The interface elements are being adapted to the active data table having a database, web or text file query.

You can change query parameters, query objects, table views, and other database related features without any coding.

However, the real power of the add-in is uncovered when the user interface is customized by database developers.

The Actions menu, Context Menu, Query List, Query Parameters and initial Table Views are fully configurable on the server-side.

For example, the screenshot above shows the ribbon elements and the formatted table that can be loaded from a database in an empty workbook!

Using Microsoft Excel with the SaveToDB add-in, database developers can quickly implement database applications that deliver a feature-rich desktop experience to users, with users' full freedom of the Microsoft Excel use.

SaveToDB Tab

SaveToDB controls are located on the SaveToDB tab.

SaveToDB Ribbon

The tab name can be changed.

For example, 'Database' is quite a proper name.

To rename the tab, open Microsoft Excel Options, select Customize Ribbon, select the SaveToDB tab, and click the Rename... button.

Excel Options
SaveToDB Save menu
Save
The button saves table changes back to a database and reloads the data.
The button is enabled if the changes can be saved.
Filter Changed Rows
The menu allows filtering new and changed rows.
This feature works for the tables that support saving changes (only for those tables the add-in tracks changes).
For tables saved by merge only filtering new rows is available.
View Save Change SQL
The button shows the SQL code that is used to save changes.
This code can be used to save the changes or troubleshoot issues using tools like SQL Server Managements Studio.
The button is enabled if the changes can be saved.
Save by Merge
The button merges table data back to a database (inserts new rows and updates existing ones) and reloads the data.
The button is enabled if the data can be merged.
View Save by Merge SQL
The button shows the SQL code that is used to merge data.
The button is enabled if the data can be merged.
Save All Sheet Tables
The button saves changes of all worksheet tables back to a database and reloads the data.
The button is enabled if the changes can be saved.
Save All Workbook Tables
The button displays the Save Data Changes dialog box.
See below.
Save Table Data As
The button allows saving Excel table data to a CSV file.
Only filtered row and visible column data are saved.
Save Query Table As
The button allows saving query data to a CSV file.
The data are loaded from a data source, not from an Excel table.

Required Conditions for Saving Changes

Changes of database tables can be saved to a database without any coding.

But,

  • A user must have INSERT, UPDATE and DELETE permissions on the table.
  • Excel table row numbers must be turned on.

To turn on row numbers, run the Excel Data, Connections, Properties dialog box and check Include row numbers.

Alternatively, run the SaveToDB, Reload, Configure Query dialog box.

Changes of Excel table data loaded from views, stored procedures, SQL codes, HTTP queries and text files can be saved to a database if

  • The feature is configured in a database.
  • A user has permissions to INSERT_PROCEDURE, UPDATE_PROCEDURE and DELETE_PROCEDURE objects.
  • Excel table row numbers are turned on.

The changes can be saved into a base database table without coding or into multiple tables using custom stored procedures or SQL codes.

See Configuring saving changes.

Save Data Changes Dialog Box

The Save All Workbook Tables button displays the Save Data Changes dialog box.

Example of Save All Workbook Tables form
Save
The button saves changes and reloads data of the selected tables.
Cancel
The button stops saving and closes the dialog box when the saving is not running.
SaveToDB Reload menu
Reload
The button reloads data and minimum server configuration of the active table like the Microsoft Excel Refresh action.
Using this button is the fastest way to reload data.
If the table data changes can be saved, then the save query dialog box is displayed.
Reload Data and Configuration
The button reloads data and full server configuration of the active table.
If the table data changes can be saved, then the save query dialog box is displayed.
Reload All Sheet Tables
The button reloads data and full server configuration of all worksheet tables.
If the table data changes can be saved, then the save query dialog box is displayed.
Reload All Workbook Tables
The button displays the Reload Table Data dialog box.
See below.
Configure Query
The button displays the Data Connection Wizard to configure active table properties.
Configure Query Parameters
The button displays the Query Parameters dialog box.
The Query Parameters group dialog box launcher can be also used if the group is visible.

Reload Table Data Dialog Box

The Reload All Workbook Tables button displays the Reload Table Data dialog box.

Example of Reload All Workbook Tables form
Load
The button starts loading data of the selected tables.
If a table has unsaved changes, then the save query dialog box is displayed before loading.
Cancel
The button stops loading and closes the dialog box when the loading is not running.
Example of the Actions menu

The Actions menu contains the items that are defined by an application developer.

The menu can be used to execute different tasks. For example:

  • Executing database procedures to update data in a batch mode.
  • Executing macros.
  • Executing Windows Shell or CMD commands to load, update, or verify text data files.
  • Opening related websites and online documentation.
  • Adding, changing, or deleting items of database directories.
  • Executing drill-down queries.
  • Printing documents in HTML formats.
  • Generating document numbers.
  • Resetting query parameters and clearing form data.

Technically, the menu allows:

  • Executing stored procedures and SQL codes.
  • Executing macros, and Windows Shell and CMD commands.
  • Executing HTTP and text file queries.
  • Selecting data from database tables and views.

The menu adapts to the active table query.
If there is one table on a worksheet, the table is used by default. This behavior differs from the Context menu behavior.

If a menu item query has parameters, the Query Parameters dialog box is shown, by default, to allow users to change parameters and to confirm the action.

See also Configuring event handlers.

Context Menu

Drill-Down Context Menu

Example of the context menu

The SaveToDB Drill-Down group of the Excel context menu contains the items that are defined by an application developer.

The menu can be used to execute different tasks. For example:

  • Executing database procedures to update context data in a batch mode.
  • Executing context macros.
  • Opening context related websites and searches.
  • Creating emails.
  • Adding, changing, or deleting items of database directories.
  • Executing drill-down queries.

Technically, the menu allows:

  • Executing stored procedures and SQL codes.
  • Executing macros, and Windows Shell and CMD commands.
  • Executing HTTP and text file queries.
  • Selecting data from database tables and views.

Even if a menu item query has parameters, the Query Parameters dialog box is not shown by default. This behavior can be configured.

See Configuring event handlers.

You may use the Excel context menu to apply a previously saved Excel table view to a table.

Table Views Context Menu

Example of the Table Views context menu

The Table Views menu allows changing the active table view.

Use the Save or Save As button in the Table Views group to save the Excel table views.

Query List Group

The Query List allows changing the database object of the active data table.

This is the simplest way to connect to a new database object.

This feature allows users to have fewer worksheets in a workbook.

Also, new database objects come available for users immediately after reloading the query list without any additional work.

The SaveToDB add-in contains the default query list that shows all database objects available to connect.

Databases can contain several query lists for different business areas.

See Configuring Query List.

Each Excel data table has owned query list that is selected during a connection through the Data Connection Wizard.

The table's query list can be changed quickly using the Query List group dialog box launcher.

By default, the query list displays native database object names as shown:

Example of a query list

Database developers can configure data translation.

If the data translation is configured, users can select Data Language in the Options dialog box.

In this case, the query list displays translated object names:

Example of a translated query list

Query List Group Elements

Example of the SaveToDB ribbon
Active Query
The list displays the database object of the active table and allows changing it.
The field is disabled if the Enable ribbon Query List option in the Data Connection Wizard is turned off.
Reload Query List
The button reloads Query List objects, configuration, and data translation.
The field is disabled if the Enable ribbon Query List option in the Data Connection Wizard is turned off.
Dialog Box Launcher
The Query List group dialog box launcher displays the Data Connection Wizard that allows users to change the Query List object, to select a new database object, and to configure the Enable ribbon Query List option.
Example of the translated SaveToDB Configure Query form

Query Parameters Group

The Query Parameters group displays:

  • Selected fields of tables and views.
  • Stored procedure parameters.
  • Web query parameters.
  • Text query parameters.

When the query parameter is changed, the SaveToDB add-in changes the active query with new values and reloads the data.

Only the first six parameters are displayed on the ribbon.

You may change other parameters using the Query Parameters dialog box that is displayed by the group dialog box launcher.

SaveToDB stores user's values of parameters and shows them in the parameter value lists.

You may define the stored value limit using the Options dialog box.

By default, SaveToDB displays native database names of the fields and parameters.

The parameter names can be translated into a business language. See Configuring data translation.

Fields of Tables and Views

Example of applied WHERE ribbon parameters

For database tables and views, the ribbon displays fields that are selected by a user or predefined by an application developer.

Use the Table Data, Reload, Configure Query Parameters dialog box for the first time.

When the Query Parameters group is displayed, you may use the group dialog box launcher to configure parameters.

Example of the Query Parameters form for views

Check the fields that should be selected in the S (Select) field.

Check the fields that should be used in the WHERE clause in the W (Where) field.

Database developers can configure what fields should be displayed.

See Configuring parameter values.

By default, the parameter value lists display unique column values.

Parameters of Stored Procedures and SQL Codes

Example of ribbon parameters

Stored procedure and SQL code parameters are detected automatically, and the first six parameters are placed on the ribbon.

The Query Parameters dialog box can be used to change any number of stored procedure parameters.

Example of the Query Parameters form for stored procedures

By default, a user can specify any parameter value of a proper data type.

Database developers can specify queries that are used for populating parameter values.

See Configuring parameter values.

In such case the parameter values are predefined, and users can select values from the lists only.

Otherwise, users can edit parameter values themselves using the '...' button that shows the following dialog box:

Example of Parameter Value Editor form

Web Query Parameters

Example of HTTP query ribbon parameters

Parameters of HTTP queries are detected from a URL automatically. However, the parameters can be configured using the Data Connection Wizard.

The real URL of the example above is http://finance.yahoo.com/q/hp?s=GOOG+Historical+Prices and has the "s" parameter with the "+Historical+Prices" suffix to the stock symbol.
During the connection, the URL was configured as http://finance.yahoo.com/q/hp?s={Symbol=GOOG}+Historical+Prices
where Symbol is a new parameter with the default value equal GOOG.
So, a user can change the query parameter using stock symbols only.

SaveToDB reloads the data and preserves table formatting and structure.
So you can insert your formula columns, apply formatting, filter values and so on.

If the query has many parameters, you may use the Query Parameters dialog box.

Example of the Query Parameters form for web queries

Text Query Parameters

A file name and a code page of the active text file query can be changed using the ribbon.

See Configuring parameter values.

Query Parameter Value Sorting Rules

The parameter values populated by stored procedures or SQL codes are displayed in the order defined by the procedures or SQL codes.

Other parameter values, manual and populated by views, are being sorted automatically with the following rules:

  • Text values are being sorted from A to Z.
  • Date and time values are being sorted from newest to oldest.
  • Other values are being sorted from smallest to largest.

Table Views Group

The Table Views groups are located at the SaveToDB, Data, View and Design tabs.
You may hide groups using the Options dialog box.

Example of HTTP query connected via SaveToDB
Table View List
The list shows the active table view and allows applying a new view from stored views of the active Excel table.
The field is disabled if there is no any active Excel table.
Copy and Insert Selected Rows
The button copies and inserts the selected table rows.
This is a unique feature as this action cannot be done using the native Excel if the table has filtered rows.
The action can be undone (Ctrl-Z).
Show All Rows and Columns
The button shows all manually hidden columns and rows hidden by auto-filters.
Instead of the use of this button, you may create a table view to show required columns and rows, for example, named as "All".
Save Table View

The button shows a dialog box to save the current Excel table view.

SaveToDB Save Table View form
Manage Table Views
The button launches the Table Views dialog box used to edit table views of the active Excel table.
Table Views Group Launcher Button
The button launches the Table Views dialog box used to edit table views of the active Excel table.

Table Views Dialog Box

The Table Views dialog box allows performing different actions with saved Excel table views in the Table View list and the Excel context menu:

  • Changing the order of views in menus.
  • Renaming a view.
  • Deleting a view.
  • Deleting all views.
SaveToDB Table Views form

You may change the customized Excel table using the Customized Object list.

Important! The actions cannot be undone.

If you delete an important view, you can recreate it or reopen the entire workbook.

Working with Table Views

Use the Save Table View button to save named Excel table views, and then use the Table View list to apply the views.

For example, the following table has several previously saved views:

Example of the Table Views drop-down list

Just use one click to apply the saved view:

Example of using table views - applied Up in Volume filter

Saved Excel Table View Elements

Excel Table views include the following elements:

  • A set of visible columns.
  • A set of applied auto-filters.
  • Sort order.
  • Table totals.

These elements are saved for each named Excel table view and applied back to a table.

Active Excel Table

An Excel table is a specially marked region of cells on a sheet, early named as "Lists".

All database queries are inserted as Excel tables. Use the Insert, Table Excel command to create tables from regular Excel cells.

The add-in works with Excel tables only, not with regular cells formatted as a table.

A sheet can contain many Excel tables. SaveToDB adapts to the Excel table that contains the active cell.

If a sheet contains a single Excel table only, this table is active by default.

Common Options

SaveToDB Options form - Common options
Interface language
The field allows changing the SaveToDB interface language.
The field contains only available languages.
You may add an interface language yourself. The language file contains about 600 lines to translate.
If you would like to translate the add-in, please contact us.
Default data language
The field allows changing the default language of the database data.
This feature is used to show business names in different languages instead of native database object and column names.
This feature requires configuring data translation in a database.
This workbook data language
The field allows changing the active workbook language of the database data.
This setting is stored in a workbook instead of Windows Registry.
Use this option to prepare the workbook before distribution.
Connection timeout
The field is used to change the server connection timeout.
You may increase this timeout for busy servers and slow lines, and decrease it to get connection errors faster.
Command timeout
The field is used to change the timeout of command execution.
You may increase this timeout if a large amount of database data is updated.
Generate single-line SQL statements for Microsoft SQL Server
Microsoft SQL Server supports inserting and updating data from subqueries.
The SaveToDB add-in may generate SQL codes using this feature. The code is more efficient, but it is not user-friendly.
You may check this checkbox to generate the user-friendly code.

Excel Options

SaveToDB Options form - Excel options
Show the Open URL menu at the context menu
The field controls showing the Open URL menu in the Excel context menu.
Show the Table Views at the context menu
The field controls showing of the Table Views menu in the Excel context menu.
Auto-activate table related windows
The field controls the mode the auto-activating related windows.
This feature allows activating related windows when you select another sheet in the main Excel window and hiding related windows of the previously active sheet.
This feature is also used to implement master-detail interfaces in the SaveToDB add-in.
See Working with windows.
Auto-arrange workbook windows
The field controls the window auto-arrange mode.
You may resize or move Excel windows, and the SaveToDB add-in arranges them.
See Working with windows.
Hide workbook windows in the Windows Taskbar
The field controls auto-hiding of child windows in the Windows Taskbar.
This feature can be useful when workbooks contain many windows.
Launch the calendar on double-click
The field controls launching the calendar control on the double-click.
Use the Calendar to input dates into Excel cells.
See Working with the calendar.
Change auto-filters using the row over tables
The field controls the use of rows over the tables to change table auto-filters.
This feature is very useful if you frequently change table auto-filters.
See Working with auto-filters.
Open the last workbook at startup
The field controls auto-opening of the last opened workbook at the Excel startup.
This feature is very useful for developers.
You may press Shift to disable opening a workbook during startup.

Ribbon Options

SaveToDB Options form - Ribbon options
Show the Table Views at the Data tab
The field controls showing of the Table Views group at the Data tab.
Show the Table Views at the View tab
The field controls showing of the Table Views group at the View tab.
Show the Table Views at the Design tab
The field controls showing of the Table Views group at the Design tab.
Show the Information group at the ribbon
Uncheck this field to hide the Information group on the ribbon to free the ribbon place.
Limit of parameter values
The field defines the limit of stored parameter values.
The maximum value is 1000.
See Query Parameters.

Developer Options

SaveToDB Options form - Developer options
Add SaveToDB Data Sheets
The button adds hidden sheets that are used to store SaveToDB add-in data.
These sheets are required to support a complete set of SaveToDB features.
The sheets can be added through the Data Connection Wizard also.
Remove SaveToDB Data Sheets
The button deletes SaveToDB data sheets in the active workbook.
Use this button if you want to remove the SaveToDB add-in from a computer or to remove the SaveToDB data from a workbook.
This button does not delete data sheets with table views as the companion TableViews add-in can be installed separately.
Use the Table Views dialog box to remove these data sheets.
Show SaveToDB Data Sheets
The button shows the hidden SaveToDB data sheets of the active workbook.
You can unhide the sheets manually using the Visible sheet property in the Visual Basic Editor (Alt-F11).
Hide SaveToDB Data Sheets
The button hides the SaveToDB data sheets of the active workbook.
Clean SaveToDB Data Sheets
The button deletes SaveToDB configuration data except the core information about database objects.
Use this option to clean the workbook before distribution.
Reload all workbook tables and Query Lists after the cleaning.
Open Installation Folder
The button opens the SaveToDB installation folder.
The Languages subfolder contains interface translation files.
SaveToDB Help menu
Help
The button displays the local help.
Online Help
The button opens the online help.
You may leave your comment or ask a question on the help pages.
Technical Support
The button opens a support page on the SaveToDB website.
SaveToDB Website
The button opens the home page on the SaveToDB website.
Workbook Info
The button displays the Workbook Information dialog box.
Register Product
The button displays the Register Product dialog box.
The button is disabled if the SaveToDB Enterprise edition is already registered.
Purchase SaveToDB
The button opens a web page where you may purchase the SaveToDB Personal or Enterprise edition.
Check Updates
The button opens the web page to check and download product updates.
About SaveToDB
The button displays the About SaveToDB dialog box.

Workbook Information

The Workbook Information dialog box shows different information about loaded server-side configurations.

Loaded Configurations

SaveToDB Workbook Information - Loaded Configurations

The table shows all loaded database configurations.

Data Tables

SaveToDB Workbook Information - Data Tables

The table shows all database connected tables of the active workbook.

Database Objects

SaveToDB Workbook Information - Database Objects

The table shows database object information that is loaded using query list and data translation configuration views.

See Configuring Query List and Configuring Data Translation.

Event Handlers

SaveToDB Workbook Information - Event Handlers

The table shows loaded server-side event handlers.

See Configuring event handlers.

Working with Pivot Tables

The SaveToDB add-in adds the following features for working with pivot tables:

  • The add-in allows editing values of pivot tables based on Excel tables.
  • The add-in enables underlying table SaveToDB controls for pivot tables.
  • The add-in allows saving and restoring pivot table views using the Table Views group controls.
  • The add-in allows saving pivot table views in databases and loading views by end users from databases.
  • The add-in allows changing default double-click behavior to filter underlying tables instead of creating ranges on new worksheets.

These features significantly reduce development time and costs as pivot tables can be used as edit forms.

Business analysts and end users may create pivot table edit forms themselves and save them into databases for using by other users.

Example of Using Pivot Tables as Edit Forms

For example, a database has the following tables:

Budget Diagram

A database developer can create a stored procedure that selects data into an Excel table and configure saving changes back to a database.

Data table

Note that stored procedure parameters (DepartmentCode, ItemCode, and Date) are shown on the ribbon.

Users can create a pivot table like this:

Pivot table Items * Departments

If each pivot table cells have only one row in the underlying table, then SaveToDB allows editing values directly in cells.

Tip: If the table is not editable, try to clean old items using the Clean Pivot Items item in the Pivot Wizard menu.

In the example, each cell in the table has unique ItemCode and DepartmentCode as they are on the axes.
The cells have unique Date value as the date is filtered using the Date parameter of the stored procedure.
You may place required parameters into page fields.

Pay attention that the ribbon shows the same controls as for the underlying table.
You may change parameters, reload data, and save changes.

When you edit the value in the pivot table, the SaveToDB add-in makes the following:

  1. The add-in filters the underlying table using pivot table values on the axes and page fields.
  2. If the filtered range contains a single row, the add-in changes the value.
    If the filtered range has no rows, the add-in adds the row with values.
    If the filtered range has more than one row, then the add-in does not change the table.
  3. The add-in refreshes the pivot table.

You may see the filtered rows after each change.

Also, you may double click on any cell to get an underlying range.

For example, double-click on the Direct Sales, SALES cell shows only the one row, and the cell is editable:

Filtered data

The following screenshots show different pivot table layouts for editing data.

Pay attention that you may change query parameters using the ribbon, and save and restore layouts using the Table Views group controls.

Pivot table Items * Dates
Pivot table Departments * Dates

Pivot Table Views

Pivot table views can be stored in databases using the Table Format Wizard.

The table views and pivot table views are stored in the same format object of the underlying query.
So do not change and save table formats and pivot table formats in different workbooks.

 

Working with Cursors and Fields

The SaveToDB add-in allows updating cells with active table row values and changing the active table row values using the cells.

Such cells should have special names like field_<table name>_<field name>.

You may define names manually using the Define Name button in the Formulas menu. Omit spaces in field names.

Also, you may use the Add Form Fields item in the Form Wizard menu to insert entire field set at once.

Then you may delete unused cells. Use the Clean Named Cells item in the Form Wizard menu to remove names for deleted cells.

To highlight the active table row, you may add a cursor using the Add Cursor item in the Form Wizard menu.

Cursor rows can be changed from VBA macros using the SaveToDB methods like MoveNext, MovePrevious, MoveFirst, and MoveLast.

Cells can have multiple names. This feature can be used to create master-detail tables.

The idea is simple. A cell must have two names:

  • field_<master table name>_<field name>
  • <detail table parameter name>

So when a user selects a row in the master table, SaveToDB updates the cell with the field value.

Then SaveToDB updates the query on the cell change event as the parameter value has been changed.

See Query Parameter Groups about using and defining parameters.

This technique can be used several times on a worksheet.

Here is example of described features:

Example of using cursors and fields

The CustomerIndex table is a master for the Customers table.

The Customers table is a master for the Orders table.

The Orders table is a master for the OrderDetails table.

All the three tables have cursors.

The Customers and Order tables have hidden columns. The values of hidden columns are shown in the form fields.

You may see the selected cell with the field_Customers_City name.

You may find this example in the Northwind folder of examples for Microsoft SQL Server and Microsoft SQL Server Compact.

 

Working with Images

The SaveToDB add-in automatically shows images on task panes from database tables and views.

The add-in loads images when the row is selected.

You may dock task panes to the right or left sides, to the top or to the bottom.

If you close a task pane, you may activate it again using the Show Task Panes item in the Options submenu.
To show a closed task pane when there are several task panes, close all task panes and use the item.

Database developers can create selection change handlers to show images for any database query.

Just specify the _TaskPane value in the TARGET_WORKSHEET field and return the image as a handler result.

Task panes are worksheet related.

Example of showing photos from a database:

Example of loading photos from a database

You may find this example in the Northwind folder of examples for Microsoft SQL Server and Microsoft SQL Server Compact.

The SaveToDB add-in also shows images from the web if the table row has a URL with jpg, gif or png extensions.

For example, the following table contains a hidden column with photo URLs on LinkedIn like

https://media.licdn.com/media/p/7/000/253/05b/308dd6e.jpg:

Example of using photos from the web

You may find this example in the Web Images folder of the Examples for Web.

The SaveToDB add-in caches loaded images.

You may clean the cache using the Clean Image Cache Folder button on the Developer Options tab in the Options dialog box.

Working with Windows

The SaveToDB add-in adds to Microsoft Excel features for advanced working with windows:

  • Auto-activating related windows.
  • Auto-arranging related windows.

If the auto-activating is turned on in Options, new windows are "bound" to the first window sheet.

When another sheet is selected in the first window, the add-in saves current window configuration for the previous active sheet and loads related windows for the new active sheet as they were saved before.

Sheets in the first and related windows can have different window settings.

If the auto-arranging is turned on in Options, the windows are arranged when any window has been resized.

For example, you may move a window border or move the entire window.

In contrast, the Microsoft Excel auto-arranging stops its work when the window border is moved.

The example of arranged related windows:

Example of automatic arranging Excel windows

The windows 2 and 3 have been hidden when the Sheet2 is selected in the first window:

Example of automatic activating related Excel windows

If the Sheet1 is selected again, then the windows 1, 2 and 3 will be restored to the same size and locations.

Working with Auto-Filters

The first rows above tables can be used to change table auto-filters.

To change the auto-filter, just enter a value in the cell above the table column.

The following substitution characters are available: ?, *, >, <, <>.

For example, the '<>*AA*' value filters all the rows except the rows which contain 'AA'.

To turn off a current column auto-filter, just clear the value in the cell over the table column.

This feature can be turned on or off in the Options menu.

In the example on the screenshot, the rows with the sum above 100000 and the 'Inc' value in the company names are filtered.

Example of using auto-filters

Working with Calendar

The SaveToDB Calendar allows inserting dates into Excel cells.

Double-click on a date cell to launch the calendar.

Example of the SaveToDB calendar form

Differently from other calendar add-ins, the SaveToDB calendar supports Excel Undo.

This feature can be turned on or off in the Options menu.