|
@@ -803,12 +803,14 @@ void ShowCompanyValueGraph()
|
|
|
/** Widget numbers of the cargo payment rates. */
|
|
|
enum CargoPaymentRatesWidgets {
|
|
|
CPW_BACKGROUND,
|
|
|
CPW_HEADER,
|
|
|
CPW_GRAPH,
|
|
|
CPW_FOOTER,
|
|
|
CPW_ENABLE_CARGOS,
|
|
|
CPW_DISABLE_CARGOS,
|
|
|
CPW_CARGO_FIRST,
|
|
|
};
|
|
|
|
|
|
struct PaymentRatesGraphWindow : BaseGraphWindow {
|
|
|
bool first_init; ///< This value is true until the first initialization of the window has finished.
|
|
|
PaymentRatesGraphWindow(const WindowDesc *desc, WindowNumber window_number) :
|
|
@@ -901,18 +903,52 @@ struct PaymentRatesGraphWindow : BaseGra
|
|
|
SetDParam(0, cs->name);
|
|
|
DrawString(rtl ? r.left : x + 14 + clk_dif, (rtl ? r.right - 14 + clk_dif : r.right), y + clk_dif, STR_GRAPH_CARGO_PAYMENT_CARGO);
|
|
|
}
|
|
|
|
|
|
virtual void OnClick(Point pt, int widget, int click_count)
|
|
|
{
|
|
|
if (widget >= CPW_CARGO_FIRST) {
|
|
|
int i = widget - CPW_CARGO_FIRST;
|
|
|
ToggleBit(_legend_excluded_cargo, _sorted_cargo_specs[i]->Index());
|
|
|
this->ToggleWidgetLoweredState(widget);
|
|
|
this->UpdateExcludedData();
|
|
|
this->SetDirty();
|
|
|
switch (widget) {
|
|
|
case CPW_ENABLE_CARGOS:
|
|
|
/* Remove all cargos from the excluded lists. */
|
|
|
_legend_excluded_cargo = 0;
|
|
|
this->excluded_data = 0;
|
|
|
this->UpdateLoweredWidgets();
|
|
|
/* Toggle appeareance indicating the choice. */
|
|
|
this->LowerWidget(CPW_ENABLE_CARGOS);
|
|
|
this->RaiseWidget(CPW_DISABLE_CARGOS);
|
|
|
this->SetDirty();
|
|
|
break;
|
|
|
|
|
|
case CPW_DISABLE_CARGOS: {
|
|
|
/* Add all cargos to the excluded lists. */
|
|
|
int i = 0;
|
|
|
const CargoSpec *cs;
|
|
|
FOR_ALL_SORTED_CARGOSPECS(cs) {
|
|
|
SetBit(_legend_excluded_cargo, cs->Index());
|
|
|
SetBit(this->excluded_data, i);
|
|
|
i++;
|
|
|
}
|
|
|
this->UpdateLoweredWidgets();
|
|
|
/* Toggle appeareance indicating the choice. */
|
|
|
this->LowerWidget(CPW_DISABLE_CARGOS);
|
|
|
this->RaiseWidget(CPW_ENABLE_CARGOS);
|
|
|
this->SetDirty();
|
|
|
} break;
|
|
|
|
|
|
default:
|
|
|
if (widget >= CPW_CARGO_FIRST) {
|
|
|
int i = widget - CPW_CARGO_FIRST;
|
|
|
ToggleBit(_legend_excluded_cargo, _sorted_cargo_specs[i]->Index());
|
|
|
this->ToggleWidgetLoweredState(widget);
|
|
|
this->UpdateExcludedData();
|
|
|
/* Raise the two "all" buttons, as we have done a specific choice. */
|
|
|
this->RaiseWidget(CPW_ENABLE_CARGOS);
|
|
|
this->RaiseWidget(CPW_DISABLE_CARGOS);
|
|
|
this->SetDirty();
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
virtual void OnTick()
|
|
|
{
|
|
|
/* Override default OnTick */
|
|
@@ -967,12 +1003,15 @@ static const NWidgetPart _nested_cargo_p
|
|
|
NWidget(NWID_SPACER), SetFill(1, 0),
|
|
|
EndContainer(),
|
|
|
NWidget(NWID_HORIZONTAL),
|
|
|
NWidget(WWT_EMPTY, COLOUR_GREY, CPW_GRAPH), SetMinimalSize(495, 0), SetFill(1, 1),
|
|
|
NWidget(NWID_VERTICAL),
|
|
|
NWidget(NWID_SPACER), SetMinimalSize(0, 24), SetFill(0, 0),
|
|
|
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, CPW_ENABLE_CARGOS), SetDataTip(STR_GRAPH_CARGO_ENABLE_ALL, STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL),SetFill(1, 0),
|
|
|
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, CPW_DISABLE_CARGOS), SetDataTip(STR_GRAPH_CARGO_DISABLE_ALL, STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL),SetFill(1, 0),
|
|
|
NWidget(NWID_SPACER), SetMinimalSize(0, 4), SetFill(0, 0),
|
|
|
NWidgetFunction(MakeCargoButtons),
|
|
|
NWidget(NWID_SPACER), SetMinimalSize(0, 24), SetFill(0, 1),
|
|
|
EndContainer(),
|
|
|
NWidget(NWID_SPACER), SetMinimalSize(5, 0), SetFill(0, 1),
|
|
|
EndContainer(),
|
|
|
NWidget(NWID_HORIZONTAL),
|