"""WizardKit: Auto Repair Tool"""
# vim: sts=2 sw=2 ts=2

import wk


# Classes
REBOOT_STR = wk.ui.ansi.color_string('Reboot', 'YELLOW')
class MenuEntry():
  """Simple class to allow cleaner code below."""
  def __init__(self, name, function=None, selected=True, **kwargs):
    self.name = name
    self.details = {
      'Function': function,
      'Selected': selected,
      **kwargs,
      }


# STATIC VARIABLES
BASE_MENUS = {
  'Groups': {
    'Backup Settings': (
      MenuEntry('Enable RegBack',           'auto_enable_regback'),
      MenuEntry('Enable System Restore',    'auto_system_restore_enable'),
      MenuEntry('Set System Restore Size',  'auto_system_restore_set_size'),
      MenuEntry('Create System Restore',    'auto_system_restore_create'),
      MenuEntry('Backup Browsers',          'auto_backup_browser_profiles'),
      MenuEntry('Backup Power Plans',       'auto_backup_power_plans'),
      MenuEntry('Reset Power Plans',        'auto_reset_power_plans'),
      MenuEntry('Set Custom Power Plan',    'auto_set_custom_power_plan'),
      MenuEntry('Backup Registry',          'auto_backup_registry'),
      ),
    'Windows Repairs': (
      MenuEntry('Disable Windows Updates',  'auto_windows_updates_disable'),
      MenuEntry('Reset Windows Updates',    'auto_windows_updates_reset'),
      MenuEntry(REBOOT_STR,                 'auto_reboot'),
      MenuEntry('CHKDSK',                   'auto_chkdsk'),
      MenuEntry('DISM RestoreHealth',       'auto_dism'),
      MenuEntry('SFC Scan',                 'auto_sfc'),
      MenuEntry('Clear Proxy Settings',     'auto_reset_proxy'),
      MenuEntry('Disable Pending Renames',  'auto_disable_pending_renames'),
      MenuEntry('Registry Repairs',         'auto_repair_registry'),
      MenuEntry('Reset UAC',                'auto_restore_uac_defaults'),
      MenuEntry('Reset Windows Policies',   'auto_reset_windows_policies'),
      ),
    'Malware Cleanup': (
      MenuEntry('BleachBit',                'auto_bleachbit'),
      MenuEntry('HitmanPro',                'auto_hitmanpro'),
      MenuEntry('KVRT',                     'auto_kvrt'),
      MenuEntry('Windows Defender',         'auto_microsoft_defender'),
      MenuEntry('Remove Custom Power Plan', 'auto_remove_power_plan'),
      MenuEntry(REBOOT_STR,                 'auto_reboot'),
      ),
    'Manual Steps': (
      MenuEntry('AdwCleaner',               'auto_adwcleaner'),
      MenuEntry('UninstallView',            'auto_uninstallview'),
      MenuEntry('Enable Windows Updates',   'auto_windows_updates_enable'),
      ),
    },
  'Options': (
    MenuEntry('Kill Explorer', selected=False),
    MenuEntry('Run RKill'),
    MenuEntry('Run TDSSKiller (once)'),
    MenuEntry('Sync Clock'),
    MenuEntry('Use Autologon', selected=False),
    ),
  'Actions': (
    MenuEntry('Load Preset'),
    MenuEntry('Options'),
    MenuEntry('Start', Separator=True),
    MenuEntry('Quit'),
    ),
  }
PRESETS = {
  'Default': { # Will be expanded at runtime using BASE_MENUS
    'Options': (
      'Run RKill',
      'Run TDSSKiller (once)',
      'Sync Clock',
      ),
    },
  'Custom': {}, # Will remain empty at runtime
  }

if __name__ == '__main__':
  try:
    wk.repairs.win.run_auto_repairs(BASE_MENUS, PRESETS)
  except KeyboardInterrupt:
    wk.ui.cli.abort()
  except SystemExit:
    raise
  except: # noqa: E722
    wk.ui.cli.major_exception()
