📄 droflo.py
字号:
i = i+1 # # is there a something to remove ? if P_REMOVE == buttonValue: #log.debug('removing >%s<' % req.getParameter('key')) #log.debug('key type >%s<' % type(req.getParameter('key'))) newAttributes.remove(req.getParameter('key')) # # set attributes into expression expression.setAttributes(newAttributes) if buttonValue == 'submit' or buttonValue == 'cancel': session.unloadExpressionToEdit()## SequenceExpressionRendererclass SequenceExpressionRenderer (ExpressionRenderer): def _render (self, out, req, session, definition, expression): out.println('<table border=0 cellpadding=0 cellspacing=0>') for fei in expression.children: childExpression = definition.get(fei) out.println('<tr>') out.print('<td align=center>') _renderExpression(session, out, req, definition, childExpression) if session.isInEditMode() and not session.expressionToEdit: _displayMoveButtons(req, session, out, definition, expression, fei) out.println('</td>') out.println('</tr>') if expression.children.indexOf(fei) < len(expression.children)-1: out.println('<tr>') out.print('<td align=center>') out.print(_img(req, IMG_ARROW)) out.println('</td>') out.println('</tr>') out.println('</table>') if session.isInEditMode() and not session.expressionToEdit: out.println('<br>') _displayAddButton(req, session, out, expression.id, 'add to %s<br>\n' % session.getExpressionName(expression))## ConcurrenceExpressionRendererclass ConcurrenceExpressionRenderer (ExpressionRenderer, Editable): def __init__ (self): self.FORM_NAME = 'syncform' self.fieldNames = [ 'count', 'merge', 'merge-type', 'remaining' ] self.fields = [ 'count', ('merge', ['first', 'last', 'highest', 'lowest']), ('merge-type', ['mix', 'override']), ('remaining', ['cancel', 'forget']) ] def _render (self, out, req, session, definition, expression): HEIGHT = 7 WIDTH_MOD = 140 out.println('<table border=0 cellpadding=0 cellspacing=0>') width = expression.children.size() out.println('<tr>') out.print('<td colspan=%i align=center>' % width) out.print(_img(req, IMG_CONCURRENCE, width*WIDTH_MOD, HEIGHT)) out.println('</td>') out.println('</tr>') out.println('<tr>') # a swimlane for each child for fei in expression.children: childExpression = definition.get(fei) out.print('<td align=center>') out.print(_img(req, IMG_ARROW)) out.println('<br>') _renderExpression(session, out, req, definition, childExpression) #_displayMoveButtons(req, session, out, definition, expression, fei) out.println('<br>') out.print(_img(req, IMG_ARROW)) out.println('</td>') out.println('</tr>') # bottom bar and sync out.println('<tr>') out.print('<td colspan=%i align=center>' % width) out.print(_img(req, IMG_CONCURRENCE, width*WIDTH_MOD, HEIGHT)) out.println('<br>') out.print('<small>sync : </small>') if session.isInEditMode() and expression.equals(session.expressionToEdit): out.print('<form name=%s>' % self.FORM_NAME) out.print('<table border=0>\n') for f in self.fields: out.print('<tr>\n') if _isTuple(f): fieldName, fieldValues = f selectedValue = expression.attributes.get(fieldName) out.print('<td align=right>%s : </td>\n' % fieldName) out.print('<td>'); _displaySelect(out, fieldName, fieldValues, selected=selectedValue) out.print('</td>\n'); else: #value = _getValue(expression, f) value = expression.attributes.get(f) if not value: value = '' out.print('<td align=right>%s : </td>\n' % f) out.print('<td>'); out.print('<input type=text name="%s" value="%s" size="%s">' % (f, value, 5)) out.print('</td>\n'); out.print('</tr>\n') out.print('</table>\n') _displayOkButton(req, out, self.FORM_NAME, definition, expression.id) out.print('</form>') else: #out.print(session.getExpressionName(expression.syncExpression)) co = expression.attributes.get('count') mg = expression.attributes.get('merge') mt = expression.attributes.get('merge-type') rm = expression.attributes.get('remaining') if not co: co = '*' if not mg: mg = 'first' if not mt: mt = 'mix' if not rm: rm = 'cancel' out.print('<br>\ncount:%s merge:%s merge-type:%s remaining:%s' % (co, mg, mt, rm)) out.println('</td>') out.println('</tr>') out.println('</table>') if session.isInEditMode() and expression.equals(session.expressionToEdit): out.println('<br>') _displayAddButton(req, session, out, expression.id, 'add element to %s :<br>' % session.getExpressionName(expression)) def _edit (self, out, req, session, definition, expression): self._render(out, req, session, definition, expression) def parseRequest (self, session, expression, req): attributes = HashMap() attributes.put('sync', 'generic') for fn in self.fieldNames: fv = req.getParameter(fn) attributes.put(fn, fv) expression.attributes = attributes session.unloadExpressionToEdit() def getHelpFileName (self): return 'h_concurrence.htm'## IfExpressionRendererclass IfExpressionRenderer (ExpressionRenderer, Editable): def _render (self, out, req, session, definition, expression): eCondition = None eThen = None eElse = None if expression.children.size() > 0: eCondition = definition.get(expression.children[0]) if expression.children.size() > 1: eThen = definition.get(expression.children[1]) if expression.children.size() > 2: eElse = definition.get(expression.children[2]) out.println('<table border=0 cellpadding=0 cellspacing=0>') # display condition (and diamond) out.println('<tr>') out.println('<td colspan=2 align=center>') out.print(_img(req, IMG_BRANCH)) out.println('<br>') if eCondition: _renderExpression(session, out, req, definition, eCondition) elif session.isInEditMode(): _displayAddButton(req, session, out, expression.id, 'Add conditional clause<br>\n', _getConditionalExpressions(session)) out.println('</td>') out.println('</tr>') out.println('<tr>') out.print('<td align=center>') out.print(_img(req, IMG_DOWN_TO_LEFT)) out.println(' then</td>') out.print('<td align=center>') out.print(_img(req, IMG_DOWN_TO_RIGHT)) out.println(' else</td>') out.println('</tr>') out.println('<tr>') # display then out.print('<td align=center valign=middle>') if eThen: _renderExpression(session, out, req, definition, eThen) elif eCondition and session.isInEditMode(): _displayAddButton(req, session, out, expression.id, 'Add then clause<br>\n', _getClassicalExpressions(session)) out.println('</td>') # display else out.print('<td align=center valign=middle>') if eElse: _renderExpression(session, out, req, definition, eElse) elif eCondition and eThen and session.isInEditMode(): _displayAddButton(req, session, out, expression.id, 'Add else clause<br>\n', _getClassicalExpressions(session)) out.println('</td>') out.println('</tr>') out.println('<tr>') out.print('<td align=center>') out.print(_img(req, IMG_DOWN_TO_RIGHT)) out.println('</td>') out.print('<td align=center>') out.print(_img(req, IMG_DOWN_TO_LEFT)) out.println('</td>') out.println('</tr>') out.println('<tr>') out.print('<td colspan=2 align=center>') out.print(_img(req, IMG_BRANCH)) out.println('</td>') out.println('</tr>') # end out.print('</table>') def _edit (self, out, req, session, definition, expression): self._render(out, req, session, definition, expression)## WhenExpressionRendererclass WhenExpressionRenderer (ExpressionRenderer): def _render (self, out, req, session, definition, expression): expressionName = session.getExpressionName(expression) eCondition = None eThen = None eOne = None eOneId = None eTwo = None eTwoId = None if len(expression.children) > 0: eOneId = expression.children.get(0) eOne = definition.get(eOneId) if len(expression.children) > 1: eTwoId = expression.children.get(1) eTwo = definition.get(eTwoId) if eOne and not eTwo: if isinstance(eOne, expressions.ComparisonExpression): eCondition = eOne else: eThen = eOne elif eTwo: eCondition = eOne eThen = eTwo # no enforcement by the renderer here... out.println('<table border=0 cellpadding=0 cellspacing=0>') out.println('<tr>') # diamond and condition out.print('<td align=center valign=top colspan=2>') out.print(_img(req, IMG_BRANCH)) out.println('<br>') out.println('%s<br>' % expressionName) #_renderScopedDefinition\ # (session, out, req, definition, expression.scopeUrl, isScopedConditional=1) if eCondition: _renderExpression(session, out, req, definition, eCondition) elif session.isInEditMode(): _displayAddButton(req, session, out, expression.id, 'Add conditional clause<br>\n', _getConditionalExpressions(session)) out.println('<br>\n ') out.print('</td>') out.println('</tr>') # then clause out.println('<tr>') out.print('<td align=right valign=top>') out.print(_img(req, IMG_ARROW_TO_RIGHT)) out.println('</td>') out.print('<td align=center valign=top>') if eThen: _renderExpression(session, out, req, definition, eThen) elif session.isInEditMode(): _displayAddButton(req, session, out, expression.id, 'Add then clause<br>\n', _getClassicalExpressions(session)) out.print('</td>') out.println('</tr>') # end out.print('</table>') def getHelpFileName (self): return 'h_when.htm'## [Concurrent]IteratorExpressionRendererclass IteratorExpressionRenderer (BasicRenderer): def __init__ (self): BasicRenderer.__init__(self) self.mandatoryFields = [ [ 'on-value', 'on-field-value', 'on-variable-value' ], [ 'to-field', 'to-variable' ] ] self.optionalFields = [ 'value-separator' ] self.arrowCount = 1 def _render (self, out, req, session, definition, expression): expressionName = session.getExpressionName(expression) onKey = _getKeyWithPrefix(expression, 'on-') toKey = _getKeyWithPrefix(expression, 'to-') onValue = _neutralize(expression.attributes.get(onKey)) toValue = _neutralize(expression.attributes.get(toKey)) out.println('<table border=0 cellpadding=0 cellspacing=0>') out.println('<tr>') out.print('<td align=center valign=middle colspan=2>') out.print('%s<br>\n' % expressionName) if onKey: out.print('%s : %s<br>\n' % (onKey, onValue)) if toKey: out.print('%s : %s' % (toKey, toValue)) out.println('</td>') out.println('</tr>') out.println('<tr>') out.println('<td align=center valign=middle>') for i in xrange(self.arrowCount): out.print(_img(req, IMG_ARROW)) out.println('</td>') out.println('<td align=center valign=middle>') #_renderScopedDefinition\ # (session, out, req, definition, expression.scopeUrl, isScopedConditional=1) child = definition.get(expression.childExpressionId) if child : _renderExpression(session, out, req, definition, child) elif session.isInEditMode(): _displayAddButton(req, session, out, expression.id, 'Add body to iteration<br>\n', _getClassicalExpressions(session)) out.println('</td>') out.println('</tr>') out.println('</table>') def getHelpFileName (self): return 'h_iterator.htm'class ConcurrentIteratorExpressionRenderer (IteratorExpressionRenderer): def __init__ (self): IteratorExpressionRenderer.__init__(self) self.arrowCount = 2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -