def update_gui(cls, node_selects):
        node_selects_backup = str(node_selects)
        node_selects = node_selects.split(',')
        while '' in node_selects:
            node_selects.remove('')

        popup_window = sg.Window('Node Selects',
                                 cls.get_layout(node_selects),
                                 use_default_focus=False,
                                 element_padding=(0, (0, 3)))

        while True:
            event, values = popup_window.Read(timeout=100)

            if event in (None, 'save'):
                popup_window.Close()
                return ','.join(popup_window['node_selects'].Values)

            if event == 'cancel':
                popup_window.Close()
                return node_selects_backup

            if event == 'node_selects.add':
                lb_values = popup_window['node_selects'].Values
                lb_values.append(
                    f"{values['node_1_combo']}>{values['node_2_combo']}")
                popup_window['node_selects'].Update(values=lb_values)
                popup_window['node_1_combo'].Update(
                    value=None,
                    values=[
                        x.display_name for x in NamedNodeEnum if x.display_name
                        not in [y.split('>')[0] for y in lb_values]
                    ],
                    set_to_index=None)

            cls.check_listbox_related_events(
                popup_window,
                event,
                values,
                'node_selects',
                enabled_events=['remove', 'clear'])

            if event in ('node_selects.remove', 'node_selects.clear'):
                popup_window['node_1_combo'].Update(
                    value=None,
                    values=[
                        x.display_name for x in NamedNodeEnum
                        if x.display_name not in [
                            y.split('>')[0]
                            for y in popup_window['node_selects'].Values
                        ]
                    ],
                    set_to_index=None)

            if values['node_1_combo'] == values['node_2_combo']:
                popup_window['node_selects.add'].Update(disabled=True)
            else:
                popup_window['node_selects.add'].Update(disabled=False)

            LayoutBase.update_widgets(popup_window)
예제 #2
0
    def update_gui(cls, fleet_id, expeditions, other_expeditions):
        expeditions_backup = str(expeditions)
        initial_expeditions = expeditions.split(',')
        other_expeditions = other_expeditions.split(',')
        while '' in initial_expeditions:
            initial_expeditions.remove('')
        while '' in other_expeditions:
            other_expeditions.remove('')

        popup_window = sg.Window(f"Fleet {fleet_id} Expeditions",
                                 cls.get_layout(fleet_id, initial_expeditions,
                                                other_expeditions),
                                 use_default_focus=False,
                                 element_padding=(0, (0, 3)))

        while True:
            event, values = popup_window.Read(timeout=100)

            if event in (None, 'save'):
                popup_window.Close()
                return ','.join(popup_window['expeditions'].Values)

            if event == 'cancel':
                popup_window.Close()
                return expeditions_backup

            if event == 'expeditions.add':
                lb_values = popup_window['expeditions'].Values
                lb_values.append(values['expedition_combo'])
                popup_window['expeditions'].Update(values=lb_values)
                popup_window['expedition_combo'].Update(
                    value=None,
                    values=[
                        x.display_name for x in ExpeditionEnum
                        if x.display_name not in lb_values + other_expeditions
                    ],
                    set_to_index=None)

            cls.check_listbox_related_events(
                popup_window,
                event,
                values,
                'expeditions',
                enabled_events=['remove', 'clear'])

            if event in ('expeditions.remove', 'expeditions.clear'):
                popup_window['expedition_combo'].Update(
                    value=None,
                    values=[
                        x.display_name for x in ExpeditionEnum
                        if x.display_name not in
                        popup_window['expeditions'].Values + other_expeditions
                    ],
                    set_to_index=None)

            LayoutBase.update_widgets(popup_window)
예제 #3
0
def update_gui(window, event, values):
    """Wrapper method that calls the various update_gui methods.
    """
    KcautoControls.update_gui(window, event, values)
    GuiTabButtonsLayout.update_gui(window, event, values)
    Config.update_gui(window, event, values)
    RuntimeLogger.update_gui(window, event, values)
    ClickPlotter.update_gui(window, event, values)
    Settings.update_gui(window, event, values)
    About.update_gui(window, event, values)
    # for tkinter-level modifications
    LayoutBase.update_widgets(window)
    def update_gui(cls, presets):
        presets_backup = str(presets)
        presets = presets.split(',')
        while '' in presets:
            presets.remove('')

        popup_window = sg.Window('Combat Fleet Presets',
                                 cls.get_layout(presets),
                                 use_default_focus=False,
                                 element_padding=(0, (0, 3)))

        while True:
            event, values = popup_window.Read(timeout=100)

            if event in (None, 'save'):
                popup_window.Close()
                return ','.join(popup_window['presets'].Values)

            if event == 'cancel':
                popup_window.Close()
                return presets_backup

            if event == 'presets.add':
                lb_values = popup_window['presets'].Values
                lb_values.append(values['preset_combo'])
                popup_window['presets'].Update(values=lb_values)
                popup_window['preset_combo'].Update(
                    value=None,
                    values=[
                        str(x) for x in range(1, MAX_FLEET_PRESETS + 1)
                        if str(x) not in lb_values
                    ],
                    set_to_index=None)

            cls.check_listbox_related_events(
                popup_window,
                event,
                values,
                'presets',
                enabled_events=['remove', 'clear'])

            if event in ('presets.remove', 'presets.clear'):
                popup_window['preset_combo'].Update(
                    value=None,
                    values=[
                        str(x) for x in range(1, 15)
                        if str(x) not in popup_window['presets'].Values
                    ],
                    set_to_index=None)

            LayoutBase.update_widgets(popup_window)
예제 #5
0
    def update_gui(cls, slot_id, parent_value):
        parent_value_backup = str(parent_value)
        popup_window = sg.Window(f'Ship Switcher Slot {slot_id} Config',
                                 cls.get_layout(slot_id, parent_value),
                                 use_default_focus=parent_value,
                                 element_padding=(0, (0, 3)))

        while True:
            event, values = popup_window.Read(timeout=100)

            if event in (None, 'save'):
                popup_window.Close()
                return popup_window['rule'].Get()

            if event == 'cancel':
                popup_window.Close()
                return parent_value_backup

            cls.check_listbox_related_events(
                popup_window,
                event,
                values,
                'conditions',
                value_generator=cls.generate_condition_string,
                value_unpacker=cls.unpack_condition_string,
                enabled_events=['add', 'update', 'remove', 'unpack'])
            cls.check_listbox_related_events(
                popup_window,
                event,
                values,
                'criteria',
                value_generator=cls.generate_criterion_string,
                value_unpacker=cls.unpack_criterion_string,
                enabled_events=['add', 'update', 'remove', 'unpack'])

            if (len(popup_window['conditions'].Values) > 0
                    and len(popup_window['criteria'].Values) > 0):
                cls.generate_rule_string(popup_window)
            else:
                popup_window['rule'].Update('')

            if (values['cond_slot0'] ==
                    ShipSwitcherConditionSlot0Enum.LEVEL.display_name):
                popup_window['cond_slot2_level_col'].Update(visible=True)
                popup_window['cond_slot2_damage_col'].Update(visible=False)
                popup_window['cond_slot2_morale_col'].Update(visible=False)
            elif (values['cond_slot0'] ==
                  ShipSwitcherConditionSlot0Enum.DAMAGE.display_name):
                popup_window['cond_slot2_level_col'].Update(visible=False)
                popup_window['cond_slot2_damage_col'].Update(visible=True)
                popup_window['cond_slot2_morale_col'].Update(visible=False)
            elif (values['cond_slot0'] ==
                  ShipSwitcherConditionSlot0Enum.MORALE.display_name):
                popup_window['cond_slot2_level_col'].Update(visible=False)
                popup_window['cond_slot2_damage_col'].Update(visible=False)
                popup_window['cond_slot2_morale_col'].Update(visible=True)

            if (values['crit_slot0'] ==
                    ShipSwitcherCriteriaSlot0Enum.SHIP.display_name):
                popup_window['crit_slot1_ship_col'].Update(visible=True)
                popup_window['crit_slot1_class_col'].Update(visible=False)
            else:
                popup_window['crit_slot1_ship_col'].Update(visible=False)
                popup_window['crit_slot1_class_col'].Update(visible=True)

            if values['crit_slot2']:
                popup_window['crit_slot3'].Update(disabled=False)
            else:
                popup_window['crit_slot3'].Update(disabled=True)
            if values['crit_slot4']:
                popup_window['crit_slot5'].Update(disabled=False)
            else:
                popup_window['crit_slot5'].Update(disabled=True)
            if values['crit_slot6']:
                popup_window['crit_slot7'].Update(disabled=False)
            else:
                popup_window['crit_slot7'].Update(disabled=True)

            cls.correct_to_value_range(popup_window, values,
                                       'cond_slot2_level', cls.MIN_LEVEL,
                                       cls.MAX_LEVEL, cls.DEF_LEVEL)
            cls.correct_to_value_range(popup_window, values,
                                       'cond_slot2_morale', cls.MIN_MORALE,
                                       cls.MAX_MORALE, cls.DEF_MORALE)
            cls.correct_to_value_range(popup_window, values, 'crit_slot1_ship',
                                       cls.MIN_SHIP_ID, cls.MAX_SHIP_ID,
                                       cls.DEF_SHIP_ID)
            cls.correct_to_value_range(popup_window, values, 'crit_slot3',
                                       cls.MIN_LEVEL, cls.MAX_LEVEL,
                                       cls.DEF_LEVEL)
            cls.correct_to_value_range(popup_window, values, 'crit_slot7',
                                       cls.MIN_MORALE, cls.MAX_MORALE,
                                       cls.DEF_MORALE)

            LayoutBase.update_widgets(popup_window)
예제 #6
0
    def update_gui(cls, parent_values):
        parent_values_backup = list(parent_values)
        popup_window = sg.Window('Scheduler Config',
                                 cls.get_layout(parent_values),
                                 use_default_focus=False,
                                 element_padding=(0, (0, 3)))
        while True:
            event, values = popup_window.Read(timeout=100)

            if event in (None, 'save'):
                popup_window.Close()
                return popup_window['rules'].Values

            if event == 'cancel':
                popup_window.Close()
                return parent_values_backup

            cls.check_listbox_related_events(
                popup_window,
                event,
                values,
                'rules',
                value_generator=cls.generate_rule_string,
                value_unpacker=cls.unpack_rule_string,
                enabled_events=['add', 'update', 'remove', 'unpack'])

            if values['slot0'] == SchedulerSlot0Enum.TIME.display_name:
                popup_window['slot1_time_col'].Update(visible=True)
                popup_window['slot1_time_run_col'].Update(visible=False)
                popup_window['slot1_runs_col'].Update(visible=False)
                popup_window['slot1_rescue_col'].Update(visible=False)
            elif values['slot0'] == SchedulerSlot0Enum.TIME_RUN.display_name:
                popup_window['slot1_time_col'].Update(visible=False)
                popup_window['slot1_time_run_col'].Update(visible=True)
                popup_window['slot1_runs_col'].Update(visible=False)
                popup_window['slot1_rescue_col'].Update(visible=False)
            elif values['slot0'] in (
                    SchedulerSlot0Enum.SORTIES_RUN.display_name,
                    SchedulerSlot0Enum.EXPEDITIONS_RUN.display_name,
                    SchedulerSlot0Enum.PVP_RUN.display_name):
                popup_window['slot1_time_col'].Update(visible=False)
                popup_window['slot1_time_run_col'].Update(visible=False)
                popup_window['slot1_runs_col'].Update(visible=True)
                popup_window['slot1_rescue_col'].Update(visible=False)
            elif values['slot0'] == SchedulerSlot0Enum.RESCUE.display_name:
                popup_window['slot1_time_col'].Update(visible=False)
                popup_window['slot1_time_run_col'].Update(visible=False)
                popup_window['slot1_runs_col'].Update(visible=False)
                popup_window['slot1_rescue_col'].Update(visible=True)
            else:
                popup_window['slot1_time_col'].Update(visible=False)
                popup_window['slot1_time_run_col'].Update(visible=False)
                popup_window['slot1_runs_col'].Update(visible=False)
                popup_window['slot1_rescue_col'].Update(visible=False)

            if values['slot2'] == SchedulerSlot2Enum.SLEEP.display_name:
                popup_window['slot4_col'].Update(visible=True)
            else:
                popup_window['slot4_col'].Update(visible=False)

            cls.correct_to_value_range(popup_window, values, 'slot1_time_1',
                                       cls.MIN_TIME_HOURS, cls.MAX_TIME_HOURS,
                                       0)
            cls.correct_to_value_range(popup_window, values, 'slot1_time_2',
                                       cls.MIN_MINUTES, cls.MAX_MINUTES, 0)
            cls.correct_to_value_range(popup_window, values,
                                       'slot1_time_run_1',
                                       cls.MIN_TIME_LIMIT_HOURS,
                                       cls.MAX_TIME_LIMIT_HOURS, 0)
            cls.correct_to_value_range(popup_window, values,
                                       'slot1_time_run_2', cls.MIN_MINUTES,
                                       cls.MAX_MINUTES, 0)
            cls.correct_to_value_range(popup_window, values, 'slot4_1',
                                       cls.MIN_TIME_LIMIT_HOURS,
                                       cls.MAX_TIME_LIMIT_HOURS, 0)
            cls.correct_to_value_range(popup_window, values, 'slot4_2',
                                       cls.MIN_MINUTES, cls.MAX_MINUTES, 0)

            LayoutBase.update_widgets(popup_window)