# -*- coding: utf-8 -*-
# ***************************************************************************
# *   Copyright (c) 2022 Zheng Lei (realthunder) <realthunder.dev@gmail.com>*
# *                                                                         *
# *   This program is free software; you can redistribute it and/or modify  *
# *   it under the terms of the GNU Lesser General Public License (LGPL)    *
# *   as published by the Free Software Foundation; either version 2 of     *
# *   the License, or (at your option) any later version.                   *
# *   for detail see the LICENCE text file.                                 *
# *                                                                         *
# *   This program is distributed in the hope that it will be useful,       *
# *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
# *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
# *   GNU Library General Public License for more details.                  *
# *                                                                         *
# *   You should have received a copy of the GNU Library General Public     *
# *   License along with this program; if not, write to the Free Software   *
# *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  *
# *   USA                                                                   *
# *                                                                         *
# ***************************************************************************
'''Auto code generator for parameters in Preferences/TreeView
'''
import sys
from os import sys, path

# import Tools/params_utils.py
sys.path.append(path.join(path.dirname(path.dirname(path.abspath(__file__))), 'Tools'))
import params_utils

from params_utils import ParamBool, ParamInt, ParamString, ParamUInt,\
                         ParamFloat, ParamSpinBox, ParamColor, ParamHex

NameSpace = 'Gui'
ClassName = 'TreeParams'
ParamPath = 'User parameter:BaseApp/Preferences/TreeView'
ClassDoc = 'Convenient class to obtain tree view related parameters'
SourceFile = 'Tree.cpp'

Params = [
    ParamBool('SyncSelection', True, on_change=True),
    ParamBool('CheckBoxesSelection',False, on_change=True, title="Show item checkbox"),
    ParamBool('SyncView', True),
    ParamBool('PreSelection', True),
    ParamBool('SyncPlacement', False),
    ParamBool('RecordSelection', True),
    ParamInt('DocumentMode', 2, on_change=True),
    ParamInt('StatusTimeout', 100),
    ParamInt('SelectionTimeout', 100),
    ParamInt('PreSelectionTimeout', 500),
    ParamInt('PreSelectionDelay', 700),
    ParamInt('PreSelectionMinDelay', 200),
    ParamBool('RecomputeOnDrop', True),
    ParamBool('KeepRootOrder', True),
    ParamBool('TreeActiveAutoExpand', True),
    ParamUInt('TreeActiveColor',  0xe6e6ffff, on_change=True),
    ParamUInt('TreeEditColor',  0x929200ff, on_change=True),
    ParamUInt('SelectingGroupColor',  0x408081ff, on_change=True),
    ParamBool('TreeActiveBold', True, on_change=True),
    ParamBool('TreeActiveItalic', False, on_change=True),
    ParamBool('TreeActiveUnderlined', False, on_change=True),
    ParamBool('TreeActiveOverlined', False, on_change=True),
    ParamInt('Indentation', 0, on_change=True),
    ParamBool('LabelExpression', False),
    ParamInt('IconSize', 0, on_change=True),
    ParamInt('FontSize', 0, on_change=True, title='Font size'),
    ParamInt('ItemSpacing', 0, on_change=True),
    ParamHex('ItemBackground', 0, on_change=True, title='Item background color', proxy=ParamColor(),
        doc = "Tree view item background. Only effective in overlay."),
    ParamInt('ItemBackgroundPadding', 0, on_change=True, title="Item background padding", proxy=ParamSpinBox(0, 100, 1),
        doc = "Tree view item background padding."),
    ParamBool('HideColumn', True, on_change=True, title="Hide Description",
        doc = "Hide extra tree view column for item description."),
    ParamBool('HideInternalNames', True, on_change=True, title="Hide Internal Names",
        doc = "Hide extra tree view column - Internal Names."),
    ParamBool('HideScrollBar', True, title="Hide scroll bar",
        doc = "Hide tree view scroll bar in dock overlay."),
    ParamBool('HideHeaderView', True, title="Hide header",
        doc = "Hide tree view header view in dock overlay."),
    ParamBool('ResizableColumn', False, on_change=True, title="Resizable columns",
        doc = "Allow tree view columns to be manually resized."),
    ParamInt('ColumnSize1', 0),
    ParamInt('ColumnSize2', 0),
    ParamInt('ColumnSize3', 0),
    ParamBool('TreeToolTipIcon', False, title='Show icon in tool tip'),
    ParamBool('VisibilityIcon', True, on_change=True, title='Show visibility icon',
        doc = "If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled"),
]

def declare_begin():
    params_utils.declare_begin(sys.modules[__name__])

def declare_end():
    params_utils.declare_end(sys.modules[__name__])

def define():
    params_utils.define(sys.modules[__name__])

params_utils.init_params(Params, NameSpace, ClassName, ParamPath)
