def add_packages_to_window(window: sg.Window):
    packages = sg.user_settings_get_entry('-packages-', [])
    for i, package in enumerate(packages):
        in_elem = window.find_element(('-ID-', i), silent_on_error=True)
        if isinstance(in_elem, sg.ErrorElement):
            window.metadata += 1
            window.extend_layout(window['-TRACKING SECTION-'], [package_row(window.metadata)])
            in_elem = window.find_element(('-ID-', window.metadata), silent_on_error=True)
            in_elem.update(package[0])
        else:
            in_elem.update(package[0])
        desc_elem = window.find_element(('-DESC-', i), silent_on_error=True)
        if not isinstance(desc_elem, sg.ErrorElement):
            desc_elem.update(package[1])
    def w_total_event(self, window: sg.Window, new: int):
        w = self.quest['wave']
        old, w['total'] = w['total'], new

        if old > new:  # fewer
            for N in map(str, range(new + 1, old + 1)):
                window[f'{self.__prefix_key}_wave{N}_auto_'].hide_row()
                del w[N], window.AllKeysDict[f'{self.__prefix_key}_wave{N}_auto_']
                del window.AllKeysDict[f'{self.__prefix_key}_wave{N}_sp_weight_enable_']
                for p in pos:
                    del window.AllKeysDict[f'{self.__prefix_key}_wave{N}_character_{p}_skill_priority_'],
                    del window.AllKeysDict[f'{self.__prefix_key}_wave{N}_character_{p}_sp_weight_']
        elif old < new:
            uData.padding_wave(w)
            for N in map(str, range(old + 1, new + 1)):
                window.extend_layout(window[f'{self.__prefix_key}_wave_frame_'], self.__a_wave_row(w, N))