Quintiq file version 2.0
|
#parent: CustomDrawRC/CustomDrawDataLayerOp
|
Response OnDrawObject (
|
Operation object
|
) id:Response_CustomDrawRC_CustomDrawDataLayerOp_OnDrawObject
|
{
|
#keys: '[139394.0.1282162832]'
|
CanBindMultiple: false
|
DefinitionID: 'Responsedef_WebCustomDrawDataLayer_OnDrawObject'
|
QuillAction
|
{
|
Body:
|
[*
|
// Draw operation
|
imagesize := ifexpr( object.Unit().IconName() <> '',
|
minvalue( region.BoundingRect().Height(), region.BoundingRect().Width() ), 0 );
|
|
//Initialize borders
|
surface.Pen().Style( PenSpecification::StyleSolid() );
|
surface.Pen().Width( 1 )
|
surface.Pen().Color( ColorScheme.RoutingConfigurator_RoutingOutline() );
|
|
//Initialize filled colors
|
//It is safe to use color scheme as the routing config is not user / scenario specific
|
colorstart := ColorScheme.RoutingConfigurator_OperationFromColor();
|
colorend := ColorScheme.RoutingConfigurator_OperationToColor();
|
|
// Set color to black if operation is being disabled
|
if( not object.IsEnabled() )
|
{
|
colorstart := ColorScheme.RoutingConfigurator_Disabled();
|
colorend := ColorScheme.RoutingConfigurator_Disabled();
|
}
|
|
surface.Brush().LinearGradient( region.BoundingRect(), colorstart, colorend, 0.0 );
|
surface.Fill( region.Shape() );
|
|
surface.Image( region.BoundingRect().Left(), region.BoundingRect().Top(), imagesize, imagesize, object.Unit().IconName() + '(32)' );
|
surface.Rect( region.BoundingRect().Left(), region.BoundingRect().Top(),
|
region.BoundingRect().Width(), region.BoundingRect().Height(), ColorScheme.RoutingConfigurator_RoutingOutline() );
|
|
|
//Draw text
|
rcv := MacroPlan.RoutingConfiguratorView();
|
surface.Font().Name( rcv.FontName() );
|
surface.Font().Size( rcv.FontSize() );
|
surface.TextColor( Color::Black() );
|
|
textformat := TextFormat::Construct( TextFormat::AlignLeft(), TextFormat::AlignMiddle() ); //doesnt work
|
// Add pen width to push the text rightward more to avoid clipping with the border
|
surface.TextZoom( imagesize + surface.Pen().Width(), 0, region.BoundingRect().Width() - imagesize , region.BoundingRect().Height(), text, textformat ); // Add offset for images
|
|
//draw input output drop here!
|
//guide to be drawn below the operation
|
routing := guard( object.RoutingStep().Routing(), null( Routing ) );
|
|
if( not isnull( routing ) and not routing.HasInputOrOutput() )
|
{
|
surface.Pen().Style( PenSpecification::StyleDotted() );
|
surface.Pen().Width( rcv.EdgeThickness() )
|
surface.Pen().Color( ColorScheme.RoutingConfigurator_DropHereHelp() );
|
surface.Brush().Color( ColorScheme.RoutingConfigurator_DropHereHelp() ); // to paint the solid arrowhead
|
|
surface.TextColor( ColorScheme.RoutingConfigurator_DropHereHelp() );
|
|
lblx := region.BoundingRect().Left();
|
lbly := region.BoundingRect().Height() + 20;
|
|
midh := [Number]( region.BoundingRect().Height() / 2 );
|
midw := [Number]( region.BoundingRect().Width() / 2 );
|
|
line := GraphicalLine::LineTo( midw, lbly, midw, midh );
|
line.ArrowToEnd( true ).ArrowPos( GraphicalLine::ArrowPosEnd() );
|
surface.Draw( line );
|
|
textformat.WrapWords();
|
surface.TextZoom( lblx, lbly, region.BoundingRect().Width(), region.BoundingRect().Height(),
|
Translations::MP_Routing_DropHereIO(), textformat );
|
}
|
*]
|
GroupServerCalls: false
|
}
|
}
|