예제 #1
0
    def runner():

      # Load layout
      self.setup()
      assets = nwidget.Assets()
      theme_path = assets.resolve("..", "..", "assets", "theme", "light")
      theme = nwidget.theme.Light(theme_path, self._window)
      self.layout = nwidget.Layout(self._window, theme, None, assets.resolve("ui/sample1.py"))

      # Model
      self.model = {"main_button_enabled": True, "updated": True, "main_text": "Try clicking me"}

      # events
      def click_event(code, widget):
        self.model = {"main_button_enabled": False, "main_text": "DISABLED", "updated": True}
      nwidget.listen("MAIN_BUTTON_CLICK", click_event)

      def swap_debug(code, widget):
        self.debug = not self.debug
        self.layout.show_edges(self.debug)
        self.layout.show_bounds(self.debug)
      self.show_debug = True
      nwidget.listen("DEBUG_CLICK", swap_debug)

      # Turn on debugging
      self.layout.watch()
      self.layout.show_edges(True)
      self.layout.show_bounds(True)
예제 #2
0
        def runner():

            # Load layout
            self.setup()
            assets = nwidget.Assets()
            theme_path = assets.resolve("..", "..", "assets", "theme", "light")
            theme = nwidget.theme.Light(theme_path, self._window)
            self.layout = nwidget.Layout(self._window, theme, assets,
                                         assets.resolve("ui/sample1.py"))

            # Model
            self.model = {
                "main_button_enabled": True,
                "updated": True,
                "main_text": "Try clicking me"
            }

            # events
            def click_event(code, widget):
                print("EVENT!")
                self.model = {
                    "main_button_enabled": False,
                    "main_text": "DISABLED",
                    "updated": True
                }

            nwidget.listen("MAIN_BUTTON_CLICK", click_event)

            # Turn on debugging
            self.layout.watch()
            self.layout.show_edges(True)
            self.layout.show_bounds(True)
  def __init__(self):
    a = nwidget.Assets()
    super(LayoutUi, self).__init__(
      nwidget.theme.Gothic, 
      a.resolve("..", "..", "assets", "theme", "gothic"),
      a.resolve("ui", "sample.py"),
      a.resolve("ui")
    )

    # Model
    self.model = {"main_button_enabled": True, "updated": True, "main_text": "Try clicking me", "turn_off": False}

    # Events
    nwidget.listen("MAIN_BUTTON_CLICK", self.click_event)
예제 #4
0
  def __init__(self):
    a = nwidget.Assets()
    super(LayoutUi, self).__init__(
      nwidget.theme.Gothic, 
      a.resolve("..", "..", "assets", "theme", "gothic"),
      a.resolve("ui", "sample.py"),
      a.resolve("ui")
    )

    # Model
    self.model = {"main_button_enabled": True, "updated": True, "main_text": "Try clicking me", "turn_off": False}

    # Events
    nwidget.listen("MAIN_BUTTON_CLICK", self.click_event)
예제 #5
0
    def load_objects(self):

        assets = self.assets

        # Clear events from other views
        nwidget.events.clear(cocos.director.director.window)
        self.is_event_handler = True

        # View model & ui
        self.model = {
            "score": 0,
            "dead": False,
            "updated": False,
            "play_time": 0,
        }
        self.ui = model.Ui("game.py", self.model)
        self.add(self.ui, z=1)  # Above the background

        # bind events
        nwidget.listen("GAME_RESTART", self.on_restart)
        nwidget.listen("GAME_GOTO_MENU", self.on_menu)

        # Background
        bg = model.Background(assets)
        self.add(bg.node)

        # Add path and snake
        self.snake = model.Snake(assets)
        self.path = model.Path()
        width, height = cocos.director.director.get_window_size()
        x = width / 2
        y = height / 2
        self.snake.jump(x, y)
        self.path.jump(x, y)
        self.add(self.snake.node)
        self.add(self.path)
        self.bounds = (0, 0, width, height)

        # Direction
        self.snake.right()
        self.vector = "RIGHT"
        self.speed = SNAKE_SPEED

        # Are we paused because we died?
        self.dead = False

        # Start~
        self.marker = None
        self.inc_dt = 0
        self.generate_marker()
예제 #6
0
  def load_objects(self):

    assets = self.assets

    # Clear events from other views
    nwidget.events.clear(cocos.director.director.window)
    self.is_event_handler = True

    # View model & ui
    self.model = {
      "score" : 0,
      "dead" : False,
      "updated" : False,
      "play_time" : 0,
    }
    self.ui = model.Ui("game.py", self.model)
    self.add(self.ui, z=1) # Above the background

    # bind events
    nwidget.listen("GAME_RESTART", self.on_restart)
    nwidget.listen("GAME_GOTO_MENU", self.on_menu)

    # Background
    bg = model.Background(assets)
    self.add(bg.node)

    # Add path and snake
    self.snake = model.Snake(assets)
    self.path = model.Path()
    width, height = cocos.director.director.get_window_size()
    x = width / 2
    y = height / 2
    self.snake.jump(x, y)
    self.path.jump(x, y)
    self.add(self.snake.node)
    self.add(self.path)
    self.bounds = (0, 0, width, height)

    # Direction
    self.snake.right()
    self.vector = "RIGHT"
    self.speed = SNAKE_SPEED

    # Are we paused because we died?
    self.dead = False

    # Start~
    self.marker = None
    self.inc_dt = 0
    self.generate_marker()
예제 #7
0
  def __init__(self, assets):
    super(CreditsView, self).__init__()

    # Clear events from other views
    nwidget.events.clear(cocos.director.director.window)
    self.is_event_handler = True

    self.ui = model.Ui("credits.py", {})
    self.add(self.ui)

    # Background
    bg = model.Background(assets)
    self.add(bg.node)

    nwidget.listen("CREDITS_MENU", model.Game.menu)
예제 #8
0
        def runner():
            i, a = self.setup()
            i.bounds(50, 50, 100, 100)
            i.add(nwidget.Image(texture=a.resolve("data", "cat.jpg")), "CAT")
            i.add(nwidget.Image(texture=a.resolve("data", "cat2.jpg")), "CAT2")
            i.add(nwidget.Image(texture=a.resolve("data", "panel1.png")),
                  "CAT3")
            i.register(self._window)
            i.on_change = "CHANGED"
            self.__widgets.append(i)

            i, a = self.setup()
            i.bounds(200, 200, 300, 300)
            i.add(nwidget.Image(texture=a.resolve("data", "cat.jpg")), "CAT")
            i.add(nwidget.Image(texture=a.resolve("data", "cat2.jpg")), "CAT2")
            i.add(nwidget.Image(texture=a.resolve("data", "panel1.png")),
                  "CAT3")
            i.disabled_widget = nwidget.Image(
                texture=a.resolve("data", "button_disabled.png"))
            i.register(self._window)
            item = i
            self.__widgets.append(i)

            # Events
            def cb(_, widget):
                print("New state is: %s -> %s" % (widget.index, widget.state))
                if widget.state == "CAT3":
                    item.disabled = True
                    print("Disabled")
                elif item.disabled:
                    item.disabled = False

            nwidget.listen("CHANGED", cb)

            i, a = self.setup()
            i.bounds(10, 200, 100, 290)
            i.add(nwidget.Image(texture=a.resolve("data", "cat.jpg")), "CAT")
            i.add(nwidget.Image(texture=a.resolve("data", "cat2.jpg")), "CAT2")
            i.add(nwidget.Image(texture=a.resolve("data", "panel1.png")),
                  "CAT3")
            i.register(self._window)
            i.index = 2
            self.__widgets.append(i)
예제 #9
0
    def runner():

      # Load layout
      self.setup()
      assets = nwidget.Assets()
      theme_path = assets.resolve("..", "..", "assets", "theme", "light")
      theme = nwidget.theme.Light(theme_path, self._window)
      sassets = nwidget.Assets(assets.resolve("ui"))
      self.layout = nwidget.Layout(self._window, theme, sassets, assets.resolve("ui/sample2.py"))

      # Model
      self.model = {"main_button_enabled": True, "updated": True, "main_text": "Try clicking me", "turn_off": False}

      # events from child layout
      def click_event(code, widget):
        self.model["main_button_enabled"] = False
        self.model["main_text"] = "DISABLED"
        self.model["updated"] = True
      nwidget.listen("MAIN_BUTTON_CLICK", click_event)

      # events from parent layout
      def parent_event(code, widget):
        self.model["turn_off"] = True
        self.model["updated"] = True
      nwidget.listen("TURN_OFF_CHILD_DEBUG", parent_event)

      def parent_event2(code, widget):
        self.layout.show_edges(False)
        self.layout.show_bounds(False)
      nwidget.listen("TURN_OFF_OWN_DEBUG", parent_event2)

      # Turn on debugging by default
      self.layout.watch()
      self.layout.show_edges(True)
      self.layout.show_bounds(True)
예제 #10
0
    def runner():
      i, a = self.setup()
      i.bounds(50, 50, 100, 100)
      i.add(nwidget.Image(texture=a.resolve("data", "cat.jpg")), "CAT")
      i.add(nwidget.Image(texture=a.resolve("data", "cat2.jpg")), "CAT2")
      i.add(nwidget.Image(texture=a.resolve("data", "panel1.png")), "CAT3")
      i.register(self._window)
      i.on_change = "CHANGED"
      self.__widgets.append(i)

      i, a = self.setup()
      i.bounds(200, 200, 300, 300)
      i.add(nwidget.Image(texture=a.resolve("data", "cat.jpg")), "CAT")
      i.add(nwidget.Image(texture=a.resolve("data", "cat2.jpg")), "CAT2")
      i.add(nwidget.Image(texture=a.resolve("data", "panel1.png")), "CAT3")
      i.disabled_widget = nwidget.Image(texture=a.resolve("data", "button_disabled.png"))
      i.register(self._window)
      item = i
      self.__widgets.append(i)

      # Events
      def cb(_, widget):
        print("New state is: %s -> %s" % (widget.index, widget.state))
        if widget.state == "CAT3":
          item.disabled = True
          print("Disabled")
        elif item.disabled:
          item.disabled = False
      nwidget.listen("CHANGED", cb)

      i, a = self.setup()
      i.bounds(10, 200, 100, 290)
      i.add(nwidget.Image(texture=a.resolve("data", "cat.jpg")), "CAT")
      i.add(nwidget.Image(texture=a.resolve("data", "cat2.jpg")), "CAT2")
      i.add(nwidget.Image(texture=a.resolve("data", "panel1.png")), "CAT3")
      i.register(self._window)
      i.index = 2
      self.__widgets.append(i)
예제 #11
0
    def runner():
      self.__widgets = []
      self.enable_blending()

      # Multiline label with edge wrapping
      i, a = self.setup()
      i.bounds(50, 110, 250, 210)
      i.text = "Hello World Thd sf s dfas df sdf dsf adf dsf dsf dsaf dsa fdsaf adsf adsf asdf asdf"
      i.font = a.resolve("data", "roboto.ttf")
      i.color = (255, 255, 0, 255)
      i.size = 10
      i.panel = a.resolve("data", "textbox_panel1.png")
      i.panel_focus = a.resolve("data", "textbox_panel2.png")
      i.register(self._window)
      i0 = i
      self.__widgets.append(i)
      
      # Single line label
      i, a = self.setup()
      i.bounds(10, 250, 390, 330)
      i.text = "Hello World"
      i.font = a.resolve("data", "roboto.ttf")
      i.color = (30, 30, 30, 255)
      i.multiline = False
      i.size = 12
      i.limit = 30
      i.register(self._window)
      i.panel = a.resolve("data", "textbox_panel1.png")
      i.panel_focus = a.resolve("data", "textbox_panel2.png")
      i.on_change = "TEXT_CHANGE"
      i.padding = 20
      i1 = i
      self.__widgets.append(i)

      def cb(code, widget):
        print("New text: %s" % widget.text)
      nwidget.listen("TEXT_CHANGE", cb)
예제 #12
0
    def __init__(self, assets):
        super(MainView, self).__init__()

        # Clear events from other views
        nwidget.events.clear(cocos.director.director.window)
        self.is_event_handler = True

        self.ui = model.Ui("menu.py", {})
        self.add(self.ui, z=1)

        nwidget.listen("MENU_PLAY_GAME", model.Game.play)
        nwidget.listen("MENU_CREDITS", model.Game.credits)
        nwidget.listen("MENU_EXIT", model.Game.exit)

        # Background
        bg = model.Background(assets)
        self.add(bg.node)
예제 #13
0
  def __init__(self, assets):
    super(MainView, self).__init__()

    # Clear events from other views
    nwidget.events.clear(cocos.director.director.window)
    self.is_event_handler = True

    self.ui = model.Ui("menu.py", {})
    self.add(self.ui, z=1)

    nwidget.listen("MENU_PLAY_GAME", model.Game.play)
    nwidget.listen("MENU_CREDITS", model.Game.credits)
    nwidget.listen("MENU_EXIT", model.Game.exit)

    # Background
    bg = model.Background(assets)
    self.add(bg.node)
예제 #14
0
        def runner():

            # Load layout
            self.setup()
            assets = nwidget.Assets()
            theme_path = assets.resolve("..", "..", "assets", "theme", "light")
            theme = nwidget.theme.Light(theme_path, self._window)
            sassets = nwidget.Assets(assets.resolve("ui"))
            self.layout = nwidget.Layout(self._window, theme, sassets,
                                         assets.resolve("ui/sample2.py"))

            # Model
            self.model = {
                "main_button_enabled": True,
                "updated": True,
                "main_text": "Try clicking me",
                "turn_off": False
            }

            # events from child layout
            def click_event(code, widget):
                self.model["main_button_enabled"] = False
                self.model["main_text"] = "DISABLED"
                self.model["updated"] = True

            nwidget.listen("MAIN_BUTTON_CLICK", click_event)

            # events from parent layout
            def parent_event(code, widget):
                self.model["turn_off"] = True
                self.model["updated"] = True

            nwidget.listen("TURN_OFF_CHILD_DEBUG", parent_event)

            def parent_event2(code, widget):
                self.layout.show_edges(False)
                self.layout.show_bounds(False)

            nwidget.listen("TURN_OFF_OWN_DEBUG", parent_event2)

            # Turn on debugging by default
            self.layout.watch()
            self.layout.show_edges(True)
            self.layout.show_bounds(True)
예제 #15
0
        def runner():

            # Global setup
            self.__widgets = []
            self.enable_blending()
            a = nwidget.Assets()

            # Text button select with both buttons
            b_next = nwidget.Button(text="next", on_click="S_NEXT_1")
            b_prev = nwidget.Button(text="prev", on_click="S_NEXT_2")
            items = nwidget.HList()
            marker = nwidget.Block(solid=False, color=(255, 0, 0, 255))

            b_prev.bounds(10, 10, 50, 50)
            items.bounds(50, 10, 200, 50)
            b_next.bounds(200, 10, 240, 50)

            selector = nwidget.Select(next=b_next,
                                      prev=b_prev,
                                      marker=marker,
                                      list=items)
            selector.on_change = "SELECTED"

            for i in range(10):
                b = nwidget.Block(solid=True, color=(0, 0, 25 * i, 255))
                selector.add(b, "ITEM_" + str(i), -1, 10 * i)
            selector.index = 3

            selector.register(self._window)
            b_prev.register(self._window)
            b_next.register(self._window)
            self.__widgets.append(selector)

            def scb1(_, widget):
                print("Currently selected item is: %s" % widget.selected)

            nwidget.listen("SELECTED", scb1)

            # Vertical list with image buttons, marker, and restricted display count
            b_next = nwidget.ImageButton(on_click="SELECT_2")
            b_next.from_row(a.resolve("data", "arrows.png"), (0, 0, 1, 0.25))
            marker = nwidget.Block(solid=False, color=(255, 255, 255, 255))
            items = nwidget.VList(padding=5)

            items.bounds(10, 100, 60, 340)
            b_next.bounds(10, 340, 60, 390)

            selector = nwidget.Select(next=b_next, list=items, marker=marker)

            for i in range(10):
                img = nwidget.Image(texture=a.resolve("data", "select1.png"))
                low = 0.1 * i
                high = 0.1 * (i + 1)
                img.uv = (low, low, low, high, high, high, high, low)
                selector.add(img, "ITEM_" + str(i))

            selector.index = 0
            selector.display_count = 5

            b_next.register(self._window)
            selector.register(self._window)
            self.__widgets.append(selector)

            # Image buttons, active item enabled only
            # The marker here is a semi-transparent image overlay
            b_next = nwidget.ImageButton(on_click="SELECT_3_NEXT")
            b_next.from_row(a.resolve("data", "arrows.png"), (0, 0.75, 1, 1))
            b_prev = nwidget.ImageButton(
                on_click="SELECT_3_PREV")  # <-- different event code
            b_prev.from_row(a.resolve("data", "arrows.png"), (0, 0.25, 1, 0.5))
            marker = nwidget.Image(texture=a.resolve("data", "marker1.png"))
            items = nwidget.HList(padding=5)

            items.bounds(150, 200, 350, 250)
            b_prev.bounds(100, 200, 150, 250)
            b_next.bounds(350, 200, 400, 250)

            selector = nwidget.Select(next=b_next,
                                      list=items,
                                      marker=marker,
                                      prev=b_prev)
            selector.display_count = 5
            selector.index = 2
            selector.display_start = 0
            selector.on_change = "SELECT_3_UPDATE"

            for i in range(10):
                b = nwidget.ImageButton()
                b.texture = a.resolve("data", "select2.png")
                b.texture_over = a.resolve("data", "select2.png")
                b.texture_down = a.resolve("data", "select2.png")
                b.texture_disabled = a.resolve("data", "select2.png")
                xo = i * 0.1
                xe = xo + 0.1
                b.uv = (xo, 0.3, xe, 0.3, xe, 0.4, xo, 0.4)
                b.uv_over = (xo, 0.2, xe, 0.2, xe, 0.3, xo, 0.3)
                b.uv_down = (xo, 0.1, xe, 0.1, xe, 0.2, xo, 0.2)
                b.uv_disabled = (xo, 0, xe, 0, xe, 0.1, xo, 0.1)
                b.register(self._window)
                if i != selector.index:
                    b.disabled = True
                selector.add(b, "BUTTON_" + str(i))

            def scb3(_, w):
                for i in range(10):
                    wx = w.item(i)
                    wx.disabled = not (i == w.index)
                    pass

            nwidget.listen("SELECT_3_UPDATE", scb3)

            b_next.register(self._window)
            b_prev.register(self._window)
            selector.register(self._window)
            self.__widgets.append(selector)
예제 #16
0
 def runner():
   
   # Global setup
   self.__widgets = []
   self.enable_blending()
   
   # Common event callback
   def callback(code, button):
     button.disabled = True
     
   # Garish button to demo actions
   b1, a = self.setup()
   b1.texture = a.resolve("data", "image_button1.png")
   b1.texture_over = a.resolve("data", "image_button1.png")
   b1.texture_down = a.resolve("data", "image_button1.png")
   b1.texture_disabled = a.resolve("data", "image_button1.png")
   b1.uv = (0, 0.75, 1, 0.75, 1, 1, 0, 1)
   b1.uv_over = (0, 0.5, 1, 0.5, 1, 0.75, 0, 0.75)
   b1.uv_down = (0, 0.25, 1, 0.25, 1, 0.5, 0, 0.5)
   b1.uv_disabled = (0, 0, 1, 0, 1, 0.25, 0, 0.25)
   b1.bounds(10, 10, 138, 42)
   b1.on_click = "IBTN1"
   b1.register(self._window) # <--- Notice how you must attach the widget to the pyglet event system
   self.__widgets.append(b1)
   nwidget.listen("IBTN1", callback)
   
   # Square button test
   b2, a = self.setup()
   b2.from_square(a.resolve("data", "image_button2.png"))
   b2.on_click = "IBTN2"
   b2.bounds(100, 100, 164, 164)
   b2.register(self._window)
   self.__widgets.append(b2)
   nwidget.listen("IBTN2", callback)
   
   # Subtexture button tests
   b3, a = self.setup()
   b3.from_square(a.resolve("data", "image_button3.png"), (0.5, 0, 1, 0.5))
   b3.on_click = "IBTN3"
   b3.bounds(10, 300, 72, 364)
   b3.register(self._window)
   self.__widgets.append(b3)
   nwidget.listen("IBTN3", callback)
   
   b4, a = self.setup()
   b4.from_square(a.resolve("data", "image_button3.png"), (0.5, 0, 1, 0.5))
   b4.on_click = "IBTN4"
   b4.bounds(100, 300, 164, 364)
   b4.register(self._window)
   self.__widgets.append(b4)
   nwidget.listen("IBTN4", callback)
   b4.click()
   
   b5, a = self.setup()
   b5.from_row(a.resolve("data", "image_button3.png"), (0, 0.75, 1, 1))
   b5.on_click = "IBTN5"
   b5.bounds(200, 300, 264, 364)
   b5.register(self._window)
   self.__widgets.append(b5)
   nwidget.listen("IBTN5", callback)
   
   b6, a = self.setup()
   b6.from_column(a.resolve("data", "image_button3.png"), (0, 0, 0.25, 1))
   b6.on_click = "IBTN6"
   b6.bounds(300, 300, 364, 364)
   b6.register(self._window)
   self.__widgets.append(b6)
   nwidget.listen("IBTN6", callback)
예제 #17
0
        def runner():

            # Global setup
            self.__widgets = []
            self.enable_blending()

            # Common event callback
            def callback(code, button):
                button.disabled = True

            # Garish button to demo actions
            b1, a = self.setup()
            b1.texture = a.resolve("data", "image_button1.png")
            b1.texture_over = a.resolve("data", "image_button1.png")
            b1.texture_down = a.resolve("data", "image_button1.png")
            b1.texture_disabled = a.resolve("data", "image_button1.png")
            b1.uv = (0, 0.75, 1, 0.75, 1, 1, 0, 1)
            b1.uv_over = (0, 0.5, 1, 0.5, 1, 0.75, 0, 0.75)
            b1.uv_down = (0, 0.25, 1, 0.25, 1, 0.5, 0, 0.5)
            b1.uv_disabled = (0, 0, 1, 0, 1, 0.25, 0, 0.25)
            b1.bounds(10, 10, 138, 42)
            b1.on_click = "IBTN1"
            b1.register(
                self._window
            )  # <--- Notice how you must attach the widget to the pyglet event system
            self.__widgets.append(b1)
            nwidget.listen("IBTN1", callback)

            # Square button test
            b2, a = self.setup()
            b2.from_square(a.resolve("data", "image_button2.png"))
            b2.on_click = "IBTN2"
            b2.bounds(100, 100, 164, 164)
            b2.register(self._window)
            self.__widgets.append(b2)
            nwidget.listen("IBTN2", callback)

            # Subtexture button tests
            b3, a = self.setup()
            b3.from_square(a.resolve("data", "image_button3.png"),
                           (0.5, 0, 1, 0.5))
            b3.on_click = "IBTN3"
            b3.bounds(10, 300, 72, 364)
            b3.register(self._window)
            self.__widgets.append(b3)
            nwidget.listen("IBTN3", callback)

            b4, a = self.setup()
            b4.from_square(a.resolve("data", "image_button3.png"),
                           (0.5, 0, 1, 0.5))
            b4.on_click = "IBTN4"
            b4.bounds(100, 300, 164, 364)
            b4.register(self._window)
            self.__widgets.append(b4)
            nwidget.listen("IBTN4", callback)
            b4.click()

            b5, a = self.setup()
            b5.from_row(a.resolve("data", "image_button3.png"),
                        (0, 0.75, 1, 1))
            b5.on_click = "IBTN5"
            b5.bounds(200, 300, 264, 364)
            b5.register(self._window)
            self.__widgets.append(b5)
            nwidget.listen("IBTN5", callback)

            b6, a = self.setup()
            b6.from_column(a.resolve("data", "image_button3.png"),
                           (0, 0, 0.25, 1))
            b6.on_click = "IBTN6"
            b6.bounds(300, 300, 364, 364)
            b6.register(self._window)
            self.__widgets.append(b6)
            nwidget.listen("IBTN6", callback)
예제 #18
0
    def runner():

      # Global setup
      self.__widgets = []
      self.enable_blending()
      a = nwidget.Assets()

      # Text button select with both buttons
      b_next = nwidget.Button(text="next", on_click="S_NEXT_1")
      b_prev = nwidget.Button(text="prev", on_click="S_NEXT_2")
      items = nwidget.HList()
      marker = nwidget.Block(solid=False, color=(255, 0, 0, 255))

      b_prev.bounds(10, 10, 50, 50)
      items.bounds(50, 10, 200, 50)
      b_next.bounds(200, 10, 240, 50)

      selector = nwidget.Select(next=b_next, prev=b_prev, marker=marker, list=items)
      selector.on_change = "SELECTED"

      for i in range(10):
        b = nwidget.Block(solid=True, color=(0, 0, 25 * i, 255))
        selector.add(b, "ITEM_" + str(i), -1, 10 * i)
      selector.index = 3

      selector.register(self._window)
      b_prev.register(self._window)
      b_next.register(self._window)
      self.__widgets.append(selector)

      def scb1(_, widget):
        print("Currently selected item is: %s" % widget.selected)

      nwidget.listen("SELECTED", scb1)

      # Vertical list with image buttons, marker, and restricted display count
      b_next = nwidget.ImageButton(on_click="SELECT_2")
      b_next.from_row(a.resolve("data", "arrows.png"), (0, 0, 1, 0.25))
      marker = nwidget.Block(solid=False, color=(255, 255, 255, 255))
      items = nwidget.VList(padding=5)

      items.bounds(10, 100, 60, 340)
      b_next.bounds(10, 340, 60, 390)

      selector = nwidget.Select(next=b_next, list=items, marker=marker)

      for i in range(10):
        img = nwidget.Image(texture=a.resolve("data", "select1.png"))
        low = 0.1 * i
        high = 0.1 * (i + 1)
        img.uv = (low, low, low, high, high, high, high, low)
        selector.add(img, "ITEM_" + str(i))

      selector.index = 0
      selector.display_count = 5

      b_next.register(self._window)
      selector.register(self._window)
      self.__widgets.append(selector)

      # Image buttons, active item enabled only
      # The marker here is a semi-transparent image overlay
      b_next = nwidget.ImageButton(on_click="SELECT_3_NEXT")
      b_next.from_row(a.resolve("data", "arrows.png"), (0, 0.75, 1, 1))
      b_prev = nwidget.ImageButton(on_click="SELECT_3_PREV") # <-- different event code
      b_prev.from_row(a.resolve("data", "arrows.png"), (0, 0.25, 1, 0.5))
      marker = nwidget.Image(texture=a.resolve("data", "marker1.png"))
      items = nwidget.HList(padding=5)

      items.bounds(150, 200, 350, 250)
      b_prev.bounds(100, 200, 150, 250)
      b_next.bounds(350, 200, 400, 250)

      selector = nwidget.Select(next=b_next, list=items, marker=marker, prev=b_prev)
      selector.display_count = 5
      selector.index = 2
      selector.display_start = 0
      selector.on_change = "SELECT_3_UPDATE"

      for i in range(10):
        b = nwidget.ImageButton()
        b.texture = a.resolve("data", "select2.png")
        b.texture_over = a.resolve("data", "select2.png")
        b.texture_down = a.resolve("data", "select2.png")
        b.texture_disabled = a.resolve("data", "select2.png")
        xo = i * 0.1
        xe = xo + 0.1
        b.uv = (xo, 0.3, xe, 0.3, xe, 0.4, xo, 0.4)
        b.uv_over = (xo, 0.2, xe, 0.2, xe, 0.3, xo, 0.3)
        b.uv_down = (xo, 0.1, xe, 0.1, xe, 0.2, xo, 0.2)
        b.uv_disabled = (xo, 0, xe, 0, xe, 0.1, xo, 0.1)
        b.register(self._window)
        if i != selector.index:
          b.disabled = True
        selector.add(b, "BUTTON_" + str(i))

      def scb3(_, w):
        for i in range(10):
          wx = w.item(i)
          wx.disabled = not (i == w.index)
          pass
      nwidget.listen("SELECT_3_UPDATE", scb3)

      b_next.register(self._window)
      b_prev.register(self._window)
      selector.register(self._window)
      self.__widgets.append(selector)
예제 #19
0
        def runner():
            a, i = self.setup()
            a.notNull(i, "Failed to create test instance")

            self.__widgets = []

            panel = i.panel()
            panel.bounds(10, 10, 150, 390)
            self.__widgets.append(panel)

            panel = i.panel()
            panel.bounds(160, 10, 390, 390)
            self.__widgets.append(panel)

            panel = i.panel()
            panel.bounds(410, 10, 790, 390)
            self.__widgets.append(panel)

            button = i.button()
            button.bounds(20, 315, 140, 345)
            button.text = "Button Two"
            button.disabled = True
            ref = button
            self.__widgets.append(
                button
            )  # <--- Notice the theme transparently invokes register() internally

            button = i.button()
            button.bounds(20, 350, 140, 380)
            button.text = "Enable"
            button.on_click = "BUTTON_SWAP_STATE"
            self.__widgets.append(button)

            boxes = nwidget.VList(padding=10)
            boxes.bounds(40, 190, 160, 300)
            boxes.add(i.checkbox(), 10, 10)
            boxes.add(i.checkbox(), 20, 20)
            boxes.add(i.checkbox(), 20, 20)
            boxes.add(i.checkbox(), 30, 30)
            boxes.item(2).disabled = True
            self.__widgets.append(boxes)

            def callback(code, button):
                if button.text == "Enable":
                    ref.disabled = False
                    boxes.item(2).disabled = False
                    button.text = "Disable"
                else:
                    ref.disabled = True
                    boxes.item(2).disabled = True
                    button.text = "Enable"

            nwidget.listen("BUTTON_SWAP_STATE", callback)

            bars = nwidget.VList(padding=5)
            bars.bounds(20, 80, 140, 180)
            bars.add(i.progress())
            bars.add(i.progress())
            bars.add(i.progress())
            bars.add(i.progress())
            bars.add(i.progress())
            bars.item(0).value = 0
            bars.item(1).value = 0.25
            bars.item(2).value = 0.5
            bars.item(3).value = 0.75
            bars.item(4).value = 1
            self.__widgets.append(bars)

            display_box = i.subpanel()
            display_box.bounds(180, 100, 370, 250)
            self.__widgets.append(display_box)

            display = i.text()
            display.bounds(192, 100, 370, 239)
            display.text = ": Text goes here!\n: Press enter to see more!"
            display.keep = 8
            self.__widgets.append(display)

            arrows = nwidget.HList(padding=4)
            arrows.bounds(25, 40, 140, 65)
            self.__widgets.append(arrows)

            a1 = i.arrow_left()
            a1.on_click = "ARROW_CLICK"
            arrows.add(a1, width=25)

            a2 = i.arrow_right()
            a2.on_click = "ARROW_CLICK"
            arrows.add(a2, width=25)

            a3 = i.arrow_up()
            a3.on_click = "ARROW_CLICK"
            arrows.add(a3, width=25)

            a4 = i.arrow_down()
            a4.on_click = "ARROW_CLICK"
            arrows.add(a4, width=25)

            def disable_it(code, widget):
                widget.disabled = True

            nwidget.listen("ARROW_CLICK", disable_it)

            hint = i.hint()
            hint.bounds(180, 75, 370, 90)
            hint.text = "Type below and press enter to update text list"
            self.__widgets.append(hint)

            textbox = i.textbox()
            textbox.bounds(180, 30, 370, 70)
            textbox.text = "Type stuff here..."
            textbox.on_focus = "TB1_FOCUS"
            textbox.on_enter = "TB1_SUBMIT"
            textbox.limit = 20
            textbox.multiline = False
            self.__widgets.append(textbox)

            def clear_tb(_, widget):
                widget.text = ""

            def submit_tb(_, widget):
                display.append(": " + widget.text)
                widget.text = ""

            nwidget.listen("TB1_FOCUS", clear_tb)
            nwidget.listen("TB1_SUBMIT", submit_tb)

            header = i.header()
            header.text = "Light Theme Test"
            header.bounds(180, 330, 370, 390)
            self.__widgets.append(header)

            subheader = i.subheader()
            subheader.text = "subheading here"
            subheader.bounds(180, 300, 370, 370)
            self.__widgets.append(subheader)

            info = i.text()
            info.bounds(180, 250, 370, 320)
            info.text = "Bacon ipsum dolor sit amet turkey shoulder biltong leberkas corned beef turducken hamburger sirloin. Short loin"
            self.__widgets.append(info)

            header = i.header()
            header.text = "Options test"
            header.bounds(430, 330, 790, 390)
            self.__widgets.append(header)

            block = nwidget.VList(padding=10)
            block.bounds(430, 130, 760, 435)
            self.__widgets.append(block)

            label = i.label()
            label.text = "Value 43:"

            bar = i.progress()
            bar.value = 0.34

            item = nwidget.HList(padding=25)
            item.add(label, 150)
            item.add(bar, height=15)

            block.add(item, height=25)

            label = i.label()
            label.text = "Awesomenesss:"

            bar = i.progress()
            bar.value = 1.0

            item = nwidget.HList(padding=25)
            item.add(label, 150)
            item.add(bar, height=20)

            block.add(item, -1, 25)

            label = i.label()
            label.text = "Anonymous statistics:"

            box = i.checkbox()
            box.change()

            item = nwidget.HList(padding=25)
            item.add(label, 150)
            item.add(box, 20, 20)

            block.add(item, -1, 25)

            label = i.label()
            label.text = "Debug mode:"

            box = i.checkbox()

            item = nwidget.HList(padding=25)
            item.add(label, 150)
            item.add(box, 20, 20)

            block.add(item, -1, 25)

            label = i.label()
            label.text = "More ninjas:"

            box = i.checkbox()

            item = nwidget.HList(padding=25)
            item.add(label, 150)
            item.add(box, 20, 20)

            block.add(item, -1, 25)

            label = i.label()
            label.text = "Select resolution:"

            options = i.options({
                "LOW": "640 x 480",
                "MEDIUM": "800 x 600",
                "HIGH": "1024 x 768",
                "NORMAL": "1200 x 1600"
            })

            item = nwidget.HList(padding=25)
            item.add(label, 150)
            item.add(options, height=32)

            block.add(item, -1, 25)

            ok = i.accept()
            ok.on_click = "ARROW_CLICK"
            ok.bounds(720, 90, 752, 122)
            self.__widgets.append(ok)

            reject = i.reject()
            reject.on_click = "ARROW_CLICK"
            reject.bounds(755, 360, 771, 376)
            self.__widgets.append(reject)
예제 #20
0
    def runner():
      self.__widgets = []
      self.enable_blending()

      # Multiline label with edge wrapping
      i, a = self.setup()
      i.bounds(50, 110, 250, 210)
      i.text = "Hello World Thd sf s dfas df sdf dsf adf dsf dsf dsaf dsa fdsaf adsf adsf asdf asdf"
      i.font = a.resolve("data", "roboto.ttf")
      i.color = (255, 255, 0, 255)
      i.size = 10
      i.register(self._window)
      i0 = i
      self.__widgets.append(i)
      
      # Single line label
      i, a = self.setup()
      i.bounds(10, 250, 390, 300)
      i.text = "Hello World"
      i.font = a.resolve("data", "roboto.ttf")
      i.color = (30, 30, 30, 255)
      i.multiline = False
      i.size = 12
      i.limit = 30
      i.register(self._window)
      i.on_change = "TEXT_CHANGE"
      i1 = i
      self.__widgets.append(i)

      def cb(code, widget):
        print("New text: %s" % widget.text)
      nwidget.listen("TEXT_CHANGE", cb)
      
      # Buttons to control focus
      b = nwidget.Button(text="Focus")
      b.bounds(50, 80, 150, 100)
      b.on_click = "B1"
      b.register(self._window)
      def cb(code, button):
        i0.focus()
        i1.focus(False)
      nwidget.listen("B1", cb)
      self.__widgets.append(b)
      
      b = nwidget.Button(text="Focus")
      b.bounds(10, 310, 110, 340)
      b.on_click = "B2"
      b.register(self._window)
      def cb2(code, button):
        i1.focus()
        i0.focus(False)
      nwidget.listen("B2", cb2)
      self.__widgets.append(b)
      
      # Display bounds for labels
      set = []
      for w in self.__widgets:
        if isinstance(w, nwidget.TextArea):
          b = nwidget.Block(solid=True)
          b.bounds(w.xmin, w.ymin, w.xmax, w.ymax)
          b.color = (150, 150, 150, 255)
          set.append(b)
      for b in set:
        self.__widgets.insert(0, b)  
예제 #21
0
        def runner():

            # Global setup
            self.__widgets = []
            self.enable_blending()

            # Garish button to demo actions
            b1, a = self.setup()
            b1.frame = (255, 0, 0, 255)
            b1.frame_over = (0, 255, 0, 255)
            b1.frame_down = (0, 0, 255, 255)
            b1.frame_disabled = (10, 10, 10, 255)
            b1.font_color = (100, 0, 0, 255)
            b1.font_over = (0, 100, 0, 255)
            b1.font_down = (0, 0, 100, 255)
            b1.font_disabled = (90, 90, 90, 255)
            b1.text = "Hello World Button"
            b1.font = a.resolve("data", "roboto.ttf")
            b1.font_size = 12
            b1.on_click = "GARISH_BUTTON"
            b1.bounds(10, 10, 390, 50)
            b1.magic = 0
            b1.register(
                self._window
            )  # <--- Notice how you must attach the widget to the pyglet event system
            self.__widgets.append(b1)

            # Callback test on b1
            def callback(code, button):
                button.magic += 1
                button.text = "Clicked %d times" % button.magic

            nwidget.listen("GARISH_BUTTON", callback)

            # Trigger a few fake clicks
            nwidget.events.trigger("GARISH_BUTTON", b1)
            nwidget.events.trigger("GARISH_BUTTON", b1)
            nwidget.events.trigger("GARISH_BUTTON", b1)
            nwidget.events.trigger("GARISH_BUTTON", b1)

            # Garish button to demo disabled
            b2, a = self.setup()
            b2.frame = (255, 0, 0, 255)
            b2.frame_over = (0, 255, 0, 255)
            b2.frame_down = (0, 0, 255, 255)
            b2.frame_disabled = (100, 100, 100, 255)
            b2.font_color = (100, 0, 0, 255)
            b2.font_over = (0, 100, 0, 255)
            b2.font_down = (0, 0, 100, 255)
            b2.font_disabled = (0, 0, 0, 255)
            b2.text = "Disabled button"
            b2.font = a.resolve("data", "roboto.ttf")
            b2.font_size = 10
            b2.on_click = "GARISH_BUTTON_2"
            b2.bounds(50, 50, 200, 80)
            b2.disabled = True
            b2.register(self._window)
            self.__widgets.insert(0, b2)

            # Normalish button
            b3, a = self.setup()
            b3.frame = (205, 205, 205, 255)
            b3.frame_over = (205, 205, 215, 255)
            b3.frame_down = (90, 90, 90, 255)
            b3.font_color = (100, 100, 100, 255)
            b3.font_over = (100, 100, 100, 255)
            b3.font_down = (150, 150, 150, 255)
            b3.text = "Extra wide button content here"
            b3.font = a.resolve("data", "roboto.ttf")
            b3.font_size = 12
            b3.on_click = "BUTTON_3"
            b3.bounds(10, 100, 300, 140)
            b3.register(self._window)
            self.__widgets.append(b3)

            for i in range(5):
                b4, a = self.setup()
                b4.texture = a.resolve("data", "button.png")
                b4.texture_over = a.resolve("data", "button_over.png")
                b4.texture_down = a.resolve("data", "button_down.png")
                b4.texture_disabled = a.resolve("data", "button_disabled.png")
                b4.font_color = (100, 0, 0, 255)
                b4.font_over = (0, 100, 0, 255)
                b4.font_down = (0, 0, 100, 255)
                b4.font_disabled = (90, 90, 90, 255)
                b4.text = "Hello World Button " + str(i)
                b4.font = a.resolve("data", "roboto.ttf")
                b4.font_size = 12
                b4.on_click = "B4"
                b4.bounds(10, 200 + i * 40, 390, 200 + i * 40 + 30)
                b4.register(self._window)
                self.__widgets.append(b4)
예제 #22
0
    def runner():
      
      # Global setup
      self.__widgets = []
      self.enable_blending()
    
      # Garish button to demo actions
      b1, a = self.setup()
      b1.frame = (255, 0, 0, 255)             
      b1.frame_over = (0, 255, 0, 255)        
      b1.frame_down = (0, 0, 255, 255)        
      b1.frame_disabled = (10, 10, 10, 255) 
      b1.font_color = (100, 0, 0, 255)
      b1.font_over = (0, 100, 0, 255)
      b1.font_down = (0, 0, 100, 255)
      b1.font_disabled = (90, 90, 90, 255)
      b1.text = "Hello World Button"                             
      b1.font = a.resolve("data", "roboto.ttf")
      b1.font_size = 12                        
      b1.on_click = "GARISH_BUTTON"                         
      b1.bounds(10, 10, 390, 50)
      b1.magic = 0
      b1.register(self._window)  # <--- Notice how you must attach the widget to the pyglet event system
      self.__widgets.append(b1)

      # Callback test on b1
      def callback(code, button):
        button.magic += 1
        button.text = "Clicked %d times" % button.magic
      nwidget.listen("GARISH_BUTTON", callback)

      # Trigger a few fake clicks
      nwidget.events.trigger("GARISH_BUTTON", b1)
      nwidget.events.trigger("GARISH_BUTTON", b1)
      nwidget.events.trigger("GARISH_BUTTON", b1)
      nwidget.events.trigger("GARISH_BUTTON", b1)
      
      # Garish button to demo disabled
      b2, a = self.setup()
      b2.frame = (255, 0, 0, 255)             
      b2.frame_over = (0, 255, 0, 255)        
      b2.frame_down = (0, 0, 255, 255)        
      b2.frame_disabled = (100, 100, 100, 255) 
      b2.font_color = (100, 0, 0, 255)
      b2.font_over = (0, 100, 0, 255)
      b2.font_down = (0, 0, 100, 255)
      b2.font_disabled = (0, 0, 0, 255)
      b2.text = "Disabled button"
      b2.font = a.resolve("data", "roboto.ttf")
      b2.font_size = 10                        
      b2.on_click = "GARISH_BUTTON_2"                         
      b2.bounds(50, 50, 200, 80)
      b2.disabled = True
      b2.register(self._window)
      self.__widgets.insert(0, b2)

      # Normalish button
      b3, a = self.setup()
      b3.frame = (205, 205, 205, 255)             
      b3.frame_over = (205, 205, 215, 255)        
      b3.frame_down = (90, 90, 90, 255)        
      b3.font_color = (100, 100, 100, 255)
      b3.font_over = (100, 100, 100, 255)
      b3.font_down = (150, 150, 150, 255)
      b3.text = "Extra wide button content here"
      b3.font = a.resolve("data", "roboto.ttf")
      b3.font_size = 12                        
      b3.on_click = "BUTTON_3"                         
      b3.bounds(10, 100, 300, 140)
      b3.register(self._window)
      self.__widgets.append(b3)

      for i in range(5):
        b4, a = self.setup()
        b4.texture = a.resolve("data", "button.png")
        b4.texture_over = a.resolve("data", "button_over.png")
        b4.texture_down = a.resolve("data", "button_down.png")
        b4.texture_disabled = a.resolve("data", "button_disabled.png")
        b4.font_color = (100, 0, 0, 255)
        b4.font_over = (0, 100, 0, 255)
        b4.font_down = (0, 0, 100, 255)
        b4.font_disabled = (90, 90, 90, 255)
        b4.text = "Hello World Button " + str(i)                             
        b4.font = a.resolve("data", "roboto.ttf")
        b4.font_size = 12                        
        b4.on_click = "B4"
        b4.bounds(10, 200 + i * 40, 390, 200 + i * 40 + 30)
        b4.register(self._window)
        self.__widgets.append(b4)
예제 #23
0
    def runner():
      a, i = self.setup()
      a.notNull(i, "Failed to create test instance")
      
      self.__widgets = []

      panel = i.panel()
      panel.bounds(10, 10, 150, 390)
      self.__widgets.append(panel)

      panel = i.panel()
      panel.bounds(160, 10, 390, 390)
      self.__widgets.append(panel)

      panel = i.panel()
      panel.bounds(410, 10, 790, 390)
      self.__widgets.append(panel)

      button = i.button()
      button.bounds(20, 315, 140, 345)
      button.text = "Button Two"
      button.disabled = True
      ref = button
      self.__widgets.append(button)  # <--- Notice the theme transparently invokes register() internally
      
      button = i.button()
      button.bounds(20, 350, 140, 380)
      button.text = "Enable"
      button.on_click = "BUTTON_SWAP_STATE"
      self.__widgets.append(button)

      boxes = nwidget.VList(padding=10)
      boxes.bounds(40, 190, 160, 300)
      boxes.add(i.checkbox(), 10, 10)
      boxes.add(i.checkbox(), 20, 20)
      boxes.add(i.checkbox(), 20, 20)
      boxes.add(i.checkbox(), 30, 30)
      boxes.item(0).disabled = True
      self.__widgets.append(boxes)

      def callback(code, button):
        if button.text == "Enable":
          ref.disabled = False
          boxes.item(0).disabled = False
          button.text = "Disable"
        else:
          ref.disabled = True
          boxes.item(0).disabled = True
          button.text = "Enable"
      nwidget.listen("BUTTON_SWAP_STATE", callback)

      bars = nwidget.VList(padding=5)
      bars.bounds(20, 80, 140, 180)
      bars.add(i.progress())
      bars.add(i.progress())
      bars.add(i.progress())
      bars.add(i.progress())
      bars.add(i.progress())
      bars.item(0).value = 0
      bars.item(1).value = 0.25
      bars.item(2).value = 0.5
      bars.item(3).value = 0.75
      bars.item(4).value = 1
      self.__widgets.append(bars)

      display_box = i.subpanel()
      display_box.bounds(170, 100, 380, 250)
      self.__widgets.append(display_box)

      display = i.text()
      display.bounds(183, 100, 370, 235)
      display.text = ": Text goes here!\n: Press enter to see more!"
      display.color = (0, 0, 0, 255)
      display.keep = 8
      self.__widgets.append(display)

      arrows = nwidget.HList(padding=4)
      arrows.bounds(25, 40, 140, 65)
      self.__widgets.append(arrows)

      a1 = i.arrow_left()
      a1.on_click = "ARROW_CLICK"
      arrows.add(a1, width=25)

      a2 = i.arrow_right()
      a2.on_click = "ARROW_CLICK"
      arrows.add(a2, width=25)

      a3 = i.arrow_up()
      a3.on_click = "ARROW_CLICK"
      arrows.add(a3, width=25)

      a4 = i.arrow_down()
      a4.on_click = "ARROW_CLICK"
      arrows.add(a4, width=25)

      def disable_it(code, widget):
        widget.disabled = True
      nwidget.listen("ARROW_CLICK", disable_it)

      hint = i.hint()
      hint.bounds(180, 75, 370, 90)
      hint.text = "Type below and press enter to update text list"
      self.__widgets.append(hint)

      textbox = i.textbox()
      textbox.bounds(180, 30, 370, 70)
      textbox.text = "Type stuff here..."
      textbox.on_focus = "TB1_FOCUS"
      textbox.on_enter = "TB1_SUBMIT"
      textbox.limit = 20
      textbox.multiline = False
      self.__widgets.append(textbox)

      def clear_tb(_, widget):
        widget.text = ""

      def submit_tb(_, widget):
        display.append(": " + widget.text)
        widget.text = ""

      nwidget.listen("TB1_FOCUS", clear_tb)
      nwidget.listen("TB1_SUBMIT", submit_tb)

      header = i.header()
      header.text = "Light Theme Test"
      header.bounds(180, 330, 370, 390)
      self.__widgets.append(header)

      subheader = i.subheader()
      subheader.text = "subheading here"
      subheader.bounds(180, 300, 370, 370)
      self.__widgets.append(subheader)

      info = i.text()
      info.bounds(180, 250, 370, 320)
      info.text = "Bacon ipsum dolor sit amet turkey shoulder biltong leberkas corned beef turducken hamburger sirloin. Short loin"
      self.__widgets.append(info)

      header = i.header()
      header.text = "Options test"
      header.bounds(430, 330, 790, 390)
      self.__widgets.append(header)

      block = nwidget.VList(padding=10)
      block.bounds(430, 130, 760, 435)
      self.__widgets.append(block)

      label = i.label()
      label.text = "Value 43:"

      bar = i.progress()
      bar.value = 0.34

      item = nwidget.HList(padding=25)
      item.add(label, 150)
      item.add(bar, height=15)

      block.add(item, height=25)

      label = i.label()
      label.text = "Awesomenesss:"

      bar = i.progress()
      bar.value = 1.0

      item = nwidget.HList(padding=25)
      item.add(label, 150)
      item.add(bar, height=20)

      block.add(item, -1, 25)

      label = i.label()
      label.text = "Anonymous statistics:"

      box = i.checkbox()
      box.change()

      item = nwidget.HList(padding=25)
      item.add(label, 150)
      item.add(box, 20, 20)

      block.add(item, -1, 25)

      label = i.label()
      label.text = "Debug mode:"

      box = i.checkbox()

      item = nwidget.HList(padding=25)
      item.add(label, 150)
      item.add(box, 20, 20)

      block.add(item, -1, 25)

      label = i.label()
      label.text = "More ninjas:"

      box = i.checkbox()

      item = nwidget.HList(padding=25)
      item.add(label, 150)
      item.add(box, 20, 20)

      block.add(item, -1, 25)

      label = i.label()
      label.text = "Select resolution:"

      options = i.options({"LOW": "640 x 480", "MEDIUM": "800 x 600", "HIGH": "1024 x 768", "NORMAL": "1200 x 1600"})

      item = nwidget.HList(padding=25)
      item.add(label, 150)
      item.add(options)

      block.add(item, -1, 25)

      ok = i.accept()
      ok.on_click = "ARROW_CLICK"
      ok.bounds(720, 90, 752, 122)
      self.__widgets.append(ok)

      reject = i.reject()
      reject.on_click = "ARROW_CLICK"
      reject.bounds(755, 360, 775, 380)
      self.__widgets.append(reject)
예제 #24
0
        def runner():
            self.__widgets = []
            self.enable_blending()

            # Multiline label with edge wrapping
            i, a = self.setup()
            i.bounds(50, 110, 250, 210)
            i.text = "Hello World Thd sf s dfas df sdf dsf adf dsf dsf dsaf dsa fdsaf adsf adsf asdf asdf"
            i.font = a.resolve("data", "roboto.ttf")
            i.color = (255, 255, 0, 255)
            i.size = 10
            i.register(self._window)
            i0 = i
            self.__widgets.append(i)

            # Single line label
            i, a = self.setup()
            i.bounds(10, 250, 390, 300)
            i.text = "Hello World"
            i.font = a.resolve("data", "roboto.ttf")
            i.color = (30, 30, 30, 255)
            i.multiline = False
            i.size = 12
            i.limit = 30
            i.register(self._window)
            i.on_change = "TEXT_CHANGE"
            i1 = i
            self.__widgets.append(i)

            def cb(code, widget):
                print("New text: %s" % widget.text)

            nwidget.listen("TEXT_CHANGE", cb)

            # Buttons to control focus
            b = nwidget.Button(text="Focus")
            b.bounds(50, 80, 150, 100)
            b.on_click = "B1"
            b.register(self._window)

            def cb(code, button):
                i0.focus()
                i1.focus(False)

            nwidget.listen("B1", cb)
            self.__widgets.append(b)

            b = nwidget.Button(text="Focus")
            b.bounds(10, 310, 110, 340)
            b.on_click = "B2"
            b.register(self._window)

            def cb2(code, button):
                i1.focus()
                i0.focus(False)

            nwidget.listen("B2", cb2)
            self.__widgets.append(b)

            # Display bounds for labels
            set = []
            for w in self.__widgets:
                if isinstance(w, nwidget.TextArea):
                    b = nwidget.Block(solid=True)
                    b.bounds(w.xmin, w.ymin, w.xmax, w.ymax)
                    b.color = (150, 150, 150, 255)
                    set.append(b)
            for b in set:
                self.__widgets.insert(0, b)