Re-add removed group collapse/expand all buttons

pull/104/head
Jonathan G Rennison 5 years ago
parent 85e9a0195d
commit 91c5dee66c

@ -68,6 +68,10 @@ static const NWidgetPart _nested_group_widgets[] = {
SetDataTip(SPR_GROUP_RENAME_TRAIN, STR_GROUP_RENAME_TOOLTIP),
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_LIVERY_GROUP), SetFill(0, 1),
SetDataTip(SPR_GROUP_LIVERY_TRAIN, STR_GROUP_LIVERY_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GL_COLLAPSE_ALL_GROUPS), SetFill(0, 1),
SetDataTip(STR_GROUP_COLLAPSE_ALL, STR_GROUP_COLLAPSE_ALL),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GL_EXPAND_ALL_GROUPS), SetFill(0, 1),
SetDataTip(STR_GROUP_EXPAND_ALL, STR_GROUP_EXPAND_ALL),
NWidget(WWT_PANEL, COLOUR_GREY), SetFill(1, 1), EndContainer(),
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_REPLACE_PROTECTION), SetFill(0, 1),
SetDataTip(SPR_GROUP_REPLACE_OFF_TRAIN, STR_GROUP_REPLACE_PROTECTION_TOOLTIP),
@ -185,13 +189,26 @@ private:
GUIGroupList list;
bool enable_expand_all = false;
bool enable_collapse_all = false;
const Group *g;
FOR_ALL_GROUPS(g) {
if (g->owner == owner && g->vehicle_type == this->vli.vtype) {
list.push_back(g);
if (g->parent != INVALID_GROUP) {
if (Group::Get(g->parent)->folded) {
enable_expand_all = true;
} else {
enable_collapse_all = true;
}
}
}
}
this->SetWidgetDisabledState(WID_GL_EXPAND_ALL_GROUPS, !enable_expand_all);
this->SetWidgetDisabledState(WID_GL_COLLAPSE_ALL_GROUPS, !enable_collapse_all);
list.ForceResort();
list.Sort(&GroupNameSorter);
@ -344,6 +361,20 @@ private:
}
}
void SetAllGroupsFoldState(bool folded)
{
const Group *g;
FOR_ALL_GROUPS(g) {
if (g->owner == this->owner && g->vehicle_type == this->vli.vtype) {
if (g->parent != INVALID_GROUP) {
Group::Get(g->parent)->folded = folded;
}
}
}
this->groups.ForceRebuild();
this->SetDirty();
}
public:
VehicleGroupWindow(WindowDesc *desc, WindowNumber window_number) : BaseVehicleListWindow(desc, window_number)
{
@ -780,6 +811,17 @@ public:
this->ShowRenameGroupWindow(this->vli.index, false);
break;
case WID_GL_COLLAPSE_ALL_GROUPS: {
this->SetAllGroupsFoldState(true);
break;
}
case WID_GL_EXPAND_ALL_GROUPS: {
this->SetAllGroupsFoldState(false);
break;
}
case WID_GL_LIVERY_GROUP: // Set group livery
ShowCompanyLiveryWindow(this->owner, this->vli.index);
break;

@ -4139,6 +4139,8 @@ STR_GROUP_CREATE_TOOLTIP :{BLACK}Click to
STR_GROUP_DELETE_TOOLTIP :{BLACK}Delete the selected group
STR_GROUP_RENAME_TOOLTIP :{BLACK}Rename the selected group
STR_GROUP_LIVERY_TOOLTIP :{BLACK}Change livery of the selected group
STR_GROUP_EXPAND_ALL :{BLACK}Expand all
STR_GROUP_COLLAPSE_ALL :{BLACK}Collapse all
STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Click to protect this group from global autoreplace
STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Delete Group

@ -3986,6 +3986,8 @@ STR_GROUP_CREATE_TOOLTIP :{BLACK}Neue Gru
STR_GROUP_DELETE_TOOLTIP :{BLACK}Ausgewählte Gruppe löschen
STR_GROUP_RENAME_TOOLTIP :{BLACK}Ausgewählte Gruppe umbenennen
STR_GROUP_LIVERY_TOOLTIP :{BLACK}Farbschema der ausgewählten Gruppe ändern
STR_GROUP_EXPAND_ALL :{BLACK}Alles ausklappen
STR_GROUP_COLLAPSE_ALL :{BLACK}Alles einklappen
STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Diese Gruppe von der automatischen Fahrzeugersetzung ausschließen
STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Gruppe löschen

@ -4139,6 +4139,8 @@ STR_GROUP_CREATE_TOOLTIP :{BLACK}그룹
STR_GROUP_DELETE_TOOLTIP :{BLACK}선택한 그룹 삭제
STR_GROUP_RENAME_TOOLTIP :{BLACK}선택한 그룹 이름 바꾸기
STR_GROUP_LIVERY_TOOLTIP :{BLACK}선택한 그룹의 차량 색상을 변경합니다.
STR_GROUP_EXPAND_ALL :{BLACK}모두 펼치기
STR_GROUP_COLLAPSE_ALL :{BLACK}모두 접기
STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}클릭하여 전체 자동 교체로부터 이 그룹을 보호합니다.
STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}그룹 삭제

@ -34,6 +34,8 @@ enum GroupListWidgets {
WID_GL_DELETE_GROUP, ///< Delete group button.
WID_GL_RENAME_GROUP, ///< Rename group button.
WID_GL_LIVERY_GROUP, ///< Group livery button.
WID_GL_COLLAPSE_ALL_GROUPS, ///< Collapse all groups button.
WID_GL_EXPAND_ALL_GROUPS, ///< Expand all groups button.
WID_GL_REPLACE_PROTECTION, ///< Replace protection button.
WID_GL_INFO, ///< Group info.
};

Loading…
Cancel
Save