PLCControler.py
changeset 1944 6162e34fb246
parent 1943 9dc0e38552b2
child 1948 b9a3f771aaab
equal deleted inserted replaced
1943:9dc0e38552b2 1944:6162e34fb246
    36 from lxml import etree
    36 from lxml import etree
    37 
    37 
    38 import util.paths as paths
    38 import util.paths as paths
    39 from util.TranslationCatalogs import NoTranslate
    39 from util.TranslationCatalogs import NoTranslate
    40 from plcopen import *
    40 from plcopen import *
       
    41 from plcopen.types_enums import *
       
    42 from plcopen.XSLTModelQuery import  _StringValue, _BoolValue, _translate_args
    41 from plcopen.InstancesPathCollector import InstancesPathCollector
    43 from plcopen.InstancesPathCollector import InstancesPathCollector
    42 from plcopen.POUVariablesCollector import POUVariablesCollector
    44 from plcopen.POUVariablesCollector import POUVariablesCollector
    43 from graphics.GraphicCommons import *
    45 from graphics.GraphicCommons import *
    44 from PLCGenerator import *
    46 from PLCGenerator import *
    45 
    47 
    46 duration_model = re.compile("(?:([0-9]{1,2})h)?(?:([0-9]{1,2})m(?!s))?(?:([0-9]{1,2})s)?(?:([0-9]{1,3}(?:\.[0-9]*)?)ms)?")
    48 duration_model = re.compile("(?:([0-9]{1,2})h)?(?:([0-9]{1,2})m(?!s))?(?:([0-9]{1,2})s)?(?:([0-9]{1,3}(?:\.[0-9]*)?)ms)?")
    47 
    49 
    48 ITEMS_EDITABLE = [
       
    49     ITEM_PROJECT,
       
    50     ITEM_POU,
       
    51     ITEM_VARIABLE,
       
    52     ITEM_TRANSITION,
       
    53     ITEM_ACTION,
       
    54     ITEM_CONFIGURATION,
       
    55     ITEM_RESOURCE,
       
    56     ITEM_DATATYPE
       
    57 ] = range(8)
       
    58 
       
    59 ITEMS_UNEDITABLE = [
       
    60     ITEM_DATATYPES,
       
    61     ITEM_FUNCTION,
       
    62     ITEM_FUNCTIONBLOCK,
       
    63     ITEM_PROGRAM,
       
    64     ITEM_TRANSITIONS,
       
    65     ITEM_ACTIONS,
       
    66     ITEM_CONFIGURATIONS,
       
    67     ITEM_RESOURCES,
       
    68     ITEM_PROPERTIES
       
    69 ] = range(8, 17)
       
    70 
       
    71 ITEMS_VARIABLE = [
       
    72     ITEM_VAR_LOCAL,
       
    73     ITEM_VAR_GLOBAL,
       
    74     ITEM_VAR_EXTERNAL,
       
    75     ITEM_VAR_TEMP,
       
    76     ITEM_VAR_INPUT,
       
    77     ITEM_VAR_OUTPUT,
       
    78     ITEM_VAR_INOUT
       
    79 ] = range(17, 24)
       
    80 
       
    81 VAR_CLASS_INFOS = {
       
    82     "Local":    ("localVars",    ITEM_VAR_LOCAL),
       
    83     "Global":   ("globalVars",   ITEM_VAR_GLOBAL),
       
    84     "External": ("externalVars", ITEM_VAR_EXTERNAL),
       
    85     "Temp":     ("tempVars",     ITEM_VAR_TEMP),
       
    86     "Input":    ("inputVars",    ITEM_VAR_INPUT),
       
    87     "Output":   ("outputVars",   ITEM_VAR_OUTPUT),
       
    88     "InOut":    ("inOutVars",    ITEM_VAR_INOUT)}
       
    89 
       
    90 POU_TYPES = {
       
    91     "program": ITEM_PROGRAM,
       
    92     "functionBlock": ITEM_FUNCTIONBLOCK,
       
    93     "function": ITEM_FUNCTION,
       
    94 }
       
    95 
       
    96 LOCATIONS_ITEMS = [LOCATION_CONFNODE,
       
    97                    LOCATION_MODULE,
       
    98                    LOCATION_GROUP,
       
    99                    LOCATION_VAR_INPUT,
       
   100                    LOCATION_VAR_OUTPUT,
       
   101                    LOCATION_VAR_MEMORY] = range(6)
       
   102 
       
   103 ScriptDirectory = paths.AbsDir(__file__)
    50 ScriptDirectory = paths.AbsDir(__file__)
   104 
       
   105 
       
   106 def GetUneditableNames():
       
   107     _ = NoTranslate
       
   108     return [_("User-defined POUs"), _("Functions"), _("Function Blocks"),
       
   109             _("Programs"), _("Data Types"), _("Transitions"), _("Actions"),
       
   110             _("Configurations"), _("Resources"), _("Properties")]
       
   111 
       
   112 
       
   113 UNEDITABLE_NAMES = GetUneditableNames()
       
   114 [USER_DEFINED_POUS, FUNCTIONS, FUNCTION_BLOCKS, PROGRAMS,
       
   115  DATA_TYPES, TRANSITIONS, ACTIONS, CONFIGURATIONS,
       
   116  RESOURCES, PROPERTIES] = UNEDITABLE_NAMES
       
   117 
       
   118 
    51 
   119 class LibraryResolver(etree.Resolver):
    52 class LibraryResolver(etree.Resolver):
   120     """Helper object for loading library in xslt stylesheets"""
    53     """Helper object for loading library in xslt stylesheets"""
   121 
    54 
   122     def __init__(self, controller, debug=False):
    55     def __init__(self, controller, debug=False):
   136             else:
    69             else:
   137                 for ctn in self.Controller.ConfNodeTypes:
    70                 for ctn in self.Controller.ConfNodeTypes:
   138                     lib_el.append(deepcopy(ctn["types"]))
    71                     lib_el.append(deepcopy(ctn["types"]))
   139             return self.resolve_string(etree.tostring(lib_el), context)
    72             return self.resolve_string(etree.tostring(lib_el), context)
   140 
    73 
   141 # -------------------------------------------------------------------------------
       
   142 #           Helpers functions for translating list of arguments
       
   143 #                       from xslt to valid arguments
       
   144 # -------------------------------------------------------------------------------
       
   145 
       
   146 
       
   147 def _StringValue(x):
       
   148     return x
       
   149 
       
   150 
       
   151 def _BoolValue(x):
       
   152     return x in ["true", "0"]
       
   153 
       
   154 
       
   155 def _translate_args(translations, args):
       
   156     return [translate(arg[0]) if len(arg) > 0 else None
       
   157             for translate, arg in
       
   158             zip(translations, args)]
       
   159 
    74 
   160 # -------------------------------------------------------------------------------
    75 # -------------------------------------------------------------------------------
   161 #                 Helpers object for generating pou var list
    76 #                 Helpers object for generating pou var list
   162 # -------------------------------------------------------------------------------
    77 # -------------------------------------------------------------------------------
   163 
    78