import sys
import os
import errno
from UmenuUtils import Utils

USEICONS = False


class Metadata(object):



    def __init__(self, useicons):
        #  -data property-  -make lowercase?-   -is it a bool?-    -Multiline?- T/F , callback fcn
        self.props = {
           'menutitle'  : {'lowercase': False, 'isboolean': False,  'listok': [False, None]},
           'choicetitle': {'lowercase': False, 'isboolean': False,  'listok': [False, None]},
           'cmd'        : {'lowercase': False, 'isboolean': False,  'listok': [True , None]},
           'env'        : {'lowercase': False, 'isboolean': False,  'listok': [True , None]},
           'path'       : {'lowercase': False, 'isboolean': False,  'listok': [False, None]},
           'dir'        : {'lowercase': False, 'isboolean': False,  'listok': [False, None]},
           'bkground'   : {'lowercase': True,  'isboolean': True,   'listok': [False, None]},
           'stop'       : {'lowercase': True,  'isboolean': True,   'listok': [False, None]},
           'sort'       : {'lowercase': True,  'isboolean': False,  'listok': [False, None]},
           'icon'       : {'lowercase': False, 'isboolean': False,  'listok': [False, None]},
           'type'       : {'lowercase': True,  'isboolean': False,  'listok': [False, None]},
           }

        # m=menu, c=command, r=return, y=yes, n=no, m=maybe (optional)
        self.props['menutitle']['needed']   = {'m': 'y',   'c': 'n',   'r': 'n'} 
        self.props['choicetitle']['needed'] = {'m': 'y',   'c': 'y',   'r': 'y'} 
        self.props['cmd']['needed']         = {'m': 'n',   'c': 'y',   'r': 'n'} 
        self.props['env']['needed']         = {'m': 'n',   'c': 'm',   'r': 'n'} 
        self.props['path']['needed']        = {'m': 'n',   'c': 'm',   'r': 'n'} 
        self.props['dir']['needed']         = {'m': 'n',   'c': 'm',   'r': 'n'} 
        self.props['bkground']['needed']    = {'m': 'n',   'c': 'm',   'r': 'n'} 
        self.props['stop']['needed']        = {'m': 'n',   'c': 'm',   'r': 'n'} 
        self.props['sort']['needed']        = {'m': 'm',   'c': 'n',   'r': 'n'} 
        self.props['icon']['needed']        = {'m': 'm',   'c': 'm',   'r': 'm'} 
        self.props['type']['needed']        = {'m': 'y',   'c': 'y',   'r': 'y'} 

        # Default values for each property in each role (menu,command or return)
        # ^^^ means no default, MUST be explicitly given by user.
        self.props['menutitle']['default']   = {'m': '^^^',   'c': '^^^',   'r': ''} 
        self.props['choicetitle']['default'] = {'m': '^^^',   'c': '^^^',   'r': ''} 
        self.props['cmd']['default']         = {'m': '',      'c': '^^^',   'r': ''} 
        self.props['env']['default']         = {'m': '',      'c': '',      'r': ''} 
        self.props['path']['default']        = {'m': '',      'c': '',      'r': ''} 
        self.props['dir']['default']         = {'m': '',      'c': '',      'r': ''} 
        self.props['bkground']['default']    = {'m': '',      'c': 'f',     'r': ''} 
        self.props['stop']['default']        = {'m': '',      'c': 'f',     'r': ''} 
        self.props['sort']['default']        = {'m': '-q',    'c': '',      'r': ''} 
        self.props['icon']['default']        = {'m': '',      'c': '',      'r': ''} 
        self.props['type']['default']        = {'m': '^^^',   'c': '^^^',   'r': '^^^'} 


        ### FOLLOWING LINE REMOVES ICONS IF THEY WON'T BE USED. 
        if not useicons:
            del[self.props['icon']]


