# -*- coding: utf-8 -*-
#
# Copyright © Spyder Project Contributors
# Licensed under the terms of the MIT License
# (see spyder/__init__.py for details)

"""Windows-specific utilities"""


from ctypes import windll


# --- Window control ---

SW_SHOW = 5    # activate and display
SW_SHOWNA = 8  # show without activation
SW_HIDE = 0

GetConsoleWindow = windll.kernel32.GetConsoleWindow
ShowWindow = windll.user32.ShowWindow
IsWindowVisible = windll.user32.IsWindowVisible

# Handle to console window associated with current Python
# interpreter procss, 0 if there is no window
console_window_handle = GetConsoleWindow()

def set_attached_console_visible(state):
    """Show/hide system console window attached to current process.
       Return it's previous state.

       Availability: Windows"""
    flag = {True: SW_SHOW, False: SW_HIDE}
    return bool(ShowWindow(console_window_handle, flag[state]))

def is_attached_console_visible():
    """Return True if attached console window is visible"""
    return IsWindowVisible(console_window_handle)

def set_windows_appusermodelid():
    """Make sure correct icon is used on Windows 7 taskbar"""
    try:
        return windll.shell32.SetCurrentProcessExplicitAppUserModelID("spyder.Spyder")
    except AttributeError:
        return "SetCurrentProcessExplicitAppUserModelID not found"


# [ ] the console state asks for a storage container
# [ ] reopen console on exit - better die open than become a zombie
