@ -50,6 +50,7 @@ enum TraceRestrictWindowWidgets {
TR_WIDGET_SEL_TOP_MIDDLE ,
TR_WIDGET_SEL_TOP_RIGHT ,
TR_WIDGET_SEL_SHARE ,
TR_WIDGET_SEL_COPY ,
TR_WIDGET_UP_BTN ,
TR_WIDGET_DOWN_BTN ,
@ -74,6 +75,7 @@ enum TraceRestrictWindowWidgets {
TR_WIDGET_REMOVE ,
TR_WIDGET_RESET ,
TR_WIDGET_COPY ,
TR_WIDGET_COPY_APPEND ,
TR_WIDGET_SHARE ,
TR_WIDGET_UNSHARE ,
} ;
@ -104,6 +106,10 @@ enum PanelWidgets {
// Share
DPS_SHARE = 0 ,
DPS_UNSHARE ,
// Copy
DPC_COPY = 0 ,
DPC_APPEND ,
} ;
/**
@ -1191,6 +1197,7 @@ public:
}
case TR_WIDGET_COPY :
case TR_WIDGET_COPY_APPEND :
case TR_WIDGET_SHARE :
SetObjectToPlaceAction ( widget , ANIMCURSOR_BUILDSIGNALS ) ;
break ;
@ -1353,6 +1360,10 @@ public:
OnPlaceObjectSignal ( pt , tile , widget , STR_TRACE_RESTRICT_ERROR_CAN_T_COPY_PROGRAM ) ;
break ;
case TR_WIDGET_COPY_APPEND :
OnPlaceObjectSignal ( pt , tile , widget , STR_TRACE_RESTRICT_ERROR_CAN_T_COPY_APPEND_PROGRAM ) ;
break ;
case TR_WIDGET_SHARE :
OnPlaceObjectSignal ( pt , tile , widget , STR_TRACE_RESTRICT_ERROR_CAN_T_SHARE_PROGRAM ) ;
break ;
@ -1411,6 +1422,11 @@ public:
source_tile , source_track , STR_TRACE_RESTRICT_ERROR_CAN_T_COPY_PROGRAM ) ;
break ;
case TR_WIDGET_COPY_APPEND :
TraceRestrictProgMgmtWithSourceDoCommandP ( this - > tile , this - > track , TRDCT_PROG_COPY_APPEND ,
source_tile , source_track , STR_TRACE_RESTRICT_ERROR_CAN_T_COPY_APPEND_PROGRAM ) ;
break ;
case TR_WIDGET_SHARE :
TraceRestrictProgMgmtWithSourceDoCommandP ( this - > tile , this - > track , TRDCT_PROG_SHARE ,
source_tile , source_track , STR_TRACE_RESTRICT_ERROR_CAN_T_SHARE_PROGRAM ) ;
@ -1782,6 +1798,7 @@ private:
NWidgetStacked * middle_sel = this - > GetWidget < NWidgetStacked > ( TR_WIDGET_SEL_TOP_MIDDLE ) ;
NWidgetStacked * right_sel = this - > GetWidget < NWidgetStacked > ( TR_WIDGET_SEL_TOP_RIGHT ) ;
NWidgetStacked * share_sel = this - > GetWidget < NWidgetStacked > ( TR_WIDGET_SEL_SHARE ) ;
NWidgetStacked * copy_sel = this - > GetWidget < NWidgetStacked > ( TR_WIDGET_SEL_COPY ) ;
this - > DisableWidget ( TR_WIDGET_TYPE_COND ) ;
this - > DisableWidget ( TR_WIDGET_TYPE_NONCOND ) ;
@ -1808,11 +1825,14 @@ private:
this - > DisableWidget ( TR_WIDGET_UP_BTN ) ;
this - > DisableWidget ( TR_WIDGET_DOWN_BTN ) ;
this - > EnableWidget ( TR_WIDGET_COPY_APPEND ) ;
left_2_sel - > SetDisplayedPlane ( DPL2_BLANK ) ;
left_sel - > SetDisplayedPlane ( DPL_BLANK ) ;
middle_sel - > SetDisplayedPlane ( DPM_BLANK ) ;
right_sel - > SetDisplayedPlane ( DPR_BLANK ) ;
share_sel - > SetDisplayedPlane ( DPS_SHARE ) ;
copy_sel - > SetDisplayedPlane ( _ctrl_pressed ? DPC_APPEND : DPC_COPY ) ;
const TraceRestrictProgram * prog = this - > GetProgram ( ) ;
@ -2178,8 +2198,12 @@ static const NWidgetPart _nested_program_widgets[] = {
SetDataTip ( STR_TRACE_RESTRICT_REMOVE , STR_TRACE_RESTRICT_REMOVE_TOOLTIP ) , SetResize ( 1 , 0 ) ,
NWidget ( WWT_TEXTBTN , COLOUR_GREY , TR_WIDGET_RESET ) , SetMinimalSize ( 124 , 12 ) , SetFill ( 1 , 0 ) ,
SetDataTip ( STR_TRACE_RESTRICT_RESET , STR_TRACE_RESTRICT_RESET_TOOLTIP ) , SetResize ( 1 , 0 ) ,
NWidget ( WWT_TEXTBTN , COLOUR_GREY , TR_WIDGET_COPY ) , SetMinimalSize ( 124 , 12 ) , SetFill ( 1 , 0 ) ,
NWidget ( NWID_SELECTION , INVALID_COLOUR , TR_WIDGET_SEL_COPY ) ,
NWidget ( WWT_TEXTBTN , COLOUR_GREY , TR_WIDGET_COPY ) , SetMinimalSize ( 124 , 12 ) , SetFill ( 1 , 0 ) ,
SetDataTip ( STR_TRACE_RESTRICT_COPY , STR_TRACE_RESTRICT_COPY_TOOLTIP ) , SetResize ( 1 , 0 ) ,
NWidget ( WWT_TEXTBTN , COLOUR_GREY , TR_WIDGET_COPY_APPEND ) , SetMinimalSize ( 124 , 12 ) , SetFill ( 1 , 0 ) ,
SetDataTip ( STR_TRACE_RESTRICT_APPEND , STR_TRACE_RESTRICT_COPY_TOOLTIP ) , SetResize ( 1 , 0 ) ,
EndContainer ( ) ,
NWidget ( NWID_SELECTION , INVALID_COLOUR , TR_WIDGET_SEL_SHARE ) ,
NWidget ( WWT_TEXTBTN , COLOUR_GREY , TR_WIDGET_SHARE ) , SetMinimalSize ( 124 , 12 ) , SetFill ( 1 , 0 ) ,
SetDataTip ( STR_TRACE_RESTRICT_SHARE , STR_TRACE_RESTRICT_SHARE_TOOLTIP ) , SetResize ( 1 , 0 ) ,