Пример #1
0
def create_table(table_container):
    global single_vector_input
    global preference_vector

    if custom_preference_vector is not None:
        pref_v = custom_preference_vector
    else:
        pref_v = random_table()

    single_vector_input = []

    container = table_container.get_container()
    container.clear()

    top_size = int(top_offset * 0.6)
    left_size = int(left_offset * 3.0)
    vertical_offset = top_offset
    horizontal_offset = int(left_offset * 3.5)
    for i in range(n_voters):
        vector_input = gui.create_input(
            pygame,
            ui_manager,
            size=(left_size, top_size),
            container=table_container,
            position=(0, vertical_offset * i),
        )

        single_vector_input.append(vector_input)

        voter_name_label = gui.create_label(
            pygame,
            ui_manager,
            size=(left_size, top_size),
            text='Voter ' + str(i + 1),
            container=table_container,
            position=(horizontal_offset, vertical_offset * i),
        )

        container.add_element(vector_input)
        container.add_element(voter_name_label)

        for j in range(n_preferences):
            voter_pref = str(pref_v[i][j])

            preference_label = gui.create_label(
                pygame,
                ui_manager,
                size=(left_size, top_size),
                text=voter_pref,
                container=table_container,
                position=(horizontal_offset * (j + 2), vertical_offset * i),
            )
            container.add_element(preference_label)

    table_container.set_scrollable_area_dimensions(
        (1000, n_voters * vertical_offset))
Пример #2
0
def init_runtime_ui():
    global generate_table_button
    global execute_voting_conditions_button
    global voting_schemes_dropdown
    global voting_strategies_dropdown

    gui.create_label(pygame,
                     ui_manager,
                     position=(int(left_offset * 1.0), int(top_offset * 12.0)),
                     size=(int(left_offset * 14.0), int(top_offset * 1.0)),
                     text='Runtime')

    voting_schemes_dropdown = gui.create_dropdown_button(
        pygame,
        ui_manager,
        opt_list=voting_schemes,
        position=(int(left_offset * 1.0), int(top_offset * 13.5)),
        size=(int(left_offset * 6.0), int(top_offset * 1.0)))
    voting_strategies_dropdown = gui.create_dropdown_button(
        pygame,
        ui_manager,
        opt_list=voting_strategies,
        position=(int(left_offset * 1.0), int(top_offset * 14.5)),
        size=(int(left_offset * 6.0), int(top_offset * 1.0)),
    )

    voting_strategies_dropdown.selected_option = ''

    generate_table_button = gui.create_button(
        pygame,
        ui_manager,
        text='Generate voters table',
        position=(int(left_offset * 9.0), int(top_offset * 13.5)),
        size=(int(left_offset * 6.0), int(top_offset * 1.0)))

    execute_voting_conditions_button = gui.create_button(
        pygame,
        ui_manager,
        text='Execute voting conditions',
        position=(int(left_offset * 9.0), int(top_offset * 14.5)),
        size=(int(left_offset * 6.0), int(top_offset * 1.0)))
Пример #3
0
def create_table_ui():
    gui.create_label(
        pygame,
        ui_manager,
        position=(int(left_offset * 15.5), int(top_offset * 1.0)),
        size=(int(left_offset * 3.0), int(top_offset * 1.0)),
        text='Preference Vector',
    )

    gui.create_label(
        pygame,
        ui_manager,
        position=(int(left_offset * 19.0), int(top_offset * 1.0)),
        size=(int(left_offset * 3.0), int(top_offset * 1.0)),
        text='Voter Name',
    )

    gui.create_label(
        pygame,
        ui_manager,
        position=(int(left_offset * 22.5), int(top_offset * 1.0)),
        size=(int(left_offset * 2.0), int(top_offset * 1.0)),
        text='Pref...',
    )

    rect = pygame.Rect((int(left_offset * 15.5), int(top_offset * 2.5)),
                       (int(left_offset * 9.0), int(top_offset * 12.0)))
    table_container = UIScrollingContainer(
        relative_rect=rect,
        manager=ui_manager,
    )
    return table_container
Пример #4
0
def init_settings_ui():
    global randomize_n_voters_button
    global number_votes_input
    global randomize_n_preferences_button
    global number_preferences_input
    global preference_vector_input
    global save_preference_vector_button
    global response_label

    # init n voters ui
    gui.create_label(pygame,
                     ui_manager,
                     position=(int(left_offset * 1.0), int(top_offset * 2.2)),
                     text='Number of voters',
                     size=(int(left_offset * 4.0), int(top_offset * 1.0)))
    number_votes_input = gui.create_input(pygame,
                                          ui_manager,
                                          size=(int(left_offset * 3.0),
                                                int(top_offset * 0.6)),
                                          position=(int(left_offset * 5.5),
                                                    int(top_offset * 2.5)))
    number_votes_input.set_allowed_characters('numbers')
    number_votes_input.set_text_length_limit(3)
    number_votes_input.set_text(str(n_voters))
    randomize_n_voters_button = gui.create_button(
        pygame,
        ui_manager,
        text='Randomize number of voters',
        size=(int(left_offset * 6.0), int(top_offset * 1.0)),
        position=(int(left_offset * 9.0), int(top_offset * 2.2)))

    # init n preferences ui
    gui.create_label(pygame,
                     ui_manager,
                     position=(int(left_offset * 1.0), int(top_offset * 3.7)),
                     text='Number of preferences',
                     size=(int(left_offset * 4.0), int(top_offset * 1.0)))
    number_preferences_input = gui.create_input(
        pygame,
        ui_manager,
        size=(int(left_offset * 3.0), int(top_offset * 0.6)),
        position=(int(left_offset * 5.5), int(top_offset * 4.0)))
    number_preferences_input.set_allowed_characters('numbers')
    number_preferences_input.set_text_length_limit(3)
    number_preferences_input.set_text(str(n_preferences))
    randomize_n_preferences_button = gui.create_button(
        pygame,
        ui_manager,
        text='Randomize number of preferences',
        size=(int(left_offset * 6.0), int(top_offset * 1.0)),
        position=(int(left_offset * 9.0), int(top_offset * 3.7)))

    # init vector initialization
    gui.create_label(
        pygame,
        ui_manager,
        position=(int(left_offset * 1.0), int(top_offset * 5.2)),
        text='Preference vector (two dimensional python array [[]])',
        size=(int(left_offset * 14.0), int(top_offset * 1.0)))
    preference_vector_input = gui.create_input(
        pygame,
        ui_manager,
        size=(int(left_offset * 7.5), int(top_offset * 0.6)),
        position=(int(left_offset * 1.0), int(top_offset * 6.7)))
    save_preference_vector_button = gui.create_button(
        pygame,
        ui_manager,
        text='Save preference vector',
        size=(int(left_offset * 6.0), int(top_offset * 1.0)),
        position=(int(left_offset * 9.0), int(top_offset * 6.5)))
    response_label = gui.create_text_display(pygame,
                                             ui_manager,
                                             position=(int(left_offset * 1.0),
                                                       int(top_offset * 8)),
                                             size=(int(left_offset * 14.0),
                                                   int(top_offset * 1.2)))
Пример #5
0
    n_preferences = n
    number_preferences_input.set_text(str(n_preferences))


if __name__ == "__main__":
    init_settings()
    init_pygame()
    ui_manager = gui.init_ui(screen_size)
    output_console = gui.create_text_box(pygame,
                                         ui_manager,
                                         size=output_console_size,
                                         position=output_console_position)

    gui.create_label(pygame,
                     ui_manager,
                     position=(left_offset, int(top_offset * 0.7)),
                     size=(int(left_offset * 14.0), int(top_offset * 1.0)),
                     text='Settings')

    init_settings_ui()

    # create buttons for choosing algorithms and running the code
    init_runtime_ui()

    table_container = create_table_ui()
    running = True

    vector_string = "[[0, 1],[1, 0]]"
    preference_vector_input.set_text(vector_string)
    parsed_vector = parse_vector(vector_string)
    custom_preference_vector = parsed_vector