sábado, 3 de junho de 2023

estrutura do grafo do menu

 # -*- coding: utf-8 -*-
"""
Created on Sat Jun  3 00:20:08 2023

@author: dan-s
"""

class MenuItem:
    def __init__(self, label, action=None):
        self.label = label
        self.action = action


class MenuGraph:
    def __init__(self):
        self.graph = {}

    def add_item(self, item, parent=None):
        if item not in self.graph:
            self.graph[item] = []
        if parent:
            self.graph[parent].append(item)

    def display(self):
        self._display_menu("", list(self.graph.keys())[0])

    def _display_menu(self, indent, item):
        print(indent + item.label)

        if item.action:
            item.action()

        children = self.graph.get(item, [])
        for child in children:
            self._display_menu(indent + "  ", child)


# Exemplo de uso

# Funções de ação
def action1():
    print("Executing action 1...")

def action2():
    print("Executing action 2...")

def action3():
    print("Executing action 3...")

# Criando os itens de menu
item1 = MenuItem("Item 1", action1)
item2 = MenuItem("Item 2", action2)
item3 = MenuItem("Item 3")
item4 = MenuItem("Item 4", action3)
item5 = MenuItem("Item 5")

# Construindo a estrutura do grafo
menu_graph = MenuGraph()
menu_graph.add_item(item1)
menu_graph.add_item(item2, parent=item1)
menu_graph.add_item(item3, parent=item1)
menu_graph.add_item(item4, parent=item3)
menu_graph.add_item(item5, parent=item3)

# Exibindo o menu
menu_graph.display()
"""Neste exemplo, a classe MenuItem representa cada item do menu, assim como no exemplo anterior. A classe MenuGraph é responsável por criar e gerenciar a estrutura do grafo do menu. O método add_item é usado para adicionar um item ao grafo, especificando seu nó pai (ou seja, o item pai no menu). O método display é usado para exibir o menu na tela, percorrendo o grafo e imprimindo os itens de acordo com as conexões definidas.

As funções de ação são definidas da mesma maneira que no exemplo anterior e são executadas quando um item do menu é selecionado.

Você pode personalizar o exemplo, adicionando mais itens ao menu e definindo as conexões desejadas entre eles usando o método add_item. Certifique-se de ajustar o código conforme necessário para atender às suas necessidades específicas."""

Nenhum comentário:

Postar um comentário