Пример #1
0
class Menu:
    root = None
    is_imagesloaded = [False, False, None]

    text = None
    label = pyglet.text.Label("Images Loaded:",
                              font_name='Times New Roman',
                              font_size=12,
                              x=70,
                              y=640,
                              anchor_x='center',
                              anchor_y='center')
    image_paths = []
    buttons = []
    preview = None

    loader_idle = pyglet.image.load_animation("./resources/images/loading.gif")
    loader_green = pyglet.image.load_animation(
        "./resources/images/loading2.gif")
    bin = pyglet.image.atlas.TextureBin()
    bin_green = pyglet.image.atlas.TextureBin()
    loader_idle.add_to_texture_bin(bin)
    loader_green.add_to_texture_bin(bin)
    loader_sprite = pyglet.sprite.Sprite(img=loader_idle)
    loader_sprite_green = pyglet.sprite.Sprite(img=loader_green)

    folder_button_image = pyglet.image.load(
        './resources/images/button_orange.png')
    folder_button = Button(70, 170, 125, 100, folder_button_image,
                           "Open folder")
    exit_button = Button(70, 50, 125, 100, folder_button_image, "Exit")

    def __init__(self):
        self.loader_sprite.scale = 0.2
        self.loader_sprite.x = 0
        self.loader_sprite.y = 700

        self.loader_sprite_green.scale = 0.2
        self.loader_sprite_green.x = 0
        self.loader_sprite_green.y = 700

        self.exit_button.SetMouseCallback(ExitCallback)
        self.folder_button.SetMouseCallback(OpenFolderCallback)

        self.buttons.append(self.folder_button)
        self.buttons.append(self.exit_button)

    def draw(self):
        pyglet.graphics.draw_indexed(4, pyglet.gl.GL_TRIANGLES,
                                     [0, 1, 2, 0, 2, 3],
                                     ('v2i',
                                      (0, 0, 140, 0, 140, 1080, 0, 1080)),
                                     ('c3B',
                                      (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)))
        for i in self.buttons:
            i.render()

        if self.is_imagesloaded[1]:
            self.loader_sprite_green.draw()
        else:
            self.loader_sprite.draw()
        if self.text is not None:
            self.text.draw()
            self.label.draw()

        if self.preview is not None:
            self.preview.render()

    def update(self, dt):
        for i in self.buttons:
            i.update(dt)
            if i.path is not None:
                self.root = i.path
                i.path = None
                self.LoadImagePaths()

        if self.is_imagesloaded[2] is not None:
            self.LoadImagesLabel()
            self.preview = Preview(self.image_paths, 280, 100)
            self.is_imagesloaded[2] = None

        if self.preview is not None:
            self.preview.update(dt)

    def CheckClicks(self, xc, yc):
        for i in self.buttons:
            i.clicked(xc, yc)

    def CheckFocus(self, xc, yc):
        for i in self.buttons:
            i.focused(xc, yc)
        if self.preview is not None:
            self.preview.onFocus(xc, yc)

    def LoadImagePaths(self):
        x = threading.Thread(target=LoadImagesPaths,
                             args=(
                                 self.root,
                                 self.image_paths,
                                 self.is_imagesloaded,
                             ))
        x.start()

    def LoadImagesLabel(self):
        self.text = pyglet.text.Label(str(self.is_imagesloaded[2]),
                                      font_name='Times New Roman',
                                      font_size=12,
                                      x=70,
                                      y=620,
                                      anchor_x='center',
                                      anchor_y='center')