edouard@1944: #!/usr/bin/env python edouard@1944: # -*- coding: utf-8 -*- edouard@1944: # This file is part of Beremiz edouard@1944: # See COPYING file for copyrights details. edouard@1944: edouard@1944: from __future__ import absolute_import edouard@1944: from util.TranslationCatalogs import NoTranslate edouard@1944: _ = NoTranslate edouard@1944: edouard@1944: ITEMS_EDITABLE = [ edouard@1944: ITEM_PROJECT, edouard@1944: ITEM_POU, edouard@1944: ITEM_VARIABLE, edouard@1944: ITEM_TRANSITION, edouard@1944: ITEM_ACTION, edouard@1944: ITEM_CONFIGURATION, edouard@1944: ITEM_RESOURCE, edouard@1944: ITEM_DATATYPE edouard@1944: ] = range(8) edouard@1944: edouard@1944: ITEMS_UNEDITABLE = [ edouard@1944: ITEM_DATATYPES, edouard@1944: ITEM_FUNCTION, edouard@1944: ITEM_FUNCTIONBLOCK, edouard@1944: ITEM_PROGRAM, edouard@1944: ITEM_TRANSITIONS, edouard@1944: ITEM_ACTIONS, edouard@1944: ITEM_CONFIGURATIONS, edouard@1944: ITEM_RESOURCES, edouard@1944: ITEM_PROPERTIES edouard@1944: ] = range(8, 17) edouard@1944: edouard@1944: ITEMS_VARIABLE = [ edouard@1944: ITEM_VAR_LOCAL, edouard@1944: ITEM_VAR_GLOBAL, edouard@1944: ITEM_VAR_EXTERNAL, edouard@1944: ITEM_VAR_TEMP, edouard@1944: ITEM_VAR_INPUT, edouard@1944: ITEM_VAR_OUTPUT, edouard@1944: ITEM_VAR_INOUT edouard@1944: ] = range(17, 24) edouard@1944: Edouard@1948: ITEM_CONFNODE = 25 Edouard@1948: edouard@1944: VAR_CLASS_INFOS = { edouard@1944: "Local": ("localVars", ITEM_VAR_LOCAL), edouard@1944: "Global": ("globalVars", ITEM_VAR_GLOBAL), edouard@1944: "External": ("externalVars", ITEM_VAR_EXTERNAL), edouard@1944: "Temp": ("tempVars", ITEM_VAR_TEMP), edouard@1944: "Input": ("inputVars", ITEM_VAR_INPUT), edouard@1944: "Output": ("outputVars", ITEM_VAR_OUTPUT), edouard@1944: "InOut": ("inOutVars", ITEM_VAR_INOUT)} edouard@1944: edouard@1944: POU_TYPES = { edouard@1944: "program": ITEM_PROGRAM, edouard@1944: "functionBlock": ITEM_FUNCTIONBLOCK, edouard@1944: "function": ITEM_FUNCTION, edouard@1944: } edouard@1944: edouard@1944: CLASS_TYPES = { edouard@1944: "configuration": ITEM_CONFIGURATION, edouard@1944: "resource": ITEM_RESOURCE, edouard@1944: "action": ITEM_ACTION, edouard@1944: "transition": ITEM_TRANSITION, edouard@1944: "program": ITEM_PROGRAM edouard@1944: } edouard@1944: edouard@1944: LOCATIONS_ITEMS = [LOCATION_CONFNODE, edouard@1944: LOCATION_MODULE, edouard@1944: LOCATION_GROUP, edouard@1944: LOCATION_VAR_INPUT, edouard@1944: LOCATION_VAR_OUTPUT, edouard@1944: LOCATION_VAR_MEMORY] = range(6) edouard@1944: edouard@1944: UNEDITABLE_NAMES = [_("User-defined POUs"), _("Functions"), _("Function Blocks"), Edouard@1953: _("Programs"), _("Data Types"), _("Transitions"), _("Actions"), Edouard@1953: _("Configurations"), _("Resources"), _("Properties")] edouard@1944: edouard@1944: [USER_DEFINED_POUS, FUNCTIONS, FUNCTION_BLOCKS, PROGRAMS, edouard@1944: DATA_TYPES, TRANSITIONS, ACTIONS, CONFIGURATIONS, edouard@1944: RESOURCES, PROPERTIES] = UNEDITABLE_NAMES edouard@1944: Edouard@1948: # ------------------------------------------------------------------------------- Edouard@1948: # Project Element tag name computation functions Edouard@1948: # ------------------------------------------------------------------------------- Edouard@1948: Edouard@1953: Edouard@1948: # Compute a data type name Edouard@1948: def ComputeDataTypeName(datatype): Edouard@1948: return "D::%s" % datatype Edouard@1948: Edouard@1953: Edouard@1948: # Compute a pou name Edouard@1948: def ComputePouName(pou): Edouard@1948: return "P::%s" % pou Edouard@1948: Edouard@1953: Edouard@1948: # Compute a pou transition name Edouard@1948: def ComputePouTransitionName(pou, transition): Edouard@1948: return "T::%s::%s" % (pou, transition) Edouard@1948: Edouard@1953: Edouard@1948: # Compute a pou action name Edouard@1948: def ComputePouActionName(pou, action): Edouard@1948: return "A::%s::%s" % (pou, action) Edouard@1948: Edouard@1953: Edouard@1948: # Compute a pou name Edouard@1948: def ComputeConfigurationName(config): Edouard@1948: return "C::%s" % config Edouard@1948: Edouard@1953: Edouard@1948: # Compute a pou name Edouard@1948: def ComputeConfigurationResourceName(config, resource): Edouard@1948: return "R::%s::%s" % (config, resource) Edouard@1948: Edouard@1953: Edouard@1948: def GetElementType(tagname): Edouard@1948: words = tagname.split("::") Edouard@2524: if len(words) == 1: Edouard@2524: return ITEM_CONFNODE Edouard@1948: return { Edouard@1948: "D": ITEM_DATATYPE, Edouard@1948: "P": ITEM_POU, Edouard@1948: "T": ITEM_TRANSITION, Edouard@1948: "A": ITEM_ACTION, Edouard@1948: "C": ITEM_CONFIGURATION, Edouard@1948: "R": ITEM_RESOURCE Edouard@1948: }[words[0]] Edouard@1948: Edouard@1948: edouard@1944: # remove gettext override edouard@1944: del _