# __init__ for the Pythonwin editor package.
#
# We used to support optional editors - eg, color or non-color.
#
# This really isnt necessary with Scintilla, and scintilla
# is getting so deeply embedded that it was too much work.

import win32ui, sys, win32con

defaultCharacterFormat = (-402653169, 0, 200, 0, 0, 0, 49, "Courier New")

##def GetDefaultEditorModuleName():
##	import pywin
##	# If someone has set pywin.editormodulename, then this is what we use
##	try:
##		prefModule = pywin.editormodulename
##	except AttributeError:
##		prefModule = win32ui.GetProfileVal("Editor","Module", "")
##	return prefModule
##
##def WriteDefaultEditorModule(module):
##	try:
##		module = module.__name__
##	except:
##		pass
##	win32ui.WriteProfileVal("Editor", "Module", module)


def LoadDefaultEditor():
    pass


##	prefModule = GetDefaultEditorModuleName()
##	restorePrefModule = None
##	mod = None
##	if prefModule:
##		try:
##			mod = __import__(prefModule)
##		except 'xx':
##			msg = "Importing your preferred editor ('%s') failed.\n\nError %s: %s\n\nAn attempt will be made to load the default editor.\n\nWould you like this editor disabled in the future?" % (prefModule, sys.exc_info()[0], sys.exc_info()[1])
##			rc = win32ui.MessageBox(msg, "Error importing editor", win32con.MB_YESNO)
##			if rc == win32con.IDNO:
##				restorePrefModule = prefModule
##			WriteDefaultEditorModule("")
##			del rc
##
##	try:
##		# Try and load the default one - dont catch errors here.
##		if mod is None:
##			prefModule = "pywin.framework.editor.color.coloreditor"
##			mod = __import__(prefModule)
##
##		# Get at the real module.
##		mod = sys.modules[prefModule]
##
##		# Do a "from mod import *"
##		globals().update(mod.__dict__)
##
##	finally:
##		# Restore the users default editor if it failed and they requested not to disable it.
##		if restorePrefModule:
##			WriteDefaultEditorModule(restorePrefModule)


def GetEditorOption(option, defaultValue, min=None, max=None):
    rc = win32ui.GetProfileVal("Editor", option, defaultValue)
    if min is not None and rc < min:
        rc = defaultValue
    if max is not None and rc > max:
        rc = defaultValue
    return rc


def SetEditorOption(option, newValue):
    win32ui.WriteProfileVal("Editor", option, newValue)


def DeleteEditorOption(option):
    try:
        win32ui.WriteProfileVal("Editor", option, None)
    except win32ui.error:
        pass


# Load and save font tuples
def GetEditorFontOption(option, default=None):
    if default is None:
        default = defaultCharacterFormat
    fmt = GetEditorOption(option, "")
    if fmt == "":
        return default
    try:
        return eval(fmt)
    except:
        print("WARNING: Invalid font setting in registry - setting ignored")
        return default


def SetEditorFontOption(option, newValue):
    SetEditorOption(option, str(newValue))


from pywin.framework.editor.color.coloreditor import editorTemplate
