namespace ui

namespace ui {

// namespaces

namespace ui.ComboBoxHistory;

// typedefs

typedef ui.ComboItem EnumPropertyOption;

// enums

enum AuthenticationMethod;
bitflag enum ColorFlags;
enum FileDlgKind;
enum FilePropertyMode;
bitflag enum FilePropertyOptions;
bitflag enum FontFlags;
enum NetworkAdapterUsage;
enum StdColor;
enum StdDlgButton;
bitflag enum StdDlgButtons;
enum StdDlgIcon;
enum WebSocketCloseMode;
enum WebSocketTransmitMode;

// structs

struct ComboItem;
struct FlagPropertyOption;
struct TextAttr;

// classes

class Action;
class ActionProperty;
class BoolProperty;
class BufferPropertySet;
class ChecksumInfoSet;
class ColorProperty;
class ComboBox;
class ComboProperty;
class DictionaryProperty;
class EnumProperty;
class FileDlg;
class FileProperty;
class FlagProperty;
class GroupProperty;
class Icon;
class InformationGrid;
class InformationGroup;
class InformationItem;
class InformationStatValue;
class InformationValue;
class IntProperty;
class LoginDlg;
class Menu;
class MessageDlg;
class ProgressDlg;
class Property;
class PropertyGrid;
class SerialSettingUi;
class SocketPropertySet;
class SshPropertySet;
class SslPropertySet;
class StatusBar;
class StatusPane;
class StdSessionInfoSet;
class StringProperty;
class Terminal;
class ThroughputInfoSet;
class ToolBar;
class WebSocketUi;

// global variables

ui.EnumPropertyOption const TransmitModeOptionTable[3] = {     { "Auto",   ui.WebSocketTransmitMode.Auto },    { "Text",   ui.WebSocketTransmitMode.Text },    { "Binary", ui.WebSocketTransmitMode.Binary }, };
ui.EnumPropertyOption CloseModeOptionTable[2] = {     { "Graceful", ui.WebSocketCloseMode.Graceful },     { "Abrupt",   ui.WebSocketCloseMode.Abrupt }, };

// global functions

uint_t rgb(
    uint8_t r,
    uint8_t g,
    uint8_t b
    );

ui.EnumPropertyOption const* createPcapDeviceOptionArray();

ui.EnumProperty* createPcapDeviceProperty(
    ui.PropertyGrid* propertyGrid,
    ui.GroupProperty* group = null,
    ui.Property* beforeProp = null,
    char const* name,
    char const* toolTipText
    );

ui.ComboBox* createPcapDeviceComboBox(
    ui.ToolBar* toolBar,
    uint_t width = - 1
    );

ui.EnumPropertyOption const* createNetworkAdapterOptionArray(ui.NetworkAdapterUsage usage);

ui.EnumProperty* createNetworkAdapterProperty(
    ui.PropertyGrid* propertyGrid,
    ui.Property* group = null,
    ui.Property* insertBefore = null,
    ui.NetworkAdapterUsage usage,
    char const* name,
    char const* toolTipText
    );

ui.EnumProperty* createNetworkAdapterProperty(
    ui.PropertyGrid* propertyGrid,
    ui.NetworkAdapterUsage usage,
    char const* name,
    char const* toolTipText
    );

ui.ComboBox* createNetworkAdapterComboBox(
    ui.ToolBar* toolBar,
    ui.NetworkAdapterUsage usage,
    uint_t width = - 1
    );

io.SocketOptions getSocketOptions(
    ui.SocketPropertySet* socketPropSet,
    ui.BufferPropertySet* bufferPropSet
    );

void populateUsbDeviceListUi(
    ui.ComboBox* deviceCombo,
    ui.EnumProperty* deviceProp,
    io.UsbDevice* const* deviceArray,
    size_t deviceCount
    );

void refreshUsbDeviceListUi(
    ui.ComboBox* deviceCombo,
    ui.EnumProperty* deviceProp
    );

size_t findUsbDeviceComboIndex(
    ui.ComboBox* deviceCombo,
    uint_t vid,
    uint_t pid,
    uint_t bus = - 1,
    uint_t address = - 1
    );

} // namespace ui