Canvas layout system

From FlightGear wiki
Revision as of 15:03, 21 July 2014 by TheTom (talk | contribs) (Basic Nasal API documentation)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


#
# Base class for all widgets/layouts
#
var LayoutItem = {
  getCanvas: func(),

  setCanvas: func(<Canvas>),

  getParent: func(),

  setParent: func(<LayoutItem>),

  sizeHint: func(),

  minimumSize: func(),

  maximumSize: func(),

  hasHeightForWidth: func(),

  heightForWidth: func(<int: width>),

  minimumHeightForWidth: func(<int: width>),

  setVisible: func(<bool: visible>),

  isVisible: func(),

  isExplicitlyHidden: func(),

  show: func(),

  hide: func(),

  setGeometry: func([<int: x>, <int: y>, <int: width>, <int: height>]),

  geometry: func()
};

#
# Base class for all layouts
#
var Layout = {
  parents: [LayoutItem],

  # Add an item.
  addItem: func(<LayoutItem>),

  # Set the spacing/padding between items.
  setSpacing: func(<int: space>),

  # Get the spacing/padding between items.
  spacing: func(),

  # Get the number of items (excluding nested items).
  count: func(),

  # Get the item at the given position.
  itemAt: func(<int: index>),

  # Remove and get the item at the given position.
  takeAt: func(<int: index>),

  # Remove the given item from the layout.
  removeItem: func(<LayoutItem>),

  # Remove all items.
  clear: func()
};

#
# Vertical or horizontal box layout
#
var BoxLayout = {
  parents: [Layout],

  addItem: func(<LayoutItem>[, <int: stretch> = 0]),

  addStretch: func([<int: stretch> = 0]),

  addSpacing: func(<int: size>),

  insertItem: func(<int: index>, <LayoutItem>[, <int: stretch> = 0]),

  insertStretch: func(<int: index>[, <int: stretch> = 0]),

  insertSpacing: func(<int: index>, <int: size>),

  # Set the stretch factor of the item at the given position to <stretch>.
  setStretch: func(<int: index>, <int: stretch>),

  # Set the stretch factor of the given item to <stretch>
  # (if it exists in this layout).
  setStretchFactor: func(<LayoutItem>, <int: stretch>),

  # Get the stretch factor of the item at the given position.
  stretch: func(<int: index>)
};

#
# Horizontal box layout
#
var HBoxLayout = {
  parents: [BoxLayout],

  # Create a horizontal box layout
  new: func()
};

#
# Vertical box layout
#
var VBoxLayout = {
  parents: [BoxLayout],

  # Create a vertical box layout
  new: func()
};