Examples - JanSharp/JanSharpsGuiLibrary GitHub Wiki

Examples

Note that all examples are isolated.

The examples (will) cover all features of the library

More to come!

hello world


-- new:
-- registering a class (see 1)
-- creating a class (see 2)

local gui_handler = require("__JanSharpsGuiLibrary__/gui-handler.lua")

gui_handler.register_class{ -- 1
  class_name = "hello-world",
  create = function()
    return {
      type = "frame",
      caption = "hello world!",
    }
  end,
}

script.on_event(defines.events.on_player_created, function(event)
  local player = game.get_player(event.player_index)

  gui_handler.create(player.gui.screen, "hello-world") -- 2
end)

elem and style mods


-- new:
-- use of elem_mods (see 1)
-- use of style_mods (see 2)

local gui_handler = require("__JanSharpsGuiLibrary__/gui-handler.lua")

gui_handler.register_class{
  class_name = "hello-world",
  create = function()
    return {
      type = "frame",
      caption = "hello world!",

      elem_mods = { -- 1
        auto_center = true,
      },

      style_mods = { -- 2
        height = 200,
      },
    }
  end,
}

script.on_event(defines.events.on_player_created, function(event)
  local player = game.get_player(event.player_index)

  gui_handler.create(player.gui.screen, "hello-world")
end)

parameters


-- new:
-- use of parameters (see 1)

local gui_handler = require("__JanSharpsGuiLibrary__/gui-handler.lua")

gui_handler.register_class{
  class_name = "hello-world",
  create = function(player)
    return {
      type = "frame",
      caption = "hello " .. player.name .. "!",

      elem_mods = {
        auto_center = true,
      },
    }
  end,
}

script.on_event(defines.events.on_player_created, function(event)
  local player = game.get_player(event.player_index)

  -- nil for the name, could be any string too, doesn't matter in this case
  gui_handler.create(player.gui.screen, "hello-world", nil, player) -- 1
end)

simple events


-- new:
-- multiple classes (see 1 x2)
-- on_click event handling (see 2)
-- use of children (in simple-events class) (see 3)

local gui_handler = require("__JanSharpsGuiLibrary__/gui-handler.lua")

gui_handler.register_class{ -- 1
  class_name = "simple-button",
  create = function()
    return {
      type = "button",
      caption = "hello?",
    }
  end,

  on_click = function(self, event) -- 2
    if event.button == defines.mouse_button_type.left then
      self.elem.caption = "hello world!"
    else
      self.elem.caption = "hello?"
    end
  end,
}

gui_handler.register_class{ -- 1
  class_name = "simple-events",
  create = function()
    return {
      type = "frame",
      caption = "simple events",
      children = { -- 3
        {class_name = "simple-button"},
      },
    }
  end,
}

script.on_event(defines.events.on_player_created, function(event)
  local player = game.get_player(event.player_index)

  gui_handler.create(player.gui.screen, "simple-events")
end)

basic classes


-- new:
-- use of basic classes (see 1)
-- use of basic class event handling (see 2)
-- use of GuiClassInstChildDefinition parameters (see 3)

local gui_handler = require("__JanSharpsGuiLibrary__/gui-handler.lua")
require("__JanSharpsGuiLibrary__/basic-classes.lua")

gui_handler.register_class{
  class_name = "basic-classes",
  create = function()
    return {
      type = "frame",
      caption = "simple events",
      children = {
        {class_name = "button", name = "simple_btn", { -- 1 and 3
          caption = "hello?"
        }},
      },
    }
  end,

  on_click_simple_btn = function(self, simple_btn, event) -- 2
    if event.button == defines.mouse_button_type.left then
      simple_btn.elem.caption = "hello world!"
    else
      simple_btn.elem.caption = "hello?"
    end
  end,
}

script.on_event(defines.events.on_player_created, function(event)
  local player = game.get_player(event.player_index)

  gui_handler.create(player.gui.screen, "basic-classes")
end)

passed parent


-- new:
-- use of parent_pass_count (see 1 x2)
-- in combination with basic classes (see 2 x2)
-- destroy function (see 3)

local gui_handler = require("__JanSharpsGuiLibrary__/gui-handler.lua")
require("__JanSharpsGuiLibrary__/basic-classes.lua")

gui_handler.register_class{
  class_name = "passed-parent",
  create = function()
    return {
      type = "frame",
      caption = "passed parent",
      elem_mods = {
        auto_center = true,
      },

      children = {
        {class_name = "table", {
          column_count = 2,
          children = {
            {class_name = "button", name = "hi_btn", parent_pass_count = 1, {
              caption = "hi", -- 1 and 2
            }},
            {class_name = "button", name = "bye_btn", parent_pass_count = 1, {
              caption = "bye", -- 1 and 2
            }},
          },
        }},
      },
    }
  end,

  -- the basic classes look at the passed_parent,
  -- which got evaluated using parent_pass_count
  on_click_hi_btn = function(self, hi_btn, event)
    hi_btn.elem.caption = hi_btn.elem.caption .. "!"
  end,

  on_click_bye_btn = function(self, bye_btn, event)
    self:destroy() -- 3
  end,
}

script.on_event(defines.events.on_player_created, function(event)
  local player = game.get_player(event.player_index)

  gui_handler.create(player.gui.screen, "passed-parent")
end)