import re
import sublime
import sublime_plugin

class AgilaSelectThemeCommand(sublime_plugin.TextCommand):
    def run(self, action):
        self.themes = [
            "Agila",
            "Agila Origin",
            "Agila Dracula",
            "Agila Monokai",
            "Agila Cobalt",
            "Agila Classic",
            "Agila Light",
            "Agila Neon",
        ]
        self.schemes = [
            "Packages/Agila Theme/Agila Oceanic Next.tmTheme",
            "Packages/Agila Theme/Agila Origin Oceanic Next.tmTheme",
            "Packages/Agila Theme/Agila Dracula.tmTheme",
            "Packages/Agila Theme/Agila Monokai Extended.tmTheme",
            "Packages/Agila Theme/Agila Cobalt.tmTheme",
            "Packages/Agila Theme/Agila Classic Oceanic Next.tmTheme",
            "Packages/Agila Theme/Agila Light Solarized.tmTheme",
            "Packages/Agila Theme/Agila Neon Monocyanide.tmTheme",
        ]

        self.show_panel()

    def show_panel(self):
        self.view.window().show_quick_panel(self.themes, self.on_done, on_highlight=self.on_highlighted)

    def on_done(self, index):
        theme = self.themes[index] + '.sublime-theme'
        self.set_scheme(self.schemes[index])
        self.set_theme(theme)
        self.save_settings(theme)

    def on_highlighted(self, index):
        self.set_scheme(self.schemes[index])
        self.set_theme(self.themes[index] + '.sublime-theme')

    def set_scheme(self, scheme):
        self.get_settings().set('color_scheme', scheme)

    def set_theme(self, theme):
        self.get_settings().set('theme', theme)

    def get_settings(self):
        return sublime.load_settings('Preferences.sublime-settings')

    def save_settings(self, theme):
        sublime.save_settings('Preferences.sublime-settings')
        sublime.status_message('Agila Theme: ' + theme)
        print('')
        print('[Agila Theme] ' +  theme)
        print('')